Files
Database/FAC/FAC_PAC.SRC
Jos Groot Lipman 964abb3b53 Projecten XML
svn path=/Database/trunk/; revision=9267
2006-06-22 07:54:22 +00:00

4189 lines
174 KiB
Plaintext

#ifdef FAC
/* $Revision: 55 $
* $Modtime: 22-06-06 9:00 $
*/
/* FAC_P_FAC_VOLGNR: Tabel en functies voor volgnummers.
*
* Deze tabel is voor het simuleren van sequences die zich kunnen
* resetten om een bepaalde periode.
*
* De periode wordt aangegeven dmv. een TO_CHAR-formaat van een datum,
* bijv. 'YYYY' voor jaar of 'MM' voor maand.
*
* De functies voor deze volgnummers zitten in een package. Het volgnummer
* moet altijd via deze functies opgevraagd worden.
*
* De volgende functies zijn beschikbaar:
* - fac_volgnr_currval(soort) RETURN NUMBER:
* Vraag de huidige waarde van het volgnummer op.
* - fac_volgnr_nextval(soort) RETURN NUMBER:
* Vraag de waarde op van volgende volgnummer op.
* het volgnummer en de laatste opvraagdatum wordt dan aangepast. Als de
* huidige datum over de opgegeven periodegrens komt, dan wordt eerst het
* volgnummer gereset.
* - fac_volgnr_reset(soort):
* Indien nodig reset het volgnr.
*
* In SQL_PLUS kan de source opgevraagd worden uit tabel USER_SOURCE.
* Bij het creeren kan de de volgende error komen:
* DBA-00072: Package body created with compilation errors.
* De errors kunnen bekeken worden dmv. SHOW ERRORS;
*
* FAC_P_FAC_SAVE_RESTORE: Package voor het bewaren en teruggeven van primary keys binnen triggers.
*
* Gebruikt in: De status van de MLD_MELDING is afhankelijk van de minimale status van zijn opdrachten, of als
* er geen opdrachten kan dit door de gebruiker gezet worden. Als er een nieuwe opdrachten aangemaakt
* wordt, of als een opdracht van status veranderd of als een opdracht verwijderd wordt, heeft dit invloed
* op de status van de bijbehorende melding. Dit mechanisme is opgelost via de triggers van MLD_OPDR.
*
* De volgende functies zijn beschikbaar:
* - ResetSelectie(TableName) RETURN BOOLEAN:
* Verwijderd de vorige selectie van de Primary-keys van de tabel. Hou hier rekening met multi-user dmv. de
* huidige SessionId. Retourneerd of het gelukt (TRUE) is of niet (FALSE).
* Deze moet aangeroepen worden in de BEFORE-statement-trigger,
* bijvoorbeeld: BEFORE INSERT OR UPDATE OR DELETE ON mld_opdr.
* - SavePrimaryKey(TableName, PrimaryKey) RETURN BOOLEAN:
* Onthou de PrimaryKey-waarde, hou hiet ook rekening met multi-user dmv. de huidige SessionId. Retourneerd
* of het gelukt (TRUE) is of niet (FALSE).
* Deze moet aangeroepen worden in de BEFORE-row-trigger,
* bijvoorbeeld: BEFORE INSERT OR UPDATE ON mld_opdr FOR EACH ROW
* EN : BEFORE DELETE ON mld_opdr FOR EACH ROW
* - GetPrimaryKey(TableName, IndexNr) RETURN NUMBER:
* Geef de nth onthouden PrimaryKey terug, hou hiet ook rekening met multi-user dmv. de huidige SessionId.
* Het IndexNr begint met 1 en loopt door totdat er geen volgende PrimaryKey onthouden is.
* Retourneerd de gevonden PrimaryKey of NULL (als er geen volgende is).
* Deze moet aangeroepen worden in de AFTER-statement-trigger,
* bijvoorbeeld: AFTER INSERT OR UPDATE OR DELETE ON mld_opdr.
*
* LET OP: FAC_P_FAC_SAVE_RESTORE_UPDATE(Func, TableName)
* Voor het gebruik van GetPrimaryKey() is een #define FAC_P_FAC_SAVE_RESTORE_UPDATE(Func, TableName)
* gemaakt in COMSQL.H: Deze doorloopt alle onthouden PrimaryKeys van TableName en roept voor elk record
* de functie Func aan. Func krijgt 1 argument, nl. PrimaryKey en moet een BOOLEAN retourneren.
*
* Voorbeelden van het gebruik staan in MLD_TRI.SRC in de triggers MLD_T_MLD_OPDR_B_IUD, MLD_T_MLD_OPDR_B_IU,
* MLD_T_MLD_OPDR_B_D en MLD_T_MLD_OPDR_A_IUD.
*
* Voor de XML functies is soms de concise 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.
*
*/
#include "comsql.h"
CREATE OR REPLACE PACKAGE fac_p_fac_volgnr AS
FUNCTION fac_volgnr_currval( soort IN CHAR ) RETURN NUMBER;
FUNCTION fac_volgnr_nextval( soort IN CHAR ) RETURN NUMBER;
PROCEDURE fac_volgnr_reset( soort IN CHAR );
END fac_p_fac_volgnr;
/
CREATE OR REPLACE PACKAGE BODY fac_p_fac_volgnr AS
FUNCTION fac_volgnr_currval( soort IN CHAR ) RETURN NUMBER IS
volgnr NUMBER;
BEGIN
SELECT fac_volgnr
INTO volgnr
FROM fac_volgnrs
WHERE fac_volgnr_srt = soort;
RETURN volgnr;
#ifndef MS_SQL
EXCEPTION
WHEN NO_DATA_FOUND
THEN APPLICATION_ERROR(-20000, 'alg_m152');
#else
if @@rowcount<1
#endif
volgnr := 0;
RETURN volgnr;
END fac_volgnr_currval;
#ifndef MS_SQL
FUNCTION fac_volgnr_nextval( soort IN CHAR ) RETURN NUMBER IS
volgnr NUMBER;
#else
PROCEDURE fac_volgnr_nextval( soort IN CHAR, volgnr OUT NUMBER ) IS
#endif
BEGIN
_EXEC1(_MSSQL(fac_p_fac_volgnr.)fac_volgnr_reset,soort);
SELECT fac_volgnr + 1
INTO volgnr
FROM fac_volgnrs
WHERE fac_volgnr_srt = soort
_ORACLE(FOR UPDATE OF fac_volgnr);
UPDATE fac_volgnrs
SET fac_volgnr = volgnr,
fac_volgnr_laatste_datum = SYSDATE
WHERE fac_volgnr_srt = soort;
RETURN volgnr;
EXCEPTION
WHEN NO_DATA_FOUND
THEN APPLICATION_ERROR(-20000, 'alg_m152');
RETURN 0;
END fac_volgnr_nextval;
PROCEDURE fac_volgnr_reset( soort IN CHAR ) IS
periode fac_volgnrs.fac_volgnr_periode%TYPE;
laatste_datum fac_volgnrs.fac_volgnr_laatste_datum%TYPE;
BEGIN
SELECT fac_volgnr_periode, fac_volgnr_laatste_datum
INTO periode, laatste_datum
FROM fac_volgnrs
WHERE fac_volgnr_srt = soort;
IF DATE_TO_CHAR(laatste_datum, periode) <> DATE_TO_CHAR(SYSDATE, periode)
THEN
UPDATE fac_volgnrs
SET fac_volgnr = 0,
fac_volgnr_laatste_datum = SYSDATE
WHERE fac_volgnr_srt = soort;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN APPLICATION_ERROR(-20000, 'alg_m152');
END fac_volgnr_reset;
END fac_p_fac_volgnr;
/
CREATE OR REPLACE PACKAGE fac_p_fac_save_restore AS
-- Maak de vorige selectie van de tabel en de huidige sessie leeg.
FUNCTION ResetSelectie( TableName IN VARCHAR2 ) RETURN BOOLEAN;
-- Onthou de primary key van de tabel en de huidige sessie.
FUNCTION SavePrimaryKey( TableName IN VARCHAR2, PrimaryKey IN NUMBER ) RETURN BOOLEAN;
-- Geef de nth primary key van de tabel en de huidige sessie. IndexNr begint met 1.
FUNCTION GetPrimaryKey( TableName IN VARCHAR2, IndexNr IN NUMBER ) RETURN NUMBER;
-- Onthou naast Primary key ook de datum i.v.m. een eventuele UNDO vanuit AutoCAD.
FUNCTION SavePrimaryKeyAndDate( TableName IN VARCHAR2, PrimaryKey IN NUMBER, Datum IN Date ) RETURN BOOLEAN;
-- Geef verwijderdatum of NULL terug van primary key i.v.m. eventuele UNDO vanuit AutoCAD.
FUNCTION GetDate( TableName IN VARCHAR2, PrimaryKey IN NUMBER ) RETURN DATE;
PRAGMA RESTRICT_REFERENCES (GetPrimaryKey,WNDS, WNPS);
END fac_p_fac_save_restore;
/
CREATE OR REPLACE PACKAGE BODY fac_p_fac_save_restore AS
FUNCTION GetSessionId _MSSQL(()) RETURN VARCHAR2 IS
Session_Id VARCHAR2(20);
BEGIN
#ifndef MS_SQL
SELECT USERENV('SESSIONID')
INTO Session_Id
FROM DUAL;
#else
Session_Id := @@SPID;
#endif
RETURN Session_Id;
END;
#ifdef MS_SQL
PROCEDURE ResetSelectie( TableName IN VARCHAR2 ) IS
#else
FUNCTION ResetSelectie( TableName IN VARCHAR2 ) RETURN BOOLEAN IS
#endif
SessionId VARCHAR2(20);
BEGIN
SessionId := _MSSQL(fac_p_fac_save_restore.)GetSessionId();
DELETE FROM fac_selectie
WHERE fac_selectie_node = SessionId
AND fac_selectie_tabel = TableName;
RETURN TRUE;
EXCEPTION
WHEN OTHERS
THEN RETURN FALSE;
END;
#ifdef MS_SQL
PROCEDURE SavePrimaryKey( TableName IN VARCHAR2, PrimaryKey IN NUMBER ) IS
#else
FUNCTION SavePrimaryKey( TableName IN VARCHAR2, PrimaryKey IN NUMBER ) RETURN BOOLEAN IS
#endif
SessionId VARCHAR2(20);
BEGIN
SessionId := _MSSQL(fac_p_fac_save_restore.)GetSessionId();
INSERT INTO fac_selectie (fac_selectie_node,
fac_selectie_tabel,
fac_selectie_key)
VALUES (SessionId, TableName, PrimaryKey);
#ifndef MS_SQL
RETURN TRUE;
EXCEPTION
WHEN OTHERS
THEN RETURN FALSE;
#endif
END;
-- Geef de nth Fac_Selectie_Key van de geselecteerde records
-- terug. IndexNr begint met 1.
FUNCTION GetPrimaryKey( TableName IN VARCHAR2, IndexNr IN NUMBER ) RETURN NUMBER IS
SessionId VARCHAR2(20);
CURSOR Selectie IS SELECT DISTINCT fac_selectie_key
FROM fac_selectie
WHERE fac_selectie_node = SessionId
AND fac_selectie_tabel = TableName
ORDER BY fac_selectie_key;
#ifndef MS_SQL
SelectieRec Selectie%ROWTYPE;
#endif
TmpIndex NUMBER;
ReturnKey NUMBER(10);
BEGIN
SessionId := _MSSQL(fac_p_fac_save_restore.)GetSessionId();
ReturnKey := NULL;
TmpIndex := 1;
FOR SelectieRec IN Selectie LOOP
IF IndexNr = TmpIndex
THEN
#ifndef MS_SQL
ReturnKey := SelectieRec.fac_selectie_key;
#else
ReturnKey := TO_NUMBER(SelectieRec);
#endif
EXIT;
END IF;
TmpIndex := TmpIndex + 1;
END LOOP;
RETURN ReturnKey;
END;
#ifdef MS_SQL
PROCEDURE SavePrimaryKeyAndDate( TableName IN VARCHAR2, PrimaryKey IN NUMBER, Datum IN Date ) IS
#else
FUNCTION SavePrimaryKeyAndDate( TableName IN VARCHAR2, PrimaryKey IN NUMBER, Datum IN Date ) RETURN BOOLEAN IS
#endif
SessionId VARCHAR2(20);
BEGIN
SessionId := _MSSQL(fac_p_fac_save_restore.)GetSessionId();
INSERT INTO fac_selectie (fac_selectie_node,
fac_selectie_tabel,
fac_selectie_key,
fac_selectie_datum)
VALUES (SessionId, TableName, PrimaryKey, Datum);
#ifndef MS_SQL
RETURN TRUE;
EXCEPTION
WHEN OTHERS
THEN RETURN FALSE;
#endif
END;
FUNCTION GetDate( TableName IN VARCHAR2, PrimaryKey IN NUMBER ) RETURN DATE IS
SessionId VARCHAR2(20);
ReturnDate Date;
CURSOR Selectie IS SELECT DISTINCT fac_selectie_datum
FROM fac_selectie
WHERE fac_selectie_node = SessionId
AND fac_selectie_key = PrimaryKey
AND fac_selectie_tabel = TableName;
#ifndef MS_SQL
SelectieRec Selectie%ROWTYPE;
#endif
TmpIndex NUMBER;
ReturnKey NUMBER(10);
BEGIN
SessionId := _MSSQL(fac_p_fac_save_restore.)GetSessionId();
ReturnDate := NULL;
FOR SelectieRec IN Selectie LOOP
#ifndef MS_SQL
ReturnDate := SelectieRec.fac_selectie_datum;
#else
ReturnDate := SelectieRec;
#endif
EXIT;
END LOOP;
RETURN ReturnDate;
END;
END fac_p_fac_save_restore;
/
CREATE OR REPLACE PACKAGE webfac AS
FUNCTION fac_f_usrrap_query (p_tabelnaam IN VARCHAR2) RETURN VARCHAR2;
FUNCTION fac_f_usrrap_orderby (p_tabelnaam IN VARCHAR2) RETURN VARCHAR2;
FUNCTION fac_f_getmainuser RETURN VARCHAR2;
END webfac;
/
CREATE OR REPLACE PACKAGE BODY webfac AS
/* These functions won't work for MS SQL server, they need new views */
FUNCTION fac_f_getmainuser _MSSQL(()) RETURN VARCHAR2 IS
MainUser VARCHAR2(80);
BEGIN
/* Wie is de hoofduser?? */
BEGIN
#ifdef MS_SQL
SELECT UPPER(table_schema)
INTO mainuser
FROM information_schema.tables
WHERE table_name = 'FAC_MODULE' and table_type='BASE TABLE';
#else
SELECT UPPER(table_owner)
INTO mainuser
FROM user_synonyms
WHERE synonym_name = 'FAC_MODULE';
#endif
EXCEPTION
WHEN NO_DATA_FOUND
THEN
/* We zijn zelf de hoofduser! */
SELECT UPPER(USER)
INTO mainuser
FROM DUAL;
END;
RETURN MainUser;
END fac_f_getmainuser;
FUNCTION fac_f_usrrap_query ( p_tabelnaam IN VARCHAR2 ) RETURN VARCHAR2 IS
QueryString VARCHAR2(2000);
Kolomnaam VARCHAR2(64);
mainuser VARCHAR2(80);
#ifdef MS_SQL
LabelRec_data_type VARCHAR2(106);
LabelRec_column_name VARCHAR2(30);
#endif
BEGIN
mainuser := _MSSQL(webfac.)fac_f_getmainuser();
BEGIN
DECLARE
CURSOR Zoek_label IS
SELECT column_name
, data_type
FROM all_tab_columns
WHERE table_name = UPPER(p_tabelnaam)
AND owner = mainuser
ORDER BY COLUMN_ID;
BEGIN
QueryString := 'Select ';
#ifndef MS_SQL
FOR LabelRec in zoek_label LOOP
#else
[skip]
OPEN zoek_label;
FETCH NEXT FROM zoek_label INTO @LabelRec_column_name, @LabelRec_data_type;
WHILE (@@FETCH_STATUS <> -1 )
BEGIN
[/skip]
#endif
IF LabelRec.data_type = 'NUMBER'
THEN
QueryString := QueryString ||'to_number('||_MSSQL('web.number_')_ORACLE('')||'TO_CHAR('|| LabelRec.column_name ||',''99999999D9999'')) "'||LabelRec.column_name||'",';
ELSE
IF LabelRec.data_type = 'DATE'
THEN
QueryString := QueryString ||_MSSQL('web.date_')_ORACLE('')||'TO_CHAR(' || LabelRec.column_name ||',''MM-DD-YYYY'') "'||LabelRec.column_name||'",';
ELSE
QueryString := QueryString ||' ' || LabelRec.column_name ||',';
END IF;
END IF;
#ifndef MS_SQL
END LOOP;
END;
END;
QueryString := Substr(QueryString,1,(LENGTH(QueryString)-1))||' from '|| p_tabelnaam ;
RETURN QueryString;
#else
[skip]
FETCH NEXT FROM zoek_label INTO @LabelRec_column_name, @LabelRec_data_type;
END;
CLOSE zoek_label;
DEALLOCATE zoek_label;
END;
END;
set @QueryString = Substring(@QueryString,1,(LEN(@QueryString)-1))+' from '+ @p_tabelnaam ;
RETURN @QueryString;
[/skip]
#endif
END fac_f_usrrap_query;
FUNCTION fac_f_usrrap_orderby ( p_tabelnaam IN VARCHAR2 ) RETURN VARCHAR2 IS
AantalRecords NUMBER(10);
OrderBy VARCHAR2(255);
mainuser VARCHAR2(80);
i NUMBER(10);
BEGIN
mainuser := _MSSQL(webfac.)fac_f_getmainuser();
SELECT count(*)
INTO AantalRecords
FROM all_tab_columns
WHERE table_name = UPPER(p_tabelnaam)
AND owner = mainuser;
--
OrderBy := '';
i := 1;
[skip]
#ifndef MS_SQL
FOR i IN 1..AantalRecords LOOP
OrderBy := OrderBy||TO_CHAR(i)||',';
END LOOP;
#else
WHILE (@i <= @AantalRecords) BEGIN
SET @OrderBy = @OrderBy + RTRIM(CONVERT(char,@i)) + ',';
SET @i = @i + 1;
END;
#endif
[/skip]
OrderBy := SUBSTR(OrderBy,1,(LENGTH(OrderBy)-1));
RETURN ' ORDER BY ' || OrderBy;
END fac_f_usrrap_orderby;
END webfac;
/
CREATE OR REPLACE FUNCTION _MSSQL(web.)FAC_F_FAC_GET_DESCRIPTION(LPNName IN VARCHAR2
,CondKey IN NUMBER
,Prefix IN VARCHAR2
,PrefixKey IN NUMBER) RETURN VARCHAR2 IS
NextVolgNr VARCHAR2(20);
DeelUpper ins_deel.ins_deel_omschrijving%TYPE;
ReturnString VARCHAR2(30);
BEGIN
-- From 4.40 on, CondKey is dummy for ins_deel (object/subobject): uniqueness is assumed over the entire database
IF LPNName = 'LPN_INS_DEEL'
THEN
SELECT NVL(LPAD( TO_CHAR(MAX(TO_NUMBER(SUBSTR(ins_deel_upper, LENGTH(Prefix)+1,LENGTH(ins_deel_upper)-LENGTH(Prefix))))+1) , MAX(LENGTH(ins_deel_upper)-LENGTH(Prefix)),'0'),'001')
INTO NextVolgNr
FROM INS_DEEL
WHERE ins_deel_upper LIKE Prefix||'%'
AND Fac.safe_to_number(SUBSTR(ins_deel_upper, LENGTH(Prefix)+1,LENGTH(ins_deel_upper)-LENGTH(Prefix))) IS NOT NULL
AND ins_deel_parent_key IS NULL
AND ins_deel_verwijder IS NULL;
ELSIF LPNName = 'LPN_INS_ONDERDEEL'
THEN
SELECT NVL(LPAD( TO_CHAR(MAX(TO_NUMBER(SUBSTR(ins_deel_upper, LENGTH(Prefix)+1,LENGTH(ins_deel_upper)-LENGTH(Prefix))))+1) , MAX(LENGTH(ins_deel_upper)-LENGTH(Prefix)),'0'),'001')
INTO NextVolgNr
FROM INS_DEEL
WHERE ins_deel_upper LIKE Prefix||'%'
AND Fac.safe_to_number(SUBSTR(ins_deel_upper, LENGTH(Prefix)+1,LENGTH(ins_deel_upper)-LENGTH(Prefix))) IS NOT NULL
AND ins_deel_parent_key = CondKey
AND ins_deel_verwijder IS NULL;
ELSIF LPNName = 'LPN_ALG_TERREINSECTOR'
THEN
FOR i IN 3..10
LOOP
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(alg_terreinsector_code,LENGTH(alg_terreinsector_code)-(i-1),LENGTH(alg_terreinsector_code)))+1)), '***')
INTO NextVolgNr
FROM alg_v_aanwezigterreinsector
WHERE LTRIM(SUBSTR(alg_terreinsector_code, LENGTH(alg_terreinsector_code)-(i-1), LENGTH(alg_terreinsector_code))) BETWEEN '0' AND LPAD('9',i,'9')
AND alg_locatie_key = CondKey
AND LENGTH(alg_terreinsector_code) <= i;
IF NextVolgNr = '***'
THEN
IF i = 3
THEN
NextVolgNr := '001';
ELSE
NextVolgNr := POWER(10, (i-1));
END IF;
EXIT;
ELSE
IF LENGTH(NextVolgNr) <= i
THEN
NextVolgNr:= LPAD(NextVolgNr,i,'0');
EXIT;
END IF;
END IF;
END LOOP;
ELSIF LPNName = 'LPN_ALG_GEBOUW'
THEN
FOR i IN 3..10
LOOP
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(alg_gebouw_code, LENGTH(alg_gebouw_code)-(i-1), LENGTH(alg_gebouw_code)))+1)), '***')
INTO NextVolgNr
FROM alg_v_aanweziggebouw
WHERE LTRIM(SUBSTR(alg_gebouw_code, LENGTH(alg_gebouw_code)-(i-1), LENGTH(alg_gebouw_code))) BETWEEN '0' AND LPAD('9',i,'9')
AND alg_locatie_key = CondKey
AND LENGTH(alg_gebouw_code) <= i;
IF NextVolgNr = '***'
THEN
IF i = 3
THEN
NextVolgNr := '001';
ELSE
NextVolgNr := POWER(10, (i-1));
END IF;
EXIT;
ELSE
IF LENGTH(NextVolgNr) <= i
THEN
NextVolgNr:= LPAD(NextVolgNr,i,'0');
EXIT;
END IF;
END IF;
END LOOP;
ELSIF LPNName = 'LPN_ALG_RUIMTE'
THEN
FOR i IN 3..10
LOOP
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(alg_ruimte_nr, LENGTH(alg_ruimte_nr)-(i-1), LENGTH(alg_ruimte_nr)))+1)), '***')
INTO NextVolgNr
FROM alg_v_aanwezigruimte
WHERE LTRIM(SUBSTR(alg_ruimte_nr, LENGTH(alg_ruimte_nr)-(i-1), LENGTH(alg_ruimte_nr))) BETWEEN '0' AND LPAD('9',i,'9')
AND alg_verdieping_key = CondKey
AND LENGTH(alg_ruimte_nr) <= i;
IF NextVolgNr = '***'
THEN
IF i = 3
THEN
NextVolgNr := '001';
ELSE
NextVolgNr := POWER(10, (i-1));
END IF;
EXIT;
ELSE
IF LENGTH(NextVolgNr) <= i
THEN
NextVolgNr:= LPAD(NextVolgNr,i,'0');
EXIT;
END IF;
END IF;
END LOOP;
ELSIF LPNName = 'LPN_PRS_WERKPLEK'
THEN
BEGIN
SELECT TO_CHAR(NVL(MAX(prs_werkplek_volgnr),0) +1)
INTO NextVolgNr
FROM prs_werkplek
WHERE prs_alg_ruimte_key = CondKey
AND prs_werkplek_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN NextVolgNr := '1';
END;
/* Omschrijving */
BEGIN
SELECT alg_ruimte_nr ||' - '|| NextVolgNr
INTO NextVolgNr
FROM alg_ruimte
WHERE alg_ruimte_key = CondKey;
EXCEPTION
WHEN OTHERS
THEN NULL;
END;
END IF;
ReturnString := Prefix||NextVolgNr;
RETURN ReturnString;
END;
/
/*
** Licentiecheck kan in form worden gedaan nu elke user leesrechten op systeemtabellen heeft.
CREATE OR REPLACE PACKAGE fac_p_fac_session AS
FUNCTION v_sessions(p_role IN VARCHAR2 ) RETURN NUMBER;
PRAGMA RESTRICT_REFERENCES (v_sessions, WNDS, WNPS);
END fac_p_fac_session;
/
CREATE OR REPLACE PACKAGE BODY fac_p_fac_session AS
FUNCTION v_sessions(p_role IN VARCHAR2) RETURN NUMBER IS
v_machines NUMBER(2);
BEGIN
-- SELECT COUNT(DISTINCT machine)
-- INTO v_machines
-- FROM v$session
-- WHERE username in (SELECT DISTINCT grantee
-- FROM dba_role_privs
-- WHERE INSTR(granted_role,p_role) > 0);
v_machines := 5;
RETURN (v_machines);
EXCEPTION
WHEN OTHERS
THEN RETURN (-1);
END;
END fac_p_fac_session;
/
*/
CREATE OR REPLACE PACKAGE fac AS
FUNCTION safe_To_Number( str IN VARCHAR2 ) RETURN NUMBER;
FUNCTION safe_To_Date ( pchar IN VARCHAR2, pfmt IN VARCHAR2 ) RETURN DATE;
FUNCTION count_Work_Days ( pdate1 IN DATE , pdate2 IN DATE ) RETURN NUMBER;
PROCEDURE imp_getfield ( p_parseline IN OUT VARCHAR2,
p_fielddelimitor IN VARCHAR2,
p_field OUT VARCHAR2
);
PROCEDURE imp_writelog( pAppl IN VARCHAR2,
pRun IN VARCHAR2,
pLevel IN VARCHAR2,
pMsg IN VARCHAR2,
pHint IN VARCHAR2
);
FUNCTION imp_export_fac_rapport (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
) RETURN BOOLEAN;
END fac;
/
CREATE OR REPLACE PACKAGE BODY fac AS
-- This function is to be used instead of the native TO_NUMBER in situations
-- where the value might be an invalid number. This is the case for (FSN#203)
-- flexible properties as in FAC.SAFE_TO_NUMBER(alg_onrgoedkenmerk_waarde)<200
-- It returns NULL instead of an ORA1722:error (or even another error)
FUNCTION safe_To_Number( str IN VARCHAR2 ) RETURN NUMBER IS
BEGIN
#ifndef MS_SQL
RETURN TO_NUMBER(str);
EXCEPTION
WHEN OTHERS THEN RETURN NULL;
#else
IF Web.IsNumberString(str) = 1 RETURN CAST(str as money);
RETURN NULL;
#endif
END;
FUNCTION safe_To_Date( pchar IN VARCHAR2, pfmt IN VARCHAR2 ) RETURN DATE IS
BEGIN
#ifndef MS_SQL
RETURN TO_DATE(pchar, pfmt);
EXCEPTION
WHEN OTHERS THEN RETURN NULL;
#else
/* weet niet of dit voor sqls klopt -pf */
IF Web.IsDateString(pchar, pfmt) = 1 RETURN CAST(pchar as date);
RETURN NULL;
#endif
END;
/* Werkt vast nog niet voor sqls -pf */
FUNCTION count_Work_Days( pdate1 IN DATE , pdate2 IN DATE) RETURN NUMBER IS
v_date_from DATE;
v_date_to DATE;
v_week NUMBER;
v_mod NUMBER;
v_holidays NUMBER;
v_date_cor NUMBER;
BEGIN
IF pdate1 > pdate2 THEN
v_date_from := pdate2;
v_date_to := pdate1;
ELSE
v_date_from := pdate1;
v_date_to := pdate2;
END IF;
SELECT count(*)
INTO v_holidays
FROM MLD_VRIJE_DAGEN
WHERE MLD_VRIJE_DAGEN_DATUM BETWEEN v_date_from -1 AND v_date_to + 1;
-- correct the date if the nls_territory settings are not America
v_date_cor := 4 - to_number(DATE_TO_CHAR(to_date('20050721','yyyymmdd'),'d'));
v_date_from := v_date_from + v_date_cor;
v_date_to := v_date_to + v_date_cor;
v_week := trunc(((v_date_to - v_date_from))/7);
v_mod := mod((v_date_to - v_date_from),7);
-- startdate is workday
IF to_number(to_char(v_date_from,'d')) < 6 THEN
IF to_number(to_char(v_date_from,'d')) + v_mod > 6 THEN v_mod := v_mod -2;
ELSE
IF to_number(to_char(v_date_from,'d')) + v_mod > 5 THEN v_mod := v_mod -1; END IF;
END IF;
v_mod := v_mod+1;
ELSE
-- startdate is Saturday
IF to_number(to_char(v_date_from,'d')) = 6 THEN
IF v_mod >= 1 THEN v_mod := v_mod -1; end if;
-- ELSE -- startdate is Sunday
-- IF to_number(to_char(v_date_from,'d')) + v_mod > 1 THEN v_mod := v_mod -1; end if;
END IF;
END IF;
RETURN 5 * v_week + v_mod-v_holidays;
EXCEPTION
WHEN OTHERS THEN RETURN NULL;
END;
PROCEDURE imp_getfield (
p_parseline IN OUT VARCHAR2,
p_fielddelimitor IN VARCHAR2,
p_field OUT VARCHAR2
)
AS
v_firstdelim NUMBER;
BEGIN
v_firstdelim := INSTR (p_parseline, p_fielddelimitor, 1);
IF v_firstdelim = 0
THEN
p_field := SUBSTR2 (p_parseline, 1);
p_parseline := '';
RETURN;
END IF;
p_field := SUBSTR (p_parseline, 1, v_firstdelim - 1);
p_parseline := SUBSTR2 (p_parseline, v_firstdelim + 1);
RETURN;
END;
PROCEDURE imp_writelog (
pappl IN VARCHAR2,
prun IN VARCHAR2,
plevel IN VARCHAR2,
pmsg IN VARCHAR2,
phint IN VARCHAR2
)
AS
BEGIN
INSERT INTO imp_log
(imp_log_applicatie, imp_log_run, imp_log_datum,
imp_log_status, imp_log_omschrijving, imp_log_hint
)
VALUES (pappl, prun, SYSDATE,
plevel, pmsg, phint
);
END;
FUNCTION imp_export_fac_rapport (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
) RETURN BOOLEAN
AS
v_filehandle UTL_FILE.file_type;
v_newline VARCHAR2 (1000);
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
l_cnt NUMBER;
CURSOR cregels
IS
SELECT FAC_RAPPORT_REGEL regel
FROM FAC_RAPPORT
WHERE FAC_RAPPORT_NODE=userenv('SESSIONID')
ORDER BY FAC_RAPPORT_VOLGNR;
BEGIN
v_filehandle := UTL_FILE.fopen (p_filedir, p_filename, 'w');
fac.imp_writelog (p_applname,
p_applrun,
'I',
'Export naar ' || p_filedir || '\' || p_filename,
''
);
l_cnt := 0;
FOR rcregels IN cregels
LOOP
BEGIN
v_newline := rcregels.regel;
UTL_FILE.put_line (v_filehandle, v_newline);
l_cnt := l_cnt + 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
UTL_FILE.fclose (v_filehandle);
-- EOF reached
EXIT;
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_applname, p_applrun, 'E', v_errormsg, '');
END;
END LOOP;
fac.imp_writelog (p_applname, p_applrun, 'I', 'Aantal geschreven records: ' || l_cnt, '');
RETURN TRUE;
EXCEPTION
WHEN UTL_FILE.invalid_operation
THEN
UTL_FILE.fclose (v_filehandle);
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'UTL_FILE.INVALID_OPERATION (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_applname,
p_applrun,
'E',
v_errormsg,
'Controleer bestandsnaam van exportbestand'
);
RETURN FALSE;
WHEN UTL_FILE.invalid_filehandle
THEN
UTL_FILE.fclose (v_filehandle);
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'UTL_FILE.INVALID_FILEHANDLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_applname, p_applrun, 'E', v_errormsg, '');
RETURN FALSE;
WHEN UTL_FILE.invalid_path
THEN
UTL_FILE.fclose (v_filehandle);
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'UTL_FILE.INVALID_PATH (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog
(p_applname,
p_applrun,
'E',
v_errormsg,
'Controleer directory van importbestand (init.ora bevat utl_file_dir setting om te beschrijven welke directories te gebruiken zijn'
);
RETURN FALSE;
WHEN UTL_FILE.read_error
THEN
UTL_FILE.fclose (v_filehandle);
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'UTL_FILE.READ_ERROR (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_applname, p_applrun, 'E', v_errormsg, '');
RETURN FALSE;
WHEN OTHERS
THEN
UTL_FILE.fclose (v_filehandle);
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_applname, p_applrun, 'E', v_errormsg, '');
RETURN FALSE;
END;
END fac;
/
-- to do:
-- contracten bij opdrachten
-- object srtdelen ....
-- srtruimte en srtterreinsector
CREATE OR REPLACE PACKAGE xml
AS
PROCEDURE addvarchartoclob (text 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 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_value IN VARCHAR2
);
PROCEDURE createheadernode (p_custid IN VARCHAR2);
PROCEDURE create_factuuradres_node (o_key IN NUMBER);
PROCEDURE create_prs_kostenplaats_node (p_key IN NUMBER);
PROCEDURE create_prs_kostensoort_node (p_key IN NUMBER);
PROCEDURE create_prs_kenmerken (p_key IN NUMBER, p_niveau IN VARCHAR2);
PROCEDURE create_prs_bedrijf_node (p_bedrijf_key IN NUMBER, p_contact_key IN NUMBER, p_nodename IN VARCHAR2);
PROCEDURE create_prs_afdeling_node (p_key IN NUMBER, p_nodename IN VARCHAR2);
PROCEDURE create_prs_perslid_node (p_key IN NUMBER, p_nodename IN VARCHAR2, concise IN BOOLEAN);
PROCEDURE create_prs_werkplek_node (p_werkplek_key IN NUMBER, p_perslid_key IN NUMBER, concise IN BOOLEAN);
PROCEDURE create_alg_kenmerken (p_key IN NUMBER, p_niveau IN VARCHAR2);
PROCEDURE create_alg_terreinsector_node (p_terreinsector_key IN NUMBER);
PROCEDURE create_alg_ruimte_node (p_ruimte_key IN NUMBER);
PROCEDURE create_alg_verdieping_node (p_verdieping_key IN NUMBER, p_ruimte_key IN NUMBER);
PROCEDURE create_alg_gebouw_node (p_gebouw_key IN NUMBER, p_verdieping_key IN NUMBER, p_ruimte_key IN NUMBER);
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
);
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
);
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
);
PROCEDURE create_alg_onroerendgoed_node (
p_key IN NUMBER,
p_nodename IN VARCHAR2,
p_lockey IN NUMBER,
concise IN BOOLEAN
);
PROCEDURE create_ins_deel_node (p_key IN NUMBER);
PROCEDURE create_mld_kenmerken (p_key IN NUMBER);
PROCEDURE create_mld_opdr_kenmerken (p_key IN NUMBER);
PROCEDURE create_mld_uitvoerende_node (p_uitvoerende_key IN NUMBER, p_contact_key IN NUMBER, p_nodename IN VARCHAR2);
PROCEDURE create_mld_typeopdr_node (p_key IN NUMBER);
PROCEDURE create_res_disc_params_node (p_discipline_key IN NUMBER);
PROCEDURE create_bes_disc_params_node (p_discipline_key IN NUMBER);
PROCEDURE create_ins_disc_params_node (p_discipline_key IN NUMBER);
PROCEDURE create_ins_srtdiscipline_node (p_key IN NUMBER);
PROCEDURE create_mld_adres_node (p_key IN NUMBER, p_nodename IN VARCHAR2);
PROCEDURE create_mld_stdmelding_node (p_key IN NUMBER);
PROCEDURE create_ins_discipline_node (p_key IN NUMBER);
PROCEDURE create_mld_melding_node (p_key IN NUMBER);
PROCEDURE create_mld_melding_xml (p_key IN NUMBER, p_custid IN VARCHAR2);
PROCEDURE create_mld_opdr_node (p_key IN NUMBER);
PROCEDURE create_mld_opdr_xml (p_key IN NUMBER, p_custid IN VARCHAR2);
PROCEDURE make_prj_scenario_xml (p_key IN NUMBER, p_custid IN VARCHAR2);
PROCEDURE make_mld_melding_xml (p_key IN NUMBER, p_custid IN VARCHAR2);
PROCEDURE make_mld_opdr_xml (p_key IN NUMBER, p_custid IN VARCHAR2);
PROCEDURE make_bes_bestelling_xml (p_key IN NUMBER, p_custid IN VARCHAR2);
PROCEDURE make_bes_bestelopdr_xml (p_key IN NUMBER, p_custid 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.WRITE (aclob, LENGTH (text), DBMS_LOB.getlength (aclob) + 1, 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
(p_char,
CHR (38),
CHR
(38
)
|| 'amp;'
),
CHR (60),
CHR (38)
|| 'lt;'
),
CHR (62),
CHR (38) || 'gt;'
),
CHR (34),
CHR (38) || 'quot;'
),
CHR (39),
CHR (38) || '#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'));
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;
-- * 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_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;
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
createopentag ('header');
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;
-- *
-- * 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;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('kostenplaats');
SELECT prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_perslid_key, prs_kostenplaats_begin,
prs_kostenplaats_eind, prs_kostenplaats_module
INTO v_nr, v_omschrijving, v_prs_perslid_key, v_begin,
v_eind, v_module
FROM prs_kostenplaats
WHERE prs_kostenplaats_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('nr', v_nr);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('begin', v_begin);
createxmltagvalue ('eind', v_eind);
createxmltagvalue ('module', v_module);
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_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;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag ('kostensoort');
SELECT prs_kostensoort_oms
INTO v_omschrijving
FROM prs_kostensoort
WHERE prs_kostensoort_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('omschrijving', v_omschrijving);
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,
v_kenmerk_waarde
);
END LOOP;
END;
-- * create_PRS_BEDRIJF_node
-- * p_contact_key is referentie naar PRS_CONTACTPERSOON tabel. Deze contactpersoon key is optioneel.
--
PROCEDURE create_prs_bedrijf_node (p_bedrijf_key IN NUMBER, p_contact_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_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;
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
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
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 ('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');
create_mld_adres_node (v_mld_adres_key_fac, 'factuuradres');
create_prs_kenmerken (p_bedrijf_key, 'B');
IF p_contact_key IS NOT NULL
THEN
createopentag ('contact_persoon');
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
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
FROM prs_contactpersoon
WHERE prs_contactpersoon_key = p_contact_key;
createxmltagvalue ('key', mynumbertochar (p_contact_key));
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);
createclosetag ('contact_persoon');
END IF;
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;
BEGIN
IF p_key IS NOT NULL
THEN
createopentag (p_nodename);
SELECT NVL (prs_afdeling_naam, ''), NVL (prs_afdeling_omschrijving, ''), mld_adres_key, prs_kostenplaats_key,
prs_afdeling_parentkey
INTO v_naam, v_omschrijving, v_adres_key, v_kostenplaats_key,
v_parentkey
FROM prs_afdeling
WHERE prs_afdeling_key = p_key;
createxmltagvalue ('key', mynumbertochar (p_key));
createxmltagvalue ('naam', v_naam);
createxmltagvalue ('omschrijving', v_omschrijving);
create_prs_kostenplaats_node (v_kostenplaats_key);
create_mld_adres_node (v_adres_key, 'afleveradres');
create_prs_kenmerken (p_key, 'A');
IF v_parentkey IS NOT NULL
THEN
create_prs_afdeling_node (v_parentkey, 'parent');
END IF;
createclosetag (p_nodename);
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, 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_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_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;
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
createopentag (p_nodename);
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_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
INTO v_titel, v_voorletters, v_naam,
v_tussenvoegsel, v_voornaam, v_initialen,
v_nr, v_oslogin, v_opp,
v_ingangsdatum, v_einddatum, v_uurloon,
v_telefoonnr, v_afdeling_key, v_adres_key
FROM prs_perslid
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 ('naam_full', v_naam_full);
-- E-mail zit nog bij de flexprops, die gaan we missen als we die weglaten
create_prs_kenmerken (p_key, 'P');
IF NOT concise
THEN
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);
create_mld_adres_node (v_adres_key, 'afleveradres');
createxmltagvalue ('oslogin', v_oslogin);
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, TRUE);
END LOOP;
create_prs_afdeling_node (v_afdeling_key, 'afdeling');
-- 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, 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_perslidwerkplek pwp, prs_werkplek wp
WHERE pwp.prs_werkplek_key = wp.prs_werkplek_key
AND wp.prs_werkplek_key = p_werkplek_key
AND pwp.prs_perslid_key = p_perslid_key;
createopentag ('werkplek');
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, concise);
createclosetag ('werkplek');
END IF;
END;
-- *
-- * ALG
-- *
-- *
-- * 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,
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_SRTTERREINSECTOR_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;
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
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
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 ('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
-- *
--
PROCEDURE create_alg_verdieping_node (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.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);
ELSE
-- 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)
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;
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
INTO v_naam, v_code, v_omschrijving, v_bruto_vloeropp,
v_omtrek, v_inhoud, v_opmerking, v_srtgebouw_key, v_ordernr,
v_adres_key
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');
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);
ELSE
FOR rec1 IN c1
LOOP
create_alg_verdieping_node (rec1.alg_verdieping_key, p_ruimte_key);
END LOOP;
END IF;
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
)
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;
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
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
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);
ELSE
FOR rec1 IN c1
LOOP
create_alg_gebouw_node (rec1.alg_gebouw_key, p_verdieping_key, p_ruimte_key);
END LOOP;
END IF;
IF p_terreinsector_key IS NOT NULL
THEN
create_alg_terreinsector_node (p_terreinsector_key);
ELSE
FOR rec2 IN c2
LOOP
create_alg_terreinsector_node (rec2.alg_terreinsector_key);
END LOOP;
END IF;
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
)
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);
ELSE
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
);
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
)
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
);
ELSE
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
);
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,
concise 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
SELECT alg_plaatsaanduiding, alg_onroerendgoed_type
INTO v_plaatsaanduiding, v_type
FROM alg_v_plaatsaanduiding
WHERE alg_onroerendgoed_keys = p_key;
IF NOT 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;
createopentagattributes (p_nodename, 'type', v_type, NULL, NULL, NULL, NULL, NULL, NULL);
createxmltagvalue ('plaatsaanduiding', v_plaatsaanduiding);
createxmltagvalue ('key', p_key);
IF NOT 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
);
END IF;
createclosetag (p_nodename);
END IF;
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;
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
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
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);
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 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_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;
END;
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.mld_srtkenmerk_omschrijving,
'type',
rec1.mld_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.mld_kenmerk_key,
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 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_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;
END;
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.mld_srtkenmerk_omschrijving,
'type',
rec1.mld_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.mld_kenmerk_key,
v_kenmerk_waarde
);
END LOOP;
END;
-- * create_MLD_UITVOERENDE_node
PROCEDURE create_mld_uitvoerende_node (p_uitvoerende_key IN NUMBER, p_contact_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, p_contact_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_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;
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
INTO v_key, v_bestellimiet, v_min_bedrag,
v_auto_order, v_autoacceptrfo
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);
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;
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
INTO v_module, v_omschrijving, v_prefix,
v_alg, v_ins, v_mld, v_bes,
v_prs, v_res, v_cnt
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);
createclosetag ('srtdiscipline');
END IF;
END;
-- * create_MLD_ADRES_node
PROCEDURE create_mld_adres_node (p_key IN NUMBER, p_nodename IN VARCHAR2)
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
createopentag (p_nodename);
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);
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;
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
INTO v_omschrijving, v_urgentie, v_uitvoertijd,
v_notfrontend, v_prs_kostensoort_key
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 ('notfrontend', v_notfrontend);
create_prs_kostensoort_node (v_prs_kostensoort_key);
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;
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
INTO v_module, v_omschrijving, v_min_level, v_prs_kostensoort_key,
v_ins_srtdiscipline_key
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);
create_ins_srtdiscipline_node (v_ins_srtdiscipline_key);
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);
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;
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, '')
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
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);
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');
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);
ELSE
create_alg_onroerendgoed_node (v_alg_locatie_key, 'plaats', v_alg_locatie_key, 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);
createclosetag ('melding');
END IF;
END;
PROCEDURE create_mld_melding_xml (p_key IN NUMBER, p_custid IN VARCHAR2)
AS
BEGIN
add_header (p_custid);
create_mld_melding_node (p_key);
add_footer ('');
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_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;
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_verzonden, mld_opdr_verwerkt,
prs_perslid_key_fiat, mld_opdr_datumfiatvraag, mld_opdr_datumfiat_ok, mld_opdr_datumfiat_nok,
mld_opdr_opmerking_fiat
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_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
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);
createxmltagvalue ('werkzaamheden', v_werkzaamheden);
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('contactpersoon', v_contactpersoon);
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);
-- || createXMLtagValue(' , _VAR(v_cnt_contract_key)
-- || createXMLtagValue(' , _VAR(v_cnt_contract_dienst_key)
create_mld_opdr_kenmerken (p_key);
create_prs_kostenplaats_node (v_prs_kostenplaats_key);
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, v_prs_contactpersoon_key, 'uitvoerende');
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);
createclosetag ('opdracht');
END IF;
END;
-----------------------------------------------------
-----------------------------------------------------
-- PRJ module related nodes
-----------------------------------------------------
-----------------------------------------------------
PROCEDURE create_prj_perslidwp_node (p_werkplek_key IN NUMBER)
AS
CURSOR c1
IS
SELECT prj_perslidwerkplek_key, prj_perslidwerkplek_bezetting,
prs_afdeling_key, 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);
IF rec1.prs_afdeling_key IS NOT NULL
THEN
create_prs_afdeling_node (rec1.prs_afdeling_key,
'bezetter_afdeling'
);
ELSE
create_prs_perslid_node (rec1.prs_perslid_key,
'bezetter',
FALSE
);
END IF;
createclosetag ('prjperslidwerkplek');
END LOOP;
END IF;
END;
PROCEDURE create_prj_werkplek_node (p_ruimte_key IN NUMBER)
AS
CURSOR c1
IS
SELECT *
FROM prj_werkplek wp
WHERE wp.prj_werkplek_verwijder IS NULL
AND wp.prj_ruimte_key = p_ruimte_key;
BEGIN
IF p_ruimte_key IS NOT NULL
THEN
FOR rec1 IN c1
LOOP
createopentag ('prjwerkplek');
createxmltagvalue ('key', rec1.prj_werkplek_key);
createxmltagvalue ('volgnr', rec1.prj_werkplek_volgnr);
createxmltagvalue ('omschrijving',
rec1.prj_werkplek_omschrijving);
createxmltagvalue ('vastopp', rec1.prj_werkplek_vastopp);
createxmltagvalue ('opp', rec1.prj_werkplek_opp);
create_prj_perslidwp_node (rec1.prj_werkplek_key);
createclosetag ('prjwerkplek');
END LOOP;
END IF;
END;
PROCEDURE create_prj_ruimte_node (p_ruimte_key IN NUMBER)
AS
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_werkplek_node (p_ruimte_key);
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
);
--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,
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,
v_kenmerk_waarde
);
END LOOP;
END;
PROCEDURE create_ins_srtdeel_node (p_key IN NUMBER)
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_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;
BEGIN
createopentag ('srtdeel');
SELECT ins_srtgroep_key, ins_srtdeel_omschrijving, ins_srtdeel_prijs, ins_srtdeel_eenheid,
NVL (ins_srtdeel_nr, ' '), prs_bedrijf_key, ins_srtdeel_vervaldatum, ins_srtdeel_image,
ins_srtdeel_veelvoud
INTO v_groep_key, v_omschrijving, v_prijs, v_eenheid,
v_artikel_nummer, v_leverancier_key, v_vervaldatum, v_image,
v_veelvoud
FROM ins_srtdeel
WHERE ins_srtdeel_key = p_key;
createxmltagvalue ('key', p_key);
createxmltagvalue ('groep_key', v_groep_key);
createxmltagvalue ('omschrijving', v_omschrijving);
createxmltagvalue ('prijs', v_prijs);
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);
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_totaal ins_srtdeel.ins_srtdeel_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, ''), prijs,
bes_bestelling_item_aantal * prijs
INTO v_ins_srtdeel_key, v_aantal, v_bestelopdr_item_key, v_aantalontv,
v_status, v_status_key, v_prijs,
v_totaal
FROM bes_bestelling_item bi, bes_bestellingstatuses s, bes_v_item_prijs bip
WHERE bi.bes_bestelling_item_status = s.bes_bestellingstatuses_key(+)
AND bip.bes_bestelling_item_key = p_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 ('totaal', v_totaal);
create_bes_item_kenmerken (p_key);
create_ins_srtdeel_node (v_ins_srtdeel_key);
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;
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
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
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);
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, 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;
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
createopentag ('bestelling');
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
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
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);
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');
createxmltagvalue ('aantal_besteld', v_item_cnt);
createxmltagvalue ('aantal_geaccepteerd', v_item_cnt_acpt);
createxmltagvalue ('aantal_geleverd', v_item_cnt_lev);
create_prs_kostenplaats_node (v_kostenplaats_key);
create_bes_bestell_kenmerken (p_key);
IF NOT 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_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;
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
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
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 ('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, NULL, 'bedrijf');
createxmltagvalue ('opmerking', v_bestelopdr_opmerking);
createxmltagvalue ('leveringopmerking', v_bestelopdr_delivery_opmerk);
--Deze persoon is degene die de MakeOrders veroorzaakte, en heeft hier geen relevantie
--create_prs_perslid_node (v_perslid_key, 'besteller');
create_mld_adres_node (v_adres_key_lev, 'afleveradres');
create_mld_adres_node (v_adres_key_fac, 'factuuradres');
createxmltagvalue ('aantal_besteld', v_bestelopdr_item_cnt);
createxmltagvalue ('aantal_geleverd', v_bestelopdr_item_cnt_lev);
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;
-- * create_MLD_OPDR_XML
-- select xml.create_MLD_OPDR_XML(7120, custID) FROM DUAL
PROCEDURE create_mld_opdr_xml (p_key IN NUMBER, p_custid IN VARCHAR2)
AS
BEGIN
add_header (p_custid);
create_mld_opdr_node (p_key);
add_footer ('');
END;
-- * create_MLD_OPDR_XML
-- select xml.create_MLD_OPDR_XML(7120, custID) FROM DUAL
PROCEDURE create_prj_scenario_xml (p_key IN NUMBER, p_custid IN VARCHAR2)
AS
BEGIN
add_header (p_custid);
create_prj_scenario_node (p_key);
add_footer ('');
END;
PROCEDURE create_bes_bestelling_xml (p_key IN NUMBER, p_custid IN VARCHAR2)
AS
BEGIN
add_header (p_custid);
create_bes_bestelling_node (p_key, FALSE);
add_footer ('');
END;
PROCEDURE create_bes_bestelopdr_xml (p_key IN NUMBER, p_custid IN VARCHAR2)
AS
BEGIN
add_header (p_custid);
create_bes_bestelopdr_node (p_key);
add_footer ('');
END;
-- * make_MLD_MELDING_XML
-- select xml.make_MLD_MELDING_XML(7120, custID) FROM DUAL
-- The mld_melding is split into multiple records in the MLD_MELDING_XML
-- table. It is not possible to use CLOBs over the ADO connection.
-- The asp or vb application has to concatenate the MLD_MELDING_XML records
-- into one xml string.
PROCEDURE make_mld_melding_xml (p_key IN NUMBER, p_custid IN VARCHAR2)
AS
v_clob CLOB;
v_clob_length NUMBER (10);
v_offset NUMBER (10);
v_interval NUMBER (10);
v_volgnr NUMBER (10);
v_chunk_size NUMBER (10) := 3000;
BEGIN
DBMS_LOB.createtemporary (aclob, TRUE, DBMS_LOB.CALL);
v_offset := 1;
create_mld_melding_xml (p_key, p_custid);
v_clob_length := DBMS_LOB.getlength (aclob);
v_volgnr := 1;
DELETE FROM mld_melding_xml
WHERE mld_melding_key = p_key
OR mld_melding_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 mld_melding_xml
(mld_melding_key, mld_melding_xml, mld_melding_xml_volgnr
)
VALUES (p_key, DBMS_LOB.SUBSTR (aclob, v_interval, v_offset), v_volgnr
);
v_offset := v_offset + v_interval;
v_volgnr := v_volgnr + 1;
END LOOP;
END;
-- * make_MLD_OPDR_XML
-- Usage: BEGIN xml.make_MLD_OPDR_XML(7120, custID); END;
-- The MLD_OPDR is split into multiple records in the MLD_OPDR_XML
-- table. It is not possible to use CLOBs over the ADO connection.
-- The asp or vb application has to concatenate the MLD_OPDR_XML records
-- into one xml string.
PROCEDURE make_mld_opdr_xml (p_key IN NUMBER, p_custid 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;
BEGIN
DBMS_LOB.createtemporary (aclob, TRUE, DBMS_LOB.CALL);
v_offset := 1;
create_mld_opdr_xml (p_key, p_custid);
v_clob_length := DBMS_LOB.getlength (aclob);
v_volgnr := 1;
DELETE FROM mld_opdr_xml
WHERE mld_opdr_key = p_key
OR mld_opdr_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 mld_opdr_xml
(mld_opdr_key, mld_opdr_xml, mld_opdr_xml_volgnr
)
VALUES (p_key, DBMS_LOB.SUBSTR (aclob, v_interval, v_offset), v_volgnr
);
v_offset := v_offset + v_interval;
v_volgnr := v_volgnr + 1;
END LOOP;
END;
-- * make_PRJ_SCENARIO_XML
-- Usage: BEGIN xml.make_PRJ_SCENARIO_XML(1, custID); END;
-- The result is split into multiple records in the PRJ_SCENARIO_XML
-- table. It is not possible to use CLOBs over the ADO connection.
-- The asp or vb application has to concatenate the PRJ_SCENARIO_XML records
-- into one xml string.
PROCEDURE make_prj_scenario_xml (p_key IN NUMBER, p_custid 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;
BEGIN
DBMS_LOB.createtemporary (aclob, TRUE, DBMS_LOB.CALL);
v_offset := 1;
create_prj_scenario_xml (p_key, p_custid);
v_clob_length := DBMS_LOB.getlength (aclob);
v_volgnr := 1;
DELETE FROM prj_scenario_xml
WHERE prj_scenario_key = p_key
OR prj_scenario_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 prj_scenario_xml
(prj_scenario_key, prj_scenario_xml, prj_scenario_xml_volgnr
)
VALUES (p_key, DBMS_LOB.SUBSTR (aclob, v_interval, v_offset), v_volgnr
);
v_offset := v_offset + v_interval;
v_volgnr := v_volgnr + 1;
END LOOP;
END;
-- * make_bes_bestelling_XML
-- Usage: BEGIN xml.make_bes_bestelling_XML(1, custID); END;
-- The result is split into multiple records in the PRJ_SCENARIO_XML
-- table. It is not possible to use CLOBs over the ADO connection.
-- The asp or vb application has to concatenate the PRJ_SCENARIO_XML records
-- into one xml string.
PROCEDURE make_bes_bestelling_xml (p_key IN NUMBER, p_custid 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;
BEGIN
DBMS_LOB.createtemporary (aclob, TRUE, DBMS_LOB.CALL);
v_offset := 1;
create_bes_bestelling_xml (p_key, p_custid);
v_clob_length := DBMS_LOB.getlength (aclob);
v_volgnr := 1;
DELETE FROM bes_bestelling_xml
WHERE bes_bestelling_key = p_key
OR bes_bestelling_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 bes_bestelling_xml
(bes_bestelling_key, bes_bestelling_xml, bes_bestelling_xml_volgnr
)
VALUES (p_key, DBMS_LOB.SUBSTR (aclob, v_interval, v_offset), v_volgnr
);
v_offset := v_offset + v_interval;
v_volgnr := v_volgnr + 1;
END LOOP;
END;
-- * make_bes_bestelopdr_XML
-- Usage: BEGIN xml.make_bes_bestelopdr_XML(1, custID); END;
-- The result is split into multiple records in the PRJ_SCENARIO_XML
-- table. It is not possible to use CLOBs over the ADO connection.
-- The asp or vb application has to concatenate the PRJ_SCENARIO_XML records
-- into one xml string.
PROCEDURE make_bes_bestelopdr_xml (p_key IN NUMBER, p_custid 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;
BEGIN
DBMS_LOB.createtemporary (aclob, TRUE, DBMS_LOB.CALL);
v_offset := 1;
create_bes_bestelopdr_xml (p_key, p_custid);
v_clob_length := DBMS_LOB.getlength (aclob);
v_volgnr := 1;
DELETE FROM bes_bestelopdr_xml
WHERE bes_bestelopdr_key = p_key
OR bes_bestelopdr_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 bes_bestelopdr_xml
(bes_bestelopdr_key, bes_bestelopdr_xml, bes_bestelopdr_xml_volgnr
)
VALUES (p_key, 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