Files
Customer/BLST/BLST.sql
Norbert Wassink cf2dea76a3 BLST#68755 -- aanpassing verkooporder berichten verkeer
svn path=/Customer/trunk/; revision=53141
2021-09-24 11:03:48 +00:00

3362 lines
140 KiB
SQL
Raw Blame History

/* Formatted on 9-9-2021 10:31:54 (QP5 v5.336) */
--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
-- Voor dbuser invullen: - indien script voor 1 klant is: 'AADS' (de klantcode, zoals vermeld in fac_version_cust)
-- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group)
-- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM'
-- Ook als het script gedraaid wordt voor de verkeerde cust wordt er een logfile gemaakt.
-- (dit in tegenstelling tot sample_xxxx.sql)
DEFINE thisfile = 'BLST.SQL'
DEFINE dbuser = 'BLST'
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 BLST
AS
PROCEDURE prs_ext_mandaten (p_perslid_key IN NUMBER);
PROCEDURE prs_bd_werkplekken (p_perslid_key IN NUMBER);
PROCEDURE add_xml_row (p_bestand IN VARCHAR2, p_regel IN VARCHAR2);
PROCEDURE add_xml_element (p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2);
FUNCTION getAanvraagNr (p_resNr IN VARCHAR2)
RETURN VARCHAR2;
FUNCTION get_SAPid
RETURN VARCHAR2;
FUNCTION getguid
RETURN VARCHAR2;
PROCEDURE add2exportTable (p_res_key IN VARCHAR2,
p_sapid IN VARCHAR2,
p_regel_nr IN NUMBER,
p_artikel_key IN NUMBER,
p_artikel_nr IN VARCHAR2,
p_aantal IN NUMBER,
p_export_type IN VARCHAR2,
p_actie IN VARCHAR2);
PROCEDURE inactivate_prs;
PROCEDURE anonimiseer_bezoeker;
PROCEDURE anonimiseer_mld;
PROCEDURE anonimiseer_prs;
PROCEDURE afmelden_reserveringen;
END;
/
CREATE OR REPLACE PACKAGE BODY BLST
AS
PROCEDURE prs_ext_mandaten (p_perslid_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
CURSOR c IS
SELECT p.prs_perslid_key,
kp.prs_kostenplaats_key,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_omschrijving
FROM prs_perslid p,
prs_v_afdeling_boom ab,
prs_afdeling mandaat,
prs_kostenplaats kp
WHERE p.prs_perslid_key = p_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key1
AND ab.prs_bedrijf_key <> 41
AND ab.prs_afdeling_key2 = mandaat.prs_afdeling_key
AND mandaat.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND mandaat.prs_afdeling_verwijder IS NULL
AND kp.prs_kostenplaats_verwijder IS NULL
AND ( kp.prs_kostenplaats_eind IS NULL
OR TRUNC (kp.prs_kostenplaats_eind) > TRUNC (SYSDATE))
AND NOT EXISTS
(SELECT *
FROM prs_perslidkostenplaats m
WHERE m.prs_kostenplaats_key =
kp.prs_kostenplaats_key
AND m.prs_perslid_key = p.prs_perslid_key);
BEGIN
FOR rec IN C
LOOP
INSERT INTO prs_perslidkostenplaats (
prs_perslid_key,
prs_kostenplaats_key,
prs_perslidkostenplaats_boeken,
prs_perslidkostenplaats_aanmk)
VALUES (rec.prs_perslid_key,
rec.prs_kostenplaats_key,
1,
SYSDATE);
COMMIT;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog ('Mandatering externe medewerker',
'E',
v_errormsg,
'');
END;
PROCEDURE prs_bd_werkplekken (p_perslid_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
CURSOR WP IS
SELECT p.prs_perslid_key, r.alg_ruimte_key
FROM prs_perslid p,
( SELECT g.alg_gebouw_key,
MAX (r.alg_ruimte_key) alg_ruimte_key
FROM alg_gebouw g,
alg_onrgoedkenmerk km,
alg_verdieping v,
alg_ruimte r
WHERE km.alg_onrgoed_niveau = 'G'
AND km.alg_kenmerk_key = 1141
AND km.alg_onrgoedkenmerk_verwijder IS NULL
AND g.alg_gebouw_verwijder IS NULL
AND g.alg_gebouw_key = km.alg_onrgoed_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND r.alg_ruimte_nr = '_000'
AND r.alg_ruimte_verwijder IS NULL
AND v.alg_verdieping_verwijder IS NULL
GROUP BY g.alg_gebouw_key) r
WHERE EXISTS
(SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE ( a.prs_afdeling_parentkey = 21
OR a.prs_afdeling_key = 21)
AND p.prs_afdeling_key =
a.prs_afdeling_key)
AND NOT EXISTS
(SELECT pw.prs_perslid_key
FROM prs_perslidwerkplek pw, prs_werkplek w
WHERE pw.prs_werkplek_key =
w.prs_werkplek_key
AND pw.prs_perslid_key = p.prs_perslid_key
AND w.prs_alg_ruimte_key =
r.alg_ruimte_key)
AND p.prs_perslid_key = p_perslid_key;
BEGIN
FOR rec IN WP
LOOP
v_aanduiding := 'Perslidkey: ' || rec.prs_perslid_key;
v_errorhint :=
'Werkplek koppelen voor perslid: ' || rec.prs_perslid_key;
BEGIN
prs.movetoruimte (rec.prs_perslid_key,
rec.alg_ruimte_key,
'');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
'Toewijzen BD werkplekken',
'E',
'Error '
|| v_aanduiding
|| oracle_err_num
|| '/'
|| oracle_err_mes,
v_errorhint);
END;
END LOOP;
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
blst.add_xml_row (
p_bestand,
'<'
|| p_tag
|| '>'
|| xml.char_to_html (p_value)
|| '</'
|| p_tag
|| '>');
END;
FUNCTION getAanvraagNr (p_resNr IN VARCHAR2)
RETURN VARCHAR2
AS
v_result VARCHAR2 (20) := '159';
v_code VARCHAR2 (40); -- juiste waarde checken
v_codelength NUMBER;
v_maxlength NUMBER := 8;
BEGIN
SELECT ud.fac_usrdata_code
INTO v_code
FROM fac_usrtab ut, FAC_USRDATA ud
WHERE UPPER (ut.fac_usrtab_naam) = 'BLST_SETTINGS'
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND UPPER (ud.fac_usrdata_omschr) = 'SAP_ID';
v_codelength := LENGTH (v_code);
v_result := v_code || LPAD (p_resNr, v_maxlength - v_codelength, '0');
RETURN v_result;
END;
FUNCTION get_SAPid
RETURN VARCHAR2
AS
v_result VARCHAR2 (30);
v_prs_perslid_key NUMBER;
BEGIN
v_result := 'ND';
v_prs_perslid_key := SYS_CONTEXT ('USERENV', 'CLIENT_IDENTIFIER');
--v_prs_perslid_key :=3;
SELECT prs.prs_perslid_oslogin2
INTO v_result
FROM prs_perslid prs
WHERE prs.prs_perslid_key = v_prs_perslid_key;
RETURN v_result;
END;
FUNCTION getguid
RETURN VARCHAR2
AS
v_result VARCHAR2 (100);
BEGIN
v_result := '';
SELECT REGEXP_REPLACE (SYS_GUID (),
'(.{8})(.{4})(.{4})(.{4})(.{12})',
'\1-\2-\3-\4-\5')
INTO v_result
FROM DUAL;
RETURN v_result;
END;
PROCEDURE add2exportTable (p_res_key IN VARCHAR2,
p_sapid IN VARCHAR2,
p_regel_nr IN NUMBER,
p_artikel_key IN NUMBER,
p_artikel_nr IN VARCHAR2,
p_aantal IN NUMBER,
p_export_type IN VARCHAR2,
p_actie IN VARCHAR2)
AS
BEGIN
IF p_actie = 'INS'
THEN
INSERT INTO blst_exp_sap (res_key,
sap_id,
regel_nr,
res_rsv_artikel_key,
artikel_nr,
aantal,
export_type)
VALUES (p_res_key,
p_sapid,
p_regel_nr,
p_artikel_key,
p_artikel_nr,
p_aantal,
p_export_type);
ELSE
UPDATE blst_exp_sap
SET aantal = p_aantal
WHERE res_key = p_res_key
AND res_rsv_artikel_key = p_artikel_key
AND regel_nr = p_regel_nr;
END IF;
COMMIT;
END;
PROCEDURE inactivate_prs
AS
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_perslid_naam VARCHAR (100);
v_perslid_nr VARCHAR (30);
--- Als een persoon 12 maanden niet meer heeft ingelogd verwijderen we deze
CURSOR prs_del IS
SELECT p.prs_perslid_key, p.prs_perslid_oslogin
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_login <
TRUNC (ADD_MONTHS (SYSDATE, -12), 'mm')
GROUP BY p.prs_perslid_key, p.prs_perslid_oslogin;
BEGIN
FOR rec IN prs_del
LOOP
BEGIN
v_errormsg := 'Verwijderen van de persoon is NIET gelukt';
v_errorhint :=
'Heeft de persoon met prs_perslid_key '
|| TO_CHAR (rec.prs_perslid_key)
|| ' historie?';
SELECT prs_perslid_naam_full, prs_perslid_nr
INTO v_perslid_naam, v_perslid_nr
FROM prs_perslid p, prs_v_perslid_fullnames pf
WHERE p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_perslid_key = rec.prs_perslid_key;
-- *** Budgethouderschap ***
-- Voor hoeveel kostenplaatsen is deze persoon budgethouder?
SELECT COUNT (*)
INTO v_count
FROM prs_kostenplaats
WHERE prs_perslid_key = rec.prs_perslid_key;
IF (v_count > 0)
THEN
UPDATE prs_kostenplaats
SET prs_perslid_key = NULL
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.imp_writelog (
'inact_prs',
'I',
'Budgethouderschap van te verwijderen persoon ('
|| v_count
|| ' stuks) vervallen.',
'Naam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
END IF;
-- *** Vervangers ***
-- koppelingen met vervangers dienen ook verwijderd te worden
SELECT COUNT (*)
INTO v_count
FROM prs_collega
WHERE prs_perslid_key = rec.prs_perslid_key
OR prs_perslid_key_alt = rec.prs_perslid_key;
IF (v_count > 0)
THEN
DELETE FROM prs_collega
WHERE prs_perslid_key = rec.prs_perslid_key
OR prs_perslid_key_alt = rec.prs_perslid_key;
fac.imp_writelog (
'inact_prs',
'I',
'Te verwijderen persoon heeft vervanger(s). Koppeling(en) verwijderd.',
'Naam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
END IF;
-- *** werkplekken ***
DELETE prs_perslidwerkplek
WHERE prs_perslid_key = rec.prs_perslid_key;
-- *** Verplichtingen ***
SELECT COUNT (*)
INTO v_count
FROM prs_v_verplichting_refcheck vp
WHERE vp.prs_perslid_key = rec.prs_perslid_key;
IF v_count = 0
THEN
-- Persoon heeft geen enkele (actuele of historische) verplichting
v_errorhint :=
'Verwijderen van persoon met key '
|| TO_CHAR (rec.prs_perslid_key);
-- Referenties in tabellen naar deze pers_perslid_key moeten eerst verwijderd worden.
-- Door cascade verwijderen van deze record onstaan audits op die tabellen die audit tracking hebben.
-- Daardoor onstaan "ORxA-04091:table VLKC.FAC_AUDIT is mutating, trigger/function may not see it" foutmeldingen
-- op de delete van de prs_perslid_key uit de prs_perslid tabel.
-- De tabellen prs_kostenplaats, prs_kostenplaatsgrp, prs_perslidkostenplaats en fac_gebruikersgroep hebben een prs_perslid_key referentie en audit tracking.
DELETE FROM prs_kostenplaats
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM prs_kostenplaatsgrp
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM prs_perslidkostenplaats
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM fac_gebruikersgroep
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM prs_perslid
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.imp_writelog (
'inact_prs',
'I',
'Persoon verwijderd.',
'Achternaam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
ELSE
-- Controleer of er ACTUELE verplichtingen zijn
SELECT COUNT (*)
INTO v_count
FROM prs_v_verplichting_keys vp
WHERE vp.prs_perslid_key = rec.prs_perslid_key;
IF v_count > 0
THEN
UPDATE prs_perslid
SET prs_perslid_naam =
SUBSTR ('INACTIEF:' || prs_perslid_naam,
1,
60),
prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_key = rec.prs_perslid_key
AND prs_perslid_naam NOT LIKE 'INACTIEF:%';
fac.imp_writelog (
'inact_prs',
'I',
'Persoon als INACTIEF gemarkeerd of was al INACTIEF gemarkeerd.',
'Achternaam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
ELSE
BEGIN
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.imp_writelog (
'inact_prs',
'I',
'Persoon ge<67>nactiveerd.',
'Achternaam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
EXCEPTION
WHEN OTHERS
THEN
-- Kennelijk heeft de persoon toch ernstige verplichtingen
v_errorhint :=
'Persoon heeft nog (max. '
|| TO_CHAR (v_count)
|| ') verplichtingen. Naam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr;
fac.imp_writelog (
'inact_prs',
'I',
'Inactiveren persoon is niet gelukt',
v_errorhint);
END;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'(ORACLE error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog ('inact_prs',
'E',
v_errormsg,
v_errorhint);
END;
END LOOP;
END;
PROCEDURE anonimiseer_bezoeker
AS
v_van DATE;
v_tot DATE;
BEGIN
SELECT datum_van
INTO v_van
FROM (SELECT TRUNC (MIN (bez_afspraak_datum)) datum_van
FROM bez_afspraak a
WHERE bez_afspraak_datum < (SYSDATE - 42)
AND NOT EXISTS
(SELECT ft.fac_tracking_key
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey =
bez_afspraak_key
AND ft.fac_srtnotificatie_key =
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code =
'BEZANO')));
SELECT TRUNC (SYSDATE - 42) --- 6 weken dus 6-7
INTO v_tot FROM DUAL;
ano.anonymizebez (v_van, v_tot);
END;
PROCEDURE anonimiseer_mld
AS
v_van DATE;
v_tot DATE;
BEGIN
SELECT datum_van
INTO v_van
FROM (SELECT MIN (TRUNC (m.mld_melding_einddatum)) datum_van
FROM fac_setting s, mld_melding m
WHERE m.mld_melding_status IN (1, 5, 6) -- melding is afgewezen, afgemeld of historisch
AND s.fac_setting_key = 348
AND m.mld_melding_einddatum <
( TRUNC (SYSDATE)
- COALESCE (s.fac_setting_pvalue,
s.fac_setting_default)) -- de melding was gereed voor de anonimiseer periode
AND NOT EXISTS --- nog niet geanonimiseerd
(SELECT ft.fac_tracking_key
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey =
m.mld_melding_key
AND ft.fac_srtnotificatie_key =
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code =
'MLDANO')));
SELECT TRUNC (
SYSDATE
- COALESCE (s.fac_setting_pvalue, s.fac_setting_default))
INTO v_tot
FROM fac_setting s
WHERE s.fac_setting_key = 348;
ano.anonymizemld (v_van, v_tot);
END;
PROCEDURE anonimiseer_prs
AS
v_van DATE;
v_tot DATE;
BEGIN
-- Als een persoon minimaal een jaar geleden verwijderd is anonimiseren we de gegevens
SELECT datum_van
INTO v_van
FROM (SELECT MIN (p.prs_perslid_verwijder) datum_van
FROM prs_v_aanwezigperslid p, fac_setting s
WHERE s.fac_setting_key = 348
AND p.prs_perslid_verwijder <
TRUNC (SYSDATE)
- COALESCE (s.fac_setting_pvalue,
s.fac_setting_default));
SELECT TRUNC (
SYSDATE
- COALESCE (s.fac_setting_pvalue, s.fac_setting_default))
INTO v_tot
FROM fac_setting s
WHERE s.fac_setting_key = 348;
ano.anonymizeprs (v_van, v_tot);
END;
PROCEDURE afmelden_reserveringen
AS
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
CURSOR res_ruimte IS
SELECT res_key
FROM (SELECT res.res_rsv_ruimte_key res_key,
TRUNC (res.res_rsv_ruimte_tot) ruimte_tot,
TRUNC (res.res_rsv_ruimte_tot) + 7 datum_verwerk
FROM res_rsv_ruimte res
WHERE res.res_status_bo_key = 2 --- geregistreerd, nog niet verwerkt
AND res.res_status_fo_key = 2 --- definitef
AND res.res_rsv_ruimte_verwijder IS NULL)
WHERE datum_verwerk <= SYSDATE;
CURSOR res_artikel IS
SELECT res_key, res_artikel_key, art_omschr
FROM (SELECT res.res_rsv_ruimte_key res_key,
art.res_rsv_artikel_key res_artikel_key,
ra.res_artikel_omschrijving art_omschr,
TRUNC (res.res_rsv_ruimte_tot) ruimte_tot,
TRUNC (res.res_rsv_ruimte_tot) + 7 datum_verwerk
FROM res_rsv_ruimte res,
res_rsv_artikel art,
res_artikel ra
WHERE res.res_status_fo_key = 2 --- definitief
AND res.res_status_bo_key IS NULL
AND res.res_rsv_ruimte_verwijder IS NULL
AND art.res_status_bo_key = 2 --- geregistreerd, nog niet verwerkt
AND art.res_rsv_ruimte_key =
res.res_rsv_ruimte_key
AND ra.res_artikel_key = art.res_artikel_key)
WHERE datum_verwerk <= SYSDATE;
BEGIN
FOR rec IN res_ruimte
LOOP
v_errormsg := 'Status update reservering niet gelukt';
v_errorhint := 'Res_rsv_ruimte_key: ' || TO_CHAR (rec.res_key);
UPDATE res_rsv_ruimte
SET res_status_bo_key = 5
WHERE res_rsv_ruimte_key = rec.res_key;
fac.trackaction ('RESUPD',
rec.res_key,
3,
SYSDATE,
'Status reservering naar Afgemeld');
END LOOP;
FOR rec IN res_artikel
LOOP
v_errormsg := 'Status update verbruiksartikel niet gelukt';
v_errorhint :=
'Res_rsv_artikel_key: ' || TO_CHAR (rec.res_artikel_key);
UPDATE res_rsv_artikel
SET res_status_bo_key = 5
WHERE res_rsv_artikel_key = rec.res_artikel_key;
fac.trackaction ('RESUPD',
rec.res_key,
3,
SYSDATE,
'Status ' || rec.art_omschr || ' naar Afgemeld');
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
END;
END;
/
CREATE OR REPLACE VIEW blst_v_rap_catering_bd
(
res_reservering_key,
res_rsv_ruimte_key,
reservering,
datum,
export_datum,
totaal_prijs
)
AS
SELECT res_reservering_key,
res_rsv_ruimte_key,
reservering,
rsv_artikel_levering,
externsyncdate,
totaalprijs
FROM ( SELECT rr.res_reservering_key,
rr.res_rsv_ruimte_key,
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr
reservering,
TRUNC (ra.res_rsv_artikel_levering)
rsv_artikel_levering,
rr.res_rsv_ruimte_externsyncdate
externsyncdate,
SUM (res.getartikelprijs (ra.res_rsv_artikel_key))
totaalprijs
FROM res_rsv_artikel ra,
res_artikel a,
res_discipline d,
res_rsv_ruimte rr
WHERE ra.res_rsv_artikel_verwijder IS NULL
AND a.res_artikel_key = ra.res_artikel_key
AND d.ins_discipline_key = a.res_discipline_key
AND d.ins_discipline_min_level = 2
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
AND UPPER (d.ins_discipline_omschrijving) LIKE '%(BD)%'
GROUP BY rr.res_reservering_key,
rr.res_rsv_ruimte_key,
rr.res_reservering_key
|| '/'
|| rr.res_rsv_ruimte_volgnr,
rr.res_rsv_ruimte_externsyncdate,
TRUNC (ra.res_rsv_artikel_levering));
CREATE OR REPLACE PROCEDURE blst_select_nds_export_new (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR SEL (p_days NUMBER)
IS
SELECT DISTINCT res.res_rsv_ruimte_key res_ruimte_key,
res.res_reservering_key reserveringnr,
res.res_rsv_ruimte_volgnr volgnr,
gb.alg_locatie_omschrijving locatie,
geb.alg_gebouw_code code,
geb.alg_gebouw_omschrijving gebouw,
gb.alg_verdieping_omschrijving verdieping,
gb.alg_ruimte_nr ruimtenr,
gb.alg_ruimte_omschrijving ruimteomsch,
res.res_rsv_ruimte_omschrijving titel,
res.res_rsv_ruimte_van datum_start,
res.res_rsv_ruimte_tot datum_tot,
ros.res_opstelling_omschrijving opstelling,
res.res_rsv_ruimte_opmerking opmerking,
prsh.prs_perslid_naam_friendly HOST,
prsc.prs_perslid_naam_friendly aanvrager,
rac.res_activiteit_omschrijving activiteit
FROM res_rsv_ruimte res,
res_ruimte_opstelling ro,
res_opstelling ros,
res_ruimte rm,
res_alg_ruimte rar,
alg_v_ruimte_gegevens_all gb,
alg_v_gebouw_gegevens geb,
alg_onrgoedkenmerk ken,
prs_v_perslid_fullnames prsh,
prs_v_perslid_fullnames prsc,
res_activiteit rac,
res_srtactiviteit rsa
WHERE res.res_status_bo_key = 2
AND res.res_status_fo_key = 2
AND rac.res_activiteit_key = res.res_activiteit_key
AND rsa.res_srtactiviteit_key = rsa.res_srtactiviteit_key
AND rsa.res_srtactiviteit_soort = 0
AND TRUNC (res.res_rsv_ruimte_van) < TRUNC (SYSDATE + p_days)
AND TRUNC (res.res_rsv_ruimte_van) >= TRUNC (SYSDATE)
AND prsh.prs_perslid_key = res.res_rsv_ruimte_host_key
AND prsc.prs_perslid_key = res.res_rsv_ruimte_contact_key
AND ro.res_ruimte_opstel_key = res.res_ruimte_opstel_key
AND ros.res_opstelling_key = ro.res_opstelling_key
AND rm.res_ruimte_key = ro.res_ruimte_key
AND rar.res_ruimte_key = rm.res_ruimte_key
AND rar.alg_ruimte_key = gb.alg_ruimte_key
AND ken.alg_onrgoed_key = gb.alg_gebouw_key
AND geb.alg_gebouw_key = gb.alg_gebouw_key
AND ken.alg_kenmerk_key = 1081
AND ken.alg_onrgoedkenmerk_waarde = 1;
v_bestand VARCHAR2 (50);
v_base VARCHAR2 (10);
v_guid VARCHAR2 (40);
v_daysC VARCHAR2 (5);
v_days NUMBER := 7;
v_counter NUMBER;
BEGIN
v_base := 'NDS_NEW';
v_bestand := v_base || '-';
v_guid := blst.getguid ();
v_counter := 0;
DELETE FROM fac_rapport -- Opschonen oude NDS exports
WHERE fac_rapport_node LIKE 'NDS_NEW%';
COMMIT;
SELECT ud.fac_usrdata_code
INTO v_daysC
FROM fac_usrtab ut, FAC_USRDATA ud
WHERE UPPER (ut.fac_usrtab_naam) = 'BLST_SETTINGS'
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND UPPER (ud.fac_usrdata_omschr) = 'NDS_EXPORT_DAYS';
v_days := fac.safe_to_number (v_daysC);
blst.add_xml_row (v_bestand,
'<?xml version="1.0" encoding="windows-1252"?>');
blst.add_xml_row (v_bestand, '<Facilitor>');
blst.add_xml_row (v_bestand, '<SOAPEnvelope>');
blst.add_xml_element (v_bestand, 'Action', v_base);
blst.add_xml_element (v_bestand, 'GUID', v_guid);
blst.add_xml_element (v_bestand, 'User', 'FACILITOR');
blst.add_xml_row (v_bestand, '</SOAPEnvelope>');
blst.add_xml_row (v_bestand, '<Reserveringen>');
FOR rec IN SEL (v_days)
LOOP
blst.add_xml_row (v_bestand, '<Reservering>');
blst.add_xml_element (v_bestand,
'Reserveringnummer',
rec.reserveringNr || '/' || rec.volgNr);
blst.add_xml_element (v_bestand, 'Locatie', rec.locatie);
blst.add_xml_element (v_bestand, 'Gebouw', rec.gebouw);
blst.add_xml_element (v_bestand, 'GebouwCode', rec.code);
blst.add_xml_element (v_bestand, 'Verdieping', rec.verdieping);
blst.add_xml_element (v_bestand, 'RuimteNr', rec.ruimteNr);
blst.add_xml_element (v_bestand,
'RuimteOmschrijving',
rec.ruimteOmsch);
blst.add_xml_element (v_bestand, 'Opstelling', rec.opstelling);
blst.add_xml_element (v_bestand, 'Activiteit', rec.activiteit);
blst.add_xml_element (v_bestand,
'Datum',
TO_CHAR (rec.datum_start, 'YYYY/MM/DD'));
blst.add_xml_element (v_bestand,
'Starttijd',
TO_CHAR (rec.datum_start, 'HH24:MI'));
blst.add_xml_element (v_bestand,
'Eindtijd',
TO_CHAR (rec.datum_tot, 'HH24:MI'));
blst.add_xml_element (v_bestand, 'Titel', rec.titel);
blst.add_xml_element (v_bestand, 'Opmerking', rec.opmerking);
blst.add_xml_element (v_bestand, 'Aanvrager', rec.aanvrager);
blst.add_xml_element (v_bestand, 'Gastheer', rec.HOST);
blst.add_xml_row (v_bestand, '</Reservering>');
v_counter := v_counter + 1;
END LOOP;
blst.add_xml_row (v_bestand, '</Reserveringen>');
blst.add_xml_row (v_bestand, '</Facilitor>');
IF v_counter = 0
THEN
-- no data to be exported
DELETE FROM fac_rapport -- Opschonen NDS exports
WHERE fac_rapport_node LIKE 'NDS_NEW%';
COMMIT;
END IF;
END;
/
CREATE OR REPLACE PROCEDURE blst_select_res_vkp_new (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_res_key IN NUMBER,
p_counter IN NUMBER)
AS
--CURSOR sel_sap_export(in_res_key NUMBER) IS
-- SELECT exp.regel_nr regel_nr,
-- exp.artikel_nr artikel_nr,
-- art.res_artikel_omschrijving artikel_omsch,
-- art.res_artikel_prijs art_prijs,
-- exp.aantal aantal,
-- res.res_rsv_ruimte_van datum
-- FROM blst_exp_sap exp, res_artikel art, res_rsv_ruimte res
-- WHERE exp.res_key=in_res_key
-- AND art.res_artikel_nr = exp.artikel_nr
-- AND res.res_rsv_ruimte_key= in_res_key
-- ORDER BY exp.regel_nr;
CURSOR sel_sap_export (in_res_key NUMBER)
IS
SELECT COALESCE (ex.regel_nr, 0) regel_nr,
ex.res_key,
ex.artikel_key,
ex.exp_artikel_key,
art.res_artikel_nr artikel_nr,
COALESCE (ex.exp_aantal, 0) exp_aantal,
ex.art_artikel_key,
COALESCE (ex.art_aantal, 0) aantal,
art.res_artikel_omschrijving artikel_omsch,
art.res_artikel_prijs art_prijs,
ex.art_aantal * art.res_artikel_prijs tot_prijs,
art.res_discipline_key catalogusID,
art.res_artikel_groep groep,
ex.lever_datum datum
FROM (SELECT EXP.res_key,
rart.res_artikel_key artikel_key,
artikel_nr,
EXP.res_rsv_artikel_key exp_artikel_key,
EXP.aantal exp_aantal,
rart.res_rsv_artikel_key art_artikel_key,
rart.res_rsv_artikel_aantal art_aantal,
rart.res_rsv_artikel_levering lever_datum,
EXP.regel_nr regel_nr
FROM blst_exp_Sap EXP
FULL OUTER JOIN res_rsv_artikel rart
ON EXP.res_rsv_artikel_key =
rart.res_rsv_artikel_key
WHERE ( EXP.res_key = in_res_key
OR rart.res_rsv_ruimte_key = in_res_key)) ex,
res_artikel art
WHERE art.res_artikel_key(+) = ex.artikel_key
ORDER BY regel_nr;
v_bestand VARCHAR2 (50);
v_base VARCHAR2 (10);
v_guid VARCHAR2 (40);
v_counter NUMBER;
v_artCounter NUMBER;
v_SAPID VARCHAR2 (30);
v_datum_van DATE;
v_omschrijving res_rsv_ruimte.res_rsv_ruimte_omschrijving%TYPE;
v_besteller prs_v_perslid_fullnames.prs_perslid_naam_friendly%TYPE;
v_debiteurNr prs_kostenplaats.prs_kostenplaats_nr%TYPE;
v_klantRef VARCHAR2 (80);
BEGIN
v_SAPID := '';
v_counter := p_counter;
v_base := 'VKP_NEW';
v_SAPID := blst.get_SAPid ();
SELECT res.res_rsv_ruimte_van
datum_van,
res.res_rsv_ruimte_omschrijving
oms,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = res.res_rsv_ruimte_contact_key)
besteller,
(SELECT prs_kostenplaats_nr
FROM prs_kostenplaats
WHERE prs_kostenplaats_key = res.prs_kostenplaats_key)
debiteurNr,
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde ken
WHERE res_rsv_ruimte_key = p_res_key
AND res_kenmerk_key IN (1, 2, 3))
klantRef -- klantreferentie key bij verschillende activiteten
INTO v_datum_van,
v_omschrijving,
v_besteller,
v_debiteurNr,
v_klantRef
FROM res_rsv_ruimte res
WHERE res.res_rsv_ruimte_key = p_res_key;
v_guid := blst.getguid ();
v_bestand := v_base || '-' || v_counter || '-';
blst.add_xml_row (v_bestand,
'<?xml version="1.0" encoding="windows-1252"?>');
blst.add_xml_row (v_bestand, '<Facilitor>');
blst.add_xml_row (v_bestand, '<SOAPEnvelope>');
blst.add_xml_element (v_bestand, 'Action', v_base);
blst.add_xml_element (v_bestand, 'GUID', v_guid);
blst.add_xml_element (v_bestand, 'User', 'FACILITOR');
blst.add_xml_row (v_bestand, '</SOAPEnvelope>');
blst.add_xml_row (v_bestand, '<Verkooporder_new>');
blst.add_xml_element (v_bestand,
'ReserveringNr',
blst.getAanvraagNr (TO_CHAR (p_res_key)));
blst.add_xml_element (v_bestand, 'Ordersoort', 'ZFMI');
blst.add_xml_element (v_bestand,
'LeverDatum',
TO_CHAR (v_datum_van, 'YYYYMMDD'));
blst.add_xml_element (v_bestand, 'Omschrijving', v_omschrijving);
blst.add_xml_element (v_bestand, 'DebiteurNr', v_debiteurNr);
blst.add_xml_element (v_bestand, 'Besteller', v_besteller);
blst.add_xml_element (v_bestand, 'UserID', v_SAPID);
blst.add_xml_element (v_bestand, 'KlantRef', v_klantRef);
v_artCounter := 1;
FOR exp_sap IN sel_sap_export (p_res_key)
LOOP
blst.add_xml_row (v_bestand, '<Artikel>');
blst.add_xml_element (v_bestand, 'Regelnummer', exp_sap.regel_nr);
blst.add_xml_element (v_bestand, 'ArtikelNr', exp_sap.artikel_nr);
blst.add_xml_element (v_bestand, 'Aantal', exp_sap.aantal);
blst.add_xml_element (v_bestand, 'Conditiesoort', 'ZPRM');
blst.add_xml_element (v_bestand, 'Prijs', exp_sap.art_prijs);
blst.add_xml_element (v_bestand,
'Omschrijving',
exp_sap.artikel_omsch);
blst.add_xml_element (v_bestand,
'Leverdatum',
TO_CHAR (exp_sap.datum, 'YYYYMMDD'));
blst.add_xml_row (v_bestand, '</Artikel>');
v_artCounter := v_artCounter + 1;
END LOOP;
blst.add_xml_row (v_bestand, '</Verkooporder_new>');
blst.add_xml_row (v_bestand, '</Facilitor>');
END;
/
-- PROCEDURE VOOR HET VERSTUREN VN UPDAT BERICHT MBT VERKOOPORDERS
CREATE OR REPLACE PROCEDURE blst_select_res_vkp_upd (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_res_key IN NUMBER,
p_counter IN NUMBER)
AS
--CURSOR sel_sap_export(in_res_key NUMBER) IS
-- SELECT exp.regel_nr regel_nr,
-- exp.artikel_nr artikel_nr,
-- art.res_artikel_omschrijving artikel_omsch,
-- art.res_artikel_prijs art_prijs,
-- exp.aantal aantal,
-- res.res_rsv_ruimte_van datum
-- FROM blst_exp_sap exp, res_artikel art, res_rsv_ruimte res
-- WHERE exp.res_key=in_res_key
-- AND art.res_artikel_nr = exp.artikel_nr
-- AND res.res_rsv_ruimte_key= in_res_key
-- ORDER BY exp.regel_nr;
CURSOR sel_sap_export (in_res_key NUMBER)
IS
SELECT COALESCE (ex.regel_nr, 0) regel_nr,
ex.res_key,
ex.artikel_key,
ex.exp_artikel_key,
art.res_artikel_nr artikel_nr,
COALESCE (ex.exp_aantal, 0) exp_aantal,
ex.art_artikel_key,
COALESCE (ex.art_aantal, 0) aantal,
art.res_artikel_omschrijving artikel_omsch,
COALESCE(ex.art_prijs,0) art_prijs,
ex.art_prijs tot_prijs,
art.res_discipline_key catalogusID,
art.res_artikel_groep groep,
ex.lever_datum datum,
art.res_artikel_prijs art_stam_prijs
FROM (SELECT EXP.res_key,
rart.res_artikel_key artikel_key,
artikel_nr,
EXP.res_rsv_artikel_key exp_artikel_key,
EXP.aantal exp_aantal,
rart.res_rsv_artikel_key art_artikel_key,
rart.res_rsv_artikel_aantal art_aantal,
rart.res_rsv_artikel_prijs art_prijs,
rart.res_rsv_artikel_levering lever_datum,
EXP.regel_nr regel_nr
FROM blst_exp_Sap EXP
FULL OUTER JOIN res_rsv_artikel rart
ON EXP.res_rsv_artikel_key =
rart.res_rsv_artikel_key
WHERE ( EXP.res_key = in_res_key
OR rart.res_rsv_ruimte_key = in_res_key)) ex,
res_artikel art
WHERE art.res_artikel_key(+) = ex.artikel_key
ORDER BY regel_nr;
v_bestand VARCHAR2 (50);
v_base VARCHAR2 (10);
v_guid VARCHAR2 (40);
v_counter NUMBER;
v_artCounter NUMBER;
v_SAPID VARCHAR2 (30);
v_datum_van DATE;
v_omschrijving res_rsv_ruimte.res_rsv_ruimte_omschrijving%TYPE;
v_besteller prs_v_perslid_fullnames.prs_perslid_naam_friendly%TYPE;
v_debiteurNr prs_kostenplaats.prs_kostenplaats_nr%TYPE;
BEGIN
v_SAPID := '';
v_counter := p_counter;
v_base := 'VKP_UPD';
SELECT DISTINCT (sap_id)
INTO v_SAPID
FROM blst_exp_sap
WHERE res_key = p_res_key;
--v_SAPID := blst.get_SAPid();
v_guid := blst.getguid ();
SELECT res.RES_RSV_RUIMTE_VAN
datum_van,
res.res_rsv_ruimte_omschrijving
oms,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = res.res_rsv_ruimte_contact_key)
besteller,
(SELECT prs_kostenplaats_nr
FROM prs_kostenplaats
WHERE prs_kostenplaats_key = res.prs_kostenplaats_key)
debiteurNr
INTO v_datum_van,
v_omschrijving,
v_besteller,
v_debiteurNr
FROM res_rsv_ruimte res
WHERE res.res_rsv_ruimte_key = p_res_key;
v_bestand := v_base || '-' || v_counter || '-';
blst.add_xml_row (v_bestand,
'<?xml version="1.0" encoding="windows-1252"?>');
blst.add_xml_row (v_bestand, '<Facilitor>');
blst.add_xml_row (v_bestand, '<SOAPEnvelope>');
blst.add_xml_element (v_bestand, 'Action', v_base);
blst.add_xml_element (v_bestand, 'GUID', v_guid);
blst.add_xml_element (v_bestand, 'User', 'FACILITOR');
blst.add_xml_row (v_bestand, '</SOAPEnvelope>');
blst.add_xml_row (v_bestand, '<Verkooporder_upd>');
blst.add_xml_element (v_bestand,
'ReserveringNr',
blst.getAanvraagNr (TO_CHAR (p_res_key)));
blst.add_xml_element (v_bestand, 'StatusCode', 'W');
blst.add_xml_element (v_bestand, 'Ordersoort', 'ZFMI');
blst.add_xml_element (v_bestand,
'LeverDatum',
TO_CHAR (v_datum_van, 'YYYYMMDD'));
blst.add_xml_element (v_bestand, 'Omschrijving', v_omschrijving);
blst.add_xml_element (v_bestand, 'DebiteurNr', v_debiteurNr);
blst.add_xml_element (v_bestand, 'Besteller', v_besteller);
blst.add_xml_element (v_bestand, 'UserID', v_SAPID);
FOR exp_sap IN sel_sap_export (p_res_key)
LOOP
blst.add_xml_row (v_bestand, '<Artikel>');
blst.add_xml_element (v_bestand, 'Regelnummer', exp_sap.regel_nr);
blst.add_xml_element (v_bestand, 'ArtikelNr', exp_sap.artikel_nr);
blst.add_xml_element (v_bestand, 'Aantal', exp_sap.aantal);
blst.add_xml_element (v_bestand, 'Conditiesoort', 'ZPRM');
IF exp_sap.art_prijs>0 AND exp_sap.aantal>0
THEN
blst.add_xml_element (v_bestand, 'Prijs', exp_sap.art_prijs/exp_sap.aantal);
ELSE
blst.add_xml_element (v_bestand, 'Prijs', exp_sap.art_stam_prijs);
END IF;
blst.add_xml_element (v_bestand,
'Omschrijving',
exp_sap.artikel_omsch);
blst.add_xml_element (v_bestand,
'Leverdatum',
TO_CHAR (exp_sap.datum, 'YYYYMMDD'));
blst.add_xml_row (v_bestand, '</Artikel>');
v_artCounter := v_artCounter + 1;
END LOOP;
blst.add_xml_row (v_bestand, '</Verkooporder_upd>');
blst.add_xml_row (v_bestand, '</Facilitor>');
END;
/
CREATE OR REPLACE PROCEDURE blst_select_res_vkp_fac (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR sel_res_fac IS
SELECT res.res_rsv_ruimte_key res_key, res.res_status_bo_key bo_status_key -- ophalen reserveringen van ruimte voor externe klant
FROM res_rsv_ruimte res, prs_kostenplaats kstp
WHERE res.res_status_bo_key = 5 -- afgemeld
AND res.res_status_fo_key = 2
AND res.res_rsv_ruimte_verwijder IS NULL
AND res.res_rsv_ruimte_externsyncdate IS NOT NULL
AND kstp.prs_kostenplaats_key = res.prs_kostenplaats_key
AND kstp.prs_kostenplaats_extern = 1
UNION ALL
SELECT DISTINCT(res.res_rsv_ruimte_key) res_key, res.res_status_bo_key bo_status_key -- ophalen losse catering aanvragen voor externe klant
FROM res_rsv_ruimte res, res_rsv_artikel art, prs_kostenplaats kstp
WHERE res.res_status_fo_key = 2
AND res.res_status_bo_key IS NULL
AND res.res_rsv_ruimte_verwijder IS NULL
AND res.res_rsv_ruimte_externsyncdate IS NOT NULL
AND art.res_rsv_ruimte_key = res.res_rsv_ruimte_key
AND art.res_status_bo_key = 5
AND kstp.prs_kostenplaats_key = res.prs_kostenplaats_key
AND kstp.prs_kostenplaats_extern = 1;
v_bestand VARCHAR2 (50);
v_base VARCHAR2 (10);
v_guid VARCHAR2 (40);
v_counter NUMBER;
v_SAPID VARCHAR2 (30);
BEGIN
v_SAPID := '';
v_base := 'VKP_FAC';
v_guid := blst.getguid ();
v_counter := 1;
DELETE FROM fac_rapport -- Opschonen oude Verkooporders tbv Facturatie
WHERE fac_rapport_node LIKE 'VKP_FAC%';
FOR rec IN sel_res_fac
LOOP
v_bestand := v_base || '-' || v_counter || '-';
blst.add_xml_row (v_bestand,
'<?xml version="1.0" encoding="windows-1252"?>');
blst.add_xml_row (v_bestand, '<Facilitor>');
blst.add_xml_row (v_bestand, '<SOAPEnvelope>');
blst.add_xml_element (v_bestand, 'Action', v_base);
blst.add_xml_element (v_bestand, 'GUID', v_guid);
blst.add_xml_element (v_bestand, 'User', 'FACILITOR');
blst.add_xml_row (v_bestand, '</SOAPEnvelope>');
blst.add_xml_row (v_bestand, '<Verkooporder_fac>');
blst.add_xml_element (v_bestand,
'ReserveringNr',
blst.getAanvraagNr (TO_CHAR (rec.res_key)));
blst.add_xml_element (v_bestand, 'StatusCode', 'B');
blst.add_xml_row (v_bestand, '</Verkooporder_fac>');
blst.add_xml_row (v_bestand, '</Facilitor>');
v_counter := v_counter + 1;
IF rec.bo_status_key IS NOT NULL -- deze check zorgt er voor dat de er geen RES_C_RES_RUIMTE_VOORZIENING contraint violation optreed bij losse catering
THEN
UPDATE res_rsv_ruimte
SET res_status_bo_key = 6
WHERE res_rsv_ruimte_key = rec.res_key; -- Set BO status naar Verwerkt (6)
END IF;
UPDATE res_rsv_artikel
SET res_status_bo_key = 6
WHERE res_rsv_ruimte_key = rec.res_key; -- set status van bestelde artikelen ook op verwerkt (6)
COMMIT;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE blst_select_res_vkp_del (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_res_key IN NUMBER,
p_counter IN NUMBER)
AS
--CURSOR sel_sap_export(in_res_key NUMBER) IS
-- SELECT exp.regel_nr regel_nr,
-- exp.artikel_nr artikel_nr,
-- art.res_artikel_omschrijving artikel_omsch,
-- art.res_artikel_prijs art_prijs,
-- exp.aantal aantal,
-- res.res_rsv_ruimte_van datum
-- FROM blst_exp_sap exp, res_artikel art, res_rsv_ruimte res
-- WHERE exp.res_key=in_res_key
-- AND art.res_artikel_nr = exp.artikel_nr
-- AND res.res_rsv_ruimte_key= in_res_key
-- ORDER BY exp.regel_nr;
CURSOR sel_sap_export (in_res_key NUMBER)
IS
SELECT COALESCE (ex.regel_nr, 0) regel_nr,
ex.res_key,
ex.artikel_key,
ex.exp_artikel_key,
art.res_artikel_nr artikel_nr,
COALESCE (ex.exp_aantal, 0) exp_aantal,
ex.art_artikel_key,
COALESCE (ex.art_aantal, 0) aantal,
art.res_artikel_omschrijving artikel_omsch,
art.res_artikel_prijs art_prijs,
ex.art_aantal * art.res_artikel_prijs tot_prijs,
art.res_discipline_key catalogusID,
art.res_artikel_groep groep,
ex.lever_datum datum
FROM (SELECT EXP.res_key,
rart.res_artikel_key artikel_key,
artikel_nr,
EXP.res_rsv_artikel_key exp_artikel_key,
EXP.aantal exp_aantal,
rart.res_rsv_artikel_key art_artikel_key,
rart.res_rsv_artikel_aantal art_aantal,
rart.res_rsv_artikel_levering lever_datum,
EXP.regel_nr regel_nr
FROM blst_exp_Sap EXP
FULL OUTER JOIN res_rsv_artikel rart
ON EXP.res_rsv_artikel_key =
rart.res_rsv_artikel_key
WHERE ( EXP.res_key = in_res_key
OR rart.res_rsv_ruimte_key = in_res_key)) ex,
res_artikel art
WHERE art.res_artikel_key(+) = ex.artikel_key
ORDER BY regel_nr;
v_bestand VARCHAR2 (50);
v_base VARCHAR2 (10);
v_guid VARCHAR2 (40);
v_counter NUMBER;
v_artCounter NUMBER;
v_SAPID VARCHAR2 (30);
v_datum_van DATE;
v_omschrijving res_rsv_ruimte.res_rsv_ruimte_omschrijving%TYPE;
v_besteller prs_v_perslid_fullnames.prs_perslid_naam_friendly%TYPE;
v_debiteurNr prs_kostenplaats.prs_kostenplaats_nr%TYPE;
BEGIN
v_SAPID := '';
v_counter := p_counter;
v_base := 'VKP_DEL';
SELECT DISTINCT (sap_id)
INTO v_SAPID
FROM blst_exp_sap
WHERE res_key = p_res_key;
-- v_SAPID := blst.get_SAPid();
v_guid := blst.getguid ();
SELECT res.RES_RSV_RUIMTE_VAN
datum_van,
res.res_rsv_ruimte_omschrijving
oms,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = res.res_rsv_ruimte_contact_key)
besteller,
(SELECT prs_kostenplaats_nr
FROM prs_kostenplaats
WHERE prs_kostenplaats_key = res.prs_kostenplaats_key)
debiteurNr
INTO v_datum_van,
v_omschrijving,
v_besteller,
v_debiteurNr
FROM res_rsv_ruimte res
WHERE res.res_rsv_ruimte_key = p_res_key;
v_bestand := v_base || '-' || v_counter || '-';
blst.add_xml_row (v_bestand,
'<?xml version="1.0" encoding="windows-1252"?>');
blst.add_xml_row (v_bestand, '<Facilitor>');
blst.add_xml_row (v_bestand, '<SOAPEnvelope>');
blst.add_xml_element (v_bestand, 'Action', v_base);
blst.add_xml_element (v_bestand, 'GUID', v_guid);
blst.add_xml_element (v_bestand, 'User', 'FACILITOR');
blst.add_xml_row (v_bestand, '</SOAPEnvelope>');
blst.add_xml_row (v_bestand, '<Verkooporder_upd>');
blst.add_xml_element (v_bestand,
'ReserveringNr',
blst.getAanvraagNr (TO_CHAR (p_res_key)));
blst.add_xml_element (v_bestand, 'StatusCode', 'W');
blst.add_xml_element (v_bestand, 'Ordersoort', 'ZFMI');
blst.add_xml_element (v_bestand,
'LeverDatum',
TO_CHAR (v_datum_van, 'YYYYMMDD'));
blst.add_xml_element (v_bestand, 'Omschrijving', v_omschrijving);
blst.add_xml_element (v_bestand, 'DebiteurNr', v_debiteurNr);
blst.add_xml_element (v_bestand, 'Besteller', v_besteller);
blst.add_xml_element (v_bestand, 'UserID', v_SAPID);
FOR exp_sap IN sel_sap_export (p_res_key)
LOOP
blst.add_xml_row (v_bestand, '<Artikel>');
blst.add_xml_element (v_bestand, 'Regelnummer', exp_sap.regel_nr);
blst.add_xml_element (v_bestand, 'ArtikelNr', exp_sap.artikel_nr);
blst.add_xml_element (v_bestand, 'Aantal', exp_sap.aantal);
blst.add_xml_element (v_bestand, 'Conditiesoort', 'ZPRM');
blst.add_xml_element (v_bestand, 'Prijs', exp_sap.art_prijs);
blst.add_xml_element (v_bestand,
'Omschrijving',
exp_sap.artikel_omsch);
blst.add_xml_element (v_bestand,
'Leverdatum',
TO_CHAR (exp_sap.datum, 'YYYYMMDD'));
blst.add_xml_row (v_bestand, '</Artikel>');
v_artCounter := v_artCounter + 1;
END LOOP;
blst.add_xml_row (v_bestand, '</Verkooporder_upd>');
blst.add_xml_row (v_bestand, '</Facilitor>');
END;
/
CREATE OR REPLACE VIEW blst_v_select_cat_res
AS
SELECT DISTINCT
res.res_rsv_ruimte_key
res_key,
res.res_reservering_key,
res.res_rsv_ruimte_volgnr,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = res.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 108)
last_upd,
res.res_rsv_ruimte_externsyncdate
last_export,
res.res_rsv_ruimte_verwijder
delete_date,
alg.alg_ruimte_nr
ruimte,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1071)
straat, -- alg_gebouw kenmerk tbv straat
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1120)
nummer, -- alg_gebouw kenmerk tbv nummer
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1072)
postcode, -- alg_gebouw kenmerk tbv postciode
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1073)
plaats, -- alg_gebouw kenmerk tbv plaats
(SELECT gb.alg_gebouw_code
FROM alg_gebouw gb
WHERE gb.alg_gebouw_key = alg.alg_gebouw_key)
gebouw,
res.RES_RSV_RUIMTE_VAN
datum_van,
res.RES_RSV_RUIMTE_TOT
datum_tot,
res.res_rsv_ruimte_omschrijving
oms,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = res.res_rsv_ruimte_contact_key)
besteller,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = res.res_rsv_ruimte_contact_key)
userId,
kstp.prs_kostenplaats_nr
debiteurNr,
kstp.prs_kostenplaats_extern
extern,
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde ken
WHERE res_rsv_ruimte_key = res.res_rsv_ruimte_key
AND res_kenmerk_key IN (21,
22,
23,
24,
25,
26))
wensen,
res.res_rsv_ruimte_cat_appr
approved
FROM res_rsv_ruimte res,
res_rsv_artikel rar,
res_ruimte_opstelling rop,
res_ruimte rer,
res_alg_ruimte rarm,
alg_v_ruimte_gegevens_all alg,
prs_kostenplaats kstp
WHERE res.res_status_bo_key = 2
AND res.res_status_fo_key = 2
AND res.res_rsv_ruimte_verwijder IS NULL
AND rar.res_rsv_ruimte_key = res.res_rsv_ruimte_key
AND res.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 kstp.prs_kostenplaats_key = res.prs_kostenplaats_key
UNION ALL
SELECT DISTINCT
res.res_rsv_ruimte_key
res_key,
res.res_reservering_key,
res.res_rsv_ruimte_volgnr,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = res.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 108)
last_upd,
res.res_rsv_ruimte_externsyncdate
last_export,
res.res_rsv_ruimte_verwijder
delete_date,
alg.alg_ruimte_nr
ruimte,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1071)
straat, -- alg_gebouw kenmerk tbv straat
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1120)
nummer, -- alg_gebouw kenmerk tbv nummer
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1072)
postcode, -- alg_gebouw kenmerk tbv postciode
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1073)
plaats, -- alg_gebouw kenmerk tbv plaats
(SELECT gb.alg_gebouw_code
FROM alg_gebouw gb
WHERE gb.alg_gebouw_key = alg.alg_gebouw_key)
gebouw,
res.RES_RSV_RUIMTE_VAN
datum_van,
res.RES_RSV_RUIMTE_TOT
datum_tot,
COALESCE(res.res_rsv_ruimte_omschrijving,'Catering ')
oms,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = res.res_rsv_ruimte_contact_key)
besteller,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = res.res_rsv_ruimte_contact_key)
userId,
kstp.prs_kostenplaats_nr
debiteurNr,
kstp.prs_kostenplaats_extern
extern,
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde ken
WHERE res_rsv_ruimte_key = res.res_rsv_ruimte_key
AND res_kenmerk_key IN (21,
22,
23,
24,
25,
26))
wensen,
res.res_rsv_ruimte_cat_appr
approved
FROM res_rsv_ruimte res,
res_rsv_artikel rar,
alg_v_ruimte_gegevens_all alg,
prs_kostenplaats kstp
WHERE res.res_status_fo_key = 2
AND res.res_rsv_ruimte_verwijder IS NULL
AND rar.res_rsv_ruimte_key = res.res_rsv_ruimte_key
AND alg.ALG_RUIMTE_KEY = res.ALG_RUIMTE_KEY
AND kstp.prs_kostenplaats_key = res.prs_kostenplaats_key
ORDER BY res_key;
-- PROCEDURE VOOR HET VERSTUREN NIEUW BERICHT MBT INKOOPORDERS
CREATE OR REPLACE PROCEDURE blst_select_res_ikp_new (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR sel_res_new (p_horizon NUMBER)
IS
SELECT res_key,
res_reservering_key,
res_rsv_ruimte_volgnr,
last_upd,
last_export,
ruimte,
straat,
COALESCE (nummer, '0') nummer,
postcode,
plaats,
gebouw,
datum_van,
datum_tot,
oms,
besteller,
userId,
debiteurNr,
extern,
wensen,
approved
FROM blst_v_select_cat_res
WHERE last_export IS NULL AND datum_van < SYSDATE + 7; -- p_horizon even voor test op 7 gezet
CURSOR sel_art (in_res_key NUMBER)
IS
SELECT rar.res_artikel_key,
rar.res_rsv_artikel_key,
art.res_artikel_prijs * rar.res_rsv_artikel_aantal
tot_prijs,
art.res_artikel_nr,
art.res_artikel_omschrijving,
art.res_artikel_prijs
artikel_prijs,
art.res_artikel_inkoopprijs inkoop_prijs,
art.res_artikel_inkoopprijs * rar.res_rsv_artikel_aantal
tot_inkp_prijs,
art.res_artikel_btw,
rar.res_rsv_artikel_aantal,
rar.res_rsv_artikel_levering,
art.res_discipline_key,
art.res_artikel_groep,
COALESCE (cat.ins_discipline_externnr, 'NB')
catalogusID,
rar.res_rsv_artikel_approved
FROM res_rsv_artikel rar, res_artikel art, ins_tab_discipline cat
WHERE rar.res_rsv_ruimte_key = in_res_key
AND art.res_artikel_key = rar.res_artikel_key
AND cat.ins_discipline_key = art.res_discipline_key;
v_bestand VARCHAR2 (50);
v_base VARCHAR2 (10);
v_guid VARCHAR2 (40);
v_counter NUMBER;
v_artCounter NUMBER;
v_SAPID VARCHAR2 (30);
v_LevNr VARCHAR2 (50);
v_totalPrice NUMBER;
V_today DATE;
v_exportDate DATE;
v_horizon NUMBER;
v_approved NUMBER := 0;
v_approvedCount NUMBER := 0;
v_dayOfWeek VARCHAR2 (10) := 0;
v_feestdagen NUMBER := 0;
v_kenmerk_key NUMBER;
BEGIN
v_SAPID := '';
v_counter := 1;
v_base := 'IKP_NEW';
v_totalPrice := 0;
v_SAPID := blst.get_SAPid ();
SELECT SYSDATE INTO v_today FROM DUAL;
v_horizon := 7;
-- Wijziging horizon opvragen van alle catalogi met kostensoort catering en mee geven aan de cursor rec
-- SWI: er wordt niet gekeken naar kostensoort maar activiteitsoort catering, kostensoort is allleen tbv catering met fiattering
-- SWI: Door hier MIN te kiezen ipv MAX weet je zeker dat je alle catering meepakt die niet meer gewijzigd mag worden
SELECT MIN (rdp.res_disc_params_expire_dagen)
INTO v_horizon
FROM res_discipline dis,
res_activiteitdiscipline rad,
res_activiteit ra,
res_disc_params rdp
WHERE dis.ins_discipline_key = rad.res_discipline_key
AND rad.res_activiteit_key = ra.res_activiteit_key
AND ra.res_srtactiviteit_key = 10 -- CATERING
AND rdp.res_ins_discipline_key = dis.ins_discipline_key;
-- bepaal dag van de week
SELECT TO_CHAR (SYSDATE, 'D') INTO v_DayOfWeek FROM DUAL;
-- NWA: Bepalen of er feestdagen zitten de tussen nu rn nu+v_horizon
SELECT COUNT (*)
INTO v_feestdagen
FROM mld_vrije_dagen vd
WHERE vd.mld_vrije_dagen_datum BETWEEN SYSDATE AND SYSDATE + v_horizon;
-- NWA: Hoe om te gaan met de feestdagen
v_horizon := v_horizon + v_feestdagen;
IF v_dayOfWeek = '5' OR v_dayOfWeek = '6' -- als dag = donderdag(5) of vrijdag(6) dan er 2 bij optellen om over het weekend te kijken !
THEN
v_horizon := v_horizon + 2;
END IF;
FOR rec IN sel_res_new (v_horizon)
LOOP
BEGIN
v_approved := 0;
IF rec.approved = 1
THEN
-- check of all artikelen een res_rsv_artikel_approved=1 hebben;
-- SWI: Per ruimteregel geeft RES_RSV_RUIMTE_CAT_APPR aan of de gehele catering gefiatteerd dient te worden {0=Nee | 1=Ja}
SELECT COUNT (*)
INTO v_approvedCount
FROM res_rsv_artikel rra
WHERE rra.res_rsv_ruimte_key = rec.res_key
AND rra.res_rsv_artikel_approved <> 1;
IF v_approvedCount > 0
THEN
v_approved := 0; -- er zijn artikelen die niet goedgekeurd/afgewezen zijn dus deze reservering niet exporteren, fiattering hiervan op 2 zetten (afgewezen)
UPDATE res_rsv_artikel rra
SET rra.res_rsv_artikel_approved = 2
WHERE rra.res_rsv_ruimte_key = rec.res_key;
ELSE
v_approved := 1;
END IF;
ELSE
v_approved := 1;
END IF;
IF v_approved = 1
THEN
v_guid := blst.getguid ();
V_totalPrice := 0;
v_bestand := v_base || '-' || v_counter || '-';
blst.add_xml_row (
v_bestand,
'<?xml version="1.0" encoding="windows-1252"?>');
blst.add_xml_row (v_bestand, '<Facilitor>');
blst.add_xml_row (v_bestand, '<SOAPEnvelope>');
blst.add_xml_element (v_bestand, 'Action', v_base);
blst.add_xml_element (v_bestand, 'GUID', v_guid);
blst.add_xml_element (v_bestand, 'User', 'FACILITOR');
blst.add_xml_row (v_bestand, '</SOAPEnvelope>');
blst.add_xml_row (v_bestand, '<Inkooporder_new>');
blst.add_xml_row (v_bestand, '<Header>');
blst.add_xml_element (
v_bestand,
'ReserveringNr',
blst.getAanvraagNr (TO_CHAR (rec.res_key)));
blst.add_xml_element (v_bestand, 'Aanmaakdatum', v_today);
blst.add_xml_row (v_bestand, '</Header>');
COMMIT;
v_kenmerk_key := 0;
SELECT ken.res_kenmerk_key
INTO v_kenmerk_key
FROM res_rsv_ruimte res,
res_kenmerk ken,
res_srtkenmerk skn
WHERE res_rsv_ruimte_key = rec.res_key
AND ken.res_activiteit_key = res.res_activiteit_key
AND ken.res_srtkenmerk_key = skn.RES_SRTKENMERK_KEY
AND skn.res_srtkenmerk_upper = 'SAP ORDERNR'; -- srtkenmerk naam 'SAP ORDERNR'
IF v_kenmerk_key > 0
THEN
flx.setflex('RES', v_kenmerk_key, rec.res_key, blst.getAanvraagNr(TO_CHAR(rec.res_key)));
-- SELECT res_kenmerkwaarde_key
-- INTO v_kenmerkwaarde_key
-- FROM res_kenmerkwaarde where res_kenmerk_key=v_kenmerk_key
-- AND res_rsv_ruimte_key=rec.res_key;
-- IF v_kenm
-- INSERT INTO res_kenmerkwaarde (
-- res_kenmerk_key,
-- res_rsv_ruimte_key,
-- res_kenmerkreservering_waarde)
-- VALUES (
-- v_kenmerk_key,
-- rec.res_key,
-- blst.getAanvraagNr (TO_CHAR (rec.res_key)));
END IF;
blst.add_xml_element (
v_bestand,
'ReserveringNr',
blst.getAanvraagNr (TO_CHAR (rec.res_key)));
blst.add_xml_element (v_bestand,
'Omschrijving',
SUBSTR (rec.oms, 0, 40));
blst.add_xml_element (v_bestand, 'Wensen', rec.wensen);
BEGIN
SELECT lev.prs_leverancier_nr
INTO v_levnr
FROM res_rsv_artikel rar,
res_artikel art,
res_disc_params dsp,
prs_bedrijf lev
WHERE rar.res_rsv_ruimte_key = rec.res_key
AND art.res_artikel_key = rar.res_artikel_key
AND dsp.res_ins_discipline_key =
art.res_discipline_key
AND lev.prs_bedrijf_key = dsp.prs_bedrijf_key
FETCH FIRST 1 ROW ONLY;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_levNr := 'NB';
END;
blst.add_xml_element (v_bestand, 'LeverancierNr', v_LevNr);
blst.add_xml_element (v_bestand, 'LeverancierType', 'LEV');
blst.add_xml_element (v_bestand, 'Besteller', rec.debiteurNr);
blst.add_xml_element (v_bestand, 'UserID', v_SAPID);
blst.add_xml_row (v_bestand, '<AfleverAdres>');
blst.add_xml_element (v_bestand, 'RuimteId', rec.ruimte);
blst.add_xml_element (v_bestand, 'LandCode', 'NL');
blst.add_xml_element (v_bestand, 'Postcode', rec.postcode);
blst.add_xml_element (v_bestand, 'Plaats', rec.plaats);
blst.add_xml_element (v_bestand, 'Straat', rec.straat);
blst.add_xml_element (v_bestand, 'Nr', rec.nummer);
blst.add_xml_element (v_bestand, 'Gebouw', rec.gebouw);
blst.add_xml_row (v_bestand, '</AfleverAdres>');
v_artCounter := 1;
FOR rec_art IN sel_art (rec.res_key)
LOOP
blst.add_xml_row (v_bestand, '<Item>');
blst.add_xml_element (v_bestand,
'Regelnummer',
v_artCounter);
blst.add_xml_element (v_bestand, 'Actie', '01');
blst.add_xml_element (v_bestand,
'ArtikelNr',
rec_art.res_artikel_nr);
blst.add_xml_element (v_bestand,
'Aantal',
rec_art.res_rsv_artikel_aantal);
blst.add_xml_element (v_bestand, 'Conditiesoort', 'ZPRM');
blst.add_xml_element (v_bestand,
'Prijs',
rec_art.tot_prijs);
blst.add_xml_element (v_bestand,
'InkTotPrijs',
rec_art.tot_inkp_prijs);
blst.add_xml_element (v_bestand,
'ArtikelPrijs',
rec_art.artikel_prijs);
blst.add_xml_element (v_bestand,
'InkoopPrijs',
rec_art.inkoop_prijs);
blst.add_xml_element (v_bestand,
'Omschrijving',
rec_art.res_artikel_omschrijving);
blst.add_xml_element (v_bestand,
'LeverDatum',
rec.datum_van);
blst.add_xml_element (v_bestand,
'TechnischeKey',
'Technisch materiaal'); -- kan komen te vervallen
blst.add_xml_element (v_bestand, 'Leverancier', v_LevNr);
blst.add_xml_element (v_bestand, 'Artikelsoort', '1');
blst.add_xml_element (v_bestand,
'CatalogusID',
rec_art.catalogusID);
blst.add_xml_element (v_bestand,
'Groep',
rec_art.res_artikel_groep);
blst.add_xml_element (v_bestand,
'StartDatum',
rec_art.res_rsv_artikel_levering);
blst.add_xml_element (v_bestand,
'EindDatum',
rec.datum_tot);
v_totalPrice := v_totalPrice + rec_art.tot_prijs;
blst.add_xml_row (v_bestand, '</Item>');
blst.add2exportTable (rec.res_key,
v_SAPID,
v_artCounter,
rec_art.res_rsv_artikel_key,
rec_art.res_artikel_nr,
rec_art.res_rsv_artikel_aantal,
'INKOOP',
'INS');
v_artCounter := v_artCounter + 1;
END LOOP;
IF rec.extern = 1
THEN
blst_select_res_vkp_new ('SAP_EXPORT',
'',
rec.res_key,
v_counter);
END IF;
COMMIT;
blst.add_xml_element (v_bestand, 'TotaalPrijs', v_totalPrice);
blst.add_xml_row (v_bestand, '</Inkooporder_new>');
blst.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_key;
END IF;
END;
END LOOP;
END;
/
-- PROCEDURE VOOR HET VERSTUREN UPDATE BERICHT MBT INKOOPORDERS
-- Als update dan zoek reservering op, wie is de besteller en welke catalogus heeft de user rechten met het bijbehorende artikelnr die dan toevoegen.
CREATE OR REPLACE PROCEDURE blst_select_res_ikp_upd (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR sel_res_upd(p_horizon NUMBER) IS
SELECT res_key,
res_reservering_key,
res_rsv_ruimte_volgnr,
last_upd,
last_export,
ruimte,
straat,
COALESCE (nummer, '0') nummer,
postcode,
plaats,
gebouw,
datum_van,
datum_tot,
oms,
besteller,
userId,
debiteurNr,
extern,
wensen,
approved
FROM blst_v_select_cat_res
WHERE last_export IS NOT NULL AND last_upd > last_export AND datum_van < SYSDATE + 7; -- p_horizon even voor test op 7 gezet;
CURSOR sel_art (in_res_key NUMBER)
IS
SELECT COALESCE (ex.regel_nr, 0) exp_regel_nr,
ex.res_key,
ex.artikel_key,
ex.exp_artikel_key,
art.res_artikel_nr artikel_nr,
COALESCE (ex.exp_aantal, 0) exp_aantal,
ex.art_artikel_key,
COALESCE (ex.art_aantal, 0) art_aantal,
art.res_artikel_omschrijving artikel_omschrijving,
art.res_artikel_prijs artikel_prijs,
ex.art_aantal * art.res_artikel_prijs tot_prijs,
art.res_discipline_key catalogusID,
art.res_artikel_groep groep,
ex.lever_datum
FROM (SELECT EXP.res_key,
rart.res_artikel_key artikel_key,
artikel_nr,
EXP.res_rsv_artikel_key exp_artikel_key,
EXP.aantal exp_aantal,
rart.res_rsv_artikel_key art_artikel_key,
rart.res_rsv_artikel_aantal art_aantal,
rart.res_rsv_artikel_levering lever_datum,
EXP.regel_nr regel_nr
FROM blst_exp_Sap EXP
FULL OUTER JOIN res_rsv_artikel rart
ON EXP.res_rsv_artikel_key =
rart.res_rsv_artikel_key
WHERE ( EXP.res_key = in_res_key
OR rart.res_rsv_ruimte_key = in_res_key)) ex,
res_artikel art
WHERE art.res_artikel_key(+) = ex.artikel_key
ORDER BY exp_regel_nr;
v_bestand VARCHAR2 (50);
v_action VARCHAR2 (10);
v_base VARCHAR2 (10);
v_guid VARCHAR2 (40);
v_counter NUMBER;
v_artCounter NUMBER;
v_regels NUMBER;
v_SAPID VARCHAR2 (30);
v_LevNr VARCHAR2 (50);
v_totalPrice NUMBER;
V_today DATE;
v_dummy VARCHAR2 (10);
v_count NUMBER;
v_actionCode VARCHAR2 (6);
v_approved NUMBER := 0;
v_approvedCount NUMBER := 0;
v_horizon NUMBER;
v_dayOfWeek VARCHAR2 (10) := 0;
v_feestdagen NUMBER := 0;
BEGIN
v_SAPID := '';
v_counter := 1;
v_regels := 0;
v_base := 'IKP_UPD';
-- KIJK OF ER RES ZIJN MET WIJZIGINGEN,
-- BEPAAL OF RES OOK ARTIKELWIJZIGINGE HEEFT GEHAD
-- INDIEN JA VERGELIJK MET blst_EXP_SAP WAT ER VERANDERD IS.
v_totalPrice := 0;
-- v_SAPID := blst.get_SAPid();
SELECT SYSDATE INTO v_today FROM DUAL;
v_horizon := 7;
-- Wijziging horizon opvragen van alle catalogi met kostensoort catering en mee geven aan de cursor rec
-- SWI: er wordt niet gekeken naar kostensoort maar activiteitsoort catering, kostensoort is allleen tbv catering met fiattering
-- SWI: Door hier MIN te kiezen ipv MAX weet je zeker dat je alle catering meepakt die niet meer gewijzigd mag worden
SELECT MIN (rdp.res_disc_params_expire_dagen)
INTO v_horizon
FROM res_discipline dis,
res_activiteitdiscipline rad,
res_activiteit ra,
res_disc_params rdp
WHERE dis.ins_discipline_key = rad.res_discipline_key
AND rad.res_activiteit_key = ra.res_activiteit_key
AND ra.res_srtactiviteit_key = 10 -- CATERING
AND rdp.res_ins_discipline_key = dis.ins_discipline_key;
-- bepaal dag van de week
SELECT TO_CHAR (SYSDATE, 'D') INTO v_DayOfWeek FROM DUAL;
-- NWA: Bepalen of er feestdagen zitten de tussen nu rn nu+v_horizon
SELECT COUNT (*)
INTO v_feestdagen
FROM mld_vrije_dagen vd
WHERE vd.mld_vrije_dagen_datum BETWEEN SYSDATE AND SYSDATE + v_horizon;
-- NWA: Hoe om te gaan met de feestdagen
v_horizon := v_horizon + v_feestdagen;
IF v_dayOfWeek = '5' OR v_dayOfWeek = '6' -- als dag = donderdag(5) of vrijdag(6) dan er 2 bij optellen om over het weekend te kijken !
THEN
v_horizon := v_horizon + 2;
END IF;
FOR rec IN sel_res_upd (v_horizon)
LOOP
BEGIN
v_approved := 0;
IF rec.approved = 1
THEN
-- check of all artikelen een res_rsv_artikel_approved=1 hebben;
-- SWI: Per ruimteregel geeft RES_RSV_RUIMTE_CAT_APPR aan of de gehele catering gefiatteerd dient te worden {0=Nee | 1=Ja}
SELECT COUNT (*)
INTO v_approvedCount
FROM res_rsv_artikel rra
WHERE rra.res_rsv_ruimte_key = rec.res_key
AND rra.res_rsv_artikel_approved <> 1;
IF v_approvedCount > 0
THEN
v_approved := 0; -- er zijn artikelen die niet goedgekeurd/afgewezen zijn dus deze reservering niet exporteren, fiattering hiervan op 2 zetten (afgewezen)
UPDATE res_rsv_artikel rra
SET rra.res_rsv_artikel_approved = 2
WHERE rra.res_rsv_ruimte_key = rec.res_key;
ELSE
v_approved := 1;
END IF;
ELSE
v_approved := 1;
END IF;
IF v_approved=1
THEN
SELECT DISTINCT (sap_id)
INTO v_SAPID
FROM blst_exp_sap
WHERE res_key = rec.res_key;
v_guid := blst.getguid ();
V_totalPrice := 0;
v_bestand := v_base || '-' || v_counter || '-';
blst.add_xml_row (
v_bestand,
'<?xml version="1.0" encoding="windows-1252"?>');
blst.add_xml_row (v_bestand, '<Facilitor>');
blst.add_xml_row (v_bestand, '<SOAPEnvelope>');
blst.add_xml_element (v_bestand, 'Action', v_base);
blst.add_xml_element (v_bestand, 'GUID', v_guid);
blst.add_xml_element (v_bestand, 'User', 'FACILITOR');
blst.add_xml_row (v_bestand, '</SOAPEnvelope>');
blst.add_xml_row (v_bestand, '<Inkooporder_upd>');
blst.add_xml_row (v_bestand, '<Header>');
blst.add_xml_element (v_bestand,
'ReserveringNr',
blst.getAanvraagNr (TO_CHAR (rec.res_key)));
blst.add_xml_element (v_bestand, 'Aanmaakdatum', v_today);
blst.add_xml_row (v_bestand, '</Header>');
blst.add_xml_element (v_bestand,
'ReserveringNr',
blst.getAanvraagNr (TO_CHAR (rec.res_key)));
blst.add_xml_element (v_bestand, 'Omschrijving', rec.oms);
SELECT lev.prs_leverancier_nr
INTO v_LevNr
FROM res_rsv_artikel rar,
res_artikel art,
res_disc_params dsp,
prs_bedrijf lev
WHERE rar.res_rsv_ruimte_key = rec.res_key
AND art.res_artikel_key = rar.res_artikel_key
AND dsp.RES_INS_DISCIPLINE_KEY = art.RES_DISCIPLINE_KEY
AND lev.prs_bedrijf_key = dsp.prs_bedrijf_key
FETCH FIRST 1 ROW ONLY;
blst.add_xml_element (v_bestand, 'LeverancierNr', v_LevNr);
blst.add_xml_element (v_bestand, 'LeverancierType', 'LEV');
blst.add_xml_element (v_bestand, 'Besteller', rec.debiteurNr);
blst.add_xml_element (v_bestand, 'UserID', v_SAPID);
blst.add_xml_row (v_bestand, '<AfleverAdres>');
blst.add_xml_element (v_bestand, 'RuimteId', rec.ruimte);
blst.add_xml_element (v_bestand, 'LandCode', 'NL');
blst.add_xml_element (v_bestand, 'Postcode', rec.postcode);
blst.add_xml_element (v_bestand, 'Plaats', rec.plaats);
blst.add_xml_element (v_bestand, 'Straat', rec.straat);
blst.add_xml_element (v_bestand, 'Nr', rec.nummer);
blst.add_xml_element (v_bestand, 'Gebouw', rec.gebouw);
blst.add_xml_row (v_bestand, '</AfleverAdres>');
SELECT COUNT (*)
INTO v_regels
FROM blst_exp_sap
WHERE res_key = rec.res_key;
v_artCounter := 1;
FOR rec_art IN sel_art (rec.res_key)
LOOP
blst.add_xml_row (v_bestand, '<Item>');
IF rec_art.exp_regel_nr = 0 -- NIEUW ARTIKEL BIJ RESERVERING
THEN
IF v_artCounter <= v_regels
THEN
v_artcounter := v_regels;
END IF;
v_artCounter := v_artCounter + 1;
blst.add_xml_element (v_bestand,
'Regelnummer',
v_artCounter);
v_action := 'INS';
blst.add2exportTable (rec.res_key,
v_SAPID,
v_artCounter,
rec_art.artikel_key,
rec_art.artikel_nr,
rec_art.art_aantal,
'INKOOP',
v_action);
v_actionCode := '01';
ELSE
blst.add_xml_element (v_bestand,
'Regelnummer',
rec_art.exp_regel_nr);
v_action := 'UPD';
blst.add2exportTable (rec.res_key,
v_SAPID,
rec_art.exp_regel_nr,
rec_art.exp_artikel_key,
rec_art.artikel_nr,
rec_art.art_aantal,
'INKOOP',
v_action);
IF rec_art.art_aantal = 0
THEN
v_actionCode := '03';
ELSE
v_actionCode := '02';
END IF;
END IF;
blst.add_xml_element (v_bestand,
'Aantal',
rec_art.art_aantal);
blst.add_xml_element (v_bestand, 'Actie', v_actionCode);
blst.add_xml_element (v_bestand,
'ArtikelNr',
rec_art.artikel_nr);
blst.add_xml_element (v_bestand, 'Conditiesoort', 'ZPRM');
blst.add_xml_element (v_bestand, 'Prijs', rec_art.tot_prijs);
blst.add_xml_element (v_bestand,
'ArtikelPrijs',
rec_art.artikel_prijs);
blst.add_xml_element (v_bestand,
'Omschrijving',
rec_art.artikel_omschrijving);
blst.add_xml_element (v_bestand, 'LeverDatum', rec.datum_van);
blst.add_xml_element (v_bestand,
'TechnischeKey',
'Technisch materiaal'); -- kan komen te vervallen
blst.add_xml_element (v_bestand, 'Leverancier', v_LevNr);
blst.add_xml_element (v_bestand, 'Artikelsoort', '1');
blst.add_xml_element (v_bestand,
'CatalogusID',
rec_art.catalogusID);
blst.add_xml_element (v_bestand, 'Groep', rec_art.groep);
blst.add_xml_element (v_bestand,
'StartDatum',
rec_art.lever_datum);
blst.add_xml_element (v_bestand, 'EindDatum', rec.datum_tot);
blst.add_xml_row (v_bestand, '</Item>');
v_totalPrice := v_totalPrice + rec_art.tot_prijs;
END LOOP;
IF rec.extern = 1
THEN
v_dummy := 'TEST';
blst_select_res_vkp_upd ('SAP_EXPORT',
'',
rec.res_key,
v_counter);
END IF;
COMMIT;
blst.add_xml_element (v_bestand, 'TotaalPrijs', v_totalPrice);
blst.add_xml_row (v_bestand, '</Inkooporder_upd>');
blst.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_key;
END IF;
END;
END LOOP;
END;
/
-- Kijk of er RES die verwijderd zijn
-- Indien JA zet alle blst_exp_sap aantal op 0;
CREATE OR REPLACE PROCEDURE blst_select_res_ikp_del (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR sel_res_upd IS
SELECT res_key,
res_reservering_key,
res_rsv_ruimte_volgnr,
last_upd,
last_export,
delete_date,
ruimte,
straat,
COALESCE (nummer, '0') nummer,
postcode,
plaats,
gebouw,
datum_van,
datum_tot,
oms,
besteller,
userId,
debiteurNr,
extern,
wensen
FROM blst_v_select_cat_res
WHERE last_export IS NOT NULL
AND delete_date IS NOT NULL
AND delete_date > last_export;
CURSOR sel_art (in_res_key NUMBER)
IS
SELECT COALESCE (ex.regel_nr, 0) exp_regel_nr,
ex.res_key,
ex.artikel_key,
ex.exp_artikel_key,
art.res_artikel_nr artikel_nr,
COALESCE (ex.exp_aantal, 0) exp_aantal,
ex.art_artikel_key,
COALESCE (ex.art_aantal, 0) art_aantal,
art.res_artikel_omschrijving artikel_omschrijving,
art.res_artikel_prijs artikel_prijs,
ex.art_aantal * art.res_artikel_prijs tot_prijs,
art.res_discipline_key catalogusID,
art.res_artikel_groep groep,
ex.lever_datum
FROM (SELECT EXP.res_key,
rart.res_artikel_key artikel_key,
artikel_nr,
EXP.res_rsv_artikel_key exp_artikel_key,
EXP.aantal exp_aantal,
rart.res_rsv_artikel_key art_artikel_key,
rart.res_rsv_artikel_aantal art_aantal,
rart.res_rsv_artikel_levering lever_datum,
EXP.regel_nr regel_nr
FROM blst_exp_Sap EXP
FULL OUTER JOIN res_rsv_artikel rart
ON EXP.res_rsv_artikel_key =
rart.res_rsv_artikel_key
WHERE ( EXP.res_key = in_res_key
OR rart.res_rsv_ruimte_key = in_res_key)) ex,
res_artikel art
WHERE art.res_artikel_key(+) = ex.artikel_key
ORDER BY exp_regel_nr;
v_bestand VARCHAR2 (50);
v_action VARCHAR2 (10);
v_base VARCHAR2 (10);
v_guid VARCHAR2 (40);
v_counter NUMBER;
v_artCounter NUMBER;
v_regels NUMBER;
v_SAPID VARCHAR2 (30);
v_LevNr VARCHAR2 (50);
v_totalPrice NUMBER;
V_today DATE;
v_dummy VARCHAR2 (10);
v_count NUMBER;
BEGIN
v_SAPID := '';
v_counter := 1;
v_regels := 0;
v_base := 'IKP_DEL';
v_totalPrice := 0;
-- v_SAPID := blst.get_SAPid();
SELECT SYSDATE INTO v_today FROM DUAL;
FOR rec IN sel_res_upd
LOOP
BEGIN
SELECT DISTINCT (sap_id)
INTO v_SAPID
FROM blst_exp_sap
WHERE res_key = rec.res_key;
v_guid := blst.getguid ();
V_totalPrice := 0;
v_bestand := v_base || '-' || v_counter || '-';
blst.add_xml_row (
v_bestand,
'<?xml version="1.0" encoding="windows-1252"?>');
blst.add_xml_row (v_bestand, '<Facilitor>');
blst.add_xml_row (v_bestand, '<SOAPEnvelope>');
blst.add_xml_element (v_bestand, 'Action', v_base);
blst.add_xml_element (v_bestand, 'GUID', v_guid);
blst.add_xml_element (v_bestand, 'User', 'FACILITOR');
blst.add_xml_row (v_bestand, '</SOAPEnvelope>');
blst.add_xml_row (v_bestand, '<Inkooporder_upd>');
blst.add_xml_row (v_bestand, '<Header>');
blst.add_xml_element (v_bestand,
'ReserveringNr',
blst.getAanvraagNr (TO_CHAR (rec.res_key)));
blst.add_xml_element (v_bestand, 'Aanmaakdatum', v_today);
blst.add_xml_row (v_bestand, '</Header>');
blst.add_xml_element (v_bestand,
'ReserveringNr',
blst.getAanvraagNr (TO_CHAR (rec.res_key)));
blst.add_xml_element (v_bestand, 'Omschrijving', rec.oms);
SELECT lev.PRS_LEVERANCIER_NR
INTO v_LevNr
FROM res_rsv_artikel rar,
res_artikel art,
res_disc_params dsp,
prs_bedrijf lev
WHERE rar.res_rsv_ruimte_key = rec.res_key
AND art.res_artikel_key = rar.res_artikel_key
AND dsp.RES_INS_DISCIPLINE_KEY = art.RES_DISCIPLINE_KEY
AND lev.prs_bedrijf_key = dsp.prs_bedrijf_key
FETCH FIRST 1 ROW ONLY;
blst.add_xml_element (v_bestand, 'LeverancierNr', v_LevNr);
blst.add_xml_element (v_bestand, 'LeverancierType', 'LEV');
blst.add_xml_element (v_bestand, 'Besteller', rec.debiteurNr);
blst.add_xml_element (v_bestand, 'UserID', v_SAPID);
blst.add_xml_row (v_bestand, '<AfleverAdres>');
blst.add_xml_element (v_bestand, 'RuimteId', rec.ruimte);
blst.add_xml_element (v_bestand, 'LandCode', 'NL');
blst.add_xml_element (v_bestand, 'Postcode', rec.postcode);
blst.add_xml_element (v_bestand, 'Plaats', rec.plaats);
blst.add_xml_element (v_bestand, 'Straat', rec.straat);
blst.add_xml_element (v_bestand, 'Nr', rec.nummer);
blst.add_xml_element (v_bestand, 'Gebouw', rec.gebouw);
blst.add_xml_row (v_bestand, '</AfleverAdres>');
SELECT COUNT (*)
INTO v_regels
FROM blst_exp_sap
WHERE res_key = rec.res_key;
v_artCounter := 1;
FOR rec_art IN sel_art (rec.res_key)
LOOP
blst.add_xml_row (v_bestand, '<Item>');
blst.add_xml_element (v_bestand, 'Aantal', 0);
blst.add_xml_element (v_bestand, 'Actie', '03');
blst.add_xml_element (v_bestand,
'ArtikelNr',
rec_art.artikel_nr);
blst.add_xml_element (v_bestand, 'Conditiesoort', 'ZPRM');
blst.add_xml_element (v_bestand, 'Prijs', rec_art.tot_prijs); -- deze mischien ook op 0 zetten
blst.add_xml_element (v_bestand,
'ArtikelPrijs',
rec_art.artikel_prijs);
blst.add_xml_element (v_bestand,
'Omschrijving',
rec_art.artikel_omschrijving);
blst.add_xml_element (v_bestand, 'LeverDatum', rec.datum_van);
blst.add_xml_element (v_bestand,
'TechnischeKey',
'Technisch materiaal');
blst.add_xml_element (v_bestand, 'Leverancier', v_LevNr);
blst.add_xml_element (v_bestand, 'Artikelsoort', '1');
blst.add_xml_element (v_bestand, 'CatalogusID', 'CATERING');
blst.add_xml_element (v_bestand, 'Groep', rec_art.groep);
blst.add_xml_element (v_bestand,
'StartDatum',
rec_art.lever_datum);
blst.add_xml_element (v_bestand, 'EindDatum', rec.datum_tot);
blst.add_xml_row (v_bestand, '</Item>');
blst.add2exportTable (rec.res_key,
v_SAPID,
rec_art.exp_regel_nr,
rec_art.exp_artikel_key,
rec_art.artikel_nr,
0,
'INKOOP',
'UPD');
v_totalPrice := v_totalPrice + 0;
END LOOP;
IF rec.extern = 1
THEN
blst_select_res_vkp_del ('SAP_EXPORT',
'',
rec.res_key,
v_counter);
END IF;
COMMIT;
blst.add_xml_element (v_bestand, 'TotaalPrijs', v_totalPrice);
blst.add_xml_row (v_bestand, '</Inkooporder_upd>');
blst.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_key;
END;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE blst_select_sap_export_new (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
DELETE FROM fac_rapport -- Opschonen oude Inkooporders
WHERE fac_rapport_node LIKE 'IKP_NEW%';
DELETE FROM fac_rapport -- Opschonen oude Verkooporders
WHERE fac_rapport_node LIKE 'VKP_NEW%';
COMMIT;
blst_select_res_ikp_new ('SAP_EXPORT_NEW', '');
END;
/
CREATE OR REPLACE PROCEDURE blst_select_sap_export_upd (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
DELETE FROM fac_rapport -- Opschonen oude gewijzigde Inkooporders
WHERE fac_rapport_node LIKE 'IKP_UPD%';
DELETE FROM fac_rapport -- Opschonen oude verwijderde Inkooporders
WHERE fac_rapport_node LIKE 'IKP_DEL%';
DELETE FROM fac_rapport -- Opschonen oude gewijzigde Verkooporders
WHERE fac_rapport_node LIKE 'VKP_UPD%';
DELETE FROM fac_rapport -- Opschonen oude verwijderde Verkooporders
WHERE fac_rapport_node LIKE 'VKP_DEL%';
COMMIT;
blst_select_res_ikp_upd ('SAP_EXPORT_UPD', ''); -- Kijken of er gewijzigde reserveringen zijn
blst_select_res_ikp_del ('SAP_EXPORT_UPD', ''); -- kijken of er verwijderde reserveringen zijn,
blst_select_res_vkp_fac ('SAP_EXPORT_UPD', ''); -- verkoop facturen klaarzetten
END;
/
CREATE OR REPLACE VIEW blst_v_export_nds_export_new
(
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node LIKE 'NDS_NEW%';
CREATE OR REPLACE VIEW blst_v_export_sap_export_new
(
result,
result_order,
exp_sap_new
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'IKP_NEW%'
UNION ALL
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'VKP_NEW%';
CREATE OR REPLACE VIEW blst_v_export_sap_export_upd
(
result,
result_order,
exp_sap_upd
)
AS
-- SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
-- FROM fac_rapport
-- WHERE fac_rapport_node LIKE 'IKP_UPD%'
-- UNION ALL
-- SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
-- FROM fac_rapport
-- WHERE fac_rapport_node LIKE 'IKP_DEL%'
-- UNION ALL
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'VKP_UPD%'
UNION ALL
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'VKP_DEL%'
UNION ALL
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'VKP_FAC%';
CREATE OR REPLACE VIEW blst_v_export_res_vkp_new
(
result,
result_order,
vkp_new
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'VKP_NEW%';
CREATE OR REPLACE VIEW blst_v_export_res_vkp_upd
(
result,
result_order,
vkp_upd
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'VKP_UPD%';
CREATE OR REPLACE VIEW blst_v_export_res_vkp_fac
(
result,
result_order,
vkp_fac
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'VKP_FAC%';
CREATE OR REPLACE VIEW blst_v_export_res_ikp_new
(
result,
result_order,
ikp_new
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'IKP_NEW%';
CREATE OR REPLACE VIEW blst_v_export_res_ikp_upd
(
result,
result_order,
ikp_upd
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'IKP_UPD%';
CREATE OR REPLACE PROCEDURE BLST_IMPORT_SAP_IMPORT (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
header_is_valid NUMBER;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_newline VARCHAR2 (4000);
v_ongeldig NUMBER (1) := 0; -- 0= Goed, 1= Error, 2=Waarschuwing
v_reskey NUMBER;
v_sapnr_str VARCHAR2 (50);
v_res_key NUMBER;
v_regelnr_str VARCHAR2 (50);
v_regelnr NUMBER;
v_actioncode_str VARCHAR2 (50);
v_artikelnr_str VARCHAR2 (50);
v_aantal_str VARCHAR2 (50);
v_aantal NUMBER;
v_prijs_str VARCHAR2 (50);
v_prijs NUMBER;
v_nettoprijs_str VARCHAR2 (50);
v_nettoprijs NUMBER;
v_leverdatum_str VARCHAR2 (50);
v_leverdatum DATE;
v_aanduiding VARCHAR2 (4000);
CURSOR c1 IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
header_is_valid := 0;
DELETE FROM blst_imp_sap;
v_aanduiding := 'Start inlees process';
COMMIT;
FOR rec IN c1
LOOP
BEGIN
v_aanduiding := 'Lees regel';
v_newline := rec.fac_imp_file_line;
v_aanduiding := 'Lees velden in';
fac.imp_getfield (v_newline, c_delim, v_sapnr_str);
fac.imp_getfield (v_newline, c_delim, v_regelnr_str);
fac.imp_getfield (v_newline, c_delim, v_actioncode_str);
fac.imp_getfield (v_newline, c_delim, v_artikelnr_str);
fac.imp_getfield (v_newline, c_delim, v_aantal_str);
fac.imp_getfield (v_newline, c_delim, v_prijs_str);
fac.imp_getfield (v_newline, c_delim, v_nettoprijs_str);
fac.imp_getfield (v_newline, c_delim, v_leverdatum_str);
v_aanduiding := 'Valideer Headers';
IF (header_is_valid = 0)
THEN
IF UPPER (TRIM (v_sapnr_str)) = 'SAPNR'
AND UPPER (TRIM (v_regelnr_str)) = 'REGELNR'
AND UPPER (TRIM (v_actioncode_str)) = 'ACTIONCODE'
AND UPPER (TRIM (v_artikelnr_str)) = 'ARTIKELNR'
AND UPPER (TRIM (v_aantal_str)) = 'AANTAL'
AND UPPER (TRIM (v_prijs_str)) = 'PRIJS'
AND UPPER (TRIM (v_nettoprijs_str)) = 'NETTOPRIJS'
AND UPPER (TRIM (v_leverdatum_str)) = 'LEVERDATUM'
THEN
header_is_valid := 1;
END IF;
ELSE
v_aanduiding := 'Converteer res_key voor ' || v_sapnr_str;
v_res_key :=
fac.safe_to_number (
SUBSTR (v_sapnr_str, 4, LENGTH (v_sapnr_str)));
IF v_res_key > 0
THEN
v_ongeldig := 0;
ELSE
v_ongeldig := 1;
v_errormsg :=
'Fout bij converteren SAPNr [' || v_aanduiding || ']';
END IF;
v_aanduiding := 'Converteer regelnr voor ' || v_sapnr_str;
v_regelnr := fac.safe_to_number (v_regelnr_str);
IF v_regelnr < 0
THEN
v_ongeldig := 1;
v_errormsg :=
'Fout bij converteren regelnr ['
|| v_aanduiding
|| ']';
END IF;
v_aanduiding := 'Converteer aantal voor ' || v_sapnr_str;
v_aantal := fac.safe_to_number (v_aantal_str);
IF v_aantal < 0
THEN
v_ongeldig := 1;
v_errormsg :=
'Fout bij converteren aantal ['
|| v_aanduiding
|| ']';
END IF;
v_aanduiding := 'Converteer prijs voor ' || v_sapnr_str;
v_prijs := fac.safe_to_number (v_prijs_str);
v_nettoprijs := fac.safe_to_number (v_nettoprijs_str);
v_aanduiding := 'Converteer leverdatum voor ' || v_sapnr_str;
v_leverdatum :=
fac.safe_to_date (v_leverdatum_str,
'DD-MM-YYYY hh:mm:ss');
IF v_ongeldig = 0
THEN
BEGIN
v_aanduiding := 'Insert ' || v_sapnr_str;
v_ongeldig := 0; -- WEGGOOIEN
INSERT INTO BLST_IMP_SAP (res_key,
regel_nr,
actioncode,
artikel_nr,
aantal,
prijs,
inkoopprijs,
leverdatum)
VALUES (v_res_key,
v_regelnr,
v_actioncode_str,
v_artikelnr_str,
v_aantal,
v_prijs,
v_nettoprijs,
v_leverDatum);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Fout bij toevoegen regel aan importtabel SAP_IMPORT.');
END;
ELSE
IF (v_ongeldig = 2)
THEN
fac.imp_writelog (p_import_key,
'W',
v_errormsg,
'');
ELSE
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'');
END IF;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig SAP importbestand',
'Geen header of header niet volgens specificatie!');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_aanduiding || v_errormsg, 1, 1000),
'Inleesproces opdrachtstatusberichten afgebroken!');
END;
/
-- Als update dan zoek reservering op, wie is de besteller en welke catalogus heeft de user rechten met het bijbehorende artikelnr die dan toevoegen.
CREATE OR REPLACE PROCEDURE BLST_UPDATE_SAP_IMPORT (p_import_key IN NUMBER)
AS
CURSOR sel IS
SELECT imp.res_key res_key,
imp.regel_nr regel_nr,
imp.actioncode actioncode,
imp.aantal imp_aantal,
imp.artikel_nr imp_artikel_nr,
imp.prijs prijs,
imp.inkoopprijs inkoopprijs,
imp.leverdatum leverdatum,
COALESCE (
(SELECT res_rsv_artikel_key
FROM blst_exp_sap
WHERE res_key = imp.res_key
AND artikel_nr = imp.artikel_nr),
0) art_key,
COALESCE (
(SELECT aantal exp_aantal
FROM blst_exp_sap
WHERE res_key = imp.res_key
AND artikel_Nr(+) = imp.artikel_nr),
0) exp_aantal,
res.res_status_fo_key,
res.res_status_bo_key
FROM blst_imp_sap imp, res_rsv_ruimte res
WHERE res.res_rsv_ruimte_key = imp.res_key
AND ( res.res_status_fo_key = 2
AND ( COALESCE (res.res_status_bo_key, 0) = 0
OR res.res_status_bo_key = 2))
ORDER BY imp.res_key, imp.regel_nr;
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_mutatie NUMBER := 0;
v_res_key NUMBER;
v_aanduiding VARCHAR2 (1000) := '';
v_artikel_key NUMBER := 0;
v_extern NUMBER (1);
v_prijs NUMBER (9,2);
v_kostensoort VARCHAR2(60);
BEGIN
FOR rec IN sel
LOOP
v_mutatie := 0;
v_aanduiding := 'Geen acties voor SAP IMPORT';
v_errorhint := 'SAP IMPORT';
-- check of de resrevereing voor een extern kosten plaats is
SELECT kstp.prs_kostenplaats_extern
INTO v_extern
FROM res_rsv_ruimte rrr, prs_kostenplaats kstp
WHERE rrr.res_rsv_ruimte_key=rec.res_key
AND kstp.prs_kostenplaats_key = rrr.prs_kostenplaats_key;
-- check wekje kostensoort de catalogus heeft
SELECT art.prs_kostensoort_oms
INTO v_kostensoort
FROM res_rsv_ruimte res,
prs_perslid pp,
fac_gebruikersgroep fgg,
fac_groep fg,
fac_groeprechten fgr,
ins_tab_discipline itd,
(SELECT *
FROM res_artikel ra, res_discipline rd, prs_kostensoort k
WHERE ra.res_artikel_nr=rec.imp_artikel_nr
AND ra.res_artikel_verwijder IS NULL
AND rd.ins_discipline_key = ra.res_discipline_key
AND rd.prs_kostensoort_key = k.prs_kostensoort_key(+)) art
WHERE res.res_rsv_ruimte_key= rec.res_key
AND pp.prs_perslid_key= res.res_rsv_ruimte_contact_key
AND fgg.prs_perslid_key = pp.prs_perslid_key
AND fg.fac_groep_key = fgg.fac_groep_key
AND fgr.fac_groep_key = fg.fac_groep_key
AND itd.ins_discipline_key = fgr.ins_discipline_key
AND itd.ins_discipline_key = art.ins_discipline_key;
IF v_extern=0 AND INSTR(UPPER(v_kostensoort),'CATERING EXCL')>0
THEN
v_prijs := rec.inkoopprijs; -- netto prijs
ELSE
v_prijs := rec.prijs; -- bruto prijs
END IF;
IF rec.actioncode = '02'
THEN
-- TODO : update moet niet alleen aantal maar ok inkoop prije en prijs van artikel in res_rsv_artikel updaten
UPDATE res_rsv_artikel
SET res_rsv_artikel_aantal = rec.imp_aantal, res_rsv_artikel_prijs=v_prijs * rec.imp_aantal -- res_rsv_artikel is de totaal prijs
WHERE res_rsv_ruimte_key = rec.res_key
AND res_rsv_artikel_key = rec.art_key;
v_mutatie := 1;
v_aanduiding :=
'SAP import: bestelaantal van artikelNr '
|| rec.imp_artikel_nr
|| ' gewijzigid naar '
|| rec.imp_aantal
|| ' en prijs aangepast naar '
|| v_prijs;
fac.trackaction ('RESUPD',
rec.res_key,
3,
SYSDATE,
v_aanduiding);
ELSIF rec.actioncode = '01'
THEN
SELECT art.res_artikel_key
INTO v_artikel_key
FROM res_rsv_ruimte res,
prs_perslid pp,
fac_gebruikersgroep fgg,
fac_groep fg,
fac_groeprechten fgr,
ins_tab_discipline itd,
(SELECT *
FROM res_artikel ra, res_discipline rd
WHERE ra.res_artikel_nr=rec.imp_artikel_nr
AND ra.res_artikel_verwijder IS NULL
AND rd.ins_discipline_key = ra.res_discipline_key) art
WHERE res.res_rsv_ruimte_key= rec.res_key
AND pp.prs_perslid_key= res.res_rsv_ruimte_contact_key
AND fgg.prs_perslid_key = pp.prs_perslid_key
AND fg.fac_groep_key = fgg.fac_groep_key
AND fgr.fac_groep_key = fg.fac_groep_key
AND itd.ins_discipline_key = fgr.ins_discipline_key
AND itd.ins_discipline_key = art.ins_discipline_key;
IF v_artikel_key > 0
THEN
-- Artikel is gevonden
INSERT INTO res_rsv_artikel (res_artikel_key,
res_rsv_artikel_aantal,
res_status_bo_key,
res_rsv_ruimte_key,
res_rsv_artikel_prijs,
res_rsv_artikel_approved,
res_rsv_artikel_levering)
VALUES (v_artikel_key,
rec.imp_aantal,
2,
rec.res_key,
v_prijs,
1,
rec.leverdatum);
v_aanduiding :=
'SAP import: Artikel toegevoegd'
|| rec.imp_artikel_nr
|| ' met aantal '
|| rec.imp_aantal
|| ' en prijs '
|| v_prijs;
fac.trackaction ('RESUPD',
rec.res_key,
3,
SYSDATE,
v_aanduiding);
END IF;
ELSE
UPDATE res_rsv_artikel
SET res_rsv_artikel_aantal = 0
WHERE res_rsv_ruimte_key = rec.res_key
AND res_rsv_artikel_key = rec.art_key;
v_aanduiding :=
'SAP import: Artikel verwijder' || rec.imp_artikel_nr;
fac.trackaction ('RESUPD',
rec.res_key,
3,
SYSDATE,
v_aanduiding);
END IF;
fac.imp_writelog (p_import_key,
'S',
v_aanduiding,
v_errorhint);
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg || v_aanduiding,
v_errorhint);
END;
/
CREATE OR REPLACE VIEW BLST_V_RAP_EXP_CATERING
AS
SELECT DISTINCT
r.sap_ordernr,
r.res_key
res_rsv_ruimte_key,
r.res_reservering_key,
r.res_reservering_key || '/' || r.res_rsv_ruimte_volgnr
reservering,
ra.res_status_bo_key
status_key,
bs.res_status_bo_omschrijving
status_omschrijving,
cat.ins_discipline_omschrijving
catalogus,
cat.ins_discipline_externnr
externnr,
TO_CHAR (r.datum_van, 'DD-MM-YYYY')
leverdatum,
TO_CHAR (r.datum_van, 'HH24:MI')
levertijd,
cat_set.res_disc_params_expire_dagen
wijzigingshorizon,
cat_set.res_disc_params_expire_tijd
grens_wijzigingshorizon,
TO_CHAR ((r.datum_van - cat_set.res_disc_params_expire_dagen),
'DD-MM-YYYY')
|| ' '
|| cat_set.res_disc_params_expire_tijd
|| ' uur'
sluiting_wijz_horizon,
cat_set.res_disc_params_cancel_dagen
annuleringshorizon,
TO_CHAR ((r.datum_van - cat_set.res_disc_params_cancel_dagen),
'DD-MM-YYYY')
sluiting_ann_horizon,
a.res_artikel_nr,
a.res_artikel_omschrijving,
a.res_artikel_prijs
eenh_prijs,
ra.res_rsv_artikel_aantal
aantal,
res.getartikelprijs (ra.res_rsv_artikel_key)
tot_bedrag,
CASE
WHEN r.approved = 1 THEN 'Fiattering vereist'
ELSE 'Geen fiattering'
END
AS fiat_nodig,
DECODE (ra.res_rsv_artikel_approved,
0, 'Niet gefiatteerd',
1, 'Goedgekeurd',
2, 'Afgewezen',
'Onbekend')
art_gefiat,
cat_set.res_disc_params_threshold
fiatterings_drempel,
b.prs_bedrijf_naam
leverancier,
b.prs_leverancier_nr
leveranciersnr,
r.straat,
r.nummer,
r.postcode,
r.plaats,
r.gebouw,
r.besteller,
r.debiteurnr,
DECODE (r.extern, '1', 'Extern', 'Intern')
int_ext,
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde ken
WHERE r.res_key = ken.res_rsv_ruimte_key
AND ken.res_kenmerk_key IN (1, 2, 3))
klantRef,
r.wensen
speciale_wensen,
r.last_upd
last_resupd,
r.last_export
last_SAP_exp,
r.delete_date
res_verw_datum
FROM (SELECT DISTINCT
res.res_rsv_ruimte_key
res_key,
res.res_reservering_key
res_reservering_key,
res.res_rsv_ruimte_volgnr
res_rsv_ruimte_volgnr,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = res.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 108)
last_upd,
res.res_rsv_ruimte_externsyncdate
last_export,
res.res_rsv_ruimte_verwijder
delete_date,
alg.alg_ruimte_nr
ruimte,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1071)
straat, -- alg_gebouw kenmerk tbv straat
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1120)
nummer, -- alg_gebouw kenmerk tbv nummer
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1072)
postcode, -- alg_gebouw kenmerk tbv postciode
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1073)
plaats, -- alg_gebouw kenmerk tbv plaats
(SELECT gb.alg_gebouw_code
FROM alg_gebouw gb
WHERE gb.alg_gebouw_key = alg.alg_gebouw_key)
gebouw,
res.res_rsv_ruimte_van
datum_van,
res.res_rsv_ruimte_tot
datum_tot,
res.res_rsv_ruimte_omschrijving
oms,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = res.res_rsv_ruimte_contact_key)
besteller,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = res.res_rsv_ruimte_contact_key)
userid,
kstp.prs_kostenplaats_nr
debiteurnr,
kstp.prs_kostenplaats_extern
extern,
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde ken
WHERE res_rsv_ruimte_key = res.res_rsv_ruimte_key
AND res_kenmerk_key IN (21,
22,
23,
24,
25,
26))
wensen,
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde ken
WHERE res_rsv_ruimte_key = res.res_rsv_ruimte_key
AND res_kenmerk_key IN (41,
42,
43,
44,
45,
46))
sap_ordernr,
res.res_rsv_ruimte_cat_appr
approved
FROM res_rsv_ruimte res,
res_rsv_artikel rar,
res_ruimte_opstelling rop,
res_ruimte rer,
res_alg_ruimte rarm,
alg_v_ruimte_gegevens_all alg,
prs_kostenplaats kstp
WHERE res.res_rsv_ruimte_verwijder IS NULL
AND rar.res_rsv_ruimte_key = res.res_rsv_ruimte_key
AND res.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 kstp.prs_kostenplaats_key = res.prs_kostenplaats_key
UNION ALL
SELECT DISTINCT
res.res_rsv_ruimte_key
res_key,
res.res_reservering_key,
res.res_rsv_ruimte_volgnr,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey =
res.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 108)
last_upd,
res.res_rsv_ruimte_externsyncdate
last_export,
res.res_rsv_ruimte_verwijder
delete_date,
alg.alg_ruimte_nr
ruimte,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1071)
straat, -- alg_gebouw kenmerk tbv straat
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1120)
nummer, -- alg_gebouw kenmerk tbv nummer
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1072)
postcode, -- alg_gebouw kenmerk tbv postciode
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ken
WHERE ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1073)
plaats, -- alg_gebouw kenmerk tbv plaats
(SELECT gb.alg_gebouw_code
FROM alg_gebouw gb
WHERE gb.alg_gebouw_key = alg.alg_gebouw_key)
gebouw,
res.res_rsv_ruimte_van
datum_van,
res.res_rsv_ruimte_tot
datum_tot,
res.res_rsv_ruimte_omschrijving
oms,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = res.res_rsv_ruimte_contact_key)
besteller,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = res.res_rsv_ruimte_contact_key)
userid,
kstp.prs_kostenplaats_nr
debiteurnr,
kstp.prs_kostenplaats_extern
extern,
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde ken
WHERE res_rsv_ruimte_key = res.res_rsv_ruimte_key
AND res_kenmerk_key IN (21,
22,
23,
24,
25,
26))
wensen,
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde ken
WHERE res_rsv_ruimte_key = res.res_rsv_ruimte_key
AND res_kenmerk_key IN (41,
42,
43,
44,
45,
46))
sap_ordernr,
res.res_rsv_ruimte_cat_appr
approved
FROM res_rsv_ruimte res,
res_rsv_artikel rar,
alg_v_ruimte_gegevens_all alg,
prs_kostenplaats kstp
WHERE res.res_rsv_ruimte_verwijder IS NULL
AND rar.res_rsv_ruimte_key = res.res_rsv_ruimte_key
AND alg.alg_ruimte_key = res.alg_ruimte_key
AND kstp.prs_kostenplaats_key = res.prs_kostenplaats_key)
r,
res_rsv_artikel ra,
res_rsv_ruimte rr,
res_artikel a,
ins_tab_discipline cat,
res_disc_params cat_set,
prs_bedrijf b,
res_status_bo bs,
res_status_fo fs
WHERE r.res_key = ra.res_rsv_ruimte_key
AND ra.res_artikel_key = a.res_artikel_key
AND r.res_key = rr.res_rsv_ruimte_key
AND cat.ins_discipline_key = a.res_discipline_key
AND cat.ins_discipline_key = cat_set.res_ins_discipline_key
AND cat_set.prs_bedrijf_key = b.prs_bedrijf_key
AND ra.res_status_bo_key = bs.res_status_bo_key
AND rr.res_status_fo_key = fs.res_status_fo_key
ORDER BY r.res_key;
CREATE OR REPLACE PROCEDURE blst_daily
AS
BEGIN
-- mandaat voor alle AN medewerkers
blst.inactivate_prs ();
-- anonimiseer bezoekers
blst.anonimiseer_bezoeker ();
-- automatisch afmelden reserveringen met catering/losse catering aanvragen
blst.afmelden_reserveringen ();
END;
/
------ 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