Files
Customer/CONN/conn.sql
Arthur Egberink 4989dbb8e1 CONN#57009 -- Migratie naar SaaS
svn path=/Customer/trunk/; revision=42501
2019-05-14 10:10:07 +00:00

9308 lines
395 KiB
MySQL
Raw Blame History

--
-- $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<62>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<EFBFBD>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)
|| '</'
|| p_tag
|| '>');
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 (
'<?xml version="1.0" encoding="windows-1252" standalone="yes"?>'
);
add_row ('<basware>');
add_row ('<opdrachtlijst>');
FOR rec IN c1
LOOP
BEGIN
add_row( '<opdracht key='
|| CHR (34)
|| rec.opdrachtnr
|| CHR (34)
|| '>');
add_element ('afmelddatum', rec.afmelddatum);
add_row ('</opdracht>');
-- 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 ('</opdrachtlijst>');
add_row ('</basware>');
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