Files
Database/FAC/FAC_PACX.SRC
Jos Groot Lipman 373e9e113d QA: nieuwe DB37 velden moeten ook in de XML terugkomen
svn path=/Database/trunk/; revision=43730
2019-08-12 12:59:17 +00:00

9567 lines
395 KiB
Plaintext

/* $Revision$
* $Id$
*/
/* FAC_PACX, (X means XML) to be included from fac_pac.src, isolated for convenience only
* The XML-package source. Maakt DE XML nodes voor alle bekende entiteiten van facilitor.
*
* Usage: xml.make_xml(...);
*
* Voor de XML functies is soms de concise (=beknopt) parameter beschikbaar, Indien waar, dan wordt er minder info
* van die node opgenomen. Soort van vuistregel is dat als het er om gaat deze false is, en als er slechts een
* vermelding is deze true is. Voorbeeld voor perslid: aanvrager moet niet concise, maar fiatteur wel.
*
* In de packageheader zijn alleen die declaraties opgenomen die qua volgorde bekend moesten zijn bij gebruik (in de body)
*
*/
CREATE OR REPLACE PACKAGE xml
AS
PROCEDURE addvarchartoclob (text IN VARCHAR2);
PROCEDURE createheadernode (p_custid IN VARCHAR2);
PROCEDURE add_header (p_custid IN VARCHAR2);
PROCEDURE add_footer (dummy IN VARCHAR2);
PROCEDURE add_localisation (p_xmlnode IN VARCHAR2);
FUNCTION char_to_html (p_char IN VARCHAR2)
RETURN VARCHAR2;
PROCEDURE mydatetochar (p_tag IN VARCHAR2, p_date IN DATE);
FUNCTION mynumbertochar (p_number IN NUMBER)
RETURN VARCHAR2;
PROCEDURE createopentag (p_tag IN VARCHAR2);
PROCEDURE createconciseopentag (p_tag IN VARCHAR2);
PROCEDURE createopentagattributes (
p_tag IN VARCHAR2,
p_attrname1 IN VARCHAR2,
p_attrvalue1 IN VARCHAR2,
p_attrname2 IN VARCHAR2,
p_attrvalue2 IN VARCHAR2,
p_attrname3 IN VARCHAR2,
p_attrvalue3 IN VARCHAR2,
p_attrname4 IN VARCHAR2,
p_attrvalue4 IN VARCHAR2
);
PROCEDURE createclosetag (p_tag IN VARCHAR2);
PROCEDURE createxmltagvalue (p_tag IN VARCHAR2, p_value IN VARCHAR2);
PROCEDURE createxmltagvalueattributes (
p_tag IN VARCHAR2,
p_attrname1 IN VARCHAR2,
p_attrvalue1 IN VARCHAR2,
p_attrname2 IN VARCHAR2,
p_attrvalue2 IN VARCHAR2,
p_attrname3 IN VARCHAR2,
p_attrvalue3 IN VARCHAR2,
p_attrname4 IN VARCHAR2,
p_attrvalue4 IN VARCHAR2,
p_attrname5 IN VARCHAR2,
p_attrvalue5 IN VARCHAR2,
p_kmdkey IN VARCHAR2,
p_value IN VARCHAR2
);
PROCEDURE create_prs_perslid_node (p_key IN NUMBER, p_nodename IN VARCHAR2, p_concise IN BOOLEAN);
PROCEDURE create_alg_locatie_node (
p_locatie_key IN NUMBER,
p_gebouw_key IN NUMBER,
p_verdieping_key IN NUMBER,
p_ruimte_key IN NUMBER,
p_terreinsector_key IN NUMBER,
p_withchildren IN BOOLEAN
);
PROCEDURE create_mld_adres_node (p_key IN NUMBER, p_nodename IN VARCHAR2, p_concise IN BOOLEAN);
PROCEDURE create_prs_werkplek_node (p_werkplek_key IN NUMBER, p_perslid_key IN NUMBER, p_concise IN BOOLEAN);
PROCEDURE create_ins_srtdeel_node (p_key IN NUMBER, p_concise BOOLEAN);
PROCEDURE create_prs_bedrijf_node (p_bedrijf_key IN NUMBER, p_nodename IN VARCHAR2, p_concise IN BOOLEAN);
PROCEDURE create_prs_kostenpltsgrp_node (p_key IN NUMBER);
PROCEDURE create_prs_kostenplaats_node (p_key IN NUMBER, p_concise IN BOOLEAN);
PROCEDURE create_alg_onroerendgoed_node (
p_key IN NUMBER,
p_nodename IN VARCHAR2,
p_lockey IN NUMBER,
p_concise IN BOOLEAN,
p_withchildren IN BOOLEAN
);
PROCEDURE create_mld_opdr_node (p_key IN NUMBER, p_extra_key IN NUMBER, p_concise IN BOOLEAN, p_bgtmode IN BOOLEAN DEFAULT FALSE);
PROCEDURE create_bes_bestelling_node (p_key IN NUMBER, p_concise IN BOOLEAN);
PROCEDURE create_bes_bestelopdr_node (p_key IN NUMBER, p_concise IN BOOLEAN);
PROCEDURE create_bez_afspraak_node (p_key IN NUMBER,
p_extra IN NUMBER,
p_concise IN BOOLEAN);
PROCEDURE create_res_rsv_ruimte_node (p_key IN NUMBER, p_concise IN BOOLEAN);
PROCEDURE create_cnt_contract_node (p_key IN NUMBER, p_concise IN BOOLEAN, p_extra_key IN NUMBER DEFAULT NULL);
PROCEDURE create_fin_factuur_node (p_key IN NUMBER, p_concise IN BOOLEAN, p_bgtmode IN BOOLEAN DEFAULT FALSE);
PROCEDURE create_bgt_discipline_node (p_key IN NUMBER);
PROCEDURE xml_node (p_xmlnode IN VARCHAR2,
p_key IN NUMBER,
p_custid IN VARCHAR2,
p_sessionid IN VARCHAR2,
p_extra IN NUMBER,
p_where IN VARCHAR2,
p_concise IN BOOLEAN
);
FUNCTION make_xml2 (
p_xmlnode IN VARCHAR2,
p_key IN NUMBER,
p_custid IN VARCHAR2,
p_sessionid IN VARCHAR2,
p_extra IN NUMBER,
p_where IN VARCHAR2
) RETURN CLOB;
FUNCTION make_view_xml2 (
p_view IN VARCHAR2,
p_key IN NUMBER,
p_custid IN VARCHAR2,
p_sessionid IN VARCHAR2,
p_extra IN NUMBER,
p_where IN VARCHAR2,
p_nodename IN VARCHAR2,
p_rowname IN VARCHAR2
) RETURN CLOB;
END xml;
/
CREATE OR REPLACE PACKAGE BODY xml
AS
aclob CLOB;
xmlnode_depth NUMBER; -- Prevent nested xmlnode-kenmerken (and loops); max. depth=1!
PROCEDURE addvarchartoclob (text IN VARCHAR2)
AS
BEGIN
DBMS_LOB.WRITEAPPEND (aclob, LENGTH (text), text);
END;
PROCEDURE add_header (p_custid IN VARCHAR2)
AS
BEGIN
addvarchartoclob (
'<?xml version="1.0" encoding="windows-1252"?>' || CHR (10));
createopentag ('facilitor');
createheadernode (p_custid);
END;
PROCEDURE add_footer (dummy IN VARCHAR2)
AS
BEGIN
createclosetag ('facilitor');
END;
PROCEDURE add_localisation (p_xmlnode IN VARCHAR2)
AS
CURSOR c1(userlang VARCHAR2)
IS
SELECT fac_locale_xsl_label,
COALESCE(fac_locale_xsl_cust, fac_locale_xsl_tekst) fac_locale_xsl_tekst,
fac_locale_xsl_module
FROM fac_locale_xsl,
(SELECT 'MLD' module
FROM DUAL
WHERE p_xmlnode IN ('melding', 'opdracht', 'factuur')
UNION ALL
SELECT 'FIN'
FROM DUAL
WHERE p_xmlnode IN ('factuur', 'verkoopfactuur')
UNION ALL
SELECT 'ALG'
FROM DUAL
WHERE p_xmlnode IN
('ruimte',
'verdieping',
'gebouw',
'locatie',
'deel',
'controle',
'contract')
UNION ALL
SELECT 'PRS'
FROM DUAL
WHERE p_xmlnode IN ('perslid', 'afdeling', 'kostenplaats')
UNION ALL
SELECT 'BEZ'
FROM DUAL
WHERE p_xmlnode IN
('afspraak', 'reservering', 'xreservering', 'bezoeker')
UNION ALL
SELECT 'BES'
FROM DUAL
WHERE p_xmlnode IN ('bestelling', 'bestelopdr', 'factuur')
UNION ALL
SELECT 'RES'
FROM DUAL
WHERE p_xmlnode IN ('reservering', 'xreservering')
UNION ALL
SELECT 'PRJ'
FROM DUAL
WHERE p_xmlnode IN ('scenario')
UNION ALL
SELECT 'MSG'
FROM DUAL
WHERE p_xmlnode IN ('message')
UNION ALL
SELECT 'INS'
FROM DUAL
WHERE p_xmlnode IN
('deel', 'melding', 'opdracht', 'contract', 'controle')
UNION ALL
SELECT 'CNT'
FROM DUAL
WHERE p_xmlnode IN ('contract', 'deel', 'factuur')
UNION ALL
SELECT 'FAC' FROM DUAL) modules
WHERE fac_locale_xsl_lang = userlang
AND fac_locale_xsl_module = modules.module
ORDER BY fac_locale_xsl_module, fac_locale_xsl_label;
lmodule VARCHAR2 (3);
BEGIN
createopentag ('lcl');
lmodule := 'XXX';
FOR rec1 IN c1(lcl.getuserlanguage ())
LOOP
IF lmodule <> rec1.fac_locale_xsl_module
THEN
IF lmodule <> 'XXX'
THEN
createclosetag (lmodule);
END IF;
createopentag (rec1.fac_locale_xsl_module);
lmodule := rec1.fac_locale_xsl_module;
END IF;
createxmltagvalue (rec1.fac_locale_xsl_label,
rec1.fac_locale_xsl_tekst);
END LOOP;
IF lmodule <> 'XXX'
THEN
createclosetag (lmodule);
END IF;
createclosetag ('lcl');
END;
-- Levert een bookmarks node op met daarin een (of meer) info om een link naar het detailscherm van deze node
-- te construeren. Dit ging via de standaard bookmarks per xmlnode, maar nu gewoon met een pseudobookmark
-- met dezelfde naam als de xmlnode dit het vertegenwoordigd.
-- Een waarde is bijvoorbeeld u=melding&k=
-- Waar je in de xsl de facilitorroot voor en de keywaarde achter moet zetten voor een goede link
-- (ook te overwegen is om de &k= door de xsl te laten plakken; net zo goed, maar op deze manier
-- laten we de route naar uiteindelijk https://root/xmlnode/key beter open)
PROCEDURE create_bookmarks_node (p_xmlnode IN VARCHAR2, p_refkey IN NUMBER)
AS
CURSOR c2
IS
SELECT fac_bookmark_naam,
fac_bookmark_id
FROM fac_bookmark
WHERE fac_bookmark_xmlnode = p_xmlnode
AND fac_bookmark_refkey = p_refkey;
BEGIN
createopentag ('bookmarks');
-- de generieke
createxmltagvalue (p_xmlnode, 'u='||p_xmlnode || '&k=');
FOR rec2 IN c2 -- de specifieke
LOOP
createxmltagvalue (rec2.fac_bookmark_naam, 'u='||rec2.fac_bookmark_id);
END LOOP;
createclosetag ('bookmarks');
END;
FUNCTION char_to_html (p_char IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
RETURN REPLACE (
REPLACE (
REPLACE (
REPLACE (
REPLACE (p_char, CHR (38), CHR (38) || 'amp;'),
CHR (60),
CHR (38) || 'lt;'),
CHR (62),
CHR (38) || 'gt;'),
CHR (34),
CHR (38) || 'quot;'),
CHR (39),
CHR (38) || 'apos;');
END;
PROCEDURE mydatetochar (p_tag IN VARCHAR2, p_date IN DATE)
AS
v_return VARCHAR2 (1000);
l_timezone VARCHAR2 (20);
v_utc TIMESTAMP;
user_ts TIMESTAMP;
BEGIN
IF p_date IS NOT NULL
THEN
createopentag (p_tag);
createxmltagvalue ('datum', TO_CHAR (p_date, 'dd-mm-yyyy'));
createxmltagvalue ('tijd', TO_CHAR (p_date, 'hh24:mi'));
user_ts := FROM_TZ (CAST (p_date AS TIMESTAMP), fac.getsetting('fac_server_timezone')) AT TIME ZONE SESSIONTIMEZONE;
createxmltagvalue ('localdatum', TO_CHAR (user_ts, 'dd-mm-yyyy'));
createxmltagvalue ('localtijd', TO_CHAR (user_ts, 'hh24:mi'));
createxmltagvalue ('localdatetime', TO_CHAR (user_ts, 'YYYY-MM-DD') || 'T' || TO_CHAR (user_ts, 'HH24:MI:SS') || TO_CHAR(FROM_TZ(user_ts, SESSIONTIMEZONE), 'TZH:TZM'));
v_utc :=
SYS_EXTRACT_UTC (FROM_TZ (CAST (p_date AS TIMESTAMP), 'CET'));
createxmltagvalue ('utcdatum', TO_CHAR (v_utc, 'YYYYMMDD'));
createxmltagvalue ('utctijd', TO_CHAR (v_utc, 'HH24MISS'));
createxmltagvalue ('dag', TO_CHAR (p_date, 'dd'));
createxmltagvalue ('maand', TO_CHAR (p_date, 'mm'));
createxmltagvalue ('jaar', TO_CHAR (p_date, 'yyyy'));
createxmltagvalue (
'timestamp',
TO_CHAR (
(p_date - TO_DATE ('01-01-1970', 'DD-MM-YYYY')) * 86400,
'FM9999999999'));
createclosetag (p_tag);
END IF;
END;
FUNCTION mynumbertochar (p_number IN NUMBER)
RETURN VARCHAR2
IS
BEGIN
RETURN TO_CHAR (p_number);
END;
PROCEDURE createopentag (p_tag IN VARCHAR2)
AS
BEGIN
IF p_tag IS NULL
THEN
addvarchartoclob ('<>');
ELSE
addvarchartoclob ('<' || p_tag || '>' || CHR (10));
END IF;
END;
PROCEDURE createconciseopentag (p_tag IN VARCHAR2)
AS
BEGIN
-- Pas op: in de onrgoednode wordt het attribuut zelf gezet (want meerdere attributen)
createopentagattributes (p_tag,
'mode',
'concise',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
END;
-- * createXMLtagValue
-- * function to return a complex XML node including up to 4 attributes
-- * use the null value in the attrNameX argument for empty attributes
PROCEDURE createopentagattributes (p_tag IN VARCHAR2,
p_attrname1 IN VARCHAR2,
p_attrvalue1 IN VARCHAR2,
p_attrname2 IN VARCHAR2,
p_attrvalue2 IN VARCHAR2,
p_attrname3 IN VARCHAR2,
p_attrvalue3 IN VARCHAR2,
p_attrname4 IN VARCHAR2,
p_attrvalue4 IN VARCHAR2)
AS
v_return VARCHAR2 (5000);
BEGIN
v_return := '<' || p_tag;
IF p_attrname1 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname1 || '=';
IF p_attrvalue1 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue1) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
IF p_attrname2 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname2 || '=';
IF p_attrvalue2 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue2) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
IF p_attrname3 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname3 || '=';
IF p_attrvalue3 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue3) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
IF p_attrname4 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname4 || '=';
IF p_attrvalue4 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue4) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
v_return := v_return || '>' || CHR (10);
addvarchartoclob (v_return);
END;
PROCEDURE createclosetag (p_tag IN VARCHAR2)
AS
BEGIN
IF p_tag IS NULL
THEN
addvarchartoclob ('</>');
ELSE
addvarchartoclob ('</' || p_tag || '>' || CHR (10));
END IF;
END;
-- * createXMLtagValue
-- * function to return a simple XML node without attributes
-- * empty nodes are skipped.
-- * Since the value is made HTML-safe it can become a lot longer than it was
-- worst case that is 5 times, when 4000 ampersands become 4000 times &amp;
-- Yet since that is very unlikely we make our buffer 9999 instead of 20000,
-- assuming this will save use of memory. If that is bullshit we should
-- make it 20000 and 20100 or so.
PROCEDURE createxmltagvalue (p_tag IN VARCHAR2, p_value IN VARCHAR2)
AS
v_value VARCHAR2 (9999);
v_return VARCHAR2 (9999);
BEGIN
IF p_value IS NULL
THEN
RETURN;
END IF;
v_value := char_to_html (p_value);
v_return := '<' || p_tag || '>';
v_return := v_return || v_value;
v_return := v_return || '</' || p_tag || '> ' || CHR (10);
addvarchartoclob (v_return);
END;
-- * createxmltagvalueattributes8
-- * function to return a complex XML node including up to 6 attributes
-- * use the NULL value in the attrnameX argument for empty attributes
-- * used for Kenmerk-nodes; if the fac_kenmerkdomein_key from p_kmdkey
-- * defines a fac_kenmerkdomein_xmlnode the corresponding subnode
-- * is added on the highest level only
-- * Per 5.4.3 empty nodes are skipped here too, unless the value is '#donotsuppress#'
PROCEDURE createxmltagvalueattributes8 (p_tag IN VARCHAR2,
p_attrname1 IN VARCHAR2,
p_attrvalue1 IN VARCHAR2,
p_attrname2 IN VARCHAR2,
p_attrvalue2 IN VARCHAR2,
p_attrname3 IN VARCHAR2,
p_attrvalue3 IN VARCHAR2,
p_attrname4 IN VARCHAR2,
p_attrvalue4 IN VARCHAR2,
p_attrname5 IN VARCHAR2,
p_attrvalue5 IN VARCHAR2,
p_attrname6 IN VARCHAR2,
p_attrvalue6 IN VARCHAR2,
p_attrname7 IN VARCHAR2,
p_attrvalue7 IN VARCHAR2,
p_attrname8 IN VARCHAR2,
p_attrvalue8 IN VARCHAR2,
p_kmdkey IN VARCHAR2,
p_value IN VARCHAR2)
AS
v_value VARCHAR2 (5000);
v_return VARCHAR2 (5000);
v_xmlnode fac_kenmerkdomein.fac_kenmerkdomein_xmlnode%TYPE;
BEGIN
IF p_value IS NULL
THEN
RETURN;
END IF;
v_return := '<' || p_tag;
IF p_attrname1 IS NOT NULL AND p_attrvalue1 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname1 || '=';
IF p_attrvalue1 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue1) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
IF p_attrname2 IS NOT NULL AND p_attrvalue2 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname2 || '=';
IF p_attrvalue2 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue2) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
IF p_attrname3 IS NOT NULL AND p_attrvalue3 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname3 || '=';
IF p_attrvalue3 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue3) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
IF p_attrname4 IS NOT NULL AND p_attrvalue4 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname4 || '=';
IF p_attrvalue4 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue4) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
IF p_attrname5 IS NOT NULL AND p_attrvalue5 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname5 || '=';
IF p_attrvalue5 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue5) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
IF p_attrname6 IS NOT NULL AND p_attrvalue6 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname6 || '=';
IF p_attrvalue6 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue6) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
IF p_attrname7 IS NOT NULL AND p_attrvalue7 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname7 || '=';
IF p_attrvalue7 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue7) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
IF p_attrname8 IS NOT NULL AND p_attrvalue8 IS NOT NULL
THEN
v_return := v_return || ' ' || p_attrname8 || '=';
IF p_attrvalue8 IS NOT NULL
THEN
v_return := v_return || '"' || char_to_html (p_attrvalue8) || '"';
ELSE
v_return := v_return || '""';
END IF;
END IF;
IF p_kmdkey IS NOT NULL
THEN
-- this domein-reference could be a xmlnode reference
-- then we should add a subnode of that type
SELECT fac_kenmerkdomein_xmlnode
INTO v_xmlnode
FROM fac_kenmerkdomein
WHERE fac_kenmerkdomein_key = p_kmdkey;
IF v_xmlnode IS NOT NULL
THEN
v_return := v_return || ' xmlnode=' || '"' || char_to_html (v_xmlnode) || '"';
END IF;
END IF;
v_return := v_return || '>';
-- Alleen uitstapjes naar xmlnode-kenmerken toegestaan vanaf de basis!
IF p_value IS NOT NULL AND v_xmlnode IS NOT NULL AND xmlnode_depth = 0
THEN
addvarchartoclob (v_return); -- Tussenresultaat; nog geen waarde en sluithaakje
-- Plak nu xmlnode-kenmerk direct in het resultaat (als side effect)
xmlnode_depth := xmlnode_depth + 1; -- Increment depth; even van het pad af!
IF v_xmlnode = 'reservering' THEN
xml_node (v_xmlnode,
NULL, -- res_reservering_key mogen we leeg laten
NULL,
NULL,
fac.safe_to_number (p_value), -- res_rsv_ruimte_key moet in p_extra
NULL,
TRUE);
ELSE
xml_node (v_xmlnode,
fac.safe_to_number (p_value),
NULL,
NULL,
NULL,
NULL,
TRUE);
END IF;
xmlnode_depth := xmlnode_depth - 1; -- Decrement depth; terug naar de basis!
ELSE
IF p_value IS NULL OR p_value = '#donotsuppress#'
THEN
v_value := '';
ELSE
v_value := p_value;
END IF;
v_return := v_return || char_to_html (v_value);
addvarchartoclob (v_return); -- Tussenresultaat met waarde / zonder sluithaakje
END IF;
-- En het sluithaakje (na xmlnode-kenmerk of tussenresultaat hierboven)
v_return := '</' || p_tag || '> ' || CHR (10);
addvarchartoclob (v_return);
END;
-- Compatible function for 5 attributes
PROCEDURE createxmltagvalueattributes (p_tag IN VARCHAR2,
p_attrname1 IN VARCHAR2,
p_attrvalue1 IN VARCHAR2,
p_attrname2 IN VARCHAR2,
p_attrvalue2 IN VARCHAR2,
p_attrname3 IN VARCHAR2,
p_attrvalue3 IN VARCHAR2,
p_attrname4 IN VARCHAR2,
p_attrvalue4 IN VARCHAR2,
p_attrname5 IN VARCHAR2,
p_attrvalue5 IN VARCHAR2,
p_kmdkey IN VARCHAR2,
p_value IN VARCHAR2)
AS
BEGIN
createxmltagvalueattributes8 (p_tag,
p_attrname1,
p_attrvalue1,
p_attrname2,
p_attrvalue2,
p_attrname3,
p_attrvalue3,
p_attrname4,
p_attrvalue4,
p_attrname5,
p_attrvalue5,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
p_kmdkey,
p_value);
END;
-- *
-- * Create the header node including the timestamps.
-- * Note: the parameter is a dummy now
-- *
PROCEDURE createheadernode (p_custid IN VARCHAR2)
AS
l_custid fac_version.fac_version_cust%TYPE;
l_otap fac_version.fac_version_otap%TYPE;
l_naam_full prs_v_perslid_fullnames_all.prs_perslid_naam_full%TYPE;
l_naam_friendly prs_v_perslid_fullnames_all.prs_perslid_naam_friendly%TYPE;
BEGIN
createopentagattributes ('header',
'revision',
SUBSTR ('$Revision$', 12, 3),
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
BEGIN
SELECT prs_perslid_naam_full, prs_perslid_naam_friendly
INTO l_naam_full, l_naam_friendly
FROM prs_v_perslid_fullnames_all
WHERE prs_perslid_key = sys_context('USERENV', 'CLIENT_IDENTIFIER');
EXCEPTION
WHEN NO_DATA_FOUND -- for putorders a.o. this is unknown
THEN NULL;
END;
createxmltagvalue ('dateTime',
TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss'));
createxmltagvalue ('dateDay', TO_CHAR (SYSDATE, 'dd'));
createxmltagvalue ('dateMonth', TO_CHAR (SYSDATE, 'mm'));
createxmltagvalue ('dateYear', TO_CHAR (SYSDATE, 'yyyy'));
createxmltagvalue ('user', USER);
createxmltagvalue ('usernamefull', l_naam_full);
createxmltagvalue ('usernamefriendly', l_naam_friendly);
SELECT fac_version_cust, fac_version_otap
INTO l_custid, l_otap
FROM fac_version;
createxmltagvalue ('custId', l_custid);
createxmltagvalue ('env', l_otap);
createxmltagvalue ('language', lcl.getuserlanguage ());
-- Cannot retrieve server timezone as region name, so display both as offsets
createxmltagvalue ('servertimezone', TO_CHAR (SYSTIMESTAMP, 'tzr'));
createxmltagvalue ('usertimezone', SUBSTR(TZ_OFFSET(SESSIONTIMEZONE),1,6));
createxmltagvalue ('version', fac.getdbversion ());
createclosetag ('header');
END;
FUNCTION find_kenmerk_waarde (p_kenmerk_waarde IN VARCHAR2,
p_kenmerk_default IN VARCHAR2,
p_kenmerk_type IN VARCHAR2,
p_kenmerkdomein_key IN NUMBER,
srtkenmerk_nmin IN NUMBER,
srtkenmerk_nmax IN NUMBER)
RETURN VARCHAR
IS
sql_stmt VARCHAR2 (1000);
sresult fac_bijlagen.fac_bijlagen_filename%TYPE;
BEGIN
IF p_kenmerk_waarde IS NULL
THEN
IF p_kenmerk_type IN ('L', 'l')
THEN
RETURN p_kenmerk_default;
ELSIF p_kenmerk_type IN ('M')
THEN
RETURN '#donotsuppress#';
ELSE
RETURN NULL;
END IF;
END IF;
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
IF (p_kenmerk_type = 'R' OR p_kenmerk_type = 'S')
THEN
RETURN flx.getdomeinwaarde (p_kenmerkdomein_key, p_kenmerk_waarde, CASE WHEN xmlnode_depth = 0 THEN 1 ELSE 0 END);
ELSIF (p_kenmerk_type = 'F' /*OR p_kenmerk_type = 'M'*/) -- M nog niet met 2019.2, ik weet niet hoeveel bonnen blind de flexkenmerken tonen
THEN
SELECT fac_bijlagen_filename
INTO sresult
FROM fac_bijlagen
WHERE fac_bijlagen_key = fac.safe_to_number(p_kenmerk_waarde);
RETURN sresult;
ELSIF ( p_kenmerk_type = 'B'
AND srtkenmerk_nmin = 0
AND srtkenmerk_nmax = 1
AND p_kenmerk_waarde = 0)
THEN
RETURN lcl.L ('lcl_check_xml_0');
ELSIF ( p_kenmerk_type = 'B'
AND srtkenmerk_nmin = 0
AND srtkenmerk_nmax = 1
AND p_kenmerk_waarde = 1)
THEN
RETURN lcl.L ('lcl_check_xml_1');
ELSIF ( p_kenmerk_type = 'V'
AND p_kenmerk_waarde = 0)
THEN
RETURN lcl.L ('lcl_check_xml_0');
ELSIF ( p_kenmerk_type = 'V'
AND p_kenmerk_waarde = 1)
THEN
RETURN lcl.L ('lcl_check_xml_1');
END IF;
RETURN p_kenmerk_waarde;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN NULL;
END;
-- *
-- * Factuuradres
-- * Argument is MLD_OPDR_KEY
-- *
PROCEDURE create_factuuradres_node (o_key IN NUMBER)
AS
v_return VARCHAR2 (10000);
v_adres_key mld_adres.mld_adres_key%TYPE;
factuuradresfound NUMBER;
BEGIN
factuuradresfound := 0;
IF o_key IS NOT NULL
THEN
BEGIN
SELECT mld_adres_key
INTO v_adres_key
FROM mld_adres a, prs_bedrijf b, mld_opdr o
WHERE a.mld_adres_key = b.mld_adres_key_fac
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_opdr_key = o_key;
factuuradresfound := 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
SELECT mld_adres_key
INTO v_adres_key
FROM mld_adres
WHERE mld_adres_key IN
(SELECT fac.safe_to_number(
NVL (
fa5.prs_kenmerklink_waarde,
NVL (
fa4.prs_kenmerklink_waarde,
NVL (
fa3.prs_kenmerklink_waarde,
NVL (
fa2.prs_kenmerklink_waarde,
NVL (
fa1.prs_kenmerklink_waarde,
abd.mld_adres_key_fac))))))
FROM prs_bedrijf abd,
mld_opdr o,
mld_melding m,
prs_v_afdeling_boom a,
prs_perslid p,
prs_v_aanwezigkenmerklink fa1,
prs_v_aanwezigkenmerklink fa2,
prs_v_aanwezigkenmerklink fa3,
prs_v_aanwezigkenmerklink fa4,
prs_v_aanwezigkenmerklink fa5
WHERE abd.prs_bedrijf_key =
a.prs_bedrijf_key
AND p.prs_afdeling_key =
a.prs_afdeling_key
AND fa5.prs_kenmerk_key(+) = 6
AND a.prs_afdeling_key5 =
fa5.prs_link_key(+)
AND fa4.prs_kenmerk_key(+) = 6
AND a.prs_afdeling_key4 =
fa4.prs_link_key(+)
AND fa3.prs_kenmerk_key(+) = 6
AND a.prs_afdeling_key3 =
fa3.prs_link_key(+)
AND fa2.prs_kenmerk_key(+) = 6
AND a.prs_afdeling_key2 =
fa2.prs_link_key(+)
AND fa1.prs_kenmerk_key(+) = 6
AND a.prs_afdeling_key1 =
fa1.prs_link_key(+)
AND p.prs_perslid_key =
m.prs_perslid_key
AND o.mld_melding_key =
m.mld_melding_key
AND o.mld_opdr_key = o_key);
factuuradresfound := 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
factuuradresfound := 0;
END;
END;
IF factuuradresfound = 1
THEN
create_mld_adres_node (v_adres_key, 'factuuradres', TRUE);
END IF;
END IF;
END;
-- *
-- * FAC
-- *
PROCEDURE create_fac_tracking_node (pxmlnodename IN VARCHAR2,
p_refkey IN NUMBER)
AS
CURSOR c1
IS
SELECT t.fac_tracking_datum,
t.fac_tracking_oms,
t.prs_perslid_key,
st.fac_srtnotificatie_code
FROM fac_tracking t, fac_srtnotificatie st
WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key
AND st.fac_srtnotificatie_xmlnode = pxmlnodename
AND t.fac_tracking_refkey = p_refkey
ORDER BY fac_tracking_datum;
BEGIN
IF p_refkey IS NOT NULL
THEN
createopentag ('tracking');
FOR rec1 IN c1
LOOP
createopentagattributes ('track',
'code',
rec1.fac_srtnotificatie_code,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
mydatetochar ('datum', rec1.fac_tracking_datum);
create_prs_perslid_node (rec1.prs_perslid_key, 'user', TRUE);
createxmltagvalue ('code', rec1.fac_srtnotificatie_code);
createxmltagvalue ('omschrijving', rec1.fac_tracking_oms);
createclosetag ('track');
END LOOP;
createclosetag ('tracking');
END IF;
END;
PROCEDURE create_fac_activiteit_node (p_key IN NUMBER)
AS
v_perslid_key fac_activiteit.prs_perslid_key%TYPE;
v_user_key fac_activiteit.fac_activiteit_user_key%TYPE;
v_eerste fac_activiteit.fac_activiteit_eerste%TYPE;
v_laatste fac_activiteit.fac_activiteit_laatste%TYPE;
v_volgende fac_activiteit.fac_activiteit_volgende%TYPE;
v_xmlnode fac_activiteit.fac_activiteit_xmlnode%TYPE;
v_interval fac_activiteit.fac_activiteit_interval%TYPE;
v_aantal fac_activiteit.fac_activiteit_aantal%TYPE;
v_einddatum fac_activiteit.fac_activiteit_einddatum%TYPE;
v_aanmaak fac_activiteit.fac_activiteit_aanmaak%TYPE;
v_verwijder fac_activiteit.fac_activiteit_verwijder%TYPE;
v_status_key fac_activiteit.fac_activiteit_status_key%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('activiteit');
SELECT prs_perslid_key,
fac_activiteit_user_key,
fac_activiteit_eerste,
fac_activiteit_laatste,
fac_activiteit_volgende,
fac_activiteit_xmlnode,
fac_activiteit_interval,
fac_activiteit_aantal,
fac_activiteit_einddatum,
fac_activiteit_aanmaak,
fac_activiteit_verwijder,
fac_activiteit_status_key
INTO v_perslid_key,
v_user_key,
v_eerste,
v_laatste,
v_volgende,
v_xmlnode,
v_interval,
v_aantal,
v_einddatum,
v_aanmaak,
v_verwijder,
v_status_key
FROM fac_activiteit
WHERE fac_activiteit_key = p_key;
create_prs_perslid_node (v_perslid_key, 'aanvrager', TRUE);
--v_user_key,
mydatetochar ('eerste', v_eerste);
mydatetochar ('laatste', v_laatste);
mydatetochar ('volgende', v_volgende);
createxmltagvalue ('xmlnode', v_xmlnode);
createxmltagvalue ('interval', v_interval);
createxmltagvalue ('aantal', v_aantal);
mydatetochar ('einddatum', v_einddatum);
createxmltagvalue ('status', v_status_key);
createclosetag ('activiteit');
END IF;
END;
-- *
-- * PRS
-- *
PROCEDURE create_prs_kostenpltsgrp_node (p_key IN NUMBER)
AS
v_omschrijving prs_kostenplaatsgrp.prs_kostenplaatsgrp_oms%TYPE;
v_prs_perslid_key prs_kostenplaatsgrp.prs_perslid_key%TYPE;
v_nr prs_kostenplaatsgrp.prs_kostenplaatsgrp_nr%TYPE;
v_limiet prs_kostenplaatsgrp.prs_kostenplaatsgrp_limiet%TYPE;
v_limperiode prs_kostenplaatsgrp.prs_kostenplaatsgrp_limperiode%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('kostenplaatsgrp');
SELECT kpg.prs_kostenplaatsgrp_oms,
kpg.prs_perslid_key,
kpg.prs_kostenplaatsgrp_nr,
kpg.prs_kostenplaatsgrp_limiet,
kpg.prs_kostenplaatsgrp_limperiode
INTO v_omschrijving,
v_prs_perslid_key,
v_nr,
v_limiet,
v_limperiode
FROM prs_kostenplaatsgrp kpg
WHERE kpg.prs_kostenplaatsgrp_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('omschrijving', v_omschrijving);
create_prs_perslid_node (v_prs_perslid_key, 'budgethouder', TRUE); -- FALSE geeft oneindige loop
createxmltagvalue ('nr', v_nr);
createxmltagvalue ('limiet', v_limiet);
createxmltagvalue ('limietperiode', v_limperiode);
createclosetag ('kostenplaatsgrp');
END IF;
END;
PROCEDURE create_prs_kostenplaats_node (p_key IN NUMBER, p_concise IN BOOLEAN)
AS
v_nr prs_kostenplaats.prs_kostenplaats_nr%TYPE;
v_omschrijving prs_kostenplaats.prs_kostenplaats_omschrijving%TYPE;
v_prs_perslid_key prs_kostenplaats.prs_perslid_key%TYPE;
v_begin prs_kostenplaats.prs_kostenplaats_begin%TYPE;
v_eind prs_kostenplaats.prs_kostenplaats_eind%TYPE;
v_module prs_kostenplaats.prs_kostenplaats_module%TYPE;
v_limiet prs_kostenplaats.prs_kostenplaats_limiet%TYPE;
v_limietperiode prs_kostenplaats.prs_kostenplaats_limietperiode%TYPE;
v_extern prs_kostenplaats.prs_kostenplaats_extern%TYPE;
v_kostenplaatsgrp_key prs_kostenplaats.prs_kostenplaatsgrp_key%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('kostenplaats');
SELECT k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
k.prs_perslid_key,
k.prs_kostenplaats_begin,
k.prs_kostenplaats_eind,
k.prs_kostenplaats_module,
k.prs_kostenplaats_limiet,
k.prs_kostenplaats_limietperiode,
k.prs_kostenplaats_extern,
k.prs_kostenplaatsgrp_key
INTO v_nr,
v_omschrijving,
v_prs_perslid_key,
v_begin,
v_eind,
v_module,
v_limiet,
v_limietperiode,
v_extern,
v_kostenplaatsgrp_key
FROM prs_kostenplaats k
WHERE prs_kostenplaats_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('nr', v_nr);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('begin', v_begin);
createxmltagvalue ('eind', v_eind);
createxmltagvalue ('module', v_module);
createxmltagvalue ('limiet', v_limiet);
createxmltagvalue ('limietperiode', v_limietperiode);
createxmltagvalue ('extern', v_extern);
create_prs_kostenpltsgrp_node (v_kostenplaatsgrp_key);
IF NOT p_concise
THEN
create_prs_perslid_node (v_prs_perslid_key, 'budgethouder', TRUE);
END IF;
createclosetag ('kostenplaats');
END IF;
END;
PROCEDURE create_bgt_ancestor_node(p_child IN VARCHAR2, p_key IN NUMBER)
AS
CURSOR c_soort(p_child_key NUMBER)
IS
SELECT s.prs_kostensoort_key
, s.prs_kostensoort_altcode
, s.prs_kostensoort_oms
, f.fin_btwtabelwaarde_perc
FROM prs_kostensoort s
, fin_btwtabelwaarde f
WHERE s.fin_btwtabelwaarde_key = f.fin_btwtabelwaarde_key(+)
AND s.prs_kostensoort_key = p_child_key;
CURSOR c_groep(p_child_key NUMBER)
IS
SELECT g.prs_kostensoortgrp_key
, g.prs_kostensoortgrp_altcode
, g.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp g
, prs_kostensoort s
WHERE g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key
AND s.prs_kostensoort_key = p_child_key;
CURSOR c_rubriek(p_child_key NUMBER)
IS
SELECT r.bgt_kostenrubriek_key
, r.bgt_kostenrubriek_code
, r.bgt_kostenrubriek_oms
, f.fin_btwtabelwaarde_perc
FROM bgt_kostenrubriek r
, prs_kostensoortgrp g
, fin_btwtabelwaarde f
WHERE r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key
AND r.fin_btwtabelwaarde_key = f.fin_btwtabelwaarde_key(+)
AND g.prs_kostensoortgrp_key = p_child_key;
CURSOR c_project(p_child_key NUMBER)
IS
SELECT p.bgt_project_key
, p.bgt_project_code
, p.bgt_project_omschrijving
FROM bgt_project p
, bgt_kostenrubriek r
WHERE p.bgt_project_key = r.bgt_project_key
AND r.bgt_kostenrubriek_key = p_child_key;
CURSOR c_discipline(p_child_key NUMBER)
IS
SELECT d.ins_discipline_key
, d.ins_discipline_omschrijving
, p.bgt_disc_params_code
, p.bgt_disc_params_opdrachtgever
FROM ins_tab_discipline d
, bgt_disc_params p
, bgt_project s
WHERE d.ins_discipline_key = p.bgt_ins_discipline_key
AND d.ins_discipline_key = s.ins_discipline_key
AND s.bgt_project_key = p_child_key;
v_key NUMBER(10);
v_child VARCHAR2(30);
BEGIN
createopentag ('ancestor');
v_key := p_key;
v_child := p_child;
IF v_child = 'soort_key' -- als je alleen de kostensoort_key hebt, maar geen kostensoort gegevens.
THEN
FOR c5 IN c_soort(v_key)
LOOP
createopentag('soort');
createxmltagvalue('key', c5.prs_kostensoort_key);
createxmltagvalue('code', c5.prs_kostensoort_altcode);
createxmltagvalue('name', c5.prs_kostensoort_oms);
createxmltagvalue('btwperc', c5.fin_btwtabelwaarde_perc);
createclosetag('soort');
v_child := 'soort';
v_key := c5.prs_kostensoort_key;
END LOOP;
END IF;
IF v_child = 'soort'
THEN
FOR c4 IN c_groep(v_key)
LOOP
createopentag('groep');
createxmltagvalue('key', c4.prs_kostensoortgrp_key);
createxmltagvalue('code', c4.prs_kostensoortgrp_altcode);
createxmltagvalue('name', c4.prs_kostensoortgrp_oms);
createclosetag('groep');
v_child := 'groep';
v_key := c4.prs_kostensoortgrp_key;
END LOOP;
END IF;
IF v_child = 'groep'
THEN
FOR c3 IN c_rubriek(v_key)
LOOP
createopentag('rubriek');
createxmltagvalue('key', c3.bgt_kostenrubriek_key);
createxmltagvalue('code', c3.bgt_kostenrubriek_code);
createxmltagvalue('name', c3.bgt_kostenrubriek_oms);
createxmltagvalue('btwperc', c3.fin_btwtabelwaarde_perc);
createclosetag('rubriek');
v_child := 'rubriek';
v_key := c3.bgt_kostenrubriek_key;
END LOOP;
END IF;
IF v_child = 'rubriek'
THEN
FOR c2 IN c_project(v_key)
LOOP
createopentag('project');
createxmltagvalue('key', c2.bgt_project_key);
createxmltagvalue('code', c2.bgt_project_code);
createxmltagvalue('name', c2.bgt_project_omschrijving);
createclosetag('project');
v_child := 'project';
v_key := c2.bgt_project_key;
END LOOP;
END IF;
if v_child = 'project'
THEN
FOR c1 IN c_discipline(v_key)
LOOP
createopentag('discipline');
createxmltagvalue('key', c1.ins_discipline_key);
createxmltagvalue('code', c1.bgt_disc_params_code);
createxmltagvalue('name', c1.ins_discipline_omschrijving);
createxmltagvalue('principal', c1.bgt_disc_params_opdrachtgever);
createclosetag('discipline');
v_child := 'discipline';
v_key := c1.ins_discipline_key;
END LOOP;
END IF;
-- IF v_child = 'discipline' :: Dan heb je alle gegevens al.
createclosetag ('ancestor');
END;
PROCEDURE create_bgt_budgetmutatie_node (p_budget_key IN NUMBER, p_mutatie_key IN NUMBER)
AS
v_datum bgt_budgetmutatie.bgt_budgetmutatie_datum%TYPE;
v_omschrijving bgt_budgetmutatie.bgt_budgetmutatie_omschrijving%TYPE;
v_key_van bgt_budgetmutatie.bgt_budget_key_van%TYPE;
v_key_naar bgt_budgetmutatie.bgt_budget_key_naar%TYPE;
v_bedrag_van bgt_budgetmutatie.bgt_budget_bedrag_van%TYPE;
v_btwbedrag_van bgt_budgetmutatie.bgt_budget_btwbedrag_van%TYPE;
v_bedrag_naar bgt_budgetmutatie.bgt_budget_bedrag_naar%TYPE;
v_btwbedrag_naar bgt_budgetmutatie.bgt_budget_btwbedrag_naar%TYPE;
v_reserve bgt_budgetmutatie.bgt_budgetmutatie_reserve%TYPE;
v_volgnr bgt_budgetmutatie.bgt_budgetmutatie_volgnr%TYPE;
v_code bgt_budgetmutatie.bgt_budgetmutatie_code%TYPE;
v_persoon prs_perslid.prs_perslid_key%TYPE;
BEGIN
IF p_mutatie_key IS NOT NULL
THEN
SELECT bgt_budgetmutatie_datum
, bgt_budgetmutatie_omschrijving
, prs_perslid_key
, bgt_budget_key_van
, bgt_budget_key_naar
, bgt_budget_bedrag_van
, bgt_budget_btwbedrag_van
, bgt_budget_bedrag_naar
, bgt_budget_btwbedrag_naar
, bgt_budgetmutatie_reserve
, bgt_budgetmutatie_volgnr
, bgt_budgetmutatie_code
INTO v_datum
, v_omschrijving
, v_persoon
, v_key_van
, v_key_naar
, v_bedrag_van
, v_btwbedrag_van
, v_bedrag_naar
, v_btwbedrag_naar
, v_reserve
, v_volgnr
, v_code
FROM bgt_budgetmutatie
WHERE bgt_budgetmutatie_key = p_mutatie_key;
createopentag ('mutation');
createxmltagvalue ('key', mynumbertochar (p_mutatie_key));
mydatetochar ('date', v_datum);
createxmltagvalue ('remark', v_omschrijving);
IF (p_budget_key = v_key_van) THEN
createxmltagvalue ('amount', mynumbertochar (v_bedrag_van));
createxmltagvalue ('amountvat', mynumbertochar (v_btwbedrag_van));
END IF;
IF (p_budget_key = v_key_naar) THEN
createxmltagvalue ('amount', mynumbertochar (v_bedrag_naar));
createxmltagvalue ('amountvat', mynumbertochar (v_btwbedrag_naar));
END IF;
createxmltagvalue ('reserve', mynumbertochar (v_reserve));
createxmltagvalue ('sequence', mynumbertochar (v_volgnr));
createxmltagvalue ('code', v_code);
createclosetag ('mutation');
END IF;
END;
PROCEDURE create_bgt_budget_node (p_key IN NUMBER)
AS
CURSOR c_mutatie
IS
SELECT bgt_budgetmutatie_key
FROM bgt_budgetmutatie
WHERE bgt_budget_key_van = p_key
OR bgt_budget_key_naar = p_key;
v_disc_key bgt_budget.ins_discipline_key%TYPE;
v_project_key bgt_budget.bgt_project_key%TYPE;
v_rubriek_key bgt_budget.bgt_kostenrubriek_key%TYPE;
v_groep_key bgt_budget.prs_kostensoortgrp_key%TYPE;
v_soort_key bgt_budget.prs_kostensoort_key%TYPE;
v_begin bgt_budget.bgt_budget_begin%TYPE;
v_eind bgt_budget.bgt_budget_eind%TYPE;
v_aanmaak bgt_budget.bgt_budget_aanmaak%TYPE;
v_verval bgt_budget.bgt_budget_vervaldatum%TYPE;
v_bedrag bgt_budget.bgt_budget_bedrag%TYPE;
v_btwbedrag bgt_budget.bgt_budget_btwbedrag%TYPE;
v_isreserve bgt_budget.bgt_budget_isreserve%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
SELECT ins_discipline_key
, bgt_project_key
, bgt_kostenrubriek_key
, prs_kostensoortgrp_key
, prs_kostensoort_key
, bgt_budget_begin
, bgt_budget_eind
, bgt_budget_aanmaak
, bgt_budget_vervaldatum
, bgt_budget_bedrag
, bgt_budget_btwbedrag
, bgt_budget_isreserve
INTO v_disc_key
, v_project_key
, v_rubriek_key
, v_groep_key
, v_soort_key
, v_begin
, v_eind
, v_aanmaak
, v_verval
, v_bedrag
, v_btwbedrag
, v_isreserve
FROM bgt_budget
WHERE bgt_budget_key = p_key;
createopentag ('budget');
mydatetochar ('startdate', v_begin);
mydatetochar ('enddate', v_eind);
mydatetochar ('created', v_aanmaak);
mydatetochar ('expires', v_verval);
createxmltagvalue ('amount', mynumbertochar (v_bedrag));
createxmltagvalue ('withvat', mynumbertochar (v_btwbedrag));
FOR rec1 IN c_mutatie
LOOP
create_bgt_budgetmutatie_node (p_key, rec1.bgt_budgetmutatie_key);
END LOOP;
createclosetag ('budget');
END IF;
END;
PROCEDURE create_prs_kostensoort_node (p_key IN NUMBER, p_concise IN BOOLEAN DEFAULT FALSE)
AS
CURSOR c_opdracht
IS
SELECT mld_opdr_key
FROM mld_opdr
WHERE prs_kostensoort_key = p_key;
CURSOR c_budget
IS
SELECT bgt_budget_key
FROM bgt_budget
WHERE prs_kostensoort_key = p_key;
v_omschrijving prs_kostensoort.prs_kostensoort_oms%TYPE;
v_omschrijving_alt prs_kostensoort.prs_kostensoort_altcode%TYPE;
v_groep prs_kostensoortgrp.prs_kostensoortgrp_oms%TYPE;
v_groep_alt prs_kostensoortgrp.prs_kostensoortgrp_altcode%TYPE;
v_opmerking prs_kostensoort.prs_kostensoort_opmerking%TYPE;
v_refcode prs_kostensoort.prs_kostensoort_refcode%TYPE;
v_doorbelasten prs_kostensoort.prs_kostensoort_doorbelasten%TYPE;
v_btw prs_kostensoort.prs_kostensoort_btw%TYPE;
v_btwperc fin_btwtabelwaarde.fin_btwtabelwaarde_perc%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('kostensoort');
--
IF p_concise -- dan ook parent_info
THEN
create_bgt_ancestor_node('soort', p_key);
END IF;
--
SELECT k.prs_kostensoort_oms,
k.prs_kostensoort_altcode,
g.prs_kostensoortgrp_oms,
g.prs_kostensoortgrp_altcode,
k.prs_kostensoort_opmerking,
k.prs_kostensoort_refcode,
k.prs_kostensoort_doorbelasten,
k.prs_kostensoort_btw,
f.fin_btwtabelwaarde_perc
INTO v_omschrijving,
v_omschrijving_alt,
v_groep,
v_groep_alt,
v_opmerking,
v_refcode,
v_doorbelasten,
v_btw,
v_btwperc
FROM prs_kostensoort k
, prs_kostensoortgrp g
, fin_btwtabelwaarde f
WHERE k.prs_kostensoortgrp_key = g.prs_kostensoortgrp_key(+)
AND k.fin_btwtabelwaarde_key = f.fin_btwtabelwaarde_key(+)
AND k.prs_kostensoort_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('omschrijving_alt', v_omschrijving_alt);
createxmltagvalue ('groep', v_groep);
createxmltagvalue ('groep_alt', v_groep_alt);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('refcode', v_refcode);
createxmltagvalue ('doorbelasten', v_doorbelasten);
createxmltagvalue ('btw', v_btw);
--
IF p_concise THEN
FOR rec1 IN c_opdracht
LOOP
create_mld_opdr_node (rec1.mld_opdr_key, NULL, TRUE, TRUE);
END LOOP;
--
FOR rec2 IN c_budget
LOOP
create_bgt_budget_node (rec2.bgt_budget_key);
END LOOP;
END IF;
createclosetag ('kostensoort');
END IF;
END;
-- *
-- * PRS kenmerken
-- *
PROCEDURE create_prs_kenmerken (p_key IN NUMBER, p_niveau IN VARCHAR2)
AS
CURSOR c1
IS
SELECT k.prs_kenmerk_key,
lcl.x ('prs_kenmerk_omschrijving', k.prs_kenmerk_key, prs_kenmerk_omschrijving) prs_kenmerk_omschrijving,
k.prs_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
k.prs_kenmerk_lengte,
k.prs_kenmerk_dec,
k.prs_kenmerk_nmin,
k.prs_kenmerk_nmax,
k.prs_kenmerk_default,
NVL (k.prs_kenmerk_volgnr, 0) volgnummer,
lcl.x ('prs_kenmerk_dimensie',
k.prs_kenmerk_key,
prs_kenmerk_dimensie)
dimensie,
lcl.x ('prs_kenmerk_hint',
k.prs_kenmerk_key,
prs_kenmerk_hint)
hint,
prs_kenmerklink_waarde
FROM prs_kenmerk k,
(SELECT v.prs_kenmerk_key, v.prs_kenmerklink_waarde
FROM prs_kenmerklink v
WHERE v.prs_link_key = p_key
AND v.prs_kenmerklink_niveau = p_niveau
AND v.prs_kenmerklink_verwijder IS NULL) v
WHERE k.prs_kenmerk_niveau = p_niveau
AND k.prs_kenmerk_verwijder IS NULL
AND v.prs_kenmerk_key(+) = k.prs_kenmerk_key
ORDER BY k.prs_kenmerk_volgnr;
v_kenmerk_waarde prs_kenmerklink.prs_kenmerklink_waarde%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.prs_kenmerklink_waarde,
rec1.prs_kenmerk_default,
rec1.prs_kenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.prs_kenmerk_nmin,
rec1.prs_kenmerk_nmax);
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.prs_kenmerk_omschrijving,
'type',
rec1.prs_kenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.prs_kenmerk_key,
'dimensie',
rec1.dimensie,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
PROCEDURE create_prs_contactpersoon_node (p_key IN NUMBER)
AS
v_cp_naam prs_contactpersoon.prs_contactpersoon_naam%TYPE;
v_cp_voorletters prs_contactpersoon.prs_contactpersoon_voorletters%TYPE;
v_cp_voornaam prs_contactpersoon.prs_contactpersoon_voornaam%TYPE;
v_cp_aanhef prs_contactpersoon.prs_contactpersoon_aanhef%TYPE;
v_cp_telefoon1 prs_contactpersoon.prs_contactpersoon_telefoon_1%TYPE;
v_cp_telefoon2 prs_contactpersoon.prs_contactpersoon_telefoon_2%TYPE;
v_cp_fax prs_contactpersoon.prs_contactpersoon_fax%TYPE;
v_cp_email prs_contactpersoon.prs_contactpersoon_email%TYPE;
v_cp_opmerking prs_contactpersoon.prs_contactpersoon_opmerking%TYPE;
v_cp_tussenv prs_contactpersoon.prs_contactpersoon_tussenv%TYPE;
v_cp_functie prs_contactpersoon.prs_contactpersoon_functie%TYPE;
v_cp_titel prs_contactpersoon.prs_contactpersoon_titel%TYPE;
v_naam_full VARCHAR2 (255);
CURSOR c1
IS
SELECT alg_locatie_key
FROM prs_contactpersoon_locatie
WHERE prs_contactpersoon_key = p_key;
BEGIN
IF p_key IS NOT NULL
THEN
-- balen dat we contact_persoon hebben, en niet contactpersoon
createopentag ('contactpersoon');
SELECT prs_contactpersoon_naam,
prs_contactpersoon_voorletters,
prs_contactpersoon_voornaam,
prs_contactpersoon_aanhef,
prs_contactpersoon_telefoon_1,
prs_contactpersoon_telefoon_2,
prs_contactpersoon_fax,
prs_contactpersoon_email,
prs_contactpersoon_opmerking,
prs_contactpersoon_tussenv,
prs_contactpersoon_functie,
prs_contactpersoon_titel,
DECODE (prs_contactpersoon_aanhef,
NULL, '',
prs_contactpersoon_aanhef || ' ')
|| DECODE (prs_contactpersoon_voorletters,
NULL, '',
prs_contactpersoon_voorletters || ' ')
|| DECODE (prs_contactpersoon_tussenv,
NULL, '',
prs_contactpersoon_tussenv || ' ')
|| prs_contactpersoon_naam
naam_full
INTO v_cp_naam,
v_cp_voorletters,
v_cp_voornaam,
v_cp_aanhef,
v_cp_telefoon1,
v_cp_telefoon2,
v_cp_fax,
v_cp_email,
v_cp_opmerking,
v_cp_tussenv,
v_cp_functie,
v_cp_titel,
v_naam_full
FROM prs_contactpersoon
WHERE prs_contactpersoon_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('naam_full', v_naam_full);
createxmltagvalue ('naam', v_cp_naam);
createxmltagvalue ('voorletters', v_cp_voorletters);
createxmltagvalue ('voornaam', v_cp_voornaam);
createxmltagvalue ('aanhef', v_cp_aanhef);
createxmltagvalue ('telefoon1', v_cp_telefoon1);
createxmltagvalue ('telefoon2', v_cp_telefoon2);
createxmltagvalue ('fax', v_cp_fax);
createxmltagvalue ('email', v_cp_email);
createxmltagvalue ('opmerking', v_cp_opmerking);
createxmltagvalue ('tussenv', v_cp_tussenv);
createxmltagvalue ('functie', v_cp_functie);
createxmltagvalue ('titel', v_cp_titel);
FOR rec1 IN c1
LOOP
create_alg_locatie_node (rec1.alg_locatie_key,
NULL,
NULL,
NULL,
NULL,
FALSE);
END LOOP;
createclosetag ('contactpersoon');
END IF;
END;
PROCEDURE create_prs_relatietype_node (p_key IN NUMBER)
AS
v_omschrijving prs_relatietype.prs_relatietype_omschrijving%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('relatietype');
SELECT prs_relatietype_omschrijving
INTO v_omschrijving
FROM prs_relatietype
WHERE prs_relatietype_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('omschrijving', v_omschrijving);
createclosetag ('relatietype');
END IF;
END;
PROCEDURE create_prs_bedrijfadres_node (p_key IN NUMBER)
AS
BEGIN
IF p_key IS NOT NULL
THEN
FOR rec IN (SELECT *
FROM prs_bedrijfadres
WHERE prs_bedrijfadres_key = p_key)
LOOP
createopentag ('bedrijfadres');
createxmltagvalue ('key', rec.prs_bedrijfadres_key);
createxmltagvalue ('type', rec.prs_bedrijfadres_type);
createxmltagvalue ('typeopdr', rec.mld_typeopdr_key);
createxmltagvalue ('soapversion', rec.prs_bedrijfadres_soapversion);
createxmltagvalue ('soapaction', rec.prs_bedrijfadres_soapaction);
createxmltagvalue ('authmethod', rec.prs_bedrijfadres_authmethod);
createxmltagvalue ('district_key', rec.alg_district_key);
createxmltagvalue ('locatie_key', rec.alg_locatie_key);
createxmltagvalue ('mailsender', rec.prs_bedrijfadres_sender);
createxmltagvalue ('mailreply', rec.prs_bedrijfadres_replyaddress);
createxmltagvalue ('flexfiles', rec.prs_bedrijfadres_flexfiles);
createxmltagvalue ('encoding', rec.prs_bedrijfadres_encoding);
createxmltagvalue ('charset', rec.prs_bedrijfadres_charset);
createxmltagvalue ('error_handler', rec.prs_bedrijfadres_error_handler);
IF rec.prs_bedrijfadres_authmethod = 3
THEN
createxmltagvalue ('username', rec.prs_bedrijfadres_username);
createxmltagvalue ('password', rec.prs_bedrijfadres_password);
END IF;
createclosetag ('bedrijfadres');
END LOOP;
END IF;
END;
PROCEDURE create_prs_bedrijf_node (p_bedrijf_key IN NUMBER,
p_nodename IN VARCHAR2,
p_concise IN BOOLEAN)
AS
v_naam prs_bedrijf.prs_bedrijf_naam%TYPE;
v_post_adres prs_bedrijf.prs_bedrijf_post_adres%TYPE;
v_post_postcode prs_bedrijf.prs_bedrijf_post_postcode%TYPE;
v_post_plaats prs_bedrijf.prs_bedrijf_post_plaats%TYPE;
v_post_land prs_bedrijf.prs_bedrijf_post_land%TYPE;
v_bezoek_adres prs_bedrijf.prs_bedrijf_bezoek_adres%TYPE;
v_bezoek_postcode prs_bedrijf.prs_bedrijf_bezoek_postcode%TYPE;
v_bezoek_plaats prs_bedrijf.prs_bedrijf_bezoek_plaats%TYPE;
v_bezoek_land prs_bedrijf.prs_bedrijf_bezoek_land%TYPE;
v_telefoon prs_bedrijf.prs_bedrijf_telefoon%TYPE;
v_fax prs_bedrijf.prs_bedrijf_fax%TYPE;
v_contact_persoon prs_bedrijf.prs_bedrijf_contact_persoon%TYPE;
v_contact_telefoon prs_bedrijf.prs_bedrijf_contact_telefoon%TYPE;
v_contact_fax prs_bedrijf.prs_bedrijf_fax%TYPE;
v_opmerking prs_bedrijf.prs_bedrijf_opmerking%TYPE;
v_uurloon prs_bedrijf.prs_bedrijf_uurloon%TYPE;
v_leverancier_nr prs_bedrijf.prs_leverancier_nr%TYPE;
v_overeenkomst_nr prs_bedrijf.prs_overeenkomst_nr%TYPE;
v_overeenkomst_datum prs_bedrijf.prs_overeenkomst_datum%TYPE;
v_leverancier prs_bedrijf.prs_bedrijf_leverancier%TYPE;
v_uitvoerende prs_bedrijf.prs_bedrijf_uitvoerende%TYPE;
v_contract prs_bedrijf.prs_bedrijf_contract%TYPE;
v_huurder prs_bedrijf.prs_bedrijf_huurder%TYPE;
v_intern prs_bedrijf.prs_bedrijf_intern%TYPE;
v_email prs_bedrijf.prs_bedrijf_email%TYPE;
v_image_loc prs_bedrijf.prs_bedrijf_image_loc%TYPE;
v_details_loc prs_bedrijf.prs_bedrijf_details_loc%TYPE;
v_telefoon2 prs_bedrijf.prs_bedrijf_telefoon2%TYPE;
v_opmerking2 prs_bedrijf.prs_bedrijf_opmerking2%TYPE;
v_mld_adres_key_lev prs_bedrijf.mld_adres_key_lev%TYPE;
v_mld_adres_key_fac prs_bedrijf.mld_adres_key_fac%TYPE;
v_xmldetails_loc prs_bedrijf.prs_bedrijf_xmldetails_loc%TYPE;
v_bes_limiet prs_bedrijf.prs_bedrijf_bes_limiet%TYPE;
v_bes_kosten prs_bedrijf.prs_bedrijf_bes_kosten%TYPE;
v_relatietype_key prs_bedrijf.prs_relatietype_key%TYPE;
CURSOR c1
IS
SELECT prs_contactpersoon_key
FROM prs_contactpersoon
WHERE prs_contactpersoon_verwijder IS NULL
AND prs_bedrijf_key = p_bedrijf_key;
BEGIN
IF p_bedrijf_key IS NOT NULL
THEN
createopentag (p_nodename);
SELECT prs_bedrijf_naam,
prs_bedrijf_post_adres,
prs_bedrijf_post_postcode,
prs_bedrijf_post_plaats,
prs_bedrijf_post_land,
prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_land,
prs_bedrijf_telefoon,
prs_bedrijf_fax,
prs_bedrijf_contact_persoon,
prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_fax,
prs_bedrijf_opmerking,
prs_bedrijf_uurloon,
prs_leverancier_nr,
prs_overeenkomst_nr,
prs_overeenkomst_datum,
prs_bedrijf_leverancier,
prs_bedrijf_uitvoerende,
prs_bedrijf_contract,
prs_bedrijf_huurder,
prs_bedrijf_intern,
prs_bedrijf_email,
prs_bedrijf_image_loc,
prs_bedrijf_details_loc,
prs_bedrijf_telefoon2,
prs_bedrijf_opmerking2,
mld_adres_key_lev,
mld_adres_key_fac,
prs_bedrijf_xmldetails_loc,
prs_bedrijf_bes_limiet,
prs_bedrijf_bes_kosten,
prs_relatietype_key
INTO v_naam,
v_post_adres,
v_post_postcode,
v_post_plaats,
v_post_land,
v_bezoek_adres,
v_bezoek_postcode,
v_bezoek_plaats,
v_bezoek_land,
v_telefoon,
v_fax,
v_contact_persoon,
v_contact_telefoon,
v_contact_fax,
v_opmerking,
v_uurloon,
v_leverancier_nr,
v_overeenkomst_nr,
v_overeenkomst_datum,
v_leverancier,
v_uitvoerende,
v_contract,
v_huurder,
v_intern,
v_email,
v_image_loc,
v_details_loc,
v_telefoon2,
v_opmerking2,
v_mld_adres_key_lev,
v_mld_adres_key_fac,
v_xmldetails_loc,
v_bes_limiet,
v_bes_kosten,
v_relatietype_key
FROM prs_bedrijf
WHERE prs_bedrijf_key = p_bedrijf_key;
createxmltagvalue ('key', mynumbertochar (p_bedrijf_key));
createxmltagvalue ('naam', v_naam);
createxmltagvalue ('post_adres', v_post_adres);
createxmltagvalue ('post_postcode', v_post_postcode);
createxmltagvalue ('post_plaats', v_post_plaats);
createxmltagvalue ('post_land', v_post_land);
createxmltagvalue ('bezoek_adres', v_bezoek_adres);
createxmltagvalue ('bezoek_postcode', v_bezoek_postcode);
createxmltagvalue ('bezoek_plaats', v_bezoek_plaats);
createxmltagvalue ('bezoek_land', v_bezoek_land);
createxmltagvalue ('telefoon', v_telefoon);
createxmltagvalue ('fax', v_fax);
createxmltagvalue ('contact_persoon', v_contact_persoon);
createxmltagvalue ('contact_telefoon', v_contact_telefoon);
createxmltagvalue ('contact_fax', v_contact_fax);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('uurloon', v_uurloon);
createxmltagvalue ('leverancier_nr', v_leverancier_nr);
createxmltagvalue ('overeenkomst_nr', v_overeenkomst_nr);
mydatetochar ('overeenkomst_datum', v_overeenkomst_datum);
createxmltagvalue ('isleverancier', v_leverancier);
createxmltagvalue ('isuitvoerende', v_uitvoerende);
createxmltagvalue ('iscontract', v_contract);
createxmltagvalue ('ishuurder', v_huurder);
createxmltagvalue ('isintern', v_intern);
createxmltagvalue ('email', v_email);
createxmltagvalue ('xmldetails_loc', v_xmldetails_loc);
createxmltagvalue ('image_loc', v_image_loc);
createxmltagvalue ('details_loc', v_details_loc);
createxmltagvalue ('telefoon2', v_telefoon2);
createxmltagvalue ('opmerking2', v_opmerking2);
create_mld_adres_node (v_mld_adres_key_lev, 'afleveradres', TRUE);
create_mld_adres_node (v_mld_adres_key_fac, 'factuuradres', TRUE);
create_prs_kenmerken (p_bedrijf_key, 'B');
createxmltagvalue ('beslimiet', v_bes_limiet);
createxmltagvalue ('beskosten', v_bes_kosten);
FOR rec1 IN c1
LOOP
create_prs_contactpersoon_node (rec1.prs_contactpersoon_key);
END LOOP;
IF NOT p_concise
THEN
FOR rec IN (SELECT prs_bedrijfadres_key
FROM prs_bedrijfadres
WHERE prs_bedrijf_key = p_bedrijf_key)
LOOP
create_prs_bedrijfadres_node(rec.prs_bedrijfadres_key);
END LOOP;
END IF;
create_prs_relatietype_node (v_relatietype_key);
createclosetag (p_nodename);
END IF;
END;
-- * create_PRS_AFDELING_node
-- *
--
PROCEDURE create_prs_afdeling_node (p_key IN NUMBER,
p_nodename IN VARCHAR2)
AS
v_naam prs_afdeling.prs_afdeling_naam%TYPE;
v_omschrijving prs_afdeling.prs_afdeling_omschrijving%TYPE;
v_adres_key prs_afdeling.mld_adres_key%TYPE;
v_kostenplaats_key prs_afdeling.prs_kostenplaats_key%TYPE;
v_parentkey prs_afdeling.prs_afdeling_parentkey%TYPE;
v_naam1 prs_v_afdeling_fullnames.prs_afdeling_naam1%TYPE;
v_naam2 prs_v_afdeling_fullnames.prs_afdeling_naam2%TYPE;
v_naam3 prs_v_afdeling_fullnames.prs_afdeling_naam3%TYPE;
v_naam4 prs_v_afdeling_fullnames.prs_afdeling_naam4%TYPE;
v_naam5 prs_v_afdeling_fullnames.prs_afdeling_naam5%TYPE;
v_naam6 prs_v_afdeling_fullnames.prs_afdeling_naam6%TYPE;
v_bedrijf_key prs_afdeling.prs_bedrijf_key%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag (p_nodename);
SELECT d.prs_afdeling_naam,
d.prs_afdeling_omschrijving,
d.mld_adres_key,
d.prs_kostenplaats_key,
d.prs_afdeling_parentkey,
af.prs_afdeling_naam1,
af.prs_afdeling_naam2,
af.prs_afdeling_naam3,
af.prs_afdeling_naam4,
af.prs_afdeling_naam5,
af.prs_afdeling_naam6,
d.prs_bedrijf_key
INTO v_naam,
v_omschrijving,
v_adres_key,
v_kostenplaats_key,
v_parentkey,
v_naam1,
v_naam2,
v_naam3,
v_naam4,
v_naam5,
v_naam6,
v_bedrijf_key
FROM prs_afdeling d, prs_v_afdeling_fullnames af
WHERE d.prs_afdeling_key = af.prs_afdeling_key
AND d.prs_afdeling_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('naam', v_naam);
createxmltagvalue ('naam1', v_naam1);
createxmltagvalue ('naam2', v_naam2);
createxmltagvalue ('naam3', v_naam3);
createxmltagvalue ('naam4', v_naam4);
createxmltagvalue ('naam5', v_naam5);
createxmltagvalue ('naam6', v_naam6);
createxmltagvalue ('omschrijving', v_omschrijving);
create_prs_kostenplaats_node (v_kostenplaats_key, FALSE);
create_mld_adres_node (v_adres_key, 'afleveradres', TRUE);
create_prs_kenmerken (p_key, 'A');
IF v_parentkey IS NOT NULL
THEN
create_prs_afdeling_node (v_parentkey, 'parent');
ELSE
create_prs_bedrijf_node (v_bedrijf_key, 'bedrijf', TRUE);
END IF;
createclosetag (p_nodename);
END IF;
END;
-- * create_PRS_SRTPERSLID_node
-- *
--
PROCEDURE create_prs_srtperslid_node (p_key IN NUMBER)
AS
v_omschrijving prs_srtperslid.prs_srtperslid_omschrijving%TYPE;
v_opp prs_srtperslid.prs_srtperslid_opp%TYPE;
v_uurloon prs_srtperslid.prs_srtperslid_uurloon%TYPE;
v_bedrijf_key prs_srtperslid.prs_bedrijf_key%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('srtperslid');
SELECT lcl.x ('prs_srtperslid_omschrijving',
prs_srtperslid_key,
prs_srtperslid_omschrijving)
prs_srtperslid_omschrijving,
prs_bedrijf_key,
prs_srtperslid_uurloon,
prs_srtperslid_opp
INTO v_omschrijving,
v_bedrijf_key,
v_uurloon,
v_opp
FROM prs_srtperslid
WHERE prs_srtperslid_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('opp', v_opp);
createxmltagvalue ('uurloon', v_uurloon);
create_prs_bedrijf_node (v_bedrijf_key, 'bedrijf', TRUE);
createclosetag ('srtperslid');
END IF;
END;
-- * create_PRS_PERSLID_node
-- * ?? do we include srtperslid here??
-- select xml.create_PRS_PERSLID_node(1042,'Persoon') FROM DUAL
PROCEDURE create_prs_perslid_node (p_key IN NUMBER,
p_nodename IN VARCHAR2,
p_concise IN BOOLEAN)
AS
v_titel prs_perslid.prs_perslid_titel%TYPE;
v_voorletters prs_perslid.prs_perslid_voorletters%TYPE;
v_naam prs_perslid.prs_perslid_naam%TYPE;
v_tussenvoegsel prs_perslid.prs_perslid_tussenvoegsel%TYPE;
v_voornaam prs_perslid.prs_perslid_voornaam%TYPE;
v_initialen prs_perslid.prs_perslid_initialen%TYPE;
v_nr prs_perslid.prs_perslid_nr%TYPE;
v_oslogin prs_perslid.prs_perslid_oslogin%TYPE;
v_oslogin2 prs_perslid.prs_perslid_oslogin2%TYPE;
v_opp prs_perslid.prs_perslid_opp%TYPE;
v_ingangsdatum prs_perslid.prs_perslid_ingangsdatum%TYPE;
v_einddatum prs_perslid.prs_perslid_einddatum%TYPE;
v_uurloon prs_perslid.prs_perslid_uurloon%TYPE;
v_telefoonnr prs_perslid.prs_perslid_telefoonnr%TYPE;
v_email prs_perslid.prs_perslid_email%TYPE;
v_mobiel prs_perslid.prs_perslid_mobiel%TYPE;
v_afdeling_key prs_perslid.prs_afdeling_key%TYPE;
v_naam_full prs_v_perslid_fullnames_all.prs_perslid_naam_full%TYPE;
v_naam_friendly prs_v_perslid_fullnames_all.prs_perslid_naam_friendly%TYPE;
v_adres_key prs_perslid.mld_adres_key%TYPE;
v_srtperslid_key prs_perslid.prs_srtperslid_key%TYPE;
v_srtnoti_mode prs_perslid.prs_perslid_srtnoti_mode%TYPE;
v_geslacht prs_perslid.prs_perslid_geslacht%TYPE;
CURSOR c1
IS
SELECT wp.prs_werkplek_key
FROM prs_perslidwerkplek pwp, prs_werkplek wp
WHERE pwp.prs_perslid_key = p_key
AND pwp.prs_werkplek_key = wp.prs_werkplek_key
AND wp.prs_werkplek_virtueel = 0
ORDER BY pwp.prs_perslidwerkplek_volgnr, pwp.prs_perslidwerkplek_bezetting DESC;
BEGIN
IF p_key IS NOT NULL
THEN
IF p_concise
THEN
createconciseopentag (p_nodename);
ELSE
createopentag (p_nodename);
END IF;
SELECT NVL (prs_perslid_titel, ''),
NVL (prs_perslid_voorletters, ''),
NVL (prs_perslid_naam, ''),
NVL (prs_perslid_tussenvoegsel, ''),
NVL (prs_perslid_voornaam, ''),
NVL (prs_perslid_initialen, ''),
NVL (prs_perslid_nr, ''),
NVL (prs_perslid_oslogin, ''),
NVL (prs_perslid_oslogin2, ''),
NVL (prs_perslid_opp, 0),
NVL (prs_perslid_ingangsdatum, ''),
NVL (prs_perslid_einddatum, ''),
NVL (prs_perslid_uurloon, 0),
NVL (prs_perslid_telefoonnr, ''),
prs_afdeling_key,
mld_adres_key,
prs_perslid_email,
prs_perslid_mobiel,
prs_srtperslid_key,
prs_perslid_srtnoti_mode,
prs_perslid_geslacht
INTO v_titel,
v_voorletters,
v_naam,
v_tussenvoegsel,
v_voornaam,
v_initialen,
v_nr,
v_oslogin,
v_oslogin2,
v_opp,
v_ingangsdatum,
v_einddatum,
v_uurloon,
v_telefoonnr,
v_afdeling_key,
v_adres_key,
v_email,
v_mobiel,
v_srtperslid_key,
v_srtnoti_mode,
v_geslacht
FROM prs_perslid p
WHERE prs_perslid_key = p_key;
SELECT prs_perslid_naam_full, prs_perslid_naam_friendly
INTO v_naam_full, v_naam_friendly
FROM prs_v_perslid_fullnames_all
WHERE prs_perslid_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('telefoonnr', v_telefoonnr);
createxmltagvalue ('mobiel', v_mobiel);
createxmltagvalue ('email', v_email);
createxmltagvalue ('naam_full', v_naam_full);
createxmltagvalue ('naam_friendly', v_naam_friendly);
createxmltagvalue ('titel', v_titel);
createxmltagvalue ('voorletters', v_voorletters);
createxmltagvalue ('naam', v_naam);
createxmltagvalue ('tussenvoegsel', v_tussenvoegsel);
createxmltagvalue ('voornaam', v_voornaam);
createxmltagvalue ('initialen', v_initialen);
createxmltagvalue ('nr', v_nr);
createxmltagvalue ('geslacht', v_geslacht);
IF NOT p_concise
THEN
-- Fax zit nog bij de flexprops, die gingen we missen als we die weglieten
-- Er is een discussie mogelijk: concise bevat geen flexkenmerken vs. stylesheets gebruiken nu
-- Ik kies er nu voor om ze concise weg te laten, dit scheelt heel veel, en wie faxt er nog..
create_prs_kenmerken (p_key, 'P');
create_prs_srtperslid_node (v_srtperslid_key);
create_mld_adres_node (v_adres_key, 'afleveradres', TRUE);
createxmltagvalue ('oslogin', v_oslogin);
createxmltagvalue ('oslogin2', v_oslogin2);
createxmltagvalue ('opp', mynumbertochar (v_opp));
mydatetochar ('ingangsdatum', v_ingangsdatum);
mydatetochar ('einddatum', v_einddatum);
createxmltagvalue ('uurloon', mynumbertochar (v_uurloon));
FOR rec1 IN c1
LOOP
create_prs_werkplek_node (rec1.prs_werkplek_key,
p_key,
FALSE); -- is toch helaas nodig voor UWVA#25793
END LOOP;
create_prs_afdeling_node (v_afdeling_key, 'afdeling');
createxmltagvalue ('srtnoti_mode', v_srtnoti_mode);
-- Profiel toevoegen
END IF;
createclosetag (p_nodename);
END IF;
END;
-- *
-- * create_PRS_WERKPLEK_node
-- *
PROCEDURE create_prs_werkplek_node (p_werkplek_key IN NUMBER,
p_perslid_key IN NUMBER,
p_concise IN BOOLEAN)
AS
v_perslidwerkplek_key prs_perslidwerkplek.prs_perslidwerkplek_key%TYPE;
v_prs_werkplek_key prs_werkplek.prs_werkplek_key%TYPE;
v_bezetting prs_perslidwerkplek.prs_perslidwerkplek_key%TYPE;
v_volgnr prs_werkplek.prs_werkplek_volgnr%TYPE;
v_omschrijving prs_werkplek.prs_werkplek_omschrijving%TYPE;
v_vastopp prs_werkplek.prs_werkplek_vastopp%TYPE;
v_opp prs_werkplek.prs_werkplek_opp%TYPE;
v_virtueel prs_werkplek.prs_werkplek_virtueel%TYPE;
v_alg_ruimte_key prs_werkplek.prs_alg_ruimte_key%TYPE;
v_pwpvolgnr prs_perslidwerkplek.prs_perslidwerkplek_volgnr%TYPE;
BEGIN
IF p_werkplek_key IS NOT NULL
THEN
IF p_perslid_key IS NULL
THEN
SELECT wp.prs_werkplek_key,
SUM (pwp.prs_perslidwerkplek_bezetting),
wp.prs_werkplek_volgnr,
wp.prs_werkplek_omschrijving,
wp.prs_werkplek_vastopp,
wp.prs_werkplek_opp,
wp.prs_werkplek_virtueel,
wp.prs_alg_ruimte_key,
NULL
INTO v_prs_werkplek_key,
v_bezetting,
v_volgnr,
v_omschrijving,
v_vastopp,
v_opp,
v_virtueel,
v_alg_ruimte_key,
v_pwpvolgnr
FROM prs_perslidwerkplek pwp, prs_werkplek wp
WHERE pwp.prs_werkplek_key(+) = wp.prs_werkplek_key
AND wp.prs_werkplek_key = p_werkplek_key
GROUP BY wp.prs_werkplek_key,
wp.prs_werkplek_volgnr,
wp.prs_werkplek_omschrijving,
wp.prs_werkplek_vastopp,
wp.prs_werkplek_opp,
wp.prs_werkplek_virtueel,
wp.prs_alg_ruimte_key;
ELSE
SELECT wp.prs_werkplek_key,
pwp.prs_perslidwerkplek_bezetting,
wp.prs_werkplek_volgnr,
wp.prs_werkplek_omschrijving,
wp.prs_werkplek_vastopp,
wp.prs_werkplek_opp,
wp.prs_werkplek_virtueel,
wp.prs_alg_ruimte_key,
pwp.prs_perslidwerkplek_volgnr
INTO v_prs_werkplek_key,
v_bezetting,
v_volgnr,
v_omschrijving,
v_vastopp,
v_opp,
v_virtueel,
v_alg_ruimte_key,
v_pwpvolgnr
FROM prs_perslidwerkplek pwp, prs_werkplek wp
WHERE pwp.prs_werkplek_key = wp.prs_werkplek_key
AND wp.prs_werkplek_key = p_werkplek_key
AND pwp.prs_perslid_key = p_perslid_key;
END IF;
IF p_concise
THEN
createconciseopentag ('werkplek');
ELSE
createopentag ('werkplek');
END IF;
createxmltagvalue ('key', v_prs_werkplek_key);
createxmltagvalue ('bezetting', v_bezetting);
createxmltagvalue ('volgnr', v_volgnr);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('vastopp', v_vastopp);
createxmltagvalue ('opp', v_opp);
createxmltagvalue ('virtueel', v_virtueel);
createxmltagvalue ('myvolgnr', v_pwpvolgnr);
create_alg_onroerendgoed_node (v_alg_ruimte_key,
'plaats',
NULL,
p_concise,
FALSE);
createclosetag ('werkplek');
END IF;
END;
-- * create_PRS_DIENST_node
-- *
--
PROCEDURE create_prs_dienst_node (p_key IN NUMBER)
AS
v_omschrijving prs_dienst.prs_dienst_omschrijving%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('dienst');
SELECT
lcl.x ('prs_dienst_omschrijving',
prs_dienst_key,
prs_dienst_omschrijving) prs_dienst_omschrijving
INTO v_omschrijving
FROM prs_dienst
WHERE prs_dienst_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('omschrijving', v_omschrijving);
createclosetag ('dienst');
END IF;
END;
-- *
-- * ALG
-- *
PROCEDURE create_alg_srtgebouw_node (p_key IN NUMBER)
AS
v_omschrijving alg_srtgebouw.alg_srtgebouw_omschrijving%TYPE;
v_passief alg_srtgebouw.alg_srtgebouw_passief%TYPE;
v_verwijder alg_srtgebouw.alg_srtgebouw_verwijder%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
SELECT lcl.x ('alg_srtgebouw_omschrijving',
alg_srtgebouw_key,
alg_srtgebouw_omschrijving)
alg_srtgebouw_omschrijving,
alg_srtgebouw_passief,
alg_srtgebouw_verwijder
INTO v_omschrijving, v_passief, v_verwijder
FROM alg_srtgebouw
WHERE alg_srtgebouw_key = p_key;
createopentag ('srtgebouw');
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('passief', v_passief);
mydatetochar ('verwijder', v_verwijder);
createclosetag ('srtgebouw');
END IF;
END;
PROCEDURE create_alg_srtterreinsec_node (p_key IN NUMBER)
AS
v_omschrijving alg_srtterreinsector.alg_srtterreinsec_omschrijving%TYPE;
v_prijs alg_srtterreinsector.alg_srtterreinsector_prijs%TYPE;
v_verwijder alg_srtterreinsector.alg_srtterreinsector_verwijder%TYPE;
v_verhuurbaar alg_srtterreinsector.prs_verhuurbaar%TYPE;
v_code alg_srtterreinsector.alg_srtterreinsector_code%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
SELECT lcl.x ('alg_srtterreinsec_omschrijving',
alg_srtterreinsector_key,
alg_srtterreinsec_omschrijving)
alg_srtterreinsec_omschrijving,
alg_srtterreinsector_prijs,
alg_srtterreinsector_verwijder,
prs_verhuurbaar,
alg_srtterreinsector_code
INTO v_omschrijving,
v_prijs,
v_verwijder,
v_verhuurbaar,
v_code
FROM alg_srtterreinsector
WHERE alg_srtterreinsector_key = p_key;
createopentag ('srtterreinsector');
createxmltagvalue ('key', p_key);
createxmltagvalue ('code', v_code);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('prijs', v_prijs);
mydatetochar ('verwijder', v_verwijder);
createxmltagvalue ('verhuurbaar', v_verhuurbaar);
createclosetag ('srtterreinsector');
END IF;
END;
PROCEDURE create_alg_srtruimte_node (p_key IN NUMBER)
AS
v_omschrijving alg_srtruimte.alg_srtruimte_omschrijving%TYPE;
v_prijs alg_srtruimte.alg_srtruimte_prijs%TYPE;
v_verwijder alg_srtruimte.alg_srtruimte_verwijder%TYPE;
v_verhuurbaar alg_srtruimte.prs_verhuurbaar%TYPE;
v_code alg_srtruimte.alg_srtruimte_code%TYPE;
v_bevat_werkplek alg_srtruimte.prs_bevat_werkplek%TYPE;
v_uitvoertijd_td alg_srtruimte.alg_srtruimte_t_uitvoertijd.tijdsduur%TYPE;
v_uitvoertijd_e alg_srtruimte.alg_srtruimte_t_uitvoertijd.eenheid%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
SELECT lcl.x ('alg_srtruimte_omschrijving',
alg_srtruimte_key,
alg_srtruimte_omschrijving)
alg_srtruimte_omschrijving,
alg_srtruimte_prijs,
alg_srtruimte_verwijder,
prs_verhuurbaar,
alg_srtruimte_code,
prs_bevat_werkplek,
srt.alg_srtruimte_t_uitvoertijd.tijdsduur,
srt.alg_srtruimte_t_uitvoertijd.eenheid
INTO v_omschrijving,
v_prijs,
v_verwijder,
v_verhuurbaar,
v_code,
v_bevat_werkplek,
v_uitvoertijd_td,
v_uitvoertijd_e
FROM alg_srtruimte srt
WHERE alg_srtruimte_key = p_key;
createopentag ('srtruimte');
createxmltagvalue ('key', p_key);
createxmltagvalue ('code', v_code);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('prijs', v_prijs);
mydatetochar ('verwijder', v_verwijder);
createxmltagvalue ('verhuurbaar', v_verhuurbaar);
createxmltagvalue ('bevat_werkplek', v_bevat_werkplek);
createxmltagvalueattributes ('uitvoertijd',
'eenheid',
v_uitvoertijd_e,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
mynumbertochar (v_uitvoertijd_td));
createclosetag ('srtruimte');
END IF;
END;
-- *
-- * ALG kenmerken
-- *
PROCEDURE create_alg_kenmerken (p_key IN NUMBER, p_niveau IN VARCHAR2)
AS
CURSOR c1
IS
SELECT k.alg_kenmerk_key,
lcl.x ('alg_kenmerk_omschrijving',
k.alg_kenmerk_key,
alg_kenmerk_omschrijving)
alg_kenmerk_omschrijving,
k.alg_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
k.alg_kenmerk_lengte,
k.alg_kenmerk_dec,
k.alg_kenmerk_nmin,
k.alg_kenmerk_nmax,
k.alg_kenmerk_default,
NVL (k.alg_kenmerk_volgnr, 0) volgnummer,
lcl.x ('alg_kenmerk_dimensie',
k.alg_kenmerk_key,
alg_kenmerk_dimensie)
dimensie,
lcl.x ('alg_kenmerk_hint',
k.alg_kenmerk_key,
alg_kenmerk_hint)
hint,
v.alg_onrgoedkenmerk_waarde
FROM alg_kenmerk k,
(SELECT v.alg_kenmerk_key, v.alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk v
WHERE v.alg_onrgoed_key = p_key
AND v.alg_onrgoed_niveau = p_niveau
AND v.alg_onrgoedkenmerk_verwijder IS NULL) v
WHERE k.alg_kenmerk_niveau = p_niveau
AND k.alg_kenmerk_verwijder IS NULL
AND v.alg_kenmerk_key(+) = k.alg_kenmerk_key
ORDER BY k.alg_kenmerk_volgnr;
v_kenmerk_waarde alg_onrgoedkenmerk.alg_onrgoedkenmerk_waarde%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.alg_onrgoedkenmerk_waarde,
rec1.alg_kenmerk_default,
rec1.alg_kenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.alg_kenmerk_nmin,
rec1.alg_kenmerk_nmax);
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.alg_kenmerk_omschrijving,
'type',
rec1.alg_kenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.alg_kenmerk_key,
'dimensie',
rec1.dimensie,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
-- * create_ALG_TERREINSECTOR_node
-- *
--
PROCEDURE create_alg_terreinsector_node (p_terreinsector_key IN NUMBER)
AS
v_omschrijving alg_terreinsector.alg_terreinsector_omschrijving%TYPE;
v_code alg_terreinsector.alg_terreinsector_code%TYPE;
v_naam alg_terreinsector.alg_terreinsector_naam%TYPE;
v_oppervlak alg_terreinsector.alg_terreinsector_oppervlak%TYPE;
v_omtrek alg_terreinsector.alg_terreinsector_omtrek%TYPE;
v_prs_kostenplaats_key alg_terreinsector.prs_kostenplaats_key%TYPE;
v_srtterreinsector_key alg_terreinsector.alg_srtterreinsector_key%TYPE;
v_ordernr alg_terreinsector.alg_terreinsector_ordernr%TYPE;
v_vervaldatum alg_terreinsector.alg_terreinsector_vervaldatum%TYPE;
BEGIN
IF p_terreinsector_key IS NOT NULL
THEN
SELECT alg_terreinsector_omschrijving,
alg_terreinsector_code,
alg_terreinsector_naam,
alg_terreinsector_oppervlak,
alg_terreinsector_omtrek,
prs_kostenplaats_key,
alg_srtterreinsector_key,
alg_terreinsector_ordernr,
alg_terreinsector_vervaldatum
INTO v_omschrijving,
v_code,
v_naam,
v_oppervlak,
v_omtrek,
v_prs_kostenplaats_key,
v_srtterreinsector_key,
v_ordernr,
v_vervaldatum
FROM alg_terreinsector
WHERE alg_terreinsector_key = p_terreinsector_key;
createopentag ('terreinsector');
createxmltagvalue ('key', p_terreinsector_key);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('code', v_code);
createxmltagvalue ('naam', v_naam);
createxmltagvalue ('oppervlak', v_oppervlak);
createxmltagvalue ('omtrek', v_omtrek);
createxmltagvalue ('ordernr', v_ordernr);
mydatetochar ('vervaldatum', v_vervaldatum);
create_alg_kenmerken (p_terreinsector_key, 'T');
create_alg_srtterreinsec_node (v_srtterreinsector_key);
create_prs_kostenplaats_node (v_prs_kostenplaats_key, TRUE);
createclosetag ('terreinsector');
END IF;
END;
-- * create_ALG_RUIMTE_node
-- *
--
PROCEDURE create_alg_ruimte_node (p_ruimte_key IN NUMBER)
AS
v_nr alg_ruimte.alg_ruimte_nr%TYPE;
v_omschrijving alg_ruimte.alg_ruimte_omschrijving%TYPE;
v_bruto_vloeropp alg_ruimte.alg_ruimte_bruto_vloeropp%TYPE;
v_omtrek alg_ruimte.alg_ruimte_nr%TYPE;
v_inhoud alg_ruimte.alg_ruimte_inhoud%TYPE;
v_opmerking alg_ruimte.alg_ruimte_opmerking%TYPE;
v_vloer_omschrijving alg_ruimte.alg_ruimte_vloer_omschrijving%TYPE;
v_opp_gevelglas alg_ruimte.alg_ruimte_opp_gevelglas%TYPE;
v_opp_separatieglas alg_ruimte.alg_ruimte_opp_separatieglas%TYPE;
v_opp_gevelbekleding alg_ruimte.alg_ruimte_opp_gevelbekleding%TYPE;
v_srtruimte_key alg_ruimte.alg_srtruimte_key%TYPE;
v_opp_alt1 alg_ruimte.alg_ruimte_opp_alt1%TYPE;
v_opp_alt2 alg_ruimte.alg_ruimte_opp_alt2%TYPE;
v_dienstniveau_key alg_ruimte.mld_dienstniveau_key%TYPE;
v_mld_dienstniveau_oms mld_dienstniveau.mld_dienstniveau_omschr%TYPE;
v_beginuur alg_ruimte.alg_ruimte_beginuur%TYPE;
v_einduur alg_ruimte.alg_ruimte_einduur%TYPE;
v_werkdagen alg_ruimte.alg_ruimte_werkdagen%TYPE;
BEGIN
IF p_ruimte_key IS NOT NULL
THEN
SELECT alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
alg_ruimte_omtrek,
alg_ruimte_inhoud,
alg_ruimte_opmerking,
alg_ruimte_vloer_omschrijving,
alg_ruimte_opp_gevelglas,
alg_ruimte_opp_separatieglas,
alg_ruimte_opp_gevelbekleding,
alg_srtruimte_key,
alg_ruimte_opp_alt1,
alg_ruimte_opp_alt2,
mld_dienstniveau_key,
alg_ruimte_beginuur,
alg_ruimte_einduur,
alg_ruimte_werkdagen
INTO v_nr,
v_omschrijving,
v_bruto_vloeropp,
v_omtrek,
v_inhoud,
v_opmerking,
v_vloer_omschrijving,
v_opp_gevelglas,
v_opp_separatieglas,
v_opp_gevelbekleding,
v_srtruimte_key,
v_opp_alt1,
v_opp_alt2,
v_dienstniveau_key,
v_beginuur,
v_einduur,
v_werkdagen
FROM alg_ruimte
WHERE alg_ruimte_key = p_ruimte_key;
createopentag ('ruimte');
createxmltagvalue ('key', p_ruimte_key);
createxmltagvalue ('nr', v_nr);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('bruto_vloeropp', v_bruto_vloeropp);
createxmltagvalue ('opp_alt1', v_opp_alt1);
createxmltagvalue ('opp_alt2', v_opp_alt2);
createxmltagvalue ('omtrek', v_omtrek);
createxmltagvalue ('inhoud', v_inhoud);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('vloer_omschrijving', v_vloer_omschrijving);
createxmltagvalue ('opp_gevelglas', v_opp_gevelglas);
createxmltagvalue ('opp_separatieglas', v_opp_separatieglas);
createxmltagvalue ('opp_gevelbekleding', v_opp_gevelbekleding);
createxmltagvalue ('beginuur', v_beginuur);
createxmltagvalue ('einduur', v_einduur);
createxmltagvalue ('werkdagen', v_werkdagen);
IF v_dienstniveau_key IS NOT NULL
THEN
SELECT mld_dienstniveau_omschr
INTO v_mld_dienstniveau_oms
FROM mld_dienstniveau
WHERE mld_dienstniveau_key = v_dienstniveau_key;
createxmltagvalue ('mld_dienstniveau', v_mld_dienstniveau_oms);
END IF;
create_alg_kenmerken (p_ruimte_key, 'R');
create_alg_srtruimte_node (v_srtruimte_key);
createclosetag ('ruimte');
END IF;
END;
-- * create_ALG_VERDIEPING_node
-- *
-- * Indien p_withchildren TRUE is, dan worden zo mogelijk ook alle childrecords ingevoegd. Dat wordt groot!
PROCEDURE create_alg_verdieping_node (p_verdieping_key IN NUMBER,
p_ruimte_key IN NUMBER,
p_withchildren IN BOOLEAN)
AS
v_omschrijving alg_verdieping.alg_verdieping_omschrijving%TYPE;
v_volgnr alg_verdieping.alg_verdieping_volgnr%TYPE;
v_tekening alg_verdieping.alg_verdieping_tekening%TYPE;
v_in_bewerking alg_verdieping.alg_verdieping_in_bewerking%TYPE;
v_code alg_verdieping.alg_verdieping_code%TYPE;
CURSOR c1
IS
SELECT r.alg_ruimte_key
FROM alg_ruimte r
WHERE alg_verdieping_key = p_verdieping_key
AND r.alg_ruimte_verwijder IS NULL
ORDER BY r.alg_ruimte_nr;
BEGIN
IF p_verdieping_key IS NOT NULL
THEN
SELECT alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_verdieping_tekening,
alg_verdieping_in_bewerking,
alg_verdieping_code
INTO v_omschrijving,
v_volgnr,
v_tekening,
v_in_bewerking,
v_code
FROM alg_verdieping
WHERE alg_verdieping_key = p_verdieping_key;
createopentag ('verdieping');
createxmltagvalue ('key', p_verdieping_key);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('volgnr', v_volgnr);
createxmltagvalue ('tekening', v_tekening);
createxmltagvalue ('in_bewerking', v_in_bewerking);
createxmltagvalue ('code', v_code);
create_alg_kenmerken (p_verdieping_key, 'V');
IF p_ruimte_key IS NOT NULL
THEN
create_alg_ruimte_node (p_ruimte_key);
ELSIF p_withchildren
THEN
-- Maak dan een node aan voor ELKE ruimte in deze verdieping
FOR rec1 IN c1
LOOP
create_alg_ruimte_node (rec1.alg_ruimte_key);
END LOOP;
END IF;
createclosetag ('verdieping');
END IF;
END;
-- * create_ALG_GEBOUW_node
-- *
--
PROCEDURE create_alg_gebouw_node (p_gebouw_key IN NUMBER,
p_verdieping_key IN NUMBER,
p_ruimte_key IN NUMBER,
p_withchildren IN BOOLEAN)
AS
v_naam alg_gebouw.alg_gebouw_naam%TYPE;
v_code alg_gebouw.alg_gebouw_code%TYPE;
v_omschrijving alg_gebouw.alg_gebouw_omschrijving%TYPE;
v_bruto_vloeropp alg_gebouw.alg_gebouw_bruto_vloeropp%TYPE;
v_omtrek alg_gebouw.alg_gebouw_omtrek%TYPE;
v_inhoud alg_gebouw.alg_gebouw_inhoud%TYPE;
v_opmerking alg_gebouw.alg_gebouw_opmerking%TYPE;
v_srtgebouw_key alg_gebouw.alg_srtgebouw_key%TYPE;
v_ordernr alg_gebouw.alg_gebouw_ordernr%TYPE;
v_adres_key alg_gebouw.mld_adres_key%TYPE;
v_dwgx alg_gebouw.alg_gebouw_dwgx%TYPE;
v_dwgy alg_gebouw.alg_gebouw_dwgy%TYPE;
v_x alg_gebouw.alg_gebouw_x%TYPE;
v_y alg_gebouw.alg_gebouw_y%TYPE;
v_kostenplaats_key alg_gebouw.prs_kostenplaats_key%TYPE;
v_beginuur alg_gebouw.alg_gebouw_beginuur%TYPE;
v_einduur alg_gebouw.alg_gebouw_einduur%TYPE;
v_werkdagen alg_gebouw.alg_gebouw_werkdagen%TYPE;
v_verantw_key alg_gebouw.prs_perslid_key_verantw%TYPE;
v_verantw_key2 alg_gebouw.prs_perslid_key_verantw2%TYPE;
v_vervaldatum alg_gebouw.alg_gebouw_vervaldatum%TYPE;
v_mjb_score1 alg_gebouw.alg_gebouw_mjb_score1%TYPE;
CURSOR c1
IS
SELECT alg_verdieping_key
FROM alg_verdieping
WHERE alg_gebouw_key = p_gebouw_key
AND alg_verdieping_verwijder IS NULL
ORDER BY alg_verdieping_volgnr;
BEGIN
IF p_gebouw_key IS NOT NULL
THEN
SELECT alg_gebouw_naam,
alg_gebouw_code,
alg_gebouw_omschrijving,
alg_gebouw_bruto_vloeropp,
alg_gebouw_omtrek,
alg_gebouw_inhoud,
alg_gebouw_opmerking,
alg_srtgebouw_key,
alg_gebouw_ordernr,
mld_adres_key,
alg_gebouw_dwgx,
alg_gebouw_dwgy,
alg_gebouw_x,
alg_gebouw_y,
prs_kostenplaats_key,
alg_gebouw_beginuur,
alg_gebouw_einduur,
alg_gebouw_werkdagen,
prs_perslid_key_verantw,
prs_perslid_key_verantw2,
alg_gebouw_vervaldatum,
alg_gebouw_mjb_score1
INTO v_naam,
v_code,
v_omschrijving,
v_bruto_vloeropp,
v_omtrek,
v_inhoud,
v_opmerking,
v_srtgebouw_key,
v_ordernr,
v_adres_key,
v_dwgx,
v_dwgy,
v_x,
v_y,
v_kostenplaats_key,
v_beginuur,
v_einduur,
v_werkdagen,
v_verantw_key,
v_verantw_key2,
v_vervaldatum,
v_mjb_score1
FROM alg_gebouw
WHERE alg_gebouw_key = p_gebouw_key;
createopentag ('gebouw');
createxmltagvalue ('key', p_gebouw_key);
createxmltagvalue ('naam', v_naam);
createxmltagvalue ('code', v_code);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('bruto_vloeropp', v_bruto_vloeropp);
createxmltagvalue ('omtrek', v_omtrek);
createxmltagvalue ('inhoud', v_inhoud);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('ordernr', v_ordernr);
create_prs_perslid_node (v_verantw_key, 'verantwoordelijke', TRUE);
create_prs_kostenplaats_node (v_kostenplaats_key, TRUE);
create_mld_adres_node (v_adres_key, 'afleveradres', TRUE);
create_alg_kenmerken (p_gebouw_key, 'G');
create_alg_srtgebouw_node (v_srtgebouw_key);
mydatetochar ('vervaldatum', v_vervaldatum);
createxmltagvalue ('beginuur', v_beginuur);
createxmltagvalue ('einduur', v_einduur);
createxmltagvalue ('werkdagen', v_werkdagen);
IF p_verdieping_key IS NOT NULL
THEN
create_alg_verdieping_node (p_verdieping_key,
p_ruimte_key,
p_withchildren);
ELSIF p_withchildren
THEN
FOR rec1 IN c1
LOOP
create_alg_verdieping_node (rec1.alg_verdieping_key,
p_ruimte_key,
p_withchildren);
END LOOP;
END IF;
createxmltagvalue ('dwgx', v_dwgx);
createxmltagvalue ('dwgy', v_dwgy);
createxmltagvalue ('x', v_x);
createxmltagvalue ('y', v_y);
createxmltagvalue ('mjb_score1', v_mjb_score1);
createclosetag ('gebouw');
END IF;
END;
-- * create_ALG_LOCATIE_node
-- *
--
PROCEDURE create_alg_locatie_node (p_locatie_key IN NUMBER,
p_gebouw_key IN NUMBER,
p_verdieping_key IN NUMBER,
p_ruimte_key IN NUMBER,
p_terreinsector_key IN NUMBER,
p_withchildren IN BOOLEAN)
AS
v_code alg_locatie.alg_locatie_code%TYPE;
v_omschrijving alg_locatie.alg_locatie_omschrijving%TYPE;
v_adres alg_locatie.alg_locatie_adres%TYPE;
v_postcode alg_locatie.alg_locatie_postcode%TYPE;
v_plaats alg_locatie.alg_locatie_plaats%TYPE;
v_land alg_locatie.alg_locatie_land%TYPE;
v_post_adres alg_locatie.alg_locatie_post_adres%TYPE;
v_post_postcode alg_locatie.alg_locatie_post_postcode%TYPE;
v_post_plaats alg_locatie.alg_locatie_post_plaats%TYPE;
v_post_land alg_locatie.alg_locatie_post_land%TYPE;
v_tekening alg_locatie.alg_locatie_tekening%TYPE;
v_verantw alg_locatie.alg_locatie_verantw%TYPE;
v_verantw_tel alg_locatie.alg_locatie_verantw_tel%TYPE;
v_x alg_locatie.alg_locatie_x%TYPE;
v_y alg_locatie.alg_locatie_y%TYPE;
v_mjb_score1 alg_locatie.alg_locatie_mjb_score1%TYPE;
v_vervaldatum alg_locatie.alg_locatie_vervaldatum%TYPE;
CURSOR c1
IS
SELECT alg_gebouw_key
FROM alg_gebouw
WHERE alg_locatie_key = p_locatie_key
AND alg_gebouw_verwijder IS NULL
ORDER BY alg_gebouw_upper;
CURSOR c2
IS
SELECT alg_terreinsector_key
FROM alg_terreinsector
WHERE alg_locatie_key = p_locatie_key
AND alg_terreinsector_verwijder IS NULL
ORDER BY alg_terreinsector_code;
BEGIN
IF p_locatie_key IS NOT NULL
THEN
SELECT alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_adres,
alg_locatie_postcode,
alg_locatie_plaats,
alg_locatie_land,
alg_locatie_post_adres,
alg_locatie_post_postcode,
alg_locatie_post_plaats,
alg_locatie_post_land,
alg_locatie_tekening,
alg_locatie_verantw,
alg_locatie_verantw_tel,
alg_locatie_x,
alg_locatie_y,
alg_locatie_mjb_score1,
alg_locatie_vervaldatum
INTO v_code,
v_omschrijving,
v_adres,
v_postcode,
v_plaats,
v_land,
v_post_adres,
v_post_postcode,
v_post_plaats,
v_post_land,
v_tekening,
v_verantw,
v_verantw_tel,
v_x,
v_y,
v_mjb_score1,
v_vervaldatum
FROM alg_locatie
WHERE alg_locatie_key = p_locatie_key;
createopentag ('locatie');
createxmltagvalue ('key', p_locatie_key);
createxmltagvalue ('code', v_code);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('adres', v_adres);
createxmltagvalue ('postcode', v_postcode);
createxmltagvalue ('plaats', v_plaats);
createxmltagvalue ('post_land', v_land);
createxmltagvalue ('post_adres', v_post_adres);
createxmltagvalue ('post_postcode', v_post_postcode);
createxmltagvalue ('post_plaats', v_post_plaats);
createxmltagvalue ('post_land', v_post_land);
createxmltagvalue ('tekening', v_tekening);
createxmltagvalue ('verantw', v_verantw);
createxmltagvalue ('verantw_tel', v_verantw_tel);
create_alg_kenmerken (p_locatie_key, 'L');
IF p_gebouw_key IS NOT NULL
THEN
create_alg_gebouw_node (p_gebouw_key,
p_verdieping_key,
p_ruimte_key,
p_withchildren);
ELSE
IF p_terreinsector_key IS NOT NULL
THEN
create_alg_terreinsector_node (p_terreinsector_key);
ELSIF p_withchildren
THEN
FOR rec2 IN c2
LOOP
create_alg_terreinsector_node (rec2.alg_terreinsector_key);
END LOOP;
FOR rec1 IN c1
LOOP
create_alg_gebouw_node (rec1.alg_gebouw_key,
p_verdieping_key,
p_ruimte_key,
p_withchildren);
END LOOP;
END IF;
END IF;
createxmltagvalue ('x', v_x);
createxmltagvalue ('y', v_y);
createxmltagvalue ('mjb_score1', v_mjb_score1);
mydatetochar ('vervaldatum', v_vervaldatum);
createclosetag ('locatie');
END IF;
END;
-- * create_ALG_DISTRICT_node
-- *
--
PROCEDURE create_alg_district_node (p_district_key IN NUMBER,
p_locatie_key IN NUMBER,
p_gebouw_key IN NUMBER,
p_verdieping_key IN NUMBER,
p_ruimte_key IN NUMBER,
p_terreinsector_key IN NUMBER,
p_withchildren IN BOOLEAN)
AS
v_omschrijving alg_district.alg_district_omschrijving%TYPE;
CURSOR c1
IS
SELECT alg_locatie_key
FROM alg_locatie
WHERE alg_district_key = p_district_key
AND alg_locatie_verwijder IS NULL
ORDER BY alg_locatie_code;
BEGIN
IF p_district_key IS NOT NULL
THEN
SELECT alg_district_omschrijving
INTO v_omschrijving
FROM alg_district
WHERE alg_district_key = p_district_key;
createopentag ('district');
createxmltagvalue ('key', p_district_key);
createxmltagvalue ('omschrijving', v_omschrijving);
create_alg_kenmerken (p_district_key, 'D');
IF p_locatie_key IS NOT NULL
THEN
create_alg_locatie_node (p_locatie_key,
p_gebouw_key,
p_verdieping_key,
p_ruimte_key,
p_terreinsector_key,
p_withchildren);
ELSIF p_withchildren
THEN
FOR rec1 IN c1
LOOP
create_alg_locatie_node (rec1.alg_locatie_key,
p_gebouw_key,
p_verdieping_key,
p_ruimte_key,
p_terreinsector_key,
p_withchildren);
END LOOP;
END IF;
createclosetag ('district');
END IF;
END;
-- * create_ALG_REGIO_node
-- *
--
PROCEDURE create_alg_regio_node (p_regio_key IN NUMBER,
p_district_key IN NUMBER,
p_locatie_key IN NUMBER,
p_gebouw_key IN NUMBER,
p_verdieping_key IN NUMBER,
p_ruimte_key IN NUMBER,
p_terreinsector_key IN NUMBER,
p_withchildren IN BOOLEAN)
AS
v_omschrijving alg_regio.alg_regio_omschrijving%TYPE;
CURSOR c1
IS
SELECT alg_district_key
FROM alg_district
WHERE alg_regio_key = p_regio_key
AND alg_district_verwijder IS NULL
ORDER BY alg_district_upper;
BEGIN
IF p_regio_key IS NOT NULL
THEN
SELECT alg_regio_omschrijving
INTO v_omschrijving
FROM alg_regio
WHERE alg_regio_key = p_regio_key;
createopentag ('regio');
createxmltagvalue ('key', p_regio_key);
createxmltagvalue ('omschrijving', v_omschrijving);
IF p_district_key IS NOT NULL
THEN
create_alg_district_node (p_district_key,
p_locatie_key,
p_gebouw_key,
p_verdieping_key,
p_ruimte_key,
p_terreinsector_key,
p_withchildren);
ELSIF p_withchildren
THEN
FOR rec1 IN c1
LOOP
create_alg_district_node (rec1.alg_district_key,
p_locatie_key,
p_gebouw_key,
p_verdieping_key,
p_ruimte_key,
p_terreinsector_key,
p_withchildren);
END LOOP;
END IF;
createclosetag ('regio');
END IF;
END;
-- * create_ALG_ONRGOED_node
-- *
--
PROCEDURE create_alg_onroerendgoed_node (p_key IN NUMBER,
p_nodename IN VARCHAR2,
p_lockey IN NUMBER,
p_concise IN BOOLEAN,
p_withchildren IN BOOLEAN)
AS
v_terreinsector_key alg_terreinsector.alg_terreinsector_key%TYPE;
v_ruimte_key alg_ruimte.alg_ruimte_key%TYPE;
v_verdieping_key alg_verdieping.alg_verdieping_key%TYPE;
v_gebouw_key alg_gebouw.alg_gebouw_key%TYPE;
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
v_district_key alg_district.alg_district_key%TYPE;
v_regio_key alg_regio.alg_regio_key%TYPE;
v_type VARCHAR2 (1);
v_plaatsaanduiding alg_v_plaatsaanduiding.alg_plaatsaanduiding%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
IF p_lockey IS NOT NULL
THEN
SELECT alg_locatie_code, 'L'
INTO v_plaatsaanduiding, v_type
FROM alg_locatie
WHERE alg_locatie_key = p_lockey;
ELSE
SELECT alg_plaatsaanduiding, alg_onroerendgoed_type
INTO v_plaatsaanduiding, v_type
FROM alg_v_plaatsaanduiding_all
WHERE alg_onroerendgoed_keys = p_key
AND alg_onroerendgoed_type <> 'L';
END IF;
IF NOT p_concise
THEN
BEGIN
IF p_lockey IS NOT NULL
THEN
SELECT NULL,
NULL,
NULL,
NULL,
l.alg_locatie_key,
d.alg_district_key,
d.alg_regio_key,
'L'
INTO v_terreinsector_key,
v_ruimte_key,
v_verdieping_key,
v_gebouw_key,
v_locatie_key,
v_district_key,
v_regio_key,
v_type
FROM alg_locatie l, alg_district d
WHERE p_lockey = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key;
ELSE
SELECT aog.alg_terreinsector_key,
aog.alg_ruimte_key,
aog.alg_verdieping_key,
aog.alg_gebouw_key,
aog.alg_locatie_key,
d.alg_district_key,
d.alg_regio_key,
aog.alg_type
INTO v_terreinsector_key,
v_ruimte_key,
v_verdieping_key,
v_gebouw_key,
v_locatie_key,
v_district_key,
v_regio_key,
v_type
FROM alg_v_allonroerendgoed aog,
alg_locatie l,
alg_district d
WHERE p_key = aog.alg_onroerendgoed_keys
AND aog.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
SELECT NULL,
NULL,
NULL,
NULL,
l.alg_locatie_key,
d.alg_district_key,
d.alg_regio_key,
'L'
INTO v_terreinsector_key,
v_ruimte_key,
v_verdieping_key,
v_gebouw_key,
v_locatie_key,
v_district_key,
v_regio_key,
v_type
FROM alg_locatie l, alg_district d
WHERE p_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key;
END;
END IF;
IF p_concise
THEN
createopentagattributes (p_nodename,
'type',
v_type,
'mode',
'concise',
NULL,
NULL,
NULL,
NULL);
ELSE
createopentagattributes (p_nodename,
'type',
v_type,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
END IF;
createxmltagvalue ('plaatsaanduiding', v_plaatsaanduiding);
createxmltagvalue ('key', p_key);
IF NOT p_concise
THEN
create_alg_regio_node (v_regio_key,
v_district_key,
v_locatie_key,
v_gebouw_key,
v_verdieping_key,
v_ruimte_key,
v_terreinsector_key,
p_withchildren);
END IF;
createclosetag (p_nodename);
END IF;
END;
-- *
-- * INS kenmerken
-- *
PROCEDURE create_ins_kenmerken (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.ins_kenmerk_key,
lcl.x ('ins_srtkenmerk_omschrijving', s.ins_srtkenmerk_key, ins_srtkenmerk_omschrijving) ins_srtkenmerk_omschrijving,
s.ins_srtkenmerk_kenmerktype,
s.fac_kenmerkdomein_key,
s.ins_srtkenmerk_lengte,
s.ins_srtkenmerk_dec,
s.ins_srtkenmerk_nmin,
s.ins_srtkenmerk_nmax,
k.ins_kenmerk_default,
NVL (k.ins_kenmerk_volgnummer, 0) volgnummer,
lcl.x ('ins_srtkenmerk_dimensie',
s.ins_srtkenmerk_key,
ins_srtkenmerk_dimensie)
dimensie,
lcl.x ('ins_kenmerk_hint',
k.ins_kenmerk_key,
ins_kenmerk_hint)
hint,
v.ins_kenmerkdeel_waarde,
v.ins_kenmerkdeel_aanmaak,
v.ins_kenmerkdeel_verwijder
FROM ins_kenmerk k,
ins_srtkenmerk s,
ins_deel d,
ins_srtgroep sg,
ins_srtdeel sd,
(SELECT v.ins_kenmerk_key,
v.ins_kenmerkdeel_waarde,
v.ins_kenmerkdeel_aanmaak,
v.ins_kenmerkdeel_verwijder
FROM ins_kenmerkdeel v
WHERE v.ins_deel_key = p_key) v
WHERE ( (k.ins_srtinstallatie_key IS NULL
AND k.ins_kenmerk_niveau = 'D')
OR (d.ins_discipline_key = k.ins_srtinstallatie_key
AND k.ins_kenmerk_niveau = 'D')
OR (d.ins_srtdeel_key = k.ins_srtinstallatie_key
AND k.ins_kenmerk_niveau = 'S')
OR (sg.ins_srtgroep_key = k.ins_srtinstallatie_key
AND k.ins_kenmerk_niveau = 'G'))
AND d.ins_deel_key = p_key
AND k.ins_kenmerk_verwijder IS NULL
AND ins_kenmerk_bewerkniveau = 'D'
AND s.ins_srtkenmerk_verwijder IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND k.ins_srtkenmerk_key = s.ins_srtkenmerk_key
AND v.ins_kenmerk_key(+) = k.ins_kenmerk_key
ORDER BY k.ins_kenmerk_volgnummer;
v_kenmerk_waarde ins_kenmerkdeel.ins_kenmerkdeel_waarde%TYPE;
v_kenmerk_aanmaak ins_kenmerkdeel.ins_kenmerkdeel_aanmaak%TYPE;
v_kenmerk_verwijder ins_kenmerkdeel.ins_kenmerkdeel_verwijder%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_aanmaak := rec1.ins_kenmerkdeel_aanmaak;
v_kenmerk_verwijder := rec1.ins_kenmerkdeel_verwijder;
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.ins_kenmerkdeel_waarde,
rec1.ins_kenmerk_default,
rec1.ins_srtkenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.ins_srtkenmerk_nmin,
rec1.ins_srtkenmerk_nmax);
createxmltagvalueattributes (
'kenmerk',
'naam',
rec1.ins_srtkenmerk_omschrijving,
'type',
rec1.ins_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.ins_kenmerk_key,
'aanmaak',
TO_CHAR (v_kenmerk_aanmaak, 'YYYYMMDD HH24:MI'),
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
-- * create_INS_DEEL_node
PROCEDURE create_ins_deel_node (p_key IN NUMBER, p_concise IN BOOLEAN)
AS
v_ins_srtdeel_key ins_deel.ins_srtdeel_key%TYPE;
v_ins_alg_ruimte_key ins_deel.ins_alg_ruimte_key%TYPE;
v_ins_alg_ruimte_type ins_deel.ins_alg_ruimte_type%TYPE;
v_ins_alg_ruimte_key_org ins_deel.ins_alg_ruimte_key_org%TYPE;
v_ins_alg_ruimte_type_org ins_deel.ins_alg_ruimte_type_org%TYPE;
v_aantal ins_deel.ins_deel_aantal%TYPE;
v_omschrijving ins_deel.ins_deel_omschrijving%TYPE;
v_opmerking ins_deel.ins_deel_opmerking%TYPE;
v_ins_discipline_key ins_deel.ins_discipline_key%TYPE;
v_ins_alg_locatie_key ins_deel.ins_alg_locatie_key%TYPE;
v_parent_key ins_deel.ins_deel_parent_key%TYPE;
v_omtrek ins_deel.ins_deel_omtrek%TYPE;
v_oppervlak ins_deel.ins_deel_oppervlak%TYPE;
v_dwgx ins_deel.ins_deel_dwgx%TYPE;
v_dwgy ins_deel.ins_deel_dwgy%TYPE;
v_dwgz ins_deel.ins_deel_dwgz%TYPE;
v_dwgrotatie ins_deel.ins_deel_dwgrotatie%TYPE;
v_dwgschaal ins_deel.ins_deel_dwgschaal%TYPE;
v_x ins_deel.ins_deel_x%TYPE;
v_y ins_deel.ins_deel_y%TYPE;
v_mjb_score1 ins_deel.ins_deel_mjb_score1%TYPE;
v_mjb_score2 ins_deel.ins_deel_mjb_score2%TYPE;
v_vervaldatum ins_deel.ins_deel_vervaldatum%TYPE;
v_uitvoertijd_td ins_deel.ins_deel_t_uitvoertijd.tijdsduur%TYPE;
v_uitvoertijd_e ins_deel.ins_deel_t_uitvoertijd.eenheid%TYPE;
v_perslid_key_beh ins_deel.prs_perslid_key_beh%TYPE;
CURSOR c1
IS
SELECT ins_deel_key, ins_deel_omschrijving
FROM ins_deel
WHERE ins_deel_parent_key = p_key AND ins_deel_verwijder IS NULL
ORDER BY ins_deel_upper;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('deel');
SELECT ins_srtdeel_key,
ins_alg_ruimte_key,
ins_alg_ruimte_type,
ins_alg_ruimte_key_org,
ins_alg_ruimte_type_org,
ins_deel_aantal,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_discipline_key,
ins_alg_locatie_key,
ins_deel_parent_key,
ins_deel_omtrek,
ins_deel_oppervlak,
ins_deel_dwgx,
ins_deel_dwgy,
ins_deel_dwgz,
ins_deel_dwgrotatie,
ins_deel_dwgschaal,
ins_deel_x,
ins_deel_y,
ins_deel_mjb_score1,
ins_deel_mjb_score2,
ins_deel_vervaldatum,
id.ins_deel_t_uitvoertijd.tijdsduur,
id.ins_deel_t_uitvoertijd.eenheid,
prs_perslid_key_beh
INTO v_ins_srtdeel_key,
v_ins_alg_ruimte_key,
v_ins_alg_ruimte_type,
v_ins_alg_ruimte_key_org,
v_ins_alg_ruimte_type_org,
v_aantal,
v_omschrijving,
v_opmerking,
v_ins_discipline_key,
v_ins_alg_locatie_key,
v_parent_key,
v_omtrek,
v_oppervlak,
v_dwgx,
v_dwgy,
v_dwgz,
v_dwgrotatie,
v_dwgschaal,
v_x,
v_y,
v_mjb_score1,
v_mjb_score2,
v_vervaldatum,
v_uitvoertijd_td,
v_uitvoertijd_e,
v_perslid_key_beh
FROM ins_deel id
WHERE ins_deel_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('binding', v_ins_alg_ruimte_type);
IF v_ins_alg_ruimte_type = 'R'
THEN
create_alg_onroerendgoed_node (v_ins_alg_ruimte_key,
'plaats',
NULL,
p_concise,
FALSE);
ELSIF v_ins_alg_ruimte_type = 'P'
THEN
create_prs_perslid_node (v_ins_alg_ruimte_key, 'persoon', p_concise);
ELSIF v_ins_alg_ruimte_type = 'A'
THEN
create_prs_afdeling_node (v_ins_alg_ruimte_key, 'afdeling');
ELSIF v_ins_alg_ruimte_type = 'W'
THEN
create_prs_werkplek_node (v_ins_alg_ruimte_key, NULL, p_concise);
ELSIF v_ins_alg_ruimte_type = 'T'
THEN
create_alg_terreinsector_node (v_ins_alg_ruimte_key);
END IF;
createxmltagvalue ('omschrijving', v_omschrijving);
IF NOT p_concise
THEN
create_prs_perslid_node (v_perslid_key_beh, 'beheerder', TRUE);
createxmltagvalue ('aantal', v_aantal);
createxmltagvalue ('uitgeleend', v_ins_alg_ruimte_type_org);
createxmltagvalue ('omtrek', v_omtrek);
createxmltagvalue ('oppervlak', v_oppervlak);
createxmltagvalue ('dwgx', v_dwgx);
createxmltagvalue ('dwgy', v_dwgy);
createxmltagvalue ('dwgz', v_dwgz);
createxmltagvalue ('dwgrotatie', v_dwgrotatie);
createxmltagvalue ('dwgschaal', v_dwgschaal);
createxmltagvalue ('x', v_x);
createxmltagvalue ('y', v_y);
createxmltagvalue ('mjb_score1', v_mjb_score1);
createxmltagvalue ('mjb_score2', v_mjb_score2);
mydatetochar ('vervaldatum', v_vervaldatum);
createxmltagvalueattributes ('uitvoertijd',
'eenheid',
v_uitvoertijd_e,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
mynumbertochar (v_uitvoertijd_td));
create_ins_kenmerken (p_key);
create_ins_srtdeel_node (v_ins_srtdeel_key, p_concise);
FOR rec1 IN c1
LOOP
create_ins_deel_node (rec1.ins_deel_key, FALSE);
END LOOP;
create_fac_tracking_node ('deel', p_key);
-- TER OVERWEGING: loop voor create_ins_deelsrtcontr_node()
END IF;
createclosetag ('deel');
END IF;
END;
-- INSPECTIES
PROCEDURE create_ins_srtcontrole_node (p_key IN NUMBER, p_deel_key IN NUMBER)
AS
v_srtcontrole_omschrijving ins_srtcontrole.ins_srtcontrole_omschrijving%TYPE;
v_srtcontrole_info ins_srtcontrole.ins_srtcontrole_info%TYPE;
v_srtcontrole_periode ins_srtcontrole.ins_srtcontrole_periode%TYPE;
v_srtcontrole_eenheid ins_srtcontrole.ins_srtcontrole_eenheid%TYPE;
v_srtcontrole_bits ins_srtcontrole.ins_srtcontrole_bits%TYPE;
v_srtcontrole_mode ins_srtcontrole.ins_srtcontrole_mode%TYPE;
v_srtcontrole_groep ins_srtcontrole.ins_srtcontrole_groep%TYPE;
v_srtcontrole_level ins_srtcontrole.ins_srtcontrole_level%TYPE;
v_srtcontrole_kosten ins_srtcontrole.ins_srtcontrole_kosten%TYPE;
v_srtcontrole_kosten2 ins_srtcontrole.ins_srtcontrole_kosten%TYPE;
v_srtcontrole_kosten3 ins_srtcontrole.ins_srtcontrole_kosten%TYPE;
v_srtcontrole_uren ins_srtcontrole.ins_srtcontrole_uren%TYPE;
v_srtcontrole_materiaal ins_srtcontrole.ins_srtcontrole_materiaal%TYPE;
v_srtcontrole_opmerking ins_srtcontrole.ins_srtcontrole_opmerking%TYPE;
v_srtcontrole_eind ins_srtcontrole.ins_srtcontrole_eind%TYPE;
v_srtcontrole_type ctr_disc_params.ctr_disc_params_controle_type%TYPE;
v_srtcontroledl_xcp_key ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_key%TYPE;
v_srtcontroledl_xcp_eind ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_eind%TYPE;
l_typetext fac_locale.fac_locale_tekst%TYPE;
v_kostenplaats_key ins_srtcontrole.prs_kostenplaats_key%TYPE;
BEGIN
DBMS_OUTPUT.put_line (p_key);
DBMS_OUTPUT.put_line (p_deel_key);
IF p_key IS NOT NULL
THEN
createopentag ('srtcontrole');
SELECT ins_srtcontrole_omschrijving,
ins_srtcontrole_info,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_bits,
ins_srtcontrole_mode,
ins_srtcontrole_groep,
ins_srtcontrole_level,
ins_srtcontrole_kosten,
ins_srtcontrole_kosten2,
ins_srtcontrole_kosten3,
ins_srtcontrole_uren,
ins_srtcontrole_materiaal,
ins_srtcontrole_opmerking,
ins_srtcontrole_eind,
ctr_disc_params_controle_type,
prs_kostenplaats_key
INTO v_srtcontrole_omschrijving,
v_srtcontrole_info,
v_srtcontrole_periode,
v_srtcontrole_eenheid,
v_srtcontrole_bits,
v_srtcontrole_mode,
v_srtcontrole_groep,
v_srtcontrole_level,
v_srtcontrole_kosten,
v_srtcontrole_kosten2,
v_srtcontrole_kosten3,
v_srtcontrole_uren,
v_srtcontrole_materiaal,
v_srtcontrole_opmerking,
v_srtcontrole_eind,
v_srtcontrole_type,
v_kostenplaats_key
FROM ins_srtcontrole isc,
ctr_disc_params cdp
WHERE ins_srtcontrole_key = p_key
AND isc.ctr_discipline_key = cdp.ctr_ins_discipline_key;
-- check for effective exceptions and use those
IF p_deel_key IS NOT NULL
THEN
BEGIN
SELECT ins_srtcontroledl_xcp_key,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_eenheid,
ins_srtcontroledl_xcp_bits,
ins_srtcontroledl_xcp_groep,
ins_srtcontroledl_xcp_eind,
ins_srtcontroledl_xcp_kosten,
ins_srtcontroledl_xcp_kosten2,
ins_srtcontroledl_xcp_kosten3,
ins_srtcontroledl_xcp_uren,
ins_srtcontroledl_xcp_materia
INTO v_srtcontroledl_xcp_key,
v_srtcontrole_periode,
v_srtcontrole_eenheid,
v_srtcontrole_bits,
v_srtcontrole_groep,
v_srtcontroledl_xcp_eind,
v_srtcontrole_kosten,
v_srtcontrole_kosten2,
v_srtcontrole_kosten3,
v_srtcontrole_uren,
v_srtcontrole_materiaal
FROM ins_srtcontroledl_xcp
WHERE ins_deel_key = p_deel_key AND ins_srtcontrole_key = p_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
END;
END IF;
END IF;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_srtcontrole_omschrijving);
IF v_srtcontroledl_xcp_key IS NOT NULL
THEN
createxmltagvalue ('isexception', 1);
END IF;
createxmltagvalue ('periode', v_srtcontrole_periode);
createxmltagvalue ('eenheid', v_srtcontrole_eenheid);
createxmltagvalue ('bits', v_srtcontrole_bits);
createxmltagvalue ('mode', v_srtcontrole_mode);
createxmltagvalue ('groep', v_srtcontrole_groep);
createxmltagvalue ('level', v_srtcontrole_level);
createxmltagvalue ('kosten', v_srtcontrole_kosten);
createxmltagvalue ('kosten2', v_srtcontrole_kosten2);
createxmltagvalue ('kosten3', v_srtcontrole_kosten3);
createxmltagvalue ('uren', v_srtcontrole_uren);
createxmltagvalue ('materiaal', v_srtcontrole_materiaal);
createxmltagvalue ('opmerking', v_srtcontrole_opmerking);
mydatetochar ('einddatum', v_srtcontrole_eind);
SELECT DECODE (v_srtcontrole_type,
1, lcl.l ('lcl_ins_srtcontrole_insp'),
2, lcl.l ('lcl_ins_srtcontrole_repl'),
3, lcl.l ('lcl_ins_srtcontrole_cert'),
'')
INTO l_typetext
FROM DUAL;
createxmltagvalue ('type', l_typetext);
createxmltagvalue ('type_code', v_srtcontrole_type);
create_prs_kostenplaats_node (v_kostenplaats_key, TRUE);
createclosetag ('srtcontrole');
END;
PROCEDURE create_controle_kenmerken (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.ins_kenmerk_key,
lcl.x ('ins_srtkenmerk_omschrijving',
s.ins_srtkenmerk_key,
ins_srtkenmerk_omschrijving)
ins_srtkenmerk_omschrijving,
s.ins_srtkenmerk_kenmerktype,
s.fac_kenmerkdomein_key,
s.ins_srtkenmerk_lengte,
s.ins_srtkenmerk_dec,
s.ins_srtkenmerk_nmin,
s.ins_srtkenmerk_nmax,
k.ins_kenmerk_default,
NVL (k.ins_kenmerk_volgnummer, 0) volgnummer,
lcl.x ('ins_srtkenmerk_dimensie', s.ins_srtkenmerk_key, ins_srtkenmerk_dimensie)
dimensie,
lcl.x ('ins_kenmerk_hint', k.ins_kenmerk_key, ins_kenmerk_hint) hint,
v.ins_kmdeelsrtcontr_waarde,
v.ins_kmdeelsrtcontr_aanmaak,
v.ins_kmdeelsrtcontr_verwijder
FROM ins_kenmerk k,
ins_srtkenmerk s,
ins_deelsrtcontrole d,
(SELECT v.ins_kenmerk_key,
v.ins_kmdeelsrtcontr_waarde,
v.ins_kmdeelsrtcontr_aanmaak,
v.ins_kmdeelsrtcontr_verwijder
FROM ins_kmdeelsrtcontr v
WHERE v.ins_deelsrtcontrole_key = p_key) v
WHERE k.ins_kenmerk_niveau = 'C'
AND (k.ins_srtinstallatie_key = d.ins_srtcontrole_key OR k.ins_srtinstallatie_key IS NULL)
AND d.ins_deelsrtcontrole_key = p_key
AND k.ins_kenmerk_verwijder IS NULL
AND ins_kenmerk_bewerkniveau = 'D'
AND s.ins_srtkenmerk_verwijder IS NULL
AND k.ins_srtkenmerk_key = s.ins_srtkenmerk_key
AND v.ins_kenmerk_key(+) = k.ins_kenmerk_key
ORDER BY k.ins_kenmerk_volgnummer;
v_kenmerk_waarde ins_kmdeelsrtcontr.ins_kmdeelsrtcontr_waarde%TYPE;
v_kenmerk_aanmaak ins_kmdeelsrtcontr.ins_kmdeelsrtcontr_aanmaak%TYPE;
v_kenmerk_verwijder ins_kmdeelsrtcontr.ins_kmdeelsrtcontr_verwijder%TYPE;
BEGIN
FOR rec1 IN c1 LOOP
v_kenmerk_aanmaak := rec1.ins_kmdeelsrtcontr_aanmaak;
v_kenmerk_verwijder := rec1.ins_kmdeelsrtcontr_verwijder;
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.ins_kmdeelsrtcontr_waarde,
rec1.ins_kenmerk_default,
rec1.ins_srtkenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.ins_srtkenmerk_nmin,
rec1.ins_srtkenmerk_nmax);
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.ins_srtkenmerk_omschrijving,
'type',
rec1.ins_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.ins_kenmerk_key,
'aanmaak',
TO_CHAR (v_kenmerk_aanmaak, 'YYYYMMDD HH24:MI'),
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
PROCEDURE create_ins_deelsrtcontr_node (p_key IN NUMBER)
AS
v_deel_key ins_deelsrtcontrole.ins_deel_key%TYPE;
v_srtcontrole_key ins_deelsrtcontrole.ins_srtcontrole_key%TYPE;
v_deelsrtcontrole_datum ins_deelsrtcontrole.ins_deelsrtcontrole_datum%TYPE;
v_deelsrtcontrole_datum_org ins_deelsrtcontrole.ins_deelsrtcontrole_datum_org%TYPE;
v_controlemode_key ins_deelsrtcontrole.ins_controlemode_key%TYPE;
v_deelsrtcontrole_opmerking ins_deelsrtcontrole.ins_deelsrtcontrole_opmerking%TYPE;
v_deelsrtcontrole_plan_opm ins_deelsrtcontrole.ins_deelsrtcontrole_plan_opm%TYPE;
v_deelsrtcontrole_plandatum ins_deelsrtcontrole.ins_deelsrtcontrole_plandatum%TYPE;
v_deelsrtcontrole_status ins_deelsrtcontrole.ins_deelsrtcontrole_status%TYPE;
v_perslid_key ins_deelsrtcontrole.prs_perslid_key%TYPE;
v_controlemode_oms ins_controlemode.ins_controlemode_oms%TYPE;
v_controlemode_opmerking ins_controlemode.ins_controlemode_opmerking%TYPE;
v_controlemode_success ins_controlemode.ins_controlemode_success%TYPE;
v_controlestatus_omschr ins_controlestatuses.ins_controlestatus_omschr%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('controle');
SELECT ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_datum,
ins_deelsrtcontrole_datum_org,
dsc.ins_controlemode_key,
ins_deelsrtcontrole_opmerking,
ins_deelsrtcontrole_plan_opm,
ins_deelsrtcontrole_plandatum,
ins_deelsrtcontrole_status,
prs_perslid_key,
ins_controlemode_oms,
ins_controlemode_opmerking,
ins_controlemode_success,
ins_controlestatus_omschr
INTO v_deel_key,
v_srtcontrole_key,
v_deelsrtcontrole_datum,
v_deelsrtcontrole_datum_org,
v_controlemode_key,
v_deelsrtcontrole_opmerking,
v_deelsrtcontrole_plan_opm,
v_deelsrtcontrole_plandatum,
v_deelsrtcontrole_status,
v_perslid_key,
v_controlemode_oms,
v_controlemode_opmerking,
v_controlemode_success,
v_controlestatus_omschr
FROM ins_deelsrtcontrole dsc, ins_controlemode cm, ins_controlestatuses cs
WHERE dsc.ins_controlemode_key = cm.ins_controlemode_key(+)
AND cs.ins_controlestatus_key = dsc.ins_deelsrtcontrole_status
AND ins_deelsrtcontrole_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('status_key', v_deelsrtcontrole_status);
createxmltagvalue ('status', v_controlestatus_omschr);
create_ins_srtcontrole_node (v_srtcontrole_key, v_deel_key);
--createxmltagvalue ('controlemode', v_controlemode_key);
createxmltagvalue ('controle_omschrijving', v_controlemode_oms);
createxmltagvalue ('controle_opmerking', v_controlemode_opmerking);
createxmltagvalue ('controle_succes', v_controlemode_success);
mydatetochar ('datum', v_deelsrtcontrole_datum);
mydatetochar ('orgdatum', v_deelsrtcontrole_datum_org);
mydatetochar ('plandatum', v_deelsrtcontrole_plandatum);
createxmltagvalue ('opmerking', v_deelsrtcontrole_opmerking);
createxmltagvalue ('plan_opm', v_deelsrtcontrole_plan_opm);
create_ins_deel_node (v_deel_key, TRUE);
create_prs_perslid_node (v_perslid_key, 'inspector', TRUE);
create_controle_kenmerken (p_key);
create_fac_tracking_node ('controle', p_key);
createclosetag ('controle');
END IF;
END;
PROCEDURE create_ins_taak_node (p_key IN NUMBER)
AS
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('taak');
createxmltagvalue ('key', p_key);
create_ins_srtcontrole_node (p_key, NULL);
create_fac_tracking_node ('taak', p_key);
createclosetag ('taak');
END IF;
END;
-- *
-- * MLD zaken
-- *
PROCEDURE create_mld_melding_note_node (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT mld_melding_note_key,
mld_melding_note_aanmaak,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag,
mld_melding_note_wijzigdatum
FROM mld_melding_note
WHERE mld_melding_key = p_key
ORDER BY mld_melding_note_key;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('notes');
FOR rec1 IN c1
LOOP
createopentag ('note');
createxmltagvalue ('key', rec1.mld_melding_note_key);
createxmltagvalue ('flag', BITAND(rec1.mld_melding_note_flag, 191)); -- reset de hier irrelevante 64-bit om compatibel te blijven
mydatetochar ('aanmaak', rec1.mld_melding_note_aanmaak);
mydatetochar ('wijzigdatum', rec1.mld_melding_note_wijzigdatum);
createxmltagvalue ('omschrijving',
rec1.mld_melding_note_omschrijving);
create_prs_perslid_node (rec1.prs_perslid_key, 'noteur', TRUE);
createclosetag ('note');
END LOOP;
createclosetag ('notes');
END IF;
END;
PROCEDURE create_mld_kenmerken (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT DISTINCT
k.mld_kenmerk_key,
k.mld_kenmerk_code,
s.mld_srtkenmerk_code,
lcl.x ('mld_srtkenmerk_omschrijving', s.mld_srtkenmerk_key, mld_srtkenmerk_omschrijving) mld_srtkenmerk_omschrijving,
s.mld_srtkenmerk_kenmerktype,
s.mld_srtkenmerk_systeem,
s.fac_kenmerkdomein_key,
s.mld_srtkenmerk_lengte,
s.mld_srtkenmerk_dec,
s.mld_srtkenmerk_nmin,
s.mld_srtkenmerk_nmax,
k.mld_kenmerk_default,
NVL (k.mld_kenmerk_volgnummer, 0) volgnummer,
lcl.x ('mld_srtkenmerk_dimensie',
s.mld_srtkenmerk_key,
mld_srtkenmerk_dimensie)
dimensie,
lcl.x ('mld_kenmerk_hint',
k.mld_kenmerk_key,
mld_kenmerk_hint)
hint,
(SELECT v.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding v, mld_kenmerk vk
WHERE vk.mld_kenmerk_key = k.mld_kenmerk_key
AND v.mld_kenmerk_key = vk.mld_kenmerk_key
AND v.mld_melding_key = m.mld_melding_key
AND v.mld_kenmerkmelding_verwijder IS NULL) mld_kenmerkmelding_waarde
FROM mld_kenmerk k,
mld_srtkenmerk s,
mld_melding m,
mld_stdmelding stdm,
mld_discipline d
WHERE ((k.mld_kenmerk_niveau = 'A' AND k.mld_stdmelding_key IS NULL)
OR (k.mld_kenmerk_niveau = 'D' AND k.mld_stdmelding_key = stdm.mld_ins_discipline_key)
OR (k.mld_kenmerk_niveau = 'S' AND k.mld_stdmelding_key = m.mld_stdmelding_key)
OR (k.mld_kenmerk_niveau = 'T' AND k.mld_stdmelding_key = d.ins_srtdiscipline_key))
AND m.mld_melding_key = p_key
AND m.mld_stdmelding_key = stdm.mld_stdmelding_key
AND stdm.mld_ins_discipline_key = d.ins_discipline_key
AND k.mld_kenmerk_verwijder IS NULL
AND s.mld_srtkenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key = s.mld_srtkenmerk_key
ORDER BY volgnummer;
v_kenmerk_waarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.mld_kenmerkmelding_waarde,
rec1.mld_kenmerk_default,
rec1.mld_srtkenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.mld_srtkenmerk_nmin,
rec1.mld_srtkenmerk_nmax);
createxmltagvalueattributes8('kenmerk',
'kenmerkcode',
rec1.mld_kenmerk_code,
'srtkenmerkcode',
rec1.mld_srtkenmerk_code,
'naam',
rec1.mld_srtkenmerk_omschrijving,
'type',
rec1.mld_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.mld_kenmerk_key,
'dimensie',
rec1.dimensie,
'systeem',
rec1.mld_srtkenmerk_systeem,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
-- *
-- * MLD OPDRACHT stuff
-- *
PROCEDURE create_mld_opdr_note_node (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT mld_opdr_note_key,
mld_opdr_note_aanmaak,
prs_perslid_key,
mld_opdr_note_omschrijving,
mld_opdr_note_wijzigdatum
FROM mld_opdr_note
WHERE mld_opdr_key = p_key
ORDER BY mld_opdr_note_key;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('notes');
FOR rec1 IN c1
LOOP
createopentag ('note');
createxmltagvalue ('key', rec1.mld_opdr_note_key);
mydatetochar ('aanmaak', rec1.mld_opdr_note_aanmaak);
mydatetochar ('wijzigdatum', rec1.mld_opdr_note_wijzigdatum);
createxmltagvalue ('omschrijving',
rec1.mld_opdr_note_omschrijving);
create_prs_perslid_node (rec1.prs_perslid_key, 'noteur', TRUE);
createclosetag ('note');
END LOOP;
createclosetag ('notes');
END IF;
END;
PROCEDURE create_mld_opdr_kenmerken (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.mld_kenmerk_key,
k.mld_kenmerk_code,
s.mld_srtkenmerk_code,
lcl.x ('mld_srtkenmerk_omschrijving', s.mld_srtkenmerk_key, mld_srtkenmerk_omschrijving) mld_srtkenmerk_omschrijving,
s.mld_srtkenmerk_kenmerktype,
s.mld_srtkenmerk_systeem,
s.fac_kenmerkdomein_key,
s.mld_srtkenmerk_lengte,
s.mld_srtkenmerk_dec,
s.mld_srtkenmerk_nmin,
s.mld_srtkenmerk_nmax,
k.mld_kenmerk_default,
NVL (k.mld_kenmerk_volgnummer, 0) volgnummer,
lcl.x ('mld_srtkenmerk_dimensie',
s.mld_srtkenmerk_key,
mld_srtkenmerk_dimensie)
dimensie,
lcl.x ('mld_kenmerk_hint',
k.mld_kenmerk_key,
mld_kenmerk_hint)
hint,
mld_kenmerkopdr_waarde
FROM mld_kenmerk k,
mld_srtkenmerk s,
mld_opdr o,
(SELECT v.mld_kenmerk_key, v.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr v
WHERE v.mld_opdr_key = p_key
AND v.mld_kenmerkopdr_verwijder IS NULL) v
WHERE o.mld_typeopdr_key = k.mld_typeopdr_key
AND o.mld_opdr_key = p_key
AND k.mld_kenmerk_verwijder IS NULL
AND s.mld_srtkenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key = s.mld_srtkenmerk_key
AND v.mld_kenmerk_key(+) = k.mld_kenmerk_key
ORDER BY k.mld_kenmerk_volgnummer;
rec1 c1%ROWTYPE;
v_kenmerk_waarde mld_kenmerkopdr.mld_kenmerkopdr_waarde%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.mld_kenmerkopdr_waarde,
rec1.mld_kenmerk_default,
rec1.mld_srtkenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.mld_srtkenmerk_nmin,
rec1.mld_srtkenmerk_nmax);
createxmltagvalueattributes8 ('kenmerk',
'kenmerkcode',
rec1.mld_kenmerk_code,
'srtkenmerkcode',
rec1.mld_srtkenmerk_code,
'naam',
rec1.mld_srtkenmerk_omschrijving,
'type',
rec1.mld_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.mld_kenmerk_key,
'dimensie',
rec1.dimensie,
'systeem',
rec1.mld_srtkenmerk_systeem,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
-- * create_MLD_UITVOERENDE_node
PROCEDURE create_mld_uitvoerende_node (p_uitvoerende_key IN NUMBER,
p_nodename IN VARCHAR2)
AS
v_isbedrijf NUMBER (10);
BEGIN
IF p_uitvoerende_key IS NOT NULL
THEN
SELECT COUNT (prs_bedrijf_key)
INTO v_isbedrijf
FROM prs_bedrijf
WHERE prs_bedrijf_key = p_uitvoerende_key;
IF v_isbedrijf = 0
THEN
createopentagattributes (p_nodename,
'niveau',
'P',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
create_prs_perslid_node (p_uitvoerende_key, 'persoon', FALSE);
ELSE
createopentagattributes (p_nodename,
'niveau',
'B',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
create_prs_bedrijf_node (p_uitvoerende_key, 'bedrijf', FALSE); -- niet concise zodat bedrijfadressen meekomen
END IF;
createclosetag (p_nodename);
END IF;
END;
-- * create_MLD_TYPEOPDR_node
PROCEDURE create_mld_typeopdr_node (p_key IN NUMBER)
AS
v_omschrijving mld_typeopdr.mld_typeopdr_omschrijving%TYPE;
v_decentraal mld_typeopdr.mld_typeopdr_decentraal%TYPE;
v_afmeldmarge mld_typeopdr.mld_typeopdr_afmeldmarge%TYPE;
v_kosten mld_typeopdr.mld_typeopdr_kosten%TYPE;
v_sluitmelding mld_typeopdr.mld_typeopdr_sluitmelding%TYPE;
v_uren mld_typeopdr.mld_typeopdr_uren%TYPE;
v_materiaal mld_typeopdr.mld_typeopdr_materiaal%TYPE;
v_totaal mld_typeopdr.mld_typeopdr_totaal%TYPE;
v_factuur mld_typeopdr.mld_typeopdr_factuur%TYPE;
v_zichtbaarfe mld_typeopdr.mld_typeopdr_zichtbaarfe%TYPE;
v_afmelden_extern mld_typeopdr.mld_typeopdr_afmelden_extern%TYPE;
v_isofferte mld_typeopdr.mld_typeopdr_isofferte%TYPE;
v_gvs mld_typeopdr.mld_typeopdr_gvs%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('opdrachttype');
SELECT lcl.x ('mld_typeopdr_omschrijving',
mld_typeopdr_key,
mld_typeopdr_omschrijving)
mld_typeopdr_omschrijving,
mld_typeopdr_decentraal,
mld_typeopdr_kosten,
mld_typeopdr_sluitmelding,
mld_typeopdr_uren,
mld_typeopdr_materiaal,
mld_typeopdr_totaal,
mld_typeopdr_factuur,
mld_typeopdr_afmeldmarge,
mld_typeopdr_zichtbaarfe,
mld_typeopdr_afmelden_extern,
mld_typeopdr_isofferte,
mld_typeopdr_gvs
INTO v_omschrijving,
v_decentraal,
v_kosten,
v_sluitmelding,
v_uren,
v_materiaal,
v_totaal,
v_factuur,
v_afmeldmarge,
v_zichtbaarfe,
v_afmelden_extern,
v_isofferte,
v_gvs
FROM mld_typeopdr
WHERE mld_typeopdr_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('decentraal', v_decentraal);
createxmltagvalue ('kosten', v_kosten);
createxmltagvalue ('sluitmelding', v_sluitmelding);
createxmltagvalue ('uren', v_uren);
createxmltagvalue ('materiaal', v_materiaal);
createxmltagvalue ('totaal', v_totaal);
createxmltagvalue ('factuur', v_factuur);
createxmltagvalue ('afmeldmarge', v_afmeldmarge);
createxmltagvalue ('zichtbaarfe', v_zichtbaarfe);
createxmltagvalue ('afmelden_extern', v_afmelden_extern);
createxmltagvalue ('isofferte', v_isofferte);
createxmltagvalue ('gvs', v_gvs);
createclosetag ('opdrachttype');
END IF;
END;
-- * create_RES_DISC_PARAMS_node
PROCEDURE create_res_disc_params_node (p_discipline_key IN NUMBER)
AS
v_key res_disc_params.res_disc_params_key%TYPE;
v_preposttime res_disc_params.res_disc_params_preposttime%TYPE;
v_notify res_disc_params.res_disc_params_notify%TYPE;
BEGIN
IF p_discipline_key IS NOT NULL
THEN
BEGIN
SELECT res_disc_params_key,
res_disc_params_preposttime,
res_disc_params_notify
INTO v_key, v_preposttime, v_notify
FROM res_disc_params
WHERE res_ins_discipline_key = p_discipline_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_key := NULL;
END;
IF v_key IS NOT NULL
THEN
createopentag ('res');
createxmltagvalue ('key', v_key);
createxmltagvalue ('preposttime', v_preposttime);
createxmltagvalue ('notify', v_notify);
createclosetag ('res');
END IF;
END IF;
END;
-- * create_CNT_DISC_PARAMS_node
PROCEDURE create_cnt_disc_params_node (p_discipline_key IN NUMBER)
AS
v_key cnt_disc_params.cnt_disc_params_key%TYPE;
v_srtcontract_type cnt_disc_params.cnt_srtcontract_type%TYPE;
v_factuurmarge cnt_disc_params.cnt_disc_params_factuurmarge%TYPE;
v_factuurappr cnt_disc_params.cnt_disc_params_factuurappr%TYPE;
v_factuurpct cnt_disc_params.cnt_disc_params_factuurpct%TYPE;
v_fin cnt_disc_params.cnt_disc_params_fin%TYPE;
BEGIN
IF p_discipline_key IS NOT NULL
THEN
BEGIN
SELECT cnt_disc_params_key,
cnt_srtcontract_type,
cnt_disc_params_factuurmarge,
cnt_disc_params_factuurappr,
cnt_disc_params_factuurpct,
cnt_disc_params_fin
INTO v_key,
v_srtcontract_type,
v_factuurmarge,
v_factuurappr,
v_factuurpct,
v_fin
FROM cnt_disc_params
WHERE cnt_ins_discipline_key = p_discipline_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_key := NULL;
END;
IF v_key IS NOT NULL
THEN
createopentag ('cnt');
createxmltagvalue ('key', v_key);
createxmltagvalue ('srtcontract_type', v_srtcontract_type);
createxmltagvalue ('factuurmarge', v_factuurmarge);
createxmltagvalue ('factuurappr', v_factuurappr);
createxmltagvalue ('factuurpct', v_factuurpct);
createxmltagvalue ('fin', v_fin);
createclosetag ('cnt');
END IF;
END IF;
END;
-- * create_BES_DISC_PARAMS_node
PROCEDURE create_bes_disc_params_node (p_discipline_key IN NUMBER)
AS
v_key bes_disc_params.bes_disc_params_key%TYPE;
v_bestellimiet bes_disc_params.bes_disc_params_bestellimiet%TYPE;
v_bestellimiet2 bes_disc_params.bes_disc_params_bestellimiet2%TYPE;
v_bestellimiet3 bes_disc_params.bes_disc_params_bestellimiet3%TYPE;
v_bestellimiet4 bes_disc_params.bes_disc_params_bestellimiet4%TYPE;
v_bestellimiet5 bes_disc_params.bes_disc_params_bestellimiet5%TYPE;
v_min_bedrag bes_disc_params.bes_disc_params_min_bedrag%TYPE;
v_auto_order bes_disc_params.bes_disc_params_auto_order%TYPE;
v_autoacceptrfo bes_disc_params.bes_disc_params_autoacceptrfo%TYPE;
v_leverdagen bes_disc_params.bes_disc_params_leverdagen%TYPE;
v_factuurpct bes_disc_params.bes_disc_params_factuurpct%TYPE;
v_factuurmarge bes_disc_params.bes_disc_params_factuurmarge%TYPE;
v_factuurappr bes_disc_params.bes_disc_params_factuurappr%TYPE;
v_logo_url bes_disc_params.bes_disc_params_logo_url%TYPE;
v_retour_url bes_disc_params.bes_disc_params_retour_url%TYPE;
v_levopm_url bes_disc_params.bes_disc_params_levopm_url%TYPE;
BEGIN
IF p_discipline_key IS NOT NULL
THEN
BEGIN
SELECT bes_disc_params_key,
bes_disc_params_bestellimiet,
bes_disc_params_bestellimiet2,
bes_disc_params_bestellimiet3,
bes_disc_params_bestellimiet4,
bes_disc_params_bestellimiet5,
bes_disc_params_min_bedrag,
bes_disc_params_auto_order,
bes_disc_params_autoacceptrfo,
bes_disc_params_leverdagen,
bes_disc_params_factuurpct,
bes_disc_params_factuurmarge,
bes_disc_params_factuurappr,
bes_disc_params_logo_url,
bes_disc_params_retour_url,
bes_disc_params_levopm_url
INTO v_key,
v_bestellimiet,
v_bestellimiet2,
v_bestellimiet3,
v_bestellimiet4,
v_bestellimiet5,
v_min_bedrag,
v_auto_order,
v_autoacceptrfo,
v_leverdagen,
v_factuurpct,
v_factuurmarge,
v_factuurappr,
v_logo_url,
v_retour_url,
v_levopm_url
FROM bes_disc_params
WHERE bes_ins_discipline_key = p_discipline_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_key := NULL;
END;
IF v_key IS NOT NULL
THEN
createopentag ('bes');
createxmltagvalue ('key', v_key);
createxmltagvalue ('bestellimiet', v_bestellimiet);
createxmltagvalue ('bestellimiet2', v_bestellimiet2);
createxmltagvalue ('bestellimiet3', v_bestellimiet3);
createxmltagvalue ('bestellimiet4', v_bestellimiet4);
createxmltagvalue ('bestellimiet5', v_bestellimiet5);
createxmltagvalue ('min_bedrag', v_min_bedrag);
createxmltagvalue ('auto_order', v_auto_order);
createxmltagvalue ('autoacceptrfo', v_autoacceptrfo);
createxmltagvalue ('leverdagen', v_leverdagen);
createxmltagvalue ('factuurpct', v_factuurpct);
createxmltagvalue ('factuurmarge', v_factuurmarge);
createxmltagvalue ('factuurappr', v_factuurappr);
createxmltagvalue ('logo_url', v_logo_url);
createxmltagvalue ('retour_url', v_retour_url);
createxmltagvalue ('levopm_url', v_levopm_url);
createclosetag ('bes');
END IF;
END IF;
END;
-- * create_INS_DISC_PARAMS_node
PROCEDURE create_ins_disc_params_node (p_discipline_key IN NUMBER)
AS
v_key ins_disc_params.ins_disc_params_key%TYPE;
v_cadlayers ins_disc_params.ins_disc_params_cadlayers%TYPE;
v_type ins_disc_params.ins_disc_params_type%TYPE;
BEGIN
IF p_discipline_key IS NOT NULL
THEN
BEGIN
SELECT ins_disc_params_key,
ins_disc_params_cadlayers,
ins_disc_params_type
INTO v_key, v_cadlayers, v_type
FROM ins_disc_params
WHERE ins_discipline_key = p_discipline_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_key := NULL;
END;
IF v_key IS NOT NULL
THEN
createopentag ('ins');
createxmltagvalue ('key', v_key);
createxmltagvalue ('cadlayers', v_cadlayers);
createxmltagvalue ('type', v_type);
createclosetag ('ins');
END IF;
END IF;
END;
-- * create_INS_SRTDISCIPLINE_node
PROCEDURE create_ins_srtdiscipline_node (p_key IN NUMBER)
AS
v_module ins_srtdiscipline.ins_srtdiscipline_module%TYPE;
v_omschrijving ins_srtdiscipline.ins_srtdiscipline_omschrijving%TYPE;
v_prefix ins_srtdiscipline.ins_srtdiscipline_prefix%TYPE;
v_alg ins_srtdiscipline.ins_srtdiscipline_alg%TYPE;
v_ins ins_srtdiscipline.ins_srtdiscipline_ins%TYPE;
v_mld ins_srtdiscipline.ins_srtdiscipline_mld%TYPE;
v_bes ins_srtdiscipline.ins_srtdiscipline_bes%TYPE;
v_prs ins_srtdiscipline.ins_srtdiscipline_prs%TYPE;
v_res ins_srtdiscipline.ins_srtdiscipline_res%TYPE;
v_cnt ins_srtdiscipline.ins_srtdiscipline_cnt%TYPE;
v_kostenklant ins_srtdiscipline.ins_srtdiscipline_kostenklant%TYPE;
v_mldgroup ins_srtdiscipline.ins_srtdiscipline_mldgroup%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('srtdiscipline');
SELECT ins_srtdiscipline_module,
lcl.x ('ins_srtdiscipline_omschrijving',
ins_srtdiscipline_key,
ins_srtdiscipline_omschrijving)
ins_srtdiscipline_omschrijving,
ins_srtdiscipline_prefix,
ins_srtdiscipline_alg,
ins_srtdiscipline_ins,
ins_srtdiscipline_mld,
ins_srtdiscipline_bes,
ins_srtdiscipline_prs,
ins_srtdiscipline_res,
ins_srtdiscipline_cnt,
ins_srtdiscipline_kostenklant,
ins_srtdiscipline_mldgroup
INTO v_module,
v_omschrijving,
v_prefix,
v_alg,
v_ins,
v_mld,
v_bes,
v_prs,
v_res,
v_cnt,
v_kostenklant,
v_mldgroup
FROM ins_srtdiscipline
WHERE ins_srtdiscipline_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('module', v_module);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('prefix', v_prefix);
createxmltagvalue ('alg', v_alg);
createxmltagvalue ('ins', v_ins);
createxmltagvalue ('mld', v_mld);
createxmltagvalue ('bes', v_bes);
createxmltagvalue ('prs', v_prs);
createxmltagvalue ('res', v_res);
createxmltagvalue ('cnt', v_cnt);
createxmltagvalue ('kostenklant', v_kostenklant);
createxmltagvalue ('mldgroup', v_mldgroup);
createclosetag ('srtdiscipline');
END IF;
END;
-- * create_MLD_ADRES_node
-- Als fysieke locatiegegevens nodig zijn, moet concise FALSE zijn.
PROCEDURE create_mld_adres_node (p_key IN NUMBER,
p_nodename IN VARCHAR2,
p_concise IN BOOLEAN)
AS
v_naam mld_adres.mld_adres_naam%TYPE;
v_bezoek_adres mld_adres.mld_adres_bezoek_adres%TYPE;
v_bezoek_postcode mld_adres.mld_adres_bezoek_postcode%TYPE;
v_bezoek_plaats mld_adres.mld_adres_bezoek_plaats%TYPE;
v_bezoek_land mld_adres.mld_adres_bezoek_land%TYPE;
v_post_adres mld_adres.mld_adres_post_adres%TYPE;
v_post_postcode mld_adres.mld_adres_post_postcode%TYPE;
v_post_plaats mld_adres.mld_adres_post_plaats%TYPE;
v_post_land mld_adres.mld_adres_post_land%TYPE;
v_gebouw_ruimte mld_adres.mld_adres_gebouw_ruimte%TYPE;
v_contactpersoon mld_adres.mld_adres_contactpersoon%TYPE;
v_contactpers_telefoon mld_adres.mld_adres_contactpers_telefoon%TYPE;
v_contactpers_email mld_adres.mld_adres_contactpers_email%TYPE;
v_contactpers_bureau mld_adres.mld_adres_contactpers_bureau%TYPE;
v_telefoon mld_adres.mld_adres_telefoon%TYPE;
v_email mld_adres.mld_adres_email%TYPE;
v_factuuradres mld_adres.mld_adres_factuuradres%TYPE;
v_opdractadres mld_adres.mld_adres_factuuradres%TYPE;
v_afleveradres mld_adres.mld_adres_factuuradres%TYPE;
v_locatie_key mld_adres.alg_locatie_key%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
IF p_concise
THEN
createconciseopentag (p_nodename);
ELSE
createopentag (p_nodename);
END IF;
SELECT mld_adres.mld_adres_naam,
mld_adres.mld_adres_bezoek_adres,
mld_adres.mld_adres_bezoek_postcode,
mld_adres.mld_adres_bezoek_plaats,
mld_adres.mld_adres_bezoek_land,
mld_adres.mld_adres_post_adres,
mld_adres.mld_adres_post_postcode,
mld_adres.mld_adres_post_plaats,
mld_adres.mld_adres_post_land,
mld_adres.mld_adres_gebouw_ruimte,
mld_adres.mld_adres_contactpersoon,
mld_adres.mld_adres_contactpers_telefoon,
mld_adres.mld_adres_contactpers_email,
mld_adres.mld_adres_contactpers_bureau,
mld_adres.mld_adres_telefoon,
mld_adres.mld_adres_email,
mld_adres.mld_adres_factuuradres,
mld_adres.mld_adres_factuuradres,
mld_adres.mld_adres_factuuradres,
alg_locatie_key
INTO v_naam,
v_bezoek_adres,
v_bezoek_postcode,
v_bezoek_plaats,
v_bezoek_land,
v_post_adres,
v_post_postcode,
v_post_plaats,
v_post_land,
v_gebouw_ruimte,
v_contactpersoon,
v_contactpers_telefoon,
v_contactpers_email,
v_contactpers_bureau,
v_telefoon,
v_email,
v_factuuradres,
v_opdractadres,
v_afleveradres,
v_locatie_key
FROM mld_adres
WHERE mld_adres_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('naam', v_naam);
createxmltagvalue ('bezoek_adres', v_bezoek_adres);
createxmltagvalue ('bezoek_postcode', v_bezoek_postcode);
createxmltagvalue ('bezoek_plaats', v_bezoek_plaats);
createxmltagvalue ('bezoek_land', v_bezoek_land);
createxmltagvalue ('post_adres', v_post_adres);
createxmltagvalue ('post_postcode', v_post_postcode);
createxmltagvalue ('post_plaats', v_post_plaats);
createxmltagvalue ('post_land', v_post_land);
createxmltagvalue ('gebouw_ruimte', v_gebouw_ruimte);
createxmltagvalue ('contactpersoon', v_contactpersoon);
createxmltagvalue ('contactpers_telefoon', v_contactpers_telefoon);
createxmltagvalue ('contactpers_email', v_contactpers_email);
createxmltagvalue ('contactpers_bureau', v_contactpers_bureau);
createxmltagvalue ('telefoon', v_telefoon);
createxmltagvalue ('email', v_email);
createxmltagvalue ('factuuradres', v_factuuradres);
createxmltagvalue ('opdrachtadres', v_opdractadres);
createxmltagvalue ('afleveradres', v_afleveradres);
createxmltagvalue ('locatie_key', v_locatie_key);
IF NOT p_concise
THEN
create_alg_onroerendgoed_node (v_locatie_key,
'plaats',
v_locatie_key,
FALSE,
FALSE);
END IF;
createclosetag (p_nodename);
END IF;
END;
-- * create_INS_DISCIPLINE_node
PROCEDURE create_ins_discipline_node (p_key IN NUMBER, p_nodename IN VARCHAR2 DEFAULT 'discipline')
AS
v_module ins_tab_discipline.ins_discipline_module%TYPE;
v_omschrijving ins_tab_discipline.ins_discipline_omschrijving%TYPE;
v_min_level ins_tab_discipline.ins_discipline_min_level%TYPE;
v_prs_kostensoort_key ins_tab_discipline.prs_kostensoort_key%TYPE;
v_ins_srtdiscipline_key ins_tab_discipline.ins_srtdiscipline_key%TYPE;
v_email ins_tab_discipline.ins_discipline_email%TYPE;
v_code ins_tab_discipline.ins_discipline_code%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag (p_nodename);
SELECT ins_discipline_module,
lcl.x ('ins_discipline_omschrijving',
ins_discipline_key,
ins_discipline_omschrijving)
ins_discipline_omschrijving,
ins_discipline_min_level,
prs_kostensoort_key,
ins_srtdiscipline_key,
ins_discipline_email,
ins_discipline_code
INTO v_module,
v_omschrijving,
v_min_level,
v_prs_kostensoort_key,
v_ins_srtdiscipline_key,
v_email,
v_code
FROM ins_tab_discipline
WHERE ins_discipline_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('module', v_module);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('min_level', v_min_level);
createxmltagvalue ('email', v_email);
createxmltagvalue ('code', v_code);
IF v_ins_srtdiscipline_key IS NOT NULL
THEN
create_ins_srtdiscipline_node (v_ins_srtdiscipline_key);
END IF;
create_prs_kostensoort_node (v_prs_kostensoort_key);
create_bes_disc_params_node (p_key);
create_res_disc_params_node (p_key);
create_ins_disc_params_node (p_key);
create_cnt_disc_params_node (p_key);
createclosetag (p_nodename);
END IF;
END;
-- * create_MLD_STDMELDING_node
PROCEDURE create_mld_stdmelding_node (p_key IN NUMBER)
AS
v_omschrijving mld_stdmelding.mld_stdmelding_omschrijving%TYPE;
v_accepttijd_td mld_stdmelding.mld_stdmelding_t_accepttijd.tijdsduur%TYPE;
v_accepttijd_e mld_stdmelding.mld_stdmelding_t_accepttijd.eenheid%TYPE;
v_uitvoertijd_td mld_stdmelding.mld_stdmelding_t_uitvoertijd.tijdsduur%TYPE;
v_uitvoertijd_e mld_stdmelding.mld_stdmelding_t_uitvoertijd.eenheid%TYPE;
v_uitvoertijd1_td mld_stdmelding.mld_stdmelding_t_uitvoertijd.tijdsduur%TYPE;
v_uitvoertijd1_e mld_stdmelding.mld_stdmelding_t_uitvoertijd.eenheid%TYPE;
v_uitvoertijd2_td mld_stdmelding.mld_stdmelding_t_uitvoertijd.tijdsduur%TYPE;
v_uitvoertijd2_e mld_stdmelding.mld_stdmelding_t_uitvoertijd.eenheid%TYPE;
v_uitvoertijd4_td mld_stdmelding.mld_stdmelding_t_uitvoertijd.tijdsduur%TYPE;
v_uitvoertijd4_e mld_stdmelding.mld_stdmelding_t_uitvoertijd.eenheid%TYPE;
v_notfrontend mld_stdmelding.mld_stdmelding_notfrontend%TYPE;
v_prs_kostensoort_key mld_stdmelding.prs_kostensoort_key%TYPE;
v_verwijder mld_stdmelding.mld_stdmelding_verwijder%TYPE;
v_groep mld_stdmeldinggroep.mld_stdmeldinggroep_naam%TYPE;
v_groepoms mld_stdmeldinggroep.mld_stdmeldinggroep_oms%TYPE;
v_discipline_key mld_stdmelding.mld_ins_discipline_key%TYPE;
v_slabewaken mld_stdmelding.mld_stdmelding_slabewaken%TYPE;
v_image mld_stdmelding.mld_stdmelding_image%TYPE;
v_code mld_stdmelding.mld_stdmelding_code%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('stdmelding');
SELECT lcl.x ('mld_stdmelding_omschrijving',
mld_stdmelding_key,
mld_stdmelding_omschrijving)
mld_stdmelding_omschrijving,
stdm.mld_stdmelding_t_accepttijd.tijdsduur,
stdm.mld_stdmelding_t_accepttijd.eenheid,
stdm.mld_stdmelding_t_uitvoertijd.tijdsduur,
stdm.mld_stdmelding_t_uitvoertijd.eenheid,
stdm.mld_stdmelding_t_uitvtijd_pr1.tijdsduur,
stdm.mld_stdmelding_t_uitvtijd_pr1.eenheid,
stdm.mld_stdmelding_t_uitvtijd_pr2.tijdsduur,
stdm.mld_stdmelding_t_uitvtijd_pr2.eenheid,
stdm.mld_stdmelding_t_uitvtijd_pr4.tijdsduur,
stdm.mld_stdmelding_t_uitvtijd_pr4.eenheid,
mld_stdmelding_notfrontend,
prs_kostensoort_key,
mld_stdmelding_verwijder,
lcl.x ('mld_stdmeldinggroep_naam',
smg.mld_stdmeldinggroep_key,
mld_stdmeldinggroep_naam)
mld_stdmelding_groep,
lcl.x ('mld_stdmeldinggroep_oms',
smg.mld_stdmeldinggroep_key,
mld_stdmeldinggroep_oms)
mld_stdmelding_groep,
mld_ins_discipline_key,
mld_stdmelding_slabewaken,
mld_stdmelding_image,
mld_stdmelding_code
INTO v_omschrijving,
v_accepttijd_td,
v_accepttijd_e,
v_uitvoertijd_td,
v_uitvoertijd_e,
v_uitvoertijd1_td,
v_uitvoertijd1_e,
v_uitvoertijd2_td,
v_uitvoertijd2_e,
v_uitvoertijd4_td,
v_uitvoertijd4_e,
v_notfrontend,
v_prs_kostensoort_key,
v_verwijder,
v_groep,
v_groepoms,
v_discipline_key,
v_slabewaken,
v_image,
v_code
FROM mld_stdmelding stdm, mld_stdmeldinggroep smg
WHERE stdm.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+)
AND mld_stdmelding_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
create_ins_discipline_node (v_discipline_key);
createxmltagvalue ('urgentie', mynumbertochar (v_accepttijd_td)); /* COMPATIBILITY ONLY */
createxmltagvalueattributes ('accepttijd',
'eenheid',
v_accepttijd_e,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
mynumbertochar (v_accepttijd_td));
IF v_uitvoertijd_e = 'U'
THEN
createxmltagvalue ('xuitvoertijd', mynumbertochar (v_uitvoertijd_td/24)); /* DEPRECATED */
ELSE
createxmltagvalue ('xuitvoertijd', mynumbertochar (v_uitvoertijd_td)); /* DEPRECATED */
END IF;
createxmltagvalueattributes ('uitvoertijd',
'eenheid',
v_uitvoertijd_e,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
mynumbertochar (v_uitvoertijd_td));
createxmltagvalueattributes ('uitvoertijd_pr1',
'eenheid',
v_uitvoertijd1_e,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
mynumbertochar (v_uitvoertijd1_td));
createxmltagvalueattributes ('uitvoertijd_pr2',
'eenheid',
v_uitvoertijd2_e,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
mynumbertochar (v_uitvoertijd2_td));
createxmltagvalueattributes ('uitvoertijd_pr4',
'eenheid',
v_uitvoertijd4_e,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
mynumbertochar (v_uitvoertijd4_td));
-- historisch zo en geen stdmeldinggroepnode
createxmltagvalue ('groep', v_groep);
createxmltagvalue ('groepomschrijving', v_groepoms);
createxmltagvalue ('notfrontend', v_notfrontend);
createxmltagvalue ('slabewaken', v_slabewaken);
createxmltagvalue ('image', v_image);
createxmltagvalue ('code', v_code);
create_prs_kostensoort_node (v_prs_kostensoort_key);
createxmltagvalue ('verwijder', v_verwijder);
createclosetag ('stdmelding');
END IF;
END;
-- * create_MLD_MELDING_node
PROCEDURE create_mld_melding_node (p_key IN NUMBER,
p_extra_key IN NUMBER,
p_withchildren IN BOOLEAN,
p_withrelated IN NUMBER DEFAULT 0)
AS
v_meldbron_nr mld_melding.mld_meldbron_nr%TYPE;
v_datum mld_melding.mld_melding_datum%TYPE;
v_onderwerp mld_melding.mld_melding_onderwerp%TYPE;
v_actiecode mld_melding.mld_melding_actiecode%TYPE;
v_publiek mld_melding.mld_melding_publiek%TYPE;
v_omschrijving mld_melding.mld_melding_omschrijving%TYPE;
v_opmerking mld_melding.mld_melding_opmerking%TYPE;
v_geprint mld_melding.mld_melding_geprint%TYPE;
v_prs_afdeling_key mld_melding.prs_afdeling_key%TYPE;
v_kosten_klant mld_melding.mld_kosten_klant%TYPE;
v_prs_kostenplaats_key mld_melding.prs_kostenplaats_key%TYPE;
v_status_key mld_melding.mld_melding_status%TYPE;
v_status mld_statuses.mld_statuses_omschrijving%TYPE;
v_spoed mld_melding.mld_melding_spoed%TYPE;
v_discipline_key mld_stdmelding.mld_ins_discipline_key%TYPE;
v_meldbron_key mld_melding.mld_meldbron_key%TYPE;
v_oorzaak_key mld_melding.mld_oorzaak_key%TYPE;
v_alg_onroerendgoed_keys mld_melding.mld_alg_onroerendgoed_keys%TYPE;
v_alg_locatie_key mld_melding.mld_alg_locatie_key%TYPE;
v_mld_stdmelding_key mld_melding.mld_stdmelding_key%TYPE;
v_prs_perslid_key mld_melding.prs_perslid_key%TYPE;
v_prs_perslid_key_voor mld_melding.prs_perslid_key_voor%TYPE;
v_adres_key mld_melding.mld_adres_key%TYPE;
v_uitvoertijd_td mld_melding.mld_melding_t_uitvoertijd.tijdsduur%TYPE;
v_uitvoertijd_e mld_melding.mld_melding_t_uitvoertijd.eenheid%TYPE;
v_uitvoertijdactual_td NUMBER(10,5); -- Kan groter zijn dan mld_melding.mld_melding_t_uitvoertijd%TYPE (nu NUMBER(8,5));
v_uitvoertijdactual_e mld_melding.mld_melding_t_uitvoertijd.eenheid%TYPE;
v_respijt_td mld_melding.mld_melding_t_respijt.tijdsduur%TYPE;
v_respijt_e mld_melding.mld_melding_t_respijt.eenheid%TYPE;
v_indult mld_melding.mld_melding_indult%TYPE;
v_afgerond mld_melding.mld_melding_afgerond%TYPE;
v_accepttijd_td mld_melding.mld_melding_t_accepttijd.tijdsduur%TYPE;
v_accepttijd_e mld_melding.mld_melding_t_accepttijd.eenheid%TYPE;
v_datum_gepland mld_melding.mld_melding_einddatum%TYPE;
v_ordernr mld_melding.mld_melding_ordernr%TYPE;
v_activiteit_key mld_melding.fac_activiteit_key%TYPE;
v_behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE;
v_mld_ins_disc_key mld_melding.mld_ins_discipline_key%TYPE;
v_behandelaar2_key mld_melding.mld_melding_behandelaar2_key%TYPE;
v_parentkey mld_melding.mld_melding_parentkey%TYPE;
v_mldgroupkey mld_melding.mld_melding_mldgroup_key%TYPE;
v_start_key mld_melding.mld_melding_start_key%TYPE;
v_workflowstep_key mld_melding.mld_workflowstep_key%TYPE;
v_externnr mld_melding.mld_melding_externnr%TYPE;
v_kto_verstuurd mld_melding.mld_melding_kto_verstuurd%TYPE;
v_flag mld_melding.mld_melding_flag%TYPE;
v_rsv_ruimte_key mld_melding.res_rsv_ruimte_key%TYPE;
v_kto_type mld_melding.mld_melding_kto_type%TYPE;
v_kto_key mld_melding.mld_melding_kto_key%TYPE;
l_isrootmelding NUMBER(1);
CURSOR c1
IS
SELECT ins_deel_key
FROM mld_melding_object
WHERE mld_melding_key = p_key;
CURSOR c2
IS
SELECT mld_opdr_key
FROM mld_opdr
WHERE mld_melding_key = p_key;
CURSOR c3
IS
SELECT bes_bestelling_key
FROM bes_bestelling
WHERE mld_melding_key = p_key;
-- De andere workflowstappen in deze workflow (if any)
CURSOR c4
IS
SELECT ms.mld_melding_key,
ms.mld_melding_start_key,
ms.mld_workflowstep_key
FROM mld_melding ms, mld_melding m1
WHERE ms.mld_workflowstep_key IS NOT NULL
AND ms.mld_melding_start_key = m1.mld_melding_start_key
AND ms.mld_melding_key <> p_key
AND m1.mld_melding_key = p_key;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('melding');
SELECT NVL (mld_meldbron_nr, ''),
NVL (mld_melding_datum, ''),
NVL (mld_melding_onderwerp, ''),
mld_melding_actiecode,
mld_melding_publiek,
NVL (mld_melding_omschrijving, ''),
NVL (mld_melding_opmerking, ''),
NVL (mld_melding_geprint, 0),
prs_afdeling_key,
NVL (mld_kosten_klant, 0),
prs_kostenplaats_key,
NVL (mld_melding_status, ''),
NVL (s.mld_statuses_omschrijving, ''),
NVL (mld_melding_spoed, 0),
mld_meldbron_key,
mld_oorzaak_key,
mld_alg_onroerendgoed_keys,
mld_alg_locatie_key,
m.mld_stdmelding_key,
stdm.mld_ins_discipline_key,
prs_perslid_key,
prs_perslid_key_voor,
mld_adres_key,
m.mld_melding_t_uitvoertijd.tijdsduur,
m.mld_melding_t_uitvoertijd.eenheid,
m.mld_melding_t_respijt.tijdsduur,
m.mld_melding_t_respijt.eenheid,
mld_melding_indult,
mld_melding_afgerond,
m.mld_melding_t_accepttijd.tijdsduur,
m.mld_melding_t_accepttijd.eenheid,
mld_melding_einddatum,
NVL (mld_melding_ordernr, ''),
mld_melding_behandelaar_key,
m.mld_ins_discipline_key,
mld_melding_behandelaar2_key,
mld_melding_parentkey,
mld_melding_mldgroup_key,
mld_melding_start_key,
mld_workflowstep_key,
mld_melding_externnr,
mld_melding_kto_verstuurd,
mld_melding_flag,
res_rsv_ruimte_key,
mld_melding_kto_type,
mld_melding_kto_key
INTO v_meldbron_nr,
v_datum,
v_onderwerp,
v_actiecode,
v_publiek,
v_omschrijving,
v_opmerking,
v_geprint,
v_prs_afdeling_key,
v_kosten_klant,
v_prs_kostenplaats_key,
v_status_key,
v_status,
v_spoed,
v_meldbron_key,
v_oorzaak_key,
v_alg_onroerendgoed_keys,
v_alg_locatie_key,
v_mld_stdmelding_key,
v_discipline_key,
v_prs_perslid_key,
v_prs_perslid_key_voor,
v_adres_key,
v_uitvoertijd_td,
v_uitvoertijd_e,
v_respijt_td,
v_respijt_e,
v_indult,
v_afgerond,
v_accepttijd_td,
v_accepttijd_e,
v_datum_gepland,
v_ordernr,
v_behandelaar_key,
v_mld_ins_disc_key,
v_behandelaar2_key,
v_parentkey,
v_mldgroupkey,
v_start_key,
v_workflowstep_key,
v_externnr,
v_kto_verstuurd,
v_flag,
v_rsv_ruimte_key,
v_kto_type,
v_kto_key
FROM mld_melding m, mld_statuses s, mld_stdmelding stdm
WHERE m.mld_melding_status = s.mld_statuses_key
AND m.mld_stdmelding_key = stdm.mld_stdmelding_key
AND mld_melding_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('extra_key', p_extra_key);
createxmltagvalue ('meldbron_nr', v_meldbron_nr);
mydatetochar ('gemeld', v_datum); -- deprecated, see tracking
mydatetochar ('begindatum', v_datum);
createxmltagvalue ('onderwerp', v_onderwerp);
createxmltagvalue ('actiecode', v_actiecode);
createxmltagvalue ('publiek', v_publiek);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('behandelwijze', fac.getsetting('mld_note_mode')); --1=oldstyle via opmerking, 2=newstyle via notes
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('geprint', v_geprint);
create_prs_afdeling_node (v_prs_afdeling_key, 'afdeling');
createxmltagvalue ('kosten_klant', v_kosten_klant);
createxmltagvalue ('ordernr', v_ordernr);
createxmltagvalue ('status_key', v_status_key);
createxmltagvalue ('status', v_status);
createxmltagvalue ('spoed', v_spoed);
createxmltagvalueattributes ('uitvoertijd',
'eenheid',
v_uitvoertijd_e,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
mynumbertochar (v_uitvoertijd_td));
createxmltagvalueattributes ('respijt',
'eenheid',
v_respijt_e,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
mynumbertochar (v_respijt_td));
createxmltagvalue ('indult', v_indult);
createxmltagvalue ('afgerond', v_afgerond);
v_uitvoertijdactual_td := mld.getactualuitvoer(p_key).tijdsduur;
v_uitvoertijdactual_e := mld.getactualuitvoer(p_key).eenheid;
createxmltagvalueattributes ('uitvoertijdactual',
'eenheid',
v_uitvoertijdactual_e,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
mynumbertochar (v_uitvoertijdactual_td));
createxmltagvalueattributes ('accepttijd',
'eenheid',
v_accepttijd_e,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
mynumbertochar (v_accepttijd_td));
createxmltagvalue ('externnr', v_externnr);
createxmltagvalue ('flag', v_flag);
mydatetochar ('datum_gepland', v_datum_gepland); -- deprecated
mydatetochar ('einddatum', v_datum_gepland); -- voorkeur
create_mld_kenmerken (p_key);
create_prs_kostenplaats_node (v_prs_kostenplaats_key, FALSE);
create_ins_discipline_node (v_discipline_key); -- deprecated, maar tbv compatibility; gebruik stdmelding/discipline
create_mld_stdmelding_node (v_mld_stdmelding_key);
create_mld_adres_node (v_adres_key, 'aflever_adres', FALSE);
IF (v_alg_onroerendgoed_keys IS NOT NULL
AND v_alg_onroerendgoed_keys <> 0)
THEN
create_alg_onroerendgoed_node (v_alg_onroerendgoed_keys,
'plaats',
NULL,
FALSE,
FALSE);
ELSE
create_alg_onroerendgoed_node (v_alg_locatie_key,
'plaats',
v_alg_locatie_key,
FALSE,
FALSE);
END IF;
FOR rec1 IN c1
LOOP
create_ins_deel_node (rec1.ins_deel_key, FALSE);
END LOOP;
create_prs_perslid_node (v_prs_perslid_key, 'melder', TRUE);
create_prs_perslid_node (v_prs_perslid_key_voor, 'voor', FALSE);
create_prs_perslid_node (v_behandelaar_key, 'behandelaar', TRUE);
create_ins_discipline_node (v_mld_ins_disc_key, 'behandelgroep');
create_prs_perslid_node (v_behandelaar2_key, 'actieve_behandelaar', TRUE);
create_fac_activiteit_node (v_activiteit_key);
mydatetochar ('kto_verstuurd', v_kto_verstuurd);
create_mld_melding_note_node (p_key);
create_fac_tracking_node ('melding', p_key);
IF p_withchildren AND p_withrelated < 5 -- p_withchildren is misleidende naam: meldingen waarvan wij de parent zijn worden nooit opgenomen
THEN
FOR rec2 IN c2
LOOP
create_mld_opdr_node (rec2.mld_opdr_key, NULL, TRUE);
END LOOP;
FOR rec3 IN c3
LOOP
create_bes_bestelling_node (rec3.bes_bestelling_key, FALSE); -- concise bevat geen artikelen
END LOOP;
FOR grp IN (SELECT mld_melding_key
FROM mld_melding
WHERE mld_melding_mldgroup_key = p_key)
LOOP
create_mld_melding_node (grp.mld_melding_key, p_extra_key, FALSE, p_withrelated + 1);
END LOOP;
-- Voor een workflow kunnen de andere stappen ook interessant zijn
-- Dit doen we niet voor adhoc vervolgmeldingen (daarom v_workflowstep_key is not null)
-- We nemen alle *andere* stappen hier op, afhankelijk van het moment kunnen daar ook
-- toekomstige meldingen bij zijn, het zijn alle meldingen met dezelfde root (incl. de root zelf).
-- Omdat dit tot veel balast kan leiden wat jammer is als je deze info toch niet
-- in je bonnen oid gebruikt, gebruiken we een setting die default uit staat(!).
-- We doen dit alleen indien p_withchildren anders worden we oneindig groot.
IF v_workflowstep_key IS NOT NULL AND fac.getsetting('mld_workflowstep_in_xml')= '1'
THEN
createopentag ('workflowsteps');
FOR rec4 IN c4
LOOP
IF rec4.mld_melding_start_key = rec4.mld_melding_key
THEN
l_isrootmelding := 1;
ELSE
l_isrootmelding := 0;
END IF;
createopentagattributes ('workflowstep',
'stepkey',
rec4.mld_workflowstep_key,
'root',
l_isrootmelding,
NULL,
NULL,
NULL,
NULL);
create_mld_melding_node (rec4.mld_melding_key, p_extra_key, FALSE, p_withrelated + 1); -- is die p_extra_key hier nog van belang??
createclosetag ('workflowstep');
END LOOP;
createclosetag ('workflowsteps');
END IF;
END IF;
IF p_withrelated < 5
THEN
create_mld_melding_node (v_parentkey, p_extra_key, p_withchildren, p_withrelated + 1); --Zou zomaar NULL kunnen zijn, geeft niks.
create_mld_melding_node (v_mldgroupkey, p_extra_key, p_withchildren, p_withrelated + 1); --Zou zomaar NULL kunnen zijn, geeft niks.
END IF;
IF v_rsv_ruimte_key IS NOT NULL
THEN
create_res_rsv_ruimte_node (v_rsv_ruimte_key, TRUE);
END IF;
-- Deze melding kan betrekking hebben op een (andere) BROC
-- Dan zal het wenselijk zijn daarvan hier ook info op te nemen
-- Om oneindigheid te voorkomen doen we dat een maximaal aantal keer voor meldingen
IF v_kto_key IS NOT NULL AND p_withrelated < 5
THEN
createopentag ('referentie');
-- Weet niet wat je hier mee zou willen, maar het kost ook niks en biedt helderheid
createxmltagvalue ('referencelevel', p_withrelated+1);
CASE v_kto_type
WHEN 'B'
THEN
create_bes_bestelling_node (v_kto_key, TRUE);
WHEN 'R'
THEN
create_res_rsv_ruimte_node (v_kto_key, TRUE);
WHEN 'O'
THEN
create_mld_opdr_node (v_kto_key, NULL, TRUE);
WHEN 'C'
THEN
create_cnt_contract_node (v_kto_key, TRUE);
WHEN 'M'
THEN
create_mld_melding_node (v_kto_key, p_extra_key, FALSE, p_withrelated + 1);
WHEN 'X'
THEN
create_bes_bestelopdr_node (v_kto_key, TRUE);
WHEN 'F'
THEN
create_fin_factuur_node (v_kto_key, TRUE);
ELSE
NULL;
END CASE;
createclosetag ('referentie');
END IF;
createclosetag ('melding');
END IF;
END;
PROCEDURE create_mld_opdr_mater_node (p_key IN NUMBER)
AS
v_aantal mld_opdr_materiaal.mld_opdr_materiaal_aantal%TYPE;
v_code fac_usrdata.fac_usrdata_code%TYPE;
v_groep mld_opdr_materiaal.mld_opdr_materiaal_groep%TYPE;
v_id mld_opdr_materiaal.mld_opdr_materiaal_id%TYPE;
v_extra1 mld_opdr_materiaal.mld_opdr_materiaal_extra1%TYPE;
v_extra2 mld_opdr_materiaal.mld_opdr_materiaal_extra2%TYPE;
v_extra3 mld_opdr_materiaal.mld_opdr_materiaal_extra3%TYPE;
v_extra4 mld_opdr_materiaal.mld_opdr_materiaal_extra4%TYPE;
v_omschr mld_opdr_materiaal.mld_opdr_materiaal_omschr%TYPE;
v_stuksprijs mld_opdr_materiaal.mld_opdr_materiaal_prijs%TYPE;
v_volgnr mld_opdr_materiaal.mld_opdr_materiaal_key%TYPE;
v_verwijder fac_usrdata.fac_usrdata_verwijder%TYPE;
v_eenheid mld_opdr_materiaal.mld_opdr_materiaal_eenheid%TYPE;
v_eenheidcode mld_opdr_materiaal.mld_opdr_materiaal_eenheidcode%TYPE;
v_info mld_opdr_materiaal.mld_opdr_materiaal_info%TYPE;
v_btwcode fin_btwtabelwaarde.fin_btwtabelwaarde_code%TYPE;
v_btwperc fin_btwtabelwaarde.fin_btwtabelwaarde_perc%TYPE;
v_btwverlegd fin_btwtabelwaarde.fin_btwtabelwaarde_verlegd%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('materialen');
SELECT ma.mld_opdr_materiaal_aantal,
ma.mld_opdr_materiaal_prijs,
COALESCE(d.fac_usrdata_code, ma.mld_opdr_materiaal_code),
COALESCE(d.fac_usrdata_omschr, ma.mld_opdr_materiaal_omschr),
COALESCE(d.fac_usrdata_volgnr, ma.mld_opdr_materiaal_key),
d.fac_usrdata_verwijder,
mld_opdr_materiaal_eenheid,
mld_opdr_materiaal_eenheidcode,
mld_opdr_materiaal_info,
fin_btwtabelwaarde_code,
COALESCE(fin_btwtabelwaarde_perc, 0),
fin_btwtabelwaarde_verlegd,
mld_opdr_materiaal_groep,
mld_opdr_materiaal_id,
mld_opdr_materiaal_extra1,
mld_opdr_materiaal_extra2,
mld_opdr_materiaal_extra3,
mld_opdr_materiaal_extra4
INTO v_aantal,
v_stuksprijs,
v_code,
v_omschr,
v_volgnr,
v_verwijder,
v_eenheid,
v_eenheidcode,
v_info,
v_btwcode,
v_btwperc,
v_btwverlegd,
v_groep,
v_id,
v_extra1,
v_extra2,
v_extra3,
v_extra4
FROM mld_opdr_materiaal ma, fac_usrdata d, fin_btwtabelwaarde b
WHERE d.fac_usrdata_key (+) = ma.fac_usrdata_key
AND b.fin_btwtabelwaarde_key (+) = ma.fin_btwtabelwaarde_key
AND ma.mld_opdr_materiaal_key = p_key;
createxmltagvalue ('code', v_code);
createxmltagvalue ('volgnr', v_volgnr);
createxmltagvalue ('omschrijving', v_omschr);
createxmltagvalue ('groep', v_groep);
createxmltagvalue ('id', v_id);
createxmltagvalue ('extra1', v_extra1);
createxmltagvalue ('extra2', v_extra2);
createxmltagvalue ('extra3', v_extra3);
createxmltagvalue ('extra4', v_extra4);
createxmltagvalue ('info', v_info);
createxmltagvalue ('aantal', v_aantal);
createxmltagvalue ('eenheid', v_eenheid);
createxmltagvalue ('eenheidcode', v_eenheidcode);
createxmltagvalue ('stuksprijs', v_stuksprijs);
createxmltagvalue ('totaalprijs', v_aantal * v_stuksprijs);
createxmltagvalue ('btwbedrag', mynumbertochar (v_aantal * v_stuksprijs * v_btwperc/100 ));
createxmltagvalue ('btwcode', v_btwcode);
createxmltagvalue ('btwpercentage', mynumbertochar (v_btwperc));
createxmltagvalue ('btwverlegd', mynumbertochar (v_btwverlegd));
mydatetochar ('verwijder', v_verwijder);
createclosetag ('materialen');
END IF;
END;
-- * create_MLD_OPDR_node
-- select xml.create_MLD_OPDR_node(7120) FROM DUAL
PROCEDURE create_mld_opdr_node (p_key IN NUMBER, p_extra_key IN NUMBER, p_concise IN BOOLEAN, p_bgtmode IN BOOLEAN DEFAULT FALSE)
AS
v_mld_melding_key mld_opdr.mld_melding_key%TYPE;
v_mld_uitvoerende_keys mld_opdr.mld_uitvoerende_keys%TYPE;
v_typeopdr_key mld_opdr.mld_typeopdr_key%TYPE;
v_statusopdr_key mld_opdr.mld_statusopdr_key%TYPE;
v_statusopdr mld_statusopdr.mld_statusopdr_omschrijving%TYPE;
v_mld_standaardopdr_key mld_opdr.mld_standaardopdr_key%TYPE;
v_omschrijving mld_opdr.mld_opdr_omschrijving%TYPE;
v_datumbegin mld_opdr.mld_opdr_datumbegin%TYPE;
v_einddatum mld_opdr.mld_opdr_einddatum%TYPE;
v_plandatum mld_opdr.mld_opdr_plandatum%TYPE;
v_plandatum2 mld_opdr.mld_opdr_plandatum2%TYPE;
v_dagen NUMBER;
v_werkzaamheden mld_opdr.mld_opdr_werkzaamheden%TYPE;
v_uren mld_opdr.mld_opdr_uren%TYPE;
v_materiaal mld_opdr.mld_opdr_materiaal%TYPE;
v_kosten mld_opdr.mld_opdr_kosten%TYPE;
v_contactpersoon mld_opdr.mld_opdr_contactpersoon%TYPE;
v_geprint mld_opdr.mld_opdr_geprint%TYPE;
v_teverzenden mld_opdr.mld_opdr_teverzenden%TYPE;
v_bedrijfopdr_volgnr mld_opdr.mld_opdr_bedrijfopdr_volgnr%TYPE;
v_uurloon mld_opdr.mld_opdr_uurloon%TYPE;
v_cnt_contract_key mld_opdr.cnt_contract_key%TYPE;
v_cnt_contract_dienst_key mld_opdr.cnt_contract_dienst_key%TYPE;
v_prs_perslid_key mld_opdr.prs_perslid_key%TYPE;
v_prs_contactpersoon_key mld_opdr.prs_contactpersoon_key%TYPE;
v_prs_kostenplaats_key mld_opdr.prs_kostenplaats_key%TYPE;
v_ordernr mld_opdr.mld_opdr_ordernr%TYPE;
v_mld_opdr_opmerking_fiat mld_opdr.mld_opdr_opmerking_fiat%TYPE;
v_datumgereed DATE;
v_activiteit_key mld_opdr.fac_activiteit_key%TYPE;
v_opmerking mld_opdr.mld_opdr_opmerking%TYPE;
v_flag mld_opdr.mld_opdr_flag%TYPE;
v_approved mld_opdr.mld_opdr_approved%TYPE;
v_uren_refiat mld_opdr.mld_opdr_uren_refiat%TYPE;
v_uurloon_refiat mld_opdr.mld_opdr_uurloon_refiat%TYPE;
v_materiaal_refiat mld_opdr.mld_opdr_materiaal_refiat%TYPE;
v_kosten_refiat mld_opdr.mld_opdr_kosten_refiat%TYPE;
v_statusopdr_key_refiat mld_opdr.mld_statusopdr_key_refiat%TYPE;
v_approved_refiat mld_opdr.mld_opdr_approved_refiat%TYPE;
v_opdr_id mld_opdr.mld_opdr_id%TYPE;
v_opdr_parent_key mld_opdr.mld_opdr_parent_key%TYPE;
v_mld_opdr_externnr mld_opdr.mld_opdr_externnr%TYPE;
v_mld_opdr_externsyncdate mld_opdr.mld_opdr_externsyncdate%TYPE;
CURSOR c1
IS
SELECT ma.mld_opdr_materiaal_key
FROM mld_opdr_materiaal ma
WHERE ma.mld_opdr_key = p_key;
CURSOR c2
IS
SELECT fin_factuur_key
FROM fin_factuur
WHERE mld_opdr_key = p_key;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('opdracht');
SELECT mld_melding_key,
mld_uitvoerende_keys,
mld_typeopdr_key,
o.mld_statusopdr_key,
s.mld_statusopdr_omschrijving,
mld_standaardopdr_key,
mld_opdr_omschrijving,
mld_opdr_datumbegin,
fac.count_Work_Days (mld_opdr_datumbegin, mld_opdr_einddatum)
mld_opdr_dagen,
mld_opdr_einddatum,
mld_opdr_plandatum,
mld_opdr_plandatum2,
mld_opdr_werkzaamheden,
mld_opdr_uren,
mld_opdr_materiaal,
mld_opdr_kosten,
mld_opdr_contactpersoon,
mld_opdr_geprint,
mld_opdr_teverzenden,
mld_opdr_bedrijfopdr_volgnr,
mld_opdr_uurloon,
cnt_contract_key,
cnt_contract_dienst_key,
prs_perslid_key,
prs_contactpersoon_key,
prs_kostenplaats_key,
mld_opdr_ordernr,
mld_opdr_opmerking_fiat,
fac_activiteit_key,
mld_opdr_opmerking,
mld_opdr_flag,
mld_opdr_approved,
mld_opdr_uren_refiat,
mld_opdr_uurloon_refiat,
mld_opdr_materiaal_refiat,
mld_opdr_kosten_refiat,
mld_statusopdr_key_refiat,
mld_opdr_approved_refiat,
mld_opdr_id,
mld_opdr_parent_key,
mld_opdr_externnr,
mld_opdr_externsyncdate
INTO v_mld_melding_key,
v_mld_uitvoerende_keys,
v_typeopdr_key,
v_statusopdr_key,
v_statusopdr,
v_mld_standaardopdr_key,
v_omschrijving,
v_datumbegin,
v_dagen,
v_einddatum,
v_plandatum,
v_plandatum2,
v_werkzaamheden,
v_uren,
v_materiaal,
v_kosten,
v_contactpersoon,
v_geprint,
v_teverzenden,
v_bedrijfopdr_volgnr,
v_uurloon,
v_cnt_contract_key,
v_cnt_contract_dienst_key,
v_prs_perslid_key,
v_prs_contactpersoon_key,
v_prs_kostenplaats_key,
v_ordernr,
v_mld_opdr_opmerking_fiat,
v_activiteit_key,
v_opmerking,
v_flag,
v_approved,
v_uren_refiat,
v_uurloon_refiat,
v_materiaal_refiat,
v_kosten_refiat,
v_statusopdr_key_refiat,
v_approved_refiat,
v_opdr_id,
v_opdr_parent_key,
v_mld_opdr_externnr,
v_mld_opdr_externsyncdate
FROM mld_opdr o, mld_statusopdr s
WHERE o.mld_statusopdr_key = s.mld_statusopdr_key
AND mld_opdr_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('extra_key', p_extra_key);
createxmltagvalue ('melding_key', v_mld_melding_key);
createxmltagvalue ('uitvoerende_keys', v_mld_uitvoerende_keys);
createxmltagvalue ('statusopdr_key', v_statusopdr_key);
createxmltagvalue ('status', v_statusopdr);
createxmltagvalue ('standaardopdr_key', v_mld_standaardopdr_key);
createxmltagvalue ('omschrijving', v_omschrijving);
mydatetochar ('datumbegin', v_datumbegin);
createxmltagvalue ('dagen', v_dagen);
mydatetochar ('einddatum', v_einddatum);
mydatetochar ('datumgereed', v_einddatum);
mydatetochar ('plandatum', v_plandatum);
mydatetochar ('plandatum2', v_plandatum2);
createxmltagvalue ('werkzaamheden', v_werkzaamheden);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('uren', mynumbertochar (v_uren));
createxmltagvalue ('materiaal', mynumbertochar (v_materiaal));
createxmltagvalue ('kosten', mynumbertochar (v_kosten));
createxmltagvalue ('geprint', v_geprint);
createxmltagvalue ('teverzenden', v_teverzenden);
createxmltagvalue ('bedrijfopdr_volgnr', v_bedrijfopdr_volgnr);
createxmltagvalue ('uurloon', mynumbertochar (v_uurloon));
createxmltagvalue ('opmerking_fiat', v_mld_opdr_opmerking_fiat);
createxmltagvalue ('flag', v_flag);
createxmltagvalue ('approved', v_approved);
createxmltagvalue ('uren_refiat', mynumbertochar (v_uren_refiat));
createxmltagvalue ('uurloon_refiat', mynumbertochar (v_uurloon_refiat));
createxmltagvalue ('materiaal_refiat', mynumbertochar (v_materiaal_refiat));
createxmltagvalue ('kosten_refiat', mynumbertochar (v_kosten_refiat));
createxmltagvalue ('statusopdr_key_refiat', v_statusopdr_key_refiat);
createxmltagvalue ('approved_refiat', v_approved_refiat);
createxmltagvalue ('externnr', v_mld_opdr_externnr);
mydatetochar ('externsyncdate', v_mld_opdr_externsyncdate);
create_mld_opdr_kenmerken (p_key);
create_prs_kostenplaats_node (v_prs_kostenplaats_key, FALSE);
createxmltagvalue ('ordernr', v_ordernr);
create_mld_typeopdr_node (v_typeopdr_key);
IF v_opdr_parent_key IS NOT NULL THEN
createopentag ('offerte');
create_mld_opdr_node (v_opdr_parent_key, p_extra_key, TRUE, FALSE);
createclosetag ('offerte');
END IF;
IF p_bgtmode THEN
FOR rec2 IN c2
LOOP
create_fin_factuur_node (rec2.fin_factuur_key, TRUE, TRUE);
END LOOP;
ELSE
create_prs_dienst_node (v_cnt_contract_dienst_key);
create_prs_perslid_node (v_prs_perslid_key,
'backoffice_contact',
FALSE);
END IF;
create_mld_uitvoerende_node (v_mld_uitvoerende_keys, 'uitvoerende');
create_cnt_contract_node (v_cnt_contract_key, TRUE);
create_prs_contactpersoon_node (v_prs_contactpersoon_key);
create_factuuradres_node (p_key);
createxmltagvalue ('opdr_id', v_opdr_id);
FOR rec1 IN c1
LOOP
create_mld_opdr_mater_node (rec1.mld_opdr_materiaal_key);
END LOOP;
IF NOT p_concise
THEN
create_mld_melding_node (v_mld_melding_key, p_extra_key, FALSE);
END IF;
create_fac_activiteit_node (v_activiteit_key);
create_mld_opdr_note_node (p_key);
create_fac_tracking_node ('opdracht', p_key);
createclosetag ('opdracht');
END IF;
END;
-----------------------------------------------------
-----------------------------------------------------
-- PRJ module related nodes
-----------------------------------------------------
-----------------------------------------------------
PROCEDURE create_prj_ruimteafd_node (p_ruimte_key IN NUMBER)
AS
CURSOR c1
IS
SELECT prj_ruimteafdeling_key,
prj_ruimteafdeling_bezetting,
prs_afdeling_key
FROM prj_ruimteafdeling ra
WHERE ra.prj_ruimteafdeling_verwijder IS NULL
AND ra.prj_ruimteafdeling_key = p_ruimte_key;
BEGIN
IF p_ruimte_key IS NOT NULL
THEN
FOR rec1 IN c1
LOOP
createopentag ('prjruimteafdeling');
createxmltagvalue ('key', rec1.prj_ruimteafdeling_key);
createxmltagvalue ('bezetting',
rec1.prj_ruimteafdeling_bezetting);
create_prs_afdeling_node (rec1.prs_afdeling_key,
'bezetter_afdeling');
createclosetag ('prjruimteafdeling');
END LOOP;
END IF;
END;
PROCEDURE create_prj_perslidwp_node (p_werkplek_key IN NUMBER)
AS
CURSOR c1
IS
SELECT prj_perslidwerkplek_key,
prj_perslidwerkplek_bezetting,
prs_perslid_key,
wpopp
FROM prj_perslidwerkplek pwp, prj_v_werkplek_oppervlakte pwo
WHERE pwp.prj_perslidwerkplek_verwijder IS NULL
AND pwp.prj_werkplek_key = pwo.prj_werkplek_key
AND pwp.prj_werkplek_key = p_werkplek_key;
BEGIN
IF p_werkplek_key IS NOT NULL
THEN
FOR rec1 IN c1
LOOP
createopentag ('prjperslidwerkplek');
createxmltagvalue ('key', rec1.prj_perslidwerkplek_key);
createxmltagvalue ('bezetting',
rec1.prj_perslidwerkplek_bezetting);
createxmltagvalue ('wpopp', rec1.wpopp);
create_prs_perslid_node (rec1.prs_perslid_key, 'bezetter', FALSE);
createclosetag ('prjperslidwerkplek');
END LOOP;
END IF;
END;
PROCEDURE create_prj_deel_node (p_deel_key IN NUMBER)
AS
v_ins_deel_key prj_deel.ins_deel_key%TYPE;
v_srtdeel_key prj_deel.ins_srtdeel_key%TYPE;
v_ruimte_key prj_deel.prj_ruimte_key%TYPE;
v_werkplek_key prj_deel.prj_werkplek_key%TYPE;
v_omschrijving prj_deel.prj_deel_omschrijving%TYPE;
v_aanmaak prj_deel.prj_deel_aanmaak%TYPE;
v_verwijder prj_deel.prj_deel_verwijder%TYPE;
v_dwgx prj_deel.prj_deel_dwgx%TYPE;
v_dwgy prj_deel.prj_deel_dwgy%TYPE;
v_dwgz prj_deel.prj_deel_dwgz%TYPE;
v_dwgrotatie prj_deel.prj_deel_dwgrotatie%TYPE;
v_dwgschaal prj_deel.prj_deel_dwgschaal%TYPE;
BEGIN
IF p_deel_key IS NOT NULL
THEN
SELECT ins_deel_key,
ins_srtdeel_key,
prj_ruimte_key,
prj_werkplek_key,
prj_deel_omschrijving,
prj_deel_aanmaak,
prj_deel_verwijder,
prj_deel_dwgx,
prj_deel_dwgy,
prj_deel_dwgz,
prj_deel_dwgrotatie,
prj_deel_dwgschaal
INTO v_ins_deel_key,
v_srtdeel_key,
v_ruimte_key,
v_werkplek_key,
v_omschrijving,
v_aanmaak,
v_verwijder,
v_dwgx,
v_dwgy,
v_dwgz,
v_dwgrotatie,
v_dwgschaal
FROM prj_deel pd
WHERE pd.prj_deel_key = p_deel_key;
createopentag ('prjdeel');
createxmltagvalue ('key', p_deel_key);
createxmltagvalue ('omschrijving', v_omschrijving);
create_ins_deel_node (v_ins_deel_key, TRUE);
-- stdeel zit in deel, maar als het een projectnieuw deel is niet.
create_ins_srtdeel_node (v_srtdeel_key, TRUE);
mydatetochar ('aanmaak', v_aanmaak);
mydatetochar ('verwijder', v_verwijder);
-- Te overwegen is om deze NIET mee te nemen:
createxmltagvalue ('dwgx', v_dwgx);
createxmltagvalue ('dwgy', v_dwgy);
createxmltagvalue ('dwgz', v_dwgz);
createxmltagvalue ('dwgrotatie', v_dwgrotatie);
createxmltagvalue ('dwgschaal', v_dwgschaal);
createclosetag ('prjdeel');
END IF;
END;
PROCEDURE create_prj_werkplek_node (p_werkplek_key IN NUMBER)
AS
CURSOR c1
IS
SELECT prj_deel_key
FROM prj_deel pd
WHERE pd.prj_werkplek_key = p_werkplek_key;
v_volgnr prj_werkplek.prj_werkplek_volgnr%TYPE;
v_omschrijving prj_werkplek.prj_werkplek_omschrijving%TYPE;
v_vastopp prj_werkplek.prj_werkplek_vastopp%TYPE;
v_opp prj_werkplek.prj_werkplek_opp%TYPE;
v_aanmaak prj_werkplek.prj_werkplek_aanmaak%TYPE;
v_verwijder prj_werkplek.prj_werkplek_verwijder%TYPE;
v_dwgx prj_werkplek.prj_werkplek_dwgx%TYPE;
v_dwgy prj_werkplek.prj_werkplek_dwgy%TYPE;
v_dwgz prj_werkplek.prj_werkplek_dwgz%TYPE;
v_dwgrotatie prj_werkplek.prj_werkplek_dwgrotatie%TYPE;
v_dwgschaal prj_werkplek.prj_werkplek_dwgschaal%TYPE;
BEGIN
IF p_werkplek_key IS NOT NULL
THEN
SELECT prj_werkplek_volgnr,
prj_werkplek_omschrijving,
prj_werkplek_vastopp,
prj_werkplek_opp,
prj_werkplek_aanmaak,
prj_werkplek_verwijder,
prj_werkplek_dwgx,
prj_werkplek_dwgy,
prj_werkplek_dwgz,
prj_werkplek_dwgrotatie,
prj_werkplek_dwgschaal
INTO v_volgnr,
v_omschrijving,
v_vastopp,
v_opp,
v_aanmaak,
v_verwijder,
v_dwgx,
v_dwgy,
v_dwgz,
v_dwgrotatie,
v_dwgschaal
FROM prj_werkplek wp
WHERE wp.prj_werkplek_key = p_werkplek_key;
createopentag ('prjwerkplek');
createxmltagvalue ('key', p_werkplek_key);
createxmltagvalue ('volgnr', v_volgnr);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('vastopp', v_vastopp);
createxmltagvalue ('opp', v_opp);
mydatetochar ('aanmaak', v_aanmaak);
mydatetochar ('verwijder', v_verwijder);
createxmltagvalue ('dwgx', v_dwgx);
createxmltagvalue ('dwgy', v_dwgy);
createxmltagvalue ('dwgz', v_dwgz);
createxmltagvalue ('dwgrotatie', v_dwgrotatie);
createxmltagvalue ('dwgschaal', v_dwgschaal);
create_prj_perslidwp_node (p_werkplek_key);
FOR rec1 IN c1
LOOP
create_prj_deel_node (rec1.prj_deel_key);
END LOOP;
createclosetag ('prjwerkplek');
END IF;
END;
PROCEDURE create_prj_ruimte_node (p_ruimte_key IN NUMBER)
AS
CURSOR c1
IS
SELECT prj_werkplek_key
FROM prj_werkplek pw
WHERE pw.prj_ruimte_key = p_ruimte_key;
CURSOR c2
IS
SELECT prj_deel_key
FROM prj_deel pd
WHERE pd.prj_ruimte_key = p_ruimte_key;
v_nr prj_ruimte.prj_ruimte_nr%TYPE;
v_omschrijving prj_ruimte.prj_ruimte_omschrijving%TYPE;
v_bruto_vloeropp prj_ruimte.prj_ruimte_bruto_vloeropp%TYPE;
v_omtrek prj_ruimte.prj_ruimte_nr%TYPE;
v_inhoud prj_ruimte.prj_ruimte_inhoud%TYPE;
v_opmerking prj_ruimte.prj_ruimte_opmerking%TYPE;
v_srtruimte_key prj_ruimte.alg_srtruimte_key%TYPE;
v_alg_ruimte_key prj_ruimte.alg_ruimte_key%TYPE;
BEGIN
IF p_ruimte_key IS NOT NULL
THEN
SELECT prj_ruimte_nr,
prj_ruimte_omschrijving,
prj_ruimte_bruto_vloeropp,
prj_ruimte_omtrek,
prj_ruimte_inhoud,
prj_ruimte_opmerking,
alg_srtruimte_key,
alg_ruimte_key
INTO v_nr,
v_omschrijving,
v_bruto_vloeropp,
v_omtrek,
v_inhoud,
v_opmerking,
v_srtruimte_key,
v_alg_ruimte_key
FROM prj_ruimte
WHERE prj_ruimte_verwijder IS NULL
AND prj_ruimte_key = p_ruimte_key;
createopentag ('prjruimte');
createxmltagvalue ('key', p_ruimte_key);
createxmltagvalue ('nr', v_nr);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('bruto_vloeropp', v_bruto_vloeropp);
createxmltagvalue ('omtrek', v_omtrek);
createxmltagvalue ('inhoud', v_inhoud);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('algruimtekey', v_alg_ruimte_key);
-- * Herkomst gegevens (teveel van het goede?)
create_alg_ruimte_node (v_alg_ruimte_key);
-- *create_ALG_SRTRUIMTE_node(v_srtruimte_key);
create_prj_ruimteafd_node (p_ruimte_key);
FOR rec1 IN c1
LOOP
create_prj_werkplek_node (rec1.prj_werkplek_key);
END LOOP;
FOR rec2 IN c2
LOOP
create_prj_deel_node (rec2.prj_deel_key);
END LOOP;
createclosetag ('prjruimte');
END IF;
END;
PROCEDURE create_prj_verdieping_node (p_scenario_key IN NUMBER,
p_verdieping_key IN NUMBER,
p_ruimte_key IN NUMBER)
AS
v_omschrijving alg_verdieping.alg_verdieping_omschrijving%TYPE;
v_volgnr alg_verdieping.alg_verdieping_volgnr%TYPE;
v_tekening alg_verdieping.alg_verdieping_tekening%TYPE;
v_in_bewerking alg_verdieping.alg_verdieping_in_bewerking%TYPE;
v_code alg_verdieping.alg_verdieping_code%TYPE;
CURSOR c1
IS
SELECT r.prj_ruimte_key
FROM prj_ruimte r
WHERE alg_verdieping_key = p_verdieping_key
AND r.prj_ruimte_verwijder IS NULL
AND r.prj_scenario_key = p_scenario_key
ORDER BY r.prj_ruimte_nr;
CURSOR c2
IS
SELECT *
FROM prj_scenario_note
WHERE alg_verdieping_key = p_verdieping_key
AND prj_scenario_key = p_scenario_key;
BEGIN
IF p_verdieping_key IS NOT NULL
THEN
SELECT alg_verdieping_omschrijving,
alg_verdieping_volgnr,
t.cad_tekening_filenaam,
alg_verdieping_in_bewerking,
alg_verdieping_code
INTO v_omschrijving,
v_volgnr,
v_tekening,
v_in_bewerking,
v_code
FROM alg_verdieping v, cad_tekening t
WHERE t.alg_verdieping_key(+) = v.alg_verdieping_key
AND v.alg_verdieping_key = p_verdieping_key;
-- Eerst alle ALG-info (oude situatie)
createopentag ('prjverdieping');
create_alg_onroerendgoed_node (p_verdieping_key,
'plaats',
NULL,
FALSE,
TRUE);
--createxmltagvalue ('key', p_verdieping_key);
--createxmltagvalue ('omschrijving', v_omschrijving);
--createxmltagvalue ('volgnr', v_volgnr);
--createxmltagvalue ('tekening', v_tekening);
--createxmltagvalue ('in_bewerking', v_in_bewerking);
--createxmltagvalue ('code', v_code);
--create_alg_kenmerken (p_verdieping_key, 'V');
IF p_ruimte_key IS NOT NULL
THEN
create_prj_ruimte_node (p_ruimte_key);
ELSE
-- Maak dan een node aan voor ELKE prjruimte in deze verdieping
FOR rec1 IN c1
LOOP
create_prj_ruimte_node (rec1.prj_ruimte_key);
END LOOP;
END IF;
FOR rec2 IN c2
LOOP
createopentag ('note');
createxmltagvalue ('key', rec2.prj_scenario_note_key);
createxmltagvalue ('nr', rec2.prj_scenario_note_nr);
createxmltagvalue ('omschrijving',
rec2.prj_scenario_note_omschrijving);
create_prs_perslid_node (rec2.prs_perslid_key, 'noteur', TRUE);
createxmltagvalue ('aanmaak', rec2.prj_scenario_note_aanmaak);
createclosetag ('note');
END LOOP;
createclosetag ('prjverdieping');
END IF;
END;
PROCEDURE create_prj_scenario_node (p_key IN NUMBER)
AS
v_omschrijving prj_scenario.prj_scenario_omschrijving%TYPE;
v_opmerking prj_scenario.prj_scenario_opmerking%TYPE;
v_aanmaak prj_scenario.prj_scenario_aanmaak%TYPE;
v_mld_melding_key prj_scenario.mld_melding_key%TYPE;
v_prs_perslid_key prj_scenario.prs_perslid_key%TYPE;
v_status prj_scenario.prj_scenario_status%TYPE;
v_datum prj_scenario.prj_scenario_datum%TYPE;
v_raming prj_scenario.prj_scenario_raming%TYPE;
CURSOR c1
IS
SELECT DISTINCT pr.alg_verdieping_key, alg_verdieping_volgnr
FROM prj_ruimte pr, alg_verdieping av
WHERE pr.alg_verdieping_key = av.alg_verdieping_key
AND prj_scenario_key = p_key
ORDER BY alg_verdieping_volgnr;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('scenario');
SELECT prj_scenario_omschrijving,
prj_scenario_opmerking,
prj_scenario_aanmaak,
mld_melding_key,
prs_perslid_key,
prj_scenario_status,
prj_scenario_datum,
prj_scenario_raming
INTO v_omschrijving,
v_opmerking,
v_aanmaak,
v_mld_melding_key,
v_prs_perslid_key,
v_status,
v_datum,
v_raming
FROM prj_scenario
WHERE prj_scenario_key = p_key;
createxmltagvalue ('key', p_key);
mydatetochar ('aanmaak', v_aanmaak);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('status', v_status);
createxmltagvalue ('datum', v_datum);
createxmltagvalue ('raming', v_raming);
create_mld_melding_node (v_mld_melding_key, NULL, FALSE);
create_prs_perslid_node (v_prs_perslid_key, 'behandelaar', TRUE);
FOR rec1 IN c1
LOOP
create_prj_verdieping_node (p_key, rec1.alg_verdieping_key, NULL);
END LOOP;
createclosetag ('scenario');
END IF;
END;
-- *
-- * BES bestelling_item kenmerken
-- * Alleen ingevulde waarden en van type label (AAIT#22925)
PROCEDURE create_bes_item_kenmerken (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.bes_kenmerk_key,
lcl.x ('bes_srtkenmerk_omschrijving', s.bes_srtkenmerk_key, bes_srtkenmerk_omschrijving) bes_srtkenmerk_omschrijving,
s.bes_srtkenmerk_kenmerktype,
s.fac_kenmerkdomein_key,
s.bes_srtkenmerk_lengte,
s.bes_srtkenmerk_dec,
s.bes_srtkenmerk_nmin,
s.bes_srtkenmerk_nmax,
k.bes_kenmerk_default,
NVL (k.bes_kenmerk_volgnummer, 0) volgnummer,
lcl.x ('bes_srtkenmerk_dimensie',
s.bes_srtkenmerk_key,
bes_srtkenmerk_dimensie)
dimensie,
lcl.x ('bes_kenmerk_hint',
k.bes_kenmerk_key,
bes_kenmerk_hint)
hint,
bki.bes_kenmerkbesteli_waarde
FROM bes_kenmerk k,
bes_srtkenmerk s,
bes_kenmerkbesteli bki,
bes_bestelling_item d,
bes_srtgroep sg,
bes_srtdeel sd
WHERE ( (k.bes_srtinstallatie_key IS NULL
AND k.bes_kenmerk_niveau = 'D')
OR (sg.ins_discipline_key = k.bes_srtinstallatie_key
AND k.bes_kenmerk_niveau = 'D')
OR (d.bes_srtdeel_key = k.bes_srtinstallatie_key
AND k.bes_kenmerk_niveau = 'S')
OR (sg.bes_srtgroep_key = k.bes_srtinstallatie_key
AND k.bes_kenmerk_niveau = 'G'))
AND d.bes_bestelling_item_key = p_key
AND k.bes_kenmerk_verwijder IS NULL
AND s.bes_srtkenmerk_verwijder IS NULL
AND d.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND k.bes_srtkenmerk_key = s.bes_srtkenmerk_key
AND k.bes_kenmerk_key = bki.bes_kenmerk_key(+)
AND bki.bes_bestelling_item_key(+) = p_key
AND k.bes_srtkenmerk_key = s.bes_srtkenmerk_key
AND (bki.bes_kenmerkbesteli_waarde IS NOT NULL OR s.bes_srtkenmerk_kenmerktype IN ('L', 'l', 'M'))
AND k.bes_kenmerk_type = 'I'
ORDER BY k.bes_kenmerk_volgnummer;
v_kenmerk_waarde bes_kenmerkbesteli.bes_kenmerkbesteli_waarde%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.bes_kenmerkbesteli_waarde,
rec1.bes_kenmerk_default,
rec1.bes_srtkenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.bes_srtkenmerk_nmin,
rec1.bes_srtkenmerk_nmax);
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.bes_srtkenmerk_omschrijving,
'type',
rec1.bes_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.bes_kenmerk_key,
'dimensie',
rec1.dimensie,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
-- *
-- * BES bestelling kenmerken
-- * Alleen ingevulde waarden en van type label (AAIT#22925) en Multifile (FSN#31711)
PROCEDURE create_bes_bestell_kenmerken (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.bes_kenmerk_key,
lcl.x ('bes_srtkenmerk_omschrijving', s.bes_srtkenmerk_key, bes_srtkenmerk_omschrijving) bes_srtkenmerk_omschrijving,
s.bes_srtkenmerk_kenmerktype,
s.fac_kenmerkdomein_key,
s.bes_srtkenmerk_lengte,
s.bes_srtkenmerk_dec,
s.bes_srtkenmerk_nmin,
s.bes_srtkenmerk_nmax,
k.bes_kenmerk_default,
NVL (k.bes_kenmerk_volgnummer, 0) volgnummer,
lcl.x ('bes_srtkenmerk_dimensie',
s.bes_srtkenmerk_key,
bes_srtkenmerk_dimensie)
dimensie,
lcl.x ('bes_kenmerk_hint',
k.bes_kenmerk_key,
bes_kenmerk_hint)
hint,
bkb.bes_kenmerkbestell_waarde
FROM bes_kenmerk k,
bes_srtkenmerk s,
bes_kenmerkbestell bkb
WHERE k.bes_kenmerk_verwijder IS NULL
AND k.bes_kenmerk_key = bkb.bes_kenmerk_key(+)
AND bkb.bes_bestelling_key(+) = p_key
AND k.bes_srtkenmerk_key = s.bes_srtkenmerk_key
AND k.bes_srtinstallatie_key = (SELECT MAX (bsg.ins_discipline_key) ins_discipline_key
FROM bes_bestelling_item bi, bes_srtdeel bsd, bes_srtgroep bsg
WHERE bi.bes_srtdeel_key = bsd.bes_srtdeel_key
AND bsd.bes_srtgroep_key = bsg.bes_srtgroep_key
AND bes_bestelling_key = p_key)
AND (bkb.bes_kenmerkbestell_waarde IS NOT NULL OR s.bes_srtkenmerk_kenmerktype IN ('L', 'l', 'M'))
AND k.bes_kenmerk_type = 'B'
ORDER BY k.bes_kenmerk_volgnummer;
v_kenmerk_waarde bes_kenmerkbestell.bes_kenmerkbestell_waarde%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.bes_kenmerkbestell_waarde,
rec1.bes_kenmerk_default,
rec1.bes_srtkenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.bes_srtkenmerk_nmin,
rec1.bes_srtkenmerk_nmax);
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.bes_srtkenmerk_omschrijving,
'type',
rec1.bes_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.bes_kenmerk_key,
'dimensie',
rec1.dimensie,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
PROCEDURE create_ins_srtgroep_node (p_key IN NUMBER, p_concise BOOLEAN)
AS
v_discipline_key ins_srtgroep.ins_discipline_key%TYPE;
v_omschrijving ins_srtgroep.ins_srtgroep_omschrijving%TYPE;
BEGIN
IF p_concise
THEN
createopentagattributes ('srtgroep',
'type',
'INS',
'mode',
'concise',
NULL,
NULL,
NULL,
NULL);
ELSE
createopentagattributes ('srtgroep',
'type',
'INS',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
END IF;
SELECT ins_discipline_key,
lcl.x ('ins_srtgroep_omschrijving',
ins_srtgroep_key,
ins_srtgroep_omschrijving)
ins_srtgroep_omschrijving
INTO v_discipline_key, v_omschrijving
FROM ins_srtgroep
WHERE ins_srtgroep_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
IF NOT p_concise
THEN
create_ins_discipline_node (v_discipline_key);
END IF;
createclosetag ('srtgroep');
END;
PROCEDURE create_ins_srtkenmerken (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.ins_kenmerk_key,
lcl.x ('ins_srtkenmerk_omschrijving', s.ins_srtkenmerk_key, ins_srtkenmerk_omschrijving) ins_srtkenmerk_omschrijving,
s.ins_srtkenmerk_kenmerktype,
s.fac_kenmerkdomein_key,
s.ins_srtkenmerk_lengte,
s.ins_srtkenmerk_dec,
s.ins_srtkenmerk_nmin,
s.ins_srtkenmerk_nmax,
k.ins_kenmerk_default,
NVL (k.ins_kenmerk_volgnummer, 0) volgnummer,
lcl.x ('ins_srtkenmerk_dimensie',
s.ins_srtkenmerk_key,
ins_srtkenmerk_dimensie)
dimensie,
lcl.x ('ins_kenmerk_hint',
k.ins_kenmerk_key,
ins_kenmerk_hint)
hint,
v.ins_kenmerkdeel_waarde,
v.ins_kenmerkdeel_aanmaak,
v.ins_kenmerkdeel_verwijder
FROM ins_kenmerk k,
ins_srtkenmerk s,
ins_srtgroep sg,
ins_srtdeel sd,
(SELECT v.ins_kenmerk_key,
v.ins_kenmerkdeel_waarde,
v.ins_kenmerkdeel_aanmaak,
v.ins_kenmerkdeel_verwijder
FROM ins_kenmerkdeel v
WHERE v.ins_deel_key = p_key) v
WHERE ( (k.ins_srtinstallatie_key IS NULL
AND k.ins_kenmerk_niveau = 'D')
OR (sg.ins_discipline_key = k.ins_srtinstallatie_key
AND k.ins_kenmerk_niveau = 'D')
OR (sd.ins_srtdeel_key = k.ins_srtinstallatie_key
AND k.ins_kenmerk_niveau = 'S')
OR (sg.ins_srtgroep_key = k.ins_srtinstallatie_key
AND k.ins_kenmerk_niveau = 'G'))
AND sd.ins_srtdeel_key = p_key
AND k.ins_kenmerk_verwijder IS NULL
AND ins_kenmerk_bewerkniveau = 'S'
AND s.ins_srtkenmerk_verwijder IS NULL
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND k.ins_srtkenmerk_key = s.ins_srtkenmerk_key
AND v.ins_kenmerk_key(+) = k.ins_kenmerk_key
ORDER BY k.ins_kenmerk_volgnummer;
v_kenmerk_waarde ins_kenmerkdeel.ins_kenmerkdeel_waarde%TYPE;
v_kenmerk_aanmaak ins_kenmerkdeel.ins_kenmerkdeel_aanmaak%TYPE;
v_kenmerk_verwijder ins_kenmerkdeel.ins_kenmerkdeel_verwijder%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_aanmaak := rec1.ins_kenmerkdeel_aanmaak;
v_kenmerk_verwijder := rec1.ins_kenmerkdeel_verwijder;
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.ins_kenmerkdeel_waarde,
rec1.ins_kenmerk_default,
rec1.ins_srtkenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.ins_srtkenmerk_nmin,
rec1.ins_srtkenmerk_nmax);
createxmltagvalueattributes (
'kenmerk',
'naam',
rec1.ins_srtkenmerk_omschrijving,
'type',
rec1.ins_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.ins_kenmerk_key,
'aanmaak',
TO_CHAR (v_kenmerk_aanmaak, 'YYYYMMDD HH24:MI'),
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
PROCEDURE create_ins_srtdeel_node (p_key IN NUMBER, p_concise BOOLEAN)
AS
v_groep_key ins_srtgroep.ins_srtgroep_key%TYPE;
v_omschrijving ins_srtdeel.ins_srtdeel_omschrijving%TYPE;
v_code ins_srtdeel.ins_srtdeel_code%TYPE;
v_prijs ins_srtdeel.ins_srtdeel_prijs%TYPE;
v_inkprijs ins_srtdeel.ins_srtdeel_inkprijs%TYPE;
v_eenheid ins_srtdeel.ins_srtdeel_eenheid%TYPE;
v_artikel_nummer ins_srtdeel.ins_srtdeel_nr%TYPE;
v_leverancier_key ins_srtdeel.prs_bedrijf_key%TYPE;
v_vervaldatum ins_srtdeel.ins_srtdeel_vervaldatum%TYPE;
v_image ins_srtdeel.ins_srtdeel_image%TYPE;
v_veelvoud ins_srtdeel.ins_srtdeel_veelvoud%TYPE;
v_prsflex ins_srtdeel.ins_srtdeel_prsflex%TYPE;
v_binding ins_srtdeel.ins_srtdeel_binding%TYPE;
v_opmerking ins_srtdeel.ins_srtdeel_opmerking%TYPE;
v_minimum ins_srtdeel.ins_srtdeel_minimum%TYPE;
v_mjb_grensscore1 ins_srtdeel.ins_srtdeel_mjb_grensscore1%TYPE;
BEGIN
IF p_concise
THEN
createopentagattributes ('srtdeel',
'type',
'INS',
'mode',
'concise',
NULL,
NULL,
NULL,
NULL);
ELSE
createopentagattributes ('srtdeel',
'type',
'INS',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
END IF;
SELECT ins_srtgroep_key,
lcl.x ('ins_srtdeel_omschrijving',
ins_srtdeel_key,
ins_srtdeel_omschrijving)
ins_srtdeel_omschrijving,
ins_srtdeel_code,
ins_srtdeel_prijs,
ins_srtdeel_inkprijs,
lcl.x ('ins_srtdeel_eenheid',
ins_srtdeel_key,
ins_srtdeel_eenheid)
ins_srtdeel_eenheid,
NVL (ins_srtdeel_nr, ' '),
prs_bedrijf_key,
ins_srtdeel_vervaldatum,
ins_srtdeel_image,
ins_srtdeel_veelvoud,
ins_srtdeel_prsflex,
ins_srtdeel_binding,
lcl.x ('ins_srtdeel_opmerking',
ins_srtdeel_key,
ins_srtdeel_opmerking)
ins_srtdeel_opmerking,
ins_srtdeel_minimum,
ins_srtdeel_mjb_grensscore1
INTO v_groep_key,
v_omschrijving,
v_code,
v_prijs,
v_inkprijs,
v_eenheid,
v_artikel_nummer,
v_leverancier_key,
v_vervaldatum,
v_image,
v_veelvoud,
v_prsflex,
v_binding,
v_opmerking,
v_minimum,
v_mjb_grensscore1
FROM ins_srtdeel
WHERE ins_srtdeel_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('code', v_code);
IF NOT p_concise
THEN
createxmltagvalue ('prijs', v_prijs);
createxmltagvalue ('inkprijs', v_inkprijs);
createxmltagvalue ('eenheid', v_eenheid);
createxmltagvalue ('artikel_nummer', v_artikel_nummer);
createxmltagvalue ('leverancier_key', v_leverancier_key);
createxmltagvalue ('vervaldatum', v_vervaldatum);
createxmltagvalue ('image', v_image);
createxmltagvalue ('veelvoud', v_veelvoud);
createxmltagvalue ('prsflex', v_prsflex);
createxmltagvalue ('binding', v_binding);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('minimum', v_minimum);
createxmltagvalue ('mjb_grenscore1', v_mjb_grensscore1);
END IF;
-- He, kenmerken ook bij concise? Ja!
create_ins_srtkenmerken(p_key);
create_ins_srtgroep_node (v_groep_key, p_concise); -- dus false
createclosetag ('srtdeel');
END;
PROCEDURE create_bes_srtgroep_node (p_key IN NUMBER, p_concise BOOLEAN)
AS
v_discipline_key bes_srtgroep.ins_discipline_key%TYPE;
v_omschrijving bes_srtgroep.bes_srtgroep_omschrijving%TYPE;
v_kostensoort_key bes_srtgroep.prs_kostensoort_key%TYPE;
BEGIN
IF p_concise
THEN
createopentagattributes ('srtgroep',
'type',
'BES',
'mode',
'concise',
NULL,
NULL,
NULL,
NULL);
ELSE
createopentagattributes ('srtgroep',
'type',
'BES',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
END IF;
SELECT ins_discipline_key,
lcl.x ('bes_srtgroep_omschrijving',
bes_srtgroep_key,
bes_srtgroep_omschrijving)
bes_srtgroep_omschrijving,
prs_kostensoort_key
INTO v_discipline_key, v_omschrijving, v_kostensoort_key
FROM bes_srtgroep
WHERE bes_srtgroep_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
create_prs_kostensoort_node (v_kostensoort_key);
IF NOT p_concise
THEN
create_ins_discipline_node (v_discipline_key);
END IF;
createclosetag ('srtgroep');
END;
PROCEDURE create_bes_srtdeel_node (p_key IN NUMBER, p_concise BOOLEAN)
AS
v_groep_key bes_srtgroep.bes_srtgroep_key%TYPE;
v_omschrijving bes_srtdeel.bes_srtdeel_omschrijving%TYPE;
v_prijs bes_srtdeel_prijs.bes_srtdeel_prijs_prijs%TYPE;
v_inkprijs bes_srtdeel_prijs.bes_srtdeel_prijs_inkprijs%TYPE;
v_eenheid bes_srtdeel.bes_srtdeel_eenheid%TYPE;
v_artikel_nummer bes_srtdeel.bes_srtdeel_nr%TYPE;
v_leverancier_key bes_srtdeel.prs_bedrijf_key%TYPE;
v_vervaldatum bes_srtdeel.bes_srtdeel_vervaldatum%TYPE;
v_image bes_srtdeel.bes_srtdeel_image%TYPE;
v_veelvoud bes_srtdeel.bes_srtdeel_veelvoud%TYPE;
v_prsflex bes_srtdeel.bes_srtdeel_prsflex%TYPE;
v_preview bes_srtdeel.bes_srtdeel_preview%TYPE;
v_opmerking bes_srtdeel.bes_srtdeel_opmerking%TYPE;
v_minimum bes_srtdeel.bes_srtdeel_minimum%TYPE;
v_notitie bes_srtdeel.bes_srtdeel_notitie%TYPE;
v_btw bes_srtdeel.bes_srtdeel_btw%TYPE;
BEGIN
IF p_concise
THEN
createopentagattributes ('srtdeel',
'type',
'BES',
'mode',
'concise',
NULL,
NULL,
NULL,
NULL);
ELSE
createopentagattributes ('srtdeel',
'type',
'BES',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
END IF;
SELECT bes_srtgroep_key,
lcl.x ('bes_srtdeel_omschrijving',
bes_srtdeel_key,
bes_srtdeel_omschrijving)
bes_srtdeel_omschrijving,
bes.getsrtdeelprijs (bes_srtdeel_key, NULL) bes_srtdeel_prijs,
bes.getsrtdeelinkprijs (bes_srtdeel_key, NULL)
bes_srtdeel_inkprijs,
lcl.x ('bes_srtdeel_eenheid',
bes_srtdeel_key,
bes_srtdeel_eenheid)
bes_srtdeel_eenheid,
NVL (bes_srtdeel_nr, ' '),
prs_bedrijf_key,
bes_srtdeel_vervaldatum,
bes_srtdeel_image,
bes_srtdeel_veelvoud,
bes_srtdeel_prsflex,
bes_srtdeel_preview,
lcl.x ('bes_srtdeel_opmerking',
bes_srtdeel_key,
bes_srtdeel_opmerking)
bes_srtdeel_opmerking,
bes_srtdeel_minimum,
bes_srtdeel_notitie,
bes_srtdeel_btw
INTO v_groep_key,
v_omschrijving,
v_prijs,
v_inkprijs,
v_eenheid,
v_artikel_nummer,
v_leverancier_key,
v_vervaldatum,
v_image,
v_veelvoud,
v_prsflex,
v_preview,
v_opmerking,
v_minimum,
v_notitie,
v_btw
FROM bes_srtdeel
WHERE bes_srtdeel_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
IF NOT p_concise
THEN
createxmltagvalue ('prijs', v_prijs);
createxmltagvalue ('inkprijs', v_inkprijs);
createxmltagvalue ('eenheid', v_eenheid);
createxmltagvalue ('artikel_nummer', v_artikel_nummer);
createxmltagvalue ('leverancier_key', v_leverancier_key);
createxmltagvalue ('vervaldatum', v_vervaldatum);
createxmltagvalue ('image', v_image);
createxmltagvalue ('veelvoud', v_veelvoud);
createxmltagvalue ('prsflex', v_prsflex);
createxmltagvalue ('preview', v_preview);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('minimum', v_minimum);
createxmltagvalue ('notitie', v_notitie);
createxmltagvalue ('btw', v_btw);
END IF;
create_bes_srtgroep_node (v_groep_key, p_concise); -- dus false
createclosetag ('srtdeel');
END;
PROCEDURE create_bes_besteli_node (p_key IN NUMBER)
AS
v_srtdeel_key bes_srtdeel.bes_srtdeel_key%TYPE;
v_aantal bes_bestelling_item.bes_bestelling_item_aantal%TYPE;
v_bestelopdr_item_key bes_bestelopdr_item.bes_bestelopdr_item_key%TYPE;
v_aantalontv bes_bestelling_item.bes_bestelling_item_aantalontv%TYPE;
v_status bes_bestellingstatuses.bes_bestellingstatuses_omschr%TYPE;
v_status_key bes_bestelling_item.bes_bestelling_item_status%TYPE;
v_totaal bes_bestelling_item.bes_bestelling_item_prijs%TYPE;
v_inktotaal bes_bestelling_item.bes_bestelling_item_inkprijs%TYPE;
v_brutoprijs bes_bestelling_item.bes_bestelling_item_brutoprijs%TYPE;
v_prijs bes_bestelling_item.bes_bestelling_item_prijs%TYPE;
v_inkprijs bes_bestelling_item.bes_bestelling_item_inkprijs%TYPE;
BEGIN
createopentag ('bestelitem');
SELECT bes_srtdeel_key,
bes_bestelling_item_aantal,
bes_bestelopdr_item_key,
bes_bestelling_item_aantalontv,
NVL (bes_bestellingstatuses_omschr, ''),
NVL (bes_bestelling_item_status, ''),
bes_bestelling_item_prijs,
bes_bestelling_item_brutoprijs,
bes_bestelling_item_aantal * bes_bestelling_item_prijs,
bes_bestelling_item_inkprijs,
bes_bestelling_item_aantal * bes_bestelling_item_inkprijs
INTO v_srtdeel_key,
v_aantal,
v_bestelopdr_item_key,
v_aantalontv,
v_status,
v_status_key,
v_prijs,
v_brutoprijs,
v_totaal,
v_inkprijs,
v_inktotaal
FROM bes_bestelling_item bi, bes_bestellingstatuses s
WHERE bi.bes_bestelling_item_status = s.bes_bestellingstatuses_key(+)
AND bi.bes_bestelling_item_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('aantal', v_aantal);
createxmltagvalue ('opdrachtitem_key', v_bestelopdr_item_key);
createxmltagvalue ('aantalontv', v_aantalontv);
createxmltagvalue ('status_key', v_status_key);
createxmltagvalue ('status', v_status);
createxmltagvalue ('prijs', v_prijs);
createxmltagvalue ('inkprijs', v_inkprijs);
createxmltagvalue ('brutoprijs', v_brutoprijs);
createxmltagvalue ('totaal', v_totaal);
createxmltagvalue ('inktotaal', v_inktotaal);
create_bes_item_kenmerken (p_key);
create_bes_srtdeel_node (v_srtdeel_key, FALSE);
createclosetag ('bestelitem');
END;
PROCEDURE create_bes_bestelopdri_node (p_key IN NUMBER)
AS
v_bestelopdr_item_key bes_bestelopdr_item.bes_bestelopdr_item_key%TYPE;
v_bestelopdr_key bes_bestelopdr_item.bes_bestelopdr_key%TYPE;
v_bestelopdr_item_aantal bes_bestelopdr_item.bes_bestelopdr_item_aantal%TYPE;
v_bestelopdr_item_aantalontv bes_bestelopdr_item.bes_bestelopdr_item_aantalontv%TYPE;
v_bestelopdr_item_omschrijv bes_bestelopdr_item.bes_bestelopdr_item_omschrijv%TYPE;
v_bestelopdr_item_prijs bes_bestelopdr_item.bes_bestelopdr_item_prijs%TYPE;
v_bestelopdr_item_ontvangen bes_bestelopdr_item.bes_bestelopdr_item_ontvangen%TYPE;
v_bestelopdr_item_status bes_bestelopdr_item.bes_bestelopdr_item_status%TYPE;
v_bestelopdr_item_verwerkt bes_bestelopdr_item.bes_bestelopdr_item_verwerkt%TYPE;
v_status bes_bestelopdrstatuses.bes_bestelopdrstatuses_omschr%TYPE;
v_bestelopdr_item_posnr bes_bestelopdr_item.bes_bestelopdr_item_posnr%TYPE;
v_bestelopdr_item_brutoprijs bes_bestelopdr_item.bes_bestelopdr_item_brutoprijs%TYPE;
v_bestelopdr_item_inkprijs bes_bestelopdr_item.bes_bestelopdr_item_inkprijs%TYPE;
v_bestelopdr_item_opmerking bes_bestelopdr_item.bes_bestelopdr_item_opmerking%TYPE;
CURSOR c1
IS
SELECT bes_bestelling_item_key
FROM bes_bestelling_item
WHERE bes_bestelopdr_item_key = p_key;
BEGIN
createopentag ('bestelopdrachtitem');
SELECT bes_bestelopdr_item_key,
bes_bestelopdr_key,
bes_bestelopdr_item_aantal,
bes_bestelopdr_item_aantalontv,
bes_bestelopdr_item_omschrijv,
bes_bestelopdr_item_prijs,
bes_bestelopdr_item_ontvangen,
bes_bestelopdr_item_status,
bes_bestelopdr_item_verwerkt,
bes_bestelopdr_item_posnr,
bes_bestelopdr_item_brutoprijs,
bes_bestelopdr_item_inkprijs,
bes_bestelopdr_item_opmerking
INTO v_bestelopdr_item_key,
v_bestelopdr_key,
v_bestelopdr_item_aantal,
v_bestelopdr_item_aantalontv,
v_bestelopdr_item_omschrijv,
v_bestelopdr_item_prijs,
v_bestelopdr_item_ontvangen,
v_bestelopdr_item_status,
v_bestelopdr_item_verwerkt,
v_bestelopdr_item_posnr,
v_bestelopdr_item_brutoprijs,
v_bestelopdr_item_inkprijs,
v_bestelopdr_item_opmerking
FROM bes_bestelopdr_item bi, bes_bestelopdrstatuses s
WHERE bi.bes_bestelopdr_item_status = s.bes_bestelopdrstatuses_key(+)
AND bi.bes_bestelopdr_item_key = p_key;
createxmltagvalue ('key', v_bestelopdr_item_key);
createxmltagvalue ('posnr', v_bestelopdr_item_posnr);
createxmltagvalue ('statuskey', v_bestelopdr_item_status);
createxmltagvalue ('status', v_status);
createxmltagvalue ('aantal', v_bestelopdr_item_aantal);
createxmltagvalue ('aantalontv', v_bestelopdr_item_aantalontv);
-- De omschrijving is een snapshotje. Gebruik normaliter de gegevens van de subnode bestelitem
createxmltagvalue ('omschrijving', v_bestelopdr_item_omschrijv);
createxmltagvalue ('prijs', v_bestelopdr_item_prijs);
createxmltagvalue ('totaal',
v_bestelopdr_item_prijs * v_bestelopdr_item_aantal);
createxmltagvalue (
'inktotaal',
v_bestelopdr_item_inkprijs * v_bestelopdr_item_aantal);
mydatetochar ('ontvangen', v_bestelopdr_item_ontvangen);
mydatetochar ('verwerkt', v_bestelopdr_item_verwerkt);
createxmltagvalue ('brutoprijs', v_bestelopdr_item_brutoprijs);
createxmltagvalue ('inkprijs', v_bestelopdr_item_inkprijs);
createxmltagvalue ('opmerking', v_bestelopdr_item_opmerking);
FOR rec1 IN c1
LOOP
create_bes_besteli_node (rec1.bes_bestelling_item_key);
END LOOP;
createclosetag ('bestelopdrachtitem');
END;
PROCEDURE create_bes_bestelling_node (p_key IN NUMBER,
p_concise IN BOOLEAN)
AS
v_module bes_bestelling.bes_bestelling_module%TYPE;
v_statuskey bes_bestelling.bes_bestelling_status%TYPE;
v_datum bes_bestelling.bes_bestelling_datum%TYPE;
v_perslid_key bes_bestelling.prs_perslid_key%TYPE;
v_perslid_key_voor bes_bestelling.prs_perslid_key_voor%TYPE;
v_opmerking bes_bestelling.bes_bestelling_opmerking%TYPE;
v_ordernr bes_bestelling.bes_bestelling_ordernr%TYPE;
v_plaats bes_bestelling.bes_bestelling_plaats%TYPE;
v_fiat_user bes_bestelling.bes_bestelling_fiat_user%TYPE;
v_adres_key_lev bes_bestelling.mld_adres_key_lev%TYPE;
v_kostenplaats_key bes_bestelling.prs_kostenplaats_key%TYPE;
v_status bes_bestellingstatuses.bes_bestellingstatuses_omschr%TYPE;
v_leverdatum bes_bestelling.bes_bestelling_leverdatum%TYPE;
v_kosten_klant bes_bestelling.bes_bestelling_kosten_klant%TYPE;
v_activiteit_key bes_bestelling.fac_activiteit_key%TYPE;
v_retourvan_key bes_bestelling.bes_bestelling_retourvan_key%TYPE;
v_levkosten bes_bestelling.bes_bestelling_levkosten%TYPE;
v_korting bes_bestelling.bes_bestelling_korting%TYPE;
v_parentkey bes_bestelling.bes_bestelling_parentkey%TYPE;
v_approved bes_bestelling.bes_bestelling_approved%TYPE;
v_lev_opm bes_bestelling.bes_bestelling_lev_opm%TYPE;
CURSOR c1
IS
SELECT bes_bestelling_item_key
FROM bes_bestelling_item
WHERE bes_bestelling_key = p_key;
-- Met welke opdracht(en) wordt deze aanvraag afgehandeld?
CURSOR c2
IS
SELECT DISTINCT boi.bes_bestelopdr_key
FROM bes_bestelling_item bi, bes_bestelopdr_item boi
WHERE boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = p_key;
BEGIN
IF p_key IS NOT NULL
THEN
IF p_concise
THEN
createconciseopentag ('bestelling');
ELSE
createopentag ('bestelling');
END IF;
SELECT bes_bestelling_module,
bes_bestelling_status,
bes_bestelling_datum,
prs_perslid_key,
prs_perslid_key_voor,
bes_bestelling_opmerking,
bes_bestelling_ordernr,
bes_bestelling_plaats,
bes_bestelling_fiat_user,
mld_adres_key_lev,
prs_kostenplaats_key,
bes_bestellingstatuses_omschr,
bes_bestelling_leverdatum,
bes_bestelling_kosten_klant,
fac_activiteit_key,
bes_bestelling_retourvan_key,
bes_bestelling_levkosten,
bes_bestelling_korting,
bes_bestelling_parentkey,
bes_bestelling_approved,
bes_bestelling_lev_opm
INTO v_module,
v_statuskey,
v_datum,
v_perslid_key,
v_perslid_key_voor,
v_opmerking,
v_ordernr,
v_plaats,
v_fiat_user,
v_adres_key_lev,
v_kostenplaats_key,
v_status,
v_leverdatum,
v_kosten_klant,
v_activiteit_key,
v_retourvan_key,
v_levkosten,
v_korting,
v_parentkey,
v_approved,
v_lev_opm
FROM bes_bestelling b, bes_bestellingstatuses s
WHERE b.bes_bestelling_status = s.bes_bestellingstatuses_key
AND bes_bestelling_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('module', v_module);
mydatetochar ('datum', v_datum);
mydatetochar ('leverdatum', v_leverdatum);
createxmltagvalue ('status_key', v_statuskey);
createxmltagvalue ('status', v_status);
create_prs_perslid_node (v_perslid_key, 'aanvrager', TRUE);
create_prs_perslid_node (v_perslid_key_voor, 'voor', FALSE);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('bestel_opm', v_lev_opm);
createxmltagvalue ('ordernr', v_ordernr);
createxmltagvalue ('plaats', v_plaats);
create_prs_perslid_node (v_fiat_user, 'fiatteur', TRUE);
create_mld_adres_node (v_adres_key_lev, 'afleveradres', FALSE);
createxmltagvalue ('kosten_klant', v_kosten_klant);
create_prs_kostenplaats_node (v_kostenplaats_key, FALSE);
create_fac_activiteit_node (v_activiteit_key);
create_bes_bestell_kenmerken (p_key);
IF v_retourvan_key IS NOT NULL -- Dan is dit een retour
THEN
createxmltagvalue ('isretour', 1); -- Might be handy
create_bes_bestelling_node (v_retourvan_key, p_concise);
END IF;
createxmltagvalue ('levkosten', v_levkosten);
createxmltagvalue ('korting', v_korting);
IF NOT p_concise
THEN
FOR rec1 IN c1
LOOP
create_bes_besteli_node (rec1.bes_bestelling_item_key);
END LOOP;
FOR rec2 IN c2
LOOP
create_bes_bestelopdr_node (rec2.bes_bestelopdr_key, TRUE);
END LOOP;
END IF;
IF v_parentkey IS NOT NULL -- Dan is dit een mutatie
THEN
createxmltagvalue ('ismutatie', 1); -- Might be handy
create_bes_bestelling_node (v_parentkey, TRUE);
END IF;
createxmltagvalue ('approved', v_approved);
create_fac_tracking_node ('bestelling', p_key);
createclosetag ('bestelling');
END IF;
END;
PROCEDURE create_bes_bestelopdr_node (p_key IN NUMBER, p_concise IN BOOLEAN)
AS
v_bestelopdr_key bes_bestelopdr.bes_bestelopdr_key%TYPE;
v_bestelopdr_id bes_bestelopdr.bes_bestelopdr_id%TYPE;
v_module bes_bestelopdr.bes_bestelopdr_module%TYPE;
v_bestelopdr_status bes_bestelopdr.bes_bestelopdr_status%TYPE;
v_bedrijf_key bes_bestelopdr.prs_bedrijf_key%TYPE;
v_bestelopdr_datum bes_bestelopdr.bes_bestelopdr_datum%TYPE;
v_adres_key_lev bes_bestelopdr.mld_adres_key_lev%TYPE;
v_adres_key_fac bes_bestelopdr.mld_adres_key_fac%TYPE;
v_bestelopdr_leverdatum bes_bestelopdr.bes_bestelopdr_leverdatum%TYPE;
v_bestelopdr_opmerking bes_bestelopdr.bes_bestelopdr_opmerking%TYPE;
v_contract_key bes_bestelopdr.cnt_contract_key%TYPE;
v_perslid_key bes_bestelopdr.prs_perslid_key%TYPE;
v_bestelopdr_delivery_opmerk bes_bestelopdr.bes_bestelopdr_delivery_opmerk%TYPE;
v_status bes_bestelopdrstatuses.bes_bestelopdrstatuses_omschr%TYPE;
v_levkosten bes_bestelopdr.bes_bestelopdr_levkosten%TYPE;
v_korting bes_bestelopdr.bes_bestelopdr_korting%TYPE;
CURSOR c1
IS
SELECT bes_bestelopdr_item_key
FROM bes_bestelopdr_item
WHERE bes_bestelopdr_key = p_key;
CURSOR c2
IS
SELECT DISTINCT bi.bes_bestelling_key
FROM bes_bestelling_item bi, bes_bestelopdr_item boi
WHERE boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_key = p_key;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('bestelopdracht');
SELECT bes_bestelopdr_module,
bes_bestelopdr_status,
prs_bedrijf_key,
bes_bestelopdr_datum,
mld_adres_key_lev,
mld_adres_key_fac,
bes_bestelopdr_leverdatum,
bes_bestelopdr_opmerking,
cnt_contract_key,
prs_perslid_key,
bes_bestelopdr_delivery_opmerk,
bes_bestelopdrstatuses_omschr,
bes_bestelopdr_id,
bes_bestelopdr_levkosten,
bes_bestelopdr_korting
INTO v_module,
v_bestelopdr_status,
v_bedrijf_key,
v_bestelopdr_datum,
v_adres_key_lev,
v_adres_key_fac,
v_bestelopdr_leverdatum,
v_bestelopdr_opmerking,
v_contract_key,
v_perslid_key,
v_bestelopdr_delivery_opmerk,
v_status,
v_bestelopdr_id,
v_levkosten,
v_korting
FROM bes_bestelopdr b, bes_bestelopdrstatuses s
WHERE b.bes_bestelopdr_status = s.bes_bestelopdrstatuses_key
AND bes_bestelopdr_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('id', v_bestelopdr_id);
createxmltagvalue ('module', v_module);
mydatetochar ('datum', v_bestelopdr_datum);
mydatetochar ('leverdatum', v_bestelopdr_leverdatum);
createxmltagvalue ('status_key', v_bestelopdr_status);
createxmltagvalue ('status', v_status);
create_prs_bedrijf_node (v_bedrijf_key, 'bedrijf', FALSE); -- niet concise zodat bedrijfadressen meekomen
createxmltagvalue ('opmerking', v_bestelopdr_opmerking);
createxmltagvalue ('leveringopmerking',
v_bestelopdr_delivery_opmerk);
--Deze persoon is degene die de MakeOrders veroorzaakte (hoe relevant..)
create_prs_perslid_node (v_perslid_key, 'besteller', TRUE);
create_mld_adres_node (v_adres_key_lev, 'afleveradres', p_concise);
create_mld_adres_node (v_adres_key_fac, 'factuuradres', TRUE);
createxmltagvalue ('levkosten', v_levkosten);
createxmltagvalue ('korting', v_korting);
IF NOT p_concise
THEN
FOR rec1 IN c1
LOOP
create_bes_bestelopdri_node (rec1.bes_bestelopdr_item_key);
END LOOP;
-- Er is nogal wat info te behalen bij de bestelaanvraag; deze includen we hier integraal vooralsnog
-- Welke aanvraag hoort hier bij? Dat kunnen er theoretisch meer zijn (bundeling)
FOR rec2 IN c2
LOOP
create_bes_bestelling_node (rec2.bes_bestelling_key, TRUE);
END LOOP;
END IF;
create_fac_tracking_node ('bestelopdr', p_key);
createclosetag ('bestelopdracht');
END IF;
END;
--
--
-- BEZOEKERS
--
--
-- *
-- * BEZ kenmerken
-- *
PROCEDURE create_bez_kenmerken (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.bez_kenmerk_key,
lcl.x ('bez_kenmerk_omschrijving', k.bez_kenmerk_key, bez_kenmerk_omschrijving) bez_kenmerk_omschrijving,
k.bez_kenmerk_kenmerktype,
k.bez_kenmerk_systeem,
k.fac_kenmerkdomein_key,
k.bez_kenmerk_lengte,
k.bez_kenmerk_dec,
k.bez_kenmerk_nmin,
k.bez_kenmerk_nmax,
k.bez_kenmerk_default,
NVL (k.bez_kenmerk_volgnr, 0) volgnummer,
lcl.x ('bez_kenmerk_dimensie',
k.bez_kenmerk_key,
bez_kenmerk_dimensie)
dimensie,
lcl.x ('bez_kenmerk_hint',
k.bez_kenmerk_key,
bez_kenmerk_hint)
hint,
v.bez_kenmerkwaarde_waarde
FROM bez_kenmerk k,
(SELECT v.bez_kenmerk_key, v.bez_kenmerkwaarde_waarde
FROM bez_kenmerkwaarde v
WHERE v.bez_bezoekers_key = p_key
AND v.bez_kenmerkwaarde_verwijder IS NULL) v
WHERE k.bez_kenmerk_verwijder IS NULL
AND v.bez_kenmerk_key(+) = k.bez_kenmerk_key
ORDER BY k.bez_kenmerk_volgnr;
v_kenmerk_waarde bez_kenmerkwaarde.bez_kenmerkwaarde_waarde%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.bez_kenmerkwaarde_waarde,
rec1.bez_kenmerk_default,
rec1.bez_kenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.bez_kenmerk_nmin,
rec1.bez_kenmerk_nmax);
createxmltagvalueattributes8 ('kenmerk',
'naam',
rec1.bez_kenmerk_omschrijving,
'type',
rec1.bez_kenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.bez_kenmerk_key,
'dimensie',
rec1.dimensie,
'systeem',
rec1.bez_kenmerk_systeem,
NULL,
NULL,
NULL,
NULL,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
PROCEDURE create_bez_bezoeker_node (p_key IN NUMBER)
AS
v_afspraak_key bez_bezoekers.bez_afspraak_key%TYPE;
v_afspraak_naam bez_bezoekers.bez_afspraak_naam%TYPE;
v_afspraak_bedrijf bez_bezoekers.bez_afspraak_bedrijf%TYPE;
v_contactpersoon_key bez_bezoekers.prs_contactpersoon_key%TYPE;
v_perslid_key bez_bezoekers.prs_perslid_key%TYPE;
v_afspraak_opmerking bez_bezoekers.bez_bezoekers_opmerking%TYPE;
v_done bez_bezoekers.bez_bezoekers_done%TYPE;
v_out bez_bezoekers.bez_bezoekers_out%TYPE;
v_pasnr bez_bezoekers.bez_bezoekers_pasnr%TYPE;
v_aanmaak bez_bezoekers.bez_bezoekers_aanmaak%TYPE;
v_telefoon bez_bezoekers.bez_bezoekers_telefoon%TYPE;
v_email bez_bezoekers.bez_bezoekers_email%TYPE;
v_kenteken bez_bezoekers.bez_bezoekers_kenteken%TYPE;
v_parkeerplaats_key res_rsv_deel.res_deel_key%TYPE;
v_parkeer_prijs res_deel.res_deel_prijs%TYPE;
v_parkeer_prijs_vast res_deel.res_deel_prijs_vast%TYPE;
v_parkeer_key ins_deel.ins_deel_key%TYPE;
v_parkeer_omschr res_deel.res_deel_omschrijving%TYPE;
BEGIN
IF p_key = -1
THEN
RETURN;
END IF;
createopentag ('bezoeker');
-- bezoekers met evt. parkeerplaats
SELECT bez_afspraak_key,
bez_afspraak_naam,
bez_afspraak_bedrijf,
bez_bezoekers_opmerking,
bez_bezoekers_done,
bez_bezoekers_out,
bez_bezoekers_pasnr,
bez_bezoekers_aanmaak,
prs_perslid_key,
prs_contactpersoon_key,
bez_bezoekers_telefoon,
bez_bezoekers_email,
bez_bezoekers_kenteken
INTO v_afspraak_key,
v_afspraak_naam,
v_afspraak_bedrijf,
v_afspraak_opmerking,
v_done,
v_out,
v_pasnr,
v_aanmaak,
v_perslid_key,
v_contactpersoon_key,
v_telefoon,
v_email,
v_kenteken
FROM bez_bezoekers b
WHERE b.bez_bezoekers_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('naam', v_afspraak_naam);
createxmltagvalue ('bedrijf', v_afspraak_bedrijf);
createxmltagvalue ('opmerking', v_afspraak_opmerking);
create_prs_perslid_node (v_perslid_key, 'intern_user', TRUE);
create_prs_contactpersoon_node (v_contactpersoon_key);
mydatetochar ('done', v_done);
mydatetochar ('out', v_out);
create_bez_kenmerken (p_key);
createxmltagvalue ('pasnr', v_pasnr);
createxmltagvalue ('telefoon', v_telefoon);
createxmltagvalue ('email', v_email);
createxmltagvalue ('kenteken', v_kenteken);
mydatetochar ('aanmaak', v_aanmaak);
-- als zelfstandig aangeroepen, dan moet er nog wel iets van de afspraak bij
create_bez_afspraak_node (v_afspraak_key, -1, TRUE);
BEGIN
SELECT rd.res_deel_prijs,
rd.res_deel_prijs_vast,
d.ins_deel_key,
rd.res_deel_omschrijving
INTO v_parkeer_prijs,
v_parkeer_prijs_vast,
v_parkeer_key,
v_parkeer_omschr
FROM res_rsv_deel rrd, res_deel rd, ins_deel d
WHERE d.ins_deel_key = rd.res_ins_deel_key
AND rd.res_deel_key = rrd.res_deel_key
AND rrd.bez_bezoekers_key = p_key;
-- misschien maar 1 van de 2 doen?
createxmltagvalue ('parkeerplaats', v_parkeer_omschr);
create_ins_deel_node (v_parkeer_key, TRUE);
EXCEPTION
WHEN OTHERS
THEN
-- meerdere parkeerplaatsen per bezoeker doen we niet aan.
NULL;
END;
createclosetag ('bezoeker');
END;
PROCEDURE create_bez_afspraak_node (p_key IN NUMBER,
p_extra IN NUMBER,
p_concise IN BOOLEAN)
AS
v_perslid_key bez_afspraak.prs_perslid_key%TYPE;
v_host_key bez_afspraak.bez_afspraak_host_key%TYPE;
v_contact_key bez_afspraak.bez_afspraak_contact_key%TYPE;
v_gastheer bez_afspraak.bez_afspraak_gastheer%TYPE;
v_telefoonnr bez_afspraak.bez_afspraak_telefoonnr%TYPE;
v_datum bez_afspraak.bez_afspraak_datum%TYPE;
v_actie_key bez_afspraak.bez_actie_key%TYPE;
v_locatie_key bez_afspraak.alg_locatie_key%TYPE;
v_rsv_ruimte_key bez_afspraak.res_rsv_ruimte_key%TYPE;
v_onrgoed_keys bez_afspraak.alg_onrgoed_keys%TYPE;
v_ruimte bez_afspraak.bez_afspraak_ruimte%TYPE;
v_opmerking bez_afspraak.bez_afspraak_opmerking%TYPE;
v_eind bez_afspraak.bez_afspraak_eind%TYPE;
v_aanmaak bez_afspraak.bez_afspraak_aanmaak%TYPE;
v_actie_omschr bez_actie.bez_actie_omschrijving%TYPE;
CURSOR c1
IS
SELECT bez_bezoekers_key
FROM bez_bezoekers
WHERE bez_afspraak_key = p_key;
BEGIN
IF p_concise
THEN
createconciseopentag ('afspraak');
ELSE
createopentag ('afspraak');
END IF;
SELECT prs_perslid_key,
bez_afspraak_host_key,
bez_afspraak_contact_key,
bez_afspraak_gastheer,
bez_afspraak_telefoonnr,
bez_afspraak_datum,
ba.bez_actie_key,
alg_locatie_key,
res_rsv_ruimte_key,
alg_onrgoed_keys,
bez_afspraak_ruimte,
bez_afspraak_opmerking,
bez_afspraak_eind,
bez_afspraak_aanmaak,
lcl.x ('bez_actie_omschrijving',
ac.bez_actie_key,
bez_actie_omschrijving)
bez_actie_omschrijving
INTO v_perslid_key,
v_host_key,
v_contact_key,
v_gastheer,
v_telefoonnr,
v_datum,
v_actie_key,
v_locatie_key,
v_rsv_ruimte_key,
v_onrgoed_keys,
v_ruimte,
v_opmerking,
v_eind,
v_aanmaak,
v_actie_omschr
FROM bez_afspraak ba, bez_actie ac
WHERE ba.bez_actie_key = ac.bez_actie_key(+)
AND bez_afspraak_key = p_key;
-- bezoekers met evt. parkeerplaats
createxmltagvalue ('key', p_key);
-- als 1 specifieke bezoeker meegegeven, dan alleen die opnemen
-- Bij -1 is de bezoekernode leeg (anders oneindig)
IF p_extra IS NOT NULL
THEN
create_bez_bezoeker_node (p_extra);
ELSE
FOR rec1 IN c1
LOOP
create_bez_bezoeker_node (rec1.bez_bezoekers_key);
END LOOP;
END IF;
create_prs_perslid_node (v_host_key, 'host_user', p_concise);
createxmltagvalue ('gastheer', v_gastheer);
create_prs_perslid_node (v_contact_key, 'contact_user', p_concise);
createxmltagvalue ('telefoonnr', v_telefoonnr);
mydatetochar ('datum', v_datum);
mydatetochar ('eind', v_eind);
mydatetochar ('aanmaak', v_aanmaak);
createxmltagvalue ('actiekey', v_actie_key);
createxmltagvalue ('actie', v_actie_omschr);
createxmltagvalue ('ruimte', v_ruimte); -- de stringvariant van alg_ruimte_key?
createxmltagvalue ('opmerking', v_opmerking);
IF NOT p_concise
THEN
create_prs_perslid_node (v_perslid_key, 'ingevoerd_user', TRUE);
IF v_onrgoed_keys IS NULL
THEN
create_alg_onroerendgoed_node (v_locatie_key,
'plaats',
v_locatie_key,
p_concise,
FALSE);
ELSE
create_alg_onroerendgoed_node (v_onrgoed_keys,
'plaats',
NULL,
p_concise,
FALSE);
END IF;
-- rsv_ruimte? Als deze afspraak binnen een reservering valt, dan is die ook bij die reservering genest
-- als ik dan alleen de afspraak beschouw, is slechts beperkte info van de res_rsv_ruimte hier nodig.
-- De afspraakgegevens zijn hier bekend, deze link is alleen om ze (reservering en afspraak) bij elkaar te houden
-- Hoedan ook: toch een korte vermelding van de bijbehorendende reservering als die er is
IF v_rsv_ruimte_key IS NOT NULL
THEN
create_res_rsv_ruimte_node (v_rsv_ruimte_key, TRUE);
END IF;
END IF;
createclosetag ('afspraak');
END;
--
--
-- RESERVERINGEN
--
--
PROCEDURE create_res_kenmerken (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.res_kenmerk_key,
lcl.x ('res_srtkenmerk_omschrijving', s.res_srtkenmerk_key, res_srtkenmerk_omschrijving) res_srtkenmerk_omschrijving,
s.res_srtkenmerk_kenmerktype,
s.fac_kenmerkdomein_key,
s.res_srtkenmerk_lengte,
s.res_srtkenmerk_dec,
s.res_srtkenmerk_nmin,
s.res_srtkenmerk_nmax,
k.res_kenmerk_default,
NVL (k.res_kenmerk_volgnummer, 0) volgnummer,
lcl.x ('res_srtkenmerk_dimensie',
s.res_srtkenmerk_key,
res_srtkenmerk_dimensie)
dimensie,
lcl.x ('res_kenmerk_hint',
k.res_kenmerk_key,
res_kenmerk_hint)
hint,
v.res_kenmerkreservering_waarde
FROM res_kenmerk k,
res_srtkenmerk s,
res_rsv_ruimte rr,
(SELECT v.res_kenmerk_key, v.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde v
WHERE v.res_rsv_ruimte_key = p_key
AND v.res_kenmerkwaarde_verwijder IS NULL) v
WHERE rr.res_activiteit_key = k.res_activiteit_key
AND rr.res_rsv_ruimte_key = p_key
AND k.res_kenmerk_verwijder IS NULL
AND k.res_srtkenmerk_key = s.res_srtkenmerk_key
AND v.res_kenmerk_key(+) = k.res_kenmerk_key
ORDER BY k.res_kenmerk_volgnummer;
v_kenmerk_waarde res_kenmerkwaarde.res_kenmerkreservering_waarde%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.res_kenmerkreservering_waarde,
rec1.res_kenmerk_default,
rec1.res_srtkenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.res_srtkenmerk_nmin,
rec1.res_srtkenmerk_nmax);
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.res_srtkenmerk_omschrijving,
'type',
rec1.res_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.res_kenmerk_key,
'dimensie',
rec1.dimensie,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
PROCEDURE create_res_kenmerken_rsv_art (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.res_kenmerk_key,
lcl.x ('res_srtkenmerk_omschrijving', s.res_srtkenmerk_key, res_srtkenmerk_omschrijving) res_srtkenmerk_omschrijving,
s.res_srtkenmerk_kenmerktype,
s.fac_kenmerkdomein_key,
s.res_srtkenmerk_lengte,
s.res_srtkenmerk_dec,
s.res_srtkenmerk_nmin,
s.res_srtkenmerk_nmax,
k.res_kenmerk_default,
NVL (k.res_kenmerk_volgnummer, 0) volgnummer,
lcl.x ('res_srtkenmerk_dimensie',
s.res_srtkenmerk_key,
res_srtkenmerk_dimensie)
dimensie,
lcl.x ('res_kenmerk_hint',
k.res_kenmerk_key,
res_kenmerk_hint)
hint,
v.res_kenmerkartikel_waarde
FROM res_kenmerk k,
res_srtkenmerk s,
res_rsv_artikel a,
res_artikel ra,
(SELECT v.res_kenmerk_key, v.res_kenmerkartikel_waarde
FROM res_kenmerkartikel v
WHERE v.res_rsv_artikel_key = p_key
AND v.res_kenmerkartikel_verwijder IS NULL) v
WHERE (k.res_artikel_key = a.res_artikel_key OR k.res_discipline_key = ra.res_discipline_key)
AND a.res_rsv_artikel_key = p_key
AND a.res_artikel_key = ra.res_artikel_key
AND k.res_activiteit_key IS NULL
AND k.res_kenmerk_verwijder IS NULL
AND k.res_srtkenmerk_key = s.res_srtkenmerk_key
AND v.res_kenmerk_key(+) = k.res_kenmerk_key
ORDER BY k.res_kenmerk_volgnummer;
v_kenmerk_waarde res_kenmerkartikel.res_kenmerkartikel_waarde%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.res_kenmerkartikel_waarde,
rec1.res_kenmerk_default,
rec1.res_srtkenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.res_srtkenmerk_nmin,
rec1.res_srtkenmerk_nmax);
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.res_srtkenmerk_omschrijving,
'type',
rec1.res_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.res_kenmerk_key,
'dimensie',
rec1.dimensie,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
PROCEDURE create_res_ruimte_node (p_opstelkey IN NUMBER)
AS
v_bezoekers res_ruimte_opstelling.res_ruimte_opstel_bezoekers%TYPE;
v_opstelling res_opstelling.res_opstelling_omschrijving%TYPE;
v_res_ruimte_key res_ruimte_opstelling.res_ruimte_key%TYPE;
v_resruimte res_ruimte.res_ruimte_omschrijving%TYPE;
v_verwijder res_ruimte.res_ruimte_verwijder%TYPE;
v_res_ruimte_nr res_ruimte.res_ruimte_nr%TYPE;
v_begintijd res_ruimte.res_ruimte_begintijd%TYPE;
v_eindtijd res_ruimte.res_ruimte_eindtijd%TYPE;
v_prijs_vast res_ruimte.res_ruimte_prijs_vast%TYPE;
v_prijs res_ruimte.res_ruimte_prijs%TYPE;
v_prijs_ochtend res_ruimte.res_ruimte_prijs_ochtend%TYPE;
v_prijs_middag res_ruimte.res_ruimte_prijs_middag%TYPE;
v_prijs_avond res_ruimte.res_ruimte_prijs_avond%TYPE;
v_prijs_dag res_ruimte.res_ruimte_prijs_dag%TYPE;
v_prijsfactor_intern res_ruimte.res_ruimte_prijsfactor_intern%TYPE;
v_groep res_ruimte.res_ruimte_groep%TYPE;
v_extern_id res_ruimte.res_ruimte_extern_id%TYPE;
v_image res_ruimte.res_ruimte_image%type;
CURSOR c1 (k IN NUMBER)
IS
SELECT alg_ruimte_key
FROM res_alg_ruimte
WHERE res_ruimte_key = k AND res_alg_ruimte_verwijder IS NULL;
BEGIN
createopentag ('res_ruimte');
SELECT ro.res_ruimte_opstel_bezoekers,
lcl.x ('res_opstelling_omschrijving',
o.res_opstelling_key,
res_opstelling_omschrijving)
res_opstelling_omschrijving,
ro.res_ruimte_key,
lcl.x ('res_ruimte_omschrijving',
r.res_ruimte_key,
res_ruimte_omschrijving)
res_ruimte_omschrijving,
lcl.x ('res_ruimte_nr', r.res_ruimte_key, res_ruimte_nr)
res_ruimte_nr,
r.res_ruimte_verwijder,
res_ruimte_begintijd,
res_ruimte_eindtijd,
res_ruimte_prijs_vast,
res_ruimte_prijs,
res_ruimte_prijs_ochtend,
res_ruimte_prijs_middag,
res_ruimte_prijs_avond,
res_ruimte_prijs_dag,
res_ruimte_prijsfactor_intern,
res_ruimte_groep,
res_ruimte_extern_id,
COALESCE(res_ruimte_opstel_image, res_ruimte_image)
INTO v_bezoekers,
v_opstelling,
v_res_ruimte_key,
v_resruimte,
v_res_ruimte_nr,
v_verwijder,
v_begintijd,
v_eindtijd,
v_prijs_vast,
v_prijs,
v_prijs_ochtend,
v_prijs_middag,
v_prijs_avond,
v_prijs_dag,
v_prijsfactor_intern,
v_groep,
v_extern_id,
v_image
FROM res_ruimte_opstelling ro, res_opstelling o, res_ruimte r
WHERE o.res_opstelling_key = ro.res_opstelling_key
AND r.res_ruimte_key = ro.res_ruimte_key
AND ro.res_ruimte_opstel_key = p_opstelkey;
createxmltagvalue ('key', p_opstelkey); -- pas op!
createxmltagvalue ('opstelling', v_opstelling);
createxmltagvalue ('bezoekers', v_bezoekers);
createxmltagvalue ('omschrijving', v_resruimte);
createxmltagvalue ('nr', v_res_ruimte_nr);
mydatetochar ('verwijder', v_verwijder);
createxmltagvalue ('begintijd', v_begintijd);
createxmltagvalue ('eindtijd', v_eindtijd);
createxmltagvalue ('prijs_vast', v_prijs_vast);
createxmltagvalue ('prijs', v_prijs);
createxmltagvalue ('prijs_ochtend', v_prijs_ochtend);
createxmltagvalue ('prijs_middag', v_prijs_middag);
createxmltagvalue ('prijs_avond', v_prijs_avond);
createxmltagvalue ('prijs_dag', v_prijs_dag);
createxmltagvalue ('prijsfactor_intern', v_prijsfactor_intern);
createxmltagvalue ('groep', v_groep);
createxmltagvalue ('extern_id', v_extern_id);
createxmltagvalue ('image', v_image);
FOR rec1 IN c1 (v_res_ruimte_key)
LOOP
create_alg_onroerendgoed_node (rec1.alg_ruimte_key,
'plaats',
NULL,
FALSE,
FALSE);
END LOOP;
createclosetag ('res_ruimte');
END;
PROCEDURE create_res_deel_node (p_key IN NUMBER)
AS
v_key res_deel.res_deel_key%TYPE;
v_ins_deel_key res_deel.res_ins_deel_key%TYPE;
v_omschrijving res_deel.res_deel_omschrijving%TYPE;
v_eenheid res_deel.res_deel_eenheid%TYPE;
v_prijs res_deel.res_deel_prijs%TYPE;
v_prijs_vast res_deel.res_deel_prijs_vast%TYPE;
v_discipline_key res_deel.res_discipline_key%TYPE;
v_opmerking res_deel.res_deel_opmerking%TYPE;
v_verwijder res_deel.res_deel_verwijder%TYPE;
v_alg_level res_deel.res_deel_alg_level%TYPE;
BEGIN
createopentag ('res_deel');
SELECT res_ins_deel_key,
lcl.x ('res_deel_omschrijving', res_deel_key, res_deel_omschrijving)
res_deel_omschrijving,
lcl.x ('res_deel_eenheid', res_deel_key, res_deel_eenheid)
res_deel_eenheid,
res_deel_prijs,
res_deel_prijs_vast,
lcl.x ('res_deel_opmerking', res_deel_key, res_deel_opmerking)
res_deel_opmerking,
res_discipline_key,
res_deel_verwijder,
res_deel_alg_level
INTO v_ins_deel_key,
v_omschrijving,
v_eenheid,
v_prijs,
v_prijs_vast,
v_opmerking,
v_discipline_key,
v_verwijder,
v_alg_level
FROM res_deel rd
WHERE rd.res_deel_key = p_key;
createxmltagvalue ('key', p_key);
create_ins_discipline_node (v_discipline_key);
create_ins_deel_node (v_ins_deel_key, TRUE);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('eenheid', v_eenheid);
createxmltagvalue ('prijs', v_prijs);
createxmltagvalue ('prijsvast', v_prijs_vast);
createxmltagvalue ('opmerking', v_opmerking);
mydatetochar ('verwijder', v_verwijder);
createxmltagvalue ('alglevel', v_alg_level);
createclosetag ('res_deel');
END;
PROCEDURE create_res_rsv_deel_node (p_key IN NUMBER)
AS
v_deel_key res_rsv_deel.res_deel_key%TYPE;
v_aantal res_rsv_deel.res_rsv_deel_aantal%TYPE;
v_status_bo_key res_rsv_deel.res_status_bo_key%TYPE;
v_rsv_ruimte_key res_rsv_deel.res_rsv_ruimte_key%TYPE;
v_van res_rsv_deel.res_rsv_deel_van%TYPE;
v_tot res_rsv_deel.res_rsv_deel_tot%TYPE;
v_prijs res_rsv_deel.res_rsv_deel_prijs%TYPE;
v_aanmaak res_rsv_deel.res_rsv_deel_aanmaak%TYPE;
v_verwijder res_rsv_deel.res_rsv_deel_verwijder%TYPE;
bez_bezoekers_key res_rsv_deel.bez_bezoekers_key%TYPE;
v_verwerkt res_rsv_deel.res_rsv_deel_verwerkt%TYPE;
-- v_user_key res_rsv_deel.res_rsv_deel_user_key%TYPE;
v_afgemeld res_rsv_deel.res_rsv_deel_afgemeld%TYPE;
-- v_afgemeld_user res_rsv_deel.res_rsv_deel_afgemeld_user%TYPE;
v_status_bo_omschr res_status_bo.res_status_bo_omschrijving%TYPE;
v_dirtlevel res_rsv_deel.res_rsv_deel_dirtlevel%TYPE;
BEGIN
createopentag ('rsv_deel');
SELECT rd.res_deel_key,
res_rsv_deel_aantal,
rd.res_status_bo_key,
res_rsv_ruimte_key,
res_rsv_deel_van,
res_rsv_deel_tot,
res.getdeelprijs (res_rsv_deel_key),
res_rsv_deel_aanmaak,
res_rsv_deel_verwijder,
bez_bezoekers_key,
sb.res_status_bo_omschrijving,
res_rsv_deel_dirtlevel
INTO v_deel_key,
v_aantal,
v_status_bo_key,
v_rsv_ruimte_key,
v_van,
v_tot,
v_prijs,
v_aanmaak,
v_verwijder,
bez_bezoekers_key,
v_status_bo_omschr,
v_dirtlevel
FROM res_rsv_deel rd, res_status_bo sb, res_deel rdd
WHERE rd.res_status_bo_key = sb.res_status_bo_key(+)
AND rd.res_deel_key = rdd.res_deel_key
AND rd.res_rsv_deel_key = p_key;
createxmltagvalue ('key', p_key);
create_res_deel_node (v_deel_key);
createxmltagvalue ('aantal', v_aantal);
createxmltagvalue ('status_bokey', v_status_bo_key);
createxmltagvalue ('status_bo', v_status_bo_omschr);
createxmltagvalue ('dirtlevel', v_dirtlevel);
createxmltagvalue ('res_ruimte', v_rsv_ruimte_key);
mydatetochar ('van', v_van);
mydatetochar ('tot', v_tot);
createxmltagvalue ('prijs', v_prijs);
mydatetochar ('aanmaak', v_aanmaak);
mydatetochar ('verwijder', v_verwijder);
createxmltagvalue ('bezoeker', bez_bezoekers_key); -- als dit een parkeerplaats is
-- bezoekersgegevens toevoegen? Die komen ook al via de bovenkant
createclosetag ('rsv_deel');
END;
PROCEDURE create_res_artikel_node (p_key IN NUMBER)
AS
v_key res_artikel.res_artikel_key%TYPE;
v_discipline_key res_artikel.res_discipline_key%TYPE;
v_nr res_artikel.res_artikel_nr%TYPE;
v_omschrijving res_artikel.res_artikel_omschrijving%TYPE;
v_eenheid res_artikel.res_artikel_eenheid%TYPE;
v_prijs res_artikel.res_artikel_prijs%TYPE;
v_prijs_vast res_artikel.res_artikel_prijs_vast%TYPE;
v_inkoopprijs res_artikel.res_artikel_inkoopprijs%TYPE;
v_btw res_artikel.res_artikel_btw%TYPE;
v_opmerking res_artikel.res_artikel_opmerking%TYPE;
v_default res_artikel.res_artikel_default%TYPE;
v_verwijder res_artikel.res_artikel_verwijder%TYPE;
v_groep res_artikel.res_artikel_groep%TYPE;
v_kostenpersoneel res_artikel.res_artikel_kostenpersoneel%TYPE;
v_kostenalgemeen res_artikel.res_artikel_kostenalgemeen%TYPE;
v_volgnummer res_artikel.res_artikel_volgnummer%TYPE;
BEGIN
createopentag ('res_artikel');
SELECT res_discipline_key,
res_artikel_nr,
lcl.x ('res_artikel_omschrijving',
res_artikel_key,
res_artikel_omschrijving)
res_artikel_omschrijving,
lcl.x ('res_artikel_eenheid',
res_artikel_key,
res_artikel_eenheid)
res_artikel_eenheid,
res_artikel_prijs,
res_artikel_prijs_vast,
res_artikel_inkoopprijs,
res_artikel_btw,
lcl.x ('res_artikel_opmerking',
res_artikel_key,
res_artikel_opmerking)
res_artikel_opmerking,
res_artikel_default,
res_artikel_verwijder,
res_artikel_groep,
res_artikel_kostenpersoneel,
res_artikel_kostenalgemeen,
res_artikel_volgnummer
INTO v_discipline_key,
v_nr,
v_omschrijving,
v_eenheid,
v_prijs,
v_prijs_vast,
v_inkoopprijs,
v_btw,
v_opmerking,
v_default,
v_verwijder,
v_groep,
v_kostenpersoneel,
v_kostenalgemeen,
v_volgnummer
FROM res_artikel ra
WHERE ra.res_artikel_key = p_key;
createxmltagvalue ('key', p_key);
create_ins_discipline_node (v_discipline_key);
createxmltagvalue ('nr', v_nr);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('eenheid', v_eenheid);
createxmltagvalue ('prijs', v_prijs);
createxmltagvalue ('prijsvast', v_prijs_vast);
createxmltagvalue ('inkoopprijs', v_inkoopprijs);
createxmltagvalue ('btw', v_btw);
createxmltagvalue ('volgnummer', v_volgnummer);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('default', v_default);
mydatetochar ('verwijder', v_verwijder);
createxmltagvalue ('groep', v_groep);
createxmltagvalue ('kostenpersoneel', v_kostenpersoneel);
createxmltagvalue ('kostenalgemeen', v_kostenalgemeen);
createclosetag ('res_artikel');
END;
PROCEDURE create_res_rsv_artikel_node (p_key IN NUMBER)
AS
v_artikel_key res_rsv_artikel.res_artikel_key%TYPE;
v_aantal res_rsv_artikel.res_rsv_artikel_aantal%TYPE;
v_levering res_rsv_artikel.res_rsv_artikel_levering%TYPE;
v_status_bo_key res_rsv_artikel.res_status_bo_key%TYPE;
v_rsv_ruimte_key res_rsv_artikel.res_rsv_ruimte_key%TYPE;
v_prijs res_rsv_artikel.res_rsv_artikel_prijs%TYPE;
v_aanmaak res_rsv_artikel.res_rsv_artikel_aanmaak%TYPE;
v_verwijder res_rsv_artikel.res_rsv_artikel_verwijder%TYPE;
v_verwerkt res_rsv_artikel.res_rsv_artikel_verwerkt%TYPE;
-- v_user_key res_rsv_artikel.res_rsv_artikel_user_key%TYPE;
v_afgemeld res_rsv_artikel.res_rsv_artikel_afgemeld%TYPE;
-- v_afgemeld_user res_rsv_artikel.res_rsv_artikel_afgemeld_user%TYPE;
v_status_bo_omschr res_status_bo.res_status_bo_omschrijving%TYPE;
v_dirtlevel res_rsv_artikel.res_rsv_artikel_dirtlevel%TYPE;
BEGIN
createopentag ('rsv_artikel');
SELECT ra.res_artikel_key,
res_rsv_artikel_aantal,
res_rsv_artikel_levering,
ra.res_status_bo_key,
res_rsv_ruimte_key,
res.getartikelprijs (res_rsv_artikel_key),
res_rsv_artikel_aanmaak,
res_rsv_artikel_verwijder,
sb.res_status_bo_omschrijving,
res_rsv_artikel_dirtlevel
INTO v_artikel_key,
v_aantal,
v_levering,
v_status_bo_key,
v_rsv_ruimte_key,
v_prijs,
v_aanmaak,
v_verwijder,
v_status_bo_omschr,
v_dirtlevel
FROM res_rsv_artikel ra, res_status_bo sb, res_artikel raa
WHERE ra.res_status_bo_key = sb.res_status_bo_key(+)
AND raa.res_artikel_key = ra.res_artikel_key
AND res_rsv_artikel_key = p_key;
createxmltagvalue ('key', p_key);
create_res_artikel_node (v_artikel_key);
createxmltagvalue ('aantal', v_aantal);
mydatetochar ('levering', v_levering);
createxmltagvalue ('status_bokey', v_status_bo_key);
createxmltagvalue ('status_bo', v_status_bo_omschr);
createxmltagvalue ('dirtlevel', v_dirtlevel);
createxmltagvalue ('prijs', v_prijs);
mydatetochar ('aanmaak', v_aanmaak);
mydatetochar ('verwijder', v_verwijder);
create_res_kenmerken_rsv_art (p_key);
createclosetag ('rsv_artikel');
END;
PROCEDURE create_res_srtactiviteit_node (p_key IN NUMBER)
AS
v_omschrijving res_srtactiviteit.res_srtactiviteit_omschrijving%TYPE;
v_soort res_srtactiviteit.res_srtactiviteit_soort%TYPE;
BEGIN
createopentag ('res_srtactiviteit');
SELECT lcl.x ('res_srtactiviteit_omschrijving',
res_srtactiviteit_key,
res_srtactiviteit_omschrijving)
res_srtactiviteit_omschrijving,
res_srtactiviteit_soort
INTO v_omschrijving, v_soort
FROM res_srtactiviteit
WHERE res_srtactiviteit_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('soort', v_soort);
createclosetag ('res_srtactiviteit');
END;
PROCEDURE create_res_activiteit_node (p_key IN NUMBER)
AS
v_omschrijving res_activiteit.res_activiteit_omschrijving%TYPE;
v_duur res_activiteit.res_activiteit_duur%TYPE;
v_srtactiviteit_key res_activiteit.res_srtactiviteit_key%TYPE;
BEGIN
createopentag ('res_activiteit');
SELECT lcl.x ('res_activiteit_omschrijving',
res_activiteit_key,
res_activiteit_omschrijving)
res_activiteit_omschrijving,
res_activiteit_duur,
res_srtactiviteit_key
INTO v_omschrijving, v_duur, v_srtactiviteit_key
FROM res_activiteit
WHERE res_activiteit_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('duur', v_duur);
create_res_srtactiviteit_node (v_srtactiviteit_key);
createclosetag ('res_activiteit');
END;
PROCEDURE create_res_rsv_ruimte_node (p_key IN NUMBER,
p_concise IN BOOLEAN)
AS
v_reservering_key res_rsv_ruimte.res_reservering_key%TYPE;
v_ruimte_opstel_key res_rsv_ruimte.res_ruimte_opstel_key%TYPE;
v_activiteit_key res_rsv_ruimte.res_activiteit_key%TYPE;
v_van res_rsv_ruimte.res_rsv_ruimte_van%TYPE;
v_tot res_rsv_ruimte.res_rsv_ruimte_tot%TYPE;
v_bezoekers res_rsv_ruimte.res_rsv_ruimte_bezoekers%TYPE;
v_ruimteprijs res_rsv_ruimte.res_rsv_ruimte_prijs%TYPE;
v_korting res_rsv_ruimte.res_rsv_ruimte_korting%TYPE;
v_totaal res_rsv_ruimte.res_rsv_ruimte_totaal%TYPE;
v_status_bo_key res_rsv_ruimte.res_status_bo_key%TYPE;
v_status_fo_key res_rsv_ruimte.res_status_fo_key%TYPE;
v_noshow res_rsv_ruimte.res_rsv_ruimte_noshow%TYPE;
v_aanmaak res_rsv_ruimte.res_rsv_ruimte_aanmaak%TYPE;
v_verwijder res_rsv_ruimte.res_rsv_ruimte_verwijder%TYPE;
v_opmerking res_rsv_ruimte.res_rsv_ruimte_opmerking%TYPE;
v_omschrijving res_rsv_ruimte.res_rsv_ruimte_omschrijving%TYPE;
v_ordernr res_rsv_ruimte.res_rsv_ruimte_ordernr%TYPE;
v_prs_kostenplaats_key res_rsv_ruimte.prs_kostenplaats_key%TYPE;
v_contact_key res_rsv_ruimte.res_rsv_ruimte_contact_key%TYPE;
v_host_key res_rsv_ruimte.res_rsv_ruimte_host_key%TYPE;
v_telefoon res_rsv_ruimte.res_rsv_ruimte_telefoon%TYPE;
v_alg_ruimte_key res_rsv_ruimte.alg_ruimte_key%TYPE;
v_volgnr res_rsv_ruimte.res_rsv_ruimte_volgnr%TYPE;
v_kosten_klant res_rsv_ruimte.res_rsv_ruimte_kosten_klant%TYPE;
v_status_bo_omschr res_status_bo.res_status_bo_omschrijving%TYPE;
v_status_fo_omschr res_status_fo.res_status_fo_omschrijving%TYPE;
v_dirtlevel res_rsv_ruimte.res_rsv_ruimte_dirtlevel%TYPE;
v_bezoekers_shown res_rsv_ruimte.res_rsv_ruimte_bezoekers_shown%TYPE;
v_cvab_mode res_rsv_ruimte.res_rsv_ruimte_cvab_mode%TYPE;
v_afgerond res_rsv_ruimte.res_rsv_ruimte_afgerond%TYPE;
v_externnr res_rsv_ruimte.res_rsv_ruimte_externnr%TYPE;
CURSOR c2d
IS
SELECT rd.res_rsv_deel_key
FROM res_rsv_deel rd
WHERE rd.res_rsv_deel_verwijder IS NULL
AND rd.res_rsv_ruimte_key = p_key;
CURSOR c2a
IS
SELECT ra.res_rsv_artikel_key
FROM res_rsv_artikel ra
WHERE ra.res_rsv_artikel_verwijder IS NULL
AND ra.res_rsv_ruimte_key = p_key;
CURSOR c3
IS
SELECT ba.bez_afspraak_key
FROM bez_afspraak ba
WHERE ba.res_rsv_ruimte_key = p_key;
CURSOR c4
IS
SELECT m.mld_melding_key
FROM mld_melding m
WHERE m.res_rsv_ruimte_key = p_key;
BEGIN
IF p_concise
THEN
createconciseopentag ('rsv_ruimte');
ELSE
createopentag ('rsv_ruimte');
END IF;
SELECT res_reservering_key,
res_ruimte_opstel_key,
res_activiteit_key,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_rsv_ruimte_bezoekers,
res.getruimteprijs (res_rsv_ruimte_key),
res_rsv_ruimte_korting,
res_rsv_ruimte_totaal,
rr.res_status_bo_key,
rr.res_status_fo_key,
res_rsv_ruimte_noshow,
res_rsv_ruimte_aanmaak,
res_rsv_ruimte_verwijder,
res_rsv_ruimte_opmerking,
res_rsv_ruimte_omschrijving,
res_rsv_ruimte_ordernr,
prs_kostenplaats_key,
res_rsv_ruimte_contact_key,
res_rsv_ruimte_host_key,
res_rsv_ruimte_telefoon,
alg_ruimte_key,
res_rsv_ruimte_volgnr,
sf.res_status_fo_omschrijving,
sb.res_status_bo_omschrijving,
res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_dirtlevel,
res_rsv_ruimte_bezoekers_shown,
res_rsv_ruimte_cvab_mode,
res_rsv_ruimte_afgerond,
res_rsv_ruimte_externnr
INTO v_reservering_key,
v_ruimte_opstel_key,
v_activiteit_key,
v_van,
v_tot,
v_bezoekers,
v_ruimteprijs,
v_korting,
v_totaal,
v_status_bo_key,
v_status_fo_key,
v_noshow,
v_aanmaak,
v_verwijder,
v_opmerking,
v_omschrijving,
v_ordernr,
v_prs_kostenplaats_key,
v_contact_key,
v_host_key,
v_telefoon,
v_alg_ruimte_key,
v_volgnr,
v_status_fo_omschr,
v_status_bo_omschr,
v_kosten_klant,
v_dirtlevel,
v_bezoekers_shown,
v_cvab_mode,
v_afgerond,
v_externnr
FROM res_rsv_ruimte rr, res_status_fo sf, res_status_bo sb
WHERE rr.res_status_bo_key = sb.res_status_bo_key(+)
AND rr.res_status_fo_key = sf.res_status_fo_key(+)
AND rr.res_rsv_ruimte_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('volgnr', v_volgnr);
createxmltagvalue ('id', v_reservering_key||'/'||v_volgnr);
mydatetochar ('van', v_van);
mydatetochar ('tot', v_tot);
IF v_ruimte_opstel_key IS NOT NULL
THEN
create_res_ruimte_node (v_ruimte_opstel_key);
END IF;
IF v_activiteit_key IS NOT NULL
THEN
create_res_activiteit_node (v_activiteit_key);
END IF;
IF NOT p_concise
THEN
createxmltagvalue ('bezoekers', v_bezoekers);
createxmltagvalue ('ruimteprijs', v_ruimteprijs);
createxmltagvalue ('prijs', v_ruimteprijs - COALESCE(v_korting, 0)); -- korting al verwerkt
createxmltagvalue ('korting', v_korting);
createxmltagvalue ('afgesprokentotaal', v_totaal);
createxmltagvalue ('status_bokey', v_status_bo_key);
createxmltagvalue ('status_bo', v_status_bo_omschr);
createxmltagvalue ('status_fokey', v_status_fo_key);
createxmltagvalue ('status_fo', v_status_fo_omschr);
createxmltagvalue ('noshow', v_noshow);
createxmltagvalue ('bezoekers_shown', v_bezoekers_shown);
mydatetochar ('aangemaakt', v_aanmaak);
mydatetochar ('verwijder', v_verwijder);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('ordernr', v_ordernr);
createxmltagvalue ('kosten_klant', v_kosten_klant);
create_prs_kostenplaats_node (v_prs_kostenplaats_key, FALSE);
create_prs_perslid_node (v_host_key, 'host_user', FALSE);
create_prs_perslid_node (v_contact_key, 'contact_user', FALSE);
createxmltagvalue ('telefoon', v_telefoon);
create_alg_onroerendgoed_node (v_alg_ruimte_key,
'plaats',
NULL,
p_concise,
FALSE);
createxmltagvalue ('cvab_mode', v_cvab_mode);
createxmltagvalue ('afgerond', v_afgerond);
createxmltagvalue ('externnr', v_externnr);
createxmltagvalue ('dirtlevel', v_dirtlevel);
create_res_kenmerken (p_key);
create_fac_tracking_node ('reservering', p_key);
FOR rec2a IN c2a
LOOP
create_res_rsv_artikel_node (rec2a.res_rsv_artikel_key);
END LOOP;
FOR rec2d IN c2d
LOOP
create_res_rsv_deel_node (rec2d.res_rsv_deel_key);
END LOOP;
FOR rec3 IN c3
LOOP
create_bez_afspraak_node (rec3.bez_afspraak_key, NULL, TRUE);
END LOOP;
FOR rec4 IN c4
LOOP
create_mld_melding_node (rec4.mld_melding_key, NULL, TRUE); -- de opdrachtinfo is ook gewenst
END LOOP;
END IF;
createclosetag ('rsv_ruimte');
END;
PROCEDURE create_res_reservering_node (p_key IN NUMBER,
p_res_rsv_ruimte_key IN NUMBER)
AS
v_aanmaak res_reservering.res_reservering_aanmaak%TYPE;
v_verwijder res_reservering.res_reservering_verwijder%TYPE;
v_reservering_key res_reservering.res_reservering_key%TYPE;
v_nrdeelres NUMBER;
l_status VARCHAR2 (7);
firstres BOOLEAN := TRUE;
CURSOR c1(res_key NUMBER)
IS
SELECT res_rsv_ruimte_key
FROM res_rsv_ruimte
WHERE res_rsv_ruimte_verwijder IS NULL
AND res_reservering_key = res_key
ORDER BY res_rsv_ruimte_van;
CURSOR c2(res_key NUMBER)
IS
SELECT res_rsv_ruimte_key
FROM res_rsv_ruimte
WHERE res_reservering_key = res_key
ORDER BY res_rsv_ruimte_van;
BEGIN
v_reservering_key := p_key;
IF (v_reservering_key IS NULL AND p_res_rsv_ruimte_key IS NOT NULL)
THEN
SELECT res_reservering_key
INTO v_reservering_key
FROM res_rsv_ruimte
WHERE res_rsv_ruimte_key = p_res_rsv_ruimte_key;
END IF;
IF v_reservering_key IS NOT NULL
THEN
IF p_res_rsv_ruimte_key IS NULL
THEN
SELECT COUNT ( * )
INTO v_nrdeelres
FROM res_rsv_ruimte
WHERE res_reservering_key = v_reservering_key
AND res_rsv_ruimte_verwijder IS NULL;
ELSE
SELECT COUNT ( * )
INTO v_nrdeelres
FROM res_rsv_ruimte
WHERE res_reservering_key = v_reservering_key
AND res_rsv_ruimte_key = p_res_rsv_ruimte_key
AND res_rsv_ruimte_verwijder IS NULL;
END IF;
IF v_nrdeelres = 0 -- deleted
THEN
l_status := 'deleted';
ELSE
l_status := NULL;
END IF;
IF p_res_rsv_ruimte_key IS NULL
THEN
IF v_nrdeelres <= fac.getsetting ('res_xml_max_rsv_ruimte')
THEN
createopentagattributes ('reservering',
'content',
'complete',
'total',
v_nrdeelres,
'status',
l_status,
NULL,
NULL);
ELSE
createopentagattributes ('reservering',
'content',
'complete',
'total',
v_nrdeelres,
'status',
l_status,
'mode',
'concise');
END IF;
ELSE
createopentagattributes ('reservering',
'content',
'partial',
'total',
v_nrdeelres,
'status',
l_status,
NULL,
NULL);
END IF;
SELECT res_reservering_aanmaak, res_reservering_verwijder
INTO v_aanmaak, v_verwijder
FROM res_reservering r
WHERE res_reservering_key = v_reservering_key;
createxmltagvalue ('key', v_reservering_key);
mydatetochar ('datum', v_aanmaak);
mydatetochar ('verwijder', v_verwijder);
IF v_nrdeelres = 0 -- deleted
THEN
FOR rec1 IN c2(v_reservering_key)
LOOP
IF p_res_rsv_ruimte_key IS NULL
OR (p_res_rsv_ruimte_key IS NOT NULL
AND rec1.res_rsv_ruimte_key = p_res_rsv_ruimte_key)
THEN
create_res_rsv_ruimte_node (rec1.res_rsv_ruimte_key, FALSE);
END IF;
END LOOP;
ELSE
FOR rec1 IN c1(v_reservering_key)
LOOP
IF p_res_rsv_ruimte_key IS NULL
OR (p_res_rsv_ruimte_key IS NOT NULL
AND rec1.res_rsv_ruimte_key = p_res_rsv_ruimte_key)
THEN
IF v_nrdeelres <= fac.getsetting ('res_xml_max_rsv_ruimte') OR firstres
THEN
create_res_rsv_ruimte_node (rec1.res_rsv_ruimte_key, FALSE);
firstres := FALSE;
ELSE
create_res_rsv_ruimte_node (rec1.res_rsv_ruimte_key, TRUE);
END IF;
END IF;
END LOOP;
END IF;
createclosetag ('reservering');
END IF;
END;
PROCEDURE create_msg_message_node (p_key IN NUMBER)
AS
v_prs_perslid_key msg_message.prs_perslid_key%TYPE;
v_replykey msg_message.msg_message_replykey%TYPE;
v_omschrijving msg_message.msg_message_oms%TYPE;
v_aanmaak msg_message.msg_message_aanmaak%TYPE;
v_onderwerp msg_message.msg_message_onderwerp%TYPE;
v_prioriteit msg_message.msg_message_prioriteit%TYPE;
v_url msg_message.msg_message_url%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('message');
SELECT prs_perslid_key,
msg_message_replykey,
msg_message_oms,
msg_message_aanmaak,
msg_message_onderwerp,
msg_message_prioriteit,
msg_message_url
INTO v_prs_perslid_key,
v_replykey,
v_omschrijving,
v_aanmaak,
v_onderwerp,
v_prioriteit,
v_url
FROM msg_message
WHERE msg_message_key = p_key;
createxmltagvalue ('key', p_key);
mydatetochar ('aanmaak', v_aanmaak);
createxmltagvalue ('onderwerp', v_onderwerp);
createxmltagvalue ('prioriteit', v_prioriteit);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('url', v_url);
create_prs_perslid_node (v_prs_perslid_key, 'afzender', TRUE);
-- Bij reply ook het oorspronkelijke bericht tonen
IF v_replykey IS NOT NULL
THEN
create_msg_message_node (v_replykey);
END IF;
createclosetag ('message');
END IF;
END;
PROCEDURE create_view_node (p_view IN VARCHAR2,
p_oms IN VARCHAR2,
p_info IN VARCHAR2,
p_where IN VARCHAR2,
p_nodename IN VARCHAR2,
p_rowname IN VARCHAR2,
p_rapkey IN NUMBER)
AS
v_xml_clob_length NUMBER (10);
v_xml_tag_length NUMBER (10);
v_clob_length NUMBER (10);
v_aclob_length NUMBER (10);
xml CLOB;
CURSOR colsql
IS
SELECT column_name, data_type
FROM user_tab_columns
WHERE table_name = UPPER (p_view)
ORDER BY column_id;
cols VARCHAR2 (4000);
nrcols NUMBER (3);
ctx DBMS_XMLGEN.ctxhandle;
BEGIN
IF p_view IS NOT NULL
THEN
createopentagattributes ('rapport',
'view',
p_view,
'title',
p_oms,
'info',
p_info,
'usrrap_key',
p_rapkey);
createxmltagvalue ('where', p_where);
ctx :=
DBMS_XMLGEN.newcontext('SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, NULLABLE, COLUMN_ID FROM user_tab_columns WHERE table_name = UPPER('''
|| p_view
|| ''') ORDER BY COLUMN_ID');
DBMS_XMLGEN.setrowsettag (ctx, 'rapport_header');
DBMS_XMLGEN.setrowtag (ctx, 'header_row');
xml := DBMS_XMLGEN.getxml (ctx);
DBMS_XMLGEN.closecontext (ctx);
-- add meta data xml to aclob
v_aclob_length := DBMS_LOB.getlength (aclob);
v_xml_clob_length := DBMS_LOB.getlength (xml);
-- remove xml tag
v_xml_tag_length := 21;
IF v_xml_clob_length IS NOT NULL
THEN
DBMS_LOB.COPY (aclob,
xml,
v_xml_clob_length - v_xml_tag_length,
v_aclob_length + 1,
v_xml_tag_length + 1);
END IF;
cols := '';
nrcols := 0;
FOR c IN colsql
LOOP
IF SUBSTR(c.column_name, 1, 7) <> 'FCLT_3D' THEN -- Die willen we niet in de XML
IF nrcols > 0
THEN
cols := cols || ', ';
END IF;
IF c.data_type = 'DATE'
THEN
cols :=
cols
|| 'TO_CHAR('
|| c.column_name
|| ',''yyyy-mm-dd"T"hh24:mi:ss'') '
|| c.column_name;
ELSE
cols := cols || c.column_name;
END IF;
nrcols := nrcols + 1;
END IF;
END LOOP;
IF cols IS NULL
THEN
cols := '*';
END IF;
--DBMS_OUTPUT.put_line (cols);
ctx :=
DBMS_XMLGEN.newcontext ('SELECT ' || cols || ' FROM ' || p_view || ' ' || p_where);
IF p_nodename IS NOT NULL
THEN
DBMS_XMLGEN.setrowsettag (ctx, p_nodename);
DBMS_XMLGEN.setrowtag (ctx, p_rowname);
ELSE
DBMS_XMLGEN.setrowsettag (ctx, 'rapport_data');
DBMS_XMLGEN.setrowtag (ctx, 'data_row');
END IF;
xml := DBMS_XMLGEN.getxml (ctx);
DBMS_XMLGEN.closecontext (ctx);
-- add data xml to aclob
v_aclob_length := DBMS_LOB.getlength (aclob);
v_xml_clob_length := DBMS_LOB.getlength (xml);
-- remove xml tag
IF v_xml_clob_length IS NOT NULL
THEN
DBMS_LOB.COPY (aclob,
xml,
v_xml_clob_length - v_xml_tag_length,
v_aclob_length + 1,
v_xml_tag_length + 1);
END IF;
createclosetag ('rapport');
END IF;
END;
PROCEDURE create_fac_usrrap_view_node (p_key IN NUMBER,
p_where IN VARCHAR2)
AS
view_name fac_usrrap.fac_usrrap_view_name%TYPE;
omschrijving fac_usrrap.fac_usrrap_omschrijving%TYPE;
rinfo fac_usrrap.fac_usrrap_info%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
SELECT fac_usrrap_view_name,
lcl.x ('fac_usrrap_omschrijving',
fac_usrrap_key,
fac_usrrap_omschrijving)
fac_usrrap_omschrijving,
lcl.x ('fac_usrrap_info', fac_usrrap_key, fac_usrrap_info)
fac_usrrap_info
INTO view_name, omschrijving, rinfo
FROM fac_usrrap
WHERE fac_usrrap_key = p_key;
create_view_node (view_name,
omschrijving,
rinfo,
p_where,
NULL,
NULL,
p_key);
END IF;
END;
PROCEDURE create_fac_usrrap_proc_node (p_key IN NUMBER,
p_where IN VARCHAR2)
AS
proc_name fac_usrrap.fac_usrrap_view_name%TYPE;
omschrijving fac_usrrap.fac_usrrap_omschrijving%TYPE;
rinfo fac_usrrap.fac_usrrap_info%TYPE;
v_xml_clob_length NUMBER (10);
v_xml_tag_length NUMBER (10);
v_clob_length NUMBER (10);
v_aclob_length NUMBER (10);
xml CLOB;
ctx DBMS_XMLGEN.ctxhandle;
l_str_pos INTEGER;
l_str_pos2 INTEGER;
l_str_pos3 INTEGER;
l_user_key NUMBER;
l_date1 VARCHAR2 (20);
l_date2 VARCHAR2 (4000); -- extra lang omdat hij heel even l_extra_where ook bevat
l_extra_where VARCHAR2 (4000);
l_sql_str VARCHAR2 (4000);
l_cursor SYS_REFCURSOR;
BEGIN
IF p_key IS NOT NULL
THEN
SELECT fac_usrrap_view_name,
fac_usrrap_omschrijving,
fac_usrrap_info
INTO proc_name, omschrijving, rinfo
FROM fac_usrrap
WHERE fac_usrrap_key = p_key;
-- p_where is: user_key + "#" + dt1 + "#" + dt2
-- or: user_key + "#" + dt1 + "#" + dt2 + "#" + whereclause
l_str_pos :=
INSTR (p_where,
'#',
1,
1); -- 1st occurence of #
l_user_key := SUBSTR (p_where, 1, l_str_pos - 1);
l_str_pos2 :=
INSTR (p_where,
'#',
1,
2); -- 2nd occurence of #
l_date1 :=
SUBSTR (p_where, l_str_pos + 1, l_str_pos2 - l_str_pos - 1);
l_date2 := SUBSTR (p_where, l_str_pos2 + 1);
l_extra_where := '';
l_str_pos3 :=
INSTR (p_where,
'#',
1,
3); -- 3nd occurence of #
IF (l_str_pos3 > 0) THEN
l_extra_where := SUBSTR (p_where, l_str_pos3 + 1);
l_date2 := SUBSTR (l_date2, 1, INSTR (l_date2, '#') - 1); -- Dan moet hier het where-clause stuk ook af
END IF;
-- All these reports are defined as
-- proc_name (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor);
-- or proc_name (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor, p_where IN VARCHAR2);
if (l_extra_where IS NOT NULL)
THEN
l_sql_str :=
'BEGIN '
|| proc_name
|| '('
|| ' :l_user_key'
|| ', :l_date1'
|| ', :l_date2'
|| ', :l_outcursor'
|| ', :l_extrawhere '
|| '); END;';
EXECUTE IMMEDIATE l_sql_str USING l_user_key, l_date1, l_date2, l_cursor, l_extra_where;
ELSE
l_sql_str :=
'BEGIN '
|| proc_name
|| '('
|| l_user_key
|| ', '''
|| l_date1
|| ''', '''
|| l_date2
|| ''', '
|| ':l_outcursor'
|| '); END;';
-- DBMS_OUTPUT.put_line ('l_sql_str: ' || l_sql_str);
EXECUTE IMMEDIATE l_sql_str USING l_cursor;
END IF;
createopentagattributes ('rapport',
'view',
proc_name,
'title',
omschrijving,
'info',
rinfo,
'type',
'proc');
createxmltagvalue ('where', p_where);
createxmltagvalue ('datumbegin', l_date1);
createxmltagvalue ('datumeind', l_date2);
createopentagattributes ('rapport_header',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
createopentagattributes ('header_row',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
-- We leven vooralsnog zonder headerrow die wordt verondersteld metadata te gaan bevatten
createclosetag ('header_row');
createclosetag ('rapport_header');
ctx := DBMS_XMLGEN.newcontext (l_cursor);
DBMS_XMLGEN.setrowsettag (ctx, 'rapport_data');
DBMS_XMLGEN.setrowtag (ctx, 'data_row');
xml := DBMS_XMLGEN.getxml (ctx);
DBMS_XMLGEN.closecontext (ctx);
-- add data xml to aclob
v_aclob_length := DBMS_LOB.getlength (aclob);
v_xml_clob_length := DBMS_LOB.getlength (xml);
-- remove xml tag
v_xml_tag_length := 21;
IF v_xml_clob_length IS NOT NULL
THEN
DBMS_LOB.COPY (aclob,
xml,
v_xml_clob_length - v_xml_tag_length,
v_aclob_length + 1,
v_xml_tag_length + 1);
END IF;
createclosetag ('rapport');
END IF;
END;
PROCEDURE create_fac_usrrap_node (p_key IN NUMBER, p_where IN VARCHAR2)
AS
raptype fac_usrrap.fac_usrrap_functie%TYPE;
BEGIN
SELECT fac_usrrap_functie
INTO raptype
FROM fac_usrrap
WHERE fac_usrrap_key = p_key;
IF BITAND (raptype, 2) = 2
THEN
create_fac_usrrap_proc_node (p_key, p_where);
ELSE
create_fac_usrrap_view_node (p_key, p_where);
END IF;
END;
PROCEDURE create_cnt_contract_note_node (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT cnt_contract_note_key,
cnt_contract_note_aanmaak,
prs_perslid_key,
cnt_contract_note_omschrijving
FROM cnt_contract_note
WHERE cnt_contract_key = p_key
ORDER BY cnt_contract_note_key;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('notes');
FOR rec1 IN c1
LOOP
createopentag ('note');
createxmltagvalue ('key', rec1.cnt_contract_note_key);
mydatetochar ('aanmaak', rec1.cnt_contract_note_aanmaak);
createxmltagvalue ('omschrijving',
rec1.cnt_contract_note_omschrijving);
create_prs_perslid_node (rec1.prs_perslid_key, 'noteur', TRUE);
createclosetag ('note');
END LOOP;
createclosetag ('notes');
END IF;
END;
PROCEDURE create_cnt_kenmerken (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.cnt_kenmerk_key,
lcl.x ('cnt_srtkenmerk_omschrijving', s.cnt_srtkenmerk_key, cnt_srtkenmerk_omschrijving) cnt_srtkenmerk_omschrijving,
s.cnt_srtkenmerk_kenmerktype,
s.fac_kenmerkdomein_key,
s.cnt_srtkenmerk_lengte,
s.cnt_srtkenmerk_dec,
s.cnt_srtkenmerk_nmin,
s.cnt_srtkenmerk_nmax,
k.cnt_kenmerk_default,
NVL (k.cnt_kenmerk_volgnummer, 0) volgnummer,
lcl.x ('cnt_srtkenmerk_dimensie',
s.cnt_srtkenmerk_key,
cnt_srtkenmerk_dimensie)
dimensie,
lcl.x ('cnt_kenmerk_hint',
k.cnt_kenmerk_key,
cnt_kenmerk_hint)
hint,
cnt_kenmerkcontract_waarde,
v.cnt_kenmerkcontract_wijzig
FROM cnt_kenmerk k,
cnt_srtkenmerk s,
cnt_contract c,
(SELECT v.cnt_kenmerk_key,
v.cnt_kenmerkcontract_waarde,
v.cnt_kenmerkcontract_wijzig
FROM cnt_kenmerkcontract v
WHERE v.cnt_contract_key = p_key
AND v.cnt_kenmerkcontract_verwijder IS NULL) v
WHERE c.ins_discipline_key = k.cnt_srtcontract_key
AND c.cnt_contract_key = p_key
AND k.cnt_kenmerk_verwijder IS NULL
AND k.cnt_srtkenmerk_key = s.cnt_srtkenmerk_key
AND v.cnt_kenmerk_key(+) = k.cnt_kenmerk_key
ORDER BY k.cnt_kenmerk_volgnummer;
v_kenmerk_waarde cnt_kenmerkcontract.cnt_kenmerkcontract_waarde%TYPE;
v_kenmerk_wijzig cnt_kenmerkcontract.cnt_kenmerkcontract_wijzig%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_wijzig := rec1.cnt_kenmerkcontract_wijzig;
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.cnt_kenmerkcontract_waarde,
rec1.cnt_kenmerk_default,
rec1.cnt_srtkenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.cnt_srtkenmerk_nmin,
rec1.cnt_srtkenmerk_nmax);
createxmltagvalueattributes (
'kenmerk',
'naam',
rec1.cnt_srtkenmerk_omschrijving,
'type',
rec1.cnt_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.cnt_kenmerk_key,
'wijzig',
TO_CHAR (v_kenmerk_wijzig, 'YYYYMMDD HH24:MI'),
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
PROCEDURE create_cnt_contract_node (p_key IN NUMBER, p_concise IN BOOLEAN, p_extra_key IN NUMBER DEFAULT NULL)
AS
v_key cnt_contract.cnt_contract_key%TYPE;
v_nummer cnt_contract.cnt_contract_nummer%TYPE;
v_omschrijving cnt_contract.cnt_contract_omschrijving%TYPE;
v_looptijd_tot cnt_contract.cnt_contract_looptijd_tot%TYPE;
v_kosten cnt_contract.cnt_contract_kosten%TYPE;
v_uurloon cnt_contract.cnt_contract_uurloon%TYPE;
v_bedrijf_key cnt_contract.cnt_prs_bedrijf_key%TYPE;
v_afdeling_key cnt_contract.cnt_prs_afdeling_key%TYPE;
v_aanmaak cnt_contract.cnt_contract_aanmaak%TYPE;
v_verwijder cnt_contract.cnt_contract_verwijder%TYPE;
v_nummer_intern cnt_contract.cnt_contract_nummer_intern%TYPE;
v_versie cnt_contract.cnt_contract_versie%TYPE;
v_verlenging cnt_contract.cnt_contract_verlenging%TYPE;
v_dienst_key cnt_contract.prs_dienst_key%TYPE;
l_rappeldatum DATE;
l_opzegdatum DATE;
v_korting cnt_contract.cnt_contract_korting%TYPE;
v_contactpersoon_key cnt_contract.prs_contactpersoon_key%TYPE;
v_contact_persoon cnt_contract.cnt_contract_contact_persoon%TYPE;
v_discipline_key cnt_contract.ins_discipline_key%TYPE;
v_document cnt_contract.cnt_contract_document%TYPE;
v_perslid_key_eig cnt_contract.prs_perslid_key_eig%TYPE;
v_perslid_key_beh cnt_contract.prs_perslid_key_beh%TYPE;
v_afdeling_key_eig cnt_contract.prs_afdeling_key_eig%TYPE;
v_status cnt_contract.cnt_contract_status%TYPE;
v_looptijd_van cnt_contract.cnt_contract_looptijd_van%TYPE;
v_kostenplaats_key cnt_contract.prs_kostenplaats_key%TYPE;
v_termijnkosten cnt_contract.cnt_contract_termijnkosten%TYPE;
v_jaarkosten cnt_contract.cnt_contract_termijnkosten%TYPE; -- moet volstaan
v_kostensoort_key cnt_contract.prs_kostensoort_key%TYPE;
v_opmerking cnt_contract.cnt_contract_opmerking%TYPE;
v_mantel_key cnt_contract.cnt_contract_mantel_key%TYPE;
v_rappeltermijn cnt_termijn.cnt_termijn_omschrijving%TYPE;
v_opzegtermijn cnt_termijn.cnt_termijn_omschrijving%TYPE;
v_termijntermijn cnt_termijn.cnt_termijn_omschrijving%TYPE;
v_termijntermijn_key cnt_contract.cnt_contract_termijntermijn%TYPE;
l_totaalgewicht NUMBER;
l_totaalkosten cnt_contract.cnt_contract_kosten%TYPE;
l_jaarfactor NUMBER;
l_locatiekosten cnt_contract.cnt_contract_kosten%TYPE;
v_bestelopdr_key cnt_contract.bes_bestelopdr_key%TYPE;
CURSOR c1
IS
SELECT cnt_contract_object_key,
cnt_ins_srtdeel_key,
cnt_ins_deel_key
FROM cnt_contract_object
WHERE cnt_contract_object_verwijder IS NULL
AND cnt_contract_key = p_key;
CURSOR c2
IS
SELECT cnt_contract_plaats_key,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL
AND cnt_contract_key = p_key;
BEGIN
IF p_key IS NOT NULL
THEN
IF p_concise
THEN
createconciseopentag ('contract');
ELSE
createopentag ('contract');
END IF;
SELECT cnt_contract_nummer,
cnt_contract_omschrijving,
cnt_contract_looptijd_tot,
cnt_contract_kosten,
cnt_contract_uurloon,
cnt_prs_bedrijf_key,
cnt_prs_afdeling_key,
cnt_contract_aanmaak,
cnt_contract_verwijder,
cnt_contract_nummer_intern,
cnt_contract_korting,
prs_contactpersoon_key,
prs_dienst_key,
cnt_contract_contact_persoon,
ins_discipline_key,
cnt_contract_document,
prs_perslid_key_eig,
prs_perslid_key_beh,
prs_afdeling_key_eig,
cnt_contract_status,
cnt_contract_looptijd_van,
prs_kostenplaats_key,
cnt_contract_termijnkosten,
prs_kostensoort_key,
cnt_contract_opmerking,
cnt_contract_mantel_key,
lcl.x ('cnt_termijn_omschrijving',
t1.cnt_termijn_key,
t1.cnt_termijn_omschrijving)
cnt_termijn_omschrijving1,
lcl.x ('cnt_termijn_omschrijving',
t2.cnt_termijn_key,
t2.cnt_termijn_omschrijving)
cnt_termijn_omschrijving2,
lcl.x ('cnt_termijn_omschrijving',
t3.cnt_termijn_key,
t3.cnt_termijn_omschrijving)
cnt_termijn_omschrijving3,
c.cnt_contract_termijntermijn,
cnt_contract_versie,
cnt_contract_verlenging,
bes_bestelopdr_key
INTO v_nummer,
v_omschrijving,
v_looptijd_tot,
v_kosten,
v_uurloon,
v_bedrijf_key,
v_afdeling_key,
v_aanmaak,
v_verwijder,
v_nummer_intern,
v_korting,
v_contactpersoon_key,
v_dienst_key,
v_contact_persoon,
v_discipline_key,
v_document,
v_perslid_key_eig,
v_perslid_key_beh,
v_afdeling_key_eig,
v_status,
v_looptijd_van,
v_kostenplaats_key,
v_termijnkosten,
v_kostensoort_key,
v_opmerking,
v_mantel_key,
v_rappeltermijn,
v_opzegtermijn,
v_termijntermijn,
v_termijntermijn_key,
v_versie,
v_verlenging,
v_bestelopdr_key
FROM cnt_contract c, cnt_termijn t1, cnt_termijn t2, cnt_termijn t3
WHERE c.cnt_contract_rappeltermijn = t1.cnt_termijn_key(+)
AND c.cnt_contract_opzegtermijn = t2.cnt_termijn_key(+)
AND c.cnt_contract_termijntermijn = t3.cnt_termijn_key(+)
AND cnt_contract_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('extra_key', p_extra_key);
createxmltagvalue ('nummer', v_nummer);
createxmltagvalue ('nummer_intern', v_nummer_intern);
createxmltagvalue ('versie', v_versie);
createxmltagvalue ('omschrijving', v_omschrijving);
mydatetochar ('aanmaak', v_aanmaak);
mydatetochar ('verwijder', v_verwijder);
mydatetochar ('looptijd_van', v_looptijd_van);
mydatetochar ('looptijd_tot', v_looptijd_tot);
-- datum berekenen obv de termijnen
l_rappeldatum := cnt.cnt_getrappeldatum (p_key);
l_opzegdatum := cnt.cnt_getopzegdatum (p_key);
mydatetochar ('rappeldatum', l_rappeldatum);
mydatetochar ('opzegdatum', l_opzegdatum);
createxmltagvalue ('rappeltermijn', v_rappeltermijn);
createxmltagvalue ('opzegtermijn', v_opzegtermijn);
createxmltagvalue ('verlenging', v_verlenging);
createxmltagvalue ('kosten', v_kosten);
createxmltagvalue ('termijnkosten', v_termijnkosten);
createxmltagvalue ('termijntermijn', v_termijntermijn);
l_jaarfactor := cnt.termijnjaarfactor(v_termijntermijn_key);
IF l_jaarfactor <> -1
THEN
v_jaarkosten := l_jaarfactor * v_termijnkosten;
createxmltagvalue ('jaarkosten', v_jaarkosten);
END IF;
createxmltagvalue ('uurloon', v_uurloon);
createxmltagvalue ('korting', v_korting);
create_prs_bedrijf_node (v_bedrijf_key, 'bedrijf', FALSE); -- uitvoerder/huurder
create_prs_afdeling_node (v_afdeling_key, 'afdeling');
create_prs_contactpersoon_node (v_contactpersoon_key);
create_prs_dienst_node (v_dienst_key);
createxmltagvalue ('contact_persoon', v_contact_persoon);
create_ins_discipline_node (v_discipline_key);
createxmltagvalue ('document', v_document);
create_prs_perslid_node (v_perslid_key_eig, 'eigenaar', p_concise);
create_prs_afdeling_node (v_afdeling_key_eig, 'eigenaar_afd'); --??
create_prs_perslid_node (v_perslid_key_beh, 'beheerder', p_concise);
createxmltagvalue ('status', v_status);
create_prs_kostenplaats_node (v_kostenplaats_key, FALSE);
create_prs_kostensoort_node (v_kostensoort_key);
createxmltagvalue ('opmerking', v_opmerking);
create_cnt_contract_node (v_mantel_key, p_concise);
IF NOT p_concise
THEN
create_bes_bestelopdr_node (v_bestelopdr_key, FALSE);
create_cnt_kenmerken (p_key);
create_fac_tracking_node ('contract', p_key);
FOR rec1 IN c1
LOOP
-- object/objectsoort
BEGIN
createopentag ('contract_object');
createxmltagvalue (
'key',
mynumbertochar (rec1.cnt_contract_object_key));
IF rec1.cnt_ins_deel_key IS NOT NULL
THEN
create_ins_deel_node (rec1.cnt_ins_deel_key, TRUE);
ELSIF rec1.cnt_ins_srtdeel_key IS NOT NULL
THEN
create_ins_srtdeel_node (rec1.cnt_ins_srtdeel_key,
FALSE);
END IF;
createclosetag ('contract_object');
END;
END LOOP;
SELECT SUM (COALESCE (cnt_contract_plaats_gewicht, 0))
INTO l_totaalgewicht
FROM cnt_contract_plaats
WHERE cnt_contract_key = p_key;
SELECT cnt_contract_kosten
INTO l_totaalkosten -- mag dus null zijn?
FROM cnt_contract
WHERE cnt_contract_key = p_key;
FOR rec2 IN c2
LOOP
-- plaats
BEGIN
createopentag ('contract_plaats');
createxmltagvalue (
'key',
mynumbertochar (rec2.cnt_contract_plaats_key));
createxmltagvalue (
'gewicht',
mynumbertochar (rec2.cnt_contract_plaats_gewicht));
IF l_totaalgewicht <> 0 -- niet delen door 0 he
THEN
l_locatiekosten :=
l_totaalkosten
* rec2.cnt_contract_plaats_gewicht
/ l_totaalgewicht;
createxmltagvalue ('kosten',
mynumbertochar (l_locatiekosten));
END IF;
IF (rec2.cnt_alg_plaats_code = 'L')
THEN
create_alg_onroerendgoed_node (rec2.cnt_alg_plaats_key,
'plaats',
rec2.cnt_alg_plaats_key,
p_concise,
FALSE);
ELSE
create_alg_onroerendgoed_node (rec2.cnt_alg_plaats_key,
'plaats',
NULL,
FALSE,
FALSE);
END IF;
createclosetag ('contract_plaats');
END;
END LOOP;
END IF;
create_cnt_contract_note_node (p_key);
createclosetag ('contract');
END IF;
END;
-- *
-- * FIN zaken
-- *
PROCEDURE create_fin_factuur_note_node (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT fin_factuur_note_key,
fin_factuur_note_aanmaak,
prs_perslid_key,
fin_factuur_note_omschrijving
FROM fin_factuur_note
WHERE fin_factuur_key = p_key
ORDER BY fin_factuur_note_key;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('notes');
FOR rec1 IN c1
LOOP
createopentag ('note');
createxmltagvalue ('key', rec1.fin_factuur_note_key);
mydatetochar ('aanmaak', rec1.fin_factuur_note_aanmaak);
createxmltagvalue ('omschrijving',
rec1.fin_factuur_note_omschrijving);
create_prs_perslid_node (rec1.prs_perslid_key, 'noteur', TRUE);
createclosetag ('note');
END LOOP;
createclosetag ('notes');
END IF;
END;
PROCEDURE create_fin_kenmerken (p_key IN NUMBER, f_or_r IN VARCHAR2)
AS
CURSOR cf
IS
SELECT k.fin_kenmerk_key,
lcl.x ('fin_kenmerk_omschrijving', k.fin_kenmerk_key, fin_kenmerk_omschrijving) fin_kenmerk_omschrijving,
k.fin_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
k.fin_kenmerk_lengte,
k.fin_kenmerk_dec,
k.fin_kenmerk_nmin,
k.fin_kenmerk_nmax,
k.fin_kenmerk_default,
NVL (k.fin_kenmerk_volgnr, 0) volgnummer,
lcl.x ('fin_kenmerk_dimensie',
k.fin_kenmerk_key,
fin_kenmerk_dimensie)
dimensie,
lcl.x ('fin_kenmerk_hint',
k.fin_kenmerk_key,
fin_kenmerk_hint)
hint,
v.fin_kenmerkfactuur_waarde
FROM fin_kenmerk k,
(SELECT v.fin_kenmerk_key, v.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur v
WHERE v.fin_factuur_key = p_key
AND v.fin_kenmerkfactuur_verwijder IS NULL) v
WHERE k.fin_kenmerk_verwijder IS NULL
AND k.fin_kenmerk_type = 'F'
AND v.fin_kenmerk_key(+) = k.fin_kenmerk_key
ORDER BY k.fin_kenmerk_volgnr;
CURSOR cr
IS
SELECT k.fin_kenmerk_key,
lcl.x ('fin_kenmerk_omschrijving', k.fin_kenmerk_key, fin_kenmerk_omschrijving) fin_kenmerk_omschrijving,
k.fin_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
k.fin_kenmerk_lengte,
k.fin_kenmerk_dec,
k.fin_kenmerk_nmin,
k.fin_kenmerk_nmax,
k.fin_kenmerk_default,
NVL (k.fin_kenmerk_volgnr, 0) volgnummer,
lcl.x ('fin_kenmerk_dimensie',
k.fin_kenmerk_key,
fin_kenmerk_dimensie)
dimensie,
lcl.x ('fin_kenmerk_hint',
k.fin_kenmerk_key,
fin_kenmerk_hint)
hint,
v.fin_kenmerkfactregel_waarde
FROM fin_kenmerk k,
(SELECT v.fin_kenmerk_key, v.fin_kenmerkfactregel_waarde
FROM fin_kenmerkfactregel v
WHERE v.fin_factuurregel_key = p_key
AND v.fin_kenmerkfactregel_verwijder IS NULL) v
WHERE k.fin_kenmerk_verwijder IS NULL
AND k.fin_kenmerk_type = 'R'
AND v.fin_kenmerk_key(+) = k.fin_kenmerk_key
ORDER BY k.fin_kenmerk_volgnr;
v_kenmerk_waarde fin_kenmerkfactuur.fin_kenmerkfactuur_waarde%TYPE;
BEGIN
IF f_or_r = 'F'
THEN
-- factuurkenmerken
FOR rec1 IN cf
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.fin_kenmerkfactuur_waarde,
rec1.fin_kenmerk_default,
rec1.fin_kenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.fin_kenmerk_nmin,
rec1.fin_kenmerk_nmax);
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.fin_kenmerk_omschrijving,
'type',
rec1.fin_kenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.fin_kenmerk_key,
'dimensie',
rec1.dimensie,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
ELSE
-- factuurregelkenmerken
FOR rec1 IN cr
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.fin_kenmerkfactregel_waarde,
rec1.fin_kenmerk_default,
rec1.fin_kenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.fin_kenmerk_nmin,
rec1.fin_kenmerk_nmax);
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.fin_kenmerk_omschrijving,
'type',
rec1.fin_kenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.fin_kenmerk_key,
'dimensie',
rec1.dimensie,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END IF;
END;
PROCEDURE create_fin_factuurregel_node (p_key IN NUMBER)
AS
v_nr fin_factuurregel.fin_factuurregel_nr%TYPE;
v_code fin_factuurregel.fin_factuurregel_code%TYPE;
v_aantal fin_factuurregel.fin_factuurregel_aantal%TYPE;
v_eenheid fin_factuurregel.fin_factuurregel_eenheid%TYPE;
v_id fin_factuurregel.fin_factuurregel_id%TYPE;
v_totaal fin_factuurregel.fin_factuurregel_totaal%TYPE;
v_btw fin_factuurregel.fin_factuurregel_btw%TYPE;
v_referentie fin_factuurregel.fin_factuurregel_referentie%TYPE;
v_omschrijving fin_factuurregel.fin_factuurregel_omschrijving%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('factuurregel');
SELECT fin_factuurregel_nr,
fin_factuurregel_code,
fin_factuurregel_aantal,
fin_factuurregel_eenheid,
fin_factuurregel_id,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_referentie,
fin_factuurregel_omschrijving
INTO v_nr,
v_code,
v_aantal,
v_eenheid,
v_id,
v_totaal,
v_btw,
v_referentie,
v_omschrijving
FROM fin_factuurregel
WHERE fin_factuurregel_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('nr', v_nr);
createxmltagvalue ('code', v_code);
createxmltagvalue ('aantal', v_aantal);
createxmltagvalue ('eenheid', v_eenheid);
createxmltagvalue ('id', v_id);
createxmltagvalue ('totaal', v_totaal);
createxmltagvalue ('btw', v_btw);
createxmltagvalue ('referentie', v_referentie);
createxmltagvalue ('omschrijving', v_omschrijving);
create_fin_kenmerken (p_key, 'R');
createclosetag ('factuurregel');
END IF;
END;
PROCEDURE create_fin_factuur_node (p_key IN NUMBER, p_concise IN BOOLEAN, p_bgtmode IN BOOLEAN DEFAULT FALSE)
AS
v_nr fin_factuur.fin_factuur_nr%TYPE;
v_totaal fin_factuur.fin_factuur_totaal%TYPE;
v_totaal_btw fin_factuur.fin_factuur_totaal_btw%TYPE;
v_opdr_key fin_factuur.mld_opdr_key%TYPE;
v_contract_key fin_factuur.cnt_contract_key%TYPE;
v_bestelopdr_key fin_factuur.bes_bestelopdr_key%TYPE;
v_perslid_key_user fin_factuur.prs_perslid_key_user%TYPE;
v_datum fin_factuur.fin_factuur_datum%TYPE;
v_boekmaand fin_factuur.fin_factuur_boekmaand%TYPE;
v_debiteur_nr fin_factuur.fin_factuur_debiteur_nr%TYPE;
v_kostensoort_key fin_factuur.prs_kostensoort_key%TYPE;
v_opmerking fin_factuur.fin_factuur_opmerking%TYPE;
v_status fin_factuur.fin_factuur_statuses_key%TYPE;
v_contract_plaats_key fin_factuur.cnt_contract_plaats_key%TYPE;
CURSOR c1
IS
SELECT fin_factuurregel_key
FROM fin_factuurregel
WHERE fin_factuur_key = p_key;
BEGIN
IF p_key IS NOT NULL
THEN
IF p_concise
THEN
createconciseopentag ('factuur');
ELSE
createopentag ('factuur');
END IF;
SELECT fin_factuur_nr,
fin_factuur_totaal,
fin_factuur_totaal_btw,
mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key,
prs_perslid_key_user,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
prs_kostensoort_key,
fin_factuur_opmerking,
fin_factuur_statuses_key,
cnt_contract_plaats_key
INTO v_nr,
v_totaal,
v_totaal_btw,
v_opdr_key,
v_contract_key,
v_bestelopdr_key,
v_perslid_key_user,
v_datum,
v_boekmaand,
v_debiteur_nr,
v_kostensoort_key,
v_opmerking,
v_status,
v_contract_plaats_key
FROM fin_factuur
WHERE fin_factuur_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('nr', v_nr);
createxmltagvalue ('totaal', v_totaal);
createxmltagvalue ('totaal_btw', v_totaal_btw);
mydatetochar ('datum', v_datum);
createxmltagvalue ('boekmaand', v_boekmaand);
createxmltagvalue ('debiteurnr', v_debiteur_nr);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('status', v_status);
create_fin_kenmerken (p_key, 'F');
FOR rec1 IN c1
LOOP
create_fin_factuurregel_node (rec1.fin_factuurregel_key);
END LOOP;
IF NOT p_bgtmode THEN
create_prs_kostensoort_node (v_kostensoort_key);
create_mld_opdr_node (v_opdr_key, NULL, FALSE);
create_cnt_contract_node (v_contract_key, FALSE);
create_bes_bestelopdr_node (v_bestelopdr_key, FALSE);
END IF;
create_prs_perslid_node (v_perslid_key_user, 'invoerder', TRUE);
create_cnt_contract_node (v_contract_plaats_key, TRUE);
create_fin_factuur_note_node (p_key);
createclosetag ('factuur');
END IF;
END;
-- In komt een fin_verkoopfactuurkop_key waarmee de onderliggende regels gegroepeerd zijn
PROCEDURE create_fin_verkoopfactuur_node (p_key IN NUMBER)
AS
v_id fin_verkoopfactuur.fin_verkoopfactuur_id%TYPE;
CURSOR c1
IS
SELECT fin_verkoopfactuur_key,
fin_verkoopfactuur_aanmaak,
fin_verkoopfactuur_id,
fin_verkoopfactuur_datum,
fin_verkoopfactuur_omschr,
fin_verkoopfactuur_xmlnode,
fin_verkoopfactuur_refkey,
prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaatsgrp_oms,
prs_kostensoort_oms,
prs_kostensoort_opmerking,
prs_kostensoort_refcode,
prs_bedrijf_key,
prs_debiteur_naam,
prs_kostensoortgrp_oms,
fin_verkoopfactuur_bedrag,
fin_verkoopfactuur_btw,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_oms,
fin_btwtabelwaarde_perc,
fin_btwtabelwaarde_verlegd,
fin_verkoopfactuur_maand,
fin_verkoopfactuur_n1,
fin_verkoopfactuur_n2,
fin_verkoopfactuur_n3,
fin_verkoopfactuur_n4,
fin_verkoopfactuur_n5,
fin_verkoopfactuur_c1,
fin_verkoopfactuur_c2,
fin_verkoopfactuur_c3,
fin_verkoopfactuur_c4,
fin_verkoopfactuur_c5,
fin_verkoopfactuur_c6,
fin_verkoopfactuur_c7,
fin_verkoopfactuur_c8,
fin_verkoopfactuur_d1,
fin_verkoopfactuur_d2,
fin_verkoopfactuur_d3,
fin_verkoopfactuur_d4,
fin_verkoopfactuur_d5
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuurkop_key = p_key
AND ROWNUM <= fac.getsetting ('fac_xml_max_factuur')
ORDER BY fin_verkoopfactuur_key;
BEGIN
IF p_key IS NOT NULL
THEN
SELECT fin_verkoopfactuurkop_id
INTO v_id
FROM fin_verkoopfactuurkop
WHERE fin_verkoopfactuurkop_key = p_key;
createopentag ('verkoopfactuur');
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('id', v_id);
FOR rec1 IN c1 LOOP
createopentag ('verkoopfactuurregel');
createxmltagvalue ('key', mynumbertochar (rec1.fin_verkoopfactuur_key));
mydatetochar ('aanmaak', rec1.fin_verkoopfactuur_aanmaak);
createxmltagvalue ('id', rec1.fin_verkoopfactuur_id);
mydatetochar ('datum', rec1.fin_verkoopfactuur_datum);
createxmltagvalue ('omschrijving', rec1.fin_verkoopfactuur_omschr);
createxmltagvalue ('xmlnode', rec1.fin_verkoopfactuur_xmlnode); --referenced data included later
createxmltagvalue ('refkey', rec1.fin_verkoopfactuur_refkey); --referenced data included later
create_prs_kostenplaats_node (rec1.prs_kostenplaats_key, TRUE);
createxmltagvalue ('kostenplaatsnr', rec1.prs_kostenplaats_nr);
createxmltagvalue ('kostenplaatsomschrijving', rec1.prs_kostenplaats_omschrijving);
createxmltagvalue ('kostenplaatsgroep', rec1.prs_kostenplaatsgrp_oms);
createxmltagvalue ('kostensoort', rec1.prs_kostensoort_oms);
createxmltagvalue ('kostensoortopmerking', rec1.prs_kostensoort_opmerking);
createxmltagvalue ('kostensoortrefcode', rec1.prs_kostensoort_refcode);
create_prs_bedrijf_node (rec1.prs_bedrijf_key, 'bedrijf', TRUE);
createxmltagvalue ('debiteurnaam', rec1.prs_debiteur_naam);
createxmltagvalue ('kostensoortgroep', rec1.prs_kostensoortgrp_oms);
createxmltagvalue ('bedrag', mynumbertochar (rec1.fin_verkoopfactuur_bedrag));
createxmltagvalue ('btwbedrag', mynumbertochar (rec1.fin_verkoopfactuur_btw));
createxmltagvalue ('btwcode', rec1.fin_btwtabelwaarde_code);
createxmltagvalue ('btwomschrijving', rec1.fin_btwtabelwaarde_oms);
createxmltagvalue ('btwpercentage', mynumbertochar (rec1.fin_btwtabelwaarde_perc));
createxmltagvalue ('btwverlegd', mynumbertochar (rec1.fin_btwtabelwaarde_verlegd));
createxmltagvalue ('boekmaand', rec1.fin_verkoopfactuur_maand);
createxmltagvalue ('getal1', mynumbertochar (rec1.fin_verkoopfactuur_n1));
createxmltagvalue ('getal2', mynumbertochar (rec1.fin_verkoopfactuur_n2));
createxmltagvalue ('getal3', mynumbertochar (rec1.fin_verkoopfactuur_n3));
createxmltagvalue ('getal4', mynumbertochar (rec1.fin_verkoopfactuur_n4));
createxmltagvalue ('getal5', mynumbertochar (rec1.fin_verkoopfactuur_n5));
createxmltagvalue ('tekst1', rec1.fin_verkoopfactuur_c1);
createxmltagvalue ('tekst2', rec1.fin_verkoopfactuur_c2);
createxmltagvalue ('tekst3', rec1.fin_verkoopfactuur_c3);
createxmltagvalue ('tekst4', rec1.fin_verkoopfactuur_c4);
createxmltagvalue ('tekst5', rec1.fin_verkoopfactuur_c5);
createxmltagvalue ('tekst6', rec1.fin_verkoopfactuur_c6);
createxmltagvalue ('tekst7', rec1.fin_verkoopfactuur_c7);
createxmltagvalue ('tekst8', rec1.fin_verkoopfactuur_c8);
mydatetochar ('datum1', rec1.fin_verkoopfactuur_d1);
mydatetochar ('datum2', rec1.fin_verkoopfactuur_d2);
mydatetochar ('datum3', rec1.fin_verkoopfactuur_d3);
mydatetochar ('datum4', rec1.fin_verkoopfactuur_d4);
mydatetochar ('datum5', rec1.fin_verkoopfactuur_d5);
IF rec1.fin_verkoopfactuur_refkey IS NOT NULL
THEN
CASE rec1.fin_verkoopfactuur_xmlnode
WHEN 'opdracht'
THEN
create_mld_opdr_node (rec1.fin_verkoopfactuur_refkey, NULL, TRUE);
WHEN 'contract'
THEN
create_cnt_contract_node (rec1.fin_verkoopfactuur_refkey, TRUE);
WHEN 'bestelopdr'
THEN
create_bes_bestelopdr_node (rec1.fin_verkoopfactuur_refkey, TRUE);
WHEN 'reservering'
THEN
create_res_reservering_node (NULL, rec1.fin_verkoopfactuur_refkey);
ELSE
NULL;
END CASE;
END IF;
createclosetag ('verkoopfactuurregel');
END LOOP;
createclosetag ('verkoopfactuur');
END IF;
END;
PROCEDURE create_prs_kostensoortgrp_node (p_key IN NUMBER, p_parent_info BOOLEAN DEFAULT FALSE)
AS
CURSOR c_soort
IS
SELECT prs_kostensoort_key
FROM prs_kostensoort
WHERE prs_kostensoortgrp_key = p_key;
v_oms prs_kostensoortgrp.prs_kostensoortgrp_oms%TYPE;
v_altcode prs_kostensoortgrp.prs_kostensoortgrp_altcode%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
IF p_parent_info
THEN
create_bgt_ancestor_node('groep', p_key);
END IF;
--
SELECT prs_kostensoortgrp_altcode
, prs_kostensoortgrp_oms
INTO v_altcode
, v_oms
FROM prs_kostensoortgrp
WHERE prs_kostensoortgrp_key = p_key;
createopentag ('kostengroep');
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('code', v_altcode);
createxmltagvalue ('name', v_oms);
FOR rec1 IN c_soort
LOOP
create_prs_kostensoort_node (rec1.prs_kostensoort_key, TRUE);
END LOOP;
createclosetag ('kostengroep');
END IF;
END;
PROCEDURE create_bgt_kostenrubriek_node (p_key IN NUMBER, p_parent_info BOOLEAN DEFAULT FALSE)
AS
CURSOR c_groep
IS
SELECT prs_kostensoortgrp_key
FROM prs_kostensoortgrp
WHERE bgt_kostenrubriek_key = p_key;
CURSOR c_budget
IS
SELECT bgt_budget_key
FROM bgt_budget
WHERE bgt_kostenrubriek_key = p_key;
v_code bgt_kostenrubriek.bgt_kostenrubriek_code%TYPE;
v_oms bgt_kostenrubriek.bgt_kostenrubriek_oms%TYPE;
v_btwperc fin_btwtabelwaarde.fin_btwtabelwaarde_perc%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
IF p_parent_info
THEN
create_bgt_ancestor_node('rubriek', p_key);
END IF;
--
SELECT r.bgt_kostenrubriek_code
, r.bgt_kostenrubriek_oms
, f.fin_btwtabelwaarde_perc
INTO v_code
, v_oms
, v_btwperc
FROM bgt_kostenrubriek r
, fin_btwtabelwaarde f
WHERE r.fin_btwtabelwaarde_key = f.fin_btwtabelwaarde_key(+)
AND r.bgt_kostenrubriek_key = p_key;
createopentag ('kostenrubriek');
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('code', v_code);
createxmltagvalue ('name', v_oms);
createxmltagvalue ('btwperc', v_btwperc);
FOR rec1 IN c_groep
LOOP
create_prs_kostensoortgrp_node (rec1.prs_kostensoortgrp_key);
END LOOP;
FOR rec2 IN c_budget
LOOP
create_bgt_budget_node (rec2.bgt_budget_key);
END LOOP;
createclosetag ('kostenrubriek');
END IF;
END;
PROCEDURE create_bgt_project_node (p_key IN NUMBER, p_parent_info BOOLEAN DEFAULT FALSE)
AS
CURSOR c_rubriek
IS
SELECT bgt_kostenrubriek_key
FROM bgt_kostenrubriek
WHERE bgt_project_key = p_key;
v_code bgt_project.bgt_project_code%TYPE;
v_omschrijving bgt_project.bgt_project_omschrijving%TYPE;
v_volgnr bgt_project.bgt_project_volgnr%TYPE;
v_prijspeildatum bgt_project.bgt_project_prijspeildatum%TYPE;
v_info bgt_project.bgt_project_info%TYPE;
v_notes bgt_project.bgt_project_notes%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
IF p_parent_info
THEN
create_bgt_ancestor_node('project', p_key);
END IF;
--
SELECT bgt_project_code
, bgt_project_omschrijving
, bgt_project_volgnr
, bgt_project_prijspeildatum
, bgt_project_info
, bgt_project_notes
INTO v_code
, v_omschrijving
, v_volgnr
, v_prijspeildatum
, v_info
, v_notes
FROM bgt_project
WHERE bgt_project_key = p_key;
createopentag ('project');
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('code', v_code);
createxmltagvalue ('name', v_omschrijving);
createxmltagvalue ('sequence', mynumbertochar (v_volgnr));
mydatetochar ('priceleveldate', v_prijspeildatum);
createxmltagvalue ('info', v_info);
createxmltagvalue ('notes', v_notes);
FOR rec1 IN c_rubriek
LOOP
create_bgt_kostenrubriek_node (rec1.bgt_kostenrubriek_key);
END LOOP;
createclosetag ('project');
END IF;
END;
PROCEDURE create_bgt_discipline_node (p_key IN NUMBER)
AS
CURSOR c_project
IS
SELECT bgt_project_key
FROM bgt_project
WHERE ins_discipline_key = p_key;
v_omschrijving ins_tab_discipline.ins_discipline_omschrijving%TYPE;
v_opmerking ins_tab_discipline.ins_discipline_opmerking%TYPE;
v_code bgt_disc_params.bgt_disc_params_code%TYPE;
v_opdrachtgever bgt_disc_params.bgt_disc_params_opdrachtgever%TYPE;
v_startdatum bgt_disc_params.bgt_disc_params_startdatum%TYPE;
BEGIN
IF p_key IS NOT NULL
THEN
SELECT d.ins_discipline_omschrijving
, d.ins_discipline_opmerking
, p.bgt_disc_params_code
, p.bgt_disc_params_opdrachtgever
, p.bgt_disc_params_startdatum
INTO v_omschrijving
, v_opmerking
, v_code
, v_opdrachtgever
, v_startdatum
FROM ins_tab_discipline d
, bgt_disc_params p
WHERE d.ins_discipline_key = p.bgt_ins_discipline_key
AND d.ins_discipline_key = p_key;
createopentag ('discipline');
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('code', v_code);
createxmltagvalue ('name', v_omschrijving);
createxmltagvalue ('remark', v_opmerking);
createxmltagvalue ('principal', v_opdrachtgever);
mydatetochar ('startdate', v_startdatum);
FOR rec1 IN c_project
LOOP
create_bgt_project_node (rec1.bgt_project_key);
END LOOP;
createclosetag ('discipline');
END IF;
END;
PROCEDURE create_bgt_node (p_key IN NUMBER, p_where IN VARCHAR2)
AS
BEGIN
createopentag('start_in');
createxmltagvalue ('node', p_where);
createclosetag('start_in');
CASE p_where
WHEN 'discipline' THEN create_bgt_discipline_node(p_key);
WHEN 'project' THEN create_bgt_project_node(p_key, TRUE);
WHEN 'kostenrubriek' THEN create_bgt_kostenrubriek_node(p_key, TRUE);
WHEN 'kostengroep' THEN create_prs_kostensoortgrp_node(p_key, TRUE);
WHEN 'kostensoort' THEN create_prs_kostensoort_node(p_key, TRUE);
ELSE create_bgt_discipline_node(-1);
END CASE;
END;
PROCEDURE xml_node (p_xmlnode IN VARCHAR2,
p_key IN NUMBER,
p_custid IN VARCHAR2,
p_sessionid IN VARCHAR2,
p_extra IN NUMBER,
p_where IN VARCHAR2,
p_concise IN BOOLEAN)
AS
v_where VARCHAR2 (4000);
v_sql_stmt VARCHAR2 (4000);
BEGIN
CASE p_xmlnode
WHEN 'afspraak'
THEN
create_bez_afspraak_node (p_key, p_extra, p_concise);
WHEN 'bezoeker'
THEN
create_bez_bezoeker_node (p_key);
WHEN 'bestelling'
THEN
create_bes_bestelling_node (p_key, p_concise);
WHEN 'bestelopdr'
THEN
create_bes_bestelopdr_node (p_key, FALSE);
WHEN 'bedrijf'
THEN
create_prs_bedrijf_node (p_key, 'bedrijf', FALSE);
WHEN 'melding'
THEN
create_mld_melding_node (p_key, p_extra, TRUE);
WHEN 'opdracht'
THEN
create_mld_opdr_node (p_key, p_extra, p_concise);
WHEN 'reservering'
THEN -- Deelreservering
create_res_reservering_node (p_key, p_extra);
WHEN 'xreservering'
THEN -- Hele reservering
create_res_reservering_node (p_key, NULL);
WHEN 'scenario'
THEN
create_prj_scenario_node (p_key);
WHEN 'message'
THEN
create_msg_message_node (p_key);
WHEN 'perslid'
THEN
create_prs_perslid_node (p_key, 'perslid', p_concise);
WHEN 'afdeling'
THEN
create_prs_afdeling_node (p_key, 'afdeling');
WHEN 'kostenplaats'
THEN
create_prs_kostenplaats_node (p_key, FALSE);
WHEN 'deel'
THEN
create_ins_deel_node (p_key, p_concise);
WHEN 'controle'
THEN
create_ins_deelsrtcontr_node (p_key);
WHEN 'taak'
THEN
create_ins_taak_node (p_key);
WHEN 'srtdeel'
THEN
create_ins_srtdeel_node (p_key, p_concise);
WHEN 'rapport'
THEN
v_where := p_where;
IF COALESCE (p_extra, 0) <> 0 AND v_where IS NULL
THEN
v_where := 'WHERE extra_key = ' || p_extra;
END IF;
create_fac_usrrap_node (p_key, v_where);
WHEN 'contract'
THEN
create_cnt_contract_node (p_key, p_concise, p_extra);
WHEN 'factuur'
THEN
create_fin_factuur_node (p_key, p_concise);
WHEN 'verkoopfactuur'
THEN
create_fin_verkoopfactuur_node (p_key);
WHEN 'ruimte'
THEN
-- create_alg_ruimte_node (p_key);
create_alg_onroerendgoed_node (p_key,
'plaats',
NULL,
FALSE,
p_concise);
WHEN 'verdieping'
THEN
create_alg_onroerendgoed_node (p_key,
'plaats',
NULL,
FALSE,
p_concise);
WHEN 'gebouw'
THEN
create_alg_onroerendgoed_node (p_key,
'plaats',
NULL,
FALSE,
p_concise);
WHEN 'locatie'
THEN
create_alg_onroerendgoed_node (p_key,
'plaats',
p_key,
FALSE,
p_concise);
WHEN 'budget'
THEN
-- create_bgt_discipline_node (p_key);
create_bgt_node (p_key, p_where);
ELSE
v_sql_stmt :=
'BEGIN '
|| p_custid
|| '.create_'
|| p_xmlnode
|| '_node ('
|| p_key
|| ','
|| ''''
|| NVL (p_custid, '')
|| ''''
|| ','
|| ''''
|| NVL (p_sessionid, '')
|| ''''
|| ','
|| NVL (p_extra, -1)
|| ','
|| ''''
|| NVL (p_where, '')
|| ''''
|| '); END; ';
EXECUTE IMMEDIATE v_sql_stmt;
END CASE;
END;
-- MAIN PROCS --
FUNCTION make_xml2 (p_xmlnode IN VARCHAR2,
p_key IN NUMBER,
p_custid IN VARCHAR2,
p_sessionid IN VARCHAR2,
p_extra IN NUMBER,
p_where IN VARCHAR2)
RETURN CLOB
AS
BEGIN
DBMS_LOB.createtemporary (aclob, TRUE, DBMS_LOB.CALL);
add_header (p_custid);
add_localisation (p_xmlnode);
create_bookmarks_node (p_xmlnode, p_key);
xmlnode_depth := 0; -- Set initial depth-level!!!
xml_node (p_xmlnode,
p_key,
p_custid,
p_sessionid,
p_extra,
p_where,
FALSE);
add_footer ('');
RETURN aclob;
EXCEPTION WHEN NO_DATA_FOUND THEN
-- FCLT#58472 Een NO_DATA_FOUND (diep) in een FUNCTION die vanuit een SELECT wordt aangeroepen
-- wordt *niet* gepropageerd naar de aanroeper. Dat is intens lastig troubleshooten dus daarom
-- op deze manier raisen als custom error. Die wordt wel gepropageerd.
raise_application_error (-20001, 'Error in FUNCTION make_xml2' || CHR(13) || DBMS_UTILITY.FORMAT_ERROR_STACK);
END;
FUNCTION make_view_xml2 (p_view IN VARCHAR2,
p_key IN NUMBER,
p_custid IN VARCHAR2,
p_sessionid IN VARCHAR2,
p_extra IN NUMBER,
p_where IN VARCHAR2,
p_nodename IN VARCHAR2,
p_rowname IN VARCHAR2
)
RETURN CLOB
AS
BEGIN
DBMS_LOB.createtemporary (aclob, TRUE, DBMS_LOB.CALL);
add_header (p_custid);
--add_localisation (p_xmlnode);
create_view_node (p_view,
NULL,
NULL,
p_where,
p_nodename,
p_rowname,
NULL);
add_footer ('');
RETURN aclob;
EXCEPTION WHEN NO_DATA_FOUND THEN
-- FCLT#58472 Een NO_DATA_FOUND (diep) in een FUNCTION die vanuit een SELECT wordt aangeroepen
-- wordt *niet* gepropageerd naar de aanroeper. Dat is intens lastig troubleshooten dus daarom
-- op deze manier raisen als custom error. Die wordt wel gepropageerd.
raise_application_error (-20001, 'Error in FUNCTION make_xml2' || CHR(13) || DBMS_UTILITY.FORMAT_ERROR_STACK);
END;
END xml;
/
REGISTERRUN('$Id$')