Files
Customer/CONN/conn.sql
Maarten van der Heide f1c9e2e849 CONN#26766 Import locatiegegevens
svn path=/Customer/trunk/; revision=18443
2013-07-11 12:48:46 +00:00

14164 lines
585 KiB
MySQL
Raw Blame History

-- Script containing customer specific configuration sql statements for CONN: Connexxion
-- (c) 2005-2010 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800710
SET ECHO ON
SPOOL xconn.lst;
/* Formatted on 11-6-2010 16:48:16 (QP5 v5.136.908.31019) */
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#668
--zie onderaan de file
--CONN#662
-- Exporteren van huurcontracten via de knop in het huurmutatiescherm. De geselecteerde mutatie wordt in de tabel
-- CONN_EXP_CONTRACTMUTATIE geschreven. Hierna volgt de dagelijkse export die de regels daadwerkelijk in het exportbestand
-- plaatst.
CREATE OR REPLACE PROCEDURE CONN_EXPORT_HUURMUTATIE (
p_MutatieKey IN NUMBER,
p_LogLevel IN NUMBER)
AS
v_INGANGSDATUM VARCHAR2(20);
v_INDEXERINGSDATUM VARCHAR2(20);
v_INDEXERINGSCODE VARCHAR2(20);
v_INDEXERINGSMETHODE VARCHAR2(20);
v_HUURDERNUMMER VARCHAR2(20);
v_BUDGETCODE VARCHAR2(20);
v_COMPLEXNUMMER VARCHAR2(20);
v_EENHEIDSNUMMER VARCHAR2(83);
v_FACTUURDEBITEUR VARCHAR2(20);
v_PROLONGATIETERMIJN VARCHAR2(20);
v_TOTAAL NUMBER;
ORACLE_err_num NUMBER;
ORACLE_err_mes VARCHAR2(100);
v_actie VARCHAR2(100);
v_index NUMBER;
CURSOR c_tarief IS
select cnt_contract_key,
aog.ALG_SRTONRGOED_CODE,
aog.ALG_SRTONRGOED_PRIJS,
sum(cnt_contract_onrgoed_opp) opp
from (select cnt_contract_key
, alg_srtonrgoed_key
, alg_onrgoed_niveau
, cnt_contract_onrgoed_opp
from cnt_contract_onrgoed
where cnt_mld_melding_key is not null
union all
select cogo.cnt_contract_key
, cogo.alg_srtonrgoed_key
, cogo.alg_onrgoed_niveau
, cogo.cnt_contract_onrgoed_opp - nvl(cogm.cnt_contract_onrgoed_opp,0) cnt_contract_onrgoed_opp
from cnt_contract_onrgoed cogo, cnt_contract_onrgoed cogm
where cogm.cnt_contract_onrgoed_key_org(+) = cogo.cnt_contract_onrgoed_key
and cogo.cnt_mld_melding_key is null
) contract
, alg_v_allsrtonrgoed aog
where cnt_contract_key in (
select cnt_contract_key
from (
select cog.cnt_contract_key,
cogm.cnt_mld_melding_key cnt_mld_melding_key
from cnt_contract_onrgoed cog
, cnt_contract_onrgoed cogm
where cogm.cnt_contract_onrgoed_key_org = cog.cnt_contract_onrgoed_key
union
select cog.cnt_contract_key
, cnt_mld_melding_key
from cnt_contract_onrgoed cog
)
where cnt_mld_melding_key = p_MutatieKey
)
and aog.alg_srtonrgoed_key = contract.alg_srtonrgoed_key
and aog.alg_type = contract.alg_onrgoed_niveau
group by contract.alg_srtonrgoed_key,
cnt_contract_key,
aog.ALG_SRTONRGOED_CODE,
aog.ALG_SRTONRGOED_PRIJS
order by cnt_contract_key;
v_TariefRec c_Tarief%ROWTYPE;
v_CNT_CONTRACT_KEY NUMBER(10);
BEGIN
v_actie := 'idle';
v_index := 0;
DBMS_OUTPUT.put_line('Before Select MLD_MELDING_KEY');
BEGIN
SELECT NVL(km.MLD_KENMERKMELDING_WAARDE, '')
INTO v_INGANGSDATUM
FROM MLD_KENMERKMELDING km
WHERE km.MLD_MELDING_KEY = p_MutatieKey
AND km.MLD_KENMERK_KEY = 781;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_INGANGSDATUM := NULL;
END;
DBMS_OUTPUT.put_line('Before Select 1621');
BEGIN
SELECT NVL(km.MLD_KENMERKMELDING_WAARDE, '')
INTO v_INDEXERINGSDATUM
FROM MLD_KENMERKMELDING km
WHERE km.MLD_MELDING_KEY = p_MutatieKey
AND km.MLD_KENMERK_KEY = 1621;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_INDEXERINGSDATUM := NULL;
END;
DBMS_OUTPUT.put_line('Before Select 1625');
BEGIN
SELECT NVL(fd.FAC_USRDATA_CODE, '')
INTO v_INDEXERINGSCODE
FROM MLD_KENMERKMELDING km
, FAC_USRDATA fd
WHERE km.MLD_MELDING_KEY = p_MutatieKey
AND fac.safe_to_number(km.MLD_KENMERKMELDING_WAARDE) = fd.FAC_USRDATA_KEY
AND km.MLD_KENMERK_KEY = 1625;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_INDEXERINGSCODE := NULL;
END;
DBMS_OUTPUT.put_line('Before Select 1622');
BEGIN
SELECT NVL(fd.FAC_USRDATA_CODE, '')
INTO v_INDEXERINGSMETHODE
FROM MLD_KENMERKMELDING km
, FAC_USRDATA fd
WHERE km.MLD_MELDING_KEY = p_MutatieKey
AND fac.safe_to_number(km.MLD_KENMERKMELDING_WAARDE) = fd.FAC_USRDATA_KEY
AND km.MLD_KENMERK_KEY = 1622;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_INDEXERINGSMETHODE := NULL;
END;
DBMS_OUTPUT.put_line('Before Select 1641');
BEGIN
SELECT NVL(fd.FAC_USRDATA_CODE, '')
INTO v_PROLONGATIETERMIJN
FROM MLD_KENMERKMELDING km
, FAC_USRDATA fd
WHERE km.MLD_MELDING_KEY = p_MutatieKey
AND fac.safe_to_number(km.MLD_KENMERKMELDING_WAARDE) = fd.FAC_USRDATA_KEY
AND km.MLD_KENMERK_KEY = 1641;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_PROLONGATIETERMIJN := NULL;
END;
DBMS_OUTPUT.put_line('Before LOOP');
v_CNT_CONTRACT_KEY := -1;
v_actie := 'Bepaling individuele tarieven';
OPEN c_Tarief;
IF c_Tarief%ISOPEN THEN
LOOP
BEGIN
FETCH c_Tarief INTO v_TariefRec;
EXIT WHEN c_Tarief%NOTFOUND;
DBMS_OUTPUT.put_line('Contract key ' || v_TariefRec.cnt_contract_key);
IF v_CNT_CONTRACT_KEY <> v_TariefRec.cnt_contract_key THEN
v_CNT_CONTRACT_KEY := v_TariefRec.cnt_contract_key;
v_actie := 'Bepaling individuele tarieven (contract:' || v_CNT_CONTRACT_KEY || ')';
DBMS_OUTPUT.put_line('1');
select sum(cnt_contract_onrgoed_opp*aog.ALG_SRTONRGOED_PRIJS) prijs
into v_TOTAAL
from (select cnt_contract_key
, alg_srtonrgoed_key
, alg_onrgoed_niveau
, cnt_contract_onrgoed_opp
from cnt_contract_onrgoed
where cnt_mld_melding_key is not null
union all
select cogo.cnt_contract_key
, cogo.alg_srtonrgoed_key
, cogo.alg_onrgoed_niveau
, cogo.cnt_contract_onrgoed_opp - nvl(cogm.cnt_contract_onrgoed_opp,0) cnt_contract_onrgoed_opp
from cnt_contract_onrgoed cogo, cnt_contract_onrgoed cogm
where cogm.cnt_contract_onrgoed_key_org(+) = cogo.cnt_contract_onrgoed_key
and cogo.cnt_mld_melding_key is null
) contract
, alg_v_allsrtonrgoed aog
where cnt_contract_key = v_CNT_CONTRACT_KEY
and aog.alg_srtonrgoed_key = contract.alg_srtonrgoed_key
and aog.alg_type = contract.alg_onrgoed_niveau;
v_actie := 'Bepaling leveranciergegevens (contract:' || v_CNT_CONTRACT_KEY || ')';
DBMS_OUTPUT.put_line('Bepaling leveranciergegevens (contract:' || v_CNT_CONTRACT_KEY || ')');
SELECT substr(prs_leverancier_nr,0,instr(prs_leverancier_nr, '/')-1)
, substr(prs_leverancier_nr,instr(prs_leverancier_nr, '/')+1)
, c.cnt_contract_nummer
INTO v_BUDGETCODE
, v_HUURDERNUMMER
, v_EENHEIDSNUMMER
FROM CNT_CONTRACT c
, PRS_BEDRIJF b
WHERE c.CNT_CONTRACT_KEY = v_cnt_contract_key
AND c.CNT_PRS_BEDRIJF_KEY = b.PRS_BEDRIJF_KEY;
BEGIN
SELECT nvl(prs_kenmerklink_waarde,'')
INTO v_FACTUURDEBITEUR
FROM prs_kenmerklink kl
, CNT_CONTRACT c
, PRS_BEDRIJF b
WHERE c.CNT_CONTRACT_KEY = v_cnt_contract_key
AND c.CNT_PRS_BEDRIJF_KEY = b.PRS_BEDRIJF_KEY
AND kl.prs_link_key = prs_bedrijf_key
and prs_kenmerk_key = 1014;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_FACTUURDEBITEUR := NULL;
END;
END IF;
DBMS_OUTPUT.put_line('Bepaling locatiecode (contract:' || v_CNT_CONTRACT_KEY || ')');
v_actie := 'Bepaling locatiecode (contract:' || v_CNT_CONTRACT_KEY || ')';
SELECT max (l.alg_locatie_code)
INTO v_COMPLEXNUMMER
FROM cnt_contract_onrgoed cog
, alg_v_allonroerendgoed aog
, alg_locatie l
WHERE cog.alg_onrgoed_key = aog.alg_onroerendgoed_keys
AND aog.alg_locatie_key = l.alg_locatie_key
AND cog.cnt_mld_melding_key = p_MutatieKey;
DBMS_OUTPUT.put_line('Toevoegen record (contract:' || v_CNT_CONTRACT_KEY || ', tarieftype:' || v_TariefRec.ALG_SRTONRGOED_CODE || ')');
v_actie := 'Toevoegen record (contract:' || v_CNT_CONTRACT_KEY || ', tarieftype:' || v_TariefRec.ALG_SRTONRGOED_CODE || ')';
v_index := v_index + 1;
INSERT INTO CONN_EXP_CONTRACTMUTATIE
( BEDRIJFSNUMMER
, MUTATIENUMMER
, HUURDERNUMMER
, BUDGETCODE
, COMPLEXNUMMER
, EENHEIDSNUMMER
, INGANGSDATUM
, FACTUURDEBITEUR
, PROLONGATIETERMIJN
, INDEXERINGSDATUM
, INDEXERINGSCODE
, INDEXERINGSMETHODE
, TARIEFTYPE
, AANTAL
, TARIEF
, TOTAAL
, REGELINDEX
) VALUES (
'0011'
, p_MutatieKey || '/' || v_CNT_CONTRACT_KEY
, v_HUURDERNUMMER
, v_BUDGETCODE
, v_COMPLEXNUMMER
, v_EENHEIDSNUMMER
, fac.safe_to_date(v_INGANGSDATUM, 'dd-mm-yyyy')
, v_FACTUURDEBITEUR
, v_PROLONGATIETERMIJN
, fac.safe_to_date(v_INDEXERINGSDATUM,'dd-mm-yyyy')
, v_INDEXERINGSCODE
, v_INDEXERINGSMETHODE
, v_TariefRec.ALG_SRTONRGOED_CODE
, v_TariefRec.opp
, v_TariefRec.ALG_SRTONRGOED_PRIJS
, v_TOTAAL
, v_index
);
END;
END LOOP;
-- toevoegen aantal aan records
UPDATE CONN_EXP_CONTRACTMUTATIE SET AANTALREGELS = v_index WHERE substr(MUTATIENUMMER,0,instr(MUTATIENUMMER, '/')-1) = p_MutatieKey;
DBMS_OUTPUT.put_line('Na update CONN_EXP_CONTRACTMUTATIE (aantalregels)');
v_actie := 'Update mutaties';
UPDATE cnt_contract_onrgoed SET cnt_mutatie_status_key = 6 WHERE cnt_mld_melding_key=p_MutatieKey;
END IF;
commit;
EXCEPTION WHEN OTHERS THEN
ROLLBACK;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog ('EXPORT HUURMUTATIES',
--p_MutatieKey || ' date:' || trunc(sysdate),
'E',
'(ORACLE error ' || to_char(oracle_err_num) || '/' || oracle_err_mes || ')',
v_actie
);
COMMIT;
END CONN_EXPORT_HUURMUTATIE;
/
--CONN#649
CREATE OR REPLACE VIEW conn_v_loctype_huur_detail (locatie_omschrijving,
fclt_f_locatie_code,
locatie_type,
uitbeheer,
hide_f_volgnr,
omschrijving,
tarief,
oppervlakte
)
AS
SELECT alg_locatie_omschrijving, alg_locatie_code,
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key = fac.safe_to_number (k_type.alg_onrgoedkenmerk_waarde)) TYPE,
k_inbeh.alg_onrgoedkenmerk_waarde inbeheer, volgnr, oms, code, oppervlak
FROM alg_v_aanweziglocatie l,
alg_onrgoedkenmerk k_type,
alg_onrgoedkenmerk k_inbeh,
(SELECT alg_locatie_key, 'Kadastraal Oppervlakte' oms, '1' volgnr, '' code,
fac.safe_to_number (k_kad.alg_onrgoedkenmerk_waarde) oppervlak
FROM alg_v_aanweziglocatie l, alg_onrgoedkenmerk k_kad
WHERE l.alg_locatie_key = k_kad.alg_onrgoed_key AND k_kad.alg_kenmerk_key = 1025
UNION ALL
SELECT alg_locatie_key, 'Verhuurbaar Oppervlakte' oms, '2' volgnr, '' code,
fac.safe_to_number (k_verh.alg_onrgoedkenmerk_waarde) oppervlak
FROM alg_v_aanweziglocatie l, alg_onrgoedkenmerk k_verh
WHERE l.alg_locatie_key = k_verh.alg_onrgoed_key AND k_verh.alg_kenmerk_key = 1020
UNION ALL
SELECT alg_locatie_key, leegstand oms, '3' volgnr, code, SUM (oppervlak) oppervlak
FROM (SELECT co.cnt_contract_key, prs_bedrijf_key,
DECODE (prs_bedrijf_key, 13324, 'Leegstand', 'Verhuurd') leegstand,
SUM (cog.cnt_contract_onrgoed_opp) oppervlak, aog.alg_locatie_key alg_locatie_key,
cog.alg_srtonrgoed_key,
DECODE (LPAD (sog.alg_srtonrgoed_code, 1),
'K', 'Kantoor',
'B', 'Werkplaats',
'S', 'Stalling',
'W', 'Werkplaats',
'A', 'Algemene Ruimte',
'P', 'Portocabin',
'T', 'Terrein',
LPAD (sog.alg_srtonrgoed_code, 1)
) code,
cog.alg_onrgoed_niveau
FROM cnt_v_aanwezigcontract co,
cnt_v_cnt_contract_onrgoed_cur cog,
alg_v_allonroerendgoed aog,
alg_v_allsrtonrgoed sog,
prs_v_aanwezigbedrijf b,
cnt_disc_params cdp
WHERE co.cnt_contract_key = cog.cnt_contract_key
AND cog.alg_srtonrgoed_key = sog.alg_srtonrgoed_key
AND cog.alg_onrgoed_key = aog.alg_onroerendgoed_keys
AND sog.alg_type = aog.alg_type
AND co.ins_discipline_key = cdp.cnt_ins_discipline_key
AND cdp.cnt_srtcontract_type = 2
AND cog.alg_onrgoed_niveau = sog.alg_type
AND co.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND UPPER (LPAD (sog.alg_srtonrgoed_code, 1)) <> 'C'
GROUP BY co.cnt_contract_key,
aog.alg_locatie_key,
prs_bedrijf_key,
cog.alg_srtonrgoed_key,
sog.alg_srtonrgoed_code,
cog.alg_onrgoed_niveau)
GROUP BY alg_locatie_key, leegstand, code) verh
WHERE l.alg_locatie_key = k_type.alg_onrgoed_key(+)
AND k_type.alg_kenmerk_key(+) = 1120
AND l.alg_locatie_key = k_inbeh.alg_onrgoed_key(+)
AND k_inbeh.alg_kenmerk_key(+) = 22
AND l.alg_locatie_key = verh.alg_locatie_key
ORDER BY alg_locatie_code, volgnr, oms DESC, code;
/* Formatted on 2006/02/14 22:07 (Formatter Plus v4.8.6) */
CREATE OR REPLACE VIEW conn_v_loctype_huur (fclt_f_locatie_type,
hide_f_volgnr,
fclt_f_omschrijving,
fclt_f_tarief,
oppervlakte
)
AS
SELECT locatie_type, hide_f_volgnr, omschrijving, tarief,
SUM (oppervlakte)
FROM conn_v_loctype_huur_detail
WHERE uitbeheer IS NULL OR TO_DATE (uitbeheer, 'DD-MM-YYYY') > SYSDATE
GROUP BY locatie_type, hide_f_volgnr, omschrijving, tarief;
-- 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 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,
prs_bedrijf_xsl, prs_bedrijf_order_adres, 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
WHERE prs_bedrijf_verwijder IS NULL;
-- verwijderen van de afdelingen uit de view heeft een negatief effect op de performance!!!!
CREATE OR REPLACE VIEW conn_v_locatiehuurder
(omschrijving, huurder_key, complex, huurder, huurdernr, budgetcode)
AS
SELECT complex || '-' || huurder || '-' || budgetcode AS omschrijving,
NVL (fac.safe_to_number (complex), 0) * 100000
+ NVL (fac.safe_to_number (SUBSTR (budgetcode, INSTR (budgetcode, '-') + 1)), 0) AS huurder_key,
complex, huurder, huurdernr, budgetcode
FROM (SELECT alg_locatie_code complex, b.prs_bedrijf_naam huurder, b.huurdernr, b.budgetcode
FROM cnt_v_contract_locatie_geg lg,
alg_locatie l,
conn_v_bedrijf_gegevens b,
prs_afdeling a,
cnt_disc_params cdp
WHERE cdp.cnt_ins_discipline_key = lg.ins_discipline_key
AND cdp.cnt_srtcontract_type = 2
AND l.alg_locatie_key = lg.alg_locatie_key
AND lg.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+)
AND lg.cnt_prs_afdeling_key = a.prs_afdeling_key(+));
--
-- 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_huurcontract_details (fclt_f_locatie,
fclt_f_naam,
fclt_f_nummer,
opp,
prijs,
code
)
AS
SELECT (SELECT alg_locatie_code
FROM alg_locatie
WHERE alg_locatie_key = locatie),
NVL ((SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b, cnt_contract cn
WHERE prs_bedrijf_key = cn.cnt_prs_bedrijf_key
AND contract_key = cn.cnt_contract_key),
''
) AS naam,
NVL ((SELECT b.prs_leverancier_nr
FROM prs_bedrijf b, cnt_contract cn
WHERE prs_bedrijf_key = cn.cnt_prs_bedrijf_key
AND contract_key = cn.cnt_contract_key),
''
) AS nr,
opp, prijs, code
FROM (SELECT contract_key, SUM (cnt_contract_onrgoed_opp) opp, prijs,
code, locatie
FROM (SELECT c.cnt_contract_key AS contract_key,
co.cnt_contract_onrgoed_opp,
NVL
((SELECT alg_srtruimte_prijs
FROM alg_srtruimte
WHERE alg_srtruimte_key =
alg_srtonrgoed_key
AND co.alg_onrgoed_niveau = 'R'),
(SELECT alg_srtterreinsector_prijs
FROM alg_srtterreinsector
WHERE alg_srtterreinsector_key =
alg_srtonrgoed_key)
) AS prijs,
NVL
((SELECT alg_srtruimte_code
FROM alg_srtruimte
WHERE alg_srtruimte_key =
alg_srtonrgoed_key
AND co.alg_onrgoed_niveau = 'R'),
(SELECT alg_srtterreinsector_code
FROM alg_srtterreinsector
WHERE alg_srtterreinsector_key =
alg_srtonrgoed_key)
) AS code,
NVL
((SELECT alg_locatie_key
FROM alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE r.alg_ruimte_key = alg_onrgoed_key
AND r.alg_verdieping_key =
v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key),
(SELECT alg_locatie_key
FROM alg_terreinsector
WHERE alg_terreinsector_key =
alg_onrgoed_key)
) AS locatie
FROM cnt_contract_onrgoed co, cnt_contract c
WHERE c.cnt_contract_key = co.cnt_contract_key
AND cnt_mld_melding_key IS NULL)
GROUP BY code, contract_key, prijs, locatie)
ORDER BY locatie;
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;
create or replace view CONN_V_HUURCONTRACTEN(FCLT_F_LOCATIE, FCLT_F_NAAM, FCLT_F_NUMMER, prijs)
AS
select fclt_f_locatie, fclt_f_naam, fclt_f_nummer, sum (opp * prijs)
from CONN_V_HUURCONTRACT_DETAILS
group by fclt_f_locatie, fclt_f_naam, fclt_f_nummer;
--
-- CONN#415 CONN#492
--
CREATE OR REPLACE VIEW conn_v_locatie_huurder (fclt_f_locatie,
adres,
plaats,
huurder,
huurder_telefoon,
verantwoordelijke,
telefoon
)
AS
SELECT l.alg_locatie_code, l.alg_locatie_adres, l.alg_locatie_plaats, b.prs_bedrijf_naam, b.prs_bedrijf_telefoon,
l.alg_locatie_verantw, l.alg_locatie_verantw_tel
FROM cnt_v_contract_locatie_geg lg, alg_locatie l, prs_bedrijf b, cnt_disc_params cdp
WHERE lg.ins_discipline_key = cdp.cnt_ins_discipline_key
AND cdp.cnt_srtcontract_type = 2
AND l.alg_locatie_key = lg.alg_locatie_key
AND b.prs_bedrijf_key IS NOT NULL
AND lg.cnt_prs_bedrijf_key = b.prs_bedrijf_key;
--
-- 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;
-- RD: Door wie wordt deze view nog gebruikt?
CREATE OR REPLACE VIEW CONN_V_RUIMTEGEG
(ALG_LOCATIE_KEY,ALG_LOCATIE_CODE, ALG_GEBOUW_UPPER, ALG_GEBOUW_KEY, ALG_VERDIEPING_CODE, ALG_RUIMTE_KEY,
ALG_RUIMTE_NR, ALG_RUIMTE_OMSCHRIJVING, ALG_SRTRUIMTE_CODE, HUURDER, HUURDERNR,
CNT_CONTRACT_NUMMER, ALG_SRTRUIMTE_PRIJS, BUDGETCODE, BUSINESSUNIT, RUIMTEOPPERVLAKTE,
GEHUURDEOPPERVLAKTE, INHUUR, UITBEHEER, RUIMTESOORT)
AS
SELECT
vg.ALG_LOCATIE_KEY,
vg.ALG_LOCATIE_CODE,
vg.ALG_GEBOUW_UPPER,
ALG_GEBOUW_KEY,
vg.ALG_VERDIEPING_CODE,
vg.alg_ruimte_key,
vg.ALG_RUIMTE_NR,
vg.ALG_RUIMTE_OMSCHRIJVING ,
(select alg_srtruimte_code from alg_srtruimte asr where asr.alg_srtruimte_key = cogc.alg_srtonrgoed_key) ,
NVL(a.prs_afdeling_omschrijving, b.prs_bedrijf_naam) ,
substr(NVL(a.prs_kostenplaats_nr, b.PRS_LEVERANCIER_NR), instr(NVL(a.prs_kostenplaats_nr, b.PRS_LEVERANCIER_NR),'/')+1,15),
cnt.CNT_CONTRACT_NUMMER ,
(select alg_srtruimte_prijs from alg_srtruimte asr where asr.alg_srtruimte_key = cogc.alg_srtonrgoed_key) ,
substr(NVL(a.prs_kostenplaats_nr, b.PRS_LEVERANCIER_NR),0, instr(NVL(a.prs_kostenplaats_nr, b.PRS_LEVERANCIER_NR),'/')-1),
nvl ( (select prs_afdeling_omschrijving from prs_afdeling abu, prs_v_afdeling_boom ab where ab.prs_afdeling_key1 = abu.prs_afdeling_key and ab.prs_afdeling_key = a.prs_afdeling_key),
(select fac_usrdata_code from fac_usrdata ud, prs_kenmerklink kl where kl.prs_kenmerk_key = 1015 and prs_link_key = b.prs_bedrijf_key and kl.prs_kenmerklink_waarde = ud.fac_usrdata_key)) Businessunit,
(select FAC.safe_To_Number(alg_onrgoedkenmerk_waarde) from alg_onrgoedkenmerk aok
where aok.alg_onrgoed_key = vg.alg_ruimte_key
and aok.alg_kenmerk_key = 106) GetekendOppervlakte,
TO_NUMBER(TO_CHAR(FAC.SAFE_TO_NUMBER(cogc.CNT_CONTRACT_ONRGOED_OPP) ,'99999999D')) ,
DECODE (NVL(inh.alg_onrgoedkenmerk_waarde,''), 130, 'Nee', 129, 'Ja'),
--inh.alg_onrgoedkenmerk_waarde,
uit.alg_onrgoedkenmerk_waarde,
DECODE (substr((select alg_srtruimte_code from alg_srtruimte asr where asr.alg_srtruimte_key = cogc.alg_srtonrgoed_key),0,1),
'A','AR',
'B','B',
'K','K',
'S','S',
'W','W',
'P','P')
FROM
--(SELECT vg.alg_locatie_code, vg.ALG_RUIMTE_OMSCHRIJVING, vg.alg_ruimte_nr, vg.alg_gebouw_upper, vg.alg_verdieping_upper FROM alg_v_ruimte_gegevens VG) ALLE_RUIMTES,
alg_v_ruimte_gegevens VG,
CNT_V_CNT_CONTRACT_ONRGOED_CUR cogc,
CNT_V_AANWEZIGCONTRACT cnt,
(select * from PRS_AFDELING af, prs_kostenplaats ks where af.prs_kostenplaats_key = ks.prs_kostenplaats_key(+)) a,
PRS_BEDRIJF b,
ALG_V_AANWEZIGONRGOEDKENMERK uit, -- uitbeheer datum locatieniveau
ALG_V_AANWEZIGONRGOEDKENMERK inh -- inhuur locatieniveau
WHERE
vg.alg_ruimte_key = cogc.alg_onrgoed_key (+) AND
cogc.cnt_contract_key = cnt.cnt_contract_key (+) AND
cnt.CNT_PRS_AFDELING_KEY = a.prs_afdeling_key (+) AND
cnt.CNT_PRS_BEDRIJF_KEY = b.prs_bedrijf_key (+) AND
vg.alg_locatie_key = uit.alg_onrgoed_key(+) AND
uit.alg_kenmerk_key(+) = 22 AND --uit beheer datum locatieniveau
vg.alg_locatie_key = inh.alg_onrgoed_key(+) AND
inh.alg_kenmerk_key(+) = 10;
/
/* 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;
CREATE OR REPLACE function CONN_GET_CONTRACT_KEY (
p_locatie in VARCHAR2,
p_huurder in VARCHAR2,
p_budgetcode in VARCHAR2)
RETURN NUMBER AS
v_cnt_contract_key NUMBER(10);
BEGIN
BEGIN
select distinct cnt_contract_key
into v_cnt_contract_key
from cnt_v_contract_locatie_geg lg
,alg_locatie l
,prs_bedrijf b
where lg.alg_locatie_key = l.alg_locatie_key
and l.alg_locatie_code = p_locatie
and lg.cnt_prs_bedrijf_key = b.prs_bedrijf_key
and b.prs_leverancier_nr = p_budgetcode||'/'||p_huurder
and rownum = 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
RETURN v_cnt_contract_key;
END;
/
CREATE OR REPLACE PROCEDURE CONN_IMPORT_CONTRACTMUTATIE (
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);
v_hint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- De velden op de eerste regel
v_bedrijfsnummer VARCHAR2(30);
v_mutatienummer VARCHAR2(20);
v_complexnummer VARCHAR2(20);
v_eenheidsnummer VARCHAR2(83);
v_huurdernummer VARCHAR2(20);
v_budgetcode VARCHAR2(20);
v_ingangsdatum VARCHAR2(20);
v_indexeringsdatum VARCHAR2(20);
v_brutohuur VARCHAR2(20);
v_invoerdatum VARCHAR2(20);
v_gebeurtenis VARCHAR2(20);
v_tarieftype VARCHAR2(10);
v_ruimtesoort VARCHAR2(10);
v_aantal VARCHAR2(20);
v_tarief VARCHAR2(20);
v_totaal VARCHAR2(20);
v_aantalregels VARCHAR2(20);
CURSOR c_cm
IS
SELECT *
FROM FAC_IMP_FILE
WHERE fac_import_key = p_import_key
ORDER BY FAC_IMP_FILE_INDEX;
v_rec c_cm%ROWTYPE;
BEGIN
-- Init
v_fielddelimitor := ';';
DELETE CONN_IMP_CONTRACTMUTATIE;
OPEN c_cm;
IF c_cm%ISOPEN THEN
LOOP
BEGIN
FETCH c_cm INTO v_rec;
EXIT WHEN c_cm%NOTFOUND;
v_hint := substr('import regel:' || v_rec.fac_imp_file_index || ' inhoud: ' || v_rec.fac_imp_file_line,0,200);
v_newline := v_rec.fac_imp_file_line;
Fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrijfsnummer);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_mutatienummer);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_complexnummer);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_eenheidsnummer);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_huurdernummer);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_budgetcode);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_ingangsdatum);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_indexeringsdatum);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_brutohuur);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_invoerdatum);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_gebeurtenis);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_tarieftype);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_ruimtesoort);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_aantal);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_tarief);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_totaal);
Fac.imp_getfield (v_newline, v_fielddelimitor, v_aantalregels);
INSERT INTO CONN_IMP_CONTRACTMUTATIE
( bedrijfsnummer
, mutatienummer
, complexnummer
, eenheidsnummer
, huurdernummer
, budgetcode
, ingangsdatum
, indexeringsdatum
, brutohuur
, invoerdatum
, gebeurtenis
, tarieftype
, ruimtesoort
, aantal
, tarief
, totaal
, aantalregels
)
VALUES ( substr(v_bedrijfsnummer,1,30)
, substr(v_mutatienummer,1,20)
, substr(v_complexnummer,1,20)
, substr(v_eenheidsnummer,1,83)
, substr(v_huurdernummer,1,20)
, substr(v_budgetcode,1,20)
, to_date(substr(v_ingangsdatum,1,8),'YYYYMMDD')
, to_date(substr(v_indexeringsdatum,1,8),'YYYYMMDD')
, to_number(substr(v_brutohuur,1,11))
, to_date(substr(v_invoerdatum,1,8),'YYYYMMDD')
, substr(v_gebeurtenis,1,20)
, substr(v_tarieftype,1,10)
, substr(v_ruimtesoort,1,10)
, to_number(substr(v_aantal,1,9))
, to_number(substr(v_tarief,1,13))
, to_number(substr(v_totaal,1,11))
, to_number(substr(v_aantalregels,1,6))
);
COMMIT;
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, v_hint);
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, v_hint);
END;
/
/* Formatted on 11-6-2010 17:03:10 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE conn_update_contractmutatie (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);
v_hintmsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- De velden op de eerste regel
v_alg_srtonrgoed_key NUMBER;
v_alg_srtonrgoed_prijs NUMBER;
v_exp_totaal NUMBER;
v_tot_prijs NUMBER;
v_afwijking NUMBER;
v_alg_type VARCHAR2 (1);
CURSOR c_index
IS
SELECT *
FROM conn_imp_contractmutatie
WHERE gebeurtenis = 'Index'
ORDER BY eenheidsnummer, tarieftype;
v_rec_index c_index%ROWTYPE;
CURSOR c_mutatie
IS
SELECT DISTINCT mutatienummer, brutohuur
FROM conn_imp_contractmutatie
WHERE gebeurtenis = 'Mutatie';
v_rec_mutatie c_mutatie%ROWTYPE;
CURSOR c_mut_index (pmutnummer IN VARCHAR2)
IS
SELECT *
FROM conn_imp_contractmutatie
WHERE mutatienummer = pmutnummer;
BEGIN
-- Init
OPEN c_index;
IF c_index%ISOPEN
THEN
LOOP
BEGIN
FETCH c_index INTO v_rec_index;
EXIT WHEN c_index%NOTFOUND;
BEGIN
v_hintmsg :=
' Complex: '
|| v_rec_index.complexnummer
|| 'Tarieftype: '
|| v_rec_index.tarieftype
|| ' Tarief:'
|| v_rec_index.tarief;
SELECT alg_srtonrgoed_key, alg_srtonrgoed_prijs, alg_type
INTO v_alg_srtonrgoed_key, v_alg_srtonrgoed_prijs, v_alg_type
FROM alg_v_allsrtonrgoed
WHERE alg_srtonrgoed_verwijder IS NULL
AND alg_srtonrgoed_upper = v_rec_index.complexnummer || '-' || UPPER (v_rec_index.tarieftype);
IF v_rec_index.tarief <> v_alg_srtonrgoed_prijs
THEN
IF v_alg_type = 'R'
THEN
UPDATE alg_srtruimte
SET alg_srtruimte_prijs = v_rec_index.tarief
WHERE alg_srtruimte_key = v_alg_srtonrgoed_key;
ELSE
UPDATE alg_srtterreinsector
SET alg_srtterreinsector_prijs = v_rec_index.tarief
WHERE alg_srtterreinsector_key = v_alg_srtonrgoed_key;
END IF;
v_errormsg :=
'Ind: Tarief aangepast. Tarief:'
|| v_rec_index.complexnummer
|| '-'
|| UPPER (v_rec_index.tarieftype)
|| ' Prijs:'
|| v_rec_index.tarief
|| ' Oude prijs:'
|| v_alg_srtonrgoed_prijs;
fac.imp_writelog (p_import_key, 'I', v_errormsg, '');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errormsg :=
'Ind: Kan tarieftype niet vinden. Tarief:'
|| v_rec_index.complexnummer
|| '-'
|| UPPER (v_rec_index.tarieftype);
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Ind: OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hintmsg);
END;
END;
END LOOP;
CLOSE c_index;
COMMIT;
END IF;
v_rec_index := NULL;
OPEN c_mutatie;
IF c_mutatie%ISOPEN
THEN
LOOP
BEGIN
FETCH c_mutatie INTO v_rec_mutatie;
EXIT WHEN c_mutatie%NOTFOUND;
BEGIN
SELECT MAX (totaal)
INTO v_exp_totaal
FROM conn_exp_contractmutatie cec
WHERE cec.mutatienummer = v_rec_mutatie.mutatienummer;
IF v_exp_totaal IS NULL
THEN
v_errormsg :=
'Mut: Kan contractmutatie niet vinden. Mutatie:'
|| v_rec_mutatie.mutatienummer
|| ' Huur:'
|| v_rec_mutatie.brutohuur;
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
ELSE
--Fac.imp_writelog (p_import_key, 'E', 'Else v_exp_totaal: ' || v_exp_totaal, '');
IF v_exp_totaal = 0
THEN
v_afwijking := 0;
ELSE
v_afwijking := TRUNC ( (ABS (v_rec_mutatie.brutohuur - v_exp_totaal) / v_exp_totaal) * 100);
END IF;
IF v_afwijking < 10
THEN
-- update tarieftype vanuit ontvangen mutatie
FOR v_rec_mut_index IN c_mut_index (v_rec_mutatie.mutatienummer)
LOOP
BEGIN
v_hintmsg :=
' Complex: '
|| v_rec_mut_index.complexnummer
|| 'Tarieftype: '
|| v_rec_mut_index.tarieftype
|| ' Tarief:'
|| v_rec_mut_index.tarief;
SELECT alg_srtonrgoed_key, alg_srtonrgoed_prijs, alg_type
INTO v_alg_srtonrgoed_key, v_alg_srtonrgoed_prijs, v_alg_type
FROM alg_v_allsrtonrgoed
WHERE alg_srtonrgoed_verwijder IS NULL
AND alg_srtonrgoed_upper =
v_rec_mut_index.complexnummer || '-' || UPPER (v_rec_mut_index.tarieftype);
IF v_rec_index.tarief <> v_alg_srtonrgoed_prijs
THEN
IF v_alg_type = 'R'
THEN
UPDATE alg_srtruimte
SET alg_srtruimte_prijs = v_rec_mut_index.tarief
WHERE alg_srtruimte_key = v_alg_srtonrgoed_key;
ELSE
UPDATE alg_srtterreinsector
SET alg_srtterreinsector_prijs = v_rec_mut_index.tarief
WHERE alg_srtterreinsector_key = v_alg_srtonrgoed_key;
END IF;
v_errormsg :=
'Mut: Tarief aangepast. Tarief:'
|| v_rec_mut_index.complexnummer
|| '-'
|| UPPER (v_rec_mut_index.tarieftype)
|| ' Prijs:'
|| v_rec_mut_index.tarief
|| ' Oude prijs:'
|| v_alg_srtonrgoed_prijs;
fac.imp_writelog (p_import_key, 'I', v_errormsg, '');
ELSE
v_errormsg :=
'Mut: Tarief NIET aangepast. Tarief:'
|| v_rec_mut_index.complexnummer
|| '-'
|| UPPER (v_rec_mut_index.tarieftype)
|| ' Prijs:'
|| v_rec_mut_index.tarief
|| ' Oude prijs:'
|| v_alg_srtonrgoed_prijs;
fac.imp_writelog (p_import_key, 'I', v_errormsg, '');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errormsg :=
'Mut: Kan tarieftype niet vinden. Tarief:'
|| v_rec_mut_index.complexnummer
|| '-'
|| UPPER (v_rec_mut_index.tarieftype);
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
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, v_hintmsg);
END;
END LOOP;
-- verwijder records uit de export
DELETE conn_exp_contractmutatie
WHERE mutatienummer = v_rec_mutatie.mutatienummer;
-- voor mutatie uit
conn_verwerk_huurmutatie (
p_import_key,
SUBSTR (v_rec_mutatie.mutatienummer, 0, INSTR (v_rec_mutatie.mutatienummer, '/') - 1)
);
UPDATE mld_melding
SET mld_melding_opmerking =
SUBSTR (mld_melding_opmerking || ' Bevestiging ontvangen d.d. ' || SYSDATE, 0, 3000)
WHERE mld_melding_key =
SUBSTR (v_rec_mutatie.mutatienummer, 0, INSTR (v_rec_mutatie.mutatienummer, '/') - 1);
mld.setmeldingstatus (
TO_NUMBER (
SUBSTR (v_rec_mutatie.mutatienummer, 0, INSTR (v_rec_mutatie.mutatienummer, '/') - 1)
),
5,
1042
);
v_errormsg :=
'Mut: Mutatie verwerkt Mutatie: '
|| v_rec_mutatie.mutatienummer
|| ' afwijking:'
|| v_afwijking
|| '% Facilitor bedrag:'
|| v_exp_totaal
|| ' Ontvangen bedrag:'
|| v_rec_mutatie.brutohuur;
fac.imp_writelog (p_import_key, 'I', v_errormsg, '');
COMMIT;
ELSE
-- afwijking is te groot
v_errormsg :=
'Mut: Ontvangen contract mismatch! Mutatie: '
|| v_rec_mutatie.mutatienummer
|| ' afwijking:'
|| v_afwijking
|| '% Facilitor bedrag:'
|| v_exp_totaal
|| ' Ontvangen bedrag:'
|| v_rec_mutatie.brutohuur;
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
UPDATE mld_melding
SET mld_melding_opmerking = SUBSTR (mld_melding_opmerking || ' ' || v_errormsg, 0, 3000)
WHERE mld_melding_key =
SUBSTR (v_rec_mutatie.mutatienummer, 0, INSTR (v_rec_mutatie.mutatienummer, '/') - 1);
UPDATE cnt_contract_onrgoed
SET cnt_mutatie_status_key = 4
WHERE cnt_mld_melding_key || '/' || cnt_contract_key = v_rec_mutatie.mutatienummer;
END IF;
END IF;
END;
END;
END LOOP;
COMMIT;
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, v_hintmsg);
END;
/
-- Procedure CONN_VERWERK_HUURMUTATIE wordt gebruikt door de procedure CONN_UPDATE_CONTRACTMUTATIE
CREATE OR REPLACE procedure CONN_VERWERK_HUURMUTATIE (
p_import_key IN NUMBER,
p_mut_key in NUMBER) AS
ORACLE_err_mes VARCHAR2(300);
v_ErrorMsg VARCHAR2(300);
ORACLE_err_num NUMBER;
CURSOR c1 IS
SELECT ALG_ONRGOED_KEY
,CNT_CONTRACT_ONRGOED_KEY
,NVL(CNT_CONTRACT_ONRGOED_OPP1, 0) AS CNT_CONTRACT_ONRGOED_OPP1
,NVL(CNT_CONTRACT_ONRGOED_OPP2, 0) AS CNT_CONTRACT_ONRGOED_OPP2
,CNT_CONTRACT_ONRGOED_KEY2
,CNT_CONTRACT_KEY
,CNT_CONTRACT_KEY2
,CNT_PRS_BEDRIJF_KEY2
FROM CNT_V_CONTRACT_HUURDER ch
WHERE CNT_MLD_MELDING_KEY = p_mut_key
ORDER BY 1;
CURSOR c2 IS
SELECT cog.CNT_CONTRACT_KEY
,CNT_CONTRACT_ONRGOED_KEY
,TOT_OPP
,cog.ALG_ONRGOED_KEY
FROM CNT_CONTRACT_ONRGOED cog
,(SELECT CNT_CONTRACT_KEY
,ALG_ONRGOED_KEY
,SUM(CNT_CONTRACT_ONRGOED_OPP) AS tot_opp
FROM CNT_CONTRACT_ONRGOED
WHERE CNT_MLD_MELDING_KEY IS NULL
GROUP BY CNT_CONTRACT_KEY, ALG_ONRGOED_KEY
HAVING COUNT(ALG_ONRGOED_KEY) > 1) dup
WHERE cog.CNT_CONTRACT_KEY = dup.CNT_CONTRACT_KEY
AND cog.ALG_ONRGOED_KEY = dup.ALG_ONRGOED_KEY
ORDER BY 1,4;
v_rec c1%rowtype;
v_rec2 c2%rowtype;
v_alg_onrgoed_key_prev NUMBER(10);
v_cnt_contract_key_prev NUMBER(10);
v_remove_contract_key NUMBER(10);
v_count NUMBER(10);
BEGIN
BEGIN
v_remove_contract_key := -1;
dbms_output.put_line('begin'||TO_CHAR(sysdate,'YYMMDD-HHMISS'));
OPEN c1;
IF c1%ISOPEN THEN
LOOP
BEGIN
FETCH c1 INTO v_rec;
EXIT WHEN c1%NOTFOUND;
UPDATE CNT_CONTRACT_ONRGOED
SET CNT_MLD_MELDING_KEY = NULL
,CNT_CONTRACT_ONRGOED_KEY_ORG = NULL
WHERE CNT_CONTRACT_ONRGOED_KEY = v_rec.CNT_CONTRACT_ONRGOED_KEY2;
-- update the original contacts. Variables used for original contracts have a 1 in the variable
-- name.
IF v_rec.CNT_CONTRACT_ONRGOED_KEY IS NOT NULL THEN
--if (! isNaN(cnt_contract_key1)) {
UPDATE CNT_CONTRACT_ONRGOED
SET CNT_CONTRACT_ONRGOED_OPP = CNT_CONTRACT_ONRGOED_OPP - v_rec.CNT_CONTRACT_ONRGOED_OPP2
WHERE CNT_CONTRACT_ONRGOED_KEY = v_rec.CNT_CONTRACT_ONRGOED_KEY;
END IF;
IF v_rec.CNT_PRS_BEDRIJF_KEY2 = 1 THEN
DELETE CNT_CONTRACT_ONRGOED
WHERE CNT_CONTRACT_ONRGOED_KEY = v_rec.CNT_CONTRACT_ONRGOED_KEY2;
v_remove_contract_key := v_rec.CNT_CONTRACT_ONRGOED_KEY;
END IF;
END;
END LOOP;
END IF;
CLOSE c1;
IF v_remove_contract_key <> -1 THEN
SELECT count(*)
INTO v_count
FROM CNT_CONTRACT_ONRGOED
WHERE CNT_CONTRACT_KEY = v_remove_contract_key;
IF v_count = 0 THEN
UPDATE CNT_CONTRACT SET CNT_CONTRACT_LOOPTIJD_TOT = sysdate + 10,
CNT_CONTRACT_LOOPTIJD_VAN = sysdate + 9
WHERE CNT_CONTRACT_KEY = v_remove_contract_key;
UPDATE CNT_CONTRACT SET CNT_CONTRACT_VERWIJDER = sysdate
WHERE CNT_CONTRACT_KEY = v_remove_contract_key;
END IF;
END IF;
dbms_output.put_line('na close c1'||TO_CHAR(sysdate,'YYMMDD-HHMISS'));
--
DELETE CNT_CONTRACT_ONRGOED
WHERE CNT_CONTRACT_ONRGOED_OPP = 0;
dbms_output.put_line('na delete'||TO_CHAR(sysdate,'YYMMDD-HHMISS'));
v_alg_onrgoed_key_prev := -1;
v_cnt_contract_key_prev := -1;
OPEN c2;
IF c2%ISOPEN THEN
LOOP
BEGIN
FETCH c2 INTO v_rec2;
EXIT WHEN c2%NOTFOUND;
IF v_rec2.CNT_CONTRACT_KEY <> v_cnt_contract_key_prev OR
v_rec2.ALG_ONRGOED_KEY <> v_alg_onrgoed_key_prev THEN
-- if (cnt_contract_key != cnt_contract_key_prev || alg_onrgoed_key != alg_onrgoed_key_prev) {
-- update oppervlakte to total
UPDATE CNT_CONTRACT_ONRGOED SET CNT_CONTRACT_ONRGOED_OPP = v_rec2.TOT_OPP
WHERE CNT_CONTRACT_ONRGOED_KEY = v_rec2.CNT_CONTRACT_ONRGOED_KEY;
ELSE
-- delete duplicate records.
DELETE CNT_CONTRACT_ONRGOED
WHERE CNT_CONTRACT_ONRGOED_KEY = v_rec2.CNT_CONTRACT_ONRGOED_KEY;
END IF;
v_cnt_contract_key_prev := v_rec2.CNT_CONTRACT_KEY;
v_alg_onrgoed_key_prev := v_rec2.ALG_ONRGOED_KEY;
END;
END LOOP;
END IF;
CLOSE c2;
dbms_output.put_line('na close c2'||TO_CHAR(sysdate,'YYMMDD-HHMISS'));
COMMIT;
EXCEPTION WHEN OTHERS THEN
dbms_output.put_line('exception'||TO_CHAR(sysdate,'YYMMDD-HHMISS'));
ROLLBACK;
ORACLE_err_num := SQLCODE;
ORACLE_err_mes := SUBSTR(SQLERRM, 1, 100);
v_ErrorMsg := 'Fout tijdens doorvoeren van de mutatie (mutatienr:'||p_mut_key||') (ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || ORACLE_err_mes || '>)';
INSERT INTO IMP_LOG (fac_import_key, IMP_LOG_DATUM, IMP_LOG_STATUS, IMP_LOG_OMSCHRIJVING, IMP_LOG_HINT)
VALUES
(p_import_key, sysdate, 'E', v_ErrorMsg,'Onbekend');
COMMIT;
END;
END;
/
CREATE OR REPLACE VIEW CONN_V_BAD_PERMAN_IMPORT
(NAAM, NUMMER, AFD_CODE, AFDELING, REGIO,
DIVISIE)
AS
SELECT pf.prs_perslid_naam_full, p.prs_perslid_nr, oac.afd_code,
oac.afd_omschrijving, oac.dvb_k_regio_label, oac.dvb_divisie_label
FROM PRS_PERSLID p,
PRS_AFDELING a,
oac.oac_stg_distribute_medewerker oac,
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_nr = oac.dvb_personeelsnummer
AND a.prs_afdeling_upper = 'PERMAN'
AND UPPER (a.prs_afdeling_omschrijving) = 'PERMAN NIEUW'
AND ind_toekomstmutatie = 'N';
-- CONN#581
CREATE OR REPLACE VIEW conn_v_bedrijf
AS
SELECT prs_bedrijf_naam fclt_f_Bedrijfsnaam,
prs_leverancier_nr fclt_f_Leveranciersnummer, prs_bedrijf_email,
prs_bedrijf_order_adres, prs_bedrijf_xsl
FROM prs_bedrijf
WHERE 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;
-- PRS KENMERK TRIGGERS
CREATE OR REPLACE TRIGGER conn_prs_kenmerklink_d
AFTER DELETE
ON prs_kenmerklink
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_fout VARCHAR2 (2048);
BEGIN
IF (:old.prs_kenmerk_key = 1200) THEN
update CONN_EXP_DEBITEUR
set Blokering = 'JA'
, Mutatiedatumtijd = sysdate
where prs_key = :old.prs_link_key;
END IF;
EXCEPTION
WHEN OTHERS THEN
v_fout := SQLERRM;
END;
/
CREATE OR REPLACE TRIGGER conn_prs_kenmerklink_d2
AFTER DELETE
ON prs_kenmerklink
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_fout VARCHAR2 (2048);
v_aantal NUMBER (1);
v_perslid_nr prs_perslid.prs_perslid_nr%type;
BEGIN
IF (:old.prs_kenmerk_key = 1080) THEN
BEGIN
BEGIN
select max(prs_perslid_nr)
into v_perslid_nr
from prs_perslid
where prs_perslid_verwijder is null
and prs_perslid_key = :old.prs_link_key;
EXCEPTION
WHEN OTHERS
THEN
v_perslid_nr := '';
END;
-- Faxnr
IF (:old.prs_kenmerk_key = 1080) THEN
update CONN_EXP_TELEFOON
set FAXNR = ''
where PERSONEELSNR = v_perslid_nr;
END IF;
END;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_fout := SQLERRM;
END;
/
CREATE OR REPLACE TRIGGER conn_prs_kenmerklink_u_i
AFTER UPDATE OR INSERT
ON PRS_KENMERKLINK
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_fout VARCHAR2 (2048);
v_message VARCHAR2(32);
v_aantal NUMBER (1);
v_kenmerklink_waarde PRS_KENMERKLINK.prs_kenmerklink_waarde%TYPE;
v_link_key PRS_PERSLID.prs_perslid_key%TYPE;
v_perslid_nr PRS_PERSLID.prs_perslid_nr%TYPE;
BEGIN
IF :NEW.prs_kenmerklink_verwijder IS NULL THEN
v_kenmerklink_waarde := :NEW.prs_kenmerklink_waarde;
ELSE
v_kenmerklink_waarde := '';
END IF;
IF (:NEW.prs_kenmerk_key = 1080) -- Faxnr (type = P)
THEN
BEGIN
BEGIN
v_perslid_nr := '';
v_link_key := -1;
IF :NEW.prs_kenmerklink_niveau = 'P' THEN
SELECT prs_perslid_nr
INTO v_perslid_nr
FROM PRS_PERSLID
WHERE prs_perslid_verwijder IS NULL
AND prs_perslid_key = :NEW.prs_link_key;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_perslid_nr := v_perslid_nr;
END;
-- Faxnr (type = P)
IF (:NEW.prs_kenmerk_key = 1080) THEN
UPDATE CONN_EXP_TELEFOON
SET FAXNR = SUBSTR(v_kenmerklink_waarde,1,15)
WHERE PERSONEELSNR = v_perslid_nr;
END IF;
END;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_fout := SQLERRM;
END;
/
CREATE OR REPLACE TRIGGER conn_prs_kenmerklink_u_i2
AFTER UPDATE OR INSERT
ON PRS_KENMERKLINK
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_fout VARCHAR2 (2048);
v_message VARCHAR2(32);
v_aantal NUMBER (1);
v_kenmerklink_waarde PRS_KENMERKLINK.prs_kenmerklink_waarde%TYPE;
v_perslid_nr PRS_PERSLID.prs_perslid_nr%TYPE;
v_link_key PRS_PERSLID.prs_perslid_key%TYPE;
v_Huurdernummer VARCHAR2(30);
v_Budgetcode VARCHAR2(30);
v_Factureren_aan VARCHAR2(30);
v_Debiteur VARCHAR2(60);
v_Adres VARCHAR2(35);
v_Postcode VARCHAR2(12);
v_Plaats VARCHAR2(30);
v_Land VARCHAR2(30);
v_Telefoon VARCHAR2(20);
v_Fax VARCHAR2(20);
v_Email VARCHAR2(80);
v_Huurder NUMBER(1);
v_count NUMBER(1);
v_bedrijf_key NUMBER(10);
BEGIN
-- Init
IF :NEW.prs_kenmerklink_verwijder IS NULL THEN
v_kenmerklink_waarde := :NEW.prs_kenmerklink_waarde;
ELSE
v_kenmerklink_waarde := '';
IF (:old.prs_kenmerk_key = 1200) THEN
update CONN_EXP_DEBITEUR
set Blokering = 'JA'
, Mutatiedatumtijd = sysdate
where prs_key = :old.prs_link_key;
END IF;
END IF;
v_link_key := :NEW.prs_link_key;
IF (:NEW.prs_kenmerk_key = 1200) THEN
BEGIN
SELECT huurdernummer, budgetcode, factureren_aan
INTO v_Huurdernummer, v_Budgetcode, v_Factureren_aan
FROM conn_exp_debiteur_tmp
WHERE prs_bedrijf_key = v_link_key;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_Huurdernummer := null;
v_Budgetcode := null;
v_Factureren_aan := null;
END;
DELETE FROM conn_exp_debiteur_tmp WHERE prs_bedrijf_key = v_link_key;
SELECT SUBSTR(NVL(PRS_BEDRIJF_NAAM,''),1,60)
, SUBSTR(NVL(PRS_BEDRIJF_POST_ADRES,''),1,35)
, SUBSTR(NVL(PRS_BEDRIJF_POST_POSTCODE,''),1,12)
, SUBSTR(NVL(PRS_BEDRIJF_POST_PLAATS,''),1,30)
, SUBSTR(NVL(PRS_BEDRIJF_POST_LAND,''),1,30)
, SUBSTR(NVL(PRS_BEDRIJF_TELEFOON,''),1,20)
, SUBSTR(NVL(PRS_BEDRIJF_FAX,''),1,20)
, SUBSTR(NVL(PRS_BEDRIJF_EMAIL,''),1,80)
, NVL(PRS_BEDRIJF_HUURDER,0)
INTO v_Debiteur
, v_Adres
, v_Postcode
, v_Plaats
, v_Land
, v_Telefoon
, v_Fax
, v_Email
, v_Huurder
FROM PRS_BEDRIJF
WHERE PRS_BEDRIJF_KEY = v_link_key;
SELECT count(*)
INTO v_count
FROM CONN_EXP_DEBITEUR
WHERE prs_key = v_link_key;
IF v_Huurder = 1 THEN
IF (v_count = 0) THEN
insert into CONN_EXP_DEBITEUR
(prs_key
,prs_type
,Debiteurnaam
,Adres
,Postcode
,Plaats
,Land
,Telefoon
,Fax
,Email
,Blokering
,Mutatiedatumtijd
,Huurdernummer
,Budgetcode
,Factureren_aan)
values
(v_link_key
,'B'
,v_Debiteur
,v_Adres
,v_Postcode
,v_Plaats
,v_Land
,v_Telefoon
,v_Fax
,v_Email
,'NEE'
,sysdate
,v_Huurdernummer
,v_Budgetcode
,v_Factureren_aan);
ELSE
update CONN_EXP_DEBITEUR
set Debiteurnaam = v_Debiteur
,Adres = v_Adres
,Postcode = v_Postcode
,Plaats = v_Plaats
,Land = v_Land
,Telefoon = v_Telefoon
,Fax = v_Fax
,Email = v_Email
,Blokering = 'NEE'
,Huurdernummer = v_Huurdernummer
,Budgetcode = v_Budgetcode
,Factureren_aan = v_Factureren_aan
,Mutatiedatumtijd = sysdate
where prs_key = v_link_key;
END IF;
ELSE
-- geen huurder (meer)
update CONN_EXP_DEBITEUR
set Blokering = 'JA'
, Mutatiedatumtijd = sysdate
where prs_key = :old.prs_link_key;
END IF;
ELSE
BEGIN
SELECT prs_bedrijf_key
INTO v_bedrijf_key
FROM conn_exp_debiteur_tmp
WHERE prs_bedrijf_key = v_link_key;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_bedrijf_key := null;
END;
END IF;
IF (:NEW.prs_kenmerk_key = 1010) THEN
IF v_bedrijf_key <> -1 THEN
UPDATE CONN_EXP_DEBITEUR_TMP
SET huurdernummer = SUBSTR(v_kenmerklink_waarde,1,20)
WHERE prs_bedrijf_key = v_link_key;
ELSE
INSERT INTO CONN_EXP_DEBITEUR_TMP
(prs_bedrijf_key, huurdernummer)
values
(v_link_key, SUBSTR(v_kenmerklink_waarde,1,20));
END IF;
UPDATE PRS_BEDRIJF
SET prs_leverancier_nr = SUBSTR(prs_leverancier_nr||'/',1,50)
WHERE prs_bedrijf_key = v_link_key
AND ( (INSTR(prs_leverancier_nr,'/') = 0) OR (prs_leverancier_nr IS NULL) );
UPDATE PRS_BEDRIJF
SET prs_leverancier_nr =
SUBSTR(
REPLACE(NVL(prs_leverancier_nr,''),
SUBSTR(NVL(prs_leverancier_nr,''),INSTR(NVL(prs_leverancier_nr,''),'/')),
'/'||SUBSTR(v_kenmerklink_waarde,1,20)
)
,1,50)
WHERE prs_bedrijf_key = v_link_key;
END IF;
IF (:NEW.prs_kenmerk_key = 1011) THEN
IF v_bedrijf_key <> -1 THEN
UPDATE CONN_EXP_DEBITEUR_TMP
SET budgetcode = SUBSTR(v_kenmerklink_waarde,1,20)
WHERE prs_bedrijf_key = v_link_key;
ELSE
INSERT INTO CONN_EXP_DEBITEUR_TMP
(prs_bedrijf_key, budgetcode)
values
(v_link_key, SUBSTR(v_kenmerklink_waarde,1,20));
END IF;
UPDATE PRS_BEDRIJF
SET prs_leverancier_nr = SUBSTR(prs_leverancier_nr||'/',1,50)
WHERE prs_bedrijf_key = v_link_key
AND ( (INSTR(prs_leverancier_nr,'/') = 0) OR (prs_leverancier_nr IS NULL) );
UPDATE PRS_BEDRIJF
SET prs_leverancier_nr =
SUBSTR(
REPLACE(NVL(prs_leverancier_nr,''),
SUBSTR(NVL(prs_leverancier_nr,''),1,INSTR(NVL(prs_leverancier_nr,''),'/')),
SUBSTR(v_kenmerklink_waarde,1,20)||'/'
)
,1,50)
WHERE prs_bedrijf_key = v_link_key;
END IF;
-- Factureren aan (type = B)
IF (:NEW.prs_kenmerk_key = 1014) THEN
IF v_bedrijf_key <> -1 THEN
UPDATE CONN_EXP_DEBITEUR_TMP
SET factureren_aan = SUBSTR(v_kenmerklink_waarde,1,20)
WHERE prs_bedrijf_key = v_link_key;
ELSE
INSERT INTO CONN_EXP_DEBITEUR_TMP
(prs_bedrijf_key, factureren_aan)
values
(v_link_key, SUBSTR(v_kenmerklink_waarde,1,20));
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_fout := SQLERRM;
END;
/
CREATE OR REPLACE TRIGGER conn_prs_perslid_d
AFTER DELETE
ON prs_perslid
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_fout VARCHAR2 (2048);
v_aantal NUMBER (1);
BEGIN
delete
from CONN_EXP_TELEFOON
where PERSONEELSNR = :old.prs_perslid_nr;
EXCEPTION
WHEN OTHERS
THEN
v_fout := SQLERRM;
END;
/
CREATE OR REPLACE TRIGGER conn_prs_perslid_u_i
AFTER UPDATE OR INSERT
ON prs_perslid
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_aantal NUMBER (1);
v_fout VARCHAR2 (2048);
v_prs_kenmerk_fax_key prs_kenmerk.prs_kenmerk_key%TYPE;
v_prs_kenmerklink_fax prs_kenmerklink.prs_kenmerklink_waarde%TYPE;
BEGIN
IF :NEW.prs_perslid_nr IS NOT NULL
AND ( NVL (:NEW.prs_perslid_oslogin, CHR (191)) <>
NVL (:OLD.prs_perslid_oslogin, CHR (191))
OR NVL (:NEW.prs_perslid_telefoonnr, CHR (191)) <>
NVL (:OLD.prs_perslid_telefoonnr, CHR (191))
OR NVL (:NEW.prs_perslid_mobiel, CHR (191)) <>
NVL (:OLD.prs_perslid_mobiel, CHR (191))
OR NVL (:NEW.prs_perslid_email, CHR (191)) <>
NVL (:OLD.prs_perslid_email, CHR (191))
)
THEN
-- er is een relevante wijziging
-- eerst kijken of er al een record in conn_exp_telefoon bestaat
SELECT COUNT (*)
INTO v_aantal
FROM conn_exp_telefoon
WHERE personeelsnr = :NEW.prs_perslid_nr;
IF v_aantal > 0
THEN
-- update conn_exp_telefoon
UPDATE conn_exp_telefoon
SET login = :NEW.prs_perslid_oslogin,
telefoonnr = :NEW.prs_perslid_telefoonnr,
mobielnr = :NEW.prs_perslid_mobiel,
email = :NEW.prs_perslid_email
WHERE personeelsnr = :NEW.prs_perslid_nr;
ELSE
-- insert conn_exp_telefoon
BEGIN
SELECT prs_kenmerk.prs_kenmerk_key
INTO v_prs_kenmerk_fax_key
FROM prs_kenmerk
WHERE prs_kenmerk.prs_kenmerk_upper = 'FAXNR'
AND prs_kenmerk.prs_kenmerk_niveau = 'P'
AND prs_kenmerk.prs_kenmerk_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_prs_kenmerk_fax_key := 0;
END;
BEGIN
SELECT prs_kenmerklink_waarde
INTO v_prs_kenmerklink_fax
FROM prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL
AND prs_kenmerk_key = v_prs_kenmerk_fax_key
AND prs_link_key = :NEW.prs_perslid_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_prs_kenmerklink_fax := NULL;
END;
INSERT INTO conn_exp_telefoon
(personeelsnr, login,
telefoonnr, mobielnr,
faxnr, email
)
VALUES (:NEW.prs_perslid_nr, :NEW.prs_perslid_oslogin,
:NEW.prs_perslid_telefoonnr, :NEW.prs_perslid_mobiel,
v_prs_kenmerklink_fax, :NEW.prs_perslid_email
);
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_fout := SQLERRM;
END;
/
CREATE OR REPLACE TRIGGER conn_prs_perslid_u_i2
AFTER UPDATE OR INSERT
ON prs_perslid
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_count NUMBER (10);
v_fout VARCHAR2 (2048);
BEGIN
IF :NEW.prs_perslid_nr IS NULL THEN
v_count := 0;
ELSE
select count(*)
into v_count
FROM CONN_EXP_TELEFOON
WHERE PERSONEELSNR = :OLD.prs_perslid_nr;
END IF;
IF (v_count = 0) THEN
IF (:NEW.prs_perslid_verwijder IS NULL) AND NOT (:NEW.prs_perslid_nr IS NULL) THEN
insert into CONN_EXP_TELEFOON
(PERSONEELSNR
,LOGIN
,TELEFOONNR)
values
(substr(:NEW.prs_perslid_nr,1,16)
,substr(:NEW.prs_perslid_oslogin,1,30)
,substr(:NEW.prs_perslid_telefoonnr,1,15));
END IF;
ELSE
IF :NEW.prs_perslid_verwijder IS NULL THEN
update CONN_EXP_TELEFOON
set LOGIN = :NEW.prs_perslid_oslogin
,TELEFOONNR = :NEW.prs_perslid_telefoonnr
,PERSONEELSNR = :NEW.prs_perslid_nr
,MUTATIEDATUMTIJD = sysdate
WHERE PERSONEELSNR = :OLD.prs_perslid_nr;
ELSE
delete
from CONN_EXP_TELEFOON
WHERE PERSONEELSNR = :NEW.prs_perslid_nr;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_fout := SQLERRM;
END;
/
-- 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;
CREATE OR REPLACE VIEW CONN_V_EXPORT_FINORDERS_CODA (result_key, result, module, fin_factuur_key, result_order)
AS
SELECT null,
ordernr
|| ';'
|| factuurnr
|| ';'
|| leveranciersnr
|| ';'
|| factuurdatum
|| ';'
|| boekingsdatum
|| ';'
|| spreidenover
|| ';'
|| kostensoort
|| ';'
|| facregeloms
|| ';'
|| locatienr
|| ';'
|| huurdernr
|| ';'
|| budgetcode
|| ';'
|| prijs
|| ';'
|| verdeelperiode
|| ';'
|| btwtype
|| ';'
|| totaal
|| ';'
|| klantnr
|| ';'
|| eigenaar regel,
module, fin_factuur_key, factuurnr
FROM conn_exp_finorders_coda;
CREATE OR REPLACE VIEW CONN_V_EXPORT_FINORDERS_NAV_FB (result_key, result, module, fin_factuur_key, result_order)
AS
SELECT null,
ordernr
|| ';'
|| factuurnr
|| ';'
|| leveranciersnr
|| ';'
|| factuurdatum
|| ';'
|| boekingsdatum
|| ';'
|| spreidenover
|| ';'
|| kostensoort
|| ';'
|| facregeloms
|| ';'
|| locatienr
|| ';'
|| huurdernr
|| ';'
|| budgetcode
|| ';'
|| prijs
|| ';'
|| verdeelperiode
|| ';'
|| btwtype
|| ';'
|| totaal
|| ';'
|| klantnr
|| ';'
|| eigenaar regel,
module, fin_factuur_key, factuurnr
FROM conn_exp_finorders_nav_fb;
CREATE OR REPLACE VIEW CONN_V_EXPORT_FINORDERS_NAV_VG (result_key, result, module, fin_factuur_key, result_order)
AS
SELECT null,
ordernr
|| ';'
|| factuurnr
|| ';'
|| leveranciersnr
|| ';'
|| factuurdatum
|| ';'
|| boekingsdatum
|| ';'
|| spreidenover
|| ';'
|| kostensoort
|| ';'
|| facregeloms
|| ';'
|| locatienr
|| ';'
|| huurdernr
|| ';'
|| budgetcode
|| ';'
|| prijs
|| ';'
|| verdeelperiode
|| ';'
|| btwtype
|| ';'
|| totaal
|| ';'
|| klantnr
|| ';'
|| eigenaar regel,
module, fin_factuur_key, factuurnr
FROM conn_exp_finorders_nav_vg;
-- Procedure voor de exporteren van factuurgegevens (naar C=Coda en N=Navision)
CREATE OR REPLACE PROCEDURE conn_select_finorders_coda (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
DELETE conn_exp_finorders_coda;
INSERT INTO conn_exp_finorders_coda
(MODULE, DOEL, ORDERNR, FACTUURNR, LEVERANCIERSNR,
FACTUURDATUM, BOEKINGSDATUM, SPREIDENOVER, KOSTENSOORT, FACREGELOMS,
LOCATIENR, HUURDERNR, BUDGETCODE, AANTAL, PRIJS,
VERDEELPERIODE, BTWTYPE, TOTAAL, KLANTNR, EIGENAAR, FIN_FACTUUR_KEY)
(SELECT 'MLD' module, SUBSTR (kostensoort, 1, 1) doel, ordernr,
factuurnr, leveranciersnr, factuurdatum,
boekingsdatum, spreidenover, SUBSTR (kostensoort, 2) kostensoort,
REPLACE(facregeloms,';',':'), locatienr, huurdernr, budgetcode, aantal, prijs,
verdeelperiode, btwtype, totaal, klantnr, eigenaar, fin_factuur_key
FROM conn_v_exp_mld
WHERE SUBSTR (kostensoort, 1, 1) = 'C'
UNION ALL
SELECT 'CNT', SUBSTR (kostensoort, 1, 1) doel, ordernr,
factuurnr, leveranciersnr, factuurdatum,
boekingsdatum, spreidenover, SUBSTR (kostensoort, 2) kostensoort,
REPLACE(facregeloms,';',':'), locatienr, huurdernr, budgetcode, aantal, prijs,
verdeelperiode, btwtype, totaal, klantnr, eigenaar, fin_factuur_key
FROM conn_v_exp_cnt
WHERE SUBSTR (kostensoort, 1, 1) = 'C'
UNION ALL
SELECT 'BES', SUBSTR (kostensoort, 1, 1) doel, ordernr,
factuurnr, leveranciersnr, factuurdatum,
boekingsdatum, spreidenover, SUBSTR (kostensoort, 2) kostensoort,
REPLACE(facregeloms,';',':'), locatienr, huurdernr, budgetcode, aantal, prijs,
verdeelperiode, btwtype, totaal, klantnr, eigenaar, fin_factuur_key
FROM conn_v_exp_bes
WHERE SUBSTR (kostensoort, 1, 1) = 'C');
END;
/
-- Procedure voor de exporteren van factuurgegevens (naar C=Coda en N=Navision)
/* Formatted on 11-6-2010 17:10:37 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE conn_export_finorders_coda (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errormsg := 'Update fin_factuur';
-- Moet ooit nog eens efficienter in een fin.setfactuurstatus()
UPDATE fin_factuur
SET fin_factuur_statuses_key = 7
WHERE fin_factuur_key IN (SELECT fin_factuur_key FROM conn_v_export_finorders_coda);
FOR f IN (SELECT * FROM conn_v_export_finorders_coda)
LOOP
fac.trackaction ('FINVER', f.fin_factuur_key, NULL, SYSDATE, NULL);
END LOOP;
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.writelog (p_applname, 'E', v_errormsg, '');
END;
/
-- Procedure voor de exporteren van factuurgegevens (naar C=Coda en N=Navision)
CREATE OR REPLACE PROCEDURE conn_select_finorders_nav_fb (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
DELETE conn_exp_finorders_nav_fb;
INSERT INTO conn_exp_finorders_nav_fb
(MODULE, DOEL, ORDERNR, FACTUURNR, LEVERANCIERSNR,
FACTUURDATUM, BOEKINGSDATUM, SPREIDENOVER, KOSTENSOORT, FACREGELOMS,
LOCATIENR, HUURDERNR, BUDGETCODE, AANTAL, PRIJS,
VERDEELPERIODE, BTWTYPE, TOTAAL, KLANTNR, EIGENAAR, FIN_FACTUUR_KEY)
(SELECT 'MLD' module, SUBSTR (kostensoort, 1, 1) doel, ordernr,
factuurnr, leveranciersnr, factuurdatum,
boekingsdatum, spreidenover, SUBSTR (kostensoort, 2) kostensoort,
REPLACE(facregeloms,';',':'), DECODE (prs_kostenplaats_module, 'PRJ', prs_kostenplaats_nr, locatienr),
huurdernr, budgetcode, aantal, prijs,
verdeelperiode, btwtype, totaal, klantnr, eigenaar, fin_factuur_key
FROM conn_v_exp_mld
WHERE SUBSTR (kostensoort, 1, 1) = 'N' and nvl(eigenaar,' ') <> 'VG'
UNION ALL
SELECT 'CNT', SUBSTR (kostensoort, 1, 1) doel, ordernr,
factuurnr, leveranciersnr, factuurdatum,
boekingsdatum, spreidenover, SUBSTR (kostensoort, 2) kostensoort,
REPLACE(facregeloms,';',':'), locatienr, huurdernr, budgetcode, aantal, prijs,
verdeelperiode, btwtype, totaal, klantnr, eigenaar, fin_factuur_key
FROM conn_v_exp_cnt
WHERE SUBSTR (kostensoort, 1, 1) = 'N' and nvl(eigenaar,' ') <> 'VG'
UNION ALL
SELECT 'BES', SUBSTR (kostensoort, 1, 1) doel, ordernr,
factuurnr, leveranciersnr, factuurdatum,
boekingsdatum, spreidenover, SUBSTR (kostensoort, 2) kostensoort,
REPLACE(facregeloms,';',':'), locatienr, huurdernr, budgetcode, aantal, prijs,
verdeelperiode, btwtype, totaal, klantnr, eigenaar, fin_factuur_key
FROM conn_v_exp_bes
WHERE SUBSTR (kostensoort, 1, 1) = 'N' and nvl(eigenaar,' ') <> 'VG');
END;
/
-- Procedure voor de exporteren van factuurgegevens (naar C=Coda en N=Navision)
/* Formatted on 11-6-2010 17:20:27 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE conn_export_finorders_nav_fb (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errormsg := 'Update fin_factuur';
-- Moet ooit nog eens efficienter in een fin.setfactuurstatus()
UPDATE fin_factuur
SET fin_factuur_statuses_key = 7
WHERE fin_factuur_key IN (SELECT fin_factuur_key FROM conn_v_export_finorders_nav_fb);
FOR f IN (SELECT * FROM conn_v_export_finorders_nav_fb)
LOOP
fac.trackaction ('FINVER', f.fin_factuur_key, NULL, SYSDATE, NULL);
END LOOP;
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.writelog (p_applname, 'E', v_errormsg, '');
END;
/
-- Procedure voor de exporteren van factuurgegevens (naar C=Coda en N=Navision)
CREATE OR REPLACE PROCEDURE conn_select_finorders_nav_vg (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
DELETE conn_exp_finorders_nav_vg;
INSERT INTO conn_exp_finorders_nav_vg
(MODULE, DOEL, ORDERNR, FACTUURNR, LEVERANCIERSNR,
FACTUURDATUM, BOEKINGSDATUM, SPREIDENOVER, KOSTENSOORT, FACREGELOMS,
LOCATIENR, HUURDERNR, BUDGETCODE, AANTAL, PRIJS,
VERDEELPERIODE, BTWTYPE, TOTAAL, KLANTNR, EIGENAAR, FIN_FACTUUR_KEY)
(SELECT 'MLD' module, SUBSTR (kostensoort, 1, 1) doel, ordernr,
factuurnr, leveranciersnr, factuurdatum,
boekingsdatum, spreidenover, SUBSTR (kostensoort, 2) kostensoort,
REPLACE(facregeloms,';',':'), DECODE (prs_kostenplaats_module, 'PRJ', prs_kostenplaats_nr, locatienr),
huurdernr, budgetcode, aantal, prijs,
verdeelperiode, btwtype, totaal, klantnr, eigenaar, fin_factuur_key
FROM conn_v_exp_mld
WHERE SUBSTR (kostensoort, 1, 1) = 'N' AND eigenaar = 'VG'
UNION ALL
SELECT 'CNT', SUBSTR (kostensoort, 1, 1) doel, ordernr,
factuurnr, leveranciersnr, factuurdatum,
boekingsdatum, spreidenover, SUBSTR (kostensoort, 2) kostensoort,
REPLACE(facregeloms,';',':'), locatienr, huurdernr, budgetcode, aantal, prijs,
verdeelperiode, btwtype, totaal, klantnr, eigenaar, fin_factuur_key
FROM conn_v_exp_cnt
WHERE SUBSTR (kostensoort, 1, 1) = 'N' AND eigenaar = 'VG'
UNION ALL
SELECT 'BES', SUBSTR (kostensoort, 1, 1) doel, ordernr,
factuurnr, leveranciersnr, factuurdatum,
boekingsdatum, spreidenover, SUBSTR (kostensoort, 2) kostensoort,
REPLACE(facregeloms,';',':'), locatienr, huurdernr, budgetcode, aantal, prijs,
verdeelperiode, btwtype, totaal, klantnr, eigenaar, fin_factuur_key
FROM conn_v_exp_bes
WHERE SUBSTR (kostensoort, 1, 1) = 'N' AND eigenaar = 'VG');
END;
/
-- Procedure voor de exporteren van factuurgegevens (naar C=Coda en N=Navision)
/* Formatted on 11-6-2010 17:23:22 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE conn_export_finorders_nav_vg (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errormsg := 'Update fin_factuur';
-- Moet ooit nog eens efficienter in een fin.setfactuurstatus()
UPDATE fin_factuur
SET fin_factuur_statuses_key = 7
WHERE fin_factuur_key IN (SELECT fin_factuur_key FROM conn_v_export_finorders_nav_vg);
FOR f IN (SELECT * FROM conn_v_export_finorders_nav_vg)
LOOP
fac.trackaction ('FINVER', f.fin_factuur_key, NULL, SYSDATE, NULL);
END LOOP;
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.writelog (p_applname, 'E', v_errormsg, '');
END;
/
-- 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;
-- Zaken tbv Perman/Interconnect koppeling (voorheen in aparte bestanden)
-- Start perman.sql
/* Formatted on 2006/09/15 11:37 (Formatter Plus v4.8.5) */
CREATE OR REPLACE PACKAGE perman
AS
PROCEDURE verwerk (
p_ind_toekomstmutatie IN VARCHAR2,
p_dvb_personeelsnummer IN VARCHAR2,
p_per_naam IN VARCHAR2,
p_per_partnernaam IN VARCHAR2,
p_per_indnaamsvoegen IN VARCHAR2,
p_per_tussenvoegsels IN VARCHAR2,
p_per_partussenvoegs IN VARCHAR2,
p_per_voorletters IN VARCHAR2,
p_per_roepnaam IN VARCHAR2,
p_per_username IN VARCHAR2,
p_per_titel IN VARCHAR2,
p_per_achtervoegsel IN VARCHAR2,
p_dvb_datum_in_dienst IN DATE,
p_dvb_datum_uit_dienst IN DATE,
p_fnc_omschrijving IN VARCHAR2,
p_dvb_k_emailzake IN VARCHAR2,
p_dvb_divisie IN VARCHAR2,
p_dvb_divisie_label IN VARCHAR2,
p_dvb_k_regio IN VARCHAR2,
p_dvb_k_regio_label IN VARCHAR2,
p_dvb_k_regiozoeknaam IN VARCHAR2,
p_afd_code IN VARCHAR2,
p_afd_omschrijving IN VARCHAR2,
p_dvb_k_standplts_label IN VARCHAR2
);
FUNCTION prs_perslid_key (p_dvb_personeelsnummer IN VARCHAR2)
RETURN NUMBER;
FUNCTION prs_srtperslid_key (p_fnc_omschrijving IN VARCHAR2)
RETURN NUMBER;
FUNCTION prs_perslid_verwijder
RETURN NUMBER;
FUNCTION prs_afdeling_key (
p_dvb_divisie IN VARCHAR2,
p_dvb_divisie_label IN VARCHAR2,
p_dvb_k_regiozoeknaam IN VARCHAR2,
p_dvb_k_regio_label IN VARCHAR2,
p_afd_code IN VARCHAR2,
p_afd_omschrijving IN VARCHAR2
)
RETURN NUMBER;
FUNCTION prs_afdeling_key_old (p_dvb_personeelsnummer IN VARCHAR2)
RETURN NUMBER;
END perman;
/
CREATE OR REPLACE PACKAGE BODY perman
AS
PROCEDURE verwerk (
p_ind_toekomstmutatie IN VARCHAR2,
p_dvb_personeelsnummer IN VARCHAR2,
p_per_naam IN VARCHAR2,
p_per_partnernaam IN VARCHAR2,
p_per_indnaamsvoegen IN VARCHAR2,
p_per_tussenvoegsels IN VARCHAR2,
p_per_partussenvoegs IN VARCHAR2,
p_per_voorletters IN VARCHAR2,
p_per_roepnaam IN VARCHAR2,
p_per_username IN VARCHAR2,
p_per_titel IN VARCHAR2,
p_per_achtervoegsel IN VARCHAR2,
p_dvb_datum_in_dienst IN DATE,
p_dvb_datum_uit_dienst IN DATE,
p_fnc_omschrijving IN VARCHAR2,
p_dvb_k_emailzake IN VARCHAR2,
p_dvb_divisie IN VARCHAR2,
p_dvb_divisie_label IN VARCHAR2,
p_dvb_k_regio IN VARCHAR2,
p_dvb_k_regio_label IN VARCHAR2,
p_dvb_k_regiozoeknaam IN VARCHAR2,
p_afd_code IN VARCHAR2,
p_afd_omschrijving IN VARCHAR2,
p_dvb_k_standplts_label IN VARCHAR2
)
IS
v_prs_srtperslid_key prs_srtperslid.prs_srtperslid_key%TYPE;
v_prs_afdeling_key prs_afdeling.prs_afdeling_key%TYPE;
v_prs_afdeling_key_old prs_afdeling.prs_afdeling_key%TYPE;
v_prs_perslid_key prs_perslid.prs_perslid_key%TYPE;
v_fac_groep_key fac_groep.fac_groep_key%TYPE;
v_prs_perslid_naam prs_perslid.prs_perslid_naam%TYPE;
v_prs_perslid_tussenvoegsels prs_perslid.prs_perslid_tussenvoegsel%TYPE;
v_prs_perslid_titel prs_perslid.prs_perslid_titel%TYPE := NULL;
v_prs_perslid_einddatum prs_perslid.prs_perslid_einddatum%TYPE;
v_standplaats_kenmerk_key prs_kenmerk.prs_kenmerk_key%TYPE;
v_standplaats_kenmerklink_key prs_kenmerklink.prs_kenmerklink_key%TYPE;
v_count NUMBER (10);
BEGIN
v_prs_srtperslid_key := prs_srtperslid_key (p_fnc_omschrijving);
v_prs_afdeling_key :=
prs_afdeling_key (p_dvb_divisie,
p_dvb_divisie_label,
p_dvb_k_regiozoeknaam,
p_dvb_k_regio_label,
p_afd_code,
p_afd_omschrijving
);
v_prs_perslid_key := prs_perslid_key (p_dvb_personeelsnummer);
v_prs_afdeling_key_old := prs_afdeling_key_old (p_dvb_personeelsnummer);
v_prs_perslid_naam := SUBSTR (p_per_naam, 1, 30);
v_prs_perslid_tussenvoegsels := p_per_tussenvoegsels;
IF p_per_indnaamsvoegen = 'J'
OR p_per_indnaamsvoegen = 'W'
OR p_per_indnaamsvoegen = 'E'
OR p_per_indnaamsvoegen = 'P'
THEN
v_prs_perslid_tussenvoegsels := p_per_partussenvoegs;
IF p_per_tussenvoegsels IS NOT NULL
THEN
v_prs_perslid_naam := SUBSTR (p_per_partnernaam || '-' || p_per_tussenvoegsels || ' ' || p_per_naam, 1, 30);
ELSE
v_prs_perslid_naam := SUBSTR (p_per_partnernaam || '-' || p_per_naam, 1, 30);
END IF;
ELSIF p_per_indnaamsvoegen = 'A'
THEN
v_prs_perslid_tussenvoegsels := p_per_partussenvoegs;
v_prs_perslid_naam := SUBSTR (p_per_partnernaam, 1, 30);
ELSIF p_per_indnaamsvoegen = 'G'
THEN
IF p_per_partussenvoegs IS NOT NULL
THEN
v_prs_perslid_naam :=
SUBSTR (v_prs_perslid_naam || '-' || p_per_partussenvoegs || ' ' || p_per_partnernaam, 1, 30);
ELSE
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam || '-' || p_per_partnernaam, 1, 30);
END IF;
END IF;
IF p_ind_toekomstmutatie = 'N'
THEN -- Toekomstmutaties niet meenemen
IF p_per_titel IS NOT NULL OR p_per_achtervoegsel IS NOT NULL
THEN
v_prs_perslid_titel := SUBSTR (p_per_titel || '()' || p_per_achtervoegsel, 1, 15);
END IF;
-- controleren op onbepaald (dwz dvb_datum_uit_dienst=31 dec 2999)
v_prs_perslid_einddatum := p_dvb_datum_uit_dienst;
IF p_dvb_datum_uit_dienst IS NULL
THEN
v_prs_perslid_einddatum := TO_DATE ('31-12-2999', 'DD-MM-YYYY');
END IF;
IF v_prs_perslid_key = 0
THEN --nieuwe medewerker
INSERT INTO prs_perslid
(prs_perslid_nr, prs_perslid_module, prs_perslid_naam,
prs_perslid_tussenvoegsel, prs_perslid_voorletters,
prs_perslid_voornaam
-- , prs_perslid_oslogin
, prs_perslid_titel, prs_perslid_ingangsdatum,
prs_perslid_einddatum, prs_afdeling_key, prs_srtperslid_key
)
VALUES (p_dvb_personeelsnummer, 'PRS', v_prs_perslid_naam,
SUBSTR (v_prs_perslid_tussenvoegsels, 1, 15), SUBSTR (p_per_voorletters, 1, 10),
SUBSTR (p_per_roepnaam, 1, 30)
-- , substr(p_per_username,1,30)
, v_prs_perslid_titel, p_dvb_datum_in_dienst,
v_prs_perslid_einddatum, v_prs_afdeling_key, v_prs_srtperslid_key
);
SELECT prs_perslid_key
INTO v_prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_nr = p_dvb_personeelsnummer;
-- Default autorisatie toekennen aan deze nieuwe persoon
BEGIN
SELECT fac_groep_key
INTO v_fac_groep_key
FROM fac_groep
WHERE fac_groep_upper = 'ALGEMEEN2808';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO fac_groep
(fac_groep_omschrijving
)
VALUES ('Algemeen2808'
);
SELECT fac_groep_key
INTO v_fac_groep_key
FROM fac_groep
WHERE fac_groep_upper = 'ALGEMEEN2808';
END;
INSERT INTO fac_gebruikersgroep
(fac_groep_key, prs_perslid_key
)
VALUES (v_fac_groep_key, v_prs_perslid_key
);
ELSE
UPDATE prs_perslid
SET prs_perslid_naam = v_prs_perslid_naam,
prs_perslid_tussenvoegsel = SUBSTR (v_prs_perslid_tussenvoegsels, 1, 15),
prs_perslid_voorletters = SUBSTR (p_per_voorletters, 1, 10),
prs_perslid_voornaam = SUBSTR (p_per_roepnaam, 1, 30)
-- , prs_perslid_oslogin=substr(p_per_username,1,30)
,
prs_perslid_titel = v_prs_perslid_titel,
prs_perslid_ingangsdatum = p_dvb_datum_in_dienst,
prs_perslid_einddatum = v_prs_perslid_einddatum,
prs_afdeling_key = v_prs_afdeling_key,
prs_srtperslid_key = v_prs_srtperslid_key
WHERE prs_perslid_key = v_prs_perslid_key;
END IF;
--standplaats-kenmerk!!!
SELECT prs_kenmerk.prs_kenmerk_key
INTO v_standplaats_kenmerk_key
FROM prs_kenmerk
WHERE prs_kenmerk_upper = 'STANDPLAATS';
BEGIN
SELECT prs_kenmerklink_key
INTO v_standplaats_kenmerklink_key
FROM prs_kenmerklink
WHERE prs_link_key = v_prs_perslid_key AND prs_kenmerk_key = v_standplaats_kenmerk_key;
IF p_dvb_k_standplts_label IS NULL
THEN
DELETE FROM prs_kenmerklink
WHERE prs_kenmerklink_key = v_standplaats_kenmerklink_key;
ELSE
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = p_dvb_k_standplts_label
WHERE prs_kenmerklink_key = v_standplaats_kenmerklink_key;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN -- nieuwe toevoegen indien niet leeg
IF p_dvb_k_standplts_label IS NOT NULL
THEN
INSERT INTO prs_kenmerklink
(prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde
)
VALUES (v_prs_perslid_key, 'P', v_standplaats_kenmerk_key, p_dvb_k_standplts_label
);
END IF;
END;
END IF;
v_count := prs_perslid_verwijder; -- CONN#410
END;
FUNCTION prs_perslid_key (p_dvb_personeelsnummer IN VARCHAR2)
RETURN NUMBER
IS
v_prs_perslid_key prs_perslid.prs_perslid_key%TYPE;
-- CONN#613 only search for active persons
BEGIN
SELECT prs_perslid_key
INTO v_prs_perslid_key
FROM prs_v_aanwezigperslid
WHERE prs_perslid_nr = p_dvb_personeelsnummer;
RETURN v_prs_perslid_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN 0;
END;
FUNCTION prs_srtperslid_key (p_fnc_omschrijving IN VARCHAR2)
RETURN NUMBER
IS
v_prs_srtperslid_key prs_perslid.prs_srtperslid_key%TYPE;
BEGIN
SELECT prs_srtperslid_key
INTO v_prs_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_upper = UPPER (p_fnc_omschrijving);
RETURN v_prs_srtperslid_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_srtperslid
(prs_srtperslid_omschrijving
)
VALUES (p_fnc_omschrijving
);
SELECT prs_srtperslid_key
INTO v_prs_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_upper = UPPER (p_fnc_omschrijving);
RETURN v_prs_srtperslid_key;
END;
-- CONN#410
FUNCTION prs_perslid_verwijder
RETURN NUMBER
IS
CURSOR c_prs_del
IS
SELECT DISTINCT p.prs_perslid_key
FROM prs_perslid p, prs_v_verplichting pv
WHERE p.prs_perslid_verwijder IS NULL
AND NOT (p.prs_perslid_einddatum IS NULL)
AND p.prs_perslid_einddatum <= SYSDATE
AND p.prs_perslid_key = pv.prs_perslid_key(+)
AND pv.prs_perslid_key IS NULL;
rec_prs_del c_prs_del%ROWTYPE;
v_count_verwijderd NUMBER (10);
v_errmes VARCHAR2 (512);
BEGIN
v_count_verwijderd := 0;
FOR rec_prs_del IN c_prs_del
LOOP
BEGIN
UPDATE prs_perslidwerkplek
SET prs_perslidwerkplek_verwijder = SYSDATE
WHERE prs_perslid_key = rec_prs_del.prs_perslid_key AND prs_perslidwerkplek_verwijder IS NULL;
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = rec_prs_del.prs_perslid_key;
EXCEPTION
WHEN OTHERS
THEN
v_errmes := 'Error bij verwijderen persoon. Negeer fouten, verwerk de volgende persoon.';
END;
END LOOP;
RETURN v_count_verwijderd;
END;
FUNCTION prs_afdeling_key (
p_dvb_divisie IN VARCHAR2,
p_dvb_divisie_label IN VARCHAR2,
p_dvb_k_regiozoeknaam IN VARCHAR2,
p_dvb_k_regio_label IN VARCHAR2,
p_afd_code IN VARCHAR2,
p_afd_omschrijving IN VARCHAR2
)
RETURN NUMBER
IS
v_mh_bedrijf_key prs_afdeling.prs_afdeling_key%TYPE;
v_mh_afdeling_parentkey prs_afdeling.prs_afdeling_key%TYPE;
v_afdeling_key prs_afdeling.prs_afdeling_key%TYPE;
v_divisie_key prs_afdeling.prs_afdeling_key%TYPE;
BEGIN
BEGIN
SELECT a.prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling a
WHERE TRIM(a.prs_afdeling_upper) = UPPER (TRIM(p_afd_code)) AND a.prs_afdeling_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_afdeling_key := NULL;
END;
IF v_afdeling_key IS NULL
THEN -- afdeling bestaat niet zoek de divisie en maak de afdeling aan.
BEGIN
SELECT a.prs_afdeling_key
INTO v_divisie_key
FROM prs_v_afdeling a
WHERE UPPER (TRIM(a.prs_afdeling_omschrijving)) = UPPER (TRIM(p_dvb_divisie)) AND a.prs_afdeling_verwijder IS NULL AND a.niveau = 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
v_divisie_key := NULL;
-- als we geen afdeling en divisie kunnen vinden dan plaatsen we de persoon in de afdeling perman nieuw
-- bestaat afdeling "perman nieuw"
SELECT a.prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_upper = UPPER ('Perman')
AND UPPER (a.prs_afdeling_omschrijving) = UPPER ('Perman nieuw')
AND a.prs_afdeling_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_afdeling_key := NULL;
END;
END;
IF v_divisie_key IS NOT NULL
THEN -- nieuwe afdeling onder bekende divisie plaatsen
-- maak de afdeling aan
INSERT INTO prs_afdeling
(prs_afdeling_parentkey, prs_afdeling_naam, prs_afdeling_omschrijving, prs_bedrijf_key
)
VALUES (v_divisie_key, p_afd_code, p_afd_omschrijving, null
)
RETURNING prs_afdeling_key INTO v_afdeling_key;
END IF;
-- else -- afdeling bestaat: return v-afdeling_key.
END IF;
RETURN v_afdeling_key;
END;
FUNCTION prs_afdeling_key_old (p_dvb_personeelsnummer IN VARCHAR2)
RETURN NUMBER
IS
v_prs_afdeling_key prs_perslid.prs_afdeling_key%TYPE;
BEGIN
SELECT prs_afdeling_key
INTO v_prs_afdeling_key
FROM prs_perslid
WHERE prs_perslid_nr = p_dvb_personeelsnummer;
RETURN v_prs_afdeling_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN 0;
END;
END perman;
/
-- End perman.sql
-- 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_export_contractmutatie as
SELECT
bedrijfsnummer
|| ';' ||
mutatienummer
|| ';' ||
huurdernummer
|| ';' ||
budgetcode
|| ';' ||
complexnummer
|| ';' ||
eenheidsnummer
|| ';' ||
to_char(ingangsdatum, 'yyyymmdd')
|| ';' ||
factuurdebiteur
|| ';' ||
prolongatietermijn
|| ';' ||
to_char(indexeringsdatum, 'yyyymmdd')
|| ';' ||
indexeringscode
|| ';' ||
indexeringsmethode
|| ';' ||
tarieftype
|| ';' ||
replace(to_char(aantal),'.',',')
|| ';' ||
replace(to_char(tarief),'.',',')
|| ';' ||
replace(to_char(totaal),'.',',') result,
mutatienummer result_order
FROM (SELECT *
FROM CONN_EXP_CONTRACTMUTATIE
WHERE NOT (UPPER(eenheidsnummer) LIKE '%CXX GEEN CONTRACT%'
OR tarief = 0
OR aantal = 0)
AND exportdatum IS NULL);
/
CREATE OR REPLACE PROCEDURE conn_select_contractmutatie (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
BEGIN
v_errormsg := 'Lekker niets doen. View conn_v_export_contractmutatie doet het werk';
END;
/
-- Procedure voor de exporteren gegevens contractmutatie
CREATE OR REPLACE PROCEDURE conn_export_contractmutatie (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errormsg := 'Geen akties';
-- Exportregels zijn weggesschreven. De status in de exporttabel wordt op 'E' gezet en de exportdatu ingevuld om dubbele export te voorkomen.
UPDATE CONN_EXP_CONTRACTMUTATIE SET exportdatum = sysdate, STATUS='E' WHERE exportdatum IS NULL;
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.writelog (p_applname, 'E', v_errormsg, '');
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 PACKAGE CONN_PARTNERS AS
/*
Tabel OAC_STG_PARTNER alias P:
P.Id p_partner_id
P.Pnr_Type p_bedrijf_type
P.Pnr_partnernummer p_prs_leverancier_nr
P.Pnr_naam p_prs_bedrijf_naam
P.Pnr_telefoon p_prs_bedrijf_telefoon
P.Pnr_mobiel p_prs_bedrijf_telefoon2
P.Pnr_fax p_prs_bedrijf_fax
P.Pnr_email p_prs_bedrijf_email
P.Pnr_Klantnr_Facilitor p_prs_????? RD*****
P.Pnr_Betalingsconditie p_prs_bedrijf_opmerking
P.Pnr_Mutatie_Ind p_stamgegevens (J/N)
P.Pst_Adres p_prs_bedrijf_post_adres
P.Pst_Postcode p_prs_bedrijf_post_postcode
P.Pst_Plaats p_prs_bedrijf_post_plaats
P.Pst_Land p_prs_bedrijf_post_land
P.Pst_Mutatie_ind p_postadres (J/N)
P.Pst_Adres p_prs_bedrijf_bezoek_adres
P.Pst_Postcode p_prs_bedrijf_bezoek_postcode
P.Pst_Plaats p_prs_bedrijf_bezoek_plaats
P.Pst_Land p_prs_bedrijf_bezoek_land
P.Pst_Mutatie_ind p_bezoekadres (J/N)
*/
FUNCTION verwerk_partner
( p_partner_id in number
,p_bedrijf_type in varchar2
,p_prs_leverancier_nr in varchar2
,p_prs_bedrijf_naam in varchar2
,p_prs_bedrijf_telefoon in varchar2
,p_prs_bedrijf_telefoon2 in varchar2
,p_prs_bedrijf_fax in varchar2
,p_prs_bedrijf_email in varchar2
,p_prs_bedrijf_opmerking in varchar2
,p_stamgegevens in varchar2
,p_prs_bedrijf_post_adres in varchar2
,p_prs_bedrijf_post_postcode in varchar2
,p_prs_bedrijf_post_plaats in varchar2
,p_prs_bedrijf_post_land in varchar2
,p_postadres in varchar2
,p_prs_bedrijf_bezoek_adres in varchar2
,p_prs_bedrijf_bezoek_postcode in varchar2
,p_prs_bedrijf_bezoek_plaats in varchar2
,p_prs_bedrijf_bezoek_land in varchar2
,p_bezoekadres in varchar2) return NUMBER;
/*
Tabel OAC_STG_CONTACTPERSOON alias C:
C.Ctn_Functie p_prs_contactpersoon_functie
C.Ctn_Naam p_prs_contactpersoon_naam
C.Ctn_Tussenvoegsel p_prs_contactpersoon_tussenv
C.Ctn_Voornaam p_prs_contactpersoon_voornaam
C.Ctn_Voorletters p_prs_contactpersoon_voorl
C.Ctn_Titel p_prs_contactpersoon_titel
C.Ctn_Aanhef p_prs_contactpersoon_aanhef
C.Ctn_Telefoon p_prs_contactpersoon_tel_1
C.Ctn_Mobiel p_prs_contactpersoon_tel_2
C.Ctn_Fax p_prs_contactpersoon_fax
C.Ctn_Email p_prs_contactpersoon_email
C.Ctn_Mutatie_Ind p_contactpersoon (j/n)
*/
FUNCTION verwerk_contactpersoon
( p_partner_id in number
,p_contactpersoon_id in number
,p_prs_contactpersoon_functie in varchar2
,p_prs_contactpersoon_naam in varchar2
,p_prs_contactpersoon_tussenv in varchar2
,p_prs_contactpersoon_voornaam in varchar2
,p_prs_contactpersoon_voorl in varchar2
,p_prs_contactpersoon_titel in varchar2
,p_prs_contactpersoon_aanhef in varchar2
,p_prs_contactpersoon_tel_1 in varchar2
,p_prs_contactpersoon_tel_2 in varchar2
,p_prs_contactpersoon_fax in varchar2
,p_prs_contactpersoon_email in varchar2
,p_contactpersoon in varchar2) return number;
END CONN_PARTNERS;
/
CREATE OR REPLACE PACKAGE BODY CONN_PARTNERS AS
FUNCTION verwerk_partner
( p_partner_id in number
,p_bedrijf_type in varchar2
,p_prs_leverancier_nr in varchar2
,p_prs_bedrijf_naam in varchar2
,p_prs_bedrijf_telefoon in varchar2
,p_prs_bedrijf_telefoon2 in varchar2
,p_prs_bedrijf_fax in varchar2
,p_prs_bedrijf_email in varchar2
,p_prs_bedrijf_opmerking in varchar2
,p_stamgegevens in varchar2
,p_prs_bedrijf_post_adres in varchar2
,p_prs_bedrijf_post_postcode in varchar2
,p_prs_bedrijf_post_plaats in varchar2
,p_prs_bedrijf_post_land in varchar2
,p_postadres in varchar2
,p_prs_bedrijf_bezoek_adres in varchar2
,p_prs_bedrijf_bezoek_postcode in varchar2
,p_prs_bedrijf_bezoek_plaats in varchar2
,p_prs_bedrijf_bezoek_land in varchar2
,p_bezoekadres in varchar2) return NUMBER
IS
v_partner_id NUMBER(15);
v_bedrijf_type VARCHAR2(30);
v_prs_leverancier_nr prs_bedrijf.prs_leverancier_nr%type;
v_prs_bedrijf_naam prs_bedrijf.prs_bedrijf_naam%type;
v_prs_bedrijf_telefoon prs_bedrijf.prs_bedrijf_telefoon%type;
v_prs_bedrijf_telefoon2 prs_bedrijf.prs_bedrijf_telefoon2%type;
v_prs_bedrijf_fax prs_bedrijf.prs_bedrijf_fax%type;
v_prs_bedrijf_email prs_bedrijf.prs_bedrijf_email%type;
v_prs_bedrijf_opmerking prs_bedrijf.prs_bedrijf_opmerking%type;
v_stamgegevens VARCHAR2(1);
v_prs_bedrijf_post_adres prs_bedrijf.prs_bedrijf_post_adres%type;
v_prs_bedrijf_post_postcode prs_bedrijf.prs_bedrijf_post_postcode%type;
v_prs_bedrijf_post_plaats prs_bedrijf.prs_bedrijf_post_plaats%type;
v_prs_bedrijf_post_land prs_bedrijf.prs_bedrijf_post_land%type;
v_postadres VARCHAR2(1);
v_prs_bedrijf_bezoek_adres prs_bedrijf.prs_bedrijf_bezoek_adres%type;
v_prs_bedrijf_bezoek_postcode prs_bedrijf.prs_bedrijf_bezoek_postcode%type;
v_prs_bedrijf_bezoek_plaats prs_bedrijf.prs_bedrijf_bezoek_plaats%type;
v_prs_bedrijf_bezoek_land prs_bedrijf.prs_bedrijf_bezoek_land%type;
v_bezoekadres VARCHAR2(1);
v_mode VARCHAR(10);
v_count NUMBER(10);
v_prs_bedrijf_key prs_bedrijf.prs_bedrijf_key%type;
ORACLE_err_num NUMBER;
ORACLE_err_mes VARCHAR2(100);
v_store_prs_bedrijf BOOLEAN;
BEGIN
-- INIT
--commit;
v_mode := '';
v_prs_bedrijf_key := 0;
v_partner_id := p_partner_id;
v_bedrijf_type := UPPER(SUBSTR(p_bedrijf_type,1,30));
v_prs_leverancier_nr := SUBSTR(p_prs_leverancier_nr,1,15);
v_prs_bedrijf_naam := SUBSTR(p_prs_bedrijf_naam||' _ '||v_prs_leverancier_nr,1,60);
v_prs_bedrijf_telefoon := SUBSTR(p_prs_bedrijf_telefoon,1,20);
v_prs_bedrijf_telefoon2 := SUBSTR(p_prs_bedrijf_telefoon2,1,20);
v_prs_bedrijf_fax := SUBSTR(p_prs_bedrijf_fax,1,20);
v_prs_bedrijf_email := SUBSTR(p_prs_bedrijf_email,1,100);
v_prs_bedrijf_opmerking := SUBSTR(p_prs_bedrijf_opmerking,1,320);
v_stamgegevens := UPPER(SUBSTR(p_stamgegevens,1,1));
v_prs_bedrijf_post_adres := SUBSTR(p_prs_bedrijf_post_adres,1,35);
v_prs_bedrijf_post_postcode := SUBSTR(p_prs_bedrijf_post_postcode,1,12);
v_prs_bedrijf_post_plaats := SUBSTR(p_prs_bedrijf_post_plaats,1,30);
v_prs_bedrijf_post_land := SUBSTR(p_prs_bedrijf_post_land,1,30);
v_postadres := UPPER(SUBSTR(p_postadres,1,1));
v_prs_bedrijf_bezoek_adres := SUBSTR(p_prs_bedrijf_bezoek_adres,1,35);
v_prs_bedrijf_bezoek_postcode := SUBSTR(p_prs_bedrijf_bezoek_postcode,1,12);
v_prs_bedrijf_bezoek_plaats := SUBSTR(p_prs_bedrijf_bezoek_plaats,1,30);
v_prs_bedrijf_bezoek_land := SUBSTR(p_prs_bedrijf_bezoek_land,1,30);
v_bezoekadres := UPPER(SUBSTR(p_bezoekadres,1,1));
IF v_stamgegevens = 'J' THEN
-- v_mode?
SELECT count(*)
INTO v_count
FROM prs_v_aanwezigbedrijf
WHERE upper(trim(prs_leverancier_nr)) = upper(trim(v_prs_leverancier_nr));
IF (v_count = 0) THEN
v_mode := 'INSERT';
ELSE
IF (v_count = 1) THEN
v_mode := 'UPDATE';
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_key
FROM prs_v_aanwezigbedrijf
WHERE upper(trim(prs_leverancier_nr)) = upper(trim(v_prs_leverancier_nr));
END IF;
END IF;
IF v_mode = 'INSERT' THEN
-- RD****** v_bedrijf_type Zie hieronder DECODE statement:
insert into prs_bedrijf
(prs_leverancier_nr
,prs_bedrijf_naam
,prs_bedrijf_telefoon
,prs_bedrijf_telefoon2
,prs_bedrijf_fax
,prs_bedrijf_email
,prs_bedrijf_opmerking
,prs_bedrijf_post_adres
,prs_bedrijf_post_postcode
,prs_bedrijf_post_plaats
,prs_bedrijf_post_land
,prs_bedrijf_bezoek_adres
,prs_bedrijf_bezoek_postcode
,prs_bedrijf_bezoek_plaats
,prs_bedrijf_bezoek_land
,prs_bedrijf_leverancier
,prs_bedrijf_uitvoerende
,prs_bedrijf_contract)
values
(v_prs_leverancier_nr
,v_prs_bedrijf_naam
,v_prs_bedrijf_telefoon
,v_prs_bedrijf_telefoon2
,v_prs_bedrijf_fax
,v_prs_bedrijf_email
,v_prs_bedrijf_opmerking
,DECODE(p_postadres,'J',v_prs_bedrijf_post_adres,null)
,DECODE(p_postadres,'J',v_prs_bedrijf_post_postcode,null)
,DECODE(p_postadres,'J',v_prs_bedrijf_post_plaats,null)
,DECODE(p_postadres,'J',v_prs_bedrijf_post_land,null)
,DECODE(p_bezoekadres,'J',v_prs_bedrijf_bezoek_adres,null)
,DECODE(p_bezoekadres,'J',v_prs_bedrijf_bezoek_postcode,null)
,DECODE(p_bezoekadres,'J',v_prs_bedrijf_bezoek_plaats,null)
,DECODE(p_bezoekadres,'J',v_prs_bedrijf_bezoek_land,null)
,DECODE(v_bedrijf_type,'CREDITEUR',1,null)
,DECODE(v_bedrijf_type,'CREDITEUR',1,null)
,DECODE(v_bedrijf_type,'CREDITEUR',1,null));
SELECT max(prs_bedrijf_key)
INTO v_prs_bedrijf_key
FROM prs_bedrijf;
ELSE
IF v_mode = 'UPDATE' THEN
UPDATE prs_bedrijf
SET prs_bedrijf_naam = v_prs_bedrijf_naam
,prs_bedrijf_telefoon = v_prs_bedrijf_telefoon
,prs_bedrijf_telefoon2 = v_prs_bedrijf_telefoon2
,prs_bedrijf_fax = v_prs_bedrijf_fax
,prs_bedrijf_email = v_prs_bedrijf_email
,prs_bedrijf_opmerking = v_prs_bedrijf_opmerking
WHERE prs_bedrijf_key = v_prs_bedrijf_key;
IF v_postadres = 'J' THEN
UPDATE prs_bedrijf
SET prs_bedrijf_post_adres = v_prs_bedrijf_post_adres
,prs_bedrijf_post_postcode = v_prs_bedrijf_post_postcode
,prs_bedrijf_post_plaats = v_prs_bedrijf_post_plaats
,prs_bedrijf_post_land = v_prs_bedrijf_post_land
WHERE prs_bedrijf_key = v_prs_bedrijf_key;
END IF;
IF v_bezoekadres = 'J' THEN
UPDATE prs_bedrijf
SET prs_bedrijf_bezoek_adres = v_prs_bedrijf_bezoek_adres
,prs_bedrijf_bezoek_postcode = v_prs_bedrijf_bezoek_postcode
,prs_bedrijf_bezoek_plaats = v_prs_bedrijf_bezoek_plaats
,prs_bedrijf_bezoek_land = v_prs_bedrijf_bezoek_land
WHERE prs_bedrijf_key = v_prs_bedrijf_key;
END IF;
ELSE
-- Onbekende actie
NULL;
END IF;
END IF;
ELSE
-- Geen actie
NULL;
END IF;
v_store_prs_bedrijf := FAC.Remember_ResetSelectie('PRS_BEDRIJF');
IF v_prs_bedrijf_key >= 0 THEN
v_store_prs_bedrijf := FAC.Remember_SavePrimaryKey('PRS_BEDRIJF',v_prs_bedrijf_key);
END IF;
RETURN v_prs_bedrijf_key;
EXCEPTION WHEN OTHERS THEN
BEGIN
ORACLE_err_num := SQLCODE;
ORACLE_err_mes := SUBSTR(SQLERRM, 1, 100);
insert into conn_partners_error
(error_mes
,partner_id)
values
('(ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || ORACLE_err_mes || '>)'
,v_partner_id);
--commit;
RETURN 0;
END;
END;
FUNCTION verwerk_contactpersoon
( p_partner_id in number
,p_contactpersoon_id in number
,p_prs_contactpersoon_functie in varchar2
,p_prs_contactpersoon_naam in varchar2
,p_prs_contactpersoon_tussenv in varchar2
,p_prs_contactpersoon_voornaam in varchar2
,p_prs_contactpersoon_voorl in varchar2
,p_prs_contactpersoon_titel in varchar2
,p_prs_contactpersoon_aanhef in varchar2
,p_prs_contactpersoon_tel_1 in varchar2
,p_prs_contactpersoon_tel_2 in varchar2
,p_prs_contactpersoon_fax in varchar2
,p_prs_contactpersoon_email in varchar2
,p_contactpersoon in varchar2) return number
IS
v_partner_id NUMBER(15);
v_contactpersoon_id NUMBER(15);
v_prs_contactpersoon_functie prs_contactpersoon.prs_contactpersoon_functie%type;
v_prs_contactpersoon_naam prs_contactpersoon.prs_contactpersoon_naam%type;
v_prs_contactpersoon_tussenv prs_contactpersoon.prs_contactpersoon_tussenv%type;
v_prs_contactpersoon_voornaam prs_contactpersoon.prs_contactpersoon_voornaam%type;
v_prs_contactpersoon_voorl prs_contactpersoon.prs_contactpersoon_voorletters%type;
v_prs_contactpersoon_titel prs_contactpersoon.prs_contactpersoon_titel%type;
v_prs_contactpersoon_aanhef prs_contactpersoon.prs_contactpersoon_aanhef%type;
v_prs_contactpersoon_tel_1 prs_contactpersoon.prs_contactpersoon_telefoon_1%type;
v_prs_contactpersoon_tel_2 prs_contactpersoon.prs_contactpersoon_telefoon_2%type;
v_prs_contactpersoon_fax prs_contactpersoon.prs_contactpersoon_fax%type;
v_prs_contactpersoon_email prs_contactpersoon.prs_contactpersoon_email%type;
v_contactpersoon varchar2(1);
v_mode VARCHAR(10);
v_count NUMBER(10);
v_prs_contactpersoon_key prs_contactpersoon.prs_contactpersoon_key%type;
v_prs_bedrijf_key prs_bedrijf.prs_bedrijf_key%type;
ORACLE_err_num NUMBER;
ORACLE_err_mes VARCHAR2(100);
BEGIN
-- INIT
--commit;
v_prs_contactpersoon_key := 0;
v_partner_id := p_partner_id;
v_contactpersoon_id := p_contactpersoon_id;
v_prs_contactpersoon_functie := SUBSTR(p_prs_contactpersoon_functie,1,30);
v_prs_contactpersoon_naam := SUBSTR(p_prs_contactpersoon_naam,1,30);
v_prs_contactpersoon_tussenv := SUBSTR(p_prs_contactpersoon_tussenv,1,15);
v_prs_contactpersoon_voornaam := SUBSTR(p_prs_contactpersoon_voornaam,1,30);
v_prs_contactpersoon_voorl := SUBSTR(p_prs_contactpersoon_voorl,1,10);
v_prs_contactpersoon_titel := SUBSTR(p_prs_contactpersoon_titel,1,10);
v_prs_contactpersoon_aanhef := SUBSTR(p_prs_contactpersoon_aanhef,1,30);
v_prs_contactpersoon_tel_1 := SUBSTR(p_prs_contactpersoon_tel_1,1,30);
v_prs_contactpersoon_tel_2 := SUBSTR(p_prs_contactpersoon_tel_2,1,30);
v_prs_contactpersoon_fax := SUBSTR(p_prs_contactpersoon_fax,1,30);
v_prs_contactpersoon_email := SUBSTR(p_prs_contactpersoon_email,1,50);
v_contactpersoon := UPPER(SUBSTR(p_contactpersoon,1,1));
v_prs_bedrijf_key := FAC.Remember_GetPrimaryKey('PRS_BEDRIJF',v_prs_bedrijf_key);
IF v_contactpersoon = 'J' THEN
SELECT COUNT(*)
INTO v_count
FROM PRS_CONTACTPERSOON
WHERE UPPER(trim(prs_contactpersoon_naam)) = UPPER(trim(v_prs_contactpersoon_naam))
AND UPPER(trim(prs_contactpersoon_voornaam)) = UPPER(trim(v_prs_contactpersoon_voornaam))
AND UPPER(trim(prs_contactpersoon_voorletters))= UPPER(trim(v_prs_contactpersoon_voorl));
IF (v_count = 0) THEN
INSERT INTO prs_contactpersoon
(prs_bedrijf_key
,prs_contactpersoon_functie
,prs_contactpersoon_naam
,prs_contactpersoon_tussenv
,prs_contactpersoon_voornaam
,prs_contactpersoon_voorletters
,prs_contactpersoon_titel
,prs_contactpersoon_aanhef
,prs_contactpersoon_telefoon_1
,prs_contactpersoon_telefoon_2
,prs_contactpersoon_fax
,prs_contactpersoon_email)
values
(v_prs_bedrijf_key
,v_prs_contactpersoon_functie
,v_prs_contactpersoon_naam
,v_prs_contactpersoon_tussenv
,v_prs_contactpersoon_voornaam
,v_prs_contactpersoon_voorl
,v_prs_contactpersoon_titel
,v_prs_contactpersoon_aanhef
,v_prs_contactpersoon_tel_1
,v_prs_contactpersoon_tel_2
,v_prs_contactpersoon_fax
,v_prs_contactpersoon_email);
SELECT max(prs_contactpersoon_key)
INTO v_prs_contactpersoon_key
FROM prs_contactpersoon;
ELSE
IF (v_count = 1) THEN
v_mode := 'UPDATE';
SELECT prs_contactpersoon_key
INTO v_prs_contactpersoon_key
FROM PRS_CONTACTPERSOON
WHERE UPPER(trim(prs_contactpersoon_naam)) = UPPER(trim(v_prs_contactpersoon_naam))
AND UPPER(trim(prs_contactpersoon_voornaam)) = UPPER(trim(v_prs_contactpersoon_voornaam))
AND UPPER(trim(prs_contactpersoon_voorletters)) = UPPER(trim(v_prs_contactpersoon_voorl));
UPDATE prs_contactpersoon
SET prs_bedrijf_key = v_prs_bedrijf_key
,prs_contactpersoon_functie = v_prs_contactpersoon_functie
,prs_contactpersoon_tussenv = v_prs_contactpersoon_tussenv
,prs_contactpersoon_titel = v_prs_contactpersoon_titel
,prs_contactpersoon_aanhef = v_prs_contactpersoon_aanhef
,prs_contactpersoon_telefoon_1 = v_prs_contactpersoon_tel_1
,prs_contactpersoon_telefoon_2 = v_prs_contactpersoon_tel_2
,prs_contactpersoon_fax = v_prs_contactpersoon_fax
,prs_contactpersoon_email = v_prs_contactpersoon_email
WHERE prs_contactpersoon_key = v_prs_contactpersoon_key;
END IF;
END IF;
END IF;
--commit;
RETURN v_prs_contactpersoon_key;
EXCEPTION WHEN OTHERS THEN
BEGIN
ORACLE_err_num := SQLCODE;
ORACLE_err_mes := SUBSTR(SQLERRM, 1, 100);
insert into conn_contactpersonen_error
(error_mes
,partner_id
,contactpersoon_id)
values
('(ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || ORACLE_err_mes || '>)'
,v_partner_id
,v_contactpersoon_id);
--commit;
RETURN 0;
END;
END;
END CONN_PARTNERS;
/
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';
/* Formatted on 2008/07/09 17:04 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW conn_v_rap_locatie_verpl (fclt_f_locatie_code,
locatie_adres,
locatie_plaats,
hide_f_item_key,
fclt_f_verplichting,
item,
soort,
bedrijf
)
AS
SELECT b.code, b.adres, b.plaats, a.item_key, a.verpl, a.item, a.soort,
a.bedr
FROM (SELECT m.mld_alg_locatie_key locatie_key, 0 item_key,
'heeft openstaande melding' verpl,
sd.ins_srtdiscipline_prefix
|| TO_CHAR (m.mld_melding_key) item,
td.ins_discipline_omschrijving soort, '-' bedr, '-' omvang
FROM mld_melding m,
mld_stdmelding std,
alg_v_allonroerendgoed og,
ins_srtdiscipline sd,
ins_tab_discipline td
WHERE m.mld_melding_status IN (2, 3, 4, 7) -- open
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
--AND og.alg_gebouw_key IS NOT NULL -- geen terreinen
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN
(1, 3) -- alleen st- en b-meldingen
UNION
SELECT d.ins_alg_locatie_key locatie_key, d.ins_deel_key,
'bevat object' verpl, d.ins_deel_omschrijving item,
td.ins_discipline_omschrijving soort, '-' bedr, '-' omvang
FROM ins_v_aanwezigdeel d,
alg_v_allonroerendgoed og,
ins_tab_discipline td
WHERE d.ins_alg_ruimte_key = og.alg_onroerendgoed_keys
AND og.alg_gebouw_key IS NOT NULL -- geen terreinen
AND d.ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_min_level <> 3 -- plaatsgebonden obj.
UNION -- plaatscontracten
SELECT DISTINCT og.alg_locatie_key locatie_key,
c.cnt_contract_key item_key,
'heeft lopend contract' verpl,
c.cnt_contract_nummer_intern item,
(SELECT td.ins_discipline_omschrijving
FROM ins_tab_discipline td
WHERE td.ins_discipline_key =
c.ins_discipline_key)
soort,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key =
c.cnt_prs_bedrijf_key)
bedr,
'-' omvang
FROM cnt_contract c,
cnt_v_aanwezigcontract_plaats cp,
alg_v_allonroerendgoed og
WHERE c.cnt_contract_looptijd_tot > SYSDATE -- actueel
AND c.cnt_contract_key = cp.cnt_contract_key
AND ( ( cp.cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key =
og.alg_onroerendgoed_keys
)
OR ( cp.cnt_alg_plaats_code = 'L'
AND cp.cnt_alg_plaats_key = og.alg_locatie_key
)
)
UNION -- huurcontracten (1 per locatie en incl. terreinen)
SELECT DISTINCT og.alg_locatie_key locatie_key,
c.cnt_contract_key item_key,
'heeft lopend huurcontract' verpl,
c.cnt_contract_nummer_intern item,
(SELECT td.ins_discipline_omschrijving
FROM ins_tab_discipline td
WHERE td.ins_discipline_key =
c.ins_discipline_key)
soort,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key =
c.cnt_prs_bedrijf_key)
bedr,
'-' omvang
FROM cnt_v_aanwezigcontract c,
cnt_contract_onrgoed co,
alg_v_allonroerendgoed og
WHERE c.cnt_contract_looptijd_tot > SYSDATE -- actueel
AND c.cnt_contract_key = co.cnt_contract_key
AND co.alg_onrgoed_key = og.alg_onroerendgoed_keys
UNION -- diensten (1 per bedrijf per locatie)
SELECT bdl.alg_locatie_key locatie_key, 0 item_key,
'heeft dienst' verpl,
(SELECT d.prs_dienst_omschrijving
FROM prs_dienst d
WHERE d.prs_dienst_key = bdl.prs_dienst_key) item,
'-' soort,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key) bedr,
'-' omvang
FROM prs_bedrijfdienstlocatie bdl
WHERE bdl.alg_locatie_key IS NOT NULL
UNION -- bestellingen (via afleveradres-locatie)
SELECT DISTINCT a.alg_locatie_key, 0 item_key,
'heeft openstaande bestelling' verpl,
TO_CHAR (b.bes_bestelling_key) item,
(SELECT td.ins_discipline_omschrijving
FROM ins_tab_discipline td
WHERE td.ins_discipline_key =
sg.ins_discipline_key)
soort,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key =
sd.prs_bedrijf_key)
bedr,
'-' omvang
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
mld_adres a
WHERE b.bes_bestelling_status BETWEEN 1 AND 5 -- open
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND b.mld_adres_key_lev = a.mld_adres_key
AND a.alg_locatie_key IS NOT NULL) a
LEFT JOIN
(SELECT l.alg_locatie_key locatie_key, l.alg_locatie_code code,
l.alg_locatie_adres adres, l.alg_locatie_plaats plaats
FROM alg_locatie l) b ON a.locatie_key = b.locatie_key
/
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(+);
-- Functionaliteit tbv de locatieoverzichten
-- Budget
-- Uitnutting
-- Xelion informatie
CREATE OR REPLACE PROCEDURE conn_import_budget (
p_import_key IN NUMBER
)
AS
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_aanduiding VARCHAR2 (1000);
v_field VARCHAR2 (100);
v_fielddelimitor VARCHAR2 (1);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
-- De importvelden
v_empty VARCHAR2 (100);
v_locatie VARCHAR2 (100);
v_adres VARCHAR2 (100);
v_divisie VARCHAR2 (30);
v_budget VARCHAR2 (30);
v_district VARCHAR2 (30);
v_periode VARCHAR2 (20);
v_huur VARCHAR2 (30);
v_afschrijving VARCHAR2 (30);
v_servicekosten VARCHAR2 (30);
v_eindtotaal VARCHAR2 (30);
v_vorige_locatie VARCHAR2 (10);
v_vorige_divisie VARCHAR2 (30);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY FAC_IMP_FILE_INDEX;
BEGIN
-- Init
v_fielddelimitor := ';';
header_is_valid := 0;
DELETE conn_imp_budget WHERE importrun IS NOT NULL;
FOR rec IN c
LOOP
BEGIN
v_errorhint := 'Inlezen regel';
v_newline := rec.fac_imp_file_line;
v_aanduiding := v_newline;
v_errorhint := 'Inlezen velden' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie);
IF v_locatie IS NULL THEN
v_locatie := v_vorige_locatie;
END IF;
fac.imp_getfield (v_newline, v_fielddelimitor, v_adres);
fac.imp_getfield (v_newline, v_fielddelimitor, v_divisie);
IF v_divisie IS NULL THEN
v_divisie := v_vorige_divisie;
END IF;
fac.imp_getfield (v_newline, v_fielddelimitor, v_budget);
fac.imp_getfield (v_newline, v_fielddelimitor, v_district);
fac.imp_getfield (v_newline, v_fielddelimitor, v_periode);
fac.imp_getfield (v_newline, v_fielddelimitor, v_huur);
fac.imp_getfield (v_newline, v_fielddelimitor, v_afschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_servicekosten);
fac.imp_getfield (v_newline, v_fielddelimitor, v_eindtotaal);
IF header_is_valid = 0 THEN
IF upper(v_locatie) = 'LOCATIE'
AND upper(v_adres) = 'ADRES'
AND upper(v_eindtotaal) = 'EINDTOTAAL'
THEN
header_is_valid := 1;
END IF;
ELSE
v_errorhint := 'Toevoegen record: ' || v_aanduiding;
INSERT INTO conn_imp_budget
(locatie,
adres,
divisie,
budget,
district,
periode,
huur,
afschrijving,
servicekosten,
eindtotaal,
importrun
)
VALUES (v_locatie,
v_adres,
v_divisie,
v_budget,
v_district,
substr(v_periode,8),
fac.safe_to_number(replace(v_huur,'.','')),
fac.safe_to_number(replace(v_afschrijving,'.','')),
fac.safe_to_number(replace(v_servicekosten,'.','')),
fac.safe_to_number(replace(v_eindtotaal,'.','')),
TO_CHAR(p_import_key)
);
v_vorige_locatie := v_locatie;
v_vorige_divisie := v_divisie;
end if;
COMMIT;
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, v_errorhint);
END;
END LOOP;
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, v_errorhint);
END;
/
CREATE OR REPLACE PROCEDURE conn_update_budget (p_import_key IN NUMBER)
AS
BEGIN
-- kijk in de bestaande tabel (b) of er records met dezelfde periode voorkomen als zojust geimporteerd (i).
DELETE conn_imp_budget b
WHERE importrun IS NULL
AND EXISTS (SELECT locatie
FROM conn_imp_budget i
WHERE i.budget = b.budget
AND i.importrun is not null);
UPDATE conn_imp_budget
SET importrun = NULL
WHERE importrun IS NOT NULL;
END;
/
CREATE OR REPLACE PROCEDURE conn_import_kosten (
p_import_key IN NUMBER
)
AS
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_aanduiding VARCHAR2 (1000);
v_field VARCHAR2 (100);
v_fielddelimitor VARCHAR2 (1);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
-- De importvelden
v_empty VARCHAR2 (100);
v_locatie VARCHAR2 (10);
v_jaar VARCHAR2 (10);
v_maand VARCHAR2 (10);
v_divisie VARCHAR2 (30);
v_kostensoort VARCHAR2 (30);
v_bedrag VARCHAR2 (20);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY FAC_IMP_FILE_INDEX;
BEGIN
-- Init
v_fielddelimitor := ';';
header_is_valid := 0;
DELETE conn_imp_kosten WHERE importrun IS NOT NULL;
FOR rec IN c
LOOP
BEGIN
v_errorhint := 'Inlezen regel';
v_newline := rec.fac_imp_file_line;
v_aanduiding := v_newline;
v_errorhint := 'Inlezen velden' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie);
fac.imp_getfield (v_newline, v_fielddelimitor, v_jaar);
fac.imp_getfield (v_newline, v_fielddelimitor, v_maand);
fac.imp_getfield (v_newline, v_fielddelimitor, v_divisie);
fac.imp_getfield (v_newline, v_fielddelimitor, v_kostensoort);
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrag);
IF header_is_valid = 0 THEN
IF upper(v_locatie) = 'LOCATIE'
AND upper(v_jaar) = 'JAAR'
AND upper(v_bedrag) = 'BEDRAG'
THEN
header_is_valid := 1;
END IF;
ELSE
v_errorhint := 'Toevoegen record: ' || v_aanduiding;
INSERT INTO conn_imp_kosten
(locatie,
jaar,
maand,
divisie,
kostensoort,
bedrag,
importrun
)
VALUES (v_locatie,
to_number(v_jaar),
to_number(v_maand),
v_divisie,
v_kostensoort,
fac.safe_to_number(replace(v_bedrag,',','.')),
TO_CHAR(p_import_key)
);
end if;
COMMIT;
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, v_errorhint);
END;
END LOOP;
-- kijk in de bestaande tabel (b) of er records met dezelfde periode voorkomen als zojust geimporteerd (i).
SELECT count(jaar)
INTO v_count
from conn_imp_kosten b WHERE importrun IS NULL
AND EXISTS (SELECT locatie FROM conn_imp_kosten i
WHERE i.jaar = b.jaar
and i.maand = b.maand
and i.importrun is not null);
IF v_count > 0 THEN
fac.imp_writelog (p_import_key, 'W', 'Combinatie van maand en jaar al eerder geimporteerd.', '');
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, v_errorhint);
END;
/
CREATE OR REPLACE PROCEDURE conn_update_kosten (p_import_key IN NUMBER)
AS
BEGIN
-- kijk in de bestaande tabel (b) of er records met dezelfde periode voorkomen als zojust geimporteerd (i).
DELETE conn_imp_kosten b
WHERE importrun IS NULL
AND EXISTS (SELECT locatie
FROM conn_imp_kosten i
WHERE i.jaar = b.jaar
AND i.maand = b.maand
AND i.importrun is not null);
UPDATE conn_imp_kosten
SET importrun = NULL
WHERE importrun IS NOT NULL;
END;
/
-- bijbehorende rapportage
CREATE OR REPLACE VIEW conn_v_rap_locatie_kosten
(
fclt_f_locatie,
fclt_f_divisie,
fclt_f_jaar,
maand,
huur,
afschrijving,
servicekosten
)
AS
SELECT locatie || (select ' - ' || alg_locatie_omschrijving from alg_v_aanweziglocatie where alg_locatie_code = locatie),
UPPER(divisie) divisie,
periode jaar,
0 maand,
coalesce(huur,0) huur,
coalesce(afschrijving,0) afschrijving,
coalesce(servicekosten,0) servicekosten
FROM conn_imp_budget b WHERE importrun IS NULL
UNION ALL
SELECT locatie || (select ' - ' || alg_locatie_omschrijving from alg_v_aanweziglocatie where alg_locatie_code = locatie),
divisie,
to_char(jaar) jaar,
maand,
SUM (huur) huur,
SUM (afschrijving) afschrijving,
SUM (servicekosten) servicekosten
FROM (SELECT locatie,
UPPER(divisie) divisie,
jaar,
maand,
0 huur,
0 afschrijving,
bedrag servicekosten
FROM conn_imp_kosten WHERE importrun IS NULL
AND kostensoort = 'Fac.kosten'
UNION ALL
SELECT locatie,
UPPER(divisie) divisie,
jaar,
maand,
bedrag huur,
0 afschrijving,
0 servicekosten
FROM conn_imp_kosten WHERE importrun IS NULL
AND kostensoort = 'Huur')
GROUP BY locatie,
divisie,
jaar,
maand
UNION ALL
SELECT locatie || (select ' - ' || alg_locatie_omschrijving from alg_v_aanweziglocatie where alg_locatie_code = locatie),
divisie,
to_char(jaar) jaar,
99 maand,
SUM (huur) huur,
SUM (afschrijving) afschrijving,
SUM (servicekosten) servicekosten
FROM (SELECT locatie,
UPPER(divisie) divisie,
fac.safe_to_number (periode) jaar,
0 maand,
coalesce(huur,0) huur,
coalesce(afschrijving,0) afschrijving,
coalesce(servicekosten,0) servicekosten
FROM conn_imp_budget b WHERE importrun IS NULL
UNION ALL
SELECT locatie,
UPPER(divisie) divisie,
jaar,
maand,
0 huur,
0 afschrijving,
bedrag * (-1) servicekosten
FROM conn_imp_kosten WHERE importrun IS NULL
AND kostensoort = 'Fac.kosten'
UNION ALL
SELECT locatie,
UPPER(divisie) divisie,
jaar,
maand,
bedrag * (-1) huur,
0 afschrijving,
0 servicekosten
FROM conn_imp_kosten WHERE importrun IS NULL
AND kostensoort = 'Huur')
GROUP BY locatie, divisie, jaar
ORDER BY 1,
2,
3,
4;
CREATE OR REPLACE PROCEDURE conn_import_xelion_contract (
p_import_key IN NUMBER
)
AS
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_aanduiding VARCHAR2 (1000);
v_field VARCHAR2 (100);
v_fielddelimitor VARCHAR2 (1);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
-- De importvelden
v_empty VARCHAR2 (100);
v_xelion_nummer VARCHAR2 (10);
v_locatie_code VARCHAR2 (10);
v_locatie_plaats VARCHAR2 (100);
v_status VARCHAR2 (100);
v_verhuurder VARCHAR2 (100);
v_huurder VARCHAR2 (100);
v_huurder_short VARCHAR2 (100);
v_ingangsdatum_c VARCHAR2 (20);
v_einddatum_c VARCHAR2 (20);
v_ingangsdatum DATE;
v_einddatum DATE;
v_optie_verlenging VARCHAR2 (20);
v_auto_verlenging VARCHAR2 (20);
v_opzegtermijn_c VARCHAR2 (20);
v_opzegtermijn NUMBER;
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY FAC_IMP_FILE_INDEX;
BEGIN
-- Init
v_fielddelimitor := ';';
DELETE conn_imp_xelion_contract;
FOR rec IN c
LOOP
BEGIN
v_errorhint := 'Inlezen regel';
v_newline := rec.fac_imp_file_line;
v_aanduiding := substr(v_newline,100);
v_errorhint := 'Inlezen velden' || v_aanduiding;
v_errorhint := 'Inlezen veld xelion nummer' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_xelion_nummer);
v_errorhint := 'Inlezen veld locatie code' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie_code);
v_errorhint := 'Inlezen veld locatie plaats' || v_locatie_code;
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie_plaats);
v_errorhint := 'Inlezen veld huurcontract/inhuur' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_empty); -- huurcontract
fac.imp_getfield (v_newline, v_fielddelimitor, v_empty); -- inhuur
v_errorhint := 'Inlezen veld status' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_status);
v_errorhint := 'Inlezen veld verhuurder' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_verhuurder);
v_errorhint := 'Inlezen veld huurder' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_huurder);
v_errorhint := 'Inlezen veld ingangsdatum' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_ingangsdatum_c);
v_errorhint := 'Inlezen veld einddatum' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_einddatum_c);
v_errorhint := 'Inlezen veld optie verlenging' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_optie_verlenging);
v_errorhint := 'Inlezen veld auto verlenging' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_auto_verlenging);
v_errorhint := 'Inlezen veld opzegtermijn' || v_aanduiding;
fac.imp_getfield (v_newline, v_fielddelimitor, v_opzegtermijn_c);
IF v_status = 'Actief' THEN
v_errorhint := 'Omzetting ingangsdatum' || v_aanduiding;
v_ingangsdatum := to_date (v_ingangsdatum_c, 'dd-mm-yyyy');
v_errorhint := 'Omzetting einddatum' || v_aanduiding;
v_einddatum := to_date (v_einddatum_c, 'dd-mm-yyyy');
v_errorhint := 'Omzetting opzegtermijn' || v_aanduiding;
v_opzegtermijn := to_number (v_opzegtermijn_c);
v_errorhint := 'Zoek huurder in usertabel' || v_huurder;
SELECT fac_usrdata_omschr
INTO v_huurder_short
FROM fac_usrdata
WHERE fac_usrdata_code = substr(v_huurder,1,40)
AND fac_usrtab_key = (SELECT fac_usrtab_key
FROM fac_usrtab
WHERE fac_usrtab_naam = 'Xelion huurder');
v_errorhint := 'Toevoegen record: ' || v_aanduiding;
INSERT INTO conn_imp_xelion_contract
( xelion_nummer,
locatie_code,
locatie_plaats,
status,
verhuurder,
huurder,
ingangsdatum,
einddatum,
optie_verlenging,
auto_verlenging,
opzegtermijn
)
VALUES ( v_xelion_nummer,
v_locatie_code,
v_locatie_plaats,
v_status,
v_verhuurder,
v_huurder_short,
v_ingangsdatum,
v_einddatum,
v_optie_verlenging,
v_auto_verlenging,
v_opzegtermijn
);
END IF;
COMMIT;
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, v_errorhint);
END;
END LOOP;
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, v_errorhint);
END;
/
CREATE OR REPLACE PROCEDURE conn_update_xelion_contract (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT MAX (verhuurder) verhuurder,
COUNT (verhuurder) aantal_verhuurders,
MIN (ingangsdatum) ingangsdatum,
MAX (einddatum) einddatum,
MAX (optie_verlenging) optie_verlenging,
MAX (auto_verlenging) auto_verlenging,
MAX (opzegtermijn) opzegtermijn,
locatie_code
FROM conn_imp_xelion_contract
GROUP BY locatie_code;
CURSOR c_verhuur
IS
SELECT huurder,
verhuurder,
ingangsdatum,
einddatum,
optie_verlenging,
auto_verlenging,
opzegtermijn,
locatie_code
FROM conn_imp_xelion_contract;
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_cnt_contract_key NUMBER;
v_cnt_contract_omschrijving VARCHAR2 (200);
v_cnt_termijn_key NUMBER;
BEGIN
FOR rec IN c
LOOP
BEGIN
v_errorhint := 'Inhuurcontract opzoeken bij locatie: ' || rec.locatie_code;
SELECT c.cnt_contract_key, cnt_contract_omschrijving
INTO v_cnt_contract_key, v_cnt_contract_omschrijving
FROM cnt_contract c,
alg_locatie l,
(SELECT cnt_contract_key,
cnt_alg_plaats_key alg_locatie_key,
NULL alg_gebouw_key
FROM cnt_contract_plaats cp
WHERE cnt_alg_plaats_code = 'L'
AND cnt_contract_plaats_verwijder IS NULL
UNION ALL
SELECT cnt_contract_key, alg_locatie_key, alg_gebouw_key
FROM cnt_contract_plaats cp, alg_gebouw g
WHERE cnt_alg_plaats_key = g.alg_gebouw_key
AND cnt_alg_plaats_code = 'G'
AND cnt_contract_plaats_verwijder IS NULL) cp
WHERE c.cnt_contract_key = cp.cnt_contract_key
AND cp.alg_locatie_key = l.alg_locatie_key
AND c.ins_discipline_key = 1565 -- inhuur
AND l.alg_locatie_code = rec.locatie_code
AND SYSDATE < cnt_contract_looptijd_tot;
fac.imp_writelog (p_import_key, 'I', 'Inhuurcontract gevonden', 'locatie: ' || rec.locatie_code || ' contract_omschrijving: ' || v_cnt_contract_omschrijving);
v_errorhint := 'Inhuurcontract opzoeken rappeltermijn bij locatie: ' || rec.locatie_code || ' termijn:' || rec.opzegtermijn;
SELECT MAX(cnt_termijn_key)
INTO v_cnt_termijn_key
FROM ( SELECT cnt_termijn_key
FROM cnt_termijn
WHERE cnt_termijn_type = 'M'
AND cnt_termijn_aantal = COALESCE(rec.opzegtermijn, 0));
UPDATE cnt_contract
SET cnt_contract_looptijd_van = rec.ingangsdatum,
cnt_contract_looptijd_tot = rec.einddatum,
cnt_contract_opzegtermijn = v_cnt_termijn_key --,
-- cnt_contract_nummer = 'A-' || cnt_contract_nummer
WHERE cnt_contract_key = v_cnt_contract_key;
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, v_errorhint);
END;
END LOOP;
FOR rec IN c_verhuur
LOOP
BEGIN
v_errorhint := 'Verhuurcontract opzoeken bij locatie: ' || rec.locatie_code || ' en huurder: ' || rec.huurder;
SELECT c.cnt_contract_key, cnt_contract_omschrijving
INTO v_cnt_contract_key, v_cnt_contract_omschrijving
FROM cnt_contract c,
prs_bedrijf b,
alg_locatie l,
(SELECT DISTINCT cnt_contract_key, alg_locatie_key
FROM (SELECT cnt_contract_key, alg_locatie_key
FROM cnt_contract_onrgoed co,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g
WHERE alg_onrgoed_niveau = 'R'
AND alg_onrgoed_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
UNION ALL
SELECT cnt_contract_key, alg_locatie_key
FROM cnt_contract_onrgoed co, alg_terreinsector t
WHERE alg_onrgoed_key = t.alg_terreinsector_key
AND alg_onrgoed_niveau = 'T')) cp
WHERE c.cnt_contract_key = cp.cnt_contract_key
AND cp.alg_locatie_key = l.alg_locatie_key
AND c.ins_discipline_key = 1564 -- verhuur
AND l.alg_locatie_code = rec.locatie_code
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_naam LIKE rec.huurder || '%'
AND SYSDATE < cnt_contract_looptijd_tot;
fac.imp_writelog (p_import_key, 'I', 'Verhuurcontract gevonden', 'locatie: ' || rec.locatie_code || ' contract_omschrijving: ' || v_cnt_contract_omschrijving);
UPDATE cnt_contract
SET cnt_contract_looptijd_van = rec.ingangsdatum,
cnt_contract_looptijd_tot = rec.einddatum,
cnt_contract_opzegtermijn = v_cnt_termijn_key,
cnt_contract_nummer = 'A-' || cnt_contract_nummer
WHERE cnt_contract_key = v_cnt_contract_key;
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, v_errorhint);
END;
END LOOP;
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, v_errorhint);
END;
/
--CONN#20501
CREATE OR REPLACE VIEW conn_v_opplochuur
(
fclt_f_locatie,
fclt_f_huurder,
oppervlakte
)
AS
SELECT locatie, huurder, SUM (oppervlakte) oppervlakte
FROM (SELECT b.prs_bedrijf_naam huurder,
l.alg_locatie_omschrijving locatie,
ak.alg_onrgoedkenmerk_waarde oppervlakte
FROM cnt_contract c,
cnt_contract_onrgoed co,
alg_ruimte r,
alg_onrgoedkenmerk ak,
alg_verdieping v,
alg_gebouw g,
alg_locatie l,
prs_bedrijf b
WHERE cnt_contract_verwijder IS NULL
AND ins_discipline_key = 1564 -- huurcontract
AND co.cnt_contract_key = c.cnt_contract_key
AND c.cnt_contract_looptijd_van <= SYSDATE
AND c.cnt_contract_looptijd_tot >= SYSDATE
AND co.alg_onrgoed_key = r.alg_ruimte_key
AND ak.alg_onrgoed_key = r.alg_ruimte_key
AND ak.alg_kenmerk_key = 106
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
UNION ALL
SELECT b.prs_bedrijf_naam huurder,
l.alg_locatie_omschrijving locatie,
ak.alg_onrgoedkenmerk_waarde oppervlakte
FROM cnt_contract c,
cnt_contract_onrgoed co,
alg_terreinsector t,
alg_onrgoedkenmerk ak,
alg_locatie l,
prs_bedrijf b
WHERE cnt_contract_verwijder IS NULL
AND ins_discipline_key = 1564 -- huurcontract
AND co.cnt_contract_key = c.cnt_contract_key
AND c.cnt_contract_looptijd_van <= SYSDATE
AND c.cnt_contract_looptijd_tot >= SYSDATE
AND co.alg_onrgoed_key = t.alg_terreinsector_key
AND ak.alg_onrgoed_key = t.alg_terreinsector_key
AND ak.alg_kenmerk_key = 107 -- huuroppervlakte
AND t.alg_locatie_key = l.alg_locatie_key
AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key)
GROUP BY locatie, huurder
ORDER BY 1;
--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,
UPPER (ins_srtdeel_code),
v_srtdeel_key)
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 6-11-2012 12:12:12 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW conn_v_rap_srtdeel_swap_expimp
(
fclt_f_discipline,
fclt_f_groep,
fclt_f_objectsoort,
fclt_f_objectsoort_code,
objectsoort_aanmaak,
object_id,
cur_objectsoort_key,
new_objectsoort_key,
object_aanmaak,
fclt_f_locatie_code,
locatie_oms,
fclt_f_controle,
controle_periode,
controle_key,
fclt_f_contract,
fclt_f_contract_lev
)
AS
SELECT x.discipline,
x.groep,
x.objectsoort,
x.objectsoort_code,
TO_CHAR (x.objectsoort_aanmaak, 'dd-mm-yyyy hh24:mi:ss')
objectsoort_aanmaak,
x.object,
TO_CHAR (x.objectsoort_key),
NULL,
TO_CHAR (x.object_aanmaak, 'dd-mm-yyyy hh24:mi:ss')
object_aanmaak,
x.alg_locatie_code,
x.alg_locatie_omschrijving,
csd.ins_srtcontrole_omschrijving controle,
TO_CHAR (csd.ins_srtcontrole_periode) controle_periode,
TO_CHAR (csd.ins_srtcontrole_key) controle_key,
c.contract,
c.contract_lev
FROM (SELECT td.ins_discipline_omschrijving discipline,
sg.ins_srtgroep_omschrijving groep,
sd.ins_srtdeel_omschrijving objectsoort,
sd.ins_srtdeel_code objectsoort_code,
sd.ins_srtdeel_key objectsoort_key,
sd.ins_srtdeel_aanmaak objectsoort_aanmaak,
'*** Alle ***' object,
NULL object_key,
NULL object_aanmaak,
'*** Alle ***' alg_locatie_code,
NULL alg_locatie_omschrijving,
NULL alg_locatie_key
FROM ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline td
WHERE sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = td.ins_discipline_key
AND EXISTS
(SELECT 1
FROM ins_v_aanwezigdeel
WHERE ins_srtdeel_key =
sd.ins_srtdeel_key)
UNION ALL
SELECT td.ins_discipline_omschrijving discipline,
sg.ins_srtgroep_omschrijving groep,
sd.ins_srtdeel_omschrijving objectsoort,
sd.ins_srtdeel_code objectsoort_code,
sd.ins_srtdeel_key objectsoort_key,
sd.ins_srtdeel_aanmaak objectsoort_aanmaak,
d.ins_deel_omschrijving object,
d.ins_deel_key object_key,
d.ins_deel_aanmaak object_aanmaak,
--d.ins_alg_ruimte_key,
--d.ins_alg_ruimte_type,
l.alg_locatie_code,
l.alg_locatie_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(+))
x
LEFT JOIN
(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
ON x.objectsoort_key = csd.ins_srtdeel_key
AND x.object != '*** Alle ***'
-- 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.object_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 contract,
b.prs_bedrijf_naam contract_lev
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) c
ON x.objectsoort_key = c.cnt_ins_srtdeel_key
AND x.alg_locatie_key = c.alg_locatie_key
WHERE x.objectsoort_key != 43401;
/* Formatted on 6-11-2012 12:28:00 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE conn_import_srtdeel_swap (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1) := ';';
c_impline_mark VARCHAR2 (100) := '*** Alle ***';
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:
x_ins_discipline_omschrijving VARCHAR2 (255); -- C30
x_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
x_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100
x_ins_srtdeel_code VARCHAR2 (255); -- C10
x_ins_srtdeel_aanmaak VARCHAR2 (255); -- DATE
x_ins_deel_omschrijving VARCHAR2 (255); -- C60
v_cur_srtdeel_key VARCHAR2 (255); -- N10
v_new_srtdeel_key VARCHAR2 (255); -- N10
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_srtdeel_swap;
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, x_ins_discipline_omschrijving);
fac.imp_getfield (v_newline, c_delim, x_ins_srtgroep_omschrijving);
fac.imp_getfield (v_newline, c_delim, x_ins_srtdeel_omschrijving);
fac.imp_getfield (v_newline, c_delim, x_ins_srtdeel_code);
fac.imp_getfield (v_newline, c_delim, x_ins_srtdeel_aanmaak);
fac.imp_getfield (v_newline, c_delim, x_ins_deel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_cur_srtdeel_key);
fac.imp_getfield (v_newline, c_delim, v_new_srtdeel_key);
--Don't care the columns that might follow the above columns!
v_aanduiding :=
'['
|| x_ins_discipline_omschrijving
|| '|'
|| x_ins_srtgroep_omschrijving
|| '|'
|| x_ins_srtdeel_omschrijving
|| '|'
|| x_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 (x_ins_discipline_omschrijving) = 'DISCIPLINE'
AND UPPER (x_ins_srtgroep_omschrijving) = 'GROEP'
AND UPPER (x_ins_srtdeel_omschrijving) = 'OBJECTSOORT'
AND UPPER (x_ins_srtdeel_code) = 'OBJECTSOORT_CODE'
AND UPPER (x_ins_srtdeel_aanmaak) = 'OBJECTSOORT_AANMAAK'
AND UPPER (x_ins_deel_omschrijving) = 'OBJECT_ID'
AND UPPER (v_cur_srtdeel_key) = 'CUR_OBJECTSOORT_KEY'
AND UPPER (v_new_srtdeel_key) = 'NEW_OBJECTSOORT_KEY'
THEN
header_is_valid := 1;
END IF;
ELSE
-- Alleen '*** Alle ***-regels; skip de rest (alleen ter informatie)!
IF (x_ins_deel_omschrijving = c_impline_mark)
THEN
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
-- Skip 'DISCIPLINE'
-- Skip 'GROEP'
-- Skip 'OBJECTSOORT'
-- Skip 'OBJECTSOORT_CODE'
-- Skip 'OBJECTSOORT_AANMAAK'
-- Skip 'OBJECT_ID'
--
v_errormsg := 'CUR_OBJECTSOORT_KEY ongeldig';
v_cur_srtdeel_key := TRIM (v_cur_srtdeel_key);
IF (v_cur_srtdeel_key IS NULL
OR fac.safe_to_number (v_cur_srtdeel_key) IS NULL)
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errormsg := 'NEW_OBJECTSOORT_KEY ongeldig';
v_new_srtdeel_key := TRIM (v_new_srtdeel_key);
IF (v_new_srtdeel_key IS NULL
OR fac.safe_to_number (v_new_srtdeel_key) IS NULL)
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout bij wegschrijven importregel';
INSERT INTO conn_imp_srtdeel_swap (
cur_srtdeel_key,
new_srtdeel_key
)
VALUES (
fac.safe_to_number (v_cur_srtdeel_key),
fac.safe_to_number (v_new_srtdeel_key)
);
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 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',
'Aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'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 SRTDEEL_SWAP afgebroken!');
END conn_import_srtdeel_swap;
/
/* Formatted on 7-11-2012 9:12:15 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE conn_update_srtdeel_swap (p_import_key IN NUMBER)
AS
CURSOR rc
IS
SELECT DISTINCT
cur_srtdeel_key,
d1.ins_srtgroep_key cur_srtgroep_key,
d1.ins_srtdeel_omschrijving cur_srtdeel_oms,
TRIM(DECODE (
INSTR (d1.ins_srtdeel_omschrijving, ' '),
0,
'-',
SUBSTR (d1.ins_srtdeel_omschrijving,
INSTR (d1.ins_srtdeel_omschrijving, ' ') + 1)
))
cur_objectsoort_postfix,
new_srtdeel_key,
d2.ins_srtgroep_key new_srtgroep_key,
d2.ins_srtdeel_omschrijving new_srtdeel_oms
FROM conn_imp_srtdeel_swap sd, ins_srtdeel d1, ins_srtdeel d2
WHERE sd.cur_srtdeel_key IS NOT NULL
AND sd.new_srtdeel_key IS NOT NULL
AND sd.cur_srtdeel_key = d1.ins_srtdeel_key(+)
AND sd.new_srtdeel_key = d2.ins_srtdeel_key(+);
c_charnum_z NUMBER (10) := 90; -- Letter 'Z'!
c_type_srtkey NUMBER (10) := 41;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR (200);
v_skip BOOLEAN;
v_count NUMBER;
v_count_upd NUMBER;
v_kenmerkdeel_key NUMBER (10);
v_kenmerk_key NUMBER (10);
v_kenmerkdeel_waarde VARCHAR2 (1000);
v_charnum NUMBER (10);
v_uniek NUMBER (10);
v_newid VARCHAR2 (200);
BEGIN
FOR rec IN rc
LOOP
BEGIN
v_aanduiding :=
'['
|| TO_CHAR (rec.cur_srtdeel_key)
|| '|'
|| rec.cur_srtdeel_oms
|| '->'
|| TO_CHAR (rec.new_srtdeel_key)
|| '|'
|| rec.new_srtdeel_oms
|| '] ';
v_skip := FALSE;
IF (rec.cur_srtdeel_oms IS NULL OR rec.new_srtdeel_oms IS NULL)
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding,
'Soort-key(s) ongedefinieerd!');
COMMIT;
ELSIF (rec.cur_srtgroep_key != rec.new_srtgroep_key)
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding,
'Soort-key(s) niet onder dezelfde groep-key!');
COMMIT;
ELSE -- Geldige soort-keys onder dezelfde groep-key!
-- 1: Hang controles om (ongeacht de periode).
-- BELANGRIJK: Dit moet als eerste stap, want als geen best-fit
-- kan worden bepaald, dan worden de volgende stappen
-- ook overgeslagen en wordt deze objectsoort (en wat
-- daarmee samenhangt) dus niet omgekat!
FOR cc -- Actuele en verwijderde!
IN ( SELECT a.cur_srtcontrole_key,
a.cur_srtcontrole_oms,
b.bnew_srtcontrole_key,
b.bnew_srtcontrole_oms
FROM (SELECT ins_srtcontrole_key
cur_srtcontrole_key,
ins_srtcontrole_omschrijving
cur_srtcontrole_oms,
ins_srtcontrole_periode
cur_srtcontrole_periode
FROM ins_srtcontrole
WHERE ins_srtinstallatie_key =
rec.cur_srtdeel_key
AND ins_srtcontrole_niveau = 'S') a
LEFT JOIN
(SELECT sc.ins_srtcontrole_key
bnew_srtcontrole_key,
sc.ins_srtcontrole_omschrijving
bnew_srtcontrole_oms,
sc.ins_srtcontrole_periode
bnew_srtcontrole_periode
FROM ins_srtcontrole sc
WHERE sc.ins_srtinstallatie_key =
rec.new_srtdeel_key
AND sc.ins_srtcontrole_niveau = 'S'
AND NOT EXISTS
(SELECT 1
FROM ins_srtcontrole
WHERE ins_srtinstallatie_key =
sc.ins_srtinstallatie_key
AND ins_srtcontrole_niveau =
'S'
AND ins_srtcontrole_periode =
sc.ins_srtcontrole_periode
AND ins_srtcontrole_key <
sc.ins_srtcontrole_key))
b -- best-fit
ON a.cur_srtcontrole_periode =
b.bnew_srtcontrole_periode
LEFT JOIN
(SELECT sc.ins_srtcontrole_key
rnew_srtcontrole_key,
sc.ins_srtcontrole_omschrijving
rnew_srtcontrole_oms,
sc.ins_srtcontrole_periode
rnew_srtcontrole_periode
FROM ins_srtcontrole sc
WHERE sc.ins_srtinstallatie_key =
rec.new_srtdeel_key
AND sc.ins_srtcontrole_niveau = 'S'
AND NOT EXISTS
(SELECT 1
FROM ins_srtcontrole
WHERE ins_srtinstallatie_key =
sc.ins_srtinstallatie_key
AND ins_srtcontrole_niveau =
'S'
AND ins_srtcontrole_key <
sc.ins_srtcontrole_key))
c -- random-fit (doen we niet!)
ON 1 = 1
ORDER BY b.bnew_srtcontrole_key DESC) -- NULLS first, want dan EXIT!
LOOP
IF (cc.bnew_srtcontrole_key IS NULL)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Controles niet omgehangen ['
|| TO_CHAR (cc.cur_srtcontrole_key)
|| '|'
|| cc.cur_srtcontrole_oms
|| ']'
);
COMMIT;
v_skip := TRUE;
EXIT; -- Skip het omhangen van evt. nog andere controles en de rest!
ELSE
v_errormsg := 'Fout omhangen controles';
-- Hang controle om!
UPDATE ins_deelsrtcontrole
SET ins_srtcontrole_key = cc.bnew_srtcontrole_key
WHERE ins_srtcontrole_key = cc.cur_srtcontrole_key;
fac.imp_writelog (
p_import_key,
'I',
v_aanduiding,
'Controles omgehangen ['
|| TO_CHAR (cc.cur_srtcontrole_key)
|| '|'
|| cc.cur_srtcontrole_oms
|| '->'
|| TO_CHAR (cc.bnew_srtcontrole_key)
|| '|'
|| cc.bnew_srtcontrole_oms
|| ']'
);
COMMIT;
END IF;
END LOOP;
IF (v_skip = FALSE) -- Nu kan het niet meer mis gaan...
THEN
-- 2: Zorg dat de doel-soort dezelde kenmerken heeft als de bron-
-- soort!
FOR ck -- Actuele en verwijderde!
IN ( SELECT DISTINCT
k.ins_kenmerk_key cur_kenmerk_key,
k.ins_kenmerk_volgnummer cur_kenmerk_volgnr,
k.ins_srtkenmerk_key cur_srtkenmerk_key,
sk.ins_srtkenmerk_omschrijving cur_srtkenmerk_oms
FROM ins_kenmerk k,
(SELECT sk.*
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtinstallatie_key =
rec.cur_srtdeel_key
AND k.ins_kenmerk_niveau = 'S'
AND k.ins_srtkenmerk_key =
sk.ins_srtkenmerk_key
MINUS
SELECT sk.*
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtinstallatie_key =
rec.new_srtdeel_key
AND k.ins_kenmerk_niveau = 'S'
AND k.ins_srtkenmerk_key =
sk.ins_srtkenmerk_key) sk
WHERE k.ins_srtinstallatie_key = rec.cur_srtdeel_key
AND k.ins_kenmerk_niveau = 'S'
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
ORDER BY k.ins_kenmerk_volgnummer)
LOOP
v_errormsg :=
'Fout toevoegen kenmerk ['
|| ck.cur_srtkenmerk_oms
|| ']';
INSERT INTO ins_kenmerk (ins_srtkenmerk_key,
ins_srtinstallatie_key,
ins_kenmerk_niveau,
ins_kenmerk_volgnummer)
VALUES (ck.cur_srtkenmerk_key,
rec.new_srtdeel_key,
'S',
ck.cur_kenmerk_volgnr);
fac.imp_writelog (
p_import_key,
'I',
v_aanduiding,
'Kenmerk aangemaakt ['
|| TO_CHAR (rec.new_srtdeel_key)
|| '|'
|| ck.cur_srtkenmerk_oms
|| ']'
);
COMMIT;
END LOOP;
-- 3: Hang de bron-kenmerken om (naar de doel-kenmerken)!
FOR ck -- Actuele en verwijderde!
IN ( SELECT a.cur_kenmerk_key,
a.cur_kenmerk_volgnr,
a.ins_srtkenmerk_oms,
b.new_kenmerk_key
FROM (SELECT DISTINCT
k.ins_kenmerk_key cur_kenmerk_key,
k.ins_kenmerk_volgnummer
cur_kenmerk_volgnr,
k.ins_srtkenmerk_key
cur_srtkenmerk_key,
sk.ins_srtkenmerk_omschrijving
ins_srtkenmerk_oms
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtinstallatie_key =
rec.cur_srtdeel_key
AND k.ins_kenmerk_niveau = 'S'
AND k.ins_srtkenmerk_key =
sk.ins_srtkenmerk_key) a
LEFT JOIN
(SELECT DISTINCT
k.ins_kenmerk_key new_kenmerk_key,
k.ins_srtkenmerk_key
new_srtkenmerk_key
FROM ins_kenmerk k
WHERE k.ins_srtinstallatie_key =
rec.new_srtdeel_key
AND k.ins_kenmerk_niveau = 'S') b
ON a.cur_srtkenmerk_key = b.new_srtkenmerk_key
ORDER BY a.cur_kenmerk_volgnr)
LOOP
v_errormsg :=
'Fout omhangen kenmerkwaarden ['
|| ck.ins_srtkenmerk_oms
|| ']';
-- Hang de bron-kenmerken om!
UPDATE ins_kenmerkdeel
SET ins_kenmerk_key = ck.new_kenmerk_key -- Doel-kenmerk
WHERE ins_kenmerk_key = ck.cur_kenmerk_key; -- Bron-kenmerk
COMMIT;
END LOOP;
v_count_upd := 0;
-- 4: Voeg de soort-oms na de 1e spatie toe in TYPE-kenmerk (en
-- maak deze aan als deze nog niet bestaat), zorg dat de object-id
-- ook uniek is onder de doel-soort en hang object om.
FOR cd
IN ( SELECT ins_deel_key,
ins_deel_omschrijving,
ins_deel_verwijder
FROM ins_deel
WHERE ins_srtdeel_key = rec.cur_srtdeel_key
ORDER BY ins_deel_key)
LOOP
-- 4a. Voeg de soort-oms na de 1e spatie toe in TYPE-kenmerk
-- (en maak deze aan als deze nog niet bestaat).
v_errormsg := 'Fout bepalen TYPE-kenmerkwaarde';
SELECT COUNT ( * ),
MAX (kd.ins_kenmerkdeel_key),
MAX (TRIM (kd.ins_kenmerkdeel_waarde))
INTO v_count, v_kenmerkdeel_key, v_kenmerkdeel_waarde
FROM ins_kenmerkdeel kd, ins_kenmerk k
WHERE kd.ins_deel_key = cd.ins_deel_key
AND kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = c_type_srtkey;
IF (v_count = 0)
THEN
v_errormsg := 'Fout bepalen TYPE-kenmerk';
SELECT ins_kenmerk_key
INTO v_kenmerk_key -- Doel-kenmerk (zie ook stap 2)
FROM ins_kenmerk
WHERE ins_srtinstallatie_key = rec.new_srtdeel_key
AND ins_srtkenmerk_key = c_type_srtkey
AND ins_kenmerk_niveau = 'S';
v_errormsg := 'Fout toevoegen TYPE-kenmerkwaarde';
INSERT INTO ins_kenmerkdeel (
ins_deel_key,
ins_kenmerk_key,
ins_kenmerkdeel_waarde
)
VALUES (
cd.ins_deel_key,
v_kenmerk_key,
SUBSTR (
'['
|| rec.cur_objectsoort_postfix
|| ']',
1,
50
)
);
ELSE
-- In stap 3 zijn alle kenmerkwaarden reeds omgehangen (de
-- kenmerk_key hoeft dus niet meer te worden gewijzigd)!
v_errormsg := 'Fout bijwerken TYPE-kenmerkwaarde';
UPDATE ins_kenmerkdeel
SET ins_kenmerkdeel_waarde =
SUBSTR (
v_kenmerkdeel_waarde
|| ' ['
|| rec.cur_objectsoort_postfix
|| ']',
1,
50
)
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
END IF;
COMMIT;
-- 4b. Zorg dat de object-id ook uniek is onder de doel-soort
-- (zoniet, dan toevoeging A, B, C, etc.) en hang object om.
v_charnum := 64; -- Letter '@' (de letter VOOR de letter 'A')!
v_uniek := 0;
v_newid := cd.ins_deel_omschrijving;
IF (cd.ins_deel_verwijder IS NULL)
THEN
LOOP
SELECT COUNT ( * )
INTO v_count
FROM ins_v_aanwezigdeel
WHERE ins_srtdeel_key = rec.new_srtdeel_key
AND ins_deel_omschrijving = v_newid;
IF (v_count = 0)
THEN
v_uniek := 1;
ELSE
v_charnum := v_charnum + 1;
v_newid :=
SUBSTR (cd.ins_deel_omschrijving, 1, 59)
|| CHR (v_charnum);
END IF;
EXIT WHEN (v_charnum > c_charnum_z OR v_uniek = 1);
END LOOP;
ELSE
-- Onderstaande loop over verwijderde objecten lijkt
-- overdreven, maar toch bleken er tijdens test ineens 2
-- in dezelfde seconde verwijderde objecten met dezelfde
-- ID/omschrijving te bestaan (op dezelfde locatie)!!!
LOOP
SELECT COUNT ( * )
INTO v_count
FROM ins_deel
WHERE ins_deel_verwijder = cd.ins_deel_verwijder
AND ins_srtdeel_key = rec.new_srtdeel_key
AND ins_deel_omschrijving = v_newid;
IF (v_count = 0)
THEN
v_uniek := 1;
ELSE
v_charnum := v_charnum + 1;
v_newid :=
SUBSTR (cd.ins_deel_omschrijving, 1, 59)
|| CHR (v_charnum);
END IF;
EXIT WHEN (v_charnum > c_charnum_z OR v_uniek = 1);
END LOOP;
END IF;
IF (v_uniek = 1)
THEN
v_errormsg := 'Fout omhangen object';
-- Hang object om!
UPDATE ins_deel
SET ins_srtdeel_key = rec.new_srtdeel_key,
ins_deel_omschrijving = v_newid
WHERE ins_deel_key = cd.ins_deel_key;
v_count_upd := v_count_upd + 1;
ELSE
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Object niet omgehangen ['
|| cd.ins_deel_omschrijving
|| ']'
);
END IF;
COMMIT;
END LOOP;
fac.imp_writelog (
p_import_key,
'S',
v_aanduiding
|| '#objecten omgehangen: '
|| TO_CHAR (v_count_upd),
''
);
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,
'');
END;
END LOOP;
-- Verwijder "lege" objectsoort-controles!
v_errormsg := 'Fout bij schonen controles';
SELECT COUNT ( * )
INTO v_count
FROM ins_srtcontrole sc
WHERE sc.ins_srtcontrole_niveau = 'S'
AND NOT EXISTS
(SELECT 1
FROM ins_deelsrtcontrole
WHERE ins_srtcontrole_key = sc.ins_srtcontrole_key)
AND NOT EXISTS
(SELECT 1
FROM ins_deel
WHERE ins_srtdeel_key = sc.ins_srtinstallatie_key);
DELETE FROM ins_srtcontrole sc
WHERE sc.ins_srtcontrole_niveau = 'S'
AND NOT EXISTS
(SELECT 1
FROM ins_deelsrtcontrole
WHERE ins_srtcontrole_key = sc.ins_srtcontrole_key)
AND NOT EXISTS
(SELECT 1
FROM ins_deel
WHERE ins_srtdeel_key = sc.ins_srtinstallatie_key);
fac.imp_writelog (p_import_key,
'S',
'#controles geschoond: ' || TO_CHAR (v_count),
'');
COMMIT;
-- Verwijder "lege" objectsoorten uit scope bij contracten!
v_errormsg := 'Fout bij schonen contracten';
SELECT COUNT (DISTINCT co.cnt_contract_key)
INTO v_count
FROM cnt_contract_object co
WHERE co.cnt_contract_object_verwijder IS NULL
AND NOT EXISTS
(SELECT 1
FROM ins_deel
WHERE ins_srtdeel_key = co.cnt_ins_srtdeel_key);
UPDATE cnt_contract_object co
SET co.cnt_contract_object_verwijder = SYSDATE
WHERE co.cnt_contract_object_verwijder IS NULL
AND NOT EXISTS
(SELECT 1
FROM ins_deel
WHERE ins_srtdeel_key = co.cnt_ins_srtdeel_key);
fac.imp_writelog (p_import_key,
'S',
'#contracten geschoond: ' || TO_CHAR (v_count),
'');
COMMIT;
-- Verwijder "lege" objectsoort-kenmerken!
v_errormsg := 'Fout bij schonen kenmerken';
SELECT COUNT ( * )
INTO v_count
FROM ins_kenmerk k
WHERE k.ins_kenmerk_verwijder IS NULL AND k.ins_kenmerk_niveau = 'S'
AND NOT EXISTS
(SELECT 1
FROM ins_deel
WHERE ins_srtdeel_key = k.ins_srtinstallatie_key);
UPDATE ins_kenmerk k
SET k.ins_kenmerk_verwijder = SYSDATE
WHERE k.ins_kenmerk_verwijder IS NULL AND k.ins_kenmerk_niveau = 'S'
AND NOT EXISTS
(SELECT 1
FROM ins_deel
WHERE ins_srtdeel_key = k.ins_srtinstallatie_key);
fac.imp_writelog (p_import_key,
'S',
'#kenmerken geschoond: ' || TO_CHAR (v_count),
'');
COMMIT;
-- Verwijder "lege" objectsoorten!
v_errormsg := 'Fout bij schonen objectsoorten';
SELECT COUNT ( * )
INTO v_count
FROM ins_srtdeel sd
WHERE sd.ins_srtdeel_verwijder IS NULL
AND NOT EXISTS (SELECT 1
FROM ins_deel
WHERE ins_srtdeel_key = sd.ins_srtdeel_key);
UPDATE ins_srtdeel sd
SET ins_srtdeel_verwijder = SYSDATE
WHERE sd.ins_srtdeel_verwijder IS NULL
AND NOT EXISTS (SELECT 1
FROM ins_deel
WHERE ins_srtdeel_key = sd.ins_srtdeel_key);
fac.imp_writelog (p_import_key,
'S',
'#objectsoorten geschoond: ' || TO_CHAR (v_count),
'');
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,
'Importproces SRTDEEL_SWAP afgebroken!');
END conn_update_srtdeel_swap;
/
/* 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 9-7-2013 17:40:04 (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 k1.vnr = 2
LEFT JOIN
conn_v_locatiekenmerken k3
ON x.alg_locatie_key = k3.alg_onrgoed_key
AND k1.vnr = 3
LEFT JOIN
conn_v_locatiekenmerken k4
ON x.alg_locatie_key = k4.alg_onrgoed_key
AND k1.vnr = 4
LEFT JOIN
conn_v_locatiekenmerken k5
ON x.alg_locatie_key = k5.alg_onrgoed_key
AND k1.vnr = 5
LEFT JOIN
conn_v_locatiekenmerken k6
ON x.alg_locatie_key = k6.alg_onrgoed_key
AND k1.vnr = 6
LEFT JOIN
conn_v_locatiekenmerken k7
ON x.alg_locatie_key = k7.alg_onrgoed_key AND k1.vnr = 7
LEFT JOIN
conn_v_locatiekenmerken k8
ON x.alg_locatie_key = k8.alg_onrgoed_key AND k1.vnr = 8
LEFT JOIN
conn_v_locatiekenmerken k9
ON x.alg_locatie_key = k9.alg_onrgoed_key AND k1.vnr = 9
LEFT JOIN
conn_v_locatiekenmerken k10
ON x.alg_locatie_key = k10.alg_onrgoed_key AND k1.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;
/
BEGIN fac.registercustversion('CONN', 55); END;
/
BEGIN adm.systrackscript('$Workfile: conn.sql $', '$Revision$', 0); END;
/
COMMIT;
SPOOL OFF