-- -- $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) || ''); 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; -- conditiescore aggregratie over de gebouwen. cnd.update_aggr_scores(NULL, NULL); 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,'€'); -- 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_key NUMBER; v_huurder_code VARCHAR2(100); v_huurder_codeoud VARCHAR2(100); v_huurder_naam VARCHAR2(100); v_huurder_naam_imp 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' AND alg_kenmerk_verwijder IS NULL; -- 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' AND alg_kenmerk_verwijder IS NULL; SELECT alg_kenmerk_key INTO v_vhrbr_kenm_key FROM alg_kenmerk WHERE alg_kenmerk_upper='VERHUURBAAR' AND alg_kenmerk_verwijder IS NULL; 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_imp); 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; BEGIN SELECT b.prs_bedrijf_naam INTO v_huurder_naam FROM prs_bedrijf b WHERE b.prs_leverancier_nr = v_huurder_code AND b.prs_bedrijf_huurder = 1 AND b.prs_bedrijf_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN v_huurder_naam:=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_MLD_FACT_RAP AS SELECT m.mld_melding_key melding_nr, isd.ins_srtdiscipline_omschrijving melding_vakgroep , md.ins_discipline_omschrijving melding_groep, msm.mld_stdmelding_omschrijving melding_soort, m.mld_melding_onderwerp melding_onderwerp, m.mld_melding_datum melding_datum, mkm.mld_kenmerkmelding_waarde factuurbedrag, m.mld_melding_externsyncdate exact_exportdatum FROM mld_melding m, mld_stdmelding msm, mld_discipline md, ins_srtdiscipline isd, mld_kenmerk mk, mld_srtkenmerk msk, mld_kenmerkmelding mkm WHERE msk.mld_srtkenmerk_upper = 'FACTUURBEDRAG' and mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key and mkm.mld_kenmerk_key = mk.mld_kenmerk_key and mkm.mld_melding_key = m.mld_melding_key(+) 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; 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); -- Notificatie naar operations als een nieuwe reservering een afwijkende opstelling heeft CREATE OR REPLACE VIEW PIVP_V_NOTI_RESNEW_OPER ( sender, receiver, text, code, key, xkey, xemail, xmobile ) AS SELECT NULL sender, NULL receiver, 'Reservering '||rrr.res_reservering_key||'/'||rrr.RES_RSV_RUIMTE_VOLGNR||' heeft een afwijkende opstelling.' text, 'CUST03' code, rrr.res_reservering_key key, rrr.res_rsv_ruimte_key xkey, (SELECT listagg(p.prs_perslid_email, ';' ) within group (order by p.prs_perslid_email) from fac_groep fg, fac_gebruikersgroep fgg , prs_perslid p where fg.fac_groep_upper='BO_ASS_JOHN-ANTHONY-PETER-SCHM' AND fgg.FAC_GROEP_KEY = fg.FAC_GROEP_KEY AND p.PRS_PERSLID_KEY = fgg.PRS_PERSLID_KEY) xemail, NULL xmobile FROM res_rsv_ruimte rrr, res_ruimte_opstelling rro, fac_tracking ft WHERE rrr.res_status_bo_key = 2 AND rrr.res_rsv_ruimte_verwijder IS NULL AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key AND rro.res_ruimte_opstel_default IS NULL AND ft.fac_tracking_refkey = rrr.res_rsv_ruimte_key AND ft.fac_srtnotificatie_key=116 AND ft.fac_tracking_datum> SYSDATE-1 AND NOT EXISTS (SElECT * FROM fac_tracking ft WHERE fac_tracking_refkey=rrr.res_rsv_ruimte_key AND ft.fac_srtnotificatie_key=223 AND ft.fac_tracking_oms LIKE '%CUST03%'); -- 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 AND rrr.res_rsv_ruimte_dirtlevel=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','PREVENTIEVE MAATREGEL','CORRECTIEVE MAATREGEL','CORRECTIEVE 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_nr, (SELECT pa.prs_afdeling_omschrijving 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=fac.safe_to_number(km.mld_kenmerkmelding_waarde)) FM_nummer, (SELECT km.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key=m.mld_melding_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND UPPER(k.mld_kenmerk_omschrijving)='TOELICHTING') toelichting, (SELECT km.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key=m.mld_melding_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND UPPER(k.mld_kenmerk_omschrijving)='PLANNING GEREED') planning_gereed, (SELECT km.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key=m.mld_melding_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND UPPER(k.mld_kenmerk_omschrijving)='DATUM GEREED') datum_gereed 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, FAC_USRDATA_OMSCHR2 ) AS SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam , prs_leverancier_nr 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 ORDER BY 2; CREATE OR REPLACE VIEW PIVP_V_RUIMTEEXPORT ( alg_ruimte_key, locatie_code, gebouw_code, verdieping_code, ruimte_nr, ruimte_omschrijving, wo, vvo, huurder, relatie_code, verhuurbaar, soort_ruimte, 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, alg.alg_ruimte_opp_alt1 vvo, (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','Verhuurbaar zonder servicekosten','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, --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') = '02' -- 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') = '02' -- 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; CREATE OR REPLACE VIEW PIVP_V_OBJECTMUTATIES AS SELECT gebouw_code, ruimte_nr, ins_deel_key object, object_opmerking, object_soort, object_groep, object_discipline, tracking_oms, tracking_datum, door, TRIM(SUBSTR(materiaal,0,INSTR(materiaal,'-->')-1)) prijs_van, CASE WHEN INSTR(MATERIAAL,CHR(10))>0 THEN TRIM(SUBSTR(materiaal,INSTR(materiaal,'-->')+3,INSTR(SUBSTR(materiaal,INSTR(materiaal,'-->')+3),CHR(12),1,1))) ELSE TRIM(SUBSTR(materiaal,INSTR(materiaal,'-->')+3)) END as prijs_naar, TRIM(SUBSTR(aantal,0,INSTR(aantal,'-->')-1)) hoeveelheid_van, CASE WHEN INSTR(aantal,CHR(10))>0 THEN TRIM(SUBSTR( aantal,INSTR(aantal,'-->')+3,INSTR(SUBSTR(aantal,INSTR(aantal,'-->')+3),CHR(10)))) ELSE TRIM(SUBSTR(aantal,INSTR(aantal,'-->')+3)) END AS hoeveelheid_naar, TRIM(SUBSTR(startdatum,0,INSTR(startdatum,'-->')-1)) startdatum_van, CASE WHEN INSTR(startdatum,CHR(10))>0 THEN TRIM(SUBSTR(startdatum,INSTR(startdatum,'-->')+3,INSTR(SUBSTR(startdatum,INSTR(startdatum,'-->')+3),CHR(10)))) ELSE TRIM(SUBSTR(startdatum,INSTR(aantal,'-->')+3)) END AS startdaum_naar FROM ( SELECT a.alg_gebouw_code gebouw_code, a.alg_ruimte_nr ruimte_nr, i.ins_deel_key ins_deel_key, i.ins_deel_omschrijving object, i.ins_deel_opmerking object_opmerking, isd.ins_srtdeel_omschrijving object_soort, isg.ins_srtgroep_omschrijving object_groep, id.ins_discipline_omschrijving object_discipline, ft.fac_tracking_oms tracking_oms, ft.fac_tracking_datum tracking_datum, p.prs_perslid_naam_friendly door, CASE WHEN instr(fac_tracking_oms,'Materiaal' ) >0 then SUBSTR(fac_tracking_oms, INSTR(fac_tracking_oms,'Materiaal (EUR): ')+17) ELSE '' END as materiaal, CASE WHEN instr(fac_tracking_oms,'Hoeveelheid: ' ) >0 then SUBSTR(fac_tracking_oms, INSTR(fac_tracking_oms,'Hoeveelheid: ')+13) ELSE '' END as aantal, CASE WHEN instr(fac_tracking_oms,'Startdatum: ' ) >0 then SUBSTR(fac_tracking_oms, INSTR(fac_tracking_oms,'Startdatum: ')+12) ELSE '' END as startdatum , CASE WHEN instr(fac_tracking_oms,'Periode: ' ) >0 then SUBSTR(fac_tracking_oms, INSTR(fac_tracking_oms,'Periode: ')+9) ELSE 'LEEG' END as periode FROM fac_tracking ft, ins_deel i, ins_srtdeel isd, ins_srtgroep isg, ins_discipline id, alg_v_allonrgoed_gegevens a, prs_v_perslid_fullnames p WHERE ft.fac_srtnotificatie_key = 137 -- INSUPD AND i.ins_deel_key = fac_tracking_refkey AND a.alg_ruimte_key = i.ins_alg_ruimte_key AND p.prs_perslid_key = ft.prs_perslid_key AND ft.fac_tracking_datum > to_date ('01-01-2023', 'dd-mm-yyyy') AND isd.ins_srtdeel_key=i.ins_srtdeel_key AND isg.ins_srtgroep_key = isd.ins_srtgroep_key AND id.ins_discipline_key=i.ins_discipline_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%'; -- Exports vinden plaats op maand basis 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, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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, ''); 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, ''); -- vaste waarde pivp.add_xml_row (v_bestand, ''); -- persoon waarop geboekt wordt in Exact pivp.add_xml_row (v_bestand, ''); pivp.add_xml_element (v_bestand, 'CalcIncludeVAT', 'N'); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(v_factuurdatum,'YYYY-MM-DD') ); pivp.add_xml_row (v_bestand, ''); END IF; pivp.add_xml_row (v_bestand, ''); 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, ''); -- vaste waarde pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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, ''); pivp.add_xml_element (v_bestand, 'Quantity', '1' ); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_element (v_bestand, 'Value', rec_regel.factuurbedrag); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.afmelddatum, 'YYYY-MM-DD') ); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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, ''); END IF; v_sub_count:=0; END LOOP; IF v_count>0 THEN pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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_startmonth NUMBER; v_currentyear VARCHAR2(10); 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_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; IF v_currentmonth = 5 AND v_currentYear= '2023' THEN -- alleen voor begin de eerste 4 maanden kunnen exporteen v_startDate := TO_DATE('01-01-2023','DD-MM-YYYY'); v_endDate := TO_DATE('30-04-2023','DD-MM-YYYY'); ELSE v_startDate := TO_DATE('01-'||v_startmonth||'-'||v_currentyear,'DD-MM-YYYY'); v_endDate := LAST_DAY(v_startDate); END IF; v_factuurdatum:=v_enddate; -- 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, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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, ''); pivp.add_xml_element (v_bestand, 'Description', 'Zaalreserveringen'); -- pivp.add_xml_element(v_bestand, 'YourRef','Uwe referentie'); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); -- persoon waarop geboekt wordt in Exact pivp.add_xml_row (v_bestand, ''); pivp.add_xml_element (v_bestand, 'CalcIncludeVAT', 'N'); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(v_factuurdatum,'YYYY-MM-DD')); pivp.add_xml_row (v_bestand, ''); END IF; pivp.add_xml_row (v_bestand, ''); -- Vaste waardes worden in vervolg project evt aangepast pivp.add_xml_row (v_bestand, ''); -- vaste waarde pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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, ''); pivp.add_xml_element (v_bestand, 'Quantity', '1' ); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.datum, 'YYYY-MM-DD') ); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); UPDATE res_rsv_ruimte set res_rsv_ruimte_externsyncdate=SYSDATE WHERE res_rsv_ruimte_key=rec_regel.rrr_key; END LOOP; IF v_sub_count>=1 THEN pivp.add_xml_row (v_bestand, ''); END IF; v_sub_count:=0; END LOOP; IF v_count>0 THEN pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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_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, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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, ''); pivp.add_xml_row (v_bestand, ''); END IF; pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); END IF; v_counter:=v_counter+1; pivp.add_xml_row (v_bestand, ''); 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, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''||rec.cxo||''); pivp.add_xml_row (v_bestand, ''||rec.ehs||''); pivp.add_xml_row (v_bestand, ''||rec.secr||''); pivp.add_xml_row (v_bestand, ''||rec.comm_letter||''); pivp.add_xml_row (v_bestand, ''||rec.act_letter||''); pivp.add_xml_row (v_bestand, '0'); pivp.add_xml_row (v_bestand, ''||rec.corp_letter||''); pivp.add_xml_row (v_bestand, ''||rec.operations||''); pivp.add_xml_row (v_bestand, ''||rec.medw||''); -- pivp.add_xml_row (v_bestand, '0'); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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'); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); FOR rec IN ruimtes LOOP v_counter:=v_counter+1; pivp.add_xml_row (v_bestand, ''); pivp.add_xml_element (v_bestand, 'Description', rec.ruimte_nr); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, 'Opbrengst diversen 21%'); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, 'Kostprijs verkopen'); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, 'Asset Management'); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''||rec.wo||''); pivp.add_xml_row (v_bestand, ''||REPLACE(rec.vvo,',','.')||''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''||rec.verhuurbaar||''); pivp.add_xml_row (v_bestand, '0'); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''||rec.ruimte_type_verhuur||''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); UPDATE alg_ruimte SET alg_ruimte_externsyncdate=SYSDATE WHERE alg_ruimte_key=rec.alg_ruimte_key; END LOOP; pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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 verhuurbare 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 = 'EXA_RUIMTE' ORDER BY fac_rapport_node,fac_rapport_volgnr; -- Export in exact formaat die alle ruutes expoerteerd CREATE OR REPLACE PROCEDURE pivp_select_exact_ruimte_all(p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS CURSOR ruimtes IS SELECT * FROM pivp_v_ruimteexport WHERE verhuurbaar= '1'; v_bestand VARCHAR2(100); v_counter NUMBER; v_relatie_code VARCHAR2(10); BEGIN v_bestand := 'EXA_RUIMTE_A'; v_counter :=0; v_relatie_code :='--------'; DELETE FROM fac_rapport where fac_rapport_node='EXA_RUIMTE_A'; COMMIT; pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); FOR rec IN ruimtes LOOP v_counter:=v_counter+1; pivp.add_xml_row (v_bestand, ''); pivp.add_xml_element (v_bestand, 'Description', rec.ruimte_nr); pivp.add_xml_row (v_bestand, ''); -- pivp.add_xml_row (v_bestand, ''); -- pivp.add_xml_row (v_bestand, 'Opbrengst diversen 21%'); -- pivp.add_xml_row (v_bestand, ''); -- pivp.add_xml_row (v_bestand, ''); -- pivp.add_xml_row (v_bestand, 'Kostprijs verkopen'); -- pivp.add_xml_row (v_bestand, ''); -- pivp.add_xml_row (v_bestand, ''); -- pivp.add_xml_row (v_bestand, 'Asset Management'); -- pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''||rec.wo||''); pivp.add_xml_row (v_bestand, ''||REPLACE(rec.vvo,',','.')||''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''||rec.verhuurbaar||''); pivp.add_xml_row (v_bestand, '0'); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''||rec.ruimte_type_verhuur||''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); END LOOP; pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); 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 verhuurbare ruimtes is: '||v_counter); END; / CREATE OR REPLACE PROCEDURE PIVP_SELECT_EXACT_ALL_RUIMTE (p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS BEGIN pivp_select_exact_ruimte_all (p_applname, p_applrun); END; / CREATE OR REPLACE VIEW PIVP_V_EXPORT_EXACT_ALL_RUIMTE ( result, result_order ) AS SELECT fac_rapport_regel ,fac_rapport_volgnr FROM fac_rapport WHERE fac_rapport_node = 'EXA_RUIMTE_A' 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