AAIT#84841 -- Aanvraag implementatie nieuwe omgeving Thales

svn path=/Customer/trunk/; revision=65809
This commit is contained in:
Jos Migo
2024-08-06 10:04:49 +00:00
parent 29a7976ff9
commit 02dd8eb1d1

602
AA/THHD/thhd.sql Normal file
View File

@@ -0,0 +1,602 @@
--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'THHD.SQL'
DEFINE dbuser = '^THHD'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE PACKAGE THHD
AS
FUNCTION change_delimitor (p_string VARCHAR2,
p_delimitor VARCHAR2)
RETURN VARCHAR2;
END;
/
CREATE OR REPLACE PACKAGE BODY THHD
AS
FUNCTION change_delimitor (p_string VARCHAR2,
p_delimitor VARCHAR2)
RETURN VARCHAR2
AS
v_field VARCHAR2 (1000) := 'QueQuLeQue';
v_result VARCHAR2 (2000);
v_line VARCHAR2 (2000);
BEGIN
v_line := p_string;
WHILE v_line IS NOT NULL
LOOP
fac.imp_getfield (v_line, p_delimitor, v_field);
v_result := v_result || '"' || v_field || '";';
END LOOP;
RETURN v_result;
EXCEPTION
WHEN OTHERS
THEN
RETURN NULL;
END;
END;
/
-- script om dagelijks terugkerende scripts aan te roepen.
CREATE OR REPLACE PROCEDURE thhd_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
aaxx_daily_task (p_applname, p_applrun);
END;
/
-- exact verkoop
CREATE OR REPLACE VIEW thhd_v_export_exact_verkoop (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE thhd_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'), 'CORE');
END;
/
CREATE OR REPLACE PROCEDURE thhd_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'), 'CORE');
END;
/
-- exact verkoop over het vorige jaar
CREATE OR REPLACE VIEW thhd_v_export_exact_verkoop_vj (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE thhd_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), 'CORE');
END;
/
CREATE OR REPLACE PROCEDURE thhd_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), 'CORE');
END;
/
-- exact projecturen (XML)
CREATE OR REPLACE VIEW thhd_v_export_exact_uren (result, result_order)
AS SELECT result, result_order FROM aaxx_v_export_exact_uren_xml;
CREATE OR REPLACE PROCEDURE thhd_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 thhd_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;
/
-- bundel catering
--- Voor THHD - NOG UITWERKEN/DETAILGEGEVENS AANGELEVERD KRIJGEN
CREATE OR REPLACE VIEW thhd_v_catering_kpn
(
res_rsv_ruimte_key,
res_srtactiviteit_soort,
res_rsv_artikel_key,
res_rsv_artikel_prijs,
res_rsv_artikel_levering,
alg_ruimte_key,
alg_gebouw_key,
prs_bedrijf_key,
prs_kostenplaats_key,
bu_kostenplaats_nr,
gebouw_kostenplaats_nr
)
AS
SELECT rrr.res_rsv_ruimte_key,
srt.res_srtactiviteit_soort, -- = 0 is ruimte-reservering, 1 is roomservice
res_rsv_artikel_key,
res_rsv_artikel_prijs,
res_rsv_artikel_levering,
r.alg_ruimte_key,
(SELECT g.alg_gebouw_key
FROM alg_v_onroerendgoed v, alg_gebouw g, alg_locatie l
WHERE v.alg_ruimte_key = r.alg_ruimte_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key)
alg_locatie_omschrijving,
rdp.prs_bedrijf_key,
k.prs_kostenplaats_key,
aaxx_get_top_kpn_nr(fac.safe_to_number (aaxx_get_top_kpn_key (k.prs_kostenplaats_key)))
bu_kostenplaats_nr,
aaxx_get_debiteur_gebouw (
(SELECT l.alg_locatie_code
FROM alg_v_onroerendgoed v, alg_gebouw g, alg_locatie l
WHERE v.alg_ruimte_key = r.alg_ruimte_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key),
(SELECT g.alg_gebouw_code
FROM alg_v_onroerendgoed v, alg_gebouw g
WHERE v.alg_ruimte_key = r.alg_ruimte_key
AND v.alg_gebouw_key = g.alg_gebouw_key))
gebouw_kostenplaats_nr
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
res_disc_params rdp,
prs_kostenplaats k,
res_activiteit act,
res_srtactiviteit srt,
(SELECT rrr.res_rsv_ruimte_key,
CASE
WHEN rrr.alg_ruimte_key IS NULL
AND rrr.res_ruimte_opstel_key IS NOT NULL
THEN
(SELECT MAX (rar.alg_ruimte_key)
FROM res_v_ruimte_opstel_gegevens rog,
res_alg_ruimte rar
WHERE rog.res_ruimte_opstel_key =
rrr.res_ruimte_opstel_key
AND rog.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder IS NULL)
WHEN rrr.alg_ruimte_key IS NOT NULL
AND rrr.res_ruimte_opstel_key IS NULL
THEN
(SELECT avrg.alg_ruimte_key
FROM alg_v_ruimte_gegevens avrg
WHERE avrg.alg_ruimte_key = rrr.alg_ruimte_key)
ELSE
NULL
END
AS alg_ruimte_key
FROM res_rsv_ruimte rrr) r
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_key = r.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = rdp.res_ins_discipline_key
AND rdp.prs_bedrijf_key IS NOT NULL
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rra.res_rsv_artikel_verwijder IS NULL
AND rra.res_status_bo_key = 5
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rrr.res_activiteit_key = act.res_activiteit_key
AND act.res_srtactiviteit_key = srt.res_srtactiviteit_key;
CREATE OR REPLACE VIEW thhd_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 thhd_v_catering_kpn;
CREATE OR REPLACE PROCEDURE thhd_export_bundel_catering (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
CURSOR c_bedr
IS
SELECT prs_bedrijf_key
FROM res_disc_params
WHERE prs_bedrijf_key IS NOT NULL
GROUP BY prs_bedrijf_key;
-- Voor Vermaat geldt per Gebouw-kostenplaats 1 gebundelde opdracht
CURSOR c_gebouw_kp (lev_date DATE, p_bedrijf_key NUMBER)
IS
SELECT gebouw_kostenplaats_nr, alg_gebouw_key, sum(res_rsv_artikel_prijs) prijs
FROM thhd_v_catering_kpn
WHERE res_rsv_artikel_levering < lev_date
AND prs_bedrijf_key = p_bedrijf_key
GROUP BY gebouw_kostenplaats_nr, alg_gebouw_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_alg_locatie_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_prs_kostenplaat_key_fallback NUMBER;
v_date DATE;
v_month VARCHAR2(30);
v_count NUMBER;
BEGIN
-- Facilitor
v_aanvrager := 4;
-- stdmelding key voor recharge
v_mld_stdmelding_key := 602;
-- key van opdrachttype workorder
v_mld_workorder_key := 1;
-- dummy kostenplaats bij de melding in geval deze niet bepaald kan worden
v_prs_kostenplaat_key_fallback := 141; -- maar gewoon op 03900001 - DEFAULT THHD NOG BEPALEN....
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 rec1 IN c_bedr
LOOP
BEGIN
FOR rec2 IN c_gebouw_kp (v_date, rec1.prs_bedrijf_key)
LOOP
BEGIN
-- Voor gebouw_kostenplaatsen wordt vanuit functie aaxx_get_debiteur_gebouw 'Onbekende gebouw-debiteur:' teruggegeven.
--- Wellicht beter om wel gewoon altijd de verwerking te doen. In detailverslag thhd_v_rap_catering_inkoop is de onbekende gebouw-debiteur dan ook in beeld en kan dan op gebouw_kaart nog aangepast worden.
IF INSTR(rec2.gebouw_kostenplaats_nr, 'Onbekende gebouw-debiteur') = 0
THEN
-- controleer of ik een melding heb op dit gebouw
BEGIN
v_errormsg := 'Opzoeken catering melding';
SELECT g.alg_locatie_key
INTO v_alg_locatie_key
FROM alg_gebouw g
WHERE g.alg_gebouw_key = rec2.alg_gebouw_key ;
SELECT mld_melding_key
INTO v_mld_melding_key
FROM mld_melding
WHERE mld_alg_locatie_key = v_alg_locatie_key
AND mld_alg_onroerendgoed_keys = rec2.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 dit locatie/gebouw gevonden. Dan maken we er maar een aan.
v_errormsg := 'Aanmaken catering melding';
BEGIN
-- v_prs_kostenplaats_key bepalen - VOOR THHD NOG BEPALEN
---- NL = ......
---- BE = ......
SELECT CASE WHEN r.alg_regio_upper = 'NEDERLAND' THEN 141
WHEN r.alg_regio_upper = 'BELGIE' THEN 121
ELSE v_prs_kostenplaat_key_fallback
END
v_prs_kostenplaats_key
INTO v_prs_kostenplaats_key
FROM alg_locatie l, alg_district d, alg_regio r
WHERE l.alg_locatie_key = v_alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = r.alg_regio_key ;
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,
v_alg_locatie_key,
rec2.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,
v_prs_kostenplaats_key,
5, -- uitgegeven
v_mld_workorder_key,
v_aanvrager,
rec1.prs_bedrijf_key,
v_date - 1,
fac.datumtijdplusuitvoertijd (SYSDATE, 1, 'DAGEN'),
'MLD',
'Cateringreserveringen maand: ' || v_month,
rec2.prijs,
rec2.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 thhd_v_catering_kpn
WHERE res_rsv_artikel_levering < v_date
AND gebouw_kostenplaats_nr = rec2.gebouw_kostenplaats_nr
AND alg_gebouw_key = rec2.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: ' || rec2.prijs || ' euro kan niet aan een kostenplaats gekoppeld worden!', '');
END IF;
END;
END LOOP;
END;
END LOOP;
END IF;
COMMIT;
END;
/
CREATE OR REPLACE VIEW thhd_v_rap_catering_inkoop
(
fclt_f_exportjob,
fclt_f_bedrijf,
afleveradres,
fclt_f_afleverdatum,
tijdstip,
bestelnummer,
fclt_f_artikelnummer,
artikelomschrijving,
interne_artikelprijs,
aantal,
fclt_f_besteller,
afdeling,
gebouw_kostenplaats_nr
)
AS
SELECT TO_CHAR (rra.res_rsv_artikel_verwerkt, 'yyyy-mm-dd'),
prs_bedrijf_naam,
alg_locatie_code
|| '-'
|| alg_gebouw_code
|| '-'
|| alg_verdieping_code
|| '-'
|| alg_ruimte_nr
|| ' ('
|| alg_ruimte_omschrijving
|| ')'
afleveradres,
TO_CHAR (rra.res_rsv_artikel_levering, 'dd-mm-yyyy')
datum,
TO_CHAR (rra.res_rsv_artikel_levering, 'hh24:mi')
tijd,
res_reservering_key || '/' || res_rsv_ruimte_volgnr
bestelnummer,
res_artikel_nr
artikelnummer,
res_artikel_omschrijving
artikelomschrijving,
ROUND ((rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal),
5)
interneprijs,
rra.res_rsv_artikel_aantal
aantal,
pf.prs_perslid_naam_full
besteller,
k.prs_kostenplaats_nr || '-' || k.prs_kostenplaats_omschrijving,
aaxx_get_debiteur_gebouw (l.alg_locatie_code, g.alg_gebouw_code)
FROM res_rsv_ruimte rrr,
aaxx_bundel_catering_ref bu,
prs_bedrijf b,
res_rsv_artikel rra,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
prs_kostenplaats k,
res_artikel ra,
mld_opdr o,
( SELECT COALESCE (MAX (ir2a.alg_ruimte_key), irrr.alg_ruimte_key)
alg_ruimte_key,
irrr.res_rsv_ruimte_key
FROM res_rsv_ruimte irrr, res_v_rsv_ruimte_2_alg_ruimte ir2a
WHERE irrr.res_rsv_ruimte_key = ir2a.res_rsv_ruimte_key(+)
GROUP BY irrr.res_rsv_ruimte_key, irrr.alg_ruimte_key) r2a
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key
AND r2a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND r2a.alg_ruimte_key = r.alg_ruimte_key
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 rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND rra.res_rsv_artikel_verwijder IS NULL
AND rra.res_status_bo_key = 6
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_rsv_artikel_levering >
TO_DATE ('20110901', 'yyyymmdd')
AND rra.res_rsv_artikel_key = bu.res_rsv_artikel_key(+)
AND bu.mld_opdr_key = o.mld_opdr_key(+)
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+);
-- Rapportviews
------ 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