/* $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, p_timezone IN VARCHAR2 DEFAULT NULL); 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 DEFAULT NULL, p_attrvalue2 IN VARCHAR2 DEFAULT NULL, p_attrname3 IN VARCHAR2 DEFAULT NULL, p_attrvalue3 IN VARCHAR2 DEFAULT NULL, p_attrname4 IN VARCHAR2 DEFAULT NULL, p_attrvalue4 IN VARCHAR2 DEFAULT NULL ); 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_ins_discipline_node (p_key IN NUMBER, p_nodename IN VARCHAR2 DEFAULT 'discipline'); 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, p_concise 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_ins_deel_node (p_key IN NUMBER, p_deelsrtcontrole_key IN NUMBER, p_concise IN BOOLEAN, p_extra_key IN NUMBER DEFAULT NULL); PROCEDURE create_prs_bedrijf_node (p_bedrijf_key IN NUMBER, p_nodename IN VARCHAR2, p_concise IN BOOLEAN); PROCEDURE create_prs_bedrijf_bdr_node (p_key IN NUMBER); 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_bes_bestellevr_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_reservering_node (p_key IN NUMBER, p_res_rsv_ruimte_key IN NUMBER); 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, p_extra_key IN NUMBER DEFAULT NULL); 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, p_notificatie_key IN NUMBER DEFAULT NULL ) 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 addvarchartoclob (text IN CLOB) AS BEGIN DBMS_LOB.APPEND (aclob, text); END; PROCEDURE add_header (p_custid IN VARCHAR2) AS BEGIN addvarchartoclob ( '' || CHR (10)); createopentag ('facilitor'); createheadernode (p_custid); END; PROCEDURE add_footer (dummy IN VARCHAR2) AS BEGIN createclosetag ('facilitor'); END; PROCEDURE add_settings (p_xmlnode IN VARCHAR2) -- p_xmlnode negeren we nog AS BEGIN createopentag ('setting'); createxmltagvalue ('bes_bestelopdr_prefix', fac.getsetting('bes_bestelopdr_prefix')); createxmltagvalue ('bes_bestelling_prefix', fac.getsetting('bes_bestelling_prefix')); createclosetag ('setting'); 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; FUNCTION char_to_html (p_char IN CLOB) RETURN CLOB IS BEGIN RETURN DBMS_XMLGEN.CONVERT(p_char); -- eleganter dan alle REPLACE's maar wel 10% trager END; PROCEDURE mydatetochar (p_tag IN VARCHAR2, p_date IN DATE, p_timezone IN VARCHAR2) AS v_localized TIMESTAMP; v_utc TIMESTAMP; user_ts TIMESTAMP; v_server_timezone VARCHAR2 (4000); BEGIN IF p_date IS NOT NULL THEN v_server_timezone := fac.getsetting('fac_server_timezone'); createopentag (p_tag); -- p_date wordt aangeleverd in de tijdszone van de server -- p_timezone is de tijdszone van p_date (default is dat de servertijd) -- v_localized is p_date in de tijdszone van p_timezone v_localized := FROM_TZ (CAST (p_date AS TIMESTAMP), v_server_timezone) AT TIME ZONE COALESCE(p_timezone, v_server_timezone); createxmltagvalue ('datum', TO_CHAR (v_localized, 'dd-mm-yyyy')); createxmltagvalue ('tijd', TO_CHAR (v_localized, 'hh24:mi')); -- user_ts is p_date in de tijdszone van de user-sessie (SESSIONTIMEZONE) user_ts := FROM_TZ (CAST (p_date AS TIMESTAMP), v_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 is p_date in UTC v_utc := SYS_EXTRACT_UTC (FROM_TZ (CAST (p_date AS TIMESTAMP), v_server_timezone)); 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; FUNCTION attrval(p_attrname1 IN VARCHAR2, p_attrvalue1 IN VARCHAR2) RETURN VARCHAR2 AS v_return VARCHAR2 (5000); BEGIN IF p_attrname1 IS NULL OR p_attrvalue1 IS NULL THEN RETURN ''; END IF; 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; RETURN v_return; 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 DEFAULT NULL, p_attrvalue2 IN VARCHAR2 DEFAULT NULL, p_attrname3 IN VARCHAR2 DEFAULT NULL, p_attrvalue3 IN VARCHAR2 DEFAULT NULL, p_attrname4 IN VARCHAR2 DEFAULT NULL, p_attrvalue4 IN VARCHAR2 DEFAULT NULL) AS v_return VARCHAR2 (5000); BEGIN v_return := '<' || p_tag; v_return := v_return || attrval(p_attrname1, p_attrvalue1); v_return := v_return || attrval(p_attrname2, p_attrvalue2); v_return := v_return || attrval(p_attrname3, p_attrvalue3); v_return := v_return || attrval(p_attrname4, p_attrvalue4); 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 ('' || 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 & -- 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 || ' ' || CHR (10); addvarchartoclob (v_return); END; PROCEDURE createxmltagvalue (p_tag IN VARCHAR2, p_value IN CLOB) AS v_value CLOB; v_return CLOB; 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 || ' ' || CHR (10); addvarchartoclob (v_return); END; -- p_value is gecodeerd met bijvoorbeeld: '#donotsuppress#Rx=70980#Kx=44#Mx=MLD#' PROCEDURE create_attachments_node (p_value IN VARCHAR2) AS CURSOR c1(c_refkey NUMBER, c_kenmerk_key NUMBER, c_module VARCHAR2) IS SELECT fac_bijlagen_key , fac_bijlagen_filename , fac_bijlagen_file_size , fac_bijlagen_aanmaak FROM fac_bijlagen WHERE fac_bijlagen_verwijder IS NULL AND fac_bijlagen_module = c_module AND fac_bijlagen_refkey = c_refkey AND fac_bijlagen_kenmerk_key = COALESCE(c_kenmerk_key, fac_bijlagen_kenmerk_key); v_value VARCHAR2(50); v_refkey NUMBER DEFAULT -1; v_kenmerkkey NUMBER DEFAULT NULL; v_module VARCHAR2(4) DEFAULT NULL; BEGIN v_value := SUBSTR(p_value, 16); IF (SUBSTR(v_value,1,1) = 'R') THEN v_refkey := SUBSTR(v_value, 4, INSTR(v_value, '#')-4); END IF; v_value := SUBSTR(v_value, INSTR(v_value, '#')+1); IF (SUBSTR(v_value,1,1) = 'K') THEN v_kenmerkkey := SUBSTR(v_value, 4, INSTR(v_value, '#')-4); END IF; v_value := SUBSTR(v_value, INSTR(v_value, '#')+1); IF (SUBSTR(v_value,1,1) = 'M') THEN v_module := SUBSTR(v_value, 4, INSTR(v_value, '#')-4); END IF; createopentag ('attachments'); FOR rec1 IN c1(v_refkey, v_kenmerkkey, v_module) LOOP createopentagattributes ('attachment', 'key', rec1.fac_bijlagen_key, NULL, NULL, NULL, NULL, NULL, NULL); createxmltagvalue ('filename', rec1.fac_bijlagen_filename); mydatetochar ('filedate', rec1.fac_bijlagen_aanmaak); createxmltagvalue ('filesize', rec1.fac_bijlagen_file_size); createclosetag ('attachment'); END LOOP; createclosetag ('attachments'); END; PROCEDURE create_kenmerkblokmelding_node (p_key IN NUMBER, p_value IN VARCHAR2) AS v_ins_disc_key ins_tab_discipline.ins_discipline_key%TYPE; v_behandelaar_key prs_perslid.prs_perslid_key%TYPE; v_afgemeld NUMBER; BEGIN IF p_key IS NOT NULL THEN createopentag ('kenmerkblokmelding'); SELECT ins_discipline_key, prs_perslid_key, CASE WHEN mld_kenmerkblokmelding_afmelddatum IS NOT NULL THEN 1 ELSE 0 END afgemeld INTO v_ins_disc_key, v_behandelaar_key, v_afgemeld FROM mld_kenmerkblokmelding WHERE mld_kenmerkblokmelding_key = p_key; createxmltagvalue ('key', mynumbertochar (p_key)); createxmltagvalue ('default', char_to_html (p_value)); create_ins_discipline_node (v_ins_disc_key, 'behandelteam'); create_prs_perslid_node (v_behandelaar_key, 'behandelaar', TRUE); createxmltagvalue ('afgemeld', v_afgemeld); createclosetag ('kenmerkblokmelding'); END IF; END; -- * createxmltagvalueattributes12 -- * function to return a complex XML node including up to 12 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 createxmltagvalueattributes12 (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_attrname9 IN VARCHAR2, p_attrvalue9 IN VARCHAR2, p_attrname10 IN VARCHAR2, p_attrvalue10 IN VARCHAR2, p_attrname11 IN VARCHAR2, p_attrvalue11 IN VARCHAR2, p_attrname12 IN VARCHAR2, p_attrvalue12 IN VARCHAR2, p_kmdkey IN VARCHAR2, p_value IN VARCHAR2, p_mld_kbm_key IN NUMBER) AS v_value VARCHAR2 (5000); v_return VARCHAR2 (5000); v_xmlnode fac_kenmerkdomein.fac_kenmerkdomein_xmlnode%TYPE; BEGIN IF p_value IS NULL AND p_mld_kbm_key IS NULL THEN RETURN; END IF; v_return := '<' || p_tag; v_return := v_return || attrval(p_attrname1, p_attrvalue1); v_return := v_return || attrval(p_attrname2, p_attrvalue2); v_return := v_return || attrval(p_attrname3, p_attrvalue3); v_return := v_return || attrval(p_attrname4, p_attrvalue4); v_return := v_return || attrval(p_attrname5, p_attrvalue5); v_return := v_return || attrval(p_attrname6, p_attrvalue6); v_return := v_return || attrval(p_attrname7, p_attrvalue7); v_return := v_return || attrval(p_attrname8, p_attrvalue8); v_return := v_return || attrval(p_attrname9, p_attrvalue9); v_return := v_return || attrval(p_attrname10, p_attrvalue10); v_return := v_return || attrval(p_attrname11, p_attrvalue11); v_return := v_return || attrval(p_attrname12, p_attrvalue12); 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 || '>'; -- Verder alleen uitstapjes naar xmlnode-kenmerken of behandelbare blokken toegestaan vanaf de basis! IF (p_value IS NOT NULL AND v_xmlnode IS NOT NULL AND xmlnode_depth = 0) OR (p_mld_kbm_key IS NOT NULL) THEN addvarchartoclob (v_return); -- Tussenresultaat; nog geen waarde en sluithaakje IF p_value IS NOT NULL AND v_xmlnode IS NOT NULL AND xmlnode_depth = 0 THEN -- Plak nu xmlnode-kenmerk direct in het resultaat (als side effect) xmlnode_depth := xmlnode_depth + 1; -- Increment depth; even van het pad af! BEGIN 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; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error ( -20001, 'Could not find kenmerk_key ' || p_attrvalue4 || ' (' || p_attrvalue1 || ') ' || v_xmlnode || ' key: ' || p_value || CHR (13) || DBMS_UTILITY.FORMAT_ERROR_STACK); END; xmlnode_depth := xmlnode_depth - 1; -- Decrement depth; terug naar de basis! END IF; -- Behandelbare blok gegevens. IF p_mld_kbm_key IS NOT NULL THEN create_kenmerkblokmelding_node(p_mld_kbm_key, p_value); END IF; ELSE IF p_value IS NULL OR SUBSTR(p_value,1,15) = '#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 IF (SUBSTR(p_value,1,15) = '#donotsuppress#') THEN create_attachments_node(p_value); END IF; END IF; -- En het sluithaakje (na xmlnode-kenmerk of tussenresultaat hierboven) v_return := ' ' || CHR (10); addvarchartoclob (v_return); END; -- Compatible function for 9 attributes PROCEDURE createxmltagvalueattributes9 (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_attrname9 IN VARCHAR2, p_attrvalue9 IN VARCHAR2, p_kmdkey IN VARCHAR2, p_value IN VARCHAR2, p_mld_kbm_key IN NUMBER) AS BEGIN createxmltagvalueattributes12 (p_tag, p_attrname1, p_attrvalue1, p_attrname2, p_attrvalue2, p_attrname3, p_attrvalue3, p_attrname4, p_attrvalue4, p_attrname5, p_attrvalue5, p_attrname6, p_attrvalue6, p_attrname7, p_attrvalue7, p_attrname8, p_attrvalue8, p_attrname9, p_attrvalue9, NULL, NULL, NULL, NULL, NULL, NULL, p_kmdkey, p_value, p_mld_kbm_key); 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 createxmltagvalueattributes12 (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, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, p_kmdkey, p_value, NULL); 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 ()); createxmltagvalue ('fac_logo_file', fac.getsetting ('fac_logo_file')); 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, p_refkey IN NUMBER DEFAULT NULL, p_kenmerk_key IN NUMBER DEFAULT NULL, p_module IN VARCHAR2 DEFAULT NULL) RETURN VARCHAR IS sql_stmt VARCHAR2 (1000); kenmerk_m VARCHAR2 (50); sresult fac_bijlagen.fac_bijlagen_filename%TYPE; BEGIN IF p_kenmerk_waarde IS NULL THEN IF p_kenmerk_type IN ('L', 'l', 'b') THEN RETURN p_kenmerk_default; ELSIF p_kenmerk_type IN ('M') THEN kenmerk_m := '#donotsuppress#'; IF p_refkey IS NOT NULL THEN -- Voor de x in Rx kan eventueel nog de alg_level worden ingevuld. kenmerk_m := kenmerk_m || 'Rx=' || TO_CHAR(p_refkey) || '#'; IF p_kenmerk_key IS NOT NULL THEN kenmerk_m := kenmerk_m || 'Kx=' || p_kenmerk_key || '#'; END IF; IF p_module IS NOT NULL THEN kenmerk_m := kenmerk_m || 'Mx=' || p_module || '#'; END IF; END IF; RETURN kenmerk_m; 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 = '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 = 'N' 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 = 'N' 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_note_group_node (p_key IN NUMBER) AS CURSOR c1 IS SELECT fac_note_group_key, fac_note_group_xmlnode, fac_note_group_volgnr, fac_note_group_naam, fac_note_group_omschrijving FROM fac_note_group WHERE fac_note_group_key = p_key; BEGIN IF p_key IS NOT NULL THEN FOR rec1 IN c1 LOOP createopentag ('note_group'); createxmltagvalue ('key', rec1.fac_note_group_key); createxmltagvalue ('xmlnode', rec1.fac_note_group_xmlnode); createxmltagvalue ('naam', rec1.fac_note_group_naam); createxmltagvalue ('omschrijving', rec1.fac_note_group_omschrijving); createclosetag ('note_group'); END LOOP; END IF; END; PROCEDURE create_fac_tracking_node (pxmlnodename IN VARCHAR2, p_refkey IN NUMBER, p_tracking_key IN NUMBER DEFAULT NULL) AS l_tracking_datum fac_tracking.fac_tracking_datum%TYPE; l_tracking_oms fac_tracking.fac_tracking_oms%TYPE; l_perslid_key fac_tracking.prs_perslid_key%TYPE; l_subject_refkey fac_tracking.fac_tracking_subject_refkey%TYPE; l_srtnotificatie_code fac_srtnotificatie.fac_srtnotificatie_code%TYPE; CURSOR c1 IS SELECT t.fac_tracking_key, t.fac_tracking_datum, t.fac_tracking_oms, t.prs_perslid_key, t.fac_tracking_subject_refkey, 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 t.fac_tracking_datum, t.fac_tracking_key; BEGIN -- Two modes: specific tracking_key given (1 record) or node/refkey given (cursor) -- Could be defined by overloading create_fac_tracking_node function, chose not to IF p_tracking_key IS NOT NULL THEN -- intentionally left out here: createopentag ('tracking'); SELECT t.fac_tracking_datum, t.fac_tracking_oms, t.prs_perslid_key, t.fac_tracking_subject_refkey, st.fac_srtnotificatie_code INTO l_tracking_datum, l_tracking_oms, l_perslid_key, l_subject_refkey, l_srtnotificatie_code FROM fac_tracking t, fac_srtnotificatie st WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key AND t.fac_tracking_key = p_tracking_key ORDER BY fac_tracking_datum; createopentagattributes ('track', 'code', l_srtnotificatie_code, NULL, NULL, NULL, NULL, NULL, NULL); createxmltagvalue ('key', p_tracking_key); mydatetochar ('datum', l_tracking_datum); create_prs_perslid_node (l_perslid_key, 'user', TRUE); createxmltagvalue ('code', l_srtnotificatie_code); createxmltagvalue ('omschrijving', l_tracking_oms); createxmltagvalue ('subject', l_subject_refkey); createclosetag ('track'); -- intentionally left out here: createclosetag ('tracking'); ELSIF 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); createxmltagvalue ('key', rec1.fac_tracking_key); 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); createxmltagvalue ('subject', l_subject_refkey); 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_eenheid fac_activiteit.fac_activiteit_eenheid%TYPE; v_bits fac_activiteit.fac_activiteit_bits%TYPE; v_periode fac_activiteit.fac_activiteit_periode%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_eenheid, fac_activiteit_bits, fac_activiteit_periode, 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_eenheid, v_bits, v_periode, 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 ('eenheid', v_eenheid); createxmltagvalue ('bits', v_bits); createxmltagvalue ('periode', v_periode); 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; v_fin_limit1 prs_kostenplaatsgrp.prs_kostenplaatsgrp_fin_limit1%TYPE; v_fin_limit2 prs_kostenplaatsgrp.prs_kostenplaatsgrp_fin_limit2%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); createxmltagvalue ('kostenplaatslimiet1', v_fin_limit1); createxmltagvalue ('kostenplaatslimiet2', v_fin_limit2); 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; v_externnr prs_kostenplaats.prs_kostenplaats_externnr%TYPE; v_externsyncdate prs_kostenplaats.prs_kostenplaats_extsyncdate%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, k.prs_kostenplaats_externnr, k.prs_kostenplaats_extsyncdate INTO v_nr, v_omschrijving, v_prs_perslid_key, v_begin, v_eind, v_module, v_limiet, v_limietperiode, v_extern, v_kostenplaatsgrp_key, v_externnr, v_externsyncdate 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); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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; v_eind prs_kostensoort.prs_kostensoort_eind%TYPE; v_verwijder prs_kostensoort.prs_kostensoort_verwijder%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, k.prs_kostensoort_eind, k.prs_kostensoort_verwijder INTO v_omschrijving, v_omschrijving_alt, v_groep, v_groep_alt, v_opmerking, v_refcode, v_doorbelasten, v_btw, v_btwperc, v_eind, v_verwijder 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); mydatetochar ('einddatum', v_eind); mydatetochar ('verwijder', v_verwijder); -- 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, k.prs_kenmerk_code, 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, k.prs_kenmerk_rolcode rolcode, 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, v.prs_kenmerklink_waarde FROM prs_kenmerk k, (SELECT w.prs_kenmerk_key , w.prs_kenmerklink_waarde FROM prs_kenmerklink w WHERE w.prs_link_key = p_key AND w.prs_kenmerklink_niveau = p_niveau AND w.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, p_key, rec1.prs_kenmerk_key, 'PRS'); createxmltagvalueattributes9('kenmerk', 'kenmerkcode', rec1.prs_kenmerk_code, 'naam', rec1.prs_kenmerk_omschrijving, 'type', rec1.prs_kenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.prs_kenmerk_key, 'dimensie', rec1.dimensie, 'rolcode', rec1.rolcode, NULL, NULL, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); END LOOP; END; PROCEDURE create_prs_contactpersoon_node (p_key IN NUMBER, p_concise IN BOOLEAN) 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_cp_systeem prs_contactpersoon.prs_contactpersoon_systeem%TYPE; v_externnr prs_contactpersoon.prs_contactpersoon_externnr%TYPE; v_externsyncdate prs_contactpersoon.prs_contactpersoon_extsyncdate%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, prs_contactpersoon_externnr, prs_contactpersoon_extsyncdate, prs_contactpersoon_systeem 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, v_externnr, v_externsyncdate, v_cp_systeem 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); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('systeem', v_cp_systeem); FOR rec1 IN c1 LOOP create_alg_locatie_node (rec1.alg_locatie_key, NULL, NULL, NULL, NULL, FALSE, p_concise); 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 ('template', rec.prs_bedrijfadres_template); createxmltagvalue ('type', rec.prs_bedrijfadres_type); createxmltagvalue ('typeopdr', rec.mld_typeopdr_key); createxmltagvalue ('omschrijving', rec.prs_bedrijfadres_omschrijving); createxmltagvalue ('soapversion', rec.prs_bedrijfadres_soapversion); createxmltagvalue ('soapaction', rec.prs_bedrijfadres_soapaction); createxmltagvalue ('authmethod', rec.prs_bedrijfadres_authmethod); createxmltagvalue ('token_url', rec.prs_bedrijfadres_oa_token_url); createxmltagvalue ('scope', rec.prs_bedrijfadres_oa_scope); createxmltagvalue ('resource', rec.prs_bedrijfadres_oa_resource); createxmltagvalue ('district_key', rec.alg_district_key); createxmltagvalue ('locatie_key', rec.alg_locatie_key); createxmltagvalue ('discipline_key', rec.ins_discipline_key); create_prs_bedrijf_node (rec.prs_bedrijf_key2, 'bedrijf', TRUE); createxmltagvalue ('mailsender', rec.prs_bedrijfadres_sender); createxmltagvalue ('mailreply', rec.prs_bedrijfadres_replyaddress); createxmltagvalue ('flexfiles', rec.prs_bedrijfadres_flexfiles); createxmltagvalue ('fixedattachment', rec.prs_bedrijfadres_attachfile); createxmltagvalue ('encoding', rec.prs_bedrijfadres_encoding); createxmltagvalue ('charset', rec.prs_bedrijfadres_charset); createxmltagvalue ('plugin', rec.prs_bedrijfadres_plugin); createxmltagvalue ('plugindata', rec.prs_bedrijfadres_plugindata); -- bevat json, daar kan een XML vast niets mee. Toch maar opnemen 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; create_prs_perslid_node(rec.prs_bedrijfadres_lockuser_key, 'lockeduser', TRUE); 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_url prs_bedrijf.prs_bedrijf_url%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_mld_limiet prs_bedrijf.prs_bedrijf_mld_limiet%TYPE; v_relatietype_key prs_bedrijf.prs_relatietype_key%TYPE; v_x prs_bedrijf.prs_bedrijf_x%TYPE; v_y prs_bedrijf.prs_bedrijf_y%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_url, 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_bedrijf_mld_limiet, prs_relatietype_key, prs_bedrijf_x, prs_bedrijf_y 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_url, 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_mld_limiet, v_relatietype_key, v_x, v_y 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 ('url', v_url); 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); createxmltagvalue ('mldlimiet', v_mld_limiet); createxmltagvalue ('x', v_x); createxmltagvalue ('y', v_y); FOR rec1 IN c1 LOOP create_prs_contactpersoon_node (rec1.prs_contactpersoon_key, TRUE); 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; PROCEDURE create_prs_bedrijf_bdr_node (p_key IN NUMBER) AS v_prs_bedrijf_bedrijf_key prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_key%TYPE; v_prs_bedrijf_key1 prs_bedrijf_bedrijf.prs_bedrijf_key1%TYPE; v_prs_bedrijf_externid1 prs_bedrijf_bedrijf.prs_bedrijf_externid1%TYPE; v_prs_bedrijf_externsyncdate1 prs_bedrijf_bedrijf.prs_bedrijf_externsyncdate1%TYPE; v_prs_bedrijf_key2 prs_bedrijf_bedrijf.prs_bedrijf_key2%TYPE; v_prs_bedrijf_externid2 prs_bedrijf_bedrijf.prs_bedrijf_externid2%TYPE; v_prs_bedrijf_externsyncdate2 prs_bedrijf_bedrijf.prs_bedrijf_externsyncdate2%TYPE; v_prs_bedrijf_bedrijf_startdtm prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_startdatum%TYPE; v_prs_bedrijf_bedrijf_einddtm prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_einddatum%TYPE; v_prs_bedrijf_bedrijf_status prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_status%TYPE; v_prs_bedrijf_bedrijf_charged prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_charged%TYPE; v_prs_bedrijf_bdr_chargemode prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_chargemode%TYPE; v_prs_bedrijf_bedrijf_fee1 prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_fee1%TYPE; v_prs_bedrijf_bedrijf_fee2 prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_fee2%TYPE; v_prs_bedrijf_bedrijf_fee3 prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_fee3%TYPE; v_fin_btwtabelwaarde_key prs_bedrijf_bedrijf.fin_btwtabelwaarde_key%TYPE; v_prs_bedrijf_bedrijf_g_pct prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_g_pct%TYPE; v_prs_bedrijf_bedrijf_account1 prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_account1%TYPE; v_prs_bedrijf_bedrijf_account2 prs_bedrijf_bedrijf.prs_bedrijf_bedrijf_account2%TYPE; BEGIN IF p_key IS NOT NULL THEN createopentag ('bedrijf_bedrijf'); SELECT prs_bedrijf_bedrijf_key, prs_bedrijf_key1, prs_bedrijf_externid1, prs_bedrijf_externsyncdate1, prs_bedrijf_key2, prs_bedrijf_externid2, prs_bedrijf_externsyncdate2, prs_bedrijf_bedrijf_startdatum, prs_bedrijf_bedrijf_einddatum, prs_bedrijf_bedrijf_status, prs_bedrijf_bedrijf_charged, prs_bedrijf_bedrijf_chargemode, prs_bedrijf_bedrijf_fee1, prs_bedrijf_bedrijf_fee2, prs_bedrijf_bedrijf_fee3, fin_btwtabelwaarde_key, prs_bedrijf_bedrijf_g_pct, prs_bedrijf_bedrijf_account1, prs_bedrijf_bedrijf_account2 INTO v_prs_bedrijf_bedrijf_key, v_prs_bedrijf_key1, v_prs_bedrijf_externid1, v_prs_bedrijf_externsyncdate1, v_prs_bedrijf_key2, v_prs_bedrijf_externid2, v_prs_bedrijf_externsyncdate2, v_prs_bedrijf_bedrijf_startdtm, v_prs_bedrijf_bedrijf_einddtm, v_prs_bedrijf_bedrijf_status, v_prs_bedrijf_bedrijf_charged, v_prs_bedrijf_bdr_chargemode, v_prs_bedrijf_bedrijf_fee1, v_prs_bedrijf_bedrijf_fee2, v_prs_bedrijf_bedrijf_fee3, v_fin_btwtabelwaarde_key, v_prs_bedrijf_bedrijf_g_pct, v_prs_bedrijf_bedrijf_account1, v_prs_bedrijf_bedrijf_account2 FROM prs_bedrijf_bedrijf WHERE prs_bedrijf_bedrijf_key = p_key; createxmltagvalue ('key', v_prs_bedrijf_bedrijf_key); createxmltagvalue ('bedrijf_key1', v_prs_bedrijf_key1); createxmltagvalue ('externid1', v_prs_bedrijf_externid1); mydatetochar ('externsyncdate1', v_prs_bedrijf_externsyncdate1); createxmltagvalue ('bedrijf_key2', v_prs_bedrijf_key2); createxmltagvalue ('externid2', v_prs_bedrijf_externid2); mydatetochar ('externsyncdate2', v_prs_bedrijf_externsyncdate2); mydatetochar ('startdatum', v_prs_bedrijf_bedrijf_startdtm); mydatetochar ('einddatum', v_prs_bedrijf_bedrijf_einddtm); createxmltagvalue ('status', v_prs_bedrijf_bedrijf_status); createxmltagvalue ('charged', v_prs_bedrijf_bedrijf_charged); createxmltagvalue ('chargemode', v_prs_bedrijf_bdr_chargemode); createxmltagvalue ('fee1', v_prs_bedrijf_bedrijf_fee1); createxmltagvalue ('fee2', v_prs_bedrijf_bedrijf_fee2); createxmltagvalue ('fee3', v_prs_bedrijf_bedrijf_fee3); createxmltagvalue ('btwtabelwaarde_key', v_fin_btwtabelwaarde_key); createxmltagvalue ('g_pct', v_prs_bedrijf_bedrijf_g_pct); createxmltagvalue ('account1', v_prs_bedrijf_bedrijf_account1); createxmltagvalue ('account2', v_prs_bedrijf_bedrijf_account2); createclosetag ('bedrijf_bedrijf'); END IF; END; PROCEDURE create_fac_notificatie_node (p_key IN NUMBER) AS BEGIN IF p_key IS NOT NULL THEN createopentag ('notificatie'); FOR rec IN (SELECT fn.*, fsn.fac_srtnotificatie_code FROM fac_notificatie fn, fac_srtnotificatie fsn WHERE fn.fac_notificatie_key = p_key AND fn.fac_srtnotificatie_key = fsn.fac_srtnotificatie_key(+)) LOOP createxmltagvalue ('key', rec.fac_notificatie_key); createxmltagvalue ('code', rec.fac_srtnotificatie_code); createxmltagvalue ('naam', rec.fac_notificatie_naam); -- puur informatief voor logging/support, bijvoorbeeld opdrachtnummer createxmltagvalue ('status', rec.fac_notificatie_status); createxmltagvalue ('queue', rec.fac_notificatie_queue); mydatetochar ('datum', rec.fac_notificatie_datum); create_prs_perslid_node (rec.prs_perslid_key_receiver, 'receiver', TRUE); create_prs_perslid_node (rec.prs_perslid_key_sender, 'sender', TRUE); createxmltagvalue ('systeemadres', rec.fac_notificatie_systeemadres); -- deprecated create_prs_bedrijfadres_node(rec.prs_bedrijfadres_key); createxmltagvalue ('email', rec.fac_notificatie_receiver_email); createxmltagvalue ('emailsender', rec.fac_notificatie_sender_email); createxmltagvalue ('phone', rec.fac_notificatie_receiver_phone); createxmltagvalue ('subject', rec.fac_notificatie_oms); createxmltagvalue ('geturl', rec.fac_notificatie_geturl); createxmltagvalue ('getbody', rec.fac_notificatie_getbody); createxmltagvalue ('refkey', rec.fac_notificatie_refkey); createxmltagvalue ('extrakey', rec.fac_notificatie_extrakey); createxmltagvalue ('prioriteit', rec.fac_notificatie_prioriteit); createxmltagvalue ('language', rec.fac_notificatie_lang); createxmltagvalue ('attachments', rec.fac_notificatie_attachments); /* comma-separated filenames */ --fac_notificatie_notbefore --fac_notificatie_failcount --fac_notificatie_failmessage /* de laatste failmessage, rest zoek je maar in Putorders logging */ --fac_notificatie_faildatum // de laatste createxmltagvalue ('realuser', rec.fac_notificatie_realuser); -- testing/internal only END LOOP; createclosetag ('notificatie'); 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; v_externid prs_afdeling.prs_afdeling_externid%TYPE; v_externsyncdate prs_afdeling.prs_afdeling_externsyncdate%TYPE; v_perslid_key_v prs_afdeling.prs_perslid_key_verantw%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, d.prs_perslid_key_verantw, d.prs_afdeling_externid, d.prs_afdeling_externsyncdate 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, v_perslid_key_v, v_externid, v_externsyncdate 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 ('externid', v_externid); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('omschrijving', v_omschrijving); create_prs_kostenplaats_node (v_kostenplaats_key, FALSE); create_mld_adres_node (v_adres_key, 'afleveradres', TRUE); create_prs_perslid_node(v_perslid_key_v, 'verantwoordelijke', 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 -- 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; v_externid prs_perslid.prs_perslid_externid%TYPE; v_externsyncdate prs_perslid.prs_perslid_externsyncdate%TYPE; v_visibility prs_perslid.prs_perslid_visibility%TYPE; v_firstwpdone BOOLEAN; v_perslid_key_v prs_perslid.prs_perslid_key_verantw%TYPE; v_prs_kostenplaats_key prs_perslid.prs_kostenplaats_key%TYPE; v_timezone prs_perslid.prs_perslid_timezone%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, prs_perslid_key_verantw, prs_perslid_externid, prs_perslid_externsyncdate, prs_perslid_visibility, prs_kostenplaats_key, prs_perslid_timezone 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, v_perslid_key_v, v_externid, v_externsyncdate, v_visibility, v_prs_kostenplaats_key, v_timezone 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); createxmltagvalue ('externid', v_externid); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('visibility', v_visibility); createxmltagvalue ('timezone', v_timezone); 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)); create_prs_perslid_node(v_perslid_key_v, 'verantwoordelijke', TRUE); v_firstwpdone := FALSE; FOR rec1 IN c1 LOOP create_prs_werkplek_node (rec1.prs_werkplek_key, p_key, v_firstwpdone); -- Eentje volledig is soms nodig (WVA#25793) v_firstwpdone := TRUE; -- rest concise END LOOP; create_prs_afdeling_node (v_afdeling_key, 'afdeling'); create_prs_kostenplaats_node (v_prs_kostenplaats_key, TRUE); 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_externnr prs_werkplek.prs_werkplek_externnr%TYPE; v_externsyncdate prs_werkplek.prs_werkplek_externsyncdate%TYPE; v_dwgx prs_werkplek.prs_werkplek_dwgx%TYPE; v_dwgy prs_werkplek.prs_werkplek_dwgy%TYPE; v_dwgz prs_werkplek.prs_werkplek_dwgz%TYPE; v_pwpvolgnr prs_perslidwerkplek.prs_perslidwerkplek_volgnr%TYPE; v_pwpexternnr prs_perslidwerkplek.prs_perslidwerkplek_externnr%TYPE; v_pwpexternsyncdate prs_perslidwerkplek.prs_perslidwerkplek_extsyncd%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, wp.prs_werkplek_externnr, wp.prs_werkplek_externsyncdate, wp.prs_werkplek_dwgx, wp.prs_werkplek_dwgy, wp.prs_werkplek_dwgz, NULL, pwp.prs_perslidwerkplek_externnr, pwp.prs_perslidwerkplek_extsyncd INTO v_prs_werkplek_key, v_bezetting, v_volgnr, v_omschrijving, v_vastopp, v_opp, v_virtueel, v_alg_ruimte_key, v_externnr, v_externsyncdate, v_dwgx, v_dwgy, v_dwgz, v_pwpvolgnr, v_pwpexternnr, v_pwpexternsyncdate 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, wp.prs_werkplek_externnr, wp.prs_werkplek_externsyncdate, wp.prs_werkplek_dwgx, wp.prs_werkplek_dwgy, wp.prs_werkplek_dwgz, pwp.prs_perslidwerkplek_externnr, pwp.prs_perslidwerkplek_extsyncd; 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, wp.prs_werkplek_externnr, wp.prs_werkplek_externsyncdate, wp.prs_werkplek_dwgx, wp.prs_werkplek_dwgy, wp.prs_werkplek_dwgz, pwp.prs_perslidwerkplek_volgnr, pwp.prs_perslidwerkplek_externnr, pwp.prs_perslidwerkplek_extsyncd INTO v_prs_werkplek_key, v_bezetting, v_volgnr, v_omschrijving, v_vastopp, v_opp, v_virtueel, v_alg_ruimte_key, v_externnr, v_externsyncdate, v_dwgx, v_dwgy, v_dwgz, v_pwpvolgnr, v_pwpexternnr, v_pwpexternsyncdate 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 ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('dwgx', v_dwgx); createxmltagvalue ('dwgy', v_dwgy); createxmltagvalue ('dwgz', v_dwgz); createxmltagvalue ('myvolgnr', v_pwpvolgnr); createxmltagvalue ('pwpexternnr', v_pwpexternnr); mydatetochar ('pwpexternsyncdate', v_pwpexternsyncdate); 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; v_uitvoertijd_td alg_srtgebouw.alg_srtgebouw_t_uitvoertijd.tijdsduur%TYPE; v_uitvoertijd_e alg_srtgebouw.alg_srtgebouw_t_uitvoertijd.eenheid%TYPE; v_uitvoertijd_td1 alg_srtgebouw.alg_srtgebouw_t_uitvoertijd.tijdsduur%TYPE; v_uitvoertijd_e1 alg_srtgebouw.alg_srtgebouw_t_uitvoertijd.eenheid%TYPE; v_uitvoertijd_td2 alg_srtgebouw.alg_srtgebouw_t_uitvoertijd.tijdsduur%TYPE; v_uitvoertijd_e2 alg_srtgebouw.alg_srtgebouw_t_uitvoertijd.eenheid%TYPE; v_uitvoertijd_td4 alg_srtgebouw.alg_srtgebouw_t_uitvoertijd.tijdsduur%TYPE; v_uitvoertijd_e4 alg_srtgebouw.alg_srtgebouw_t_uitvoertijd.eenheid%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, sg.alg_srtgebouw_t_uitvoertijd.tijdsduur, sg.alg_srtgebouw_t_uitvoertijd.eenheid, sg.alg_srtgebouw_t_uitvoer_pr1.tijdsduur, sg.alg_srtgebouw_t_uitvoer_pr1.eenheid, sg.alg_srtgebouw_t_uitvoer_pr2.tijdsduur, sg.alg_srtgebouw_t_uitvoer_pr2.eenheid, sg.alg_srtgebouw_t_uitvoer_pr4.tijdsduur, sg.alg_srtgebouw_t_uitvoer_pr4.eenheid, sg.alg_srtgebouw_verwijder INTO v_omschrijving, v_passief, v_uitvoertijd_td, v_uitvoertijd_e, v_uitvoertijd_td1, v_uitvoertijd_e1, v_uitvoertijd_td2, v_uitvoertijd_e2, v_uitvoertijd_td4, v_uitvoertijd_e4, v_verwijder FROM alg_srtgebouw sg WHERE alg_srtgebouw_key = p_key; createopentag ('srtgebouw'); createxmltagvalue ('key', p_key); createxmltagvalue ('omschrijving', v_omschrijving); createxmltagvalue ('passief', v_passief); mydatetochar ('verwijder', v_verwijder); createxmltagvalueattributes ('uitvoertijd', 'eenheid', v_uitvoertijd_e, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_uitvoertijd_td)); createxmltagvalueattributes ('uitvoertijd_pr1', 'eenheid', v_uitvoertijd_e1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_uitvoertijd_td1)); createxmltagvalueattributes ('uitvoertijd_pr2', 'eenheid', v_uitvoertijd_e2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_uitvoertijd_td2)); createxmltagvalueattributes ('uitvoertijd_pr4', 'eenheid', v_uitvoertijd_e4, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_uitvoertijd_td4)); 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; v_uitvoertijd_td alg_srtterreinsector.alg_srtterreinsec_t_uitvtijd.tijdsduur%TYPE; v_uitvoertijd_e alg_srtterreinsector.alg_srtterreinsec_t_uitvtijd.eenheid%TYPE; v_uitvoertijd_td1 alg_srtterreinsector.alg_srtterreinsec_t_uitvtijd.tijdsduur%TYPE; v_uitvoertijd_e1 alg_srtterreinsector.alg_srtterreinsec_t_uitvtijd.eenheid%TYPE; v_uitvoertijd_td2 alg_srtterreinsector.alg_srtterreinsec_t_uitvtijd.tijdsduur%TYPE; v_uitvoertijd_e2 alg_srtterreinsector.alg_srtterreinsec_t_uitvtijd.eenheid%TYPE; v_uitvoertijd_td4 alg_srtterreinsector.alg_srtterreinsec_t_uitvtijd.tijdsduur%TYPE; v_uitvoertijd_e4 alg_srtterreinsector.alg_srtterreinsec_t_uitvtijd.eenheid%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, st.alg_srtterreinsector_code, st.alg_srtterreinsec_t_uitvtijd.tijdsduur, st.alg_srtterreinsec_t_uitvtijd.eenheid, st.alg_srtterreinsec_t_uitv_pr1.tijdsduur, st.alg_srtterreinsec_t_uitv_pr1.eenheid, st.alg_srtterreinsec_t_uitv_pr2.tijdsduur, st.alg_srtterreinsec_t_uitv_pr2.eenheid, st.alg_srtterreinsec_t_uitv_pr4.tijdsduur, st.alg_srtterreinsec_t_uitv_pr4.eenheid INTO v_omschrijving, v_prijs, v_verwijder, v_verhuurbaar, v_code, v_uitvoertijd_td, v_uitvoertijd_e, v_uitvoertijd_td1, v_uitvoertijd_e1, v_uitvoertijd_td2, v_uitvoertijd_e2, v_uitvoertijd_td4, v_uitvoertijd_e4 FROM alg_srtterreinsector st 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); createxmltagvalueattributes ('uitvoertijd', 'eenheid', v_uitvoertijd_e, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_uitvoertijd_td)); createxmltagvalueattributes ('uitvoertijd_pr1', 'eenheid', v_uitvoertijd_e1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_uitvoertijd_td1)); createxmltagvalueattributes ('uitvoertijd_pr2', 'eenheid', v_uitvoertijd_e2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_uitvoertijd_td2)); createxmltagvalueattributes ('uitvoertijd_pr4', 'eenheid', v_uitvoertijd_e4, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_uitvoertijd_td4)); 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; v_uitvoertijd_td1 alg_srtruimte.alg_srtruimte_t_uitvoertijd.tijdsduur%TYPE; v_uitvoertijd_e1 alg_srtruimte.alg_srtruimte_t_uitvoertijd.eenheid%TYPE; v_uitvoertijd_td2 alg_srtruimte.alg_srtruimte_t_uitvoertijd.tijdsduur%TYPE; v_uitvoertijd_e2 alg_srtruimte.alg_srtruimte_t_uitvoertijd.eenheid%TYPE; v_uitvoertijd_td4 alg_srtruimte.alg_srtruimte_t_uitvoertijd.tijdsduur%TYPE; v_uitvoertijd_e4 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, srt.alg_srtruimte_t_uitvoer_pr1.tijdsduur, srt.alg_srtruimte_t_uitvoer_pr1.eenheid, srt.alg_srtruimte_t_uitvoer_pr2.tijdsduur, srt.alg_srtruimte_t_uitvoer_pr2.eenheid, srt.alg_srtruimte_t_uitvoer_pr4.tijdsduur, srt.alg_srtruimte_t_uitvoer_pr4.eenheid INTO v_omschrijving, v_prijs, v_verwijder, v_verhuurbaar, v_code, v_bevat_werkplek, v_uitvoertijd_td, v_uitvoertijd_e, v_uitvoertijd_td1, v_uitvoertijd_e1, v_uitvoertijd_td2, v_uitvoertijd_e2, v_uitvoertijd_td4, v_uitvoertijd_e4 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)); createxmltagvalueattributes ('uitvoertijd_pr1', 'eenheid', v_uitvoertijd_e1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_uitvoertijd_td1)); createxmltagvalueattributes ('uitvoertijd_pr2', 'eenheid', v_uitvoertijd_e2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_uitvoertijd_td2)); createxmltagvalueattributes ('uitvoertijd_pr4', 'eenheid', v_uitvoertijd_e4, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_uitvoertijd_td4)); 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, k.alg_kenmerk_code, 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, k.alg_kenmerk_rolcode rolcode, 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, p_key, rec1.alg_kenmerk_key, 'ALG'); createxmltagvalueattributes9 ('kenmerk', 'kenmerkcode', rec1.alg_kenmerk_code, 'naam', rec1.alg_kenmerk_omschrijving, 'type', rec1.alg_kenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.alg_kenmerk_key, 'dimensie', rec1.dimensie, 'rolcode', rec1.rolcode, NULL, NULL, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); 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_verantw_key alg_terreinsector.prs_perslid_key_verantw%TYPE; v_verantw_key2 alg_terreinsector.prs_perslid_key_verantw2%TYPE; v_srtterreinsector_key alg_terreinsector.alg_srtterreinsector_key%TYPE; v_ordernr alg_terreinsector.alg_terreinsector_ordernr%TYPE; v_image alg_terreinsector.alg_terreinsector_image%TYPE; v_vervaldatum alg_terreinsector.alg_terreinsector_vervaldatum%TYPE; v_externnr alg_terreinsector.alg_terreinsector_externnr%TYPE; v_externsyncdate alg_terreinsector.alg_terreinsector_extsyncdate%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, prs_perslid_key_verantw, prs_perslid_key_verantw2, alg_srtterreinsector_key, alg_terreinsector_ordernr, alg_terreinsector_image, alg_terreinsector_vervaldatum, alg_terreinsector_externnr, alg_terreinsector_extsyncdate INTO v_omschrijving, v_code, v_naam, v_oppervlak, v_omtrek, v_prs_kostenplaats_key, v_verantw_key, v_verantw_key2, v_srtterreinsector_key, v_ordernr, v_image, v_vervaldatum, v_externnr, v_externsyncdate 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); createxmltagvalue ('image', v_image); mydatetochar ('vervaldatum', v_vervaldatum); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); create_alg_kenmerken (p_terreinsector_key, 'T'); create_alg_srtterreinsec_node (v_srtterreinsector_key); create_prs_kostenplaats_node (v_prs_kostenplaats_key, TRUE); create_prs_perslid_node (v_verantw_key, 'verantwoordelijke', TRUE); create_prs_perslid_node (v_verantw_key2, 'verantwoordelijke2', 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; v_externnr alg_ruimte.alg_ruimte_externnr%TYPE; v_externsyncdate alg_ruimte.alg_ruimte_externsyncdate%TYPE; v_virtueel alg_ruimte.alg_ruimte_virtueel%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, alg_ruimte_externnr, alg_ruimte_externsyncdate, alg_ruimte_virtueel 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, v_externnr, v_externsyncdate, v_virtueel 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); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('virtueel', v_virtueel); 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 cad_tekening.cad_tekening_filenaam%TYPE; v_oppervlak alg_verdieping.alg_verdieping_bruto_vloeropp%TYPE; v_in_bewerking alg_verdieping.alg_verdieping_in_bewerking%TYPE; v_code alg_verdieping.alg_verdieping_code%TYPE; v_dwgz alg_verdieping.alg_verdieping_dwgz%TYPE; v_externnr alg_verdieping.alg_verdieping_externnr%TYPE; v_externsyncdate alg_verdieping.alg_verdieping_externsyncdate%TYPE; v_virtueel alg_verdieping.alg_verdieping_virtueel%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, t.cad_tekening_filenaam, alg_verdieping_bruto_vloeropp, alg_verdieping_in_bewerking, alg_verdieping_code, alg_verdieping_dwgz, alg_verdieping_externnr, alg_verdieping_externsyncdate, alg_verdieping_virtueel INTO v_omschrijving, v_volgnr, v_tekening, v_oppervlak, v_in_bewerking, v_code, v_dwgz, v_externnr, v_externsyncdate, v_virtueel FROM alg_verdieping v, cad_tekening t WHERE v.alg_verdieping_key = p_verdieping_key AND t.alg_verdieping_key(+) = v.alg_verdieping_key; createopentag ('verdieping'); createxmltagvalue ('key', p_verdieping_key); createxmltagvalue ('omschrijving', v_omschrijving); createxmltagvalue ('volgnr', v_volgnr); createxmltagvalue ('tekening', v_tekening); createxmltagvalue ('oppervlak', v_oppervlak); createxmltagvalue ('in_bewerking', v_in_bewerking); createxmltagvalue ('code', v_code); createxmltagvalue ('dwgz', v_dwgz); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('virtueel', v_virtueel); 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_adres alg_gebouw.alg_gebouw_adres%TYPE; v_postcode alg_gebouw.alg_gebouw_postcode%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_image alg_gebouw.alg_gebouw_image%TYPE; v_vervaldatum alg_gebouw.alg_gebouw_vervaldatum%TYPE; v_mjb_score1 alg_gebouw.alg_gebouw_mjb_score1%TYPE; v_externnr alg_gebouw.alg_gebouw_externnr%TYPE; v_externsyncdate alg_gebouw.alg_gebouw_externsyncdate%TYPE; v_virtueel alg_gebouw.alg_gebouw_virtueel%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_adres, alg_gebouw_postcode, 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_image, alg_gebouw_vervaldatum, alg_gebouw_mjb_score1, alg_gebouw_externnr, alg_gebouw_externsyncdate, alg_gebouw_virtueel INTO v_naam, v_code, v_adres, v_postcode, 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_image, v_vervaldatum, v_mjb_score1, v_externnr, v_externsyncdate, v_virtueel 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 ('adres', v_adres); createxmltagvalue ('postcode', v_postcode); 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_perslid_node (v_verantw_key2, 'verantwoordelijke2', 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); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('virtueel', v_virtueel); 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 ('image', v_image); 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, p_concise 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 cad_tekening.cad_tekening_filenaam%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_image alg_locatie.alg_locatie_image%TYPE; v_mjb_score1 alg_locatie.alg_locatie_mjb_score1%TYPE; v_vervaldatum alg_locatie.alg_locatie_vervaldatum%TYPE; v_externnr alg_locatie.alg_locatie_externnr%TYPE; v_externsyncdate alg_locatie.alg_locatie_externsyncdate%TYPE; v_volgnr alg_locatie.alg_locatie_volgnr%TYPE; v_timezone alg_locatie.alg_locatie_timezone%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, cad_tekening_filenaam, alg_locatie_verantw, alg_locatie_verantw_tel, alg_locatie_x, alg_locatie_y, alg_locatie_image, alg_locatie_mjb_score1, alg_locatie_vervaldatum, alg_locatie_externnr, alg_locatie_externsyncdate, alg_locatie_volgnr, alg_locatie_timezone 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_image, v_mjb_score1, v_vervaldatum, v_externnr, v_externsyncdate, v_volgnr, v_timezone FROM alg_locatie l, cad_tekening t WHERE l.alg_locatie_key = p_locatie_key AND t.alg_verdieping_key(+) = l.alg_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); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('volgnr', v_volgnr); createxmltagvalue ('timezone', v_timezone); IF NOT p_concise THEN create_alg_kenmerken (p_locatie_key, 'L'); END IF; 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 ('image', v_image); 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; v_externnr alg_district.alg_district_externnr%TYPE; v_externsyncdate alg_district.alg_district_externsyncdate%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 , alg_district_externnr , alg_district_externsyncdate INTO v_omschrijving , v_externnr , v_externsyncdate FROM alg_district WHERE alg_district_key = p_district_key; createopentag ('district'); createxmltagvalue ('key', p_district_key); createxmltagvalue ('omschrijving', v_omschrijving); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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, FALSE); 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, TRUE); 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; v_externnr alg_regio.alg_regio_externnr%TYPE; v_externsyncdate alg_regio.alg_regio_externsyncdate%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 , alg_regio_externnr , alg_regio_externsyncdate INTO v_omschrijving , v_externnr , v_externsyncdate FROM alg_regio WHERE alg_regio_key = p_regio_key; createopentag ('regio'); createxmltagvalue ('key', p_regio_key); createxmltagvalue ('omschrijving', v_omschrijving); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); create_alg_kenmerken (p_regio_key, 'E'); 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 zaken -- * PROCEDURE create_ins_deel_note_node (p_key IN NUMBER) AS CURSOR c1 IS SELECT ins_deel_note_key, ins_deel_note_aanmaak, prs_perslid_key, ins_deel_note_omschrijving FROM ins_deel_note WHERE ins_deel_key = p_key ORDER BY ins_deel_note_key; BEGIN IF p_key IS NOT NULL THEN createopentag ('notes'); FOR rec1 IN c1 LOOP createopentag ('note'); createxmltagvalue ('key', rec1.ins_deel_note_key); mydatetochar ('aanmaak', rec1.ins_deel_note_aanmaak); createxmltagvalue ('omschrijving', rec1.ins_deel_note_omschrijving); create_attachments_node ('#donotsuppress#Rx=' || TO_CHAR(rec1.ins_deel_note_key) || '#Kx=-1#Mx=INSN#'); -- notities hebben kenmerk_key -1 create_prs_perslid_node (rec1.prs_perslid_key, 'noteur', TRUE); createclosetag ('note'); END LOOP; createclosetag ('notes'); END IF; END; PROCEDURE create_ins_kenmerken (p_key IN NUMBER) AS CURSOR c1 IS SELECT k.ins_kenmerk_key, k.ins_kenmerk_code, s.ins_srtkenmerk_code, COALESCE ( lcl.x ('ins_kenmerk_omschrijving', k.ins_kenmerk_key, ins_kenmerk_omschrijving), lcl.x ('ins_srtkenmerk_omschrijving', s.ins_srtkenmerk_key, ins_srtkenmerk_omschrijving)) ins_kenmerk_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, k.ins_kenmerk_rolcode rolcode, 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, p_key, rec1.ins_kenmerk_key, 'INS'); createxmltagvalueattributes9('kenmerk', 'kenmerkcode', rec1.ins_kenmerk_code, 'srtkenmerkcode', rec1.ins_srtkenmerk_code, 'naam', rec1.ins_kenmerk_omschrijving, 'type', rec1.ins_srtkenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.ins_kenmerk_key, 'aanmaak', TO_CHAR (v_kenmerk_aanmaak, 'YYYYMMDD HH24:MI'), 'rolcode', rec1.rolcode, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); END LOOP; 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; v_ins_scenario_key ins_srtcontrole.ins_scenario_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, ins_scenario_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, v_ins_scenario_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 overruled IF p_deel_key IS NOT NULL THEN BEGIN SELECT ins_srtcontroledl_xcp_key, COALESCE(ins_srtcontroledl_xcp_periode, v_srtcontrole_periode), COALESCE(ins_srtcontroledl_xcp_eenheid, v_srtcontrole_eenheid), COALESCE(ins_srtcontroledl_xcp_bits, v_srtcontrole_bits), COALESCE(ins_srtcontroledl_xcp_groep, v_srtcontrole_groep), COALESCE(ins_srtcontroledl_xcp_eind, v_srtcontrole_eind), COALESCE(ins_srtcontroledl_xcp_kosten, v_srtcontrole_kosten), COALESCE(ins_srtcontroledl_xcp_kosten2, v_srtcontrole_kosten2), COALESCE(ins_srtcontroledl_xcp_kosten3, v_srtcontrole_kosten3), COALESCE(ins_srtcontroledl_xcp_uren, v_srtcontrole_uren), COALESCE(ins_srtcontroledl_xcp_materia, v_srtcontrole_materiaal), COALESCE(prs_kostenplaats_key, v_kostenplaats_key) 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, v_kostenplaats_key FROM ins_srtcontroledl_xcp WHERE ins_scenario_key = v_ins_scenario_key AND 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, k.ins_kenmerk_code, s.ins_srtkenmerk_code, COALESCE ( lcl.x ('ins_kenmerk_omschrijving', k.ins_kenmerk_key, ins_kenmerk_omschrijving), lcl.x ('ins_srtkenmerk_omschrijving', s.ins_srtkenmerk_key, ins_srtkenmerk_omschrijving)) ins_kenmerk_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, k.ins_kenmerk_rolcode rolcode, 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, p_key, rec1.ins_kenmerk_key, 'INS'); createxmltagvalueattributes9('kenmerk', 'kenmerkcode', rec1.ins_kenmerk_code, 'srtkenmerkcode', rec1.ins_srtkenmerk_code, 'naam', rec1.ins_kenmerk_omschrijving, 'type', rec1.ins_srtkenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.ins_kenmerk_key, 'aanmaak', TO_CHAR (v_kenmerk_aanmaak, 'YYYYMMDD HH24:MI'), 'rolcode', rec1.rolcode, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); END LOOP; END; PROCEDURE create_ins_deelsrtcontr_node (p_key IN NUMBER, p_concise IN BOOLEAN) 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 IF p_concise THEN createconciseopentag ('controle'); ELSE createopentag ('controle'); END IF; 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); IF NOT p_concise THEN create_ins_deel_node (v_deel_key, null, TRUE); END IF; 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; -- * create_INS_DEEL_node PROCEDURE create_ins_deel_node (p_key IN NUMBER, p_deelsrtcontrole_key IN NUMBER, p_concise IN BOOLEAN, p_extra_key IN NUMBER DEFAULT NULL) 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; v_externnr ins_deel.ins_deel_externnr%TYPE; v_externsyncdate ins_deel.ins_deel_externsyncdate%TYPE; v_flag ins_deel.ins_deel_flag%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, ins_deel_externnr, ins_deel_externsyncdate, ins_deel_flag 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, v_externnr, v_externsyncdate, v_flag FROM ins_deel id WHERE ins_deel_key = p_key; createxmltagvalue ('key', p_key); createxmltagvalue ('extra_key', p_extra_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); createxmltagvalue ('opmerking', v_opmerking); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('flag', v_flag); IF p_deelsrtcontrole_key IS NOT NULL THEN create_ins_deelsrtcontr_node (p_deelsrtcontrole_key, TRUE); END IF; 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, null, FALSE); END LOOP; create_ins_deel_note_node (p_key); create_fac_tracking_node ('deel', p_key); -- TER OVERWEGING: loop voor Create_Ins_Deelsrtcontr_Node() END IF; createclosetag ('deel'); 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_parent_key, mld_melding_note_omschrijving, mld_melding_note_flag, mld_melding_note_wijzigdatum, fac_note_group_key, fac_tracking_key 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 ('parent_key', rec1.mld_melding_note_parent_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_attachments_node ('#donotsuppress#Rx=' || TO_CHAR(rec1.mld_melding_note_key) || '#Kx=-1#Mx=MLDN#'); -- notities hebben kenmerk_key -1 create_prs_perslid_node (rec1.prs_perslid_key, 'noteur', TRUE); create_fac_note_group_node(rec1.fac_note_group_key); create_fac_tracking_node (NULL, NULL, rec1.fac_tracking_key); 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, COALESCE ( lcl.x ('mld_kenmerk_omschrijving', k.mld_kenmerk_key, mld_kenmerk_omschrijving), lcl.x ('mld_srtkenmerk_omschrijving', s.mld_srtkenmerk_key, mld_srtkenmerk_omschrijving)) mld_kenmerk_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, k.mld_kenmerk_wissen, NVL (k.mld_kenmerk_volgnummer, 0) volgnummer, k.mld_kenmerk_rolcode rolcode, 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, kbm.mld_kenmerkblokmelding_key FROM mld_kenmerk k, mld_srtkenmerk s, mld_melding m, mld_stdmelding stdm, mld_discipline d, mld_kenmerkblokmelding kbm 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 AND m.mld_melding_key = kbm.mld_melding_key(+) AND k.mld_kenmerk_key = kbm.mld_kenmerk_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, p_key, rec1.mld_kenmerk_key, 'MLD'); createxmltagvalueattributes12('kenmerk', 'kenmerkcode', rec1.mld_kenmerk_code, 'srtkenmerkcode', rec1.mld_srtkenmerk_code, 'naam', rec1.mld_kenmerk_omschrijving, 'type', rec1.mld_srtkenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.mld_kenmerk_key, 'dimensie', rec1.dimensie, 'systeem', rec1.mld_srtkenmerk_systeem, 'wissen', rec1.mld_kenmerk_wissen, 'rolcode', rec1.rolcode, NULL, NULL, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, rec1.mld_kenmerkblokmelding_key ); 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_parent_key, mld_opdr_note_flag, mld_opdr_note_omschrijving, mld_opdr_note_wijzigdatum, fac_note_group_key, fac_tracking_key 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); createxmltagvalue ('parent_key', rec1.mld_opdr_note_parent_key); mydatetochar ('wijzigdatum', rec1.mld_opdr_note_wijzigdatum); createxmltagvalue ('flag', BITAND(rec1.mld_opdr_note_flag, 127)); createxmltagvalue ('omschrijving', rec1.mld_opdr_note_omschrijving); create_attachments_node ('#donotsuppress#Rx=' || TO_CHAR(rec1.mld_opdr_note_key) || '#Kx=-1#Mx=ORDN#'); -- notities hebben kenmerk_key -1 create_prs_perslid_node (rec1.prs_perslid_key, 'noteur', TRUE); create_fac_note_group_node(rec1.fac_note_group_key); create_fac_tracking_node (NULL, NULL, rec1.fac_tracking_key); 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, COALESCE ( lcl.x ('mld_kenmerk_omschrijving', k.mld_kenmerk_key, mld_kenmerk_omschrijving), lcl.x ('mld_srtkenmerk_omschrijving', s.mld_srtkenmerk_key, mld_srtkenmerk_omschrijving)) mld_kenmerk_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, k.mld_kenmerk_rolcode rolcode, 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 OR k.mld_typeopdr_key IS NULL) AND k.mld_kenmerk_niveau IN ('P', 'O') 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, p_key, rec1.mld_kenmerk_key, 'MLD'); createxmltagvalueattributes9('kenmerk', 'kenmerkcode', rec1.mld_kenmerk_code, 'srtkenmerkcode', rec1.mld_srtkenmerk_code, 'naam', rec1.mld_kenmerk_omschrijving, 'type', rec1.mld_srtkenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.mld_kenmerk_key, 'dimensie', rec1.dimensie, 'systeem', rec1.mld_srtkenmerk_systeem, 'rolcode', rec1.rolcode, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); 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; v_bez mld_typeopdr.mld_typeopdr_bez%TYPE; v_image mld_typeopdr.mld_typeopdr_image%TYPE; v_code mld_typeopdr.mld_typeopdr_code%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, mld_typeopdr_bez, mld_typeopdr_image, mld_typeopdr_code 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, v_bez, v_image, v_code 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); createxmltagvalue ('bez', v_bez); createxmltagvalue ('image', v_image); createxmltagvalue ('code', v_code); 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; v_bedrijf_key res_disc_params.prs_bedrijf_key%TYPE; BEGIN IF p_discipline_key IS NOT NULL THEN BEGIN SELECT res_disc_params_key, res_disc_params_preposttime, res_disc_params_notify, prs_bedrijf_key INTO v_key, v_preposttime, v_notify, v_bedrijf_key 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); --create_prs_bedrijf_node (v_bedrijf_key, 'bedrijf', TRUE); -- in de reservering bon bij *elk* artikel gaat me te ver createxmltagvalue ('bedrijf_key', v_bedrijf_key); 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_opmerking cnt_disc_params.cnt_disc_params_opmerking%TYPE; v_verkoopcontr cnt_disc_params.cnt_disc_params_verkoopcontr%TYPE; v_factuurschema cnt_disc_params.cnt_disc_params_factuurschema%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_factuurgrens cnt_disc_params.cnt_disc_params_factuurgrens%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_opmerking, cnt_disc_params_verkoopcontr, cnt_disc_params_factuurschema, cnt_disc_params_factuurmarge, cnt_disc_params_factuurappr, cnt_disc_params_factuurpct, cnt_disc_params_factuurgrens, cnt_disc_params_fin INTO v_key, v_srtcontract_type, v_opmerking, v_verkoopcontr, v_factuurschema, v_factuurmarge, v_factuurappr, v_factuurpct, v_factuurgrens, 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 ('opmerking', v_opmerking); createxmltagvalue ('verkoopcontract', v_verkoopcontr); createxmltagvalue ('factuurschema', v_factuurschema); createxmltagvalue ('factuurmarge', v_factuurmarge); createxmltagvalue ('factuurappr', v_factuurappr); createxmltagvalue ('factuurpct', v_factuurpct); createxmltagvalue ('factuurgrens', v_factuurgrens); 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; v_image ins_srtdiscipline.ins_srtdiscipline_image%TYPE; v_externnr ins_srtdiscipline.ins_srtdiscipline_externnr%TYPE; v_externsyncdate ins_srtdiscipline.ins_srtdiscipline_extsyncdate%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, ins_srtdiscipline_image, ins_srtdiscipline_externnr, ins_srtdiscipline_extsyncdate 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, v_image, v_externnr, v_externsyncdate 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); createxmltagvalue ('image', v_image); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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; v_image ins_tab_discipline.ins_discipline_image%TYPE; v_externnr ins_tab_discipline.ins_discipline_externnr%TYPE; v_externsyncdate ins_tab_discipline.ins_discipline_externsyncdate%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, ins_discipline_image, ins_discipline_externnr, ins_discipline_externsyncdate INTO v_module, v_omschrijving, v_min_level, v_prs_kostensoort_key, v_ins_srtdiscipline_key, v_email, v_code, v_image, v_externnr, v_externsyncdate 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); createxmltagvalue ('image', v_image); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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_disc_params_node PROCEDURE create_mld_disc_params_node (p_key IN NUMBER) AS v_reminderdays mld_disc_params.mld_disc_params_noti_dagen%TYPE; BEGIN IF p_key IS NOT NULL THEN SELECT mld_disc_params_noti_dagen INTO v_reminderdays FROM mld_disc_params WHERE mld_ins_discipline_key = p_key; createopentag ('mld_disc_params'); createxmltagvalue ('reminderdays', v_reminderdays); createclosetag ('mld_disc_params'); 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_accepttijd1_td mld_stdmelding.mld_stdmelding_t_accepttijd.tijdsduur%TYPE; v_accepttijd1_e mld_stdmelding.mld_stdmelding_t_accepttijd.eenheid%TYPE; v_accepttijd2_td mld_stdmelding.mld_stdmelding_t_accepttijd.tijdsduur%TYPE; v_accepttijd2_e mld_stdmelding.mld_stdmelding_t_accepttijd.eenheid%TYPE; v_accepttijd4_td mld_stdmelding.mld_stdmelding_t_accepttijd.tijdsduur%TYPE; v_accepttijd4_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_priomatrix mld_stdmelding.mld_stdmelding_priomatrix%TYPE; v_notfrontend mld_stdmelding.mld_stdmelding_notfrontend%TYPE; v_notes mld_stdmelding.mld_stdmelding_notes%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; v_thirdparty mld_stdmelding.mld_stdmelding_thirdparty%TYPE; v_externnr mld_stdmelding.mld_stdmelding_externnr%TYPE; v_externsyncdate mld_stdmelding.mld_stdmelding_externsyncdate%TYPE; v_malus mld_stdmelding.mld_stdmelding_malus%TYPE; v_malusbasis mld_stdmelding.mld_stdmelding_malusbasis%TYPE; v_malusmax mld_stdmelding.mld_stdmelding_malusmax%TYPE; v_autoorder mld_stdmelding.mld_stdmelding_autoorder%TYPE; v_cad_thema_key mld_stdmelding.cad_thema_key%TYPE; v_color mld_stdmelding.mld_stdmelding_color%TYPE; v_prs_dienst_key mld_stdmelding.prs_dienst_key%TYPE; v_regime mld_stdmelding.mld_stdmelding_regime%TYPE; v_typeopdr_key mld_stdmelding.mld_typeopdr_key%TYPE; v_conceptstatus mld_stdmelding.mld_stdmelding_conceptstatus%TYPE; v_objects_allowed mld_stdmelding.mld_stdmelding_objects_allowed%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_accept_pr1.tijdsduur, stdm.mld_stdmelding_t_accept_pr1.eenheid, stdm.mld_stdmelding_t_accept_pr2.tijdsduur, stdm.mld_stdmelding_t_accept_pr2.eenheid, stdm.mld_stdmelding_t_accept_pr4.tijdsduur, stdm.mld_stdmelding_t_accept_pr4.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_priomatrix, mld_stdmelding_notfrontend, mld_stdmelding_notes, 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, mld_stdmelding_thirdparty, mld_stdmelding_externnr, mld_stdmelding_externsyncdate, mld_stdmelding_malus, mld_stdmelding_malusbasis, mld_stdmelding_malusmax, mld_stdmelding_autoorder, cad_thema_key, mld_stdmelding_color, prs_dienst_key, mld_stdmelding_regime, mld_stdmelding_conceptstatus, mld_typeopdr_key, mld_stdmelding_objects_allowed INTO v_omschrijving, v_accepttijd_td, v_accepttijd_e, v_accepttijd1_td, v_accepttijd1_e, v_accepttijd2_td, v_accepttijd2_e, v_accepttijd4_td, v_accepttijd4_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_priomatrix, v_notfrontend, v_notes, v_prs_kostensoort_key, v_verwijder, v_groep, v_groepoms, v_discipline_key, v_slabewaken, v_image, v_code, v_thirdparty, v_externnr, v_externsyncdate, v_malus, v_malusbasis, v_malusmax, v_autoorder, v_cad_thema_key, v_color, v_prs_dienst_key, v_regime, v_conceptstatus, v_typeopdr_key, v_objects_allowed 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); create_mld_disc_params_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)); createxmltagvalueattributes ('accepttijd_pr1', 'eenheid', v_accepttijd1_e, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_accepttijd1_td)); createxmltagvalueattributes ('accepttijd_pr2', 'eenheid', v_accepttijd2_e, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_accepttijd2_td)); createxmltagvalueattributes ('accepttijd_pr4', 'eenheid', v_accepttijd4_e, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mynumbertochar (v_accepttijd4_td)); 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 ('priomatrix', v_priomatrix); createxmltagvalue ('groep', v_groep); createxmltagvalue ('groepomschrijving', v_groepoms); createxmltagvalue ('notfrontend', v_notfrontend); createxmltagvalue ('notes_deelnemers', v_notes); createxmltagvalue ('slabewaken', v_slabewaken); createxmltagvalue ('regime', v_regime); createxmltagvalue ('autoorder', v_autoorder); create_mld_typeopdr_node (v_typeopdr_key); createxmltagvalue ('image', v_image); createxmltagvalue ('color', v_color); createxmltagvalue ('code', v_code); createxmltagvalue ('cad_thema', v_cad_thema_key); createxmltagvalue ('thirdparty', v_thirdparty); createxmltagvalue ('externnr', v_externnr); create_prs_dienst_node(v_prs_dienst_key); mydatetochar ('externsyncdate', v_externsyncdate); create_prs_kostensoort_node (v_prs_kostensoort_key); createxmltagvalue ('malus', v_malus); createxmltagvalue ('malusbasis', v_malusbasis); --die quotes waren fout createxmltagvalue ('malusmax', v_malusmax); --die quotes waren fout createxmltagvalue ('conceptstatus', v_conceptstatus); createxmltagvalue ('objectsallowed', v_objects_allowed); createxmltagvalue ('verwijder', v_verwijder); createclosetag ('stdmelding'); END IF; END; -- * create_MLD_MELDBRON_node PROCEDURE create_mld_meldbron_node (p_key IN NUMBER) AS v_meldbron_oms mld_meldbron.mld_meldbron_omschrijving%TYPE; v_meldbron_default mld_meldbron.mld_meldbron_default%TYPE; v_meldbron_kiesbaar mld_meldbron.mld_meldbron_kiesbaar%TYPE; BEGIN IF p_key IS NOT NULL THEN createopentag ('meldbron'); SELECT mb.mld_meldbron_omschrijving, COALESCE(mb.mld_meldbron_default, 0), mb.mld_meldbron_kiesbaar INTO v_meldbron_oms, v_meldbron_default, v_meldbron_kiesbaar FROM mld_meldbron mb WHERE mb.mld_meldbron_key = p_key; createxmltagvalue ('omschrijving', v_meldbron_oms); createxmltagvalue ('default', mynumbertochar (v_meldbron_default)); createxmltagvalue ('kiesbaar', mynumbertochar (v_meldbron_kiesbaar)); createclosetag ('meldbron'); 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, p_concise IN BOOLEAN, p_meldingtype VARCHAR DEFAULT NULL ) 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_urgentie mld_melding.mld_melding_urgentie%TYPE; v_impact mld_melding.mld_melding_impact%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_actiedatum mld_melding.mld_melding_actiedatum%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_externsyncdate mld_melding.mld_melding_externsyncdate%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; v_naam_ext mld_melding.mld_melding_naam_ext%TYPE; v_email_ext mld_melding.mld_melding_email_ext%TYPE; v_tel_ext mld_melding.mld_melding_tel_ext%TYPE; v_dwgx mld_melding.mld_melding_dwgx%TYPE; v_dwgy mld_melding.mld_melding_dwgy%TYPE; v_dwgz mld_melding.mld_melding_dwgz%TYPE; v_x mld_melding.mld_melding_x%TYPE; v_y mld_melding.mld_melding_y%TYPE; v_z mld_melding.mld_melding_z%TYPE; v_tag_naam mld_melding_tag.mld_melding_tag_naam%TYPE; v_tag_omschrijving mld_melding_tag.mld_melding_tag_oms%TYPE; v_tag_datum_van mld_melding_tag.mld_melding_tag_datum_van%TYPE; v_tag_datum_acc mld_melding_tag.mld_melding_tag_datum_acc%TYPE; v_tag_datum_tot mld_melding_tag.mld_melding_tag_datum_tot%TYPE; v_conceptstatus mld_melding.mld_melding_conceptstatus%TYPE; l_isrootmelding NUMBER(1); CURSOR c1 IS SELECT ins_deel_key, ins_deelsrtcontrole_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; CURSOR c5 IS SELECT res_reservering_key FROM res_reservering WHERE mld_melding_key = p_key; BEGIN IF p_key IS NOT NULL THEN createopentagattributes ('melding', 'meldingtype', p_meldingtype); 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), m.prs_kostenplaats_key, NVL (mld_melding_status, ''), NVL (s.mld_statuses_omschrijving, ''), mld_melding_conceptstatus, NVL (mld_melding_spoed, 0), mld_melding_urgentie, mld_melding_impact, mld_meldbron_key, mld_oorzaak_key, mld_alg_onroerendgoed_keys, mld_alg_locatie_key, m.mld_stdmelding_key, stdm.mld_ins_discipline_key, m.prs_perslid_key, m.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, mld_melding_actiedatum, 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_externsyncdate, mld_melding_kto_verstuurd, mld_melding_flag, res_rsv_ruimte_key, mld_melding_kto_type, mld_melding_kto_key, mld_melding_naam_ext, mld_melding_email_ext, mld_melding_tel_ext, mld_melding_dwgx, mld_melding_dwgy, mld_melding_dwgz, mld_melding_x, mld_melding_y, mld_melding_z, mld_melding_tag_naam, mld_melding_tag_oms, mld_melding_tag_datum_van, mld_melding_tag_datum_acc, mld_melding_tag_datum_tot 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_conceptstatus, v_spoed, v_urgentie, v_impact, 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_actiedatum, 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_externsyncdate, v_kto_verstuurd, v_flag, v_rsv_ruimte_key, v_kto_type, v_kto_key, v_naam_ext, v_email_ext, v_tel_ext, v_dwgx, v_dwgy, v_dwgz, v_x, v_y, v_z, v_tag_naam, v_tag_omschrijving, v_tag_datum_van, v_tag_datum_acc, v_tag_datum_tot FROM mld_melding m, mld_statuses s, mld_stdmelding stdm, mld_melding_tag mmt WHERE m.mld_melding_status = s.mld_statuses_key AND m.mld_stdmelding_key = stdm.mld_stdmelding_key AND m.mld_melding_tag_key = mmt.mld_melding_tag_key(+) AND mld_melding_key = p_key; createxmltagvalue ('key', p_key); createxmltagvalue ('extra_key', p_extra_key); createxmltagvalue ('meldbron_nr', v_meldbron_nr); create_mld_meldbron_node (v_meldbron_key); 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', 2); -- was fac.getsetting('mld_note_mode') deprecated but used 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 ('conceptstatus', v_conceptstatus); createxmltagvalue ('spoed', v_spoed); createxmltagvalue ('impact', v_impact); createxmltagvalue ('urgentie', v_urgentie); 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); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('flag', v_flag); mydatetochar ('datum_gepland', v_datum_gepland); -- deprecated mydatetochar ('einddatum', v_datum_gepland); -- voorkeur mydatetochar ('actiedatum', v_actiedatum); createxmltagvalue ('tag_naam', v_tag_naam); createxmltagvalue ('tag_omschrijving', v_tag_omschrijving); mydatetochar ('tag_begindatum', v_tag_datum_van); mydatetochar ('tag_accdatum', v_tag_datum_acc); mydatetochar ('tag_einddatum', v_tag_datum_tot); 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; createxmltagvalue ('dwgx', v_dwgx); createxmltagvalue ('dwgy', v_dwgy); createxmltagvalue ('dwgz', v_dwgz); createxmltagvalue ('x', v_x); createxmltagvalue ('y', v_y); createxmltagvalue ('z', v_z); FOR rec1 IN c1 LOOP create_ins_deel_node (rec1.ins_deel_key, rec1.ins_deelsrtcontrole_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 NOT p_concise THEN 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 rec5 IN c5 LOOP create_res_reservering_node (rec5.res_reservering_key, NULL); 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, FALSE, 'groepering'); 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, FALSE, 'workflowstep'); -- 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, FALSE, 'relatedparent'); --Zou zomaar NULL kunnen zijn, geeft niks. create_mld_melding_node (v_mldgroupkey, p_extra_key, p_withchildren, p_withrelated + 1, FALSE, 'related'); --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, FALSE, 'referentie'); 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; END IF; createxmltagvalue ('naam_ext', v_naam_ext); createxmltagvalue ('email_ext', v_email_ext); createxmltagvalue ('tel_ext', v_tel_ext); createclosetag ('melding'); END IF; END; -- * create_MLD_OPDR_MATER_node 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; v_externnr mld_opdr_materiaal.mld_opdr_materiaal_externnr%TYPE; v_externsyncdate mld_opdr_materiaal.mld_opdr_materiaal_extsyncdate%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, mld_opdr_materiaal_externnr, mld_opdr_materiaal_extsyncdate 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, v_externnr, v_externsyncdate 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); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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_actiecode mld_opdr.mld_opdr_actiecode%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_verzonden mld_opdr.mld_opdr_verzonden%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_prs_kostensoort_key mld_opdr.prs_kostensoort_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_discipline_key mld_opdr.mld_opdr_discipline_key%TYPE; 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; CURSOR c3 IS SELECT ba.bez_afspraak_key FROM bez_afspraak ba WHERE ba.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, o.mld_opdr_actiecode, 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_discipline_key, mld_opdr_werkzaamheden, mld_opdr_uren, mld_opdr_materiaal, mld_opdr_kosten, mld_opdr_contactpersoon, mld_opdr_geprint, mld_opdr_teverzenden, mld_opdr_verzonden, mld_opdr_bedrijfopdr_volgnr, mld_opdr_uurloon, cnt_contract_key, cnt_contract_dienst_key, prs_perslid_key, prs_contactpersoon_key, prs_kostenplaats_key, prs_kostensoort_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_actiecode, v_statusopdr, v_mld_standaardopdr_key, v_omschrijving, v_datumbegin, v_dagen, v_einddatum, v_plandatum, v_plandatum2, v_discipline_key, v_werkzaamheden, v_uren, v_materiaal, v_kosten, v_contactpersoon, v_geprint, v_teverzenden, v_verzonden, 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_prs_kostensoort_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 ('actiecode', v_actiecode); 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); create_ins_discipline_node (v_discipline_key); 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); mydatetochar ('verzonden', v_verzonden); 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); create_prs_kostensoort_node (v_prs_kostensoort_key); 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, FALSE); 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; FOR rec3 IN c3 LOOP create_bez_afspraak_node (rec3.bez_afspraak_key, NULL, TRUE); END LOOP; IF NOT p_concise THEN create_mld_melding_node (v_mld_melding_key, p_extra_key, FALSE, 0, 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, null, 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 cad_tekening.cad_tekening_filenaam%TYPE; v_in_bewerking alg_verdieping.alg_verdieping_in_bewerking%TYPE; v_code alg_verdieping.alg_verdieping_code%TYPE; v_dwgz alg_verdieping.alg_verdieping_dwgz%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, alg_verdieping_dwgz INTO v_omschrijving, v_volgnr, v_tekening, v_in_bewerking, v_code, v_dwgz 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); --createxmltagvalue ('dwgz', v_dwgz); --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); createxmltagvalue ('dwgx', rec2.prj_scenario_note_dwgx); createxmltagvalue ('dwgy', rec2.prj_scenario_note_dwgy); 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, 0, 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, k.bes_kenmerk_code, s.bes_srtkenmerk_code, COALESCE ( lcl.x ('bes_kenmerk_omschrijving', k.bes_kenmerk_key, bes_kenmerk_omschrijving), lcl.x ('bes_srtkenmerk_omschrijving', s.bes_srtkenmerk_key, bes_srtkenmerk_omschrijving)) bes_kenmerk_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, k.bes_kenmerk_rolcode rolcode, 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, p_key, rec1.bes_kenmerk_key, 'BES'); createxmltagvalueattributes9('kenmerk', 'kenmerkcode', rec1.bes_kenmerk_code, 'srtkenmerkcode', rec1.bes_srtkenmerk_code, 'naam', rec1.bes_kenmerk_omschrijving, 'type', rec1.bes_srtkenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.bes_kenmerk_key, 'dimensie', rec1.dimensie, 'rolcode', rec1.rolcode, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); 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, k.bes_kenmerk_code, s.bes_srtkenmerk_code, COALESCE ( lcl.x ('bes_kenmerk_omschrijving', k.bes_kenmerk_key, bes_kenmerk_omschrijving), lcl.x ('bes_srtkenmerk_omschrijving', s.bes_srtkenmerk_key, bes_srtkenmerk_omschrijving)) bes_kenmerk_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, k.bes_kenmerk_rolcode rolcode, 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, p_key, rec1.bes_kenmerk_key, 'BES'); createxmltagvalueattributes9 ('kenmerk', 'kenmerkcode', rec1.bes_kenmerk_code, 'srtkenmerkcode', rec1.bes_srtkenmerk_code, 'naam', rec1.bes_kenmerk_omschrijving, 'type', rec1.bes_srtkenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.bes_kenmerk_key, 'dimensie', rec1.dimensie, 'rolcode', rec1.rolcode, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); 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; v_externnr ins_srtgroep.ins_srtgroep_externnr%TYPE; v_externsyncdate ins_srtgroep.ins_srtgroep_externsyncdate%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, ins_srtgroep_externnr, ins_srtgroep_externsyncdate INTO v_discipline_key , v_omschrijving , v_externnr , v_externsyncdate FROM ins_srtgroep WHERE ins_srtgroep_key = p_key; createxmltagvalue ('key', p_key); createxmltagvalue ('omschrijving', v_omschrijving); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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, k.ins_kenmerk_code, s.ins_srtkenmerk_code, COALESCE ( lcl.x ('ins_kenmerk_omschrijving', k.ins_kenmerk_key, ins_kenmerk_omschrijving), lcl.x ('ins_srtkenmerk_omschrijving', s.ins_srtkenmerk_key, ins_srtkenmerk_omschrijving)) ins_kenmerk_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, k.ins_kenmerk_rolcode rolcode, 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, p_key, rec1.ins_kenmerk_key, 'INS'); createxmltagvalueattributes9('kenmerk', 'kenmerkcode', rec1.ins_kenmerk_code, 'srtkenmerkcode', rec1.ins_srtkenmerk_code, 'naam', rec1.ins_kenmerk_omschrijving, 'type', rec1.ins_srtkenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.ins_kenmerk_key, 'aanmaak', TO_CHAR (v_kenmerk_aanmaak, 'YYYYMMDD HH24:MI'), 'rolcode', rec1.rolcode, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); 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; v_externnr ins_srtdeel.ins_srtdeel_externnr%TYPE; v_externsyncdate ins_srtdeel.ins_srtdeel_externsyncdate%TYPE; v_sensortype ins_srtdeel.ins_srtdeel_sensortype%TYPE; v_acad_dwgx ins_srtdeel.ins_srtdeel_acadsymbol_dwgx%TYPE; v_acad_dwgy ins_srtdeel.ins_srtdeel_acadsymbol_dwgy%TYPE; v_statethreshold ins_srtdeel.ins_srtdeel_statethreshold%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, ins_srtdeel_externnr, ins_srtdeel_externsyncdate, ins_srtdeel_sensortype, ins_srtdeel_acadsymbol_dwgx, ins_srtdeel_acadsymbol_dwgy, ins_srtdeel_statethreshold 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, v_externnr, v_externsyncdate, v_sensortype, v_acad_dwgx, v_acad_dwgy, v_statethreshold 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; createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('sensortype', v_sensortype); createxmltagvalue ('statethreshold', v_statethreshold); createxmltagvalue ('dwgx', v_acad_dwgx); createxmltagvalue ('dwgy', v_acad_dwgy); -- 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_maximum bes_srtdeel.bes_srtdeel_maximum%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_maximum, 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_maximum, 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 ('maximum', v_maximum); 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_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_inkprijs INTO v_srtdeel_key, v_aantal, v_bestelopdr_item_key, v_aantalontv, v_status, v_status_key, v_prijs, v_brutoprijs, v_inkprijs 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_aantal * v_prijs); createxmltagvalue ('inktotaal', v_aantal * v_inkprijs); 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_aantalexp bes_bestelopdr_item.bes_bestelopdr_item_aantalexp%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_aantalexp, 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_aantalexp, 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); createxmltagvalue ('aantalexp', v_bestelopdr_item_aantalexp); -- 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; -- we zouden hier een loopje met create_bes_bestellevri_node kunnen doen -- we ondersteunen echter (nog) alleen de route create_bes_bestellevr_node --> create_bes_bestellevri_node 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_melding_key bes_bestelling.mld_melding_key%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; v_externnr bes_bestelling.bes_bestelling_externnr%TYPE; v_externsyncdate bes_bestelling.bes_bestelling_externsyncdate%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_melding_key, 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, bes_bestelling_externnr, bes_bestelling_externsyncdate INTO v_module, v_statuskey, v_datum, v_perslid_key, v_perslid_key_voor, v_opmerking, v_ordernr, v_plaats, v_fiat_user, v_melding_key, 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, v_externnr, v_externsyncdate 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); create_mld_melding_node (v_melding_key, NULL, FALSE, 0, TRUE); 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); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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; v_externnr bes_bestelopdr.bes_bestelopdr_externnr%TYPE; v_externsyncdate bes_bestelopdr.bes_bestelopdr_externsyncdate%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, bes_bestelopdr_externnr, bes_bestelopdr_externsyncdate 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, v_externnr, v_externsyncdate 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); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); IF NOT p_concise THEN FOR rec1 IN c1 LOOP create_bes_bestelopdri_node (rec1.bes_bestelopdr_item_key); END LOOP; -- welke pakbonnen zeggen iets over deze opdrachtregels van opdracht FOR rec3 IN (SELECT DISTINCT bli.bes_bestellevr_key FROM bes_bestellevr_item bli, bes_bestelopdr_item boi WHERE boi.bes_bestelopdr_item_key = bli.bes_bestelopdr_item_key AND boi.bes_bestelopdr_key = p_key) LOOP create_bes_bestellevr_node (rec3.bes_bestellevr_key, FALSE); 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; PROCEDURE create_bes_bestellevri_node (p_key IN NUMBER) AS BEGIN createopentag ('bestelleveringitem'); FOR rec in ( SELECT bli.bes_bestellevr_item_key, bli.bes_bestellevr_item_aantal, bli.bes_bestelopdr_item_key, bi.bes_bestelopdr_item_omschrijv -- ter info FROM bes_bestelopdr_item bi, bes_bestellevr_item bli WHERE bi.bes_bestelopdr_item_key = bli.bes_bestelopdr_item_key AND bli.bes_bestellevr_item_key = p_key) LOOP createxmltagvalue ('key', p_key); createxmltagvalue ('aantal', rec.bes_bestellevr_item_aantal); createxmltagvalue ('levertitem', rec.bes_bestelopdr_item_key); -- concessie: hier moet eigenlijk bes_bestelopdr_item createxmltagvalue ('omschrijving', rec.bes_bestelopdr_item_omschrijv); END LOOP; createclosetag ('bestelleveringitem'); END; PROCEDURE create_bes_bestellevr_node (p_key IN NUMBER, p_concise IN BOOLEAN) AS BEGIN IF p_key IS NOT NULL THEN createopentag ('bestellevering'); FOR rec0 IN (SELECT bes_bestellevr_pakbon, bes_bestellevr_datum, bes_bestellevr_opmerk, prs_perslid_key FROM bes_bestellevr WHERE bes_bestellevr_key = p_key) LOOP createxmltagvalue ('key', p_key); createxmltagvalue ('pakbon', rec0.bes_bestellevr_pakbon); mydatetochar ('leverdatum', rec0.bes_bestellevr_datum); createxmltagvalue ('opmerking', rec0.bes_bestellevr_opmerk); create_prs_perslid_node (rec0.prs_perslid_key, 'inboeker', TRUE); END LOOP; IF NOT p_concise THEN FOR rec1 IN (SELECT bes_bestellevr_item_key FROM bes_bestellevr_item WHERE bes_bestellevr_key = p_key) LOOP create_bes_bestellevri_node (rec1.bes_bestellevr_item_key); END LOOP; END IF; createclosetag ('bestellevering'); END IF; END; -- -- -- BEZOEKERS -- -- -- * -- * BEZ kenmerken -- * PROCEDURE create_bez_kenmerken (p_key IN NUMBER) AS CURSOR c1 IS SELECT k.bez_kenmerk_key, k.bez_kenmerk_code, 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, k.bez_kenmerk_rolcode rolcode, 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, p_key, rec1.bez_kenmerk_key, 'BEZ'); createxmltagvalueattributes9 ('kenmerk', 'kenmerkcode', rec1.bez_kenmerk_code, '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, 'rolcode', rec1.rolcode, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); 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_done_actual bez_bezoekers.bez_bezoekers_done_actual%TYPE; v_out_actual bez_bezoekers.bez_bezoekers_out_actual%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; v_externnr bez_bezoekers.bez_bezoekers_externnr%TYPE; v_externsyncdate bez_bezoekers.bez_bezoekers_externsyncdate%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_done_actual, bez_bezoekers_out_actual, bez_bezoekers_pasnr, bez_bezoekers_aanmaak, prs_perslid_key, prs_contactpersoon_key, bez_bezoekers_telefoon, bez_bezoekers_email, bez_bezoekers_kenteken, bez_bezoekers_externnr, bez_bezoekers_externsyncdate INTO v_afspraak_key, v_afspraak_naam, v_afspraak_bedrijf, v_afspraak_opmerking, v_done, v_out, v_done_actual, v_out_actual, v_pasnr, v_aanmaak, v_perslid_key, v_contactpersoon_key, v_telefoon, v_email, v_kenteken, v_externnr, v_externsyncdate 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, FALSE); mydatetochar ('done', v_done); mydatetochar ('out', v_out); mydatetochar ('gearriveerd', v_done_actual); mydatetochar ('vertrokken', v_out_actual); 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); createxmltagvalue ('externnr', v_externnr); mydatetochar ('syncdate', v_externsyncdate); -- 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, null, 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; v_actie_groep_key bez_actie_groep.bez_actie_groep_key%TYPE; v_actie_groep_omschr bez_actie_groep.bez_actie_groep_omschrijving%TYPE; v_externnr bez_afspraak.bez_afspraak_externnr%TYPE; v_externsyncdate bez_afspraak.bez_afspraak_externsyncdate%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, ag.bez_actie_groep_key, ag.bez_actie_groep_omschrijving, bez_afspraak_externnr, bez_afspraak_externsyncdate 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, v_actie_groep_key, v_actie_groep_omschr, v_externnr, v_externsyncdate FROM bez_afspraak ba, bez_actie ac, bez_actie_groep ag WHERE ba.bez_actie_key = ac.bez_actie_key(+) AND ac.bez_actie_groep_key = ag.bez_actie_groep_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 ('actiegroepkey', v_actie_groep_key); createxmltagvalue ('actiegroep', v_actie_groep_omschr); createxmltagvalue ('ruimte', v_ruimte); -- de stringvariant van alg_ruimte_key? createxmltagvalue ('opmerking', v_opmerking); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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, k.res_kenmerk_code, s.res_srtkenmerk_code, COALESCE ( lcl.x ('res_kenmerk_omschrijving', k.res_kenmerk_key, res_kenmerk_omschrijving), lcl.x ('res_srtkenmerk_omschrijving', s.res_srtkenmerk_key, res_srtkenmerk_omschrijving)) res_kenmerk_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, k.res_kenmerk_rolcode rolcode, 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, p_key, rec1.res_kenmerk_key, 'RES'); createxmltagvalueattributes9('kenmerk', 'kenmerkcode', rec1.res_kenmerk_code, 'srtkenmerkcode', rec1.res_srtkenmerk_code, 'naam', rec1.res_kenmerk_omschrijving, 'type', rec1.res_srtkenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.res_kenmerk_key, 'dimensie', rec1.dimensie, 'rolcode', rec1.rolcode, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); END LOOP; END; PROCEDURE create_res_kenmerken_rsv_art (p_key IN NUMBER) AS CURSOR c1 IS SELECT k.res_kenmerk_key, k.res_kenmerk_code, s.res_srtkenmerk_code, COALESCE ( lcl.x ('res_kenmerk_omschrijving', k.res_kenmerk_key, res_kenmerk_omschrijving), lcl.x ('res_srtkenmerk_omschrijving', s.res_srtkenmerk_key, res_srtkenmerk_omschrijving)) res_kenmerk_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, k.res_kenmerk_rolcode rolcode, 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, p_key, rec1.res_kenmerk_key, 'RES'); createxmltagvalueattributes9('kenmerk', 'kenmerkcode', rec1.res_kenmerk_code, 'srtkenmerkcode', rec1.res_srtkenmerk_code, 'naam', rec1.res_kenmerk_omschrijving, 'type', rec1.res_srtkenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.res_kenmerk_key, 'dimensie', rec1.dimensie, 'rolcode', rec1.rolcode, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); 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_volgnummer res_ruimte.res_ruimte_volgnummer%TYPE; v_minbezoekers res_ruimte.res_ruimte_minbezoekers%TYPE; v_discipline_key res_ruimte.res_discipline_key%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_externsyncdate res_ruimte.res_ruimte_externsyncdate%TYPE; v_image res_ruimte.res_ruimte_image%type; v_graphhooksecret res_ruimte.res_ruimte_graphhooksecret%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_discipline_key, 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, res_ruimte_externsyncdate, COALESCE(res_ruimte_opstel_image, res_ruimte_image), res_ruimte_graphhooksecret, res_ruimte_volgnummer, res_ruimte_minbezoekers INTO v_bezoekers, v_opstelling, v_res_ruimte_key, v_resruimte, v_res_ruimte_nr, v_discipline_key, 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_externsyncdate, v_image, v_graphhooksecret, v_volgnummer, v_minbezoekers 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! create_ins_discipline_node (v_discipline_key); createxmltagvalue ('opstelling', v_opstelling); createxmltagvalue ('bezoekers', v_bezoekers); createxmltagvalue ('omschrijving', v_resruimte); createxmltagvalue ('volgnummer', v_volgnummer); createxmltagvalue ('minbezoekers', v_minbezoekers); 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); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('image', v_image); createxmltagvalue ('graphhooksecret', v_graphhooksecret); 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, p_aantal 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_bulkrsvbaar res_deel.res_deel_bulkreserveerbaar%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; v_prs_perslid_key res_deel.res_prs_perslid_key%TYPE; v_image res_deel.res_deel_image%TYPE; v_externnr res_deel.res_deel_externnr%TYPE; v_externsyncdate res_deel.res_deel_externsyncdate%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, res_deel_bulkreserveerbaar, lcl.x ('res_deel_opmerking', res_deel_key, res_deel_opmerking) res_deel_opmerking, res_discipline_key, res_deel_verwijder, res_prs_perslid_key, res_deel_alg_level, res_deel_image, res_deel_externnr, res_deel_externsyncdate INTO v_ins_deel_key, v_omschrijving, v_eenheid, v_prijs, v_prijs_vast, v_bulkrsvbaar, v_opmerking, v_discipline_key, v_verwijder, v_prs_perslid_key, v_alg_level, v_image, v_externnr, v_externsyncdate 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, null, TRUE); createxmltagvalue ('omschrijving', v_omschrijving); createxmltagvalue ('eenheid', v_eenheid); createxmltagvalue ('prijs', v_prijs); createxmltagvalue ('prijsvast', v_prijs_vast); createxmltagvalue ('bulkreserveerbaar', v_bulkrsvbaar); createxmltagvalue ('opmerking', v_opmerking); mydatetochar ('verwijder', v_verwijder); create_prs_perslid_node (v_prs_perslid_key, 'persoon', TRUE); createxmltagvalue ('alglevel', v_alg_level); createxmltagvalue ('image', v_image); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); createclosetag ('res_deel'); END; PROCEDURE create_res_rsv_deel_node (p_key IN NUMBER, p_aantal 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_timezone alg_locatie.alg_locatie_timezone%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; v_geleverd res_rsv_deel.res_rsv_deel_geleverd%TYPE; v_externnr res_rsv_deel.res_rsv_deel_externnr%TYPE; v_externsyncdate res_rsv_deel.res_rsv_deel_externsyncdate%TYPE; v_server_timezone VARCHAR2(4000); BEGIN createopentag ('rsv_deel'); v_server_timezone := fac.getsetting ('fac_server_timezone'); SELECT rd.res_deel_key, rd.res_rsv_deel_aantal, rd.res_status_bo_key, rd.res_rsv_ruimte_key, rd.res_rsv_deel_van, rd.res_rsv_deel_tot, l.alg_locatie_timezone, res.getdeelprijs (res_rsv_deel_key), rd.res_rsv_deel_aanmaak, rd.res_rsv_deel_verwijder, rd.bez_bezoekers_key, sb.res_status_bo_omschrijving, rd.res_rsv_deel_dirtlevel, rd.res_rsv_deel_geleverd, rd.res_rsv_deel_externnr, rd.res_rsv_deel_externsyncdate INTO v_deel_key, v_aantal, v_status_bo_key, v_rsv_ruimte_key, v_van, v_tot, v_timezone, v_prijs, v_aanmaak, v_verwijder, bez_bezoekers_key, v_status_bo_omschr, v_dirtlevel, v_geleverd, v_externnr, v_externsyncdate FROM res_rsv_deel rd , ( SELECT res_rsv_ruimte_key, MAX (ra.alg_ruimte_key) alg_ruimte_key FROM res_rsv_ruimte r, res_ruimte_opstelling ro, res_opstelling o, res_ruimte rr, res_alg_ruimte ra WHERE r.res_rsv_ruimte_verwijder IS NULL AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND ro.res_opstelling_key = o.res_opstelling_key AND rr.res_ruimte_key = ra.res_ruimte_key GROUP BY res_rsv_ruimte_key UNION ALL SELECT res_rsv_ruimte_key, rrr.alg_ruimte_key FROM res_rsv_ruimte rrr, alg_ruimte r WHERE rrr.alg_ruimte_key IS NOT NULL AND r.alg_ruimte_key = rrr.alg_ruimte_key) r2a , alg_ruimte r , alg_verdieping v , alg_gebouw g , alg_locatie l , res_status_bo sb , res_deel rdd WHERE rd.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+) AND r2a.alg_ruimte_key = r.alg_ruimte_key(+) AND r.alg_verdieping_key = v.alg_verdieping_key(+) AND v.alg_gebouw_key = g.alg_gebouw_key(+) AND g.alg_locatie_key = l.alg_locatie_key(+) AND 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, p_aantal); IF p_aantal IS NOT NULL AND p_aantal > 0 THEN createxmltagvalue ('aantal', p_aantal); createxmltagvalue ('prijs', p_aantal * v_prijs); ELSE createxmltagvalue ('aantal', v_aantal); createxmltagvalue ('prijs', v_prijs); END IF; 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, v_timezone); mydatetochar ('tot', v_tot, v_timezone); mydatetochar ('aanmaak', v_aanmaak); mydatetochar ('verwijder', v_verwijder); mydatetochar ('geleverd', v_geleverd); createxmltagvalue ('bezoeker', bez_bezoekers_key); -- als dit een parkeerplaats is createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); -- 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; v_image res_artikel.res_artikel_image%TYPE; v_externnr res_artikel.res_artikel_externnr%TYPE; v_externsyncdate res_artikel.res_artikel_externsyncdate%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, res_artikel_image, res_artikel_externnr, res_artikel_externsyncdate 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, v_image, v_externnr, v_externsyncdate 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); createxmltagvalue ('image', v_image); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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; v_approved res_rsv_artikel.res_rsv_artikel_approved%TYPE; v_geleverd res_rsv_artikel.res_rsv_artikel_geleverd%TYPE; v_afhalen res_rsv_artikel.res_rsv_artikel_afhalen%TYPE; v_externnr res_rsv_artikel.res_rsv_artikel_externnr%TYPE; v_externsyncdate res_rsv_artikel.res_rsv_artikel_externsyncdate%TYPE; v_rsv_artikel_omschr res_rsv_artikel.res_rsv_artikel_omschrijving%TYPE; v_res_artikel_omschr res_artikel.res_artikel_omschrijving%TYPE; BEGIN createopentag ('rsv_artikel'); SELECT ra.res_artikel_key, ra.res_rsv_artikel_omschrijving, raa.res_artikel_omschrijving, 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, res_rsv_artikel_approved, res_rsv_artikel_geleverd, res_rsv_artikel_afhalen, res_rsv_artikel_externnr, res_rsv_artikel_externsyncdate INTO v_artikel_key, v_rsv_artikel_omschr, v_res_artikel_omschr, v_aantal, v_levering, v_status_bo_key, v_rsv_ruimte_key, v_prijs, v_aanmaak, v_verwijder, v_status_bo_omschr, v_dirtlevel, v_approved, v_geleverd, v_afhalen, v_externnr, v_externsyncdate 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); IF v_rsv_artikel_omschr IS NOT NULL THEN createxmltagvalue ('omschrijving', v_rsv_artikel_omschr); ELSE createxmltagvalue ('omschrijving', v_res_artikel_omschr); END IF; 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 ('approved', v_approved); createxmltagvalue ('prijs', v_prijs); mydatetochar ('aanmaak', v_aanmaak); mydatetochar ('verwijder', v_verwijder); mydatetochar ('geleverd', v_geleverd); mydatetochar ('afhalen', v_afhalen); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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 BEGIN createopentag ('res_activiteit'); FOR rec IN (SELECT lcl.x ('res_activiteit_omschrijving', res_activiteit_key, res_activiteit_omschrijving) res_activiteit_omschrijving, res_activiteit_duur, res_srtactiviteit_key, res_activiteit_image, res_activiteit_ismaster, res_activiteit_master_key FROM res_activiteit WHERE res_activiteit_key = p_key) LOOP createxmltagvalue ('key', p_key); createxmltagvalue ('omschrijving', rec.res_activiteit_omschrijving); createxmltagvalue ('duur', rec.res_activiteit_duur); createxmltagvalue ('image', rec.res_activiteit_image); createxmltagvalue ('ismaster', rec.res_activiteit_ismaster); createxmltagvalue ('master', rec.res_activiteit_master_key); create_res_srtactiviteit_node (rec.res_srtactiviteit_key); END LOOP; 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_van_actual res_rsv_ruimte.res_rsv_ruimte_van_actual%TYPE; v_timezone alg_locatie.alg_locatie_timezone%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_parent_key res_rsv_ruimte.res_rsv_ruimte_parent_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; v_externsyncdate res_rsv_ruimte.res_rsv_ruimte_externsyncdate%TYPE; v_cat_appr res_rsv_ruimte.res_rsv_ruimte_cat_appr%TYPE; v_mld_opdr_key res_rsv_ruimte.mld_opdr_key%TYPE; v_teverzenden res_rsv_ruimte.res_rsv_ruimte_teverzenden%TYPE; v_verzonden res_rsv_ruimte.res_rsv_ruimte_verzonden%TYPE; v_server_timezone VARCHAR2(4000); CURSOR c2d IS SELECT rd.res_deel_omschrijving, rrd.res_rsv_deel_key, 0 selected FROM res_rsv_deel rrd, res_deel rd WHERE rrd.res_rsv_deel_verwijder IS NULL AND rrd.res_rsv_ruimte_key = p_key AND rrd.res_deel_key = rd.res_deel_key AND rd.res_deel_bulkreserveerbaar = 0 UNION ALL -- Van bulk-objecten wordt één 'record' opgeleverd met de laagste res_deel_key SELECT res_deel_omschrijving, MIN (res_rsv_deel_key) res_rsv_deel_key, COUNT (res_deel_omschrijving) selected FROM res_deel r1, res_rsv_deel rrd1 WHERE r1.res_deel_key = rrd1.res_deel_key AND rrd1.res_rsv_ruimte_key = p_key AND res_deel_bulkreserveerbaar = 1 GROUP BY res_deel_omschrijving; 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; v_server_timezone := fac.getsetting ('fac_server_timezone'); SELECT rr.res_reservering_key, rr.res_ruimte_opstel_key, rr.res_activiteit_key, rr.res_rsv_ruimte_van, rr.res_rsv_ruimte_tot, rr.res_rsv_ruimte_van_actual, l.alg_locatie_timezone, rr.res_rsv_ruimte_bezoekers, res.getruimteprijs (rr.res_rsv_ruimte_key), rr.res_rsv_ruimte_korting, rr.res_rsv_ruimte_totaal, rr.res_status_bo_key, rr.res_status_fo_key, rr.res_rsv_ruimte_noshow, rr.res_rsv_ruimte_aanmaak, rr.res_rsv_ruimte_verwijder, rr.res_rsv_ruimte_opmerking, rr.res_rsv_ruimte_omschrijving, rr.res_rsv_ruimte_ordernr, rr.prs_kostenplaats_key, rr.res_rsv_ruimte_contact_key, rr.res_rsv_ruimte_host_key, rr.res_rsv_ruimte_telefoon, rr.alg_ruimte_key, rr.res_rsv_ruimte_parent_key, rr.res_rsv_ruimte_volgnr, sf.res_status_fo_omschrijving, sb.res_status_bo_omschrijving, rr.res_rsv_ruimte_kosten_klant, rr.res_rsv_ruimte_dirtlevel, rr.res_rsv_ruimte_bezoekers_shown, rr.res_rsv_ruimte_cvab_mode, rr.res_rsv_ruimte_afgerond, rr.res_rsv_ruimte_externnr, rr.res_rsv_ruimte_externsyncdate, rr.res_rsv_ruimte_cat_appr, rr.mld_opdr_key, rr.res_rsv_ruimte_teverzenden, rr.res_rsv_ruimte_verzonden INTO v_reservering_key, v_ruimte_opstel_key, v_activiteit_key, v_van, v_tot, v_van_actual, v_timezone, 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_parent_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, v_externsyncdate, v_cat_appr, v_mld_opdr_key, v_teverzenden, v_verzonden FROM res_rsv_ruimte rr , res_status_fo sf , res_status_bo sb , ( SELECT res_rsv_ruimte_key, MAX (ra.alg_ruimte_key) alg_ruimte_key FROM res_rsv_ruimte r, res_ruimte_opstelling ro, res_opstelling o, res_ruimte rr, res_alg_ruimte ra WHERE r.res_rsv_ruimte_verwijder IS NULL AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND ro.res_opstelling_key = o.res_opstelling_key AND rr.res_ruimte_key = ra.res_ruimte_key GROUP BY res_rsv_ruimte_key UNION ALL SELECT res_rsv_ruimte_key, rrr.alg_ruimte_key FROM res_rsv_ruimte rrr, alg_ruimte r WHERE rrr.alg_ruimte_key IS NOT NULL AND r.alg_ruimte_key = rrr.alg_ruimte_key) r2a , alg_ruimte r , alg_verdieping v , alg_gebouw g , alg_locatie l 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 = r2a.res_rsv_ruimte_key(+) AND r2a.alg_ruimte_key = r.alg_ruimte_key(+) AND r.alg_verdieping_key = v.alg_verdieping_key(+) AND v.alg_gebouw_key = g.alg_gebouw_key(+) AND g.alg_locatie_key = l.alg_locatie_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, v_timezone); mydatetochar ('tot', v_tot, v_timezone); mydatetochar ('van_actual', v_van_actual, v_timezone); 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; createxmltagvalue ('omschrijving', v_omschrijving); createxmltagvalue ('opmerking', v_opmerking); 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); createxmltagvalue ('teverzenden', v_teverzenden); mydatetochar ('verzonden', v_verzonden); mydatetochar ('aangemaakt', v_aanmaak); mydatetochar ('verwijder', v_verwijder); 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); mydatetochar ('externsyncdate', v_externsyncdate); createxmltagvalue ('cat_appr', v_cat_appr); createxmltagvalue ('dirtlevel', v_dirtlevel); create_mld_opdr_node(v_mld_opdr_key, NULL, TRUE); 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, rec2d.selected); 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, 0, FALSE); -- de opdrachtinfo is ook gewenst END LOOP; IF (v_parent_key IS NOT NULL) THEN createopentag ('masterreservering'); create_res_rsv_ruimte_node(v_parent_key, TRUE); createclosetag ('masterreservering'); END IF; createopentag ('subreservering'); FOR rec IN (SELECT res_rsv_ruimte_key FROM res_rsv_ruimte WHERE res_rsv_ruimte_parent_key = p_key) LOOP create_res_rsv_ruimte_node(rec.res_rsv_ruimte_key, TRUE); END LOOP; createclosetag ('subreservering'); 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_melding_key res_reservering.mld_melding_key%TYPE; v_ispool res_reservering.res_reservering_ispool%TYPE; v_externnr res_reservering.res_reservering_externnr%TYPE; v_externsyncdate res_reservering.res_reservering_externsyncdate%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 , res_reservering_ispool , mld_melding_key , res_reservering_externnr , res_reservering_externsyncdate INTO v_aanmaak , v_verwijder , v_ispool , v_melding_key , v_externnr , v_externsyncdate FROM res_reservering r WHERE res_reservering_key = v_reservering_key; createxmltagvalue ('key', v_reservering_key); mydatetochar ('datum', v_aanmaak); mydatetochar ('verwijder', v_verwijder); createxmltagvalue ('ispool', v_ispool); create_mld_melding_node (v_melding_key, NULL, FALSE, 0, FALSE); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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, p_xmlnode IN VARCHAR2) 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 (p_xmlnode, '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 (p_xmlnode); 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; xmlnode VARCHAR2 (20); 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, CASE WHEN BITAND(fac_usrrap_functie, 4) = 4 THEN 'sysrapport' ELSE 'rapport' END xmlnode INTO view_name, omschrijving, rinfo, xmlnode FROM fac_usrrap WHERE fac_usrrap_key = p_key; create_view_node (view_name, omschrijving, rinfo, p_where, NULL, NULL, p_key, xmlnode); 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; xmlnode VARCHAR2 (20); BEGIN IF p_key IS NOT NULL THEN SELECT fac_usrrap_view_name, fac_usrrap_omschrijving, fac_usrrap_info, CASE WHEN BITAND(fac_usrrap.fac_usrrap_functie, 4) = 4 THEN 'sysrapport' ELSE 'rapport' END xmlnode INTO proc_name, omschrijving, rinfo, xmlnode 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 (xmlnode, '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 (xmlnode); 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_attachments_node ('#donotsuppress#Rx=' || TO_CHAR(rec1.cnt_contract_note_key) || '#Kx=-1#Mx=CNTN#'); -- notities hebben kenmerk_key -1 create_prs_perslid_node (rec1.prs_perslid_key, 'noteur', TRUE); createclosetag ('note'); END LOOP; createclosetag ('notes'); END IF; END; PROCEDURE create_cnt_factuurschema_node (p_key IN NUMBER) AS CURSOR c1 IS SELECT cnt_factuurschema_key, cnt_factuurschema_bedrag, cnt_factuurschema_boekmaand, cnt_factuurschema_opmerking FROM cnt_factuurschema WHERE cnt_contract_key = p_key ORDER BY cnt_factuurschema_boekmaand; BEGIN IF p_key IS NOT NULL THEN createopentag ('factuurschemas'); FOR rec1 in c1 LOOP createopentag ('factuurschema'); createxmltagvalue ('key', rec1.cnt_factuurschema_key); createxmltagvalue ('bedrag', rec1.cnt_factuurschema_bedrag); createxmltagvalue ('boekmaand', rec1.cnt_factuurschema_boekmaand); createxmltagvalue ('omschrijving', rec1.cnt_factuurschema_opmerking); createclosetag ('factuurschema'); END LOOP; createclosetag ('factuurschemas'); END IF; END; PROCEDURE create_cnt_kenmerken (p_key IN NUMBER) AS CURSOR c1 IS SELECT k.cnt_kenmerk_key, k.cnt_kenmerk_code, s.cnt_srtkenmerk_code, COALESCE ( lcl.x ('cnt_kenmerk_omschrijving', k.cnt_kenmerk_key, cnt_kenmerk_omschrijving), lcl.x ('cnt_srtkenmerk_omschrijving', s.cnt_srtkenmerk_key, cnt_srtkenmerk_omschrijving)) cnt_kenmerk_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, k.cnt_kenmerk_rolcode rolcode, 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 OR k.cnt_srtcontract_key IS NULL) 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, p_key, rec1.cnt_kenmerk_key, 'CNT'); createxmltagvalueattributes9('kenmerk', 'kenmerkcode', rec1.cnt_kenmerk_code, 'srtkenmerkcode', rec1.cnt_srtkenmerk_code, 'naam', rec1.cnt_kenmerk_omschrijving, 'type', rec1.cnt_srtkenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.cnt_kenmerk_key, 'wijzig', TO_CHAR (v_kenmerk_wijzig, 'YYYYMMDD HH24:MI'), NULL, NULL, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); 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_verlengtermijn 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; v_inactiveren cnt_contract.cnt_contract_inactiveren%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, -- rappeltermijn lcl.x ('cnt_termijn_omschrijving', t2.cnt_termijn_key, t2.cnt_termijn_omschrijving) cnt_termijn_omschrijving2, -- opzegtermijn lcl.x ('cnt_termijn_omschrijving', t3.cnt_termijn_key, t3.cnt_termijn_omschrijving) cnt_termijn_omschrijving3, -- verlengtermijn lcl.x ('cnt_termijn_omschrijving', t4.cnt_termijn_key, t4.cnt_termijn_omschrijving) cnt_termijn_omschrijving4, -- termijntermijn c.cnt_contract_termijntermijn, cnt_contract_versie, cnt_contract_verlenging, bes_bestelopdr_key, cnt_contract_inactiveren 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_verlengtermijn, v_termijntermijn, v_termijntermijn_key, v_versie, v_verlenging, v_bestelopdr_key, v_inactiveren FROM cnt_contract c, cnt_termijn t1, cnt_termijn t2, cnt_termijn t3, cnt_termijn t4 WHERE c.cnt_contract_rappeltermijn = t1.cnt_termijn_key(+) AND c.cnt_contract_opzegtermijn = t2.cnt_termijn_key(+) AND c.cnt_contract_verleng_termijn = t3.cnt_termijn_key(+) AND c.cnt_contract_termijntermijn = t4.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 ('verlengtermijn', v_verlengtermijn); 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, FALSE); 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); createxmltagvalue ('inactiveren', v_inactiveren); 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, null, 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); create_cnt_factuurschema_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_attachments_node ('#donotsuppress#Rx=' || TO_CHAR(rec1.fin_factuur_note_key) || '#Kx=-1#Mx=FINN#'); -- notities hebben kenmerk_key -1 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, k.fin_kenmerk_code, 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, k.fin_kenmerk_rolcode rolcode, 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, k.fin_kenmerk_code, 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, k.fin_kenmerk_rolcode rolcode, 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, p_key, rec1.fin_kenmerk_key, 'FIN'); createxmltagvalueattributes9('kenmerk', 'naam', rec1.fin_kenmerk_omschrijving, 'kenmerkcode', rec1.fin_kenmerk_code, 'type', rec1.fin_kenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.fin_kenmerk_key, 'dimensie', rec1.dimensie, NULL, NULL, NULL, NULL, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); 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, p_key, rec1.fin_kenmerk_key, 'FIN'); createxmltagvalueattributes9('kenmerk', 'naam', rec1.fin_kenmerk_omschrijving, 'kenmerkcode', rec1.fin_kenmerk_code, 'type', rec1.fin_kenmerk_kenmerktype, 'volgnummer', rec1.volgnummer, 'key', rec1.fin_kenmerk_key, 'dimensie', rec1.dimensie, NULL, NULL, NULL, NULL, NULL, NULL, rec1.fac_kenmerkdomein_key, v_kenmerk_waarde, NULL ); 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, p_extra_key IN NUMBER DEFAULT NULL) 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_bestellevr_key fin_factuur.bes_bestellevr_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; v_externnr fin_factuur.fin_factuur_externnr%TYPE; v_externsyncdate fin_factuur.fin_factuur_externsyncdate%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, bes_bestellevr_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, fin_factuur_externnr, fin_factuur_externsyncdate INTO v_nr, v_totaal, v_totaal_btw, v_opdr_key, v_contract_key, v_bestelopdr_key, v_bestellevr_key, v_perslid_key_user, v_datum, v_boekmaand, v_debiteur_nr, v_kostensoort_key, v_opmerking, v_status, v_contract_plaats_key, v_externnr, v_externsyncdate FROM fin_factuur WHERE fin_factuur_key = p_key; createxmltagvalue ('key', mynumbertochar (p_key)); createxmltagvalue ('extra_key', p_extra_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); createxmltagvalue ('externnr', v_externnr); mydatetochar ('externsyncdate', v_externsyncdate); 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); createxmltagvalue ('pakbon', v_bestellevr_key); -- de details zitten wel in de create_bes_bestelopdr_node END IF; create_prs_perslid_node (v_perslid_key_user, 'invoerder', TRUE); create_fin_factuur_note_node (p_key); create_fac_tracking_node('factuur', 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; v_verwijder prs_kostensoortgrp.prs_kostensoortgrp_verwijder%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 , prs_kostensoortgrp_verwijder INTO v_altcode , v_oms , v_verwijder FROM prs_kostensoortgrp WHERE prs_kostensoortgrp_key = p_key; createopentag ('kostengroep'); createxmltagvalue ('key', mynumbertochar (p_key)); createxmltagvalue ('code', v_altcode); createxmltagvalue ('name', v_oms); mydatetochar ('verwijder', v_verwijder); 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, -- genegeerd 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); l_custid fac_version.fac_version_cust%TYPE; 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, 0, FALSE); 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, null, p_concise, p_extra); WHEN 'controle' THEN create_ins_deelsrtcontr_node (p_key, FALSE); 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 'sysrapport' 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, FALSE, p_extra); 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 SELECT fac_version_cust INTO l_custid FROM fac_version; v_sql_stmt := 'BEGIN ' || l_custid || '.create_' || p_xmlnode || '_node (' || p_key || ',' || '''' || l_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, p_notificatie_key IN NUMBER DEFAULT NULL) RETURN CLOB AS BEGIN DBMS_LOB.createtemporary (aclob, TRUE, DBMS_LOB.CALL); add_header (p_custid); create_fac_notificatie_node(p_notificatie_key); xmlnode_depth := 0; -- Set initial depth-level!!! xml_node (p_xmlnode, p_key, p_custid, p_sessionid, p_extra, p_where, FALSE); create_bookmarks_node (p_xmlnode, p_key); add_localisation (p_xmlnode); add_settings (p_xmlnode); 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, 'rapport'); 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$')