Files
Database/FAC/FAC_PACX.SRC
Marcel Bourseau 710c5f9521 FSN#15753: Missing komma
svn path=/Database/trunk/; revision=10039
2009-06-30 13:33:06 +00:00

4919 lines
222 KiB
Plaintext

#ifdef FAC
/* $Revision: 13 $
* $Modtime: 30-06-09 15:11 $
*/
/* 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);
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_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_res_rsv_ruimte_node (p_key IN NUMBER, p_concise IN BOOLEAN);
PROCEDURE make_xml (
p_xmlnode IN VARCHAR,
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;
/*
* NOOT PF: voor het ALG gebeuren is het nu mogelijk om de diepere parameter NULL te laten
* waardoor ALLE onderliggende zaken worden opgenomen, bijvoorbeeld alle ruimtes van een
* verdieping. Met create_alg_regio_node kan nu dus het totale vastgoed worden geexporteerd.
*/
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="UTF-8"?>' || CHR (10));
createopentag ('facilitor');
createheadernode (p_custid);
END;
PROCEDURE add_footer (dummy IN VARCHAR2)
AS
BEGIN
createclosetag ('facilitor');
END;
FUNCTION char_to_html (p_char IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
RETURN REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(p_char,
CHR (38),
CHR (38) || 'amp;'
),
CHR (234),
CHR (38) || '#234;'
),
CHR (60),
CHR (38) || 'lt;'
),
CHR (62),
CHR (38) || 'gt;'
),
CHR (34),
CHR (38) || 'quot;'
),
CHR (39),
CHR (38) || '#39;'
),
CHR (96),
CHR (38) || '#39;'
),
CHR (145),
CHR (38) || '#39;'
),
CHR (128),
CHR (38) || '#8364;'
) -- euro
,
CHR (177),
CHR (38) || '#177;'
),
CHR (224),
CHR (38) || '#224;'
),
CHR (225),
CHR (38) || '#225;'
),
CHR (228),
CHR (38) || '#228;'
),
CHR (232),
CHR (38) || '#232;'
),
CHR (233),
CHR (38) || '#233;'
),
CHR (235),
CHR (38) || '#235;'
),
CHR (236),
CHR (38) || '#236;'
),
CHR (237),
CHR (38) || '#237;'
),
CHR (239),
CHR (38) || '#239;'
),
CHR (242),
CHR (38) || '#242;'
),
CHR (243),
CHR (38) || '#243;'
),
CHR (246),
CHR (38) || '#246;'
),
CHR (249),
CHR (38) || '#249;'
),
CHR (250),
CHR (38) || '#250;'
),
CHR (252),
CHR (38) || '#252;'
);
END;
PROCEDURE mydatetochar (p_tag IN VARCHAR2, p_date IN DATE)
AS
v_return VARCHAR2 (1000);
BEGIN
IF p_date IS NOT NULL
THEN
createopentag (p_tag);
createxmltagvalue ('datum', DATE_TO_CHAR (p_date, 'dd-mm-yyyy'));
createxmltagvalue ('tijd', DATE_TO_CHAR (p_date, 'hh24:mi'));
createxmltagvalue ('dag', DATE_TO_CHAR (p_date, 'dd'));
createxmltagvalue ('maand', DATE_TO_CHAR (p_date, 'mm'));
createxmltagvalue ('jaar', DATE_TO_CHAR (p_date, 'yyyy'));
createxmltagvalue ('timestamp', DATE_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 NUMBER_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_value VARCHAR2 (100);
v_return VARCHAR2 (200);
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
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
v_return := '<' || p_tag || '/>';
ELSE
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);
END IF;
addvarchartoclob (v_return);
END;
-- * createXMLtagValue
-- * function to return a complex XML node including up to 4 attributes
-- * use the null value in the attrNameX argument for empty attributes
PROCEDURE 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_value IN VARCHAR2
)
AS
v_value VARCHAR2 (5000);
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;
IF p_attrname5 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;
v_return := v_return || '>';
IF p_value IS NULL
THEN
v_value := '';
ELSE
v_value := p_value;
END IF;
v_return := v_return || char_to_html (v_value);
v_return := 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: 13 $',12,3), NULL, NULL, NULL, NULL, NULL, NULL);
createxmltagvalue ('dateTime', DATE_TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss'));
createxmltagvalue ('dateDay', DATE_TO_CHAR (SYSDATE, 'dd'));
createxmltagvalue ('dateMonth', DATE_TO_CHAR (SYSDATE, 'mm'));
createxmltagvalue ('dateYear', DATE_TO_CHAR (SYSDATE, 'yyyy'));
--SELECT user INTO v_value FROM DUAL;
createxmltagvalue ('user', USER);
createxmltagvalue ('custId', p_custid);
SELECT MAX (fac_module_version)
INTO v_value
FROM fac_module;
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_naam mld_adres.mld_adres_naam%TYPE;
v_adres mld_adres.mld_adres_post_adres%TYPE;
v_postcode mld_adres.mld_adres_post_postcode%TYPE;
v_plaats mld_adres.mld_adres_post_plaats%TYPE;
factuuradresfound NUMBER;
BEGIN
factuuradresfound := 0;
IF o_key IS NOT NULL
THEN
BEGIN
SELECT mld_adres_naam, NVL (mld_adres_post_adres, mld_adres_bezoek_adres),
NVL (mld_adres_post_postcode, mld_adres_bezoek_postcode),
NVL (mld_adres_post_plaats, mld_adres_bezoek_plaats)
INTO v_naam, v_adres,
v_postcode,
v_plaats
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_naam, NVL (mld_adres_post_adres, mld_adres_bezoek_adres),
NVL (mld_adres_post_postcode, mld_adres_bezoek_postcode),
NVL (mld_adres_post_plaats, mld_adres_bezoek_plaats)
INTO v_naam, v_adres,
v_postcode,
v_plaats
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
createopentag ('factuuradres');
createxmltagvalue ('naam', v_naam);
createxmltagvalue ('adres', v_adres);
createxmltagvalue ('postcode', v_postcode);
createxmltagvalue ('plaats', v_plaats);
createclosetag ('factuuradres');
END IF;
END IF;
END;
-- *
-- * FAC
-- *
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.prs_refkenmerk_objectnaam, r.prs_refkenmerk_kolomnaam, r.prs_refkenmerk_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,
NVL (k.prs_kenmerk_dimensie, '') dimensie, NVL (k.prs_kenmerk_hint, '') hint
FROM prs_kenmerk k, prs_refkenmerk r
WHERE k.prs_kenmerk_niveau = p_niveau AND k.prs_kenmerk_verwijder IS NULL AND k.prs_refkenmerk_key = r.prs_refkenmerk_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;
IF (rec1.prs_kenmerk_kenmerktype = 'R' AND v_kenmerk_waarde IS NOT NULL)
THEN
sql_stmt :=
'SELECT MIN('
|| rec1.prs_refkenmerk_kolomtxt
|| ')'
|| ' FROM '
|| rec1.prs_refkenmerk_objectnaam
|| ' WHERE '
|| rec1.prs_refkenmerk_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
v_kenmerk_waarde := rec1.prs_kenmerk_default;
END;
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.prs_kenmerk_omschrijving,
'type',
rec1.prs_kenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.prs_kenmerk_key,
null, null,
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 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;
BEGIN
IF p_werkplek_key IS NOT NULL
THEN
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
INTO v_prs_werkplek_key, v_bezetting, v_volgnr,
v_omschrijving, v_vastopp, v_opp, v_virtueel,
v_alg_ruimte_key
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;
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);
create_alg_onroerendgoed_node (v_alg_ruimte_key, 'plaats', NULL, p_concise, FALSE);
createclosetag ('werkplek');
END IF;
END;
-- *
-- * ALG
-- *
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 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 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, k.alg_kenmerk_omschrijving, k.alg_kenmerk_kenmerktype,
r.alg_refkenmerk_objectnaam, r.alg_refkenmerk_kolomnaam, r.alg_refkenmerk_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,
NVL (k.alg_kenmerk_dimensie, '') dimensie, NVL (k.alg_kenmerk_hint, '') hint
FROM alg_kenmerk k, alg_refkenmerk r
WHERE k.alg_kenmerk_niveau = p_niveau AND k.alg_kenmerk_verwijder IS NULL AND k.alg_refkenmerk_key = r.alg_refkenmerk_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;
IF (rec1.alg_kenmerk_kenmerktype = 'R' AND v_kenmerk_waarde IS NOT NULL)
THEN
sql_stmt :=
'SELECT MIN('
|| rec1.alg_refkenmerk_kolomtxt
|| ')'
|| ' FROM '
|| rec1.alg_refkenmerk_objectnaam
|| ' WHERE '
|| rec1.alg_refkenmerk_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
v_kenmerk_waarde := rec1.alg_kenmerk_default;
END;
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.alg_kenmerk_omschrijving,
'type',
rec1.alg_kenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.alg_kenmerk_key,
null, null,
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;
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
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
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);
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');
--tbd || 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.ins_refsrtkenmerk_objectnaam,
r.ins_refsrtkenmerk_kolomnaam, r.ins_refsrtkenmerk_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, NVL (s.ins_srtkenmerk_dimensie, '') dimensie
FROM ins_kenmerk k, ins_srtkenmerk s, ins_refsrtkenmerk 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.ins_refsrtkenmerk_key = r.ins_refsrtkenmerk_key(+)
ORDER BY k.ins_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.ins_kenmerkdeel_waarde
INTO v_kenmerk_waarde
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;
IF (rec1.ins_srtkenmerk_kenmerktype = 'R' AND v_kenmerk_waarde IS NOT NULL)
THEN
sql_stmt :=
'SELECT MIN('
|| rec1.ins_refsrtkenmerk_kolomtxt
|| ')'
|| ' FROM '
|| rec1.ins_refsrtkenmerk_objectnaam
|| ' WHERE '
|| rec1.ins_refsrtkenmerk_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
--v_kenmerk_waarde := rec1.ins_kenmerk_default;
v_kenmerk_waarde := NULL;
END;
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.ins_srtkenmerk_omschrijving,
'type',
rec1.ins_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.ins_kenmerk_key,
null, null,
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_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;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('deel');
SELECT ins_srtdeel_key, ins_alg_ruimte_key, ins_alg_ruimte_type, 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
INTO v_ins_srtdeel_key, v_ins_alg_ruimte_key, v_ins_alg_ruimte_type, 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
FROM ins_deel
WHERE ins_deel_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('ruimte_type', v_ins_alg_ruimte_type);
createxmltagvalue ('aantal', v_aantal);
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);
create_ins_kenmerken (p_key);
create_ins_srtdeel_node (v_ins_srtdeel_key, true);
createclosetag ('deel');
END IF;
END;
-- *
-- * MLD kenmerken
-- *
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.mld_refsrtkenmerk_objectnaam, r.mld_refsrtkenmerk_kolomnaam, r.mld_refsrtkenmerk_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,
NVL (s.mld_srtkenmerk_dimensie, '') dimensie
FROM mld_kenmerk k, mld_srtkenmerk s, mld_refsrtkenmerk r, mld_melding m
WHERE ( (m.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')
)
AND m.mld_melding_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.mld_refsrtkenmerk_key = r.mld_refsrtkenmerk_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;
IF (rec1.mld_srtkenmerk_kenmerktype = 'R' AND v_kenmerk_waarde IS NOT NULL)
THEN
sql_stmt :=
'SELECT MIN('
|| rec1.mld_refsrtkenmerk_kolomtxt
|| ')'
|| ' FROM '
|| rec1.mld_refsrtkenmerk_objectnaam
|| ' WHERE '
|| rec1.mld_refsrtkenmerk_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
--v_kenmerk_waarde := rec1.mld_kenmerk_default;
v_kenmerk_waarde := NULL;
END;
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.mld_srtkenmerk_omschrijving,
'type',
rec1.mld_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.mld_kenmerk_key,
null, null,
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.mld_refsrtkenmerk_objectnaam, r.mld_refsrtkenmerk_kolomnaam, r.mld_refsrtkenmerk_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,
NVL (s.mld_srtkenmerk_dimensie, '') dimensie
FROM mld_kenmerk k, mld_srtkenmerk s, mld_refsrtkenmerk 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.mld_refsrtkenmerk_key = r.mld_refsrtkenmerk_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;
IF (rec1.mld_srtkenmerk_kenmerktype = 'R' AND v_kenmerk_waarde IS NOT NULL)
THEN
sql_stmt :=
'SELECT MIN('
|| rec1.mld_refsrtkenmerk_kolomtxt
|| ')'
|| ' FROM '
|| rec1.mld_refsrtkenmerk_objectnaam
|| ' WHERE '
|| rec1.mld_refsrtkenmerk_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
--v_kenmerk_waarde := rec1.mld_kenmerk_default;
v_kenmerk_waarde := NULL;
END;
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.mld_srtkenmerk_omschrijving,
'type',
rec1.mld_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.mld_kenmerk_key,
null, null,
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;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('opdrachttype');
SELECT mld_typeopdr_omschrijving, mld_typeopdr_decentraal
INTO v_omschrijving, v_decentraal
FROM mld_typeopdr
WHERE mld_typeopdr_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('decentraal', v_decentraal);
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, 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_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;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('stdmelding');
SELECT mld_stdmelding_omschrijving, mld_stdmelding_urgentie, mld_stdmelding_uitvoertijd,
mld_stdmelding_notfrontend, prs_kostensoort_key, mld_stdmelding_verwijder,
mld_stdmelding_streeftijd, mld_stdmelding_groep
INTO v_omschrijving, v_urgentie, v_uitvoertijd,
v_notfrontend, v_prs_kostensoort_key, v_verwijder,
v_streeftijd, v_groep
FROM mld_stdmelding
WHERE mld_stdmelding_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
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_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, 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_MELDING_node
-- select xml.create_MLD_MELDING_node(7300) FROM DUAL
PROCEDURE create_mld_melding_node (p_key IN NUMBER)
AS
--v_sub_node VARCHAR2(30000);
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_user_key mld_melding.mld_melding_user_key%TYPE;
v_ingezien mld_melding.mld_melding_ingezien%TYPE;
v_afgewezen mld_melding.mld_melding_afgewezen%TYPE;
v_geaccepteerd mld_melding.mld_melding_geaccepteerd%TYPE;
v_afgemeld mld_melding.mld_melding_afgemeld%TYPE;
v_verwerkt mld_melding.mld_melding_verwerkt%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_melder_telefoon mld_melding.mld_melding_melder_telefoon%TYPE;
v_melder_plaats mld_melding.mld_melding_melder_plaats%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_ins_discipline_key mld_melding.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_geaccepteerd_user mld_melding.mld_melding_geaccepteerd_user%TYPE;
v_mld_stdmelding_key mld_melding.mld_stdmelding_key%TYPE;
v_prs_perslid_key mld_melding.prs_perslid_key%TYPE;
v_ingezien_user mld_melding.mld_melding_ingezien_user%TYPE;
v_adres_key mld_melding.mld_adres_key%TYPE;
v_afgemeld_user mld_melding.mld_melding_afgemeld_user%TYPE;
v_uitvoertijd mld_melding.mld_melding_uitvoertijd%TYPE;
v_uitvoertijd_sla mld_melding.mld_melding_uitvoertijd2%TYPE;
v_datum_gepland DATE;
v_datum_gepland_sla DATE;
v_ordernr mld_melding.mld_melding_ordernr%TYPE;
v_activiteit_key mld_melding.fac_activiteit_key%TYPE;
v_behandeling mld_melding.mld_melding_behandeling%TYPE;
CURSOR c1
IS
SELECT ins_deel_key
FROM mld_melding_object
WHERE mld_melding_key = p_key;
rec1 c1%ROWTYPE;
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_user_key, ''), NVL (mld_melding_ingezien, ''),
NVL (mld_melding_afgewezen, ''), NVL (mld_melding_geaccepteerd, ''), NVL (mld_melding_afgemeld, ''),
NVL (mld_melding_verwerkt, ''), NVL (mld_melding_geprint, 0), NVL (mld_kosten_klant, 0),
prs_kostenplaats_key, NVL (mld_melding_melder_telefoon, ''), NVL (mld_melding_melder_plaats, ''),
NVL (mld_melding_status, ''), NVL (s.mld_statuses_omschrijving, ''), NVL (mld_melding_spoed, 0),
mld_ins_discipline_key, mld_meldbron_key, mld_oorzaak_key, mld_alg_onroerendgoed_keys,
mld_alg_locatie_key, mld_melding_geaccepteerd_user, mld_stdmelding_key, prs_perslid_key,
mld_melding_ingezien_user, mld_adres_key, mld_melding_afgemeld_user, mld_melding_uitvoertijd,
mld_melding_uitvoertijd2,
mld_p_mld_datumtijd.datumtijdplusuitvoertijd (mld_melding_datum, mld_melding_uitvoertijd, 'DAGEN'),
mld_p_mld_datumtijd.datumtijdplusuitvoertijd (mld_melding_datum, mld_melding_uitvoertijd2, 'DAGEN'),
NVL (mld_melding_ordernr, ''), mld_melding_behandeling
INTO v_meldbron_nr, v_datum, v_omschrijving,
v_opmerking, v_user_key, v_ingezien,
v_afgewezen, v_geaccepteerd, v_afgemeld,
v_verwerkt, v_geprint, v_kosten_klant,
v_prs_kostenplaats_key, v_melder_telefoon, v_melder_plaats,
v_status_key, v_status, v_spoed,
v_ins_discipline_key, v_meldbron_key, v_oorzaak_key, v_alg_onroerendgoed_keys,
v_alg_locatie_key, v_geaccepteerd_user, v_mld_stdmelding_key, v_prs_perslid_key,
v_ingezien_user, v_adres_key, v_afgemeld_user, v_uitvoertijd,
v_uitvoertijd_sla,
v_datum_gepland,
v_datum_gepland_sla,
v_ordernr, v_behandeling
FROM mld_melding m, mld_statuses s
WHERE m.mld_melding_status = s.mld_statuses_key AND mld_melding_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('meldbron_nr', v_meldbron_nr);
mydatetochar ('gemeld', v_datum);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('behandeling', v_behandeling);
mydatetochar ('ingezien', v_ingezien);
mydatetochar ('afgewezen', v_afgewezen);
mydatetochar ('geaccepteerd', v_geaccepteerd);
createxmltagvalue ('geaccepteerd_user', v_geaccepteerd_user);
mydatetochar ('afgemeld', v_afgemeld);
mydatetochar ('verwerkt', v_verwerkt);
createxmltagvalue ('geprint', v_geprint);
createxmltagvalue ('kosten_klant', v_kosten_klant);
createxmltagvalue ('ordernr', v_ordernr);
createxmltagvalue ('melder_telefoon', v_melder_telefoon);
createxmltagvalue ('melder_plaats', v_melder_plaats);
createxmltagvalue ('status_key', v_status_key);
createxmltagvalue ('status', v_status);
createxmltagvalue ('spoed', v_spoed);
createxmltagvalue ('uitvoertijd', v_uitvoertijd);
createxmltagvalue ('uitvoertijd_sla', v_uitvoertijd_sla);
mydatetochar ('datum_gepland', v_datum_gepland);
mydatetochar ('datum_gepland_sla', v_datum_gepland_sla);
create_mld_kenmerken (p_key);
create_prs_kostenplaats_node (v_prs_kostenplaats_key);
create_ins_discipline_node (v_ins_discipline_key);
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_user_key, 'ingevoerd_user', TRUE);
create_prs_perslid_node (v_ingezien_user, 'ingezien_user', TRUE);
create_prs_perslid_node (v_afgemeld_user, 'afgemeld_user', TRUE);
create_fac_activiteit_node (v_activiteit_key);
createclosetag ('melding');
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)
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_dagen mld_opdr.mld_opdr_dagen%TYPE;
v_werkzaamheden mld_opdr.mld_opdr_werkzaamheden%TYPE;
v_datumuitgevoerd mld_opdr.mld_opdr_datumuitgevoerd%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_afgemeld_user mld_opdr.mld_opdr_afgemeld_user%TYPE;
v_prs_kostenplaats_key mld_opdr.prs_kostenplaats_key%TYPE;
v_ordernr mld_opdr.mld_opdr_ordernr%TYPE;
v_mld_opdr_verzonden mld_opdr.mld_opdr_verzonden%TYPE;
v_mld_opdr_verwerkt mld_opdr.mld_opdr_verwerkt%TYPE;
v_prs_perslid_key_fiat mld_opdr.prs_perslid_key_fiat%TYPE;
v_mld_opdr_datumfiatvraag mld_opdr.mld_opdr_datumfiatvraag%TYPE;
v_mld_opdr_datumfiat_ok mld_opdr.mld_opdr_datumfiat_ok%TYPE;
v_mld_opdr_datumfiat_nok mld_opdr.mld_opdr_datumfiat_nok%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;
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,
mld_opdr_dagen, mld_opdr_werkzaamheden, mld_opdr_datumuitgevoerd, 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,
mld_opdr_afgemeld_user, prs_kostenplaats_key, mld_opdr_ordernr, mld_opdr_verzonden, mld_opdr_verwerkt,
prs_perslid_key_fiat, mld_opdr_datumfiatvraag, mld_opdr_datumfiat_ok, mld_opdr_datumfiat_nok,
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_werkzaamheden, v_datumuitgevoerd, 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_afgemeld_user, v_prs_kostenplaats_key, v_ordernr, v_mld_opdr_verzonden, v_mld_opdr_verwerkt,
v_prs_perslid_key_fiat, v_mld_opdr_datumfiatvraag, v_mld_opdr_datumfiat_ok, v_mld_opdr_datumfiat_nok,
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);
SELECT mld_p_mld_datumtijd.datumtijdplusuitvoertijd(v_datumbegin, v_dagen, 'DAGEN')
INTO v_datumgereed
FROM DUAL;
mydatetochar ('datumgereed', v_datumgereed);
createxmltagvalue ('werkzaamheden', v_werkzaamheden);
createxmltagvalue ('opmerking', v_opmerking);
mydatetochar ('datumuitgevoerd', v_datumuitgevoerd);
mydatetochar ('datumverwerkt', v_mld_opdr_verwerkt);
mydatetochar ('datumverzonden', v_mld_opdr_verzonden);
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));
mydatetochar ('datumfiatvraag', v_mld_opdr_datumfiatvraag);
mydatetochar ('datumfiat_ok', v_mld_opdr_datumfiat_ok);
mydatetochar ('datumfiat_nok', v_mld_opdr_datumfiat_nok);
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_prs_perslid_node (v_afgemeld_user, 'afgemeld_user', TRUE);
create_prs_perslid_node (v_prs_perslid_key_fiat, 'fiatteur', TRUE);
create_factuuradres_node (p_key);
create_mld_melding_node (v_mld_melding_key);
create_fac_activiteit_node (v_activiteit_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);
/* Attentie: indien men afdeling als personen suimuleert (bv [NIET VERHUURD]) wordt dit mogelijk
een heel omvangrijke node! Dat moet men dus eigenlijk niet doen.
*/
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);
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.bes_refsrtkenmerk_objectnaam, r.bes_refsrtkenmerk_kolomnaam, r.bes_refsrtkenmerk_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,
NVL (s.bes_srtkenmerk_dimensie, '') dimensie
FROM bes_kenmerk k, bes_srtkenmerk s, bes_refsrtkenmerk 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.bes_refsrtkenmerk_key = r.bes_refsrtkenmerk_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;
IF (rec1.bes_srtkenmerk_kenmerktype = 'R' AND v_kenmerk_waarde IS NOT NULL)
THEN
sql_stmt :=
'SELECT MIN('
|| rec1.bes_refsrtkenmerk_kolomtxt
|| ')'
|| ' FROM '
|| rec1.bes_refsrtkenmerk_objectnaam
|| ' WHERE '
|| rec1.bes_refsrtkenmerk_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
v_kenmerk_waarde := rec1.bes_kenmerk_default;
END;
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.bes_srtkenmerk_omschrijving,
'type',
rec1.bes_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.bes_kenmerk_key,
null, null,
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.bes_refsrtkenmerk_objectnaam, r.bes_refsrtkenmerk_kolomnaam, r.bes_refsrtkenmerk_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,
NVL (s.bes_srtkenmerk_dimensie, '') dimensie
FROM bes_kenmerk k, bes_srtkenmerk s, bes_refsrtkenmerk 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.bes_refsrtkenmerk_key = r.bes_refsrtkenmerk_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;
IF (rec1.bes_srtkenmerk_kenmerktype = 'R' AND v_kenmerk_waarde IS NOT NULL)
THEN
sql_stmt :=
'SELECT MIN('
|| rec1.bes_refsrtkenmerk_kolomtxt
|| ')'
|| ' FROM '
|| rec1.bes_refsrtkenmerk_objectnaam
|| ' WHERE '
|| rec1.bes_refsrtkenmerk_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
v_kenmerk_waarde := rec1.bes_kenmerk_default;
END;
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.bes_srtkenmerk_omschrijving,
'type',
rec1.bes_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.bes_kenmerk_key,
null, null,
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
createconciseopentag ('srtgroep');
ELSE
createopentag ('srtgroep');
END IF;
SELECT ins_discipline_key, 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
createconciseopentag ('srtdeel');
ELSE
createopentag ('srtdeel');
END IF;
SELECT ins_srtgroep_key, ins_srtdeel_omschrijving, ins_srtdeel_prijs, ins_srtdeel_inkprijs, 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,
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_besteli_node (p_key IN NUMBER)
AS
v_ins_srtdeel_key ins_srtdeel.ins_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_prijs ins_srtdeel.ins_srtdeel_prijs%TYPE;
//v_inkprijs ins_srtdeel.ins_srtdeel_inkprijs%TYPE;
v_totaal bes_bestelling_item.bes_bestelling_item_prijs%TYPE;
v_brutoprijs bes_bestelling_item.bes_bestelling_item_brutoprijs%TYPE;
v_prijs bes_bestelling_item.bes_bestelling_item_prijs%TYPE;
BEGIN
createopentag ('bestelitem');
SELECT ins_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
INTO v_ins_srtdeel_key, v_aantal, v_bestelopdr_item_key, v_aantalontv,
v_status, v_status_key, v_prijs, v_brutoprijs,
v_totaal
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 ('brutoprijs', v_brutoprijs);
// createxmltagvalue ('inkprijs', v_inkprijs);
createxmltagvalue ('totaal', v_totaal);
create_bes_item_kenmerken (p_key);
create_ins_srtdeel_node (v_ins_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;
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
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
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);
mydatetochar ('ontvangen', v_bestelopdr_item_ontvangen);
mydatetochar ('verwerkt', v_bestelopdr_item_verwerkt);
createxmltagvalue ('brutoprijs', v_bestelopdr_item_brutoprijs);
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_owner_key bes_bestelling.bes_bestelling_owner_key%TYPE;
v_geaccepteerd bes_bestelling.bes_bestelling_geaccepteerd%TYPE;
v_afgewezen bes_bestelling.bes_bestelling_afgewezen%TYPE;
v_afgemeld bes_bestelling.bes_bestelling_afgemeld%TYPE;
v_verwerkt bes_bestelling.bes_bestelling_verwerkt%TYPE;
v_opmerking bes_bestelling.bes_bestelling_opmerking%TYPE;
v_document bes_bestelling.bes_bestelling_document%TYPE;
v_documentnaam bes_bestelling.bes_bestelling_documentnaam%TYPE;
v_ordernr bes_bestelling.bes_bestelling_ordernr%TYPE;
v_telefoon bes_bestelling.bes_bestelling_telefoon%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;
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,
bes_bestelling_owner_key, bes_bestelling_geaccepteerd, bes_bestelling_afgewezen,
bes_bestelling_afgemeld, bes_bestelling_verwerkt, bes_bestelling_opmerking, bes_bestelling_document,
bes_bestelling_documentnaam, bes_bestelling_ordernr, bes_bestelling_telefoon, 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
INTO v_module, v_statuskey, v_datum, v_perslid_key,
v_owner_key, v_geaccepteerd, v_afgewezen,
v_afgemeld, v_verwerkt, v_opmerking, v_document,
v_documentnaam, v_ordernr, v_telefoon, 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
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_owner_key, 'invoerder', TRUE);
mydatetochar ('geaccepteerd', v_geaccepteerd);
mydatetochar ('afgewezen', v_afgewezen);
mydatetochar ('afgemeld', v_afgemeld);
mydatetochar ('verwerkt', v_verwerkt);
createxmltagvalue ('opmerking', v_opmerking);
--createxmltagvalue ('document', v_document);
createxmltagvalue ('documentnaam', v_documentnaam);
createxmltagvalue ('ordernr', v_ordernr);
createxmltagvalue ('telefoon', v_telefoon);
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);
create_bes_bestelling_node(v_retourvan_key, p_concise);
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;
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
--
--
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_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
INTO v_afspraak_key, v_afspraak_naam, v_afspraak_bedrijf, v_afspraak_opmerking, v_done,
v_out, v_pasnr
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);
mydatetochar ('done', v_done);
mydatetochar ('out', v_out);
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_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,
ac.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);
FOR rec1 IN c1
LOOP
create_bez_bezoeker_node (rec1.bez_bezoekers_key);
END LOOP;
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.res_refsrtkenmerk_objectnaam, r.res_refsrtkenmerk_kolomnaam, r.res_refsrtkenmerk_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,
'' dimensie
FROM res_kenmerk k, res_srtkenmerk s, res_refsrtkenmerk 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.res_refsrtkenmerk_key = r.res_refsrtkenmerk_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;
IF (rec1.res_srtkenmerk_kenmerktype = 'R' AND v_kenmerk_waarde IS NOT NULL)
THEN
sql_stmt :=
'SELECT MIN('
|| rec1.res_refsrtkenmerk_kolomtxt
|| ')'
|| ' FROM '
|| rec1.res_refsrtkenmerk_objectnaam
|| ' WHERE '
|| rec1.res_refsrtkenmerk_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
v_kenmerk_waarde := rec1.res_kenmerk_default;
END;
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.res_srtkenmerk_omschrijving,
'type',
rec1.res_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.res_kenmerk_key,
null, null,
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, o.res_opstelling_omschrijving, ro.res_ruimte_key,
r.res_ruimte_omschrijving, r.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, res_deel_eenheid, res_deel_prijs, res_deel_prijs_vast, 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_levering res_rsv_deel.res_rsv_deel_levering%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;
BEGIN
createopentag ('rsv_deel');
SELECT rd.res_deel_key, res_rsv_deel_aantal, res_rsv_deel_levering, 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, res_rsv_deel_verwerkt, res_rsv_deel_user_key, res_rsv_deel_afgemeld,
res_rsv_deel_afgemeld_user, sb.res_status_bo_omschrijving
INTO v_deel_key, v_aantal, v_levering, v_status_bo_key, v_rsv_ruimte_key,
v_van, v_tot, v_prijs, v_aanmaak, v_verwijder,
bez_bezoekers_key, v_verwerkt, v_user_key, v_afgemeld,
v_afgemeld_user, v_status_bo_omschr
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);
mydatetochar ('levering', v_levering);
createxmltagvalue ('status_bokey', v_status_bo_key);
createxmltagvalue ('status_bo', v_status_bo_omschr);
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);
mydatetochar ('verwerkt', v_verwerkt);
mydatetochar ('afgemeld', v_afgemeld);
create_prs_perslid_node (v_user_key, 'ingevoerd_user', TRUE);
create_prs_perslid_node (v_afgemeld_user, 'afgemeld_user', TRUE);
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, res_artikel_omschrijving, res_artikel_eenheid, res_artikel_prijs,
res_artikel_prijs_vast, res_artikel_inkoopprijs, res_artikel_btw, 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;
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,
res_rsv_artikel_verwerkt, res_rsv_artikel_user_key, res_rsv_artikel_afgemeld,
res_rsv_artikel_afgemeld_user, sb.res_status_bo_omschrijving
INTO v_artikel_key, v_aantal, v_levering, v_status_bo_key,
v_rsv_ruimte_key, v_prijs, v_aanmaak, v_verwijder,
v_verwerkt, v_user_key, v_afgemeld,
v_afgemeld_user, v_status_bo_omschr
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 ('prijs', v_prijs);
mydatetochar ('aanmaak', v_aanmaak);
mydatetochar ('verwijder', v_verwijder);
mydatetochar ('verwerkt', v_verwerkt);
mydatetochar ('afgemeld', v_afgemeld);
create_prs_perslid_node (v_user_key, 'ingevoerd_user', TRUE);
create_prs_perslid_node (v_afgemeld_user, 'afgemeld_user', TRUE);
createclosetag ('rsv_artikel');
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_soort res_activiteit.res_activiteit_soort%TYPE;
BEGIN
createopentag ('res_activiteit');
SELECT res_activiteit_omschrijving, res_activiteit_duur, res_activiteit_soort
INTO v_omschrijving, v_duur, v_soort
FROM res_activiteit
WHERE res_activiteit_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('duur', v_duur);
createxmltagvalue ('soort', v_soort);
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_verwerkt res_rsv_ruimte.res_rsv_ruimte_verwerkt%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_user_key res_rsv_ruimte.res_rsv_ruimte_user_key%TYPE;
v_volgnr res_rsv_ruimte.res_rsv_ruimte_volgnr%TYPE;
v_afgemeld res_rsv_ruimte.res_rsv_ruimte_afgemeld%TYPE;
v_afgemeld_user res_rsv_ruimte.res_rsv_ruimte_afgemeld_user%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_verwijder_user res_rsv_ruimte.res_rsv_ruimte_verwijder_user%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_verwerkt,
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_user_key, res_rsv_ruimte_volgnr, res_rsv_ruimte_afgemeld, res_rsv_ruimte_afgemeld_user,
sf.res_status_fo_omschrijving, sb.res_status_bo_omschrijving, res_rsv_ruimte_kosten_klant, res_rsv_ruimte_verwijder_user
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_verwerkt,
v_opmerking, v_omschrijving, v_ordernr, v_prs_kostenplaats_key,
v_contact_key, v_host_key, v_telefoon, v_alg_ruimte_key,
v_user_key, v_volgnr, v_afgemeld, v_afgemeld_user,
v_status_fo_omschr, v_status_bo_omschr, v_kosten_klant, v_verwijder_user
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);
mydatetochar ('aangemaakt', v_aanmaak);
mydatetochar ('afgemeld', v_afgemeld);
mydatetochar ('verwerkt', v_verwerkt);
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_user_key, 'ingevoerd_user', TRUE);
create_prs_perslid_node (v_host_key, 'host_user', FALSE);
create_prs_perslid_node (v_contact_key, 'contact_user', FALSE);
create_prs_perslid_node (v_afgemeld_user, 'afgemeld_user', TRUE);
create_prs_perslid_node (v_verwijder_user, 'verwijder_user', TRUE);
createxmltagvalue ('telefoon', v_telefoon);
create_alg_onroerendgoed_node (v_alg_ruimte_key, 'plaats', NULL, p_concise, FALSE);
create_res_kenmerken (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, 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;
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_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;
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_key IS NOT NULL
THEN
SELECT fac_usrrap_view_name, fac_usrrap_omschrijving, fac_usrrap_info
INTO view_name, omschrijving, rinfo
FROM fac_usrrap
WHERE fac_usrrap_key = p_key;
createopentagattributes ('rapport', 'view', view_name, 'title', omschrijving, 'info', rinfo, 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('''
|| view_name
|| ''') 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 ' || view_name || ' ' || 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_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_kenmerken (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.cnt_kenmerk_key, s.cnt_srtkenmerk_omschrijving, s.cnt_srtkenmerk_kenmerktype,
r.cnt_refsrtkenmerk_objectnaam, r.cnt_refsrtkenmerk_kolomnaam, r.cnt_refsrtkenmerk_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,
'' dimensie
FROM cnt_kenmerk k, cnt_srtkenmerk s, cnt_refsrtkenmerk 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.cnt_refsrtkenmerk_key = r.cnt_refsrtkenmerk_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;
IF (rec1.cnt_srtkenmerk_kenmerktype = 'R' AND v_kenmerk_waarde IS NOT NULL)
THEN
sql_stmt :=
'SELECT MIN('
|| rec1.cnt_refsrtkenmerk_kolomtxt
|| ')'
|| ' FROM '
|| rec1.cnt_refsrtkenmerk_objectnaam
|| ' WHERE '
|| rec1.cnt_refsrtkenmerk_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
v_kenmerk_waarde := rec1.cnt_kenmerk_default;
END;
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.cnt_srtkenmerk_omschrijving,
'type',
rec1.cnt_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.cnt_kenmerk_key,
'wijzig',
DATE_TO_CHAR(v_kenmerk_wijzig,'YYYYMMDD HH24:MI'),
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;
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;
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
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,
t1.cnt_termijn_omschrijving, t2.cnt_termijn_omschrijving
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
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 ('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;
FOR rec2 IN c2
LOOP
-- plaats
BEGIN
createopentag ('contract_plaats');
createxmltagvalue ('key', mynumbertochar (rec2.cnt_contract_plaats_key));
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);
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;
createclosetag ('contract');
END IF;
END;
-- MAIN PROC --
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_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);
CASE p_xmlnode
WHEN 'afspraak'
THEN
create_bez_afspraak_node (p_key, FALSE);
WHEN 'bestelling'
THEN
create_bes_bestelling_node (p_key, FALSE);
WHEN 'bestelopdr'
THEN
create_bes_bestelopdr_node (p_key);
WHEN 'melding'
THEN
create_mld_melding_node (p_key);
WHEN 'opdracht'
THEN
create_mld_opdr_node (p_key);
WHEN 'reservering'
THEN
create_res_reservering_node (p_key, p_extra);
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', FALSE);
WHEN 'afdeling'
THEN
create_prs_afdeling_node (p_key, 'afdeling');
WHEN 'deel'
THEN
create_ins_deel_node (p_key);
WHEN 'rapport'
THEN
create_fac_usrrap_node (p_key, p_where);
WHEN 'contract'
THEN
create_cnt_contract_node (p_key, FALSE);
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;
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;
/
#endif // FAC