439 lines
16 KiB
SQL
439 lines
16 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific configuration sql statements for aaar: Arcadis Aqumen Facility Management
|
||
|
||
@aaxx.sql;
|
||
|
||
DEFINE thisfile = 'aaar.sql'
|
||
DEFINE dbuser = '^AAAR'
|
||
DEFINE custid = 'AAAR'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||
SPOOL &fcltlogfile
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
---------------------------------------
|
||
PROMPT &fcltcusttxt
|
||
---------------------------------------
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
-- script om dagelijks terugkerende scripts aan te roepen.
|
||
CREATE OR REPLACE PROCEDURE aaar_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 aaar_v_export_budget_tracker (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_budget_tracker;
|
||
|
||
-- export overrules
|
||
-- exact - gaat direct naar aaxx
|
||
-- Leverancier overrulles
|
||
CREATE OR REPLACE PROCEDURE aaar_import_opdrstat_strukton (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_import_opdrstat_strukton (p_import_key);
|
||
END aaar_import_opdrstat_strukton;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE aaar_update_opdrstat_strukton (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_update_opdrstat_strukton (p_import_key);
|
||
END aaar_update_opdrstat_strukton;
|
||
/
|
||
|
||
-- bundel catering
|
||
CREATE OR REPLACE VIEW aaar_v_catering_kpn_bld
|
||
(
|
||
res_rsv_artikel_key,
|
||
res_rsv_artikel_prijs,
|
||
res_rsv_artikel_levering,
|
||
prs_kostenplaats_key,
|
||
alg_gebouw_key,
|
||
alg_locatie_key
|
||
)
|
||
AS
|
||
SELECT res_rsv_artikel_key,
|
||
res_rsv_artikel_prijs,
|
||
res_rsv_artikel_levering,
|
||
rrr.prs_kostenplaats_key,
|
||
alg_gebouw_key,
|
||
alg_locatie_key
|
||
FROM res_rsv_ruimte rrr,
|
||
prs_kostenplaats k,
|
||
res_rsv_artikel rra,
|
||
alg_v_ruimte_gegevens rg,
|
||
(SELECT COALESCE (rrr1.alg_ruimte_key, r2a1.alg_ruimte_key)
|
||
alg_ruimte_key,
|
||
rrr1.res_rsv_ruimte_key
|
||
FROM res_v_rsv_ruimte_2_alg_ruimte r2a1, res_rsv_ruimte rrr1
|
||
WHERE rrr1.res_rsv_ruimte_key = r2a1.res_rsv_ruimte_key(+)) r2a
|
||
WHERE rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key
|
||
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
||
AND r2a.alg_ruimte_key = rg.alg_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 aaar_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 aaar_v_catering_kpn_bld;
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE aaar_export_bundel_catering (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
|
||
CURSOR c_kpn_bld (lev_date DATE)
|
||
IS
|
||
SELECT prs_kostenplaats_key, alg_gebouw_key, alg_locatie_key, sum(res_rsv_artikel_prijs) prijs
|
||
FROM aaar_v_catering_kpn_bld
|
||
WHERE res_rsv_artikel_levering < lev_date
|
||
GROUP BY prs_kostenplaats_key, alg_gebouw_key, alg_locatie_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_mld_opdr_bedrijfopdr_volgnr NUMBER;
|
||
v_aanvrager NUMBER;
|
||
v_mld_workorder_key NUMBER;
|
||
v_mld_stdmelding_key NUMBER;
|
||
v_prs_kostenplaats_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 := 901;
|
||
-- key van opdrachttype workorder
|
||
v_mld_workorder_key := 1;
|
||
-- key van bedrijf App<70>l
|
||
v_prs_bedrijf_key := 193;
|
||
-- dummy kostenplaats bij de melding
|
||
v_prs_kostenplaats_key := 41; -- AAFM
|
||
|
||
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_bld (v_date)
|
||
LOOP
|
||
BEGIN
|
||
IF rec.prs_kostenplaats_key IS NOT NULL
|
||
THEN
|
||
-- controleer of ik een melding heb op dit gebouw
|
||
BEGIN
|
||
v_errormsg := 'Opzoeken catering melding';
|
||
|
||
SELECT mld_melding_key
|
||
INTO v_mld_melding_key
|
||
FROM mld_melding
|
||
WHERE mld_alg_locatie_key = rec.alg_locatie_key
|
||
AND mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
|
||
AND mld_stdmelding_key = v_mld_stdmelding_key
|
||
AND prs_perslid_key = v_aanvrager
|
||
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,
|
||
v_prs_kostenplaats_key,
|
||
v_mld_stdmelding_key,
|
||
rec.alg_locatie_key,
|
||
rec.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.prs_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;
|
||
|
||
INSERT INTO aaxx_bundel_catering_ref (mld_opdr_key, res_rsv_artikel_key, res_rsv_artikel_prijs, res_rsv_artikel_verwerkt)
|
||
SELECT v_mld_opdr_key, res_rsv_artikel_key, res_rsv_artikel_prijs, v_date
|
||
FROM aaar_v_catering_kpn_bld
|
||
WHERE res_rsv_artikel_levering < v_date
|
||
AND prs_kostenplaats_key = rec.prs_kostenplaats_key
|
||
AND alg_gebouw_key = rec.alg_gebouw_key;
|
||
|
||
UPDATE res_rsv_artikel rra
|
||
SET res_rsv_artikel_verwerkt = SYSDATE,
|
||
res_status_bo_key = 6
|
||
WHERE EXISTS
|
||
(SELECT mld_opdr_key
|
||
FROM aaxx_bundel_catering_ref bc
|
||
WHERE bc.mld_opdr_key = v_mld_opdr_key
|
||
AND bc.res_rsv_artikel_key = rra.res_rsv_artikel_key);
|
||
|
||
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);
|
||
-- en zet de opdracht op afgerond zodat deze direct in het factuurvoorstel komt.
|
||
MLD.setopdrachtstatus (v_mld_opdr_key, 9, 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 aaar_v_export_exact_verkoop (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
|
||
CREATE OR REPLACE PROCEDURE aaar_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 aaar_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 aaar_v_export_exact_verkoop_vj (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
|
||
CREATE OR REPLACE PROCEDURE aaar_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 aaar_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 aaar_v_export_exact_uren (result, result_order)
|
||
AS SELECT result, result_order FROM aaxx_v_export_exact_uren_xml;
|
||
CREATE OR REPLACE PROCEDURE aaar_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 aaar_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 contractorders
|
||
--------------------------------
|
||
CREATE OR REPLACE PROCEDURE aaar_import_contract (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
BEGIN
|
||
aaxx_import_contract (p_import_key);
|
||
END aaar_import_contract;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE aaar_update_contract (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
aaxx_update_contract (p_import_key);
|
||
END aaar_update_contract;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE aaar_import_ruimte (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
aaxx_import_ruimte(p_import_key);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE aaar_update_ruimte (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
aaxx_update_ruimte(p_import_key);
|
||
END;
|
||
/
|
||
|
||
|
||
-- kenmerk key 1000: afspraak is prive (dus niet op infobord)
|
||
CREATE OR REPLACE VIEW aaar_v_rap_bezoekers
|
||
AS
|
||
SELECT * FROM aaxx_v_rap_infobord;
|
||
|
||
|
||
------ 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
|