4189 lines
174 KiB
Plaintext
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
|