Files
Customer/PIVP/PIVP.sql
Norbert Wassink 1970fe8875 PIVP#74972 -- Fase 2 implementatie
svn path=/Customer/trunk/; revision=59725
2023-03-23 12:10:19 +00:00

4199 lines
180 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
-- Voor dbuser invullen: - indien script voor 1 klant is: 'AADS' (de klantcode, zoals vermeld in fac_version_cust)
-- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group)
-- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM'
-- Ook als het script gedraaid wordt voor de verkeerde cust wordt er een logfile gemaakt.
-- (dit in tegenstelling tot sample_xxxx.sql)
DEFINE thisfile = 'PIVP.SQL'
DEFINE dbuser = 'PIVP'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE PACKAGE PIVP
AS
PROCEDURE add_xml_row (p_bestand IN VARCHAR2,
p_regel IN VARCHAR2);
PROCEDURE add_xml_element (p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2);
PROCEDURE afmelden_reserveringen;
PROCEDURE inactivate_prs;
END;
/
CREATE OR REPLACE PACKAGE BODY PIVP
AS
PROCEDURE add_xml_row (
p_bestand IN VARCHAR2,
p_regel IN VARCHAR2)
AS
v_index NUMBER;
BEGIN
SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1
INTO v_index
FROM fac_rapport
WHERE fac_rapport_node = p_bestand;
INSERT INTO fac_rapport (
fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (p_bestand,
v_index,
p_regel);
END;
PROCEDURE add_xml_element (
p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2)
AS
BEGIN
pivp.add_xml_row(p_bestand,
'<' || p_tag || '>'
|| xml.char_to_html(p_value)
|| '</' || p_tag || '>');
END;
PROCEDURE afmelden_reserveringen
AS
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
CURSOR res_ruimte IS
SELECT res.res_rsv_ruimte_key res_key
FROM res_rsv_ruimte res
WHERE res.res_status_bo_key = 2 --- geregistreerd, nog niet verwerkt
AND (res.res_status_fo_key = 2
OR (res.res_rsv_ruimte_verwijder IS NOT NULL
AND res.res_status_fo_key=1 AND TRUNC(res.res_rsv_ruimte_van)-TRUNC(res.res_rsv_ruimte_verwijder)<3))
AND res.RES_RSV_RUIMTE_EXTERNSYNCDATE IS NULL
AND TRUNC(res.res_rsv_ruimte_van)< TRUNC(SYSDATE);
BEGIN
FOR rec IN res_ruimte
LOOP
v_errormsg := 'Status update reservering niet gelukt';
v_errorhint := 'Res_rsv_ruimte_key: ' || TO_CHAR (rec.res_key);
UPDATE res_rsv_ruimte
SET res_status_bo_key = 5
WHERE res_rsv_ruimte_key = rec.res_key;
fac.trackaction ('RESAFM',
rec.res_key,
3,
SYSDATE,
'Status reservering naar Afgemeld');
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog ('afm_res',
'E',
v_errormsg,
v_errorhint);
END;
PROCEDURE inactivate_prs
AS
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_perslid_naam VARCHAR (100);
v_perslid_nr VARCHAR (30);
--- Als een persoon 12 maanden niet meer heeft ingelogd verwijderen we deze
CURSOR prs_del IS
SELECT p.prs_perslid_key, p.prs_perslid_oslogin
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_login <
TRUNC (ADD_MONTHS (SYSDATE, -12), 'mm')
GROUP BY p.prs_perslid_key, p.prs_perslid_oslogin;
BEGIN
FOR rec IN prs_del
LOOP
BEGIN
v_errormsg := 'Verwijderen van de persoon is NIET gelukt';
v_errorhint :=
'Heeft de persoon met prs_perslid_key '
|| TO_CHAR (rec.prs_perslid_key)
|| ' historie?';
SELECT prs_perslid_naam_full, prs_perslid_nr
INTO v_perslid_naam, v_perslid_nr
FROM prs_perslid p, prs_v_perslid_fullnames pf
WHERE p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_perslid_key = rec.prs_perslid_key;
-- *** Budgethouderschap ***
-- Voor hoeveel kostenplaatsen is deze persoon budgethouder?
SELECT COUNT (*)
INTO v_count
FROM prs_kostenplaats
WHERE prs_perslid_key = rec.prs_perslid_key;
IF (v_count > 0)
THEN
UPDATE prs_kostenplaats
SET prs_perslid_key = NULL
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.writelog (
'inact_prs',
'I',
'Budgethouderschap van te verwijderen persoon ('
|| v_count
|| ' stuks) vervallen.',
'Naam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
END IF;
-- *** Vervangers ***
-- koppelingen met vervangers dienen ook verwijderd te worden
SELECT COUNT (*)
INTO v_count
FROM prs_collega
WHERE prs_perslid_key = rec.prs_perslid_key
OR prs_perslid_key_alt = rec.prs_perslid_key;
IF (v_count > 0)
THEN
DELETE FROM prs_collega
WHERE prs_perslid_key = rec.prs_perslid_key
OR prs_perslid_key_alt = rec.prs_perslid_key;
fac.writelog (
'inact_prs',
'I',
'Te verwijderen persoon heeft vervanger(s). Koppeling(en) verwijderd.',
'Naam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
END IF;
-- *** werkplekken ***
DELETE prs_perslidwerkplek
WHERE prs_perslid_key = rec.prs_perslid_key;
-- *** Verplichtingen ***
SELECT COUNT (*)
INTO v_count
FROM prs_v_verplichting_refcheck vp
WHERE vp.prs_perslid_key = rec.prs_perslid_key;
IF v_count = 0
THEN
-- Persoon heeft geen enkele (actuele of historische) verplichting
v_errorhint :=
'Verwijderen van persoon met key '
|| TO_CHAR (rec.prs_perslid_key);
-- Referenties in tabellen naar deze pers_perslid_key moeten eerst verwijderd worden.
-- Door cascade verwijderen van deze record onstaan audits op die tabellen die audit tracking hebben.
-- Daardoor onstaan "ORxA-04091:table VLKC.FAC_AUDIT is mutating, trigger/function may not see it" foutmeldingen
-- op de delete van de prs_perslid_key uit de prs_perslid tabel.
-- De tabellen prs_kostenplaats, prs_kostenplaatsgrp, prs_perslidkostenplaats en fac_gebruikersgroep hebben een prs_perslid_key referentie en audit tracking.
DELETE FROM prs_kostenplaats
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM prs_kostenplaatsgrp
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM prs_perslidkostenplaats
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM fac_gebruikersgroep
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM prs_perslid
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.writelog (
'inact_prs',
'I',
'Persoon verwijderd.',
'Achternaam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
ELSE
-- Controleer of er ACTUELE verplichtingen zijn
SELECT COUNT (*)
INTO v_count
FROM prs_v_verplichting_keys vp
WHERE vp.prs_perslid_key = rec.prs_perslid_key;
IF v_count > 0
THEN
UPDATE prs_perslid
SET prs_perslid_naam =
SUBSTR ('INACTIEF:' || prs_perslid_naam,
1,
60),
prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_key = rec.prs_perslid_key
AND prs_perslid_naam NOT LIKE 'INACTIEF:%';
fac.writelog (
'inact_prs',
'I',
'Persoon als INACTIEF gemarkeerd of was al INACTIEF gemarkeerd.',
'Achternaam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
ELSE
BEGIN
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.writelog (
'inact_prs',
'I',
'Persoon ge?ctiveerd.',
'Achternaam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
EXCEPTION
WHEN OTHERS
THEN
-- Kennelijk heeft de persoon toch ernstige verplichtingen
v_errorhint :=
'Persoon heeft nog (max. '
|| TO_CHAR (v_count)
|| ') verplichtingen. Naam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr;
fac.writelog (
'inact_prs',
'I',
'Inactiveren persoon is niet gelukt',
v_errorhint);
END;
END IF;
END IF;
EXCEPTION
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.writelog ('inact_prs',
'E',
v_errormsg,
v_errorhint);
END;
END LOOP;
END;
END;
/
--de daily task draait elke ochtend om 5 uur.
CREATE OR REPLACE PROCEDURE pivp_daily
AS
BEGIN
-- inactiveren personen die 12 maanden niet hebben ingelogd
pivp.inactivate_prs ();
-- zaalreservereing afmelden ook die verwijderd zijn
pivp.afmelden_reserveringen;
END;
/
-- Import vanuit Strukton
CREATE OR REPLACE PROCEDURE pivp_import_opdrstat_strukton (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_imp NUMBER (10) := 0;
v_ongeldig NUMBER (1) := 0;
-- De importvelden
v_mld_opdr_key_tekst VARCHAR2 (100);
v_extern_nummer VARCHAR2 (100);
v_status_code VARCHAR2 (100);
v_status NUMBER (10);
v_datumtijd_tekst VARCHAR2 (100);
v_datumtijd DATE;
v_status_tekst VARCHAR2 (100);
v_opmerking VARCHAR2 (4000);
--v_totaal_tekst VARCHAR2 (100);
--v_totaal NUMBER (8,2);
--v_correctie_tekst VARCHAR2 (100);
--v_correctie NUMBER (8,2);
-- Overige velden
v_mld_opdr_key NUMBER (10);
v_mld_opdr_opmerking VARCHAR2 (4000);
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM pivp_imp_opdrstat_strukton;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden.
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
v_mld_opdr_key_tekst := TRIM (v_mld_opdr_key_tekst);
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
v_extern_nummer := TRIM (v_extern_nummer);
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
v_status_code := TRIM (v_status_code);
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
v_datumtijd_tekst := TRIM (v_datumtijd_tekst);
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
v_status_tekst := TRIM (v_status_tekst);
fac.imp_getfield (v_newline, c_delim, v_opmerking);
v_opmerking := SUBSTR (TRIM (v_opmerking), 1, 1000);
--fac.imp_getfield (v_newline, c_delim, v_totaal_tekst);
--v_totaal := fac.safe_to_number (v_totaal_tekst);
--fac.imp_getfield (v_newline, c_delim, v_correctie_tekst);
--v_correctie := fac.safe_to_number (v_correctie_tekst);
-- Verwijder de markering voor cr/lf die in stylesheet is toegevoegd.
v_opmerking := REPLACE (v_opmerking, '@@', CHR (13));
v_aanduiding := '[' || v_mld_opdr_key_tekst || '|' || v_extern_nummer || '|' || v_status_code || '|' || v_datumtijd_tekst || '|' || v_status_tekst || '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
--AND UPPER (TRIM (v_totaal_tekst)) = 'TOTAL'
--AND UPPER (TRIM (v_correctie_tekst)) = 'CORRECTION'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden.
v_errormsg := 'Fout bepalen opdracht';
BEGIN
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
INTO v_mld_opdr_key, v_mld_opdr_opmerking
FROM mld_opdr o, mld_melding m, mld_stdmelding sm, ins_tab_discipline td, ins_srtdiscipline sd
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END;
IF v_ongeldig = 0
THEN
v_errormsg := 'Status ongedefinieerd';
CASE
WHEN v_status_code = '5'
THEN
v_status := 5; -- uitgegeven
WHEN v_status_code = '10'
THEN
v_status := 8; -- geaccepteerd
WHEN v_status_code = '20' -- monteur gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '25' -- specialist gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '30' -- technisch gereed
THEN
v_status := 6; -- afgemeld
-- KFNS#52066: Uitprijs/fiatteer-functionaliteit!
--WHEN v_status_code = '40' -- uitgeprijst (fiattering aan FACILITOR-kant)
--THEN
-- v_status := 9; -- afgerond
--WHEN v_status_code = '45' -- gefiatteerd (fiattering aan Strukton-kant)
--THEN
-- v_status := 9; -- afgerond
WHEN v_status_code = '70'
THEN
v_status := 1; -- geannuleerd
WHEN v_status_code = '80'
THEN
v_status := 1; -- afgewezen
WHEN v_status_code = '200' -- onderbroken
THEN
--TODO: Notitie toevoegen (incl. reden?)
v_status := NULL; -- ongewijzigd
WHEN v_status_code = '210' -- herpland
THEN
--TODO: Notitie toevoegen
v_status := NULL; -- ongewijzigd
ELSE
v_status := NULL;
v_ongeldig := 1; -- nog te bezien
END CASE;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg := 'Datumtijd ongeldig';
IF INSTR (v_datumtijd_tekst, '.') > 0
THEN
v_datumtijd := fac.safe_to_date (REPLACE (SUBSTR (v_datumtijd_tekst, 1, INSTR (v_datumtijd_tekst, '.') - 1), 'T', ' '), 'yyyy-mm-dd hh24:mi:ss');
ELSE
v_datumtijd := fac.safe_to_date (REPLACE (v_datumtijd_tekst, 'T', ' '), 'yyyy-mm-dd hh24:mi:ss');
END IF;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg := 'Opmerking ongeldig';
-- Controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang is gemeld.
IF v_opmerking IS NOT NULL AND INSTR (v_mld_opdr_opmerking, v_opmerking) = 0
THEN
v_opmerking := '[' || v_datumtijd_tekst || '] - ' || v_status_tekst || CHR (13) || CHR (10) || v_opmerking;
ELSE
v_opmerking := '[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
END IF;
END IF;
-- Insert geformatteerde import record.
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven statusbericht';
INSERT INTO pivp_imp_opdrstat_strukton (mld_opdr_key,
extern_nummer,
status,
datumtijd,
opmerking) -- Geen totaal/correctie!
VALUES (v_mld_opdr_key,
v_extern_nummer,
v_status,
v_datumtijd,
v_opmerking);
v_count_imp := v_count_imp + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
END;
ELSE
-- Foutmeldingen onderdrukken als uitprijzen/fiatteren niet is aangeschakeld.
IF v_status_code <> '40' AND v_status_code <> '45'
THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
END IF;
END IF;
END IF;
END;
END LOOP;
IF header_is_valid = 0
THEN
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (p_import_key, 'S', 'Inleesproces/#ingelezen statusberichten: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'Inleesproces/#ongeldige niet ingelezen statusberichten: ' || TO_CHAR (v_count_tot - v_count_imp), '');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces statusberichten afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE pivp_update_opdrstat_strukton (p_import_key IN NUMBER)
AS
-- Cursor loopt - per opdracht in volgorde! - over alle ingelezen statusberichten.
CURSOR c1
IS
SELECT mld_opdr_key, extern_nummer, status, datumtijd, opmerking -- Geen totaal/correctie!
FROM pivp_imp_opdrstat_strukton
ORDER BY 1, 4;
c_user_key NUMBER (10) := 401; -- _STRUKTON-user A=341
c_refnr_srtkkey NUMBER (10) := 121; -- Refnr. Leverancier A=181 P=121
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count NUMBER (10) := 0;
v_mld_key NUMBER (10);
v_opdr_key NUMBER (10);
v_opdr_status NUMBER (10);
v_mld_typeopdr_key NUMBER (10);
v_mld_kenmerk_key NUMBER (10);
v_mld_kenmerkopdr_key NUMBER (10);
BEGIN
-- Loop over alle ingelezen Strukton-statusberichten.
FOR rec IN c1
LOOP
BEGIN
v_aanduiding := '[' || rec.mld_opdr_key || '|' || SUBSTR (rec.opmerking, 1, 100) || '] ';
v_count_tot := v_count_tot + 1;
-- Key van melding/opdracht bepalen en Refnr. bij opdracht opslaan.
IF rec.mld_opdr_key IS NOT NULL
THEN
v_errormsg := 'Fout bepalen opdracht.';
SELECT mld_melding_key, mld_opdr_key, mld_statusopdr_key, mld_typeopdr_key
INTO v_mld_key, v_opdr_key, v_opdr_status, v_mld_typeopdr_key
FROM mld_opdr
WHERE mld_opdr_key = rec.mld_opdr_key;
v_errormsg := 'Fout bepalen Refnr-kenmerk.';
SELECT k.mld_kenmerk_key
INTO v_mld_kenmerk_key
FROM mld_kenmerk k
WHERE k.mld_srtkenmerk_key = c_refnr_srtkkey AND k.mld_typeopdr_key = v_mld_typeopdr_key;
v_errormsg := 'Fout bepalen Refnr-kenmerkopdracht.';
SELECT MAX (ko.mld_kenmerkopdr_key)
INTO v_mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = v_opdr_key AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
IF v_mld_kenmerkopdr_key IS NULL
THEN
-- Kenmerk toevoegen
v_errormsg := 'Fout toevoegen Refnr-kenmerkopdracht.';
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde)
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
ELSE
-- Kenmerk bijwerken
v_errormsg := 'Fout bijwerken Refnr-kenmerkopdracht.';
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = rec.extern_nummer
WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
END IF;
IF rec.status IS NOT NULL
THEN
v_errormsg := 'Fout bijwerken Opmerking (opdracht).';
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
UPDATE mld_opdr
SET mld_opdr_opmerking =
DECODE (mld_opdr_opmerking,
NULL, rec.opmerking,
rec.opmerking || CHR (13) || CHR (10) || SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
WHERE mld_opdr_key = v_opdr_key;
v_errormsg := 'Fout bijwerken Status.';
IF rec.status = 8 AND v_opdr_status = 5
THEN
-- Accepteer de opdracht als deze uitgegeven was
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton
ELSIF rec.status = 6 AND v_opdr_status = 5
THEN
-- Meld de opdracht af als deze uitgegeven was (na eerst accepteren)
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
ELSIF rec.status = 6 AND v_opdr_status = 8
THEN
-- Meld de opdracht af als deze geaccepteerd was
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
ELSIF rec.status = 1 AND v_opdr_status IN (5, 8)
THEN
-- Wijs de opdracht af als deze niet/wel geaccepteerd was
MLD.setopdrachtstatus (v_opdr_key, 1, c_user_key); -- Strukton
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
--ELSIF rec.status = 9 AND v_opdr_status = 6 -- Per KFNS#52066
--THEN
-- Neem ontvangen kosten over zoals afgestemd met KFNS#59399!
--UPDATE mld_opdr
-- SET mld_opdr_materiaal = rec.totaal,
-- mld_opdr_kosten = rec.totaal + rec.correctie
-- WHERE mld_opdr_key = v_opdr_key;
-- Rond de opdracht af als deze afgemeld was
--MLD.setopdrachtstatus (v_opdr_key, 9, c_user_key); -- Strukton
END IF;
IF rec.status = 6 AND v_opdr_status <> 6
THEN
-- AADO#30922: Melding niet meer automatisch afmelden.
-- KFNS#37965: Opmerking-veld bij melding niet meer bijwerken.
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
END IF;
ELSE -- rec.status IS NULL (= Onderbroken/Herpland), dan toevoegen Notitie!
-- YAXX#59749: Toevoegen Notitie!
v_errormsg := 'Fout toevoegen Notitie (opdracht).';
INSERT INTO mld_opdr_note (mld_opdr_key, mld_opdr_note_omschrijving, prs_perslid_key)
VALUES (v_opdr_key, rec.opmerking, c_user_key);
END IF;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Statusbericht-loop');
END;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE PIVP_IMPORT_ASSETS_INI(p_import_key IN NUMBER)
AS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_all_null BOOLEAN;
v_count_error NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
-- De importvelden:
v_alg_ruimte_nr VARCHAR2(100);
v_gebouw_code VARCHAR2(100);
v_ins_discipline_txt VARCHAR2(100);
v_ins_discipline_omschrijving VARCHAR2(100);
d_ins_discipline_omschrijving VARCHAR2(100);
v_ins_srtgroep_code VARCHAR2(100);
v_ins_srtgroep_omschrijving VARCHAR2(100);
d_ins_srtgroep_omschrijving VARCHAR2(100);
v_ins_srtdeel_code VARCHAR2(100);
v_ins_srtdeel_omschrijving VARCHAR2(100);
d_ins_srtdeel_omschrijving VARCHAR2(100);
v_ins_deel_txt VARCHAR2(100);
v_ins_deel_code VARCHAR2(100);
v_ins_deel_eenheid VARCHAR2(100);
v_ins_deel_omschrijving VARCHAR2(100);
v_ins_deel_opmerking VARCHAR2(1000);
v_ins_deel_component VARCHAR2(1000);
v_ins_srtcontrole_periode_txt VARCHAR2(100);
v_ins_srtcontrole_prijs_txt VARCHAR2(100);
v_ins_deel_percentage NUMBER;
v_ins_srtcontrole_periode NUMBER;
v_kenmerk1 VARCHAR2(1000);
v_kenmerk2 VARCHAR2(1000);
v_kenmerk3 VARCHAR2(1000);
v_kenmerk4 VARCHAR2(1000);
v_kenmerk5 VARCHAR2(1000);
v_kenmerk6 VARCHAR2(1000);
v_kenmerk7 VARCHAR2(1000);
v_kenmerk8 VARCHAR2(1000);
v_kenmerk9 VARCHAR2(1000);
v_kenmerk10 VARCHAR2(1000);
v_kenmerk11 VARCHAR2(1000);
v_kenmerk12 VARCHAR2(1000);
v_kenmerk13 VARCHAR2(1000);
v_kenmerk14 VARCHAR2(1000);
v_kenmerk15 VARCHAR2(1000);
v_kenmerk16 VARCHAR2(1000);
v_kenmerk17 VARCHAR2(1000);
v_kenmerk18 VARCHAR2(1000);
v_kenmerk19 VARCHAR2(1000);
v_dumm NUMBER (10,2);
v_ins_deel_aanmaak_text VARCHAR2(10);
v_ins_deel_aanmaak DATE;
v_ins_deel_startjaar DATE;
v_ins_deel_aantal NUMBER;
v_ins_srtcontrole_prijs NUMBER(10,2);
v_alg_locatie_code VARCHAR2(20);
v_alg_gebouw_code VARCHAR2(20);
v_alg_verdieping_volgnr NUMBER;
v_srtk_code_rvb_key NUMBER;
v_srtk_opm_key NUMBER;
v_srtk_merk_key NUMBER;
v_discipline_key NUMBER;
v_srtgroep_key NUMBER;
v_startjaar NUMBER;
v_cyclus NUMBER;
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
v_count_error := 0;
header_is_valid := 0;
v_count_tot := 0;
v_count_import := 0;
DELETE fac_imp_ins;
FOR rec IN c
LOOP
BEGIN
V_count_import := v_count_import +1;
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec.fac_imp_file_line;
IF v_count_import >=1 THEN
v_errormsg := 'Fout opvragen K1 te importeren rij '||v_count_import;
v_aanduiding := '';
-- Lees alle veldwaarden
--fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_gebouw_code);
v_errormsg := 'Fout opvragen K3 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_alg_verdieping_volgnr);
v_errormsg := 'Fout opvragen K4 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_alg_ruimte_nr);
v_errormsg := 'Fout opvragen K2 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_gebouw_code);
v_errormsg := 'Fout opvragen K5 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 5, v_ins_discipline_omschrijving);
v_errormsg := 'Fout opvragen K6te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_ins_srtgroep_code);
v_errormsg := 'Fout opvragen K7 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, v_ins_srtgroep_omschrijving);
v_errormsg := 'Fout opvragen K8 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_ins_srtdeel_code);
v_errormsg := 'Fout opvragen K9 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_ins_srtdeel_omschrijving);
v_errormsg := 'Fout opvragen K14 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 14, v_ins_deel_aantal);
v_errormsg := 'Fout opvragen K10 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_ins_deel_omschrijving);
v_errormsg := 'Fout opvragen K12 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 12, v_ins_deel_component);
v_errormsg := 'Fout opvragen K11 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 11, v_ins_deel_opmerking);
v_errormsg := 'Fout opvragen K16 te importeren rij '||v_count_import;
--fac.imp_getfield_nr (v_newline, c_fielddelimitor, 16, v_ins_deel_aanmaak_text);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 16, v_kenmerk4); -- bouwjaar
v_errormsg := 'Fout opvragen K113 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 13, v_kenmerk1); -- Oprognose code
-- fac.imp_getfield_nr (v_newline, c_fielddelimitor, 15, v_kenmerk2); -- Merk
v_errormsg := 'Fout opvragen K15 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 15, v_kenmerk3); -- Eenheid
v_errormsg := 'Fout opvragen K21 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 21, v_kenmerk10); -- Taak groep
v_errormsg := 'Fout opvragen k18 te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 18, v_kenmerk11); -- Taak omschrijving
v_errormsg := 'Fout opvragen te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 19, v_kenmerk13); -- Taak opmerking
v_errormsg := 'Fout opvragen te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 29, v_kenmerk12); -- Periode interval
v_errormsg := 'Fout opvragen te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 32, v_kenmerk14); -- kosten
v_errormsg := 'Fout opvragen te importeren rij '||v_count_import;
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 30, v_kenmerk15); -- startjaar
-- fac.imp_getfield_nr (v_newline, c_fielddelimitor, 29, v_ins_srtcontrole_periode_txt);
-- fac.imp_getfield_nr (v_newline, c_fielddelimitor, 24, v_ins_srtcontrole_prijs_txt);
-- fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_kenmerk1); -- code RVB
-- fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_kenmerk2); -- opmerking
-- fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_kenmerk3); -- taak
-- fac.imp_getfield_nr (v_newline, c_fielddelimitor, 16, v_kenmerk5); -- fabrikant / merk
-- fac.imp_getfield_nr (v_newline, c_fielddelimitor, 28, v_kenmerk7); -- percentage
-- fac.imp_getfield_nr (v_newline, c_fielddelimitor, 30, v_kenmerk9); -- startjaar
v_errormsg := 'vervangen , door . '||v_count_import;
v_ins_srtdeel_code := REPLACE(v_ins_srtdeel_code,',','.');
v_errormsg := 'Euro teken verwijderen '||v_count_import;
-- v_kenmerk14 := REPLACE(v_kenmerk14,',','.');
-- v_aanduiding := v_ins_deel_omschrijving || '|' || v_kenmerk4;
v_count_tot := v_count_tot + 1;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_discipline_omschrijving: ' || v_ins_srtdeel_code;
BEGIN
SELECT d.ins_discipline_omschrijving
INTO d_ins_discipline_omschrijving
FROM ins_discipline d
WHERE SUBSTR (d.ins_discipline_omschrijving, 1, 1) = SUBSTR (v_ins_srtdeel_code, 1, 1) AND d.ins_discipline_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
d_ins_discipline_omschrijving := SUBSTR (v_ins_srtdeel_code, 1, 1) || '-'|| v_ins_discipline_omschrijving;
END;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtgroep_omschrijving: ' || v_ins_srtdeel_code;
d_ins_srtgroep_omschrijving:='';
BEGIN
SELECT sg.ins_srtgroep_omschrijving
INTO d_ins_srtgroep_omschrijving
FROM ins_srtgroep sg
WHERE SUBSTR (sg.ins_srtgroep_omschrijving, 1, 2) = SUBSTR (v_ins_srtgroep_code, 1, 2);
EXCEPTION
WHEN NO_DATA_FOUND THEN
d_ins_srtgroep_omschrijving := SUBSTR (v_ins_srtdeel_code, 1, 2) || '-'|| v_ins_srtgroep_omschrijving;
END;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtdeel_omschrijving: ' || v_ins_srtdeel_code;
d_ins_srtdeel_omschrijving:='';
BEGIN
SELECT sd.ins_srtdeel_omschrijving
INTO v_ins_srtdeel_omschrijving
FROM ins_srtdeel sd
WHERE sd.ins_srtdeel_code = v_ins_srtdeel_code;
EXCEPTION
WHEN NO_DATA_FOUND THEN
d_ins_srtdeel_omschrijving := v_ins_srtdeel_omschrijving;
END;
v_errormsg := 'Fout bij toevoegen te impoteren v_alg_ruimte_nr: ' || v_alg_ruimte_nr;
--SELECT alg_locatie_code, alg_gebouw_upper, alg_verdieping_volgnr
-- INTO v_alg_locatie_code, v_alg_gebouw_code, v_alg_verdieping_volgnr
--FROM alg_v_ruimte_gegevens rg
--WHERE UPPER(rg.alg_ruimte_nr) = UPPER(v_alg_ruimte_nr);
BEGIN
SELECT alg_locatie_code, alg_gebouw_upper, alg_verdieping_volgnr INTO v_alg_locatie_code,v_alg_gebouw_code, v_alg_verdieping_volgnr
FROm alg_v_ruimte_gegevens rg
WHERE UPPER(rg.alg_ruimte_nr) = UPPER(v_alg_ruimte_nr) AND rg.alg_gebouw_upper = UPPER(v_gebouw_code) AND rg.alg_verdieping_volgnr=v_alg_verdieping_volgnr;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_alg_locatie_code:='PP';
v_alg_gebouw_code := v_gebouw_code;
v_alg_verdieping_volgnr:='0';
v_alg_ruimte_nr:='_000';
END;
IF v_ins_deel_component IS NOT NULL THEN
v_ins_deel_omschrijving :=v_ins_deel_omschrijving||'-'||v_ins_deel_component;
END IF;
v_errormsg := '1 Fout bij toevoegen te impoteren startjaar('||v_ins_deel_omschrijving||'): ' || v_kenmerk15;
v_ins_deel_aanmaak := NULL;
IF v_kenmerk15 IS NOT NULL
THEN
IF v_kenmerk15='0' THEN
v_ins_deel_aanmaak := to_date('01012099' , 'ddmmyyyy');
ELSE
v_startjaar:= to_number(v_kenmerk15);
v_cyclus := to_number(v_kenmerk12);
-- IF v_startjaar=2022 THEN
v_startjaar:=v_startjaar-v_cyclus;
-- END IF;
v_ins_deel_aanmaak := TO_DATE('0101'||v_startjaar,'ddmmyyyy');
END IF;
ELSE
v_ins_deel_aanmaak := SYSDATE;
END IF;
/* IF v_ins_deel_aanmaak_text IS NOT NULL
THEN
IF v_ins_deel_aanmaak_text='0' THEN
v_ins_deel_aanmaak := to_date('01012022' , 'ddmmyyyy');
ELSE
v_ins_deel_aanmaak := to_date('0101' || v_ins_deel_aanmaak_text, 'ddmmyyyy');
END IF;
ELSE
v_ins_deel_aanmaak := SYSDATE;
END IF;
v_errormsg := 'Fout bij toevoegen te impoteren v_kenmerk9: ' || v_kenmerk9;
IF v_kenmerk9 IS NOT NULL
THEN
v_ins_deel_startjaar := to_date('0101' || v_kenmerk9, 'ddmmyyyy');
ELSE
v_ins_deel_startjaar := NULL;
END IF;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_deel_aantal_txt: ' || v_ins_deel_aantal_txt;
IF v_ins_deel_aantal_txt IS NOT NULL
THEN
v_ins_deel_aantal := to_number(v_ins_deel_aantal_txt);
ELSE
v_ins_deel_aantal := 1;
END IF;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtcontrole_periode_txt: ' || v_ins_srtcontrole_periode_txt;
IF v_ins_srtcontrole_periode_txt IS NOT NULL
THEN
v_ins_srtcontrole_periode := to_number(v_ins_srtcontrole_periode_txt);
ELSE
v_ins_srtcontrole_periode := NULL;
END IF;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtcontrole_prijs_txt: ' || v_ins_srtcontrole_prijs_txt;
IF v_ins_srtcontrole_prijs_txt IS NOT NULL
THEN
v_ins_srtcontrole_prijs := to_number(REPLACE(REPLACE(v_ins_srtcontrole_prijs_txt, '.'), ',', '.'));
ELSE
v_ins_srtcontrole_prijs := NULL;
END IF;
v_errormsg := 'Fout bij toevoegen te impoteren v_kenmerk7: ' || v_kenmerk7;
IF v_kenmerk7 IS NOT NULL
THEN
IF INSTR(v_kenmerk7, '%') = 0
THEN
v_ins_deel_percentage := to_number(v_kenmerk7)*100;
ELSE
v_ins_deel_percentage := to_number(REPLACE(v_kenmerk7, '%'));
END IF;
ELSE
v_ins_deel_percentage := 100;
END IF;
INSERT INTO fac_imp_ins (ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
ins_kenmerkwaarde1,
ins_kenmerkwaarde2,
ins_kenmerkwaarde3,
ins_kenmerkwaarde4,
ins_kenmerkwaarde5,
ins_kenmerkwaarde6,
ins_kenmerkwaarde7,
ins_kenmerkwaarde8,
ins_kenmerkwaarde9,
ins_kenmerkwaarde10,
ins_deel_aanmaak,
ins_deel_aantal)
VALUES (SUBSTR(d_ins_discipline_omschrijving, 1,60),
SUBSTR(d_ins_srtgroep_omschrijving, 1, 60),
SUBSTR(v_ins_srtdeel_code,1,10),
SUBSTR(v_ins_srtdeel_omschrijving || ' - ' || v_ins_srtdeel_code, 1, 100),
SUBSTR(v_ins_deel_omschrijving, 1, 60),
SUBSTR(v_ins_deel_opmerking, 1, 320),
SUBSTR(v_alg_locatie_code, 1, 10),
SUBSTR(v_alg_gebouw_code, 1, 12),
v_alg_verdieping_volgnr,
SUBSTR(v_alg_ruimte_nr,1,20),
DECODE(v_kenmerk1, NULL, NULL, 'Code RVB|0=' || v_kenmerk1),
DECODE(v_kenmerk2, NULL, NULL, 'Opmerking|0=' || v_kenmerk2),
v_kenmerk3,
'',
DECODE(v_kenmerk5, NULL, NULL, 'Merk|0=' || v_kenmerk5),
v_ins_srtcontrole_prijs,
v_ins_deel_percentage,
v_ins_srtcontrole_periode,
to_char(v_ins_deel_startjaar, 'ddmmyyyy'),
to_char(v_ins_deel_aanmaak, 'ddmmyyyy'),
v_ins_deel_aanmaak,
to_number(v_ins_deel_aantal)); */
INSERT INTO fac_imp_ins (ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
ins_deel_aanmaak,
ins_deel_aantal,
ins_kenmerkwaarde1, -- Code OP
ins_kenmerkwaarde2, -- Bouwjaar ?
ins_kenmerkwaarde3, -- eenheid ?
ins_kenmerkwaarde10, -- Srt Taak Groep
ins_kenmerkwaarde11, -- Srt Taak
ins_kenmerkwaarde12, -- Periode
ins_kenmerkwaarde13, -- Interval (4=jaarlijks)
ins_kenmerkwaarde14, -- bedrag /matriaal
ins_kenmerkwaarde15) -- Taak opm
VALUES (SUBSTR(d_ins_discipline_omschrijving, 1,60),
SUBSTR(d_ins_srtgroep_omschrijving, 1, 60),
SUBSTR(v_ins_srtdeel_code,1,10),
SUBSTR(v_ins_srtdeel_omschrijving, 1, 100),
SUBSTR(v_ins_deel_omschrijving, 1, 60),
SUBSTR(v_ins_deel_opmerking, 1, 320),
SUBSTR(v_alg_locatie_code, 1, 10),
SUBSTR(v_alg_gebouw_code, 1, 12),
v_alg_verdieping_volgnr,
SUBSTR(v_alg_ruimte_nr,1,20),
v_ins_deel_aanmaak,
to_number(v_ins_deel_aantal),
DECODE(v_kenmerk1, NULL, NULL, 'CODE OP|0='||v_kenmerk1),
DECODE(v_kenmerk4, NULL, NULL, 'Bouwjaar|0='||v_kenmerk4),
DECODE(v_kenmerk3, NULL, NULL, 'Eenheid|0='||v_kenmerk3),
v_kenmerk10,
v_kenmerk11,
v_kenmerk12,
4,
v_kenmerk14,
v_kenmerk13
);
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
/
--Einde pivp_import_assets_ini;
CREATE OR REPLACE PROCEDURE PIVP_UPDATE_ASSETS_INI(p_import_key IN NUMBER)
AS
CURSOR sel IS
SELECT * FROM fac_imp_ins;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
v_aanduiding VARCHAR2 (100);
v_deel_key NUMBER;
v_srtdeel_key NUMBER;
v_srtcontrole_key NUMBER;
v_srtcontroledl_xcp_key NUMBER;
v_taakcat_key NUMBER;
v_srtcontrole_omschrijving INS_SRTCONTROLE.INS_SRTCONTROLE_OMSCHRIJVING%TYPE;
v_srtcontrole_periode INS_SRTCONTROLE.INS_SRTCONTROLE_PERIODE%TYPE;
v_srtcontrole_materiaal INS_SRTCONTROLE.INS_SRTCONTROLE_MATERIAAL%TYPE;
v_srtcontrole_percentage INS_SRTCONTROLE.INS_SRTCONTROLE_PERCENTAGE%TYPE;
v_srtcontrole_level INS_SRTCONTROLE.INS_SRTCONTROLE_LEVEL%TYPE;
v_percentage NUMBER;
v_materiaal INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_MATERIA%TYPE;
ins_deel_key NUMBER;
ins_srtdeel_key NUMBER;
v_count NUMBER;
v_error NUMBER;
BEGIN
fac_update_ins(p_import_key);
-- LOOP Over alle geimporteerde objecten
FOR rec IN sel
LOOP
v_error:=0;
BEGIN
v_count:=0;
-- volgens mij is deze niet meer nodig
--v_materiaal := FAC.safe_to_number (REPLACE(rec.INS_KENMERKWAARDE14,'.',''));
v_materiaal := FAC.safe_to_number (rec.INS_KENMERKWAARDE14);
-- v_materiaal := ROUND(v_materiaal,2);
-- Haal het object op
v_errorhint := 'Zoek object';
SELECT ins_deel_key, ins_srtdeel_key
INTO v_deel_key, v_srtdeel_key
FROM ins_deel
WHERE ins_deel_omschrijving = rec.ins_deel_omschrijving;
--Haal de taakgroep op
v_errorhint := 'Zoek taak categorie';
BEGIN
SELECT ins_discipline_key
INTO v_taakcat_key
FROM ctr_discipline
WHERE UPPER (ins_discipline_omschrijving) = UPPER (rec.ins_kenmerkwaarde10);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_error :=1;
-- loggen dat deze taak groep niet bekend is
END;
-- Als taakgroep is Cerificering dan geen MJOB
-- Heeft deze objectsoort al deze keuring
-- heb ik al een XCP Record...
-- SELECT COUNT(*)
-- INTO v_count
-- FROM ins_srtcontroledl_xcp
-- WHERE ins_deel_key=v_deel_key
-- AND ins_srtcontroledl_xcp_periode=COALESCE (TO_NUMBER (rec.ins_kenmerkwaarde12),0)
-- AND ins_srtcontroledl_xcp_materia = v_materiaal;
IF v_error=0 -- ik heb het object en taak categorie
AND rec.ins_kenmerkwaarde12 IS NOT NULL -- Er is een cyclus aanwezig
AND rec.INS_KENMERKWAARDE14 IS NOT NULL -- Er is een prijs aanwezig
THEN
BEGIN
v_srtcontrole_omschrijving:='';
v_srtcontrole_omschrijving:= SUBSTR(rec.ins_kenmerkwaarde11,0,50);
IF rec.ins_kenmerkwaarde15 IS NOT NULL
THEN
v_srtcontrole_omschrijving:=v_srtcontrole_omschrijving||'-'||rec.ins_kenmerkwaarde15;
END IF;
v_srtcontrole_omschrijving:=v_srtcontrole_omschrijving || '-'|| rec.ins_srtdeel_code;
-- Heb ik deze srtcontrole al
SELECT ins_srtcontrole_key,
ins_srtcontrole_periode,
ins_srtcontrole_materiaal,
ins_srtcontrole_percentage
INTO v_srtcontrole_key,
v_srtcontrole_periode,
v_srtcontrole_materiaal,
v_srtcontrole_percentage
FROM ins_srtcontrole
WHERE ins_srtinstallatie_key = v_srtdeel_key
AND ins_srtcontrole_niveau = 'S'
AND ctr_discipline_key = v_taakcat_key
AND ins_srtcontrole_omschrijving=v_srtcontrole_omschrijving;
-- srtcontrole is er .
-- Wijkt deze af van de srtcontrole op begied van periode, materiaal
-- IF v_srtcontrole_periode <> COALESCE (TO_NUMBER (rec.ins_kenmerkwaarde12),0)
-- OR v_srtcontrole_materiaal <> v_materiaal
-- THEN
INSERT INTO ins_srtcontroledl_xcp
(ins_srtcontrole_key,
ins_deel_key,
ins_srtcontroledl_xcp_eenheid)
VALUES (v_srtcontrole_key,v_deel_key,4)
RETURNING ins_srtcontroledl_xcp_key
INTO v_srtcontroledl_xcp_key;
-- IF v_srtcontrole_periode <> COALESCE (TO_NUMBER (rec.ins_kenmerkwaarde12),0)
-- THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_periode = COALESCE (TO_NUMBER (rec.ins_kenmerkwaarde12),0)
WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key;
-- END IF;
-- IF v_srtcontrole_materiaal <> v_materiaal
-- THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_materia = v_materiaal
WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key;
-- END IF;
-- END IF;
-- Vergeklijk de waardes met de huidige waarde
-- indien deze anders zijn dan moet er een uitzonderings record gemaakt worden
-- vast leggen op bais vam welke criteria de srtconmtyrole gechekd wordt.
-- periode, kosten evt percentage
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_errorhint := 'Bepalen level';
v_srtcontrole_level := 10;
v_srtcontrole_percentage:=0;
v_srtcontrole_omschrijving:= SUBSTR(rec.ins_kenmerkwaarde11,0,50);
IF rec.ins_kenmerkwaarde15 IS NOT NULL
THEN
v_srtcontrole_omschrijving:=v_srtcontrole_omschrijving||'-'||rec.ins_kenmerkwaarde15;
END IF;
v_srtcontrole_omschrijving:=v_srtcontrole_omschrijving || '-'|| rec.ins_srtdeel_code;
v_errorhint := 'Aanmaken srtcontrole';
-- nu moet we een ins_srtcontrole aanmaken
INSERT INTO ins_srtcontrole (
ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ctr_discipline_key,
ins_Srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_level
)
VALUES (
v_srtdeel_key,
'S',
v_srtcontrole_omschrijving,
v_taakcat_key,
COALESCE (TO_NUMBER (rec.ins_kenmerkwaarde12),0),
4, -- Jaarlijks
v_srtcontrole_level
)
RETURNING ins_srtcontrole_key INTO v_srtcontrole_key;
INSERT INTO ins_srtcontroledl_xcp (
ins_srtcontrole_key,
ins_srtcontroledl_xcp_materia,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_eenheid,
ins_deel_key)
VALUES (v_srtcontrole_key, v_materiaal, COALESCE (TO_NUMBER (rec.ins_kenmerkwaarde12),0),4, v_deel_key)
RETURNING ins_srtcontroledl_xcp_key
INTO v_srtcontroledl_xcp_key;
END;
END IF;
END;
END LOOP;
END;
/
-- Einde PIVP_UPDATE_ASSETS_INI
CREATE OR REPLACE PROCEDURE PIVP_IMPORT_ASSETS(p_import_key IN NUMBER)
AS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count NUMBER;
v_objectcount NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_all_null BOOLEAN;
v_count_error NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10):=0;
-- De importvelden:
v_alg_ruimte_nr VARCHAR2(100);
v_gebouw_code VARCHAR2(100);
v_ins_discipline_txt VARCHAR2(100);
v_ins_discipline_omschrijving VARCHAR2(100);
d_ins_discipline_omschrijving VARCHAR2(100);
v_ins_srtgroep_code VARCHAR2(100);
v_ins_srtgroep_omschrijving VARCHAR2(100);
d_ins_srtgroep_omschrijving VARCHAR2(100);
v_ins_srtdeel_code VARCHAR2(100);
v_ins_srtdeel_omschrijving VARCHAR2(100);
d_ins_srtdeel_omschrijving VARCHAR2(100);
v_ins_deel_txt VARCHAR2(100);
v_ins_deel_code VARCHAR2(100);
v_ins_deel_eenheid VARCHAR2(100);
v_ins_deel_omschrijving VARCHAR2(100);
v_ins_deel_omschrijving_compleet VARCHAR2(100);
v_ins_deel_opmerking VARCHAR2(1000);
v_ins_deel_component VARCHAR2(1000);
v_ins_srtcontrole_periode_txt VARCHAR2(100);
v_ins_srtcontrole_prijs_txt VARCHAR2(100);
v_ins_deel_percentage NUMBER;
v_ins_srtcontrole_periode NUMBER;
v_kenmerk1 VARCHAR2(1000);
v_kenmerk2 VARCHAR2(1000);
v_kenmerk3 VARCHAR2(1000);
v_kenmerk4 VARCHAR2(1000);
v_kenmerk5 VARCHAR2(1000);
v_kenmerk6 VARCHAR2(1000);
v_kenmerk7 VARCHAR2(1000);
v_kenmerk8 VARCHAR2(1000);
v_kenmerk9 VARCHAR2(1000);
v_kenmerk10 VARCHAR2(1000);
v_kenmerk11 VARCHAR2(1000);
v_kenmerk12 VARCHAR2(1000);
v_kenmerk13 VARCHAR2(1000);
v_kenmerk14 VARCHAR2(1000);
v_kenmerk15 VARCHAR2(1000);
v_kenmerk16 VARCHAR2(1000);
v_kenmerk17 VARCHAR2(1000);
v_kenmerk18 VARCHAR2(1000);
v_kenmerk19 VARCHAR2(1000);
v_dumm NUMBER (10,2);
v_ins_deel_aanmaak_text VARCHAR2(10);
v_ins_deel_aanmaak DATE;
v_ins_deel_startjaar DATE;
v_ins_deel_aantal NUMBER;
v_ins_srtcontrole_prijs NUMBER(10,2);
v_alg_locatie_code VARCHAR2(20);
v_alg_gebouw_code VARCHAR2(20);
v_alg_verdieping_volgnr NUMBER;
v_srtk_code_rvb_key NUMBER;
v_srtk_opm_key NUMBER;
v_srtk_merk_key NUMBER;
v_discipline_key NUMBER;
v_srtgroep_key NUMBER;
v_startjaar NUMBER;
v_cyclus NUMBER;
v_component NUMBER;
v_msdcode NUMBER;
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
v_count_error := 0;
header_is_valid := 0;
v_count_tot := 0;
v_count_import := 0;
v_component:=1;
v_msdcode:=1;
DELETE fac_imp_ins;
FOR rec IN c
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij '||v_count_import;
v_aanduiding := '';
v_kenmerk1:='';
v_kenmerk3:='';
v_kenmerk4:='';
v_kenmerk10:='';
v_kenmerk11:='';
v_kenmerk12:='';
v_kenmerk13:='';
v_kenmerk14:='';
v_kenmerk15:='';
v_kenmerk16:='';
v_ins_deel_component:='';
v_ins_deel_omschrijving:='';
v_ins_deel_opmerking:='';
v_ins_deel_omschrijving_compleet:='';
-- Lees alle veldwaarden
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_gebouw_code);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_alg_verdieping_volgnr);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_alg_ruimte_nr);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 5, v_ins_discipline_omschrijving);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_ins_srtgroep_code);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, v_ins_srtgroep_omschrijving);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_ins_srtdeel_code);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_ins_srtdeel_omschrijving);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 14, v_ins_deel_aantal);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_ins_deel_omschrijving);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 12, v_ins_deel_component);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 11, v_ins_deel_opmerking);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 16, v_kenmerk4); -- bouwjaar
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 13, v_kenmerk1); -- Oprognose code
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 15, v_kenmerk3); -- Eenheid
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 21, v_kenmerk10); -- Taak groep
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 18, v_kenmerk11); -- Taak omschrijving
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 19, v_kenmerk13); -- Taak opmerking
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 20, v_kenmerk9); -- Taak wetgeving
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 29, v_kenmerk12); -- Periode interval
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 32, v_kenmerk14); -- kosten
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 30, v_kenmerk16); -- startjaar
IF v_ins_srtgroep_code!='00' THEN
v_ins_srtdeel_code := REPLACE(v_ins_srtdeel_code,',','.');
v_ins_deel_aantal := REPLACE(v_ins_deel_aantal,',','.');
v_kenmerk14 := REPLACE(v_kenmerk14,'<EFBFBD>');
-- v_aanduiding := v_ins_deel_omschrijving || '|' || v_kenmerk4;
v_count_tot := v_count_tot + 1;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_discipline_omschrijving: ' || v_ins_srtdeel_code||'(REGEL '||v_count_import||')';
d_ins_discipline_omschrijving:='';
BEGIN
SELECT ins_discipline_key, ins_discipline_omschrijving
INTO v_discipline_key, d_ins_discipline_omschrijving
FROM ins_discipline d
WHERE SUBSTR (d.ins_discipline_omschrijving, 1, 1) = SUBSTR (v_ins_srtdeel_code, 1, 1) AND d.ins_discipline_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO ins_tab_discipline (ins_discipline_module,ins_discipline_omschrijving,
ins_discipline_min_level)
VALUES ('INS', SUBSTR (v_ins_srtdeel_code, 1, 1) || '-'|| v_ins_discipline_omschrijving, 1)
RETURNING ins_discipline_key
INTO v_discipline_key;
INSERT INTO ins_disc_params (ins_discipline_key,
ins_disc_params_autonum)
VALUES (v_discipline_key, 2);
d_ins_discipline_omschrijving:=SUBSTR (v_ins_srtdeel_code, 1, 1) || '-'|| v_ins_discipline_omschrijving;
END;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtgroep_omschrijving: ' || v_ins_srtdeel_code ||'(REGEL '||v_count_import||')';
d_ins_srtgroep_omschrijving:='';
BEGIN
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtgroep_omschrijving(2): ' || v_ins_srtdeel_code ||'(REGEL '||v_count_import||')';
SELECT ins_srtgroep_key,sg.ins_srtgroep_omschrijving
INTO v_srtgroep_key, d_ins_srtgroep_omschrijving
FROM ins_srtgroep sg
WHERE UPPER(sg.ins_srtgroep_omschrijving) = UPPER(SUBSTR (v_ins_srtdeel_code, 1, 2) || '-'|| v_ins_srtgroep_omschrijving)
AND sg.ins_srtgroep_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtgroep_omschrijving(3): ' || v_ins_srtdeel_code ||'(REGEL '||v_count_import||')';
INSERT INTO ins_srtgroep (ins_discipline_key,
ins_srtgroep_module,
ins_srtgroep_omschrijving)
VALUES (v_discipline_key, 'INS', SUBSTR (v_ins_srtdeel_code, 1, 2) || '-'|| v_ins_srtgroep_omschrijving)
RETURNING ins_srtgroep_key
INTO v_srtgroep_key;
d_ins_srtgroep_omschrijving := SUBSTR (v_ins_srtdeel_code, 1, 2) || '-'|| v_ins_srtgroep_omschrijving;
END;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtdeel_omschrijving: ' || v_ins_srtdeel_code||'(REGEL '||v_count_import||')';
d_ins_srtdeel_omschrijving:='';
BEGIN
SELECT sd.ins_srtdeel_omschrijving
INTO v_ins_srtdeel_omschrijving
FROM ins_srtdeel sd
WHERE sd.ins_srtdeel_code = v_ins_srtdeel_code AND sd.ins_srtdeel_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO ins_srtdeel (ins_srtgroep_key,
ins_srtdeel_module,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_srtdeel_binding)
VALUES (v_srtgroep_key,
'INS',
v_ins_srtdeel_code,
v_ins_srtdeel_omschrijving,
17);
d_ins_srtdeel_omschrijving := v_ins_srtdeel_omschrijving;
END;
v_errormsg := 'Fout bij toevoegen te impoteren v_alg_ruimte_nr: ' || v_alg_ruimte_nr;
v_alg_locatie_code:='';
v_alg_gebouw_code :='';
v_alg_verdieping_volgnr:=-4;
BEGIN
SELECT alg_locatie_code, alg_gebouw_upper, alg_verdieping_volgnr INTO v_alg_locatie_code,v_alg_gebouw_code, v_alg_verdieping_volgnr
FROm alg_v_ruimte_gegevens rg
WHERE UPPER(rg.alg_ruimte_nr) = UPPER(v_alg_ruimte_nr) AND rg.alg_gebouw_upper = UPPER(v_gebouw_code) AND rg.alg_verdieping_volgnr=v_alg_verdieping_volgnr;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_alg_locatie_code:='PP';
v_alg_gebouw_code := v_gebouw_code;
v_alg_verdieping_volgnr:='0';
v_alg_ruimte_nr:='_000';
END;
IF v_ins_deel_component IS NOT NULL AND LENGTH(v_ins_deel_component)>1 THEN
v_ins_deel_omschrijving_compleet :=v_ins_deel_omschrijving||'-'||v_ins_deel_component;
ELSIF v_kenmerk1 IS NOT NULL AND LENGTH(v_kenmerk1)>1 THEN
v_ins_deel_omschrijving_compleet :=v_ins_deel_omschrijving||'-'||v_kenmerk1;
ELSE
v_ins_deel_omschrijving_compleet :=v_ins_deel_omschrijving;
END IF;
v_errormsg := '1 Fout bij toevoegen te impoteren startjaar('||v_ins_deel_omschrijving||'): ' || v_kenmerk16||'(REGEL '||v_count_import||')';
v_ins_deel_aanmaak := NULL;
IF v_kenmerk12 IS NULL
THEN
v_cyclus:=1;
ELSE
v_cyclus := to_number(v_kenmerk12);
END IF;
IF v_kenmerk16 IS NOT NULL
THEN
IF v_kenmerk16='0' THEN
v_ins_deel_aanmaak := to_date('01012022' , 'ddmmyyyy');
ELSE
v_startjaar:= to_number(v_kenmerk16);
v_startjaar:=v_startjaar-v_cyclus;
v_ins_deel_aanmaak := TO_DATE('0101'||v_startjaar,'ddmmyyyy');
END IF;
ELSE
v_ins_deel_aanmaak := to_date('01012022' , 'ddmmyyyy');
END IF;
v_errormsg := '1 Fout bij bepalen cyclus ('||v_ins_deel_omschrijving||'): ' || v_kenmerk12||'(REGEL '||v_count_import||')';
IF v_kenmerk12 IS NOT NULL AND LENGTH(v_kenmerk12)>1 THEN
IF v_kenmerk12=0 THEN
v_kenmerk12:=99; -- deze gaan we als eenmalige post inlezen
END IF;
ELSE
v_kenmerk12:=1; -- deze gaan we als eenmalige post inlezen
END IF;
v_ongeldig:=0;
IF v_ongeldig=0 THEN
v_errormsg:='Fout bij insert regel '||v_count_tot;
INSERT INTO fac_imp_ins (ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
ins_deel_aanmaak,
ins_deel_aantal,
ins_kenmerkwaarde1, -- Code OP
ins_kenmerkwaarde2, -- Bouwjaar ?
ins_kenmerkwaarde3, -- eenheid ?
ins_kenmerkwaarde10, -- Srt Taak Groep
ins_kenmerkwaarde11, -- Srt Taak
ins_kenmerkwaarde12, -- Periode
ins_kenmerkwaarde13, -- Interval (4=jaarlijks)
ins_kenmerkwaarde14, -- bedrag /matriaal
ins_kenmerkwaarde15, -- Taak opm
ins_kenmerkwaarde16) -- Taak startjaar
VALUES (SUBSTR(d_ins_discipline_omschrijving, 1,60),
SUBSTR(d_ins_srtgroep_omschrijving, 1, 60),
SUBSTR(v_ins_srtdeel_code,1,10),
SUBSTR(v_ins_srtdeel_omschrijving, 1, 100),
SUBSTR(v_ins_deel_omschrijving_compleet, 1, 60),
SUBSTR(v_ins_deel_opmerking, 1, 320),
SUBSTR(v_alg_locatie_code, 1, 10),
SUBSTR(v_alg_gebouw_code, 1, 12),
v_alg_verdieping_volgnr,
SUBSTR(v_alg_ruimte_nr,1,20),
v_ins_deel_aanmaak,
to_number(v_ins_deel_aantal),
DECODE(v_kenmerk1, NULL, NULL, 'CODE OP|0='||v_kenmerk1),
v_kenmerk4,
v_kenmerk3,
v_kenmerk10,
v_kenmerk11,
v_cyclus,
4,
v_kenmerk14,
v_kenmerk13,
v_kenmerk16
);
-- fac.imp_writelog (p_import_key,
-- 'S',
-- v_errormsg,
-- v_errorhint);
ELSE
v_ongeldig:=0;
v_ins_deel_omschrijving_compleet:='';
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
END LOOP;
-- loop nog een keer over de periodiek taken en kijk of deze taak ook voor dat object geld en maak er anders een xcp record voor met een cyclus van 99 jaar.
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END pivp_import_assets;
/
CREATE OR REPLACE PROCEDURE PIVP_UPDATE_ASSETS(p_import_key IN NUMBER)
AS
CURSOR sel IS
SELECT * FROM fac_imp_ins;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
v_aanduiding VARCHAR2 (100);
v_deel_key NUMBER;
v_srtdeel_key NUMBER;
v_srtcontrole_key NUMBER;
v_srtcontroledl_xcp_key NUMBER;
v_taakcat_key NUMBER;
v_srtcontrole_omschrijving INS_SRTCONTROLE.INS_SRTCONTROLE_OMSCHRIJVING%TYPE;
v_srtcontrole_periode INS_SRTCONTROLE.INS_SRTCONTROLE_PERIODE%TYPE;
v_srtcontrole_materiaal INS_SRTCONTROLE.INS_SRTCONTROLE_MATERIAAL%TYPE;
v_srtcontrole_percentage INS_SRTCONTROLE.INS_SRTCONTROLE_PERCENTAGE%TYPE;
v_srtcontrole_level INS_SRTCONTROLE.INS_SRTCONTROLE_LEVEL%TYPE;
v_percentage NUMBER;
v_materiaal INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_MATERIA%TYPE;
ins_deel_key NUMBER;
ins_srtdeel_key NUMBER;
v_count NUMBER;
v_error NUMBER;
v_taak_cyclus NUMBER;
v_taak_afmeld_date DATE;
v_taak_afmeld_jaar NUMBER;
v_taak_nextyear NUMBER;
BEGIN
fac_update_ins(p_import_key);
v_count:=0;
-- LOOP Over alle geimporteerde objecten
FOR rec IN sel
LOOP
v_error:=0;
BEGIN
v_count:=v_count+1;
-- volgens mij is deze niet meer nodig
v_materiaal := FAC.safe_to_number (REPLACE(rec.INS_KENMERKWAARDE14,'.',''));
-- Haal het object op
v_errorhint := 'Zoek object';
SELECT ins_deel_key, ins_srtdeel_key
INTO v_deel_key, v_srtdeel_key
FROM ins_deel
WHERE ins_deel_omschrijving = rec.ins_deel_omschrijving;
--Haal de taakgroep op
v_errorhint := 'Zoek taak categorie';
BEGIN
SELECT ins_discipline_key
INTO v_taakcat_key
FROM ctr_discipline
WHERE UPPER (ins_discipline_omschrijving) = UPPER (rec.ins_kenmerkwaarde10);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_taakcat_key:=5;
END;
v_taak_cyclus := TO_NUMBER(COALESCE(rec.ins_kenmerkwaarde12,0));
v_taak_nextyear := TO_NUMBER(rec.ins_kenmerkwaarde16);
IF (v_taak_cyclus=0 AND v_taak_nextyear>=2022) OR (v_taak_cyclus <> 0 AND v_taak_nextyear <> 0)
THEN
BEGIN
IF v_taak_cyclus=1 AND v_taak_nextyear <=2022 THEN
v_taak_afmeld_jaar := 2022;
ELSE
--v_taak_afmeld_jaar := v_taak_nextyear - v_taak_cyclus;
v_taak_afmeld_jaar := v_taak_nextyear;
END IF;
v_taak_afmeld_date := TO_DATE('0101'||v_taak_afmeld_jaar,'ddmmyyyy');
v_srtcontrole_omschrijving:='';
v_srtcontrole_omschrijving:= SUBSTR(rec.ins_kenmerkwaarde11,0,50);
IF rec.ins_kenmerkwaarde15 IS NOT NULL
THEN
v_srtcontrole_omschrijving:=v_srtcontrole_omschrijving||'-'||rec.ins_kenmerkwaarde15;
END IF;
v_srtcontrole_omschrijving:=v_srtcontrole_omschrijving || '-'|| rec.ins_srtdeel_code;
-- Heb ik deze srtcontrole al
SELECT ins_srtcontrole_key,
ins_srtcontrole_periode,
ins_srtcontrole_materiaal,
ins_srtcontrole_percentage
INTO v_srtcontrole_key,
v_srtcontrole_periode,
v_srtcontrole_materiaal,
v_srtcontrole_percentage
FROM ins_srtcontrole
WHERE ins_srtinstallatie_key = v_srtdeel_key
AND ins_srtcontrole_niveau = 'S'
AND ctr_discipline_key = v_taakcat_key
AND ins_srtcontrole_omschrijving=v_srtcontrole_omschrijving;
-- srtcontrole is er .
-- Wijkt deze af van de srtcontrole op begied van periode, materiaal
-- IF v_srtcontrole_periode <> COALESCE (TO_NUMBER (rec.ins_kenmerkwaarde12),0)
-- OR v_srtcontrole_materiaal <> v_materiaal
-- THEN
INSERT INTO ins_srtcontroledl_xcp
(ins_srtcontrole_key,
ins_deel_key,
ins_srtcontroledl_xcp_aantal,
ins_srtcontroledl_xcp_eenheid,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_materia,
ins_srtcontroledl_xcp_startdat,
ins_srtcontroledl_xcp_aanteh)
VALUES (v_srtcontrole_key,
v_deel_key,
rec.ins_deel_aantal,
4,
COALESCE (TO_NUMBER (rec.ins_kenmerkwaarde12),0),
v_materiaal,
v_taak_afmeld_date,
rec.ins_kenmerkwaarde3)
RETURNING ins_srtcontroledl_xcp_key
INTO v_srtcontroledl_xcp_key;
-- END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_errorhint := 'Bepalen level';
v_srtcontrole_level := 10;
v_srtcontrole_percentage:=0;
v_srtcontrole_omschrijving:= SUBSTR(rec.ins_kenmerkwaarde11,0,50);
IF rec.ins_kenmerkwaarde15 IS NOT NULL
THEN
v_srtcontrole_omschrijving:=v_srtcontrole_omschrijving||'-'||rec.ins_kenmerkwaarde15;
END IF;
v_srtcontrole_omschrijving:=v_srtcontrole_omschrijving || '-'|| rec.ins_srtdeel_code;
IF v_taak_cyclus=0 THEN
v_taak_cyclus:=99;
END IF;
v_errorhint := 'Aanmaken srtcontrole';
fac.imp_writelog (p_import_key,
'W',
v_count||'-'||v_taak_cyclus||-v_taak_nextyear,
v_errorhint);
-- nu moet we een ins_srtcontrole aanmaken
INSERT INTO ins_srtcontrole (
ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ctr_discipline_key,
ins_Srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_level
)
VALUES (
v_srtdeel_key,
'S',
v_srtcontrole_omschrijving,
v_taakcat_key,
v_taak_cyclus,
4, -- Jaarlijks
v_srtcontrole_level
)
RETURNING ins_srtcontrole_key INTO v_srtcontrole_key;
INSERT INTO ins_srtcontroledl_xcp (
ins_srtcontrole_key,
ins_srtcontroledl_xcp_materia,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_eenheid,
ins_srtcontroledl_xcp_aantal,
ins_deel_key,
ins_srtcontroledl_xcp_startdat,
ins_srtcontroledl_xcp_aanteh)
VALUES (v_srtcontrole_key, v_materiaal, COALESCE (TO_NUMBER (rec.ins_kenmerkwaarde12),0),4,rec.ins_deel_aantal, v_deel_key,v_taak_afmeld_date,rec.ins_kenmerkwaarde3)
RETURNING ins_srtcontroledl_xcp_key
INTO v_srtcontroledl_xcp_key;
COMMIT;
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_count||'-'||v_errormsg,
v_errorhint);
END;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_count||'-'||v_errormsg,
v_errorhint);
END;
END LOOP;
END;
/
-- Einde PIVP_UPDATE_ASSETS
CREATE OR REPLACE PROCEDURE PIVP_IMPORT_EXACT_DEBITEUREN (p_import_key NUMBER)
AS
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_import NUMBER;
-- De importvelden:
v_debiteur_code VARCHAR2(100);
v_debiteur_naam VARCHAR2(100);
v_ruimte_nrs VARCHAR2(4000);
v_ruimte_code VARCHAR2(100);
v_cnt_achternaam VARCHAR2(100);
v_cnt_voornaam VARCHAR2(100);
v_cnt_tussenv VARCHAR2(100);
v_cnt_email VARCHAR2(100);
v_straat VARCHAR2(100);
v_postcode VARCHAR2(100);
v_plaats VARCHAR2(100);
v_telefoon VARCHAR2(100);
v_naam VARCHAR2(30);
v_ruimteseperator VARCHAR2(1) :='|';
v_ruimtecounter NUMBER;
v_subcounter NUMBER;
BEGIN
header_is_valid := 0;
v_count_import := 0;
v_subcounter:=0;
DELETE FROM fac_imp_kpn;
DELETE FROM fac_imp_organisatie;
DELETE FROM fac_imp_ext_bedrijf;
-- DELETE FROM fac_imp_csv;
FOR rec IN c
LOOP
v_subcounter:=0;
v_errormsg := 'Fout FETCH te importeren rij';
v_count_import:=v_count_import+1;
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij '||v_count_import;
-- Lees alle veldwaarden
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_debiteur_code);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_debiteur_naam);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_ruimte_nrs);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_cnt_achternaam);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 5, v_cnt_voornaam);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_cnt_tussenv);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, v_cnt_email);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_straat);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_postcode);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_plaats);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 11, v_telefoon);
v_naam:= v_cnt_voornaam||COALESCE(v_cnt_tussenv,' '||v_cnt_tussenv,'')||' '||v_cnt_achternaam;
fac.imp_writelog (p_import_key,
'W',
v_count_import||';'||v_debiteur_code||';'||v_debiteur_naam||';'||v_ruimte_nrs,
v_errorhint);
INSERT INTO fac_imp_kpn (prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_module)
VALUES (v_debiteur_code,
v_debiteur_naam,
'PRS'
);
INSERT INTO fac_imp_organisatie(prs_bedrijf_naam,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_kostenplaats_nr)
VALUES('Huurders',
v_debiteur_code,
v_debiteur_naam,
v_debiteur_code);
INSERT INTO fac_imp_ext_bedrijf(prs_bedrijf_naam,
prs_leverancier_nr,
prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_plaats,
prs_bedrijf_telefoon,
prs_bedrijf_contact_persoon,
prs_bedrijf_email,
prs_bedrijf_huurder)
VALUES(v_debiteur_naam,
v_debiteur_code,
v_straat,
v_postcode,
v_plaats,
v_telefoon,
v_naam,
v_cnt_email,
1);
-- hoeveel ruimtes hebben we in de lijst staan
/* SELECT (LENGTH(v_ruimte_nrs) - NVL(LENGTH(REPLACE(v_ruimte_nrs,v_ruimteseperator)),0)) / LENGTH(v_ruimteseperator)
INTO v_ruimtecounter
FROM dual;
IF v_ruimtecounter=0 AND LENGTH(v_ruimte_nrs)>0 THEN
-- we hebben een ruimte en er ook maar 1.
INSERT INTO FAC_IMP_CSV (FAC_IMPORT_KEY,
FAC_IMP_CSV_COL01,
FAC_IMP_CSV_COL02,
FAC_IMP_CSV_COL03,
FAC_IMP_CSV_INDEX)
VALUES (p_import_key,
v_debiteur_code,
v_ruimte_nrs,
v_debiteur_naam,
v_count_import);
ELSE
v_subcounter:=1;
v_ruimtecounter:=v_ruimtecounter+1; -- we moeten er 1 bij optellen ander missen we de laatste ruimte
WHILE (v_subcounter<=v_ruimtecounter)
LOOP
fac.imp_getfield_nr (v_ruimte_nrs, v_ruimteseperator, v_subcounter, v_ruimte_code);
INSERT INTO FAC_IMP_CSV (FAC_IMPORT_KEY,
FAC_IMP_CSV_COL01,
FAC_IMP_CSV_COL02,
FAC_IMP_CSV_COL03,
FAC_IMP_CSV_INDEX)
VALUES (p_import_key,
v_debiteur_code,
v_ruimte_code,
v_debiteur_naam,
v_count_import);
v_subcounter:=v_subcounter+1;
END LOOP;
END IF;
*/
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE PIVP_UPDATE_EXACT_DEBITEUREN (p_import_key NUMBER)
AS
CURSOR huurders IS
SELECT *
FROM fac_imp_csv
WHERE fac_import_key=p_import_key;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_gebouw_code VARCHAR2(12);
v_ruimte_nr VARCHAR2(20);
v_ruimte_key NUMBER;
v_afdeling_key NUMBER;
v_ruimteafdeling_key NUMBER;
v_huurder_key NUMBER;
BEGIN
fac_update_kpn(p_import_key);
fac_update_organisatie(p_import_key);
fac_update_ext_bedrijf(p_import_key);
/* FOR rec in huurders
LOOP
v_huurder_key:=-1;
BEGIN
v_errormsg:='Fout bij ophalen ruimte '||rec.FAC_IMP_CSV_COL02;
v_gebouw_code:=SUBSTR(rec.FAC_IMP_CSV_COL02,1,INSTR(rec.FAC_IMP_CSV_COL02,'-')-1);
v_ruimte_nr := SUBSTR(rec.FAC_IMP_CSV_COL02,INSTR(rec.FAC_IMP_CSV_COL02,'-')+1,LENGTH(rec.FAC_IMP_CSV_COL02));
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_onroerendgoed_gegevens
WHERE alg_ruimte_nr=v_ruimte_nr
AND alg_gebouw_code=v_gebouw_code;
v_errormsg:='Fout bij ophalen afdeling '||rec.FAC_IMP_CSV_COL01;
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_naam=rec.fac_imp_csv_col01;
BEGIN
v_errormsg:='Fout bij ophalen ruimteafdeling bezetting';
-- Eerst kijken of deze afdeling/debiteur al aan de ruimte is gekoppeld
SELECT prs_ruimteafdeling_key
INTO v_ruimteafdeling_key
FROM prs_ruimteafdeling
WHERE prs_afdeling_key=v_afdeling_key
AND alg_ruimte_key=v_ruimte_key
AND prs_ruimteafdeling_verwijder IS NULL;
EXCEPTION WHEN NO_DATA_FOUND THEN
INSERT INTO prs_ruimteafdeling(PRS_AFDELING_KEY,
ALG_RUIMTE_KEY,
PRS_RUIMTEAFDELING_BEZETTING)
VALUES (v_afdeling_key,
v_ruimte_key,
100);
END;
SELECT fac_usrdata_key
INTO v_huurder_key
FROM pivp_v_huurdersbedrijf
WHERE fac_usrdata_omschr = rec.fac_imp_csv_col03;
IF v_huurder_key>0 THEN
alg.upsertkenmerk(1021,v_ruimte_key,v_huurder_key);
ELSE
fac.imp_writelog (p_import_key,
'W',
'Huurder '|| rec.fac_imp_csv_col03||' niet kunnen vinden als leveranciers/huurders' ,
'niet gevonden');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'niet gevonden');
END;
END LOOP;
*/
END;
/
-- EINDE IMPORT EXACT_DEBITEUREN
CREATE OR REPLACE PROCEDURE PIVP_IMPORT_EXACT_RUIMTES(p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_import NUMBER;
-- De importvelden:
v_huurder_code VARCHAR2(100);
v_huurder_codeoud VARCHAR2(100);
v_huurder_naam VARCHAR2(100);
v_locatie_code VARCHAR2(10);
v_gebouw_code VARCHAR2(10);
v_verdieping_volgnr VARCHAR2(10);
v_verdieping_nr NUMBER;
v_ruimte_nr VARCHAR2(100);
v_ruimte_omsc VARCHAR2(30);
v_bvo VARCHAR2(10);
v_bvo_nr NUMBER;
v_km_verhuurbaar VARCHAR2(20);
v_srtruimte VARCHAR2(50);
v_km_vvo VARCHAR2(10);
v_km_verhuurtype VARCHAR2(10);
v_verhuurtype VARCHAR2(60);
v_ruimtecounter NUMBER;
v_subcounter NUMBER;
v_huurder_kenm_key NUMBER;
v_vvo_kenm_key NUMBER;
v_hrTp_kenm_key NUMBER;
v_vhrbr_kenm_key NUMBER;
BEGIN
header_is_valid := 0;
v_count_import := 0;
v_subcounter:=0;
DELETE FROM fac_imp_onrgoed2;
-- SELECT alg_kenmerk_key INTO v_huurder_kenm_key FROM alg_kenmerk WHERE alg_kenmerk_upper='HUURDER';
-- SELECT alg_kenmerk_key INTO v_vvo_kenm_key FROM alg_kenmerk WHERE alg_kenmerk_upper='VVO';
SELECT alg_kenmerk_key INTO v_hrTp_kenm_key FROM alg_kenmerk WHERE alg_kenmerk_upper='VERHUURTYPE';
SELECT alg_kenmerk_key INTO v_vhrbr_kenm_key FROM alg_kenmerk WHERE alg_kenmerk_upper='VERHUURBAAR';
FOR rec IN c
LOOP
v_errormsg := 'Fout FETCH te importeren rij';
v_count_import:=v_count_import+1;
IF v_count_import>1 THEN
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij '||v_count_import;
-- Lees alle veldwaarden
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_locatie_code);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_gebouw_code);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_verdieping_volgnr);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_ruimte_nr);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 5, v_ruimte_omsc);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_bvo);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, v_huurder_naam);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_huurder_codeoud);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_huurder_code);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_km_verhuurbaar);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 11, v_srtruimte);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 13, v_km_vvo);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 15, v_km_verhuurtype);
v_ruimte_nr := SUBSTR(v_ruimte_nr, INSTR(v_ruimte_nr,'-')+1, LENGTH(v_ruimte_nr));
v_verdieping_nr := fac.safe_to_number(v_verdieping_volgnr);
v_bvo_nr := fac.safe_to_number(REPLACE(v_bvo,',','.'));
BEGIN
SELECT ud.fac_usrdata_omschr
INTO v_verhuurtype
FROM alg_kenmerk k, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
WHERE k.alg_kenmerk_key = v_hrTp_kenm_key
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key = ud.fac_usrtab_key
AND UPPER (TRIM (ud.fac_usrdata_CODE)) = UPPER (v_km_verhuurtype);
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_verhuurtype:=null;
END;
/* IF SUBSTR(v_huurder_codeoud,1,2)='DB' THEN
BEGIN
UPDATE prs_bedrijf pb
SET pb.prs_leverancier_nr=v_huurder_code
WHERE pb.prs_bedrijf_naam_upper = UPPER(v_huurder_naam)
AND pb.prs_leverancier_nr=v_huurder_codeoud;
EXCEPTION WHEN NO_DATA_FOUND THEN
null;
END;
END IF;*/
INSERT INTO fac_imp_onrgoed2 (alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_srtruimte_omschrijving,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
alg_kenmerkwaarde1,
alg_kenmerkwaarde2,
alg_kenmerkwaarde3
-- alg_kenmerkwaarde4
)
VALUES(v_locatie_code,
v_gebouw_code,
v_verdieping_nr,
v_srtruimte,
v_ruimte_nr,
v_ruimte_omsc,
v_bvo_nr,
DECODE(v_km_verhuurbaar, NULL, NULL, v_vhrbr_kenm_key||'='||v_km_verhuurbaar),
v_km_vvo,
DECODE(v_km_verhuurtype, NULL, NULL, v_hrTp_kenm_key||'='||v_verhuurtype)
-- DECODE(v_huurder_naam, NULL, NULL, v_huurder_kenm_key||'='||v_huurder_naam)
);
END IF;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE PIVP_UPDATE_EXACT_RUIMTES(p_import_key IN NUMBER)
AS
CURSOR C
IS
SELECT a.alg_ruimte_key, fio.alg_kenmerkwaarde2
FROM fac_imp_onrgoed2 fio, alg_v_allonrgoed_gegevens a
WHERE a.alg_ruimte_nr=fio.alg_ruimte_nr
AND a.alg_gebouw_code = fio.alg_gebouw_code
AND a.alg_verdieping_code=to_char(fio.alg_verdieping_volgnr)
AND a.alg_ruimte_nr NOT LIKE '_000%'
AND fio.alg_kenmerkwaarde2 IS NOT NULL;
BEGIN
fac_update_onrgoed2(p_import_key);
FOR rec in c
LOOP
-- Nu gaan we de VVO kolom data wegschrijvene in de alg_ruimte_opp_alt1 kolom
-- we gaan gelijk de extrensync date zetten zodat we weten bij mutatie welke ruimtes er geexporteerd moeten worden naare exact toe
UPDATE alg_ruimte
SET alg_ruimte_opp_alt1= fac.safe_to_number(REPLACE(rec.alg_kenmerkwaarde2,',','.')),
alg_ruimte_externsyncdate=SYSDATE
WHERE alg_ruimte_key=rec.alg_ruimte_key
AND alg_ruimte_verwijder IS NULL;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE PIVP_IMPORT_EXACT_RUIMTEHUURD(p_import_key NUMBER)
AS
BEGIN
fac_import_genericcsv(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE PIVP_UPDATE_EXACT_RUIMTEHUURD(p_import_key NUMBER)
AS
CURSOR csv IS
SELECT *
FROM fac_imp_csv
WHERE fac_import_key=p_import_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_ruimte_nr VARCHAR2(100);
v_gebouw_code VARCHAR2(100);
v_debiteur VARCHAR2(100);
v_ruimte_key NUMBER;
v_huurder_key NUMBER;
v_huurder_naam VARCHAR2(60);
v_huidige_huurder_nr VARCHAR2(20);
v_huidige_huurder_naam VARCHAR2(60);
v_tracking_msg VARCHAR2(100);
v_counter NUMBER;
v_insert_counter NUMBER;
BEGIN
v_counter:=0;
v_insert_counter:=0;
FOR rec IN csv
LOOP
IF UPPER(rec.fac_imp_csv_col01)<>'RUIMTE' THEN
v_counter:=v_counter+1;
v_gebouw_code:=SUBSTR(rec.fac_imp_csv_col01,1,INSTR(rec.fac_imp_csv_col01,'-')-1);
v_ruimte_nr := SUBSTR(rec.fac_imp_csv_col01,INSTR(rec.fac_imp_csv_col01,'-')+1,LENGTH(rec.fac_imp_csv_col01));
v_debiteur := rec.fac_imp_csv_col02;
BEGIN
v_errorhint:='Ruimte '||v_ruimte_nr||'in gebouw '||v_gebouw_code||' niet gevonden';
v_errormsg:='Ruimte niet gevonden';
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_onroerendgoed_gegevens
WHERE alg_ruimte_nr=v_ruimte_nr
AND alg_gebouw_code=v_gebouw_code;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_ruimte_key:=-1;
fac.imp_writelog (p_import_key,
'W',
v_errorhint ,
v_errormsg);
END;
IF v_ruimte_key>0 THEN
BEGIN
v_errorhint:='Huurder '||v_debiteur||' niet gevonden';
v_errormsg:='Huurder niet gevonden';
SELECT prs_bedrijf_key , p.prs_bedrijf_naam
INTO v_huurder_key , v_huurder_naam
FROM prs_bedrijf p
WHERE p.prs_leverancier_nr = v_debiteur
AND p.prs_bedrijf_huurder=1
AND p.prs_bedrijf_verwijder IS NULL;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_huurder_key:=-1;
fac.imp_writelog (p_import_key,
'W',
v_errorhint ,
v_errormsg);
END;
END IF;
IF v_huurder_key>0 AND v_ruimte_key>0
THEN
BEGIN
SELECT p.prs_leverancier_nr, p.prs_bedrijf_naam
INTO v_huidige_huurder_nr, v_huidige_huurder_naam
FROM alg_v_onroerendgoed_gegevens alg, alg_onrgoedkenmerk aok, prs_bedrijf p
WHERE alg.alg_ruimte_key=v_ruimte_key
AND aok.alg_onrgoed_key = alg.alg_ruimte_key
AND aok.alg_kenmerk_key=1021
AND p.prs_bedrijf_key=aok.alg_onrgoedkenmerk_waarde;
IF v_debiteur<>v_huidige_huurder_nr THEN
v_tracking_msg :='IMP: Huurder gewijzigd van '||v_huidige_huurder_naam||'('|| v_huidige_huurder_nr||')'||' naar '||v_huurder_naam||'('||v_debiteur||')';
END IF;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_tracking_msg :='IMP: Nieuwe huurder '||v_huurder_naam||'('||v_debiteur||')';
END;
END IF;
IF v_ruimte_key>0 AND v_huurder_key>0 THEN
alg.upsertkenmerk(1021,v_ruimte_key,v_huurder_key);
fac.trackaction ('ALGRUP', v_ruimte_key, 3, SYSDATE,
v_tracking_msg);
v_insert_counter:=v_insert_counter+1;
END IF;
fac.imp_writelog (p_import_key,
'W',
'Regels ingelezen :'||v_counter||' waarvan '||v_insert_counter||' geupdate',
v_errormsg);
END IF;
END LOOP;
DELETE FROM fac_imp_csv WHERE fac_import_key=p_import_key;
END;
/
CREATE OR REPLACE PROCEDURE PIVP_IMPORT_RELATIES(p_import_key IN NUMBER)
AS
BEGIN
fac_import_ext_bedrijf(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE PIVP_UPDATE_RELATIES(p_import_key IN NUMBER)
AS
CURSOR sel IS
SELECT * from fac_imp_ext_bedrijf;
v_prs_bedrijf_key NUMBER;
v_kenmerk_key NUMBER :=0;
BEGIN
fac_update_ext_bedrijf(p_import_key);
SELECT prs_kenmerk_key into v_kenmerk_key FROM prs_kenmerk WHERE prs_kenmerk_upper='EXACT ID' AND prs_kenmerk_niveau='B' AND prs_kenmerk_verwijder IS NULL;
IF v_kenmerk_key >0
THEN
FOR rec IN sel
LOOP
BEGIN
v_prs_bedrijf_key :=0;
SELECT b.prs_bedrijf_key INTO v_prs_bedrijf_key FROM prs_bedrijf b WHERE b.PRS_LEVERANCIER_NR = rec.PRS_LEVERANCIER_NR;
INSERT INTO prs_kenmerklink(prs_link_key,
prs_kenmerklink_niveau,
prs_kenmerk_key,
prs_kenmerklink_waarde)
VALUES(v_prs_bedrijf_key,
'B',
v_kenmerk_key,
rec.PRS_LEVERANCIER_NR);
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog (p_import_key,
'W',
'Relatie niet gevonden',
'relatieNr :'||rec.prs_leverancier_nr);
END;
END LOOP;
ELSE
fac.imp_writelog (p_import_key,
'W',
'Exact ID kenmkerk niet gevonden',
'Exact ID kenmkerk niet gevonden');
END IF;
END;
/
CREATE OR REPLACE VIEW PIVP_V_CATERINGRESER
AS
SELECT * FROM (
SELECT DISTINCT(rrr.res_rsv_ruimte_key) rrr_key,
rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_aanmaak aanmk_datum,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 117) last_upd,
rrr.res_rsv_ruimte_externsyncdate last_export,
rrr.res_rsv_ruimte_verwijder verw_datum,
COALESCE(rer.res_ruimte_friendlyname,alg.alg_ruimte_nr) ruimte_nr,
(SELECT prs_perslid_externid
FROM prs_perslid
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key) besteller,
(SELECT DISTINCT lev.PRS_BEDRIJF_EMAIL
FROM res_rsv_artikel rar,
res_artikel art,
res_disc_params dsp,
prs_bedrijf lev
WHERE rar.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND art.res_artikel_key = rar.res_artikel_key
AND dsp.res_ins_discipline_key =
art.res_discipline_key
AND lev.prs_bedrijf_key = dsp.prs_bedrijf_key) cateraar,
rrr.RES_RSV_RUIMTE_VAN datum_van,
rrr.RES_RSV_RUIMTE_TOT datum_tot,
rrr.res_rsv_ruimte_omschrijving oms,
rrr.res_rsv_ruimte_bezoekers aantal,
alg.alg_locatie_code locatie_code,
'ruimte' soort,
ros.res_opstelling_omschrijving opstelling,
rrr.res_status_fo_key fo_status,
rrr.res_rsv_ruimte_dirtlevel dirtlevel
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_ruimte_opstelling rop,
res_opstelling ros,
res_ruimte rer,
res_alg_ruimte rarm,
alg_v_ruimte_gegevens_all alg
WHERE rrr.res_status_bo_key = 2
AND rra.RES_RSV_RUIMTE_KEY = rrr.RES_RSV_RUIMTE_KEY
AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
AND ros.res_opstelling_key = rop.res_opstelling_key
AND rer.res_ruimte_key = rop.res_ruimte_key
AND rarm.res_ruimte_key = rer.res_ruimte_key
AND alg.alg_ruimte_key = rarm.alg_ruimte_key
UNION ALL
SELECT DISTINCT(rrr.res_rsv_ruimte_key) rrr_key,
rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_aanmaak aanmk_datum,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 117) last_upd,
rrr.res_rsv_ruimte_externsyncdate last_export,
rrr.res_rsv_ruimte_verwijder verw_datum,
alg.alg_ruimte_nr ruimte_nr,
(SELECT pa.PRS_PERSLID_EMAIL
FROM PRS_V_PERSLID_GEGEVENS pa
WHERE pa.prs_perslid_key = rrr.res_rsv_ruimte_contact_key) besteller,
(SELECT DISTINCT lev.prs_bedrijf_email
FROM res_rsv_artikel rar,
res_artikel art,
res_disc_params dsp,
prs_bedrijf lev
WHERE rar.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND art.res_artikel_key = rar.res_artikel_key
AND dsp.res_ins_discipline_key =
art.res_discipline_key
AND lev.prs_bedrijf_key = dsp.prs_bedrijf_key) cateraar,
rrr.RES_RSV_RUIMTE_VAN datum_van,
rrr.RES_RSV_RUIMTE_TOT datum_tot,
rrr.res_rsv_ruimte_omschrijving oms,
rrr.res_rsv_ruimte_bezoekers aantal,
alg.alg_locatie_code locatie_code,
'losse-catering' soort,
'N.V.T.' opstelling,
rrr.res_status_fo_key fo_status,
0 dirtlevel
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
alg_v_ruimte_gegevens_all alg
WHERE rrr.res_status_fo_key = 2
AND rra.RES_RSV_RUIMTE_KEY = rrr.RES_RSV_RUIMTE_KEY
AND alg.alg_ruimte_key = rrr.alg_ruimte_key
ORDER BY reservering_key)
WHERE aanmk_datum > SYSDATE-2/24
OR last_upd>aanmk_datum AND last_upd > SYSDATE-2/24;
CREATE OR REPLACE VIEW PIVP_V_NOTI_CATERAAR
(
sender,
receiver,
text,
code,
key,
xkey,
xemail,
xmobile
)
AS
SELECT NULL,
NULL,
'Er is een '||
CASE WHEN last_upd > aanmk_datum THEN 'gewijzigde'
ELSE 'nieuwe' END
||' Catering aanvraag voor '||datum_van||', reservering numer '||reservering_key,
'CUST01',
reservering_key,
rrr_key,
cateraar,
NULL
FROM PIVP_V_CATERINGRESER
WHERE TRUNC(datum_van) > TRUNC(SYSDATE)
AND (AANMK_DATUM> SYSDATE-2/24 OR LAST_UPD> SYSDATE-2/24);
-- Registratie nieuwe gebruiker in afgelopen dag
CREATE OR REPLACE VIEW PIVP_V_NIEUWEGEBRUIKERS
(
perslid_key,
Naam,
Voornaam,
Email,
aanmaakdatum
)
AS
SELECT p.prs_perslid_key,p.prs_perslid_naam, p.prs_perslid_voornaam, prs_perslid_email, prs_perslid_aanmaak
FROM prs_perslid p, fac_gebruikersgroep fg, fac_groep fgr
WHERE p.prs_perslid_aanmaak> SYSDATE-1
AND p.prs_perslid_verwijder IS NULL
AND fg.prs_perslid_key = p.prs_perslid_key
AND fgr.fac_groep_key=fg.fac_groep_key
AND UPPER(fgr.fac_groep_omschrijving)='NIEUWEHUURDER';
CREATE OR REPLACE VIEW PIVP_V_NOTI_NIEUWEGEBRUIKER
(
sender,
receiver,
text,
code,
key,
xkey,
xemail,
xmobile
)
AS
SELECT NULL,
112, -- REANNE
'Gebruiker '||Naam||', '||Voornaam||' heeft zich op '||TO_CHAR(aanmaakdatum,'DD-MM-YYYY')||' geregistreerd op pivp.facilitor.nl',
'CUST02',
perslid_key,
NULL,
NULL,
NULL
FROM pivp_v_nieuwegebruikers
UNION ALL
SELECT NULL,
110, -- JOHN TIESSENS
'Gebruiker '||Naam||', '||Voornaam||' heeft zich op '||TO_CHAR(aanmaakdatum,'DD-MM-YYYY')||' geregistreerd op pivp.facilitor.nl',
'CUST02',
perslid_key,
NULL,
NULL,
NULL
FROM pivp_v_nieuwegebruikers;
CREATE OR REPLACE VIEW PIVP_V_MLDEXPORT
AS
SELECT m.mld_melding_key melding_key,
msm.mld_stdmelding_omschrijving stdmelding,
md.ins_discipline_omschrijving vagroep,
isd.ins_srtdiscipline_omschrijving vakgroepType,
m.mld_melding_onderwerp onderwerp,
m.mld_melding_datum aanmaakdatum,
(SELECT MAX(ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.fac_srtnotificatie_key=47 -- MLDAFM
AND ft.fac_tracking_refkey=m.mld_melding_key) afmelddatum,
p.prs_perslid_key aanvrager,
p.prs_afdeling_key bedrijf_key,
pa.prs_afdeling_omschrijving bedrijf_naam,
pa.prs_afdeling_naam debiteurnr,
mkm.mld_kenmerkmelding_waarde factuurbedrag,
SUBSTR(md.ins_discipline_omschrijving,1,6) vakgroep_code,
(SElECT SUBSTR(d.FAC_USRDATA_OMSCHR,0,6)
FROM mld_kenmerk mk1, mld_kenmerkmelding mkm1, pivp_v_diensten d
WHERE UPPER(mk1.mld_kenmerk_omschrijving)='DIENSTEN CODE'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key
AND d.fac_usrdata_key = fac.safe_to_number(mkm1.mld_kenmerkmelding_waarde)) dienstencode,
(SElECT mkm1.MLD_KENMERKMELDING_WAARDE
FROM mld_kenmerk mk1, mld_kenmerkmelding mkm1
WHERE UPPER(mk1.mld_kenmerk_omschrijving)='UW REFERENTIE'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key) ponummer,
(SElECT mkm1.MLD_KENMERKMELDING_WAARDE
FROM mld_kenmerk mk1, mld_kenmerkmelding mkm1
WHERE UPPER(mk1.mld_kenmerk_omschrijving)='FACTUUR INFO'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key) factuurinfo,
(SElECT mkm1.MLD_KENMERKMELDING_WAARDE
FROM mld_kenmerk mk1, mld_kenmerkmelding mkm1
WHERE UPPER(mk1.mld_kenmerk_omschrijving)='P2P ORDERNR'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key) p2pordernr
FROM mld_melding m ,
prs_perslid p,
prs_afdeling pa,
mld_stdmelding msm,
mld_discipline md,
ins_srtdiscipline isd ,
mld_kenmerkmelding mkm,
mld_kenmerk mk
WHERE m.mld_melding_status=5
AND m.prs_perslid_key=p.prs_perslid_key
AND pa.prs_afdeling_key=p.prs_afdeling_key
AND pa.prs_bedrijf_key <> (SELECT prs_bedrijf_key -- alleen aanvrage die door niet PP medewrkers zijn gedaan
FROM prs_bedrijf pb
WHERE pb.prs_bedrijf_naam_upper='PIVOTPARK')
AND msm.mld_stdmelding_key = m.mld_stdmelding_key
AND md.ins_discipline_key= msm.mld_ins_discipline_key
AND isd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
-- AND m.mld_melding_einddatum BETWEEN TO_DATE('01-08-2022','dd-mm-yyyy') AND SYSDATE
AND UPPER(mk.mld_kenmerk_omschrijving)='FACTUUR BEDRAG'
AND mkm.mld_melding_key = m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND fac.safe_to_number(mkm.mld_kenmerkmelding_waarde)>0
AND m.mld_melding_externsyncdate IS NULL
ORDER BY p.prs_afdeling_key;
CREATE OR REPLACE VIEW PIVP_V_CONTACTEXPORT
AS
SELECT mld_melding_key,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='VOORNAAM PASHOUDER'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key) voornaam,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='TUSSENVOEGSEL PASHOUDER'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key) tussenvoegsel,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='ACHTERNAAM PASHOUDER'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key) achternaam,
pa.prs_afdeling_naam debiteurnr,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='BEDRIJFSMAILADRES PASHOUDER'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key) email,
(SELECT COALESCE(mkm.mld_kenmerkmelding_waarde,'-')
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='FUNCTIE'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key) Functie,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='AFDELING'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key) afdeling,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm , mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='ALGEMEEN TELEFOONNR'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key) telefoonnummer,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='MOBIEL NR'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key) mobiel,
(SELECT fu.fac_usrdata_omschr
FROM mld_kenmerkmelding mkm, mld_kenmerk mk, fac_usrdata fu
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='VOORKEURSTAAL'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key
AND fu.fac_usrdata_key=mkm.mld_kenmerkmelding_waarde) voorkeurstaal,
DECODE((SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='CXO'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key),'1','Yes','','No') CxO,
DECODE((SELECT mkm.MLD_KENMERKMELDING_WAARDE
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='EHS'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key),'1','Yes','','No') EHS,
DECODE((SELECT mkm.MLD_KENMERKMELDING_WAARDE
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='OPERATIONS'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key),'1','Yes','','No') operations,
DECODE((SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='SECRETARIAAT'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key),'1','Yes','','No') Secr,
DECODE((SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='MEDEWERKER'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key),'1','Yes','','No') medw,
DECODE((SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='COMMUNITY NEWSLETTER'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key),61,'Yes','No') comm_letter,
DECODE((SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='CORPORATE NEWSLETTER'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key),61,'Yes','No') corp_letter,
DECODE((SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=mk.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='ACTIVITEITEN NEWSLETTER'
AND mk.mld_stdmelding_key=m.mld_stdmelding_key),61,'Yes','No') act_letter
FROM mld_melding m, mld_stdmelding msm, prs_perslid p, prs_afdeling pa
WHERE m.mld_stdmelding_key= msm.mld_stdmelding_key
AND UPPER(msm.mld_stdmelding_omschrijving)='TOEGANGSPAS VOOR BEWONER'
---m.mld_stdmelding_key=1421 -- A=1421 O/P=87
AND m.mld_melding_status=5 -- Melding moet afgemeld zijn
AND m.mld_melding_externsyncdate IS NULl
AND p.prs_perslid_key=m.prs_perslid_key
AND pa.prs_afdeling_key = p.prs_afdeling_key;
-- Thema voor huruders via kenmerk aam ruimte
CREATE OR REPLACE VIEW PIVP_V_THEMA_HUURDERS
(
alg_ruimte_key,
waarde
)
AS
SELECT r.alg_ruimte_key,
(SELECT PRS_LEVERANCIER_NR
FROM prs_bedrijf
WHERE prs_bedrijf_key=aok.ALG_ONRGOEDKENMERK_WAARDE) waarde
FROM alg_ruimte r,
alg_kenmerk ak,
alg_onrgoedkenmerk aok
WHERE ak.alg_kenmerk_omschrijving='Huurder'
AND ak.alg_kenmerk_niveau='R'
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
AND r.alg_ruimte_key=aok.alg_onrgoed_key(+);
CREATE OR REPLACE VIEW PIVP_V_ZAALMUT
AS
SELECT rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rr.res_ruimte_nr,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
ft.fac_tracking_oms,
ft.fac_tracking_datum
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
fac_tracking ft
WHERE rrr.res_status_bo_key=2
AND rrr.res_rsv_ruimte_van > SYSDATE
AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rr.res_ruimte_key IN (45,61)
AND ft.fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND ft.fac_srtnotificatie_key = 117
AND ft.fac_tracking_datum> SYSDATE-1;
CREATE OR REPLACE VIEW PIVP_V_ZAALRESREVERING
AS
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.RES_RSV_RUIMTE_VOLGNR,
rr.res_ruimte_nr,
TRUNC(rrr.res_rsv_ruimte_van) datum,
TO_CHAR(rrr.res_rsv_ruimte_van,'HH24:MI') van,
TO_CHAR(rrr.res_rsv_ruimte_tot,'HH24:MI') tot,
RES.GETRESRUIMTEPRIJS(rr.res_ruimte_key,rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot) prijs,
p.prs_perslid_naam,
pa.prs_afdeling_omschrijving,
pa.prs_afdeling_naam
FROM res_rsv_ruimte rrr,
res_activiteit ra,
res_activiteitdiscipline rad,
prs_perslid p,
prs_afdeling pa,
res_ruimte_opstelling rro,
res_ruimte rr
WHERE rrr.res_status_bo_key=5
AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND ra.res_activiteit_key=10
AND ra.res_activiteit_key=rrr.res_activiteit_key
AND rad.res_activiteit_key=ra.res_activiteit_key
AND rad.res_discipline_key=21 -- alleen betaalde zalen O=21 A=281, P=21
AND p.prs_perslid_key=rrr.res_rsv_ruimte_host_key
AND pa.prs_afdeling_key=p.prs_afdeling_key
AND pa.prs_bedrijf_key<>81 -- PIVP uitsluiten O=81, P=81
AND res.getresruimteprijs(rr.res_ruimte_key,rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot) > 0;
CREATE OR REPLACE VIEW PIVP_V_RESEXPORT
(
rrr_key,
reservering_nr,
reservering_volgNr,
ruimte_nr,
res_rsv_ruimte_van,
datum,
van,
tot,
bedrag,
reserveerder,
bedrijf_naam,
debiteurnr,
verwijderdatum,
externsyncdate,
ponummer
)
AS
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.RES_RSV_RUIMTE_VOLGNR,
rr.res_ruimte_nr,
rrr.res_rsv_ruimte_van,
TRUNC(rrr.res_rsv_ruimte_van) datum,
TO_CHAR(rrr.res_rsv_ruimte_van,'HH24:MI') van,
TO_CHAR(rrr.res_rsv_ruimte_tot,'HH24:MI') tot,
COALESCE(rrr.res_rsv_ruimte_totaal,res.getresruimteprijs(rr.res_ruimte_key,rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot)) prijs,
-- res.getresruimteprijs(rr.res_ruimte_key,rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot) org_prijs,
p.prs_perslid_naam,
pa.prs_afdeling_omschrijving,
pa.prs_afdeling_naam,
rrr.res_rsv_ruimte_verwijder,
rrr.res_rsv_ruimte_externsyncdate,
(SELECT rkw.res_kenmerkreservering_waarde
FROM res_srtkenmerk rs, res_kenmerk rk, res_kenmerkwaarde rkw
WHERE rs.res_srtkenmerk_upper='PONUMMER'
AND rk.res_srtkenmerk_key=rs.res_srtkenmerk_key
AND rkw.res_kenmerk_key=rk.res_kenmerk_key
AND rkw.res_rsv_ruimte_key=rrr.res_rsv_ruimte_key) ponummer
FROM res_rsv_ruimte rrr,
res_activiteit ra,
res_activiteitdiscipline rad,
res_discipline rdi,
prs_perslid p,
prs_afdeling pa,
prs_bedrijf pb,
res_ruimte_opstelling rro,
res_ruimte rr
WHERE rrr.res_status_bo_key=5
AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND ra.res_activiteit_key=10
AND ra.res_activiteit_key=rrr.res_activiteit_key
AND rad.res_activiteit_key=ra.res_activiteit_key
AND rdi.ins_discipline_key = rad.res_discipline_key
AND UPPER(rdi.ins_discipline_omschrijving)='PIVOT PARK (BETAALDE ZALEN)' -- alleen betaalde zalen
AND p.prs_perslid_key=rrr.res_rsv_ruimte_host_key
AND pa.prs_afdeling_key=p.prs_afdeling_key
AND pa.prs_bedrijf_key=pb.prs_bedrijf_key
AND pb.prs_bedrijf_naam_upper<>'PIVOTPARK' -- PIVP uitsluiten voor facturatie
AND res.getresruimteprijs(rr.res_ruimte_key,rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot) > 0;
CREATE OR REPLACE VIEW PIVP_V_RAP_ZAALRES
( rrr_key,
reservering_nr,
volg_nr,
ruimte_nr,
catalogus,
datum_van,
datum_tot,
prijs,
maand,
duur,
aanvrager,
bedrijfsonderdeel,
debieteur,
bedrijfsnaam,
bo_status,
beschikbaar )
AS
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rr.res_ruimte_nr,
rd.ins_discipline_omschrijving,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
res.getdeelresprijs(rrr.res_rsv_ruimte_key) prijs,
to_char(rrr.res_rsv_ruimte_van,'MM-YYYY') maand,
(rrr.res_rsv_ruimte_tot-rrr.res_rsv_ruimte_van)*24 duur,
(SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames_all where prs_perslid_key=p.prs_perslid_key) aanvrager,
pb.prs_bedrijf_naam,
pa.prs_afdeling_naam,
pa.prs_afdeling_omschrijving,
rsb.res_status_bo_omschrijving,
10 uur_beschikbaar
FROM res_rsv_ruimte rrr,
res_activiteit ra,
res_ruimte_opstelling rro,
res_ruimte rr,
res_discipline rd,
prs_perslid p,
prs_afdeling pa,
prs_bedrijf pb,
res_status_bo rsb
where rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_status_fo_key IN (1,2)
AND p.prs_perslid_key = rrr.res_rsv_ruimte_host_key
AND pa.prs_afdeling_key = p.prs_afdeling_key
AND pb.prs_bedrijf_key = pa.prs_bedrijf_key
AND ra.res_activiteit_key = rrr.res_activiteit_key
AND ra.res_activiteit_key =10 -- alleen vergaderingen
AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rd.ins_discipline_key=rr.res_discipline_key
AND rsb.res_status_bo_key = rrr.res_status_bo_key;
CREATE OR REPLACE VIEW PIVP_V_RAP_ZAALBEZETTING
(
ruimte_nr,
maand,
sort_datum,
percentage
)
AS
SELECT ruimte_nr,
maand,
to_char(datum_van,'YYYY-MM'),
SUM(duur)/SUM(beschikbaar)*100 percentage
FROM pivp_v_rap_zaalres
WHERE UPPER(bedrijfsonderdeel) NOT like '%PIVOTPARK%'
GROUP by ruimte_nr, maand, datum_van;
CREATE OR REPLACE VIEW PIVP_V_RAP_ZAALBEZETTING_ALL
(
ruimte_nr,
maand,
sort_datum,
percentage
)
AS
SELECT ruimte_nr,
maand,
to_char(datum_van,'YYYY-MM'),
SUM(duur)/SUM(beschikbaar)*100 percentage
FROM pivp_v_rap_zaalres
GROUP by ruimte_nr, maand, datum_van;
CREATE OR REPLACE VIEW PIVP_V_RAP_KLACHTEN
AS
SELECT NVL(m.mld_melding_start_key,m.mld_melding_key) hoofd_key,
m.mld_melding_key,
DECODE(UPPER(ms.mld_stdmelding_omschrijving), 'PREVENTIEVE MAATREGEL','MAATREGEL','HOOFDMELDING') soort,
m.mld_melding_onderwerp,
m.mld_melding_omschrijving,
TO_CHAR(m.mld_melding_datum,'DD-MM-YYYY') mld_melding_datum,
TO_CHAR(COALESCE(m.mld_melding_einddatum,m.MLD_MELDING_EINDDATUM_STD),'DD-MM-YYYY') mld_plandatum,
TO_CHAR(m.mld_melding_locked_date,'DD-MM-YYYY') mld_afmelddatum,
(SELECT s.mld_statuses_omschrijving
FROM mld_statuses s
WHERE s.mld_statuses_key= m.mld_melding_status) mld_status,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE p.prs_perslid_key = m.mld_melding_behandelaar_key) behandelaar,
(SELECT SUBSTR(p.prs_perslid_voornaam,1,1)||SUBSTR(p.prs_perslid_naam,1,1)
FROM prs_perslid p
WHERE p.prs_perslid_key=m.mld_melding_behandelaar_key) initialen,
(SELECT COALESCE(p.prs_perslid_telefoonnr, p.prs_perslid_mobiel)
FROM prs_perslid p
WHERE p.prs_perslid_key = m.mld_melding_behandelaar_key) beh_telefoon,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE p.prs_perslid_key = m.prs_perslid_key) aanvrager,
(select pa.PRS_AFDELING_NAAM from prs_afdeling pa, prs_perslid p
where p.PRS_PERSLID_KEY=m.prs_perslid_key
AND pa.PRS_AFDELING_KEY=p.PRS_AFDELING_KEY) bedrijf,
m.mld_melding_opmerking,
(SELECT p.prs_perslid_naam_friendly
FROM fac_tracking ft, prs_v_perslid_fullnames p
WHERE ft.fac_tracking_refkey=534
AND ft.fac_srtnotificatie_key=47
AND p.prs_perslid_key = ft.prs_perslid_key) afmelder,
(SELECT fud.FAC_USRDATA_OMSCHR FROM mld_kenmerkmelding km, MLD_KENMERK k, fac_usrdata fud
where km.mld_melding_key=m.mld_melding_key
AND k.MLD_KENMERK_KEY = km.MLD_KENMERK_KEY
AND UPPER(k.MLD_KENMERK_OMSCHRIJVING)='BETREFT FM NUMMER'
AND fud.FAC_USRDATA_KEY=km.MLD_KENMERKMELDING_WAARDE) FM_nummer
FROM mld_melding m , mld_stdmelding ms, mld_discipline md, ins_srtdiscipline isd
WHERE m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key=ms.mld_ins_discipline_key
AND isd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND isd.ins_srtdiscipline_omschrijving='Klacht'
ORDER BY hoofd_key;
CREATE OR REPLACE VIEW PIVP_V_RAP_KLACHTOVERZICHT
AS
SELECT m.mld_melding_key hoofd_key,
m.mld_melding_onderwerp,
m.mld_melding_omschrijving,
m.mld_melding_datum,
m.mld_melding_einddatum,
(SELECT s.mld_statuses_omschrijving
FROM mld_statuses s
WHERE s.mld_statuses_key= m.mld_melding_status) mld_status,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE p.prs_perslid_key = m.mld_melding_behandelaar_key) behandelaar,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE p.prs_perslid_key = m.prs_perslid_key) aanvrager,
m.mld_melding_opmerking,
(SELECT p.prs_perslid_naam_friendly
FROM fac_tracking ft, prs_v_perslid_fullnames p
WHERE ft.fac_tracking_refkey=534
AND ft.fac_srtnotificatie_key=47
AND p.prs_perslid_key = ft.prs_perslid_key) afmelder,
(SELECT COUNT(*)
FROM mld_melding
WHERE mld_melding_start_key=m.mld_melding_key) maatregelen
FROM mld_melding m , mld_stdmelding ms, mld_discipline md, ins_srtdiscipline isd
WHERE m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key=ms.mld_ins_discipline_key
AND isd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND isd.ins_srtdiscipline_omschrijving='Klacht'
AND m.mld_melding_start_key IS NULL;
CREATE OR REPLACE VIEW PIVP_V_HUURDERSRAPPORT
AS
SELECT ok.alg_onrgoedkenmerk_waarde bedrijf_key,
SUM(ar.alg_ruimte_bruto_vloeropp) totaal_op
FROM alg_ruimte ar, alg_onrgoedkenmerk ok, prs_bedrijf p
WHERE p.prs_bedrijf_key=90
AND ok.alg_onrgoedkenmerk_waarde =p.prs_bedrijf_key
AND ok.alg_onrgoed_key = ar.alg_ruimte_key
AND ok.alg_onrgoed_niveau='R'
AND ok.alg_kenmerk_key=1040
GROUP BY ok.alg_onrgoedkenmerk_waarde;
CREATE OR REPLACE VIEW PIVP_V_HUURDERSBEDRIJF
(
FAC_USRDATA_KEY,
FAC_USRDATA_OMSCHR
)
AS
SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_huurder=1
AND prs_bedrijf_verwijder IS NULL;
CREATE OR REPLACE VIEW PIVP_V_DIENSTEN
(
FAC_USRDATA_KEY,
FAC_USRDATA_OMSCHR
)
AS
SELECT md.ins_discipline_key,
md.ins_discipline_omschrijving
FROM mld_discipline md
WHERE SUBSTR(md.ins_discipline_omschrijving,1,2)='FM'
AND md.ins_discipline_verwijder IS NULL;
CREATE OR REPLACE VIEW PIVP_V_RUIMTEEXPORT
(
alg_ruimte_key,
locatie_code,
gebouw_code,
verdieping_code,
ruimte_nr,
ruimte_omschrijving,
wo,
huurder,
relatie_code,
verhuurbaar,
soort_ruimte,
vvo,
ruimte_type_verhuur,
mutatie_datum,
sync_datum
)
AS
SELECT alg.alg_ruimte_key,
alg.alg_locatie_code locatie_code,
agb.alg_gebouw_code gebouw_code,
alg.alg_verdieping_code verdieping_code,
agb.alg_gebouw_code||'-'||alg.alg_ruimte_nr ruimte_nr,
alg.alg_ruimte_omschrijving ruimte_omschrijving,
alg.alg_ruimte_bruto_vloeropp wo,
(SELECT fac_usrdata_omschr
FROM pivp_v_huurdersbedrijf, alg_onrgoedkenmerk aok, alg_kenmerk ak
WHERE aok.alg_onrgoed_key =alg.alg_ruimte_key
AND aok.alg_kenmerk_key=ak.alg_kenmerk_key
AND UPPER(ak.alg_kenmerk_omschrijving)='HUURDER'
and ak.alg_kenmerk_verwijder IS NULL
AND fac_usrdata_key=fac.safe_to_number(aok.alg_onrgoedkenmerk_waarde)) huurder,
(SELECT pb.prs_leverancier_nr
FROM prs_bedrijf pb, pivp_v_huurdersbedrijf, alg_onrgoedkenmerk aok, alg_kenmerk ak
WHERE aok.alg_onrgoed_key =alg.alg_ruimte_key
AND aok.alg_kenmerk_key=ak.alg_kenmerk_key
AND UPPER(ak.alg_kenmerk_omschrijving)='HUURDER'
AND fac_usrdata_key=aok.alg_onrgoedkenmerk_waarde
AND pb.prs_bedrijf_naam=fac_usrdata_omschr
and ak.alg_kenmerk_verwijder IS NULL) relatie_code,
(SELECT DECODE(fud.fac_usrdata_code,'Verhuurbaar','1','0')
FROM alg_onrgoedkenmerk aok, alg_kenmerk ak, fac_usrdata fud
WHERE aok.alg_onrgoed_key =alg.alg_ruimte_key
AND aok.alg_kenmerk_key=ak.alg_kenmerk_key
AND UPPER(ak.alg_kenmerk_omschrijving)='VERHUURBAAR'
AND fud.fac_usrdata_key=fac.safe_to_number(aok.alg_onrgoedkenmerk_waarde)
and ak.alg_kenmerk_verwijder IS NULL) verhuurbaar,
alg.alg_srtruimte_omschrijving soort_ruimte,
(SELECT aok.alg_onrgoedkenmerk_waarde from alg_onrgoedkenmerk aok, alg_kenmerk ak
WHERE aok.alg_onrgoed_key=alg.alg_ruimte_key
AND ak.alg_kenmerk_key=aok.alg_kenmerk_key
AND ak.alg_kenmerk_upper='VVO'
and ak.alg_kenmerk_verwijder IS NULL) vvo,
--alg.alg_srtruimte_omschrijving ruimte_omsc2,
(SELECT fud.fac_usrdata_code
FROM alg_onrgoedkenmerk aok, alg_kenmerk ak, fac_usrdata fud
WHERE aok.alg_onrgoed_key =alg.alg_ruimte_key
AND aok.alg_kenmerk_key=ak.alg_kenmerk_key
AND UPPER(ak.alg_kenmerk_omschrijving)='VERHUURTYPE'
AND fud.fac_usrdata_key=fac.safe_to_number(aok.alg_onrgoedkenmerk_waarde)
and ak.alg_kenmerk_verwijder IS NULL) ruimte_type_verhuur,
(SELECT MAX(fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie fs
WHERE fs.fac_srtnotificatie_code='ALGRUP'
AND ft.fac_srtnotificatie_key = fs.FAC_SRTNOTIFICATIE_KEY
AND ft.FAC_TRACKING_REFKEY=alg.alg_ruimte_key) mut_datum,
(SELECT alg_ruimte_externsyncdate
FROM alg_ruimte ar
WHERE ar.alg_ruimte_key=alg.alg_ruimte_key) sync_datum
FROM alg_v_ruimte_gegevens alg, alg_gebouw agb
WHERE agb.alg_gebouw_key = alg.alg_gebouw_key
AND alg.alg_ruimte_nr NOT LIKE '_000';
CREATE OR REPLACE VIEW PIVP_V_ZAALRESERVERINGEN
(
reserveringnr,
ruimte,
omschrijving,
opmerking,
van,
tot,
host,
bedrijf,
prijs,
verwijder_datum
)
AS
SELECT res.res_reservering_key||'/'||res.res_rsv_ruimte_volgnr reserveringnr,
rr.res_ruimte_nr ruimte,
res.res_rsv_ruimte_omschrijving omschrijving,
res.res_rsv_ruimte_opmerking opmerking,
res.res_rsv_ruimte_van van,
res.res_rsv_ruimte_tot tot,
pvf.prs_perslid_naam_friendly host,
pa.prs_afdeling_omschrijving bedrijf,
RES.GETRESRUIMTEPRIJS(rr.res_ruimte_key,res.res_rsv_ruimte_van, res.res_rsv_ruimte_tot) prijs,
res.res_rsv_ruimte_verwijder verwijder_datum
FROM res_rsv_ruimte res, res_ruimte_opstelling rro, res_ruimte rr, prs_perslid pp, prs_afdeling pa, prs_v_perslid_fullnames pvf
WHERE res.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND pvf.prs_perslid_key = pp.prs_perslid_key
AND pp.prs_perslid_key = res.res_rsv_ruimte_host_key
AND pa.prs_afdeling_key = pp.prs_afdeling_key
AND (res.res_rsv_ruimte_verwijder IS NULL OR (res.res_rsv_ruimte_verwijder IS NOT NULL AND res.res_rsv_ruimte_van < res.res_rsv_ruimte_verwijder));
CREATE OR REPLACE VIEW PIVP_V_OBJECT_MLD_QR
(
INS_DEEL_OMSC,
LOCATIE_CODE,
FCLT_F_LOCATIE,
FCLT_F_GEBOUW,
FCLT_F_PLAATS,
RUIMTENR,
NAAM,
FCLT_F_DISCIPLINE,
FCLT_F_OBJECTGROEP,
FCLT_F_OBJECTSOORT,
FCLT_F_IDENTIFICATIE,
FCLT_F_BOOKMARK,
INS_DEEL_KEY,
INS_SRTDEEL_KEY,
FCLT_3D_DISCIPLINE_KEY,
FCLT_3D_LOCATIE_KEY,
INS_ALG_RUIMTE_TYPE,
INS_ALG_RUIMTE_KEY,
BOOKMARK_ID,
GEKOPPELD_AAN
)
AS
SELECT i.ins_deel_omschrijving
hide_f_sort,
l.alg_locatie_code,
l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving
fclt_f_locatie,
o.alg_gebouw_omschrijving
fclt_f_gebouw,
SUBSTR (o.alg_plaatsaanduiding, 13)
fclt_f_plaats,
o.alg_ruimte_nr,
NULL
prs_perslid_naam,
d.ins_discipline_omschrijving
fclt_f_discipline,
g.ins_srtgroep_omschrijving
fclt_f_objectgroep,
s.ins_srtdeel_omschrijving
fclt_f_objectsoort,
i.ins_deel_omschrijving
fclt_f_identificatie,
b.fac_bookmark_naam
fclt_f_bookmark,
i.ins_deel_key,
s.ins_srtdeel_key,
i.ins_discipline_key
fclt_3d_discipline_key,
l.alg_locatie_key
fclt_3d_locatie_key,
i.ins_alg_ruimte_type,
i.ins_alg_ruimte_key,
b.fac_bookmark_id
hide_f_bookmark_id,
'Ruimte'
FROM ins_deel i,
ins_v_alg_overzicht o,
ins_srtdeel s,
ins_srtgroep g,
ins_discipline d,
alg_locatie l,
fac_bookmark b
WHERE UPPER (b.fac_bookmark_naam) IN ('QR_OBJECT_MELDING')
AND COALESCE (b.fac_bookmark_expire, SYSDATE + 1) > SYSDATE
AND ins_deel_verwijder IS NULL
AND COALESCE (i.ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND s.ins_srtdeel_key = i.ins_srtdeel_key
AND g.ins_srtgroep_key = s.ins_srtgroep_key
AND d.ins_discipline_key = g.ins_discipline_key
AND o.alg_onroerendgoed_keys =
COALESCE (i.ins_alg_ruimte_key_org, i.ins_alg_ruimte_key)
AND o.alg_onroerendgoed_type =
COALESCE (i.ins_alg_ruimte_type_org, i.ins_alg_ruimte_type)
AND COALESCE (i.ins_alg_ruimte_type_org, i.ins_alg_ruimte_type) IN
('T', 'R', 'W')
AND o.alg_locatie_key = i.ins_alg_locatie_key
AND l.alg_locatie_key = i.ins_alg_locatie_key;
CREATE OR REPLACE VIEW PIVP_V_noti_exact_dienst
AS
SELECT DISTINCT fs.fac_srtnotificatie_code,
NULL sender,
NULL receiver,
REPLACE (fs.fac_srtnotificatie_oms, '##TOT##', TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM')) text,
r.fac_usrrap_key key,
null xkey,
p.prs_perslid_email xemail,
NULL mobile
FROM fac_usrrap r,
FAC_GROEP fg,
FAC_GEBRUIKERSGROEP fgg,
prs_perslid p,
fac_srtnotificatie fs
WHERE TO_CHAR (SYSDATE, 'dd') = '20' -- Op de ochtend na 1ste van de maand!
AND UPPER (r.fac_usrrap_omschrijving) = UPPER('BEHEER: Hidden rapportage tbv. Exact Diensten facturatie')
AND fs.fac_srtnotificatie_code='CUST03'
AND fg.FAC_GROEP_OMSCHRIJVING='PIVP_NotificatieGroep'
AND fgg.FAC_GROEP_KEY = fg.FAC_GROEP_KEY
AND p.PRS_PERSLID_KEY = fgg.PRS_PERSLID_KEY;
CREATE OR REPLACE VIEW PIVP_V_noti_exact_res
AS
SELECT DISTINCT fs.fac_srtnotificatie_code,
NULL sender,
NULL receiver,
fs.fac_srtnotificatie_oms text,
r.fac_usrrap_key key,
null xkey,
p.prs_perslid_email xemail,
NULL mobile
FROM fac_usrrap r,
fac_groep fg,
fac_gebruikersgroep fgg,
prs_perslid p,
fac_srtnotificatie fs
WHERE TO_CHAR (SYSDATE, 'dd') = '20' -- Op de ochtend na 1ste van de maand!
AND UPPER (r.fac_usrrap_omschrijving) = UPPER('BEHEER: Hidden rapportage tbv. Exact res')
AND fs.fac_srtnotificatie_code='CUST04'
AND fg.fac_groep_omschrijving='PIVP_NotificatieGroep'
AND fgg.fac_groep_key = fg.fac_groep_key
AND p.prs_perslid_key = fgg.prs_perslid_key;
-- EXPORTS
CREATE OR REPLACE PROCEDURE pivp_select_exact_mld(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR mld(p_startDate DATE, p_endDate DATE) IS
SELECT DISTINCT bedrijf_key , debiteurnr
FROM pivp_v_mldexport
WHERE afmelddatum BETWEEN p_startDate AND p_endDate;
CURSOR mld_regel( c_bedrijf_key NUMBER,
p_startDate DATE,
p_endDate DATE) IS
SELECT *
FROM pivp_v_mldexport
WHERE bedrijf_key=c_bedrijf_key
AND afmelddatum BETWEEN p_startDate AND p_endDate;
v_bestand VARCHAR2(100);
v_order_count NUMBER :=0;
v_amount_sum NUMBER:=0;
v_leverancier NUMBER;
v_sub_count NUMBER;
v_count NUMBER;
v_dagboek VARCHAR2(10);
v_startDate DATE;
v_endDate DATE;
v_factuurdatum DATE;
v_startmonth VARCHAR2(10);
v_currentmonth VARCHAR2(10);
v_currentyear VARCHAR2(10);
v_currenthuurder VARCHAR2(10);
v_factuurregel VARCHAR2(120);
BEGIN
v_dagboek:='70';
v_leverancier:=0;
v_count :=0;
v_sub_count:=0;
v_currenthuurder :='';
DELETE FROM fac_rapport
WHERE fac_rapport.fac_rapport_node LIKE 'EXM_MLD%';
-- eerst controlerene of we de eerste van een nieuw kwartaal zijn.
v_startmonth := TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'MM'))-1);
v_currentyear := TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')));
IF v_startmonth = '0' THEN
v_currentyear := TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY'))-1);
v_startmonth:='12';
END IF;
v_startdate := TO_DATE('01-'||v_startmonth||'-'||v_currentyear,'DD-MM-YYYY');
v_enddate := LAST_DAY(v_startdate);
v_factuurdatum:=v_enddate;
-- IF v_currentmonth=1 OR v_currentmonth=4 OR v_currentmonth=7 OR v_currentmonth=10
-- THEN
/*CASE v_currentmonth
WHEN 1 THEN
v_startDate:= TO_DATE('01-10-'||TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')-1)),'DD-MM-YYYY');
v_endDate:= TO_DATE('31-12-'||TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')-1)),'DD-MM-YYYY');
WHEN 4 THEN
v_startDate:= TO_DATE('01-01-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_endDate:= TO_DATE('30-03-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
WHEN 7 THEN
v_startDate:= TO_DATE('01-04-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_endDate := TO_DATE('30-06-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
ELSE
v_startDate:= TO_DATE('01-07-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_endDate:= TO_DATE('30-09-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
END CASE;
v_bestand:= 'EXM_MLD';
*/
-- PUUR OM EENVOUDIGER TE KUNNEN TESTEN
v_startDate:=TO_DATE('01-03-2023','DD-MM-YYYY');
v_endDate:=TO_DATE('31-03-2023','DD-MM-YYYY');
v_factuurdatum := TO_DATE('31-03-2023','DD-MM-YYYY');
v_bestand:= 'EXM_MLD';
FOR rec in mld(v_startDate, v_endDate)
LOOP
v_count:=v_count+1;
IF v_count=1 THEN
pivp.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
pivp.add_xml_row (v_bestand, '<eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-Schema.xsd">');
pivp.add_xml_row (v_bestand, '<Invoices companycode="003" companyname="Pivot Park">');
END IF;
FOR rec_regel IN mld_regel(rec.bedrijf_key,v_startDate, v_endDate)
LOOP
v_sub_count:=v_sub_count+1;
IF v_sub_count=1 THEN
pivp.add_xml_row (v_bestand, '<Invoice type="V" code="00">');
pivp.add_xml_element (v_bestand, 'Description', 'Geleverde diensten.');
IF LENGTH(rec_regel.ponummer)>1 THEN
pivp.add_xml_element(v_bestand, 'YourRef',rec_regel.ponummer);
END IF;
pivp.add_xml_row (v_bestand, '<Order type="V"/>'); -- vaste waarde
pivp.add_xml_row (v_bestand, '<Resource number="1"/>'); -- persoon waarop geboekt wordt in Exact
pivp.add_xml_row (v_bestand, '<Currency code="EUR"/>');
pivp.add_xml_element (v_bestand, 'CalcIncludeVAT', 'N');
pivp.add_xml_row (v_bestand, '<OrderedBy>');
pivp.add_xml_row (v_bestand, '<Debtor code="' || xml.char_to_html(rec_regel.debiteurnr) || '"/>');
pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(v_factuurdatum,'YYYY-MM-DD') );
pivp.add_xml_row (v_bestand, '</OrderedBy>');
END IF;
pivp.add_xml_row (v_bestand, '<InvoiceLine lineNo="' || v_sub_count || '" type="N" subtype="N">');
IF LENGTH(rec_regel.factuurinfo)>0 THEN
v_factuurregel:= rec_regel.melding_key||' - '||rec_regel.factuurinfo;
ELSE
IF LENGTH(rec_regel.onderwerp)>0 THEN
v_factuurregel:= rec_regel.melding_key||'('||rec_regel.dienstencode||')-'||rec_regel.onderwerp;
ELSE
v_factuurregel:= rec_regel.melding_key||'-'||rec_regel.vagroep;
END IF;
END IF;
IF LENGTH(rec_regel.ponummer)>0 THEN
v_factuurregel:= v_factuurregel ||' (Uw ref. '||SUBSTR(rec_regel.ponummer,0,15)||')';
END IF;
-- Vaste waardes die evt worden aangepast bij vervolg project
pivp.add_xml_row (v_bestand, '<Warehouse code=""/>'); -- vaste waarde
pivp.add_xml_row (v_bestand, '<Costcenter code=""/>');
pivp.add_xml_row (v_bestand, '<Costunit code=""/>');
pivp.add_xml_row (v_bestand, '<Project code=""/>');
pivp.add_xml_element (v_bestand, 'Text', SUBSTR(v_factuurregel,0,120));
pivp.add_xml_element (v_bestand, 'Description', 'P2P ordernr.:'||rec_regel.p2pordernr);
pivp.add_xml_row (v_bestand, '<Item code="' || rec_regel.dienstencode || '"/>');
pivp.add_xml_element (v_bestand, 'Quantity', '1' );
pivp.add_xml_row (v_bestand, '<Price>');
pivp.add_xml_row (v_bestand, '<Currency code="EUR"/>');
pivp.add_xml_element (v_bestand, 'Value', rec_regel.factuurbedrag);
pivp.add_xml_row (v_bestand, '</Price>');
pivp.add_xml_row (v_bestand, '<Delivery>');
pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.afmelddatum, 'YYYY-MM-DD') );
pivp.add_xml_row (v_bestand, '</Delivery>');
pivp.add_xml_row (v_bestand, '</InvoiceLine>');
-- UPDATE mld_melding set mld_melding_externsyncdate=SYSDATE WHERE mld_melding_key=rec_regel.melding_key;
END LOOP;
IF v_sub_count>0 THEN
pivp.add_xml_row (v_bestand, '</Invoice>');
END IF;
v_sub_count:=0;
END LOOP;
IF v_count>0 THEN
pivp.add_xml_row (v_bestand, '</Invoices>');
pivp.add_xml_row (v_bestand, '</eExact>');
END IF;
IF v_count=0 THEN
-- We hebben niets om te exporteren dan gooien we ook XML tags weg.
DELETE FROM fac_rapport WHERE fac_rapport_node = v_bestand;
END IF;
fac.writelog (p_applname, 'S', 'Exact export uitgevoerd.','Regels: '||v_count||' Periode : '||v_startDate||'-'||v_enddate);
--END IF;
END;
/
CREATE OR REPLACE PROCEDURE pivp_select_exact_res(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR res(p_startDate DATE, p_endDate DATE) IS
SELECT DISTINCT debiteurnr
FROM pivp_v_resexport
WHERE datum BETWEEN p_startDate AND p_endDate AND externsyncdate IS NULL;
CURSOR res_regel( c_debiteur_nr VARCHAR2,
p_startDate DATE,
p_endDate DATE) IS
SELECT *
FROM pivp_v_resexport
WHERE debiteurnr=c_debiteur_nr
AND datum BETWEEN p_startDate AND p_endDate
AND externsyncdate IS NULL
ORDER by datum;
v_bestand VARCHAR2(100);
v_order_count NUMBER :=0;
v_amount_sum NUMBER:=0;
v_leverancier NUMBER;
v_sub_count NUMBER;
v_count NUMBER;
v_dagboek VARCHAR2(10);
v_dienstencode VARCHAR2(10);
v_startDate DATE;
v_endDate DATE;
v_currentmonth NUMBER;
v_currenthuurder VARCHAR2(10);
v_factuurdatum DATE;
v_factuurregel VARCHAR2(120);
BEGIN
v_dagboek:='70';
v_dienstencode:='FM-221'; -- alle reservering worden op deze dienstencode geboekt
v_leverancier:=0;
v_sub_count:=0;
v_count:=0;
v_currenthuurder :='';
DELETE FROM fac_rapport
WHERE fac_rapport_node LIKE 'EXR_RES';
-- eerst controlerene of we de eerste van een nieuw kwartaal zijn.
v_currentmonth := TO_NUMBER(TO_CHAR(SYSDATE,'MM'));
v_currentmonth :=10;
IF v_currentmonth=1 OR v_currentmonth=4 OR v_currentmonth=7 OR v_currentmonth=10
THEN
CASE v_currentmonth
WHEN 1 THEN
v_startDate:= TO_DATE('01-10-'||TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')-1)),'DD-MM-YYYY');
v_endDate:= TO_DATE('31-12-'||TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')-1)),'DD-MM-YYYY');
v_factuurdatum:=TO_DATE('31-12-'||TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')-1)),'DD-MM-YYYY');
WHEN 4 THEN
v_startDate:= TO_DATE('01-01-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_endDate:= TO_DATE('30-03-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_factuurdatum:=TO_DATE('31-03-'||TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY'))),'DD-MM-YYYY');
WHEN 7 THEN
v_startDate:= TO_DATE('01-04-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_endDate:= TO_DATE('30-06-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_factuurdatum:=TO_DATE('30-06-'||TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY'))),'DD-MM-YYYY');
ELSE
v_startDate:= TO_DATE('01-07-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_endDate:= TO_DATE('30-09-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_factuurdatum:=TO_DATE('30-09-'||TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY'))),'DD-MM-YYYY');
END CASE;
-- PUUR OM EENVOUDIGER TE KUNNEN TESTEN
v_startDate:=TO_DATE('01-01-2023','DD-MM-YYYY');
v_endDate:=TO_DATE('31-03-2023','DD-MM-YYYY');
v_factuurdatum := TO_DATE('31-03-2023','DD-MM-YYYY');
------
v_bestand:= 'EXR_RES';
FOR rec in res(v_startDate, v_endDate)
LOOP
v_count:=v_count+1;
IF v_count=1 THEN
pivp.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
pivp.add_xml_row (v_bestand, '<eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-Schema.xsd">');
pivp.add_xml_row (v_bestand, '<Invoices companycode="003" companyname="Pivot Park">');
END IF;
-- AFhandelen van alle reservering voor deze klant
FOR rec_regel IN res_regel(rec.debiteurnr,v_startDate, v_endDate)
LOOP
v_sub_count:=v_sub_count+1;
IF v_sub_count=1 THEN
pivp.add_xml_row (v_bestand, '<Invoice type="V" code="00">');
pivp.add_xml_element (v_bestand, 'Description', 'Zaalreserveringen');
-- pivp.add_xml_element(v_bestand, 'YourRef','Uwe referentie');
pivp.add_xml_row (v_bestand, '<Order type="V"/>');
pivp.add_xml_row (v_bestand, '<Resource number="1"/>'); -- persoon waarop geboekt wordt in Exact
pivp.add_xml_row (v_bestand, '<Currency code="EUR"/>');
pivp.add_xml_element (v_bestand, 'CalcIncludeVAT', 'N');
pivp.add_xml_row (v_bestand, '<OrderedBy>');
pivp.add_xml_row (v_bestand, '<Debtor code="' || xml.char_to_html(rec_regel.debiteurnr) || '"/>');
pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(v_factuurdatum,'YYYY-MM-DD'));
pivp.add_xml_row (v_bestand, '</OrderedBy>');
END IF;
pivp.add_xml_row (v_bestand, '<InvoiceLine lineNo="' || v_sub_count || '" type="N" subtype="N">');
-- Vaste waardes worden in vervolg project evt aangepast
pivp.add_xml_row (v_bestand, '<Warehouse code=""/>'); -- vaste waarde
pivp.add_xml_row (v_bestand, '<Costcenter code=""/>');
pivp.add_xml_row (v_bestand, '<Costunit code=""/>');
pivp.add_xml_row (v_bestand, '<Project code=""/>');
v_factuurregel := rec_regel.reservering_nr||'/'||rec_regel.reservering_volgnr||'-'||rec_regel.ruimte_nr||' ('||TO_CHAR(rec_regel.datum,'DD-MM-YYYY')||' '||rec_regel.van||'-'||rec_regel.tot||')';
-- IF LENGTH(rec_regel.ponummer)>0 THEN
-- v_factuurregel:= v_factuurregel || CHR(12)||rec_regel.ponummer;
-- END IF;
pivp.add_xml_element (v_bestand, 'Text', v_factuurregel);
pivp.add_xml_row (v_bestand, '<Item code="' || v_dienstencode || '"/>');
pivp.add_xml_element (v_bestand, 'Quantity', '1' );
pivp.add_xml_row (v_bestand, '<Price>');
pivp.add_xml_row (v_bestand, '<Currency code="EUR"/>');
IF rec_regel.verwijderdatum IS NOT NULL
AND (rec_regel.verwijderdatum - rec_regel.res_rsv_ruimte_van)<3
THEN
pivp.add_xml_element (v_bestand, 'Value', ROUND(rec_regel.bedrag*0.5,2));
ELSE
pivp.add_xml_element (v_bestand, 'Value', rec_regel.bedrag);
END IF;
pivp.add_xml_row (v_bestand, '</Price>');
pivp.add_xml_row (v_bestand, '<Delivery>');
pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.datum, 'YYYY-MM-DD') );
pivp.add_xml_row (v_bestand, '</Delivery>');
pivp.add_xml_row (v_bestand, '</InvoiceLine>');
-- UPDATE res_rsv_ruimte set res_rsv_ruimte_externsyncdat=SYSDATE WHERE res_rsv_ruimte_key=rec.res_rsv_ruimte_key;
END LOOP;
IF v_sub_count>=1 THEN
pivp.add_xml_row (v_bestand, '</Invoice>');
END IF;
v_sub_count:=0;
END LOOP;
IF v_count>0 THEN
pivp.add_xml_row (v_bestand, '</Invoices>');
pivp.add_xml_row (v_bestand, '</eExact>');
END IF;
IF v_count=0 THEN
DELETE FROM fac_rapport WHERE fac_rapport_node=v_bestand;
END IF;
fac.writelog (p_applname, 'S', 'Exact reservering export uitgevoerd. Aantal Klanten :'||v_count,'Periode :('||v_currentmonth||') '||v_startDate||'-'||v_enddate);
END IF;
END;
/
CREATE OR REPLACE VIEW PIVP_V_EXPORT_EXACT_MLD (
result,
result_order,
exact_exp
)
AS
SELECT fac_rapport_regel ,fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'EXM_%'
ORDER BY fac_rapport_node,fac_rapport_volgnr;
CREATE OR REPLACE VIEW PIVP_V_EXPORT_EXACT_RES (
result,
result_order,
exact_exp
)
AS
SELECT fac_rapport_regel ,fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'EXR_%'
ORDER BY fac_rapport_node,fac_rapport_volgnr;
-- EXPORT CONTACTEN
CREATE OR REPLACE PROCEDURE pivp_select_exact_cont(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR contacts IS
SELECT *
FROM PIVP_V_CONTACTEXPORT;
v_bestand VARCHAR2(100);
v_counter NUMBER;
v_relatie_code VARCHAR2(10);
BEGIN
v_bestand := 'EXA_CONTACT';
v_counter :=0;
v_relatie_code :='--------';
DELETE FROM fac_rapport where fac_rapport_node='EXA_CONTACT';
COMMIT;
pivp.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
pivp.add_xml_row (v_bestand, '<eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-Schema.xsd">');
pivp.add_xml_row (v_bestand, '<Accounts>');
FOR rec IN contacts
LOOP
v_counter:=v_counter+1;
IF v_relatie_code != rec.debiteurnr
THEN
IF v_counter>1 THEN
pivp.add_xml_row (v_bestand, '</Contacts>');
pivp.add_xml_row (v_bestand, '</Account>');
END IF;
pivp.add_xml_row (v_bestand, '<Account code="'||rec.debiteurnr||'">');
pivp.add_xml_row (v_bestand, '<Contacts>');
END IF;
v_counter:=v_counter+1;
pivp.add_xml_row (v_bestand, '<Contact default="0">');
pivp.add_xml_element (v_bestand, 'FirstName', rec.voornaam);
pivp.add_xml_element (v_bestand, 'MiddleName', rec.tussenvoegsel);
pivp.add_xml_element (v_bestand, 'LastName', rec.achternaam);
IF LENGTH(rec.functie)>1 THEN
pivp.add_xml_element (v_bestand, 'JobDescription', rec.functie);
ELSE
pivp.add_xml_element (v_bestand, 'JobDescription', '-');
END IF;
pivp.add_xml_element (v_bestand, 'Email', rec.email);
pivp.add_xml_element (v_bestand, 'Phone', rec.telefoonnummer);
pivp.add_xml_element (v_bestand, 'Mobile', rec.mobiel);
pivp.add_xml_row (v_bestand, '<Language code="NL"/>');
pivp.add_xml_row (v_bestand, '<FreeFields>');
pivp.add_xml_row (v_bestand, '<FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeYesNo number="1" label="CxO">'||rec.cxo||'</FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeYesNo number="2" label="EHS">'||rec.ehs||'</FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeYesNo number="3" label="Secr">'||rec.secr||'</FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeYesNo number="4" label="Community newsletter">'||rec.comm_letter||'</FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeYesNo number="5" label="MMP newsletter">'||rec.act_letter||'</FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeYesNo number="6" label="Community app">0</FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeYesNo number="7" label="Corporate newsletter">'||rec.corp_letter||'</FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeYesNo number="8" label="Ops">'||rec.operations||'</FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeYesNo number="9" label="Com lid">'||rec.medw||'</FreeYesNo>');
-- pivp.add_xml_row (v_bestand, '<FreeYesNo number="10" label="Student/PhD">0</FreeYesNo>');
pivp.add_xml_row (v_bestand, '</FreeYesNo>');
pivp.add_xml_row (v_bestand, '</FreeFields>');
pivp.add_xml_row (v_bestand, '</Contact>');
v_relatie_code := rec.debiteurnr;
-- UPDATE mld_melding set MLD_MELDING_EXTERNSYNCDATE=SYSDATE WHERE mld_melding_key=rec.mld_melding_key;
END LOOP;
pivp.add_xml_row (v_bestand, '</Contacts>');
pivp.add_xml_row (v_bestand, '</Account>');
pivp.add_xml_row (v_bestand, '</Accounts>');
pivp.add_xml_row (v_bestand, '</eExact>');
IF v_counter=0 THEN
DELETE FROM fac_rapport WHERE fac_rapport_node=v_bestand;
END IF;
fac.writelog (p_applname, 'S', 'Exact contact export uitgevoerd.','Aantal geexporteerde contacten is: '||v_counter);
END;
/
CREATE OR REPLACE PROCEDURE PIVP_SELECT_EXACT_CONTACT (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
pivp_select_exact_cont (p_applname, p_applrun);
END;
/
CREATE OR REPLACE VIEW PIVP_V_EXPORT_EXACT_CONTACT (
result,
result_order
)
AS
SELECT fac_rapport_regel ,fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node LIKE 'EXA_CONTACT%'
ORDER BY fac_rapport_node,fac_rapport_volgnr;
-- EINDE EXPORT CONTACTEN
-- EXPORT RUIMTES
CREATE OR REPLACE PROCEDURE pivp_select_exact_ruimte_exp(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR ruimtes IS
SELECT *
FROM pivp_v_ruimteexport
WHERE verhuurbaar='1'
AND (sync_datum IS NULL OR sync_datum<mutatie_datum);
v_bestand VARCHAR2(100);
v_counter NUMBER;
v_relatie_code VARCHAR2(10);
BEGIN
v_bestand := 'EXA_RUIMTE';
v_counter :=0;
v_relatie_code :='--------';
DELETE FROM fac_rapport where fac_rapport_node='EXA_RUIMTE';
COMMIT;
pivp.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
pivp.add_xml_row (v_bestand, '<eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-Schema.xsd">');
pivp.add_xml_row (v_bestand, '<Items>');
FOR rec IN ruimtes
LOOP
v_counter:=v_counter+1;
pivp.add_xml_row (v_bestand, '<Item code="'||rec.ruimte_nr||'" TYPE="'||rec.ruimte_type_verhuur||'" searchcode="'||rec.ruimte_nr||'">');
pivp.add_xml_element (v_bestand, 'Description', rec.ruimte_nr);
pivp.add_xml_row (v_bestand, '<Assortment number=<3D>4001<30> code=<3D>4001<30>/>');
pivp.add_xml_row (v_bestand, '<FreeFields>');
pivp.add_xml_row (v_bestand, '<FreeNumbers>');
pivp.add_xml_row (v_bestand,'<FreeNumber number="1" label="Oppervlakte WO (m2)">'||rec.wo||'</FreeNumber>');
pivp.add_xml_row (v_bestand,'<FreeNumber number="1" label="Oppervlakte VVO (m2)">'||REPLACE(rec.vvo,',','.')||'</FreeNumber>');
pivp.add_xml_row (v_bestand, '</FreeNumber>');
pivp.add_xml_row (v_bestand, '<FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeYesNo number="1" label="Verhuurbaar">'||rec.verhuurbaar||'</FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeYesNo number="2" label="Vergaderruimte">0</FreeYesNo>');
pivp.add_xml_row (v_bestand, '</FreeYesNo>');
pivp.add_xml_row (v_bestand, '<FreeText>');
pivp.add_xml_row (v_bestand, '<FreeText number="1" label="Type">'||rec.ruimte_type_verhuur||'</FreeText>');
pivp.add_xml_row (v_bestand, '</FreeText>');
pivp.add_xml_row (v_bestand, '</FreeFields>');
pivp.add_xml_row (v_bestand, '</Item>');
--UPDATE alg_ruimte SET alg_ruimte_externsyncdate=SYSDATE WHERE alg_ruimte_key=rec.alg_ruimte_key;
END LOOP;
pivp.add_xml_row (v_bestand, '</Items>');
pivp.add_xml_row (v_bestand, '</eExact>');
IF v_counter=0 THEN
DELETE FROM fac_rapport WHERE fac_rapport_node=v_bestand;
END IF;
fac.writelog (p_applname, 'S', 'Exact ruimte export uitgevoerd.','Aantal geexporteerde verhuubare ruimtes is: '||v_counter);
END;
/
CREATE OR REPLACE PROCEDURE PIVP_SELECT_EXACT_RUIMTE (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
pivp_select_exact_ruimte_exp (p_applname, p_applrun);
END;
/
CREATE OR REPLACE VIEW PIVP_V_EXPORT_EXACT_RUIMTE (
result,
result_order
)
AS
SELECT fac_rapport_regel ,fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node LIKE 'EXA_RUIMTE%'
ORDER BY fac_rapport_node,fac_rapport_volgnr;
--END EXPORTS
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile