-- -- $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 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; -- View notificatiejob /* Formatted on 20-10-2011 13:44:45 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW conn_v_noti_meterstreminder ( code, sender, receiver, text, key, xkey ) AS SELECT 'OBJINF', NULL, meterstanden_verantwoordelijke, 'U wordt verzocht de meterstanden van locatie ' || alg_locatie_omschrijving || ' in te voeren in Facilitor.', alg_locatie_key, NULL FROM ( SELECT l.alg_locatie_key, COUNT (l.alg_locatie_omschrijving) aantal_objecten, l.alg_locatie_omschrijving, (SELECT alg_onrgoedkenmerk_waarde FROM alg_locatie l, alg_onrgoedkenmerk ogk WHERE l.alg_locatie_key = ogk.alg_onrgoed_key AND ogk.alg_onrgoed_niveau = 'L' AND l.alg_locatie_key = d.ins_alg_locatie_key AND ogk.alg_kenmerk_key = 1280) -- Meterstandverantwoordelijke meterstanden_verantwoordelijke, COUNT((SELECT 'buiten' FROM ins_v_aanwezigkenmerkdeel akd WHERE akd.ins_deel_key = d.ins_deel_key AND akd.ins_kenmerk_key = sk.ins_kenmerk_key AND akd.ins_kenmerkdeel_aanmaak NOT BETWEEN TRUNC(SYSDATE, 'MM') - 10 AND TRUNC(SYSDATE, 'MM') + 14)) buiten, COUNT((SELECT 'binnen' FROM ins_v_aanwezigkenmerkdeel akd WHERE akd.ins_deel_key = d.ins_deel_key AND akd.ins_kenmerk_key = sk.ins_kenmerk_key AND akd.ins_kenmerkdeel_aanmaak BETWEEN TRUNC(SYSDATE, 'MM') - 10 AND TRUNC(SYSDATE, 'MM') + 14)) binnen FROM ins_v_srtdeel_kenmerk sk, ins_v_aanwezigdeel d, ins_srtdeel sd, alg_locatie l WHERE sk.ins_srtdeel_key = sd.ins_srtdeel_key AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND d.ins_alg_locatie_key = l.alg_locatie_key AND sk.ins_kenmerk_meetwaarde = 1 AND sk.ins_srtkenmerk_kenmerktype = 'N' AND (SELECT alg_onrgoedkenmerk_waarde FROM alg_locatie l, alg_onrgoedkenmerk ogk WHERE l.alg_locatie_key = ogk.alg_onrgoed_key AND ogk.alg_onrgoed_niveau = 'L' AND l.alg_locatie_key = d.ins_alg_locatie_key AND ogk.alg_kenmerk_key = 1280) IS NOT NULL -- Meterstandverantwoordelijke GROUP BY l.alg_locatie_omschrijving, d.ins_alg_locatie_key, alg_locatie_key) t1 WHERE (t1.binnen = 0 AND t1.buiten > 0) OR (t1.aantal_objecten > (t1.binnen + t1.buiten)) -- Indien er nog geen waarde is ingevuld dan altijd melding ORDER BY 2; -------------------------- -- -- 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; / ------ 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