FMHN#63881 -- Uitbereiding tbv Implementatie NPQ koppeling

svn path=/Customer/trunk/; revision=53825
This commit is contained in:
Norbert Wassink
2021-11-24 07:34:04 +00:00
parent ac764919ae
commit b41dc8f173

View File

@@ -2622,6 +2622,343 @@ AS
AND dvr.catering IS NOT NULL
AND dvr.res_rsv_ruimte_key = st.res_rsv_ruimte_key(+);
CREATE OR REPLACE VIEW res_v_rap_rescat
(
KEY,
NUMMER,
RES_OMSCHRIJVING,
INVOERDATUM,
DATUM,
GASTHEER,
CONTACT,
GASTHEER_EMAIL,
CONTACT_EMAIL,
INVOERDER,
KOSTENSOORTGROEP,
KOSTENSOORT,
KPN,
KPN_OMSCHRIJVING,
KPN_EXTERN,
FCLT_3D_DIVISIE_KEY,
DIVISIE_NAAM,
DIVISIE_OMSCHRIJVING,
FCLT_3D_AFDELING_KEY,
AFDELING_CODE,
AFDELING_OMSCHRIJVING,
REGIO_OMSCHRIJVING,
DISTRICT_OMSCHIJVING,
FCLT_3D_LOCATIE_KEY,
LOCATIE,
LOCATIE_OMSCHRIJVING,
LOCATIE_PLAATS,
GEBOUW,
VERDIEPING,
RUIMTE,
OPSTELLING,
CAPACITEIT,
NO_SHOW,
MANDAAT,
PERSONEELSNR,
FCLT_3D_DISCIPLINE_KEY,
CATALOGUS_KEY,
CATALOGUS,
RESERVEERBARE_RUIMTE,
BEZOEKERS,
VAN,
TOT,
DUUR,
STATUS,
BOSTATUS,
ACTIVITEIT,
SRTACTIVITEIT_KEY,
ACTIVITEITSOORT,
OPMERKING,
VOORZIENING_DISCIPLINE_KEY,
VOORZIENING_TYPE,
VOORZIENING_CATALOGUS,
LEVERANCIER,
VOORZIENING_PRODUCT_KEY,
VOORZIENING_PRODUCT,
VOORZIENING_TOTAALPRIJS,
VOORZIENING_VAN,
VOORZIENING_TOT,
VOORZIENING_AANTAL,
VOORZIENING_PRIJS
)
AS
SELECT rrr.res_rsv_ruimte_key,
res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_omschrijving,
COALESCE (rrr.res_rsv_ruimte_aanmaak, voorz.van),
rrr.res_rsv_ruimte_van,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key),
(SELECT ph.prs_perslid_email
FROM prs_perslid ph
WHERE ph.prs_perslid_key = rrr.res_rsv_ruimte_host_key),
(SELECT pc.prs_perslid_email
FROM prs_perslid pc
WHERE pc.prs_perslid_key = rrr.res_rsv_ruimte_contact_key),
(SELECT pf.prs_perslid_naam_full
FROM fac_tracking tr,
fac_srtnotificatie str,
prs_v_perslid_fullnames_all pf
WHERE tr.prs_perslid_key = pf.prs_perslid_key
AND str.fac_srtnotificatie_code = 'RESNEW'
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.fac_tracking_refkey = rrr.res_rsv_ruimte_key),
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM res_discipline disc
WHERE disc.ins_discipline_key =
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key =
ro.res_ruimte_opstel_key
AND ro.res_ruimte_key =
rr.res_ruimte_key
AND rr.res_discipline_key =
d.ins_discipline_key))))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM res_discipline disc
WHERE disc.ins_discipline_key =
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key =
ro.res_ruimte_opstel_key
AND ro.res_ruimte_key =
rr.res_ruimte_key
AND rr.res_discipline_key =
d.ins_discipline_key))))
kostensoort,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
k.prs_kostenplaats_extern,
an.prs_afdeling_key,
an.prs_afdeling_naam,
an.prs_afdeling_omschrijving,
a.prs_afdeling_key,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
(SELECT rg.alg_regio_omschrijving
FROM alg_regio rg,
alg_district d,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE rg.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_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT d.alg_district_omschrijving
FROM alg_district d,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE d.alg_district_key = l.alg_district_key
AND l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT l.alg_locatie_key
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_code
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_omschrijving
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_plaats
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_gebouw_code
FROM alg_gebouw g, alg_verdieping v, alg_ruimte r
WHERE g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_verdieping_code
FROM alg_verdieping v, alg_ruimte r
WHERE v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
r2a.ruimte_nr,
r2a.opstelling,
r2a.capaciteit,
rrr.res_rsv_ruimte_noshow,
NVL ( (SELECT pr.fac_profiel_limiet
FROM fac_profiel pr
WHERE p.fac_profiel_key = pr.fac_profiel_key), 0),
prs_perslid_nr,
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key)),
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key),
(SELECT ins_discipline_omschrijving
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key),
DECODE (rrr.alg_ruimte_key, NULL, 'Ja', 'Nee'),
rrr.res_rsv_ruimte_bezoekers,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
COALESCE ( (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24,
0),
(SELECT res_status_fo_omschrijving
FROM res_status_fo rs
WHERE rs.res_status_fo_key = rrr.res_status_fo_key),
(SELECT res_status_bo_omschrijving
FROM res_status_bo rs
WHERE rs.res_status_bo_key = rrr.res_status_bo_key),
ra.res_activiteit_omschrijving,
rsa.res_srtactiviteit_key,
rsa.res_srtactiviteit_omschrijving,
rrr.res_rsv_ruimte_opmerking,
voorz.ins_discipline_key,
voorz.vtype,
voorz.catalogus,
(SELECT prs_bedrijf_naam
FROM res_disc_params rdp, prs_bedrijf b
WHERE rdp.prs_bedrijf_key = b.prs_bedrijf_key
AND rdp.res_ins_discipline_key = voorz.ins_discipline_key),
voorz.product_key,
voorz.product,
voorz.totaalprijs,
TO_CHAR (voorz.van, 'hh24:mi'),
TO_CHAR (voorz.tot, 'hh24:mi'),
voorz.aantal,
voorz.prijs
FROM res_rsv_ruimte rrr,
res_activiteit ra,
res_srtactiviteit rsa,
res_reservering res,
prs_kostenplaats k,
prs_perslid p,
prs_afdeling a,
prs_afdeling an,
prs_v_afdeling_boom ab,
( SELECT res_rsv_ruimte_key,
MAX (o.res_opstelling_omschrijving) opstelling,
MAX (ro.res_ruimte_opstel_bezoekers) capaciteit,
MAX (ra.alg_ruimte_key) alg_ruimte_key,
MAX (rr.res_ruimte_nr) ruimte_nr
FROM res_rsv_ruimte r,
res_ruimte_opstelling ro,
res_opstelling o,
res_ruimte rr,
res_alg_ruimte ra
WHERE (r.res_rsv_ruimte_verwijder IS NULL OR (r.res_rsv_ruimte_verwijder IS NOT NULL AND r.res_status_fo_key = 4)) -- vervallen maar wel doorbelast
AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND ro.res_opstelling_key = o.res_opstelling_key
AND rr.res_ruimte_key = ra.res_ruimte_key
GROUP BY res_rsv_ruimte_key
UNION ALL
SELECT res_rsv_ruimte_key,
'' opstelling,
NULL capaciteit,
rrr.alg_ruimte_key,
r.alg_ruimte_nr
FROM res_rsv_ruimte rrr, alg_ruimte r
WHERE rrr.alg_ruimte_key IS NOT NULL
AND r.alg_ruimte_key = rrr.alg_ruimte_key) r2a,
(SELECT rra.res_rsv_ruimte_key res_rsv_ruimte_key,
ra.res_artikel_key product_key,
ra.res_artikel_omschrijving product,
NVL (rra.res_rsv_artikel_prijs,
rra.res_rsv_artikel_aantal * res_artikel_prijs)
totaalprijs,
rra.res_rsv_artikel_levering van,
NULL tot,
rra.res_rsv_artikel_aantal aantal,
NVL (
rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal,
res_artikel_prijs)
prijs,
c.ins_discipline_key ins_discipline_key,
c.ins_discipline_omschrijving catalogus,
'consumable' vtype
FROM res_rsv_artikel rra,
res_artikel ra,
ins_tab_discipline c
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = c.ins_discipline_key) voorz
WHERE (rrr.res_rsv_ruimte_verwijder IS NULL OR (rrr.res_rsv_ruimte_verwijder IS NOT NULL AND rrr.res_status_fo_key = 4)) -- vervallen maar wel doorbelast
AND rrr.res_reservering_key = res.res_reservering_key
AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+)
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key(+)
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = an.prs_afdeling_key
AND (rrr.res_ruimte_opstel_key IS NOT NULL
OR voorz.res_rsv_ruimte_key IS NOT NULL)
AND rrr.res_rsv_ruimte_van >= TO_DATE ('01-01-2010', 'DD-MM-YYYY');
CREATE OR REPLACE VIEW fmhn_v_rap_kostencatbron
AS
SELECT ru.*,
@@ -2630,7 +2967,7 @@ AS
FROM res_artikel
WHERE res_artikel_key = ru.voorziening_product_key)
BTW
FROM res_v_udr_reserveringincl ru
FROM res_v_rap_rescat ru
WHERE ru.voorziening_product_key <> 501
AND ru.voorziening_type = 'consumable'
AND ru.voorziening_catalogus IS NOT NULL
@@ -2644,7 +2981,7 @@ AS
'21',
SUBSTR (sub.res_kenmerkartikel_waarde, -7, 1)))
BTW
FROM res_v_udr_reserveringincl ru,
FROM res_v_rap_rescat ru,
(SELECT ra.res_rsv_ruimte_key,
ra.res_artikel_key,
ra.res_rsv_artikel_aantal,
@@ -2666,7 +3003,7 @@ AS
sub.res_kenmerkartikel_waarde,
sub.res_artikel_btw
BTW
FROM res_v_udr_reserveringincl ru,
FROM res_v_rap_rescat ru,
(SELECT ra.res_rsv_ruimte_key,
ra.res_artikel_key,
ra.res_rsv_artikel_aantal,
@@ -5043,6 +5380,74 @@ AS
FROM alg_ruimte r, alg_onrgoedkenmerk k
WHERE r.alg_ruimte_key = k.alg_onrgoed_key AND k.alg_kenmerk_key = 1000;
CREATE OR REPLACE VIEW fmhn_v_idm_afdeling
AS
SELECT prs_bedrijf_key,
prs_afdeling_key,
prs_kostenplaats_key,
LEVEL - 1 fmhnlevel,
mincode,
afdid,
afdoms,
afdidparent,
SYS_CONNECT_BY_PATH (afdoms, '/') pad
FROM (SELECT NULL prs_bedrijf_key,
NULL prs_afdeling_key,
NULL prs_kostenplaats_key,
NULL mincode,
'IDM' afdid,
'IDM' afdoms,
NULL afdidparent
FROM DUAL
UNION ALL
SELECT b.prs_bedrijf_key,
NULL prs_afdeling_key,
NULL prs_kostenplaats_key,
mc.fac_usrdata_code mincode,
UPPER (mc.fac_usrdata_code || oc.prs_kenmerklink_waarde) afdid, -- UPPER!
b.prs_bedrijf_naam afdoms, -- Alleen gedeelte tussen haakjes?
'IDM' afdidparent
FROM prs_bedrijf b,
(SELECT kl.*, ud.fac_usrdata_code
FROM prs_v_aanwezigkenmerklink kl, fac_usrdata ud
WHERE kl.prs_kenmerk_key = 1020
AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = ud.fac_usrdata_key) mc, -- Ministeriecode
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 1021) oc -- Org.onderdeelcode
WHERE b.prs_bedrijf_key = mc.prs_link_key
AND b.prs_bedrijf_key = oc.prs_link_key
UNION ALL
SELECT NULL prs_bedrijf_key,
a.prs_afdeling_key,
a.prs_kostenplaats_key,
SUBSTR (a.prs_afdeling_externid, 1, 2) mincode,
a.prs_afdeling_externid afdid, -- UPPER-gevuld!
REPLACE (a.prs_afdeling_omschrijving, '/', '#') afdoms,
UPPER (SUBSTR (a.prs_afdeling_externid, 1, 2) || kl.prs_kenmerklink_waarde) afdidparent -- UPPER!
FROM prs_afdeling a, prs_v_aanwezigkenmerklink kl
WHERE 1 = 1 --a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 1002) -- Org.onderdeelcode parent
WHERE afdid IS NOT NULL
CONNECT BY PRIOR afdid = afdidparent
START WITH afdidparent IS NULL;
CREATE OR REPLACE VIEW fmhn_v_rap_idm_afdboom
AS
SELECT mincode || TO_CHAR (fmhnlevel) || afdid sortering,
prs_bedrijf_key,
prs_afdeling_key,
prs_kostenplaats_key,
fmhnlevel,
mincode,
afdid,
afdoms,
afdidparent,
SUBSTR (pad, 6) pad
FROM fmhn_v_idm_afdeling
WHERE fmhnlevel > 0;
-- Domein-view tbv. alle medewerkers uit IDM!
-- Als P-kenmerk 1009=Identificatie persoon gevuld, dan uiteindelijk (in mijn
-- wijsheid, maar twijfel) besloten om medewerker te beschouwen als uit IDM.
@@ -5269,12 +5674,11 @@ AS
PROCEDURE update_min2geb;
PROCEDURE update_afd2geb;
PROCEDURE delete_wps_nok;
PROCEDURE insert_npq (p_rrr_key NUMBER,p_rra_key NUMBER, p_aantal NUMBER, p_lever_datum DATE, p_ra_key NUMBER);
PROCEDURE delete_npq (p_rrr_key NUMBER,p_rra_key NUMBER);
PROCEDURE insert_npq (p_rrr_key NUMBER, p_rra_key NUMBER, p_aantal NUMBER, p_lever_datum DATE, p_ra_key NUMBER);
PROCEDURE delete_npq (p_rrr_key NUMBER, p_rra_key NUMBER);
PROCEDURE add_xml_element (p_bestand VARCHAR2, p_tag VARCHAR2, p_value VARCHAR2);
PROCEDURE add_xml_row (p_bestand VARCHAR2, p_regel VARCHAR2);
PROCEDURE mld_after_insert (p_key IN NUMBER);
END;
/
@@ -6423,6 +6827,10 @@ AS
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND pw.prs_perslid_key = p.prs_perslid_key)
AND NOT EXISTS (SELECT 1 -- Niet in groep 1081=RES Cateraar!
FROM fac_gebruikersgroep
WHERE fac_groep_key = 1081 -- RES Cateraar
AND prs_perslid_key = p.prs_perslid_key)
ORDER BY p.prs_perslid_key;
BEGIN
v_count := 0;
@@ -6561,63 +6969,145 @@ AS
fac.writelog (c_applname, 'S', '#WPs verwijderd: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
COMMIT;
END;
PROCEDURE insert_npq (p_rrr_key IN NUMBER,p_rra_key IN NUMBER, p_aantal IN NUMBER, p_lever_datum IN DATE, p_ra_key IN NUMBER)
PROCEDURE insert_npq (p_rrr_key IN NUMBER, p_rra_key IN NUMBER, p_aantal IN NUMBER, p_lever_datum IN DATE, p_ra_key IN NUMBER)
AS
v_aantal NUMBER:=0;
v_aantal NUMBER := 0;
BEGIN
SELECT COUNT(*) INTO v_aantal FROM fmhn_npq_export WHERE res_rsv_ruimte_key = p_rrr_key AND res_rsv_artikel_key = p_rra_key;
IF v_aantal = 0
THEN
INSERT INTO fmhn_npq_export(res_rsv_artikel_key,export_datum,res_rsv_ruimte_key,res_artikel_key,aantal,lever_datum)
VALUES(p_rra_key,SYSDATE,p_rrr_key, p_ra_key, p_aantal, p_lever_datum);
SELECT COUNT ( * ) INTO v_aantal FROM fmhn_npq_export WHERE res_rsv_ruimte_key = p_rrr_key AND res_rsv_artikel_key = p_rra_key;
IF v_aantal = 0
THEN
INSERT INTO fmhn_npq_export (res_rsv_artikel_key, export_datum, res_rsv_ruimte_key, res_artikel_key, aantal, lever_datum)
VALUES (p_rra_key, SYSDATE, p_rrr_key, p_ra_key, p_aantal, p_lever_datum);
COMMIT;
END IF;
END;
PROCEDURE delete_npq (p_rrr_key IN NUMBER, p_rra_key IN NUMBER)
AS
BEGIN
DELETE FROM fmhn_npq_export WHERE res_rsv_ruimte_key = p_rrr_key AND res_rsv_artikel_key = p_rra_key;
COMMIT;
END IF;
END;
PROCEDURE delete_npq (p_rrr_key IN NUMBER,p_rra_key IN NUMBER)
PROCEDURE add_xml_row (p_bestand IN VARCHAR2, p_regel IN VARCHAR2)
AS
v_index NUMBER;
BEGIN
DELETE FROM fmhn_npq_export WHERE res_rsv_ruimte_key= p_rrr_key AND res_rsv_artikel_key = p_rra_key;
COMMIT;
SELECT COALESCE (MAX (fac_rapport_volgnr), 0) + 1 INTO v_index FROM fac_rapport WHERE fac_rapport_node = p_bestand;
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
VALUES (p_bestand, v_index, p_regel);
END;
PROCEDURE add_xml_row (p_bestand IN VARCHAR2, p_regel IN VARCHAR2)
AS
v_index NUMBER;
BEGIN
SELECT COALESCE (MAX (fac_rapport_volgnr), 0) + 1
INTO v_index
FROM fac_rapport
WHERE fac_rapport_node = p_bestand;
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (p_bestand, v_index, p_regel);
END;
PROCEDURE add_xml_element (p_bestand IN VARCHAR2, p_tag IN VARCHAR2, p_value IN VARCHAR2)
AS
BEGIN
fmhn.add_xml_row (p_bestand, '<' || p_tag || '>' || xml.char_to_html (p_value) || '</' || p_tag || '>');
END;
PROCEDURE add_xml_element (p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2)
AS
BEGIN
fmhn.add_xml_row (
p_bestand,
'<'
|| p_tag
|| '>'
|| xml.char_to_html (p_value)
|| '</'
|| p_tag
|| '>');
END;
-- Hook functie die na het invoeren van een melding aangeroepen wordt.
PROCEDURE mld_after_insert (p_key IN NUMBER)
AS
v_melding_status NUMBER;
v_locatie_key NUMBER;
v_kenmerk_projectnr NUMBER; -- Kenmerk_key projectnummer
v_perslid_key NUMBER; -- Melder
v_discipline_key NUMBER;
v_stdmelding_key NUMBER;
v_melding_oms_old VARCHAR2 (100);
v_melding_oms_new VARCHAR2 (100);
v_mld_uitvoertijd_old mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
v_mld_accepttijd_old mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
v_mld_uitvoertijd_new mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
v_mld_accepttijd_new mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
v_melding_omschrijving mld_melding.mld_melding_omschrijving%TYPE;
v_melding_onderwerp mld_melding.mld_melding_onderwerp%TYPE;
v_melding_einddatum_std DATE;
v_melding_acceptdatum_std DATE;
v_melding_einddatum_old DATE;
v_melding_datum DATE;
v_dienst_key NUMBER (10);
v_typeopdr_key NUMBER (10);
v_bedrijf_key NUMBER (10);
v_opdr_key NUMBER (10);
v_stdmelding_autoorder mld_stdmelding.mld_stdmelding_autoorder%TYPE;
v_locatie_change NUMBER (1);
v_melding_cat VARCHAR2 (400);
v_locatie_code VARCHAR2 (100);
v_locatie VARCHAR2 (100);
v_gebouw_code VARCHAR2 (100);
v_errormsg VARCHAR2 (100);
BEGIN
v_errormsg := 'Ophalen meldinggegevens';
BEGIN
v_locatie_change := 0;
SELECT m.mld_melding_status,
m.mld_alg_locatie_key,
m.prs_perslid_key,
m.mld_stdmelding_key,
m.mld_melding_einddatum,
m.mld_melding_datum,
m.mld_melding_omschrijving,
sm.mld_ins_discipline_key
INTO v_melding_status,
v_locatie_key,
v_perslid_key,
v_stdmelding_key,
v_melding_einddatum_old,
v_melding_datum,
v_melding_omschrijving,
v_discipline_key
FROM mld_melding m, mld_stdmelding sm
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mld_melding_key = p_key;
IF v_stdmelding_key IN (639, 640) -- Aanvraag formulieren nieuwe projecten
THEN
BEGIN
SELECT k.mld_kenmerk_key
INTO v_kenmerk_projectnr
FROM mld_kenmerk k, mld_stdmelding s, mld_melding m
WHERE k.mld_srtkenmerk_key = 402 -- Kenmerksoort 'Projectnummer (automatisch)'
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_melding_key = p_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_kenmerk_projectnr := NULL;
END;
IF v_kenmerk_projectnr IS NOT NULL
THEN
BEGIN
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (p_key,
(SELECT k.mld_kenmerk_key
FROM mld_kenmerk k, mld_stdmelding s, mld_melding m
WHERE k.mld_srtkenmerk_key = 402 -- Kenmerksoort 'Projectnummer (automatisch)'
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_melding_key = p_key),
(SELECT (TO_CHAR (SYSDATE, 'yy') * 1000000)
+ 2000000000
+ 1
+ MAX (fac.safe_to_number (SUBSTR (kmm.mld_kenmerkmelding_waarde, 5, 6)))
FROM mld_kenmerkmelding kmm,
(SELECT k.mld_kenmerk_key
FROM mld_kenmerk k, mld_stdmelding s, mld_melding m
WHERE k.mld_srtkenmerk_key = 402 -- Kenmerksoort 'Projectnummer (automatisch)'
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_melding_key = p_key) km
WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key));
END;
END IF;
END IF;
END;
END;
END;
/
@@ -10378,17 +10868,17 @@ END fmhn_import_mld;
*/
CREATE OR REPLACE VIEW fmhn_v_select_reservering
AS
SELECT DISTINCT(rrr.res_rsv_ruimte_key),
rrr.res_reservering_key,
AS
SELECT DISTINCT(rrr.res_rsv_ruimte_key),
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_aanmaak aanmk_datum,
rrr.res_rsv_ruimte_aanmaak aanmk_datum,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 108) last_upd,
rrr.res_rsv_ruimte_externsyncdate last_export,
rrr.res_rsv_ruimte_verwijder verw_datum,
rrr.res_rsv_ruimte_verwijder verw_datum,
alg.alg_ruimte_nr,
(SELECT prs_perslid_externid
FROM prs_perslid
@@ -10427,8 +10917,8 @@ AS
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 108) last_upd,
rra.res_rsv_artikel_verwijder verw_datum,
AND fac_srtnotificatie_key = 108) last_upd,
rra.res_rsv_artikel_verwijder verw_datum,
(SELECT prs_perslid_externid
FROM prs_perslid
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key) besteller,
@@ -10437,9 +10927,9 @@ AS
rra.res_rsv_artikel_aantal aantal,
rra.res_rsv_artikel_key rra_key,
ra.res_artikel_key ra_key,
ra.res_artikel_opmerking artikel_nr,
ra.res_artikel_externnr artikel_nr,
ra.res_artikel_omschrijving art_omschrijving,
rra.res_rsv_artikel_levering lever_datum
rra.res_rsv_artikel_levering lever_datum
FROM res_rsv_artikel rra,
res_rsv_ruimte rrr,
res_artikel ra,
@@ -10447,7 +10937,7 @@ AS
res_ruimte rer,
res_alg_ruimte rarm,
alg_v_ruimte_gegevens_all alg
WHERE rra.res_status_bo_key = 2
WHERE rra.res_status_bo_key = 2
-- AND rra.res_rsv_artikel_verwijder IS NULL
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ra.res_artikel_key = rra.res_artikel_key
@@ -10456,68 +10946,68 @@ AS
AND rer.res_ruimte_key = rop.res_ruimte_key
AND rarm.res_ruimte_key = rer.res_ruimte_key
AND alg.alg_ruimte_key = rarm.alg_ruimte_key
AND alg.alg_locatie_key= 18
AND alg.alg_locatie_key= 18
ORDER BY rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr;
CREATE OR REPLACE PROCEDURE fmhn_select_objects(p_res_rsv_ruimte_key IN NUMBER,p_counter in NUMBER)
AS
CURSOR sel_art(v_res_rsv_ruimte_key NUMBER)
IS
SELECT res_rsv_ruimte_key, res_reservering_key, res_rsv_ruimte_volgnr, res_oms, last_upd, last_export, verw_datum, alg_ruimte_nr, besteller, datum_van, datum_tot,
IS
SELECT res_rsv_ruimte_key, res_reservering_key, res_rsv_ruimte_volgnr, res_oms, last_upd, last_export, verw_datum, alg_ruimte_nr, besteller, datum_van, datum_tot,
artikel_nr, art_omschrijving,aantal, rra_key, ra_key, locatie_code, lever_datum
FROM fmhn_v_select_res_artikel
WHERE res_rsv_ruimte_key = v_res_rsv_ruimte_key;
CURSOR sel_del(v_res_rsv_ruimte_key NUMBER)
IS
IS
SELECT ra.res_artikel_omschrijving art_omschrijving, fne.aantal aantal, rrr.RES_RSV_RUIMTE_VAN lever_datum, ra.res_artikel_opmerking artikel_nr, rra.res_rsv_artikel_key rra_key
FROM fmhn_npq_export fne, res_rsv_ruimte rrr, res_artikel ra, res_rsv_artikel rra
WHERE rrr.res_rsv_ruimte_key = v_res_rsv_ruimte_key
FROM fmhn_npq_export fne, res_rsv_ruimte rrr, res_artikel ra, res_rsv_artikel rra
WHERE rrr.res_rsv_ruimte_key = v_res_rsv_ruimte_key
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND fne.res_artikel_key = ra.res_artikel_key
AND fne.res_rsv_artikel_key NOT IN (select rra_key from fmhn_v_select_res_artikel WHERE res_rsv_ruimte_key = v_res_rsv_ruimte_key);
AND fne.res_artikel_key = ra.res_artikel_key
AND fne.res_rsv_artikel_key NOT IN (select rra_key from fmhn_v_select_res_artikel WHERE res_rsv_ruimte_key = v_res_rsv_ruimte_key);
v_base VARCHAR2 (10);
v_bestand VARCHAR2(50);
v_counter NUMBER;
v_counter NUMBER;
v_artcounter NUMBER;
v_status VARCHAR2(20);
BEGIN
v_status VARCHAR2(20);
BEGIN
-- Nu gaan we kijken of er ook artikelen zijn die we moeten exporteren
v_base := 'ITM_NEW';
v_artcounter := 1;
v_base := 'ITM_N';
v_artcounter := 0;
v_counter:=p_counter;
v_status:='ND';
FOR rec_art IN sel_art(p_res_rsv_ruimte_key)
LOOP
v_artcounter:=v_artcounter+1;
IF rec_art.last_export IS NULL
THEN
v_status:= 'Opened';
ELSIF rec_art.last_export IS NOT NULL AND rec_art.last_upd>rec_art.last_export AND rec_art.verw_datum IS NULL THEN
v_status := 'Opened';
v_base := 'ITM_UPD';
v_base := 'ITM_U';
ELSIF rec_art.last_export IS NOT NULL AND rec_art.verw_datum IS NOT NULL and rec_art.verw_datum>rec_art.last_export THEN
v_status :='Cancelled';
v_base := 'ITM_DEL';
v_base := 'ITM_D';
END IF;
-- DBMS_OUTPUT.PUT_LINE('Status -'||v_status||'-');
v_bestand := v_base || '-' || v_counter || '-';
IF v_status != 'ND'
v_bestand := v_base || '-' || v_counter || '-'||v_artcounter||'-';
IF v_status != 'ND'
THEN
IF v_artcounter=1 THEN
fmhn.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
fmhn.add_xml_row (v_bestand, '<Facilitor>');
-- Chewck inbouwen of het catering is of iets anders
@@ -10534,7 +11024,7 @@ BEGIN
fmhn.add_xml_element (v_bestand, 'Besteller', rec_art.besteller);
fmhn.add_xml_row (v_bestand, '<Items>');
END IF;
fmhn.add_xml_row (v_bestand, '<Item>');
fmhn.add_xml_element (v_bestand, 'ArtikelKey', rec_art.rra_key);
fmhn.add_xml_element (v_bestand, 'Artikelnr', rec_art.artikel_nr);
@@ -10542,18 +11032,18 @@ BEGIN
fmhn.add_xml_element (v_bestand, 'Aantal', rec_art.aantal);
fmhn.add_xml_element (v_bestand, 'Omschrijving', rec_art.art_omschrijving);
fmhn.add_xml_element (v_bestand, 'LeverDatum', rec_art.lever_datum);
fmhn.add_xml_row (v_bestand, '</Item>');
v_artcounter:=v_artcounter+1;
-- insert artikel into fmhn_npq_export
fmhn.insert_npq(rec_art.res_rsv_ruimte_key,rec_art.rra_key,rec_art.aantal,rec_art.lever_datum, rec_art.ra_key);
END IF;
END LOOP;
fmhn.insert_npq(rec_art.res_rsv_ruimte_key,rec_art.rra_key,rec_art.aantal,rec_art.lever_datum, rec_art.ra_key);
END IF;
END LOOP;
v_status := 'Cancelled';
-- check of er artikelen zijn verwijderd
FOR rec_art_del IN sel_del(p_res_rsv_ruimte_key)
@@ -10567,47 +11057,47 @@ BEGIN
fmhn.add_xml_row (v_bestand, '</Item>');
fmhn.delete_npq(p_res_rsv_ruimte_key, rec_art_del.rra_key);
END LOOP;
IF v_status != 'ND'
IF v_artcounter > 0
THEN
fmhn.add_xml_row (v_bestand, '</Items>');
fmhn.add_xml_row (v_bestand, '</Reservering>');
fmhn.add_xml_row (v_bestand, '</Facilitor>');
fmhn.add_xml_row (v_bestand, '</Facilitor>');
END IF;
UPDATE res_rsv_artikel SET res_rsv_artikel_externsyncdate=SYSDATE
WHERE res_rsv_ruimte_key = p_res_rsv_ruimte_key;
commit;
END;
/
commit;
END;
/
CREATE OR REPLACE PROCEDURE fmhn_select_reservering(
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR sel_res
CURSOR sel_res
IS
SELECT res_rsv_ruimte_key, res_reservering_key, res_rsv_ruimte_volgnr, last_upd, last_export, verw_datum, alg_ruimte_nr, besteller, datum_van, datum_tot, oms, aantal, locatie_code
FROM fmhn_v_select_reservering
WHERE aanmk_datum > SYSDATE-1 -- alleen nieuwe
WHERE aanmk_datum > SYSDATE-1 -- alleen nieuwe
AND (last_export IS NULL OR last_upd > last_export);
--WHERE last_export IS NULL;
--WHERE last_export IS NULL;
v_base VARCHAR2 (10);
v_bestand VARCHAR2(50);
v_counter NUMBER;
v_counter NUMBER;
v_status VARCHAR2(20);
BEGIN
v_base := 'RES_NEW';
v_base := 'RES_N';
v_counter:=1;
DELETE FROM fac_rapport -- Opschonen oude Reserevering exports
WHERE fac_rapport_node LIKE 'RES_NEW%' OR fac_rapport_node LIKE 'ITM_NEW%';
WHERE fac_rapport_node LIKE 'RES_%' OR fac_rapport_node LIKE 'ITM_%';
FOR rec IN sel_res
LOOP
v_status := 'ND';
@@ -10617,12 +11107,12 @@ BEGIN
v_status:= 'Opened';
ELSIF rec.last_export IS NOT NULL AND rec.last_upd>rec.last_export AND rec.verw_datum IS NULL THEN
v_status := 'Opened'; -- NPQ kent geen update status
v_base := 'RES_UPD';
v_base := 'RES_U';
ELSIF rec.last_export IS NOT NULL AND rec.verw_datum IS NOT NULL and rec.verw_datum>rec.last_export THEN
v_status :='Cancelled';
v_base := 'RES_DEL';
v_base := 'RES_D';
END IF;
IF v_status != 'ND' -- we gaan allee XML maken als er ook een status is anders dan 'ND';
THEN
v_bestand := v_base || '-' || v_counter || '-';
@@ -10639,20 +11129,21 @@ BEGIN
fmhn.add_xml_element (v_bestand, 'Omschrijving', rec.oms);
fmhn.add_xml_element (v_bestand, 'Aantal', rec.aantal);
fmhn.add_xml_element (v_bestand, 'Besteller', rec.besteller);
fmhn.add_xml_row (v_bestand, '</Reservering>');
fmhn.add_xml_row (v_bestand, '</Facilitor>');
v_counter:=v_counter+1;
fmhn_select_objects(rec.res_rsv_ruimte_key, v_counter); -- Kijken iof deze reserverig ook evt catering artikelen heeft
UPDATE res_rsv_ruimte SET res_rsv_ruimte_externsyncdate=SYSDATE
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
END IF;
v_counter:=v_counter+1;
END LOOP;
END;
/
@@ -10666,7 +11157,7 @@ AS
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'RES_%'
UNION
UNION
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'ITM_%';