FMHN#63881 Uitbreiding views & levering NPQ

svn path=/Customer/trunk/; revision=53733
This commit is contained in:
Sander Schepers
2021-11-16 19:42:07 +00:00
parent b808a91477
commit 9862425e8f

View File

@@ -5269,6 +5269,12 @@ 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 add_xml_element (p_bestand VARCHAR2, p_tag VARCHAR2, p_value VARCHAR2);
PROCEDURE add_xml_row (p_bestand VARCHAR2, p_regel VARCHAR2);
END;
/
@@ -6555,6 +6561,63 @@ 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)
AS
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);
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;
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;
END;
/
@@ -9938,50 +10001,55 @@ AS
--FMHN#69317 Tijdelijke view tbv bezoekers met parkeerplaats
CREATE OR REPLACE VIEW fmhn_v_udr_bezoekerspark
CREATE OR REPLACE VIEW FMHN_V_UDR_BEZOEKERSPARK
(
key,
afspraak_key,
reservering_key,
KEY,
AFSPRAAK_KEY,
RESERVERING_KEY,
HOST,
contact,
invoerder,
plaats_code,
plaats_omschrijving,
regio,
district,
locatie_code,
locatie_naam,
locatie_plaats,
gebouw_code,
gebouw_naam,
verdieping_code,
verdieping_naam,
ruimte_code,
ruimte_naam,
afspraak_ruimte,
afspraak_opmerking,
bezoeker_naam,
bezoeker_bedrijf,
bezoek_van,
weekdag_bezoek_van,
bezoek_tot,
actie,
bezoeker_opmerking,
bezoeker_binnen,
bezoeker_buiten,
pasnr,
parkeerplaats,
fclt_3d_locatie_key,
selfservice
CONTACT,
INVOERDER,
PLAATS_CODE,
PLAATS_OMSCHRIJVING,
REGIO,
DISTRICT,
LOCATIE_CODE,
LOCATIE_NAAM,
LOCATIE_PLAATS,
GEBOUW_CODE,
GEBOUW_NAAM,
VERDIEPING_CODE,
VERDIEPING_NAAM,
RUIMTE_CODE,
RUIMTE_NAAM,
AFSPRAAK_RUIMTE,
AFSPRAAK_OPMERKING,
BEZOEKER_NAAM,
BEZOEKER_BEDRIJF,
BEZOEK_VAN,
WEEKDAG_BEZOEK_VAN,
BEZOEK_TOT,
ACTIE,
BEZOEKER_OPMERKING,
BEZOEKER_BINNEN,
BEZOEKER_BUITEN,
PASNR,
PARKEERPLAATS,
FCLT_3D_LOCATIE_KEY,
SELFSERVICE,
TERREIN_OMSCHRIJVING,
TERREIN_CODE
)
AS
SELECT b.bez_bezoekers_key,
a.bez_afspraak_key,
a.res_rsv_ruimte_key,
a.bez_afspraak_gastheer bez_afspraak_host,
p2.prs_perslid_naam_full bez_afspraak_contact,
p3.prs_perslid_naam_full bez_afspraak_invoerder,
a.bez_afspraak_gastheer
bez_afspraak_host,
p2.prs_perslid_naam_full
bez_afspraak_contact,
p3.prs_perslid_naam_full
bez_afspraak_invoerder,
og.alg_onroerendgoed_code,
og.alg_onroerendgoed_omschrijving,
r.alg_regio_omschrijving,
@@ -9997,13 +10065,17 @@ AS
og.alg_ruimte_omschrijving,
a.bez_afspraak_ruimte,
a.bez_afspraak_opmerking,
b.bez_afspraak_naam bezoeker_naam,
b.bez_afspraak_bedrijf bezoeker_bedrijf,
b.bez_afspraak_naam
bezoeker_naam,
b.bez_afspraak_bedrijf
bezoeker_bedrijf,
a.bez_afspraak_datum,
TO_CHAR (a.bez_afspraak_datum, 'D') weekdag_bezoek_van,
TO_CHAR (a.bez_afspraak_datum, 'D')
weekdag_bezoek_van,
a.bez_afspraak_eind,
ba.bez_actie_omschrijving,
b.bez_bezoekers_opmerking bezoeker_opmerking,
b.bez_bezoekers_opmerking
bezoeker_opmerking,
b.bez_bezoekers_done,
b.bez_bezoekers_out,
b.bez_bezoekers_pasnr,
@@ -10011,7 +10083,18 @@ AS
a.alg_locatie_key,
DECODE (p2.prs_perslid_naam_full,
p3.prs_perslid_naam_full, lcl.l ('lcl_yes'),
lcl.l ('lcl_no')) selfservice
lcl.l ('lcl_no'))
selfservice,
(SELECT ts.alg_terreinsector_omschrijving
FROM alg_terreinsector ts
WHERE id.ins_alg_ruimte_type = 'T'
AND ts.alg_terreinsector_key = id.ins_alg_ruimte_key)
AS terrein_omschrijving,
(SELECT ts.alg_terreinsector_code
FROM alg_terreinsector ts
WHERE id.ins_alg_ruimte_type = 'T'
AND ts.alg_terreinsector_key = id.ins_alg_ruimte_key)
AS terrein_code
FROM bez_afspraak a,
bez_bezoekers b,
prs_v_perslid_fullnames_all p2,
@@ -10022,7 +10105,8 @@ AS
alg_regio r,
bez_actie ba,
res_rsv_deel rrd,
res_deel rd
res_deel rd,
ins_deel id
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND p2.prs_perslid_key = a.bez_afspraak_contact_key
AND p3.prs_perslid_key(+) = a.prs_perslid_key
@@ -10035,6 +10119,7 @@ AS
AND rrd.res_deel_key = rd.res_deel_key(+)
AND rd.res_deel_omschrijving IS NOT NULL
AND a.bez_afspraak_datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')
AND id.ins_deel_key = rd.res_ins_deel_key
ORDER BY bez_bezoekers_key;
@@ -10292,6 +10377,289 @@ END fmhn_import_mld;
/
*/
CREATE OR REPLACE VIEW fmhn_v_select_reservering
AS
SELECT DISTINCT(rrr.res_rsv_ruimte_key),
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
(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,
alg.alg_ruimte_nr,
(SELECT prs_perslid_externid
FROM prs_perslid
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key) besteller,
rrr.RES_RSV_RUIMTE_VAN datum_van,
rrr.RES_RSV_RUIMTE_TOT datum_tot,
rrr.res_rsv_ruimte_omschrijving oms,
rrr.res_rsv_ruimte_bezoekers aantal,
alg.alg_locatie_code locatie_code
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rop,
res_ruimte rer,
res_alg_ruimte rarm,
alg_v_ruimte_gegevens_all alg
WHERE rrr.res_status_bo_key = 2
--AND rrr.res_status_fo_key = 2
--AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
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= 11; -- allen voor Rijnstraat 8 (key=18)
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,
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
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
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);
v_base VARCHAR2 (10);
v_bestand VARCHAR2(50);
v_counter NUMBER;
v_artcounter NUMBER;
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_counter:=p_counter;
v_status:='ND';
FOR rec_art IN sel_art(p_res_rsv_ruimte_key)
LOOP
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';
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';
END IF;
-- DBMS_OUTPUT.PUT_LINE('Status -'||v_status||'-');
v_bestand := v_base || '-' || v_counter || '-';
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
fmhn.add_xml_row (v_bestand, '<Reservering type="Catering">');
fmhn.add_xml_element (v_bestand, 'Status', v_status);
fmhn.add_xml_element (v_bestand, 'Key', rec_art.res_rsv_ruimte_key);
fmhn.add_xml_element (v_bestand, 'ReserveringNr', rec_art.res_reservering_key||'/'||rec_art.res_rsv_ruimte_volgnr);
fmhn.add_xml_element (v_bestand, 'RuimteNr', rec_art.alg_ruimte_nr);
fmhn.add_xml_element (v_bestand, 'LocatieCode', rec_art.locatie_Code);
fmhn.add_xml_element (v_bestand, 'DatumVan', TO_CHAR(rec_art.datum_van,'YYYY-MM-DD"T"hh24:mi:ss'));
fmhn.add_xml_element (v_bestand, 'DatumTot', TO_CHAR(rec_art.datum_tot,'YYYY-MM-DD"T"hh24:mi:ss'));
fmhn.add_xml_element (v_bestand, 'Omschrijving', rec_art.res_oms);
--fmhn_add_xml_element (v_bestand, 'Aantal', rec.aantal);
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);
fmhn.add_xml_element (v_bestand, 'Status', v_status);
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;
v_status := 'Cancelled';
-- check of er artikelen zijn verwijderd
FOR rec_art_del IN sel_del(p_res_rsv_ruimte_key)
LOOP
fmhn.add_xml_row (v_bestand, '<Item>');
fmhn.add_xml_element (v_bestand, 'Artikelnr', rec_art_del.artikel_nr);
fmhn.add_xml_element (v_bestand, 'Status', v_status);
fmhn.add_xml_element (v_bestand, 'Aantal', rec_art_del.aantal);
fmhn.add_xml_element (v_bestand, 'Omschrijving', rec_art_del.art_omschrijving);
fmhn.add_xml_element (v_bestand, 'LeverDatum', rec_art_del.lever_datum);
fmhn.add_xml_row (v_bestand, '</Item>');
fmhn.delete_npq(p_res_rsv_ruimte_key, rec_art_del.rra_key);
END LOOP;
fmhn.add_xml_row (v_bestand, '</Items>');
fmhn.add_xml_row (v_bestand, '</Reservering>');
fmhn.add_xml_row (v_bestand, '</Facilitor>');
UPDATE res_rsv_artikel SET res_rsv_artikel_externsyncdate=SYSDATE
WHERE res_rsv_ruimte_key = p_res_rsv_ruimte_key;
commit;
END;
/
CREATE OR REPLACE VIEW fmhn_v_select_res_artikel
AS
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_van datum_van,
rrr.res_rsv_ruimte_tot datum_tot,
rrr.res_rsv_ruimte_omschrijving res_oms,
rra.RES_RSV_ARTIKEL_EXTERNSYNCDATE last_export,
(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,
(SELECT prs_perslid_externid
FROM prs_perslid
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key) besteller,
alg.alg_locatie_code locatie_code,
alg.alg_ruimte_nr,
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_omschrijving art_omschrijving,
rra.res_rsv_artikel_levering lever_datum
FROM res_rsv_artikel rra,
res_rsv_ruimte rrr,
res_artikel ra,
res_ruimte_opstelling rop,
res_ruimte rer,
res_alg_ruimte rarm,
alg_v_ruimte_gegevens_all alg
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
-- AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
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= 11 -- RS8 = 18
ORDER BY rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr;
CREATE OR REPLACE PROCEDURE fmhn_select_reservering(
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
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 last_export IS NULL;
v_base VARCHAR2 (10);
v_bestand VARCHAR2(50);
v_counter NUMBER;
v_status VARCHAR2(20);
BEGIN
v_base := 'RES_NEW';
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%';
FOR rec IN sel_res
LOOP
v_status := 'ND';
-- Maar eerst gaan bepalen of we wat moeten doen voor dit record.
IF rec.last_export IS NULL
THEN
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';
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';
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 || '-';
fmhn.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
fmhn.add_xml_row (v_bestand, '<Facilitor>');
fmhn.add_xml_row (v_bestand, '<Reservering type="Zaalreservering">');
fmhn.add_xml_element (v_bestand, 'Status', v_status);
fmhn.add_xml_element (v_bestand, 'Key', rec.res_rsv_ruimte_key);
fmhn.add_xml_element (v_bestand, 'ReserveringNr', rec.res_reservering_key||'/'||rec.res_rsv_ruimte_volgnr);
fmhn.add_xml_element (v_bestand, 'RuimteNr', rec.alg_ruimte_nr);
fmhn.add_xml_element (v_bestand, 'LocatieCode', rec.locatie_Code);
fmhn.add_xml_element (v_bestand, 'DatumVan', TO_CHAR(rec.datum_van,'YYYY-MM-DD"T"hh24:mi:ss'));
fmhn.add_xml_element (v_bestand, 'DatumTot', TO_CHAR(rec.datum_tot,'YYYY-MM-DD"T"hh24:mi:ss'));
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;
UPDATE res_rsv_ruimte SET res_rsv_ruimte_externsyncdate=SYSDATE
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
fmhn_select_objects(rec.res_rsv_ruimte_key, v_counter); -- Kijken iof deze reserverig ook evt catering artikelen heeft
END IF;
END LOOP;
END;
/
CREATE OR REPLACE VIEW fmhn_v_export_reservering (
result,
result_order,
exp_res
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'RES_%'
UNION
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'ITM_%';
------ payload end ------
SET DEFINE OFF