1466 lines
59 KiB
SQL
1466 lines
59 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific configuration sql statements for AASA: Arcadis Aqumen Facility Management for Sabic
|
||
|
||
DEFINE thisfile = 'AASA.SQL'
|
||
DEFINE dbuser = '^AASA'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SPOOL &fcltlogfile
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
-- script om dagelijks terugkerende scripts aan te roepen.
|
||
CREATE OR REPLACE PROCEDURE aasa_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
aaxx_daily_task (p_applname, p_applrun);
|
||
END;
|
||
/
|
||
|
||
-- budgettracker overrules
|
||
CREATE OR REPLACE VIEW aasa_v_export_budget_tracker (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_budget_tracker;
|
||
|
||
-- export overrules
|
||
-- exact
|
||
CREATE OR REPLACE VIEW aasa_v_export_exact (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_xml;
|
||
CREATE OR REPLACE PROCEDURE aasa_select_exact (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_select_exact_xml(p_applname, p_applrun);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE aasa_export_exact (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_export_exact(p_applname, p_applrun, p_filedir, p_filename);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW aasa_v_export_verwerk_exact (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_verwerk_exact;
|
||
CREATE OR REPLACE PROCEDURE aasa_export_verwerk_exact (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_export_verwerk_exact(p_applname, p_applrun, p_filedir, p_filename);
|
||
END;
|
||
/
|
||
|
||
-- bundel catering
|
||
CREATE OR REPLACE VIEW aasa_v_catering_kpn
|
||
(
|
||
res_rsv_artikel_key,
|
||
res_rsv_artikel_prijs,
|
||
res_rsv_artikel_levering,
|
||
bu_kostenplaats_key
|
||
)
|
||
AS
|
||
SELECT res_rsv_artikel_key,
|
||
res_rsv_artikel_prijs,
|
||
res_rsv_artikel_levering,
|
||
(SELECT prs_kostenplaats_key
|
||
FROM prs_afdeling ak
|
||
WHERE ak.prs_bedrijf_key IS NOT NULL
|
||
AND ak.prs_afdeling_verwijder IS NULL
|
||
AND ak.prs_afdeling_naam IN
|
||
(SELECT ta.prs_afdeling_naam
|
||
FROM prs_kostenplaats kp,
|
||
prs_afdeling a,
|
||
prs_v_afdeling_boom ab,
|
||
prs_afdeling ta
|
||
WHERE kp.prs_kostenplaats_key = a.prs_kostenplaats_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_afdeling_key1 = ta.prs_afdeling_key
|
||
AND kp.prs_kostenplaats_nr = k.prs_kostenplaats_nr))
|
||
bukpn
|
||
FROM res_rsv_ruimte rrr, prs_kostenplaats k, res_rsv_artikel rra
|
||
WHERE rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
||
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rra.res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_status_bo_key = 5;
|
||
|
||
CREATE OR REPLACE VIEW aasa_v_export_bundel_catering
|
||
(
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT res_rsv_artikel_key || ';' || res_rsv_artikel_prijs result,
|
||
res_rsv_artikel_key result_order
|
||
FROM aasa_v_catering_kpn;
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE aasa_export_bundel_catering (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
CURSOR c_kpn (lev_date DATE)
|
||
IS
|
||
SELECT bu_kostenplaats_key, sum(res_rsv_artikel_prijs) prijs
|
||
FROM aasa_v_catering_kpn
|
||
WHERE res_rsv_artikel_levering < lev_date
|
||
GROUP BY bu_kostenplaats_key;
|
||
|
||
c_catmld_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(2, 'D');
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_laatste_export DATE;
|
||
v_mld_melding_key NUMBER;
|
||
v_mld_opdr_key NUMBER;
|
||
v_prs_bedrijf_key NUMBER;
|
||
v_prs_dienst_key NUMBER;
|
||
v_alg_gebouw_key NUMBER;
|
||
v_alg_locatie_key NUMBER;
|
||
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
|
||
v_aanvrager NUMBER;
|
||
v_mld_workorder_key NUMBER;
|
||
v_mld_stdmelding_key NUMBER;
|
||
v_date DATE;
|
||
v_month VARCHAR2(30);
|
||
v_count NUMBER;
|
||
BEGIN
|
||
-- Facilitor
|
||
v_aanvrager := 4;
|
||
-- stdmelding key voor recharge
|
||
v_mld_stdmelding_key := 1292;
|
||
-- key van opdrachttype workorder
|
||
v_mld_workorder_key := 2;
|
||
-- key van gebouw waar catering op geboekt mag worden
|
||
v_alg_gebouw_key := 1823;
|
||
v_alg_locatie_key := 63;
|
||
-- key van bedrijf App<70>l
|
||
v_prs_bedrijf_key := 37081;
|
||
|
||
v_errormsg := 'Bepaal einddatum';
|
||
|
||
-- wat is de eerste dag van de huidige maand
|
||
v_date := TO_DATE (TO_CHAR (SYSDATE, 'yyyymm') || '01', 'yyyymmdd');
|
||
v_month := REPLACE(TO_CHAR (v_date-1, 'month-yyyy', 'NLS_DATE_LANGUAGE = ''dutch'''), ' ', '');
|
||
|
||
SELECT COUNT (mld_opdr_key)
|
||
INTO v_count
|
||
FROM mld_opdr
|
||
WHERE mld_opdr_omschrijving = 'Cateringreserveringen maand: ' || v_month;
|
||
|
||
IF v_count > 0
|
||
THEN
|
||
fac.writelog (
|
||
p_applname,
|
||
'E',
|
||
'Catering export is al eerder uitgevoerd.',
|
||
'Controleer opdrachten met omschrijving: '
|
||
|| 'Cateringreserveringen maand: ' || v_month);
|
||
ELSE
|
||
FOR rec IN c_kpn (v_date)
|
||
LOOP
|
||
BEGIN
|
||
IF rec.bu_kostenplaats_key IS NOT NULL
|
||
THEN
|
||
-- controleer of ik een melding heb op deze kpn
|
||
BEGIN
|
||
v_errormsg := 'Opzoeken catering melding';
|
||
|
||
SELECT mld_melding_key
|
||
INTO v_mld_melding_key
|
||
FROM mld_melding
|
||
WHERE prs_kostenplaats_key = rec.bu_kostenplaats_key
|
||
AND mld_stdmelding_key = v_mld_stdmelding_key
|
||
AND v_date BETWEEN mld_melding_datum
|
||
AND mld_melding_einddatum + 1;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- geen melding voor deze locatie gevonden. Dan maken we er maar een aan.
|
||
|
||
v_errormsg := 'Aanmaken catering melding';
|
||
|
||
BEGIN
|
||
INSERT INTO mld_melding (mld_melding_omschrijving,
|
||
prs_perslid_key,
|
||
prs_kostenplaats_key,
|
||
mld_stdmelding_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_einddatum,
|
||
mld_melding_datum,
|
||
mld_melding_t_uitvoertijd,
|
||
mld_meldbron_key,
|
||
mld_melding_module,
|
||
mld_melding_spoed)
|
||
VALUES ('Catering factuur boekingen',
|
||
v_aanvrager,
|
||
rec.bu_kostenplaats_key,
|
||
v_mld_stdmelding_key,
|
||
v_alg_locatie_key,
|
||
v_alg_gebouw_key,
|
||
TO_DATE (TO_CHAR (v_date, 'YYYY') || '1231',
|
||
'YYYYMMDD'),
|
||
TO_DATE (TO_CHAR (v_date, 'YYYY') || '0101',
|
||
'YYYYMMDD'),
|
||
c_catmld_uitvoertijd,
|
||
5,
|
||
'MLD',
|
||
3)
|
||
RETURNING mld_melding_key
|
||
INTO v_mld_melding_key;
|
||
|
||
BEGIN
|
||
mld.setmeldingstatus (v_mld_melding_key, 2, v_aanvrager);
|
||
END;
|
||
|
||
BEGIN
|
||
mld.setmeldingstatus (v_mld_melding_key, 4, v_aanvrager);
|
||
END;
|
||
|
||
UPDATE mld_melding
|
||
SET mld_melding_behandelaar_key = v_aanvrager
|
||
WHERE mld_melding_key = v_mld_melding_key;
|
||
END;
|
||
END;
|
||
|
||
-- nu gaan we de opdracht aanmaken
|
||
BEGIN
|
||
v_mld_opdr_bedrijfopdr_volgnr :=
|
||
mld.bepaalopdrmeldingvolgnr (v_mld_melding_key);
|
||
|
||
v_errormsg :=
|
||
'Maak opdracht aan om factuur van cateraar te matchen';
|
||
|
||
-- maak opdracht aan om cateringfactuur van leverancier te matchen
|
||
INSERT INTO mld_opdr (mld_melding_key,
|
||
prs_kostenplaats_key,
|
||
mld_statusopdr_key,
|
||
mld_typeopdr_key,
|
||
prs_perslid_key,
|
||
mld_uitvoerende_keys,
|
||
mld_opdr_datumbegin,
|
||
mld_opdr_einddatum,
|
||
mld_opdr_module,
|
||
mld_opdr_omschrijving,
|
||
mld_opdr_materiaal,
|
||
mld_opdr_kosten,
|
||
mld_opdr_bedrijfopdr_volgnr)
|
||
VALUES ( v_mld_melding_key,
|
||
rec.bu_kostenplaats_key,
|
||
5, -- uitgegeven
|
||
v_mld_workorder_key,
|
||
v_aanvrager,
|
||
v_prs_bedrijf_key,
|
||
v_date - 1,
|
||
fac.datumtijdplusuitvoertijd (SYSDATE, 1, 'DAGEN'),
|
||
'MLD',
|
||
'Cateringreserveringen maand: ' || v_month,
|
||
rec.prijs,
|
||
rec.prijs,
|
||
v_mld_opdr_bedrijfopdr_volgnr)
|
||
RETURNING mld_opdr_key INTO v_mld_opdr_key;
|
||
|
||
UPDATE res_rsv_artikel rra
|
||
SET res_rsv_artikel_verwerkt = SYSDATE,
|
||
res_status_bo_key = 6
|
||
WHERE EXISTS
|
||
(SELECT res_rsv_artikel_key
|
||
FROM aasa_v_catering_kpn kpn
|
||
WHERE kpn.res_rsv_artikel_key =
|
||
rra.res_rsv_artikel_key
|
||
AND kpn.bu_kostenplaats_key = rec.bu_kostenplaats_key
|
||
AND res_rsv_artikel_levering < v_date);
|
||
|
||
v_errormsg := 'Update melding status';
|
||
mld.updatemeldingstatus (v_mld_melding_key, 0, v_aanvrager); -- Facilitor
|
||
-- meld de opdracht af
|
||
MLD.setopdrachtstatus (v_mld_opdr_key, 6, v_aanvrager);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'E', v_errormsg, '');
|
||
|
||
END;
|
||
ELSE
|
||
fac.writelog (p_applname, 'E', 'Een bedrag van: ' || rec.prijs || ' euro kan niet aan een kostenplaats gekoppeld worden!', '');
|
||
END IF;
|
||
END LOOP;
|
||
END LOOP;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
END;
|
||
/
|
||
|
||
-- exact verkoop
|
||
CREATE OR REPLACE VIEW aasa_v_export_exact_verkoop (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
|
||
CREATE OR REPLACE PROCEDURE aasa_select_exact_verkoop (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(sysdate, 'yyyy'));
|
||
END;
|
||
/
|
||
CREATE OR REPLACE PROCEDURE aasa_export_exact_verkoop (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(sysdate, 'yyyy'));
|
||
END;
|
||
/
|
||
|
||
-- exact verkoop over het vorige jaar
|
||
CREATE OR REPLACE VIEW aasa_v_export_exact_verkoop_vj (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
|
||
CREATE OR REPLACE PROCEDURE aasa_select_exact_verkoop_vj (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
|
||
END;
|
||
/
|
||
CREATE OR REPLACE PROCEDURE aasa_export_exact_verkoop_vj (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
|
||
END;
|
||
/
|
||
|
||
-- exact projecturen (XML)
|
||
CREATE OR REPLACE VIEW aasa_v_export_exact_uren (result, result_order)
|
||
AS SELECT result, result_order FROM aaxx_v_export_exact_uren_xml;
|
||
CREATE OR REPLACE PROCEDURE aasa_select_exact_uren (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_select_exact_uren_xml(p_applname, p_applrun, '');
|
||
END;
|
||
/
|
||
|
||
-- verwerk exact projecturen (XML)
|
||
CREATE OR REPLACE PROCEDURE aasa_export_verwerk_exact_uren (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, '');
|
||
END;
|
||
/
|
||
|
||
-- import overrulles
|
||
-- import srtruimte
|
||
CREATE OR REPLACE PROCEDURE aasa_import_contract (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
aaxx_import_contract(p_import_key);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE aasa_update_contract (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
aaxx_update_contract(p_import_key);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE aasa_import_ruimte (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
aaxx_import_ruimte(p_import_key);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE aasa_update_ruimte (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
aaxx_update_ruimte(p_import_key);
|
||
END;
|
||
/
|
||
|
||
-- view voor gebouwlistbox bij bewonermutaties. Ivm nieuwe mobilisatie mogen alleen
|
||
-- de nieuw toegevoegde gebouwen hier getoond worden.
|
||
CREATE OR REPLACE VIEW aasa_v_gebouw
|
||
(
|
||
alg_gebouw_key,
|
||
alg_gebouw_omschrijving
|
||
)
|
||
AS
|
||
SELECT alg_gebouw_key, alg_gebouw_omschrijving
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_verwijder IS NULL
|
||
AND alg_gebouw_aanmaak > TO_DATE ('20131217', 'yyyymmdd');
|
||
|
||
CREATE OR REPLACE VIEW aasa_v_rap_gebouw_geg
|
||
(
|
||
code,
|
||
fclt_f_vak,
|
||
gebouwnr,
|
||
gebouwnaam,
|
||
fclt_f_fm_er,
|
||
fclt_f_eigenaar,
|
||
fclt_f_klantcode,
|
||
fclt_f_business_unit,
|
||
fclt_f_maint_cat,
|
||
m2,
|
||
code_exact
|
||
)
|
||
AS
|
||
SELECT alg_gebouw_code code,
|
||
SUBSTR (alg_gebouw_code, 1, 3) vak,
|
||
SUBSTR (alg_gebouw_code, 5, 3) gebouwnr,
|
||
alg_gebouw_naam gebouwnaam,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud, alg_onrgoedkenmerk ogk
|
||
WHERE ogk.alg_onrgoed_key = g.alg_gebouw_key
|
||
AND ogk.alg_onrgoedkenmerk_waarde = ud.fac_usrdata_key
|
||
AND ogk.alg_kenmerk_key = 1040)
|
||
fmer,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud, alg_onrgoedkenmerk ogk
|
||
WHERE ogk.alg_onrgoed_key = g.alg_gebouw_key
|
||
AND ogk.alg_onrgoedkenmerk_waarde = ud.fac_usrdata_key
|
||
AND ogk.alg_kenmerk_key = 1080)
|
||
eigenaar,
|
||
k.prs_kostenplaats_nr klantcode,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud, alg_onrgoedkenmerk ogk
|
||
WHERE ogk.alg_onrgoed_key = g.alg_gebouw_key
|
||
AND ogk.alg_onrgoedkenmerk_waarde = ud.fac_usrdata_key
|
||
AND ogk.alg_kenmerk_key = 1100)
|
||
businessunit,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud, alg_onrgoedkenmerk ogk
|
||
WHERE ogk.alg_onrgoed_key = g.alg_gebouw_key
|
||
AND ogk.alg_onrgoedkenmerk_waarde = ud.fac_usrdata_key
|
||
AND ogk.alg_kenmerk_key = 1140)
|
||
maintcat,
|
||
g.alg_gebouw_bruto_vloeropp m2,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk ogk
|
||
WHERE ogk.alg_onrgoed_key = g.alg_gebouw_key
|
||
AND ogk.alg_kenmerk_key = 1120)
|
||
exactcode
|
||
FROM alg_v_aanweziggebouw g, prs_kostenplaats k
|
||
WHERE g.prs_kostenplaats_key = k.prs_kostenplaats_key(+);
|
||
|
||
|
||
CREATE OR REPLACE VIEW aasa_v_rap_perslidgegevens
|
||
(
|
||
fclt_f_locatie,
|
||
fclt_f_gebouw,
|
||
verdieping,
|
||
naam,
|
||
lockernummer,
|
||
postvak,
|
||
telefoon,
|
||
mobielnr,
|
||
email,
|
||
personeelsnr,
|
||
inhuur,
|
||
dienstverband,
|
||
organisatie,
|
||
functie
|
||
)
|
||
AS
|
||
SELECT alg_locatie_omschrijving,
|
||
alg_gebouw_upper,
|
||
alg_verdieping_code,
|
||
prs_perslid_naam_full,
|
||
lo.ins_deel_omschrijving,
|
||
pv.fac_usrdata_omschr,
|
||
p.prs_perslid_telefoonnr,
|
||
p.prs_perslid_mobiel,
|
||
p.prs_perslid_email,
|
||
p.prs_perslid_nr,
|
||
ih.prs_kenmerklink_waarde,
|
||
p.prs_perslid_dienstverband,
|
||
a.prs_afdeling_omschrijving,
|
||
sp.prs_srtperslid_omschrijving
|
||
FROM prs_perslid p,
|
||
prs_afdeling a,
|
||
prs_srtperslid sp,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_v_werkplekperslid_gegevens wp,
|
||
alg_locatie l,
|
||
(SELECT *
|
||
FROM prs_kenmerklink kl, fac_usrdata ud
|
||
WHERE prs_kenmerklink_waarde = ud.fac_usrdata_key
|
||
AND prs_kenmerk_key = 1060) pv, -- postvak
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1080) ih, -- inhuur
|
||
(SELECT *
|
||
FROM ins_deel d, ins_srtdeel sd
|
||
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND d.ins_alg_ruimte_type = 'P'
|
||
AND sd.ins_srtgroep_key = 81) lo -- locker
|
||
WHERE p.prs_perslid_key = wp.prs_perslid_key(+)
|
||
AND wp.alg_locatie_key = l.alg_locatie_key(+)
|
||
AND p.prs_perslid_key = pv.prs_link_key(+)
|
||
AND p.prs_perslid_key = ih.prs_link_key(+)
|
||
AND p.prs_perslid_key = lo.ins_alg_ruimte_key(+)
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND NOT EXISTS
|
||
(SELECT prs_kenmerklink_key
|
||
FROM prs_kenmerklink kl
|
||
WHERE kl.prs_kenmerk_key = 4
|
||
AND kl.prs_link_key = p.prs_perslid_key);
|
||
|
||
|
||
CREATE OR REPLACE VIEW aasa_v_noti_resreminder
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
xkey
|
||
)
|
||
AS
|
||
SELECT 'RESINF',
|
||
NULL,
|
||
rsvr.res_rsv_ruimte_contact_key,
|
||
'Reservering '
|
||
|| res.res_reservering_key
|
||
|| ': U heeft op '
|
||
|| TO_CHAR (rsvr.res_rsv_ruimte_van, 'DD-MM')
|
||
|| ' van '
|
||
|| TO_CHAR (rsvr.res_rsv_ruimte_van, 'HH24:MI')
|
||
|| ' tot '
|
||
|| TO_CHAR (rsvr.res_rsv_ruimte_tot, 'HH24:MI')
|
||
|| ' ruimte '
|
||
|| r.res_ruimte_nr
|
||
|| ' gereserveerd.',
|
||
res.res_reservering_key,
|
||
rsvr.res_rsv_ruimte_key
|
||
FROM res_v_aanwezigreservering res,
|
||
res_v_aanwezigrsv_ruimte rsvr,
|
||
res_ruimte_opstelling opst,
|
||
res_disc_params rdp,
|
||
res_ruimte r
|
||
WHERE r.res_discipline_key = rdp.res_ins_discipline_key
|
||
AND rdp.res_disc_params_noti_dagen IS NOT NULL
|
||
AND res.res_reservering_key = rsvr.res_reservering_key
|
||
AND opst.res_ruimte_opstel_key = rsvr.res_ruimte_opstel_key
|
||
AND opst.res_ruimte_key = r.res_ruimte_key
|
||
AND rsvr.res_status_fo_key <= 5
|
||
AND (rsvr.res_rsv_ruimte_van BETWEEN fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
res_disc_params_noti_dagen,
|
||
'DAGEN')
|
||
AND fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
res_disc_params_noti_dagen + 1,
|
||
'DAGEN')
|
||
OR rsvr.res_rsv_ruimte_van BETWEEN fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
1,
|
||
'DAGEN')
|
||
AND fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
2,
|
||
'DAGEN'))
|
||
AND TO_CHAR (SYSDATE, 'D') NOT IN (1, 7)
|
||
AND rsvr.res_rsv_ruimte_van >= SYSDATE
|
||
UNION ALL
|
||
SELECT 'RESINF',
|
||
NULL,
|
||
res_rsv_ruimte_contact_key,
|
||
'Reservering '
|
||
|| res_reservering_key
|
||
|| ': U heeft op '
|
||
|| TO_CHAR (MIN (van), 'dd-mm')
|
||
|| DECODE (
|
||
MIN (van),
|
||
MAX (tot),
|
||
' om ' || TO_CHAR (MIN (van), 'hh24:mi'),
|
||
' van '
|
||
|| TO_CHAR (MIN (van), 'hh24:mi')
|
||
|| ' tot '
|
||
|| TO_CHAR (MAX (tot), 'hh24:mi'))
|
||
|| ' in ruimte ('
|
||
|| (SELECT alg_gebouw_code
|
||
|| '-'
|
||
|| alg_verdieping_code
|
||
|| '-'
|
||
|| alg_ruimte_nr
|
||
FROM alg_v_onroerendgoed_gegevens arg
|
||
WHERE arg.alg_ruimte_key = ruimte_key)
|
||
|| ') '
|
||
|| COUNT (res_reservering_key)
|
||
|| ' voorziening(en) gereserveerd.',
|
||
res_reservering_key,
|
||
res_rsv_ruimte_key
|
||
FROM (SELECT rsvr.res_rsv_ruimte_contact_key,
|
||
res.res_reservering_key,
|
||
rsvd.res_rsv_deel_van van,
|
||
rsvd.res_rsv_deel_tot tot,
|
||
rsvr.res_rsv_ruimte_key,
|
||
rsvr.alg_ruimte_key ruimte_key
|
||
FROM res_v_aanwezigreservering res,
|
||
res_v_aanwezigrsv_ruimte rsvr,
|
||
res_disc_params rdp,
|
||
res_rsv_deel rsvd,
|
||
res_deel rd
|
||
WHERE rsvd.res_rsv_ruimte_key = rsvr.res_rsv_ruimte_key
|
||
AND rd.res_deel_key = rsvd.res_deel_key
|
||
AND rd.res_discipline_key = rdp.res_ins_discipline_key
|
||
AND rdp.res_disc_params_noti_dagen IS NOT NULL
|
||
AND res.res_reservering_key = rsvr.res_reservering_key
|
||
AND rsvr.res_ruimte_opstel_key IS NULL
|
||
AND rsvr.res_status_fo_key <= 5
|
||
AND rsvd.res_rsv_deel_verwijder IS NULL
|
||
AND (rsvd.res_rsv_deel_van BETWEEN fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
res_disc_params_noti_dagen,
|
||
'DAGEN')
|
||
AND fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
res_disc_params_noti_dagen
|
||
+ 1,
|
||
'DAGEN')
|
||
OR rsvd.res_rsv_deel_van BETWEEN fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
1,
|
||
'DAGEN')
|
||
AND fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
2,
|
||
'DAGEN'))
|
||
AND TO_CHAR (SYSDATE, 'D') NOT IN (1, 7)
|
||
AND rsvd.res_rsv_deel_van >= SYSDATE
|
||
UNION ALL
|
||
SELECT rsvr.res_rsv_ruimte_contact_key,
|
||
res.res_reservering_key,
|
||
rsva.res_rsv_artikel_levering van,
|
||
rsva.res_rsv_artikel_levering tot,
|
||
rsvr.res_rsv_ruimte_key,
|
||
rsvr.alg_ruimte_key ruimte_key
|
||
FROM res_v_aanwezigreservering res,
|
||
res_v_aanwezigrsv_ruimte rsvr,
|
||
res_disc_params rdp,
|
||
res_rsv_artikel rsva,
|
||
res_artikel ra
|
||
WHERE rsva.res_rsv_ruimte_key = rsvr.res_rsv_ruimte_key
|
||
AND ra.res_discipline_key = rdp.res_ins_discipline_key
|
||
AND rsva.res_artikel_key = ra.res_artikel_key
|
||
AND rdp.res_disc_params_noti_dagen IS NOT NULL
|
||
AND res.res_reservering_key = rsvr.res_reservering_key
|
||
AND rsvr.res_ruimte_opstel_key IS NULL
|
||
AND rsvr.res_status_fo_key <= 5
|
||
AND rsva.res_rsv_artikel_verwijder IS NULL
|
||
AND (rsva.res_rsv_artikel_levering BETWEEN fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
res_disc_params_noti_dagen,
|
||
'DAGEN')
|
||
AND fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
res_disc_params_noti_dagen
|
||
+ 1,
|
||
'DAGEN')
|
||
OR rsva.res_rsv_artikel_levering BETWEEN fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
1,
|
||
'DAGEN')
|
||
AND fac.datumtijdplusuitvoertijd (
|
||
SYSDATE,
|
||
2,
|
||
'DAGEN'))
|
||
AND TO_CHAR (SYSDATE, 'D') NOT IN (1, 7)
|
||
AND rsva.res_rsv_artikel_levering >= SYSDATE)
|
||
GROUP BY res_rsv_ruimte_contact_key,
|
||
res_reservering_key,
|
||
res_rsv_ruimte_key,
|
||
ruimte_key;
|
||
|
||
-- notificatie naar onderstaand email adres als er een melding in de vakgroep goedkeuring aangemaakt wordt.
|
||
CREATE OR REPLACE VIEW aasa_v_noti_goedkeuring
|
||
(
|
||
sender,
|
||
receiver,
|
||
text,
|
||
code,
|
||
fac_srtnotificatie_key,
|
||
key,
|
||
xkey,
|
||
xemail,
|
||
xmobile
|
||
)
|
||
AS
|
||
SELECT NULL sender,
|
||
NULL receiver,
|
||
NULL text,
|
||
'CUST07' code,
|
||
NULL fac_srtnotificatie_key,
|
||
m.mld_melding_key key,
|
||
NULL xkey,
|
||
'headofficeEurope.authorizations@sabic-europe.com' xemail,
|
||
NULL xmobile
|
||
FROM mld_melding m, mld_stdmelding std
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = 1222 -- vakgroep goedkeuring
|
||
AND m.mld_melding_datum BETWEEN TO_DATE (
|
||
TO_CHAR (SYSDATE, 'yyyymmdd hh24'),
|
||
'yyyymmdd hh24')
|
||
- (1 / 24)
|
||
AND TO_DATE (
|
||
TO_CHAR (SYSDATE, 'yyyymmdd hh24'),
|
||
'yyyymmdd hh24')
|
||
AND m.mld_melding_status = 2;
|
||
|
||
|
||
-- !!!!!!!!!!!!!!!!!!
|
||
-- Controleer de wijzigingen die in de aaxx gemaakt zijn. (Afsplitsing dateert van 6 maart 2015)
|
||
-- !!!!!!!!!!!!!!!!!!!!
|
||
CREATE OR REPLACE PROCEDURE aasa_import_opdrstat_strukton (
|
||
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);
|
||
v_aanduiding VARCHAR2 (1200);
|
||
v_dummy VARCHAR2 (200);
|
||
header_is_valid NUMBER := 0;
|
||
v_count NUMBER;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_import NUMBER (10) := 0;
|
||
v_ongeldig NUMBER (1) := 0;
|
||
-- De importvelden
|
||
v_mld_opdr_opmerking VARCHAR2 (4000);
|
||
v_mld_opdr_key NUMBER (10);
|
||
v_mld_opdr_key_tekst VARCHAR2 (100);
|
||
v_extern_nummer VARCHAR2 (100);
|
||
v_status NUMBER (10);
|
||
v_status_tekst VARCHAR2 (100);
|
||
v_status_code VARCHAR2 (100);
|
||
v_datumtijd DATE;
|
||
v_datumtijd_tekst VARCHAR2 (100);
|
||
v_opmerking VARCHAR2 (3000);
|
||
v_totaal NUMBER (8,2);
|
||
v_totaal_str VARCHAR2 (100);
|
||
|
||
-- Overige velden:
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM aaxx_imp_opdrstat_strukton;
|
||
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
|
||
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
|
||
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
|
||
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
|
||
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
|
||
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
|
||
fac.imp_getfield (v_newline, c_delim, v_opmerking);
|
||
fac.imp_getfield (v_newline, c_delim, v_totaal_str);
|
||
v_totaal := fac.safe_to_number(v_totaal_str);
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'v_totaal_str:' || v_totaal_str || ' v_totaal:' || v_totaal || ' fac.safe_to_number(v_totaal_str):' || fac.safe_to_number(v_totaal_str),'');
|
||
|
||
v_opmerking := substr(v_opmerking, 1, 1000);
|
||
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
|
||
v_opmerking := replace(v_opmerking, '@@',CHR (13) || CHR (10));
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_extern_nummer
|
||
|| '|'
|
||
|| v_mld_opdr_key_tekst
|
||
|| '|'
|
||
|| v_status_tekst
|
||
|| '|'
|
||
|| v_opmerking
|
||
|| '] ';
|
||
|
||
-- 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 (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
|
||
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
|
||
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
|
||
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
|
||
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
|
||
AND UPPER (TRIM (v_totaal_str)) = 'TOTAL'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Fout inlezen mld_opdr_key [' || v_aanduiding || ']';
|
||
v_mld_opdr_key := TRIM (v_mld_opdr_key);
|
||
|
||
BEGIN
|
||
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
||
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
||
FROM mld_opdr o, mld_melding m, ins_tab_discipline d, ins_srtdiscipline sd, 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 = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND THEN
|
||
BEGIN
|
||
fac.imp_writelog (p_import_key, 'W', 'Opdracht kan niet gevonden worden. [' || v_aanduiding || ']', '');
|
||
|
||
-- kijk nu of de opdracht gevonden kan worden a.d.h.v het Struktonnummer
|
||
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
||
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
||
FROM mld_opdr o, mld_kenmerkopdr ko, mld_kenmerk k
|
||
WHERE o.mld_opdr_key = ko.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 35
|
||
AND ko.mld_kenmerkopdr_waarde = v_extern_nummer;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
v_ongeldig := 1;
|
||
v_errormsg := 'Opdracht kan niet gevonden worden (intern/externnr). [' || v_aanduiding || ']';
|
||
v_mld_opdr_key := NULL;
|
||
END;
|
||
END;
|
||
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij bepalen status [' || v_aanduiding || ']';
|
||
|
||
CASE
|
||
WHEN v_status_code = '5'
|
||
THEN
|
||
v_status := 5; -- uitgegeven
|
||
WHEN v_status_code = '10'
|
||
THEN
|
||
v_status := 8; -- geaccepteerd
|
||
WHEN v_status_code = '20' -- monteur gereed
|
||
THEN
|
||
v_status := 6; -- afgemeld
|
||
WHEN v_status_code = '25' -- specialist gereed
|
||
THEN
|
||
v_status := 6; -- afgemeld
|
||
WHEN v_status_code = '30' -- technisch gereed
|
||
THEN
|
||
v_status := 6; -- afgemeld
|
||
-- AASA#32991
|
||
-- WHEN v_status_code = '40' -- uitgeprijst
|
||
-- THEN
|
||
-- v_status := 9; -- afgerond
|
||
WHEN v_status_code = '70'
|
||
THEN
|
||
v_status := 1; -- geannuleerd
|
||
WHEN v_status_code = '80'
|
||
THEN
|
||
v_status := 1; -- afgewezen
|
||
ELSE
|
||
v_status := NULL;
|
||
v_ongeldig := 1; -- nog te bezien.
|
||
END CASE;
|
||
END IF;
|
||
|
||
-- Lees alle veldwaarden
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij converteren datumtijd [' || v_aanduiding || ']';
|
||
v_datumtijd :=
|
||
fac.safe_to_date (
|
||
REPLACE (
|
||
SUBSTR (v_datumtijd_tekst,
|
||
1,
|
||
INSTR (v_datumtijd_tekst, '.') - 1),
|
||
'T',
|
||
' '),
|
||
'yyyy-mm-dd hh24:mi:ss');
|
||
|
||
IF v_datumtijd = NULL
|
||
THEN
|
||
v_ongeldig := 0;
|
||
END IF;
|
||
END IF;
|
||
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij aanvullen opmerking [' || v_aanduiding || ']';
|
||
|
||
-- controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang
|
||
-- gemeld is.
|
||
IF v_opmerking IS NOT NULL AND INSTR(v_mld_opdr_opmerking, v_opmerking) = 0
|
||
THEN
|
||
v_opmerking :=
|
||
'['
|
||
|| v_datumtijd_tekst
|
||
|| '] - '
|
||
|| v_status_tekst
|
||
|| CHR (13)
|
||
|| CHR (10)
|
||
|| v_opmerking;
|
||
ELSE
|
||
v_opmerking :=
|
||
'[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF (v_ongeldig = 0)
|
||
THEN
|
||
BEGIN
|
||
v_errormsg :=
|
||
'Fout toevoegen opdracht status ['
|
||
|| v_aanduiding
|
||
|| ']';
|
||
|
||
INSERT INTO aaxx_imp_opdrstat_strukton (mld_opdr_key,
|
||
extern_nummer,
|
||
status,
|
||
datumtijd,
|
||
opmerking,
|
||
totaal)
|
||
VALUES (v_mld_opdr_key,
|
||
v_extern_nummer,
|
||
v_status,
|
||
v_datumtijd,
|
||
v_opmerking,
|
||
v_totaal);
|
||
|
||
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,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Fout bij toevoegen regel aan importtabel aaxx_imp_opdr_status_strukton.');
|
||
END;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'');
|
||
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!');
|
||
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 opdrachtstatusberichten afgebroken!');
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE aasa_update_opdrstat_strukton (
|
||
p_import_key IN NUMBER)
|
||
AS
|
||
-- Cursor loopt - in volgorde! - over alle ingelezen opdrachtstatusberichten.
|
||
CURSOR c1
|
||
IS
|
||
SELECT mld_opdr_key,
|
||
extern_nummer,
|
||
datumtijd,
|
||
status,
|
||
opmerking,
|
||
totaal
|
||
FROM aaxx_imp_opdrstat_strukton
|
||
ORDER BY 1, 3;
|
||
|
||
CURSOR cp (
|
||
c_opdr_key IN NUMBER)
|
||
IS
|
||
SELECT pf.prs_perslid_key
|
||
FROM fac_tracking tr,
|
||
fac_srtnotificatie str,
|
||
prs_v_perslid_fullnames_all pf
|
||
WHERE tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
|
||
AND tr.prs_perslid_key = pf.prs_perslid_key(+)
|
||
AND (str.fac_srtnotificatie_code = 'ORDFOK'
|
||
AND tr.fac_tracking_refkey = c_opdr_key
|
||
AND str.fac_srtnotificatie_xmlnode IN ('opdracht'))
|
||
ORDER BY fac_tracking_datum DESC, fac_tracking_key DESC;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count NUMBER (10);
|
||
v_mld_key NUMBER (10) := 0;
|
||
v_opdr_key NUMBER (10) := 0;
|
||
v_opdr_status NUMBER (10) := 0;
|
||
v_user_key NUMBER (10) := 0;
|
||
v_opdr_approved mld_opdr.mld_opdr_approved%TYPE;
|
||
v_approver_key prs_perslid.prs_perslid_key%TYPE;
|
||
v_mld_typeopdr_key mld_typeopdr.mld_typeopdr_key%TYPE;
|
||
v_mld_kenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
|
||
v_mld_kenmerkopdr_key mld_kenmerkopdr.mld_kenmerkopdr_key%TYPE;
|
||
v_mld_srtkenmerk_key mld_srtkenmerk.mld_srtkenmerk_key%TYPE;
|
||
v_perslid_key prs_perslid.prs_perslid_key%TYPE;
|
||
v_opdr_kosten mld_opdr.mld_opdr_kosten%TYPE;
|
||
v_typeopdr_gvs mld_typeopdr.mld_typeopdr_gvs%TYPE;
|
||
v_mld_kk mld_melding.mld_kosten_klant%TYPE;
|
||
v_mld_kostenpl_key mld_melding.prs_kostenplaats_key%TYPE;
|
||
v_opdr_kostenpl_key mld_opdr.prs_kostenplaats_key%TYPE;
|
||
v_mld_perslid_key mld_melding.prs_perslid_key%TYPE;
|
||
v_mld_disc_key ins_tab_discipline.ins_discipline_key%TYPE;
|
||
v_refiat NUMBER (1);
|
||
v_reapprove NUMBER (1);
|
||
BEGIN
|
||
-- Loop door alle geimporteerde opdrachtstatusberichten en verwerk deze.
|
||
v_count_tot := 0;
|
||
|
||
-- Stel de key in van het srtkenmerk 'Ref. Nr. Leverancier'. Hier wordt
|
||
-- het nummer dat Strukton aan de call gegeven heeft geregistreerd.
|
||
IF aaxx_get_user = 'SABIC'
|
||
THEN
|
||
v_mld_srtkenmerk_key := 35;
|
||
END IF;
|
||
|
||
IF aaxx_get_user = 'ENEXIS'
|
||
THEN
|
||
v_mld_srtkenmerk_key := 381;
|
||
END IF;
|
||
|
||
IF aaxx_get_user = 'ESSENT'
|
||
THEN
|
||
v_mld_srtkenmerk_key := 741;
|
||
END IF;
|
||
|
||
IF aaxx_get_user = 'NS'
|
||
THEN
|
||
v_mld_srtkenmerk_key := 761;
|
||
END IF;
|
||
|
||
IF aaxx_get_user = 'DSM'
|
||
THEN
|
||
v_mld_srtkenmerk_key := 123;
|
||
END IF;
|
||
|
||
IF aaxx_get_user = 'VL'
|
||
THEN
|
||
v_mld_srtkenmerk_key := 82;
|
||
END IF;
|
||
|
||
IF aaxx_get_user = 'HUNTSMAN'
|
||
THEN
|
||
v_mld_srtkenmerk_key := 381;
|
||
END IF;
|
||
|
||
IF aaxx_get_user = 'DOW'
|
||
THEN
|
||
v_mld_srtkenmerk_key := 81;
|
||
END IF;
|
||
|
||
v_user_key := 10; -- Strukton user
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding :=
|
||
'['
|
||
|| rec.mld_opdr_key
|
||
|| '|'
|
||
|| SUBSTR (rec.opmerking, 1, 100)
|
||
|| '] ';
|
||
v_count_tot := v_count_tot + 1;
|
||
v_count := 0;
|
||
|
||
-- Key van melding/opdracht bepalen en externnr bij opdracht opslaan.
|
||
IF (rec.mld_opdr_key IS NOT NULL)
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen opdracht.';
|
||
|
||
SELECT mld_melding_key,
|
||
mld_opdr_key,
|
||
mld_statusopdr_key,
|
||
mld_typeopdr_key
|
||
INTO v_mld_key,
|
||
v_opdr_key,
|
||
v_opdr_status,
|
||
v_mld_typeopdr_key
|
||
FROM mld_opdr
|
||
WHERE mld_opdr_key = rec.mld_opdr_key;
|
||
|
||
v_errormsg := 'Fout bij bepalen kenmerk extern nummer.';
|
||
|
||
SELECT k.mld_kenmerk_key
|
||
INTO v_mld_kenmerk_key
|
||
FROM mld_kenmerk k
|
||
WHERE k.mld_srtkenmerk_key = v_mld_srtkenmerk_key
|
||
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
|
||
|
||
v_errormsg := 'Fout bij bepalen kenmerkopdracht extern nummer.';
|
||
|
||
SELECT MAX (ko.mld_kenmerkopdr_key)
|
||
INTO v_mld_kenmerkopdr_key
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_opdr_key = v_opdr_key
|
||
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
|
||
|
||
v_errormsg := 'Fout bij aanpassen extern nummer.';
|
||
|
||
IF v_mld_kenmerkopdr_key IS NULL
|
||
THEN
|
||
-- kenmerk toevoegen
|
||
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
|
||
mld_opdr_key,
|
||
mld_kenmerkopdr_waarde)
|
||
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
|
||
ELSE
|
||
-- kenmerk aanpassen
|
||
UPDATE mld_kenmerkopdr
|
||
SET mld_kenmerkopdr_waarde = rec.extern_nummer
|
||
WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij bijwerken opdracht-opmerking.';
|
||
|
||
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
|
||
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_opmerking =
|
||
DECODE (
|
||
mld_opdr_opmerking,
|
||
NULL,
|
||
rec.opmerking,
|
||
rec.opmerking
|
||
|| CHR (13)
|
||
|| CHR (10)
|
||
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
|
||
IF v_opdr_status <> rec.status
|
||
THEN
|
||
IF rec.status = 8 AND v_opdr_status = 5
|
||
THEN
|
||
-- Accepteer opdracht als de opdracht uitgegeven was
|
||
mld.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor
|
||
ELSIF rec.status = 6 AND v_opdr_status = 5
|
||
THEN
|
||
-- Meld de opdracht af als deze uitgegeven was
|
||
mld.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor, eerst accepteren
|
||
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
||
ELSIF rec.status = 6 AND v_opdr_status = 8
|
||
THEN
|
||
-- Meld de opdracht af als deze geaccepteerd was
|
||
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
||
ELSIF rec.status = 1 AND v_opdr_status = 5
|
||
THEN
|
||
-- Opdracht is afgewezen op het moment dat de opdracht nog niet geaccepteerd is.
|
||
mld.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor
|
||
mld.updatemeldingstatusav (v_mld_key,
|
||
0,
|
||
v_user_key,
|
||
0);
|
||
ELSIF rec.status = 1 AND v_opdr_status = 8
|
||
THEN
|
||
-- Opdracht is afgewezen op het moment dat de opdracht al geaccepteerd is.
|
||
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
||
--MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
|
||
ELSIF rec.status = 9 AND v_opdr_status = 6
|
||
THEN
|
||
-- Opdracht is afgerond en opdrachtstatus was afgemeld.
|
||
mld.setopdrachtstatus (v_opdr_key, 9, v_user_key); -- Facilitor
|
||
END IF;
|
||
|
||
IF rec.status = 6 AND v_opdr_status <> 6
|
||
THEN
|
||
-- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld.
|
||
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
|
||
ELSE
|
||
IF rec.status = 9 AND v_opdr_status <> 9
|
||
THEN
|
||
-- Oorspronkelijke gegevens opdracht ophalen.
|
||
-- var opdr_info = mld.mld_opdr_info(opdr_key);
|
||
SELECT mld_opdr_kosten,
|
||
mld_typeopdr_gvs,
|
||
mld_kosten_klant,
|
||
m.prs_kostenplaats_key,
|
||
o.prs_kostenplaats_key,
|
||
m.prs_perslid_key,
|
||
std.mld_ins_discipline_key
|
||
INTO v_opdr_kosten,
|
||
v_typeopdr_gvs,
|
||
v_mld_kk,
|
||
v_mld_kostenpl_key,
|
||
v_opdr_kostenpl_key,
|
||
v_mld_perslid_key,
|
||
v_mld_disc_key
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
mld_typeopdr t,
|
||
mld_stdmelding std
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND o.mld_typeopdr_key = t.mld_typeopdr_key
|
||
AND o.mld_opdr_key = v_opdr_key;
|
||
|
||
-- Hergoedkeuring (Ter goedkeuring) wordt (pas) vereist als het opdrachtbedrag hoger is dan al is goedgekeurd en boven de GVS-grens uitkomt.
|
||
-- Herfiattering (Ter fiattering) wordt (pas) vereist indien het bedrag boven het mandaat van de oorspronkelijke (laatste) fiatteur uitkomt
|
||
-- en boven de GVS-grens uitkomt.
|
||
-- Hergoedkeuring en herfiattering kan alleen als het totaalbedrag van de opdracht is verhoogd en alleen in de statussen 5, 8, 6 en 9 (de uitvoeringsfase en de afhandelingsfase).
|
||
-- Hergoedkeuring en herfiattering kan leiden tot een tijdelijke terugkeer naar de voorfase status 3 of 10.
|
||
IF rec.totaal > v_opdr_kosten
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'I', 'rec.totaal > v_opdr_kosten: ' || rec.totaal || ' - ' || v_opdr_kosten, '');
|
||
|
||
-- Hergoedkeuring (Ter goedkeuring) wordt (pas) vereist als het opdrachtbedrag hoger is dan al is goedgekeurd en boven de GVS-grens uitkomt.
|
||
IF rec.totaal > COALESCE (v_opdr_approved, 0) AND rec.totaal > v_typeopdr_gvs
|
||
THEN
|
||
v_reapprove := 1;
|
||
ELSE
|
||
v_reapprove := 0;
|
||
END IF;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'hergoedkeuring: ' || v_reapprove || ' - ' || v_opdr_approved || ' - ' || v_typeopdr_gvs, '');
|
||
|
||
|
||
-- Herfiattering (Ter fiattering) wordt (pas) vereist indien het bedrag boven het mandaat van de oorspronkelijke (laatste) fiatteur uitkomt
|
||
-- en boven de GVS-grens uitkomt.
|
||
-- Bepaal het mandaat van de oorspronkelijke (laatste) fiatteur.
|
||
-- Ook als er de vorige keer geen kosten waren dan moet pas worden geherfiatteerd als (tot_kosten > mandaat),
|
||
-- waarbij de mandaat van de Melder/aanvrager van melding of de user is.
|
||
v_perslid_key := NULL;
|
||
|
||
IF rec.totaal > v_opdr_kosten AND rec.totaal > 0 AND rec.totaal > v_typeopdr_gvs
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'I', 'F - rec.totaal > v_opdr_kosten: ' || rec.totaal || ' - ' || v_opdr_kosten || ' - ' || v_typeopdr_gvs, '');
|
||
-- De totale kosten zijn verhoogd en het bedrag zit boven de GVS-grens.
|
||
-- Bepaling oorspronkelijke (laatste) fiatteur, als die er was.
|
||
v_perslid_key := NULL;
|
||
|
||
FOR rec2 IN cp (v_opdr_key)
|
||
LOOP
|
||
BEGIN
|
||
v_perslid_key := rec2.prs_perslid_key;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'F - laatste fiatteur: ' || v_perslid_key, '');
|
||
|
||
IF v_perslid_key IS NULL
|
||
THEN
|
||
-- Dan waren de opdracht kosten onder het mandaat van mijzelf of de BO-medewerker.
|
||
-- Als de kostenplaats bij de opdracht overruled is dan wordt altijd tegen het profiel van de BO-medewerker getest.
|
||
IF v_mld_kk = 1
|
||
AND v_mld_kostenpl_key = v_opdr_kostenpl_key
|
||
THEN
|
||
v_perslid_key := v_mld_perslid_key; -- Melder/aanvrager van melding
|
||
END IF;
|
||
END IF;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'F - indien onbekend terugvallen op melder: ' || v_perslid_key, '');
|
||
|
||
|
||
IF fac.getsetting ('mld_use_order_approval') = 1
|
||
AND (rec.totaal >
|
||
fac.getsetting ('can_selfapprove')
|
||
OR rec.totaal >
|
||
prs.getprofiellimiet (v_perslid_key, v_mld_disc_key))
|
||
THEN
|
||
-- Er moet (opnieuw) gefiatteerd worden. Is er wel iemand met voldoende mandaat? Indien er niemand gevonden kan worden mag de wijziging niet doorgaan.
|
||
-- Het mandaat is al te hoog voor de melder/aanvrager van de melding of mijzelf.
|
||
|
||
v_approver_key :=
|
||
prs.getkpverantwoordelijke (
|
||
v_opdr_kostenpl_key,
|
||
fac.getsetting ('prs_approvemethod'),
|
||
v_user_key);
|
||
v_refiat := 1;
|
||
-- er moet (her)fiattering plaatsvinden
|
||
fac.imp_writelog (p_import_key, 'I', 'F - (her)fiatteur: ' || v_approver_key, '');
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
IF v_reapprove = 1 OR v_refiat = 1
|
||
THEN
|
||
-- Zet de refiat waarden. Het hergoedkeurings- en/of herfiatteringstraject wordt opnieuw ingegaan. // Tracking hiervan is niet nodig.
|
||
IF v_opdr_kosten > 0
|
||
THEN
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_materiaal_refiat = mld_opdr_materiaal,
|
||
mld_opdr_kosten_refiat = mld_opdr_kosten
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
END IF;
|
||
|
||
-- Ook voor status 5 wordt refiatstatus gezet zodat bekend is dat het om een herfiattering gaat. De fiatteringsvoorwaarde is dan iets anders.
|
||
UPDATE mld_opdr
|
||
SET mld_statusopdr_key_refiat = mld_statusopdr_key
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
|
||
-- Goedkeuring opnieuw ingaan kan alleen als het approved bedrag leeg is.
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_approved_refiat = mld_opdr_approved
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_approved = NULL,
|
||
mld_opdr_materiaal = rec.totaal,
|
||
mld_opdr_kosten = rec.totaal
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
ELSE
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_materiaal = rec.totaal,
|
||
mld_opdr_kosten = rec.totaal
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
END IF;
|
||
|
||
-- geef in de tracking aan dat de kosten via de interface aangepast zijn.
|
||
IF v_opdr_kosten <> rec.totaal
|
||
THEN
|
||
fac.trackaction ('ORDUPD', v_opdr_key, v_user_key, SYSDATE,
|
||
'Gewijzigd' || CHR (13) || CHR (10)
|
||
|| 'Materiaal: ' || v_opdr_kosten || ' --> ' || rec.totaal || CHR (13) || CHR (10)
|
||
|| 'Totaal: ' || v_opdr_kosten || ' --> ' || rec.totaal);
|
||
END IF;
|
||
|
||
IF v_reapprove = 1
|
||
THEN
|
||
-- Zetten van de status van de gewijzigde opdracht op "Ter goedkeuring" en afhandelen van de tracking (status + uitvoerende tracking) en daarmee notificatie.
|
||
-- status = 10; Ter goedkeuring.
|
||
mld.setopdrachtstatus (v_opdr_key, 10, v_user_key);
|
||
ELSE
|
||
IF v_refiat = 1
|
||
THEN
|
||
-- Zetten van de status van de gewijzigde opdracht op "Ter fiattering" en afhandelen van de tracking (status + uitvoerende tracking) en daarmee notificatie.
|
||
-- status = 3; // Ter fiattering.
|
||
mld.setopdrachtstatus (v_opdr_key, 3, v_user_key);
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Fout bij verwerken opdrachtstatusbericht.');
|
||
END;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
END;
|
||
/
|
||
|
||
------ payload end ------
|
||
|
||
SET DEFINE OFF
|
||
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
||
/
|
||
|
||
COMMIT;
|
||
SET ECHO OFF
|
||
SPOOL OFF
|
||
SET DEFINE ON
|
||
PROMPT Logfile of this upgrade is: &fcltlogfile
|
||
|
||
|
||
|