5551 lines
260 KiB
Plaintext
5551 lines
260 KiB
Plaintext
/* $Revision$
|
|
* $Id$
|
|
*/
|
|
|
|
/* FAC_PACX, (X means XML) to be included from fac_pac.src, isolated for convenience only
|
|
* The XML-package source. Maakt DE XML nodes voor alle bekende entiteiten van facilitor.
|
|
*
|
|
* Usage: xml.make_xml(...);
|
|
*
|
|
* Voor de XML functies is soms de concise (=beknopt) parameter beschikbaar, Indien waar, dan wordt er minder info
|
|
* van die node opgenomen. Soort van vuistregel is dat als het er om gaat deze false is, en als er slechts een
|
|
* vermelding is deze true is. Voorbeeld voor perslid: aanvrager moet niet concise, maar fiatteur wel.
|
|
*
|
|
* In de packageheader zijn alleen die declaraties opgenomen die qua volgorde bekend moesten zijn bij gebruik (in de body)
|
|
*
|
|
*/
|
|
|
|
-- to do:
|
|
-- contracten bij opdrachten
|
|
|
|
CREATE OR REPLACE PACKAGE xml
|
|
AS
|
|
PROCEDURE addvarchartoclob (text IN VARCHAR2);
|
|
|
|
PROCEDURE createheadernode (p_custid IN VARCHAR2);
|
|
|
|
PROCEDURE add_header (p_custid IN VARCHAR2);
|
|
|
|
PROCEDURE add_footer (dummy IN VARCHAR2);
|
|
|
|
PROCEDURE add_localisation (p_xmlnode IN VARCHAR2);
|
|
|
|
FUNCTION char_to_html (p_char IN VARCHAR2)
|
|
RETURN VARCHAR2;
|
|
|
|
PROCEDURE mydatetochar (p_tag IN VARCHAR2, p_date IN DATE);
|
|
|
|
FUNCTION mynumbertochar (p_number IN NUMBER)
|
|
RETURN VARCHAR2;
|
|
|
|
PROCEDURE createopentag (p_tag IN VARCHAR2);
|
|
|
|
PROCEDURE createconciseopentag (p_tag IN VARCHAR2);
|
|
|
|
PROCEDURE createopentagattributes (
|
|
p_tag IN VARCHAR2,
|
|
p_attrname1 IN VARCHAR2,
|
|
p_attrvalue1 IN VARCHAR2,
|
|
p_attrname2 IN VARCHAR2,
|
|
p_attrvalue2 IN VARCHAR2,
|
|
p_attrname3 IN VARCHAR2,
|
|
p_attrvalue3 IN VARCHAR2,
|
|
p_attrname4 IN VARCHAR2,
|
|
p_attrvalue4 IN VARCHAR2
|
|
);
|
|
|
|
PROCEDURE createclosetag (p_tag IN VARCHAR2);
|
|
|
|
PROCEDURE createxmltagvalue (p_tag IN VARCHAR2, p_value IN VARCHAR2);
|
|
|
|
PROCEDURE createxmltagvalueattributes (
|
|
p_tag IN VARCHAR2,
|
|
p_attrname1 IN VARCHAR2,
|
|
p_attrvalue1 IN VARCHAR2,
|
|
p_attrname2 IN VARCHAR2,
|
|
p_attrvalue2 IN VARCHAR2,
|
|
p_attrname3 IN VARCHAR2,
|
|
p_attrvalue3 IN VARCHAR2,
|
|
p_attrname4 IN VARCHAR2,
|
|
p_attrvalue4 IN VARCHAR2,
|
|
p_attrname5 IN VARCHAR2,
|
|
p_attrvalue5 IN VARCHAR2,
|
|
p_xmlnode IN VARCHAR2,
|
|
p_value IN VARCHAR2
|
|
);
|
|
|
|
PROCEDURE create_prs_perslid_node (p_key IN NUMBER, p_nodename IN VARCHAR2, p_concise IN BOOLEAN);
|
|
|
|
PROCEDURE create_alg_locatie_node (
|
|
p_locatie_key IN NUMBER,
|
|
p_gebouw_key IN NUMBER,
|
|
p_verdieping_key IN NUMBER,
|
|
p_ruimte_key IN NUMBER,
|
|
p_terreinsector_key IN NUMBER,
|
|
p_withchildren IN BOOLEAN
|
|
);
|
|
|
|
PROCEDURE create_mld_adres_node (p_key IN NUMBER, p_nodename IN VARCHAR2, p_concise IN BOOLEAN);
|
|
|
|
PROCEDURE create_prs_werkplek_node (p_werkplek_key IN NUMBER, p_perslid_key IN NUMBER, p_concise IN BOOLEAN);
|
|
|
|
PROCEDURE create_ins_srtdeel_node (p_key IN NUMBER, p_concise BOOLEAN);
|
|
|
|
PROCEDURE create_prs_bedrijf_node (p_bedrijf_key IN NUMBER, p_nodename IN VARCHAR2);
|
|
|
|
PROCEDURE create_prs_kostenplaats_node (p_key IN NUMBER);
|
|
|
|
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_concise IN BOOLEAN);
|
|
|
|
PROCEDURE create_res_rsv_ruimte_node (p_key IN NUMBER, p_concise IN BOOLEAN);
|
|
|
|
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
|
|
);
|
|
|
|
PROCEDURE make_xml (
|
|
p_xmlnode IN VARCHAR2,
|
|
p_key IN NUMBER,
|
|
p_custid IN VARCHAR2,
|
|
p_sessionid IN VARCHAR2,
|
|
p_extra IN NUMBER,
|
|
p_where IN VARCHAR2
|
|
);
|
|
PROCEDURE make_view_xml (
|
|
p_view IN VARCHAR2,
|
|
p_key IN NUMBER,
|
|
p_custid IN VARCHAR2,
|
|
p_sessionid IN VARCHAR2,
|
|
p_extra IN NUMBER,
|
|
p_where IN VARCHAR2
|
|
);
|
|
END xml;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY xml
|
|
AS
|
|
aclob CLOB;
|
|
xmlnode_depth NUMBER; -- Prevent nested xmlnode-kenmerken (and loops); max. depth=1!
|
|
PROCEDURE addvarchartoclob (text IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
DBMS_LOB.WRITEAPPEND (aclob, LENGTH (text), text);
|
|
END;
|
|
PROCEDURE add_header (p_custid IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
addvarchartoclob ('<?xml version="1.0" encoding="windows-1252"?>' || CHR (10));
|
|
createopentag ('facilitor');
|
|
createheadernode (p_custid);
|
|
END;
|
|
PROCEDURE add_footer (dummy IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
createclosetag ('facilitor');
|
|
END;
|
|
PROCEDURE add_localisation (p_xmlnode IN VARCHAR2)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT fac_locale_xsl_label, 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')
|
|
UNION ALL
|
|
SELECT 'ALG'
|
|
FROM DUAL
|
|
WHERE p_xmlnode IN ('ruimte', 'verdieping', 'gebouw', 'locatie', 'deel', 'contract')
|
|
UNION ALL
|
|
SELECT 'PRS'
|
|
FROM DUAL
|
|
WHERE p_xmlnode IN ('perslid', 'afdeling')
|
|
UNION ALL
|
|
SELECT 'BEZ'
|
|
FROM DUAL
|
|
WHERE p_xmlnode IN ('afspraak', 'reservering', 'xreservering')
|
|
UNION ALL
|
|
SELECT 'BES'
|
|
FROM DUAL
|
|
WHERE p_xmlnode IN ('bestelling', 'bestelopdr')
|
|
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')
|
|
UNION ALL
|
|
SELECT 'CNT'
|
|
FROM DUAL
|
|
WHERE p_xmlnode IN ('contract')
|
|
UNION ALL
|
|
SELECT 'FAC' FROM DUAL) modules
|
|
WHERE fac_locale_xsl_lang = lcl.getuserlanguage () 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
|
|
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;
|
|
FUNCTION char_to_html (p_char IN VARCHAR2)
|
|
RETURN VARCHAR2
|
|
IS
|
|
BEGIN
|
|
RETURN REPLACE (
|
|
REPLACE (
|
|
REPLACE (
|
|
REPLACE (
|
|
REPLACE (p_char, CHR (38), CHR (38) || 'amp;'),
|
|
CHR (60),
|
|
CHR (38) || 'lt;'),
|
|
CHR (62),
|
|
CHR (38) || 'gt;'),
|
|
CHR (34),
|
|
CHR (38) || 'quot;'),
|
|
CHR (39),
|
|
CHR (38) || 'apos;');
|
|
END;
|
|
PROCEDURE mydatetochar (p_tag IN VARCHAR2, p_date IN DATE)
|
|
AS
|
|
v_return VARCHAR2 (1000);
|
|
l_timezone VARCHAR2(20);
|
|
v_utc TIMESTAMP;
|
|
BEGIN
|
|
IF p_date IS NOT NULL
|
|
THEN
|
|
createopentag (p_tag);
|
|
createxmltagvalue ('datum', TO_CHAR (p_date, 'dd-mm-yyyy'));
|
|
createxmltagvalue ('tijd', TO_CHAR (p_date, 'hh24:mi'));
|
|
-- veronderstel origineel CentralEuropeTime. Die heeft de goede zomer/wintertijd
|
|
v_utc := SYS_EXTRACT_UTC (FROM_TZ(CAST (p_date AS TIMESTAMP ), 'CET'));
|
|
createxmltagvalue ('utcdatum', TO_CHAR(v_utc, 'YYYYMMDD'));
|
|
createxmltagvalue ('utctijd', TO_CHAR(v_utc, 'HH24MISS'));
|
|
createxmltagvalue ('dag', TO_CHAR (p_date, 'dd'));
|
|
createxmltagvalue ('maand', TO_CHAR (p_date, 'mm'));
|
|
createxmltagvalue ('jaar', TO_CHAR (p_date, 'yyyy'));
|
|
createxmltagvalue ('timestamp', TO_CHAR((p_date-TO_DATE('01-01-1970','DD-MM-YYYY'))*86400,'FM9999999999'));
|
|
createclosetag (p_tag);
|
|
END IF;
|
|
END;
|
|
FUNCTION mynumbertochar (p_number IN NUMBER)
|
|
RETURN VARCHAR2
|
|
IS
|
|
BEGIN
|
|
RETURN TO_CHAR (p_number);
|
|
END;
|
|
PROCEDURE createopentag (p_tag IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
IF p_tag IS NULL
|
|
THEN
|
|
addvarchartoclob ('<>');
|
|
ELSE
|
|
addvarchartoclob ('<' || p_tag || '>' || CHR (10));
|
|
END IF;
|
|
END;
|
|
PROCEDURE createconciseopentag(p_tag IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
-- Pas op: in de onrgoednode wordt het attribuut zelf gezet (want meerdere attributen)
|
|
createopentagattributes (p_tag, 'mode', 'concise', NULL, NULL, NULL, NULL, NULL, NULL);
|
|
END;
|
|
-- * createXMLtagValue
|
|
-- * function to return a complex XML node including up to 4 attributes
|
|
-- * use the null value in the attrNameX argument for empty attributes
|
|
PROCEDURE createopentagattributes (
|
|
p_tag IN VARCHAR2,
|
|
p_attrname1 IN VARCHAR2,
|
|
p_attrvalue1 IN VARCHAR2,
|
|
p_attrname2 IN VARCHAR2,
|
|
p_attrvalue2 IN VARCHAR2,
|
|
p_attrname3 IN VARCHAR2,
|
|
p_attrvalue3 IN VARCHAR2,
|
|
p_attrname4 IN VARCHAR2,
|
|
p_attrvalue4 IN VARCHAR2
|
|
)
|
|
AS
|
|
v_return VARCHAR2 (5000);
|
|
BEGIN
|
|
v_return := '<' || p_tag;
|
|
IF p_attrname1 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || ' ' || p_attrname1 || '=';
|
|
IF p_attrvalue1 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || '"' || char_to_html (p_attrvalue1) || '"';
|
|
ELSE
|
|
v_return := v_return || '""';
|
|
END IF;
|
|
END IF;
|
|
IF p_attrname2 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || ' ' || p_attrname2 || '=';
|
|
IF p_attrvalue2 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || '"' || char_to_html (p_attrvalue2) || '"';
|
|
ELSE
|
|
v_return := v_return || '""';
|
|
END IF;
|
|
END IF;
|
|
IF p_attrname3 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || ' ' || p_attrname3 || '=';
|
|
IF p_attrvalue3 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || '"' || char_to_html (p_attrvalue3) || '"';
|
|
ELSE
|
|
v_return := v_return || '""';
|
|
END IF;
|
|
END IF;
|
|
IF p_attrname4 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || ' ' || p_attrname4 || '=';
|
|
IF p_attrvalue4 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || '"' || char_to_html (p_attrvalue4) || '"';
|
|
ELSE
|
|
v_return := v_return || '""';
|
|
END IF;
|
|
END IF;
|
|
v_return := v_return || '>' || CHR (10);
|
|
addvarchartoclob (v_return);
|
|
END;
|
|
PROCEDURE createclosetag (p_tag IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
IF p_tag IS NULL
|
|
THEN
|
|
addvarchartoclob ('</>');
|
|
ELSE
|
|
addvarchartoclob ('</' || p_tag || '>' || CHR (10));
|
|
END IF;
|
|
END;
|
|
-- * createXMLtagValue
|
|
-- * function to return a simple XML node without attributes
|
|
-- * Per 5.1.3 empty nodes are skipped!!!
|
|
PROCEDURE createxmltagvalue (p_tag IN VARCHAR2, p_value IN VARCHAR2)
|
|
AS
|
|
v_value VARCHAR2 (5000);
|
|
v_return VARCHAR2 (5000);
|
|
BEGIN
|
|
IF p_value IS NULL
|
|
THEN
|
|
RETURN;
|
|
END IF;
|
|
v_value := char_to_html (p_value);
|
|
v_return := '<' || p_tag || '>';
|
|
v_return := v_return || v_value;
|
|
v_return := v_return || '</' || p_tag || '> ' || CHR (10);
|
|
addvarchartoclob (v_return);
|
|
END;
|
|
-- * createXMLtagValue
|
|
-- * function to return a complex XML node including up to 5 attributes
|
|
-- * use the NULL value in the attrnameX argument for empty attributes
|
|
-- * used for Kenmerk-nodes; the xmlnode includes optional details when
|
|
-- * it is a reference to another node
|
|
-- * Per 5.1.3 empty attributes are skipped!!!
|
|
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_xmlnode IN VARCHAR2,
|
|
p_value IN VARCHAR2
|
|
)
|
|
AS
|
|
v_value VARCHAR2 (5000);
|
|
v_return VARCHAR2 (5000);
|
|
BEGIN
|
|
v_return := '<' || p_tag;
|
|
IF p_attrname1 IS NOT NULL AND p_attrvalue1 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || ' ' || p_attrname1 || '=';
|
|
IF p_attrvalue1 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || '"' || char_to_html (p_attrvalue1) || '"';
|
|
ELSE
|
|
v_return := v_return || '""';
|
|
END IF;
|
|
END IF;
|
|
IF p_attrname2 IS NOT NULL AND p_attrvalue2 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || ' ' || p_attrname2 || '=';
|
|
IF p_attrvalue2 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || '"' || char_to_html (p_attrvalue2) || '"';
|
|
ELSE
|
|
v_return := v_return || '""';
|
|
END IF;
|
|
END IF;
|
|
IF p_attrname3 IS NOT NULL AND p_attrvalue3 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || ' ' || p_attrname3 || '=';
|
|
IF p_attrvalue3 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || '"' || char_to_html (p_attrvalue3) || '"';
|
|
ELSE
|
|
v_return := v_return || '""';
|
|
END IF;
|
|
END IF;
|
|
IF p_attrname4 IS NOT NULL AND p_attrvalue4 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || ' ' || p_attrname4 || '=';
|
|
IF p_attrvalue4 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || '"' || char_to_html (p_attrvalue4) || '"';
|
|
ELSE
|
|
v_return := v_return || '""';
|
|
END IF;
|
|
END IF;
|
|
IF p_attrname5 IS NOT NULL AND p_attrvalue5 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || ' ' || p_attrname5 || '=';
|
|
IF p_attrvalue5 IS NOT NULL
|
|
THEN
|
|
v_return := v_return || '"' || char_to_html (p_attrvalue5) || '"';
|
|
ELSE
|
|
v_return := v_return || '""';
|
|
END IF;
|
|
END IF;
|
|
IF p_xmlnode IS NOT NULL
|
|
THEN
|
|
v_return := v_return || ' xmlnode=' || '"' || char_to_html (p_xmlnode) || '"';
|
|
END IF;
|
|
v_return := v_return || '>';
|
|
|
|
-- Alleen uitstapjes naar xmlnode-kenmerken toegestaan vanaf de basis!
|
|
IF p_value IS NOT NULL AND p_xmlnode IS NOT NULL AND xmlnode_depth = 0
|
|
THEN
|
|
addvarchartoclob (v_return); -- Tussenresultaat; nog geen waarde en sluithaakje
|
|
-- Plak nu xmlnode-kenmerk direct in het resultaat (als side effect)
|
|
xmlnode_depth := xmlnode_depth + 1; -- Increment depth; even van het pad af!
|
|
xml_node (p_xmlnode, fac.safe_to_number (p_value), NULL, NULL, NULL, NULL, TRUE);
|
|
xmlnode_depth := xmlnode_depth - 1; -- Decrement depth; terug naar de basis!
|
|
ELSE
|
|
IF p_value IS NULL
|
|
THEN
|
|
v_value := '';
|
|
ELSE
|
|
v_value := p_value;
|
|
END IF;
|
|
v_return := v_return || char_to_html (v_value);
|
|
addvarchartoclob (v_return); -- Tussenresultaat met waarde / zonder sluithaakje
|
|
END IF;
|
|
-- En het sluithaakje (na xmlnode-kenmerk of tussenresultaat hierboven)
|
|
v_return := '</' || p_tag || '> ' || CHR (10);
|
|
addvarchartoclob (v_return);
|
|
END;
|
|
-- *
|
|
-- * Create the header node including the timestamps.
|
|
-- *
|
|
PROCEDURE createheadernode (p_custid IN VARCHAR2)
|
|
AS
|
|
v_value VARCHAR2 (30);
|
|
BEGIN
|
|
createopentagattributes ('header', 'revision', SUBSTR('$Revision$',12,3), NULL, NULL, NULL, NULL, NULL, NULL);
|
|
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'));
|
|
--SELECT user INTO v_value FROM DUAL;
|
|
createxmltagvalue ('user', USER);
|
|
createxmltagvalue ('custId', p_custid);
|
|
createxmltagvalue ('language', lcl.getuserlanguage());
|
|
v_value := fac.getdbversion();
|
|
createxmltagvalue ('version', v_value);
|
|
createclosetag ('header');
|
|
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 NVL (fa5.prs_kenmerklink_waarde,
|
|
NVL (fa4.prs_kenmerklink_waarde,
|
|
NVL (fa3.prs_kenmerklink_waarde,
|
|
NVL (fa2.prs_kenmerklink_waarde,
|
|
NVL (fa1.prs_kenmerklink_waarde, abd.mld_adres_key_fac)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
FROM prs_bedrijf abd,
|
|
mld_opdr o,
|
|
mld_melding m,
|
|
prs_v_afdeling_boom a,
|
|
prs_perslid p,
|
|
prs_v_aanwezigkenmerklink fa1,
|
|
prs_v_aanwezigkenmerklink fa2,
|
|
prs_v_aanwezigkenmerklink fa3,
|
|
prs_v_aanwezigkenmerklink fa4,
|
|
prs_v_aanwezigkenmerklink fa5
|
|
WHERE abd.prs_bedrijf_key = a.prs_bedrijf_key
|
|
AND p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND fa5.prs_kenmerk_key(+) = 6
|
|
AND a.prs_afdeling_key5 = fa5.prs_link_key(+)
|
|
AND fa4.prs_kenmerk_key(+) = 6
|
|
AND a.prs_afdeling_key4 = fa4.prs_link_key(+)
|
|
AND fa3.prs_kenmerk_key(+) = 6
|
|
AND a.prs_afdeling_key3 = fa3.prs_link_key(+)
|
|
AND fa2.prs_kenmerk_key(+) = 6
|
|
AND a.prs_afdeling_key2 = fa2.prs_link_key(+)
|
|
AND fa1.prs_kenmerk_key(+) = 6
|
|
AND a.prs_afdeling_key1 = fa1.prs_link_key(+)
|
|
AND p.prs_perslid_key = m.prs_perslid_key
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND o.mld_opdr_key = o_key);
|
|
factuuradresfound := 1;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
factuuradresfound := 0;
|
|
END;
|
|
END;
|
|
IF factuuradresfound = 1
|
|
THEN
|
|
create_mld_adres_node (v_adres_key, 'factuuradres', TRUE);
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
-- *
|
|
-- * FAC
|
|
-- *
|
|
PROCEDURE create_fac_tracking_node (pxmlnodename IN VARCHAR2, p_refkey IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT t.fac_tracking_datum, t.fac_tracking_oms, t.prs_perslid_key, st.fac_srtnotificatie_code
|
|
FROM fac_tracking t, fac_srtnotificatie st
|
|
WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key
|
|
AND st.fac_srtnotificatie_xmlnode = pxmlnodename
|
|
AND t.fac_tracking_refkey = p_refkey
|
|
ORDER BY fac_tracking_datum;
|
|
BEGIN
|
|
IF p_refkey IS NOT NULL
|
|
THEN
|
|
createopentag ('tracking');
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
createopentagattributes('track', 'code', rec1.fac_srtnotificatie_code, null, null, null, null, null, null);
|
|
mydatetochar ('datum', rec1.fac_tracking_datum);
|
|
create_prs_perslid_node (rec1.prs_perslid_key, 'user', TRUE);
|
|
createxmltagvalue ('code', rec1.fac_srtnotificatie_code);
|
|
createxmltagvalue ('omschrijving', rec1.fac_tracking_oms);
|
|
createclosetag ('track');
|
|
END LOOP;
|
|
createclosetag ('tracking');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_fac_activiteit_node (p_key IN NUMBER)
|
|
AS
|
|
v_perslid_key fac_activiteit.prs_perslid_key%TYPE;
|
|
v_user_key fac_activiteit.fac_activiteit_user_key%TYPE;
|
|
v_eerste fac_activiteit.fac_activiteit_eerste%TYPE;
|
|
v_laatste fac_activiteit.fac_activiteit_laatste%TYPE;
|
|
v_volgende fac_activiteit.fac_activiteit_volgende%TYPE;
|
|
v_xmlnode fac_activiteit.fac_activiteit_xmlnode%TYPE;
|
|
v_interval fac_activiteit.fac_activiteit_interval%TYPE;
|
|
v_aantal fac_activiteit.fac_activiteit_aantal%TYPE;
|
|
v_einddatum fac_activiteit.fac_activiteit_einddatum%TYPE;
|
|
v_aanmaak fac_activiteit.fac_activiteit_aanmaak%TYPE;
|
|
v_verwijder fac_activiteit.fac_activiteit_verwijder%TYPE;
|
|
v_status_key fac_activiteit.fac_activiteit_status_key%TYPE;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
createopentag ('activiteit');
|
|
SELECT prs_perslid_key, fac_activiteit_user_key, fac_activiteit_eerste, fac_activiteit_laatste,
|
|
fac_activiteit_volgende, fac_activiteit_xmlnode, fac_activiteit_interval, fac_activiteit_aantal,
|
|
fac_activiteit_einddatum, fac_activiteit_aanmaak, fac_activiteit_verwijder, fac_activiteit_status_key
|
|
INTO v_perslid_key, v_user_key, v_eerste, v_laatste,
|
|
v_volgende, v_xmlnode, v_interval, v_aantal,
|
|
v_einddatum, v_aanmaak, v_verwijder, v_status_key
|
|
FROM fac_activiteit
|
|
WHERE fac_activiteit_key = p_key;
|
|
create_prs_perslid_node (v_perslid_key, 'aanvrager', TRUE);
|
|
--v_user_key,
|
|
mydatetochar ('eerste', v_eerste);
|
|
mydatetochar ('laatste', v_laatste);
|
|
mydatetochar ('volgende', v_volgende);
|
|
createxmltagvalue ('xmlnode', v_xmlnode);
|
|
createxmltagvalue ('interval', v_interval);
|
|
createxmltagvalue ('aantal', v_aantal);
|
|
mydatetochar ('einddatum', v_einddatum);
|
|
createxmltagvalue ('status', v_status_key);
|
|
createclosetag ('activiteit');
|
|
END IF;
|
|
END;
|
|
-- *
|
|
-- * PRS
|
|
-- *
|
|
PROCEDURE create_prs_kostenplaats_node (p_key IN NUMBER)
|
|
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_groep prs_kostenplaatsgrp.prs_kostenplaatsgrp_oms%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, g.prs_kostenplaatsgrp_oms
|
|
INTO v_nr, v_omschrijving, v_prs_perslid_key, v_begin,
|
|
v_eind, v_module, v_groep
|
|
FROM prs_kostenplaats k, prs_kostenplaatsgrp g
|
|
WHERE g.prs_kostenplaatsgrp_key(+) = k.prs_kostenplaatsgrp_key
|
|
AND 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 ('groep', v_groep);
|
|
create_prs_perslid_node (v_prs_perslid_key, 'budgethouder', TRUE);
|
|
createclosetag ('kostenplaats');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_prs_kostensoort_node (p_key IN NUMBER)
|
|
AS
|
|
v_omschrijving prs_kostensoort.prs_kostensoort_oms%TYPE;
|
|
v_groep prs_kostensoortgrp.prs_kostensoortgrp_oms%TYPE;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
createopentag ('kostensoort');
|
|
SELECT k.prs_kostensoort_oms, g.prs_kostensoortgrp_oms
|
|
INTO v_omschrijving, v_groep
|
|
FROM prs_kostensoort k, prs_kostensoortgrp g
|
|
WHERE k.prs_kostensoortgrp_key = g.prs_kostensoortgrp_key(+)
|
|
AND k.prs_kostensoort_key = p_key;
|
|
createxmltagvalue ('key', mynumbertochar (p_key));
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('groep', v_groep);
|
|
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_omschrijving, k.prs_kenmerk_kenmerktype,
|
|
r.fac_kenmerkdomein_objectnaam, r.fac_kenmerkdomein_xmlnode, r.fac_kenmerkdomein_kolomnaam, r.fac_kenmerkdomein_kolomtxt, r.fac_usrtab_key,
|
|
k.prs_kenmerk_lengte, k.prs_kenmerk_dec, k.prs_kenmerk_nmin, k.prs_kenmerk_nmax,
|
|
k.prs_kenmerk_default, NVL (k.prs_kenmerk_volgnr, 0) volgnummer,
|
|
lcl.x('prs_kenmerk_dimensie', prs_kenmerk_key, prs_kenmerk_dimensie) dimensie,
|
|
lcl.x('prs_kenmerk_hint', prs_kenmerk_key, prs_kenmerk_hint) hint
|
|
FROM prs_kenmerk k, fac_kenmerkdomein r
|
|
WHERE k.prs_kenmerk_niveau = p_niveau AND k.prs_kenmerk_verwijder IS NULL AND k.fac_kenmerkdomein_key = r.fac_kenmerkdomein_key(+)
|
|
ORDER BY k.prs_kenmerk_volgnr;
|
|
v_kenmerk_waarde VARCHAR2 (1000);
|
|
v_ref_kenmerk_waarde VARCHAR2 (1000);
|
|
sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
SELECT v.prs_kenmerklink_waarde
|
|
INTO v_kenmerk_waarde
|
|
FROM prs_kenmerklink v
|
|
WHERE v.prs_link_key = p_key
|
|
AND v.prs_kenmerklink_niveau = p_niveau
|
|
AND v.prs_kenmerk_key = rec1.prs_kenmerk_key
|
|
AND v.prs_kenmerklink_verwijder IS NULL;
|
|
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
|
|
IF ((rec1.prs_kenmerk_kenmerktype = 'R' OR rec1.prs_kenmerk_kenmerktype = 'S') AND v_kenmerk_waarde IS NOT NULL AND (rec1.fac_kenmerkdomein_xmlnode IS NULL OR xmlnode_depth > 0))
|
|
THEN
|
|
sql_stmt :=
|
|
'SELECT MIN('
|
|
|| rec1.fac_kenmerkdomein_kolomtxt
|
|
|| ')'
|
|
|| ' FROM '
|
|
|| rec1.fac_kenmerkdomein_objectnaam
|
|
|| ' WHERE '
|
|
|| rec1.fac_kenmerkdomein_kolomnaam
|
|
|| ' = '
|
|
|| v_kenmerk_waarde;
|
|
EXECUTE IMMEDIATE sql_stmt
|
|
INTO v_ref_kenmerk_waarde;
|
|
v_kenmerk_waarde := v_ref_kenmerk_waarde;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF rec1.prs_kenmerk_kenmerktype = 'L'
|
|
THEN
|
|
v_kenmerk_waarde := rec1.prs_kenmerk_default;
|
|
ELSE
|
|
v_kenmerk_waarde := NULL;
|
|
END IF;
|
|
END;
|
|
createxmltagvalueattributes ('kenmerk',
|
|
'naam',
|
|
rec1.prs_kenmerk_omschrijving,
|
|
'type',
|
|
rec1.prs_kenmerk_kenmerktype,
|
|
'volgnummer',
|
|
rec1.volgnummer,
|
|
'key',
|
|
rec1.prs_kenmerk_key,
|
|
'dimensie',
|
|
rec1.dimensie,
|
|
rec1.fac_kenmerkdomein_xmlnode,
|
|
v_kenmerk_waarde
|
|
);
|
|
END LOOP;
|
|
END;
|
|
PROCEDURE create_prs_contactpersoon_node (p_key IN NUMBER)
|
|
AS
|
|
v_cp_naam prs_contactpersoon.prs_contactpersoon_naam%TYPE;
|
|
v_cp_voorletters prs_contactpersoon.prs_contactpersoon_voorletters%TYPE;
|
|
v_cp_voornaam prs_contactpersoon.prs_contactpersoon_voornaam%TYPE;
|
|
v_cp_aanhef prs_contactpersoon.prs_contactpersoon_aanhef%TYPE;
|
|
v_cp_telefoon1 prs_contactpersoon.prs_contactpersoon_telefoon_1%TYPE;
|
|
v_cp_telefoon2 prs_contactpersoon.prs_contactpersoon_telefoon_2%TYPE;
|
|
v_cp_fax prs_contactpersoon.prs_contactpersoon_fax%TYPE;
|
|
v_cp_email prs_contactpersoon.prs_contactpersoon_email%TYPE;
|
|
v_cp_opmerking prs_contactpersoon.prs_contactpersoon_opmerking%TYPE;
|
|
v_cp_tussenv prs_contactpersoon.prs_contactpersoon_tussenv%TYPE;
|
|
v_cp_functie prs_contactpersoon.prs_contactpersoon_functie%TYPE;
|
|
v_cp_titel prs_contactpersoon.prs_contactpersoon_titel%TYPE;
|
|
v_naam_full VARCHAR2(255);
|
|
CURSOR c1 IS
|
|
SELECT alg_locatie_key
|
|
FROM prs_contactpersoon_locatie
|
|
WHERE prs_contactpersoon_key = p_key;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
-- balen dat we contact_persoon hebben, en niet contactpersoon
|
|
createopentag ('contactpersoon');
|
|
SELECT prs_contactpersoon_naam, prs_contactpersoon_voorletters, prs_contactpersoon_voornaam,
|
|
prs_contactpersoon_aanhef, prs_contactpersoon_telefoon_1, prs_contactpersoon_telefoon_2,
|
|
prs_contactpersoon_fax, prs_contactpersoon_email, prs_contactpersoon_opmerking,
|
|
prs_contactpersoon_tussenv, prs_contactpersoon_functie, prs_contactpersoon_titel,
|
|
DECODE (prs_contactpersoon_aanhef, NULL, '', prs_contactpersoon_aanhef || ' ')
|
|
|| DECODE (prs_contactpersoon_voorletters, NULL, '', prs_contactpersoon_voorletters || ' ')
|
|
|| DECODE (prs_contactpersoon_tussenv, NULL, '', prs_contactpersoon_tussenv || ' ')
|
|
|| prs_contactpersoon_naam naam_full
|
|
INTO v_cp_naam, v_cp_voorletters, v_cp_voornaam,
|
|
v_cp_aanhef, v_cp_telefoon1, v_cp_telefoon2,
|
|
v_cp_fax, v_cp_email, v_cp_opmerking,
|
|
v_cp_tussenv, v_cp_functie, v_cp_titel, v_naam_full
|
|
FROM prs_contactpersoon
|
|
WHERE prs_contactpersoon_key = p_key;
|
|
createxmltagvalue ('key', mynumbertochar (p_key));
|
|
createxmltagvalue ('naam_full', v_naam_full);
|
|
createxmltagvalue ('naam', v_cp_naam);
|
|
createxmltagvalue ('voorletters', v_cp_voorletters);
|
|
createxmltagvalue ('voornaam', v_cp_voornaam);
|
|
createxmltagvalue ('aanhef', v_cp_aanhef);
|
|
createxmltagvalue ('telefoon1', v_cp_telefoon1);
|
|
createxmltagvalue ('telefoon2', v_cp_telefoon2);
|
|
createxmltagvalue ('fax', v_cp_fax);
|
|
createxmltagvalue ('email', v_cp_email);
|
|
createxmltagvalue ('opmerking', v_cp_opmerking);
|
|
createxmltagvalue ('tussenv', v_cp_tussenv);
|
|
createxmltagvalue ('functie', v_cp_functie);
|
|
createxmltagvalue ('titel', v_cp_titel);
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_alg_locatie_node (rec1.alg_locatie_key, NULL, NULL, NULL, NULL, FALSE);
|
|
END LOOP;
|
|
createclosetag ('contactpersoon');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_prs_bedrijf_node (p_bedrijf_key IN NUMBER, p_nodename IN VARCHAR2)
|
|
AS
|
|
v_naam prs_bedrijf.prs_bedrijf_naam%TYPE;
|
|
v_post_adres prs_bedrijf.prs_bedrijf_post_adres%TYPE;
|
|
v_post_postcode prs_bedrijf.prs_bedrijf_post_postcode%TYPE;
|
|
v_post_plaats prs_bedrijf.prs_bedrijf_post_plaats%TYPE;
|
|
v_post_land prs_bedrijf.prs_bedrijf_post_land%TYPE;
|
|
v_bezoek_adres prs_bedrijf.prs_bedrijf_bezoek_adres%TYPE;
|
|
v_bezoek_postcode prs_bedrijf.prs_bedrijf_bezoek_postcode%TYPE;
|
|
v_bezoek_plaats prs_bedrijf.prs_bedrijf_bezoek_plaats%TYPE;
|
|
v_bezoek_land prs_bedrijf.prs_bedrijf_bezoek_land%TYPE;
|
|
v_telefoon prs_bedrijf.prs_bedrijf_telefoon%TYPE;
|
|
v_fax prs_bedrijf.prs_bedrijf_fax%TYPE;
|
|
v_contact_persoon prs_bedrijf.prs_bedrijf_contact_persoon%TYPE;
|
|
v_contact_telefoon prs_bedrijf.prs_bedrijf_contact_telefoon%TYPE;
|
|
v_contact_fax prs_bedrijf.prs_bedrijf_fax%TYPE;
|
|
v_opmerking prs_bedrijf.prs_bedrijf_opmerking%TYPE;
|
|
v_uurloon prs_bedrijf.prs_bedrijf_uurloon%TYPE;
|
|
v_leverancier_nr prs_bedrijf.prs_leverancier_nr%TYPE;
|
|
v_overeenkomst_nr prs_bedrijf.prs_overeenkomst_nr%TYPE;
|
|
v_overeenkomst_datum prs_bedrijf.prs_overeenkomst_datum%TYPE;
|
|
v_leverancier prs_bedrijf.prs_bedrijf_leverancier%TYPE;
|
|
v_uitvoerende prs_bedrijf.prs_bedrijf_uitvoerende%TYPE;
|
|
v_contract prs_bedrijf.prs_bedrijf_contract%TYPE;
|
|
v_huurder prs_bedrijf.prs_bedrijf_huurder%TYPE;
|
|
v_intern prs_bedrijf.prs_bedrijf_intern%TYPE;
|
|
v_email prs_bedrijf.prs_bedrijf_email%TYPE;
|
|
v_xsl prs_bedrijf.prs_bedrijf_xsl%TYPE;
|
|
v_order_adres prs_bedrijf.prs_bedrijf_order_adres%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_order_mode prs_bedrijf.prs_bedrijf_order_mode%TYPE;
|
|
v_order_certificate prs_bedrijf.prs_bedrijf_order_certificate%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;
|
|
CURSOR c1 IS
|
|
SELECT prs_contactpersoon_key
|
|
FROM prs_contactpersoon
|
|
WHERE prs_bedrijf_key = p_bedrijf_key;
|
|
BEGIN
|
|
IF p_bedrijf_key IS NOT NULL
|
|
THEN
|
|
createopentag (p_nodename);
|
|
SELECT prs_bedrijf_naam, prs_bedrijf_post_adres, prs_bedrijf_post_postcode, prs_bedrijf_post_plaats,
|
|
prs_bedrijf_post_land, prs_bedrijf_bezoek_adres, prs_bedrijf_bezoek_postcode,
|
|
prs_bedrijf_bezoek_plaats, prs_bedrijf_bezoek_land, prs_bedrijf_telefoon, prs_bedrijf_fax,
|
|
prs_bedrijf_contact_persoon, prs_bedrijf_contact_telefoon, prs_bedrijf_contact_fax,
|
|
prs_bedrijf_opmerking, prs_bedrijf_uurloon, prs_leverancier_nr, prs_overeenkomst_nr,
|
|
prs_overeenkomst_datum, prs_bedrijf_leverancier, prs_bedrijf_uitvoerende, prs_bedrijf_contract,
|
|
prs_bedrijf_huurder, prs_bedrijf_intern, prs_bedrijf_email, prs_bedrijf_xsl, prs_bedrijf_order_adres,
|
|
prs_bedrijf_image_loc, prs_bedrijf_details_loc, prs_bedrijf_telefoon2, prs_bedrijf_opmerking2,
|
|
mld_adres_key_lev, mld_adres_key_fac, prs_bedrijf_order_mode, prs_bedrijf_order_certificate,
|
|
prs_bedrijf_xmldetails_loc, prs_bedrijf_bes_limiet, prs_bedrijf_bes_kosten
|
|
INTO v_naam, v_post_adres, v_post_postcode, v_post_plaats,
|
|
v_post_land, v_bezoek_adres, v_bezoek_postcode,
|
|
v_bezoek_plaats, v_bezoek_land, v_telefoon, v_fax,
|
|
v_contact_persoon, v_contact_telefoon, v_contact_fax,
|
|
v_opmerking, v_uurloon, v_leverancier_nr, v_overeenkomst_nr,
|
|
v_overeenkomst_datum, v_leverancier, v_uitvoerende, v_contract,
|
|
v_huurder, v_intern, v_email, v_xsl, v_order_adres,
|
|
v_image_loc, v_details_loc, v_telefoon2, v_opmerking2,
|
|
v_mld_adres_key_lev, v_mld_adres_key_fac, v_order_mode, v_order_certificate,
|
|
v_xmldetails_loc, v_bes_limiet, v_bes_kosten
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_key = p_bedrijf_key;
|
|
createxmltagvalue ('key', mynumbertochar (p_bedrijf_key));
|
|
createxmltagvalue ('naam', v_naam);
|
|
createxmltagvalue ('post_adres', v_post_adres);
|
|
createxmltagvalue ('post_postcode', v_post_postcode);
|
|
createxmltagvalue ('post_plaats', v_post_plaats);
|
|
createxmltagvalue ('post_land', v_post_land);
|
|
createxmltagvalue ('bezoek_adres', v_bezoek_adres);
|
|
createxmltagvalue ('bezoek_postcode', v_bezoek_postcode);
|
|
createxmltagvalue ('bezoek_plaats', v_bezoek_plaats);
|
|
createxmltagvalue ('bezoek_land', v_bezoek_land);
|
|
createxmltagvalue ('telefoon', v_telefoon);
|
|
createxmltagvalue ('fax', v_fax);
|
|
createxmltagvalue ('contact_persoon', v_contact_persoon);
|
|
createxmltagvalue ('contact_telefoon', v_contact_telefoon);
|
|
createxmltagvalue ('contact_fax', v_contact_fax);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
createxmltagvalue ('uurloon', v_uurloon);
|
|
createxmltagvalue ('leverancier_nr', v_leverancier_nr);
|
|
createxmltagvalue ('overeenkomst_nr', v_overeenkomst_nr);
|
|
createxmltagvalue ('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 ('xsl', v_xsl);
|
|
createxmltagvalue ('order_adres', v_order_adres);
|
|
createxmltagvalue ('order_mode', v_order_mode);
|
|
createxmltagvalue ('order_certificate', v_order_certificate);
|
|
createxmltagvalue ('xmldetails_loc', v_xmldetails_loc);
|
|
createxmltagvalue ('image_loc', v_image_loc);
|
|
createxmltagvalue ('details_loc', v_details_loc);
|
|
createxmltagvalue ('telefoon2', v_telefoon2);
|
|
createxmltagvalue ('opmerking2', v_opmerking2);
|
|
create_mld_adres_node (v_mld_adres_key_lev, 'afleveradres', TRUE);
|
|
create_mld_adres_node (v_mld_adres_key_fac, 'factuuradres', TRUE);
|
|
create_prs_kenmerken (p_bedrijf_key, 'B');
|
|
createxmltagvalue ('beslimiet', v_bes_limiet);
|
|
createxmltagvalue ('beskosten', v_bes_kosten);
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_prs_contactpersoon_node (rec1.prs_contactpersoon_key);
|
|
END LOOP;
|
|
createclosetag (p_nodename);
|
|
END IF;
|
|
END;
|
|
-- * create_PRS_AFDELING_node
|
|
-- *
|
|
--
|
|
PROCEDURE create_prs_afdeling_node (p_key IN NUMBER, p_nodename IN VARCHAR2)
|
|
AS
|
|
v_naam prs_afdeling.prs_afdeling_naam%TYPE;
|
|
v_omschrijving prs_afdeling.prs_afdeling_omschrijving%TYPE;
|
|
v_adres_key prs_afdeling.mld_adres_key%TYPE;
|
|
v_kostenplaats_key prs_afdeling.prs_kostenplaats_key%TYPE;
|
|
v_parentkey prs_afdeling.prs_afdeling_parentkey%TYPE;
|
|
v_naam1 prs_v_afdeling_fullnames.prs_afdeling_naam1%TYPE;
|
|
v_naam2 prs_v_afdeling_fullnames.prs_afdeling_naam2%TYPE;
|
|
v_naam3 prs_v_afdeling_fullnames.prs_afdeling_naam3%TYPE;
|
|
v_naam4 prs_v_afdeling_fullnames.prs_afdeling_naam4%TYPE;
|
|
v_naam5 prs_v_afdeling_fullnames.prs_afdeling_naam5%TYPE;
|
|
v_naam6 prs_v_afdeling_fullnames.prs_afdeling_naam6%TYPE;
|
|
v_bedrijf_key prs_afdeling.prs_bedrijf_key%TYPE;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
createopentag (p_nodename);
|
|
SELECT d.prs_afdeling_naam, d.prs_afdeling_omschrijving, d.mld_adres_key, d.prs_kostenplaats_key,
|
|
d.prs_afdeling_parentkey, af.prs_afdeling_naam1, af.prs_afdeling_naam2, af.prs_afdeling_naam3,
|
|
af.prs_afdeling_naam4, af.prs_afdeling_naam5, af.prs_afdeling_naam6, d.prs_bedrijf_key
|
|
INTO v_naam, v_omschrijving, v_adres_key, v_kostenplaats_key,
|
|
v_parentkey, v_naam1, v_naam2, v_naam3, v_naam4, v_naam5, v_naam6, v_bedrijf_key
|
|
FROM prs_afdeling d, prs_v_afdeling_fullnames af
|
|
WHERE d.prs_afdeling_key = af.prs_afdeling_key
|
|
AND d.prs_afdeling_key = p_key;
|
|
createxmltagvalue ('key', mynumbertochar (p_key));
|
|
createxmltagvalue ('naam', v_naam);
|
|
createxmltagvalue ('naam1', v_naam1);
|
|
createxmltagvalue ('naam2', v_naam2);
|
|
createxmltagvalue ('naam3', v_naam3);
|
|
createxmltagvalue ('naam4', v_naam4);
|
|
createxmltagvalue ('naam5', v_naam5);
|
|
createxmltagvalue ('naam6', v_naam6);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
create_prs_kostenplaats_node (v_kostenplaats_key);
|
|
create_mld_adres_node (v_adres_key, 'afleveradres', TRUE);
|
|
create_prs_kenmerken (p_key, 'A');
|
|
IF v_parentkey IS NOT NULL
|
|
THEN
|
|
create_prs_afdeling_node (v_parentkey, 'parent');
|
|
ELSE
|
|
create_prs_bedrijf_node (v_bedrijf_key, 'bedrijf');
|
|
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');
|
|
createclosetag ('srtperslid');
|
|
END IF;
|
|
END;
|
|
-- * create_PRS_PERSLID_node
|
|
-- * ?? do we include srtperslid here??
|
|
-- select xml.create_PRS_PERSLID_node(1042,'Persoon') FROM DUAL
|
|
PROCEDURE create_prs_perslid_node (p_key IN NUMBER, p_nodename IN VARCHAR2, p_concise IN BOOLEAN)
|
|
AS
|
|
v_titel prs_perslid.prs_perslid_titel%TYPE;
|
|
v_voorletters prs_perslid.prs_perslid_voorletters%TYPE;
|
|
v_naam prs_perslid.prs_perslid_naam%TYPE;
|
|
v_tussenvoegsel prs_perslid.prs_perslid_tussenvoegsel%TYPE;
|
|
v_voornaam prs_perslid.prs_perslid_voornaam%TYPE;
|
|
v_initialen prs_perslid.prs_perslid_initialen%TYPE;
|
|
v_nr prs_perslid.prs_perslid_nr%TYPE;
|
|
v_oslogin prs_perslid.prs_perslid_oslogin%TYPE;
|
|
v_oslogin2 prs_perslid.prs_perslid_oslogin2%TYPE;
|
|
v_opp prs_perslid.prs_perslid_opp%TYPE;
|
|
v_ingangsdatum prs_perslid.prs_perslid_ingangsdatum%TYPE;
|
|
v_einddatum prs_perslid.prs_perslid_einddatum%TYPE;
|
|
v_uurloon prs_perslid.prs_perslid_uurloon%TYPE;
|
|
v_telefoonnr prs_perslid.prs_perslid_telefoonnr%TYPE;
|
|
v_email prs_perslid.prs_perslid_email%TYPE;
|
|
v_mobiel prs_perslid.prs_perslid_mobiel%TYPE;
|
|
v_afdeling_key prs_perslid.prs_afdeling_key%TYPE;
|
|
v_naam_full prs_v_perslid_fullnames_all.prs_perslid_naam_full%TYPE;
|
|
v_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;
|
|
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
|
|
AND wp.prs_werkplek_verwijder IS NULL
|
|
AND pwp.prs_perslidwerkplek_verwijder IS NULL
|
|
ORDER BY 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
|
|
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
|
|
FROM prs_perslid p
|
|
WHERE prs_perslid_key = p_key;
|
|
SELECT prs_perslid_naam_full
|
|
INTO v_naam_full
|
|
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);
|
|
-- Fax zit nog bij de flexprops, die gaan we missen als we die weglaten
|
|
-- Er is een discussie mogelijk: concise bevat geen flexkenmerken vs. stylesheets gebruiken nu
|
|
-- flexkenmerken voor concise personen als backoffice_contact. We laten ze nog maar voor de zekerheid
|
|
create_prs_kenmerken (p_key, 'P');
|
|
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);
|
|
IF NOT p_concise
|
|
THEN
|
|
create_prs_srtperslid_node (v_srtperslid_key);
|
|
create_mld_adres_node (v_adres_key, 'afleveradres', TRUE);
|
|
createxmltagvalue ('oslogin', v_oslogin);
|
|
createxmltagvalue ('oslogin2', v_oslogin2);
|
|
createxmltagvalue ('opp', mynumbertochar (v_opp));
|
|
mydatetochar ('ingangsdatum', v_ingangsdatum);
|
|
mydatetochar ('einddatum', v_einddatum);
|
|
createxmltagvalue ('uurloon', mynumbertochar (v_uurloon));
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_prs_werkplek_node (rec1.prs_werkplek_key, p_key, p_concise); -- dus niet concise
|
|
END LOOP;
|
|
create_prs_afdeling_node (v_afdeling_key, 'afdeling');
|
|
createxmltagvalue ('srtnoti_mode', v_srtnoti_mode);
|
|
-- Profiel toevoegen
|
|
END IF;
|
|
createclosetag (p_nodename);
|
|
END IF;
|
|
END;
|
|
-- *
|
|
-- * create_PRS_WERKPLEK_node
|
|
-- *
|
|
PROCEDURE create_prs_werkplek_node (p_werkplek_key IN NUMBER, p_perslid_key IN NUMBER, p_concise IN BOOLEAN)
|
|
AS
|
|
v_perslidwerkplek_key prs_perslidwerkplek.prs_perslidwerkplek_key%TYPE;
|
|
v_prs_werkplek_key prs_werkplek.prs_werkplek_key%TYPE;
|
|
v_bezetting prs_perslidwerkplek.prs_perslidwerkplek_key%TYPE;
|
|
v_volgnr prs_werkplek.prs_werkplek_volgnr%TYPE;
|
|
v_omschrijving prs_werkplek.prs_werkplek_omschrijving%TYPE;
|
|
v_vastopp prs_werkplek.prs_werkplek_vastopp%TYPE;
|
|
v_opp prs_werkplek.prs_werkplek_opp%TYPE;
|
|
v_virtueel prs_werkplek.prs_werkplek_virtueel%TYPE;
|
|
v_alg_ruimte_key prs_werkplek.prs_alg_ruimte_key%TYPE;
|
|
v_pwpvolgnr prs_perslidwerkplek.prs_perslidwerkplek_volgnr%TYPE;
|
|
BEGIN
|
|
IF p_werkplek_key IS NOT NULL
|
|
THEN
|
|
IF p_perslid_key IS NULL
|
|
THEN
|
|
SELECT wp.prs_werkplek_key, SUM(pwp.prs_perslidwerkplek_bezetting), wp.prs_werkplek_volgnr,
|
|
wp.prs_werkplek_omschrijving, wp.prs_werkplek_vastopp, wp.prs_werkplek_opp, wp.prs_werkplek_virtueel,
|
|
wp.prs_alg_ruimte_key, NULL
|
|
INTO v_prs_werkplek_key, v_bezetting, v_volgnr,
|
|
v_omschrijving, v_vastopp, v_opp, v_virtueel,
|
|
v_alg_ruimte_key, v_pwpvolgnr
|
|
FROM prs_v_aanwezigperslidwerkplek pwp, prs_werkplek wp
|
|
WHERE pwp.prs_werkplek_key(+) = wp.prs_werkplek_key
|
|
AND wp.prs_werkplek_key = p_werkplek_key
|
|
GROUP BY wp.prs_werkplek_key, wp.prs_werkplek_volgnr,
|
|
wp.prs_werkplek_omschrijving, wp.prs_werkplek_vastopp, wp.prs_werkplek_opp, wp.prs_werkplek_virtueel,
|
|
wp.prs_alg_ruimte_key;
|
|
ELSE
|
|
SELECT wp.prs_werkplek_key, pwp.prs_perslidwerkplek_bezetting, wp.prs_werkplek_volgnr,
|
|
wp.prs_werkplek_omschrijving, wp.prs_werkplek_vastopp, wp.prs_werkplek_opp, wp.prs_werkplek_virtueel,
|
|
wp.prs_alg_ruimte_key, pwp.prs_perslidwerkplek_volgnr
|
|
INTO v_prs_werkplek_key, v_bezetting, v_volgnr,
|
|
v_omschrijving, v_vastopp, v_opp, v_virtueel,
|
|
v_alg_ruimte_key, v_pwpvolgnr
|
|
FROM prs_v_aanwezigperslidwerkplek pwp, prs_werkplek wp
|
|
WHERE pwp.prs_werkplek_key = wp.prs_werkplek_key
|
|
AND wp.prs_werkplek_key = p_werkplek_key
|
|
AND pwp.prs_perslid_key = p_perslid_key;
|
|
END IF;
|
|
IF p_concise THEN
|
|
createconciseopentag('werkplek');
|
|
ELSE
|
|
createopentag ('werkplek');
|
|
END IF;
|
|
createxmltagvalue ('key', v_prs_werkplek_key);
|
|
createxmltagvalue ('bezetting', v_bezetting);
|
|
createxmltagvalue ('volgnr', v_volgnr);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('vastopp', v_vastopp);
|
|
createxmltagvalue ('opp', v_opp);
|
|
createxmltagvalue ('virtueel', v_virtueel);
|
|
createxmltagvalue ('myvolgnr', v_pwpvolgnr);
|
|
create_alg_onroerendgoed_node (v_alg_ruimte_key, 'plaats', NULL, p_concise, FALSE);
|
|
createclosetag ('werkplek');
|
|
END IF;
|
|
END;
|
|
-- *
|
|
-- * ALG
|
|
-- *
|
|
PROCEDURE create_alg_srtgebouw_node (p_key IN NUMBER)
|
|
AS
|
|
v_omschrijving alg_srtgebouw.alg_srtgebouw_omschrijving%TYPE;
|
|
v_passief alg_srtgebouw.alg_srtgebouw_passief%TYPE;
|
|
v_verwijder alg_srtgebouw.alg_srtgebouw_verwijder%TYPE;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
SELECT lcl.x('alg_srtgebouw_omschrijving', alg_srtgebouw_key, alg_srtgebouw_omschrijving) alg_srtgebouw_omschrijving,
|
|
alg_srtgebouw_passief, alg_srtgebouw_verwijder
|
|
INTO v_omschrijving, v_passief, v_verwijder
|
|
FROM alg_srtgebouw
|
|
WHERE alg_srtgebouw_key = p_key;
|
|
createopentag ('srtgebouw');
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('passief', v_passief);
|
|
mydatetochar ('verwijder', v_verwijder);
|
|
createclosetag ('srtgebouw');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_alg_srtterreinsec_node (p_key IN NUMBER)
|
|
AS
|
|
v_omschrijving alg_srtterreinsector.alg_srtterreinsec_omschrijving%TYPE;
|
|
v_prijs alg_srtterreinsector.alg_srtterreinsector_prijs%TYPE;
|
|
v_verwijder alg_srtterreinsector.alg_srtterreinsector_verwijder%TYPE;
|
|
v_verhuurbaar alg_srtterreinsector.prs_verhuurbaar%TYPE;
|
|
v_code alg_srtterreinsector.alg_srtterreinsector_code%TYPE;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
SELECT lcl.x('alg_srtterreinsec_omschrijving', alg_srtterreinsector_key, alg_srtterreinsec_omschrijving) alg_srtterreinsec_omschrijving,
|
|
alg_srtterreinsector_prijs,
|
|
alg_srtterreinsector_verwijder, prs_verhuurbaar, alg_srtterreinsector_code
|
|
INTO v_omschrijving, v_prijs,
|
|
v_verwijder, v_verhuurbaar, v_code
|
|
FROM alg_srtterreinsector
|
|
WHERE alg_srtterreinsector_key = p_key;
|
|
createopentag ('srtterreinsector');
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('code', v_code);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('prijs', v_prijs);
|
|
mydatetochar ('verwijder', v_verwijder);
|
|
createxmltagvalue ('verhuurbaar', v_verhuurbaar);
|
|
createclosetag ('srtterreinsector');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_alg_srtruimte_node (p_key IN NUMBER)
|
|
AS
|
|
v_omschrijving alg_srtruimte.alg_srtruimte_omschrijving%TYPE;
|
|
v_prijs alg_srtruimte.alg_srtruimte_prijs%TYPE;
|
|
v_verwijder alg_srtruimte.alg_srtruimte_verwijder%TYPE;
|
|
v_verhuurbaar alg_srtruimte.prs_verhuurbaar%TYPE;
|
|
v_code alg_srtruimte.alg_srtruimte_code%TYPE;
|
|
v_bevat_werkplek alg_srtruimte.prs_bevat_werkplek%TYPE;
|
|
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
|
|
INTO v_omschrijving, v_prijs, v_verwijder,
|
|
v_verhuurbaar, v_code, v_bevat_werkplek
|
|
FROM alg_srtruimte
|
|
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);
|
|
createclosetag ('srtruimte');
|
|
END IF;
|
|
END;
|
|
-- *
|
|
-- * ALG kenmerken
|
|
-- *
|
|
PROCEDURE create_alg_kenmerken (p_key IN NUMBER, p_niveau IN VARCHAR2)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT k.alg_kenmerk_key,
|
|
lcl.x('alg_kenmerk_omschrijving', alg_kenmerk_key, alg_kenmerk_omschrijving) alg_kenmerk_omschrijving,
|
|
k.alg_kenmerk_kenmerktype,
|
|
r.fac_kenmerkdomein_objectnaam, r.fac_kenmerkdomein_xmlnode, r.fac_kenmerkdomein_kolomnaam, r.fac_kenmerkdomein_kolomtxt, r.fac_usrtab_key,
|
|
k.alg_kenmerk_lengte, k.alg_kenmerk_dec, k.alg_kenmerk_nmin, k.alg_kenmerk_nmax,
|
|
k.alg_kenmerk_default, NVL (k.alg_kenmerk_volgnr, 0) volgnummer,
|
|
lcl.x('alg_kenmerk_dimensie', alg_kenmerk_key, alg_kenmerk_dimensie) dimensie,
|
|
lcl.x('alg_kenmerk_hint', alg_kenmerk_key, alg_kenmerk_hint) hint
|
|
FROM alg_kenmerk k, fac_kenmerkdomein r
|
|
WHERE k.alg_kenmerk_niveau = p_niveau AND k.alg_kenmerk_verwijder IS NULL AND k.fac_kenmerkdomein_key = r.fac_kenmerkdomein_key(+)
|
|
ORDER BY k.alg_kenmerk_volgnr;
|
|
v_kenmerk_waarde VARCHAR2 (1000);
|
|
v_ref_kenmerk_waarde VARCHAR2 (1000);
|
|
sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
SELECT v.alg_onrgoedkenmerk_waarde
|
|
INTO v_kenmerk_waarde
|
|
FROM alg_onrgoedkenmerk v
|
|
WHERE v.alg_onrgoed_key = p_key
|
|
AND v.alg_onrgoed_niveau = p_niveau
|
|
AND v.alg_kenmerk_key = rec1.alg_kenmerk_key
|
|
AND v.alg_onrgoedkenmerk_verwijder IS NULL;
|
|
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
|
|
IF ((rec1.alg_kenmerk_kenmerktype = 'R' OR rec1.alg_kenmerk_kenmerktype = 'S') AND v_kenmerk_waarde IS NOT NULL AND (rec1.fac_kenmerkdomein_xmlnode IS NULL OR xmlnode_depth > 0))
|
|
THEN
|
|
sql_stmt :=
|
|
'SELECT MIN('
|
|
|| rec1.fac_kenmerkdomein_kolomtxt
|
|
|| ')'
|
|
|| ' FROM '
|
|
|| rec1.fac_kenmerkdomein_objectnaam
|
|
|| ' WHERE '
|
|
|| rec1.fac_kenmerkdomein_kolomnaam
|
|
|| ' = '
|
|
|| v_kenmerk_waarde;
|
|
EXECUTE IMMEDIATE sql_stmt
|
|
INTO v_ref_kenmerk_waarde;
|
|
v_kenmerk_waarde := v_ref_kenmerk_waarde;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF rec1.alg_kenmerk_kenmerktype = 'L'
|
|
THEN
|
|
v_kenmerk_waarde := rec1.alg_kenmerk_default;
|
|
ELSE
|
|
v_kenmerk_waarde := NULL;
|
|
END IF;
|
|
END;
|
|
createxmltagvalueattributes ('kenmerk',
|
|
'naam',
|
|
rec1.alg_kenmerk_omschrijving,
|
|
'type',
|
|
rec1.alg_kenmerk_kenmerktype,
|
|
'volgnummer',
|
|
rec1.volgnummer,
|
|
'key',
|
|
rec1.alg_kenmerk_key,
|
|
'dimensie',
|
|
rec1.dimensie,
|
|
rec1.fac_kenmerkdomein_xmlnode,
|
|
v_kenmerk_waarde
|
|
);
|
|
END LOOP;
|
|
END;
|
|
-- * create_ALG_TERREINSECTOR_node
|
|
-- *
|
|
--
|
|
PROCEDURE create_alg_terreinsector_node (p_terreinsector_key IN NUMBER)
|
|
AS
|
|
v_omschrijving alg_terreinsector.alg_terreinsector_omschrijving%TYPE;
|
|
v_code alg_terreinsector.alg_terreinsector_code%TYPE;
|
|
v_naam alg_terreinsector.alg_terreinsector_naam%TYPE;
|
|
v_oppervlak alg_terreinsector.alg_terreinsector_oppervlak%TYPE;
|
|
v_omtrek alg_terreinsector.alg_terreinsector_omtrek%TYPE;
|
|
v_prs_kostenplaats_key alg_terreinsector.prs_kostenplaats_key%TYPE;
|
|
v_srtterreinsector_key alg_terreinsector.alg_srtterreinsector_key%TYPE;
|
|
v_ordernr alg_terreinsector.alg_terreinsector_ordernr%TYPE;
|
|
BEGIN
|
|
IF p_terreinsector_key IS NOT NULL
|
|
THEN
|
|
SELECT alg_terreinsector_omschrijving, alg_terreinsector_code, alg_terreinsector_naam,
|
|
alg_terreinsector_oppervlak, alg_terreinsector_omtrek, prs_kostenplaats_key, alg_srtterreinsector_key,
|
|
alg_terreinsector_ordernr
|
|
INTO v_omschrijving, v_code, v_naam,
|
|
v_oppervlak, v_omtrek, v_prs_kostenplaats_key, v_srtterreinsector_key,
|
|
v_ordernr
|
|
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);
|
|
create_alg_kenmerken (p_terreinsector_key, 'T');
|
|
create_alg_srtterreinsec_node(v_srtterreinsector_key);
|
|
-- Gaat anders veel te diep:: create_prs_kostenplaats_node (v_prs_kostenplaats_key);
|
|
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;
|
|
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
|
|
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
|
|
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);
|
|
IF v_dienstniveau_key IS NOT NULL
|
|
THEN
|
|
SELECT mld_dienstniveau_omschr
|
|
INTO v_mld_dienstniveau_oms
|
|
FROM mld_dienstniveau
|
|
WHERE mld_dienstniveau_key = v_dienstniveau_key;
|
|
createxmltagvalue ('mld_dienstniveau', v_mld_dienstniveau_oms);
|
|
END IF;
|
|
create_alg_kenmerken (p_ruimte_key, 'R');
|
|
create_alg_srtruimte_node(v_srtruimte_key);
|
|
createclosetag ('ruimte');
|
|
END IF;
|
|
END;
|
|
-- * create_ALG_VERDIEPING_node
|
|
-- *
|
|
-- * Indien p_withchildren TRUE is, dan worden zo mogelijk ook alle childrecords ingevoegd. Dat wordt groot!
|
|
PROCEDURE create_alg_verdieping_node (p_verdieping_key IN NUMBER, p_ruimte_key IN NUMBER, p_withchildren IN BOOLEAN)
|
|
AS
|
|
v_omschrijving alg_verdieping.alg_verdieping_omschrijving%TYPE;
|
|
v_volgnr alg_verdieping.alg_verdieping_volgnr%TYPE;
|
|
v_tekening alg_verdieping.alg_verdieping_tekening%TYPE;
|
|
v_in_bewerking alg_verdieping.alg_verdieping_in_bewerking%TYPE;
|
|
v_code alg_verdieping.alg_verdieping_code%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT r.alg_ruimte_key
|
|
FROM alg_ruimte r
|
|
WHERE alg_verdieping_key = p_verdieping_key AND r.alg_ruimte_verwijder IS NULL
|
|
ORDER BY r.alg_ruimte_nr;
|
|
BEGIN
|
|
IF p_verdieping_key IS NOT NULL
|
|
THEN
|
|
SELECT alg_verdieping_omschrijving, alg_verdieping_volgnr, alg_verdieping_tekening,
|
|
alg_verdieping_in_bewerking, alg_verdieping_code
|
|
INTO v_omschrijving, v_volgnr, v_tekening,
|
|
v_in_bewerking, v_code
|
|
FROM alg_verdieping
|
|
WHERE alg_verdieping_key = p_verdieping_key;
|
|
createopentag ('verdieping');
|
|
createxmltagvalue ('key', p_verdieping_key);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('volgnr', v_volgnr);
|
|
createxmltagvalue ('tekening', v_tekening);
|
|
createxmltagvalue ('in_bewerking', v_in_bewerking);
|
|
createxmltagvalue ('code', v_code);
|
|
create_alg_kenmerken (p_verdieping_key, 'V');
|
|
IF p_ruimte_key IS NOT NULL
|
|
THEN
|
|
create_alg_ruimte_node (p_ruimte_key);
|
|
ELSIF p_withchildren THEN
|
|
-- Maak dan een node aan voor ELKE ruimte in deze verdieping
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_alg_ruimte_node (rec1.alg_ruimte_key);
|
|
END LOOP;
|
|
END IF;
|
|
createclosetag ('verdieping');
|
|
END IF;
|
|
END;
|
|
-- * create_ALG_GEBOUW_node
|
|
-- *
|
|
--
|
|
PROCEDURE create_alg_gebouw_node (p_gebouw_key IN NUMBER, p_verdieping_key IN NUMBER, p_ruimte_key IN NUMBER, p_withchildren IN BOOLEAN)
|
|
AS
|
|
v_naam alg_gebouw.alg_gebouw_naam%TYPE;
|
|
v_code alg_gebouw.alg_gebouw_code%TYPE;
|
|
v_omschrijving alg_gebouw.alg_gebouw_omschrijving%TYPE;
|
|
v_bruto_vloeropp alg_gebouw.alg_gebouw_bruto_vloeropp%TYPE;
|
|
v_omtrek alg_gebouw.alg_gebouw_omtrek%TYPE;
|
|
v_inhoud alg_gebouw.alg_gebouw_inhoud%TYPE;
|
|
v_opmerking alg_gebouw.alg_gebouw_opmerking%TYPE;
|
|
v_srtgebouw_key alg_gebouw.alg_srtgebouw_key%TYPE;
|
|
v_ordernr alg_gebouw.alg_gebouw_ordernr%TYPE;
|
|
v_adres_key alg_gebouw.mld_adres_key%TYPE;
|
|
v_dwgx alg_gebouw.alg_gebouw_dwgx%TYPE;
|
|
v_dwgy alg_gebouw.alg_gebouw_dwgy%TYPE;
|
|
v_x alg_gebouw.alg_gebouw_x%TYPE;
|
|
v_y alg_gebouw.alg_gebouw_y%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT alg_verdieping_key
|
|
FROM alg_verdieping
|
|
WHERE alg_gebouw_key = p_gebouw_key AND alg_verdieping_verwijder IS NULL
|
|
ORDER BY alg_verdieping_volgnr;
|
|
BEGIN
|
|
IF p_gebouw_key IS NOT NULL
|
|
THEN
|
|
SELECT alg_gebouw_naam, alg_gebouw_code, alg_gebouw_omschrijving, alg_gebouw_bruto_vloeropp,
|
|
alg_gebouw_omtrek, alg_gebouw_inhoud, alg_gebouw_opmerking, alg_srtgebouw_key, alg_gebouw_ordernr,
|
|
mld_adres_key, alg_gebouw_dwgx, alg_gebouw_dwgy, alg_gebouw_x, alg_gebouw_y
|
|
INTO v_naam, v_code, v_omschrijving, v_bruto_vloeropp,
|
|
v_omtrek, v_inhoud, v_opmerking, v_srtgebouw_key, v_ordernr,
|
|
v_adres_key, v_dwgx, v_dwgy, v_x, v_y
|
|
FROM alg_gebouw
|
|
WHERE alg_gebouw_key = p_gebouw_key;
|
|
createopentag ('gebouw');
|
|
createxmltagvalue ('key', p_gebouw_key);
|
|
createxmltagvalue ('naam', v_naam);
|
|
createxmltagvalue ('code', v_code);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('bruto_vloeropp', v_bruto_vloeropp);
|
|
createxmltagvalue ('omtrek', v_omtrek);
|
|
createxmltagvalue ('inhoud', v_inhoud);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
createxmltagvalue ('ordernr', v_ordernr);
|
|
create_mld_adres_node (v_adres_key, 'afleveradres', TRUE);
|
|
create_alg_kenmerken (p_gebouw_key, 'G');
|
|
create_alg_srtgebouw_node(v_srtgebouw_key);
|
|
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);
|
|
createclosetag ('gebouw');
|
|
END IF;
|
|
END;
|
|
-- * create_ALG_LOCATIE_node
|
|
-- *
|
|
--
|
|
PROCEDURE create_alg_locatie_node (
|
|
p_locatie_key IN NUMBER,
|
|
p_gebouw_key IN NUMBER,
|
|
p_verdieping_key IN NUMBER,
|
|
p_ruimte_key IN NUMBER,
|
|
p_terreinsector_key IN NUMBER,
|
|
p_withchildren IN BOOLEAN
|
|
)
|
|
AS
|
|
v_code alg_locatie.alg_locatie_code%TYPE;
|
|
v_omschrijving alg_locatie.alg_locatie_omschrijving%TYPE;
|
|
v_adres alg_locatie.alg_locatie_adres%TYPE;
|
|
v_postcode alg_locatie.alg_locatie_postcode%TYPE;
|
|
v_plaats alg_locatie.alg_locatie_plaats%TYPE;
|
|
v_land alg_locatie.alg_locatie_land%TYPE;
|
|
v_post_adres alg_locatie.alg_locatie_post_adres%TYPE;
|
|
v_post_postcode alg_locatie.alg_locatie_post_postcode%TYPE;
|
|
v_post_plaats alg_locatie.alg_locatie_post_plaats%TYPE;
|
|
v_post_land alg_locatie.alg_locatie_post_land%TYPE;
|
|
v_tekening alg_locatie.alg_locatie_tekening%TYPE;
|
|
v_verantw alg_locatie.alg_locatie_verantw%TYPE;
|
|
v_verantw_tel alg_locatie.alg_locatie_verantw_tel%TYPE;
|
|
v_x alg_locatie.alg_locatie_x%TYPE;
|
|
v_y alg_locatie.alg_locatie_y%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT alg_gebouw_key
|
|
FROM alg_gebouw
|
|
WHERE alg_locatie_key = p_locatie_key AND alg_gebouw_verwijder IS NULL
|
|
ORDER BY alg_gebouw_upper;
|
|
CURSOR c2
|
|
IS
|
|
SELECT alg_terreinsector_key
|
|
FROM alg_terreinsector
|
|
WHERE alg_locatie_key = p_locatie_key AND alg_terreinsector_verwijder IS NULL
|
|
ORDER BY alg_terreinsector_code;
|
|
BEGIN
|
|
IF p_locatie_key IS NOT NULL
|
|
THEN
|
|
SELECT alg_locatie_code, alg_locatie_omschrijving, alg_locatie_adres, alg_locatie_postcode,
|
|
alg_locatie_plaats, alg_locatie_land, alg_locatie_post_adres, alg_locatie_post_postcode,
|
|
alg_locatie_post_plaats, alg_locatie_post_land, alg_locatie_tekening, alg_locatie_verantw,
|
|
alg_locatie_verantw_tel, alg_locatie_x, alg_locatie_y
|
|
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
|
|
FROM alg_locatie
|
|
WHERE alg_locatie_key = p_locatie_key;
|
|
createopentag ('locatie');
|
|
createxmltagvalue ('key', p_locatie_key);
|
|
createxmltagvalue ('code', v_code);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('adres', v_adres);
|
|
createxmltagvalue ('postcode', v_postcode);
|
|
createxmltagvalue ('plaats', v_plaats);
|
|
createxmltagvalue ('post_land', v_land);
|
|
createxmltagvalue ('post_adres', v_post_adres);
|
|
createxmltagvalue ('post_postcode', v_post_postcode);
|
|
createxmltagvalue ('post_plaats', v_post_plaats);
|
|
createxmltagvalue ('post_land', v_post_land);
|
|
createxmltagvalue ('tekening', v_tekening);
|
|
createxmltagvalue ('verantw', v_verantw);
|
|
createxmltagvalue ('verantw_tel', v_verantw_tel);
|
|
create_alg_kenmerken (p_locatie_key, 'L');
|
|
IF p_gebouw_key IS NOT NULL
|
|
THEN
|
|
create_alg_gebouw_node (p_gebouw_key, p_verdieping_key, p_ruimte_key, p_withchildren);
|
|
ELSE
|
|
IF p_terreinsector_key IS NOT NULL
|
|
THEN
|
|
create_alg_terreinsector_node (p_terreinsector_key);
|
|
ELSIF p_withchildren THEN
|
|
FOR rec2 IN c2
|
|
LOOP
|
|
create_alg_terreinsector_node (rec2.alg_terreinsector_key);
|
|
END LOOP;
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_alg_gebouw_node (rec1.alg_gebouw_key, p_verdieping_key, p_ruimte_key, p_withchildren);
|
|
END LOOP;
|
|
END IF;
|
|
END IF;
|
|
createxmltagvalue ('x', v_x);
|
|
createxmltagvalue ('y', v_y);
|
|
createclosetag ('locatie');
|
|
END IF;
|
|
END;
|
|
-- * create_ALG_DISTRICT_node
|
|
-- *
|
|
--
|
|
PROCEDURE create_alg_district_node (
|
|
p_district_key IN NUMBER,
|
|
p_locatie_key IN NUMBER,
|
|
p_gebouw_key IN NUMBER,
|
|
p_verdieping_key IN NUMBER,
|
|
p_ruimte_key IN NUMBER,
|
|
p_terreinsector_key IN NUMBER,
|
|
p_withchildren IN BOOLEAN
|
|
)
|
|
AS
|
|
v_omschrijving alg_district.alg_district_omschrijving%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT alg_locatie_key
|
|
FROM alg_locatie
|
|
WHERE alg_district_key = p_district_key AND alg_locatie_verwijder IS NULL
|
|
ORDER BY alg_locatie_code;
|
|
BEGIN
|
|
IF p_district_key IS NOT NULL
|
|
THEN
|
|
SELECT alg_district_omschrijving
|
|
INTO v_omschrijving
|
|
FROM alg_district
|
|
WHERE alg_district_key = p_district_key;
|
|
createopentag ('district');
|
|
createxmltagvalue ('key', p_district_key);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
create_alg_kenmerken (p_district_key, 'D');
|
|
IF p_locatie_key IS NOT NULL
|
|
THEN
|
|
create_alg_locatie_node (p_locatie_key, p_gebouw_key, p_verdieping_key, p_ruimte_key, p_terreinsector_key, p_withchildren);
|
|
ELSIF p_withchildren THEN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_alg_locatie_node (rec1.alg_locatie_key,
|
|
p_gebouw_key,
|
|
p_verdieping_key,
|
|
p_ruimte_key,
|
|
p_terreinsector_key,
|
|
p_withchildren
|
|
);
|
|
END LOOP;
|
|
END IF;
|
|
createclosetag ('district');
|
|
END IF;
|
|
END;
|
|
-- * create_ALG_REGIO_node
|
|
-- *
|
|
--
|
|
PROCEDURE create_alg_regio_node (
|
|
p_regio_key IN NUMBER,
|
|
p_district_key IN NUMBER,
|
|
p_locatie_key IN NUMBER,
|
|
p_gebouw_key IN NUMBER,
|
|
p_verdieping_key IN NUMBER,
|
|
p_ruimte_key IN NUMBER,
|
|
p_terreinsector_key IN NUMBER,
|
|
p_withchildren IN BOOLEAN
|
|
)
|
|
AS
|
|
v_omschrijving alg_regio.alg_regio_omschrijving%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT alg_district_key
|
|
FROM alg_district
|
|
WHERE alg_regio_key = p_regio_key AND alg_district_verwijder IS NULL
|
|
ORDER BY alg_district_upper;
|
|
BEGIN
|
|
IF p_regio_key IS NOT NULL
|
|
THEN
|
|
SELECT alg_regio_omschrijving
|
|
INTO v_omschrijving
|
|
FROM alg_regio
|
|
WHERE alg_regio_key = p_regio_key;
|
|
createopentag ('regio');
|
|
createxmltagvalue ('key', p_regio_key);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
IF p_district_key IS NOT NULL
|
|
THEN
|
|
create_alg_district_node (p_district_key,
|
|
p_locatie_key,
|
|
p_gebouw_key,
|
|
p_verdieping_key,
|
|
p_ruimte_key,
|
|
p_terreinsector_key,
|
|
p_withchildren
|
|
);
|
|
ELSIF p_withchildren THEN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_alg_district_node (rec1.alg_district_key,
|
|
p_locatie_key,
|
|
p_gebouw_key,
|
|
p_verdieping_key,
|
|
p_ruimte_key,
|
|
p_terreinsector_key,
|
|
p_withchildren
|
|
);
|
|
END LOOP;
|
|
END IF;
|
|
createclosetag ('regio');
|
|
END IF;
|
|
END;
|
|
-- * create_ALG_ONRGOED_node
|
|
-- *
|
|
--
|
|
PROCEDURE create_alg_onroerendgoed_node (
|
|
p_key IN NUMBER,
|
|
p_nodename IN VARCHAR2,
|
|
p_lockey IN NUMBER,
|
|
p_concise IN BOOLEAN,
|
|
p_withchildren IN BOOLEAN
|
|
)
|
|
AS
|
|
v_terreinsector_key alg_terreinsector.alg_terreinsector_key%TYPE;
|
|
v_ruimte_key alg_ruimte.alg_ruimte_key%TYPE;
|
|
v_verdieping_key alg_verdieping.alg_verdieping_key%TYPE;
|
|
v_gebouw_key alg_gebouw.alg_gebouw_key%TYPE;
|
|
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
|
|
v_district_key alg_district.alg_district_key%TYPE;
|
|
v_regio_key alg_regio.alg_regio_key%TYPE;
|
|
v_type VARCHAR2 (1);
|
|
v_plaatsaanduiding alg_v_plaatsaanduiding.alg_plaatsaanduiding%TYPE;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
IF p_lockey IS NOT NULL
|
|
THEN
|
|
SELECT alg_locatie_code, 'L'
|
|
INTO v_plaatsaanduiding, v_type
|
|
FROM alg_locatie
|
|
WHERE alg_locatie_key = p_lockey;
|
|
ELSE
|
|
SELECT alg_plaatsaanduiding, alg_onroerendgoed_type
|
|
INTO v_plaatsaanduiding, v_type
|
|
FROM alg_v_plaatsaanduiding_all
|
|
WHERE alg_onroerendgoed_keys = p_key
|
|
AND alg_onroerendgoed_type <> 'L';
|
|
END IF;
|
|
IF NOT p_concise
|
|
THEN
|
|
BEGIN
|
|
IF p_lockey IS NOT NULL
|
|
THEN
|
|
SELECT NULL, NULL, NULL, NULL, l.alg_locatie_key,
|
|
d.alg_district_key, d.alg_regio_key, 'L'
|
|
INTO v_terreinsector_key, v_ruimte_key, v_verdieping_key, v_gebouw_key, v_locatie_key,
|
|
v_district_key, v_regio_key, v_type
|
|
FROM alg_locatie l, alg_district d
|
|
WHERE p_lockey = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key;
|
|
ELSE
|
|
SELECT aog.alg_terreinsector_key, aog.alg_ruimte_key, aog.alg_verdieping_key, aog.alg_gebouw_key,
|
|
aog.alg_locatie_key, d.alg_district_key, d.alg_regio_key, aog.alg_type
|
|
INTO v_terreinsector_key, v_ruimte_key, v_verdieping_key, v_gebouw_key,
|
|
v_locatie_key, v_district_key, v_regio_key, v_type
|
|
FROM alg_v_allonroerendgoed aog, alg_locatie l, alg_district d
|
|
WHERE p_key = aog.alg_onroerendgoed_keys
|
|
AND aog.alg_locatie_key = l.alg_locatie_key
|
|
AND l.alg_district_key = d.alg_district_key;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
SELECT NULL, NULL, NULL, NULL, l.alg_locatie_key,
|
|
d.alg_district_key, d.alg_regio_key, 'L'
|
|
INTO v_terreinsector_key, v_ruimte_key, v_verdieping_key, v_gebouw_key, v_locatie_key,
|
|
v_district_key, v_regio_key, v_type
|
|
FROM alg_locatie l, alg_district d
|
|
WHERE p_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key;
|
|
END;
|
|
END IF;
|
|
IF p_concise THEN
|
|
createopentagattributes (p_nodename, 'type', v_type, 'mode', 'concise', NULL, NULL, NULL, NULL);
|
|
ELSE
|
|
createopentagattributes (p_nodename, 'type', v_type, NULL, NULL, NULL, NULL, NULL, NULL);
|
|
END IF;
|
|
createxmltagvalue ('plaatsaanduiding', v_plaatsaanduiding);
|
|
createxmltagvalue ('key', p_key);
|
|
IF NOT p_concise
|
|
THEN
|
|
create_alg_regio_node (v_regio_key,
|
|
v_district_key,
|
|
v_locatie_key,
|
|
v_gebouw_key,
|
|
v_verdieping_key,
|
|
v_ruimte_key,
|
|
v_terreinsector_key,
|
|
p_withchildren
|
|
);
|
|
END IF;
|
|
createclosetag (p_nodename);
|
|
END IF;
|
|
END;
|
|
-- *
|
|
-- * INS kenmerken
|
|
-- *
|
|
PROCEDURE create_ins_kenmerken (p_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT k.ins_kenmerk_key,
|
|
s.ins_srtkenmerk_omschrijving,
|
|
s.ins_srtkenmerk_kenmerktype,
|
|
r.fac_kenmerkdomein_objectnaam, r.fac_kenmerkdomein_xmlnode,
|
|
r.fac_kenmerkdomein_kolomnaam,
|
|
r.fac_kenmerkdomein_kolomtxt,
|
|
r.fac_usrtab_key,
|
|
s.ins_srtkenmerk_lengte,
|
|
s.ins_srtkenmerk_dec,
|
|
s.ins_srtkenmerk_nmin,
|
|
s.ins_srtkenmerk_nmax,
|
|
k.ins_kenmerk_default,
|
|
NVL (k.ins_kenmerk_volgnummer, 0) volgnummer,
|
|
lcl.x('ins_srtkenmerk_dimensie', s.ins_srtkenmerk_key, ins_srtkenmerk_dimensie) dimensie,
|
|
lcl.x('ins_kenmerk_hint', ins_kenmerk_key, ins_kenmerk_hint) hint
|
|
FROM ins_kenmerk k, ins_srtkenmerk s, fac_kenmerkdomein r, ins_deel d, ins_srtgroep sg, ins_srtdeel sd
|
|
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 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 s.fac_kenmerkdomein_key = r.fac_kenmerkdomein_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;
|
|
v_ref_kenmerk_waarde VARCHAR2 (1000);
|
|
sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
SELECT v.ins_kenmerkdeel_waarde, v.ins_kenmerkdeel_aanmaak, v.ins_kenmerkdeel_verwijder
|
|
INTO v_kenmerk_waarde, v_kenmerk_aanmaak, v_kenmerk_verwijder
|
|
FROM ins_kenmerkdeel v
|
|
WHERE v.ins_deel_key = p_key
|
|
AND v.ins_kenmerkdeel_verwijder IS NULL
|
|
AND v.ins_kenmerk_key = rec1.ins_kenmerk_key;
|
|
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
|
|
IF ((rec1.ins_srtkenmerk_kenmerktype = 'R' OR rec1.ins_srtkenmerk_kenmerktype = 'S') AND v_kenmerk_waarde IS NOT NULL AND (rec1.fac_kenmerkdomein_xmlnode IS NULL OR xmlnode_depth > 0))
|
|
THEN
|
|
sql_stmt :=
|
|
'SELECT MIN('
|
|
|| rec1.fac_kenmerkdomein_kolomtxt
|
|
|| ')'
|
|
|| ' FROM '
|
|
|| rec1.fac_kenmerkdomein_objectnaam
|
|
|| ' WHERE '
|
|
|| rec1.fac_kenmerkdomein_kolomnaam
|
|
|| ' = '
|
|
|| v_kenmerk_waarde;
|
|
EXECUTE IMMEDIATE sql_stmt INTO v_ref_kenmerk_waarde;
|
|
v_kenmerk_waarde := v_ref_kenmerk_waarde;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF rec1.ins_srtkenmerk_kenmerktype = 'L'
|
|
THEN
|
|
v_kenmerk_waarde := rec1.ins_kenmerk_default;
|
|
ELSE
|
|
v_kenmerk_waarde := NULL;
|
|
END IF;
|
|
END;
|
|
createxmltagvalueattributes ('kenmerk',
|
|
'naam',
|
|
rec1.ins_srtkenmerk_omschrijving,
|
|
'type',
|
|
rec1.ins_srtkenmerk_kenmerktype,
|
|
'volgnummer',
|
|
rec1.volgnummer,
|
|
'key',
|
|
rec1.ins_kenmerk_key,
|
|
'aanmaak',
|
|
TO_CHAR (v_kenmerk_aanmaak, 'YYYYMMDD HH24:MI'),
|
|
rec1.fac_kenmerkdomein_xmlnode,
|
|
v_kenmerk_waarde
|
|
);
|
|
END LOOP;
|
|
END;
|
|
-- * create_INS_DEEL_node
|
|
PROCEDURE create_ins_deel_node (p_key IN NUMBER)
|
|
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_vervaldatum ins_deel.ins_deel_vervaldatum%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.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_vervaldatum
|
|
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_vervaldatum
|
|
FROM ins_deel
|
|
WHERE ins_deel_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('binding', v_ins_alg_ruimte_type);
|
|
IF v_ins_alg_ruimte_type = 'R'
|
|
THEN
|
|
create_alg_onroerendgoed_node (v_ins_alg_ruimte_key, 'plaats', NULL, FALSE, FALSE);
|
|
ELSIF v_ins_alg_ruimte_type = 'P'
|
|
THEN
|
|
create_prs_perslid_node (v_ins_alg_ruimte_key, 'persoon', FALSE);
|
|
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, FALSE);
|
|
ELSIF v_ins_alg_ruimte_type = 'T'
|
|
THEN
|
|
create_alg_terreinsector_node (v_ins_alg_ruimte_key);
|
|
END IF;
|
|
createxmltagvalue ('aantal', v_aantal);
|
|
createxmltagvalue ('uitgeleend', v_ins_alg_ruimte_type_org); /* indicatie */
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
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);
|
|
mydatetochar ('vervaldatum', v_vervaldatum);
|
|
create_ins_kenmerken (p_key);
|
|
create_ins_srtdeel_node (v_ins_srtdeel_key, TRUE);
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_ins_deel_node (rec1.ins_deel_key);
|
|
END LOOP;
|
|
create_fac_tracking_node('deel', p_key);
|
|
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_omschrijving
|
|
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);
|
|
mydatetochar ('aanmaak', rec1.mld_melding_note_aanmaak);
|
|
createxmltagvalue ('omschrijving', rec1.mld_melding_note_omschrijving);
|
|
create_prs_perslid_node (rec1.prs_perslid_key, 'noteur', TRUE);
|
|
createclosetag ('note');
|
|
END LOOP;
|
|
createclosetag ('notes');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_mld_kenmerken (p_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT k.mld_kenmerk_key, s.mld_srtkenmerk_omschrijving, s.mld_srtkenmerk_kenmerktype,
|
|
r.fac_kenmerkdomein_objectnaam, r.fac_kenmerkdomein_xmlnode, r.fac_kenmerkdomein_kolomnaam, r.fac_kenmerkdomein_kolomtxt,
|
|
r.fac_usrtab_key, s.mld_srtkenmerk_lengte, s.mld_srtkenmerk_dec, s.mld_srtkenmerk_nmin,
|
|
s.mld_srtkenmerk_nmax, k.mld_kenmerk_default, NVL (k.mld_kenmerk_volgnummer, 0) volgnummer,
|
|
lcl.x('mld_srtkenmerk_dimensie', s.mld_srtkenmerk_key, mld_srtkenmerk_dimensie) dimensie,
|
|
lcl.x('mld_kenmerk_hint', mld_kenmerk_key, mld_kenmerk_hint) hint
|
|
FROM mld_kenmerk k, mld_srtkenmerk s, fac_kenmerkdomein r, mld_melding m, mld_stdmelding stdm, mld_discipline d
|
|
WHERE ( (stdm.mld_ins_discipline_key = k.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'D')
|
|
OR (m.mld_stdmelding_key = k.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')
|
|
OR (d.ins_srtdiscipline_key = k.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'T')
|
|
)
|
|
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 s.fac_kenmerkdomein_key = r.fac_kenmerkdomein_key(+)
|
|
ORDER BY k.mld_kenmerk_volgnummer;
|
|
v_kenmerk_waarde VARCHAR2 (1000);
|
|
v_ref_kenmerk_waarde VARCHAR2 (1000);
|
|
sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
SELECT v.mld_kenmerkmelding_waarde
|
|
INTO v_kenmerk_waarde
|
|
FROM mld_kenmerkmelding v
|
|
WHERE v.mld_melding_key = p_key
|
|
AND v.mld_kenmerkmelding_verwijder IS NULL
|
|
AND v.mld_kenmerk_key = rec1.mld_kenmerk_key;
|
|
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
|
|
IF ((rec1.mld_srtkenmerk_kenmerktype = 'R' OR rec1.mld_srtkenmerk_kenmerktype = 'S') AND v_kenmerk_waarde IS NOT NULL AND (rec1.fac_kenmerkdomein_xmlnode IS NULL OR xmlnode_depth > 0))
|
|
THEN
|
|
sql_stmt :=
|
|
'SELECT MIN('
|
|
|| rec1.fac_kenmerkdomein_kolomtxt
|
|
|| ')'
|
|
|| ' FROM '
|
|
|| rec1.fac_kenmerkdomein_objectnaam
|
|
|| ' WHERE '
|
|
|| rec1.fac_kenmerkdomein_kolomnaam
|
|
|| ' = '
|
|
|| v_kenmerk_waarde;
|
|
EXECUTE IMMEDIATE sql_stmt
|
|
INTO v_ref_kenmerk_waarde;
|
|
v_kenmerk_waarde := v_ref_kenmerk_waarde;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF rec1.mld_srtkenmerk_kenmerktype = 'L'
|
|
THEN
|
|
v_kenmerk_waarde := rec1.mld_kenmerk_default;
|
|
ELSE
|
|
v_kenmerk_waarde := NULL;
|
|
END IF;
|
|
END;
|
|
createxmltagvalueattributes ('kenmerk',
|
|
'naam',
|
|
rec1.mld_srtkenmerk_omschrijving,
|
|
'type',
|
|
rec1.mld_srtkenmerk_kenmerktype,
|
|
'volgnummer',
|
|
rec1.volgnummer,
|
|
'key',
|
|
rec1.mld_kenmerk_key,
|
|
'dimensie',
|
|
rec1.dimensie,
|
|
rec1.fac_kenmerkdomein_xmlnode,
|
|
v_kenmerk_waarde
|
|
);
|
|
END LOOP;
|
|
END;
|
|
-- *
|
|
-- * MLD OPDRACHT kenmerken
|
|
-- *
|
|
PROCEDURE create_mld_opdr_kenmerken (p_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT k.mld_kenmerk_key, s.mld_srtkenmerk_omschrijving, s.mld_srtkenmerk_kenmerktype,
|
|
r.fac_kenmerkdomein_objectnaam, r.fac_kenmerkdomein_xmlnode, r.fac_kenmerkdomein_kolomnaam, r.fac_kenmerkdomein_kolomtxt,
|
|
r.fac_usrtab_key, s.mld_srtkenmerk_lengte, s.mld_srtkenmerk_dec, s.mld_srtkenmerk_nmin,
|
|
s.mld_srtkenmerk_nmax, k.mld_kenmerk_default, NVL (k.mld_kenmerk_volgnummer, 0) volgnummer,
|
|
lcl.x('mld_srtkenmerk_dimensie', s.mld_srtkenmerk_key, mld_srtkenmerk_dimensie) dimensie,
|
|
lcl.x('mld_kenmerk_hint', mld_kenmerk_key, mld_kenmerk_hint) hint
|
|
FROM mld_kenmerk k, mld_srtkenmerk s, fac_kenmerkdomein r, mld_opdr o
|
|
WHERE o.mld_typeopdr_key = k.mld_typeopdr_key
|
|
AND o.mld_opdr_key = p_key
|
|
AND k.mld_kenmerk_verwijder IS NULL
|
|
AND s.mld_srtkenmerk_verwijder IS NULL
|
|
AND k.mld_srtkenmerk_key = s.mld_srtkenmerk_key
|
|
AND s.fac_kenmerkdomein_key = r.fac_kenmerkdomein_key(+)
|
|
ORDER BY k.mld_kenmerk_volgnummer;
|
|
rec1 c1%ROWTYPE;
|
|
v_kenmerk_waarde VARCHAR2 (1000);
|
|
v_ref_kenmerk_waarde VARCHAR2 (1000);
|
|
sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
SELECT v.mld_kenmerkopdr_waarde
|
|
INTO v_kenmerk_waarde
|
|
FROM mld_kenmerkopdr v
|
|
WHERE v.mld_opdr_key = p_key
|
|
AND v.mld_kenmerkopdr_verwijder IS NULL
|
|
AND v.mld_kenmerk_key = rec1.mld_kenmerk_key;
|
|
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
|
|
IF ((rec1.mld_srtkenmerk_kenmerktype = 'R' OR rec1.mld_srtkenmerk_kenmerktype = 'S') AND v_kenmerk_waarde IS NOT NULL AND (rec1.fac_kenmerkdomein_xmlnode IS NULL OR xmlnode_depth > 0))
|
|
THEN
|
|
sql_stmt :=
|
|
'SELECT MIN('
|
|
|| rec1.fac_kenmerkdomein_kolomtxt
|
|
|| ')'
|
|
|| ' FROM '
|
|
|| rec1.fac_kenmerkdomein_objectnaam
|
|
|| ' WHERE '
|
|
|| rec1.fac_kenmerkdomein_kolomnaam
|
|
|| ' = '
|
|
|| v_kenmerk_waarde;
|
|
EXECUTE IMMEDIATE sql_stmt
|
|
INTO v_ref_kenmerk_waarde;
|
|
v_kenmerk_waarde := v_ref_kenmerk_waarde;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF rec1.mld_srtkenmerk_kenmerktype = 'L'
|
|
THEN
|
|
v_kenmerk_waarde := rec1.mld_kenmerk_default;
|
|
ELSE
|
|
v_kenmerk_waarde := NULL;
|
|
END IF;
|
|
END;
|
|
createxmltagvalueattributes ('kenmerk',
|
|
'naam',
|
|
rec1.mld_srtkenmerk_omschrijving,
|
|
'type',
|
|
rec1.mld_srtkenmerk_kenmerktype,
|
|
'volgnummer',
|
|
rec1.volgnummer,
|
|
'key',
|
|
rec1.mld_kenmerk_key,
|
|
'dimensie',
|
|
rec1.dimensie,
|
|
rec1.fac_kenmerkdomein_xmlnode,
|
|
v_kenmerk_waarde
|
|
);
|
|
END LOOP;
|
|
END;
|
|
-- * create_MLD_UITVOERENDE_node
|
|
PROCEDURE create_mld_uitvoerende_node (p_uitvoerende_key IN NUMBER, p_nodename IN VARCHAR2)
|
|
AS
|
|
v_isbedrijf NUMBER (10);
|
|
BEGIN
|
|
IF p_uitvoerende_key IS NOT NULL
|
|
THEN
|
|
SELECT COUNT (prs_bedrijf_key)
|
|
INTO v_isbedrijf
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_key = p_uitvoerende_key;
|
|
IF v_isbedrijf = 0
|
|
THEN
|
|
createopentagattributes (p_nodename, 'niveau', 'P', NULL, NULL, NULL, NULL, NULL, NULL);
|
|
create_prs_perslid_node (p_uitvoerende_key, 'persoon', FALSE);
|
|
ELSE
|
|
createopentagattributes (p_nodename, 'niveau', 'B', NULL, NULL, NULL, NULL, NULL, NULL);
|
|
create_prs_bedrijf_node (p_uitvoerende_key, 'bedrijf');
|
|
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_matchtype mld_typeopdr.mld_typeopdr_matchtype%TYPE;
|
|
v_zichtbaarfe mld_typeopdr.mld_typeopdr_zichtbaarfe%TYPE;
|
|
v_afmelden_extern mld_typeopdr.mld_typeopdr_afmelden_extern%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_matchtype,
|
|
mld_typeopdr_afmeldmarge,
|
|
mld_typeopdr_zichtbaarfe,
|
|
mld_typeopdr_afmelden_extern
|
|
INTO v_omschrijving,
|
|
v_decentraal,
|
|
v_kosten,
|
|
v_sluitmelding,
|
|
v_matchtype,
|
|
v_afmeldmarge,
|
|
v_zichtbaarfe,
|
|
v_afmelden_extern
|
|
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 ('matchtype', v_matchtype);
|
|
createxmltagvalue ('afmeldmarge', v_afmeldmarge);
|
|
createxmltagvalue ('zichtbaarfe', v_zichtbaarfe);
|
|
createxmltagvalue ('afmelden_extern', v_afmelden_extern);
|
|
createclosetag ('opdrachttype');
|
|
END IF;
|
|
END;
|
|
-- * create_RES_DISC_PARAMS_node
|
|
PROCEDURE create_res_disc_params_node (p_discipline_key IN NUMBER)
|
|
AS
|
|
v_key res_disc_params.res_disc_params_key%TYPE;
|
|
v_preposttime res_disc_params.res_disc_params_preposttime%TYPE;
|
|
v_notify res_disc_params.res_disc_params_notify%TYPE;
|
|
BEGIN
|
|
IF p_discipline_key IS NOT NULL
|
|
THEN
|
|
BEGIN
|
|
SELECT res_disc_params_key, res_disc_params_preposttime, res_disc_params_notify
|
|
INTO v_key, v_preposttime, v_notify
|
|
FROM res_disc_params
|
|
WHERE res_ins_discipline_key = p_discipline_key;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_key := NULL;
|
|
END;
|
|
IF v_key IS NOT NULL
|
|
THEN
|
|
createopentag ('res');
|
|
createxmltagvalue ('key', v_key);
|
|
createxmltagvalue ('preposttime', v_preposttime);
|
|
createxmltagvalue ('notify', v_notify);
|
|
createclosetag ('res');
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
-- * create_CNT_DISC_PARAMS_node
|
|
PROCEDURE create_cnt_disc_params_node (p_discipline_key IN NUMBER)
|
|
AS
|
|
v_key cnt_disc_params.cnt_disc_params_key%TYPE;
|
|
v_srtcontract_type cnt_disc_params.cnt_srtcontract_type%TYPE;
|
|
v_factuurmarge cnt_disc_params.cnt_disc_params_factuurmarge%TYPE;
|
|
v_factuurappr cnt_disc_params.cnt_disc_params_factuurappr%TYPE;
|
|
v_factuurpct cnt_disc_params.cnt_disc_params_factuurpct%TYPE;
|
|
BEGIN
|
|
IF p_discipline_key IS NOT NULL
|
|
THEN
|
|
BEGIN
|
|
SELECT cnt_disc_params_key, cnt_srtcontract_type, cnt_disc_params_factuurmarge,
|
|
cnt_disc_params_factuurappr, cnt_disc_params_factuurpct
|
|
INTO v_key, v_srtcontract_type, v_factuurmarge,
|
|
v_factuurappr, v_factuurpct
|
|
FROM cnt_disc_params
|
|
WHERE cnt_ins_discipline_key = p_discipline_key;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_key := NULL;
|
|
END;
|
|
IF v_key IS NOT NULL
|
|
THEN
|
|
createopentag ('cnt');
|
|
createxmltagvalue ('key', v_key);
|
|
createxmltagvalue ('srtcontract_type', v_srtcontract_type);
|
|
createxmltagvalue ('factuurmarge', v_factuurmarge);
|
|
createxmltagvalue ('factuurappr', v_factuurappr);
|
|
createxmltagvalue ('factuurpct', v_factuurpct);
|
|
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_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_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_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 ('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;
|
|
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
|
|
INTO v_module, v_omschrijving, v_prefix,
|
|
v_alg, v_ins, v_mld, v_bes,
|
|
v_prs, v_res, v_cnt,
|
|
v_kostenklant
|
|
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);
|
|
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_fax mld_adres.mld_adres_contactpers_fax%TYPE;
|
|
v_contactpers_bureau mld_adres.mld_adres_contactpers_bureau%TYPE;
|
|
v_telefoon mld_adres.mld_adres_telefoon%TYPE;
|
|
v_fax mld_adres.mld_adres_fax%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_fax,
|
|
mld_adres.mld_adres_contactpers_bureau, mld_adres.mld_adres_telefoon, mld_adres.mld_adres_fax,
|
|
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_fax,
|
|
v_contactpers_bureau, v_telefoon, v_fax,
|
|
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_fax', v_contactpers_fax);
|
|
createxmltagvalue ('contactpers_bureau', v_contactpers_bureau);
|
|
createxmltagvalue ('telefoon', v_telefoon);
|
|
createxmltagvalue ('fax', v_fax);
|
|
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)
|
|
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;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
createopentag ('discipline');
|
|
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
|
|
INTO v_module, v_omschrijving, v_min_level, v_prs_kostensoort_key,
|
|
v_ins_srtdiscipline_key, v_email
|
|
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);
|
|
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 ('discipline');
|
|
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_urgentie mld_stdmelding.mld_stdmelding_urgentie%TYPE;
|
|
v_uitvoertijd mld_stdmelding.mld_stdmelding_uitvoertijd%TYPE;
|
|
v_notfrontend mld_stdmelding.mld_stdmelding_notfrontend%TYPE;
|
|
v_prs_kostensoort_key mld_stdmelding.prs_kostensoort_key%TYPE;
|
|
v_verwijder mld_stdmelding.mld_stdmelding_verwijder%TYPE;
|
|
v_streeftijd mld_stdmelding.mld_stdmelding_streeftijd%TYPE;
|
|
v_groep mld_stdmelding.mld_stdmelding_groep%TYPE;
|
|
v_discipline_key mld_stdmelding.mld_ins_discipline_key%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,
|
|
mld_stdmelding_urgentie, mld_stdmelding_uitvoertijd,
|
|
mld_stdmelding_notfrontend, prs_kostensoort_key, mld_stdmelding_verwijder,
|
|
mld_stdmelding_streeftijd, mld_stdmelding_groep, mld_ins_discipline_key
|
|
INTO v_omschrijving, v_urgentie, v_uitvoertijd,
|
|
v_notfrontend, v_prs_kostensoort_key, v_verwijder,
|
|
v_streeftijd, v_groep, v_discipline_key
|
|
FROM mld_stdmelding
|
|
WHERE mld_stdmelding_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
create_ins_discipline_node (v_discipline_key);
|
|
createxmltagvalue ('urgentie', mynumbertochar (v_urgentie));
|
|
createxmltagvalue ('uitvoertijd', mynumbertochar (v_uitvoertijd));
|
|
createxmltagvalue ('streeftijd', mynumbertochar (v_streeftijd));
|
|
createxmltagvalue ('groep', v_groep);
|
|
createxmltagvalue ('notfrontend', v_notfrontend);
|
|
create_prs_kostensoort_node (v_prs_kostensoort_key);
|
|
createxmltagvalue ('verwijder', v_verwijder);
|
|
createclosetag ('stdmelding');
|
|
END IF;
|
|
END;
|
|
-- * create_MLD_MELDING_node
|
|
PROCEDURE create_mld_melding_node (p_key IN NUMBER, p_withchildren IN BOOLEAN)
|
|
AS
|
|
v_meldbron_nr mld_melding.mld_meldbron_nr%TYPE;
|
|
v_datum mld_melding.mld_melding_datum%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_kosten_klant mld_melding.mld_kosten_klant%TYPE;
|
|
v_prs_kostenplaats_key mld_melding.prs_kostenplaats_key%TYPE;
|
|
v_status_key mld_melding.mld_melding_status%TYPE;
|
|
v_status mld_statuses.mld_statuses_omschrijving%TYPE;
|
|
v_spoed mld_melding.mld_melding_spoed%TYPE;
|
|
v_discipline_key mld_stdmelding.mld_ins_discipline_key%TYPE;
|
|
v_meldbron_key mld_melding.mld_meldbron_key%TYPE;
|
|
v_oorzaak_key mld_melding.mld_oorzaak_key%TYPE;
|
|
v_alg_onroerendgoed_keys mld_melding.mld_alg_onroerendgoed_keys%TYPE;
|
|
v_alg_locatie_key mld_melding.mld_alg_locatie_key%TYPE;
|
|
v_mld_stdmelding_key mld_melding.mld_stdmelding_key%TYPE;
|
|
v_prs_perslid_key mld_melding.prs_perslid_key%TYPE;
|
|
v_prs_perslid_key_voor mld_melding.prs_perslid_key_voor%TYPE;
|
|
v_adres_key mld_melding.mld_adres_key%TYPE;
|
|
v_uitvoertijd mld_melding.mld_melding_uitvoertijd%TYPE;
|
|
v_datum_gepland mld_melding.mld_melding_einddatum%TYPE;
|
|
v_ordernr mld_melding.mld_melding_ordernr%TYPE;
|
|
v_activiteit_key mld_melding.fac_activiteit_key%TYPE;
|
|
v_behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE;
|
|
v_parentkey mld_melding.mld_melding_parentkey%TYPE;
|
|
v_externnr mld_melding.mld_melding_externnr%TYPE;
|
|
v_kto_verstuurd mld_melding.mld_melding_kto_verstuurd%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT ins_deel_key
|
|
FROM mld_melding_object
|
|
WHERE mld_melding_key = p_key;
|
|
CURSOR c2
|
|
IS
|
|
SELECT mld_opdr_key
|
|
FROM mld_opdr
|
|
WHERE mld_melding_key = p_key;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
createopentag ('melding');
|
|
SELECT NVL (mld_meldbron_nr, ''),
|
|
NVL (mld_melding_datum, ''),
|
|
NVL (mld_melding_omschrijving, ''),
|
|
NVL (mld_melding_opmerking, ''),
|
|
NVL (mld_melding_geprint, 0),
|
|
NVL (mld_kosten_klant, 0),
|
|
prs_kostenplaats_key,
|
|
NVL (mld_melding_status, ''),
|
|
NVL (s.mld_statuses_omschrijving, ''),
|
|
NVL (mld_melding_spoed, 0),
|
|
mld_meldbron_key,
|
|
mld_oorzaak_key,
|
|
mld_alg_onroerendgoed_keys,
|
|
mld_alg_locatie_key,
|
|
m.mld_stdmelding_key,
|
|
stdm.mld_ins_discipline_key,
|
|
prs_perslid_key,
|
|
prs_perslid_key_voor,
|
|
mld_adres_key,
|
|
mld_melding_uitvoertijd,
|
|
mld_melding_einddatum,
|
|
NVL (mld_melding_ordernr, ''),
|
|
mld_melding_behandelaar_key,
|
|
mld_melding_parentkey,
|
|
mld_melding_externnr,
|
|
mld_melding_kto_verstuurd
|
|
INTO v_meldbron_nr,
|
|
v_datum,
|
|
v_omschrijving,
|
|
v_opmerking,
|
|
v_geprint,
|
|
v_kosten_klant,
|
|
v_prs_kostenplaats_key,
|
|
v_status_key,
|
|
v_status,
|
|
v_spoed,
|
|
v_meldbron_key,
|
|
v_oorzaak_key,
|
|
v_alg_onroerendgoed_keys,
|
|
v_alg_locatie_key,
|
|
v_mld_stdmelding_key,
|
|
v_discipline_key,
|
|
v_prs_perslid_key,
|
|
v_prs_perslid_key_voor,
|
|
v_adres_key,
|
|
v_uitvoertijd,
|
|
v_datum_gepland,
|
|
v_ordernr,
|
|
v_behandelaar_key,
|
|
v_parentkey,
|
|
v_externnr,
|
|
v_kto_verstuurd
|
|
FROM mld_melding m, mld_statuses s, mld_stdmelding stdm
|
|
WHERE m.mld_melding_status = s.mld_statuses_key
|
|
AND m.mld_stdmelding_key = stdm.mld_stdmelding_key
|
|
AND mld_melding_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('meldbron_nr', v_meldbron_nr);
|
|
mydatetochar ('gemeld', v_datum); -- deprecated, see tracking
|
|
mydatetochar ('begindatum', v_datum);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
createxmltagvalue ('geprint', v_geprint);
|
|
createxmltagvalue ('kosten_klant', v_kosten_klant);
|
|
createxmltagvalue ('ordernr', v_ordernr);
|
|
createxmltagvalue ('status_key', v_status_key);
|
|
createxmltagvalue ('status', v_status);
|
|
createxmltagvalue ('spoed', v_spoed);
|
|
createxmltagvalue ('uitvoertijd', v_uitvoertijd);
|
|
createxmltagvalue ('externnr', v_externnr);
|
|
mydatetochar ('datum_gepland', v_datum_gepland); -- deprecated
|
|
mydatetochar ('einddatum', v_datum_gepland); -- voorkeur
|
|
create_mld_kenmerken (p_key);
|
|
create_prs_kostenplaats_node (v_prs_kostenplaats_key);
|
|
create_ins_discipline_node (v_discipline_key); -- deprecated, maar tbv compatibility; gebruik stdmelding/discipline
|
|
create_mld_stdmelding_node (v_mld_stdmelding_key);
|
|
create_mld_adres_node (v_adres_key, 'aflever_adres', FALSE);
|
|
IF (v_alg_onroerendgoed_keys IS NOT NULL AND v_alg_onroerendgoed_keys <> 0)
|
|
THEN
|
|
create_alg_onroerendgoed_node (v_alg_onroerendgoed_keys, 'plaats', NULL, FALSE, FALSE);
|
|
ELSE
|
|
create_alg_onroerendgoed_node (v_alg_locatie_key, 'plaats', v_alg_locatie_key, FALSE, FALSE);
|
|
END IF;
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_ins_deel_node (rec1.ins_deel_key);
|
|
END LOOP;
|
|
create_prs_perslid_node (v_prs_perslid_key, 'melder', FALSE);
|
|
create_prs_perslid_node (v_prs_perslid_key_voor, 'voor', FALSE);
|
|
create_prs_perslid_node (v_behandelaar_key, 'behandelaar', TRUE);
|
|
create_fac_activiteit_node (v_activiteit_key);
|
|
mydatetochar ('kto_verstuurd', v_kto_verstuurd);
|
|
create_mld_melding_note_node (p_key);
|
|
create_fac_tracking_node('melding', p_key);
|
|
IF p_withchildren
|
|
THEN
|
|
FOR rec2 IN c2
|
|
LOOP
|
|
create_mld_opdr_node (rec2.mld_opdr_key, TRUE);
|
|
END LOOP;
|
|
END IF;
|
|
create_mld_melding_node(v_parentkey, p_withchildren); --Zou zomaar NULL kunnen zijn, geeft niks.
|
|
createclosetag ('melding');
|
|
END IF;
|
|
END;
|
|
|
|
PROCEDURE create_mld_opdr_mater_node (p_key IN NUMBER)
|
|
AS
|
|
v_aantal mld_opdr_materiaal.mld_opdr_materiaal_aantal%TYPE;
|
|
v_code fac_usrdata.fac_usrdata_code%TYPE;
|
|
v_omschr fac_usrdata.fac_usrdata_omschr%TYPE;
|
|
v_stuksprijs fac_usrdata.fac_usrdata_prijs%TYPE;
|
|
v_volgnr fac_usrdata.fac_usrdata_volgnr%TYPE;
|
|
v_verwijder fac_usrdata.fac_usrdata_verwijder%TYPE;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
createopentag ('materialen');
|
|
|
|
SELECT ma.mld_opdr_materiaal_aantal,
|
|
ma.mld_opdr_materiaal_prijs,
|
|
d.fac_usrdata_code,
|
|
d.fac_usrdata_omschr,
|
|
d.fac_usrdata_volgnr,
|
|
d.fac_usrdata_verwijder
|
|
INTO v_aantal,
|
|
v_stuksprijs,
|
|
v_code,
|
|
v_omschr,
|
|
v_volgnr,
|
|
v_verwijder
|
|
FROM mld_opdr_materiaal ma, fac_usrdata d
|
|
WHERE d.fac_usrdata_key = ma.fac_usrdata_key AND ma.mld_opdr_materiaal_key = p_key;
|
|
|
|
createxmltagvalue ('code', v_code);
|
|
createxmltagvalue ('volgnr', v_volgnr);
|
|
createxmltagvalue ('omschrijving', v_omschr);
|
|
createxmltagvalue ('aantal', v_aantal);
|
|
createxmltagvalue ('stuksprijs', v_stuksprijs);
|
|
createxmltagvalue ('totaalprijs', v_aantal * v_stuksprijs);
|
|
mydatetochar ('verwijder', v_verwijder);
|
|
|
|
createclosetag ('materialen');
|
|
END IF;
|
|
END;
|
|
|
|
-- * create_MLD_OPDR_node
|
|
-- select xml.create_MLD_OPDR_node(7120) FROM DUAL
|
|
PROCEDURE create_mld_opdr_node (p_key IN NUMBER, p_concise IN BOOLEAN)
|
|
AS
|
|
v_mld_melding_key mld_opdr.mld_melding_key%TYPE;
|
|
v_mld_uitvoerende_keys mld_opdr.mld_uitvoerende_keys%TYPE;
|
|
v_typeopdr_key mld_opdr.mld_typeopdr_key%TYPE;
|
|
v_statusopdr_key mld_opdr.mld_statusopdr_key%TYPE;
|
|
v_statusopdr mld_statusopdr.mld_statusopdr_omschrijving%TYPE;
|
|
v_mld_standaardopdr_key mld_opdr.mld_standaardopdr_key%TYPE;
|
|
v_omschrijving mld_opdr.mld_opdr_omschrijving%TYPE;
|
|
v_datumbegin mld_opdr.mld_opdr_datumbegin%TYPE;
|
|
v_einddatum mld_opdr.mld_opdr_einddatum%TYPE;
|
|
v_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_bedrijfopdr_volgnr mld_opdr.mld_opdr_bedrijfopdr_volgnr%TYPE;
|
|
v_uurloon mld_opdr.mld_opdr_uurloon%TYPE;
|
|
v_cnt_contract_key mld_opdr.cnt_contract_key%TYPE;
|
|
v_cnt_contract_dienst_key mld_opdr.cnt_contract_dienst_key%TYPE;
|
|
v_prs_perslid_key mld_opdr.prs_perslid_key%TYPE;
|
|
v_prs_contactpersoon_key mld_opdr.prs_contactpersoon_key%TYPE;
|
|
v_prs_kostenplaats_key mld_opdr.prs_kostenplaats_key%TYPE;
|
|
v_ordernr mld_opdr.mld_opdr_ordernr%TYPE;
|
|
v_mld_opdr_opmerking_fiat mld_opdr.mld_opdr_opmerking_fiat%TYPE;
|
|
v_datumgereed DATE;
|
|
v_activiteit_key mld_opdr.fac_activiteit_key%TYPE;
|
|
v_opmerking mld_opdr.mld_opdr_opmerking%TYPE;
|
|
|
|
CURSOR c1
|
|
IS
|
|
SELECT ma.mld_opdr_materiaal_key
|
|
FROM mld_opdr_materiaal ma
|
|
WHERE ma.mld_opdr_key = p_key;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
createopentag ('opdracht');
|
|
SELECT mld_melding_key, mld_uitvoerende_keys, mld_typeopdr_key, o.mld_statusopdr_key,
|
|
s.mld_statusopdr_omschrijving, mld_standaardopdr_key, mld_opdr_omschrijving, mld_opdr_datumbegin,
|
|
fac.count_Work_Days(mld_opdr_datumbegin, mld_opdr_einddatum) mld_opdr_dagen,
|
|
mld_opdr_einddatum, mld_opdr_werkzaamheden, mld_opdr_uren, mld_opdr_materiaal,
|
|
mld_opdr_kosten, mld_opdr_contactpersoon, mld_opdr_geprint, mld_opdr_bedrijfopdr_volgnr,
|
|
mld_opdr_uurloon, cnt_contract_key, cnt_contract_dienst_key, prs_perslid_key, prs_contactpersoon_key,
|
|
prs_kostenplaats_key, mld_opdr_ordernr,
|
|
mld_opdr_opmerking_fiat, fac_activiteit_key, mld_opdr_opmerking
|
|
INTO v_mld_melding_key, v_mld_uitvoerende_keys, v_typeopdr_key, v_statusopdr_key,
|
|
v_statusopdr, v_mld_standaardopdr_key, v_omschrijving, v_datumbegin,
|
|
v_dagen, v_einddatum, v_werkzaamheden, v_uren, v_materiaal,
|
|
v_kosten, v_contactpersoon, v_geprint, v_bedrijfopdr_volgnr,
|
|
v_uurloon, v_cnt_contract_key, v_cnt_contract_dienst_key, v_prs_perslid_key, v_prs_contactpersoon_key,
|
|
v_prs_kostenplaats_key, v_ordernr,
|
|
v_mld_opdr_opmerking_fiat, v_activiteit_key, v_opmerking
|
|
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 ('melding_key', v_mld_melding_key);
|
|
createxmltagvalue ('uitvoerende_keys', v_mld_uitvoerende_keys);
|
|
createxmltagvalue ('statusopdr_key', v_statusopdr_key);
|
|
createxmltagvalue ('status', v_statusopdr);
|
|
createxmltagvalue ('standaardopdr_key', v_mld_standaardopdr_key);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
mydatetochar ('datumbegin', v_datumbegin);
|
|
createxmltagvalue ('dagen', v_dagen);
|
|
mydatetochar ('einddatum', v_einddatum);
|
|
mydatetochar ('datumgereed', v_einddatum);
|
|
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 ('bedrijfopdr_volgnr', v_bedrijfopdr_volgnr);
|
|
createxmltagvalue ('uurloon', mynumbertochar (v_uurloon));
|
|
createxmltagvalue ('opmerking_fiat', v_mld_opdr_opmerking_fiat);
|
|
create_mld_opdr_kenmerken (p_key);
|
|
create_prs_kostenplaats_node (v_prs_kostenplaats_key);
|
|
createxmltagvalue ('ordernr', v_ordernr);
|
|
create_mld_typeopdr_node (v_typeopdr_key);
|
|
create_prs_perslid_node (v_prs_perslid_key, 'backoffice_contact', TRUE);
|
|
create_mld_uitvoerende_node (v_mld_uitvoerende_keys, 'uitvoerende');
|
|
create_prs_contactpersoon_node (v_prs_contactpersoon_key);
|
|
create_factuuradres_node (p_key);
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_mld_opdr_mater_node (rec1.mld_opdr_materiaal_key);
|
|
END LOOP;
|
|
IF NOT p_concise
|
|
THEN
|
|
create_mld_melding_node (v_mld_melding_key, FALSE);
|
|
END IF;
|
|
create_fac_activiteit_node (v_activiteit_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);
|
|
-- stdeel zit in deel, maar als het een projectnieuw deel is niet.
|
|
create_ins_srtdeel_node (v_srtdeel_key, TRUE);
|
|
mydatetochar ('aanmaak', v_aanmaak);
|
|
mydatetochar ('verwijder', v_verwijder);
|
|
-- Te overwegen is om deze NIET mee te nemen:
|
|
createxmltagvalue ('dwgx', v_dwgx);
|
|
createxmltagvalue ('dwgy', v_dwgy);
|
|
createxmltagvalue ('dwgz', v_dwgz);
|
|
createxmltagvalue ('dwgrotatie', v_dwgrotatie);
|
|
createxmltagvalue ('dwgschaal', v_dwgschaal);
|
|
createclosetag ('prjdeel');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_prj_werkplek_node (p_werkplek_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT prj_deel_key
|
|
FROM prj_deel pd
|
|
WHERE pd.prj_werkplek_key = p_werkplek_key;
|
|
v_volgnr prj_werkplek.prj_werkplek_volgnr%TYPE;
|
|
v_omschrijving prj_werkplek.prj_werkplek_omschrijving%TYPE;
|
|
v_vastopp prj_werkplek.prj_werkplek_vastopp%TYPE;
|
|
v_opp prj_werkplek.prj_werkplek_opp%TYPE;
|
|
v_aanmaak prj_werkplek.prj_werkplek_aanmaak%TYPE;
|
|
v_verwijder prj_werkplek.prj_werkplek_verwijder%TYPE;
|
|
v_dwgx prj_werkplek.prj_werkplek_dwgx%TYPE;
|
|
v_dwgy prj_werkplek.prj_werkplek_dwgy%TYPE;
|
|
v_dwgz prj_werkplek.prj_werkplek_dwgz%TYPE;
|
|
v_dwgrotatie prj_werkplek.prj_werkplek_dwgrotatie%TYPE;
|
|
v_dwgschaal prj_werkplek.prj_werkplek_dwgschaal%TYPE;
|
|
BEGIN
|
|
IF p_werkplek_key IS NOT NULL
|
|
THEN
|
|
SELECT prj_werkplek_volgnr, prj_werkplek_omschrijving, prj_werkplek_vastopp, prj_werkplek_opp,
|
|
prj_werkplek_aanmaak, prj_werkplek_verwijder, prj_werkplek_dwgx, prj_werkplek_dwgy, prj_werkplek_dwgz,
|
|
prj_werkplek_dwgrotatie, prj_werkplek_dwgschaal
|
|
INTO v_volgnr, v_omschrijving, v_vastopp, v_opp,
|
|
v_aanmaak, v_verwijder, v_dwgx, v_dwgy, v_dwgz,
|
|
v_dwgrotatie, v_dwgschaal
|
|
FROM prj_werkplek wp
|
|
WHERE wp.prj_werkplek_key = p_werkplek_key;
|
|
createopentag ('prjwerkplek');
|
|
createxmltagvalue ('key', p_werkplek_key);
|
|
createxmltagvalue ('volgnr', v_volgnr);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('vastopp', v_vastopp);
|
|
createxmltagvalue ('opp', v_opp);
|
|
mydatetochar ('aanmaak', v_aanmaak);
|
|
mydatetochar ('verwijder', v_verwijder);
|
|
createxmltagvalue ('dwgx', v_dwgx);
|
|
createxmltagvalue ('dwgy', v_dwgy);
|
|
createxmltagvalue ('dwgz', v_dwgz);
|
|
createxmltagvalue ('dwgrotatie', v_dwgrotatie);
|
|
createxmltagvalue ('dwgschaal', v_dwgschaal);
|
|
create_prj_perslidwp_node (p_werkplek_key);
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_prj_deel_node (rec1.prj_deel_key);
|
|
END LOOP;
|
|
createclosetag ('prjwerkplek');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_prj_ruimte_node (p_ruimte_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT prj_werkplek_key
|
|
FROM prj_werkplek pw
|
|
WHERE pw.prj_ruimte_key = p_ruimte_key;
|
|
CURSOR c2
|
|
IS
|
|
SELECT prj_deel_key
|
|
FROM prj_deel pd
|
|
WHERE pd.prj_ruimte_key = p_ruimte_key;
|
|
v_nr prj_ruimte.prj_ruimte_nr%TYPE;
|
|
v_omschrijving prj_ruimte.prj_ruimte_omschrijving%TYPE;
|
|
v_bruto_vloeropp prj_ruimte.prj_ruimte_bruto_vloeropp%TYPE;
|
|
v_omtrek prj_ruimte.prj_ruimte_nr%TYPE;
|
|
v_inhoud prj_ruimte.prj_ruimte_inhoud%TYPE;
|
|
v_opmerking prj_ruimte.prj_ruimte_opmerking%TYPE;
|
|
v_srtruimte_key prj_ruimte.alg_srtruimte_key%TYPE;
|
|
v_alg_ruimte_key prj_ruimte.alg_ruimte_key%TYPE;
|
|
BEGIN
|
|
IF p_ruimte_key IS NOT NULL
|
|
THEN
|
|
SELECT prj_ruimte_nr, prj_ruimte_omschrijving,
|
|
prj_ruimte_bruto_vloeropp, prj_ruimte_omtrek,
|
|
prj_ruimte_inhoud, prj_ruimte_opmerking, alg_srtruimte_key,
|
|
alg_ruimte_key
|
|
INTO v_nr, v_omschrijving,
|
|
v_bruto_vloeropp, v_omtrek,
|
|
v_inhoud, v_opmerking, v_srtruimte_key,
|
|
v_alg_ruimte_key
|
|
FROM prj_ruimte
|
|
WHERE prj_ruimte_verwijder IS NULL AND prj_ruimte_key = p_ruimte_key;
|
|
createopentag ('prjruimte');
|
|
createxmltagvalue ('key', p_ruimte_key);
|
|
createxmltagvalue ('nr', v_nr);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('bruto_vloeropp', v_bruto_vloeropp);
|
|
createxmltagvalue ('omtrek', v_omtrek);
|
|
createxmltagvalue ('inhoud', v_inhoud);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
createxmltagvalue ('algruimtekey', v_alg_ruimte_key);
|
|
-- * Herkomst gegevens (teveel van het goede?)
|
|
create_alg_ruimte_node (v_alg_ruimte_key);
|
|
-- *create_ALG_SRTRUIMTE_node(v_srtruimte_key);
|
|
create_prj_ruimteafd_node (p_ruimte_key);
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_prj_werkplek_node (rec1.prj_werkplek_key);
|
|
END LOOP;
|
|
FOR rec2 IN c2
|
|
LOOP
|
|
create_prj_deel_node (rec2.prj_deel_key);
|
|
END LOOP;
|
|
createclosetag ('prjruimte');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_prj_verdieping_node (
|
|
p_scenario_key IN NUMBER,
|
|
p_verdieping_key IN NUMBER,
|
|
p_ruimte_key IN NUMBER
|
|
)
|
|
AS
|
|
v_omschrijving alg_verdieping.alg_verdieping_omschrijving%TYPE;
|
|
v_volgnr alg_verdieping.alg_verdieping_volgnr%TYPE;
|
|
v_tekening alg_verdieping.alg_verdieping_tekening%TYPE;
|
|
v_in_bewerking alg_verdieping.alg_verdieping_in_bewerking%TYPE;
|
|
v_code alg_verdieping.alg_verdieping_code%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT r.prj_ruimte_key
|
|
FROM prj_ruimte r
|
|
WHERE alg_verdieping_key = p_verdieping_key
|
|
AND r.prj_ruimte_verwijder IS NULL
|
|
AND r.prj_scenario_key = p_scenario_key
|
|
ORDER BY r.prj_ruimte_nr;
|
|
CURSOR c2
|
|
IS
|
|
SELECT *
|
|
FROM prj_scenario_note
|
|
WHERE alg_verdieping_key = p_verdieping_key
|
|
AND prj_scenario_key = p_scenario_key;
|
|
BEGIN
|
|
IF p_verdieping_key IS NOT NULL
|
|
THEN
|
|
SELECT alg_verdieping_omschrijving, alg_verdieping_volgnr,
|
|
t.cad_tekening_filenaam, alg_verdieping_in_bewerking,
|
|
alg_verdieping_code
|
|
INTO v_omschrijving, v_volgnr,
|
|
v_tekening, v_in_bewerking,
|
|
v_code
|
|
FROM alg_verdieping v, cad_tekening t
|
|
WHERE t.alg_verdieping_key(+) = v.alg_verdieping_key
|
|
AND v.alg_verdieping_key = p_verdieping_key;
|
|
-- Eerst alle ALG-info (oude situatie)
|
|
createopentag ('prjverdieping');
|
|
create_alg_onroerendgoed_node (p_verdieping_key,
|
|
'plaats',
|
|
NULL,
|
|
FALSE,
|
|
TRUE
|
|
);
|
|
--createxmltagvalue ('key', p_verdieping_key);
|
|
--createxmltagvalue ('omschrijving', v_omschrijving);
|
|
--createxmltagvalue ('volgnr', v_volgnr);
|
|
--createxmltagvalue ('tekening', v_tekening);
|
|
--createxmltagvalue ('in_bewerking', v_in_bewerking);
|
|
--createxmltagvalue ('code', v_code);
|
|
--create_alg_kenmerken (p_verdieping_key, 'V');
|
|
IF p_ruimte_key IS NOT NULL
|
|
THEN
|
|
create_prj_ruimte_node (p_ruimte_key);
|
|
ELSE
|
|
-- Maak dan een node aan voor ELKE prjruimte in deze verdieping
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_prj_ruimte_node (rec1.prj_ruimte_key);
|
|
END LOOP;
|
|
END IF;
|
|
FOR rec2 IN c2
|
|
LOOP
|
|
createopentag ('note');
|
|
createxmltagvalue ('key', rec2.prj_scenario_note_key);
|
|
createxmltagvalue ('nr', rec2.prj_scenario_note_nr);
|
|
createxmltagvalue ('omschrijving',
|
|
rec2.prj_scenario_note_omschrijving
|
|
);
|
|
create_prs_perslid_node (rec2.prs_perslid_key, 'noteur', TRUE);
|
|
createxmltagvalue ('aanmaak', rec2.prj_scenario_note_aanmaak);
|
|
createclosetag ('note');
|
|
END LOOP;
|
|
createclosetag ('prjverdieping');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_prj_scenario_node (p_key IN NUMBER)
|
|
AS
|
|
v_omschrijving prj_scenario.prj_scenario_omschrijving%TYPE;
|
|
v_opmerking prj_scenario.prj_scenario_opmerking%TYPE;
|
|
v_aanmaak prj_scenario.prj_scenario_aanmaak%TYPE;
|
|
v_mld_melding_key prj_scenario.mld_melding_key%TYPE;
|
|
v_prs_perslid_key prj_scenario.prs_perslid_key%TYPE;
|
|
v_status prj_scenario.prj_scenario_status%TYPE;
|
|
v_datum prj_scenario.prj_scenario_datum%TYPE;
|
|
v_raming prj_scenario.prj_scenario_raming%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT DISTINCT pr.alg_verdieping_key, alg_verdieping_volgnr
|
|
FROM prj_ruimte pr, alg_verdieping av
|
|
WHERE pr.alg_verdieping_key = av.alg_verdieping_key
|
|
AND prj_scenario_key = p_key
|
|
ORDER BY alg_verdieping_volgnr;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
createopentag ('scenario');
|
|
SELECT prj_scenario_omschrijving, prj_scenario_opmerking,
|
|
prj_scenario_aanmaak, mld_melding_key, prs_perslid_key,
|
|
prj_scenario_status, prj_scenario_datum, prj_scenario_raming
|
|
INTO v_omschrijving, v_opmerking,
|
|
v_aanmaak, v_mld_melding_key, v_prs_perslid_key,
|
|
v_status, v_datum, v_raming
|
|
FROM prj_scenario
|
|
WHERE prj_scenario_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
mydatetochar ('aanmaak', v_aanmaak);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
createxmltagvalue ('status', v_status);
|
|
createxmltagvalue ('datum', v_datum);
|
|
createxmltagvalue ('raming', v_raming);
|
|
create_mld_melding_node (v_mld_melding_key, 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
|
|
-- *
|
|
PROCEDURE create_bes_item_kenmerken (p_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT k.bes_kenmerk_key, s.bes_srtkenmerk_omschrijving, s.bes_srtkenmerk_kenmerktype,
|
|
r.fac_kenmerkdomein_objectnaam, r.fac_kenmerkdomein_xmlnode, r.fac_kenmerkdomein_kolomnaam, r.fac_kenmerkdomein_kolomtxt,
|
|
r.fac_usrtab_key, s.bes_srtkenmerk_lengte, s.bes_srtkenmerk_dec, s.bes_srtkenmerk_nmin,
|
|
s.bes_srtkenmerk_nmax, k.bes_kenmerk_default, NVL (k.bes_kenmerk_volgnummer, 0) volgnummer,
|
|
lcl.x('bes_srtkenmerk_dimensie', s.bes_srtkenmerk_key, bes_srtkenmerk_dimensie) dimensie,
|
|
lcl.x('bes_kenmerk_hint', k.bes_kenmerk_key, bes_kenmerk_hint) hint
|
|
FROM bes_kenmerk k, bes_srtkenmerk s, fac_kenmerkdomein r, bes_kenmerkbesteli bki
|
|
WHERE k.bes_kenmerk_verwijder IS NULL
|
|
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 s.fac_kenmerkdomein_key = r.fac_kenmerkdomein_key(+)
|
|
ORDER BY k.bes_kenmerk_volgnummer;
|
|
v_kenmerk_waarde VARCHAR2 (1000);
|
|
v_ref_kenmerk_waarde VARCHAR2 (1000);
|
|
sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
SELECT v.bes_kenmerkbesteli_waarde
|
|
INTO v_kenmerk_waarde
|
|
FROM bes_kenmerkbesteli v
|
|
WHERE v.bes_bestelling_item_key = p_key AND v.bes_kenmerk_key = rec1.bes_kenmerk_key;
|
|
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
|
|
IF ((rec1.bes_srtkenmerk_kenmerktype = 'R' OR rec1.bes_srtkenmerk_kenmerktype = 'S') AND v_kenmerk_waarde IS NOT NULL AND (rec1.fac_kenmerkdomein_xmlnode IS NULL OR xmlnode_depth > 0))
|
|
THEN
|
|
sql_stmt :=
|
|
'SELECT MIN('
|
|
|| rec1.fac_kenmerkdomein_kolomtxt
|
|
|| ')'
|
|
|| ' FROM '
|
|
|| rec1.fac_kenmerkdomein_objectnaam
|
|
|| ' WHERE '
|
|
|| rec1.fac_kenmerkdomein_kolomnaam
|
|
|| ' = '
|
|
|| v_kenmerk_waarde;
|
|
EXECUTE IMMEDIATE sql_stmt
|
|
INTO v_ref_kenmerk_waarde;
|
|
v_kenmerk_waarde := v_ref_kenmerk_waarde;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF rec1.bes_srtkenmerk_kenmerktype = 'L'
|
|
THEN
|
|
v_kenmerk_waarde := rec1.bes_kenmerk_default;
|
|
ELSE
|
|
v_kenmerk_waarde := NULL;
|
|
END IF;
|
|
END;
|
|
createxmltagvalueattributes ('kenmerk',
|
|
'naam',
|
|
rec1.bes_srtkenmerk_omschrijving,
|
|
'type',
|
|
rec1.bes_srtkenmerk_kenmerktype,
|
|
'volgnummer',
|
|
rec1.volgnummer,
|
|
'key',
|
|
rec1.bes_kenmerk_key,
|
|
'dimensie',
|
|
rec1.dimensie,
|
|
rec1.fac_kenmerkdomein_xmlnode,
|
|
v_kenmerk_waarde
|
|
);
|
|
END LOOP;
|
|
END;
|
|
-- *
|
|
-- * BES bestelling kenmerken
|
|
-- *
|
|
PROCEDURE create_bes_bestell_kenmerken (p_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT k.bes_kenmerk_key, s.bes_srtkenmerk_omschrijving, s.bes_srtkenmerk_kenmerktype,
|
|
r.fac_kenmerkdomein_objectnaam, r.fac_kenmerkdomein_xmlnode, r.fac_kenmerkdomein_kolomnaam, r.fac_kenmerkdomein_kolomtxt,
|
|
r.fac_usrtab_key, s.bes_srtkenmerk_lengte, s.bes_srtkenmerk_dec, s.bes_srtkenmerk_nmin,
|
|
s.bes_srtkenmerk_nmax, k.bes_kenmerk_default, NVL (k.bes_kenmerk_volgnummer, 0) volgnummer,
|
|
lcl.x('bes_srtkenmerk_dimensie', s.bes_srtkenmerk_key, bes_srtkenmerk_dimensie) dimensie,
|
|
lcl.x('bes_kenmerk_hint', k.bes_kenmerk_key, bes_kenmerk_hint) hint
|
|
FROM bes_kenmerk k, bes_srtkenmerk s, fac_kenmerkdomein r, 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 s.fac_kenmerkdomein_key = r.fac_kenmerkdomein_key(+)
|
|
ORDER BY k.bes_kenmerk_volgnummer;
|
|
v_kenmerk_waarde VARCHAR2 (1000);
|
|
v_ref_kenmerk_waarde VARCHAR2 (1000);
|
|
sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
SELECT v.bes_kenmerkbestell_waarde
|
|
INTO v_kenmerk_waarde
|
|
FROM bes_kenmerkbestell v
|
|
WHERE v.bes_bestelling_key = p_key AND v.bes_kenmerk_key = rec1.bes_kenmerk_key;
|
|
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
|
|
IF ((rec1.bes_srtkenmerk_kenmerktype = 'R' OR rec1.bes_srtkenmerk_kenmerktype = 'S') AND v_kenmerk_waarde IS NOT NULL AND (rec1.fac_kenmerkdomein_xmlnode IS NULL OR xmlnode_depth > 0))
|
|
THEN
|
|
sql_stmt :=
|
|
'SELECT MIN('
|
|
|| rec1.fac_kenmerkdomein_kolomtxt
|
|
|| ')'
|
|
|| ' FROM '
|
|
|| rec1.fac_kenmerkdomein_objectnaam
|
|
|| ' WHERE '
|
|
|| rec1.fac_kenmerkdomein_kolomnaam
|
|
|| ' = '
|
|
|| v_kenmerk_waarde;
|
|
EXECUTE IMMEDIATE sql_stmt
|
|
INTO v_ref_kenmerk_waarde;
|
|
v_kenmerk_waarde := v_ref_kenmerk_waarde;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF rec1.bes_srtkenmerk_kenmerktype = 'L'
|
|
THEN
|
|
v_kenmerk_waarde := rec1.bes_kenmerk_default;
|
|
ELSE
|
|
v_kenmerk_waarde := NULL;
|
|
END IF;
|
|
END;
|
|
createxmltagvalueattributes ('kenmerk',
|
|
'naam',
|
|
rec1.bes_srtkenmerk_omschrijving,
|
|
'type',
|
|
rec1.bes_srtkenmerk_kenmerktype,
|
|
'volgnummer',
|
|
rec1.volgnummer,
|
|
'key',
|
|
rec1.bes_kenmerk_key,
|
|
'dimensie',
|
|
rec1.dimensie,
|
|
rec1.fac_kenmerkdomein_xmlnode,
|
|
v_kenmerk_waarde
|
|
);
|
|
END LOOP;
|
|
END;
|
|
PROCEDURE create_ins_srtgroep_node (p_key IN NUMBER, p_concise BOOLEAN)
|
|
AS
|
|
v_discipline_key ins_srtgroep.ins_discipline_key%TYPE;
|
|
v_omschrijving ins_srtgroep.ins_srtgroep_omschrijving%TYPE;
|
|
BEGIN
|
|
IF p_concise THEN
|
|
createopentagattributes ('srtgroep', 'type', 'INS', 'mode', 'concise', NULL, NULL, NULL, NULL);
|
|
ELSE
|
|
createopentagattributes ('srtgroep', 'type', 'INS', NULL, NULL, NULL, NULL, NULL, NULL);
|
|
END IF;
|
|
SELECT ins_discipline_key,
|
|
lcl.x('ins_srtgroep_omschrijving', ins_srtgroep_key, ins_srtgroep_omschrijving) ins_srtgroep_omschrijving
|
|
INTO v_discipline_key, v_omschrijving
|
|
FROM ins_srtgroep
|
|
WHERE ins_srtgroep_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
IF NOT p_concise
|
|
THEN
|
|
create_ins_discipline_node (v_discipline_key);
|
|
END IF;
|
|
createclosetag ('srtgroep');
|
|
END;
|
|
PROCEDURE create_ins_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_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;
|
|
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_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
|
|
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_binding,
|
|
v_opmerking, v_minimum
|
|
FROM ins_srtdeel
|
|
WHERE ins_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 ('binding', v_binding);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
createxmltagvalue ('minimum', v_minimum);
|
|
END IF;
|
|
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;
|
|
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
|
|
INTO v_discipline_key, v_omschrijving
|
|
FROM bes_srtgroep
|
|
WHERE bes_srtgroep_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
IF NOT p_concise
|
|
THEN
|
|
create_ins_discipline_node (v_discipline_key);
|
|
END IF;
|
|
createclosetag ('srtgroep');
|
|
END;
|
|
PROCEDURE create_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;
|
|
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
|
|
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
|
|
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);
|
|
END IF;
|
|
create_bes_srtgroep_node (v_groep_key, p_concise); -- dus false
|
|
createclosetag ('srtdeel');
|
|
END;
|
|
PROCEDURE create_bes_besteli_node (p_key IN NUMBER)
|
|
AS
|
|
v_srtdeel_key bes_srtdeel.bes_srtdeel_key%TYPE;
|
|
v_aantal bes_bestelling_item.bes_bestelling_item_aantal%TYPE;
|
|
v_bestelopdr_item_key bes_bestelopdr_item.bes_bestelopdr_item_key%TYPE;
|
|
v_aantalontv bes_bestelling_item.bes_bestelling_item_aantalontv%TYPE;
|
|
v_status bes_bestellingstatuses.bes_bestellingstatuses_omschr%TYPE;
|
|
v_status_key bes_bestelling_item.bes_bestelling_item_status%TYPE;
|
|
v_totaal bes_bestelling_item.bes_bestelling_item_prijs%TYPE;
|
|
v_inktotaal bes_bestelling_item.bes_bestelling_item_inkprijs%TYPE;
|
|
v_brutoprijs bes_bestelling_item.bes_bestelling_item_brutoprijs%TYPE;
|
|
v_prijs bes_bestelling_item.bes_bestelling_item_prijs%TYPE;
|
|
v_inkprijs bes_bestelling_item.bes_bestelling_item_inkprijs%TYPE;
|
|
BEGIN
|
|
createopentag ('bestelitem');
|
|
SELECT bes_srtdeel_key, bes_bestelling_item_aantal, bes_bestelopdr_item_key, bes_bestelling_item_aantalontv,
|
|
NVL (bes_bestellingstatuses_omschr, ''), NVL (bes_bestelling_item_status, ''), bes_bestelling_item_prijs,
|
|
bes_bestelling_item_brutoprijs, bes_bestelling_item_aantal * bes_bestelling_item_prijs,
|
|
bes_bestelling_item_inkprijs, bes_bestelling_item_aantal * bes_bestelling_item_inkprijs
|
|
INTO v_srtdeel_key, v_aantal, v_bestelopdr_item_key, v_aantalontv,
|
|
v_status, v_status_key, v_prijs, v_brutoprijs,
|
|
v_totaal, v_inkprijs, v_inktotaal
|
|
FROM bes_bestelling_item bi, bes_bestellingstatuses s
|
|
WHERE bi.bes_bestelling_item_status = s.bes_bestellingstatuses_key(+)
|
|
AND bi.bes_bestelling_item_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('aantal', v_aantal);
|
|
createxmltagvalue ('opdrachtitem_key', v_bestelopdr_item_key);
|
|
createxmltagvalue ('aantalontv', v_aantalontv);
|
|
createxmltagvalue ('status_key', v_status_key);
|
|
createxmltagvalue ('status', v_status);
|
|
createxmltagvalue ('prijs', v_prijs);
|
|
createxmltagvalue ('inkprijs', v_inkprijs);
|
|
createxmltagvalue ('brutoprijs', v_brutoprijs);
|
|
createxmltagvalue ('totaal', v_totaal);
|
|
createxmltagvalue ('inktotaal', v_inktotaal);
|
|
create_bes_item_kenmerken (p_key);
|
|
create_bes_srtdeel_node (v_srtdeel_key, false);
|
|
createclosetag ('bestelitem');
|
|
END;
|
|
PROCEDURE create_bes_bestelopdri_node (p_key IN NUMBER)
|
|
AS
|
|
v_bestelopdr_item_key bes_bestelopdr_item.bes_bestelopdr_item_key%TYPE;
|
|
v_bestelopdr_key bes_bestelopdr_item.bes_bestelopdr_key%TYPE;
|
|
v_bestelopdr_item_aantal bes_bestelopdr_item.bes_bestelopdr_item_aantal%TYPE;
|
|
v_bestelopdr_item_aantalontv bes_bestelopdr_item.bes_bestelopdr_item_aantalontv%TYPE;
|
|
v_bestelopdr_item_omschrijv bes_bestelopdr_item.bes_bestelopdr_item_omschrijv%TYPE;
|
|
v_bestelopdr_item_prijs bes_bestelopdr_item.bes_bestelopdr_item_prijs%TYPE;
|
|
v_bestelopdr_item_ontvangen bes_bestelopdr_item.bes_bestelopdr_item_ontvangen%TYPE;
|
|
v_bestelopdr_item_status bes_bestelopdr_item.bes_bestelopdr_item_status%TYPE;
|
|
v_bestelopdr_item_verwerkt bes_bestelopdr_item.bes_bestelopdr_item_verwerkt%TYPE;
|
|
v_status bes_bestelopdrstatuses.bes_bestelopdrstatuses_omschr%TYPE;
|
|
v_bestelopdr_item_posnr bes_bestelopdr_item.bes_bestelopdr_item_posnr%TYPE;
|
|
v_bestelopdr_item_brutoprijs bes_bestelopdr_item.bes_bestelopdr_item_brutoprijs%TYPE;
|
|
v_bestelopdr_item_inkprijs bes_bestelopdr_item.bes_bestelopdr_item_inkprijs%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT bes_bestelling_item_key
|
|
FROM bes_bestelling_item
|
|
WHERE bes_bestelopdr_item_key = p_key;
|
|
BEGIN
|
|
createopentag ('bestelopdrachtitem');
|
|
SELECT bes_bestelopdr_item_key, bes_bestelopdr_key, bes_bestelopdr_item_aantal, bes_bestelopdr_item_aantalontv,
|
|
bes_bestelopdr_item_omschrijv, bes_bestelopdr_item_prijs, bes_bestelopdr_item_ontvangen,
|
|
bes_bestelopdr_item_status, bes_bestelopdr_item_verwerkt, bes_bestelopdr_item_posnr,
|
|
bes_bestelopdr_item_brutoprijs, bes_bestelopdr_item_inkprijs
|
|
INTO v_bestelopdr_item_key, v_bestelopdr_key, v_bestelopdr_item_aantal, v_bestelopdr_item_aantalontv,
|
|
v_bestelopdr_item_omschrijv, v_bestelopdr_item_prijs, v_bestelopdr_item_ontvangen,
|
|
v_bestelopdr_item_status, v_bestelopdr_item_verwerkt, v_bestelopdr_item_posnr,
|
|
v_bestelopdr_item_brutoprijs, v_bestelopdr_item_inkprijs
|
|
FROM bes_bestelopdr_item bi, bes_bestelopdrstatuses s
|
|
WHERE bi.bes_bestelopdr_item_status = s.bes_bestelopdrstatuses_key(+) AND bi.bes_bestelopdr_item_key = p_key;
|
|
createxmltagvalue ('key', v_bestelopdr_item_key);
|
|
createxmltagvalue ('posnr', v_bestelopdr_item_posnr);
|
|
createxmltagvalue ('statuskey', v_bestelopdr_item_status);
|
|
createxmltagvalue ('status', v_status);
|
|
createxmltagvalue ('aantal', v_bestelopdr_item_aantal);
|
|
createxmltagvalue ('aantalontv', v_bestelopdr_item_aantalontv);
|
|
-- De omschrijving is een snapshotje. Gebruik normaliter de gegevens van de subnode bestelitem
|
|
createxmltagvalue ('omschrijving', v_bestelopdr_item_omschrijv);
|
|
createxmltagvalue ('prijs', v_bestelopdr_item_prijs);
|
|
createxmltagvalue ('totaal', v_bestelopdr_item_prijs * v_bestelopdr_item_aantal);
|
|
createxmltagvalue ('inktotaal', v_bestelopdr_item_inkprijs * v_bestelopdr_item_aantal);
|
|
mydatetochar ('ontvangen', v_bestelopdr_item_ontvangen);
|
|
mydatetochar ('verwerkt', v_bestelopdr_item_verwerkt);
|
|
createxmltagvalue ('brutoprijs', v_bestelopdr_item_brutoprijs);
|
|
createxmltagvalue ('inkprijs', v_bestelopdr_item_inkprijs);
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_bes_besteli_node (rec1.bes_bestelling_item_key);
|
|
END LOOP;
|
|
createclosetag ('bestelopdrachtitem');
|
|
END;
|
|
PROCEDURE create_bes_bestelling_node (p_key IN NUMBER, p_concise IN BOOLEAN)
|
|
AS
|
|
v_module bes_bestelling.bes_bestelling_module%TYPE;
|
|
v_statuskey bes_bestelling.bes_bestelling_status%TYPE;
|
|
v_datum bes_bestelling.bes_bestelling_datum%TYPE;
|
|
v_perslid_key bes_bestelling.prs_perslid_key%TYPE;
|
|
v_perslid_key_voor bes_bestelling.prs_perslid_key_voor%TYPE;
|
|
v_opmerking bes_bestelling.bes_bestelling_opmerking%TYPE;
|
|
v_ordernr bes_bestelling.bes_bestelling_ordernr%TYPE;
|
|
v_plaats bes_bestelling.bes_bestelling_plaats%TYPE;
|
|
v_fiat_user bes_bestelling.bes_bestelling_fiat_user%TYPE;
|
|
v_adres_key_lev bes_bestelling.mld_adres_key_lev%TYPE;
|
|
v_item_cnt bes_bestelling.bes_bestelling_item_cnt%TYPE;
|
|
v_item_cnt_acpt bes_bestelling.bes_bestelling_item_cnt_acpt%TYPE;
|
|
v_item_cnt_lev bes_bestelling.bes_bestelling_item_cnt_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;
|
|
CURSOR c1
|
|
IS
|
|
SELECT bes_bestelling_item_key
|
|
FROM bes_bestelling_item
|
|
WHERE bes_bestelling_key = p_key;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
IF p_concise
|
|
THEN
|
|
createconciseopentag ('bestelling');
|
|
ELSE
|
|
createopentag ('bestelling');
|
|
END IF;
|
|
SELECT bes_bestelling_module,
|
|
bes_bestelling_status,
|
|
bes_bestelling_datum,
|
|
prs_perslid_key,
|
|
prs_perslid_key_voor,
|
|
bes_bestelling_opmerking,
|
|
bes_bestelling_ordernr,
|
|
bes_bestelling_plaats,
|
|
bes_bestelling_fiat_user,
|
|
mld_adres_key_lev,
|
|
bes_bestelling_item_cnt,
|
|
bes_bestelling_item_cnt_acpt,
|
|
bes_bestelling_item_cnt_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
|
|
INTO v_module,
|
|
v_statuskey,
|
|
v_datum,
|
|
v_perslid_key,
|
|
v_perslid_key_voor,
|
|
v_opmerking,
|
|
v_ordernr,
|
|
v_plaats,
|
|
v_fiat_user,
|
|
v_adres_key_lev,
|
|
v_item_cnt,
|
|
v_item_cnt_acpt,
|
|
v_item_cnt_lev,
|
|
v_kostenplaats_key,
|
|
v_status,
|
|
v_leverdatum,
|
|
v_kosten_klant,
|
|
v_activiteit_key,
|
|
v_retourvan_key,
|
|
v_levkosten,
|
|
v_korting,
|
|
v_parentkey
|
|
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', FALSE);
|
|
create_prs_perslid_node (v_perslid_key_voor, 'voor', FALSE);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
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 ('aantal_besteld', v_item_cnt);
|
|
createxmltagvalue ('aantal_geaccepteerd', v_item_cnt_acpt);
|
|
createxmltagvalue ('aantal_geleverd', v_item_cnt_lev);
|
|
createxmltagvalue ('kosten_klant', v_kosten_klant);
|
|
create_prs_kostenplaats_node (v_kostenplaats_key);
|
|
create_fac_activiteit_node (v_activiteit_key);
|
|
create_bes_bestell_kenmerken (p_key);
|
|
IF v_retourvan_key IS NOT NULL -- Dan is dit een retour
|
|
THEN
|
|
createxmltagvalue ('isretour', 1); -- Might be handy
|
|
create_bes_bestelling_node (v_retourvan_key, p_concise);
|
|
END IF;
|
|
createxmltagvalue ('levkosten', v_levkosten);
|
|
createxmltagvalue ('korting', v_korting);
|
|
IF NOT p_concise
|
|
THEN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_bes_besteli_node (rec1.bes_bestelling_item_key);
|
|
END LOOP;
|
|
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;
|
|
create_fac_tracking_node ('bestelling', p_key);
|
|
createclosetag ('bestelling');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_bes_bestelopdr_node (p_key IN NUMBER)
|
|
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_bestelopdr_item_cnt bes_bestelopdr.bes_bestelopdr_item_cnt%TYPE;
|
|
v_bestelopdr_item_cnt_lev bes_bestelopdr.bes_bestelopdr_item_cnt_lev%TYPE;
|
|
v_status bes_bestelopdrstatuses.bes_bestelopdrstatuses_omschr%TYPE;
|
|
v_levkosten bes_bestelopdr.bes_bestelopdr_levkosten%TYPE;
|
|
v_korting bes_bestelopdr.bes_bestelopdr_korting%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT bes_bestelopdr_item_key
|
|
FROM bes_bestelopdr_item
|
|
WHERE bes_bestelopdr_key = p_key;
|
|
CURSOR c2
|
|
IS
|
|
SELECT DISTINCT bi.bes_bestelling_key
|
|
FROM bes_bestelling_item bi, bes_bestelopdr_item boi
|
|
WHERE boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key AND boi.bes_bestelopdr_key = p_key;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
createopentag ('bestelopdracht');
|
|
SELECT bes_bestelopdr_module, bes_bestelopdr_status, prs_bedrijf_key, bes_bestelopdr_datum,
|
|
mld_adres_key_lev, mld_adres_key_fac, bes_bestelopdr_leverdatum, bes_bestelopdr_opmerking,
|
|
cnt_contract_key, prs_perslid_key, bes_bestelopdr_delivery_opmerk, bes_bestelopdr_item_cnt,
|
|
bes_bestelopdr_item_cnt_lev, bes_bestelopdrstatuses_omschr, bes_bestelopdr_id,
|
|
bes_bestelopdr_levkosten, bes_bestelopdr_korting
|
|
INTO v_module, v_bestelopdr_status, v_bedrijf_key, v_bestelopdr_datum,
|
|
v_adres_key_lev, v_adres_key_fac, v_bestelopdr_leverdatum, v_bestelopdr_opmerking,
|
|
v_contract_key, v_perslid_key, v_bestelopdr_delivery_opmerk, v_bestelopdr_item_cnt,
|
|
v_bestelopdr_item_cnt_lev, v_status, v_bestelopdr_id,
|
|
v_levkosten, v_korting
|
|
FROM bes_bestelopdr b, bes_bestelopdrstatuses s
|
|
WHERE b.bes_bestelopdr_status = s.bes_bestelopdrstatuses_key AND bes_bestelopdr_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('id', v_bestelopdr_id);
|
|
createxmltagvalue ('module', v_module);
|
|
mydatetochar ('datum', v_bestelopdr_datum);
|
|
mydatetochar ('leverdatum', v_bestelopdr_leverdatum);
|
|
createxmltagvalue ('status_key', v_bestelopdr_status);
|
|
createxmltagvalue ('status', v_status);
|
|
create_prs_bedrijf_node (v_bedrijf_key, 'bedrijf');
|
|
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', FALSE);
|
|
create_mld_adres_node (v_adres_key_fac, 'factuuradres', TRUE);
|
|
createxmltagvalue ('aantal_besteld', v_bestelopdr_item_cnt);
|
|
createxmltagvalue ('aantal_geleverd', v_bestelopdr_item_cnt_lev);
|
|
createxmltagvalue ('levkosten', v_levkosten);
|
|
createxmltagvalue ('korting', v_korting);
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_bes_bestelopdri_node (rec1.bes_bestelopdr_item_key);
|
|
END LOOP;
|
|
-- Er is nogal wat info te behalen bij de bestelaanvraag; deze includen we hier integraal vooralsnog
|
|
-- Welke aanvraag hoort hier bij? Dat kunnen er theoretisch meer zijn (bundeling)
|
|
FOR rec2 IN c2
|
|
LOOP
|
|
create_bes_bestelling_node (rec2.bes_bestelling_key, TRUE);
|
|
END LOOP;
|
|
createclosetag ('bestelopdracht');
|
|
END IF;
|
|
END;
|
|
--
|
|
--
|
|
-- BEZOEKERS
|
|
--
|
|
--
|
|
-- *
|
|
-- * BEZ kenmerken
|
|
-- *
|
|
PROCEDURE create_bez_kenmerken (p_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT k.bez_kenmerk_key,
|
|
k.bez_kenmerk_omschrijving,
|
|
k.bez_kenmerk_kenmerktype,
|
|
r.fac_kenmerkdomein_objectnaam, r.fac_kenmerkdomein_xmlnode,
|
|
r.fac_kenmerkdomein_kolomnaam,
|
|
r.fac_kenmerkdomein_kolomtxt,
|
|
r.fac_usrtab_key,
|
|
k.bez_kenmerk_lengte,
|
|
k.bez_kenmerk_dec,
|
|
k.bez_kenmerk_nmin,
|
|
k.bez_kenmerk_nmax,
|
|
k.bez_kenmerk_default,
|
|
NVL (k.bez_kenmerk_volgnr, 0) volgnummer,
|
|
lcl.x('bez_kenmerk_dimensie', bez_kenmerk_key, bez_kenmerk_dimensie) dimensie,
|
|
lcl.x('bez_kenmerk_hint', bez_kenmerk_key, bez_kenmerk_hint) hint
|
|
FROM bez_kenmerk k, fac_kenmerkdomein r
|
|
WHERE k.bez_kenmerk_verwijder IS NULL AND k.fac_kenmerkdomein_key = r.fac_kenmerkdomein_key(+)
|
|
ORDER BY k.bez_kenmerk_volgnr;
|
|
v_kenmerk_waarde VARCHAR2 (1000);
|
|
v_ref_kenmerk_waarde VARCHAR2 (1000);
|
|
sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
SELECT v.bez_kenmerkwaarde_waarde
|
|
INTO v_kenmerk_waarde
|
|
FROM bez_kenmerkwaarde v
|
|
WHERE v.bez_bezoekers_key = p_key
|
|
AND v.bez_kenmerk_key = rec1.bez_kenmerk_key
|
|
AND v.bez_kenmerkwaarde_verwijder IS NULL;
|
|
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
|
|
IF ((rec1.bez_kenmerk_kenmerktype = 'R' OR rec1.bez_kenmerk_kenmerktype = 'S') AND v_kenmerk_waarde IS NOT NULL AND (rec1.fac_kenmerkdomein_xmlnode IS NULL OR xmlnode_depth > 0))
|
|
THEN
|
|
sql_stmt :=
|
|
'SELECT MIN('
|
|
|| rec1.fac_kenmerkdomein_kolomtxt
|
|
|| ')'
|
|
|| ' FROM '
|
|
|| rec1.fac_kenmerkdomein_objectnaam
|
|
|| ' WHERE '
|
|
|| rec1.fac_kenmerkdomein_kolomnaam
|
|
|| ' = '
|
|
|| v_kenmerk_waarde;
|
|
EXECUTE IMMEDIATE sql_stmt INTO v_ref_kenmerk_waarde;
|
|
v_kenmerk_waarde := v_ref_kenmerk_waarde;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF rec1.bez_kenmerk_kenmerktype = 'L'
|
|
THEN
|
|
v_kenmerk_waarde := rec1.bez_kenmerk_default;
|
|
ELSE
|
|
v_kenmerk_waarde := NULL;
|
|
END IF;
|
|
END;
|
|
createxmltagvalueattributes ('kenmerk',
|
|
'naam',
|
|
rec1.bez_kenmerk_omschrijving,
|
|
'type',
|
|
rec1.bez_kenmerk_kenmerktype,
|
|
'volgnummer',
|
|
rec1.volgnummer,
|
|
'key',
|
|
rec1.bez_kenmerk_key,
|
|
'dimensie',
|
|
rec1.dimensie,
|
|
rec1.fac_kenmerkdomein_xmlnode,
|
|
v_kenmerk_waarde
|
|
);
|
|
END LOOP;
|
|
END;
|
|
PROCEDURE create_bez_bezoeker_node (p_key IN NUMBER)
|
|
AS
|
|
v_afspraak_key bez_bezoekers.bez_afspraak_key%TYPE;
|
|
v_afspraak_naam bez_bezoekers.bez_afspraak_naam%TYPE;
|
|
v_afspraak_bedrijf bez_bezoekers.bez_afspraak_bedrijf%TYPE;
|
|
v_contactpersoon_key bez_bezoekers.prs_contactpersoon_key%TYPE;
|
|
v_perslid_key bez_bezoekers.prs_perslid_key%TYPE;
|
|
v_afspraak_opmerking bez_bezoekers.bez_afspraak_opmerking%TYPE;
|
|
v_done bez_bezoekers.bez_bezoekers_done%TYPE;
|
|
v_out bez_bezoekers.bez_bezoekers_out%TYPE;
|
|
v_pasnr bez_bezoekers.bez_bezoekers_pasnr%TYPE;
|
|
v_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 ins_deel.ins_deel_omschrijving%TYPE;
|
|
BEGIN
|
|
createopentag ('bez_bezoeker');
|
|
-- bezoekers met evt. parkeerplaats
|
|
SELECT bez_afspraak_key, bez_afspraak_naam, bez_afspraak_bedrijf, bez_afspraak_opmerking, bez_bezoekers_done,
|
|
bez_bezoekers_out, bez_bezoekers_pasnr, prs_perslid_key, prs_contactpersoon_key
|
|
INTO v_afspraak_key, v_afspraak_naam, v_afspraak_bedrijf, v_afspraak_opmerking, v_done,
|
|
v_out, v_pasnr, v_perslid_key, v_contactpersoon_key
|
|
FROM bez_bezoekers b
|
|
WHERE b.bez_bezoekers_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('naam', v_afspraak_naam);
|
|
createxmltagvalue ('bedrijf', v_afspraak_bedrijf);
|
|
createxmltagvalue ('opmerking', v_afspraak_opmerking);
|
|
create_prs_perslid_node (v_perslid_key, 'intern_user', TRUE);
|
|
create_prs_contactpersoon_node (v_contactpersoon_key);
|
|
mydatetochar ('done', v_done);
|
|
mydatetochar ('out', v_out);
|
|
create_bez_kenmerken (p_key);
|
|
createxmltagvalue ('pasnr', v_pasnr);
|
|
BEGIN
|
|
SELECT rd.res_deel_prijs, rd.res_deel_prijs_vast, d.ins_deel_key, d.ins_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);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
-- meerdere parkeerplaatsen per bezoeker doen we niet aan.
|
|
NULL;
|
|
END;
|
|
createclosetag ('bez_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_actie_omschr bez_actie.bez_actie_omschrijving%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT bez_bezoekers_key
|
|
FROM bez_bezoekers
|
|
WHERE bez_afspraak_key = p_key;
|
|
BEGIN
|
|
IF p_concise
|
|
THEN
|
|
createconciseopentag ('afspraak');
|
|
ELSE
|
|
createopentag ('afspraak');
|
|
END IF;
|
|
SELECT prs_perslid_key, bez_afspraak_host_key, bez_afspraak_contact_key, bez_afspraak_gastheer,
|
|
bez_afspraak_telefoonnr, bez_afspraak_datum, ba.bez_actie_key, alg_locatie_key, res_rsv_ruimte_key,
|
|
alg_onrgoed_keys, bez_afspraak_ruimte, bez_afspraak_opmerking, bez_afspraak_eind,
|
|
lcl.x('bez_actie_omschrijving', ac.bez_actie_key, bez_actie_omschrijving) bez_actie_omschrijving
|
|
INTO v_perslid_key, v_host_key, v_contact_key, v_gastheer,
|
|
v_telefoonnr, v_datum, v_actie_key, v_locatie_key, v_rsv_ruimte_key,
|
|
v_onrgoed_keys, v_ruimte, v_opmerking, v_eind,
|
|
v_actie_omschr
|
|
FROM bez_afspraak ba, bez_actie ac
|
|
WHERE ba.bez_actie_key = ac.bez_actie_key(+) AND bez_afspraak_key = p_key;
|
|
-- bezoekers met evt. parkeerplaats
|
|
createxmltagvalue ('key', p_key);
|
|
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;
|
|
IF NOT p_concise
|
|
THEN
|
|
create_prs_perslid_node (v_perslid_key, 'ingevoerd_user', TRUE);
|
|
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);
|
|
createxmltagvalue ('actiekey', v_actie_key);
|
|
createxmltagvalue ('actie', v_actie_omschr);
|
|
-- MOET MISSCHIEN GEWIJZIGD WORDEN; EERSTE OPZET:
|
|
IF v_onrgoed_keys = v_locatie_key
|
|
THEN
|
|
create_alg_onroerendgoed_node (v_onrgoed_keys, 'plaats', v_locatie_key, p_concise, FALSE);
|
|
ELSE
|
|
create_alg_onroerendgoed_node (v_onrgoed_keys, 'plaats', NULL, p_concise, FALSE);
|
|
END IF;
|
|
createxmltagvalue ('ruimte', v_ruimte); -- de stringvariant van alg_ruimte_key?
|
|
-- 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;
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
END IF;
|
|
createclosetag ('afspraak');
|
|
END;
|
|
--
|
|
--
|
|
-- RESERVERINGEN
|
|
--
|
|
--
|
|
PROCEDURE create_res_kenmerken (p_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT k.res_kenmerk_key, s.res_srtkenmerk_omschrijving, s.res_srtkenmerk_kenmerktype,
|
|
r.fac_kenmerkdomein_objectnaam, r.fac_kenmerkdomein_xmlnode, r.fac_kenmerkdomein_kolomnaam, r.fac_kenmerkdomein_kolomtxt,
|
|
r.fac_usrtab_key, s.res_srtkenmerk_lengte, s.res_srtkenmerk_dec, s.res_srtkenmerk_nmin,
|
|
s.res_srtkenmerk_nmax, k.res_kenmerk_default, NVL (k.res_kenmerk_volgnummer, 0) volgnummer,
|
|
lcl.x('res_srtkenmerk_dimensie', s.res_srtkenmerk_key, res_srtkenmerk_dimensie) dimensie,
|
|
lcl.x('res_kenmerk_hint', res_kenmerk_key, res_kenmerk_hint) hint
|
|
FROM res_kenmerk k, res_srtkenmerk s, fac_kenmerkdomein r, res_rsv_ruimte rr
|
|
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 s.fac_kenmerkdomein_key = r.fac_kenmerkdomein_key(+)
|
|
ORDER BY k.res_kenmerk_volgnummer;
|
|
v_kenmerk_waarde VARCHAR2 (1000);
|
|
v_ref_kenmerk_waarde VARCHAR2 (1000);
|
|
sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
SELECT v.res_kenmerkreservering_waarde
|
|
INTO v_kenmerk_waarde
|
|
FROM res_kenmerkwaarde v
|
|
WHERE v.res_rsv_ruimte_key = p_key
|
|
AND v.res_kenmerk_key = rec1.res_kenmerk_key
|
|
AND v.res_kenmerkwaarde_verwijder IS NULL;
|
|
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
|
|
IF ((rec1.res_srtkenmerk_kenmerktype = 'R' OR rec1.res_srtkenmerk_kenmerktype = 'S') AND v_kenmerk_waarde IS NOT NULL AND (rec1.fac_kenmerkdomein_xmlnode IS NULL OR xmlnode_depth > 0))
|
|
THEN
|
|
sql_stmt :=
|
|
'SELECT MIN('
|
|
|| rec1.fac_kenmerkdomein_kolomtxt
|
|
|| ')'
|
|
|| ' FROM '
|
|
|| rec1.fac_kenmerkdomein_objectnaam
|
|
|| ' WHERE '
|
|
|| rec1.fac_kenmerkdomein_kolomnaam
|
|
|| ' = '
|
|
|| v_kenmerk_waarde;
|
|
EXECUTE IMMEDIATE sql_stmt
|
|
INTO v_ref_kenmerk_waarde;
|
|
v_kenmerk_waarde := v_ref_kenmerk_waarde;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF rec1.res_srtkenmerk_kenmerktype = 'L'
|
|
THEN
|
|
v_kenmerk_waarde := rec1.res_kenmerk_default;
|
|
ELSE
|
|
v_kenmerk_waarde := NULL;
|
|
END IF;
|
|
END;
|
|
createxmltagvalueattributes ('kenmerk',
|
|
'naam',
|
|
rec1.res_srtkenmerk_omschrijving,
|
|
'type',
|
|
rec1.res_srtkenmerk_kenmerktype,
|
|
'volgnummer',
|
|
rec1.volgnummer,
|
|
'key',
|
|
rec1.res_kenmerk_key,
|
|
'dimensie',
|
|
rec1.dimensie,
|
|
rec1.fac_kenmerkdomein_xmlnode,
|
|
v_kenmerk_waarde
|
|
);
|
|
END LOOP;
|
|
END;
|
|
PROCEDURE create_res_ruimte_node (p_opstelkey IN NUMBER)
|
|
AS
|
|
v_bezoekers res_ruimte_opstelling.res_ruimte_opstel_bezoekers%TYPE;
|
|
v_opstelling res_opstelling.res_opstelling_omschrijving%TYPE;
|
|
v_res_ruimte_key res_ruimte_opstelling.res_ruimte_key%TYPE;
|
|
v_resruimte res_ruimte.res_ruimte_omschrijving%TYPE;
|
|
v_verwijder res_ruimte.res_ruimte_verwijder%TYPE;
|
|
v_res_ruimte_nr res_ruimte.res_ruimte_nr%TYPE;
|
|
v_begintijd res_ruimte.res_ruimte_begintijd%TYPE;
|
|
v_eindtijd res_ruimte.res_ruimte_eindtijd%TYPE;
|
|
v_prijs_vast res_ruimte.res_ruimte_prijs_vast%TYPE;
|
|
v_prijs res_ruimte.res_ruimte_prijs%TYPE;
|
|
v_prijs_ochtend res_ruimte.res_ruimte_prijs_ochtend%TYPE;
|
|
v_prijs_middag res_ruimte.res_ruimte_prijs_middag%TYPE;
|
|
v_prijs_avond res_ruimte.res_ruimte_prijs_avond%TYPE;
|
|
CURSOR c1 (k IN NUMBER)
|
|
IS
|
|
SELECT alg_ruimte_key
|
|
FROM res_alg_ruimte
|
|
WHERE res_ruimte_key = k
|
|
AND res_alg_ruimte_verwijder is null;
|
|
BEGIN
|
|
createopentag ('res_ruimte');
|
|
SELECT ro.res_ruimte_opstel_bezoekers,
|
|
lcl.x('res_opstelling_omschrijving', o.res_opstelling_key, res_opstelling_omschrijving) res_opstelling_omschrijving,
|
|
ro.res_ruimte_key,
|
|
lcl.x('res_ruimte_omschrijving', r.res_ruimte_key, res_ruimte_omschrijving) res_ruimte_omschrijving,
|
|
lcl.x('res_ruimte_nr', r.res_ruimte_key, res_ruimte_nr) res_ruimte_nr,
|
|
r.res_ruimte_verwijder,
|
|
res_ruimte_begintijd, res_ruimte_eindtijd, res_ruimte_prijs_vast,
|
|
res_ruimte_prijs, res_ruimte_prijs_ochtend, res_ruimte_prijs_middag, res_ruimte_prijs_avond
|
|
INTO v_bezoekers, v_opstelling, v_res_ruimte_key,
|
|
v_resruimte, v_res_ruimte_nr, v_verwijder,
|
|
v_begintijd, v_eindtijd, v_prijs_vast,
|
|
v_prijs, v_prijs_ochtend, v_prijs_middag, v_prijs_avond
|
|
FROM res_ruimte_opstelling ro, res_opstelling o, res_ruimte r
|
|
WHERE o.res_opstelling_key = ro.res_opstelling_key
|
|
AND r.res_ruimte_key = ro.res_ruimte_key
|
|
AND ro.res_ruimte_opstel_key = p_opstelkey;
|
|
createxmltagvalue ('key', p_opstelkey); -- pas op!
|
|
createxmltagvalue ('opstelling', v_opstelling);
|
|
createxmltagvalue ('bezoekers', v_bezoekers);
|
|
createxmltagvalue ('omschrijving', v_resruimte);
|
|
createxmltagvalue ('nr', v_res_ruimte_nr);
|
|
mydatetochar ('verwijder', v_verwijder);
|
|
createxmltagvalue ('begintijd', v_begintijd);
|
|
createxmltagvalue ('eindtijd', v_eindtijd);
|
|
createxmltagvalue ('prijs_vast', v_prijs_vast);
|
|
createxmltagvalue ('prijs', v_prijs);
|
|
createxmltagvalue ('prijs_ochtend', v_prijs_ochtend);
|
|
createxmltagvalue ('prijs_middag', v_prijs_middag);
|
|
createxmltagvalue ('prijs_avond', v_prijs_avond);
|
|
FOR rec1 IN c1 (v_res_ruimte_key)
|
|
LOOP
|
|
create_alg_onroerendgoed_node (rec1.alg_ruimte_key, 'plaats', NULL, FALSE, FALSE);
|
|
END LOOP;
|
|
createclosetag ('res_ruimte');
|
|
END;
|
|
PROCEDURE create_res_deel_node (p_key IN NUMBER)
|
|
AS
|
|
v_key res_deel.res_deel_key%TYPE;
|
|
v_ins_deel_key res_deel.res_ins_deel_key%TYPE;
|
|
v_eenheid res_deel.res_deel_eenheid%TYPE;
|
|
v_prijs res_deel.res_deel_prijs%TYPE;
|
|
v_prijs_vast res_deel.res_deel_prijs_vast%TYPE;
|
|
v_discipline_key res_deel.res_discipline_key%TYPE;
|
|
v_opmerking res_deel.res_deel_opmerking%TYPE;
|
|
v_verwijder res_deel.res_deel_verwijder%TYPE;
|
|
v_alg_level res_deel.res_deel_alg_level%TYPE;
|
|
BEGIN
|
|
createopentag ('res_deel');
|
|
SELECT res_ins_deel_key,
|
|
lcl.x('res_deel_eenheid', res_deel_key, res_deel_eenheid) res_deel_eenheid,
|
|
res_deel_prijs, res_deel_prijs_vast,
|
|
lcl.x('res_deel_opmerking', res_deel_key, res_deel_opmerking) res_deel_opmerking,
|
|
res_discipline_key, res_deel_verwijder, res_deel_alg_level
|
|
INTO v_ins_deel_key, v_eenheid, v_prijs, v_prijs_vast, v_opmerking,
|
|
v_discipline_key, v_verwijder, v_alg_level
|
|
FROM res_deel rd
|
|
WHERE rd.res_deel_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
create_ins_discipline_node (v_discipline_key);
|
|
create_ins_deel_node (v_ins_deel_key);
|
|
createxmltagvalue ('eenheid', v_eenheid);
|
|
createxmltagvalue ('prijs', v_prijs);
|
|
createxmltagvalue ('prijsvast', v_prijs_vast);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
mydatetochar ('verwijder', v_verwijder);
|
|
createxmltagvalue ('alglevel', v_alg_level);
|
|
createclosetag ('res_deel');
|
|
END;
|
|
PROCEDURE create_res_rsv_deel_node (p_key IN NUMBER)
|
|
AS
|
|
v_deel_key res_rsv_deel.res_deel_key%TYPE;
|
|
v_aantal res_rsv_deel.res_rsv_deel_aantal%TYPE;
|
|
v_status_bo_key res_rsv_deel.res_status_bo_key%TYPE;
|
|
v_rsv_ruimte_key res_rsv_deel.res_rsv_ruimte_key%TYPE;
|
|
v_van res_rsv_deel.res_rsv_deel_van%TYPE;
|
|
v_tot res_rsv_deel.res_rsv_deel_tot%TYPE;
|
|
v_prijs res_rsv_deel.res_rsv_deel_prijs%TYPE;
|
|
v_aanmaak res_rsv_deel.res_rsv_deel_aanmaak%TYPE;
|
|
v_verwijder res_rsv_deel.res_rsv_deel_verwijder%TYPE;
|
|
bez_bezoekers_key res_rsv_deel.bez_bezoekers_key%TYPE;
|
|
v_verwerkt res_rsv_deel.res_rsv_deel_verwerkt%TYPE;
|
|
-- v_user_key res_rsv_deel.res_rsv_deel_user_key%TYPE;
|
|
v_afgemeld res_rsv_deel.res_rsv_deel_afgemeld%TYPE;
|
|
-- v_afgemeld_user res_rsv_deel.res_rsv_deel_afgemeld_user%TYPE;
|
|
v_status_bo_omschr res_status_bo.res_status_bo_omschrijving%TYPE;
|
|
v_dirtlevel res_rsv_deel.res_rsv_deel_dirtlevel%TYPE;
|
|
BEGIN
|
|
createopentag ('rsv_deel');
|
|
SELECT rd.res_deel_key, res_rsv_deel_aantal, rd.res_status_bo_key, res_rsv_ruimte_key,
|
|
res_rsv_deel_van, res_rsv_deel_tot, res.getdeelprijs(res_rsv_deel_key), res_rsv_deel_aanmaak, res_rsv_deel_verwijder,
|
|
bez_bezoekers_key, sb.res_status_bo_omschrijving,
|
|
res_rsv_deel_dirtlevel
|
|
INTO v_deel_key, v_aantal, v_status_bo_key, v_rsv_ruimte_key,
|
|
v_van, v_tot, v_prijs, v_aanmaak, v_verwijder,
|
|
bez_bezoekers_key, v_status_bo_omschr,
|
|
v_dirtlevel
|
|
FROM res_rsv_deel rd, res_status_bo sb, res_deel rdd
|
|
WHERE rd.res_status_bo_key = sb.res_status_bo_key(+)
|
|
AND rd.res_deel_key = rdd.res_deel_key
|
|
AND rd.res_rsv_deel_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
create_res_deel_node(v_deel_key);
|
|
createxmltagvalue ('aantal', v_aantal);
|
|
createxmltagvalue ('status_bokey', v_status_bo_key);
|
|
createxmltagvalue ('status_bo', v_status_bo_omschr);
|
|
createxmltagvalue ('dirtlevel', v_dirtlevel);
|
|
createxmltagvalue ('res_ruimte', v_rsv_ruimte_key);
|
|
mydatetochar ('van', v_van);
|
|
mydatetochar ('tot', v_tot);
|
|
createxmltagvalue ('prijs', v_prijs);
|
|
mydatetochar ('aanmaak', v_aanmaak);
|
|
mydatetochar ('verwijder', v_verwijder);
|
|
createxmltagvalue ('bezoeker', bez_bezoekers_key); -- als dit een parkeerplaats is
|
|
-- bezoekersgegevens toevoegen? Die komen ook al via de bovenkant
|
|
createclosetag ('rsv_deel');
|
|
END;
|
|
PROCEDURE create_res_artikel_node (p_key IN NUMBER)
|
|
AS
|
|
v_key res_artikel.res_artikel_key%TYPE;
|
|
v_discipline_key res_artikel.res_discipline_key%TYPE;
|
|
v_nr res_artikel.res_artikel_nr%TYPE;
|
|
v_omschrijving res_artikel.res_artikel_omschrijving%TYPE;
|
|
v_eenheid res_artikel.res_artikel_eenheid%TYPE;
|
|
v_prijs res_artikel.res_artikel_prijs%TYPE;
|
|
v_prijs_vast res_artikel.res_artikel_prijs_vast%TYPE;
|
|
v_inkoopprijs res_artikel.res_artikel_inkoopprijs%TYPE;
|
|
v_btw res_artikel.res_artikel_btw%TYPE;
|
|
v_opmerking res_artikel.res_artikel_opmerking%TYPE;
|
|
v_default res_artikel.res_artikel_default%TYPE;
|
|
v_verwijder res_artikel.res_artikel_verwijder%TYPE;
|
|
v_groep res_artikel.res_artikel_groep%TYPE;
|
|
v_kostenpersoneel res_artikel.res_artikel_kostenpersoneel%TYPE;
|
|
v_kostenalgemeen res_artikel.res_artikel_kostenalgemeen%TYPE;
|
|
v_volgnummer res_artikel.res_artikel_volgnummer%TYPE;
|
|
BEGIN
|
|
createopentag ('res_artikel');
|
|
SELECT res_discipline_key, res_artikel_nr,
|
|
lcl.x('res_artikel_omschrijving', res_artikel_key, res_artikel_omschrijving) res_artikel_omschrijving,
|
|
lcl.x('res_artikel_eenheid', res_artikel_key, res_artikel_eenheid) res_artikel_eenheid,
|
|
res_artikel_prijs,
|
|
res_artikel_prijs_vast, res_artikel_inkoopprijs, res_artikel_btw,
|
|
lcl.x('res_artikel_opmerking', res_artikel_key, res_artikel_opmerking) res_artikel_opmerking,
|
|
res_artikel_default, res_artikel_verwijder, res_artikel_groep,
|
|
res_artikel_kostenpersoneel, res_artikel_kostenalgemeen, res_artikel_volgnummer
|
|
INTO v_discipline_key, v_nr, v_omschrijving, v_eenheid, v_prijs,
|
|
v_prijs_vast, v_inkoopprijs, v_btw, v_opmerking,
|
|
v_default, v_verwijder, v_groep,
|
|
v_kostenpersoneel, v_kostenalgemeen, v_volgnummer
|
|
FROM res_artikel ra
|
|
WHERE ra.res_artikel_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
create_ins_discipline_node (v_discipline_key);
|
|
createxmltagvalue ('nr', v_nr);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('eenheid', v_eenheid);
|
|
createxmltagvalue ('prijs', v_prijs);
|
|
createxmltagvalue ('prijsvast', v_prijs_vast);
|
|
createxmltagvalue ('inkoopprijs', v_inkoopprijs);
|
|
createxmltagvalue ('btw', v_btw);
|
|
createxmltagvalue ('volgnummer', v_volgnummer);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
createxmltagvalue ('default', v_default);
|
|
mydatetochar ('verwijder', v_verwijder);
|
|
createxmltagvalue ('groep', v_groep);
|
|
createxmltagvalue ('kostenpersoneel', v_kostenpersoneel);
|
|
createxmltagvalue ('kostenalgemeen', v_kostenalgemeen);
|
|
createclosetag ('res_artikel');
|
|
END;
|
|
PROCEDURE create_res_rsv_artikel_node (p_key IN NUMBER)
|
|
AS
|
|
v_artikel_key res_rsv_artikel.res_artikel_key%TYPE;
|
|
v_aantal res_rsv_artikel.res_rsv_artikel_aantal%TYPE;
|
|
v_levering res_rsv_artikel.res_rsv_artikel_levering%TYPE;
|
|
v_status_bo_key res_rsv_artikel.res_status_bo_key%TYPE;
|
|
v_rsv_ruimte_key res_rsv_artikel.res_rsv_ruimte_key%TYPE;
|
|
v_prijs res_rsv_artikel.res_rsv_artikel_prijs%TYPE;
|
|
v_aanmaak res_rsv_artikel.res_rsv_artikel_aanmaak%TYPE;
|
|
v_verwijder res_rsv_artikel.res_rsv_artikel_verwijder%TYPE;
|
|
v_verwerkt res_rsv_artikel.res_rsv_artikel_verwerkt%TYPE;
|
|
-- v_user_key res_rsv_artikel.res_rsv_artikel_user_key%TYPE;
|
|
v_afgemeld res_rsv_artikel.res_rsv_artikel_afgemeld%TYPE;
|
|
-- v_afgemeld_user res_rsv_artikel.res_rsv_artikel_afgemeld_user%TYPE;
|
|
v_status_bo_omschr res_status_bo.res_status_bo_omschrijving%TYPE;
|
|
v_dirtlevel res_rsv_artikel.res_rsv_artikel_dirtlevel%TYPE;
|
|
BEGIN
|
|
createopentag ('rsv_artikel');
|
|
SELECT ra.res_artikel_key, res_rsv_artikel_aantal, res_rsv_artikel_levering, ra.res_status_bo_key,
|
|
res_rsv_ruimte_key, res.getartikelprijs(res_rsv_artikel_key), res_rsv_artikel_aanmaak, res_rsv_artikel_verwijder,
|
|
sb.res_status_bo_omschrijving, res_rsv_artikel_dirtlevel
|
|
INTO v_artikel_key, v_aantal, v_levering, v_status_bo_key,
|
|
v_rsv_ruimte_key, v_prijs, v_aanmaak, v_verwijder,
|
|
v_status_bo_omschr, v_dirtlevel
|
|
FROM res_rsv_artikel ra, res_status_bo sb, res_artikel raa
|
|
WHERE ra.res_status_bo_key = sb.res_status_bo_key(+)
|
|
AND raa.res_artikel_key = ra.res_artikel_key
|
|
AND res_rsv_artikel_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
create_res_artikel_node(v_artikel_key);
|
|
createxmltagvalue ('aantal', v_aantal);
|
|
mydatetochar ('levering', v_levering);
|
|
createxmltagvalue ('status_bokey', v_status_bo_key);
|
|
createxmltagvalue ('status_bo', v_status_bo_omschr);
|
|
createxmltagvalue ('dirtlevel', v_dirtlevel);
|
|
createxmltagvalue ('prijs', v_prijs);
|
|
mydatetochar ('aanmaak', v_aanmaak);
|
|
mydatetochar ('verwijder', v_verwijder);
|
|
createclosetag ('rsv_artikel');
|
|
END;
|
|
PROCEDURE create_res_srtactiviteit_node (p_key IN NUMBER)
|
|
AS
|
|
v_omschrijving res_srtactiviteit.res_srtactiviteit_omschrijving%TYPE;
|
|
v_soort res_srtactiviteit.res_srtactiviteit_soort%TYPE;
|
|
BEGIN
|
|
createopentag ('res_srtactiviteit');
|
|
SELECT lcl.x('res_srtactiviteit_omschrijving', res_srtactiviteit_key, res_srtactiviteit_omschrijving) res_srtactiviteit_omschrijving,
|
|
res_srtactiviteit_soort
|
|
INTO v_omschrijving, v_soort
|
|
FROM res_srtactiviteit
|
|
WHERE res_srtactiviteit_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('soort', v_soort);
|
|
createclosetag ('res_srtactiviteit');
|
|
END;
|
|
PROCEDURE create_res_activiteit_node (p_key IN NUMBER)
|
|
AS
|
|
v_omschrijving res_activiteit.res_activiteit_omschrijving%TYPE;
|
|
v_duur res_activiteit.res_activiteit_duur%TYPE;
|
|
v_srtactiviteit_key res_activiteit.res_srtactiviteit_key%TYPE;
|
|
BEGIN
|
|
createopentag ('res_activiteit');
|
|
SELECT lcl.x('res_activiteit_omschrijving', res_activiteit_key, res_activiteit_omschrijving) res_activiteit_omschrijving,
|
|
res_activiteit_duur, res_srtactiviteit_key
|
|
INTO v_omschrijving, v_duur, v_srtactiviteit_key
|
|
FROM res_activiteit
|
|
WHERE res_activiteit_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('duur', v_duur);
|
|
create_res_srtactiviteit_node (v_srtactiviteit_key);
|
|
createclosetag ('res_activiteit');
|
|
END;
|
|
PROCEDURE create_res_rsv_ruimte_node (p_key IN NUMBER, p_concise IN BOOLEAN)
|
|
AS
|
|
v_reservering_key res_rsv_ruimte.res_reservering_key%TYPE;
|
|
v_ruimte_opstel_key res_rsv_ruimte.res_ruimte_opstel_key%TYPE;
|
|
v_activiteit_key res_rsv_ruimte.res_activiteit_key%TYPE;
|
|
v_van res_rsv_ruimte.res_rsv_ruimte_van%TYPE;
|
|
v_tot res_rsv_ruimte.res_rsv_ruimte_tot%TYPE;
|
|
v_bezoekers res_rsv_ruimte.res_rsv_ruimte_bezoekers%TYPE;
|
|
v_prijs res_rsv_ruimte.res_rsv_ruimte_prijs%TYPE;
|
|
v_status_bo_key res_rsv_ruimte.res_status_bo_key%TYPE;
|
|
v_status_fo_key res_rsv_ruimte.res_status_fo_key%TYPE;
|
|
v_noshow res_rsv_ruimte.res_rsv_ruimte_noshow%TYPE;
|
|
v_aanmaak res_rsv_ruimte.res_rsv_ruimte_aanmaak%TYPE;
|
|
v_verwijder res_rsv_ruimte.res_rsv_ruimte_verwijder%TYPE;
|
|
v_opmerking res_rsv_ruimte.res_rsv_ruimte_opmerking%TYPE;
|
|
v_omschrijving res_rsv_ruimte.res_rsv_ruimte_omschrijving%TYPE;
|
|
v_ordernr res_rsv_ruimte.res_rsv_ruimte_ordernr%TYPE;
|
|
v_prs_kostenplaats_key res_rsv_ruimte.prs_kostenplaats_key%TYPE;
|
|
v_contact_key res_rsv_ruimte.res_rsv_ruimte_contact_key%TYPE;
|
|
v_host_key res_rsv_ruimte.res_rsv_ruimte_host_key%TYPE;
|
|
v_telefoon res_rsv_ruimte.res_rsv_ruimte_telefoon%TYPE;
|
|
v_alg_ruimte_key res_rsv_ruimte.alg_ruimte_key%TYPE;
|
|
v_volgnr res_rsv_ruimte.res_rsv_ruimte_volgnr%TYPE;
|
|
v_kosten_klant res_rsv_ruimte.res_rsv_ruimte_kosten_klant%TYPE;
|
|
v_status_bo_omschr res_status_bo.res_status_bo_omschrijving%TYPE;
|
|
v_status_fo_omschr res_status_fo.res_status_fo_omschrijving%TYPE;
|
|
v_dirtlevel res_rsv_ruimte.res_rsv_ruimte_dirtlevel%TYPE;
|
|
v_bezoekers_shown res_rsv_ruimte.res_rsv_ruimte_bezoekers_shown%TYPE;
|
|
v_cvab_mode res_rsv_ruimte.res_rsv_ruimte_cvab_mode%TYPE;
|
|
CURSOR c2d
|
|
IS
|
|
SELECT rd.res_rsv_deel_key
|
|
FROM res_rsv_deel rd
|
|
WHERE rd.res_rsv_deel_verwijder IS NULL AND rd.res_rsv_ruimte_key = p_key;
|
|
CURSOR c2a
|
|
IS
|
|
SELECT ra.res_rsv_artikel_key
|
|
FROM res_rsv_artikel ra
|
|
WHERE ra.res_rsv_artikel_verwijder IS NULL AND ra.res_rsv_ruimte_key = p_key;
|
|
CURSOR c3
|
|
IS
|
|
SELECT ba.bez_afspraak_key
|
|
FROM bez_afspraak ba
|
|
WHERE ba.res_rsv_ruimte_key = p_key;
|
|
BEGIN
|
|
IF p_concise
|
|
THEN
|
|
createconciseopentag ('rsv_ruimte');
|
|
ELSE
|
|
createopentag ('rsv_ruimte');
|
|
END IF;
|
|
SELECT res_reservering_key, res_ruimte_opstel_key, res_activiteit_key, res_rsv_ruimte_van, res_rsv_ruimte_tot,
|
|
res_rsv_ruimte_bezoekers, res.getruimteprijs(res_rsv_ruimte_key), rr.res_status_bo_key, rr.res_status_fo_key,
|
|
res_rsv_ruimte_noshow, res_rsv_ruimte_aanmaak, res_rsv_ruimte_verwijder,
|
|
res_rsv_ruimte_opmerking, res_rsv_ruimte_omschrijving, res_rsv_ruimte_ordernr, prs_kostenplaats_key,
|
|
res_rsv_ruimte_contact_key, res_rsv_ruimte_host_key, res_rsv_ruimte_telefoon, alg_ruimte_key,
|
|
res_rsv_ruimte_volgnr,
|
|
sf.res_status_fo_omschrijving, sb.res_status_bo_omschrijving, res_rsv_ruimte_kosten_klant,
|
|
res_rsv_ruimte_dirtlevel, res_rsv_ruimte_bezoekers_shown, res_rsv_ruimte_cvab_mode
|
|
INTO v_reservering_key, v_ruimte_opstel_key, v_activiteit_key, v_van, v_tot,
|
|
v_bezoekers, v_prijs, v_status_bo_key, v_status_fo_key,
|
|
v_noshow, v_aanmaak, v_verwijder,
|
|
v_opmerking, v_omschrijving, v_ordernr, v_prs_kostenplaats_key,
|
|
v_contact_key, v_host_key, v_telefoon, v_alg_ruimte_key,
|
|
v_volgnr,
|
|
v_status_fo_omschr, v_status_bo_omschr, v_kosten_klant,
|
|
v_dirtlevel, v_bezoekers_shown, v_cvab_mode
|
|
FROM res_rsv_ruimte rr, res_status_fo sf, res_status_bo sb
|
|
WHERE rr.res_status_bo_key = sb.res_status_bo_key(+) AND rr.res_status_fo_key = sf.res_status_fo_key(+)
|
|
AND rr.res_rsv_ruimte_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
createxmltagvalue ('volgnr', v_volgnr);
|
|
IF v_ruimte_opstel_key IS NOT NULL
|
|
THEN
|
|
create_res_ruimte_node (v_ruimte_opstel_key);
|
|
END IF;
|
|
IF v_activiteit_key IS NOT NULL
|
|
THEN
|
|
create_res_activiteit_node (v_activiteit_key);
|
|
END IF;
|
|
IF NOT p_concise
|
|
THEN
|
|
createxmltagvalue ('bezoekers', v_bezoekers);
|
|
mydatetochar ('van', v_van);
|
|
mydatetochar ('tot', v_tot);
|
|
createxmltagvalue ('prijs', v_prijs);
|
|
createxmltagvalue ('status_bokey', v_status_bo_key);
|
|
createxmltagvalue ('status_bo', v_status_bo_omschr);
|
|
createxmltagvalue ('status_fokey', v_status_fo_key);
|
|
createxmltagvalue ('status_fo', v_status_fo_omschr);
|
|
createxmltagvalue ('noshow', v_noshow);
|
|
createxmltagvalue ('bezoekers_shown', v_bezoekers_shown);
|
|
mydatetochar ('aangemaakt', v_aanmaak);
|
|
mydatetochar ('verwijder', v_verwijder);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createxmltagvalue ('ordernr', v_ordernr);
|
|
createxmltagvalue ('kosten_klant', v_kosten_klant);
|
|
create_prs_kostenplaats_node (v_prs_kostenplaats_key);
|
|
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 ('dirtlevel', v_dirtlevel);
|
|
create_res_kenmerken (p_key);
|
|
create_fac_tracking_node('reservering', p_key);
|
|
FOR rec2a IN c2a
|
|
LOOP
|
|
create_res_rsv_artikel_node (rec2a.res_rsv_artikel_key);
|
|
END LOOP;
|
|
FOR rec2d IN c2d
|
|
LOOP
|
|
create_res_rsv_deel_node (rec2d.res_rsv_deel_key);
|
|
END LOOP;
|
|
FOR rec3 IN c3
|
|
LOOP
|
|
create_bez_afspraak_node (rec3.bez_afspraak_key, null, TRUE);
|
|
END LOOP;
|
|
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_nrdeelres NUMBER;
|
|
CURSOR c1
|
|
IS
|
|
SELECT res_rsv_ruimte_key
|
|
FROM res_rsv_ruimte
|
|
WHERE res_rsv_ruimte_verwijder IS NULL
|
|
AND res_reservering_key = p_key
|
|
ORDER BY res_rsv_ruimte_van;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
SELECT COUNT (*)
|
|
INTO v_nrdeelres
|
|
FROM res_rsv_ruimte
|
|
WHERE res_rsv_ruimte_verwijder IS NULL AND res_reservering_key = p_key;
|
|
IF p_res_rsv_ruimte_key IS NULL
|
|
THEN
|
|
createopentagattributes ('reservering', 'content', 'complete', 'total', v_nrdeelres, NULL, NULL, NULL,
|
|
NULL);
|
|
ELSE
|
|
createopentagattributes ('reservering', 'content', 'partial', 'total', v_nrdeelres, NULL, NULL, NULL, NULL);
|
|
END IF;
|
|
SELECT res_reservering_aanmaak, res_reservering_verwijder
|
|
INTO v_aanmaak, v_verwijder
|
|
FROM res_reservering r
|
|
WHERE res_reservering_key = p_key;
|
|
createxmltagvalue ('key', p_key);
|
|
mydatetochar ('datum', v_aanmaak);
|
|
FOR rec1 IN c1
|
|
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;
|
|
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)
|
|
AS
|
|
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;
|
|
BEGIN
|
|
IF p_view IS NOT NULL
|
|
THEN
|
|
createopentagattributes ('rapport', 'view', p_view, 'title', p_oms, 'info', p_info, NULL, NULL);
|
|
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;
|
|
ctx := DBMS_XMLGEN.newcontext ('SELECT * FROM ' || p_view || ' ' || p_where);
|
|
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
|
|
IF v_xml_clob_length IS NOT NULL THEN
|
|
DBMS_LOB.COPY (aclob, xml, v_xml_clob_length - v_xml_tag_length, v_aclob_length + 1, v_xml_tag_length + 1);
|
|
END IF;
|
|
createclosetag ('rapport');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_fac_usrrap_view_node (p_key IN NUMBER, p_where IN VARCHAR2)
|
|
AS
|
|
view_name fac_usrrap.fac_usrrap_view_name%TYPE;
|
|
omschrijving fac_usrrap.fac_usrrap_omschrijving%TYPE;
|
|
rinfo fac_usrrap.fac_usrrap_info%TYPE;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
SELECT fac_usrrap_view_name,
|
|
lcl.x('fac_usrrap_omschrijving', fac_usrrap_key, fac_usrrap_omschrijving) fac_usrrap_omschrijving,
|
|
lcl.x('fac_usrrap_info', fac_usrrap_key, fac_usrrap_info) fac_usrrap_info
|
|
INTO view_name, omschrijving, rinfo
|
|
FROM fac_usrrap
|
|
WHERE fac_usrrap_key = p_key;
|
|
create_view_node (view_name, omschrijving, rinfo, p_where);
|
|
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_user_key NUMBER;
|
|
l_date1 VARCHAR2 (20);
|
|
l_date2 VARCHAR2 (20);
|
|
l_sql_str VARCHAR2 (4000);
|
|
l_cursor sys_refcursor;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
SELECT fac_usrrap_view_name, fac_usrrap_omschrijving, fac_usrrap_info
|
|
INTO proc_name, omschrijving, rinfo
|
|
FROM fac_usrrap
|
|
WHERE fac_usrrap_key = p_key;
|
|
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);
|
|
-- 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);
|
|
l_sql_str :=
|
|
'BEGIN '
|
|
|| proc_name
|
|
|| '('
|
|
|| l_user_key
|
|
|| ', '''
|
|
|| l_date1
|
|
|| ''', '''
|
|
|| l_date2
|
|
|| ''', '
|
|
|| ':l_outcursor'
|
|
|| '); END;';
|
|
--DBMS_OUTPUT.put_line (l_sql_str);
|
|
EXECUTE IMMEDIATE l_sql_str USING l_cursor;
|
|
createopentagattributes ('rapport', 'view', proc_name, 'title', omschrijving, 'info', rinfo, 'type', 'proc');
|
|
createxmltagvalue ('where', p_where);
|
|
createxmltagvalue ('datumbegin', l_date1);
|
|
createxmltagvalue ('datumeind', l_date2);
|
|
createopentagattributes ('rapport_header', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
|
createopentagattributes ('header_row', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
|
-- We leven vooralsnog zonder headerrow die wordt verondersteld metadata te gaan bevatten
|
|
createclosetag ('header_row');
|
|
createclosetag ('rapport_header');
|
|
ctx := DBMS_XMLGEN.newcontext (l_cursor);
|
|
DBMS_XMLGEN.setrowsettag (ctx, 'rapport_data');
|
|
DBMS_XMLGEN.setrowtag (ctx, 'data_row');
|
|
xml := DBMS_XMLGEN.getxml (ctx);
|
|
DBMS_XMLGEN.closecontext (ctx);
|
|
-- add data xml to aclob
|
|
v_aclob_length := DBMS_LOB.getlength (aclob);
|
|
v_xml_clob_length := DBMS_LOB.getlength (xml);
|
|
-- remove xml tag
|
|
v_xml_tag_length := 21;
|
|
IF v_xml_clob_length IS NOT NULL
|
|
THEN
|
|
DBMS_LOB.COPY (aclob, xml, v_xml_clob_length - v_xml_tag_length, v_aclob_length + 1, v_xml_tag_length + 1);
|
|
END IF;
|
|
createclosetag ('rapport');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_fac_usrrap_node (p_key IN NUMBER, p_where IN VARCHAR2)
|
|
AS
|
|
raptype fac_usrrap.fac_usrrap_functie%TYPE;
|
|
BEGIN
|
|
SELECT fac_usrrap_functie
|
|
INTO raptype
|
|
FROM fac_usrrap
|
|
WHERE fac_usrrap_key = p_key;
|
|
IF BITAND (raptype, 2) = 0
|
|
THEN
|
|
create_fac_usrrap_view_node (p_key, p_where);
|
|
ELSE
|
|
create_fac_usrrap_proc_node (p_key, p_where);
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_cnt_contract_note_node (p_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT cnt_contract_note_key, cnt_contract_note_aanmaak, prs_perslid_key, cnt_contract_note_omschrijving
|
|
FROM cnt_contract_note
|
|
WHERE cnt_contract_key = p_key
|
|
ORDER BY cnt_contract_note_key;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
createopentag ('notes');
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
createopentag ('note');
|
|
createxmltagvalue ('key', rec1.cnt_contract_note_key);
|
|
mydatetochar ('aanmaak', rec1.cnt_contract_note_aanmaak);
|
|
createxmltagvalue ('omschrijving', rec1.cnt_contract_note_omschrijving);
|
|
create_prs_perslid_node (rec1.prs_perslid_key, 'noteur', TRUE);
|
|
createclosetag ('note');
|
|
END LOOP;
|
|
createclosetag ('notes');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_cnt_kenmerken (p_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT k.cnt_kenmerk_key, s.cnt_srtkenmerk_omschrijving, s.cnt_srtkenmerk_kenmerktype,
|
|
r.fac_kenmerkdomein_objectnaam, r.fac_kenmerkdomein_xmlnode, r.fac_kenmerkdomein_kolomnaam, r.fac_kenmerkdomein_kolomtxt,
|
|
r.fac_usrtab_key, s.cnt_srtkenmerk_lengte, s.cnt_srtkenmerk_dec, s.cnt_srtkenmerk_nmin,
|
|
s.cnt_srtkenmerk_nmax, k.cnt_kenmerk_default, NVL (k.cnt_kenmerk_volgnummer, 0) volgnummer,
|
|
lcl.x('cnt_srtkenmerk_dimensie', s.cnt_srtkenmerk_key, cnt_srtkenmerk_dimensie) dimensie,
|
|
lcl.x('cnt_kenmerk_hint', cnt_kenmerk_key, cnt_kenmerk_hint) hint
|
|
FROM cnt_kenmerk k, cnt_srtkenmerk s, fac_kenmerkdomein r, cnt_contract c
|
|
WHERE c.ins_discipline_key = k.cnt_srtcontract_key
|
|
AND c.cnt_contract_key = p_key
|
|
AND k.cnt_kenmerk_verwijder IS NULL
|
|
AND k.cnt_srtkenmerk_key = s.cnt_srtkenmerk_key
|
|
AND s.fac_kenmerkdomein_key = r.fac_kenmerkdomein_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;
|
|
v_ref_kenmerk_waarde VARCHAR2 (1000);
|
|
sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
SELECT v.cnt_kenmerkcontract_waarde, v.cnt_kenmerkcontract_wijzig
|
|
INTO v_kenmerk_waarde, v_kenmerk_wijzig
|
|
FROM cnt_kenmerkcontract v
|
|
WHERE v.cnt_contract_key = p_key
|
|
AND v.cnt_kenmerk_key = rec1.cnt_kenmerk_key
|
|
AND v.cnt_kenmerkcontract_verwijder IS NULL;
|
|
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
|
|
IF ((rec1.cnt_srtkenmerk_kenmerktype = 'R' OR rec1.cnt_srtkenmerk_kenmerktype = 'S') AND v_kenmerk_waarde IS NOT NULL AND (rec1.fac_kenmerkdomein_xmlnode IS NULL OR xmlnode_depth > 0))
|
|
THEN
|
|
sql_stmt :=
|
|
'SELECT MIN('
|
|
|| rec1.fac_kenmerkdomein_kolomtxt
|
|
|| ')'
|
|
|| ' FROM '
|
|
|| rec1.fac_kenmerkdomein_objectnaam
|
|
|| ' WHERE '
|
|
|| rec1.fac_kenmerkdomein_kolomnaam
|
|
|| ' = '
|
|
|| v_kenmerk_waarde;
|
|
EXECUTE IMMEDIATE sql_stmt
|
|
INTO v_ref_kenmerk_waarde;
|
|
v_kenmerk_waarde := v_ref_kenmerk_waarde;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF rec1.cnt_srtkenmerk_kenmerktype = 'L'
|
|
THEN
|
|
v_kenmerk_waarde := rec1.cnt_kenmerk_default;
|
|
ELSE
|
|
v_kenmerk_waarde := NULL;
|
|
END IF;
|
|
END;
|
|
createxmltagvalueattributes ('kenmerk',
|
|
'naam',
|
|
rec1.cnt_srtkenmerk_omschrijving,
|
|
'type',
|
|
rec1.cnt_srtkenmerk_kenmerktype,
|
|
'volgnummer',
|
|
rec1.volgnummer,
|
|
'key',
|
|
rec1.cnt_kenmerk_key,
|
|
'wijzig',
|
|
TO_CHAR(v_kenmerk_wijzig,'YYYYMMDD HH24:MI'),
|
|
rec1.fac_kenmerkdomein_xmlnode,
|
|
v_kenmerk_waarde
|
|
);
|
|
END LOOP;
|
|
END;
|
|
PROCEDURE create_cnt_contract_node (p_key IN NUMBER, p_concise IN BOOLEAN)
|
|
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;
|
|
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_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;
|
|
l_totaalgewicht NUMBER;
|
|
l_totaalkosten cnt_contract.cnt_contract_kosten%TYPE;
|
|
l_locatiekosten cnt_contract.cnt_contract_kosten%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;
|
|
CURSOR c3
|
|
IS
|
|
SELECT cnt_contract_onrgoed_key,
|
|
alg_onrgoed_key,
|
|
alg_onrgoed_niveau,
|
|
cnt_mutatie_key,
|
|
cnt_contract_onrgoed_opp,
|
|
alg_srtonrgoed_key,
|
|
cnt_mld_melding_key,
|
|
co.cnt_mutatie_status_key,
|
|
ms.cnt_mutatie_status_omschrijv,
|
|
cnt_srtruimte_prijs,
|
|
cnt_contract_onrgoed_key_org
|
|
FROM cnt_contract_onrgoed co, cnt_mutatie_status ms
|
|
WHERE co.cnt_mutatie_status_key = ms.cnt_mutatie_status 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,
|
|
cnt_contract_contact_persoon,
|
|
ins_discipline_key,
|
|
cnt_contract_document,
|
|
prs_perslid_key_eig,
|
|
prs_perslid_key_beh,
|
|
prs_afdeling_key_eig,
|
|
cnt_contract_status,
|
|
cnt_contract_looptijd_van,
|
|
prs_kostenplaats_key,
|
|
cnt_contract_termijnkosten,
|
|
prs_kostensoort_key,
|
|
cnt_contract_opmerking,
|
|
cnt_contract_mantel_key,
|
|
lcl.x('cnt_termijn_omschrijving', t1.cnt_termijn_key, t1.cnt_termijn_omschrijving) cnt_termijn_omschrijving1,
|
|
lcl.x('cnt_termijn_omschrijving', t2.cnt_termijn_key, t2.cnt_termijn_omschrijving) cnt_termijn_omschrijving2,
|
|
cnt_contract_versie
|
|
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_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_versie
|
|
FROM cnt_contract c, cnt_termijn t1, cnt_termijn t2
|
|
WHERE c.cnt_contract_rappeltermijn = t1.cnt_termijn_key(+)
|
|
AND c.cnt_contract_opzegtermijn = t2.cnt_termijn_key(+)
|
|
AND cnt_contract_key = p_key;
|
|
createxmltagvalue ('key', mynumbertochar (p_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 ('kosten', v_kosten);
|
|
createxmltagvalue ('termijnkosten', v_termijnkosten);
|
|
createxmltagvalue ('uurloon', v_uurloon);
|
|
createxmltagvalue ('korting', v_korting);
|
|
create_prs_bedrijf_node (v_bedrijf_key, 'bedrijf'); -- uitvoerder/huurder
|
|
create_prs_afdeling_node (v_afdeling_key, 'afdeling');
|
|
create_prs_contactpersoon_node (v_contactpersoon_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', TRUE);
|
|
create_prs_afdeling_node (v_afdeling_key_eig, 'eigenaar_afd'); --??
|
|
create_prs_perslid_node (v_perslid_key_beh, 'beheerder', TRUE);
|
|
createxmltagvalue ('status', v_status); --?
|
|
create_prs_kostenplaats_node (v_kostenplaats_key);
|
|
create_prs_kostensoort_node (v_kostensoort_key);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
create_cnt_contract_node (v_mantel_key, p_concise);
|
|
IF NOT p_concise
|
|
THEN
|
|
create_cnt_kenmerken (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);
|
|
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;
|
|
FOR rec3 IN c3
|
|
LOOP
|
|
-- cnt_contract_onrgoed
|
|
BEGIN
|
|
createopentag ('contract_onrgoed');
|
|
createxmltagvalue ('key', mynumbertochar (rec3.cnt_contract_onrgoed_key));
|
|
IF rec3.alg_onrgoed_niveau = 'R'
|
|
THEN
|
|
create_alg_ruimte_node (rec3.alg_onrgoed_key);
|
|
ELSE
|
|
create_alg_terreinsector_node (rec3.alg_onrgoed_key);
|
|
END IF;
|
|
createxmltagvalue ('mutatie_key', mynumbertochar (rec3.cnt_mutatie_key));
|
|
createxmltagvalue ('opp', mynumbertochar (rec3.cnt_contract_onrgoed_opp));
|
|
create_mld_melding_node (rec3.cnt_mld_melding_key, FALSE);
|
|
createxmltagvalue ('status_key', mynumbertochar (rec3.cnt_mutatie_status_key));
|
|
createxmltagvalue ('status', rec3.cnt_mutatie_status_omschrijv);
|
|
-- verwijzing naar parent cnt_contract_onrgoed record; ooit opnemen?
|
|
createxmltagvalue ('key_org', mynumbertochar (rec3.cnt_contract_onrgoed_key_org));
|
|
createclosetag ('contract_onrgoed');
|
|
END;
|
|
END LOOP;
|
|
END IF;
|
|
create_cnt_contract_note_node (p_key);
|
|
createclosetag ('contract');
|
|
END IF;
|
|
END;
|
|
-- *
|
|
-- * FIN zaken
|
|
-- *
|
|
PROCEDURE create_fin_factuur_note_node (p_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT fin_factuur_note_key, fin_factuur_note_aanmaak, prs_perslid_key, fin_factuur_note_omschrijving
|
|
FROM fin_factuur_note
|
|
WHERE fin_factuur_key = p_key
|
|
ORDER BY fin_factuur_note_key;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
createopentag ('notes');
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
createopentag ('note');
|
|
createxmltagvalue ('key', rec1.fin_factuur_note_key);
|
|
mydatetochar ('aanmaak', rec1.fin_factuur_note_aanmaak);
|
|
createxmltagvalue ('omschrijving', rec1.fin_factuur_note_omschrijving);
|
|
create_prs_perslid_node (rec1.prs_perslid_key, 'noteur', TRUE);
|
|
createclosetag ('note');
|
|
END LOOP;
|
|
createclosetag ('notes');
|
|
END IF;
|
|
END;
|
|
|
|
PROCEDURE create_fin_kenmerken (p_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT k.fin_kenmerk_key,
|
|
k.fin_kenmerk_omschrijving,
|
|
k.fin_kenmerk_kenmerktype,
|
|
r.fac_kenmerkdomein_objectnaam, r.fac_kenmerkdomein_xmlnode,
|
|
r.fac_kenmerkdomein_kolomnaam,
|
|
r.fac_kenmerkdomein_kolomtxt,
|
|
r.fac_usrtab_key,
|
|
k.fin_kenmerk_lengte,
|
|
k.fin_kenmerk_dec,
|
|
k.fin_kenmerk_nmin,
|
|
k.fin_kenmerk_nmax,
|
|
k.fin_kenmerk_default,
|
|
NVL (k.fin_kenmerk_volgnr, 0) volgnummer,
|
|
lcl.x('fin_kenmerk_dimensie', fin_kenmerk_key, fin_kenmerk_dimensie) dimensie,
|
|
lcl.x('fin_kenmerk_hint', fin_kenmerk_key, fin_kenmerk_hint) hint
|
|
FROM fin_kenmerk k, fac_kenmerkdomein r
|
|
WHERE k.fin_kenmerk_verwijder IS NULL AND k.fac_kenmerkdomein_key = r.fac_kenmerkdomein_key(+)
|
|
ORDER BY k.fin_kenmerk_volgnr;
|
|
v_kenmerk_waarde VARCHAR2 (1000);
|
|
v_ref_kenmerk_waarde VARCHAR2 (1000);
|
|
sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
SELECT v.fin_kenmerkfactuur_waarde
|
|
INTO v_kenmerk_waarde
|
|
FROM fin_kenmerkfactuur v
|
|
WHERE v.fin_factuur_key = p_key
|
|
AND v.fin_kenmerk_key = rec1.fin_kenmerk_key
|
|
AND v.fin_kenmerkfactuur_verwijder IS NULL;
|
|
-- Zo nodig oplossen referentie, maar niet voor xmlnode-kenmerken tenzij wij hier al in de diepte zitten (dan weer wel)!
|
|
IF ((rec1.fin_kenmerk_kenmerktype = 'R' OR rec1.fin_kenmerk_kenmerktype = 'S') AND v_kenmerk_waarde IS NOT NULL AND (rec1.fac_kenmerkdomein_xmlnode IS NULL OR xmlnode_depth > 0))
|
|
THEN
|
|
sql_stmt :=
|
|
'SELECT MIN('
|
|
|| rec1.fac_kenmerkdomein_kolomtxt
|
|
|| ')'
|
|
|| ' FROM '
|
|
|| rec1.fac_kenmerkdomein_objectnaam
|
|
|| ' WHERE '
|
|
|| rec1.fac_kenmerkdomein_kolomnaam
|
|
|| ' = '
|
|
|| v_kenmerk_waarde;
|
|
EXECUTE IMMEDIATE sql_stmt INTO v_ref_kenmerk_waarde;
|
|
v_kenmerk_waarde := v_ref_kenmerk_waarde;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF rec1.fin_kenmerk_kenmerktype = 'L'
|
|
THEN
|
|
v_kenmerk_waarde := rec1.fin_kenmerk_default;
|
|
ELSE
|
|
v_kenmerk_waarde := NULL;
|
|
END IF;
|
|
END;
|
|
createxmltagvalueattributes ('kenmerk',
|
|
'naam',
|
|
rec1.fin_kenmerk_omschrijving,
|
|
'type',
|
|
rec1.fin_kenmerk_kenmerktype,
|
|
'volgnummer',
|
|
rec1.volgnummer,
|
|
'key',
|
|
rec1.fin_kenmerk_key,
|
|
'dimensie',
|
|
rec1.dimensie,
|
|
rec1.fac_kenmerkdomein_xmlnode,
|
|
v_kenmerk_waarde
|
|
);
|
|
END LOOP;
|
|
END;
|
|
PROCEDURE create_fin_factuurregel_node (p_key IN NUMBER)
|
|
AS
|
|
v_nr fin_factuurregel.fin_factuurregel_nr%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_totaal,
|
|
fin_factuurregel_btw,
|
|
fin_factuurregel_referentie,
|
|
fin_factuurregel_omschrijving
|
|
INTO v_nr,
|
|
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 ('totaal', v_totaal);
|
|
createxmltagvalue ('btw', v_btw);
|
|
createxmltagvalue ('referentie', v_referentie);
|
|
createxmltagvalue ('omschrijving', v_omschrijving);
|
|
createclosetag ('factuurregel');
|
|
END IF;
|
|
END;
|
|
PROCEDURE create_fin_factuur_node (p_key IN NUMBER, p_concise IN BOOLEAN)
|
|
AS
|
|
v_nr fin_factuur.fin_factuur_nr%TYPE;
|
|
v_totaal fin_factuur.fin_factuur_totaal%TYPE;
|
|
v_totaal_btw fin_factuur.fin_factuur_totaal_btw%TYPE;
|
|
v_opdr_key fin_factuur.mld_opdr_key%TYPE;
|
|
v_contract_key fin_factuur.cnt_contract_key%TYPE;
|
|
v_bestelopdr_key fin_factuur.bes_bestelopdr_key%TYPE;
|
|
v_perslid_key_user fin_factuur.prs_perslid_key_user%TYPE;
|
|
v_datum fin_factuur.fin_factuur_datum%TYPE;
|
|
v_boekmaand fin_factuur.fin_factuur_boekmaand%TYPE;
|
|
v_debiteur_nr fin_factuur.fin_factuur_debiteur_nr%TYPE;
|
|
v_kostensoort_key fin_factuur.prs_kostensoort_key%TYPE;
|
|
v_opmerking fin_factuur.fin_factuur_opmerking%TYPE;
|
|
v_status fin_factuur.fin_factuur_statuses_key%TYPE;
|
|
CURSOR c1
|
|
IS
|
|
SELECT fin_factuurregel_key
|
|
FROM fin_factuurregel
|
|
WHERE fin_factuur_key = p_key;
|
|
BEGIN
|
|
IF p_key IS NOT NULL
|
|
THEN
|
|
IF p_concise
|
|
THEN
|
|
createconciseopentag ('factuur');
|
|
ELSE
|
|
createopentag ('factuur');
|
|
END IF;
|
|
SELECT fin_factuur_nr,
|
|
fin_factuur_totaal,
|
|
fin_factuur_totaal_btw,
|
|
mld_opdr_key,
|
|
cnt_contract_key,
|
|
bes_bestelopdr_key,
|
|
prs_perslid_key_user,
|
|
fin_factuur_datum,
|
|
fin_factuur_boekmaand,
|
|
fin_factuur_debiteur_nr,
|
|
prs_kostensoort_key,
|
|
fin_factuur_opmerking,
|
|
fin_factuur_statuses_key
|
|
INTO v_nr,
|
|
v_totaal,
|
|
v_totaal_btw,
|
|
v_opdr_key,
|
|
v_contract_key,
|
|
v_bestelopdr_key,
|
|
v_perslid_key_user,
|
|
v_datum,
|
|
v_boekmaand,
|
|
v_debiteur_nr,
|
|
v_kostensoort_key,
|
|
v_opmerking,
|
|
v_status
|
|
FROM fin_factuur
|
|
WHERE fin_factuur_key = p_key;
|
|
createxmltagvalue ('key', mynumbertochar (p_key));
|
|
createxmltagvalue ('nr', v_nr);
|
|
createxmltagvalue ('totaal', v_totaal);
|
|
createxmltagvalue ('totaal_btw', v_totaal_btw);
|
|
mydatetochar ('datum', v_datum);
|
|
createxmltagvalue ('boekmaand', v_boekmaand);
|
|
createxmltagvalue ('debiteurnr', v_debiteur_nr);
|
|
create_prs_kostensoort_node (v_kostensoort_key);
|
|
createxmltagvalue ('opmerking', v_opmerking);
|
|
createxmltagvalue ('status', v_status);
|
|
create_fin_kenmerken (p_key);
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
create_fin_factuurregel_node (rec1.fin_factuurregel_key);
|
|
END LOOP;
|
|
create_mld_opdr_node (v_opdr_key, FALSE);
|
|
create_cnt_contract_node (v_contract_key, FALSE);
|
|
create_bes_bestelopdr_node (v_bestelopdr_key);
|
|
create_prs_perslid_node (v_perslid_key_user, 'invoerder', TRUE);
|
|
create_fin_factuur_note_node (p_key);
|
|
createclosetag ('factuur');
|
|
END IF;
|
|
END;
|
|
|
|
PROCEDURE xml_node (p_xmlnode IN VARCHAR2,
|
|
p_key IN NUMBER,
|
|
p_custid IN VARCHAR2,
|
|
p_sessionid IN VARCHAR2,
|
|
p_extra IN NUMBER,
|
|
p_where IN VARCHAR2,
|
|
p_concise IN BOOLEAN
|
|
)
|
|
AS
|
|
v_where VARCHAR2 (1000);
|
|
v_sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
CASE p_xmlnode
|
|
WHEN 'afspraak'
|
|
THEN
|
|
create_bez_afspraak_node (p_key, p_extra, p_concise);
|
|
WHEN 'bestelling'
|
|
THEN
|
|
create_bes_bestelling_node (p_key, p_concise);
|
|
WHEN 'bestelopdr'
|
|
THEN
|
|
create_bes_bestelopdr_node (p_key);
|
|
WHEN 'melding'
|
|
THEN
|
|
create_mld_melding_node (p_key, TRUE);
|
|
WHEN 'opdracht'
|
|
THEN
|
|
create_mld_opdr_node (p_key, p_concise);
|
|
WHEN 'reservering'
|
|
THEN
|
|
create_res_reservering_node (p_key, p_extra);
|
|
WHEN 'xreservering'
|
|
THEN
|
|
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 'deel'
|
|
THEN
|
|
create_ins_deel_node (p_key);
|
|
WHEN 'rapport'
|
|
THEN
|
|
v_where := p_where;
|
|
|
|
IF COALESCE (p_extra, 0) <> 0 AND v_where IS NULL
|
|
THEN
|
|
v_where := 'WHERE extra_key = ' || p_extra;
|
|
END IF;
|
|
|
|
create_fac_usrrap_node (p_key, v_where);
|
|
WHEN 'contract'
|
|
THEN
|
|
create_cnt_contract_node (p_key, p_concise);
|
|
WHEN 'factuur'
|
|
THEN
|
|
create_fin_factuur_node (p_key, p_concise);
|
|
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);
|
|
ELSE
|
|
v_sql_stmt :=
|
|
'BEGIN '
|
|
|| p_custid
|
|
|| '.create_'
|
|
|| p_xmlnode
|
|
|| '_node ('
|
|
|| p_key
|
|
|| ','
|
|
|| ''''
|
|
|| NVL (p_custid, '')
|
|
|| ''''
|
|
|| ','
|
|
|| ''''
|
|
|| NVL (p_sessionid, '')
|
|
|| ''''
|
|
|| ','
|
|
|| NVL (p_extra, -1)
|
|
|| ','
|
|
|| ''''
|
|
|| NVL (p_where, '')
|
|
|| ''''
|
|
|| '); END; ';
|
|
|
|
EXECUTE IMMEDIATE v_sql_stmt;
|
|
END CASE;
|
|
END;
|
|
|
|
-- MAIN PROCS --
|
|
PROCEDURE make_xml (
|
|
p_xmlnode IN VARCHAR2,
|
|
p_key IN NUMBER,
|
|
p_custid IN VARCHAR2,
|
|
p_sessionid IN VARCHAR2,
|
|
p_extra IN NUMBER,
|
|
p_where IN VARCHAR2
|
|
)
|
|
AS
|
|
v_clob_length NUMBER (10);
|
|
v_offset NUMBER (10);
|
|
v_interval NUMBER (10);
|
|
v_volgnr NUMBER (10);
|
|
v_where VARCHAR2(1000);
|
|
v_chunk_size NUMBER (10) := 3000;
|
|
v_sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
DBMS_LOB.createtemporary (aclob, TRUE, DBMS_LOB.CALL);
|
|
v_offset := 1;
|
|
add_header (p_custid);
|
|
add_localisation (p_xmlnode);
|
|
xmlnode_depth := 0; -- Set initial depth-level!!!
|
|
xml_node (p_xmlnode, p_key, p_custid, p_sessionid, p_extra, p_where, FALSE);
|
|
add_footer ('');
|
|
v_clob_length := DBMS_LOB.getlength (aclob);
|
|
v_volgnr := 1;
|
|
DELETE FROM fac_xml
|
|
WHERE fac_session_id = p_sessionid OR fac_xml_datum < SYSDATE - 2;
|
|
WHILE v_clob_length > 0
|
|
LOOP
|
|
IF v_clob_length > v_chunk_size
|
|
THEN
|
|
v_interval := v_chunk_size;
|
|
v_clob_length := v_clob_length - v_chunk_size;
|
|
ELSE
|
|
v_interval := v_clob_length;
|
|
v_clob_length := 0;
|
|
END IF;
|
|
INSERT INTO fac_xml
|
|
(fac_session_id, fac_xml_xml, fac_xml_volgnr
|
|
)
|
|
VALUES (p_sessionid, DBMS_LOB.SUBSTR (aclob, v_interval, v_offset), v_volgnr
|
|
);
|
|
v_offset := v_offset + v_interval;
|
|
v_volgnr := v_volgnr + 1;
|
|
END LOOP;
|
|
END;
|
|
PROCEDURE make_view_xml (
|
|
p_view IN VARCHAR2,
|
|
p_key IN NUMBER,
|
|
p_custid IN VARCHAR2,
|
|
p_sessionid IN VARCHAR2,
|
|
p_extra IN NUMBER,
|
|
p_where IN VARCHAR2
|
|
)
|
|
AS
|
|
v_clob_length NUMBER (10);
|
|
v_offset NUMBER (10);
|
|
v_interval NUMBER (10);
|
|
v_volgnr NUMBER (10);
|
|
v_where VARCHAR2(1000);
|
|
v_chunk_size NUMBER (10) := 3000;
|
|
v_sql_stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
DBMS_LOB.createtemporary (aclob, TRUE, DBMS_LOB.CALL);
|
|
v_offset := 1;
|
|
add_header (p_custid);
|
|
--add_localisation (p_xmlnode);
|
|
create_view_node (p_view, NULL, NULL, p_where);
|
|
add_footer ('');
|
|
v_clob_length := DBMS_LOB.getlength (aclob);
|
|
v_volgnr := 1;
|
|
DELETE FROM fac_xml
|
|
WHERE fac_session_id = p_sessionid OR fac_xml_datum < SYSDATE - 2;
|
|
WHILE v_clob_length > 0
|
|
LOOP
|
|
IF v_clob_length > v_chunk_size
|
|
THEN
|
|
v_interval := v_chunk_size;
|
|
v_clob_length := v_clob_length - v_chunk_size;
|
|
ELSE
|
|
v_interval := v_clob_length;
|
|
v_clob_length := 0;
|
|
END IF;
|
|
INSERT INTO fac_xml
|
|
(fac_session_id, fac_xml_xml, fac_xml_volgnr
|
|
)
|
|
VALUES (p_sessionid, DBMS_LOB.SUBSTR (aclob, v_interval, v_offset), v_volgnr
|
|
);
|
|
v_offset := v_offset + v_interval;
|
|
v_volgnr := v_volgnr + 1;
|
|
END LOOP;
|
|
END;
|
|
END xml;
|
|
/
|
|
|
|
REGISTERRUN('$Workfile: FAC_PACX.SRC $','$Revision$')
|