FMHN#63881 -- Uitbereiding tbv Implementatie NPQ koppeling

svn path=/Customer/trunk/; revision=54324
This commit is contained in:
Norbert Wassink
2021-12-27 10:19:46 +00:00
parent c6aafb47c0
commit aba86cfe5c

View File

@@ -12072,16 +12072,19 @@ AS
CREATE OR REPLACE VIEW fmhn_v_select_reservering
AS
SELECT DISTINCT(rrr.res_rsv_ruimte_key),
rrr.res_reservering_key,
rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr,
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,
FROM fac_tracking
WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 108
AND prs_perslid_key <> 44 -- mutaties via de API call door NPQ willen we niet zien
AND UPPER (COALESCE (fac_tracking_oms, ' ')) NOT LIKE -- tracking die toegevoegd is bij de export naar NPQ willen we niet zien
'%NPQ:%') last_upd,
rrr.res_rsv_ruimte_externsyncdate last_export,
rrr.res_rsv_ruimte_verwijder verw_datum,
alg.alg_ruimte_nr,
COALESCE(rer.res_ruimte_friendlyname,alg.alg_ruimte_nr) ruimte_nr,
(SELECT prs_perslid_externid
FROM prs_perslid
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key) besteller,
@@ -12089,9 +12092,13 @@ AS
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
alg.alg_locatie_code locatie_code,
'ruimte' soort,
ros.res_opstelling_omschrijving opstelling,
rrr.res_status_fo_key fo_status
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rop,
res_opstelling ros,
res_ruimte rer,
res_alg_ruimte rarm,
alg_v_ruimte_gegevens_all alg
@@ -12099,56 +12106,137 @@ AS
--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 ros.res_opstelling_key = rop.res_opstelling_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= 18
ORDER BY rrr.res_reservering_key;
AND alg.alg_locatie_key= 18
UNION ALL
SELECT DISTINCT(rrr.res_rsv_ruimte_key),
rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr,
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
AND prs_perslid_key <> 44 -- mutaties via de API call door NPQ willen we niet zien
AND UPPER (COALESCE (fac_tracking_oms, ' ')) NOT LIKE -- tracking die toegevoegd is bij de export naar NPQ willen we niet zien
'NPQ:%') last_upd,
rrr.res_rsv_ruimte_externsyncdate last_export,
rrr.res_rsv_ruimte_verwijder verw_datum,
alg.alg_ruimte_nr 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,
'losse-catering' soort,
'N.V.T.' opstelling,
rrr.res_status_fo_key fo_status
FROM res_rsv_ruimte rrr,
alg_v_ruimte_gegevens_all alg
WHERE alg.alg_ruimte_key = rrr.alg_ruimte_key
AND alg.alg_locatie_key= 18
-- AND rrr.res_status_fo_key = 2
ORDER BY reservering_key;
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_externnr 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= 18
ORDER BY rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr;
/*
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr reservering_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
AND prs_perslid_key <> 44 -- mutaties via de API call door NPQ willen we niet zien
AND UPPER (COALESCE (fac_tracking_oms, ' ')) NOT LIKE -- tracking die toegevoegd is bij de export naar NPQ willen we niet zien
'NPQ:%') 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,
COALESCE(rer.res_ruimte_friendlyname,alg.alg_ruimte_nr) ruimte_nr,
rra.res_rsv_artikel_aantal aantal,
rra.res_rsv_artikel_key rra_key,
ra.res_artikel_key ra_key,
ra.res_artikel_externnr artikel_nr,
ra.res_artikel_omschrijving art_omschrijving,
ra.res_artikel_externnr art_extern_nr,
rra.res_rsv_artikel_levering lever_datum,
ins.ins_discipline_externnr cat_externnr
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,
ins_tab_discipline ins
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= 18
AND ins.ins_discipline_key = ra.res_discipline_key
UNION ALL
SELECT DISTINCT(rrr.res_rsv_ruimte_key),
rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr reservering_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
AND prs_perslid_key <> 44 -- mutaties via de API call door NPQ willen we niet zien
AND UPPER (COALESCE (fac_tracking_oms, ' ')) NOT LIKE -- tracking die toegevoegd is bij de export naar NPQ willen we niet zien
'NPQ:%') 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 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,
ra.res_artikel_externnr art_extern_nr,
rra.res_rsv_artikel_levering lever_datum,
ins.ins_discipline_externnr cat_externnr
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
alg_v_ruimte_gegevens_all alg,
ins_tab_discipline ins
WHERE rra.res_status_bo_key = 2
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ra.res_artikel_key = rra.res_artikel_key
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND alg.ALG_RUIMTE_KEY = rrr.ALG_RUIMTE_KEY
AND alg.alg_locatie_key= 18
AND ins.ins_discipline_key = ra.res_discipline_key
ORDER BY reservering_key, reservering_volgnr;
CREATE OR REPLACE PROCEDURE fmhn_select_objects (
p_res_rsv_ruimte_key IN NUMBER,
p_counter IN NUMBER)
@@ -12156,27 +12244,29 @@ AS
CURSOR sel_art (v_res_rsv_ruimte_key NUMBER)
IS
SELECT res_rsv_ruimte_key,
res_reservering_key,
res_rsv_ruimte_volgnr,
reservering_key,
reservering_volgnr,
res_oms,
last_upd,
last_export,
verw_datum,
alg_ruimte_nr,
ruimte_nr,
besteller,
datum_van,
datum_tot,
artikel_nr,
art_omschrijving,
aantal,
art_extern_nr,
rra_key,
ra_key,
locatie_code,
lever_datum
lever_datum,
cat_externnr
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)
/*CURSOR sel_del (v_res_rsv_ruimte_key NUMBER)
IS
SELECT ra.res_artikel_omschrijving art_omschrijving,
fne.aantal aantal,
@@ -12193,7 +12283,7 @@ AS
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);
WHERE res_rsv_ruimte_key = v_res_rsv_ruimte_key); */
v_base VARCHAR2 (10);
v_bestand VARCHAR2 (50);
@@ -12219,7 +12309,7 @@ BEGIN
AND rec_art.verw_datum IS NULL
THEN
v_status := 'Opened';
v_base := 'ITM_U';
v_base := 'ITM_N';
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
@@ -12240,11 +12330,13 @@ BEGIN
fmhn.add_xml_row (v_bestand, '<Facilitor>');
-- Check inbouwen of het catering is of iets anders
fmhn.add_xml_row (v_bestand, '<Reservering type="Catering">');
fmhn.add_xml_row (v_bestand, '<Reservering >');
fmhn.add_xml_element (v_bestand, 'Soort', 'Catering');
fmhn.add_xml_element (v_bestand, 'Status', v_status);
fmhn.add_xml_element (v_bestand, 'Catalogus', rec_art.cat_externnr);
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, 'ReserveringNr', rec_art.reservering_key || '/' || rec_art.reservering_volgnr);
fmhn.add_xml_element (v_bestand, 'RuimteNr', rec_art.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'));
@@ -12256,7 +12348,7 @@ BEGIN
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, 'Artikelnr', rec_art.art_extern_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);
@@ -12266,7 +12358,7 @@ BEGIN
--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.
@@ -12282,19 +12374,23 @@ BEGIN
--fmhn.delete_npq (p_res_rsv_ruimte_key, rec_art_del.rra_key);
END LOOP;
*/
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>');
END IF;
UPDATE res_rsv_artikel
SET res_rsv_artikel_externsyncdate = SYSDATE
WHERE res_rsv_ruimte_key = p_res_rsv_ruimte_key;
UPDATE res_rsv_artikel
SET res_rsv_artikel_externsyncdate = SYSDATE
WHERE res_rsv_ruimte_key = p_res_rsv_ruimte_key;
COMMIT;
END IF;
END;
/
@@ -12305,21 +12401,24 @@ AS
CURSOR sel_res
IS
SELECT res_rsv_ruimte_key,
res_reservering_key,
reservering_key,
res_rsv_ruimte_volgnr,
last_upd,
last_export,
verw_datum,
alg_ruimte_nr,
ruimte_nr,
besteller,
datum_van,
datum_tot,
oms,
aantal,
locatie_code
locatie_code,
soort,
opstelling,
fo_status
FROM fmhn_v_select_reservering
WHERE aanmk_datum > SYSDATE - 1 -- Alleen nieuwe!
AND (last_export IS NULL OR last_upd > last_export);
AND (last_export IS NULL OR last_upd > last_export OR verw_datum > last_export);
--WHERE last_export IS NULL;
v_base VARCHAR2 (10);
@@ -12336,56 +12435,76 @@ BEGIN
FOR rec IN sel_res
LOOP
v_status := 'ND';
-- 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_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_D';
IF rec.soort = 'ruimte' THEN
-- 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_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_D';
END IF;
IF v_status != 'ND' -- We gaan alleen een XML maken als er 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>');
fmhn.add_xml_element (v_bestand, 'Soort', '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.reservering_key || '/' || rec.res_rsv_ruimte_volgnr);
fmhn.add_xml_element (v_bestand, 'RuimteNr', rec.ruimte_nr);
fmhn.add_xml_element (v_bestand, 'Opstelling', rec.opstelling);
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>');
fmhn_select_objects (rec.res_rsv_ruimte_key, v_counter); -- Kijken of deze reservering ook 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;
ELSE
-- We hebben alleen een losse catering aanvraag
IF (rec.fo_status=2 AND rec.verw_datum IS NULL) OR
(rec.fo_status=1 AND rec.last_export IS NOT NULL
AND rec.verw_datum IS NOT NULL
AND rec.verw_datum > rec.last_export)
THEN
fmhn_select_objects (rec.res_rsv_ruimte_key, v_counter); -- Kijken of deze reservering ook 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;
END IF;
IF v_status != 'ND' -- We gaan alleen een XML maken als er 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>');
fmhn_select_objects (rec.res_rsv_ruimte_key, v_counter); -- Kijken of deze reservering ook 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;
COMMIT;
END;
/
*/
CREATE OR REPLACE VIEW fmhn_v_export_reservering (
result,
result_order,