-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database DEFINE thisfile = 'CONN.SQL' DEFINE dbuser = 'CONN' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE PACKAGE CONN AS FUNCTION quote(in_v1 IN varchar2) RETURN varchar2; END; / CREATE OR REPLACE PACKAGE BODY CONN AS FUNCTION quote(in_v1 IN varchar2) RETURN varchar2 AS BEGIN return chr(34) || in_v1 || chr(34); --return string surrounded by " CHR(34) END; END; / CREATE OR REPLACE FORCE VIEW conn_v_bes_diesel ( aanvraagnr, aantal, omschrijving, fclt_d_datum, fclt_f_afleveradres ) AS SELECT b.bes_bestelling_key, bi.bes_bestelling_item_aantal, d.bes_srtdeel_omschrijving, TO_CHAR (b.bes_bestelling_leverdatum, 'dd-mm-yyyy'), a.mld_adres_naam FROM mld_adres a, bes_discipline d, bes_srtgroep g, bes_srtdeel d, bes_bestelling_item bi, bes_bestelling b WHERE d.ins_discipline_key = g.ins_discipline_key AND g.bes_srtgroep_key = d.bes_srtgroep_key AND bi.bes_srtdeel_key = d.bes_srtdeel_key AND bi.bes_bestelling_key = b.bes_bestelling_key AND d.ins_discipline_key = 1442 AND b.mld_adres_key_lev = a.mld_adres_key AND b.bes_bestelling_status <> 1; --CONN#12801 CREATE OR REPLACE VIEW conn_v_gebruikers_groep_email (fclt_groep, fclt_naam, email ) AS SELECT g.fac_groep_omschrijving, prs_perslid_naam_full, prs_perslid_email FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf, fac_groep g WHERE p.prs_perslid_key = gg.prs_perslid_key AND p.prs_perslid_key = pf.prs_perslid_key AND gg.fac_groep_key = g.fac_groep_key; --CONN#791 CREATE OR REPLACE VIEW conn_v_halte_gegevens (fclt_f_concessies, haltecode, plaatsnaam, haltenaam, infobusstation, infohalte, passerendelijnen ) AS SELECT (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 562) concessies, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd WHERE kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 501) haltecode, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd WHERE kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 502) plaatsnaam, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd WHERE kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 504) haltenaam, (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 509) || ' , ' || (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 510) || ' , ' || (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 511) || ' , ' || (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 512) || ' , ' || (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 513) || ' , ' || (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 514) infopaneelbus, (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 516) || ' , ' || (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 517) || ' , ' || (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 518) || ' , ' || (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 519) || ' , ' || (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 520) || ' , ' || (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, ins_kenmerkdeel kd WHERE ud.fac_usrdata_key = kd.ins_kenmerkdeel_waarde AND kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 521) infopaneelhalte, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd WHERE kd.ins_kenmerkdeel_verwijder IS NULL AND kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = 601) passerendelijnen FROM ins_deel d WHERE ins_srtdeel_key = 43401 AND ins_deel_verwijder IS NULL; -- CONN#435 CREATE OR REPLACE VIEW CONN_V_LEV_SCHOONMAAK (PRS_BEDRIJF_KEY, PRS_BEDRIJF_NAAM) AS SELECT DISTINCT prs_bedrijf.PRS_BEDRIJF_KEY,prs_bedrijf.PRS_BEDRIJF_NAAM FROM prs_bedrijf, prs_bedrijfdienstlocatie WHERE prs_bedrijf.prs_bedrijf_verwijder IS NULL AND prs_bedrijf.prs_bedrijf_key = prs_bedrijfdienstlocatie.prs_bedrijf_key AND prs_bedrijfdienstlocatie.prs_dienst_key = 129 ; /* Formatted on 2006/09/01 16:21 (Formatter Plus v4.8.5) */ CREATE OR REPLACE VIEW conn_v_bedrijf_gegevens AS SELECT b.prs_bedrijf_key, prs_bedrijf_naam, prs_bedrijf_naam_upper, prs_bedrijf_post_adres, prs_bedrijf_post_postcode, prs_bedrijf_post_plaats, prs_bedrijf_bezoek_adres, prs_bedrijf_bezoek_postcode, prs_bedrijf_bezoek_plaats, prs_bedrijf_telefoon, prs_bedrijf_fax, prs_bedrijf_contact_persoon, prs_bedrijf_contact_telefoon, prs_bedrijf_contact_fax, prs_bedrijf_opmerking, prs_bedrijf_uurloon, prs_leverancier_nr, prs_overeenkomst_nr, prs_overeenkomst_datum, prs_bedrijf_aanmaak, prs_bedrijf_verwijder, prs_bedrijf_leverancier, prs_bedrijf_uitvoerende, prs_bedrijf_contract, prs_bedrijf_email, a.prs_bedrijfadres_xsl, a.prs_bedrijfadres_url, prs_bedrijf_image_loc, prs_bedrijf_details_loc, mld_adres_key_lev, mld_adres_key_fac, prs_bedrijf_bezoek_land, prs_bedrijf_post_land, prs_bedrijf_telefoon2, prs_bedrijf_opmerking2, prs_bedrijf_intern, prs_bedrijf_huurder, prs_bedrijf_ingids, SUBSTR (b.prs_leverancier_nr, INSTR (b.prs_leverancier_nr, '/') + 1 ) huurdernr, SUBSTR (b.prs_leverancier_nr, 1, INSTR (b.prs_leverancier_nr, '/') - 1 ) budgetcode FROM prs_bedrijf b , prs_bedrijfadres a WHERE b.prs_bedrijf_key = a.prs_bedrijf_key AND a.prs_bedrijfadres_type = 'B' AND b.prs_bedrijf_verwijder IS NULL; -- -- CONN#460 -- CREATE OR REPLACE PACKAGE CONN_RAP AS -- PACKAGES voor de Connexxion specifieke rapportages TYPE t_cursor IS REF CURSOR; FUNCTION FindNearestSampleValue(p_ins_deel_key IN NUMBER,p_ins_kenmerk_key IN NUMBER ,p_sample_date IN DATE) RETURN NUMBER; FUNCTION FindNearestSampleDate(p_ins_deel_key IN NUMBER,p_ins_kenmerk_key IN NUMBER ,p_sample_date IN DATE) RETURN DATE; PROCEDURE conn_p_verbruik (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor); PROCEDURE conn_p_bes_div_cat (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor); END; / CREATE OR REPLACE PACKAGE BODY CONN_RAP AS -- -- Algemene procedures en functies. -- -- FUNCTION FindNearestSampleDate(p_ins_deel_key IN NUMBER ,p_ins_kenmerk_key IN NUMBER ,p_sample_date IN DATE ) RETURN DATE IS v_waarde DATE; BEGIN SELECT waarde INTO v_waarde FROM ( SELECT ins_kenmerkdeel_aanmaak waarde FROM ins_kenmerkdeel skd WHERE skd.ins_kenmerk_key = p_ins_kenmerk_key AND skd.ins_deel_key = p_ins_deel_key ORDER BY ABS(p_sample_date - skd.INS_KENMERKDEEL_AANMAAK) ) WHERE ROWNUM = 1; RETURN v_waarde; END; -- FUNCTION FindNearestSampleValue(p_ins_deel_key IN NUMBER ,p_ins_kenmerk_key IN NUMBER ,p_sample_date IN DATE ) RETURN NUMBER IS v_waarde NUMBER; BEGIN SELECT FAC.safe_to_number(waarde) INTO v_waarde FROM ( SELECT ins_kenmerkdeel_waarde waarde FROM ins_kenmerkdeel skd WHERE skd.ins_kenmerk_key = p_ins_kenmerk_key AND skd.ins_deel_key = p_ins_deel_key ORDER BY ABS(p_sample_date - skd.INS_KENMERKDEEL_AANMAAK) ) WHERE ROWNUM = 1; RETURN v_waarde; END; -- PROCEDURE conn_p_verbruik (user_key IN NUMBER ,p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor) AS v_datum_van DATE; v_datum_tot DATE; v_alg_level_read NUMBER; BEGIN v_datum_van := fac.safe_to_date(p_datum_van, 'dd-mm-yyyy'); v_datum_tot := fac.safe_to_date(p_datum_tot, 'dd-mm-yyyy'); SELECT MIN(fac_gebruiker_alg_level_read) INTO v_alg_level_read FROM fac_v_webgebruiker WHERE prs_perslid_key = user_key AND fac_functie_key = 242; -- WEB_OBJUSE IF v_alg_level_read = -1 THEN OPEN p_cursor FOR SELECT alg_locatie_code code, alg_locatie_omschrijving naam, ins_deel_omschrijving meter, FindNearestSampleValue(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_tot) - FindNearestSampleValue(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_van) verbruik, to_char(FindNearestSampleDate(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_van),'dd-mm-yyyy hh24:mi') begin_datum, FindNearestSampleValue(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_van) begin_waarde, to_char(FindNearestSampleDate(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_tot),'dd-mm-yyyy hh24:mi') eind_datum, FindNearestSampleValue(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_tot) eind_waarde FROM ( SELECT DISTINCT d.ins_deel_key, k.ins_kenmerk_key, ins_deel_omschrijving, alg_locatie_key, alg_locatie_omschrijving, alg_locatie_code FROM ins_v_aanwezigsrtdeel sd, ins_v_aanwezigdeel d, ins_kenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk sk, alg_locatie l WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key AND d.ins_deel_key = kd.ins_deel_key AND d.ins_alg_locatie_key = l.alg_locatie_key AND kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_kenmerk_verwijder IS NULL AND k.ins_kenmerk_meetwaarde = 1 AND sk.INS_SRTKENMERK_KENMERKTYPE = 'N' AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key ) res ORDER BY code; ELSE -- We moeten echte autorisatie controleren OPEN p_cursor FOR SELECT alg_locatie_code code, alg_locatie_omschrijving naam, ins_deel_omschrijving meter, FindNearestSampleValue(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_tot) - FindNearestSampleValue(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_van) verbruik, to_char(FindNearestSampleDate(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_van),'dd-mm-yyyy hh24:mi') begin_datum, FindNearestSampleValue(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_van) begin_waarde, to_char(FindNearestSampleDate(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_tot),'dd-mm-yyyy hh24:mi') eind_datum, FindNearestSampleValue(res.ins_deel_key ,res.ins_kenmerk_key, v_datum_tot) eind_waarde FROM ( SELECT DISTINCT d.ins_deel_key, k.ins_kenmerk_key, ins_deel_omschrijving, alg_locatie_key, alg_locatie_omschrijving, alg_locatie_code FROM ins_v_aanwezigsrtdeel sd, ins_v_aanwezigdeel d, ins_kenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk sk, alg_locatie l WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key AND d.ins_deel_key = kd.ins_deel_key AND d.INS_ALG_LOCATIE_KEY = l.alg_locatie_key AND kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_kenmerk_verwijder IS NULL AND k.ins_kenmerk_volgnummer >= 100 AND sk.INS_SRTKENMERK_KENMERKTYPE = 'N' AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND alg_locatie_key IN ( SELECT alg_locatie_key FROM fac_v_my_locations WHERE PRS_PERSLID_KEY = user_key AND niveau = v_alg_level_read ) ) res ORDER BY code; END IF; END; -- PROCEDURE conn_p_bes_div_cat ( user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '01-01-2015' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor) AS BEGIN OPEN p_cursor FOR SELECT a.prs_afdeling_parent_oms divisie, dis.ins_discipline_omschrijving catalogus, COUNT (b.bes_bestelling_key) aantal_aanvragen, SUM (COALESCE (boi.bes_bestelopdr_item_prijs, 0) * bi.bes_bestelling_item_aantal ) totaalbedrag FROM BES_BESTELLING b, BES_BESTELLING_ITEM bi, bes_srtDEEL sd, bes_srtGROEP sg, INS_TAB_DISCIPLINE dis, bes_bestelopdr_item boi, (SELECT p.prs_perslid_key, a.prs_afdeling_omschrijving prs_afdeling_parent_oms FROM prs_v_afdeling_boom ab, PRS_AFDELING a, PRS_PERSLID p WHERE ab.prs_afdeling_key1 = a.prs_afdeling_key AND p.prs_afdeling_key = ab.prs_afdeling_key) a WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND b.bes_bestelling_datum >= Fac.safe_to_date(p_datum_van, 'dd-mm-yyyy') AND b.bes_bestelling_datum < Fac.safe_to_date(p_datum_tot, 'dd-mm-yyyy') AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = dis.ins_discipline_key AND b.bes_bestelling_status <> 1 AND bi.bes_bestelling_key = b.bes_bestelling_key AND b.bes_bestelling_module = 'BES' AND a.prs_perslid_key = b.prs_perslid_key GROUP BY a.prs_afdeling_parent_oms, dis.ins_discipline_omschrijving ORDER BY 1,2; END; -- END; / show errors; -- -- CONN #451 -- /* Formatted on 11-6-2010 16:45:48 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_bestelopdr_gegevens ( hide_f_opdracht, datum, fclt_f_opdrnr, fclt_f_naam, telefoon, fclt_f_status ) AS SELECT DISTINCT bo.bes_bestelopdr_key, TO_CHAR (b.bes_bestelling_datum, 'DD-MM-YYYY'), TO_CHAR (bo.bes_bestelopdr_key), (SELECT pf.prs_perslid_naam_full FROM prs_v_perslid_fullnames pf WHERE pf.prs_perslid_key = b.prs_perslid_key), (SELECT P.PRS_PERSLID_TELEFOONNR FROM prs_perslid p WHERE p.prs_perslid_key = b.prs_perslid_key), bos.bes_bestelopdrstatuses_omschr FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr bo, bes_bestelopdrstatuses bos, bes_bestelopdr_item boi WHERE bes_bestelopdr_status IN (4, 5, 6, 7) AND bi.bes_bestelling_key = b.bes_bestelling_key AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key AND bo.bes_bestelopdr_status = bos.bes_bestelopdrstatuses_key; -- -- CONN#321 -- /* Formatted on 18-1-2010 16:02:12 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_besteller_z_kostenpl ( naam, afdeling, profiel ) AS SELECT pf.prs_perslid_naam_full, a.prs_afdeling_omschrijving, f.fac_profiel_omschrijving FROM prs_v_aanwezigperslid p, prs_afdeling a, prs_v_perslid_fullnames pf, fac_profiel f WHERE p.fac_profiel_key = f.fac_profiel_key AND p.prs_perslid_key = pf.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_kostenplaats_key IS NULL; CREATE OR REPLACE VIEW conn_v_huurders_kostenplaats (fclt_f_naam, fclt_f_kostenplaats ) AS SELECT prs_bedrijf_naam AS naam, prs_leverancier_nr AS kostenplaats FROM prs_v_aanwezigbedrijf; -- -- CONN#415 CONN#496 -- CREATE OR REPLACE VIEW CONN_V_LOCATIE_BEDRIJVEN (FCLT_F_LOCATIE, ADRES, POSTCODE, PLAATS, BEDRIJF, DIENST, TELEFOONNR, STORINGSNR) AS SELECT l.ALG_LOCATIE_CODE ,l.ALG_LOCATIE_ADRES ,l.ALG_LOCATIE_POSTCODE ,l.ALG_LOCATIE_PLAATS ,substr(b.PRS_BEDRIJF_NAAM,1,decode(instr(b.PRS_BEDRIJF_NAAM,' _ LEV'),0,60,instr(b.PRS_BEDRIJF_NAAM,' _ LEV'))) ,d.PRS_DIENST_OMSCHRIJVING ,b.PRS_BEDRIJF_TELEFOON ,b.PRS_BEDRIJF_TELEFOON2 FROM PRS_BEDRIJFDIENSTLOCATIE bdl ,ALG_V_AANWEZIGLOCATIE l ,PRS_DIENST d ,PRS_V_AANWEZIGBEDRIJF b where bdl.PRS_BEDRIJF_KEY = b.PRS_BEDRIJF_KEY and bdl.ALG_LOCATIE_KEY = l.ALG_LOCATIE_KEY and bdl.PRS_DIENST_KEY = d.PRS_DIENST_KEY order by 1,5; /* Formatted on 28-11-2011 10:49:26 (QP5 v5.136.908.31019) */ CREATE OR REPLACE VIEW conn_v_perslid_z_logwwmail ( naam, nummer, login, wachtwoord, email ) AS SELECT pf.prs_perslid_naam_full, p.prs_perslid_nr, p.prs_perslid_oslogin, '*****', p.prs_perslid_email FROM prs_perslid p, prs_v_perslid_fullnames pf WHERE pf.prs_perslid_key = p.prs_perslid_key AND (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_wachtwoord_hash IS NULL OR p.prs_perslid_email IS NULL); --insert into fac_usrrap (FAC_USRRAP_OMSCHRIJVING, FAC_USRRAP_VIEW_NAME, FAC_USRRAP_INFO) values -- ('Personen zonder login..', 'CONN_V_PERSLID_Z_LOGWWMAIL', 'Personen waarbij geen login, wachtwoord of e-mail adres ingevuld is.'); -- create or replace view conn_v_bedrijf_zonder_nummer as select * from prs_v_aanwezigbedrijf where prs_leverancier_nr is null and prs_bedrijf_intern is null; create or replace view CONN_RAP_OPDR_OPMERKINGEN AS select alg_locatie_omschrijving fclt_f_locatie ,sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.MLD_OPDR_BEDRIJFOPDR_VOLGNR opdrachtnummer ,TO_CHAR(o.mLD_OPDR_DATUMBEGIN, 'dd-mm-yyyy') datum ,prs_bedrijf_naam leverancier ,mld_kenmerkopdr_waarde opmerking from mld_opdr o ,MLD_V_AANWEZIGKENMERKOPDR ko ,mld_melding m ,mld_stdmelding std ,alg_locatie l ,mld_discipline md ,ins_srtdiscipline sd ,prs_bedrijf b where o.mld_opdr_key = ko.mld_opdr_key and ko.MLD_KENMERK_KEY = 75 and o.MLD_TYPEOPDR_KEY = 5 and m.mld_melding_key = o.mld_melding_key and m.mld_alg_locatie_key = l.alg_locatie_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND md.ins_discipline_key = std.mld_ins_discipline_key AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key and b.prs_bedrijf_key(+) = o.MLD_UITVOERENDE_KEYS order by 1; -- * -- * FAC_V_WEB_AUTORISATIE view -- * CREATE OR REPLACE VIEW FAC_V_WEB_AUTORISATIE (BEDRIJF, FCLT_F_BUSINESS_UNIT, FCLT_F_NAAM, FCLT_F_USERID, FCLT_F_GROEP) AS SELECT B.prs_bedrijf_naam as BEDRIJF , AD.prs_afdeling_omschrijving as FCLT_F_BUSINESS_UNIT , PF.prs_perslid_naam_full as FCLT_F_NAAM , P.PRS_PERSLID_OSLOGIN as FCLT_F_USERID , GR.fac_groep_upper as FCLT_F_GROEP FROM PRS_V_AANWEZIGPERSLID P , PRS_AFDELING AD , PRS_V_AFDELING_BOOM AB , PRS_BEDRIJF B , FAC_GEBRUIKERSGROEP GG , FAC_GROEP GR , PRS_V_PERSLID_FULLNAMES PF WHERE GG.fac_groep_key=GR.fac_groep_key AND P.prs_perslid_key=GG.prs_perslid_key AND P.prs_afdeling_key = AB.prs_afdeling_key AND AB.prs_bedrijf_key = B.prs_bedrijf_key AND AB.prs_afdeling_key1 = AD.prs_afdeling_key AND PF.prs_perslid_key = p.prs_perslid_key; -- * -- * CONN_V_FIATEURS view (in 4.81 CONN_FIATERING) -- * CREATE OR REPLACE VIEW CONN_V_FIATEURS ( PERSOON, PROFIEL, KOSTENPLAATSHOUDER, KOSTENPLAATSGROEPHOUDER ) AS SELECT p.prs_perslid_naam || DECODE (p.prs_perslid_voorletters, NULL, '', ', ' || p.prs_perslid_voorletters) || DECODE (p.prs_perslid_voornaam, NULL, '', ' (' || p.prs_perslid_voornaam || ')') Persoon, f.fac_profiel_omschrijving, p2.prs_perslid_naam || DECODE (p2.prs_perslid_voorletters, NULL, '', ', ' || p2.prs_perslid_voorletters) || DECODE (p2.prs_perslid_voornaam, NULL, '', ' (' || p2.prs_perslid_voornaam || ')') Budgethouder, p3.prs_perslid_naam || DECODE (p3.prs_perslid_voorletters, NULL, '', ', ' || p3.prs_perslid_voorletters) || DECODE (p3.prs_perslid_voornaam, NULL, '', ' (' || p3.prs_perslid_voornaam || ')') Budgetgroephouder FROM prs_perslid p, fac_profiel f, prs_afdeling a, prs_kostenplaats k, prs_perslid p2, prs_kostenplaatsgrp g, prs_perslid p3 WHERE f.fac_profiel_key(+) = p.fac_profiel_key AND a.prs_afdeling_key(+) = p.prs_afdeling_key AND a.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND p2.prs_perslid_key(+) = k.prs_perslid_key AND k.prs_kostenplaatsgrp_key = g.prs_kostenplaatsgrp_key(+) AND p3.prs_perslid_key(+) = g.prs_perslid_key AND prs_kostenplaats_verwijder IS NULL AND p.prs_perslid_verwijder IS NULL ORDER BY 1, 2, 3, 4; /* Formatted on 2006/06/16 10:17 (Formatter Plus v4.8.5) */ /* Formatted on 11-6-2010 17:32:44 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_ppi1 ( aanvraagnummer, fclt_f_maand, besteller, afdeling, artikelnummer, omschrijving, aantal, prijs, fclt_3d_afdeling_key ) AS SELECT b.bes_bestelling_key, TO_CHAR (b.bes_bestelling_datum, 'YYMM'), p.prs_perslid_naam || ' ' || NVL (p.prs_perslid_voorletters, '') || ' ' || NVL (p.prs_perslid_voornaam, ''), a.prs_afdeling_naam, s.bes_srtdeel_nr, s.bes_srtdeel_omschrijving, TO_CHAR (i.bes_bestelling_item_aantal, '99999990'), TO_CHAR (i.bes_bestelling_item_prijs, '99999990D00'), a.prs_afdeling_key FROM bes_bestelling b, bes_bestelling_item i, prs_perslid p, prs_afdeling a, bes_srtdeel s, bes_srtgroep g, ins_tab_discipline d WHERE b.bes_bestelling_key = i.bes_bestelling_key AND b.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND i.bes_srtdeel_key = s.bes_srtdeel_key AND s.bes_srtgroep_key = g.bes_srtgroep_key AND g.ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_key = 21; CREATE OR REPLACE VIEW CONN_V_PPI1_TOT (FCLT_F_MAAND, AANTAL, TOTAALBEDRAG) AS SELECT FCLT_F_Maand ,SUM(TO_NUMBER(Aantal, '999999D99', 'nls_numeric_characters = ''.,''')) ,SUM(TO_NUMBER(Aantal, '999999D99', 'nls_numeric_characters = ''.,''') * TO_NUMBER(prijs, '999999D99', 'nls_numeric_characters = ''.,''')) FROM CONN_V_PPI1 GROUP BY FCLT_F_Maand; /* Formatted on 11-6-2010 17:37:17 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_ppi2_all ( opdrachtnummer, fclt_f_maand, besteller, afdeling, totaalbedrag, bes_bestelopdr_datum, bes_bestelopdr_leverdatum, prs_afdeling_key ) AS SELECT bo.bes_bestelopdr_key, TO_CHAR (bo.bes_bestelopdr_datum, 'YYMM'), pp.prs_perslid_naam || ' ' || NVL (pp.prs_perslid_voorletters, '') || ' ' || NVL (pp.prs_perslid_voornaam, ''), ad.prs_afdeling_naam, boi.bes_bestelopdr_item_prijs * bi.bes_bestelling_item_aantal, bo.bes_bestelopdr_datum, bo.bes_bestelopdr_leverdatum, ad.prs_afdeling_key FROM bes_bestelling bb, bes_bestelling_item bi, bes_bestelopdr bo, bes_bestelopdr_item boi, prs_perslid pp, prs_afdeling ad WHERE bb.bes_bestelling_key = bi.bes_bestelling_key AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key AND bo.prs_perslid_key = pp.prs_perslid_key AND pp.prs_afdeling_key = ad.prs_afdeling_key; /* Formatted on 11-6-2010 17:38:36 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_ppi2_subset ( opdrachtnummer, fclt_f_maand, besteller, afdeling, totaalbedrag, prs_afdeling_key ) AS SELECT opdrachtnummer, fclt_f_maand, besteller, afdeling, totaalbedrag, prs_afdeling_key FROM conn_v_ppi2_all WHERE ( (bes_bestelopdr_leverdatum > fac.datumtijdplusuitvoertijd (bes_bestelopdr_datum, 4, 'DAGEN')) OR (bes_bestelopdr_leverdatum IS NULL AND SYSDATE > fac.datumtijdplusuitvoertijd (bes_bestelopdr_datum, 4, 'DAGEN'))); CREATE OR REPLACE VIEW CONN_V_PPI2 (OPDRACHTNUMMER, FCLT_F_MAAND, BESTELLER, AFDELING, TOTAALBEDRAG, FCLT_3D_AFDELING_KEY) AS SELECT Opdrachtnummer, FCLT_F_Maand, Besteller, Afdeling, TO_CHAR(SUM(Totaalbedrag),'99999990D00'), PRS_AFDELING_KEY FROM CONN_V_PPI2_SUBSET GROUP BY Opdrachtnummer,FCLT_F_Maand,Besteller,Afdeling,PRS_AFDELING_KEY; CREATE OR REPLACE VIEW CONN_V_PPI2_TOT (FCLT_F_MAAND, AANTAL, TOTAAL) AS SELECT FCLT_F_Maand, SUM(Aantal) Aantal, SUM(Totaal) Totaal FROM ( SELECT FCLT_F_Maand, COUNT(Opdrachtnummer) Aantal, 0 Totaal FROM (SELECT FCLT_F_Maand, Opdrachtnummer FROM CONN_V_PPI2 A GROUP BY FCLT_F_Maand, Opdrachtnummer) GROUP BY FCLT_F_Maand UNION SELECT FCLT_F_Maand, 0, COUNT(Opdrachtnummer) FROM (SELECT FCLT_F_Maand, Opdrachtnummer FROM CONN_V_PPI2_ALL B GROUP BY FCLT_F_Maand, Opdrachtnummer) GROUP BY FCLT_F_Maand ) GROUP BY FCLT_F_Maand; /* Formatted on 28-11-2011 10:47:34 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_ppi3_all ( aanvraagnummer, fclt_f_maand, besteller, afdeling, fiatteur, status, aantal, prijs, totaalbedrag, bes_bestelling_datum, bes_bestelling_afgewezen, bes_bestelling_geaccepteerd, prs_afdeling_key ) AS SELECT b.bes_bestelling_key, TO_CHAR (b.bes_bestelling_datum, 'YYMM'), p.prs_perslid_naam || ' ' || NVL (p.prs_perslid_voorletters, '') || ' ' || NVL (p.prs_perslid_voornaam, ''), a.prs_afdeling_naam, p2.prs_perslid_naam || ' ' || NVL (p2.prs_perslid_voorletters, '') || ' ' || NVL (p2.prs_perslid_voornaam, ''), bs.bes_bestellingstatuses_omschr, i.bes_bestelling_item_aantal, i.bes_bestelling_item_prijs, i.bes_bestelling_item_aantal * i.bes_bestelling_item_prijs, b.bes_bestelling_datum, fac.gettrackingdate ('BESREJ', b.bes_bestelling_key), fac.gettrackingdate ('BESACP', b.bes_bestelling_key), a.prs_afdeling_key FROM bes_bestelling b, bes_bestelling_item i, prs_perslid p, prs_afdeling a, prs_perslid p2, bes_bestellingstatuses bs WHERE b.bes_bestelling_key = i.bes_bestelling_key AND b.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND b.bes_bestelling_status = bs.bes_bestellingstatuses_key AND b.bes_bestelling_fiat_user IS NOT NULL -- Dus alleen "fiatteringsbestellingen" AND b.bes_bestelling_fiat_user = p2.prs_perslid_key; /* Formatted on 11-6-2010 17:51:26 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_ppi3_subset ( aanvraagnummer, fclt_f_maand, besteller, afdeling, fiatteur, status, aantal, prijs, totaalbedrag, bes_bestelling_datum, bes_bestelling_afgewezen, bes_bestelling_geaccepteerd, prs_afdeling_key ) AS SELECT aanvraagnummer, fclt_f_maand, besteller, afdeling, fiatteur, status, aantal, prijs, totaalbedrag, bes_bestelling_datum, bes_bestelling_afgewezen, bes_bestelling_geaccepteerd, prs_afdeling_key FROM conn_v_ppi3_all WHERE ( (fac.datumtijdplusuitvoertijd (bes_bestelling_datum, 3, 'DAGEN') < bes_bestelling_afgewezen) OR (fac.datumtijdplusuitvoertijd (bes_bestelling_datum, 3, 'DAGEN') < bes_bestelling_geaccepteerd) OR ( bes_bestelling_afgewezen IS NULL AND bes_bestelling_geaccepteerd IS NULL AND fac.datumtijdplusuitvoertijd (bes_bestelling_datum, 3, 'DAGEN') < SYSDATE)); CREATE OR REPLACE VIEW CONN_V_PPI3_TOT (FCLT_F_MAAND, TOTAAL, TELAAT) AS SELECT fclt_f_maand, SUM(totaal) Totaal,SUM(totaal)-SUM(optijd) Telaat FROM ( SELECT FCLT_F_Maand, COUNT(*) Totaal, 0 Optijd FROM (SELECT FCLT_F_Maand, aanvraagnummer FROM CONN_V_PPI3_ALL A GROUP BY FCLT_F_Maand, aanvraagnummer) GROUP BY FCLT_F_Maand UNION SELECT FCLT_F_Maand, 0, COUNT(*) FROM (SELECT FCLT_F_Maand, aanvraagnummer FROM CONN_V_PPI3_SUBSET A GROUP BY FCLT_F_Maand, aanvraagnummer) GROUP BY FCLT_F_Maand ) GROUP BY FCLT_F_Maand; /* Formatted on 2006/06/16 10:24 (Formatter Plus v4.8.5) */ CREATE OR REPLACE VIEW conn_v_ppi5_all (opdrachtnummer, fclt_f_maand, opmerking, prs_afdeling_key) AS SELECT bo.bes_bestelopdr_key, TO_CHAR (bo.bes_bestelopdr_datum, 'YYMM'), bo.bes_bestelopdr_delivery_opmerk, p.prs_afdeling_key FROM bes_bestelling bb, bes_bestelling_item bi, bes_bestelopdr bo, bes_bestelopdr_item boi, prs_perslid p WHERE bb.bes_bestelling_key = bi.bes_bestelling_key AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND bb.prs_perslid_key = p.prs_perslid_key AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key; /* Formatted on 2006/06/16 10:22 (Formatter Plus v4.8.5) */ CREATE OR REPLACE VIEW conn_v_ppi5 (opdrachtnummer, fclt_f_maand, opmerking, fclt_3d_prs_afdeling_key) AS SELECT DISTINCT bo.bes_bestelopdr_key, TO_CHAR (bo.bes_bestelopdr_datum, 'YYMM'), bo.bes_bestelopdr_delivery_opmerk, p.prs_afdeling_key FROM bes_bestelling bb, bes_bestelling_item bi, bes_bestelopdr bo, bes_bestelopdr_item boi, prs_perslid p WHERE bb.bes_bestelling_key = bi.bes_bestelling_key AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key AND bb.prs_perslid_key = p.prs_perslid_key AND bes_bestelopdr_delivery_opmerk IS NOT NULL; CREATE OR REPLACE VIEW CONN_V_PPI5_TOT (FCLT_F_MAAND, AANTAL, TOTAAL) AS SELECT fclt_f_maand, SUM(Aantal) Aantal, SUM(Totaal) Totaal FROM ( SELECT FCLT_F_Maand, COUNT(*) Aantal, 0 Totaal FROM (SELECT FCLT_F_Maand, opdrachtnummer FROM CONN_V_PPI5 A GROUP BY FCLT_F_Maand, opdrachtnummer) GROUP BY FCLT_F_Maand UNION SELECT FCLT_F_Maand, 0, COUNT(*) FROM (SELECT FCLT_F_Maand, opdrachtnummer FROM CONN_V_PPI5_ALL A GROUP BY FCLT_F_Maand, opdrachtnummer) GROUP BY FCLT_F_Maand ) GROUP BY FCLT_F_Maand; /* Formatted on 11-6-2010 17:56:01 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_ppi_overzicht ( ppi, fclt_f_maand, aantal, totaal ) AS SELECT 'PPI1 - Bestelling artikelen Luxe catalogus per maand', fclt_f_maand, TO_CHAR (aantal), TO_CHAR (totaalbedrag, '99999990D00') FROM conn_v_ppi1_tot UNION SELECT 'PPI2 - Juistheid "afmelding" ontvangsten per maand', fclt_f_maand, TO_CHAR (aantal), TO_CHAR (totaal) FROM conn_v_ppi2_tot UNION SELECT 'PPI3 - Tijd tussen aanvraag en fiattering per maand', fclt_f_maand, TO_CHAR (telaat), TO_CHAR (totaal) FROM conn_v_ppi3_tot UNION SELECT 'PPI5 - Niet tevreden ontvangers per maand', fclt_f_maand, TO_CHAR (aantal), TO_CHAR (totaal) FROM conn_v_ppi5_tot; -- * -- * CONN_V_DELETED_LOC_GEG view -- * Overzicht verwijderde locaties (CONN#188) -- * CREATE OR REPLACE VIEW CONN_V_DELETED_LOC_GEG (FCLT_F_LOCATIE_CODE, OMSCHRIJVING, BEZOEK_ADRES, BEZOEK_PLAATS, VERWIJDERDATUM, UITBEHEER, DISTRICT) AS SELECT l.alg_locatie_code, l.alg_locatie_omschrijving, l.alg_locatie_adres, l.alg_locatie_plaats, l.alg_locatie_verwijder, (SELECT aok.alg_onrgoedkenmerk_waarde from alg_onrgoedkenmerk aok WHERE alg_onrgoed_key = l.alg_locatie_key AND alg_kenmerk_key = 22), d.alg_district_omschrijving FROM alg_locatie l, alg_district d WHERE d.alg_district_key(+) = l.alg_district_key AND (l.alg_locatie_verwijder IS NOT NULL OR l.alg_locatie_key IN ( SELECT alg_onrgoed_key from alg_onrgoedkenmerk aok WHERE alg_onrgoed_niveau = 'L' AND alg_kenmerk_key = 22)) ORDER BY l.alg_locatie_upper ASC; commit; create or replace view CONN_V_PRS_INDIENST (FCLT_F_MAAND, FCLT_F_NAAM, NUMMER, INDIENST, FCLT_F_AFDELING) as select TO_CHAR(p.prs_perslid_ingangsdatum, 'YYMM'), pf.prs_perslid_naam_full, p.prs_perslid_nr, TO_CHAR(p.prs_perslid_ingangsdatum, 'DD-MM-YYYY'), a.prs_afdeling_naam1 from prs_v_afdeling a, prs_v_aanwezigperslid p, prs_v_perslid_fullnames pf where p.prs_afdeling_key = a.prs_afdeling_key and pf.prs_perslid_key = p.prs_perslid_key and p.prs_perslid_ingangsdatum IS NOT NULL; create or replace view CONN_V_PRS_UITDIENST (FCLT_F_MAAND, FCLT_F_NAAM, NUMMER, UITDIENST, FCLT_F_AFDELING) as select TO_CHAR(p.prs_perslid_einddatum, 'YYMM'), pf.prs_perslid_naam_full, p.prs_perslid_nr, TO_CHAR(p.prs_perslid_einddatum, 'DD-MM-YYYY'), a.prs_afdeling_naam1 from prs_v_afdeling a, prs_v_aanwezigperslid p, prs_v_perslid_fullnames pf where p.prs_afdeling_key = a.prs_afdeling_key and pf.prs_perslid_key = p.prs_perslid_key and p.prs_perslid_einddatum IS NOT NULL; --///////////////////////////////////////////VERVALLEN/////////////////////////////////////BEGIN? CREATE OR REPLACE VIEW CONN_V_OPDR AS select std.MLD_INS_DISCIPLINE_KEY ,o.* from mld_opdr o, mld_melding m, mld_stdmelding std where m.mld_stdmelding_key = std.mld_stdmelding_key and o.mld_melding_key = m.mld_melding_key; / CREATE OR REPLACE VIEW CONN_V_OPDR_IB AS select o.* from CONN_V_OPDR o where o.MLD_INS_DISCIPLINE_KEY = 562; / CREATE OR REPLACE VIEW CONN_V_OPDR_OVERIG AS select o.* from CONN_V_OPDR o where o.MLD_INS_DISCIPLINE_KEY <> 562; / CREATE OR REPLACE VIEW CONN_V_MLD_VERPLICHTING_OFF (OPDRACHT, LOCATIE, BEDRIJF, DATUM, OFFERTE_STATUS, BEDRAG, EIGENAAR) AS select (select ins_srtdiscipline_prefix from ins_srtdiscipline sd, ins_tab_discipline d, mld_stdmelding std, mld_melding m where m.mld_stdmelding_key = std.mld_stdmelding_key and std.mld_ins_discipline_key = d.ins_discipline_key and d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key and m.mld_melding_key = o.mld_melding_key) || o.mld_melding_key ||'/' || o.MLD_OPDR_BEDRIJFOPDR_VOLGNR , (select alg_locatie_code from alg_locatie l, mld_melding m where l.alg_locatie_key = m.mld_alg_locatie_key and o.mld_melding_key = m.mld_melding_key) as locatie , (select prs_bedrijf_naam from prs_bedrijf where prs_bedrijf_key = o.MLD_UITVOERENDE_KEYS) as bedrijf , (select TO_CHAR(MLD_OPDR_DATUMBEGIN, 'DD-MM-YYYY') from mld_opdr where mld_melding_key = o.mld_melding_key and rownum = 1) as OpdrDatum , ud.FAC_USRDATA_OMSCHR , TO_CHAR(nvl(bed.MLD_KENMERKOPDR_WAARDE,0),'9999990D00') as Openstaand , (select fd.fac_usrdata_omschr from fac_usrdata fd, MLD_V_AANWEZIGKENMERKOPDR gb, mld_opdr opdr where gb.mld_opdr_key = opdr.mld_opdr_key and gb.mld_kenmerk_key = 83 and opdr.mld_uitvoerende_keys = o.MLD_UITVOERENDE_KEYS and gb.mld_kenmerkopdr_waarde = fd.fac_usrdata_key and rownum = 1) as Eigenaar from mld_opdr o, MLD_V_AANWEZIGKENMERKOPDR ko, fac_usrdata ud, MLD_V_AANWEZIGKENMERKOPDR bed where o.MLD_TYPEOPDR_KEY = 66 and o.mld_opdr_key = ko.mld_opdr_key(+) and ko.MLD_KENMERK_KEY(+) = 74 and ud.fac_usrdata_key(+) = ko.mld_kenmerkopdr_waarde and bed.mld_kenmerk_key(+) = 449 and o.mld_opdr_key = bed.mld_opdr_key(+) and o.mld_statusopdr_key = 5; CREATE OR REPLACE VIEW CONN_V_MLD_VERPLICHTING (DATUM, FCLT_F_SOORT, OPDRACHT, LOCATIE, BEDRIJF, EIGENAAR, OPDRACHT_BEDRAG, FACTUUR_BEDRAG) AS SELECT TO_CHAR (mld_opdr_datumbegin, 'DD-MM-YYYY') datum, (SELECT ins_srtdiscipline_prefix FROM ins_srtdiscipline sd, ins_tab_discipline d, mld_stdmelding std, mld_melding m WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND o.mld_melding_key = m.mld_melding_key) soort, opdracht, (SELECT alg_locatie_code FROM alg_locatie l, mld_melding m WHERE l.alg_locatie_key = m.mld_alg_locatie_key AND o.mld_melding_key = m.mld_melding_key) AS locatie, (SELECT prs_bedrijf_naam FROM prs_bedrijf WHERE prs_bedrijf_key = mld_uitvoerende_keys) AS bedrijf, (SELECT fd.fac_usrdata_omschr FROM fac_usrdata fd, mld_v_aanwezigkenmerkopdr gb WHERE gb.mld_opdr_key = o.mld_opdr_key AND gb.mld_kenmerk_key = 83 AND gb.mld_kenmerkopdr_waarde = fd.fac_usrdata_key) AS eigenaar, mld_opdr_kosten opdrachtkosten, fr_bedrag factuurbedrag FROM (SELECT o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdracht, mld_opdr_datumbegin, mld_uitvoerende_keys, mld_melding_key, o.mld_opdr_key, mld_opdr_kosten, NVL (fin_factuurregel_totaal + fr.fin_factuurregel_btw, 0 ) fr_bedrag FROM fin_factuur f, fin_factuurregel fr, mld_opdr o WHERE fr.fin_factuur_key(+) = f.fin_factuur_key AND o.mld_opdr_key = f.mld_opdr_key(+) AND o.mld_statusopdr_key <> 7 AND o.mld_typeopdr_key = 5) o WHERE mld_opdr_kosten - fr_bedrag > 2500; CREATE OR REPLACE VIEW CONN_V_MLD_VERPLICHTING_FIAT (OPDRACHT, LOCATIE, FIATTEUR, DATUM, OFFERTE_STATUS, BEDRAG, EIGENAAR) AS select (select ins_srtdiscipline_prefix from ins_srtdiscipline sd, ins_tab_discipline d, mld_stdmelding std, mld_melding m where m.mld_stdmelding_key = std.mld_stdmelding_key and std.mld_ins_discipline_key = d.ins_discipline_key and d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key and m.mld_melding_key = o.mld_melding_key) || o.mld_melding_key ||'/' || o.MLD_OPDR_BEDRIJFOPDR_VOLGNR , (select alg_locatie_code from alg_locatie l, mld_melding m where l.alg_locatie_key = m.mld_alg_locatie_key and o.mld_melding_key = m.mld_melding_key) as locatie , NVL((select prs_bedrijf_naam from prs_bedrijf where prs_bedrijf_key = o.MLD_UITVOERENDE_KEYS), (select prs_perslid_naam from prs_perslid where prs_perslid_key = o.MLD_UITVOERENDE_KEYS)) as bedrijf , (select TO_CHAR(MLD_OPDR_DATUMBEGIN,'DD-MM-YYYY') from mld_opdr where mld_melding_key = o.mld_melding_key) as OpdrDatum , ud.FAC_USRDATA_OMSCHR , TO_CHAR(nvl(bed.MLD_KENMERKOPDR_WAARDE,0),'9999990D00') as Openstaand , (select fd.fac_usrdata_omschr from fac_usrdata fd, MLD_V_AANWEZIGKENMERKOPDR gb, mld_opdr opdr where gb.mld_opdr_key = opdr.mld_opdr_key and gb.mld_kenmerk_key = 83 and opdr.mld_uitvoerende_keys = o.MLD_UITVOERENDE_KEYS and gb.mld_kenmerkopdr_waarde = fd.fac_usrdata_key and rownum = 1) as Eigenaar from mld_opdr o, MLD_V_AANWEZIGKENMERKOPDR ko , fac_usrdata ud, MLD_V_AANWEZIGKENMERKOPDR bed where o.MLD_TYPEOPDR_KEY = 65 and o.mld_opdr_key = ko.mld_opdr_key(+) and ko.MLD_KENMERK_KEY(+) = 69 and ud.fac_usrdata_key(+) = ko.mld_kenmerkopdr_waarde and bed.mld_kenmerk_key(+) = 445 and o.mld_opdr_key = bed.mld_opdr_key(+) and o.mld_statusopdr_key = 5; CREATE OR REPLACE VIEW conn_rap_tekeningen AS SELECT alg_locatie_code AS fclt_f_locatie, alg_gebouw_code, alg_verdieping_omschrijving, cad_tekening_type, cad_tekening_filenaam FROM cad_tekening, alg_locatie, alg_gebouw, alg_verdieping AVG WHERE cad_tekening.alg_verdieping_key = AVG.alg_verdieping_key AND alg_locatie.alg_locatie_key = alg_gebouw.alg_locatie_key AND AVG.alg_gebouw_key = alg_gebouw.alg_gebouw_key UNION SELECT alg_locatie_code AS fclt_f_locatie, '', '', cad_tekening_type, cad_tekening_filenaam FROM cad_tekening, alg_locatie WHERE cad_tekening.alg_verdieping_key = NULL AND alg_locatie.alg_locatie_key = cad_tekening.alg_locatie_key; CREATE OR REPLACE VIEW CONN_V_RAP_GROEPLEDEN (NAAM, FCLT_F_LOGIN, FCLT_F_DIVISIE, REGIO, FCLT_F_GROEP, AANTAL_RECHTEN) AS SELECT p.prs_perslid_naam, p.prs_perslid_oslogin, a1.prs_afdeling_omschrijving, a2.prs_afdeling_omschrijving, gr.fac_groep_omschrijving, TO_CHAR(count(*)) FROM fac_gebruikersgroep gg, prs_v_aanwezigperslid p, prs_afdeling a1, prs_afdeling a2, prs_v_afdeling_boom ab, fac_groep gr, fac_groeprechten grr WHERE p.prs_perslid_key = gg.prs_perslid_key AND p.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = a1.prs_afdeling_key AND ab.prs_afdeling_key2 = a2.prs_afdeling_key AND gg.fac_groep_key = gr.fac_groep_key AND gr.FAC_GROEP_KEY = grr.fac_groep_key GROUP BY p.prs_perslid_naam, p.prs_perslid_oslogin, gr.fac_groep_omschrijving, a1.prs_afdeling_omschrijving, a2.prs_afdeling_omschrijving; -- CONN#546 CREATE OR REPLACE VIEW conn_v_contracten_gegevens (contractnr, externnr, fclt_f_bedrijf, ingangsdatum, einddatum, bedrag ) AS SELECT TO_CHAR (c.cnt_contract_key) contractnr, c.cnt_contract_nummer externnr, NVL (b.prs_bedrijf_naam, afd2.prs_afdeling_naam) fclt_f_bedrijf, TO_CHAR (c.cnt_contract_looptijd_van, 'DD-MM-YYYY') ingangsdatum, TO_CHAR (c.cnt_contract_looptijd_tot, 'DD-MM-YYYY') einddatum, kc.cnt_kenmerkcontract_waarde bedrag FROM prs_v_aanwezigbedrijf b, cnt_v_aanwezigcontract c, prs_v_aanwezigafdeling afd, prs_v_aanwezigafdeling afd2, cnt_disc_params cdp, (SELECT cnt_contract_key, cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = 24 AND kc.cnt_kenmerkcontract_verwijder IS NULL) kc WHERE b.prs_bedrijf_key(+) = c.cnt_prs_bedrijf_key AND cdp.cnt_ins_discipline_key = c.ins_discipline_key AND cdp.cnt_srtcontract_type <> 2 AND c.cnt_prs_afdeling_key = afd2.prs_afdeling_key(+) AND afd.prs_afdeling_key = c.prs_afdeling_key_eig AND c.cnt_contract_key = kc.cnt_contract_key(+) AND SYSDATE BETWEEN c.cnt_contract_looptijd_van AND c.cnt_contract_looptijd_tot + 1; /* Formatted on 2005/09/13 14:07 (Formatter Plus v4.8.5) */ CREATE OR REPLACE VIEW conn_v_rcontracten_gegevens (fclt_f_locatie, OBJECT, externnr, beschrijving, einddatum, uitvoerder, contractnemer, betalingsvoorwaarden, totaal_pj, facturatietermijn, dienstverlening_afroep, dienstverlening_periodiek, responsetijden, afspraken ) AS SELECT NVL (l.alg_locatie_omschrijving, g.alg_locatie_omschrijving) fclt_f_locatie, sd.ins_srtdeel_omschrijving OBJECT, c.cnt_contract_nummer externnr, c.cnt_contract_omschrijving beschrijving, c.cnt_contract_looptijd_tot einddatum, b.prs_bedrijf_naam uitvoerder, (SELECT prs_bedrijf_naam FROM prs_v_contractbedrijf WHERE prs_bedrijf_key = (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract k WHERE k.cnt_kenmerk_key = 141 AND k.cnt_contract_key = c.cnt_contract_key AND cnt_kenmerkcontract_verwijder IS NULL)) contractnemer, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract k WHERE k.cnt_kenmerk_key = 143 AND k.cnt_contract_key = c.cnt_contract_key AND cnt_kenmerkcontract_verwijder IS NULL) betalingsvoorwaarden, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract k WHERE k.cnt_kenmerk_key = 144 AND k.cnt_contract_key = c.cnt_contract_key AND cnt_kenmerkcontract_verwijder IS NULL) totaal_pj, (SELECT fac_usrdata_omschr FROM fac_usrdata WHERE fac_usrdata_key = (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract k WHERE k.cnt_kenmerk_key = 145 AND k.cnt_contract_key = c.cnt_contract_key AND cnt_kenmerkcontract_verwijder IS NULL)) facturatietermijn, (SELECT fac_usrdata_omschr FROM fac_usrdata WHERE fac_usrdata_key = (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract k WHERE k.cnt_kenmerk_key = 146 AND k.cnt_contract_key = c.cnt_contract_key AND cnt_kenmerkcontract_verwijder IS NULL)) dienstverlening_afroep, (SELECT fac_usrdata_omschr FROM fac_usrdata WHERE fac_usrdata_key = (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract k WHERE k.cnt_kenmerk_key = 147 AND k.cnt_contract_key = c.cnt_contract_key AND cnt_kenmerkcontract_verwijder IS NULL)) dienstverlening_periodiek, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract k WHERE k.cnt_kenmerk_key = 149 AND k.cnt_contract_key = c.cnt_contract_key AND cnt_kenmerkcontract_verwijder IS NULL) responsetijden, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract k WHERE k.cnt_kenmerk_key = 161 AND k.cnt_contract_key = c.cnt_contract_key AND cnt_kenmerkcontract_verwijder IS NULL) afspraken FROM cnt_v_aanwezigcontract_plaats cp, (SELECT g2.alg_gebouw_key, l2.alg_locatie_omschrijving FROM alg_gebouw g2, alg_locatie l2 WHERE g2.alg_locatie_key = l2.alg_locatie_key) g, alg_locatie l, cnt_contract c, cnt_contract_object co, prs_bedrijf b, ins_srtdeel sd, cnt_disc_params cdp WHERE cp.cnt_alg_plaats_key = g.alg_gebouw_key(+) AND cp.cnt_alg_plaats_key = l.alg_locatie_key(+) AND cp.cnt_alg_plaats_code IN ('L', 'G') AND cp.cnt_contract_key = c.cnt_contract_key AND co.cnt_contract_key = c.cnt_contract_key AND c.ins_discipline_key = cdp.cnt_ins_discipline_key AND cdp.cnt_srtcontract_type = 3 AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND co.cnt_ins_srtdeel_key = sd.ins_srtdeel_key; -- CONN#581 CREATE OR REPLACE VIEW conn_v_bedrijf AS SELECT b.prs_bedrijf_naam fclt_f_Bedrijfsnaam, b.prs_leverancier_nr fclt_f_Leveranciersnummer, b.prs_bedrijf_email, a.prs_bedrijfadres_url, a.prs_bedrijfadres_xsl FROM prs_bedrijf b , prs_bedrijfadres a WHERE b.prs_bedrijf_key = a.prs_bedrijf_key AND a.prs_bedrijfadres_type = 'B' AND b.prs_bedrijf_verwijder IS NULL; / --CONN#599/CONN#14138 /* Formatted on 11-6-2010 16:57:33 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_opdr_doorloop ( nr, fclt_f_maand, fclt_f_locatie, gemeld, uitgegeven, reactietijd, afgemeld, doorlooptijd ) AS SELECT o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr, TO_CHAR (fac.gettrackingdate ('ORDNEW', o.mld_opdr_key), 'yymm'), (SELECT alg_locatie_code FROM alg_locatie l, mld_melding m WHERE o.mld_melding_key = m.mld_melding_key AND m.mld_alg_locatie_key = l.alg_locatie_key), m.mld_melding_datum, fac.gettrackingdate ('ORDNEW', o.mld_opdr_key), TRUNC (fac.gettrackingdate ('ORDNEW', o.mld_opdr_key)) - TRUNC (m.mld_melding_datum), NVL (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key), TO_DATE ('29991231', 'yyyymmdd')), TRUNC (NVL (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key), TO_DATE ('29991231', 'yyyymmdd'))) - TRUNC (fac.gettrackingdate ('ORDNEW', o.mld_opdr_key)) FROM mld_opdr o, mld_melding m, mld_stdmelding std WHERE o.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = 163; -- CONN#656 CREATE OR REPLACE PACKAGE CONN_HALTES AS FUNCTION get_halte_key (p_haltecode IN VARCHAR2 ,p_kenmerk_key IN NUMBER ) return NUMBER; FUNCTION verwerk_halte (p_HALTECODE IN VARCHAR2 ,p_HALTENAAM IN VARCHAR2 ,p_PLAATSNAAM IN VARCHAR2 ,p_PLACECODE IN VARCHAR2 ,p_ZONE IN VARCHAR2 ,p_X_COORDINAAT IN VARCHAR2 ,p_Y_COORDINAAT IN VARCHAR2 ,p_LIJNNUMMER IN VARCHAR2 ) return NUMBER; END CONN_HALTES; / CREATE OR REPLACE PACKAGE BODY CONN_HALTES AS FUNCTION get_halte_key (p_haltecode IN VARCHAR2 ,p_kenmerk_key IN NUMBER ) return NUMBER IS v_result NUMBER(10); v_count NUMBER(10); BEGIN -- Init v_result := 0; select count(*) into v_count from ins_deel where ins_deel_verwijder is null and substr(ins_deel_upper,2,8) = UPPER(p_haltecode); IF (v_count = 1) THEN select ins_deel_key into v_result from ins_deel where ins_deel_verwijder is null and substr(ins_deel_upper,2,8) = UPPER(p_haltecode); ELSE select count(*) into v_count FROM ins_deel d, ins_kenmerkdeel kd WHERE d.ins_deel_key = kd.ins_deel_key AND kd.ins_kenmerk_key = p_kenmerk_key AND UPPER(kd.ins_kenmerkdeel_waarde) = UPPER(p_haltecode) AND ins_kenmerkdeel_verwijder is null; IF (v_count = 1) THEN select d.ins_deel_key into v_result FROM ins_deel d, ins_kenmerkdeel kd WHERE d.ins_deel_key = kd.ins_deel_key AND kd.ins_kenmerk_key = p_kenmerk_key AND UPPER(kd.ins_kenmerkdeel_waarde) = UPPER(p_haltecode) AND ins_kenmerkdeel_verwijder is null; END IF; END IF; RETURN v_result; EXCEPTION WHEN OTHERS THEN RETURN -1; END get_halte_key; FUNCTION verwerk_halte (p_HALTECODE IN VARCHAR2 ,p_HALTENAAM IN VARCHAR2 ,p_PLAATSNAAM IN VARCHAR2 ,p_PLACECODE IN VARCHAR2 ,p_ZONE IN VARCHAR2 ,p_X_COORDINAAT IN VARCHAR2 ,p_Y_COORDINAAT IN VARCHAR2 ,p_LIJNNUMMER IN VARCHAR2 ) return NUMBER IS v_DEEL_OMSCHRIJVING VARCHAR2(30); v_HALTENAAM VARCHAR2(40); v_HALTECODE VARCHAR2(8); v_PLAATSNAAM VARCHAR2(30); v_PLACECODE VARCHAR2(10); v_ZONE VARCHAR2(10); v_X_COORDINAAT VARCHAR2(10); v_Y_COORDINAAT VARCHAR2(10); v_LIJNNUMMER VARCHAR2(200); ORACLE_err_num NUMBER; ORACLE_err_mes VARCHAR2(100); v_result NUMBER(10); v_errormsg VARCHAR2(1000); v_import_row VARCHAR2(1000); v_count NUMBER(10); v_terreinsector_key NUMBER(10); v_ins_deel_key NUMBER(10); c_error_result NUMBER(10) := -1; -- Constanten: diversen c_srtdeel_key INTEGER := 43401; -- Halte c_srtdeel_module VARCHAR2 (3) := 'INS'; c_locatie_key_onbekend INTEGER := 3123; c_ruimte_type VARCHAR2 (1) := 'T'; c_halte_prefix VARCHAR2 (1) := 'H'; -- Constanten: kenmerken key's c_halte_code INTEGER := 501; c_zone_kenmerk_key INTEGER := 503; c_place_kenmerk_key INTEGER := 541; c_plaatsnaam_kenmerk_key INTEGER := 502; c_haltenaam_kenmerk_key INTEGER := 504; c_Lijnnummer1_kenmerk_key INTEGER := 601; BEGIN -- INIT v_result := c_error_result; v_errormsg := 'INIT'; v_import_row := p_HALTECODE||'|'||p_HALTENAAM||'|'||p_PLAATSNAAM||'|'||p_PLACECODE||'|'||p_ZONE||'|'||p_X_COORDINAAT||'|'||p_Y_COORDINAAT||'|'||p_LIJNNUMMER; v_terreinsector_key := -1; v_HALTENAAM := substr(p_HALTENAAM,1,40); v_HALTECODE := substr(p_HALTECODE,1,8); v_PLAATSNAAM := substr(p_PLAATSNAAM,1,30); v_PLACECODE := substr(p_PLACECODE,1,10); v_ZONE := substr(p_ZONE,1,4); v_X_COORDINAAT := substr(p_X_COORDINAAT,1,6); v_Y_COORDINAAT := substr(p_Y_COORDINAAT,1,6); v_LIJNNUMMER := substr(p_LIJNNUMMER,1,200); v_DEEL_OMSCHRIJVING := substr(c_halte_prefix||v_HALTECODE||' '||v_HALTENAAM,1,30); -- controleer of de haltecode wel 8 posities is. Anders gaan we testdata importeren. IF length(v_haltecode) <> 8 THEN RETURN c_error_result; END IF; select get_halte_key(v_HALTECODE,c_halte_code) into v_ins_deel_key from dual; IF (v_ins_deel_key <= 0) THEN -- alg_terrein v_errormsg := '-- Terrein zoeken'; select count(*) into v_count from alg_terreinsector where alg_terreinsector_verwijder is null and alg_terreinsector_upper = upper(substr(v_PLAATSNAAM,1,10)) and alg_locatie_key = c_locatie_key_onbekend; IF (v_count = 0) THEN v_errormsg := '-- Nieuwe key voor alg_terrein ophalen '; SELECT alg_s_alg_onroerendgoed_keys.NEXTVAL INTO v_terreinsector_key FROM DUAL; v_errormsg := '-- alg_terrein toevoegen '; INSERT INTO alg_terreinsector (alg_locatie_key ,alg_terreinsector_code ,alg_terreinsector_naam) VALUES (c_locatie_key_onbekend ,SUBSTR(v_PLAATSNAAM,1,10) ,SUBSTR(v_PLAATSNAAM,1,30)); END IF; v_errormsg := '-- Terrein zoeken (2)'; select alg_terreinsector_key into v_terreinsector_key from alg_terreinsector where alg_terreinsector_verwijder is null and alg_terreinsector_upper = upper(substr(v_PLAATSNAAM,1,10)) and alg_locatie_key = c_locatie_key_onbekend; SELECT ins_s_ins_inst_keys.NEXTVAL INTO v_ins_deel_key FROM DUAL; v_errormsg := '-- Toevoegen halte '; insert into INS_DEEL (ins_deel_key ,ins_srtdeel_key ,ins_deel_module ,ins_alg_ruimte_key ,ins_alg_ruimte_type ,ins_deel_omschrijving , ins_deel_x , ins_deel_y) values (v_ins_deel_key ,c_srtdeel_key ,c_srtdeel_module ,v_terreinsector_key ,c_ruimte_type ,v_DEEL_OMSCHRIJVING ,Fac.safe_to_number(v_X_COORDINAAT) ,Fac.safe_to_number(v_Y_COORDINAAT)); ELSE v_errormsg := '-- Update bestaande halte '; update ins_deel set ins_deel_omschrijving = v_DEEL_OMSCHRIJVING where ins_deel_key = v_ins_deel_key; END IF; v_result := v_ins_deel_key; v_errormsg := '-- Verwijder eventueel bestaande flexibele kenmerken die relevant zijn voor de koppeling'; DELETE FROM ins_kenmerkdeel WHERE ins_deel_key = v_ins_deel_key AND ins_kenmerk_key in (c_halte_code,c_zone_kenmerk_key,c_place_kenmerk_key,c_plaatsnaam_kenmerk_key,c_haltenaam_kenmerk_key,c_Lijnnummer1_kenmerk_key); -- c_halte_code v_errormsg := '--C-- flexprops Halte code toevoegen met kenmerk_key = <'||to_char(c_Halte_code)||'> en deel_key = <'||to_char(v_ins_deel_key)||'> en v_HALTECODE = <'||substr(v_HALTECODE,1,8)||'>'; IF v_HALTECODE IS NOT NULL THEN INSERT INTO ins_kenmerkdeel ( ins_kenmerk_key , ins_deel_Key , ins_kenmerkdeel_waarde) VALUES(c_Halte_code , v_ins_deel_key , substr(v_HALTECODE,1,8)); END IF; -- c_zone_kenmerk_key v_errormsg := '--N-- flexprops Zone toevoegen'; IF v_ZONE IS NOT NULL THEN INSERT INTO ins_kenmerkdeel ( ins_kenmerk_key , ins_deel_Key , ins_kenmerkdeel_waarde) VALUES(c_zone_kenmerk_key , v_ins_deel_key , v_ZONE); END IF; -- c_place_kenmerk_key v_errormsg := '--C-- flexprops Placecode toevoegen'; IF v_PLACECODE IS NOT NULL THEN INSERT INTO ins_kenmerkdeel ( ins_kenmerk_key , ins_deel_Key , ins_kenmerkdeel_waarde) VALUES(c_place_kenmerk_key , v_ins_deel_key , v_PLACECODE); END IF; -- c_plaatsnaam_kenmerk_key v_errormsg := '--C-- flexprops Plaatsnaam toevoegen'; IF v_PLAATSNAAM IS NOT NULL THEN INSERT INTO ins_kenmerkdeel ( ins_kenmerk_key , ins_deel_Key , ins_kenmerkdeel_waarde) VALUES(c_plaatsnaam_kenmerk_key , v_ins_deel_key , v_PLAATSNAAM); END IF; -- c_haltenaam_kenmerk_key v_errormsg := '--N-- flexprops Haltenaam toevoegen'; IF v_HALTENAAM IS NOT NULL THEN INSERT INTO ins_kenmerkdeel ( ins_kenmerk_key , ins_deel_Key , ins_kenmerkdeel_waarde) VALUES(c_haltenaam_kenmerk_key , v_ins_deel_key , v_HALTENAAM); END IF; -- c_Lijnnummer1_kenmerk_key v_errormsg := '--N-- flexprops passerende lijnen toevoegen'; IF v_LIJNNUMMER IS NOT NULL THEN INSERT INTO ins_kenmerkdeel ( ins_kenmerk_key , ins_deel_Key , ins_kenmerkdeel_waarde) VALUES(c_Lijnnummer1_kenmerk_key , v_ins_deel_key , v_LIJNNUMMER); END IF; RETURN v_result; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || ' ' || '(ORACLE error ' || to_char(oracle_err_num) || '/' || oracle_err_mes || ')'; fac.imp_writelog ('VERWERK_HALTE', 'E', v_errormsg, v_import_row ); RETURN c_error_result; END verwerk_halte; END CONN_HALTES; / CREATE OR REPLACE VIEW conn_v_rap_chalte_import AS SELECT imp_log_omschrijving melding, TO_CHAR(imp_log_datum,'DD-MM-YYYY') datum_import, imp_log_hint importregel FROM imp_log WHERE imp_log_applicatie = 'VERWERK_HALTE' ORDER BY imp_log_datum DESC; / --//////////////////////////////////////////////////////////////////////////////////CONN#668 -- Somewhat under construction -- gewijzigde export op basis van gen_export agv FIN module. -- Schrijft opdrachtgegevens naar file van opdrachten waarvan facturen zijn gefiatteerd -- Er worden 2 files gegenereerd, voor Coda en voor Navision, welke regel waarin komt -- wordt bepaald aan de hand van de eerste letter van de kostensoort. -- -- TODO: -- post-importzaken: AV verklaren van meldingen etc?? -- Voor facturen/deelfacturen wordt het totaalfactuurbedrag vereist in de exportfile, -- om aan te kunnen geven dat er betaald kan worden. Dit factuurtotaal wordt berekend -- door de som van alle facturen met hetzelfde factuurnummer en van dezelfde leverancier -- te nemen, ongeacht de fiatteringsstatus. Dit is waarschijnlijk het bedrag inclusief BTW (?). -- Tabellen voor de exporteren van factuurgegevens (naar C=Coda en N=Navision) CREATE OR REPLACE VIEW CONN_V_EXP_BES (ORDERNR, FACTUURNR, LEVERANCIERSNR, FACTUURDATUM, BOEKINGSDATUM, SPREIDENOVER, KOSTENSOORT, FACREGELOMS, LOCATIENR, BUDGETCODE, HUURDERNR, AANTAL, PRIJS, VERDEELPERIODE, BTWTYPE, TOTAAL, KLANTNR, EIGENAAR, FIN_FACTUUR_KEY) AS SELECT TO_CHAR (bo.bes_bestelopdr_key) OrderNr, f.fin_factuur_nr FactNr, b.prs_leverancier_nr LeverancNr, TO_CHAR (f.fin_factuur_datum, 'YYYYMMDD') FactDatum, '' BoekDatum, '' SpreidenOver, COALESCE(kfr.prs_kostensoort_oms, ks.prs_kostensoort_oms, kst.prs_kostensoort_oms) KostenSoort, fr.fin_factuurregel_omschrijving Omschrijving, fr.fin_factuurregel_referentie KostenPlaats, (SELECT SUBSTR(k.prs_kostenplaats_nr, 1 ,INSTR(k.prs_kostenplaats_nr, '/', 1, 1)-1) FROM dual) BudgetCode, (SELECT SUBSTR(k.prs_kostenplaats_nr, INSTR(k.prs_kostenplaats_nr, '/', 1, 1)+1) FROM dual) Huurder, SUM(boi.bes_bestelopdr_item_aantal) Aantal, fr.fin_factuurregel_totaal KostPrijs, --SUM(boi.bes_bestelopdr_item_prijs) KostPrijs, COALESCE (fin_factuur_boekmaand, TO_CHAR (f.fin_factuur_datum, 'YYYY-MM')) VerdeelPeriode, DECODE (fr.fin_factuurregel_totaal, 0, '0', DECODE (ROUND(100*fr.fin_factuurregel_btw/fr.fin_factuurregel_totaal), 19, '2',6,'1','0') ) BTWtype, (f.fin_factuur_totaal + f.fin_factuur_totaal_BTW) TotBedrFactuur, f.fin_factuur_debiteur_nr OnsKlantNr, 'FB' Bedrijf, f.fin_factuur_key FROM bes_bestelopdr bo, prs_bedrijf b, bes_bestelling bes, bes_bestelopdr_item boi, bes_bestelling_item bi, prs_kostenplaats k, fin_factuur f, fin_factuurregel fr, prs_kostensoort kfr, prs_kostensoort ks, bes_srtdeel isd, bes_srtgroep isg, ins_tab_discipline itd, prs_kostensoort kst WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND bes.bes_bestelling_key = bi.bes_bestelling_key AND k.prs_kostenplaats_key = bes.prs_kostenplaats_key AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+) AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key AND f.fin_factuur_statuses_key = 6 AND f.fin_factuur_key = fr.fin_factuur_key AND fr.prs_kostensoort_key = kfr.prs_kostensoort_key(+) AND kst.prs_kostensoort_key = itd.prs_kostensoort_key AND itd.ins_discipline_key = isg.ins_discipline_key AND isg.bes_srtgroep_key = isd.bes_srtgroep_key AND isd.bes_srtdeel_key = bi.bes_srtdeel_key GROUP BY TO_CHAR (bo.bes_bestelopdr_key), f.fin_factuur_nr, b.prs_leverancier_nr, TO_CHAR (f.fin_factuur_datum, 'YYYYMMDD'), COALESCE(kfr.prs_kostensoort_oms, ks.prs_kostensoort_oms, kst.prs_kostensoort_oms), fr.fin_factuurregel_omschrijving, fr.fin_factuurregel_referentie, k.prs_kostenplaats_nr, fr.fin_factuurregel_totaal, COALESCE (fin_factuur_boekmaand, TO_CHAR (f.fin_factuur_datum, 'YYYY-MM')), DECODE (ROUND(100*fr.fin_factuurregel_btw/fr.fin_factuurregel_totaal), 19, '2',6,'1','0'), f.fin_factuur_totaal_btw, f.fin_factuur_totaal, f.fin_factuur_debiteur_nr, f.fin_factuur_key; CREATE OR REPLACE VIEW CONN_V_EXP_CNT (ORDERNR, FACTUURNR, LEVERANCIERSNR, FACTUURDATUM, BOEKINGSDATUM, SPREIDENOVER, KOSTENSOORT, FACREGELOMS, LOCATIENR, BUDGETCODE, HUURDERNR, AANTAL, PRIJS, VERDEELPERIODE, BTWTYPE, TOTAAL, KLANTNR, EIGENAAR, FIN_FACTUUR_KEY) AS SELECT 'C' || c.cnt_contract_nummer_intern opdrachtnr, f.fin_factuur_nr FactNr, b.prs_leverancier_nr LeverancNr, TO_CHAR (f.fin_factuur_datum, 'YYYYMMDD') FactDatum, '' BoekDatum, '' SpreidenOver, COALESCE(kfr.prs_kostensoort_oms, ks.prs_kostensoort_oms, kst.prs_kostensoort_oms) KostenSoort, fr.fin_factuurregel_omschrijving Omschrijving, fr.fin_factuurregel_referentie KostenPlaats, (SELECT SUBSTR(k.prs_kostenplaats_nr, 1 ,INSTR(k.prs_kostenplaats_nr, '/', 1, 1)-1) FROM dual) BudgetCode, '' Huurder, 1 Aantal, fr.fin_factuurregel_totaal KostPrijs, --SUM(boi.bes_bestelopdr_item_prijs) KostPrijs, COALESCE (fin_factuur_boekmaand, TO_CHAR (f.fin_factuur_datum, 'YYYY-MM')) VerdeelPeriode, DECODE (fr.fin_factuurregel_totaal, 0, '0', DECODE (ROUND(100*fr.fin_factuurregel_btw/fr.fin_factuurregel_totaal), 19, '2',6,'1','0') ) BTWtype, (f.fin_factuur_totaal + f.fin_factuur_totaal_BTW) TotBedrFactuur, f.fin_factuur_debiteur_nr OnsKlantNr, 'FB' Bedrijf, f.fin_factuur_key FROM prs_bedrijf b, cnt_contract c, prs_kostenplaats k, prs_kostensoort ks, prs_kostensoort kst, fin_factuur f, fin_factuurregel fr, prs_kostensoort kfr WHERE f.cnt_contract_key = c.cnt_contract_key AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND c.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND c.prs_kostensoort_key = kst.prs_kostensoort_key(+) AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+) AND fr.fin_factuur_key = f.fin_factuur_key AND fr.prs_kostensoort_key = kfr.prs_kostensoort_key(+) AND f.fin_factuur_statuses_key = 6; CREATE OR REPLACE VIEW CONN_V_EXP_MLD (ORDERNR, FACTUURNR, LEVERANCIERSNR, FACTUURDATUM, BOEKINGSDATUM, SPREIDENOVER, KOSTENSOORT, FACREGELOMS, LOCATIENR, BUDGETCODE, HUURDERNR, AANTAL, PRIJS, VERDEELPERIODE, BTWTYPE, TOTAAL, KLANTNR, EIGENAAR, FIN_FACTUUR_KEY, PRS_KOSTENPLAATS_MODULE, PRS_KOSTENPLAATS_NR) AS SELECT sdi.ins_srtdiscipline_prefix || o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnr, f.fin_factuur_nr FactNr, b.prs_leverancier_nr LeverancNr, TO_CHAR (f.fin_factuur_datum, 'YYYYMMDD') FactDatum, '' BoekDatum, -- mld_kenmerk_key = 131 , wordt niet meer gebruikt '' SpreidenOver, COALESCE(kfr.prs_kostensoort_oms, ks.prs_kostensoort_oms, COALESCE((SELECT prs_kostensoort_oms FROM prs_kostensoort kst WHERE kst.prs_kostensoort_key = stdm.prs_kostensoort_key), (SELECT kst.prs_kostensoort_oms FROM prs_kostensoort kst WHERE kst.prs_kostensoort_key = di.prs_kostensoort_key))) KostenSoort, fr.fin_factuurregel_omschrijving Omschrijving, fr.fin_factuurregel_referentie KostenPlaats, (SELECT SUBSTR(k.prs_kostenplaats_nr, 1 ,INSTR(k.prs_kostenplaats_nr, '/', 1, 1)-1) FROM dual) BudgetCode, DECODE(mld_kosten_klant, 1, (SELECT SUBSTR(k.prs_kostenplaats_nr, INSTR(k.prs_kostenplaats_nr, '/', 1, 1)+1) FROM dual), '') Huurder, 1 Aantal, fr.fin_factuurregel_totaal KostPrijs, COALESCE (fin_factuur_boekmaand, TO_CHAR (f.fin_factuur_datum, 'YYYY-MM')) VerdeelPeriode, DECODE (fr.fin_factuurregel_totaal, 0, '0', DECODE (ROUND(100*fr.fin_factuurregel_btw/fr.fin_factuurregel_totaal), 19, '2',6,'1','0') ) BTWtype, (f.fin_factuur_totaal + f.fin_factuur_totaal_BTW) TotBedrFactuur, f.fin_factuur_debiteur_nr OnsKlantNr, (SELECT fud.fac_usrdata_omschr FROM mld_kenmerkopdr v, fac_usrdata fud WHERE v.mld_kenmerkopdr_waarde = fud.fac_usrdata_key AND v.mld_opdr_key = o.mld_opdr_key AND v.mld_kenmerk_key = 83) Bedrijf, f.fin_factuur_key, prs_kostenplaats_module, prs_kostenplaats_nr FROM mld_opdr o, prs_bedrijf b, mld_melding m, prs_kostenplaats k, fin_factuur f, fin_factuurregel fr, prs_kostensoort kfr, alg_locatie l, mld_stdmelding stdm, ins_tab_discipline di, ins_srtdiscipline sdi, prs_kostensoort ks WHERE b.prs_bedrijf_key = o.mld_uitvoerende_keys AND o.mld_melding_key = m.mld_melding_key AND k.prs_kostenplaats_key = o.prs_kostenplaats_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND f.mld_opdr_key = o.mld_opdr_key AND f.fin_factuur_key = fr.fin_factuur_key AND fr.prs_kostensoort_key = kfr.prs_kostensoort_key(+) AND m.mld_stdmelding_key = stdm.mld_stdmelding_key AND di.ins_discipline_key = stdm.mld_ins_discipline_key AND sdi.ins_srtdiscipline_key = di.ins_srtdiscipline_key AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+) AND f.fin_factuur_statuses_key = 6 ORDER BY 1, 2; -- Procedure voor de import van facturen (van leverancier of basware) CREATE OR REPLACE PROCEDURE conn_import_factuur ( p_import_key IN NUMBER ) AS v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line v_field VARCHAR2 (100); v_fielddelimitor VARCHAR2 (1); v_errormsg VARCHAR (200); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; -- De velden op de eerste regel v_totbedrfact VARCHAR2 (100); v_totbedrfactvalue VARCHAR2 (100); -- De importvelden v_empty VARCHAR2 (100); v_onsklantnr VARCHAR2 (100); v_ordernr VARCHAR2 (100); v_leveranciernr VARCHAR2 (100); v_factuurnr VARCHAR2 (100); v_factuurdatum VARCHAR2 (100); v_aantal VARCHAR2 (100); v_kostprijs VARCHAR2 (100); v_btw VARCHAR2 (100); v_btw_bedrag VARCHAR2 (100); v_docid VARCHAR2 (100); v_locatie VARCHAR2 (100); v_afleverdatum VARCHAR2 (100); v_omschrijving VARCHAR2 (100); v_check_dec_sign NUMBER(5,2); CURSOR cfactuur IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY FAC_IMP_FILE_INDEX; v_rec cfactuur%rowtype; BEGIN -- Init v_fielddelimitor := ';'; header_is_valid := 0; DELETE FROM conn_imp_factuur; -- check the client decimal settings -- we do not convert the , to a . if the client decimal separator is a , SELECT FAC.SAFE_TO_NUMBER('2,5') INTO v_check_dec_sign FROM DUAL; fac.imp_writelog (p_import_key, 'S', 'Cxx factuurimport $Revision$', ''); OPEN cfactuur; IF cfactuur%ISOPEN THEN LOOP BEGIN FETCH cfactuur INTO v_rec; EXIT WHEN cfactuur%NOTFOUND; v_newline := v_rec.fac_imp_file_line; fac.imp_getfield (v_newline, v_fielddelimitor, v_leveranciernr); fac.imp_getfield (v_newline, v_fielddelimitor, v_factuurnr); fac.imp_getfield (v_newline, v_fielddelimitor, v_factuurdatum); fac.imp_getfield (v_newline, v_fielddelimitor, v_empty); fac.imp_getfield (v_newline, v_fielddelimitor, v_ordernr); fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie); fac.imp_getfield (v_newline, v_fielddelimitor, v_afleverdatum); fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving); fac.imp_getfield (v_newline, v_fielddelimitor, v_aantal); fac.imp_getfield (v_newline, v_fielddelimitor, v_kostprijs); fac.imp_getfield (v_newline, v_fielddelimitor, v_btw_bedrag); fac.imp_getfield (v_newline, v_fielddelimitor, v_btw); fac.imp_getfield (v_newline, v_fielddelimitor, v_docid); IF v_check_dec_sign IS NULL THEN v_kostprijs := REPLACE (SUBSTR (v_kostprijs, 1, 11), ',', '.'); v_btw_bedrag := REPLACE (SUBSTR (v_btw_bedrag, 1, 11), ',', '.'); v_aantal := REPLACE (SUBSTR (v_aantal, 1, 11), ',', '.'); ELSE v_kostprijs := SUBSTR (v_kostprijs, 1, 11); v_btw_bedrag := SUBSTR (v_btw_bedrag, 1, 11); v_aantal := SUBSTR (v_aantal, 1, 11); END IF; -- CONN#17357 en CONN#16819: -- Voorkom invalid number error door een '-' in btw_bedrag IF ( TRIM(v_btw_bedrag) = '-' ) THEN v_btw_bedrag := '0'; fac.imp_writelog (p_import_key, 'I', 'BTW-bedrag ''-'' vervangen door ''0''', SUBSTR (v_ordernr, 1, 13)||' / '||SUBSTR (v_factuurnr, 1, 10) ); END IF; INSERT INTO conn_imp_factuur (debiteurnr, ordernr, leveranciernr, factuurnr, factuurdatum, aantal, kostprijs, btw, btw_bedrag, locatie, afleverdatum, omschrijving, docid ) VALUES (SUBSTR (v_onsklantnr, 1, 30), SUBSTR (v_ordernr, 1, 13), UPPER(SUBSTR (v_leveranciernr, 1, 10)), SUBSTR (v_factuurnr, 1, 10), SUBSTR (v_factuurdatum, 1, 8), SUBSTR (v_aantal, 1, 10), v_kostprijs, SUBSTR (v_btw, 1, 2), v_btw_bedrag, SUBSTR (v_locatie, 1, 4), SUBSTR (v_afleverdatum, 1, 8), SUBSTR (v_omschrijving, 1, 60), SUBSTR (v_docid, 1, 100) ); COMMIT; END; END LOOP; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, ''); END; / CREATE OR REPLACE PROCEDURE conn_update_factuur (p_import_key IN NUMBER) AS CURSOR congeldig IS SELECT ordernr, factuurnr, aantal, kostprijs, btw, btw_bedrag, locatie, omschrijving FROM conn_imp_factuur WHERE fac.safe_to_number(aantal) IS NULL OR fac.safe_to_number(kostprijs) IS NULL OR fac.safe_to_number(btw) IS NULL OR fac.safe_to_number(btw_bedrag) IS NULL; CURSOR cfactuur IS SELECT RTRIM (LTRIM (ordernr)) ordernr, leveranciernr, factuurnr, factuurdatum, SUM (kostprijs) totaal, SUM (btw_bedrag) totaal_btw, btw, SUBSTR (factuurdatum, 5, 4) fjaar, SUBSTR (factuurdatum, 3, 2) fmaand, SUBSTR (factuurdatum, 1, 2) fdag, debiteurnr, -- wordt nog niets mee gedaan SUM (aantal) aantal, locatie, SUBSTR (afleverdatum, 5, 4) ajaar, -- afleverdatum nodig om opdrachtnummer bij bestelopdrachten te achterhalen indien ordernr niet is meegegeven SUBSTR (afleverdatum, 3, 2) amaand, SUBSTR (afleverdatum, 1, 2) adag, omschrijving, SUM (btw_bedrag) btw_bedrag FROM conn_imp_factuur GROUP BY ordernr, leveranciernr, factuurnr, factuurdatum, btw, factuurdatum, debiteurnr, locatie, omschrijving, afleverdatum ORDER BY ordernr, btw DESC; c_i NUMBER; c_teller NUMBER; c_index NUMBER; c_factuurregel NUMBER; c_fac_type VARCHAR2 (1); c_prefix VARCHAR2 (3); c_ordernr_index NUMBER; c_ordernr_s1 VARCHAR2 (20); c_ordernr_s2 VARCHAR2 (20); c_ordernr_t VARCHAR2 (40); c_old_ordernr VARCHAR2 (20); c_write_ordernr VARCHAR2 (20); c_bestelopdr_id VARCHAR2 (20); c_totaal NUMBER; c_fact_totaal NUMBER; c_factuur_totaal NUMBER; c_factuur_btw NUMBER; c_find BOOLEAN; c_find_ordernr BOOLEAN; c_mld_opdr_key NUMBER (10); c_cnt_contract_key NUMBER (10); c_bes_bestelopdr_key NUMBER (10); c_prs_bedrijf_naam VARCHAR2 (100); c_opmerking VARCHAR2 (150); v_desc VARCHAR2(100); v_errormsg VARCHAR (200); oracle_err_mes VARCHAR2 (150); dummy VARCHAR2 (1); v_count NUMBER; BEGIN c_old_ordernr := ''; c_teller := 0; -- CONN#17357 en CONN#16819: -- Voorkom invalid number error voor ongeldige getallen (specifiek een '-' in btw_bedrag) -- 1) Zijn er fouten? SELECT COUNT (*) INTO v_count FROM conn_imp_factuur WHERE fac.safe_to_number (aantal) IS NULL OR fac.safe_to_number (kostprijs) IS NULL OR fac.safe_to_number (btw) IS NULL OR fac.safe_to_number (btw_bedrag) IS NULL; -- 2a) Rapporteer 'invalid numbers' en beëindig import IF (v_count > 0) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand; import wordt afgebroken.', 'Corrigeer de genoemde fouten.'); FOR rco IN congeldig LOOP v_desc := rco.ordernr||' / '||rco.factuurnr; IF ( COALESCE(fac.safe_to_number(rco.kostprijs), -1) = -1 ) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldige kostprijs ['||rco.kostprijs||']', v_desc); END IF; IF ( COALESCE(fac.safe_to_number(rco.btw_bedrag), -1) = -1 ) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldig BTW-bedrag ['||rco.btw_bedrag||']', v_desc); END IF; IF ( COALESCE(fac.safe_to_number(rco.aantal), -1) = -1 ) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldig aantal artikelen ['||rco.aantal||']', v_desc); END IF; IF ( COALESCE(fac.safe_to_number(rco.btw), -1) = -1 ) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldig BTW-percentage ['||rco.btw||']', v_desc); END IF; END LOOP; -- 2b) Geen 'invalid numbers' --> import! ELSE -- Facturen FOR rc IN cfactuur LOOP IF rc.ordernr = c_old_ordernr THEN -- voeg alleen nieuwe factuurregel toe die een andere BTW waarde heeft -- waarde van c_index is nog steeds actueel c_factuurregel := c_factuurregel + 1; BEGIN INSERT INTO fin_factuurregel ( fin_factuur_key, fin_factuurregel_nr, fin_factuurregel_totaal, fin_factuurregel_btw, fin_factuurregel_omschrijving, fin_factuurregel_referentie ) VALUES (c_index, c_factuurregel, rc.totaal, rc.totaal_btw, rc.omschrijving, rc.locatie ); COMMIT; fac.imp_writelog (p_import_key, 'I', 'Factuurregel ' || c_factuurregel || ' toegevoegd aan factuur ' || c_index, rc.ordernr || ' / ' || rc.factuurnr ); EXCEPTION WHEN OTHERS THEN oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := '(ORACLE error ' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', 'Factuur(regel) kan niet toegevoegd worden ' || v_errormsg, rc.ordernr || '/' || rc.factuurnr ); END; c_teller := c_teller + 1; ELSE c_old_ordernr := rc.ordernr; c_factuurregel := 1; c_ordernr_index := INSTR (rc.ordernr, '/'); c_totaal := 0; c_mld_opdr_key := NULL; c_cnt_contract_key := NULL; c_bes_bestelopdr_key := NULL; IF c_ordernr_index = 0 THEN c_ordernr_s1 := rc.ordernr; c_ordernr_s2 := ''; ELSE c_ordernr_s1 := SUBSTR (rc.ordernr, 1, c_ordernr_index - 1); c_ordernr_s2 := SUBSTR (rc.ordernr, c_ordernr_index + 1); END IF; c_find := FALSE; c_find_ordernr := FALSE; c_fac_type := ''; c_prefix := ''; IF (LENGTH (rc.ordernr) > 0) THEN c_prefix := SUBSTR (rc.ordernr, 1, 1); IF ( ( (ASCII (SUBSTR (c_prefix, 1, 1)) >= 65 AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 90) OR (ASCII(SUBSTR (c_prefix, 1, 1)) >= 97 AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 122)) AND ASCII (SUBSTR (c_prefix, 1, 1)) != 67 AND ASCII (SUBSTR (c_prefix, 1, 1)) != 99) THEN c_fac_type := 'O'; -- Opdracht (Melding) ELSIF (ASCII (SUBSTR (c_prefix, 1, 1)) >= 48 AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 57) THEN c_fac_type := 'B'; -- Bestelling ELSIF (ASCII (SUBSTR (c_prefix, 1, 1)) = 67 OR ASCII (SUBSTR (c_prefix, 1, 1)) = 99) THEN c_fac_type := 'C'; -- Contract ELSE fac.imp_writelog (p_import_key, 'I', 'Kan type van factuur niet bepalen ', rc.ordernr || ' / ' || rc.factuurnr ); END IF; ELSE BEGIN -- Probeer opdrachtnummer te achterhalen bij bestelopdrachten -- met hetzelfde leveranciersnummer, locatie, afleverdatum en aantal SELECT bo.bes_bestelopdr_id INTO c_bestelopdr_id FROM bes_bestelopdr bo, bes_bestelopdr_item boi, bes_bestelling_item bbi, bes_bestelling bb, mld_adres ma, alg_locatie l, prs_bedrijf b WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key AND bbi.bes_bestelling_key = bb.bes_bestelling_key AND boi.bes_bestelopdr_item_aantal = rc.aantal AND bb.bes_bestelling_leverdatum = TO_DATE (rc.ajaar || '-' || rc.amaand || '-' || rc.adag || ' 00:00', 'YYYY-MM-DD HH24:MI' ) AND bo.mld_adres_key_lev = ma.mld_adres_key AND ma.alg_locatie_key = l.alg_locatie_key AND l.alg_locatie_code = rc.locatie AND bo.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_leverancier_nr = rc.leveranciernr; c_find_ordernr := TRUE; EXCEPTION WHEN NO_DATA_FOUND THEN oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := '(ORACLE error ' || oracle_err_mes || ')'; fac.imp_writelog ( p_import_key, 'I', 'Kan het bestelopdrachtnummer (OrderNr) niet vinden ' || v_errormsg, '?/' || rc.factuurnr || '/' || rc.aantal || '/' || rc.ajaar || '-' || rc.amaand || '-' || rc.adag || '/' || rc.locatie || '/' || rc.leveranciernr ); c_find_ordernr := FALSE; END; IF c_find_ordernr THEN c_ordernr_index := INSTR (c_bestelopdr_id, '/'); c_totaal := 0; IF c_ordernr_index = 0 THEN c_ordernr_s1 := c_bestelopdr_id; c_ordernr_s2 := ''; ELSE c_ordernr_s1 := SUBSTR (c_bestelopdr_id, 1, c_ordernr_index - 1); c_ordernr_s2 := SUBSTR (c_bestelopdr_id, c_ordernr_index + 1); END IF; c_fac_type := 'B'; END IF; END IF; IF c_fac_type = 'O' THEN IF (c_ordernr_index != 0 AND (ASCII (SUBSTR (c_prefix, 1, 1)) >= 48 AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 57)) -- Er is geen prefix maar het is wel een opdracht -- Afgedwongen door / THEN -- c_ordernr_s2 bevat al het gedeelte na de / -- c_ordernr_s1 bevat geen prefix c_find := TRUE; ELSE c_i := 1; LOOP IF (ASCII (SUBSTR (c_ordernr_s1, c_i, 1)) >= 48 AND ASCII (SUBSTR (c_ordernr_s1, c_i, 1)) <= 57) THEN c_find := TRUE; ELSE c_i := c_i + 1; END IF; EXIT WHEN (c_find OR c_i > LENGTH (c_ordernr_s1)); END LOOP; IF c_find THEN c_ordernr_s1 := SUBSTR (c_ordernr_s1, c_i); ELSE fac.imp_writelog (p_import_key, 'I', 'Kan OrderNr niet bepalen ', rc.ordernr || ' / ' || rc.factuurnr ); END IF; END IF; ELSIF c_fac_type = 'C' THEN -- haal prefix 'C' of 'c' eraf c_ordernr_s1 := SUBSTR (c_ordernr_s1, 2); c_find := TRUE; ELSIF c_fac_type = 'B' THEN -- geen prefix aanwezig, c_ordernr_s1 is goed c_find := TRUE; END IF; -- c_ordernr_s1 bevat ordernummer -- c_ordernr_s2 bevat volgnummer van de opdracht bij meldingen -- Bij bestellingen en contracten is deze waarde leeg -- Vind mld_opdr_key met mld_melding_key IF c_fac_type = 'O' THEN c_cnt_contract_key := NULL; c_bes_bestelopdr_key := NULL; BEGIN SELECT o.mld_opdr_key INTO c_mld_opdr_key FROM mld_opdr o WHERE o.mld_melding_key = c_ordernr_s1 AND mld_opdr_bedrijfopdr_volgnr = c_ordernr_s2; EXCEPTION WHEN NO_DATA_FOUND THEN oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := '(ORACLE error ' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'I', 'Kan de melding referentie niet vinden ' || v_errormsg, rc.ordernr || '/' || rc.factuurnr ); c_find := FALSE; END; ELSIF c_fac_type = 'C' THEN -- bestaat het contract wel? BEGIN SELECT cnt_contract_key INTO c_cnt_contract_key FROM cnt_contract WHERE cnt_contract_key = c_ordernr_s1; EXCEPTION WHEN OTHERS THEN c_cnt_contract_key := NULL; c_find := FALSE; END; c_bes_bestelopdr_key := NULL; c_mld_opdr_key := NULL; ELSIF c_fac_type = 'B' THEN c_cnt_contract_key := NULL; -- vind de bestelopdracht key? BEGIN IF c_ordernr_s2 IS NULL THEN c_ordernr_t := c_ordernr_s1; ELSE c_ordernr_t := c_ordernr_s1 || '/' || c_ordernr_s2; END IF; SELECT bes_bestelopdr_key INTO c_bes_bestelopdr_key FROM bes_bestelopdr WHERE bes_bestelopdr_id = c_ordernr_t; EXCEPTION WHEN OTHERS THEN c_bes_bestelopdr_key := NULL; c_find := FALSE; END; c_mld_opdr_key := NULL; END IF; -- CONN#12074 ook facturen die niet gelinkt kunnen worden moeten ingelezen worden. -- IF ( (c_fac_type = 'B' OR c_fac_type = 'C' OR c_fac_type = 'O') -- AND c_find -- ) -- THEN c_opmerking := ''; IF NOT c_find THEN BEGIN SELECT prs_bedrijf_naam INTO c_prs_bedrijf_naam FROM prs_bedrijf WHERE prs_leverancier_nr = rc.leveranciernr; c_opmerking := 'Leverancier: ' || c_prs_bedrijf_naam || ' Ontvangen ordernummer: ' || rc.ordernr; EXCEPTION WHEN NO_DATA_FOUND THEN c_opmerking := 'Leverancier: onbekend' || ' Ontvangen ordernummer: ' || rc.ordernr; END; END IF; BEGIN SELECT fin_s_fin_factuur_key.NEXTVAL INTO c_index FROM DUAL; SELECT SUM (kostprijs) totaal, SUM (btw_bedrag) totaal_btw INTO c_factuur_totaal, c_factuur_btw FROM conn_imp_factuur WHERE LTRIM (RTRIM (ordernr)) = rc.ordernr; INSERT INTO fin_factuur ( fin_factuur_key, fin_factuur_totaal, fin_factuur_totaal_btw, mld_opdr_key, cnt_contract_key, bes_bestelopdr_key, prs_perslid_key_user, fin_factuur_datum, fin_factuur_opmerking, fin_factuur_statuses_key, fin_factuur_nr, fin_factuur_boekmaand, fin_factuur_debiteur_nr, prs_kostensoort_key ) VALUES ( c_index, c_factuur_totaal, c_factuur_btw, c_mld_opdr_key, c_cnt_contract_key, c_bes_bestelopdr_key, 1042, -- Martin Hanemaaijer TO_DATE (rc.fjaar || '-' || rc.fmaand || '-' || rc.fdag || ' 00:00', 'YYYY-MM-DD HH24:MI'), 'Ge¿mporteerde factuur ' || c_opmerking, 2, rc.factuurnr, rc.fjaar || '-' || rc.fmaand, rc.debiteurnr, NULL ); COMMIT; INSERT INTO fin_factuurregel ( fin_factuur_key, fin_factuurregel_nr, fin_factuurregel_totaal, fin_factuurregel_btw, fin_factuurregel_omschrijving, fin_factuurregel_referentie ) VALUES (c_index, c_factuurregel, -- Zal hier altijd 1 zijn rc.totaal, rc.totaal_btw, rc.omschrijving, rc.locatie ); COMMIT; IF c_find_ordernr THEN c_write_ordernr := c_bestelopdr_id; ELSE c_write_ordernr := rc.ordernr; END IF; fac.imp_writelog (p_import_key, 'I', 'Factuur ' || c_index || ' toegevoegd met factuurregel ' || c_factuurregel, c_write_ordernr || ' / ' || rc.factuurnr ); EXCEPTION WHEN OTHERS THEN oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := '(ORACLE error ' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', 'Factuur(regel) kan niet toegevoegd worden ' || v_errormsg, rc.ordernr || '/' || rc.factuurnr ); END; -- END IF; c_teller := c_teller + 1; END IF; END LOOP; -- Facturen -- Welke bestelling kan afgemeld worden. (Alleen bestellingen kunnen automatisch afgemeld worden) FOR rc IN cfactuur LOOP c_fac_type := ''; c_prefix := ''; c_find_ordernr := FALSE; IF (LENGTH (rc.ordernr) > 0) THEN c_prefix := SUBSTR (rc.ordernr, 1, 1); IF ( ( ( (ASCII (SUBSTR (c_prefix, 1, 1)) >= 65 AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 90) OR (ASCII(SUBSTR (c_prefix, 1, 1)) >= 97 AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 122)) AND ASCII (SUBSTR (c_prefix, 1, 1)) != 67 AND ASCII (SUBSTR (c_prefix, 1, 1)) != 99)) THEN c_fac_type := 'O'; -- Opdracht (Melidng) ELSIF (ASCII (SUBSTR (c_prefix, 1, 1)) >= 48 AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 57) THEN c_fac_type := 'B'; -- Bestelling c_bestelopdr_id := rc.ordernr; ELSIF (ASCII (SUBSTR (c_prefix, 1, 1)) = 67 OR ASCII (SUBSTR (c_prefix, 1, 1)) = 99) THEN c_fac_type := 'C'; -- Contract ELSE fac.imp_writelog (p_import_key, 'E', 'Kan type van factuur niet bepalen ', rc.ordernr || ' / ' || rc.factuurnr ); END IF; ELSE BEGIN -- Probeer opdrachtnummer te achterhalen bij bestelopdrachten -- met hetzelfde leveranciersnummer, locatie, afleverdatum en aantal SELECT bo.bes_bestelopdr_id INTO c_bestelopdr_id FROM bes_bestelopdr bo, bes_bestelopdr_item boi, bes_bestelling_item bbi, bes_bestelling bb, mld_adres ma, alg_locatie l, prs_bedrijf b WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key AND bbi.bes_bestelling_key = bb.bes_bestelling_key AND boi.bes_bestelopdr_item_aantal = rc.aantal AND bb.bes_bestelling_leverdatum = TO_DATE (rc.ajaar || '-' || rc.amaand || '-' || rc.adag || ' 00:00', 'YYYY-MM-DD HH24:MI') AND bo.mld_adres_key_lev = ma.mld_adres_key AND ma.alg_locatie_key = l.alg_locatie_key AND l.alg_locatie_code = rc.locatie AND bo.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_leverancier_nr = rc.leveranciernr; c_find_ordernr := TRUE; EXCEPTION WHEN NO_DATA_FOUND THEN oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := '(ORACLE error ' || oracle_err_mes || ')'; fac.imp_writelog ( p_import_key, 'E', 'Kan het bestelopdrachtnummer (OrderNr) niet vinden ' || v_errormsg, '?/' || rc.factuurnr || '/' || rc.aantal || '/' || rc.ajaar || '-' || rc.amaand || '-' || rc.adag || '/' || rc.locatie || '/' || rc.leveranciernr ); c_find_ordernr := FALSE; END; IF c_find_ordernr THEN c_fac_type := 'B'; END IF; END IF; IF c_fac_type = 'B' THEN SELECT SUM (boi.bes_bestelopdr_item_prijs * boi.bes_bestelopdr_item_aantal) INTO c_totaal FROM bes_bestelopdr b, bes_bestelopdr_item boi WHERE boi.bes_bestelopdr_key = b.bes_bestelopdr_key AND b.bes_bestelopdr_id = c_bestelopdr_id; SELECT MAX (fin_factuur_key) INTO c_index FROM fin_factuur f, bes_bestelopdr bo WHERE bo.bes_bestelopdr_key = f.bes_bestelopdr_key AND bo.bes_bestelopdr_id = c_bestelopdr_id; SELECT SUM (fr.fin_factuurregel_totaal) INTO c_fact_totaal FROM fin_factuur f, fin_factuurregel fr, bes_bestelopdr b WHERE f.bes_bestelopdr_key = b.bes_bestelopdr_key AND f.fin_factuur_key = fr.fin_factuur_key AND b.bes_bestelopdr_id = c_bestelopdr_id; IF c_totaal = c_fact_totaal --c_totaal = rc.totaal THEN BEGIN SELECT '' INTO dummy FROM fin_factuur WHERE fin_factuur_key = c_index AND (mld_opdr_key IS NOT NULL OR cnt_contract_key IS NOT NULL OR bes_bestelopdr_key IS NOT NULL); UPDATE fin_factuur SET fin_factuur_statuses_key = 6 WHERE fin_factuur_key = c_index; fac.trackaction ('FINFOK', c_index, NULL, NULL, NULL); fac.imp_writelog (p_import_key, 'I', 'Factuur ' || c_index || ' status op afgemeld gezet ', c_bestelopdr_id || ' / ' || rc.factuurnr ); EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; END IF; END IF; COMMIT; END LOOP; END IF; -- invalid numbers END; / -- CONN#756 view tbv b-ware ( view wordt niet door facilitor gebruikt) CREATE OR REPLACE VIEW CXX_CRED_BWIPEXP ("CMPCODE", "CODE", "NAME", "ADD1", "ADD2", "TERMS", "ACNUM", "ACREF", "CFVALUE", "STARTYEAR", "STARTPERIOD", "ENDYEAR", "ENDPERIOD") AS SELECT 'FB-01' , PRS_LEVERANCIER_NR , PRS_BEDRIJF_NAAM , PRS_BEDRIJF_POST_ADRES , PRS_BEDRIJF_POST_POSTCODE || '/' || PRS_BEDRIJF_POST_PLAATS , '-' --betalingstermijn , DECODE (UPPER(SUBSTR(PRS_LEVERANCIER_NR,1,1)), 'C', SUBSTR(PRS_LEVERANCIER_NR,2) , (SELECT PRS_KENMERKLINK_WAARDE FROM PRS_KENMERKLINK WHERE PRS_KENMERK_KEY = 1180 AND PRS_LINK_KEY = PRS_BEDRIJF_KEY)) --bankrekeningnummer , '-' , '1431100' , '0' , '0' , '0' , '0' FROM PRS_V_AANWEZIGBEDRIJF WHERE PRS_BEDRIJF_INTERN IS NULL AND NVL(PRS_BEDRIJF_HUURDER,0) <> 1 AND ( UPPER(PRS_LEVERANCIER_NR) LIKE 'C%' OR UPPER(PRS_LEVERANCIER_NR) LIKE 'LEV%'); commit; -- HALTEWERK-rapportage/doorbelastingsoverzicht (CONN#3661) CREATE OR REPLACE VIEW conn_v_haltewerk (fclt_d_dag, fclt_f_opdrachtgever, fclt_f_plaats, fclt_f_halte, fclt_f_medewerker, fclt_f_activiteit, diversen, bestede_tijd, materiaal_bedrag, kilometers) AS SELECT TO_CHAR(dw.mld_deelwerk_datum, 'dd-mm-yyyy') dag, opdrachtgever, ts.alg_terreinsector_code plaats, haltecode || ' ' || haltenaam halte, pf.prs_perslid_naam_full medewerker, activiteit, dw.mld_deelwerk_opmerking, SUM(dw.mld_deelwerk_duur) bestede_tijd, SUM(materiaal_bedrag), SUM(dw.mld_deelwerk_km) FROM (SELECT kd.ins_deel_key kd1, kd.ins_kenmerkdeel_waarde haltecode FROM ins_kenmerkdeel kd WHERE kd.ins_kenmerk_key = 501), (SELECT kd.ins_deel_key kd2, kd.ins_kenmerkdeel_waarde haltenaam FROM ins_kenmerkdeel kd WHERE kd.ins_kenmerk_key = 504), (SELECT dw.mld_deelwerk_key dw1, ud.fac_usrdata_omschr opdrachtgever FROM mld_deelwerk dw, fac_usrdata ud WHERE dw.fac_usrdata_key_opdrachtgever = ud.fac_usrdata_key), (SELECT dwa dw2, activiteit, materiaal_bedrag FROM (SELECT dw.mld_deelwerk_key dwa, ud.fac_usrdata_omschr activiteit FROM mld_deelwerk dw, fac_usrdata ud WHERE dw.fac_usrdata_key_activiteit = ud.fac_usrdata_key AND ud.fac_usrdata_verwijder IS NULL) a LEFT JOIN (SELECT dwm.mld_deelwerk_key dwb, SUM(dwm.mld_deelwerkmateriaal_aantal * ud.fac_usrdata_prijs) materiaal_bedrag FROM mld_deelwerkmateriaal dwm, fac_usrdata ud WHERE dwm.fac_usrdata_key_materiaal = ud.fac_usrdata_key AND ud.fac_usrdata_verwijder IS NULL GROUP BY dwm.mld_deelwerk_key) b ON a.dwa = b.dwb), mld_deelwerk dw, ins_deel d, alg_terreinsector ts, prs_v_perslid_fullnames pf WHERE dw.ins_deel_key = d.ins_deel_key AND d.ins_alg_ruimte_key = ts.alg_terreinsector_key AND dw.prs_perslid_key = pf.prs_perslid_key AND dw.ins_deel_key = kd1 AND dw.ins_deel_key = kd2 AND dw.mld_deelwerk_key = dw1 AND dw.mld_deelwerk_key = dw2 GROUP BY TO_CHAR(dw.mld_deelwerk_datum, 'YYYYMM'), TO_CHAR(dw.mld_deelwerk_datum, 'dd-mm-yyyy'), opdrachtgever, ts.alg_terreinsector_code, haltecode || ' ' || haltenaam, pf.prs_perslid_naam_full, activiteit, dw.mld_deelwerk_opmerking ORDER BY dag, opdrachtgever, plaats, halte, medewerker, activiteit; -- HALTEWERK-rapportage/Materiaaloverzicht (CONN#13730) CREATE OR REPLACE VIEW CONN_V_HALTEMATERIAAL (FCLT_D_DAG, FCLT_F_OPDRACHTGEVER, FCLT_F_PLAATS, FCLT_F_HALTE, FCLT_F_MEDEWERKER, FCLT_F_ACTIVITEIT, DIVERSEN, BESTEDE_TIJD, MATERIAAL_BEDRAG, KILOMETERS, MATERIAAL, AANTAL) AS SELECT TO_CHAR(dw.mld_deelwerk_datum, 'dd-mm-yyyy') dag, opdrachtgever, ts.alg_terreinsector_code plaats, haltecode || ' ' || haltenaam halte, pf.prs_perslid_naam_full medewerker, activiteit, dw.mld_deelwerk_opmerking, TO_CHAR(SUM(dw.mld_deelwerk_duur)) bestede_tijd, -- geen totaal tijd laten zien SUM(materiaal_bedrag), TO_CHAR(CASE SUM(dw.mld_deelwerk_km) WHEN 0 THEN NULL ELSE SUM(dw.mld_deelwerk_km) END) kilometers, -- geen totaal kilometers laten zien, en geen 0 km laten zien per regel materiaal_omschrijving, materiaal_aantal FROM (SELECT kd.ins_deel_key kd1, kd.ins_kenmerkdeel_waarde haltecode FROM ins_kenmerkdeel kd WHERE kd.ins_kenmerk_key = 501), (SELECT kd.ins_deel_key kd2, kd.ins_kenmerkdeel_waarde haltenaam FROM ins_kenmerkdeel kd WHERE kd.ins_kenmerk_key = 504), (SELECT dw.mld_deelwerk_key dw1, ud.fac_usrdata_omschr opdrachtgever FROM mld_deelwerk dw, fac_usrdata ud WHERE dw.fac_usrdata_key_opdrachtgever = ud.fac_usrdata_key), (SELECT dwa dw2, activiteit, materiaal_bedrag, materiaal_omschrijving, materiaal_aantal FROM (SELECT dw.mld_deelwerk_key dwa, ud.fac_usrdata_omschr activiteit FROM mld_deelwerk dw, fac_usrdata ud WHERE dw.fac_usrdata_key_activiteit = ud.fac_usrdata_key) a LEFT JOIN (SELECT dwm.mld_deelwerk_key dwb, SUM(dwm.mld_deelwerkmateriaal_aantal * ud.fac_usrdata_prijs) materiaal_bedrag, ud.fac_usrdata_omschr materiaal_omschrijving, dwm.mld_deelwerkmateriaal_aantal materiaal_aantal FROM mld_deelwerkmateriaal dwm, fac_usrdata ud WHERE dwm.fac_usrdata_key_materiaal = ud.fac_usrdata_key GROUP BY dwm.mld_deelwerk_key, ud.fac_usrdata_omschr, dwm.mld_deelwerkmateriaal_aantal) b ON a.dwa = b.dwb), mld_deelwerk dw, ins_deel d, alg_terreinsector ts, prs_v_perslid_fullnames pf WHERE dw.ins_deel_key = d.ins_deel_key AND d.ins_alg_ruimte_key = ts.alg_terreinsector_key AND dw.prs_perslid_key = pf.prs_perslid_key AND dw.ins_deel_key = kd1 AND dw.ins_deel_key = kd2 AND dw.mld_deelwerk_key = dw1 AND dw.mld_deelwerk_key = dw2 GROUP BY TO_CHAR(dw.mld_deelwerk_datum, 'YYYYMM'), TO_CHAR(dw.mld_deelwerk_datum, 'dd-mm-yyyy'), opdrachtgever, ts.alg_terreinsector_code, haltecode || ' ' || haltenaam, pf.prs_perslid_naam_full, activiteit, dw.mld_deelwerk_opmerking, materiaal_omschrijving, materiaal_aantal ORDER BY dag, opdrachtgever, plaats, halte, medewerker, activiteit; / -- -- notificatie job om bestellers en melders een herinnering te sturen zodat -- ze de opdracht of bestelling afmelden. -- De herinneringmail wordt x dagen na het aanmaken van de bestelopdracht en y -- dagen na de einddatum van de opdracht naar de melder/besteller verzonden. -- De waarden van x en y zijn te configureren bij de catatogus en bij de vakgroep -- als 'Aantal dagen tbv. herinnering' CREATE OR REPLACE VIEW conn_v_noti_bestelling_opdr ( code, sender, receiver, text, key, xkey ) AS SELECT DISTINCT 'BES2MA', NULL, b.prs_perslid_key, 'U wordt verzocht uw bestelling met nummer ' || bo.bes_bestelopdr_id || ' af te melden in Facilitor.', bo.bes_bestelopdr_key, NULL FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi, bes_srtdeel sd, bes_srtgroep sg, bes_disc_params dp, bes_bestelopdr bo WHERE bes_bestelling_status = 5 AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key AND b.bes_bestelling_key = bi.bes_bestelling_key AND TRUNC (bes_bestelopdr_datum + dp.bes_disc_params_noti_dagen) = TRUNC (SYSDATE) AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = dp.bes_ins_discipline_key AND dp.bes_disc_params_noti_dagen IS NOT NULL UNION ALL SELECT DISTINCT 'ORDMAI', NULL, m.prs_perslid_key, 'U wordt verzocht uw opdracht met nummer ' || o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr || ' af te melden in Facilitor.', o.mld_opdr_key, NULL FROM mld_opdr o, mld_melding m, mld_stdmelding std, mld_disc_params md WHERE o.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = md.mld_ins_discipline_key AND (o.mld_statusopdr_key = 5 OR o.mld_statusopdr_key = 8) AND mld_disc_params_noti_dagen IS NOT NULL AND TRUNC (o.mld_opdr_einddatum + md.mld_disc_params_noti_dagen) = TRUNC (SYSDATE); -- CONN#12661: Notificatie op basis van meterstandverantwoordelijke per locatie -- View voor kenmerk "Meterstanden verantwoordelijke" /* Formatted on 11-6-2010 16:49:27 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_meterstanden_verantw ( prs_perslid_key, verantwoordelijke ) AS SELECT w.prs_perslid_key, p.prs_perslid_naam || DECODE (NVL (p.prs_perslid_voorletters, ''), '', '', ', ' || p.prs_perslid_voorletters) || DECODE (NVL (p.prs_perslid_tussenvoegsel, ''), '', '', ' ' || p.prs_perslid_tussenvoegsel) || DECODE (NVL (p.prs_perslid_voornaam, ''), '', '', ' (' || p.prs_perslid_voornaam || ')') naam FROM fac_v_webgebruiker w, prs_v_aanwezigperslid p WHERE w.prs_perslid_key = p.prs_perslid_key AND w.fac_functie_key = (SELECT fac_functie_key FROM fac_functie WHERE fac_functie_code = 'WEB_INSUSE') AND w.ins_discipline_key = (SELECT itd.ins_discipline_key FROM ins_tab_discipline itd WHERE itd.ins_discipline_omschrijving = 'Verbruiksregistratie') ORDER BY p.prs_perslid_upper; -------------------------- -- -- Afmeldprocedures voor bestellingen en opdrachten -- -------------------------- CREATE OR REPLACE PROCEDURE CONN_EXPORT_AFM_BESTEL (p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS CURSOR c1 IS SELECT DISTINCT bi.bes_bestelling_key, bes_bestelling_item_key FROM bes_bestelling_item bi, bes_bestelling b, bes_srtdeel sd, bes_srtgroep sg, bes_disc_params bdp WHERE bi.bes_bestelling_key = b.bes_bestelling_key AND bes_bestelling_datum < SYSDATE - bdp.bes_disc_params_noti_dagen - 14 AND bes_bestelling_status IN (3, 4, 5) -- (gefiatteerd, geaccepteerd, besteld) AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = bdp.bes_ins_discipline_key AND bdp.bes_disc_params_noti_dagen IS NOT NULL; CURSOR c2 (p_bes_bestelling_item_key IN number ) IS SELECT DISTINCT bo.bes_bestelopdr_key, boi.bes_bestelopdr_item_key, bes_bestelling_item_key, bes_bestelopdr_id FROM bes_bestelopdr bo, bes_bestelopdr_item boi, bes_bestelling_item bi WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key AND bi.bes_bestelling_item_key = p_bes_bestelling_item_key; rec1 c1%ROWTYPE; rec2 c2%ROWTYPE; v_errormsg VARCHAR2 (200); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); BEGIN FOR rec1 IN c1 LOOP BEGIN FOR rec2 IN c2 (rec1.bes_bestelling_item_key) LOOP BEGIN UPDATE bes_bestelopdr_item b SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal, bes_bestelopdr_item_ontvangen = SYSDATE WHERE bes_bestelopdr_item_key = rec2.bes_bestelopdr_item_key; BEGIN bes.updatebestelopdrstatus (rec2.bes_bestelopdr_key, 1042); END; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', v_errormsg, 'Bestelopdracht:'|| rec2.bes_bestelopdr_id); END; END LOOP; DBMS_OUTPUT.put_line ('rec1 item: ' || rec1.bes_bestelling_item_key); UPDATE bes_bestelling_item SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal WHERE bes_bestelling_item_key = rec1.bes_bestelling_item_key; UPDATE bes_bestelling_item bi SET bes_bestelling_item_status = 6 -- geleverd WHERE COALESCE (bi.bes_bestelling_item_aantal, 0) = COALESCE (bi.bes_bestelling_item_aantalontv, 0) AND bes_bestelling_item_status = 5; -- besteld BEGIN bes.updatebestellingstatus (rec1.bes_bestelling_key, 1042); END; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', v_errormsg, 'Bestelling:'|| rec1.bes_bestelling_key); END; END LOOP; COMMIT; END; / CREATE OR REPLACE PROCEDURE CONN_EXPORT_AFM_OPDRACHT (p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS CURSOR c_opdr IS SELECT mld_opdr_key, mld_opdr_bedrijfopdr_volgnr, o.mld_melding_key FROM mld_opdr o, mld_melding m, mld_stdmelding std, mld_disc_params dp WHERE mld_statusopdr_key = 5 -- uitgegeven AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = dp.mld_ins_discipline_key AND o.mld_melding_key = m.mld_melding_key AND o.mld_opdr_datumbegin < SYSDATE - dp.mld_disc_params_noti_dagen - 14; CURSOR c_melding IS SELECT DISTINCT m.mld_melding_key FROM mld_melding m, mld_opdr o, fac_tracking t, fac_srtnotificatie sn WHERE o.mld_melding_key = m.mld_melding_key AND o.mld_opdr_key = t.fac_tracking_refkey AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'ORDAFM' AND trunc(t.fac_tracking_datum) = trunc(sysdate) AND NOT EXISTS (SELECT m.mld_melding_key FROM mld_opdr op WHERE op.mld_statusopdr_key = 5 -- uitgegeven AND m.mld_melding_key = op.mld_melding_key); rec1 c_opdr%ROWTYPE; rec2 c_melding%ROWTYPE; v_errormsg VARCHAR2 (200); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); BEGIN FOR rec1 IN c_opdr LOOP BEGIN mld.setopdrachtstatus(rec1.mld_opdr_key, 6, 1024); -- status afgemeld , user mhanemaa EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', v_errormsg, 'Opdracht:'|| rec1.mld_melding_key || '/' || rec1.mld_opdr_bedrijfopdr_volgnr); END; END LOOP; FOR rec2 IN c_melding LOOP BEGIN mld.setmeldingstatus(rec2.mld_melding_key, 5, 1024); -- status afgemeld , user mhanemaa EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', v_errormsg, 'Melding:'|| rec2.mld_melding_key); END; END LOOP; COMMIT; END; / CREATE OR REPLACE VIEW conn_v_imp_log (fclt_f_applicatie, datum, fclt_f_status, omschrijving, hint ) AS SELECT imp_log_applicatie, to_char(imp_log_datum, 'yyyymmdd hh24miss'), imp_log_status, imp_log_omschrijving, imp_log_hint FROM imp_log; CREATE OR REPLACE VIEW conn_v_rap_gebouw_verplichting AS SELECT l.alg_locatie_code fclt_f_locatiecode, l.alg_locatie_plaats fclt_f_plaats, v.fclt_f_gebouwcode, v.fclt_f_verplichting, v.item, v.fclt_3d_locatie_key FROM alg_v_rap_gebouw_verplichting v, alg_locatie l WHERE v.fclt_3d_locatie_key = l.alg_locatie_key; / -- Bevat CUST01- en CUST02-reminder naar beheerder verantwoordelijk voor de -- keuring van betreffende objecten (Gebouwobjecten vs. Gereedschappen). -- CUST01: wekelijks mbt. over 4 tot 5 weken te keuren objecten! -- CUST02: wekelijks mbt. objecten waarvan keuringsdatum is verstreken! /* Formatted on 2-12-2011 14:24:24 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW CONN_V_NOTI_KEURINGREMINDER ( code, sender, receiver, text, KEY, par1, par2, xkey ) AS SELECT sn.fac_srtnotificatie_code code, NULL sender, fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde) receiver, REPLACE ( REPLACE ( sn.fac_srtnotificatie_oms, '##SRTGROEP##', DECODE (x.min_srtgroep_oms, x.max_srtgroep_oms, x.min_srtgroep_oms, x.min_srtgroep_oms || ', ...') ), '##AANTAL##', x.aantal ) subject, x.dummy_deel_key, -- Dummy key!!! NULL, NULL, NULL FROM ( SELECT o.alg_locatie_key, DECODE (o.ins_discipline_key, 101, 1320, -- Gebouwobjecten -> 1320-verantw. 341, 1320, -- Gebouwobjecten -> 1320-verantw. 1841, 1320, -- Gebouwobjecten -> 1320-verantw. 1881, 1320, -- Gebouwobjecten -> 1320-verantw. 1340) -- Gereedschappen -> 1340-verantw. verantwoordelijke, MIN (o.ins_srtgroep_omschrijving) min_srtgroep_oms, MAX (o.ins_srtgroep_omschrijving) max_srtgroep_oms, MIN (o.ins_deel_key) dummy_deel_key, COUNT (DISTINCT o.ins_deel_key) aantal FROM (SELECT scs.ins_srtinstallatie_key ins_srtdeel_key, scs.ins_srtcontrole_key, scs.ins_srtcontrole_omschrijving, scs.ins_srtcontrole_periode FROM ins_srtcontrole scs WHERE scs.ins_srtcontrole_niveau = 'S' UNION ALL SELECT sd.ins_srtdeel_key, scg.ins_srtcontrole_key, scg.ins_srtcontrole_omschrijving, scg.ins_srtcontrole_periode FROM ins_srtcontrole scg, ins_srtdeel sd WHERE scg.ins_srtcontrole_niveau = 'G' AND scg.ins_srtinstallatie_key = sd.ins_srtgroep_key UNION ALL SELECT sd.ins_srtdeel_key, scd.ins_srtcontrole_key, scd.ins_srtcontrole_omschrijving, scd.ins_srtcontrole_periode FROM ins_srtcontrole scd, ins_srtgroep sg, ins_srtdeel sd WHERE scd.ins_srtcontrole_niveau = 'D' AND scd.ins_srtinstallatie_key = sg.ins_discipline_key AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) cso -- ControleSoortObjecten LEFT JOIN (SELECT d.ins_deel_key, d.ins_deel_aanmaak, sd.ins_srtdeel_key, sg.ins_srtgroep_omschrijving, td.ins_discipline_key, td.ins_discipline_omschrijving, l.alg_locatie_key FROM ins_v_aanwezigdeel d, ins_srtdeel sd, ins_srtgroep sg, ins_tab_discipline td, alg_locatie l WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = td.ins_discipline_key AND d.ins_alg_locatie_key = l.alg_locatie_key(+)) o -- Objecten ON cso.ins_srtdeel_key = o.ins_srtdeel_key LEFT JOIN (SELECT ins_deel_key, ins_kenmerkdeel_waarde afgekeurd FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 1466) oa -- ObjectAfgekeurd ON o.ins_deel_key = oa.ins_deel_key LEFT JOIN (SELECT dsc.ins_deel_key, dsc.ins_srtcontrole_key, dsc.ins_deelsrtcontrole_datum, dsc.ins_deelsrtcontrole_opmerking FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deelsrtcontrole_datum = (SELECT MAX ( ins_deelsrtcontrole_datum ) FROM ins_deelsrtcontrole WHERE ins_deel_key = dsc.ins_deel_key AND ins_srtcontrole_key = dsc.ins_srtcontrole_key)) olc -- ObjectLaatsteControle ON o.ins_deel_key = olc.ins_deel_key AND cso.ins_srtcontrole_key = olc.ins_srtcontrole_key WHERE (oa.afgekeurd IS NULL OR oa.afgekeurd = 130) -- 'Nee' AND COALESCE (olc.ins_deelsrtcontrole_datum, o.ins_deel_aanmaak) + cso.ins_srtcontrole_periode BETWEEN TRUNC(SYSDATE + 28) AND TRUNC(SYSDATE + 35) GROUP BY o.alg_locatie_key, DECODE (o.ins_discipline_key, 101, 1320, -- Gebouwobjecten -> 1320-verantw. 341, 1320, -- Gebouwobjecten -> 1320-verantw. 1841, 1320, -- Gebouwobjecten -> 1320-verantw. 1881, 1320, -- Gebouwobjecten -> 1320-verantw. 1340)) x, -- Gereedschappen -> 1340-verantw. alg_v_aanwezigonrgoedkenmerk ok, fac_srtnotificatie sn WHERE x.alg_locatie_key = ok.alg_onrgoed_key AND x.verantwoordelijke = ok.alg_kenmerk_key AND ok.alg_onrgoed_niveau = 'L' AND sn.fac_srtnotificatie_code = 'CUST01' UNION ALL SELECT sn.fac_srtnotificatie_code code, NULL sender, fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde) receiver, REPLACE ( REPLACE ( sn.fac_srtnotificatie_oms, '##SRTGROEP##', DECODE (x.min_srtgroep_oms, x.max_srtgroep_oms, x.min_srtgroep_oms, x.min_srtgroep_oms || ', ...') ), '##AANTAL##', x.aantal ) subject, x.dummy_deel_key, -- Dummy key!!! NULL, NULL, NULL FROM ( SELECT o.alg_locatie_key, DECODE (o.ins_discipline_key, 101, 1320, -- Gebouwobjecten -> 1320-verantw. 341, 1320, -- Gebouwobjecten -> 1320-verantw. 1841, 1320, -- Gebouwobjecten -> 1320-verantw. 1881, 1320, -- Gebouwobjecten -> 1320-verantw. 1340) -- Gereedschappen -> 1340-verantw. verantwoordelijke, MIN (o.ins_srtgroep_omschrijving) min_srtgroep_oms, MAX (o.ins_srtgroep_omschrijving) max_srtgroep_oms, MIN (o.ins_deel_key) dummy_deel_key, COUNT (DISTINCT o.ins_deel_key) aantal FROM (SELECT scs.ins_srtinstallatie_key ins_srtdeel_key, scs.ins_srtcontrole_key, scs.ins_srtcontrole_omschrijving, scs.ins_srtcontrole_periode FROM ins_srtcontrole scs WHERE scs.ins_srtcontrole_niveau = 'S' UNION ALL SELECT sd.ins_srtdeel_key, scg.ins_srtcontrole_key, scg.ins_srtcontrole_omschrijving, scg.ins_srtcontrole_periode FROM ins_srtcontrole scg, ins_srtdeel sd WHERE scg.ins_srtcontrole_niveau = 'G' AND scg.ins_srtinstallatie_key = sd.ins_srtgroep_key UNION ALL SELECT sd.ins_srtdeel_key, scd.ins_srtcontrole_key, scd.ins_srtcontrole_omschrijving, scd.ins_srtcontrole_periode FROM ins_srtcontrole scd, ins_srtgroep sg, ins_srtdeel sd WHERE scd.ins_srtcontrole_niveau = 'D' AND scd.ins_srtinstallatie_key = sg.ins_discipline_key AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) cso -- ControleSoortObjecten LEFT JOIN (SELECT d.ins_deel_key, d.ins_deel_aanmaak, sd.ins_srtdeel_key, sg.ins_srtgroep_omschrijving, td.ins_discipline_key, td.ins_discipline_omschrijving, l.alg_locatie_key FROM ins_v_aanwezigdeel d, ins_srtdeel sd, ins_srtgroep sg, ins_tab_discipline td, alg_locatie l WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = td.ins_discipline_key AND d.ins_alg_locatie_key = l.alg_locatie_key(+)) o -- Objecten ON cso.ins_srtdeel_key = o.ins_srtdeel_key LEFT JOIN (SELECT ins_deel_key, ins_kenmerkdeel_waarde afgekeurd FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 1466) oa -- ObjectAfgekeurd ON o.ins_deel_key = oa.ins_deel_key LEFT JOIN (SELECT dsc.ins_deel_key, dsc.ins_srtcontrole_key, dsc.ins_deelsrtcontrole_datum, dsc.ins_deelsrtcontrole_opmerking FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deelsrtcontrole_datum = (SELECT MAX ( ins_deelsrtcontrole_datum ) FROM ins_deelsrtcontrole WHERE ins_deel_key = dsc.ins_deel_key AND ins_srtcontrole_key = dsc.ins_srtcontrole_key)) olc -- ObjectLaatsteControle ON o.ins_deel_key = olc.ins_deel_key AND cso.ins_srtcontrole_key = olc.ins_srtcontrole_key WHERE (oa.afgekeurd IS NULL OR oa.afgekeurd = 130) -- 'Nee' AND COALESCE (olc.ins_deelsrtcontrole_datum, o.ins_deel_aanmaak) + cso.ins_srtcontrole_periode < TRUNC (SYSDATE) GROUP BY o.alg_locatie_key, DECODE (o.ins_discipline_key, 101, 1320, -- Gebouwobjecten -> 1320-verantw. 341, 1320, -- Gebouwobjecten -> 1320-verantw. 1841, 1320, -- Gebouwobjecten -> 1320-verantw. 1881, 1320, -- Gebouwobjecten -> 1320-verantw. 1340)) x, -- Gereedschappen -> 1340-verantw. alg_v_aanwezigonrgoedkenmerk ok, fac_srtnotificatie sn WHERE x.alg_locatie_key = ok.alg_onrgoed_key AND x.verantwoordelijke = ok.alg_kenmerk_key AND ok.alg_onrgoed_niveau = 'L' AND sn.fac_srtnotificatie_code = 'CUST02'; CREATE OR REPLACE VIEW conn_v_rap_kostenkwartaal (fclt_f_locatie_code, fclt_f_locatie_omschrijving, fclt_f_jaar, fclt_f_kwartaal, fclt_f_soort_melding, aantal, werkelijke_kosten ) AS SELECT c21, c20, c30, c31, c32, COUNT (c0), SUM (c27) FROM (SELECT DISTINCT m.mld_melding_key c0, alg_locatie_code c21, alg_locatie_omschrijving c20, COALESCE ((SELECT SUM (f.fin_factuur_totaal) FROM fin_factuur f, mld_opdr o2 WHERE f.mld_opdr_key = o2.mld_opdr_key AND o2.mld_melding_key = m.mld_melding_key), 0 ) c27, TO_CHAR (mld_melding_datum, 'yyyy') c30, TO_CHAR ( (TRUNC ( TO_NUMBER (TO_CHAR (mld_melding_datum, 'mm' ) ) / 4 ) ) + 1) c31, mld_stdmelding_omschrijving c32 FROM mld_melding m, mld_discipline md, alg_locatie l, mld_stdmelding st WHERE m.mld_alg_locatie_key = l.alg_locatie_key AND m.mld_stdmelding_key = st.mld_stdmelding_key AND st.mld_ins_discipline_key = md.ins_discipline_key AND md.ins_srtdiscipline_key = 1) GROUP BY c20, c21, c30, c31, c32 ORDER BY 1, 2, 3 DESC; /* Formatted on 28-11-2011 10:52:17 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_rap_tsnkleding ( fclt_f_besteller, fclt_f_bestemd_voor, fclt_f_naam_drager, fclt_d_besteldatum, item, aantal_besteleenheden, prijs, kostenplaats ) AS SELECT pf.prs_perslid_naam_full besteller, (SELECT pp.prs_perslid_naam_full FROM bes_kenmerkbestell v, bes_kenmerk k, bes_srtkenmerk sk, prs_v_perslid_fullnames_all pp WHERE v.bes_bestelling_key = b.bes_bestelling_key AND v.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND v.bes_kenmerkbestell_waarde = pp.prs_perslid_key AND sk.bes_srtkenmerk_key = 161) bestemd_voor, (SELECT v.bes_kenmerkbestell_waarde waarde FROM bes_kenmerkbestell v, bes_kenmerk k, bes_srtkenmerk sk WHERE v.bes_bestelling_key = b.bes_bestelling_key AND v.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND sk.bes_srtkenmerk_key = 65) naam_drager, TO_CHAR (bes_bestelling_datum, 'DD-MM-YYYY'), COALESCE (isd.bes_srtdeel_nr, '') || ' ' || isd.bes_srtdeel_omschrijving item, i.bes_bestelling_item_aantal, i.bes_bestelling_item_aantal * bi.bes_bestelopdr_item_prijs prijs, pk.prs_kostenplaats_nr FROM bes_bestelling b, prs_v_perslid_fullnames_all pf, bes_bestelling_item i, bes_srtdeel isd, bes_srtgroep isg, bes_discipline bd, mld_adres a, bes_bestelopdr_item bi, prs_kostenplaats pk WHERE pf.prs_perslid_key = b.prs_perslid_key AND b.bes_bestelling_key = i.bes_bestelling_key AND i.bes_srtdeel_key = isd.bes_srtdeel_key AND isd.bes_srtgroep_key = isg.bes_srtgroep_key AND isg.ins_discipline_key = bd.ins_discipline_key AND bd.ins_discipline_key = 1901 AND i.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key(+) AND b.mld_adres_key_lev = a.mld_adres_key(+) AND b.prs_kostenplaats_key = pk.prs_kostenplaats_key; CREATE OR REPLACE FORCE VIEW conn_v_rap_tourskleding ( fclt_f_besteller, fclt_f_bestemd_voor, fclt_f_naam_drager, fclt_d_besteldatum, item, aantal_besteleenheden, prijs, kostenplaats ) AS SELECT pf.prs_perslid_naam_full besteller, (SELECT pp.prs_perslid_naam_full FROM bes_kenmerkbestell v, bes_kenmerk k, bes_srtkenmerk sk, prs_v_perslid_fullnames_all pp WHERE v.bes_bestelling_key = b.bes_bestelling_key AND v.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND v.bes_kenmerkbestell_waarde = pp.prs_perslid_key AND sk.bes_srtkenmerk_key = 161) bestemd_voor, (SELECT v.bes_kenmerkbestell_waarde waarde FROM bes_kenmerkbestell v, bes_kenmerk k, bes_srtkenmerk sk WHERE v.bes_bestelling_key = b.bes_bestelling_key AND v.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND sk.bes_srtkenmerk_key = 65) naam_drager, TO_CHAR (bes_bestelling_datum, 'DD-MM-YYYY'), COALESCE (isd.bes_srtdeel_nr, '') || ' ' || isd.bes_srtdeel_omschrijving item, i.bes_bestelling_item_aantal, i.bes_bestelling_item_aantal * bi.bes_bestelopdr_item_prijs prijs, pk.prs_kostenplaats_nr FROM bes_bestelling b, prs_v_perslid_fullnames_all pf, bes_bestelling_item i, bes_srtdeel isd, bes_srtgroep isg, bes_discipline bd, mld_adres a, bes_bestelopdr_item bi, prs_kostenplaats pk WHERE pf.prs_perslid_key = b.prs_perslid_key AND b.bes_bestelling_key = i.bes_bestelling_key AND i.bes_srtdeel_key = isd.bes_srtdeel_key AND isd.bes_srtgroep_key = isg.bes_srtgroep_key AND isg.ins_discipline_key = bd.ins_discipline_key AND bd.ins_discipline_key = 2221 AND i.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key(+) AND b.mld_adres_key_lev = a.mld_adres_key(+) AND b.prs_kostenplaats_key = pk.prs_kostenplaats_key; /* Formatted on 23-1-2009 15:08:32 (QP5 v5.115.810.9015) */ -- TSN Initial Hokatex kleding CREATE OR REPLACE VIEW CONN_V_RAP_TSN_HOK_KLEDING ( FCLT_F_BESTELLER, FCLT_F_BESTEMD_VOOR, FCLT_F_NAAM_DRAGER, FCLT_D_BESTELDATUM, ITEM, AANTAL_BESTELEENHEDEN, RUILING, TOENAME, AFNAME, KOSTENPLAATS ) AS SELECT pf.prs_perslid_naam_full besteller, (SELECT pp.prs_perslid_naam_full FROM bes_kenmerkbestell v, bes_kenmerk k, bes_srtkenmerk sk, prs_v_perslid_fullnames_all pp WHERE v.bes_bestelling_key = b.bes_bestelling_key AND v.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND v.bes_kenmerkbestell_waarde = pp.prs_perslid_key AND sk.bes_srtkenmerk_key = 161) bestemd_voor, (SELECT v.bes_kenmerkbestell_waarde waarde FROM bes_kenmerkbestell v, bes_kenmerk k, bes_srtkenmerk sk WHERE v.bes_bestelling_key = b.bes_bestelling_key AND v.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND sk.bes_srtkenmerk_key = 65) naam_drager, TO_CHAR(bes_bestelling_datum,'DD-MM-YYYY'), COALESCE (isd.bes_srtdeel_nr, '') || ' ' || isd.bes_srtdeel_omschrijving item, i.bes_bestelling_item_aantal, (SELECT ud.fac_usrdata_omschr FROM bes_kenmerkbestell v, bes_kenmerk k, bes_srtkenmerk sk, fac_usrdata ud WHERE v.bes_bestelling_key = b.bes_bestelling_key AND v.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND v.bes_kenmerkbestell_waarde = ud.fac_usrdata_key AND sk.bes_srtkenmerk_key = 523) ruiling, (SELECT ud.fac_usrdata_omschr FROM bes_kenmerkbestell v, bes_kenmerk k, bes_srtkenmerk sk, fac_usrdata ud WHERE v.bes_bestelling_key = b.bes_bestelling_key AND v.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND v.bes_kenmerkbestell_waarde = ud.fac_usrdata_key AND sk.bes_srtkenmerk_key = 526) toename, (SELECT ud.fac_usrdata_omschr FROM bes_kenmerkbestell v, bes_kenmerk k, bes_srtkenmerk sk, fac_usrdata ud WHERE v.bes_bestelling_key = b.bes_bestelling_key AND v.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND v.bes_kenmerkbestell_waarde = ud.fac_usrdata_key AND sk.bes_srtkenmerk_key = 527) afname, pk.prs_kostenplaats_nr FROM bes_bestelling b, prs_v_perslid_fullnames_all pf, bes_bestelling_item i, bes_srtdeel isd, bes_srtgroep isg, bes_discipline bd, mld_adres a, bes_bestelopdr_item bi, prs_kostenplaats pk WHERE pf.prs_perslid_key = b.prs_perslid_key AND b.bes_bestelling_key = i.bes_bestelling_key AND i.bes_srtdeel_key = isd.bes_srtdeel_key AND isd.bes_srtgroep_key = isg.bes_srtgroep_key AND isg.ins_discipline_key = bd.ins_discipline_key AND bd.ins_discipline_key = 2181 AND i.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key(+) AND b.mld_adres_key_lev = a.mld_adres_key(+) AND b.prs_kostenplaats_key = pk.prs_kostenplaats_key; -- Eerste opzet /* Formatted on 25-3-2010 9:46:31 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW conn_v_businessobjects ( fin_factuur_nr, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_totaal, fin_factuur_totaal_btw, fin_factuur_incl, fin_factuur_debiteur_nr, fin_factuur_opmerking, fin_factuur_statuses_omschr, prs_kostensoort_oms, prs_kostensoort_refcode, reftype, nummer, volgnr, prs_kostenplaats_nr, prs_leverancier_nr ) AS SELECT f.fin_factuur_nr, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_totaal, fin_factuur_totaal_btw, fin_factuur_totaal + fin_factuur_totaal_btw fin_factuur_incl, fin_factuur_debiteur_nr, f.fin_factuur_opmerking, s.fin_factuur_statuses_omschr, k.prs_kostensoort_oms, k.prs_kostensoort_refcode, 'O' reftype, sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) referentienummer, o.mld_opdr_bedrijfopdr_volgnr volgnr, kp.prs_kostenplaats_nr, b.prs_leverancier_nr FROM fin_factuur f, mld_opdr o, mld_melding m, fin_factuur_statuses s, prs_kostensoort k, prs_kostenplaats kp, prs_bedrijf b, mld_stdmelding stdm, ins_tab_discipline d, ins_srtdiscipline sd WHERE f.mld_opdr_key = o.mld_opdr_key AND o.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = stdm.mld_stdmelding_key AND stdm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND f.fin_factuur_statuses_key = s.fin_factuur_statuses_key AND f.prs_kostensoort_key = k.prs_kostensoort_key(+) AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+) UNION ALL SELECT f.fin_factuur_nr, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_totaal, fin_factuur_totaal_btw, fin_factuur_totaal + fin_factuur_totaal_btw fin_factuur_incl, fin_factuur_debiteur_nr, f.fin_factuur_opmerking, s.fin_factuur_statuses_omschr, k.prs_kostensoort_oms, k.prs_kostensoort_refcode, 'B' reftype, bo.bes_bestelopdr_id referentienummer, 1 volgnr, kp.prs_kostenplaats_nr, b.prs_leverancier_nr FROM fin_factuur f, bes_bestelopdr bo, fin_factuur_statuses s, prs_kostensoort k, prs_kostenplaats kp, prs_bedrijf b, bes_bestelling ba, bes_bestelling_item bai, bes_bestelopdr_item boi WHERE f.bes_bestelopdr_key = bo.bes_bestelopdr_key AND f.fin_factuur_statuses_key = s.fin_factuur_statuses_key AND f.prs_kostensoort_key = k.prs_kostensoort_key AND bai.bes_bestelling_key = ba.bes_bestelling_key AND bai.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key AND ba.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND bo.prs_bedrijf_key = b.prs_bedrijf_key(+) UNION ALL SELECT f.fin_factuur_nr, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_totaal, fin_factuur_totaal_btw, fin_factuur_totaal + fin_factuur_totaal_btw fin_factuur_incl, fin_factuur_debiteur_nr, f.fin_factuur_opmerking, s.fin_factuur_statuses_omschr, k.prs_kostensoort_oms, k.prs_kostensoort_refcode, 'C' reftype, 'C'||TO_CHAR (c.cnt_contract_nummer_intern) referentienummer, 1 volgnr, kp.prs_kostenplaats_nr, b.prs_leverancier_nr FROM fin_factuur f, cnt_contract c, fin_factuur_statuses s, prs_kostensoort k, prs_kostenplaats kp, prs_bedrijf b WHERE f.cnt_contract_key = c.cnt_contract_key AND f.fin_factuur_statuses_key = s.fin_factuur_statuses_key AND f.prs_kostensoort_key = k.prs_kostensoort_key AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+); --CONN#20077 CREATE OR REPLACE VIEW conn_v_pgb_uitnutting ( fclt_f_Catalogus, fclt_f_Besteller, Bestellimiet, Besteld_tav_pgb ) AS SELECT bd.ins_discipline_omschrijving Catalogus, pf.prs_perslid_naam_full Besteller, fp.fac_profiel_limiet Limiet, SUM ( (bb.bes_bestelling_item_aantal * bb.bes_bestelling_item_prijs) ) totaal FROM bes_discipline bd, bes_disc_params bdp, bes_srtgroep bsg, bes_srtdeel bsd, bes_bestelling_item bb, bes_bestelling b, prs_perslid p, prs_v_perslid_fullnames pf, fac_profiel fp WHERE bdp.bes_ins_discipline_key = bd.ins_discipline_key AND bsg.ins_discipline_key = bd.ins_discipline_key AND bsd.bes_srtgroep_key = bsg.bes_srtgroep_key AND b.bes_bestelling_key = bb.bes_bestelling_key AND bb.bes_srtdeel_key = bsd.bes_srtdeel_key AND bd.ins_discipline_verwijder IS NULL AND bdp.bes_disc_params_pgb = 1 -- PGB moet aan staan AND p.prs_perslid_key = b.prs_perslid_key AND TO_CHAR (bes_bestelling_datum, 'YYYY') = TO_CHAR (SYSDATE, 'YYYY') AND fp.fac_profiel_key = p.fac_profiel_key AND b.bes_bestelling_status IN (3, 5, 6, 7) -- Gefiateerd, Besteld, Geleverd, Verwerkt AND pf.prs_perslid_key = p.prs_perslid_key GROUP BY bd.ins_discipline_omschrijving, pf.prs_perslid_naam_full, fp.fac_profiel_limiet ORDER BY 1, 2; --CONN#20985 /* Formatted on 8-7-2011 11:22:44 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW conn_v_rap_bes_artikel_expimp ( fclt_f_catalogusnaam, artikelbedrijf, catalogusaanmaak, artikelnummer, artikelgroepomschrijving, artikelomschrijving, artikelprijs, artikeleenheid, artikelimage, artikelveelvoud, artikelbtw, artikelvervaldatum, artikelinkoopprijs, artikelminimum ) AS SELECT td.ins_discipline_omschrijving, b.prs_bedrijf_naam, TO_CHAR (td.ins_discipline_aanmaak, 'yyyymmdd'), sd.bes_srtdeel_nr, sg.bes_srtgroep_omschrijving, sd.bes_srtdeel_omschrijving, TO_CHAR (bes.getsrtdeelprijs(sd.bes_srtdeel_key, NULL)), sd.bes_srtdeel_eenheid, sd.bes_srtdeel_image, TO_CHAR (sd.bes_srtdeel_veelvoud), TO_CHAR (COALESCE (sd.bes_srtdeel_btw, 0)), TO_CHAR ( COALESCE (sd.bes_srtdeel_vervaldatum, TO_DATE ('31-12-2099', 'dd-mm-yyyy')), 'yyyymmdd' ), TO_CHAR (bes.getsrtdeelinkprijs(sd.bes_srtdeel_key, NULL)), NULL FROM ins_tab_discipline td, bes_srtgroep sg, bes_srtdeel sd, prs_bedrijf b WHERE td.ins_discipline_module = 'BES' AND td.ins_discipline_verwijder IS NULL AND td.ins_discipline_key = sg.ins_discipline_key AND sg.bes_srtgroep_verwijder IS NULL AND sg.bes_srtgroep_key = sd.bes_srtgroep_key AND sd.bes_srtdeel_verwijder IS NULL AND sd.prs_bedrijf_key = b.prs_bedrijf_key; /* Formatted on 3-2-2012 9:48:48 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW conn_v_rap_inspectieobj_expimp ( fclt_f_locatiecode, ruimte, fclt_f_discipline, fclt_f_groep, fclt_f_objectsoort, object_id, fclt_f_merk, fclt_f_type, fclt_f_hoogte_cm, fclt_f_belasting_kg, fclt_f_bereik_nm_bar, fclt_f_voltage, fclt_f_apkplicht, fclt_f_keuring_categorie, fclt_f_contract_nr, -- Per CONN#22359! fclt_f_leverancier, fclt_f_soortcontrole, periode, controle_gepland, controle_laatste, controledatum, controleopmerking, fclt_f_afgekeurd ) AS SELECT x.alg_locatie_code, COALESCE (z1.alg_ruimte_nr, z2.alg_ruimte_nr), x.ins_discipline_omschrijving, x.ins_srtgroep_omschrijving, x.ins_srtdeel_omschrijving, x.ins_deel_omschrijving, REPLACE (k1.merk, CHR (13) || CHR (10), ' '), REPLACE (k2.TYPE, CHR (13) || CHR (10), ' '), k3.hoogte, k4.belasting, k5.bereik, k6.voltage, k7.apkplicht, k8.categorie, COALESCE (lev_onderhd.cnt_contract_nummer_intern, lev_onderst.cnt_contract_nummer_intern) contract_nr, COALESCE (lev_onderhd.prs_bedrijf_naam, lev_onderst.prs_bedrijf_naam) leverancier, csd.ins_srtcontrole_omschrijving, TO_CHAR (csd.ins_srtcontrole_periode), DECODE ( y.ins_deelsrtcontrole_datum, NULL, TO_CHAR (x.ins_deel_aanmaak + csd.ins_srtcontrole_periode, 'dd-mm-yyyy'), TO_CHAR ( y.ins_deelsrtcontrole_datum + csd.ins_srtcontrole_periode, 'dd-mm-yyyy' ) ), DECODE (y.ins_deelsrtcontrole_datum, NULL, TO_CHAR (x.ins_deel_aanmaak, 'dd-mm-yyyy'), TO_CHAR (y.ins_deelsrtcontrole_datum, 'dd-mm-yyyy')), NULL controledatum, NULL controlopmerking, k9.afgekeurd FROM (SELECT scs.ins_srtinstallatie_key ins_srtdeel_key, scs.ins_srtcontrole_key, scs.ins_srtcontrole_omschrijving, scs.ins_srtcontrole_periode FROM ins_srtcontrole scs WHERE scs.ins_srtcontrole_niveau = 'S' UNION ALL SELECT sd.ins_srtdeel_key, scg.ins_srtcontrole_key, scg.ins_srtcontrole_omschrijving, scg.ins_srtcontrole_periode FROM ins_srtcontrole scg, ins_srtdeel sd WHERE scg.ins_srtcontrole_niveau = 'G' AND scg.ins_srtinstallatie_key = sd.ins_srtgroep_key UNION ALL SELECT sd.ins_srtdeel_key, scd.ins_srtcontrole_key, scd.ins_srtcontrole_omschrijving, scd.ins_srtcontrole_periode FROM ins_srtcontrole scd, ins_srtgroep sg, ins_srtdeel sd WHERE scd.ins_srtcontrole_niveau = 'D' AND scd.ins_srtinstallatie_key = sg.ins_discipline_key AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) csd LEFT JOIN (SELECT d.ins_deel_key, d.ins_deel_aanmaak, d.ins_deel_omschrijving, d.ins_alg_ruimte_key, d.ins_alg_ruimte_type, sd.ins_srtdeel_key, sd.ins_srtdeel_code, sd.ins_srtdeel_omschrijving, sg.ins_srtgroep_omschrijving, td.ins_discipline_omschrijving, l.alg_locatie_key, l.alg_locatie_code FROM ins_v_aanwezigdeel d, ins_srtdeel sd, ins_srtgroep sg, ins_tab_discipline td, alg_locatie l WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = td.ins_discipline_key AND d.ins_alg_locatie_key = l.alg_locatie_key(+)) x ON csd.ins_srtdeel_key = x.ins_srtdeel_key LEFT JOIN (SELECT DISTINCT co.cnt_ins_deel_key, c.cnt_contract_nummer_intern, b.prs_bedrijf_naam FROM cnt_contract_object co, cnt_contract c, ins_tab_discipline cd, prs_bedrijf b WHERE co.cnt_contract_object_verwijder IS NULL AND co.cnt_ins_deel_key IS NOT NULL AND co.cnt_contract_key = c.cnt_contract_key AND c.cnt_contract_looptijd_tot >= TRUNC ( ADD_MONTHS ( SYSDATE, -12 ), 'YYYY' ) AND c.ins_discipline_key = cd.ins_discipline_key AND cd.ins_discipline_verwijder IS NULL AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) lev_onderhd ON x.ins_deel_key = lev_onderhd.cnt_ins_deel_key LEFT JOIN (SELECT DISTINCT co.cnt_ins_srtdeel_key, g.alg_locatie_key, c.cnt_contract_nummer_intern, b.prs_bedrijf_naam FROM cnt_contract_object co, cnt_contract c, ins_tab_discipline cd, cnt_contract_plaats cp, alg_gebouw g, prs_bedrijf b WHERE co.cnt_contract_object_verwijder IS NULL AND co.cnt_ins_srtdeel_key IS NOT NULL AND co.cnt_contract_key = c.cnt_contract_key AND c.cnt_contract_looptijd_tot >= TRUNC ( ADD_MONTHS ( SYSDATE, -12 ), 'YYYY' ) AND c.ins_discipline_key = cd.ins_discipline_key AND cd.ins_discipline_verwijder IS NULL AND c.cnt_contract_key = cp.cnt_contract_key AND ( (cp.cnt_alg_plaats_code = 'G' AND cp.cnt_alg_plaats_key = g.alg_gebouw_key) OR (cp.cnt_alg_plaats_code = 'L' AND cp.cnt_alg_plaats_key = g.alg_locatie_key)) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) lev_onderst ON x.ins_srtdeel_key = lev_onderst.cnt_ins_srtdeel_key AND x.alg_locatie_key = lev_onderst.alg_locatie_key LEFT JOIN (SELECT ins_deel_key, ins_kenmerkdeel_waarde merk FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 42) k1 ON x.ins_deel_key = k1.ins_deel_key LEFT JOIN (SELECT ins_deel_key, ins_kenmerkdeel_waarde TYPE FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 41) k2 ON x.ins_deel_key = k2.ins_deel_key LEFT JOIN (SELECT ins_deel_key, ins_kenmerkdeel_waarde hoogte FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 1461) k3 ON x.ins_deel_key = k3.ins_deel_key LEFT JOIN (SELECT ins_deel_key, ins_kenmerkdeel_waarde belasting FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 1462) k4 ON x.ins_deel_key = k4.ins_deel_key LEFT JOIN (SELECT ins_deel_key, ins_kenmerkdeel_waarde bereik FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 1463) k5 ON x.ins_deel_key = k5.ins_deel_key LEFT JOIN (SELECT ins_deel_key, ins_kenmerkdeel_waarde voltage FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 1464) k6 ON x.ins_deel_key = k6.ins_deel_key LEFT JOIN (SELECT ins_deel_key, DECODE (ins_kenmerkdeel_waarde, '129', 'JA', 'NEE') apkplicht FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 1465) k7 ON x.ins_deel_key = k7.ins_deel_key LEFT JOIN (SELECT ins_deel_key, ins_kenmerkdeel_waarde categorie FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 1467) k8 ON x.ins_deel_key = k8.ins_deel_key LEFT JOIN (SELECT ins_deel_key, DECODE (ins_kenmerkdeel_waarde, '129', 'JA', 'NEE') afgekeurd FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 1466) k9 ON x.ins_deel_key = k9.ins_deel_key LEFT JOIN (SELECT dsc.ins_deel_key, dsc.ins_srtcontrole_key, dsc.ins_deelsrtcontrole_datum, dsc.ins_deelsrtcontrole_opmerking FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deelsrtcontrole_datum = (SELECT MAX (ins_deelsrtcontrole_datum) FROM ins_deelsrtcontrole WHERE ins_deel_key = dsc.ins_deel_key AND ins_srtcontrole_key = dsc.ins_srtcontrole_key)) y ON x.ins_deel_key = y.ins_deel_key AND csd.ins_srtcontrole_key = y.ins_srtcontrole_key LEFT JOIN (SELECT r.alg_ruimte_key, 'R' alg_ruimte_type, r.alg_ruimte_nr FROM alg_ruimte r WHERE r.alg_ruimte_key = r.alg_ruimte_key) z1 ON x.ins_alg_ruimte_key = z1.alg_ruimte_key AND x.ins_alg_ruimte_type = z1.alg_ruimte_type LEFT JOIN (SELECT wp.prs_werkplek_key, 'W' alg_ruimte_type, r.alg_ruimte_nr FROM prs_werkplek wp, alg_ruimte r WHERE wp.prs_alg_ruimte_key = r.alg_ruimte_key) z2 ON x.ins_alg_ruimte_key = z2.prs_werkplek_key AND x.ins_alg_ruimte_type = z2.alg_ruimte_type; /* Formatted on 1-2-2012 14:45:54 (QP5 v5.115.810.9015) */ CREATE OR REPLACE PROCEDURE conn_import_inspectieobj ( p_import_key IN NUMBER ) IS c_delim 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_tot NUMBER (10); v_count_import NUMBER (10); v_ongeldig NUMBER (1); v_aanduiding VARCHAR (200); -- De importvelden: v_alg_locatie_code VARCHAR2 (255); -- C10 v_alg_ruimte_nr VARCHAR2 (255); -- C10 v_ins_discipline_omschrijving VARCHAR2 (255); -- C30 v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60 v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100 v_ins_deel_omschrijving VARCHAR2 (255); -- C60 v_merk VARCHAR2 (255); -- C60 v_type VARCHAR2 (255); -- C60 v_hoogte VARCHAR2 (255); -- C60 v_belasting VARCHAR2 (255); -- C60 v_bereik VARCHAR2 (255); -- C60 v_voltage VARCHAR2 (255); -- C60 v_apkplicht VARCHAR2 (255); -- C60 v_categorie VARCHAR2 (255); -- C60 v_cnt_contract_nummer_intern VARCHAR2 (255); -- C30 v_prs_bedrijf_naam VARCHAR2 (255); -- C60 v_ins_srtcontrole_oms VARCHAR2 (255); -- C60 x_periode VARCHAR2 (255); -- N4 x_controle_gepland VARCHAR2 (255); -- DATE x_controle_laatste VARCHAR2 (255); -- DATE v_ins_controle_datum VARCHAR2 (255); -- DATE v_ins_controle_opm VARCHAR2 (1024); -- C500 v_afgekeurd VARCHAR2 (255); -- C60 -- Overig: v_ins_controle_datum_d DATE; -- DATE CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN DELETE FROM conn_imp_inspectieobj; 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_errormsg := 'Fout bij opvragen importregel'; v_aanduiding := ''; v_ongeldig := 0; -- Lees alle veldwaarden fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code); fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr); fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving); 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_merk); fac.imp_getfield (v_newline, c_delim, v_type); fac.imp_getfield (v_newline, c_delim, v_hoogte); fac.imp_getfield (v_newline, c_delim, v_belasting); fac.imp_getfield (v_newline, c_delim, v_bereik); fac.imp_getfield (v_newline, c_delim, v_voltage); fac.imp_getfield (v_newline, c_delim, v_apkplicht); fac.imp_getfield (v_newline, c_delim, v_categorie); fac.imp_getfield (v_newline, c_delim, v_cnt_contract_nummer_intern); fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_naam); fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_oms); fac.imp_getfield (v_newline, c_delim, x_periode); fac.imp_getfield (v_newline, c_delim, x_controle_gepland); fac.imp_getfield (v_newline, c_delim, x_controle_laatste); fac.imp_getfield (v_newline, c_delim, v_ins_controle_datum); fac.imp_getfield (v_newline, c_delim, v_ins_controle_opm); fac.imp_getfield (v_newline, c_delim, v_afgekeurd); v_aanduiding := '[' || v_ins_discipline_omschrijving || '|' || v_ins_srtgroep_omschrijving || '|' || 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 kolommen! -- Ik negeer alles totdat ik een geldige header ben gepasseerd. IF (header_is_valid = 0) THEN IF UPPER (v_alg_locatie_code) = 'LOCATIECODE' AND UPPER (v_alg_ruimte_nr) = 'RUIMTE' AND UPPER (v_ins_discipline_omschrijving) = 'DISCIPLINE' AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEP' AND UPPER (v_ins_srtdeel_omschrijving) = 'OBJECTSOORT' AND UPPER (v_ins_deel_omschrijving) = 'OBJECT_ID' AND UPPER (v_merk) = 'MERK' AND UPPER (v_type) = 'TYPE' AND UPPER (v_hoogte) = 'HOOGTE_CM' AND UPPER (v_belasting) = 'BELASTING_KG' AND UPPER (v_bereik) = 'BEREIK_NM_BAR' AND UPPER (v_voltage) = 'VOLTAGE' AND UPPER (v_apkplicht) = 'APKPLICHT' AND UPPER (v_categorie) = 'KEURING_CATEGORIE' AND UPPER (v_prs_bedrijf_naam) = 'LEVERANCIER' AND UPPER (v_cnt_contract_nummer_intern) = 'CONTRACT_NR' -- Per CONN#22359! AND UPPER (v_ins_srtcontrole_oms) = 'SOORTCONTROLE' AND UPPER (x_periode) = 'PERIODE' AND UPPER (x_controle_gepland) = 'CONTROLE_GEPLAND' AND UPPER (x_controle_laatste) = 'CONTROLE_LAATSTE' AND UPPER (v_ins_controle_datum) = 'CONTROLEDATUM' AND UPPER (v_ins_controle_opm) = 'CONTROLEOPMERKING' AND UPPER (v_afgekeurd) = 'AFGEKEURD' THEN header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden 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 := 'Ruimte 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, 'Ruimte wordt afgebroken tot [' || v_alg_ruimte_nr || ']' ); END IF; -- v_errormsg := 'Disciplineomschrijving ongeldig'; v_ins_discipline_omschrijving := TRIM (v_ins_discipline_omschrijving); IF LENGTH (v_ins_discipline_omschrijving) > 30 THEN v_ins_discipline_omschrijving := SUBSTR (TRIM (v_ins_discipline_omschrijving), 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Disciplineomschrijving wordt afgebroken tot [' || v_ins_discipline_omschrijving || ']' ); END IF; -- v_errormsg := 'Groepsoortomschrijving ongeldig'; v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving); IF LENGTH (v_ins_srtgroep_omschrijving) > 60 THEN v_ins_srtgroep_omschrijving := SUBSTR (TRIM (v_ins_srtgroep_omschrijving), 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Groepsoortomschrijving wordt afgebroken tot [' || v_ins_srtgroep_omschrijving || ']' ); END IF; -- VERVALLEN 'Objectsoortcode' -- v_errormsg := 'Objectsoortomschrijving ongeldig'; v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving); IF LENGTH (v_ins_srtdeel_omschrijving) > 100 THEN v_ins_srtdeel_omschrijving := SUBSTR (TRIM (v_ins_srtdeel_omschrijving), 1, 100); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Objectsoortomschrijving wordt afgebroken tot [' || v_ins_srtdeel_omschrijving || ']' ); END IF; -- v_errormsg := 'Objectomschrijving ongeldig'; v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving); IF LENGTH (v_ins_deel_omschrijving) > 60 THEN v_ins_deel_omschrijving := SUBSTR (TRIM (v_ins_deel_omschrijving), 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Objectomschrijving wordt afgebroken tot [' || v_ins_deel_omschrijving || ']' ); END IF; -- v_errormsg := 'Merk ongeldig'; v_merk := TRIM (v_merk); IF LENGTH (v_merk) > 60 THEN v_merk := SUBSTR (v_merk, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Merk wordt afgebroken tot [' || v_merk || ']' ); END IF; -- v_errormsg := 'Type ongeldig'; v_type := TRIM (v_type); IF LENGTH (v_type) > 60 THEN v_type := SUBSTR (v_type, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Type wordt afgebroken tot [' || v_type || ']' ); END IF; -- v_errormsg := 'Hoogte ongeldig'; v_hoogte := TRIM (v_hoogte); IF LENGTH (v_hoogte) > 60 THEN v_hoogte := SUBSTR (v_hoogte, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Hoogte wordt afgebroken tot [' || v_hoogte || ']' ); END IF; -- v_errormsg := 'Belasting ongeldig'; v_belasting := TRIM (v_belasting); IF LENGTH (v_belasting) > 60 THEN v_belasting := SUBSTR (v_belasting, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Belasting wordt afgebroken tot [' || v_belasting || ']' ); END IF; -- v_errormsg := 'Bereik ongeldig'; v_bereik := TRIM (v_bereik); IF LENGTH (v_bereik) > 60 THEN v_bereik := SUBSTR (v_bereik, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Bereik wordt afgebroken tot [' || v_bereik || ']' ); END IF; -- v_errormsg := 'Voltage ongeldig'; v_voltage := TRIM (v_voltage); IF LENGTH (v_voltage) > 60 THEN v_voltage := SUBSTR (v_voltage, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Voltage wordt afgebroken tot [' || v_voltage || ']' ); END IF; -- v_errormsg := 'APK-plicht ongeldig'; v_apkplicht := TRIM (v_apkplicht); IF LENGTH (v_apkplicht) > 60 THEN v_apkplicht := SUBSTR (v_apkplicht, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'APK-plicht wordt afgebroken tot [' || v_apkplicht || ']' ); END IF; -- v_errormsg := 'Categorie ongeldig'; v_categorie := TRIM (v_categorie); IF LENGTH (v_categorie) > 60 THEN v_categorie := SUBSTR (v_categorie, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Categorie wordt afgebroken tot [' || v_categorie || ']' ); END IF; -- v_errormsg := 'Contractnummer ongeldig'; v_cnt_contract_nummer_intern := TRIM (v_cnt_contract_nummer_intern); IF LENGTH (v_cnt_contract_nummer_intern) > 30 THEN v_cnt_contract_nummer_intern := SUBSTR (v_cnt_contract_nummer_intern, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Contractnummer wordt afgebroken tot [' || v_cnt_contract_nummer_intern || ']' ); END IF; -- v_errormsg := 'Leverancier ongeldig'; v_prs_bedrijf_naam := TRIM (v_prs_bedrijf_naam); IF LENGTH (v_prs_bedrijf_naam) > 60 THEN v_prs_bedrijf_naam := SUBSTR (v_prs_bedrijf_naam, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Leverancier wordt afgebroken tot [' || v_prs_bedrijf_naam || ']' ); END IF; -- v_errormsg := 'Soort controle ongeldig'; v_ins_srtcontrole_oms := TRIM (v_ins_srtcontrole_oms); IF LENGTH (v_ins_srtcontrole_oms) > 60 THEN v_ins_srtcontrole_oms := SUBSTR (v_ins_srtcontrole_oms, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Soort controle wordt afgebroken tot [' || v_ins_srtcontrole_oms || ']' ); END IF; -- Skip 'Periode' -- Skip 'Controle gepland' -- Skip 'Controle laatste' -- v_errormsg := 'Controledatum ongeldig'; v_ins_controle_datum := TRIM (v_ins_controle_datum); v_ins_controle_datum_d := NULL; IF (v_ins_controle_datum IS NOT NULL) THEN IF (fac.safe_to_date (v_ins_controle_datum, 'dd-mm-yyyy') IS NULL) THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Controledatum wordt genegeerd'); ELSE v_ins_controle_datum_d := fac.safe_to_date (v_ins_controle_datum, 'dd-mm-yyyy'); END IF; END IF; -- v_errormsg := 'Controleopmerking ongeldig'; v_ins_controle_opm := TRIM (v_ins_controle_opm); IF LENGTH (v_ins_controle_opm) > 500 THEN v_ins_controle_opm := SUBSTR (v_ins_controle_opm, 1, 500); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Controleopmerking wordt afgekapt op 500 posities' ); END IF; -- v_errormsg := 'Afgekeurd ongeldig'; v_afgekeurd := TRIM (v_afgekeurd); IF LENGTH (v_afgekeurd) > 60 THEN v_afgekeurd := SUBSTR (v_afgekeurd, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Afgekeurd wordt afgebroken tot [' || v_afgekeurd || ']' ); END IF; -- Insert geformatteerde import record IF v_ongeldig = 0 THEN BEGIN v_errormsg := 'Fout bij wegschrijven importregel'; INSERT INTO conn_imp_inspectieobj ( alg_locatie_code, alg_ruimte_nr, ins_discipline_omschrijving, ins_srtgroep_omschrijving, --ins_srtdeel_code, -- VERVALLEN ins_srtdeel_omschrijving, ins_deel_omschrijving, merk, TYPE, hoogte, belasting, bereik, voltage, apkplicht, categorie, cnt_contract_nummer_intern, prs_bedrijf_naam, ins_srtcontrole_omschrijving, ins_deelsrtcontrole_datum, ins_deelsrtcontrole_opmerking, afgekeurd ) VALUES (v_alg_locatie_code, v_alg_ruimte_nr, v_ins_discipline_omschrijving, v_ins_srtgroep_omschrijving, --v_ins_srtdeel_code, -- VERVALLEN v_ins_srtdeel_omschrijving, v_ins_deel_omschrijving, v_merk, v_type, v_hoogte, v_belasting, v_bereik, v_voltage, v_apkplicht, v_categorie, v_cnt_contract_nummer_intern, v_prs_bedrijf_naam, v_ins_srtcontrole_oms, v_ins_controle_datum_d, v_ins_controle_opm, v_afgekeurd); 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', 'Inspectieobjecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog ( p_import_key, 'S', 'Inspectieobjecten/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 inspectieobjecten afgebroken!'); END conn_import_inspectieobj; / /* Formatted on 3-2-2012 11:18:55 (QP5 v5.115.810.9015) */ CREATE OR REPLACE PROCEDURE conn_update_inspectieobj ( p_import_key IN NUMBER ) AS v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); -- SUBPROC PROCEDURE add_insdiscipline (p_import_key IN NUMBER) AS CURSOR c1 IS SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper, MAX (ins_discipline_omschrijving) ins_discipline_omschrijving FROM conn_imp_inspectieobj GROUP BY UPPER (ins_discipline_omschrijving); v_errormsg VARCHAR2 (1024); v_discipline_key NUMBER (10); ccount NUMBER (10); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); 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)) = UPPER (TRIM (rec.ins_discipline_omschrijving)); IF ccount = 0 THEN INSERT INTO ins_tab_discipline (ins_discipline_module, ins_discipline_omschrijving, ins_discipline_min_level, ins_discipline_kpnverplicht) VALUES ('INS', rec.ins_discipline_omschrijving, 1, 0) 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); COMMIT; v_count_update := v_count_update + 1; END IF; 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_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_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 conn_imp_inspectieobj GROUP BY UPPER (ins_discipline_omschrijving), UPPER (ins_srtgroep_omschrijving); v_errormsg VARCHAR2 (1024); v_discipline_key NUMBER (10); ccount NUMBER (10); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); 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 INS-discipline [' || rec.ins_discipline_omschrijving || ']'; 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 (TRIM (rec.ins_discipline_omschrijving)); v_errormsg := 'Fout bij toevoegen INS-groepsoort [' || rec.ins_srtgroep_omschrijving || ']'; SELECT COUNT ( * ) INTO ccount FROM ins_srtgroep WHERE ins_srtgroep_verwijder IS NULL AND ins_discipline_key = v_discipline_key AND UPPER (TRIM (ins_srtgroep_omschrijving)) = UPPER (TRIM (rec.ins_srtgroep_omschrijving)); IF ccount = 0 THEN INSERT INTO ins_srtgroep ( ins_discipline_key, ins_srtgroep_module, ins_srtgroep_omschrijving ) VALUES ( v_discipline_key, 'INS', rec.ins_srtgroep_omschrijving ); COMMIT; v_count_update := v_count_update + 1; END IF; 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_errormsg, ''); COMMIT; END; END LOOP; fac.imp_writelog ( p_import_key, 'S', 'INS-Groepsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog ( p_import_key, 'S', 'INS-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_omschrijving) ins_srtdeel_upper, MAX(UPPER( SUBSTR (ins_srtgroep_omschrijving, 1, 2) || '-' || SUBSTR (ins_srtdeel_omschrijving, 1, 2))) new_srtdeel_code_upper, MAX (ins_discipline_omschrijving) ins_discipline_omschrijving, MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving, MAX (ins_srtdeel_omschrijving) ins_srtdeel_omschrijving FROM conn_imp_inspectieobj GROUP BY UPPER (ins_discipline_omschrijving), UPPER (ins_srtgroep_omschrijving), UPPER (ins_srtdeel_omschrijving); v_errormsg VARCHAR2 (1024); v_discipline_key NUMBER (10); v_srtgroep_key NUMBER (10); ccount NUMBER (10); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); 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 INS-discipline [' || rec.ins_discipline_omschrijving || ']'; 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 (TRIM (rec.ins_discipline_omschrijving)); v_errormsg := 'Fout bij bepalen INS-groepsoort [' || rec.ins_srtgroep_omschrijving || ']'; 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 UPPER (TRIM (ins_srtgroep_omschrijving)) = UPPER (TRIM (rec.ins_srtgroep_omschrijving)); v_errormsg := 'Fout bij toevoegen INS-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 UPPER (TRIM (ins_srtdeel_omschrijving)) = UPPER (TRIM (rec.ins_srtdeel_omschrijving)); 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.new_srtdeel_code_upper, rec.ins_srtdeel_omschrijving, 17); COMMIT; v_count_update := v_count_update + 1; END IF; 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_errormsg, ''); COMMIT; END; END LOOP; fac.imp_writelog ( p_import_key, 'S', 'INS-Objectsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog ( p_import_key, 'S', 'INS-Objectsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update), '' ); COMMIT; END; -- SUBPROC PROCEDURE add_deelinspectie (p_import_key IN NUMBER) AS CURSOR c1 IS SELECT obj.ins_discipline_omschrijving, obj.ins_srtgroep_omschrijving, obj.ins_srtdeel_omschrijving, obj.ins_deel_omschrijving, obj.merk, obj.TYPE, obj.hoogte, obj.belasting, obj.bereik, obj.voltage, DECODE (UPPER (obj.apkplicht), 'JA', 129, 'NEE', 130, -1) apkplicht, obj.categorie, obj.alg_locatie_code, obj.alg_ruimte_nr, -- CONN#21887/Relevant igv. nieuwe objecten! obj.cnt_contract_nummer_intern, obj.ins_srtcontrole_omschrijving, obj.ins_deelsrtcontrole_datum, DECODE ( COALESCE (cb.prs_bedrijf_naam, obj.prs_bedrijf_naam), NULL, obj.ins_deelsrtcontrole_opmerking, COALESCE (cb.prs_bedrijf_naam, obj.prs_bedrijf_naam) || ':' || CHR (13) || CHR (10) || COALESCE (obj.ins_deelsrtcontrole_opmerking, '-') ) ins_deelsrtcontrole_opmerking, DECODE (UPPER (obj.afgekeurd), 'JA', 129, 'NEE', 130, -1) afgekeurd, cb.cnt_contract_key FROM (SELECT ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_omschrijving, ins_deel_omschrijving, merk, TYPE, hoogte, belasting, bereik, voltage, apkplicht, categorie, alg_locatie_code, alg_ruimte_nr, -- CONN#21887/Relevant igv. nieuwe objecten! cnt_contract_nummer_intern, -- Per CONN#22359! prs_bedrijf_naam, ins_srtcontrole_omschrijving, ins_deelsrtcontrole_datum, ins_deelsrtcontrole_opmerking, afgekeurd FROM conn_imp_inspectieobj) obj LEFT JOIN (SELECT c.cnt_contract_nummer_intern, b.prs_bedrijf_naam, c.cnt_contract_key FROM cnt_contract c, ins_tab_discipline td, cnt_disc_params dp, prs_bedrijf b WHERE c.cnt_contract_verwijder IS NULL AND c.ins_discipline_key = td.ins_discipline_key AND td.ins_discipline_verwijder IS NULL AND td.ins_discipline_key = dp.cnt_ins_discipline_key AND dp.cnt_srtcontract_type = 3 -- Ondersteuning/Support AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) cb ON obj.cnt_contract_nummer_intern = cb.cnt_contract_nummer_intern; v_errormsg VARCHAR2 (1024); c_ruimte_nr VARCHAR2 (10) := 'WERKPLAATS'; c_srtruimte_key NUMBER (10) := 1; c_merk_srtkey NUMBER (10) := 42; c_type_srtkey NUMBER (10) := 41; c_hoogte_srtkey NUMBER (10) := 1461; c_belasting_srtkey NUMBER (10) := 1462; c_bereik_srtkey NUMBER (10) := 1463; c_voltage_srtkey NUMBER (10) := 1464; c_apkplicht_srtkey NUMBER (10) := 1465; c_categorie_srtkey NUMBER (10) := 1467; c_afgekeurd_srtkey NUMBER (10) := 1466; c_controle_periode NUMBER (10) := 365; v_discipline_key NUMBER (10); v_srtgroep_key NUMBER (10); v_srtdeel_key NUMBER (10); v_locatie_key NUMBER (10); v_deel_key NUMBER (10); v_deel_oms VARCHAR2 (60); v_gebouw_key NUMBER (10); v_verdieping_key NUMBER (10); v_ruimte_key NUMBER (10); v_kenmerk_key NUMBER (10); v_kenmerkdeel_key NUMBER (10); v_srtcontrole_id VARCHAR2 (20); v_controlemode_key NUMBER (10); ccount NUMBER (10); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count_tot NUMBER (10); v_count_oupdate NUMBER (10); v_count_cupdate NUMBER (10); v_aanduiding VARCHAR (200); BEGIN v_count_tot := 0; v_count_oupdate := 0; v_count_cupdate := 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_omschrijving || '|' || rec.ins_deel_omschrijving || '] '; v_errormsg := 'Fout bij bepalen INS-discipline'; SELECT ins_discipline_key INTO v_discipline_key FROM ins_discipline WHERE ins_discipline_verwijder IS NULL AND ins_discipline_module = 'INS' AND UPPER (TRIM (ins_discipline_omschrijving)) = UPPER (TRIM (rec.ins_discipline_omschrijving)); v_errormsg := 'Fout bij bepalen INS-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 UPPER (TRIM (ins_srtgroep_omschrijving)) = UPPER (TRIM (rec.ins_srtgroep_omschrijving)); v_errormsg := 'Fout bij bepalen INS-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 UPPER (TRIM (ins_srtdeel_omschrijving)) = UPPER (TRIM (rec.ins_srtdeel_omschrijving)); v_errormsg := 'Fout bij bepalen locatie [' || rec.alg_locatie_code || ']'; SELECT alg_locatie_key INTO v_locatie_key FROM alg_locatie WHERE alg_locatie_verwijder IS NULL AND UPPER (TRIM (alg_locatie_code)) = UPPER (TRIM (rec.alg_locatie_code)); -- Ruimtegebonden objecten hebben een unieke ID binnen de locatie v_errormsg := 'Fout bij bepalen INS-object'; SELECT COUNT ( * ) INTO ccount FROM ins_deel d WHERE ins_deel_verwijder IS NULL AND ins_deel_module = 'INS' AND ins_srtdeel_key = v_srtdeel_key AND ins_alg_locatie_key = v_locatie_key AND ins_deel_upper = UPPER (rec.ins_deel_omschrijving); IF ccount > 0 -- Object bestaat reeds op locatie! THEN SELECT MAX (d.ins_deel_key) INTO v_deel_key FROM ins_deel d WHERE ins_deel_verwijder IS NULL AND ins_deel_module = 'INS' AND ins_srtdeel_key = v_srtdeel_key AND ins_alg_locatie_key = v_locatie_key AND ins_deel_upper = UPPER (rec.ins_deel_omschrijving); ELSE -- Object bestaat nog niet op locatie, dus toevoegen! v_errormsg := 'Fout bij bepalen default ID'; SELECT INS.GET_DESCRIPTION ('LPN_INS_DEEL', NULL, ins_srtdeel_code_upper) INTO v_deel_oms FROM ins_srtdeel WHERE ins_srtdeel_key = v_srtdeel_key; v_errormsg := 'Fout bij bepalen gewenste ruimte'; SELECT COUNT ( * ) INTO ccount FROM alg_v_aanwezigruimte r, alg_verdieping v, alg_gebouw g WHERE r.alg_ruimte_upper_nr = UPPER (rec.alg_ruimte_nr) AND r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = v_locatie_key; IF ccount > 0 -- rec.alg_ruimte_nr bekend op locatie! THEN SELECT MAX (r.alg_ruimte_key) INTO v_ruimte_key FROM alg_v_aanwezigruimte r, alg_verdieping v, alg_gebouw g WHERE r.alg_ruimte_upper_nr = rec.alg_ruimte_nr AND r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = v_locatie_key; ELSE -- rec.alg_ruimte_nr onbekend op locatie, c_ruimte_nr ook? v_errormsg := 'Fout bij bepalen default ruimte'; SELECT COUNT ( * ) INTO ccount FROM alg_v_aanwezigruimte r, alg_verdieping v, alg_gebouw g WHERE r.alg_ruimte_upper_nr = c_ruimte_nr AND r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = v_locatie_key; IF ccount > 0 -- c_ruimte_nr bekend op locatie! THEN SELECT MAX (r.alg_ruimte_key) INTO v_ruimte_key FROM alg_v_aanwezigruimte r, alg_verdieping v, alg_gebouw g WHERE r.alg_ruimte_upper_nr = c_ruimte_nr AND r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = v_locatie_key; ELSE -- c_ruimte_nr nog onbekend op locatie, dan aanmaken! v_errormsg := 'Fout bij bepalen default gebouw'; SELECT MIN (g.alg_gebouw_key) INTO v_gebouw_key FROM alg_v_aanweziggebouw g WHERE g.alg_locatie_key = v_locatie_key; v_errormsg := 'Fout bij bepalen default verdieping'; SELECT v.alg_verdieping_key INTO v_verdieping_key FROM alg_v_aanwezigverdieping v WHERE v.alg_gebouw_key = v_gebouw_key AND alg_verdieping_volgnr = (SELECT MIN (alg_verdieping_volgnr) FROM alg_v_aanwezigverdieping WHERE alg_gebouw_key = v.alg_gebouw_key); v_errormsg := 'Fout bij toevoegen default ruimte'; INSERT INTO alg_ruimte ( alg_verdieping_key, alg_srtruimte_key, alg_ruimte_nr ) VALUES ( v_verdieping_key, c_srtruimte_key, c_ruimte_nr ) RETURNING alg_ruimte_key INTO v_ruimte_key; END IF; END IF; v_errormsg := 'Fout bij toevoegen INS-object'; INSERT INTO ins_deel (ins_discipline_key, ins_srtdeel_key, ins_deel_module, ins_deel_omschrijving, ins_alg_ruimte_key, ins_alg_ruimte_type, ins_alg_locatie_key) VALUES (v_discipline_key, v_srtdeel_key, 'INS', COALESCE (rec.ins_deel_omschrijving, v_deel_oms), v_ruimte_key, 'R', v_locatie_key) RETURNING ins_deel_key INTO v_deel_key; COMMIT; v_count_oupdate := v_count_oupdate + 1; END IF; -- MERK toevoegen; huidige merk NOOIT gewijzigd via import! IF rec.merk IS NOT NULL AND UPPER (rec.merk) != 'NVT' THEN v_errormsg := 'Fout bij bepalen merk-kenmerk'; SELECT COUNT ( * ) INTO ccount FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_merk_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! THEN v_errormsg := 'Fout bij toevoegen merk-kenmerk'; INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer) VALUES (c_merk_srtkey, v_srtdeel_key, 'S', 100) RETURNING ins_kenmerk_key INTO v_kenmerk_key; fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/Merk-kenmerk toegevoegd voor: ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; ELSE SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_merk_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); END IF; v_errormsg := 'Fout bij bepalen huidige merk'; SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) INTO ccount, v_kenmerkdeel_key FROM ins_v_aanwezigkenmerkdeel WHERE ins_deel_key = v_deel_key AND ins_kenmerk_key = v_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen merk'; INSERT INTO ins_kenmerkdeel ( ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde ) VALUES (v_deel_key, v_kenmerk_key, rec.merk); COMMIT; --ELSE -- v_errormsg := 'Fout bij wijzigen merk'; -- UPDATE ins_kenmerkdeel -- SET ins_kenmerkdeel_waarde = rec.merk -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; -- COMMIT; END IF; END IF; -- TYPE toevoegen; huidige waarde NOOIT gewijzigd via import! IF rec.TYPE IS NOT NULL AND UPPER (rec.TYPE) != 'NVT' THEN v_errormsg := 'Fout bij bepalen type-kenmerk'; SELECT COUNT ( * ) INTO ccount FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_type_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! THEN v_errormsg := 'Fout bij toevoegen type-kenmerk'; INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer) VALUES (c_type_srtkey, v_srtdeel_key, 'S', 105) RETURNING ins_kenmerk_key INTO v_kenmerk_key; fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/Type-kenmerk toegevoegd voor: ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; ELSE SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_type_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); END IF; v_errormsg := 'Fout bij bepalen huidige type'; SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) INTO ccount, v_kenmerkdeel_key FROM ins_v_aanwezigkenmerkdeel WHERE ins_deel_key = v_deel_key AND ins_kenmerk_key = v_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen type'; INSERT INTO ins_kenmerkdeel ( ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde ) VALUES (v_deel_key, v_kenmerk_key, rec.TYPE); COMMIT; --ELSE -- v_errormsg := 'Fout bij wijzigen type'; -- UPDATE ins_kenmerkdeel -- SET ins_kenmerkdeel_waarde = rec.type -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; -- COMMIT; END IF; END IF; -- HOOGTE toevoegen; huidige waarde NOOIT gewijzigd via import! IF rec.hoogte IS NOT NULL AND UPPER (rec.hoogte) != 'NVT' THEN v_errormsg := 'Fout bij bepalen hoogte-kenmerk'; SELECT COUNT ( * ) INTO ccount FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_hoogte_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! THEN v_errormsg := 'Fout bij toevoegen hoogte-kenmerk'; INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer) VALUES (c_hoogte_srtkey, v_srtdeel_key, 'S', 110) RETURNING ins_kenmerk_key INTO v_kenmerk_key; fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/Hoogte-kenmerk toegevoegd voor: ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; ELSE SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_hoogte_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); END IF; v_errormsg := 'Fout bij bepalen huidige hoogte'; SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) INTO ccount, v_kenmerkdeel_key FROM ins_v_aanwezigkenmerkdeel WHERE ins_deel_key = v_deel_key AND ins_kenmerk_key = v_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen hoogte'; INSERT INTO ins_kenmerkdeel ( ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde ) VALUES (v_deel_key, v_kenmerk_key, rec.hoogte); COMMIT; --ELSE -- v_errormsg := 'Fout bij wijzigen hoogte'; -- UPDATE ins_kenmerkdeel -- SET ins_kenmerkdeel_waarde = rec.hoogte -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; -- COMMIT; END IF; END IF; -- BELASTING toevoegen; huidige waarde NOOIT gewijzigd via import! IF rec.belasting IS NOT NULL AND UPPER (rec.belasting) != 'NVT' THEN v_errormsg := 'Fout bij bepalen belasting-kenmerk'; SELECT COUNT ( * ) INTO ccount FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_belasting_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! THEN v_errormsg := 'Fout bij toevoegen belasting-kenmerk'; INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer) VALUES (c_belasting_srtkey, v_srtdeel_key, 'S', 112) RETURNING ins_kenmerk_key INTO v_kenmerk_key; fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/Belasting-kenmerk toegevoegd voor: ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; ELSE SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_belasting_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); END IF; v_errormsg := 'Fout bij bepalen huidige belasting'; SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) INTO ccount, v_kenmerkdeel_key FROM ins_v_aanwezigkenmerkdeel WHERE ins_deel_key = v_deel_key AND ins_kenmerk_key = v_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen belasting'; INSERT INTO ins_kenmerkdeel ( ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde ) VALUES (v_deel_key, v_kenmerk_key, rec.belasting); COMMIT; --ELSE -- v_errormsg := 'Fout bij wijzigen belasting'; -- UPDATE ins_kenmerkdeel -- SET ins_kenmerkdeel_waarde = rec.belasting -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; -- COMMIT; END IF; END IF; -- BEREIK toevoegen; huidige waarde NOOIT gewijzigd via import! IF rec.bereik IS NOT NULL AND UPPER (rec.bereik) != 'NVT' THEN v_errormsg := 'Fout bij bepalen bereik-kenmerk'; SELECT COUNT ( * ) INTO ccount FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_bereik_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! THEN v_errormsg := 'Fout bij toevoegen bereik-kenmerk'; INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer) VALUES (c_bereik_srtkey, v_srtdeel_key, 'S', 114) RETURNING ins_kenmerk_key INTO v_kenmerk_key; fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/Bereik-kenmerk toegevoegd voor: ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; ELSE SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_bereik_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); END IF; v_errormsg := 'Fout bij bepalen huidige bereik'; SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) INTO ccount, v_kenmerkdeel_key FROM ins_v_aanwezigkenmerkdeel WHERE ins_deel_key = v_deel_key AND ins_kenmerk_key = v_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen bereik'; INSERT INTO ins_kenmerkdeel ( ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde ) VALUES (v_deel_key, v_kenmerk_key, rec.bereik); COMMIT; --ELSE -- v_errormsg := 'Fout bij wijzigen bereik'; -- UPDATE ins_kenmerkdeel -- SET ins_kenmerkdeel_waarde = rec.bereik -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; -- COMMIT; END IF; END IF; -- VOLTAGE toevoegen; huidige waarde NOOIT gewijzigd via import! IF rec.voltage IS NOT NULL AND UPPER (rec.voltage) != 'NVT' THEN v_errormsg := 'Fout bij bepalen voltage-kenmerk'; SELECT COUNT ( * ) INTO ccount FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_voltage_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! THEN v_errormsg := 'Fout bij toevoegen voltage-kenmerk'; INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer) VALUES (c_voltage_srtkey, v_srtdeel_key, 'S', 116) RETURNING ins_kenmerk_key INTO v_kenmerk_key; fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/Voltage-kenmerk toegevoegd voor: ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; ELSE SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_voltage_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); END IF; v_errormsg := 'Fout bij bepalen huidige voltage'; SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) INTO ccount, v_kenmerkdeel_key FROM ins_v_aanwezigkenmerkdeel WHERE ins_deel_key = v_deel_key AND ins_kenmerk_key = v_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen voltage'; INSERT INTO ins_kenmerkdeel ( ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde ) VALUES (v_deel_key, v_kenmerk_key, rec.voltage); COMMIT; --ELSE -- v_errormsg := 'Fout bij wijzigen voltage'; -- UPDATE ins_kenmerkdeel -- SET ins_kenmerkdeel_waarde = rec.voltage -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; -- COMMIT; END IF; END IF; -- APK toevoegen; huidige waarde NOOIT gewijzigd via import! IF rec.apkplicht IS NOT NULL AND UPPER (rec.apkplicht) != -1 THEN v_errormsg := 'Fout bij bepalen APK-kenmerk'; SELECT COUNT ( * ) INTO ccount FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_apkplicht_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! THEN v_errormsg := 'Fout bij toevoegen APK-kenmerk'; INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer) VALUES (c_apkplicht_srtkey, v_srtdeel_key, 'S', 118) RETURNING ins_kenmerk_key INTO v_kenmerk_key; fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/APK-kenmerk toegevoegd voor: ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; ELSE SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_apkplicht_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); END IF; v_errormsg := 'Fout bij bepalen huidige APK'; SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) INTO ccount, v_kenmerkdeel_key FROM ins_v_aanwezigkenmerkdeel WHERE ins_deel_key = v_deel_key AND ins_kenmerk_key = v_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen APK'; INSERT INTO ins_kenmerkdeel ( ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde ) VALUES (v_deel_key, v_kenmerk_key, rec.apkplicht); COMMIT; --ELSE -- v_errormsg := 'Fout bij wijzigen APK'; -- UPDATE ins_kenmerkdeel -- SET ins_kenmerkdeel_waarde = rec.apkplicht -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; -- COMMIT; END IF; END IF; -- CATEGORIE toevoegen; huidige waarde NOOIT gewijzigd via import! IF rec.categorie IS NOT NULL AND UPPER (rec.categorie) != 'NVT' THEN v_errormsg := 'Fout bij bepalen categorie-kenmerk'; SELECT COUNT ( * ) INTO ccount FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_categorie_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! THEN v_errormsg := 'Fout bij toevoegen categorie-kenmerk'; INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer) VALUES (c_categorie_srtkey, v_srtdeel_key, 'S', 120) RETURNING ins_kenmerk_key INTO v_kenmerk_key; fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/Categorie-kenmerk toegevoegd voor: ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; ELSE SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_categorie_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); END IF; v_errormsg := 'Fout bij bepalen huidige categorie'; SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) INTO ccount, v_kenmerkdeel_key FROM ins_v_aanwezigkenmerkdeel WHERE ins_deel_key = v_deel_key AND ins_kenmerk_key = v_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen categorie'; INSERT INTO ins_kenmerkdeel ( ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde ) VALUES (v_deel_key, v_kenmerk_key, rec.categorie); COMMIT; --ELSE -- v_errormsg := 'Fout bij wijzigen categorie'; -- UPDATE ins_kenmerkdeel -- SET ins_kenmerkdeel_waarde = rec.categorie -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; -- COMMIT; END IF; END IF; -- AFGEKEURD toevoegen; huidige waarde NOOIT gewijzigd via import! IF rec.afgekeurd IS NOT NULL AND UPPER (rec.afgekeurd) != -1 THEN v_errormsg := 'Fout bij bepalen afgekeurd-kenmerk'; SELECT COUNT ( * ) INTO ccount FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_afgekeurd_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! THEN v_errormsg := 'Fout bij toevoegen afgekeurd-kenmerk'; INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer) VALUES (c_afgekeurd_srtkey, v_srtdeel_key, 'S', 122) RETURNING ins_kenmerk_key INTO v_kenmerk_key; fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/afgekeurd-kenmerk toegevoegd voor: ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; ELSE SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_afgekeurd_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); END IF; v_errormsg := 'Fout bij bepalen huidige afgekeurd'; SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) INTO ccount, v_kenmerkdeel_key FROM ins_v_aanwezigkenmerkdeel WHERE ins_deel_key = v_deel_key AND ins_kenmerk_key = v_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen afgekeurd'; INSERT INTO ins_kenmerkdeel ( ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde ) VALUES (v_deel_key, v_kenmerk_key, rec.afgekeurd); COMMIT; --ELSE -- v_errormsg := 'Fout bij wijzigen afgekeurd'; -- UPDATE ins_kenmerkdeel -- SET ins_kenmerkdeel_waarde = rec.afgekeurd -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; -- COMMIT; END IF; END IF; -- Toevoegen controle; gebruik [a] de meest specifieke soort en -- [b] de minst recente mode! v_errormsg := 'Fout bij bepalen soort controle'; SELECT COUNT ( * ) INTO ccount FROM ins_srtcontrole sc WHERE UPPER (TRIM (sc.ins_srtcontrole_omschrijving)) = UPPER (TRIM (rec.ins_srtcontrole_omschrijving)) AND ( (sc.ins_srtinstallatie_key = v_srtdeel_key AND sc.ins_srtcontrole_niveau = 'S') OR (sc.ins_srtinstallatie_key = v_srtgroep_key AND sc.ins_srtcontrole_niveau = 'G') OR (sc.ins_srtinstallatie_key = v_discipline_key AND sc.ins_srtcontrole_niveau = 'D')); IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen soort controle'; INSERT INTO ins_srtcontrole (ins_srtinstallatie_key, ins_srtcontrole_niveau, ins_srtcontrole_omschrijving, ins_srtcontrole_periode) VALUES (v_srtdeel_key, 'S', SUBSTR (rec.ins_srtcontrole_omschrijving, 1, 60), c_controle_periode) -- Default een jaar! RETURNING ins_srtcontrole_key INTO v_srtcontrole_id; v_srtcontrole_id := 'S' || v_srtcontrole_id; fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/soort controle toegevoegd: ' || SUBSTR (rec.ins_srtcontrole_omschrijving, 1, 60) || ' voor ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; ELSE SELECT MAX(sc.ins_srtcontrole_niveau || TO_CHAR (sc.ins_srtcontrole_key)) INTO v_srtcontrole_id FROM ins_srtcontrole sc WHERE UPPER (TRIM (sc.ins_srtcontrole_omschrijving)) = UPPER (TRIM (rec.ins_srtcontrole_omschrijving)) AND ( (sc.ins_srtinstallatie_key = v_srtdeel_key AND sc.ins_srtcontrole_niveau = 'S') OR (sc.ins_srtinstallatie_key = v_srtgroep_key AND sc.ins_srtcontrole_niveau = 'G') OR (sc.ins_srtinstallatie_key = v_discipline_key AND sc.ins_srtcontrole_niveau = 'D')); END IF; IF rec.ins_deelsrtcontrole_datum IS NOT NULL THEN v_errormsg := 'Fout bij bepalen controle mode'; SELECT MIN (ins_controlemode_key) INTO v_controlemode_key FROM ins_controlemode; v_errormsg := 'Fout bij toevoegen controle'; INSERT INTO ins_deelsrtcontrole ( ins_deel_key, ins_srtcontrole_key, ins_deelsrtcontrole_datum, ins_controlemode_key, ins_deelsrtcontrole_opmerking ) VALUES (v_deel_key, fac.safe_to_number (SUBSTR (v_srtcontrole_id, 2)), rec.ins_deelsrtcontrole_datum, v_controlemode_key, rec.ins_deelsrtcontrole_opmerking); COMMIT; v_count_cupdate := v_count_cupdate + 1; END IF; -- Uitbreiden contract-plaats-scope als contractnummer voorkomt in -- importbestand (ie. cnt_contract_key kon worden bepaald) en deze -- relatie nog niet bestaat! IF (rec.cnt_contract_key IS NOT NULL) THEN v_errormsg := 'Fout bij bepalen contract-plaats-relatie'; SELECT COUNT ( * ) INTO ccount FROM cnt_contract_plaats WHERE cnt_contract_plaats_verwijder IS NULL AND cnt_contract_key = rec.cnt_contract_key AND cnt_alg_plaats_key = v_locatie_key AND cnt_alg_plaats_code = 'L'; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen contract-plaats-scope'; INSERT INTO cnt_contract_plaats ( cnt_contract_key, cnt_alg_plaats_key, cnt_alg_plaats_code ) VALUES (rec.cnt_contract_key, v_locatie_key, 'L'); fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/plaats-contractscope uitgebreid: ' || rec.cnt_contract_nummer_intern || ' plus ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; END IF; END IF; -- Uitbreiden contract-object-scope als contractnummer voorkomt in -- importbestand (ie. cnt_contract_key kon worden bepaald) en deze -- relatie nog niet bestaat! IF (rec.cnt_contract_key IS NOT NULL) THEN v_errormsg := 'Fout bij bepalen contract-object-relatie'; SELECT COUNT ( * ) INTO ccount FROM cnt_contract_object WHERE cnt_contract_object_verwijder IS NULL AND cnt_contract_key = rec.cnt_contract_key AND cnt_ins_srtdeel_key = v_srtdeel_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen contract-object-scope'; INSERT INTO cnt_contract_object ( cnt_contract_key, cnt_ins_srtdeel_key ) VALUES (rec.cnt_contract_key, v_srtdeel_key); fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/object-contractscope uitgebreid: ' || rec.cnt_contract_nummer_intern || ' plus ' || rec.ins_srtdeel_omschrijving, '' ); COMMIT; END IF; END IF; 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 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_oupdate), '' ); fac.imp_writelog ( p_import_key, 'S', 'INS-Controles/aantal toegevoegd: ' || TO_CHAR (v_count_cupdate), '' ); COMMIT; END; -- MAIN BEGIN add_insdiscipline (p_import_key); add_srtgroep (p_import_key); add_srtdeel (p_import_key); add_deelinspectie (p_import_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_errormsg, 'Importproces inspectieobjecten afgebroken!'); END conn_update_inspectieobj; / /* Formatted on 9-3-2012 17:37:17 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW conn_v_rap_keurobjecten_expimp ( fclt_f_locatiecode, ruimte, fclt_f_discipline, fclt_f_objectsoort, object_id, fclt_f_merk, fclt_f_keuring_categorie, fclt_f_contract_nr, fclt_f_leverancier, fclt_f_soortcontrole, --periode, --controle_gepland, --controle_laatste, controledatum, controleopmerking, fclt_f_afgekeurd ) AS SELECT x.alg_locatie_code, COALESCE (z1.alg_ruimte_nr, z2.alg_ruimte_nr), x.ins_discipline_omschrijving, x.ins_srtdeel_omschrijving, x.ins_deel_omschrijving, REPLACE (k1.merk, CHR (13) || CHR (10), ' '), k2.categorie, COALESCE (lev_onderhd.cnt_contract_nummer_intern, lev_onderst.cnt_contract_nummer_intern) contract_nr, COALESCE (lev_onderhd.prs_bedrijf_naam, lev_onderst.prs_bedrijf_naam) leverancier, csd.ins_srtcontrole_omschrijving, --TO_CHAR (csd.ins_srtcontrole_periode), --DECODE ( -- y.ins_deelsrtcontrole_datum, -- NULL, -- TO_CHAR (x.ins_deel_aanmaak + csd.ins_srtcontrole_periode, -- 'dd-mm-yyyy'), -- TO_CHAR ( -- y.ins_deelsrtcontrole_datum + csd.ins_srtcontrole_periode, -- 'dd-mm-yyyy' -- ) --), --DECODE (y.ins_deelsrtcontrole_datum, -- NULL, TO_CHAR (x.ins_deel_aanmaak, 'dd-mm-yyyy'), -- TO_CHAR (y.ins_deelsrtcontrole_datum, 'dd-mm-yyyy')), NULL controledatum, NULL controlopmerking, k3.afgekeurd FROM (SELECT scs.ins_srtinstallatie_key ins_srtdeel_key, scs.ins_srtcontrole_key, scs.ins_srtcontrole_omschrijving, scs.ins_srtcontrole_periode FROM ins_srtcontrole scs WHERE scs.ins_srtcontrole_niveau = 'S' UNION ALL SELECT sd.ins_srtdeel_key, scg.ins_srtcontrole_key, scg.ins_srtcontrole_omschrijving, scg.ins_srtcontrole_periode FROM ins_srtcontrole scg, ins_srtdeel sd WHERE scg.ins_srtcontrole_niveau = 'G' AND scg.ins_srtinstallatie_key = sd.ins_srtgroep_key UNION ALL SELECT sd.ins_srtdeel_key, scd.ins_srtcontrole_key, scd.ins_srtcontrole_omschrijving, scd.ins_srtcontrole_periode FROM ins_srtcontrole scd, ins_srtgroep sg, ins_srtdeel sd WHERE scd.ins_srtcontrole_niveau = 'D' AND scd.ins_srtinstallatie_key = sg.ins_discipline_key AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) csd LEFT JOIN (SELECT d.ins_deel_key, d.ins_deel_aanmaak, d.ins_deel_omschrijving, d.ins_alg_ruimte_key, d.ins_alg_ruimte_type, sd.ins_srtdeel_key, sd.ins_srtdeel_code, sd.ins_srtdeel_omschrijving, sg.ins_srtgroep_omschrijving, td.ins_discipline_omschrijving, l.alg_locatie_key, l.alg_locatie_code FROM ins_v_aanwezigdeel d, ins_srtdeel sd, ins_srtgroep sg, ins_tab_discipline td, alg_locatie l WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = td.ins_discipline_key AND d.ins_alg_locatie_key = l.alg_locatie_key(+)) x ON csd.ins_srtdeel_key = x.ins_srtdeel_key LEFT JOIN (SELECT DISTINCT co.cnt_ins_deel_key, c.cnt_contract_nummer_intern, b.prs_bedrijf_naam FROM cnt_contract_object co, cnt_contract c, ins_tab_discipline cd, prs_bedrijf b WHERE co.cnt_contract_object_verwijder IS NULL AND co.cnt_ins_deel_key IS NOT NULL AND co.cnt_contract_key = c.cnt_contract_key AND c.cnt_contract_looptijd_tot >= TRUNC ( ADD_MONTHS (SYSDATE, -12), 'YYYY' ) AND c.ins_discipline_key = cd.ins_discipline_key AND cd.ins_discipline_verwijder IS NULL AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) lev_onderhd ON x.ins_deel_key = lev_onderhd.cnt_ins_deel_key LEFT JOIN (SELECT DISTINCT co.cnt_ins_srtdeel_key, g.alg_locatie_key, c.cnt_contract_nummer_intern, b.prs_bedrijf_naam FROM cnt_contract_object co, cnt_contract c, ins_tab_discipline cd, cnt_contract_plaats cp, alg_gebouw g, prs_bedrijf b WHERE co.cnt_contract_object_verwijder IS NULL AND co.cnt_ins_srtdeel_key IS NOT NULL AND co.cnt_contract_key = c.cnt_contract_key AND c.cnt_contract_looptijd_tot >= TRUNC ( ADD_MONTHS (SYSDATE, -12), 'YYYY' ) AND c.ins_discipline_key = cd.ins_discipline_key AND cd.ins_discipline_verwijder IS NULL AND c.cnt_contract_key = cp.cnt_contract_key AND ( (cp.cnt_alg_plaats_code = 'G' AND cp.cnt_alg_plaats_key = g.alg_gebouw_key) OR (cp.cnt_alg_plaats_code = 'L' AND cp.cnt_alg_plaats_key = g.alg_locatie_key)) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) lev_onderst ON x.ins_srtdeel_key = lev_onderst.cnt_ins_srtdeel_key AND x.alg_locatie_key = lev_onderst.alg_locatie_key LEFT JOIN (SELECT ins_deel_key, ins_kenmerkdeel_waarde merk FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 42) k1 ON x.ins_deel_key = k1.ins_deel_key LEFT JOIN (SELECT ins_deel_key, ins_kenmerkdeel_waarde categorie FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 1467) k2 ON x.ins_deel_key = k2.ins_deel_key LEFT JOIN (SELECT ins_deel_key, DECODE (ins_kenmerkdeel_waarde, '129', 'JA', 'NEE') afgekeurd FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 1466) k3 ON x.ins_deel_key = k3.ins_deel_key LEFT JOIN (SELECT dsc.ins_deel_key, dsc.ins_srtcontrole_key, dsc.ins_deelsrtcontrole_datum, dsc.ins_deelsrtcontrole_opmerking FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deelsrtcontrole_datum = (SELECT MAX (ins_deelsrtcontrole_datum) FROM ins_deelsrtcontrole WHERE ins_deel_key = dsc.ins_deel_key AND ins_srtcontrole_key = dsc.ins_srtcontrole_key)) y ON x.ins_deel_key = y.ins_deel_key AND csd.ins_srtcontrole_key = y.ins_srtcontrole_key LEFT JOIN (SELECT r.alg_ruimte_key, 'R' alg_ruimte_type, r.alg_ruimte_nr FROM alg_ruimte r WHERE r.alg_ruimte_key = r.alg_ruimte_key) z1 ON x.ins_alg_ruimte_key = z1.alg_ruimte_key AND x.ins_alg_ruimte_type = z1.alg_ruimte_type LEFT JOIN (SELECT wp.prs_werkplek_key, 'W' alg_ruimte_type, r.alg_ruimte_nr FROM prs_werkplek wp, alg_ruimte r WHERE wp.prs_alg_ruimte_key = r.alg_ruimte_key) z2 ON x.ins_alg_ruimte_key = z2.prs_werkplek_key AND x.ins_alg_ruimte_type = z2.alg_ruimte_type; /* Formatted on 1-2-2012 14:45:54 (QP5 v5.115.810.9015) */ CREATE OR REPLACE PROCEDURE conn_import_keurobjecten ( p_import_key IN NUMBER ) IS c_delim 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_tot NUMBER (10); v_count_import NUMBER (10); v_ongeldig NUMBER (1); v_aanduiding VARCHAR (200); -- De importvelden: v_alg_locatie_code VARCHAR2 (255); -- C10 x_alg_ruimte_nr VARCHAR2 (255); -- C10 x_ins_discipline_omschrijving VARCHAR2 (255); -- C30 x_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100 v_ins_deel_omschrijving VARCHAR2 (255); -- C60 x_merk VARCHAR2 (255); -- C60 x_categorie VARCHAR2 (255); -- C60 v_cnt_contract_nummer_intern VARCHAR2 (255); -- C30 v_prs_bedrijf_naam VARCHAR2 (255); -- C60 v_ins_srtcontrole_oms VARCHAR2 (255); -- C60 v_ins_controle_datum VARCHAR2 (255); -- DATE v_ins_controle_opm VARCHAR2 (1024); -- C500 v_afgekeurd VARCHAR2 (255); -- C60 -- Overig: v_ins_controle_datum_d DATE; -- DATE CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN DELETE FROM conn_imp_keurobjecten; 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_errormsg := 'Fout bij opvragen importregel'; v_aanduiding := ''; v_ongeldig := 0; -- Lees alle veldwaarden fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code); fac.imp_getfield (v_newline, c_delim, x_alg_ruimte_nr); fac.imp_getfield (v_newline, c_delim, x_ins_discipline_omschrijving); fac.imp_getfield (v_newline, c_delim, x_ins_srtdeel_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving); fac.imp_getfield (v_newline, c_delim, x_merk); fac.imp_getfield (v_newline, c_delim, x_categorie); fac.imp_getfield (v_newline, c_delim, v_cnt_contract_nummer_intern); fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_naam); fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_oms); fac.imp_getfield (v_newline, c_delim, v_ins_controle_datum); fac.imp_getfield (v_newline, c_delim, v_ins_controle_opm); fac.imp_getfield (v_newline, c_delim, v_afgekeurd); v_aanduiding := '[' || x_ins_discipline_omschrijving || '|' || x_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 kolommen! -- Ik negeer alles totdat ik een geldige header ben gepasseerd. IF (header_is_valid = 0) THEN IF UPPER (v_alg_locatie_code) = 'LOCATIECODE' AND UPPER (x_alg_ruimte_nr) = 'RUIMTE' AND UPPER (x_ins_discipline_omschrijving) = 'DISCIPLINE' AND UPPER (x_ins_srtdeel_omschrijving) = 'OBJECTSOORT' AND UPPER (v_ins_deel_omschrijving) = 'OBJECT_ID' AND UPPER (x_merk) = 'MERK' AND UPPER (x_categorie) = 'KEURING_CATEGORIE' AND UPPER (v_prs_bedrijf_naam) = 'LEVERANCIER' AND UPPER (v_cnt_contract_nummer_intern) = 'CONTRACT_NR' -- Per CONN#22359! AND UPPER (v_ins_srtcontrole_oms) = 'SOORTCONTROLE' AND UPPER (v_ins_controle_datum) = 'CONTROLEDATUM' AND UPPER (v_ins_controle_opm) = 'CONTROLEOPMERKING' AND UPPER (v_afgekeurd) = 'AFGEKEURD' THEN header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden 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; -- Skip 'Ruimte' -- Skip 'Discipline' -- Skip 'Objectsoort' -- v_errormsg := 'Objectomschrijving ongeldig'; v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving); IF LENGTH (v_ins_deel_omschrijving) > 60 THEN v_ins_deel_omschrijving := SUBSTR (TRIM (v_ins_deel_omschrijving), 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Objectomschrijving wordt afgebroken tot [' || v_ins_deel_omschrijving || ']' ); END IF; -- Skip 'Merk' -- Skip 'Categorie' -- v_errormsg := 'Contractnummer ongeldig'; v_cnt_contract_nummer_intern := TRIM (v_cnt_contract_nummer_intern); IF LENGTH (v_cnt_contract_nummer_intern) > 30 THEN v_cnt_contract_nummer_intern := SUBSTR (v_cnt_contract_nummer_intern, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Contractnummer wordt afgebroken tot [' || v_cnt_contract_nummer_intern || ']' ); END IF; -- v_errormsg := 'Leverancier ongeldig'; v_prs_bedrijf_naam := TRIM (v_prs_bedrijf_naam); IF LENGTH (v_prs_bedrijf_naam) > 60 THEN v_prs_bedrijf_naam := SUBSTR (v_prs_bedrijf_naam, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Leverancier wordt afgebroken tot [' || v_prs_bedrijf_naam || ']' ); END IF; -- v_errormsg := 'Soort controle ongeldig'; v_ins_srtcontrole_oms := TRIM (v_ins_srtcontrole_oms); IF LENGTH (v_ins_srtcontrole_oms) > 60 THEN v_ins_srtcontrole_oms := SUBSTR (v_ins_srtcontrole_oms, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Soort controle wordt afgebroken tot [' || v_ins_srtcontrole_oms || ']' ); END IF; -- v_errormsg := 'Controledatum ongeldig'; v_ins_controle_datum := TRIM (v_ins_controle_datum); v_ins_controle_datum_d := NULL; IF (v_ins_controle_datum IS NOT NULL) THEN IF (fac.safe_to_date (v_ins_controle_datum, 'dd-mm-yyyy') IS NULL) THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Controledatum wordt genegeerd'); ELSE v_ins_controle_datum_d := fac.safe_to_date (v_ins_controle_datum, 'dd-mm-yyyy'); END IF; END IF; -- v_errormsg := 'Controleopmerking ongeldig'; v_ins_controle_opm := TRIM (v_ins_controle_opm); IF LENGTH (v_ins_controle_opm) > 500 THEN v_ins_controle_opm := SUBSTR (v_ins_controle_opm, 1, 500); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Controleopmerking wordt afgekapt op 500 posities' ); END IF; -- v_errormsg := 'Afgekeurd ongeldig'; v_afgekeurd := TRIM (v_afgekeurd); IF LENGTH (v_afgekeurd) > 60 THEN v_afgekeurd := SUBSTR (v_afgekeurd, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Afgekeurd wordt afgebroken tot [' || v_afgekeurd || ']' ); END IF; -- Insert geformatteerde import record IF v_ongeldig = 0 THEN BEGIN v_errormsg := 'Fout bij wegschrijven importregel'; INSERT INTO conn_imp_keurobjecten ( alg_locatie_code, ins_deel_omschrijving, cnt_contract_nummer_intern, prs_bedrijf_naam, ins_srtcontrole_omschrijving, ins_deelsrtcontrole_datum, ins_deelsrtcontrole_opmerking, afgekeurd ) VALUES (v_alg_locatie_code, v_ins_deel_omschrijving, v_cnt_contract_nummer_intern, v_prs_bedrijf_naam, v_ins_srtcontrole_oms, v_ins_controle_datum_d, v_ins_controle_opm, v_afgekeurd); 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', 'keurobjecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog ( p_import_key, 'S', 'keurobjecten/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 keurobjecten afgebroken!'); END conn_import_keurobjecten; / /* Formatted on 14-3-2012 17:24:48 (QP5 v5.115.810.9015) */ CREATE OR REPLACE PROCEDURE conn_update_keurobjecten (p_import_key IN NUMBER) AS v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); -- SUBPROC PROCEDURE add_deelinspectie (p_import_key IN NUMBER) AS CURSOR c1 IS SELECT obj.ins_deel_omschrijving, obj.alg_locatie_code, obj.cnt_contract_nummer_intern, obj.ins_srtcontrole_omschrijving, obj.ins_deelsrtcontrole_datum, DECODE ( COALESCE (cb.prs_bedrijf_naam, obj.prs_bedrijf_naam), NULL, obj.ins_deelsrtcontrole_opmerking, COALESCE (cb.prs_bedrijf_naam, obj.prs_bedrijf_naam) || ':' || CHR (13) || CHR (10) || COALESCE (obj.ins_deelsrtcontrole_opmerking, '-') ) ins_deelsrtcontrole_opmerking, DECODE (UPPER (obj.afgekeurd), 'JA', 129, 'NEE', 130, -1) afgekeurd FROM (SELECT ins_deel_omschrijving, alg_locatie_code, cnt_contract_nummer_intern, -- Per CONN#22359! prs_bedrijf_naam, ins_srtcontrole_omschrijving, ins_deelsrtcontrole_datum, ins_deelsrtcontrole_opmerking, afgekeurd FROM conn_imp_keurobjecten) obj LEFT JOIN (SELECT c.cnt_contract_nummer_intern, b.prs_bedrijf_naam, c.cnt_contract_key FROM cnt_contract c, ins_tab_discipline td, cnt_disc_params dp, prs_bedrijf b WHERE c.cnt_contract_verwijder IS NULL AND c.ins_discipline_key = td.ins_discipline_key AND td.ins_discipline_verwijder IS NULL AND td.ins_discipline_key = dp.cnt_ins_discipline_key AND dp.cnt_srtcontract_type = 3 -- Ondersteuning/Support AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) cb ON obj.cnt_contract_nummer_intern = cb.cnt_contract_nummer_intern; v_errormsg VARCHAR2 (1024); c_afgekeurd_srtkey NUMBER (10) := 1466; v_locatie_key NUMBER (10); v_deel_key NUMBER (10); v_srtdeel_key NUMBER (10); v_srtdeel_oms VARCHAR2 (100); v_srtgroep_key NUMBER (10); v_discipline_key NUMBER (10); v_kenmerk_key NUMBER (10); v_kenmerkdeel_key NUMBER (10); v_srtcontrole_id VARCHAR2 (20); v_controlemode_key NUMBER (10); ccount NUMBER (10); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count_tot NUMBER (10); v_count_cupdate NUMBER (10); v_aanduiding VARCHAR (200); BEGIN v_count_tot := 0; v_count_cupdate := 0; v_aanduiding := ''; FOR rec IN c1 LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := '[' || rec.alg_locatie_code || '|' || rec.ins_deel_omschrijving || '|' || rec.cnt_contract_nummer_intern || '|' || rec.ins_srtcontrole_omschrijving || '] '; v_errormsg := 'Fout bij bepalen locatie [' || rec.alg_locatie_code || ']'; SELECT alg_locatie_key INTO v_locatie_key FROM alg_locatie WHERE alg_locatie_verwijder IS NULL AND UPPER (TRIM (alg_locatie_code)) = UPPER (TRIM (rec.alg_locatie_code)); -- Ruimtegebonden objecten hebben een unieke ID binnen de locatie v_errormsg := 'Fout bij bepalen INS-object'; SELECT d.ins_deel_key, sd.ins_srtdeel_key, sd.ins_srtdeel_omschrijving, sg.ins_srtgroep_key, sg.ins_discipline_key INTO v_deel_key, v_srtdeel_key, v_srtdeel_oms, v_srtgroep_key, v_discipline_key FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg WHERE d.ins_deel_verwijder IS NULL AND d.ins_deel_module = 'INS' AND d.ins_deel_upper = UPPER (rec.ins_deel_omschrijving) AND d.ins_alg_locatie_key = v_locatie_key AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key; -- AFGEKEURD toevoegen of wijzigen! IF rec.afgekeurd IS NOT NULL AND UPPER (rec.afgekeurd) != -1 THEN v_errormsg := 'Fout bij bepalen afgekeurd-kenmerk'; SELECT COUNT ( * ) INTO ccount FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_afgekeurd_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! THEN v_errormsg := 'Fout bij toevoegen afgekeurd-kenmerk'; INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer) VALUES (c_afgekeurd_srtkey, v_srtdeel_key, 'S', 122) RETURNING ins_kenmerk_key INTO v_kenmerk_key; fac.imp_writelog ( p_import_key, 'I', 'INS-Objecten/afgekeurd-kenmerk toegevoegd voor: ' || v_srtdeel_oms, '' ); COMMIT; ELSE SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k WHERE k.ins_srtkenmerk_key = c_afgekeurd_srtkey AND ( (k.ins_srtinstallatie_key = v_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR (k.ins_srtinstallatie_key = v_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR (k.ins_srtinstallatie_key = v_discipline_key AND k.ins_kenmerk_niveau = 'D')); END IF; v_errormsg := 'Fout bij bepalen huidige afgekeurd'; SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) INTO ccount, v_kenmerkdeel_key FROM ins_v_aanwezigkenmerkdeel WHERE ins_deel_key = v_deel_key AND ins_kenmerk_key = v_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen afgekeurd'; INSERT INTO ins_kenmerkdeel ( ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde ) VALUES (v_deel_key, v_kenmerk_key, rec.afgekeurd); COMMIT; ELSE v_errormsg := 'Fout bij wijzigen afgekeurd'; UPDATE ins_kenmerkdeel SET ins_kenmerkdeel_waarde = rec.afgekeurd WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; COMMIT; END IF; END IF; -- Toevoegen controle; gebruik [a] de meest specifieke soort en -- [b] de minst recente mode! v_errormsg := 'Fout bij bepalen soort controle'; SELECT MAX(sc.ins_srtcontrole_niveau || TO_CHAR (sc.ins_srtcontrole_key)) INTO v_srtcontrole_id FROM ins_srtcontrole sc WHERE UPPER (TRIM (sc.ins_srtcontrole_omschrijving)) = UPPER (TRIM (rec.ins_srtcontrole_omschrijving)) AND ( (sc.ins_srtinstallatie_key = v_srtdeel_key AND sc.ins_srtcontrole_niveau = 'S') OR (sc.ins_srtinstallatie_key = v_srtgroep_key AND sc.ins_srtcontrole_niveau = 'G') OR (sc.ins_srtinstallatie_key = v_discipline_key AND sc.ins_srtcontrole_niveau = 'D')); IF rec.ins_deelsrtcontrole_datum IS NOT NULL THEN v_errormsg := 'Fout bij bepalen controle mode'; SELECT MIN (ins_controlemode_key) INTO v_controlemode_key FROM ins_controlemode; v_errormsg := 'Fout bij toevoegen controle'; INSERT INTO ins_deelsrtcontrole ( ins_deel_key, ins_srtcontrole_key, ins_deelsrtcontrole_datum, ins_controlemode_key, ins_deelsrtcontrole_opmerking ) VALUES (v_deel_key, fac.safe_to_number (SUBSTR (v_srtcontrole_id, 2)), rec.ins_deelsrtcontrole_datum, v_controlemode_key, rec.ins_deelsrtcontrole_opmerking); COMMIT; v_count_cupdate := v_count_cupdate + 1; END IF; 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 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-Controles/aantal toegevoegd: ' || TO_CHAR (v_count_cupdate), '' ); COMMIT; END; -- MAIN BEGIN add_deelinspectie (p_import_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_errormsg, 'Importproces keurobjecten afgebroken!'); END conn_update_keurobjecten; / /* Formatted on 9-7-2013 17:18:18 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW conn_v_locatiekenmerken AS SELECT fac.safe_to_number (SUBSTR (x.kenmerk_id, 4)) alg_kenmerk_key, x.vnr, kw.alg_onrgoed_key, kw.waarde FROM ( SELECT SUBSTR ('000' || TO_CHAR (k1.alg_kenmerk_volgnr), -3) || TO_CHAR (k1.alg_kenmerk_key) kenmerk_id, COUNT ( * ) vnr FROM (SELECT * FROM alg_kenmerk WHERE alg_kenmerk_verwijder IS NULL AND alg_kenmerk_niveau = 'L' AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S')) k1, (SELECT * FROM alg_kenmerk WHERE alg_kenmerk_verwijder IS NULL AND alg_kenmerk_niveau = 'L' AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S')) k2 WHERE SUBSTR ('000' || TO_CHAR (k1.alg_kenmerk_volgnr), -3) || TO_CHAR (k1.alg_kenmerk_key) >= SUBSTR ('000' || TO_CHAR (k2.alg_kenmerk_volgnr), -3) || TO_CHAR (k2.alg_kenmerk_key) GROUP BY SUBSTR ('000' || TO_CHAR (k1.alg_kenmerk_volgnr), -3) || TO_CHAR (k1.alg_kenmerk_key)) x LEFT JOIN (SELECT ok.alg_onrgoed_key, ok.alg_kenmerk_key, DECODE ( k.alg_kenmerk_kenmerktype, 'R', fac.getdomeinwaarde (k.fac_kenmerkdomein_key, ok.alg_onrgoedkenmerk_waarde), 'S', fac.getdomeinwaarde (k.fac_kenmerkdomein_key, ok.alg_onrgoedkenmerk_waarde), ok.alg_onrgoedkenmerk_waarde ) waarde FROM alg_kenmerk k, alg_v_aanwezigonrgoedkenmerk ok WHERE k.alg_kenmerk_verwijder IS NULL AND k.alg_kenmerk_niveau = 'L' AND k.alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S') AND k.alg_kenmerk_key = ok.alg_kenmerk_key) kw ON fac.safe_to_number (SUBSTR (x.kenmerk_id, 4)) = kw.alg_kenmerk_key; /* Formatted on 11-7-2013 16:06:26 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW conn_v_rap_onrgoed1_expimp ( hide_f_result_order, fclt_f_regio_omschrijving, fclt_f_district_omschrijving, fclt_f_locatiecode, locatieomschrijving, fclt_f_gebouwcode, gebouwomschrijving, fclt_f_gebouwfunctie, contactpersoon, telefoonnummer, bezoekadres, postcode1, plaats1, land1, postadres, postcode2, plaats2, land2, kenmerk1, kenmerk2, kenmerk3, kenmerk4, kenmerk5, kenmerk6, kenmerk7, kenmerk8, kenmerk9, kenmerk10 ) AS SELECT 0, 'regio_omschrijving' regio_omschrijving, 'district_omschrijving' district_omschrijving, 'locatie_code' locatiecode, 'locatieomschrijving' locatieomschrijving, 'gebouwcode' gebouwcode, 'gebouwomschrijving' gebouwomschrijving, 'gebouwfunctie' gebouwfunctie, 'contactpersoon' contactpersoon, 'telefoonnummer' telefoonnummer, 'bezoekadres' bezoekadres, 'postcode1' postcode1, 'plaats1' plaats1, 'land1' land1, 'postadres' postadres, 'postcode2' postcode2, 'plaats2' plaats2, 'land2' land2, TO_CHAR ( (SELECT MAX (alg_kenmerk_key) FROM conn_v_locatiekenmerken WHERE vnr = 1)) kenmerk1, TO_CHAR ( (SELECT MAX (alg_kenmerk_key) FROM conn_v_locatiekenmerken WHERE vnr = 2)) kenmerk2, TO_CHAR ( (SELECT MAX (alg_kenmerk_key) FROM conn_v_locatiekenmerken WHERE vnr = 3)) kenmerk3, TO_CHAR ( (SELECT MAX (alg_kenmerk_key) FROM conn_v_locatiekenmerken WHERE vnr = 4)) kenmerk4, TO_CHAR ( (SELECT MAX (alg_kenmerk_key) FROM conn_v_locatiekenmerken WHERE vnr = 5)) kenmerk5, TO_CHAR ( (SELECT MAX (alg_kenmerk_key) FROM conn_v_locatiekenmerken WHERE vnr = 6)) kenmerk6, TO_CHAR ( (SELECT MAX (alg_kenmerk_key) FROM conn_v_locatiekenmerken WHERE vnr = 7)) kenmerk7, TO_CHAR ( (SELECT MAX (alg_kenmerk_key) FROM conn_v_locatiekenmerken WHERE vnr = 8)) kenmerk8, TO_CHAR ( (SELECT MAX (alg_kenmerk_key) FROM conn_v_locatiekenmerken WHERE vnr = 9)) kenmerk9, TO_CHAR ( (SELECT MAX (alg_kenmerk_key) FROM conn_v_locatiekenmerken WHERE vnr = 10)) kenmerk10 FROM DUAL UNION ALL SELECT 1, x.alg_regio_omschrijving regio_omschrijving, x.alg_district_omschrijving district_omschrijving, x.alg_locatie_code locatiecode, x.alg_locatie_omschrijving locatieomschrijving, x.alg_gebouw_code gebouwcode, x.alg_gebouw_naam gebouwomschrijving, x.alg_srtgebouw_omschrijving gebouwfunctie, x.alg_locatie_verantw contactpersoon, x.alg_locatie_verantw_tel telefoonnummer, x.alg_locatie_adres bezoekadres, x.alg_locatie_postcode postcode1, x.alg_locatie_plaats plaats1, x.alg_locatie_land land1, x.alg_locatie_post_adres postadres, x.alg_locatie_post_postcode postcode2, x.alg_locatie_post_plaats plaats2, x.alg_locatie_post_land land2, k1.waarde kenmerk1, k2.waarde kenmerk2, k3.waarde kenmerk3, k4.waarde kenmerk4, k5.waarde kenmerk5, k6.waarde kenmerk6, k7.waarde kenmerk7, k8.waarde kenmerk8, k9.waarde kenmerk9, k10.waarde kenmerk10 FROM (SELECT l.alg_locatie_key, r.alg_regio_omschrijving, d.alg_district_omschrijving, l.alg_locatie_code, l.alg_locatie_omschrijving, g.alg_gebouw_code, g.alg_gebouw_naam, sg.alg_srtgebouw_omschrijving, l.alg_locatie_verantw, l.alg_locatie_verantw_tel, l.alg_locatie_adres, l.alg_locatie_postcode, l.alg_locatie_plaats, l.alg_locatie_land, l.alg_locatie_post_adres, l.alg_locatie_post_postcode, l.alg_locatie_post_plaats, l.alg_locatie_post_land FROM alg_v_aanwezigregio r, alg_v_aanwezigdistrict d, alg_v_aanweziglocatie l, alg_v_aanweziggebouw g, alg_v_aanwezigsrtgebouw sg WHERE r.alg_regio_key = d.alg_regio_key AND d.alg_district_key = l.alg_district_key AND l.alg_locatie_key = g.alg_locatie_key AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key(+)) x LEFT JOIN conn_v_locatiekenmerken k1 ON x.alg_locatie_key = k1.alg_onrgoed_key AND k1.vnr = 1 LEFT JOIN conn_v_locatiekenmerken k2 ON x.alg_locatie_key = k2.alg_onrgoed_key AND k2.vnr = 2 LEFT JOIN conn_v_locatiekenmerken k3 ON x.alg_locatie_key = k3.alg_onrgoed_key AND k3.vnr = 3 LEFT JOIN conn_v_locatiekenmerken k4 ON x.alg_locatie_key = k4.alg_onrgoed_key AND k4.vnr = 4 LEFT JOIN conn_v_locatiekenmerken k5 ON x.alg_locatie_key = k5.alg_onrgoed_key AND k5.vnr = 5 LEFT JOIN conn_v_locatiekenmerken k6 ON x.alg_locatie_key = k6.alg_onrgoed_key AND k6.vnr = 6 LEFT JOIN conn_v_locatiekenmerken k7 ON x.alg_locatie_key = k7.alg_onrgoed_key AND k7.vnr = 7 LEFT JOIN conn_v_locatiekenmerken k8 ON x.alg_locatie_key = k8.alg_onrgoed_key AND k8.vnr = 8 LEFT JOIN conn_v_locatiekenmerken k9 ON x.alg_locatie_key = k9.alg_onrgoed_key AND k9.vnr = 9 LEFT JOIN conn_v_locatiekenmerken k10 ON x.alg_locatie_key = k10.alg_onrgoed_key AND k10.vnr = 10; /* Formatted on 9-7-2013 10:22:36 (QP5 v5.115.810.9015) */ CREATE OR REPLACE PROCEDURE conn_import_onrgoed1 (p_import_key IN NUMBER) AS c_delim 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_tot NUMBER (10); v_count_imp NUMBER (10); v_ongeldig NUMBER (1); v_aanduiding VARCHAR2 (200); v_alg_kenmerk_key1 VARCHAR2 (255); v_alg_kenmerk_key2 VARCHAR2 (255); v_alg_kenmerk_key3 VARCHAR2 (255); v_alg_kenmerk_key4 VARCHAR2 (255); v_alg_kenmerk_key5 VARCHAR2 (255); v_alg_kenmerk_key6 VARCHAR2 (255); v_alg_kenmerk_key7 VARCHAR2 (255); v_alg_kenmerk_key8 VARCHAR2 (255); v_alg_kenmerk_key9 VARCHAR2 (255); v_alg_kenmerk_key10 VARCHAR2 (255); -- De importvelden: v_regio_omschrijving VARCHAR2 (255); -- 30 v_district_omschrijving VARCHAR2 (255); -- 30 v_locatie_code VARCHAR2 (255); -- 10 v_locatie_omschrijving VARCHAR2 (255); -- 30 v_gebouw_code VARCHAR2 (255); -- 10 v_gebouw_naam VARCHAR2 (255); -- 30 v_srtgebouw_omschrijving VARCHAR2 (255); -- 30 v_locatie_verantw VARCHAR2 (255); -- 30 v_locatie_verantw_tel VARCHAR2 (255); -- 15 v_locatie_adres VARCHAR2 (255); -- 35 v_locatie_postcode VARCHAR2 (255); -- 12 v_locatie_plaats VARCHAR2 (255); -- 30 v_locatie_land VARCHAR2 (255); -- 30 v_locatie_post_adres VARCHAR2 (255); -- 35 v_locatie_post_postcode VARCHAR2 (255); -- 12 v_locatie_post_plaats VARCHAR2 (255); -- 30 v_locatie_post_land VARCHAR2 (255); -- 30 v_alg_kenmerkwaarde1 VARCHAR2 (255); v_alg_kenmerkwaarde2 VARCHAR2 (255); v_alg_kenmerkwaarde3 VARCHAR2 (255); v_alg_kenmerkwaarde4 VARCHAR2 (255); v_alg_kenmerkwaarde5 VARCHAR2 (255); v_alg_kenmerkwaarde6 VARCHAR2 (255); v_alg_kenmerkwaarde7 VARCHAR2 (255); v_alg_kenmerkwaarde8 VARCHAR2 (255); v_alg_kenmerkwaarde9 VARCHAR2 (255); v_alg_kenmerkwaarde10 VARCHAR2 (255); 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 (uniek) bestaan van kenmerk (of -- deze is gedefinieerd voor gebouw/locatie, volgt tijdens de update-fase)! FUNCTION bepaal_kenmerk_key (ok IN VARCHAR) RETURN NUMBER IS v_kenmerk_key NUMBER; BEGIN IF fac.safe_to_number (ok) IS NULL THEN -- Kenmerkwaarde is alfanumeriek (dus omschrijving)! SELECT alg_kenmerk_key INTO v_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_verwijder IS NULL AND alg_kenmerk_niveau IN ('L', 'G') AND alg_kenmerk_upper = UPPER (ok) AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S'); ELSE -- Kenmerkwaarde is numeriek (dus key)! SELECT alg_kenmerk_key INTO v_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_verwijder IS NULL AND alg_kenmerk_niveau IN ('L', 'G') AND alg_kenmerk_key = fac.safe_to_number (ok) AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S'); END IF; RETURN v_kenmerk_key; EXCEPTION WHEN NO_DATA_FOUND THEN IF ok IS NULL OR UPPER (ok) LIKE 'KENMERK%' THEN RETURN NULL; ELSE fac.imp_writelog (p_import_key, 'W', 'Fout bij bepalen kenmerk [' || ok || ']', 'Bestaat niet of type ongeldig'); COMMIT; RETURN NULL; END IF; WHEN OTHERS THEN fac.imp_writelog (p_import_key, 'W', 'Fout bij bepalen kenmerk [' || ok || ']', 'Kan kenmerk niet 1-duidig bepalen'); COMMIT; RETURN NULL; END; BEGIN -- Eerst opruiming DELETE FROM conn_imp_onrgoed1; COMMIT; v_count_tot := 0; v_count_imp := 0; header_is_valid := 0; FOR rec1 IN c1 LOOP BEGIN v_errormsg := 'Fout FETCH importregel'; v_newline := rec1.fac_imp_file_line; v_errormsg := 'Fout bij opvragen importregel'; v_aanduiding := ''; v_ongeldig := 0; -- Lees alle veldwaarden fac.imp_getfield (v_newline, c_delim, v_regio_omschrijving); fac.imp_getfield (v_newline, c_delim, v_district_omschrijving); fac.imp_getfield (v_newline, c_delim, v_locatie_code); fac.imp_getfield (v_newline, c_delim, v_locatie_omschrijving); fac.imp_getfield (v_newline, c_delim, v_gebouw_code); fac.imp_getfield (v_newline, c_delim, v_gebouw_naam); fac.imp_getfield (v_newline, c_delim, v_srtgebouw_omschrijving); fac.imp_getfield (v_newline, c_delim, v_locatie_verantw); fac.imp_getfield (v_newline, c_delim, v_locatie_verantw_tel); fac.imp_getfield (v_newline, c_delim, v_locatie_adres); fac.imp_getfield (v_newline, c_delim, v_locatie_postcode); fac.imp_getfield (v_newline, c_delim, v_locatie_plaats); fac.imp_getfield (v_newline, c_delim, v_locatie_land); fac.imp_getfield (v_newline, c_delim, v_locatie_post_adres); fac.imp_getfield (v_newline, c_delim, v_locatie_post_postcode); fac.imp_getfield (v_newline, c_delim, v_locatie_post_plaats); fac.imp_getfield (v_newline, c_delim, v_locatie_post_land); fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde1); fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde2); fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde3); fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde4); fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde5); fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde6); fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde7); fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde8); fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde9); fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde10); v_aanduiding := '[' || v_locatie_code || '|' || v_gebouw_code || '] '; -- 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_regio_omschrijving) LIKE 'REGIO%' AND UPPER (v_district_omschrijving) LIKE 'DISTRICT%' AND UPPER (v_locatie_code) = 'LOCATIECODE' AND UPPER (v_gebouw_code) = 'GEBOUWCODE' AND UPPER (v_locatie_adres) = 'BEZOEKADRES' AND UPPER (v_locatie_post_adres) = 'POSTADRES' AND UPPER (v_locatie_post_land) LIKE 'LAND%' THEN v_alg_kenmerk_key1 := bepaal_kenmerk_key (v_alg_kenmerkwaarde1); v_alg_kenmerk_key2 := bepaal_kenmerk_key (v_alg_kenmerkwaarde2); v_alg_kenmerk_key3 := bepaal_kenmerk_key (v_alg_kenmerkwaarde3); v_alg_kenmerk_key4 := bepaal_kenmerk_key (v_alg_kenmerkwaarde4); v_alg_kenmerk_key5 := bepaal_kenmerk_key (v_alg_kenmerkwaarde5); v_alg_kenmerk_key6 := bepaal_kenmerk_key (v_alg_kenmerkwaarde6); v_alg_kenmerk_key7 := bepaal_kenmerk_key (v_alg_kenmerkwaarde7); v_alg_kenmerk_key8 := bepaal_kenmerk_key (v_alg_kenmerkwaarde8); v_alg_kenmerk_key9 := bepaal_kenmerk_key (v_alg_kenmerkwaarde9); v_alg_kenmerk_key10 := bepaal_kenmerk_key (v_alg_kenmerkwaarde10); header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden v_errormsg := 'Regio-omschrijving leeg of te lang'; v_regio_omschrijving := TRIM (v_regio_omschrijving); IF v_regio_omschrijving IS NULL THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen'); ELSIF LENGTH (v_regio_omschrijving) > 30 THEN v_regio_omschrijving := SUBSTR (v_regio_omschrijving, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Regio-omschrijving afgebroken tot [' || v_regio_omschrijving || ']' ); END IF; -- v_errormsg := 'District-omschrijving leeg of te lang'; v_district_omschrijving := TRIM (v_district_omschrijving); IF v_district_omschrijving IS NULL THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen'); ELSIF LENGTH (v_district_omschrijving) > 30 THEN v_district_omschrijving := SUBSTR (v_district_omschrijving, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'District-omschrijving afgebroken tot [' || v_district_omschrijving || ']' ); END IF; -- v_errormsg := 'Locatiecode leeg of te lang'; v_locatie_code := TRIM (v_locatie_code); IF v_locatie_code IS NULL OR LENGTH (v_locatie_code) > 10 THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen'); END IF; -- v_errormsg := 'Locatie-omschrijving leeg of te lang'; v_locatie_omschrijving := TRIM (v_locatie_omschrijving); IF v_locatie_omschrijving IS NULL THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen'); ELSIF LENGTH (v_locatie_omschrijving) > 30 THEN v_locatie_omschrijving := SUBSTR (v_locatie_omschrijving, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Locatie-omschrijving afgebroken tot [' || v_locatie_omschrijving || ']' ); END IF; -- v_errormsg := 'Gebouwcode leeg of te lang'; v_gebouw_code := TRIM (v_gebouw_code); IF v_gebouw_code IS NULL OR LENGTH (v_gebouw_code) > 12 THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen'); END IF; -- v_errormsg := 'Gebouwnaam leeg of te lang'; v_gebouw_naam := TRIM (v_gebouw_naam); IF v_gebouw_naam IS NULL THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen'); ELSIF LENGTH (v_gebouw_naam) > 30 THEN v_gebouw_naam := SUBSTR (v_gebouw_naam, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Gebouwnaam afgebroken tot [' || v_gebouw_naam || ']' ); END IF; -- v_errormsg := 'Gebouwfunctie te lang'; v_srtgebouw_omschrijving := TRIM (v_srtgebouw_omschrijving); IF LENGTH (v_srtgebouw_omschrijving) > 30 THEN v_srtgebouw_omschrijving := SUBSTR (v_srtgebouw_omschrijving, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Gebouwfunctie afgebroken tot [' || v_srtgebouw_omschrijving || ']' ); END IF; -- v_errormsg := 'Naam te lang (contactpersoon)'; v_locatie_verantw := TRIM (v_locatie_verantw); IF LENGTH (v_locatie_verantw) > 30 THEN v_locatie_verantw := SUBSTR (v_locatie_verantw, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Naam afgebroken tot [' || v_locatie_verantw || ']' ); END IF; -- v_errormsg := 'Telefoonnummer te lang (contactpersoon)'; v_locatie_verantw_tel := TRIM (v_locatie_verantw_tel); IF LENGTH (v_locatie_verantw_tel) > 15 THEN v_locatie_verantw_tel := SUBSTR (v_locatie_verantw_tel, 1, 15); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Telefoonnummer afgebroken tot [' || v_locatie_verantw_tel || ']' ); END IF; -- v_errormsg := 'Adres te lang (bezoekadres)'; v_locatie_adres := TRIM (v_locatie_adres); IF LENGTH (v_locatie_adres) > 35 THEN v_locatie_adres := SUBSTR (v_locatie_adres, 1, 35); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Adres afgebroken tot ]' || v_locatie_adres || ']' ); END IF; -- v_errormsg := 'Postcode te lang (bezoekadres)'; v_locatie_postcode := TRIM (v_locatie_postcode); IF LENGTH (v_locatie_postcode) > 12 THEN v_locatie_postcode := SUBSTR (v_locatie_postcode, 1, 12); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Postcode afgebroken tot [' || v_locatie_postcode || ']' ); END IF; -- v_errormsg := 'Plaatsnaam te lang (bezoekadres)'; v_locatie_plaats := TRIM (v_locatie_plaats); IF LENGTH (v_locatie_plaats) > 30 THEN v_locatie_plaats := SUBSTR (v_locatie_plaats, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Plaatsnaam afgebroken tot [' || v_locatie_plaats || ']' ); END IF; -- v_errormsg := 'Landnaam te lang (bezoekadres)'; v_locatie_land := TRIM (v_locatie_land); IF LENGTH (v_locatie_land) > 30 THEN v_locatie_land := SUBSTR (v_locatie_land, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Landnaam afgebroken tot [' || v_locatie_land || ']' ); END IF; -- v_errormsg := 'Adres te lang (postadres)'; v_locatie_post_adres := TRIM (v_locatie_post_adres); IF LENGTH (v_locatie_post_adres) > 35 THEN v_locatie_post_adres := SUBSTR (v_locatie_post_adres, 1, 35); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Adres afgebroken tot [' || v_locatie_post_adres || ']' ); END IF; -- v_errormsg := 'Postcode te lang (postadres)'; v_locatie_post_postcode := TRIM (v_locatie_post_postcode); IF LENGTH (v_locatie_post_postcode) > 12 THEN v_locatie_post_postcode := SUBSTR (v_locatie_post_postcode, 1, 12); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Postcode afgebroken tot [' || v_locatie_post_postcode || ']' ); END IF; -- v_errormsg := 'Plaatsnaam te lang (postadres)'; v_locatie_post_plaats := TRIM (v_locatie_post_plaats); IF LENGTH (v_locatie_post_plaats) > 30 THEN v_locatie_post_plaats := SUBSTR (v_locatie_post_plaats, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Plaatsnaam afgebroken tot [' || v_locatie_post_plaats || ']' ); END IF; -- v_errormsg := 'Landnaam te lang (postadres)'; v_locatie_post_land := TRIM (v_locatie_post_land); IF LENGTH (v_locatie_post_land) > 30 THEN v_locatie_post_land := SUBSTR (v_locatie_post_land, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Landnaam afgebroken tot [' || v_locatie_post_land || ']' ); END IF; -- De rest alleen ff trimmen. v_alg_kenmerkwaarde1 := TRIM (v_alg_kenmerkwaarde1); v_alg_kenmerkwaarde2 := TRIM (v_alg_kenmerkwaarde2); v_alg_kenmerkwaarde3 := TRIM (v_alg_kenmerkwaarde3); v_alg_kenmerkwaarde4 := TRIM (v_alg_kenmerkwaarde4); v_alg_kenmerkwaarde5 := TRIM (v_alg_kenmerkwaarde5); v_alg_kenmerkwaarde6 := TRIM (v_alg_kenmerkwaarde6); v_alg_kenmerkwaarde7 := TRIM (v_alg_kenmerkwaarde7); v_alg_kenmerkwaarde8 := TRIM (v_alg_kenmerkwaarde8); v_alg_kenmerkwaarde9 := TRIM (v_alg_kenmerkwaarde9); v_alg_kenmerkwaarde10 := TRIM (v_alg_kenmerkwaarde10); -- Insert geformatteerde import record IF v_ongeldig = 0 THEN BEGIN v_errormsg := 'Fout bij wegschrijven importregel'; INSERT INTO conn_imp_onrgoed1 ( alg_regio_omschrijving, alg_district_omschrijving, alg_locatie_code, alg_locatie_omschrijving, alg_gebouw_code, alg_gebouw_naam, alg_srtgebouw_omschrijving, alg_locatie_verantw, alg_locatie_verantw_tel, alg_locatie_adres, alg_locatie_postcode, alg_locatie_plaats, alg_locatie_land, alg_locatie_post_adres, alg_locatie_post_postcode, alg_locatie_post_plaats, alg_locatie_post_land, alg_kenmerkwaarde1, alg_kenmerkwaarde2, alg_kenmerkwaarde3, alg_kenmerkwaarde4, alg_kenmerkwaarde5, alg_kenmerkwaarde6, alg_kenmerkwaarde7, alg_kenmerkwaarde8, alg_kenmerkwaarde9, alg_kenmerkwaarde10 ) VALUES ( v_regio_omschrijving, v_district_omschrijving, v_locatie_code, v_locatie_omschrijving, v_gebouw_code, v_gebouw_naam, v_srtgebouw_omschrijving, v_locatie_verantw, v_locatie_verantw_tel, v_locatie_adres, v_locatie_postcode, v_locatie_plaats, v_locatie_land, v_locatie_post_adres, v_locatie_post_postcode, v_locatie_post_plaats, v_locatie_post_land, DECODE ( v_alg_kenmerk_key1, NULL, v_alg_kenmerkwaarde1, TO_CHAR (v_alg_kenmerk_key1) || '=' || SUBSTR (v_alg_kenmerkwaarde1, 1, 200) ), DECODE ( v_alg_kenmerk_key2, NULL, v_alg_kenmerkwaarde2, TO_CHAR (v_alg_kenmerk_key2) || '=' || SUBSTR (v_alg_kenmerkwaarde2, 1, 200) ), DECODE ( v_alg_kenmerk_key3, NULL, v_alg_kenmerkwaarde3, TO_CHAR (v_alg_kenmerk_key3) || '=' || SUBSTR (v_alg_kenmerkwaarde3, 1, 200) ), DECODE ( v_alg_kenmerk_key4, NULL, v_alg_kenmerkwaarde4, TO_CHAR (v_alg_kenmerk_key4) || '=' || SUBSTR (v_alg_kenmerkwaarde4, 1, 200) ), DECODE ( v_alg_kenmerk_key5, NULL, v_alg_kenmerkwaarde5, TO_CHAR (v_alg_kenmerk_key5) || '=' || SUBSTR (v_alg_kenmerkwaarde5, 1, 200) ), DECODE ( v_alg_kenmerk_key6, NULL, v_alg_kenmerkwaarde6, TO_CHAR (v_alg_kenmerk_key6) || '=' || SUBSTR (v_alg_kenmerkwaarde6, 1, 200) ), DECODE ( v_alg_kenmerk_key7, NULL, v_alg_kenmerkwaarde7, TO_CHAR (v_alg_kenmerk_key7) || '=' || SUBSTR (v_alg_kenmerkwaarde7, 1, 200) ), DECODE ( v_alg_kenmerk_key8, NULL, v_alg_kenmerkwaarde8, TO_CHAR (v_alg_kenmerk_key8) || '=' || SUBSTR (v_alg_kenmerkwaarde8, 1, 200) ), DECODE ( v_alg_kenmerk_key9, NULL, v_alg_kenmerkwaarde9, TO_CHAR (v_alg_kenmerk_key9) || '=' || SUBSTR (v_alg_kenmerkwaarde9, 1, 200) ), DECODE ( v_alg_kenmerk_key10, NULL, v_alg_kenmerkwaarde10, TO_CHAR (v_alg_kenmerk_key10) || '=' || SUBSTR (v_alg_kenmerkwaarde10, 1, 200) ) ); COMMIT; v_count_imp := v_count_imp + 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', 'Locatie-Gebouw/#ingelezen regels: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog ( p_import_key, 'S', 'Locatie-Gebouw/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '' ); 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 locaties/gebouwen afgebroken!'); END conn_import_onrgoed1; / /* Formatted on 9-7-2013 11:48:12 (QP5 v5.115.810.9015) */ CREATE OR REPLACE PROCEDURE conn_update_onrgoed1 (p_import_key IN NUMBER) IS v_errormsg VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_count_tot NUMBER (10); v_count_new NUMBER (10); v_count_upd NUMBER (10); v_count NUMBER (10); v_regio_key NUMBER (10); v_district_key NUMBER (10); v_locatie_key NUMBER (10); v_srtgebouw_key NUMBER (10); v_gebouw_key NUMBER (10); v_srtnoti_code VARCHAR2 (6); CURSOR cRegio -- Regioomschrijving uniek! IS SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving FROM conn_imp_onrgoed1 GROUP BY UPPER (alg_regio_omschrijving) ORDER BY 1; CURSOR cDistrict -- Districtomschrijving uniek binnen regio! IS SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving, MIN (alg_district_omschrijving) alg_district_omschrijving FROM conn_imp_onrgoed1 GROUP BY UPPER (alg_regio_omschrijving), UPPER (alg_district_omschrijving) ORDER BY 1, 2; CURSOR cLocatie -- Locatiecode uniek (omschrijving niet)! IS SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving, MIN (alg_district_omschrijving) alg_district_omschrijving, MIN (alg_locatie_code) alg_locatie_code, MIN (alg_locatie_omschrijving) alg_locatie_omschrijving, MIN (alg_locatie_verantw) alg_locatie_verantw, MIN (alg_locatie_verantw_tel) alg_locatie_verantw_tel, MIN (alg_locatie_adres) alg_locatie_adres, MIN (alg_locatie_postcode) alg_locatie_postcode, MIN (alg_locatie_plaats) alg_locatie_plaats, MIN (alg_locatie_land) alg_locatie_land, MIN (alg_locatie_post_adres) alg_locatie_post_adres, MIN (alg_locatie_post_postcode) alg_locatie_post_postcode, MIN (alg_locatie_post_plaats) alg_locatie_post_plaats, MIN (alg_locatie_post_land) alg_locatie_post_land, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde1, 1, INSTR (alg_kenmerkwaarde1, '=') - 1))) kenmerk_key1, MIN(SUBSTR (alg_kenmerkwaarde1, INSTR (alg_kenmerkwaarde1, '=') + 1)) waarde1, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde2, 1, INSTR (alg_kenmerkwaarde2, '=') - 1))) kenmerk_key2, MIN(SUBSTR (alg_kenmerkwaarde2, INSTR (alg_kenmerkwaarde2, '=') + 1)) waarde2, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde3, 1, INSTR (alg_kenmerkwaarde3, '=') - 1))) kenmerk_key3, MIN(SUBSTR (alg_kenmerkwaarde3, INSTR (alg_kenmerkwaarde3, '=') + 1)) waarde3, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde4, 1, INSTR (alg_kenmerkwaarde4, '=') - 1))) kenmerk_key4, MIN(SUBSTR (alg_kenmerkwaarde4, INSTR (alg_kenmerkwaarde4, '=') + 1)) waarde4, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde5, 1, INSTR (alg_kenmerkwaarde5, '=') - 1))) kenmerk_key5, MIN(SUBSTR (alg_kenmerkwaarde5, INSTR (alg_kenmerkwaarde5, '=') + 1)) waarde5, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde6, 1, INSTR (alg_kenmerkwaarde6, '=') - 1))) kenmerk_key6, MIN(SUBSTR (alg_kenmerkwaarde6, INSTR (alg_kenmerkwaarde6, '=') + 1)) waarde6, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde7, 1, INSTR (alg_kenmerkwaarde7, '=') - 1))) kenmerk_key7, MIN(SUBSTR (alg_kenmerkwaarde7, INSTR (alg_kenmerkwaarde7, '=') + 1)) waarde7, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde8, 1, INSTR (alg_kenmerkwaarde8, '=') - 1))) kenmerk_key8, MIN(SUBSTR (alg_kenmerkwaarde8, INSTR (alg_kenmerkwaarde8, '=') + 1)) waarde8, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde9, 1, INSTR (alg_kenmerkwaarde9, '=') - 1))) kenmerk_key9, MIN(SUBSTR (alg_kenmerkwaarde9, INSTR (alg_kenmerkwaarde9, '=') + 1)) waarde9, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde10, 1, INSTR (alg_kenmerkwaarde10, '=') - 1))) kenmerk_key10, MIN(SUBSTR (alg_kenmerkwaarde10, INSTR (alg_kenmerkwaarde10, '=') + 1)) waarde10 FROM conn_imp_onrgoed1 GROUP BY UPPER (alg_regio_omschrijving), UPPER (alg_district_omschrijving), UPPER (alg_locatie_code) ORDER BY 1, 2, 3; CURSOR cSrtGebouw -- Gebouwfunctie uniek! IS SELECT MIN (alg_srtgebouw_omschrijving) alg_srtgebouw_omschrijving FROM conn_imp_onrgoed1 WHERE alg_srtgebouw_omschrijving IS NOT NULL GROUP BY UPPER (alg_srtgebouw_omschrijving) ORDER BY 1; CURSOR cGebouw -- Gebouwcode uniek binnen locatie (naam niet)! IS SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving, MIN (alg_district_omschrijving) alg_district_omschrijving, MIN (alg_locatie_code) alg_locatie_code, MIN (alg_gebouw_code) alg_gebouw_code, MIN (alg_gebouw_naam) alg_gebouw_naam, MIN (alg_srtgebouw_omschrijving) alg_srtgebouw_omschrijving, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde1, 1, INSTR (alg_kenmerkwaarde1, '=') - 1))) kenmerk_key1, MIN(SUBSTR (alg_kenmerkwaarde1, INSTR (alg_kenmerkwaarde1, '=') + 1)) waarde1, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde2, 1, INSTR (alg_kenmerkwaarde2, '=') - 1))) kenmerk_key2, MIN(SUBSTR (alg_kenmerkwaarde2, INSTR (alg_kenmerkwaarde2, '=') + 1)) waarde2, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde3, 1, INSTR (alg_kenmerkwaarde3, '=') - 1))) kenmerk_key3, MIN(SUBSTR (alg_kenmerkwaarde3, INSTR (alg_kenmerkwaarde3, '=') + 1)) waarde3, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde4, 1, INSTR (alg_kenmerkwaarde4, '=') - 1))) kenmerk_key4, MIN(SUBSTR (alg_kenmerkwaarde4, INSTR (alg_kenmerkwaarde4, '=') + 1)) waarde4, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde5, 1, INSTR (alg_kenmerkwaarde5, '=') - 1))) kenmerk_key5, MIN(SUBSTR (alg_kenmerkwaarde5, INSTR (alg_kenmerkwaarde5, '=') + 1)) waarde5, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde6, 1, INSTR (alg_kenmerkwaarde6, '=') - 1))) kenmerk_key6, MIN(SUBSTR (alg_kenmerkwaarde6, INSTR (alg_kenmerkwaarde6, '=') + 1)) waarde6, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde7, 1, INSTR (alg_kenmerkwaarde7, '=') - 1))) kenmerk_key7, MIN(SUBSTR (alg_kenmerkwaarde7, INSTR (alg_kenmerkwaarde7, '=') + 1)) waarde7, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde8, 1, INSTR (alg_kenmerkwaarde8, '=') - 1))) kenmerk_key8, MIN(SUBSTR (alg_kenmerkwaarde8, INSTR (alg_kenmerkwaarde8, '=') + 1)) waarde8, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde9, 1, INSTR (alg_kenmerkwaarde9, '=') - 1))) kenmerk_key9, MIN(SUBSTR (alg_kenmerkwaarde9, INSTR (alg_kenmerkwaarde9, '=') + 1)) waarde9, MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde10, 1, INSTR (alg_kenmerkwaarde10, '=') - 1))) kenmerk_key10, MIN(SUBSTR (alg_kenmerkwaarde10, INSTR (alg_kenmerkwaarde10, '=') + 1)) waarde10 FROM conn_imp_onrgoed1 GROUP BY UPPER (alg_regio_omschrijving), UPPER (alg_district_omschrijving), UPPER (alg_locatie_code), UPPER (alg_gebouw_code) ORDER BY 1, 2, 3, 4; -- SUBPROC PROCEDURE upsert_algkenmerk (p_alg_key IN NUMBER, p_alg_niv IN VARCHAR2, p_kenmerk_key IN NUMBER, p_waarde IN VARCHAR2) AS v_kenmerk_niveau VARCHAR2 (1); v_kenmerk_type VARCHAR2 (1); ccount NUMBER; v_waarde VARCHAR2 (255); v_objectnaam VARCHAR2 (30); v_kolomnaam VARCHAR2 (30); v_kolomtxt VARCHAR2 (30); sql_stmt VARCHAR2 (1000); v_onrgoedkenmerk_key NUMBER; BEGIN IF p_kenmerk_key IS NOT NULL AND p_waarde IS NOT NULL THEN v_errormsg := 'Fout bij bepalen kenmerk [' || p_kenmerk_key || ']'; SELECT alg_kenmerk_niveau, alg_kenmerk_kenmerktype INTO v_kenmerk_niveau, v_kenmerk_type FROM alg_kenmerk WHERE alg_kenmerk_verwijder IS NULL AND alg_kenmerk_key = p_kenmerk_key AND alg_kenmerk_niveau IN ('L', 'G'); IF (v_kenmerk_niveau = p_alg_niv) -- Alleen op juiste niveau doen! THEN IF v_kenmerk_type IN ('R', 'S') THEN v_errormsg := 'Fout bij bepalen eigen tabel'; SELECT COUNT ( * ) INTO ccount FROM alg_kenmerk k, fac_kenmerkdomein d WHERE k.alg_kenmerk_key = p_kenmerk_key AND k.alg_kenmerk_niveau = p_alg_niv AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key AND d.fac_usrtab_key IS NOT NULL; v_errormsg := 'Fout bij bepalen nieuwe waarde [' || p_waarde || ']'; IF ccount = 1 THEN -- Eigen tabel SELECT TO_CHAR (ud.fac_usrdata_key) INTO v_waarde FROM alg_kenmerk k, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud WHERE k.alg_kenmerk_key = p_kenmerk_key AND k.alg_kenmerk_niveau = p_alg_niv AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key AND d.fac_usrtab_key = ud.fac_usrtab_key AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (p_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 alg_kenmerk k, fac_kenmerkdomein d WHERE k.alg_kenmerk_key = p_kenmerk_key AND k.alg_kenmerk_niveau = p_alg_niv AND k.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 (''' || p_waarde || ''')'; EXECUTE IMMEDIATE sql_stmt INTO v_waarde; END IF; ELSE -- C(haracter)/D(ate)/N(umeric) v_waarde := p_waarde; END IF; v_errormsg := 'Fout bij bepalen huidige waarde'; SELECT COUNT ( * ), MAX (alg_onrgoedkenmerk_key) INTO ccount, v_onrgoedkenmerk_key FROM alg_v_aanwezigonrgoedkenmerk WHERE alg_onrgoed_key = p_alg_key AND alg_onrgoed_niveau = p_alg_niv AND alg_kenmerk_key = p_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout bij toevoegen waarde [' || v_waarde || ']'; INSERT INTO alg_onrgoedkenmerk (alg_onrgoed_key, alg_onrgoed_niveau, alg_kenmerk_key, alg_onrgoedkenmerk_waarde) VALUES (p_alg_key, p_alg_niv, p_kenmerk_key, v_waarde); ELSE v_errormsg := 'Fout bij bijwerken waarde [' || v_waarde || ']'; UPDATE alg_onrgoedkenmerk SET alg_onrgoedkenmerk_waarde = v_waarde WHERE alg_onrgoedkenmerk_key = v_onrgoedkenmerk_key; END IF; END IF; END IF; 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, 'upsert_algkenmerk'); END; BEGIN -- *********** -- ***REGIO*** -- *********** v_count_tot := 0; v_count_new := 0; FOR recRegio IN cRegio LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := '[' || recRegio.alg_regio_omschrijving || '] '; v_errormsg := 'Fout bij toevoegen regio'; SELECT COUNT ( * ) INTO v_count FROM alg_v_aanwezigregio WHERE TRIM (alg_regio_upper) = UPPER (recRegio.alg_regio_omschrijving); IF (v_count = 0) THEN INSERT INTO alg_regio (alg_regio_omschrijving) VALUES (recRegio.alg_regio_omschrijving); v_count_new := v_count_new + 1; END IF; 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', 'Regio/#ingelezen: ' || TO_CHAR (v_count_tot), ''); fac.imp_writelog (p_import_key, 'S', 'Regio/#toegevoegd: ' || TO_CHAR (v_count_new), ''); COMMIT; -- ************** -- ***DISTRICT*** -- ************** v_count_tot := 0; v_count_new := 0; FOR recDistrict IN cDistrict LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := '[' || recDistrict.alg_regio_omschrijving || '|' || recDistrict.alg_district_omschrijving || '] '; v_errormsg := 'Fout bij bepalen regio'; SELECT alg_regio_key INTO v_regio_key FROM alg_v_aanwezigregio WHERE alg_regio_upper = UPPER (recDistrict.alg_regio_omschrijving); v_errormsg := 'Fout bij toevoegen district'; SELECT COUNT ( * ) INTO v_count FROM alg_v_aanwezigdistrict WHERE alg_regio_key = v_regio_key AND TRIM (alg_district_upper) = UPPER (recDistrict.alg_district_omschrijving); IF (v_count = 0) THEN INSERT INTO alg_district ( alg_regio_key, alg_district_omschrijving ) VALUES (v_regio_key, recDistrict.alg_district_omschrijving); v_count_new := v_count_new + 1; END IF; 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', 'District/#ingelezen: ' || TO_CHAR (v_count_tot), ''); fac.imp_writelog (p_import_key, 'S', 'District/#toegevoegd: ' || TO_CHAR (v_count_new), ''); COMMIT; -- ************** -- ***LOCATIE**** -- ************** v_count_tot := 0; v_count_new := 0; v_count_upd := 0; FOR recLocatie IN cLocatie LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := '[' || recLocatie.alg_regio_omschrijving || '|' || recLocatie.alg_district_omschrijving || '|' || recLocatie.alg_locatie_code || '] '; v_errormsg := 'Fout bij bepalen regio'; SELECT alg_regio_key INTO v_regio_key FROM alg_v_aanwezigregio WHERE alg_regio_upper = UPPER (recLocatie.alg_regio_omschrijving); v_errormsg := 'Fout bij bepalen district'; SELECT alg_district_key INTO v_district_key FROM alg_v_aanwezigdistrict WHERE alg_regio_key = v_regio_key AND TRIM (alg_district_upper) = UPPER (recLocatie.alg_district_omschrijving); v_errormsg := 'Fout bij toevoegen locatie'; SELECT COUNT ( * ) INTO v_count FROM alg_v_aanweziglocatie WHERE alg_district_key = v_district_key AND UPPER (alg_locatie_code) = UPPER (recLocatie.alg_locatie_code); IF (v_count = 0) THEN INSERT INTO alg_locatie (alg_district_key, alg_locatie_code, alg_locatie_omschrijving, alg_locatie_verantw, alg_locatie_verantw_tel, alg_locatie_adres, alg_locatie_postcode, alg_locatie_plaats, alg_locatie_land, alg_locatie_post_adres, alg_locatie_post_postcode, alg_locatie_post_plaats, alg_locatie_post_land) VALUES (v_district_key, recLocatie.alg_locatie_code, recLocatie.alg_locatie_omschrijving, recLocatie.alg_locatie_verantw, recLocatie.alg_locatie_verantw_tel, recLocatie.alg_locatie_adres, recLocatie.alg_locatie_postcode, recLocatie.alg_locatie_plaats, recLocatie.alg_locatie_land, recLocatie.alg_locatie_post_adres, recLocatie.alg_locatie_post_postcode, recLocatie.alg_locatie_post_plaats, recLocatie.alg_locatie_post_land) RETURNING alg_locatie_key INTO v_locatie_key; v_srtnoti_code := 'ALGLNE'; v_count_new := v_count_new + 1; ELSE -- bijwerken object! v_errormsg := 'Fout bij bepalen locatie'; SELECT alg_locatie_key INTO v_locatie_key FROM alg_v_aanweziglocatie WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (recLocatie.alg_locatie_code); v_srtnoti_code := 'ALGLUP'; v_count_upd := v_count_upd + 1; END IF; -- NULL-waarden resulteren NIET in het wissen van kenmerkvelden -- (bijwerken kan wel, maar wissen dus niet)! upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key1, recLocatie.waarde1); upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key2, recLocatie.waarde2); upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key3, recLocatie.waarde3); upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key4, recLocatie.waarde4); upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key5, recLocatie.waarde5); upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key6, recLocatie.waarde6); upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key7, recLocatie.waarde7); upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key8, recLocatie.waarde8); upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key9, recLocatie.waarde9); upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key10, recLocatie.waarde10); fac.trackaction (v_srtnoti_code, v_locatie_key, NULL, NULL, NULL); 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, 'W', v_aanduiding || v_errormsg, ''); COMMIT; END; END LOOP; fac.imp_writelog (p_import_key, 'S', 'Locatie/#ingelezen: ' || TO_CHAR (v_count_tot), ''); fac.imp_writelog (p_import_key, 'S', 'Locatie/#toegevoegd: ' || TO_CHAR (v_count_new), ''); fac.imp_writelog (p_import_key, 'S', 'Locatie/#bijgewerkt: ' || TO_CHAR (v_count_upd), ''); COMMIT; -- ******************** -- ***GEBOUWFUNCTIE**** -- ******************** v_count_tot := 0; v_count_new := 0; FOR recSrtGebouw IN cSrtGebouw LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := '[' || recSrtGebouw.alg_srtgebouw_omschrijving || '] '; v_errormsg := 'Fout bij toevoegen gebouwfunctie'; SELECT COUNT ( * ) INTO v_count FROM alg_v_aanwezigsrtgebouw WHERE TRIM (alg_srtgebouw_upper) = UPPER (recSrtGebouw.alg_srtgebouw_omschrijving); IF (v_count = 0) THEN INSERT INTO alg_srtgebouw (alg_srtgebouw_omschrijving) VALUES (recSrtGebouw.alg_srtgebouw_omschrijving); v_count_new := v_count_new + 1; END IF; 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', 'Gebouwfunctie/#ingelezen: ' || TO_CHAR (v_count_tot), ''); fac.imp_writelog (p_import_key, 'S', 'Gebouwfunctie/#toegevoegd: ' || TO_CHAR (v_count_new), ''); COMMIT; -- ************ -- ***GEBOUW*** -- ************ v_count_tot := 0; v_count_new := 0; v_count_upd := 0; FOR recGebouw IN cGebouw LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := '[' || recGebouw.alg_regio_omschrijving || '|' || recGebouw.alg_district_omschrijving || '|' || recGebouw.alg_locatie_code || '|' || recGebouw.alg_gebouw_code || '] '; v_errormsg := 'Fout bij bepalen regio'; SELECT alg_regio_key INTO v_regio_key FROM alg_v_aanwezigregio WHERE alg_regio_upper = UPPER (recGebouw.alg_regio_omschrijving); v_errormsg := 'Fout bij bepalen district'; SELECT alg_district_key INTO v_district_key FROM alg_v_aanwezigdistrict WHERE alg_regio_key = v_regio_key AND TRIM (alg_district_upper) = UPPER (recGebouw.alg_district_omschrijving); v_errormsg := 'Fout bij bepalen locatie'; SELECT alg_locatie_key INTO v_locatie_key FROM alg_v_aanweziglocatie WHERE alg_district_key = v_district_key AND UPPER (TRIM (alg_locatie_code)) = UPPER (recGebouw.alg_locatie_code); IF (recGebouw.alg_srtgebouw_omschrijving IS NOT NULL) THEN v_errormsg := 'Fout bij bepalen gebouwfunctie'; SELECT alg_srtgebouw_key INTO v_srtgebouw_key FROM alg_v_aanwezigsrtgebouw WHERE TRIM (alg_srtgebouw_upper) = UPPER (recGebouw.alg_srtgebouw_omschrijving); END IF; v_errormsg := 'Fout bij toevoegen gebouw'; SELECT COUNT ( * ) INTO v_count FROM alg_v_aanweziggebouw WHERE alg_locatie_key = v_locatie_key AND UPPER (TRIM (alg_gebouw_code)) = UPPER (recGebouw.alg_gebouw_code); IF (v_count = 0) THEN INSERT INTO alg_gebouw (alg_locatie_key, alg_gebouw_code, alg_gebouw_naam, alg_srtgebouw_key) VALUES (v_locatie_key, recGebouw.alg_gebouw_code, recGebouw.alg_gebouw_naam, v_srtgebouw_key) RETURNING alg_gebouw_key INTO v_gebouw_key; v_srtnoti_code := 'ALGGNE'; v_count_new := v_count_new + 1; ELSE -- bijwerken object! v_errormsg := 'Fout bij bepalen gebouw'; SELECT alg_gebouw_key INTO v_gebouw_key FROM alg_v_aanweziggebouw WHERE alg_locatie_key = v_locatie_key AND UPPER (TRIM (alg_gebouw_code)) = UPPER (recGebouw.alg_gebouw_code); v_srtnoti_code := 'ALGGUP'; v_count_upd := v_count_upd + 1; END IF; -- NULL-waarden resulteren NIET in het wissen van kenmerkvelden -- (bijwerken kan wel, maar wissen dus niet)! upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key1, recGebouw.waarde1); upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key2, recGebouw.waarde2); upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key3, recGebouw.waarde3); upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key4, recGebouw.waarde4); upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key5, recGebouw.waarde5); upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key6, recGebouw.waarde6); upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key7, recGebouw.waarde7); upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key8, recGebouw.waarde8); upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key9, recGebouw.waarde9); upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key10, recGebouw.waarde10); fac.trackaction (v_srtnoti_code, v_gebouw_key, NULL, NULL, NULL); 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, 'W', v_aanduiding || v_errormsg, ''); COMMIT; END; END LOOP; fac.imp_writelog (p_import_key, 'S', 'Gebouw/#ingelezen: ' || TO_CHAR (v_count_tot), ''); fac.imp_writelog (p_import_key, 'S', 'Gebouw/#toegevoegd: ' || TO_CHAR (v_count_new), ''); fac.imp_writelog (p_import_key, 'S', 'Gebouw/#bijgewerkt: ' || TO_CHAR (v_count_upd), ''); 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_errormsg, 'Importproces locaties/gebouwen afgebroken!'); END conn_update_onrgoed1; / -- BASW-export; eporteer de afgemelde opdrachten (sinds de laatste keer) en -- markeer deze vervolgens als 'ORDAFM-doorgezet' (= hidden kenmerk)! /* Formatted on 26-4-2012 11:32:24 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW conn_v_export_ordafm_xml (RESULT, result_order) AS SELECT fac_rapport_regel, fac_rapport_volgnr FROM fac_rapport WHERE fac_rapport_node = SUBSTR ('ORDAFM_XML', 1, 12); /* Formatted on 27-4-2012 15:12:24 (QP5 v5.115.810.9015) */ CREATE OR REPLACE PROCEDURE conn_select_ordafm_xml (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS -- Cursor loopt over een tijdelijke tabel met daarin opgebouwd alle gegevens -- van de te exporteren afgemelde Uitvoering-opdrachten (opdrachttype = 5). CURSOR c1 IS SELECT opdr.mld_opdr_key, opdr.mld_kenmerk_key, opdr.mld_key || '/' || opdr.volgnr opdrachtnr, TO_CHAR (ordafdm.fac_tracking_datum, 'dd-mm-yyyy hh24:mi:ss') afmelddatum FROM (SELECT o.mld_opdr_key, k.mld_kenmerk_key, o.mld_melding_key mld_key, o.mld_opdr_bedrijfopdr_volgnr volgnr FROM mld_opdr o, mld_kenmerk k WHERE o.mld_statusopdr_key = 6 -- Afgemeld AND o.mld_typeopdr_key = 5 -- Uitvoering AND o.mld_typeopdr_key = k.mld_typeopdr_key AND k.mld_srtkenmerk_key = 1111 AND NOT EXISTS (SELECT 1 FROM mld_kenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 1111)) opdr LEFT JOIN fac_tracking ordafdm ON opdr.mld_opdr_key = ordafdm.fac_tracking_refkey AND ordafdm.fac_srtnotificatie_key = 26 ORDER BY 1, 2; c_ordafm2bw_srtkenmerk_key NUMBER (10) := 1111; -- Aangemaakt met CONN52! v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_rownr NUMBER; v_count NUMBER; PROCEDURE add_row (p_regel IN VARCHAR2) AS BEGIN INSERT INTO fac_rapport ( fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel ) VALUES (SUBSTR (p_applname, 1, 12), v_rownr, p_regel); v_rownr := v_rownr + 1; END; PROCEDURE add_element (p_tag IN VARCHAR2, p_value IN VARCHAR2) AS BEGIN add_row( '<' || p_tag || '>' || xml.char_to_html (p_value) || ''); END; BEGIN v_rownr := 0; DELETE fac_rapport WHERE fac_rapport_node = SUBSTR (p_applname, 1, 12); COMMIT; SELECT COUNT ( * ) INTO v_count FROM mld_opdr o WHERE mld_statusopdr_key = 6 -- Afgemeld AND o.mld_typeopdr_key = 5 -- Uitvoering AND NOT EXISTS (SELECT 1 FROM mld_kenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = c_ordafm2bw_srtkenmerk_key); IF (v_count > 0) THEN -- header add_row ( '' ); add_row (''); add_row (''); FOR rec IN c1 LOOP BEGIN add_row( ''); add_element ('afmelddatum', rec.afmelddatum); add_row (''); -- Markeer opdracht als 'ORDAFM-doorgezet'! INSERT INTO mld_kenmerkopdr ( mld_opdr_key, mld_kenmerk_key, mld_kenmerkopdr_waarde ) VALUES (rec.mld_opdr_key, rec.mld_kenmerk_key, '1'); COMMIT; END; END LOOP; add_row (''); add_row (''); END IF; fac.writelog (p_applname, 'S', 'Aantal opdrachten afgemeld: ' || TO_CHAR (v_count), ''); 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.writelog (p_applname, 'E', 'ORDAFM_XML-export afgebroken!', v_errormsg); COMMIT; END; / CREATE OR REPLACE PROCEDURE conn_daily AS v_volgnr NUMBER; BEGIN -- Anonymizeren van bezoekers (na 3 maanden) en personen (na 12 maanden) SELECT COALESCE(MAX(fac_rapport_volgnr),0) INTO v_volgnr FROM fac_rapport WHERE fac_rapport_node = 'Anonymize'; v_volgnr := v_volgnr + 1; IF TO_CHAR (SYSDATE, 'DD') = '01' THEN BEGIN ANO.anonymizebez (add_months(trunc(SYSDATE), -4), add_months(trunc(SYSDATE), -3)); INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES('Anonymize', v_volgnr, 'Bezoekers geanonymizeerd ' || to_char(add_months(TRUNC(SYSDATE), -4), 'dd-mm-yyyy hh24:mi:ss') || ' - ' || to_char(add_months(TRUNC(SYSDATE), -3), 'dd-mm-yyyy hh24:mi:ss')); EXCEPTION WHEN OTHERS THEN INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES('Anonymize', v_volgnr, 'Error: Fout opgetreden bij het anonymizeren van bezoekers ' || to_char(add_months(TRUNC(SYSDATE), -4), 'dd-mm-yyyy hh24:mi:ss') || ' - ' || to_char(add_months(TRUNC(SYSDATE), -3), 'dd-mm-yyyy hh24:mi:ss')); END; END IF; END; / -- Notificatie naar bezoekers op de dag van het bezoek CREATE OR REPLACE VIEW conn_v_noti_bezoeker AS SELECT NULL sender, NULL receiver, 'Uw bezoek aan Transdev op ' || TO_CHAR (bez_afspraak_datum, 'DD-MM-YYYY') || ' , ' || TO_CHAR (bez_afspraak_datum, 'HH24:MI') text, 'CUST04' code, a.bez_afspraak_key key, bez_bezoekers_key xkey, bez_bezoekers_email xemail, NULL xmobile, a.bez_afspraak_datum FROM bez_afspraak a, bez_bezoekers b WHERE a.bez_afspraak_key = b.bez_afspraak_key AND TRUNC(a.bez_afspraak_datum) = TRUNC(SYSDATE) AND b.bez_bezoekers_email IS NOT NULL AND NOT EXISTS (SELECT 1 FROM fac_tracking t WHERE t.fac_srtnotificatie_key =405 AND t.fac_tracking_refkey = a.bez_afspraak_key AND t.fac_tracking_oms LIKE '%CUST04%'); -- Notificatie op dag van aanmaak van de afspraak CREATE OR REPLACE VIEW conn_v_noti_bez_aanmaak AS SELECT NULL sender, NULL receiver, 'Uw bezoek aan Transdev op ' || TO_CHAR (bez_afspraak_datum, 'DD-MM-YYYY') || ' , ' || TO_CHAR (bez_afspraak_datum, 'HH24:MI') text, 'CUST03' code, a.bez_afspraak_key key, bez_bezoekers_key xkey, bez_bezoekers_email xemail, NULL xmobile, a.bez_afspraak_datum FROM bez_afspraak a, bez_bezoekers b WHERE a.bez_afspraak_key = b.bez_afspraak_key AND TRUNC(a.bez_afspraak_datum) = TRUNC(SYSDATE) AND b.bez_bezoekers_email IS NOT NULL AND NOT EXISTS (SELECT 1 FROM fac_tracking t WHERE t.fac_srtnotificatie_key = 405 AND t.fac_tracking_refkey = a.bez_afspraak_key AND t.fac_tracking_oms LIKE '%CUST03%'); CREATE OR REPLACE VIEW conn_v_noti_coupa_fout AS SELECT NULL sender, receiver, 'Opdracht '||opdr_nr ||' is op '|| TO_CHAR(tracking_datum, 'DD-MM-YYYY') ||' om '|| TO_CHAR(tracking_datum, 'HH24:MI') ||' niet succesvol verstuurd naar Coupa.' text, 'CUST05' code, opdr_key key, NULL xkey, NULL xemail, NULL xmobile FROM (SELECT o.mld_opdr_key opdr_key, o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr opdr_nr, p.prs_perslid_email receiver, f.fac_tracking_oms, MAX(f.fac_tracking_datum) tracking_datum FROM mld_opdr o , fac_tracking f, fac_srtnotificatie fs, prs_perslid p WHERE f.fac_tracking_refkey = o.MLD_OPDR_KEY AND fs.fac_srtnotificatie_code='ORDSNX' AND f.fac_srtnotificatie_key=fs.fac_srtnotificatie_key AND f.fac_tracking_oms like 'COUPA_FAIL:%' AND f.fac_srtnotificatie_key=fs.fac_srtnotificatie_key AND p.prs_perslid_key= o.prs_perslid_key AND fac_tracking_datum > (SYSDATE-1) AND NOT EXISTS (SELECT 1 FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND t.fac_tracking_refkey = o.mld_opdr_key AND fac_srtnotificatie_code = 'CUST05' AND o.mld_opdr_datumbegin < fac_tracking_datum) GROUP BY o.mld_opdr_key,o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr,p.prs_perslid_email , f.fac_tracking_oms); -- View die voor die opdrachten die gereed gezet zijn voor export naar coupa -- met aanvraagnr en InkoopNr. CREATE OR REPLACE VIEW conn_v_coupa_rapport AS SELECT o.mld_melding_key opdrachtnr, o.mld_opdr_bedrijfopdr_volgnr volgnr, o.mld_opdr_key opdr_key, (SELECT p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p WHERE p.prs_perslid_key=o.prs_perslid_key) aanvrager, (SELECT ko2.mld_kenmerkopdr_waarde FROM mld_kenmerkopdr ko2 WHERE ko2.mld_opdr_key = o.mld_opdr_key AND ko2.mld_kenmerk_key=2661) aanvraagnr, (SELECT ko1.mld_kenmerkopdr_waarde FROM mld_kenmerkopdr ko1 WHERE ko1.mld_opdr_key = o.mld_opdr_key AND ko1.mld_kenmerk_key=2681) inkoopnr, o.mld_opdr_datumbegin opd_datumbegin, (SELECT ft.fac_tracking_datum FROM fac_tracking ft WHERE ft.fac_srtnotificatie_key=111 AND lower(ft.fac_tracking_oms)='opdracht in bestand klaargezet' AND ft.fac_tracking_refkey=o.mld_opdr_key) datum_verstuurd FROM mld_opdr o, mld_kenmerkopdr ko WHERE o.mld_statusopdr_key=5 AND ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key=2661 AND ko.mld_kenmerkopdr_waarde IS NOT NULL; CREATE OR REPLACE VIEW conn_v_coupa_exp_error ( opdr_key, melding, melder, omschrijving, track_datum, opdr_datum) AS SELECT DISTINCT o.mld_opdr_key, o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr, (SELECT p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p WHERE p.prs_perslid_key=o.prs_perslid_key) aanvrager, ft.fac_tracking_oms, ft.fac_tracking_datum, o.mld_opdr_datumbegin FROM mld_opdr o, fac_tracking ft WHERE ft.fac_tracking_refkey=o.mld_opdr_key AND ft.fac_srtnotificatie_key=247 AND (upper(ft.fac_tracking_oms) like 'COUPA_FAIL%' OR upper(ft.fac_tracking_oms) like '%COUPA ERROR%'); CREATE OR REPLACE VIEW conn_v_coupa_select AS SELECT op.mld_opdr_key opdr_key, op.mld_melding_key, op.mld_opdr_bedrijfopdr_volgnr, op.mld_opdr_kosten kosten, op.mld_opdr_datumbegin begindatum, op.mld_opdr_einddatum einddatum, afd.prs_afdeling_omschrijving||'('||afd.prs_afdeling_naam||')' department, prs.prs_perslid_email userEmail, prs.prs_perslid_oslogin userLogin, 'HV'||loc.alg_locatie_code locationCode, 'ST'||op.mld_melding_key||'/'||op.mld_opdr_bedrijfopdr_volgnr facilitorKey, ks.prs_kostensoort_oms ks_omschrijving, ks.prs_kostensoort_opmerking ks_opmerking, k.prs_kostenplaats_nr kostenplaats, pbd.prs_leverancier_nr levNr, mld.mld_melding_omschrijving mld_omschr, op.mld_opdr_omschrijving opdr_omschr FROM mld_opdr op, mld_melding mld, mld_stdmelding smld, alg_locatie loc, prs_bedrijf pbd, prs_perslid prs, prs_afdeling afd, prs_kostenplaats k, PRS_KOSTENSOORT ks WHERE op.mld_statusopdr_key=8 -- welke status moet een opdarcht hebben om hem naar Coupa te exporteren ? AND pbd.prs_bedrijf_key = op.mld_uitvoerende_keys AND prs.prs_perslid_key = op.prs_perslid_key AND mld.mld_melding_key=op.mld_melding_key AND smld.MLD_STDMELDING_KEY = mld.MLD_STDMELDING_KEY AND loc.alg_locatie_key = mld.mld_alg_locatie_key AND afd.prs_afdeling_key=prs.prs_afdeling_key AND smld.prs_kostensoort_key = ks.prs_kostensoort_key AND op.prs_kostenplaats_key = k.prs_kostenplaats_key; CREATE OR REPLACE PROCEDURE conn_select_coupa_export(p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS CURSOR sel_opd IS SELECT opdr_key, kosten, begindatum , einddatum, department, userEmail, userLogin, locationcode, facilitorkey, levNr, opdr_omschr, mld_omschr, ks_omschrijving, ks_opmerking, kostenplaats FROM conn_v_coupa_select; v_req VARCHAR2(1000); v_reqLine VARCHAR2(1000); v_reqHeader VARCHAR2(1000); v_reqLineHeader VARCHAR2(1000); v_counter NUMBER; v_regel NUMBER; v_base VARCHAR2(10); BEGIN v_reqHeader := 'Requisition,Record Identifier,Submit For Approval?,Need By Date,Justification,Department Name,Buyer Note,Requested By (Email),Requested By (Login),PCard Name,Ship To Name,Ship To Id,Ship To Attention,Ship To Street 1,Ship To Street 2,Ship To City,Ship To State,Ship To Postal Code,Ship to Country/Region Code,Ship to Country/Region Name,Ship to Location Code,Hide Price,Facilitor referentie,,,,,,,,,'; v_reqLineheader := 'Requisition Line,Record Identifier,Line Number,Catalogue Item Number,Catalogue Item Name,Non Catalogue Item Description,Supplier Part Number,Supplier Aux Part Number,Quantity,Price,Need By Date,Transmission Method Override,Transmission Emails,Supplier Name,Supplier Number,Supplier Site Code,UOM Code,Commodity Name,Contract Name,Currency Code,Asset Tags,Chart of Account Name,Account Name,Account Code,Account Segment 1,Account Segment 2,Account Segment 3,Account Segment 4,Payment Term Code,Shipping Term Code,Budget Period Name,Uitgebreide omschrijving #'; v_counter:=1; v_regel :=1; v_base:='CPA_EXP-'; DELETE FROM fac_rapport WHERE fac_rapport_node LIKE 'CPA_EXP-%'; COMMIT; FOR rec IN sel_opd LOOP BEGIN v_req := 'Requestion,'||rec.opdr_key||',Yes,'||TO_CHAR(rec.begindatum,'DD-MM-YYYY')||',,'||rec.department||',,'||rec.userEmail||','||rec.userLogin||',,,,,,,,,,,,'||rec.locationcode||',,'||rec.facilitorkey; v_reqLine := 'RequisitionLine,'||rec.opdr_key||',1,,,'||conn.quote(SUBSTR(REPLACE(REPLACE(rec.mld_omschr, CHR(13), ''), CHR(10), ''),0,250))||',,,,'||rec.kosten||','||TO_CHAR(rec.einddatum,'DD-MM-YYYY')||',,,,'||rec.levNr||',,,'||rec.ks_opmerking||',,EUR,,Connexxion Nederland NV (XX-01 ),,,'||rec.kostenplaats ||',81999,'||rec.ks_omschrijving||',,,,,'||conn.quote(SUBSTR(REPLACE(REPLACE(rec.opdr_omschr, CHR(13), ''), CHR(10), ''),0,250)); INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES (v_base||v_counter||'-', v_regel, v_reqHeader); v_regel:=v_regel+1; INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES (v_base||v_counter||'-', v_regel, v_reqLineHeader); v_regel:=v_regel+1; INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES (v_base||v_counter||'-', v_regel, v_req); v_regel:=v_regel+1; INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES (v_base||v_counter||'-', v_regel, v_reqLine); v_regel := v_regel + 1; v_counter := v_counter +1; END; END LOOP; COMMIT; END; / CREATE OR REPLACE VIEW CONN_V_EXPORT_COUPA_EXPORT ( result, result_order, exp_cpa ) AS SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node FROM fac_rapport WHERE fac_rapport_node LIKE 'CPA_EXP%'; CREATE OR REPLACE VIEW conn_v_coupa_bijlages AS SELECT o.mld_opdr_key, o.mld_opdr_externsyncdate extern_syncdate, (SELECT ko.mld_kenmerkopdr_waarde FROM mld_kenmerkopdr ko WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key=2661 -- A=2701 P=2661 AND ko.mld_kenmerkopdr_waarde IS NOT NULL) coupa_id, fb.fac_bijlagen_filename bestand, fb.fac_bijlagen_disk_directory path, fb.fac_bijlagen_aanmaak bijlage_aanmaak FROM mld_opdr o, fac_v_bijlagen fb WHERE fb.fac_bijlagen_refkey=o.mld_opdr_key AND o.mld_statusopdr_key IN (4,5) AND fb.fac_bijlagen_kenmerk_key=2663 -- A=2722 P=2663 AND fb.fac_bijlagen_module='MLD'; CREATE OR REPLACE VIEW conn_v_noti_jrremind (code, sender, receiver, text, key, par1, par2, xkey, xemail, xmobile, fac_srtnotificatie_key, attachments, xsender, prs_bedrijfadres_key) AS SELECT '', '', c.prs_perslid_key_beh, 'Jaarlijkse Rappelering: Contract ' || c.cnt_contract_nummer_intern||DECODE(c.cnt_contract_versie, NULL, '', '.'||c.cnt_contract_versie) || ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')' || ' moet uiterlijk per ' || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'DD-MM-YYYY') || ' worden verlengd of opgezegd.', c.cnt_contract_key, c.cnt_contract_nummer_intern, cnt.cnt_getopzegdatum (c.cnt_contract_key), NULL , NULL xemail , NULL xmobile , NULL fac_srtnotificatie_key , NULL attachments , NULL xsender , NULL prs_bedrijfadres_key FROM cnt_contract c , cnt_kenmerkcontract ken, prs_bedrijf b WHERE c.cnt_contract_verwijder is null AND c.cnt_contract_status = 0 AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND TRUNC(c.cnt_contract_looptijd_van) < TRUNC(SYSDATE) AND TRUNC(c.cnt_contract_looptijd_tot) > TRUNC(SYSDATE) AND TO_CHAR(c.cnt_contract_looptijd_tot,'DDMM') = TO_CHAR(SYSDATE, 'DDMM') AND ken.cnt_contract_key = c.cnt_contract_key AND FAC.safe_to_number(ken.cnt_kenmerkcontract_waarde) = 129 AND ken.cnt_kenmerk_key IN (SELECT cnt_kenmerk_key FROM cnt_kenmerk where UPPER(cnt_kenmerk_omschrijving)='JAARLIJKSE RAPPELERING') AND c.cnt_contract_key NOT IN ( SELECT key FROM fac_v_noti_cntreminder); -- View tbv van die contracten die bankgarantie hebben en de contracte afgesloten zijn. CREATE OR REPLACE VIEW conn_v_noti_bgremind (code, sender, receiver, text, key, par1, par2, xkey, xemail, xmobile, fac_srtnotificatie_key, attachments, xsender, prs_bedrijfadres_key) AS SELECT '', '', c.prs_perslid_key_beh, 'Bankgarantie melding van afgelopen contracten: Voor contract ' || c.cnt_contract_nummer_intern||DECODE(c.cnt_contract_versie, NULL, '', '.'||c.cnt_contract_versie) || ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')' || ' is een bankgarantie afgegeven door ' || (SELECT kc.cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc WHERE kc.cnt_kenmerk_key=523 AND kc.CNT_CONTRACT_KEY=c.cnt_contract_key) || ' en deze moet worden opgezegt.', c.cnt_contract_key, c.cnt_contract_nummer_intern, cnt.cnt_getopzegdatum (c.cnt_contract_key), NULL , NULL xemail , NULL xmobile , NULL fac_srtnotificatie_key , NULL attachments , NULL xsender , NULL prs_bedrijfadres_key FROM cnt_contract c , cnt_kenmerkcontract ken, prs_bedrijf b WHERE c.cnt_contract_verwijder is null AND c.cnt_contract_status = 0 -- contract is gesloten AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND ken.cnt_contract_key = c.cnt_contract_key AND FAC.safe_to_number(ken.cnt_kenmerkcontract_waarde) = 129 -- voor dit contract is een bankgaantie afgegeven AND ken.cnt_kenmerk_key IN (SELECT cnt_kenmerk_key FROM cnt_kenmerk where UPPER(cnt_kenmerk_omschrijving)='BANKGARANTIE AFGEGEVEN'); CREATE OR REPLACE VIEW conn_v_rayonmanager ( prs_perslid_key, prs_perslid_naam ) AS SELECT p.prs_perslid_key, p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p , prs_kenmerklink pkl, prs_kenmerk pk WHERE pk.prs_kenmerk_upper=UPPER('Is RayonManager') AND pk.prs_kenmerk_key = pkl.prs_kenmerk_key AND pkl.prs_kenmerklink_waarde='1' AND p.prs_perslid_key=pkl.prs_link_key; -- View met alle NL SFB groepen tbv van OPrognose assets import CREATE OR REPLACE VIEW CONN_V_SElECT_NLSFB_GRPSOORT ( code, omsch) AS SELECT '1110' code,'grond, algemeen (verzamelniveau)' omsch FROM DUAL UNION SELECT '1111','grond, ontgravingen' FROM DUAL UNION SELECT '1112','grond, aanvullingen' FROM DUAL UNION SELECT '1113','grond, sloop- en rooiwerkzaamheden' FROM DUAL UNION SELECT '1115','grond, damwanden' FROM DUAL UNION SELECT '1120','water, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '1124','water, bemalingen' FROM DUAL UNION SELECT '1125','water, damwanden' FROM DUAL UNION SELECT '1310','niet constructief, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '1311','niet constructief, bodemafsluitingen' FROM DUAL UNION SELECT '1312','niet constructief, vloeren als gebouwonderdeel' FROM DUAL UNION SELECT '1313','niet constructief, vloeren als bestrating' FROM DUAL UNION SELECT '1320','constructief, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '1321','constructief, bodemafsluitingen' FROM DUAL UNION SELECT '1322','constructief, vloeren als gebouwonderdeel' FROM DUAL UNION SELECT '1325','constructief, grondverbeteringen' FROM DUAL UNION SELECT '1610','voeten en balken, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '1611','voeten en balken, fundatie voeten' FROM DUAL UNION SELECT '1612','voeten en balken, fundatie balken' FROM DUAL UNION SELECT '1613','voeten en balken, fundatie poeren' FROM DUAL UNION SELECT '1614','voeten en balken, gevelwanden (-200)' FROM DUAL UNION SELECT '1615','voeten en balken, grondverbeteringen' FROM DUAL UNION SELECT '1620','keerwanden, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '1621','keerwanden, grondkerende wanden' FROM DUAL UNION SELECT '1622','keerwanden, waterkerende wanden' FROM DUAL UNION SELECT '1623','keerwanden, gevelwanden (-200)' FROM DUAL UNION SELECT '1625','keerwanden, grondverbeteringen' FROM DUAL UNION SELECT '1710','niet geheid, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '1711','niet geheid, dragend palen geboord' FROM DUAL UNION SELECT '1712','niet geheid, dragende palen geschroefd' FROM DUAL UNION SELECT '1713','niet geheid, trekverankeringen' FROM DUAL UNION SELECT '1714','niet geheid, pijler-putring-funderingen' FROM DUAL UNION SELECT '1715','niet geheid, bodeminjecties' FROM DUAL UNION SELECT '1720','geheid, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '1721','geheid, dragende palen' FROM DUAL UNION SELECT '1722','geheid, palen ingeheide bekisting' FROM DUAL UNION SELECT '1723','geheid, trekverankeringen' FROM DUAL UNION SELECT '1725','geheid, damwanden-funderingen' FROM DUAL UNION SELECT '2110','niet constructief, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2111','niet constructief, massieve wanden' FROM DUAL UNION SELECT '2112','niet constructief, spouwwanden' FROM DUAL UNION SELECT '2113','niet constructief, systeemwanden' FROM DUAL UNION SELECT '2114','niet constructief, vlieswanden' FROM DUAL UNION SELECT '2115','niet constructief, borstweringen' FROM DUAL UNION SELECT '2116','niet constructief, boeiboorden' FROM DUAL UNION SELECT '2120','constructief, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2121','constructief, massieve wanden' FROM DUAL UNION SELECT '2122','constructief, spouwwanden' FROM DUAL UNION SELECT '2123','constructief, systeemwanden' FROM DUAL UNION SELECT '2125','constructief, borstweringen' FROM DUAL UNION SELECT '2210','niet constructief, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2211','niet constructief, massieve wanden' FROM DUAL UNION SELECT '2212','niet constructief, spouwwanden' FROM DUAL UNION SELECT '2213','niet constructief, systeemwanden vast' FROM DUAL UNION SELECT '2214','niet constructief, systeemwanden verplaatsbaar' FROM DUAL UNION SELECT '2220','constructief, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2221','constructief, massieve wanden' FROM DUAL UNION SELECT '2222','constructief, spouwwanden' FROM DUAL UNION SELECT '2223','constructief, systeemwanden vast' FROM DUAL UNION SELECT '2310','niet constructief, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2311','niet constructief, vrijdragende vloeren' FROM DUAL UNION SELECT '2312','niet constructief, balkons' FROM DUAL UNION SELECT '2313','niet constructief, galerijen' FROM DUAL UNION SELECT '2314','niet constructief, bordessen' FROM DUAL UNION SELECT '2315','niet constructief, vloeren t.b.v. technische voorzieningen' FROM DUAL UNION SELECT '2320','constructief, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2321','constructief, vrijdragende vloeren' FROM DUAL UNION SELECT '2322','constructief, balkons' FROM DUAL UNION SELECT '2323','constructief, galerijen' FROM DUAL UNION SELECT '2324','constructief, bordessen' FROM DUAL UNION SELECT '2325','constructief, vloeren t.b.v. technische voorzieningen' FROM DUAL UNION SELECT '2410','trappen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2411','trappen, rechte steektrappen' FROM DUAL UNION SELECT '2412','trappen, niet-rechte steektrappen' FROM DUAL UNION SELECT '2413','trappen, spiltrappen' FROM DUAL UNION SELECT '2415','trappen, bordessen' FROM DUAL UNION SELECT '2420','hellingen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2421','hellingen, beloopbare hellingen' FROM DUAL UNION SELECT '2422','hellingen, berijdbare hellingen' FROM DUAL UNION SELECT '2425','hellingen, bordessen' FROM DUAL UNION SELECT '2430','ladders en klimijzers, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2431','ladders en klimijzers, ladders' FROM DUAL UNION SELECT '2432','ladders en klimijzers, klimijzers' FROM DUAL UNION SELECT '2435','ladders en klimijzers, bordessen' FROM DUAL UNION SELECT '2710','niet constructief, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2711','niet constructief, vlakke daken' FROM DUAL UNION SELECT '2712','niet constructief, hellende daken' FROM DUAL UNION SELECT '2713','niet constructief, luifels' FROM DUAL UNION SELECT '2714','niet constructief, overkappingen' FROM DUAL UNION SELECT '2716','niet constructief, gootconstructies' FROM DUAL UNION SELECT '2720','constructief, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2721','constructief, vlakke daken' FROM DUAL UNION SELECT '2722','constructief, hellende daken' FROM DUAL UNION SELECT '2723','constructief, luifels' FROM DUAL UNION SELECT '2724','constructief, overkappingen' FROM DUAL UNION SELECT '2726','constructief, gootconstructies' FROM DUAL UNION SELECT '2810','kolommen en liggers, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2811','kolommen en liggers, kolom-/liggerconstructies' FROM DUAL UNION SELECT '2812','kolommen en liggers, spanten' FROM DUAL UNION SELECT '2820','wanden en vloeren, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2821','wanden en vloeren, wand-/vloerconstructies' FROM DUAL UNION SELECT '2830','ruimte-eenheden, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '2831','ruimte-eenheden, doosconstructies' FROM DUAL UNION SELECT '3110','niet gevuld, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3111','niet gevuld, daglichtopeningen' FROM DUAL UNION SELECT '3112','niet gevuld, buitenluchtopeningen' FROM DUAL UNION SELECT '3120','gevuld met ramen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3121','gevuld met ramen, gesloten ramen' FROM DUAL UNION SELECT '3122','gevuld met ramen, ramen draaiend aan een kant' FROM DUAL UNION SELECT '3123','gevuld met ramen, schuiframen' FROM DUAL UNION SELECT '3124','gevuld met ramen, ramen draaiend op verticale of horizontale as' FROM DUAL UNION SELECT '3125','gevuld met ramen, combinatieramen' FROM DUAL UNION SELECT '3130','gevuld met deuren, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3131','gevuld met deuren, draaideuren' FROM DUAL UNION SELECT '3132','gevuld met deuren, schuifdeuren' FROM DUAL UNION SELECT '3133','gevuld met deuren, tuimeldeuren' FROM DUAL UNION SELECT '3134','gevuld met deuren, tourniqets' FROM DUAL UNION SELECT '3140','gevuld met puien, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3141','gevuld met puien, gesloten puien' FROM DUAL UNION SELECT '3210','niet gevuld, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3211','niet gevuld, openingen als doorgang' FROM DUAL UNION SELECT '3212','niet gevuld, openingen als doorzicht' FROM DUAL UNION SELECT '3220','gevuld met ramen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3221','gevuld met ramen, gesloten ramen' FROM DUAL UNION SELECT '3222','gevuld met ramen, ramen draaiend aan een kant' FROM DUAL UNION SELECT '3223','gevuld met ramen, schuiframen' FROM DUAL UNION SELECT '3224','gevuld met ramen, ramen draaiend op verticale of horizontale as' FROM DUAL UNION SELECT '3225','gevuld met ramen, combinatieramen' FROM DUAL UNION SELECT '3230','gevuld met deuren, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3231','gevuld met deuren, draaideuren' FROM DUAL UNION SELECT '3232','gevuld met deuren, schuifdeuren' FROM DUAL UNION SELECT '3233','gevuld met deuren, tuimeldeuren' FROM DUAL UNION SELECT '3234','gevuld met deuren, tourniqets' FROM DUAL UNION SELECT '3240','gevuld met puien, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3241','gevuld met puien, gesloten puien' FROM DUAL UNION SELECT '3310','niet gevuld, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3311','niet gevuld, openingen als doorgang' FROM DUAL UNION SELECT '3312','niet gevuld, openingen als doorzicht' FROM DUAL UNION SELECT '3320','gevuld, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3321','gevuld, beloopbare vullingen' FROM DUAL UNION SELECT '3322','gevuld, niet-beloopbare vullingen' FROM DUAL UNION SELECT '3410','balustrades, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3411','balustrades, binnenbalustrades' FROM DUAL UNION SELECT '3412','balustrades, buitenbalustrades' FROM DUAL UNION SELECT '3420','leuningen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3421','leuningen, binnenleuningen' FROM DUAL UNION SELECT '3422','leuningen, buitenleuningen' FROM DUAL UNION SELECT '3431','leuningen, binnentrapleuning hout' FROM DUAL UNION SELECT '3710','niet gevuld, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3711','niet gevuld, daglichtopeningen' FROM DUAL UNION SELECT '3712','niet gevuld, buitenluchtopeningen' FROM DUAL UNION SELECT '3720','gevuld, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3721','gevuld, gesloten ramen' FROM DUAL UNION SELECT '3722','gevuld, ramen draaiend aan één kant' FROM DUAL UNION SELECT '3723','gevuld, schuiframen' FROM DUAL UNION SELECT '3724','gevuld, ramen draaiend op een as' FROM DUAL UNION SELECT '3725','gevuld, combinatieramen' FROM DUAL UNION SELECT '3810','algemeen (verzamelniveau)' FROM DUAL UNION SELECT '3811','inbouwpakketten met te openen delen' FROM DUAL UNION SELECT '3812','inbouwpakketten met gesloten delen' FROM DUAL UNION SELECT '4110','algemeen (verzamelniveau)' FROM DUAL UNION SELECT '4111','afwerklagen' FROM DUAL UNION SELECT '4112','bekledingen' FROM DUAL UNION SELECT '4113','voorzetwanden' FROM DUAL UNION SELECT '4210','algemeen (verzamelniveau)' FROM DUAL UNION SELECT '4211','afwerklagen' FROM DUAL UNION SELECT '4212','bekledingen' FROM DUAL UNION SELECT '4310','verhoogd, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '4311','verhoogd, podiums' FROM DUAL UNION SELECT '4312','verhoogd, installatievloeren' FROM DUAL UNION SELECT '4320','niet verhoogd, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '4321','niet verhoogd, afwerklagen' FROM DUAL UNION SELECT '4322','niet verhoogd, bekledingen' FROM DUAL UNION SELECT '4323','niet verhoogd, systeemvloerafwerkingen' FROM DUAL UNION SELECT '4410','trapafwerkingen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '4411','trapafwerkingen, afwerklagen' FROM DUAL UNION SELECT '4412','trapafwerkingen, bekledingen' FROM DUAL UNION SELECT '4413','trapafwerkingen, systeemafwerkingen' FROM DUAL UNION SELECT '4420','hellingafwerkingen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '4421','hellingafwerkingen, afwerklagen' FROM DUAL UNION SELECT '4422','hellingafwerkingen, bekledingen' FROM DUAL UNION SELECT '4423','hellingafwerkingen, systeemafwerkingen' FROM DUAL UNION SELECT '4510','verlaagd, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '4511','verlaagd, verlaagde plafonds' FROM DUAL UNION SELECT '4512','verlaagd, systeem plafonds' FROM DUAL UNION SELECT '4514','verlaagd, koofconstructies' FROM DUAL UNION SELECT '4515','verlaagd, gordijnplanken' FROM DUAL UNION SELECT '4520','niet verlaagd, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '4521','niet verlaagd, afwerkingen' FROM DUAL UNION SELECT '4522','niet verlaagd, bekledingen' FROM DUAL UNION SELECT '4523','niet verlaagd, systeemafwerkingen' FROM DUAL UNION SELECT '4524','niet verlaagd, koofconstructies' FROM DUAL UNION SELECT '4525','niet verlaagd, gordijnplanken' FROM DUAL UNION SELECT '4621','buitenschilderwerk, hout' FROM DUAL UNION SELECT '4622','binnenschilderwerk, spuitwerk' FROM DUAL UNION SELECT '4624','binnenschilderwerk, trap hout transparant' FROM DUAL UNION SELECT '4628','binnenschilderwerk, betoncontructie' FROM DUAL UNION SELECT '4631','buitenschilderwerk, kozijn en raam hout dekkend' FROM DUAL UNION SELECT '4632','binnenschilderwerk, kozijn en raam staal' FROM DUAL UNION SELECT '4645','buitenschilderwerk, plafond hout dekkend' FROM DUAL UNION SELECT '4710','afwerkingen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '4711','afwerkingen, vlakke dakafwerkingen' FROM DUAL UNION SELECT '4712','afwerkingen, hellende dakafwerkingen' FROM DUAL UNION SELECT '4713','afwerkingen, luifel afwerkingen' FROM DUAL UNION SELECT '4714','afwerkingen, overkappings afwerkingen' FROM DUAL UNION SELECT '4715','afwerkingen, beloopbare dakafwerkingen' FROM DUAL UNION SELECT '4716','afwerkingen, berijdbare dakafwerkingen' FROM DUAL UNION SELECT '4720','bekledingen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '4721','bekledingen, vlakke bekledingen' FROM DUAL UNION SELECT '4722','bekledingen, hellende bekledingen' FROM DUAL UNION SELECT '4723','bekledingen, luifel bekledingen' FROM DUAL UNION SELECT '4724','bekledingen, overkapping bekledingen' FROM DUAL UNION SELECT '4725','bekledingen, beloopbare dak bekledingen' FROM DUAL UNION SELECT '4726','bekledingen, berijdbare dak bekledingen' FROM DUAL UNION SELECT '4810','algemeen (verzamelniveau)' FROM DUAL UNION SELECT '4811','naadloze afwerkingen' FROM DUAL UNION SELECT '4812','overige afwerkingen' FROM DUAL UNION SELECT '5110','lokaal, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5111','lokaal, gasvormige brandstoffen' FROM DUAL UNION SELECT '5112','lokaal, vloeibare brandstoffen' FROM DUAL UNION SELECT '5113','lokaal, vaste brandstoffen' FROM DUAL UNION SELECT '5114','lokaal, schoorstenen/kanalen (niet bouwkundig)' FROM DUAL UNION SELECT '5116','lokaal, gecombineerde tapwaterverwarming' FROM DUAL UNION SELECT '5119','lokaal, brandstoffenopslag' FROM DUAL UNION SELECT '5120','centraal, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5121','centraal, gasvormige brandstoffen' FROM DUAL UNION SELECT '5122','centraal, vloeibare brandstoffen' FROM DUAL UNION SELECT '5123','centraal, vaste brandstoffen' FROM DUAL UNION SELECT '5124','centraal, schoorstenen/kanalen (niet bouwkundig)' FROM DUAL UNION SELECT '5126','centraal, gecombineerde tapwater verwarming' FROM DUAL UNION SELECT '5129','centraal, brandstoffenopslag' FROM DUAL UNION SELECT '5130','toegeleverde warmte, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5131','toegeleverde warmte, water tot 140° C.' FROM DUAL UNION SELECT '5132','toegeleverde warmte, water boven 140° C.' FROM DUAL UNION SELECT '5133','toegeleverde warmte, stoom' FROM DUAL UNION SELECT '5136','toegeleverde warmte, gecombineerde tapwaterverwarming' FROM DUAL UNION SELECT '5140','warmte-krachtkoppeling, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5141','warmte-krachtkoppeling, total-energy' FROM DUAL UNION SELECT '5144','warmte-krachtkoppeling, schoorstenen/kanalen (niet bouwkundig)' FROM DUAL UNION SELECT '5146','warmte-krachtkoppeling, gecombineerde tapwaterverwarming' FROM DUAL UNION SELECT '5149','warmte-krachtkoppeling, brandstoffenopslag' FROM DUAL UNION SELECT '5150','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5151','bijzonder, warmtepomp' FROM DUAL UNION SELECT '5152','bijzonder, zonnecollectoren' FROM DUAL UNION SELECT '5153','bijzonder, accumulatie' FROM DUAL UNION SELECT '5154','bijzonder, aardwarmte' FROM DUAL UNION SELECT '5155','bijzonder, kernenergie' FROM DUAL UNION SELECT '5210','regenwater, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5211','regenwater, afvoerinstallatie in het gebouw' FROM DUAL UNION SELECT '5212','regenwater, afvoerinstallatie buiten het gebouw' FROM DUAL UNION SELECT '5216','regenwater, pompsysteem' FROM DUAL UNION SELECT '5220','fecaliën, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5221','fecaliën, standaard systeem' FROM DUAL UNION SELECT '5222','fecaliën, vacuümsysteem' FROM DUAL UNION SELECT '5223','fecaliën, overdruksysteem' FROM DUAL UNION SELECT '5226','fecaliën, pompsysteem' FROM DUAL UNION SELECT '5230','afvalwater, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5231','afvalwater, huishoudelijk afval' FROM DUAL UNION SELECT '5232','afvalwater, bedrijfsafval' FROM DUAL UNION SELECT '5236','afvalwater, pompsysteem' FROM DUAL UNION SELECT '5240','gecombineerd, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5241','gecombineerd, geïntegreerd systeem' FROM DUAL UNION SELECT '5246','gecombineerd, pompsysteem' FROM DUAL UNION SELECT '5250','speciaal, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5251','speciaal, chemisch verontreinigd afvalwater' FROM DUAL UNION SELECT '5252','speciaal, biologisch besmet afvalwater' FROM DUAL UNION SELECT '5253','speciaal, radioactief besmet afvalwater' FROM DUAL UNION SELECT '5256','speciaal, pompsysteem' FROM DUAL UNION SELECT '5260','vast vuil, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5261','vast vuil, stortkokers' FROM DUAL UNION SELECT '5262','vast vuil, vacuümsysteem' FROM DUAL UNION SELECT '5263','vast vuil, persluchtsysteem' FROM DUAL UNION SELECT '5264','vast vuil, verdichtingssysteem' FROM DUAL UNION SELECT '5265','vast vuil, verbrandingssysteem' FROM DUAL UNION SELECT '5310','drinkwater, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5311','drinkwater, netaansluiting' FROM DUAL UNION SELECT '5312','drinkwater, bronaansluiting' FROM DUAL UNION SELECT '5313','drinkwater, reinwaterkelderaansluiting' FROM DUAL UNION SELECT '5314','drinkwater, drukverhoging' FROM DUAL UNION SELECT '5319','drinkwater, opslagtanks' FROM DUAL UNION SELECT '5320','verwarmd tapwater, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5321','verwarmd tapwater, direct verwarmd met voorraad' FROM DUAL UNION SELECT '5322','verwarmd tapwater, indirect verwarmd met voorraad' FROM DUAL UNION SELECT '5323','verwarmd tapwater, doorstroom direct verwarmd' FROM DUAL UNION SELECT '5324','verwarmd tapwater, doorstroom indirect verwarmd' FROM DUAL UNION SELECT '5330','bedrijfswater, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5331','bedrijfswater, onthard-watersysteem' FROM DUAL UNION SELECT '5332','bedrijfswater, demi-watersysteem' FROM DUAL UNION SELECT '5333','bedrijfswater, gedistilleerd-watersysteem' FROM DUAL UNION SELECT '5334','bedrijfswater, zwembad-watersysteem' FROM DUAL UNION SELECT '5340','gebruiksstoom en condens, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5341','gebruiksstoom en condens, lage-druk stoomsysteem' FROM DUAL UNION SELECT '5342','gebruiksstoom en condens, hoge-druk stoomsysteem' FROM DUAL UNION SELECT '5344','gebruiksstoom en condens, condens verzamelsysteem' FROM DUAL UNION SELECT '5350','waterbehandeling, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5351','waterbehandeling, filtratiesysteem' FROM DUAL UNION SELECT '5352','waterbehandeling, absorptiesysteem' FROM DUAL UNION SELECT '5353','waterbehandeling, ontgassingsysteem' FROM DUAL UNION SELECT '5354','waterbehandeling, destillatiesysteem' FROM DUAL UNION SELECT '5410','brandstof, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5411','brandstof, aardgasvoorziening' FROM DUAL UNION SELECT '5412','brandstof, butaanvoorziening' FROM DUAL UNION SELECT '5413','brandstof, propaanvoorziening' FROM DUAL UNION SELECT '5414','brandstof, LPG-voorziening' FROM DUAL UNION SELECT '5420','perslucht en vacuüm, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5421','perslucht en vacuüm, persluchtvoorziening' FROM DUAL UNION SELECT '5422','perslucht en vacuüm, vacuümvoorziening' FROM DUAL UNION SELECT '5430','medisch, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5431','medisch, zuurstofvoorziening' FROM DUAL UNION SELECT '5432','medisch, carbogeenvoorziening' FROM DUAL UNION SELECT '5433','medisch, lachgasvoorziening' FROM DUAL UNION SELECT '5434','medisch, koolzuurvoorziening' FROM DUAL UNION SELECT '5435','medisch, medische luchtvoorziening' FROM DUAL UNION SELECT '5440','technisch, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5441','technisch, stikstofvoorziening' FROM DUAL UNION SELECT '5442','technisch, waterstofvoorziening' FROM DUAL UNION SELECT '5443','technisch, argonvoorziening' FROM DUAL UNION SELECT '5444','technisch, heliumvoorziening' FROM DUAL UNION SELECT '5445','technisch, acetyleenvoorziening' FROM DUAL UNION SELECT '5446','technisch, propaanvoorziening' FROM DUAL UNION SELECT '5447','technisch, koolzuurvoorziening' FROM DUAL UNION SELECT '5450','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5451','bijzonder, voorziening zuivere gassen' FROM DUAL UNION SELECT '5452','bijzonder, voorziening menggassen' FROM DUAL UNION SELECT '5510','lokaal, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5511','lokaal, raamkoelers' FROM DUAL UNION SELECT '5512','lokaal, splitsystemen' FROM DUAL UNION SELECT '5513','lokaal, compactsystemen' FROM DUAL UNION SELECT '5520','centraal, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5521','centraal, compressorensystemen' FROM DUAL UNION SELECT '5522','centraal, absorptiesystemen' FROM DUAL UNION SELECT '5523','centraal, grondwatersystemen' FROM DUAL UNION SELECT '5524','centraal, oppervlaktewatersystemen' FROM DUAL UNION SELECT '5530','distributie, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5531','distributie, distributiesystemen' FROM DUAL UNION SELECT '5610','water, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5611','water, radiatorsystemen' FROM DUAL UNION SELECT '5612','water, convectorsystemen' FROM DUAL UNION SELECT '5613','water, vloerverwarmingssystemen' FROM DUAL UNION SELECT '5620','stoom, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5621','stoom, radiatorsystemen' FROM DUAL UNION SELECT '5622','stoom, convectorsystemen' FROM DUAL UNION SELECT '5624','stoom, stralingspanelen' FROM DUAL UNION SELECT '5630','lucht, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5631','lucht, directe distributiesysteem' FROM DUAL UNION SELECT '5632','lucht, systeem met stralingsoverdracht' FROM DUAL UNION SELECT '5640','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5641','bijzonder, zonnewarmtesystemen' FROM DUAL UNION SELECT '5642','bijzonder, aardwarmtesystemen' FROM DUAL UNION SELECT '5643','bijzonder, centraal warmtepompsysteem' FROM DUAL UNION SELECT '5710','natuurlijke ventilatie, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5711','natuurlijke ventilatie, voorzieningen regelbaar' FROM DUAL UNION SELECT '5712','natuurlijke ventilatie, voorzieningen niet regelbaar' FROM DUAL UNION SELECT '5720','lokale mechanische afzuiging, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5721','lokale mechanische afzuiging, afzuiginstallatie' FROM DUAL UNION SELECT '5730','centrale mechanische afzuiging, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5731','centrale mechanische afzuiging, afzuiginstallatie' FROM DUAL UNION SELECT '5740','lokale mechanische ventilatie, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5741','lokale mechanische ventilatie, ventilatie-installatie' FROM DUAL UNION SELECT '5750','centrale mechanische ventilatie, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5751','centrale mechanische ventilatie, ventilatie-installatie' FROM DUAL UNION SELECT '5752','centrale mechanische ventilatie, ventilatie-installatie met warmteterugwinning' FROM DUAL UNION SELECT '5760','lokaal, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5761','lokaal, luchtbehandelingsinstallatie' FROM DUAL UNION SELECT '5770','centraal, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5771','centraal, luchtbehandelingsinstallatie' FROM DUAL UNION SELECT '5810','specifieke regelingen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5811','specifieke regelingen, specifieke regeling' FROM DUAL UNION SELECT '5812','specifieke regelingen, gecombineerde regeling' FROM DUAL UNION SELECT '5820','centrale melding, meting en sturing, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '5821','centrale melding, meting en sturing, specifieke regeling' FROM DUAL UNION SELECT '5822','centrale melding, meting en sturing, gecombineerde regeling' FROM DUAL UNION SELECT '6110','energie, noodstroom, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6111','energie, noodstroom, eigen energieopwekking' FROM DUAL UNION SELECT '6120','aarding, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6121','aarding, veiligheidsaarding' FROM DUAL UNION SELECT '6122','aarding, medische aarding' FROM DUAL UNION SELECT '6123','aarding, speciale aarding' FROM DUAL UNION SELECT '6124','aarding, statische elektriciteit' FROM DUAL UNION SELECT '6125','aarding, bliksemafleiding' FROM DUAL UNION SELECT '6126','aarding, potentiaalvereffening' FROM DUAL UNION SELECT '6130','kanalisatie, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6131','kanalisatie, t.b.v. installaties voor hoge spanning' FROM DUAL UNION SELECT '6132','kanalisatie, t.b.v. installaties voor lage spanning' FROM DUAL UNION SELECT '6133','kanalisatie, t.b.v. installaties voor communicatie of beveiliging' FROM DUAL UNION SELECT '6140','energie, hoogspanning, algemeen' FROM DUAL UNION SELECT '6141','energie, hoogspanning, 1 Kv en hoger' FROM DUAL UNION SELECT '6150','energie, laagspanning, algemeen' FROM DUAL UNION SELECT '6151','energie, laagspanning, lager dan 1 Kv en hoger dan 100 V' FROM DUAL UNION SELECT '6160','energie, zeer lage spanning, algemeen' FROM DUAL UNION SELECT '6161','energie, zeer lage spanning, lager dan 100 V' FROM DUAL UNION SELECT '6170','bliksemafleiding, algemeen' FROM DUAL UNION SELECT '6171','bliksemafleiding' FROM DUAL UNION SELECT '6210','hoogspanning, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6211','hoogspanning, 1 t/m 3 Kv' FROM DUAL UNION SELECT '6212','hoogspanning, boven 3 Kv' FROM DUAL UNION SELECT '6220','laagspanning, onbewaakt, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6221','laagspanning, onbewaakt, 220/230 V - 380 V' FROM DUAL UNION SELECT '6222','laagspanning, onbewaakt, 380 V - 660 V' FROM DUAL UNION SELECT '6223','laagspanning, onbewaakt, 660 V - 1 Kv' FROM DUAL UNION SELECT '6230','laagspanning, bewaakt, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6231','laagspanning, bewaakt, 220/230 V - 380 V' FROM DUAL UNION SELECT '6232','laagspanning, bewaakt, 380 V - 660 V' FROM DUAL UNION SELECT '6233','laagspanning, bewaakt, 660 V - 1 kV' FROM DUAL UNION SELECT '6240','laagspanning, gestabiliseerd, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6241','laagspanning, gestabiliseerd, 220/230 V - 380 V' FROM DUAL UNION SELECT '6242','laagspanning, gestabiliseerd, 380 V - 660 V' FROM DUAL UNION SELECT '6243','laagspanning, gestabiliseerd, 660 V - 1 Kv' FROM DUAL UNION SELECT '6250','laagspanning, gecompenseerd, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6251','laagspanning, gecompenseerd, 220/230 V - 380 V' FROM DUAL UNION SELECT '6252','laagspanning, gecompenseerd, 380 V - 660 V' FROM DUAL UNION SELECT '6253','laagspanning, gecompenseerd, 660 V - 1 Kv' FROM DUAL UNION SELECT '6310','standaard, onbewaakt, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6311','standaard, onbewaakt, 220/230 V' FROM DUAL UNION SELECT '6312','standaard, onbewaakt, 115 V' FROM DUAL UNION SELECT '6313','standaard, onbewaakt, 42 V' FROM DUAL UNION SELECT '6314','standaard, onbewaakt, 24 V' FROM DUAL UNION SELECT '6320','calamiteiten, decentraal gevoed, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6323','calamiteiten, decentraal gevoed, 42 V' FROM DUAL UNION SELECT '6324','calamiteiten, decentraal gevoed, 24 V' FROM DUAL UNION SELECT '6330','bijzonder, onbewaakt, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6331','bijzonder, onbewaakt, 220/230 V' FROM DUAL UNION SELECT '6332','bijzonder, onbewaakt, 115 V' FROM DUAL UNION SELECT '6333','bijzonder, onbewaakt, 42 V' FROM DUAL UNION SELECT '6334','bijzonder, onbewaakt, 24 V' FROM DUAL UNION SELECT '6340','standaard, bewaakt, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6341','standaard, bewaakt, 220/230 V' FROM DUAL UNION SELECT '6342','standaard, bewaakt, 115 V' FROM DUAL UNION SELECT '6343','standaard, bewaakt, 42 V' FROM DUAL UNION SELECT '6344','standaard, bewaakt, 24 V' FROM DUAL UNION SELECT '6350','calamiteiten, centraal gevoed, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6351','calamiteiten, centraal gevoed, 220/230 V' FROM DUAL UNION SELECT '6352','calamiteiten, centraal gevoed, 115 V' FROM DUAL UNION SELECT '6353','calamiteiten, centraal gevoed, 42 V' FROM DUAL UNION SELECT '6354','calamiteiten, centraal gevoed, 24 V' FROM DUAL UNION SELECT '6360','bijzonder, bewaakt, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6361','bijzonder, bewaakt, 220/230 V' FROM DUAL UNION SELECT '6362','bijzonder, bewaakt, 115 V' FROM DUAL UNION SELECT '6363','bijzonder, bewaakt, 42 V' FROM DUAL UNION SELECT '6364','bijzonder, bewaakt, 24 V' FROM DUAL UNION SELECT '6370','reclame, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6371','reclame, 220/230 V' FROM DUAL UNION SELECT '6372','reclame, 115 V' FROM DUAL UNION SELECT '6373','reclame, 42 V' FROM DUAL UNION SELECT '6374','reclame, 24 V' FROM DUAL UNION SELECT '6375','reclame, 1 Kv en hoger' FROM DUAL UNION SELECT '6410','overdracht van signalen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6411','overdracht van signalen, algemene signaleringen' FROM DUAL UNION SELECT '6412','overdracht van signalen, algemene personenoproep' FROM DUAL UNION SELECT '6413','overdracht van signalen, tijdsignalering' FROM DUAL UNION SELECT '6414','overdracht van signalen, aanwezigheid-/beletsignalering' FROM DUAL UNION SELECT '6420','overdracht van geluid/spraak, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6421','overdracht van geluid/spraak, telefoon' FROM DUAL UNION SELECT '6422','overdracht van geluid/spraak, intercom' FROM DUAL UNION SELECT '6423','overdracht van geluid/spraak, radio/mobilofoon' FROM DUAL UNION SELECT '6424','overdracht van geluid/spraak, geluidsdistributie' FROM DUAL UNION SELECT '6425','overdracht van geluid/spraak, vertaalsystemen' FROM DUAL UNION SELECT '6426','overdracht van geluid/spraak, conferentiesystemen' FROM DUAL UNION SELECT '6430','overdracht van beelden, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6431','overdracht van beelden, gesloten televisiecircuits' FROM DUAL UNION SELECT '6432','overdracht van beelden, beeldreproductie' FROM DUAL UNION SELECT '6433','overdracht van beelden, film/dia/overhead' FROM DUAL UNION SELECT '6440','overdracht van data, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6441','overdracht van data, gesloten datanet' FROM DUAL UNION SELECT '6442','overdracht van data, openbaar datanet' FROM DUAL UNION SELECT '6450','geïntegreerde systemen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6451','geïntegreerde systemen, gesloten netwerken' FROM DUAL UNION SELECT '6452','geïntegreerde systemen, openbare netwerken' FROM DUAL UNION SELECT '6460','antenne-inrichtingen, algemeen' FROM DUAL UNION SELECT '6510','brand, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6511','brand, detectie en alarmering' FROM DUAL UNION SELECT '6512','brand, deurvergrendelingen en -ontgrendelingen' FROM DUAL UNION SELECT '6513','brand, brandbestrijding' FROM DUAL UNION SELECT '6520','braak, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6521','braak, detectie en alarmering' FROM DUAL UNION SELECT '6522','braak, toegangscontrole' FROM DUAL UNION SELECT '6530','overlast, detectie en alarmering, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6531','overlast, detectie en alarmering, zonweringsinstallatie' FROM DUAL UNION SELECT '6532','overlast, detectie en alarmering, elektromagnetische voorzieningen' FROM DUAL UNION SELECT '6533','overlast, detectie en alarmering, elektromagnetische voorzieningen' FROM DUAL UNION SELECT '6534','overlast, detectie en alarmering, overspanningsbeveiliging' FROM DUAL UNION SELECT '6535','overlast, detectie en alarmering, gassenbeveiliging' FROM DUAL UNION SELECT '6536','overlast, detectie en alarmering, vloeistofbeveiliging' FROM DUAL UNION SELECT '6537','overlast, detectie en alarmering, stralingsbeveiliging' FROM DUAL UNION SELECT '6539','overlast, detectie en alarmering, overige beveiligingen' FROM DUAL UNION SELECT '6540','sociale alarmering, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6541','sociale alarmering, nooddetectie gesloten systemen' FROM DUAL UNION SELECT '6542','sociale alarmering, nooddetectie open systemen' FROM DUAL UNION SELECT '6550','milieu-overlast, detectie en alarmering, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6610','liften en heftableaus, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6611','liften en heftableaus, elektrische liften' FROM DUAL UNION SELECT '6612','liften en heftableaus, hydraulische liften' FROM DUAL UNION SELECT '6613','liften en heftableaus, trapliften' FROM DUAL UNION SELECT '6614','liften en heftableaus, heftableaus' FROM DUAL UNION SELECT '6620','roltrappen en rolpaden, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6621','roltrappen en rolpaden, roltrappen' FROM DUAL UNION SELECT '6622','roltrappen en rolpaden, rolpaden' FROM DUAL UNION SELECT '6630','goederen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6631','goederen, goederenliften' FROM DUAL UNION SELECT '6632','goederen, goederenheffers' FROM DUAL UNION SELECT '6633','goederen, baantransportmiddelen' FROM DUAL UNION SELECT '6634','goederen, bandtransportmiddelen' FROM DUAL UNION SELECT '6635','goederen, baktransportmiddelen' FROM DUAL UNION SELECT '6636','goederen, hijswerktuigen' FROM DUAL UNION SELECT '6637','goederen, vrije-baan-transportvoertuigen' FROM DUAL UNION SELECT '6640','documenten, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6641','documenten, buizenpost' FROM DUAL UNION SELECT '6642','documenten, railcontainer banen' FROM DUAL UNION SELECT '6644','documenten, bandtransportmiddelen' FROM DUAL UNION SELECT '6710','bediening en signalering, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6711','bediening en signalering, elektrotechnische systemen' FROM DUAL UNION SELECT '6712','bediening en signalering, optische systemen' FROM DUAL UNION SELECT '6713','bediening en signalering, pneumatische systemen' FROM DUAL UNION SELECT '6714','bediening en signalering, geïntegreerde systemen' FROM DUAL UNION SELECT '6720','gebouwautomatisering, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6721','gebouwautomatisering, elektrotechnische systemen' FROM DUAL UNION SELECT '6722','gebouwautomatisering, optische systemen' FROM DUAL UNION SELECT '6723','gebouwautomatisering, pneumatische systemen' FROM DUAL UNION SELECT '6724','gebouwautomatisering, geïntegreerde systemen' FROM DUAL UNION SELECT '6730','regelinstallaties klimaat en sanitair (op afstand), algemeen (verzamelniveau)' FROM DUAL UNION SELECT '6731','regelinstallaties klimaat en sanitair (op afstand), elektrotechnische systemen' FROM DUAL UNION SELECT '6732','regelinstallaties klimaat en sanitair (op afstand), optische systemen' FROM DUAL UNION SELECT '6733','regelinstallaties klimaat en sanitair (op afstand), pneumatische systemen' FROM DUAL UNION SELECT '6734','regelinstallaties klimaat en sanitair (op afstand), geïntegreerde systemen' FROM DUAL UNION SELECT '7110','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7111','standaard, meubileringen' FROM DUAL UNION SELECT '7112','standaard, bewegwijzeringen' FROM DUAL UNION SELECT '7113','standaard, kunstwerken' FROM DUAL UNION SELECT '7114','standaard, decoraties e.d.' FROM DUAL UNION SELECT '7120','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7121','bijzonder, meubileringen' FROM DUAL UNION SELECT '7122','bijzonder, bewegwijzeringen' FROM DUAL UNION SELECT '7123','bijzonder, specifieke voorz. (o.a. loopleuningen)' FROM DUAL UNION SELECT '7210','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7211','standaard, meubilering' FROM DUAL UNION SELECT '7212','standaard, lichtweringen' FROM DUAL UNION SELECT '7213','standaard, gordijnvoorzieningen' FROM DUAL UNION SELECT '7214','standaard, beschermende voorzieningen' FROM DUAL UNION SELECT '7220','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7221','bijzonder, meubilering voor specifieke functiedoeleinden' FROM DUAL UNION SELECT '7222','bijzonder, instrumenten/apparatuur' FROM DUAL UNION SELECT '7310','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7311','standaard, keukenmeubilering' FROM DUAL UNION SELECT '7312','standaard, keukenapparatuur' FROM DUAL UNION SELECT '7320','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7321','bijzonder, keukenmeubilering' FROM DUAL UNION SELECT '7322','bijzonder, keukenapparatuur' FROM DUAL UNION SELECT '7410','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7411','standaard, sanitaire toestellen normaal' FROM DUAL UNION SELECT '7412','standaard, sanitaire toestellen aangepast' FROM DUAL UNION SELECT '7413','standaard, accessoires' FROM DUAL UNION SELECT '7420','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7421','bijzonder, sanitaire toestellen voor bijzondere toepassing' FROM DUAL UNION SELECT '7422','bijzonder, ingebouwde sanitaire voorzieningen' FROM DUAL UNION SELECT '7510','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7511','standaard, gebouwonderhoudsvoorzieningen' FROM DUAL UNION SELECT '7512','standaard, interieur onderhoudsvoorzieningen' FROM DUAL UNION SELECT '7513','standaard, gevelonderhoudsvoorzieningen' FROM DUAL UNION SELECT '7520','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7521','bijzonder, gebouwonderhoudsvoorzieningen' FROM DUAL UNION SELECT '7522','bijzonder, interieur onderhoudsvoorzieningen' FROM DUAL UNION SELECT '7523','bijzonder, gemechaniseerde gevelonderhoudsvoorzieningen' FROM DUAL UNION SELECT '7610','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7611','standaard, meubileringen' FROM DUAL UNION SELECT '7620','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '7621','bijzonder, gemechaniseerde voorzieningen' FROM DUAL UNION SELECT '7622','bijzonder, specifieke voorzieningen' FROM DUAL UNION SELECT '8110','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8111','standaard, meubilering' FROM DUAL UNION SELECT '8112','standaard, bewegwijzering' FROM DUAL UNION SELECT '8113','standaard, kunstwerken' FROM DUAL UNION SELECT '8114','standaard, decoraties e.d.' FROM DUAL UNION SELECT '8120','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8121','bijzonder, meubilering' FROM DUAL UNION SELECT '8122','bijzonder, bewegwijzering' FROM DUAL UNION SELECT '8123','bijzonder, specifieke voorzieningen (o.a. afvalbakken)' FROM DUAL UNION SELECT '8210','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8211','standaard, meubilering' FROM DUAL UNION SELECT '8212','standaard, lichtweringen/verduisteringen' FROM DUAL UNION SELECT '8213','standaard, stofferingen' FROM DUAL UNION SELECT '8220','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8221','bijzonder, meubilering voor specifieke functiedoeleinden' FROM DUAL UNION SELECT '8222','bijzonder, instrumenten/apparatuur' FROM DUAL UNION SELECT '8310','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8311','standaard, keukenmeubilering' FROM DUAL UNION SELECT '8312','standaard, keukenapparatuur' FROM DUAL UNION SELECT '8313','standaard, kleine keukeninventaris' FROM DUAL UNION SELECT '8320','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8321','bijzonder, keukeninrichting' FROM DUAL UNION SELECT '8322','bijzonder, keukenapparatuur' FROM DUAL UNION SELECT '8323','bijzonder, kleine keukeninventaris' FROM DUAL UNION SELECT '8324','bijzonder, transportmiddelen' FROM DUAL UNION SELECT '8410','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8411','standaard, afvalvoorzieningen' FROM DUAL UNION SELECT '8412','standaard, voorzieningen t.b.v. hygiëne' FROM DUAL UNION SELECT '8413','standaard, accessoires' FROM DUAL UNION SELECT '8420','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8421','bijzonder, sanitaire toestellen voor bijzondere toepassing' FROM DUAL UNION SELECT '8510','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8511','standaard, schoonmaakapparatuur' FROM DUAL UNION SELECT '8512','standaard, vuilopslag' FROM DUAL UNION SELECT '8513','standaard, vuiltransport' FROM DUAL UNION SELECT '8520','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8521','bijzonder, schoonmaakapparatuur' FROM DUAL UNION SELECT '8522','bijzonder, vuilopslag' FROM DUAL UNION SELECT '8523','bijzonder, vuiltransport' FROM DUAL UNION SELECT '8610','standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8611','standaard, meubileringen' FROM DUAL UNION SELECT '8620','bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '8621','bijzonder, gemechaniseerde voorzieningen' FROM DUAL UNION SELECT '8622','bijzonder, specifieke voorzieningen' FROM DUAL UNION SELECT '9010','grondvoorzieningen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '9011','grondvoorzieningen, verwijderen obstakels' FROM DUAL UNION SELECT '9012','grondvoorzieningen, grondwaterverlagingen' FROM DUAL UNION SELECT '9013','grondvoorzieningen, drainagevoorzieningen' FROM DUAL UNION SELECT '9020','opstallen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '9021','opstallen, gebouwtjes met speciale functie' FROM DUAL UNION SELECT '9022','opstallen, overkappingen' FROM DUAL UNION SELECT '9030','omheiningen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '9031','omheiningen, muren' FROM DUAL UNION SELECT '9032','omheiningen, hekwerken' FROM DUAL UNION SELECT '9033','omheiningen, overige afscheidingen' FROM DUAL UNION SELECT '9034','omheiningen, toegangen' FROM DUAL UNION SELECT '9040','terreinafwerkingen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '9041','terreinafwerkingen, verhardingen' FROM DUAL UNION SELECT '9042','terreinafwerkingen, beplantingen' FROM DUAL UNION SELECT '9043','terreinafwerkingen, waterpartijen' FROM DUAL UNION SELECT '9044','terreinafwerkingen, keerwanden en balustrades' FROM DUAL UNION SELECT '9045','terreinafwerkingen, pergolas' FROM DUAL UNION SELECT '9050','terreinvoorzieningen, werktuigbouwkundig, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '9051','terreinvoorzieningen, werktuigbouwkundig, verwarmingsvoorzieningen' FROM DUAL UNION SELECT '9052','terreinvoorzieningen, werktuigbouwkundig, afvoervoorzieningen' FROM DUAL UNION SELECT '9053','terreinvoorzieningen, werktuigbouwkundig, watervoorzieningen' FROM DUAL UNION SELECT '9054','terreinvoorzieningen, werktuigbouwkundig, gasvoorzieningen' FROM DUAL UNION SELECT '9055','terreinvoorzieningen, werktuigbouwkundig, koudeopwekkingsvoorzieningen' FROM DUAL UNION SELECT '9056','terreinvoorzieningen, werktuigbouwkundig, warmtedistributievoorzieningen' FROM DUAL UNION SELECT '9057','terreinvoorzieningen, werktuigbouwkundig, luchtbehandelingsvoorzieningen' FROM DUAL UNION SELECT '9058','terreinvoorzieningen, werktuigbouwkundig, regelingvoorzieningen' FROM DUAL UNION SELECT '9060','terreinvoorzieningen, elektrotechnisch, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '9061','terreinvoorzieningen, elektrotechnisch, elektrotechnische en aardingsvoorzieningen' FROM DUAL UNION SELECT '9062','terreinvoorzieningen, elektrotechnisch, krachtvoorzieningen' FROM DUAL UNION SELECT '9063','terreinvoorzieningen, elektrotechnisch, lichtvoorzieningen' FROM DUAL UNION SELECT '9064','terreinvoorzieningen, elektrotechnisch, communicatievoorzieningen' FROM DUAL UNION SELECT '9065','terreinvoorzieningen, elektrotechnisch, beveiligingsvoorzieningen' FROM DUAL UNION SELECT '9066','terreinvoorzieningen, elektrotechnisch, transportvoorzieningen' FROM DUAL UNION SELECT '9067','terreinvoorzieningen, elektrotechnisch, beheervoorzieningen' FROM DUAL UNION SELECT '9070','terreininrichtingen, standaard, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '9071','terreininrichtingen, standaard, terreinmeubilering' FROM DUAL UNION SELECT '9072','terreininrichtingen, standaard, bewegwijzering' FROM DUAL UNION SELECT '9073','terreininrichtingen, standaard, kunstwerken' FROM DUAL UNION SELECT '9074','terreininrichtingen, standaard, decoraties e.d.' FROM DUAL UNION SELECT '9080','terreininrichtingen, bijzonder, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '9081','terreininrichtingen, bijzonder, terreinmeubilering' FROM DUAL UNION SELECT '9082','terreininrichtingen, bijzonder, specifieke voorzieningen' FROM DUAL UNION SELECT '9083','terreininrichtingen, bijzonder, bijzondere verhardingen' FROM DUAL UNION SELECT '0010','werkterreininrichting, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '0011','werkterreininrichting, bijkomende werken' FROM DUAL UNION SELECT '0012','werkterreininrichting, personen/materiaalvoorzieningen' FROM DUAL UNION SELECT '0013','werkterreininrichting, energievoorzieningen' FROM DUAL UNION SELECT '0014','werkterreininrichting, beveiligingsvoorzieningen' FROM DUAL UNION SELECT '0015','werkterreininrichting, doorwerkvoorzieningen' FROM DUAL UNION SELECT '0016','werkterreininrichting, voorzieningen belendende percelen' FROM DUAL UNION SELECT '0017','werkterreininrichting, onderhoudsvoorzieningen' FROM DUAL UNION SELECT '0020','materieelvoorzieningen, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '0021','materieelvoorzieningen, transport' FROM DUAL UNION SELECT '0022','materieelvoorzieningen, gereedschappen' FROM DUAL UNION SELECT '0030','risicodekking, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '0031','risicodekking, verzekeringen' FROM DUAL UNION SELECT '0032','risicodekking, waarborgen' FROM DUAL UNION SELECT '0033','risicodekking, prijsstijgingen' FROM DUAL UNION SELECT '0040','projectorganisatie, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '0041','projectorganisatie, administratie' FROM DUAL UNION SELECT '0042','projectorganisatie, uitvoering' FROM DUAL UNION SELECT '0043','projectorganisatie, documentatie' FROM DUAL UNION SELECT '0050','bedrijfsorganisatie, algemeen (verzamelniveau)' FROM DUAL UNION SELECT '0051','bedrijfsorganisatie, bestuur en directie' FROM DUAL UNION SELECT '0052','bedrijfsorganisatie, winstregelingen' FROM DUAL; -- Import routine voor het verwerken nvan Assets uit de O-Prognose dump CREATE OR REPLACE PROCEDURE CONN_IMPORT_ASSETS_INI(p_import_key IN NUMBER) AS c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (4000); -- Input line v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; 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_alg_ruimte_nr VARCHAR2(100); v_gebouw_code VARCHAR2(100); v_ins_discipline_txt VARCHAR2(100); v_ins_discipline_omschrijving VARCHAR2(100); d_ins_discipline_omschrijving VARCHAR2(100); v_ins_srtgroep_code VARCHAR2(100); v_ins_srtgroep_omschrijving VARCHAR2(100); d_ins_srtgroep_omschrijving VARCHAR2(100); v_ins_srtdeel_code VARCHAR2(100); v_ins_srtdeel_omschrijving VARCHAR2(100); d_ins_srtdeel_omschrijving VARCHAR2(100); v_ins_deel_txt VARCHAR2(100); v_ins_deel_code VARCHAR2(100); v_ins_deel_eenheid VARCHAR2(100); v_ins_deel_omschrijving VARCHAR2(100); v_ins_deel_opmerking VARCHAR2(1000); v_ins_deel_component VARCHAR2(1000); v_ins_srtcontrole_periode_txt VARCHAR2(100); v_ins_srtcontrole_prijs_txt VARCHAR2(100); v_ins_deel_percentage NUMBER; v_ins_srtcontrole_periode NUMBER; v_kenmerk1 VARCHAR2(1000); v_kenmerk2 VARCHAR2(1000); v_kenmerk3 VARCHAR2(1000); v_kenmerk4 VARCHAR2(1000); v_kenmerk5 VARCHAR2(1000); v_kenmerk6 VARCHAR2(1000); v_kenmerk7 VARCHAR2(1000); v_kenmerk8 VARCHAR2(1000); v_kenmerk9 VARCHAR2(1000); v_kenmerk10 VARCHAR2(1000); v_kenmerk11 VARCHAR2(1000); v_kenmerk12 VARCHAR2(1000); v_kenmerk13 VARCHAR2(1000); v_kenmerk14 VARCHAR2(1000); v_kenmerk15 VARCHAR2(1000); v_kenmerk16 VARCHAR2(1000); v_kenmerk17 VARCHAR2(1000); v_kenmerk18 VARCHAR2(1000); v_kenmerk19 VARCHAR2(1000); v_dumm NUMBER (10,2); v_ins_deel_aanmaak_text VARCHAR2(10); v_ins_deel_aanmaak DATE; v_ins_deel_startjaar DATE; v_ins_deel_aantal_text VARCHAR2(20); v_ins_deel_aantal NUMBER; v_ins_srtcontrole_prijs NUMBER(10,2); v_alg_locatie_code VARCHAR2(20); v_alg_gebouw_code VARCHAR2(20); v_alg_verdieping_volgnr NUMBER; v_srtk_code_rvb_key NUMBER; v_srtk_opm_key NUMBER; v_srtk_merk_key NUMBER; v_discipline_key NUMBER; v_srtgroep_key NUMBER; v_startjaar NUMBER; v_cyclus NUMBER; v_error NUMBER:=0; v_objectcount NUMBER:=0; v_volgnr VARCHAR2(5); CURSOR c IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; CURSOR nlsfb_dis IS SELECT '1-Onderbouw' ins_omsch FROM DUAL UNION SELECT '2-Ruwbouw' ins_omsch FROM DUAL UNION SELECT '3-Afbouw' ins_omsch FROM DUAL UNION SELECT '4-Afwerkingen' ins_omsch FROM DUAL UNION SELECT '5-Installaties werktuigbouwkundig' ins_omsch FROM DUAL UNION SELECT '6-Installaties elektrotechnisch' ins_omsch FROM DUAL UNION SELECT '7-Vaste voorzieningen' ins_omsch FROM DUAL UNION SELECT '8-Losse gebruiks inventaris' ins_omsch FROM DUAL UNION SELECT '9-Terrein' AS ins_omsch FROM DUAL UNION SELECT '0-Indirecte projectvoorzieningen' AS ins_omsch FROM DUAL; CURSOR nlsfb_grp IS SELECT '11-bodemvoorzieningen' groep FROM DUAL UNION SELECT '13-vloeren op grondslag' groep FROM DUAL UNION SELECT '16-funderingsconstructie' groep FROM DUAL UNION SELECT '17-paalfundering' groep FROM DUAL UNION SELECT '19-onderhoud algemeen' groep FROM DUAL UNION SELECT '21-buitenwanden' groep FROM DUAL UNION SELECT '22-binnenwanden' FROM DUAL UNION SELECT '23-vloeren, galerijen' FROM DUAL UNION SELECT '24-trappen en hellingen' FROM DUAL UNION SELECT '25-binnenzijde gevelconstructie' FROM DUAL UNION SELECT '26-vloerconstructie' FROM DUAL UNION SELECT '27-daken' FROM DUAL UNION SELECT '28-hoofddraagkonstrukties' FROM DUAL UNION SELECT '29-draagconstructie' FROM DUAL UNION SELECT '31-buitenwandopeningen' FROM DUAL UNION SELECT '32-binnenwandopeningen' FROM DUAL UNION SELECT '33-vloeropeningen' FROM DUAL UNION SELECT '34-balustrades en leuningen' FROM DUAL UNION SELECT '35-plafonds' FROM DUAL UNION SELECT '37-dakopeningen' FROM DUAL UNION SELECT '38-inbouwpakketten' FROM DUAL UNION SELECT '39-afbouw' FROM DUAL UNION SELECT '41-buitenwandafwerkingen' FROM DUAL UNION SELECT '42-binnenwandafwerkingen' FROM DUAL UNION SELECT '43-vloerafwerkingen' FROM DUAL UNION SELECT '44-trap- en hellingafwerkingen' FROM DUAL UNION SELECT '45-plafondafwerkingen' FROM DUAL UNION SELECT '46-schilderwerk' FROM DUAL UNION SELECT '47-dakafwerkingen' FROM DUAL UNION SELECT '48-afwerkingspakketten' FROM DUAL UNION SELECT '49-afwerking algemeen' FROM DUAL UNION SELECT '51-warmte-opwekking' FROM DUAL UNION SELECT '52-afvoeren' FROM DUAL UNION SELECT '53-water' FROM DUAL UNION SELECT '54-gas' FROM DUAL UNION SELECT '55-koude-opwekking' FROM DUAL UNION SELECT '56-warmtedistributie' FROM DUAL UNION SELECT '57-luchtbehandeling' FROM DUAL UNION SELECT '58-regeling klimaat en sanitair' FROM DUAL UNION SELECT '59-mechanische installaties' FROM DUAL UNION SELECT '61-centrale elektrotechnische voorzieningen' FROM DUAL UNION SELECT '62-kracht' FROM DUAL UNION SELECT '63-verlichting' FROM DUAL UNION SELECT '64-communicatie' FROM DUAL UNION SELECT '65-beveiliging' FROM DUAL UNION SELECT '66-transport' FROM DUAL UNION SELECT '67-gebouwbeheersysteem' FROM DUAL UNION SELECT '69-electrische installaties algemeen' FROM DUAL UNION SELECT '71-vaste verkeersvoorzieningen' FROM DUAL UNION SELECT '72-vaste gebruikersvoorzieningen' FROM DUAL UNION SELECT '73-vaste keukenvoorzieningen' FROM DUAL UNION SELECT '74-vaste sanitaire voorzieningen' FROM DUAL UNION SELECT '75-vaste onderhoudsvoorzieningen' FROM DUAL UNION SELECT '76-vaste opslagvoorzieningen' FROM DUAL UNION SELECT '79-vaste inrichtingen' FROM DUAL UNION SELECT '80-losse inrichting' FROM DUAL UNION SELECT '81-losse inventaris voor verkeersruimten' FROM DUAL UNION SELECT '82-losse inventaris voor gebruiksruimten' FROM DUAL UNION SELECT '83-losse keukeninventaris' FROM DUAL UNION SELECT '84-losse sanitaire inventaris' FROM DUAL UNION SELECT '85-losse schoonmaakinventaris' FROM DUAL UNION SELECT '86-losse opberginventaris' FROM DUAL UNION SELECT '89-losse inventaris' FROM DUAL UNION SELECT '90-terrein' FROM DUAL UNION SELECT '91-grondvoorzieningen' FROM DUAL UNION SELECT '92-opstallen' FROM DUAL UNION SELECT '93-omeheiningen' FROM DUAL UNION SELECT '94-terreinafwerking' FROM DUAL UNION SELECT '95-terreininstallaties, werktuigkundig' FROM DUAL UNION SELECT '96-terreininstallaties, elektrotechnisch' FROM DUAL UNION SELECT '97-terreininrichting standaard' FROM DUAL UNION SELECT '98-terreininrichting bijzonder' FROM DUAL UNION SELECT '99-terrein algemeen' FROM DUAL UNION SELECT '00-indirecte projectvoorzieningen' FROM DUAL; BEGIN v_count_error := 0; header_is_valid := 0; v_count_tot := 0; v_count_import := 0; v_errormsg := 'Eerts fac_imp_ins opschonen'; DELETE fac_imp_ins; COMMIT; v_errormsg := 'Hebben we al NL_SFB disciplines '; SELECT COUNT(*) into v_count FROM ins_discipline where ins_discipline_omschrijving IN ('0-Algemeen','3-Afbouw'); IF v_count=0 THEN v_errormsg := 'NLFSB structuur aanlegen'; FOR rec_dis IN nlsfb_dis LOOP BEGIN SELECT ins_discipline_key INTO v_discipline_key FROM ins_discipline where UPPER(ins_discipline_omschrijving)=UPPER(rec_dis.ins_omsch); EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO ins_tab_discipline (ins_discipline_omschrijving, ins_discipline_min_level) VALUES (rec_dis.ins_omsch, 1) RETURNING ins_discipline_key INTO v_discipline_key; INSERT INTO ins_disc_params (ins_discipline_key, ins_disc_params_autonum) VALUES (v_discipline_key, 2); END; END LOOP; END IF; FOR rec_grp IN nlsfb_grp LOOP SELECT ins_discipline_key INTO v_discipline_key FROM ins_tab_discipline WHERE SUBSTR (ins_discipline_omschrijving, 1, 2) = SUBSTR (rec_grp.groep, 1, 1) || '-'; BEGIN SELECT ins_srtgroep_key INTO v_srtgroep_key FROM ins_srtgroep WHERE UPPER (ins_srtgroep_omschrijving) = UPPER (rec_grp.groep) AND ins_discipline_key = v_discipline_key; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO ins_srtgroep (ins_discipline_key, ins_srtgroep_omschrijving) VALUES (v_discipline_key, rec_grp.groep); END; END LOOP; FOR rec IN c LOOP BEGIN V_count_import := v_count_import +1; v_errormsg := 'Fout FETCH te importeren rij '||v_count_import; v_error:=0; v_newline := rec.fac_imp_file_line; IF v_count_import >1 THEN v_errormsg := 'Fout opvragen K1 te importeren rij '||v_count_import; v_aanduiding := ''; v_gebouw_code:=''; -- Lees alle veldwaarden fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_gebouw_code); v_errormsg := 'Fout opvragen K3 te importeren rij '||v_count_import; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_ins_srtdeel_code); v_errormsg := 'Fout opvragen K4 te importeren rij '||v_count_import; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_ins_deel_opmerking); v_errormsg := 'Fout opvragen K6 te importeren rij '||v_count_import; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_kenmerk1); -- Taak omschrijving v_errormsg := 'Fout opvragen K8 te importeren rij '||v_count_import; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_ins_deel_aantal_text); v_errormsg := 'Fout opvragen K9 te importeren rij '||v_count_import; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_kenmerk2); -- eenheid v_errormsg := 'Fout opvragen K10 te importeren rij '||v_count_import; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_kenmerk3); -- kosten v_errormsg := 'Fout opvragen K16 te importeren rij '||v_count_import; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 16, v_kenmerk4); -- startjaar v_errormsg := 'Fout opvragen K11 te importeren rij '||v_count_import; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 11, v_kenmerk5); -- cyclus IF LENGTH(v_gebouw_code) > 0 -- AND UPPER(v_kenmerk1) NOT LIKE 'HERSTELLEN%' THEN v_errormsg := 'vervangen , door . '||v_count_import; v_ins_srtdeel_code := REPLACE(v_ins_srtdeel_code,',','.'); v_errormsg := 'Tekens uit prijs verwijderen '||v_count_import; v_kenmerk3 := REPLACE(v_kenmerk3,'€ ',''); -- euro teken van prijs halen v_kenmerk3 := REPLACE(v_kenmerk3,'.',''); -- duizentallen verwijderen v_kenmerk3 := REPLACE(v_kenmerk3,',','.'); -- , omzetten naar . -- v_aanduiding := v_ins_deel_omschrijving || '|' || v_kenmerk4; v_count_tot := v_count_tot + 1; v_errormsg := 'Fout bij toevoegen te impoteren v_ins_discipline_omschrijving: ' || v_ins_srtdeel_code; BEGIN SELECT d.ins_discipline_omschrijving,ins_discipline_key INTO d_ins_discipline_omschrijving, v_discipline_key FROM ins_discipline d WHERE SUBSTR (d.ins_discipline_omschrijving, 1, 1) = SUBSTR (v_ins_srtdeel_code, 1, 1) AND d.ins_discipline_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN v_errormsg:='Fout bij achterhalen discipline'; v_error:=1; --d_ins_discipline_omschrijving := SUBSTR (v_ins_srtdeel_code, 1, 1) || '-'|| v_ins_discipline_omschrijving; END; v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtgroep_omschrijving: ' || v_ins_srtdeel_code; d_ins_srtgroep_omschrijving:=''; BEGIN SELECT sg.ins_srtgroep_omschrijving,ins_srtgroep_key INTO d_ins_srtgroep_omschrijving,v_srtgroep_key FROM ins_srtgroep sg WHERE SUBSTR (sg.ins_srtgroep_omschrijving, 1, 2) = SUBSTR (v_ins_srtdeel_code, 1, 2); EXCEPTION WHEN NO_DATA_FOUND THEN v_errormsg:='Fout bij achterhalen srtgroep'; v_error :=1; END; v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtdeel_omschrijving: ' || v_ins_srtdeel_code ||'('||v_count_import||')'; d_ins_srtdeel_omschrijving:=''; SELECT TRIM(omsch) INTO v_ins_srtdeel_omschrijving FROM conn_v_select_nlsfb_grpsoort WHERE code=v_ins_srtdeel_code; BEGIN SELECT sd.ins_srtdeel_omschrijving INTO d_ins_srtdeel_omschrijving FROM ins_srtdeel sd WHERE sd.ins_srtdeel_code = v_ins_srtdeel_code AND sd.ins_srtdeel_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN /* INSERT INTO ins_srtdeel (ins_srtgroep_key, ins_srtdeel_module, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_srtdeel_binding) VALUES (v_srtgroep_key, 'INS', v_ins_srtdeel_code, v_ins_srtdeel_omschrijving, 17); */ d_ins_srtdeel_omschrijving := v_ins_srtdeel_omschrijving; END; v_errormsg := 'Fout bij toevoegen te impoteren v_alg_ruimte_nr: ' || v_alg_ruimte_nr; BEGIN SELECT alg_locatie_code, alg_gebouw_upper, alg_verdieping_code, alg_ruimte_nr INTO v_alg_locatie_code,v_alg_gebouw_code, v_alg_verdieping_volgnr, v_alg_ruimte_nr FROM alg_v_ruimte_gegevens where alg_locatie_code=SUBSTR(v_gebouw_code,3,6) AND alg_verdieping_upper='00' AND alg_ruimte_nr='1'; EXCEPTION WHEN NO_DATA_FOUND THEN v_errormsg:= 'Locatie/Gebouw heet geen Verdipeing00 en RuimteNr 1'; v_error:=1; END; v_errormsg := '1 Fout bij toevoegen te impoteren startjaar('||v_ins_deel_omschrijving||'): ' || v_kenmerk15; v_ins_deel_aanmaak := SYSDATE; /* IF v_kenmerk4 IS NOT NULL THEN IF v_kenmerk4='0' THEN v_ins_deel_aanmaak := to_date('01012022' , 'ddmmyyyy'); ELSE v_startjaar:= to_number(v_kenmerk4); v_cyclus := to_number(v_kenmerk5); IF v_startjaar=2022 THEN v_startjaar:=v_startjaar-v_cyclus; END IF; v_ins_deel_aanmaak := TO_DATE('0101'||v_startjaar,'ddmmyyyy'); END IF; ELSE v_ins_deel_aanmaak := SYSDATE; END IF; */ v_errormsg := 'Fout bij toevoegen te impoteren v_ins_deel_aantal_txt: ' || v_ins_deel_aantal; IF v_ins_deel_aantal_text IS NOT NULL THEN v_ins_deel_aantal_text := REPLACE(v_ins_deel_aantal_text,'.',''); v_ins_deel_aantal_text := REPLACE(v_ins_deel_aantal_text,',','.'); v_ins_deel_aantal := to_number(v_ins_deel_aantal_text); ELSE v_ins_deel_aantal := 1; END IF; v_errormsg := 'Fout bij ophalen ins_deel : '||v_ins_deel_opmerking; v_ins_deel_omschrijving:=''; v_volgnr:=0; v_objectcount:=0; BEGIN SELECT DISTINCT (ins_deel_omschrijving) INTO v_ins_deel_omschrijving FROM FAC_IMP_INS WHERE UPPER(ins_deel_opmerking) = UPPER(v_ins_deel_opmerking) AND alg_locatie_code=SUBSTR(v_gebouw_code,3,6) AND INS_SRTDEEL_CODE=v_ins_srtdeel_code; EXCEPTION WHEN NO_DATA_FOUND THEN SELECT COUNT(*) INTO v_objectCount FROM (SELECT DISTINCT (ins_deel_omschrijving) FROM FAC_IMP_INS WHERE alg_locatie_code=SUBSTR(v_gebouw_code,3,6) AND INS_SRTDEEL_CODE=v_ins_srtdeel_code); v_volgnr:=v_objectcount+1; v_ins_deel_omschrijving := SUBSTR(v_gebouw_code,3,6)||'-'||v_ins_srtdeel_code||'-'||v_volgnr; END; IF v_error=0 THEN INSERT INTO fac_imp_ins (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, ins_deel_aanmaak, ins_deel_aantal, ins_kenmerkwaarde1, -- Taak omschrijving ins_kenmerkwaarde2, -- eenheid ? ins_kenmerkwaarde3, -- kosten ? ins_kenmerkwaarde4, -- startjaar ins_kenmerkwaarde5, ins_kenmerkwaarde6) -- cyclus VALUES (SUBSTR(d_ins_discipline_omschrijving, 1,60), SUBSTR(d_ins_srtgroep_omschrijving, 1, 60), SUBSTR(v_ins_srtdeel_code,1,10), SUBSTR(v_ins_srtdeel_omschrijving, 1, 100), v_ins_deel_omschrijving, SUBSTR(v_ins_deel_opmerking, 1, 320), SUBSTR(v_gebouw_code,3,6), SUBSTR(v_alg_gebouw_code, 1, 12), v_alg_verdieping_volgnr, SUBSTR(v_alg_ruimte_nr,1,20), v_ins_deel_aanmaak, to_number(v_ins_deel_aantal), v_kenmerk1, v_kenmerk2, v_kenmerk3, v_kenmerk4, v_kenmerk5, v_count_import); COMMIT; ELSE fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint); END IF; ELSE v_errormsg := 'Locatie code '||v_gebouw_code||'-'||v_count_import; fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint); END IF; END IF; EXCEPTION WHEN OTHERS THEN v_errorhint := v_errormsg || ' - ' || v_aanduiding; 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; END LOOP; EXCEPTION WHEN OTHERS THEN v_errorhint := v_errormsg || ' - ' || v_aanduiding; 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; / CREATE OR REPLACE PROCEDURE CONN_UPDATE_ASSETS_INI(p_import_key IN NUMBER) AS CURSOR sel IS SELECT * FROM fac_imp_ins; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); v_errorhint VARCHAR2 (200); v_aanduiding VARCHAR2 (100); v_deel_key NUMBER; v_srtdeel_key NUMBER; v_srtcontrole_key NUMBER; v_srtcontroledl_xcp_key NUMBER; v_taakcat_key NUMBER; v_srtcontrole_omschrijving INS_SRTCONTROLE.INS_SRTCONTROLE_OMSCHRIJVING%TYPE; v_srtcontrole_periode INS_SRTCONTROLE.INS_SRTCONTROLE_PERIODE%TYPE; v_srtcontrole_materiaal INS_SRTCONTROLE.INS_SRTCONTROLE_MATERIAAL%TYPE; v_srtcontrole_percentage INS_SRTCONTROLE.INS_SRTCONTROLE_PERCENTAGE%TYPE; v_srtcontrole_level INS_SRTCONTROLE.INS_SRTCONTROLE_LEVEL%TYPE; v_percentage NUMBER; v_materiaal INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_MATERIA%TYPE; ins_deel_key NUMBER; ins_srtdeel_key NUMBER; v_count NUMBER; v_error NUMBER; v_taak_cyclus NUMBER; v_taak_afmeld_date DATE; v_taak_afmeld_jaar NUMBER; v_taak_nextyear NUMBER; v_xcprecords NUMBER; BEGIN fac_update_ins(p_import_key); v_count:=0; -- LOOP Over alle geimporteerde objecten FOR rec IN sel LOOP v_error:=0; BEGIN v_count:=v_count+1; -- volgens mij is deze niet meer nodig v_materiaal := FAC.safe_to_number (rec.INS_KENMERKWAARDE3); -- Haal het object op v_errorhint := 'Zoek object'; SELECT ins_deel_key, ins_srtdeel_key INTO v_deel_key, v_srtdeel_key FROM ins_deel WHERE ins_deel_omschrijving = rec.ins_deel_omschrijving AND ins_deel_verwijder IS NULL; --Haal de taakgroep op v_errorhint := 'Problemen bij ophalen taakcategorie'; SELECT ins_discipline_key INTO v_taakcat_key FROM INS_TAB_DISCIPLINE WHERE UPPER(ins_discipline_omschrijving) = 'MJOB' AND ins_discipline_module='CTR' AND ins_discipline_verwijder IS NULL; --v_taakcat_key:=2621; -- MJOB v_taak_cyclus := TO_NUMBER(COALESCE(rec.ins_kenmerkwaarde5,0)); v_taak_nextyear := TO_NUMBER(rec.ins_kenmerkwaarde4); IF (v_taak_cyclus=0 AND v_taak_nextyear>=2022) OR (v_taak_cyclus <> 0 AND v_taak_nextyear <> 0) THEN BEGIN IF v_taak_cyclus=1 AND v_taak_nextyear <=2022 THEN v_taak_afmeld_jaar := 2022; ELSE --v_taak_afmeld_jaar := v_taak_nextyear - v_taak_cyclus; v_taak_afmeld_jaar := v_taak_nextyear; END IF; v_taak_afmeld_date := TO_DATE('0101'||v_taak_afmeld_jaar,'ddmmyyyy'); --v_srtcontrole_omschrijving:=''; v_srtcontrole_omschrijving:= SUBSTR(rec.ins_kenmerkwaarde1,0,50); v_srtcontrole_omschrijving:=v_srtcontrole_omschrijving || '-'|| rec.ins_srtdeel_code; -- Heb ik deze srtcontrole al SELECT ins_srtcontrole_key, ins_srtcontrole_periode, ins_srtcontrole_materiaal, ins_srtcontrole_percentage INTO v_srtcontrole_key, v_srtcontrole_periode, v_srtcontrole_materiaal, v_srtcontrole_percentage FROM ins_srtcontrole WHERE ins_srtinstallatie_key = v_srtdeel_key AND ins_srtcontrole_niveau = 'S' AND ctr_discipline_key = v_taakcat_key AND ins_srtcontrole_omschrijving=v_srtcontrole_omschrijving; -- srtcontrole is er . -- Wijkt deze af van de srtcontrole op begied van periode, materiaal -- IF v_srtcontrole_periode <> COALESCE (TO_NUMBER (rec.ins_kenmerkwaarde12),0) -- OR v_srtcontrole_materiaal <> v_materiaal -- THEN IF v_taak_cyclus=0 THEN v_taak_cyclus:=99; END IF; -- Controle of er al een xcp record vor dit ins_del srtcontrole al aanwezig is. SELECT COUNT(*) INTO v_xcprecords FROM ins_srtcontroledl_xcp WHERE ins_srtcontrole_key=v_srtcontrole_key AND ins_deel_key=v_deel_key; IF v_xcprecords=0 THEN INSERT INTO ins_srtcontroledl_xcp (ins_srtcontrole_key, ins_deel_key, ins_srtcontroledl_xcp_aantal, ins_srtcontroledl_xcp_eenheid, ins_srtcontroledl_xcp_periode, ins_srtcontroledl_xcp_materia, ins_srtcontroledl_xcp_startdat, ins_srtcontroledl_xcp_aanteh) VALUES (v_srtcontrole_key, v_deel_key, rec.ins_deel_aantal, 4, v_taak_cyclus, v_materiaal, v_taak_afmeld_date, rec.ins_kenmerkwaarde2); END IF; -- END IF; EXCEPTION WHEN NO_DATA_FOUND THEN v_errorhint := 'Bepalen level'; v_srtcontrole_level := 10; v_srtcontrole_percentage:=0; v_srtcontrole_omschrijving:= SUBSTR(rec.ins_kenmerkwaarde1,0,50); v_srtcontrole_omschrijving:=v_srtcontrole_omschrijving || '-'|| rec.ins_srtdeel_code; IF v_taak_cyclus=0 THEN v_taak_cyclus:=99; END IF; v_errorhint := 'Aanmaken srtcontrole'; fac.imp_writelog (p_import_key, 'W', v_count||'-'||v_taak_cyclus||-v_taak_nextyear, v_errorhint); -- nu moet we een ins_srtcontrole aanmaken INSERT INTO ins_srtcontrole ( ins_srtinstallatie_key, ins_srtcontrole_niveau, ins_srtcontrole_omschrijving, ctr_discipline_key, ins_Srtcontrole_periode, ins_srtcontrole_eenheid, ins_srtcontrole_level ) VALUES ( v_srtdeel_key, 'S', v_srtcontrole_omschrijving, v_taakcat_key, 0, 4, -- Jaarlijks v_srtcontrole_level ) RETURNING ins_srtcontrole_key INTO v_srtcontrole_key; INSERT INTO ins_srtcontroledl_xcp ( ins_srtcontrole_key, ins_srtcontroledl_xcp_materia, ins_srtcontroledl_xcp_periode, ins_srtcontroledl_xcp_eenheid, ins_srtcontroledl_xcp_aantal, ins_deel_key, ins_srtcontroledl_xcp_startdat, ins_srtcontroledl_xcp_aanteh) VALUES (v_srtcontrole_key, v_materiaal, v_taak_cyclus, 4, rec.ins_deel_aantal, v_deel_key, v_taak_afmeld_date, rec.ins_kenmerkwaarde2) RETURNING ins_srtcontroledl_xcp_key INTO v_srtcontroledl_xcp_key; COMMIT; WHEN OTHERS THEN v_errorhint := v_errormsg || ' - ' || v_aanduiding; 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_count||'-'||rec.ins_deel_omschrijving||'-'||v_errormsg, v_errorhint); END; END IF; EXCEPTION WHEN OTHERS THEN v_errorhint := v_errormsg || ' - ' || v_aanduiding; 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_count||'-'||v_errormsg, v_errorhint); END; END LOOP; END; / -- Einde CONN_UPDATE_ASSETS -- Migratie Views -- Export contract bijlages CREATE OR REPLACE FORCE VIEW CONN_V_RAP_EXP_CNT_BIJLAGEN ( module, contract_key, contract_nr, contract_nr_extern, contractsoort, srtkenmerk, fac_bijlage_key, filenaam, directory ) AS SELECT 'CNT', c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_nummer, csd.ins_discipline_omschrijving contractsoort, ck.cnt_kenmerk_omschrijving, fb.fac_bijlagen_key, fb.fac_bijlagen_filename filename, fb.fac_bijlagen_disk_directory FROM cnt_srtkenmerk csk, cnt_kenmerk ck, fac_bijlagen fb, cnt_contract c, cnt_v_aanwezigdiscipline csd WHERE csk.cnt_srtkenmerk_kenmerktype='M' AND ck.cnt_srtkenmerk_key = csk.cnt_srtkenmerk_key AND fb.fac_bijlagen_kenmerk_key=ck.cnt_kenmerk_key AND fb.fac_bijlagen_verwijder IS NULL AND c.cnt_contract_key = fb.fac_bijlagen_refkey AND c.cnt_contract_verwijder IS NULL AND csd.ins_discipline_key = c.ins_discipline_key; CREATE OR REPLACE VIEW CONN_V_TAKEN_BIJLAGES ( discipline, groep, objectsoort, objectid, opmerking, object_aanmaak, object_vervaldatum, srtcontrole, srtcontrole_periode, srtcontrole_eenheid, controle_datum, controle_status, controle_behandelaar, controle_opmerking, bijlage_key, object_bijlages, bijlage_directory ) AS SELECT disc.ins_discipline_omschrijving discipline, isg.ins_srtgroep_omschrijving groep, id.ins_srtdeel_omschrijving objectsoort, i.ins_deel_omschrijving objectid, i.ins_deel_opmerking opmerking, i.ins_deel_aanmaak object_aanmaak, i.ins_deel_vervaldatum object_vervaldatum, isc.ins_srtcontrole_omschrijving srtcontrole, isc.ins_srtcontrole_periode srtcontrole_periode, DECODE (isc.ins_srtcontrole_eenheid, 1, 'Dagen', 'Jaren') srtcontrole_eenheid, idc.ins_deelsrtcontrole_datum controle_datum, DECODE (idc.ins_deelsrtcontrole_status, 0, 'Ingepland', 2, 'Gestart/In behandeling', 5, 'Afgemeld/Gereed gemeld', 6, 'Afgerond', 'Onbekend') controle_status, p.prs_perslid_naam_friendly controle_behandelaar, idc.ins_deelsrtcontrole_opmerking controle_opmerking, fac.fac_bijlagen_key, fac.fac_bijlagen_filename object_bijlages, fac.fac_bijlagen_disk_directory FROM ins_deelsrtcontrole idc, ins_deel i, ins_srtdeel id, ins_srtgroep isg, ins_discipline disc, ins_srtcontrole isc, ins_srtkenmerk isk, ins_kenmerk ikm, fac_bijlagen fac, prs_v_perslid_fullnames_all p WHERE isk.ins_srtkenmerk_omschrijving = 'Documenten' AND isk.ins_srtkenmerk_kenmerktype = 'M' AND ikm.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND fac.fac_bijlagen_kenmerk_key = ikm.ins_kenmerk_key AND fac.fac_bijlagen_refkey = i.ins_deel_key AND idc.INS_DEEL_KEY = i.ins_deel_key AND i.ins_deel_verwijder IS NULL AND isc.ins_srtcontrole_key = idc.ins_srtcontrole_key AND p.prs_perslid_key = idc.prs_perslid_key AND id.ins_srtdeel_key = i.ins_srtdeel_key AND isg.ins_srtgroep_key = id.ins_srtgroep_key AND disc.ins_discipline_key = isg.ins_discipline_key; -- Export object bijlages CREATE OR REPLACE VIEW CONN_V_TAKEN_BIJLAGES_ALL ( objectID, discipline, groep, objectsoort, locatie_code, gebouw_naam, srt_controle, periode, eenheid, controle_datum, controle_opmerking, controle_status, srt_document, fac_bijlagen_filename, fac_bijlagen_key, fac_bijlagen_zippath ) AS SELECT i.ins_deel_omschrijving objectid, i.ins_discipline_omschrijving discipline, i.ins_srtgroep_omschrijving groep, i.ins_srtdeel_omschrijving objectsoort, i.alg_gebouw_code locatie_code, i.alg_gebouw_naam gebouw_naam, isc.ins_srtcontrole_omschrijving srt_controle, isc.ins_srtcontrole_periode periode, DECODE(isc.ins_srtcontrole_eenheid,1, 'Dag', 2,'Maand',3,'Jaar') eenheid, idc.ins_deelsrtcontrole_datum controle_datum, idc.ins_deelsrtcontrole_opmerking controle_opmerking, DECODE(idc.ins_deelsrtcontrole_status,0,'Ingepland',2,'Gestart/In behandeling', 5,'Afgemeld/Gereed gemeld', 6,'Afgerond') controle_status, bijlages.srtkenmerk, bijlages.fac_bijlagen_filename fac_bijlagen_filename, bijlages.fac_bijlagen_key fac_bijlagen_key, bijlages.fac_bijlagen_disk_directory||'/'||bijlages.fac_bijlagen_filename fac_bijlagen_zippath FROM ins_v_deel_gegevens i, ins_srtcontrole isc, ins_deelsrtcontrole idc, (SELECT fb.* ,isk.ins_srtkenmerk_omschrijving srtkenmerk FROM fac_bijlagen fb, ins_kenmerk ikm, ins_srtkenmerk isk WHERE fb.fac_bijlagen_kenmerk_key=ikm.ins_kenmerk_key AND isk.ins_srtkenmerk_key = ikm.ins_srtkenmerk_key AND isk.ins_srtkenmerk_key IN (1261,1501)) bijlages WHERE i.ins_srtdeel_key = isc.ins_srtinstallatie_key AND idc.ins_deel_key = i.ins_deel_key AND idc.ins_srtcontrole_key = isc.ins_srtcontrole_key AND bijlages.fac_bijlagen_refkey = i.ins_deel_key (+) AND TRUNC(idc.ins_deelsrtcontrole_datum) > TO_DATE('01-01-2014','DD-MM-YYYY') ORDER BY 1; ------ 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