Files
Customer/SKAF/skaf.sql
Ruud Lipper 0ac6245fcf SKAF#78340 - bestellingen widget bolcom
svn path=/Customer/trunk/; revision=60693
2023-06-08 10:48:04 +00:00

2505 lines
100 KiB
SQL

-- Script containing customer specific configuration sql statements for SKAF
-- (c) 2009 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800710
DEFINE thisfile = 'SKAF.SQL'
DEFINE dbuser = 'SKAF'
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 VIEW skaf_v_import_log
AS
SELECT imp_log_status fclt_f_status,
imp_log_omschrijving omschrijving,
imp_log_hint opmerking
FROM imp_log
WHERE imp_log_applicatie = 'PRS';
-- Mail2Melding - Basis uit SVRZ overgenomen:
--- IT SKAF -: key= 861= Melding ICT Overig/Restmail (ict@skaf.facilitor.nl)
CREATE OR REPLACE PROCEDURE SKAF_processemail (
pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
c_onbekend_key NUMBER (10) := 10001 ; -- PROD = 10001; -- Melder onbekend
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_exist_ticket VARCHAR2 (255) := '';
v_perslid_key NUMBER (10);
v_kostenplaats_key NUMBER (10);
v_locatie_key NUMBER (10);
v_discipline_key NUMBER (10);
v_stdmelding_key NUMBER (10);
v_melding_key NUMBER (10);
v_folder_kkey NUMBER (10);
v_count NUMBER (10);
v_count_wp NUMBER (10);
v_fac_result_from VARCHAR2 (250);
v_fac_result_fromaddr VARCHAR2 (250);
v_fw_from VARCHAR2 (1000) := '';
v_from_string VARCHAR2 (1000) := '';
v_voor_at VARCHAR2 (1000) := '';
v_na_at VARCHAR2 (1000) := '';
BEGIN
CASE
WHEN UPPER (pto) LIKE 'ICT@%'
THEN
-- 1. HANDMATIG doorgestuurd vanuit ICT@ska.nl - gaan we eerst de van-regel eruit halen
----- From: Brandon van Gelder | Ska <b.vangelder@ska.nl<mailto:b.vangelder@ska.nl>>
IF INSTR (pbody, '@',1,1)>0 AND REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1)>0 AND (INSTR (pbody, '@',1,1)-REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1)) >0 -- Er moet een Van-regel inclusief een @ in staan
THEN
v_from_string :=
SUBSTR(pbody,
REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1),
INSTR(pbody,CHR(10),REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1),1)-REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1)) ;
IF INSTR(v_from_string, '<',1,1)>0
THEN
v_na_at :=
SUBSTR(v_from_string,
INSTR(v_from_string,'@',1,1)+1,
INSTR(v_from_string,'.nl')+3 - INSTR(v_from_string,'@',1,1)-1) ;
v_voor_at :=
SUBSTR (v_from_string,
INSTR (v_from_string, '<',1,1) + 1,
INSTR (v_from_string, '@',1,1) - INSTR (v_from_string, '<',1,1) -1);
v_fw_from := v_voor_at || '@' || v_na_at;
ELSE
v_na_at :=
SUBSTR(v_from_string,
INSTR(v_from_string,'@',1,1)+1,
REGEXP_INSTR(v_from_string,'$')-INSTR(v_from_string,'@',1,1)-1) ;
v_voor_at :=
SUBSTR (v_from_string,
INSTR (v_from_string, ':',1,1) + 2,
INSTR (v_from_string, '@',1,1) - INSTR (v_from_string, ':',1,1) -2);
v_fw_from := v_voor_at || '@' || v_na_at;
END IF;
ELSE
-- 2. AUTOMATISCH doorgestuurde mail OF geen "Van: met email-adres" in de body. Dan dus maar terugvallen op de v_fromaddr...
SELECT fac_result_waarde
INTO v_fac_result_fromaddr
FROM fac_result WHERE fac_result_sessionid = psessionid AND fac_result_naam = 'fromaddr' ;
v_fac_result_fromaddr := REPLACE(REPLACE(v_fac_result_fromaddr,'>',''),'<','') ;
v_fw_from := v_fac_result_fromaddr;
END IF;
v_fw_from := SUBSTR (v_fw_from, 1, 50);
-- Bepaal de melder/noteur op basis van e-mail adres zoals in pfrom?
v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???');
SELECT COUNT (*), max(prs_perslid_key)
INTO v_count, v_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) LIKE UPPER (v_fw_from) || '%';
-- Als er persoon gevonden is, dan ff checken of er ook werkplekkoppelingen onder zijn aangemaakt
IF v_count = 1
THEN
SELECT COUNT (*)
INTO v_count_wp
FROM prs_perslidwerkplek
WHERE prs_perslid_key = v_perslid_key;
END IF;
-- Als er persoon gevonden is, dan ff checken of er op gekoppelde Afdeling ook een kostenplaats is gekoppeld
IF v_count = 1
THEN
SELECT MIN(a.prs_kostenplaats_key)
INTO v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE prs_perslid_key = v_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key ;
END IF;
-- Locatie erbij halen
IF v_count = 1 AND v_count_wp > 0
THEN
SELECT p.prs_perslid_key, MIN (wpg.alg_locatie_key)
INTO v_perslid_key, v_locatie_key
FROM prs_v_aanwezigperslid p,
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
FROM prs_perslidwerkplek pw
WHERE NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek
WHERE prs_perslid_key = pw.prs_perslid_key
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
prs_v_werkplekperslid_gegevens wpg
WHERE p.prs_perslid_key = v_perslid_key
AND p.prs_perslid_key = pw.prs_perslid_key(+)
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
GROUP BY p.prs_perslid_key;
END IF;
-- Geen werkplek of Melder onbekend - Dan melding op locatie_key 922 (Servicecentrum Amsterdamseweg)
IF (v_count = 1 AND v_count_wp = 0) OR v_count = 0
THEN
v_locatie_key := 922;
END IF;
-- Melder kan niet bepaald worden, dus inlezen onder 'Melder onbekend (M2M)'
-- Op deze 'Melder onbekend' is aan voorkant wel afdeling ICT en bijbehorende kostenplaats gekoppeld. Deze kp halen we er daarom nu ook bij
IF v_count = 0
THEN
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = c_onbekend_key;
END IF;
v_errormsg := 'Fout bepalen bestaande melding';
v_exist_ticket := psubject;
IF REGEXP_INSTR (v_exist_ticket, '\d') > 0
THEN
v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'!
v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket!
ELSE
v_exist_ticket := 'x';
END IF;
SELECT COUNT (*)
INTO v_count
FROM mld_melding
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
-- Om te voorkomen dat huisnummers in het Onderwerp resulteren in het
-- toevoegen van Notities, dit alleen doen voor nummers > 16000!
IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 16000
THEN -- Notitie bij bestaande melding!
SELECT mld_stdmelding_key, mld_melding_key
INTO v_stdmelding_key, v_melding_key
FROM mld_melding
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
v_errormsg := 'Fout toevoegen notitie';
INSERT INTO mld_melding_note (mld_melding_key,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_melding_key,
v_perslid_key,
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
0);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet!
IF fac.getsetting ('mld_melding_actiecode') = 1
THEN
UPDATE mld_melding
SET mld_melding_actiecode = 1 + 128 -- BO + Attentie
WHERE mld_melding_key = v_melding_key;
END IF;
ELSE -- Nieuwe melding!
-- Bepaal de afgesproken soortmelding met key= 861 Overig - Postbus ICT
v_errormsg := 'Fout bepalen soortmelding';
SELECT mld_ins_discipline_key, mld_stdmelding_key
INTO v_discipline_key, v_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_key = 861; -- PROD-KEY 861
-- Suggested extensions:
-- - Check for MLDUSE-write autorisations
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
-- - Append (as a note?) to an existing melding if #key is found in the subject
v_errormsg := 'Fout toevoegen melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
prs_kostenplaats_key,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed,
mld_melding_onderwerp,
mld_melding_behandelaar2_key,
mld_ins_discipline_key)
VALUES ('MLD',
4, -- email
v_locatie_key,
NULL, --v_onrgoed_keys,
SYSDATE,
'From-adres: ' || v_fw_from || CHR (13) || CHR (10) ||
SUBSTR (pbody, 1, 2000),
v_stdmelding_key,
NULL,
v_kostenplaats_key,
v_perslid_key,
v_perslid_key,
NULL,
3, -- prio normaal
SUBSTR (psubject, 1, 80),
NULL,
NULL) -- BT Helpdesk I+A
RETURNING mld_melding_key
INTO v_melding_key;
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
END IF;
-- Find the lowest volgnummer of the Folder-flexfield.
SELECT MIN (k1.mld_kenmerk_key)
INTO v_folder_kkey
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T')
OR (k1.mld_kenmerk_niveau = 'A')
)
AND NOT EXISTS
(SELECT 1
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
AND k2.mld_kenmerk_verwijder IS NULL
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T')
OR (k1.mld_kenmerk_niveau = 'A')
)
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
IF v_folder_kkey IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
END IF;
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');
END CASE;
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.writelog ('PROCESSEMAIL', 'E', 'BLOS_processemail afgebroken!', '[' || pfrom || '] ' || v_errormsg);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ');
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE skaf_import_prs (
p_import_key IN NUMBER
)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
-- LET OP: moet idem zijn als declaratie bij skaf_UPDATE_PRS
v_newline VARCHAR2 (1000); -- Input line
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_count NUMBER;
-- De importvelden:
v_prs_perslid_nr VARCHAR2 (256);
v_prs_perslid_naam VARCHAR2 (256);
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
v_prs_perslid_voorletters VARCHAR2 (256);
v_prs_perslid_voornaam VARCHAR2 (256);
v_prs_afdeling_naam VARCHAR2 (256); -- Versie 1 was op afdelingscode. Versie 2 is op afdelings_kostenplaats
v_prs_srtperslid_omschrijving VARCHAR2 (256);
v_prs_perslid_telefoonnr VARCHAR2 (256);
v_prs_perslid_email VARCHAR2 (256);
v_prs_perslid_oslogin VARCHAR2 (256);
v_prs_perslid_wachtwoord VARCHAR2 (256);
-- Overig:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM skaf_imp_prs;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- 01
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
-- 02
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
-- 03
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel);
-- 04
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters);
-- 05
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam);
-- 06
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
-- 07
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
-- 08
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving);
-- 09
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
-- 10
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
-- 11
-- fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_wachtwoord);
--
v_aanduiding :=
'['
|| v_prs_perslid_nr
|| '|'
|| v_prs_perslid_naam
|| '|'
|| v_prs_perslid_tussenvoegsel
|| '|'
|| v_prs_perslid_voornaam
|| '] ';
-- 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 (v_prs_afdeling_naam) = 'AFDELINGSCODE'
AND UPPER (v_prs_perslid_naam) = 'PERSOONACHTERNAAM'
AND UPPER (v_prs_perslid_tussenvoegsel) = 'TUSSENVOEGSEL'
AND UPPER (v_prs_perslid_voorletters) = 'VOORLETTERS'
AND UPPER (v_prs_perslid_voornaam) = 'VOORNAAM'
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOONNUMMER'
AND UPPER (v_prs_perslid_email) = 'EMAIL'
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
AND UPPER (v_prs_perslid_nr) = 'PERSONEELSNUMMER'
AND UPPER (v_prs_perslid_oslogin) = 'LOGINNAAM'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errorhint := 'Ongeldig personeelsnummer';
v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
IF LENGTH (v_prs_perslid_nr) > 16
THEN
v_prs_perslid_nr := SUBSTR (v_prs_perslid_nr, 1, 16);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Personeelsnummer te lang',
'Personeelsnummer wordt afgebroken tot ['
|| v_prs_perslid_nr
|| ']'
);
ELSE
IF (v_prs_perslid_nr IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Personeelsnummer onbekend',
'Personeelsnummer is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige naam';
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
IF LENGTH (v_prs_perslid_naam) > 30
THEN
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Naam te lang',
'Naam wordt afgebroken tot ['
|| v_prs_perslid_naam
|| ']'
);
ELSE
IF (v_prs_perslid_naam IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Naam onbekend',
'Naam is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldig tussenvoegsel';
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
IF LENGTH (v_prs_perslid_tussenvoegsel) > 10
THEN
v_prs_perslid_tussenvoegsel :=
SUBSTR (v_prs_perslid_tussenvoegsel, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Tussenvoegsel te lang',
'Tussenvoegsel wordt afgebroken tot ['
|| v_prs_perslid_tussenvoegsel
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige voorletters';
v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters);
IF LENGTH (v_prs_perslid_voorletters) > 10
THEN
v_prs_perslid_voorletters :=
SUBSTR (v_prs_perslid_voorletters, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Voorletters te lang',
'Voorletters worden afgebroken tot ['
|| v_prs_perslid_voorletters
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige voornaam';
v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam);
IF LENGTH (v_prs_perslid_voornaam) > 30
THEN
v_prs_perslid_voornaam :=
SUBSTR (v_prs_perslid_voornaam, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Voornaam is te lang',
'Voornaam wordt afgebroken tot ['
|| v_prs_perslid_voornaam
|| ']'
);
ELSE
IF (v_prs_perslid_voornaam IS NULL)
THEN
v_prs_perslid_voornaam := '-';
fac.imp_writelog
(p_import_key,
'W',
v_aanduiding || 'Voornaam onbekend',
'Voornaam wordt gezet op [-]'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige afdelingscode';
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
IF LENGTH (v_prs_afdeling_naam) > 15
THEN
v_prs_afdeling_naam := SUBSTR (v_prs_afdeling_naam, 1, 15);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Afdelingscode te lang',
'Afdelingscode wordt afgebroken tot ['
|| v_prs_afdeling_naam
|| ']'
);
ELSE
IF (v_prs_afdeling_naam IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Afdelingscode onbekend',
'Afdelingscode is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige functie';
v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving);
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
THEN
v_prs_srtperslid_omschrijving :=
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Functie te lang',
'Functie wordt afgebroken tot ['
|| v_prs_srtperslid_omschrijving
|| ']'
);
ELSE
IF (v_prs_srtperslid_omschrijving IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Functie onbekend',
'Functie is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldig telefoonnummer';
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
IF LENGTH (v_prs_perslid_telefoonnr) > 15
THEN
v_prs_perslid_telefoonnr :=
SUBSTR (v_prs_perslid_telefoonnr, 1, 15);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Telefoonnummer te lang',
'Telefoonnummer wordt afgebroken tot ['
|| v_prs_perslid_telefoonnr
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig e-mailadres';
v_prs_perslid_email := TRIM (v_prs_perslid_email);
IF LENGTH (v_prs_perslid_email) > 150
THEN
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 150);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'E-mailadres te lang',
'E-mailadres wordt afgebroken tot ['
|| v_prs_perslid_email
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig loginnaam';
v_prs_perslid_oslogin := TRIM(SUBSTR (v_prs_perslid_oslogin, 1, INSTR (v_prs_perslid_oslogin, '@', 1, 1) - 1));
IF LENGTH (v_prs_perslid_oslogin) > 30
THEN
v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Loginnaam te lang',
'Loginnaam wordt afgebroken tot ['
|| v_prs_perslid_oslogin
|| ']'
);
COMMIT;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel skaf_IMP_PRS';
INSERT INTO skaf_imp_prs
(prs_perslid_nr, prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam, prs_afdeling_naam,
prs_srtperslid_omschrijving,
alg_locatie_code, alg_gebouw_code,
alg_verdieping_volgnr, alg_ruimte_nr,
prs_perslid_telefoonnr,
prs_perslid_email,
prs_perslid_oslogin,
prs_perslid_wachtwoord
)
VALUES (v_prs_perslid_nr, v_prs_perslid_naam,
v_prs_perslid_tussenvoegsel,
v_prs_perslid_voorletters,
v_prs_perslid_voornaam, v_prs_afdeling_naam,
v_prs_srtperslid_omschrijving,
NULL, NULL,
NULL, NULL,
v_prs_perslid_telefoonnr,
v_prs_perslid_email,
v_prs_perslid_oslogin,
NULL
);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!'
);
COMMIT;
END;
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',
'Persoon: aantal ingelezen regels: '
|| TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (p_import_key,
'S',
'Persoon: aantal ongeldige importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
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 (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
END skaf_import_prs;
/
CREATE OR REPLACE PROCEDURE skaf_update_prs (
p_import_key IN NUMBER
)
IS
-- LET OP: moet idem zijn als declaratie bij SKAF_IMPORT_PRS
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer
c_max_delta_percentage NUMBER (10) := 50; -- Eenmalig 25-10-2020 op 50 gezet... Moet/kan daarna weer op 20
-- Groep waar personen in geplaatst worden (indien nog geen groep)
c_key_default_rol NUMBER(10) := 1;
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_prs_actual NUMBER (10);
v_count_prs_import NUMBER (10); -- Matching actual persons!
v_count_tot NUMBER (10);
v_count_error NUMBER (10);
v_count NUMBER (10);
--
v_perslid_key NUMBER (10);
v_afdeling_key NUMBER (10);
v_srtperslid_key NUMBER (10);
v_oslogin VARCHAR2 (30);
v_groep_defaultnaam VARCHAR2 (30);
-- Let op! Met eindatum zijn personen die niet meer in dienst zijn.
-- Dubbele nummers? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
CURSOR cdelprs
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND NOT EXISTS (
SELECT 1
FROM skaf_imp_prs ip
WHERE ip.prs_perslid_nr = p.prs_perslid_nr);
-- Let op! Met eindatum zijn personen die niet meer in dienst zijn.
CURSOR csperslid
IS
SELECT UPPER(prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
FROM skaf_imp_prs
GROUP BY UPPER (prs_srtperslid_omschrijving);
CURSOR cperslid
IS
SELECT *
FROM skaf_imp_prs;
-- Alle aanwezige personen met personeelsnummer (ie. de import-doelgroep) niet in een groep
CURSOR cnogroup
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND NOT EXISTS (SELECT 1
FROM fac_gebruikersgroep g
WHERE g.prs_perslid_key = p.prs_perslid_key);
BEGIN
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
INTO v_count_prs_actual
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL AND prs_perslid_nr IS NOT NULL;
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
INTO v_count_prs_import
FROM prs_perslid p, skaf_imp_prs ip
WHERE p.prs_perslid_nr IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_nr = ip.prs_perslid_nr;
IF ( (TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >=
(100 - c_max_delta_percentage
)
)
)
THEN
-- Geldig importbestand wat betreft aantal personen
FOR recdelprs IN cdelprs
LOOP
BEGIN
-- Heeft persoon actuele/toekomstige verplichtingen?
SELECT COUNT (*)
INTO v_count
FROM prs_perslid p, prs_v_verplichting_keys r
WHERE p.prs_perslid_key = r.prs_perslid_key
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
IF (v_count = 0)
THEN
v_errorhint := 'Fout bij verwijderen persoon';
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
fac.imp_writelog (p_import_key,
'I',
'Persoon met nummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is verwijderd',
'Persoon is verwijderd'
);
COMMIT;
ELSE
-- Staat persoon INACTIEF?
SELECT COUNT (*)
INTO v_count
FROM prs_perslid p
WHERE p.prs_perslid_naam LIKE c_persoon_inactief || '%'
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
IF (v_count = 0)
THEN
v_errorhint := 'Fout bij INACTIEF zetten persoon';
-- Persoon INACTIEF zetten (update naam + reset oslogin)
UPDATE prs_perslid
SET prs_perslid_naam =
SUBSTR (c_persoon_inactief || prs_perslid_naam,
1,
30
),
prs_perslid_oslogin = NULL
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
fac.imp_writelog (p_import_key,
'I',
'Persoon met nummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is INACTIEF gezet',
'Persoon is INACTIEF gezet'
);
ELSE
v_errorhint := 'Fout bij INACTIEF maken persoon';
-- Persoon INACTIEF maken (reset oslogin; indien handmatig INACTIEF gezet)
UPDATE prs_perslid
SET prs_perslid_oslogin = NULL
WHERE prs_perslid_naam LIKE c_persoon_inactief || '%'
AND prs_perslid_oslogin IS NOT NULL;
fac.imp_writelog (p_import_key,
'I',
'Persoon met nummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] was en blijft INACTIEF',
'Persoon was en blijft INACTIEF'
);
END IF;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint
);
COMMIT;
END;
END LOOP;
v_count_tot := 0;
v_count_error := 0;
FOR recsperslid IN csperslid
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding := recsperslid.prs_srtperslid_omschrijving || ' - ';
v_errorhint := 'Fout bij bepalen functie';
SELECT COUNT (*)
INTO v_count
FROM prs_srtperslid
WHERE UPPER (prs_srtperslid_omschrijving) =
UPPER (recsperslid.prs_srtperslid_omschrijving)
AND prs_srtperslid_verwijder IS NULL;
IF (v_count = 0)
THEN
v_errorhint := 'Fout bij toevoegen functie';
INSERT INTO prs_srtperslid
(prs_srtperslid_omschrijving
)
VALUES (recsperslid.prs_srtperslid_omschrijving
);
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Functie: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (p_import_key,
'S',
'Functie: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
v_count_tot := 0;
v_count_error := 0;
FOR recperslid IN cperslid
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recperslid.prs_perslid_nr
|| '|'
|| recperslid.prs_perslid_naam
|| '|'
|| recperslid.prs_perslid_voornaam
|| ' - ';
v_errorhint :=
'Fout bij bepalen functie ['
|| recperslid.prs_srtperslid_omschrijving
|| ']';
SELECT prs_srtperslid_key
INTO v_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_verwijder IS NULL
AND UPPER (prs_srtperslid_omschrijving) =
UPPER (recperslid.prs_srtperslid_omschrijving);
v_errorhint :=
'Fout bij bepalen afdeling (via kostenplaatsnr) ['
|| recperslid.prs_afdeling_naam
|| ']';
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling a, prs_kostenplaats k
WHERE a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND prs_afdeling_verwijder IS NULL
AND UPPER (k.prs_kostenplaats_nr) =
UPPER (recperslid.prs_afdeling_naam);
v_errorhint := 'Fout bij bepalen persoon';
SELECT COUNT (*), MAX (prs_perslid_key)
INTO v_count, v_perslid_key
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND UPPER (prs_perslid_nr) = UPPER (recperslid.prs_perslid_nr);
-- Login is afgeleid uit e-mail (alles voor @) en max 30 posities
-- Dit is al in import-deel geregeld
-- v_oslogin := SUBSTR (recperslid.prs_perslid_email, 1, INSTR (recperslid.prs_perslid_email, '@', 1, 1) - 1);
v_oslogin := recperslid.prs_perslid_oslogin;
IF (v_count = 0)
THEN
v_errorhint := 'Fout bij toevoegen persoon';
INSERT INTO prs_perslid
(prs_perslid_module, prs_srtperslid_key,
prs_afdeling_key, prs_perslid_naam,
prs_perslid_voorletters,
prs_perslid_tussenvoegsel,
prs_perslid_voornaam,
prs_perslid_telefoonnr,
prs_perslid_email,
prs_perslid_nr,
prs_perslid_oslogin
)
VALUES ('PRS', v_srtperslid_key,
v_afdeling_key, recperslid.prs_perslid_naam,
recperslid.prs_perslid_voorletters,
recperslid.prs_perslid_tussenvoegsel,
recperslid.prs_perslid_voornaam,
recperslid.prs_perslid_telefoonnr,
recperslid.prs_perslid_email,
recperslid.prs_perslid_nr,
v_oslogin
) RETURNING prs_perslid_key INTO v_perslid_key;
fac.imp_writelog (p_import_key,
'I',
'Persoon met nummer ['
|| recperslid.prs_perslid_nr
|| '] en naam ['
|| recperslid.prs_perslid_naam
|| ', '
|| recperslid.prs_perslid_voornaam
|| '] is toegevoegd',
'Persoon is toegevoegd'
);
fac.trackaction ('PRSUPD', v_perslid_key, 4,sysdate, v_aanduiding || ' is toegevoegd uit afas-prs-import') ;
COMMIT;
ELSE
IF (v_count > 1)
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding
|| ' kan persoon niet 1-duidig bepalen',
v_errorhint
);
COMMIT;
END IF;
v_errorhint := 'Fout bij wijzigen persoon';
UPDATE prs_perslid
SET prs_srtperslid_key = v_srtperslid_key,
prs_afdeling_key = v_afdeling_key,
prs_perslid_naam = recperslid.prs_perslid_naam,
prs_perslid_voorletters = recperslid.prs_perslid_voorletters,
prs_perslid_tussenvoegsel = recperslid.prs_perslid_tussenvoegsel,
prs_perslid_voornaam = recperslid.prs_perslid_voornaam,
prs_perslid_telefoonnr = recperslid.prs_perslid_telefoonnr,
prs_perslid_email = recperslid.prs_perslid_email,
prs_perslid_nr = recperslid.prs_perslid_nr,
prs_perslid_oslogin = COALESCE (v_oslogin, prs_perslid_oslogin)
WHERE prs_perslid_key = v_perslid_key;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Persoon: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (p_import_key,
'S',
'Persoon: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
-- Iedereen krijgt _default-rol die nog geen groep heeft.
FOR recnogroup IN cnogroup
LOOP
BEGIN
v_aanduiding :=
recnogroup.prs_perslid_nr
|| '|'
|| recnogroup.prs_perslid_naam
|| '|'
|| recnogroup.prs_perslid_voornaam
|| ' - ';
v_errorhint := 'Fout bij bepalen groep met key [' || c_key_default_rol || ']';
SELECT fac_groep_upper
INTO v_groep_defaultnaam
FROM fac_groep
WHERE fac_groep_key = c_key_default_rol;
v_errorhint :=
'Fout bij koppelen persoon aan groep met key [' || c_key_default_rol || ']';
INSERT INTO fac_gebruikersgroep
(fac_groep_key, prs_perslid_key
)
VALUES (c_key_default_rol, recnogroup.prs_perslid_key
);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint
);
COMMIT;
END;
END LOOP;
ELSE
fac.imp_writelog
(p_import_key,
'E',
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!',
'- max. verschilpercentage = ['
|| TO_CHAR (c_max_delta_percentage)
|| '%] <br> '
|| '- #personen importbestand = ['
|| TO_CHAR (v_count_prs_import)
|| '] <br> '
|| '- #personen Facilitor = ['
|| TO_CHAR (v_count_prs_actual)
|| ']'
);
COMMIT;
END IF; -- Geldig importbestand wat betreft aantal inserts
DELETE FROM skaf_imp_prs; -- Ivm IB maken we de personentabel weer leeg
COMMIT;
END skaf_update_prs;
/
-- Import voor Viking - catalogus Boodschappen - Beperkt Assortiment
CREATE OR REPLACE PROCEDURE skaf_import_catalogus (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT ins_srtdeel_nr, ins_srtdeel_prijs, ins_srtdeel_btw
FROM fac_imp_catalogus
WHERE ins_srtdeel_prijs IS NOT NULL and ins_srtdeel_btw IS NOT NULL;
v_ins_srtdeel_prijs NUMBER(8,2);
BEGIN
-- standaard catalogus-import aanroepen
fac_import_catalogus(p_import_key) ;
-- updaten prijzen: Wordt door Viking exclusief btw aangeleverd en zetten we hier om naar prijzen inclusief btw
FOR rec IN c
LOOP
BEGIN
v_ins_srtdeel_prijs := rec.ins_srtdeel_prijs * ((100 + rec.ins_srtdeel_btw)/100);
UPDATE fac_imp_catalogus
SET ins_srtdeel_prijs = v_ins_srtdeel_prijs
WHERE ins_srtdeel_nr = rec.ins_srtdeel_nr ;
END;
END LOOP;
END skaf_import_catalogus;
/
CREATE OR REPLACE PROCEDURE skaf_update_catalogus (p_import_key IN NUMBER)
AS
BEGIN
-- standaard catalogus-update aanroepen
fac_update_catalogus(p_import_key);
END skaf_update_catalogus;
/
CREATE OR REPLACE VIEW skaf_v_factuur_bestand (fin_factuur_key, fin_factuur_bestand)
AS
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key =
(select fac.safe_to_number(fac_usrdata_omschr)
from fac_usrdata
where fac_usrtab_key =
(select fac_usrtab_key
from fac_usrtab
where fac_usrtab_naam = '$SYSTEM')
and fac_usrdata_code='$FIN_KENMERK_KEY_BESTAND'
and fac_usrdata_verwijder is null
);
-- view tbv export naar exact
CREATE OR REPLACE VIEW skaf_v_factuur_mldcnt_gegevens (
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_nr,
fin_factuurregel_omschrijving,
fin_factuur_debiteur_nr,
project_nummer,
prs_kostensoort_refcode,
prs_kostenplaats_nr,
bes_opdr_key,
mld_opdr_key,
cnt_contract_key,
fin_factuur_statuses_key
)
AS
SELECT DISTINCT f.fin_factuur_key,
COALESCE (TO_CHAR (cnt_contract_nummer),
(SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key =
sd.ins_srtdiscipline_key)
)
opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
fb.fin_factuur_bestand,
COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
f.fin_factuur_debiteur_nr,
NULL projectnummer,
ks.prs_kostensoort_refcode,
COALESCE (kp_c.prs_kostenplaats_nr, kp_o.prs_kostenplaats_nr) prs_kostenplaats_nr,
NULL bes_opdr_key,
o.mld_opdr_key,
c.cnt_contract_key,
f.fin_factuur_statuses_key
FROM fin_factuur f,
skaf_v_factuur_bestand fb,
fin_factuurregel fr,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_kostensoort ks,
prs_kostenplaats kp_c,
prs_kostenplaats kp_o
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.fin_factuur_key = fb.fin_factuur_key(+)
AND f.bes_bestelopdr_key is null
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.prs_kostenplaats_key = kp_o.prs_kostenplaats_key (+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND c.prs_kostenplaats_key = kp_c.prs_kostenplaats_key (+)
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+);
CREATE OR REPLACE VIEW skaf_v_factuur_bes_gegevens (
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_nr,
fin_factuurregel_omschrijving,
fin_factuur_debiteur_nr,
project_nummer,
prs_kostensoort_refcode,
prs_kostenplaats_nr,
bes_opdr_key,
mld_opdr_key,
cnt_contract_key,
fin_factuur_statuses_key
)
AS
SELECT DISTINCT f.fin_factuur_key,
TO_CHAR (bo.bes_bestelopdr_id) opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
fb.fin_factuur_bestand,
b.prs_bedrijf_key,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
f.fin_factuur_debiteur_nr,
NULL projectnummer,
ks.prs_kostensoort_refcode,
kp.prs_kostenplaats_nr,
bo.bes_bestelopdr_key bes_opdr_key,
NULL mld_opdr_key,
NULL cnt_contract_key,
f.fin_factuur_statuses_key
FROM bes_bestelopdr bo,
prs_bedrijf b,
bes_bestelling bes,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
fin_factuur f,
skaf_v_factuur_bestand fb,
fin_factuurregel fr,
prs_kostensoort ks,
prs_kostenplaats kp
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes.bes_bestelling_key = bi.bes_bestelling_key
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND f.fin_factuur_key = fr.fin_factuur_key
AND f.fin_factuur_key = fb.fin_factuur_key(+);
CREATE OR REPLACE VIEW skaf_v_factuur_geg
AS
SELECT * from skaf_v_factuur_mldcnt_gegevens
UNION
SELECT * from skaf_v_factuur_bes_gegevens;
CREATE OR REPLACE VIEW skaf_v_factuur_geg_akkoord
AS
SELECT * from skaf_v_factuur_mldcnt_gegevens
WHERE fin_factuur_statuses_key = 6
UNION
SELECT * from skaf_v_factuur_bes_gegevens
WHERE fin_factuur_statuses_key = 6;
-- De OUDE ascii-rapportage van het exportbestand die voor Exact zou worden gegenereerd.
CREATE OR REPLACE VIEW skaf_v_rap_exact
(regelnummer,dagb_type, dagbknr, periode, bkjcode, bkstnr, oms25, datum, empty9, debnr,
crdnr, empty12, bedrag, drbk_in_val, valcode, koers, kredbep, bdrkredbep, vervdatfak, vervdatkrd,
empty21, empty22, weeknummer, betaalref, betwijze, grek_bdr, empty27, empty28, empty29, empty30,
empty31, transsubtype, empty33, empty34, empty35, empty36, empty37, empty38, projectnr, field40)
AS
SELECT regelnummer,dagb_type, dagbknr, periode, bkjcode, bkstnr, oms25, datum, empty9, debnr,
crdnr, empty12, bedrag, drbk_in_val, valcode, koers, kredbep, bdrkredbep, vervdatfak, vervdatkrd,
empty21, empty22, weeknummer, betaalref, betwijze, grek_bdr, empty27, empty28, empty29, empty30,
empty31, transsubtype, empty33, empty34, empty35, empty36, empty37, empty38, projectnr, '!'
FROM (SELECT 0 regelnummer,
'I' dagb_type,
'42' dagbknr,
'' periode,
'' bkjcode,
TO_CHAR (fin_factuur_key) bkstnr,
opdracht_id oms25,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
'' empty9,
'' debnr,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
crdnr,
'' empty12,
REPLACE (TO_CHAR (bedrag), ',', '.') bedrag,
'' drbk_in_val,
'' valcode,
'' koers,
'' kredbep,
'' bdrkredbep,
'' vervdatfak,
'' vervdatkrd,
'' empty21,
'' empty22,
'' weeknummer,
fin_factuur_nr || '/' || fin_factuur_debiteur_nr betaalref,
'' betwijze,
'' grek_bdr,
'' empty27,
'' empty28,
'' empty29,
'' empty30,
'' empty31,
'' transsubtype,
'' empty33,
'' empty34,
'' empty35,
'' empty36,
'' empty37,
'' empty38,
'' projectnr,
'!' empty40
FROM (SELECT fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
SUM (fin_factuurregel_totaal + fin_factuurregel_btw)
bedrag
FROM skaf_v_factuur_geg_akkoord
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr) fg
UNION ALL
SELECT fin_factuurregel_nr regelnummer,
'I' dagb_type,
'42' dagbknr,
'' periode,
'' bkjcode,
TO_CHAR (fin_factuur_key) boekstuknummer,
fin_factuur_nr || '/' || fin_factuur_debiteur_nr oms25,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
prs_kostensoort_refcode reknr,
'' debnr,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
crdnr,
'' empty12,
REPLACE (TO_CHAR (fin_factuurregel_totaal), ',', '.') bedrag,
'' drbk_in_val,
'' val_code,
'' koers,
'' kredbep,
'' bdrkredbep,
'' vervdatfak,
'' vervdatkrd,
DECODE (ROUND( (fin_factuurregel_btw / decode(fin_factuurregel_totaal,0,0.000000001,fin_factuurregel_totaal))
* 100),
19,
'4',
6,
'2',
0,
'0',
'-1'
)
btw_code,
REPLACE (TO_CHAR (fin_factuurregel_btw), ',', '.') btw_bdr,
'' weeknummer,
'' empty24,
'' empty25,
'' empty26,
prs_kostenplaats_nr kstplcode,
'' kstdrcode,
'' empty29,
'' empty30,
'' empty31,
'' transsubtype,
'' empty33,
'' empty34,
'' emtpy35,
'' empty36,
'' empty37,
'' empty38,
project_nummer projectnr,
'!' empty40
FROM skaf_v_factuur_geg_akkoord fg);
---------------------------------------------------------------------------------------------------------------
--- notificatiejobs ---
---------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE VIEW skaf_v_noti_cntreminder
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT 'CNTMAI',
NULL,
c.prs_perslid_key_beh,
'Rappel: Contract ' || c.cnt_contract_nummer_intern
|| DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)
|| ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')'
|| ' moet uiterlijk per ' || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'dd-mm-yyyy')
|| ' worden verlengd of opgezegd.',
c.cnt_contract_key,
NULL,
NULL,
NULL
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND cnt_contract_status = 0
AND NOT EXISTS
(SELECT km.cnt_contract_key
FROM cnt_kenmerkcontract km, cnt_kenmerk k
WHERE km.cnt_contract_key = c.cnt_contract_key AND km.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = 61)
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key)) ;
---------------------------------------------------------------------------------------------------------------
--- Facilitor Graphics / CAD ---
---------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE VIEW skaf_v_thema_set_res_wp
AS
SELECT ins_deel_key, DECODE (rd.res_deel_key, NULL, 0, 1) waarde
FROM ins_deel d,
(SELECT *
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd
WHERE d.ins_deel_key = rd.res_ins_deel_key(+);
CREATE OR REPLACE VIEW skaf_v_thema_vloersoort
(
ALG_RUIMTE_KEY,
WAARDE,
WAARDE_KEY
)
AS
SELECT r.alg_ruimte_key,
COALESCE (va.fac_usrdata_omschr, 'Onbekend'),
va.fac_usrdata_key
FROM alg_ruimte r,
(SELECT rr.alg_ruimte_key,
ud.fac_usrdata_omschr,
ud.fac_usrdata_key
FROM alg_onrgoedkenmerk ok,
fac_usrdata ud,
fac_kenmerkdomein rk,
alg_kenmerk k,
alg_v_aanwezigruimte rr
WHERE rk.fac_usrtab_key = ud.fac_usrtab_key
AND k.fac_kenmerkdomein_key = rk.fac_kenmerkdomein_key
AND TO_CHAR (ud.fac_usrdata_key) =
ok.alg_onrgoedkenmerk_waarde
AND ok.alg_kenmerk_key = 1020
AND k.alg_kenmerk_niveau = 'R'
AND k.alg_kenmerk_verwijder IS NULL
AND rr.alg_ruimte_key = ok.alg_onrgoed_key) va
WHERE r.alg_ruimte_key = va.alg_ruimte_key(+);
CREATE OR REPLACE VIEW skaf_v_thema_typeopvang
(
ALG_RUIMTE_KEY,
WAARDE,
WAARDE_KEY
)
AS
SELECT
v.alg_ruimte_key,
CASE
WHEN v.kdv is not null and v.bso is not null and v.slg is not null then 'KDV/BSO/SLG'
WHEN v.kdv is not null and v.bso is not null and v.slg is null then 'KDV/BSO'
WHEN v.kdv is not null and v.bso is null and v.slg is not null then 'KDV/SLG'
WHEN v.kdv is null and v.bso is not null and v.slg is not null then 'BSO/SLG'
WHEN v.kdv is not null and v.bso is null and v.slg is null then 'KDV'
WHEN v.kdv is null and v.bso is not null and v.slg is null then 'BSO'
WHEN v.kdv is null and v.bso is null and v.slg is not null then 'SLG'
ELSE '<geen intern gebruik>'
END as waarde,
'1' waarde_key
FROM
(SELECT r.alg_ruimte_key,
kdv.bestaat KDV,
bso.bestaat BSO,
slg.bestaat SLG
FROM alg_ruimte r,
(SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat
FROM prs_ruimteafdeling ra, prs_afdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'KDV') > 0
AND ra.prs_ruimteafdeling_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL) kdv,
(SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat
FROM prs_ruimteafdeling ra, prs_afdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'BSO') > 0
AND ra.prs_ruimteafdeling_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL) bso,
(SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat
FROM prs_ruimteafdeling ra, prs_afdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'SLG') > 0
AND ra.prs_ruimteafdeling_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL) slg
WHERE r.alg_ruimte_key = kdv.alg_ruimte_key(+)
AND r.alg_ruimte_key = bso.alg_ruimte_key(+)
AND r.alg_ruimte_key = slg.alg_ruimte_key(+)
AND r.alg_ruimte_verwijder IS NULL) v
;
CREATE OR REPLACE VIEW skaf_v_thema_typeopvang_spec
(
ALG_RUIMTE_KEY,
WAARDE,
WAARDE_KEY
)
AS
SELECT alg_ruimte_key, 'KDV' AS waarde, '1' AS waarde_key
FROM skaf_v_thema_typeopvang
WHERE INSTR (waarde, 'KDV') > 0
UNION
SELECT alg_ruimte_key, 'BSO' AS waarde, '2' AS waarde_key
FROM skaf_v_thema_typeopvang
WHERE INSTR (waarde, 'BSO') > 0
UNION
SELECT alg_ruimte_key, 'SLG' AS waarde, '3' AS waarde_key
FROM skaf_v_thema_typeopvang
WHERE INSTR (waarde, 'SLG') > 0;
CREATE OR REPLACE VIEW skaf_v_label_ruimteomschr
(
ALG_RUIMTE_KEY,
WAARDE
)
AS
SELECT r.alg_ruimte_key,
r.alg_ruimte_omschrijving
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key;
CREATE OR REPLACE VIEW skaf_v_label_ruimteopp
(
ALG_RUIMTE_KEY,
WAARDE
)
AS
SELECT r.alg_ruimte_key,
r.alg_ruimte_bruto_vloeropp
|| ' m2'
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key;
-- Stap 5b: Actie/trigger bij sleur+pleur van thema HV-divisie
CREATE OR REPLACE TRIGGER skaf_t_thema_vloersoort_i_iu
INSTEAD OF INSERT OR UPDATE
ON skaf_v_thema_vloersoort
DECLARE
BEGIN
DELETE FROM alg_onrgoedkenmerk ok
WHERE ok.alg_onrgoed_key = :new.alg_ruimte_key
AND ok.alg_kenmerk_key = 1020
AND ok.alg_onrgoed_niveau='R';
--UPDATE alg_onrgoedkenmerk ok
--SET ok.alg_onrgoedkenmerk_waarde = TO_CHAR(:new.waarde_key)
--WHERE ok.alg_onrgoed_key = :new.alg_ruimte_key
--AND ok.alg_kenmerk_key = 1020
--AND ok.alg_onrgoed_niveau='R';
INSERT INTO alg_onrgoedkenmerk (alg_onrgoed_key, alg_onrgoed_niveau, alg_kenmerk_key, alg_onrgoedkenmerk_waarde)
VALUES (:new.alg_ruimte_key, 'R', 1020, to_char(:new.waarde_key));
EXCEPTION
WHEN OTHERS
THEN NULL;
END;
/
--- EINDE - Facilitor Graphics / CAD ---
--- Rapportage ---
CREATE OR REPLACE VIEW skaf_v_rap_sch_ruimtenivo
(fclt_f_locatie, fclt_f_gebouw, fclt_f_verdieping, ruimte, ruimte_omschrijving, fclt_f_ruimtesoort, fclt_f_vloer, oppervlak, KDV, BSO, SLG)
AS
SELECT l.alg_locatie_code || '-' || l.alg_locatie_omschrijving, g.alg_gebouw_naam, to_char(v.alg_verdieping_volgnr),
r.alg_ruimte_nr, r.alg_ruimte_omschrijving, sr.alg_srtruimte_omschrijving, vloer.fac_usrdata_omschr, r.alg_ruimte_bruto_vloeropp,
COALESCE(kdv.bestaat,'Nee') KDV, COALESCE(bso.bestaat,'Nee') BSO, COALESCE(slg.bestaat,'Nee') SLG
FROM alg_v_aanwezigruimte r, alg_srtruimte sr, alg_verdieping v, alg_gebouw g, alg_locatie l,
(SELECT rr.alg_ruimte_key, ud.fac_usrdata_omschr, ud.fac_usrdata_key
FROM alg_onrgoedkenmerk ok,
fac_usrdata ud,
fac_kenmerkdomein rk,
alg_kenmerk k,
alg_v_aanwezigruimte rr
WHERE rk.fac_usrtab_key = ud.fac_usrtab_key
AND k.fac_kenmerkdomein_key = rk.fac_kenmerkdomein_key
AND TO_CHAR (ud.fac_usrdata_key) = ok.alg_onrgoedkenmerk_waarde
AND k.alg_kenmerk_key = 1020
AND rr.alg_ruimte_key = ok.alg_onrgoed_key) vloer,
(SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat
FROM prs_ruimteafdeling ra, prs_afdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'KDV') > 0
AND ra.prs_ruimteafdeling_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL) kdv,
(SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat
FROM prs_ruimteafdeling ra, prs_afdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'BSO') > 0
AND ra.prs_ruimteafdeling_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL) bso,
(SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat
FROM prs_ruimteafdeling ra, prs_afdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'SLG') > 0
AND ra.prs_ruimteafdeling_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL) slg
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND r.alg_ruimte_key = vloer.alg_ruimte_key (+)
AND r.alg_ruimte_key = kdv.alg_ruimte_key(+)
AND r.alg_ruimte_key = bso.alg_ruimte_key(+)
AND r.alg_ruimte_key = slg.alg_ruimte_key(+) ;
CREATE OR REPLACE VIEW skaf_v_rap_sch_locatie_rsoort
(fclt_f_locatie, fclt_f_ruimtesoort, oppervlak)
AS
SELECT fclt_f_locatie, fclt_f_ruimtesoort, SUM(oppervlak)
FROM skaf_v_rap_sch_ruimtenivo
GROUP BY fclt_f_locatie, fclt_f_ruimtesoort;
CREATE OR REPLACE VIEW skaf_v_rap_sch_locatie_vloer
(fclt_f_locatie, fclt_f_vloer, oppervlak)
AS
SELECT fclt_f_locatie, fclt_f_vloer, SUM(oppervlak)
FROM skaf_v_rap_sch_ruimtenivo
GROUP BY fclt_f_locatie, fclt_f_vloer;
CREATE OR REPLACE VIEW skaf_v_rap_sch_locatie
(fclt_f_locatie, oppervlak)
AS
SELECT fclt_f_locatie, SUM(oppervlak)
FROM skaf_v_rap_sch_ruimtenivo
GROUP BY fclt_f_locatie;
-- Alle waarden (zijn evt meer records) uit eigen tabel '$SYSTEM' waarvan de waarde_code met een
-- zekere prefix begint (volgens de systeem-setting PREFIX_FCLT_FACTUUR_XML_HEADER), komen in de header vd xml terecht.
CREATE OR REPLACE VIEW skaf_v_fclt_factuur_header (
result,
result_order
)
AS
SELECT '<' || fac_usrdata_code || '>' || fac_usrdata_omschr || '</' || fac_usrdata_code || '>', 1
FROM fac_usrdata
WHERE fac_usrtab_key =
(SELECT fac_usrtab_key
FROM fac_usrtab
WHERE fac_usrtab_naam = '$SYSTEM')
AND UPPER(fac_usrdata_code) LIKE (SELECT UPPER(fac_usrdata_omschr) || '%'
FROM fac_usrdata
WHERE fac_usrtab_key =
(SELECT fac_usrtab_key
FROM fac_usrtab
WHERE fac_usrtab_naam = '$SYSTEM')
AND fac_usrdata_code = '$PREFIX_FCLT_FACTUUR_XML_HEADER'
AND fac_usrdata_verwijder is null)
AND fac_usrdata_verwijder is null;
CREATE OR REPLACE VIEW skaf_v_fclt_factuur_body (
result,
result_order
)
AS
SELECT DECODE(regelnummer,0,'<fin_factuur>','<fin_factuurregel>')
|| '<fin_factuur_key>' || fin_factuur_key || '</fin_factuur_key>'
|| '<fin_factuur_nr>' || xml.char_to_html(fin_factuur_nr) || '</fin_factuur_nr>'
|| '<fin_factuur_bestand>' || xml.char_to_html(fin_factuur_bestand) || '</fin_factuur_bestand>'
|| '<fin_factuur_debiteur_nr>' || xml.char_to_html(fin_factuur_debiteur_nr) || '</fin_factuur_debiteur_nr>'
|| '<bes_mld_cnt_opdracht_id>' || xml.char_to_html(bes_mld_cnt_opdracht_id) || '</bes_mld_cnt_opdracht_id>'
|| '<fin_factuur_datum>' || datum || '</fin_factuur_datum>'
|| '<fin_factuur_boekmaand>' || fin_factuur_boekmaand || '</fin_factuur_boekmaand>'
|| '<prs_kostensoort_refcode>' || xml.char_to_html(grootboekrekening) || '</prs_kostensoort_refcode>'
|| '<prs_leverancier_nr>' || xml.char_to_html(crediteur_nr) || '</prs_leverancier_nr>'
|| '<prs_bedrijf_naam>' || xml.char_to_html(crediteur_naam) || '</prs_bedrijf_naam>'
|| '<fin_factuur_totaal_exbtw>' || fin_factuur_totaal_exbtw || '</fin_factuur_totaal_exbtw>'
|| '<fin_factuur_totaal_incbtw>' || fin_factuur_totaal_incbtw || '</fin_factuur_totaal_incbtw>'
|| '<fin_factuurregel_omschrijving>' || xml.char_to_html(fin_factuurregel_omschrijving) || '</fin_factuurregel_omschrijving>'
|| '<fin_factuurregel_totaal>' || fin_factuurregel_totaal || '</fin_factuurregel_totaal>'
|| '<fin_factuurregel_btw_perc>' || btw_percentage || '</fin_factuurregel_btw_perc>'
|| '<fin_factuurregel_btw_bedrag>' || btw_bedrag || '</fin_factuurregel_btw_bedrag>'
|| '<prs_kostenplaats_nr>' || xml.char_to_html(prs_kostenplaats_nr) || '</prs_kostenplaats_nr>'
|| DECODE(regelnummer, 0, '', DECODE(aant_factuur_regels - regelnummer,0,'</fin_factuurregel></fin_factuur>','</fin_factuurregel>'))
,
(10000000 + fin_factuur_key) * 100 + regelnummer
FROM (SELECT 0 regelnummer,
aant_factuur_regels,
fin_factuur_key,
fin_factuur_nr,
fin_factuur_bestand,
fin_factuur_debiteur_nr,
opdracht_id bes_mld_cnt_opdracht_id,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
fin_factuur_boekmaand,
'' grootboekrekening,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam,
REPLACE (TO_CHAR (ROUND(bedrag_exbtw,2)), ',', '.') fin_factuur_totaal_exbtw,
REPLACE (TO_CHAR (ROUND(bedrag_incbtw,2)), ',', '.') fin_factuur_totaal_incbtw,
'' fin_factuurregel_omschrijving,
'' fin_factuurregel_totaal,
'' btw_percentage,
'' btw_bedrag,
'' prs_kostenplaats_nr
FROM (SELECT fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
COUNT(fin_factuur_key) AS aant_factuur_regels,
SUM (fin_factuurregel_totaal) bedrag_exbtw,
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incbtw
FROM skaf_v_factuur_geg_akkoord
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuur_debiteur_nr) fg
UNION ALL
SELECT fin_factuurregel_nr regelnummer,
(SELECT COUNT(fin_factuur_key)
FROM skaf_v_factuur_geg_akkoord fc
WHERE fc.fin_factuur_key = fg.fin_factuur_key
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr) AS aant_factuur_regels,
fin_factuur_key,
fin_factuur_nr,
'' fin_factuur_bestand,
fin_factuur_debiteur_nr,
'' bes_mld_cnt_opdracht_id,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
fin_factuur_boekmaand,
prs_kostensoort_refcode grootboekrekening,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam,
'' fin_factuur_totaal_exbtw,
'' fin_factuur_totaal_incbtw,
fin_factuurregel_omschrijving,
REPLACE (TO_CHAR (ROUND(fin_factuurregel_totaal,2)), ',', '.') fin_factuurregel_totaal,
DECODE (ROUND( (fin_factuurregel_btw / decode(fin_factuurregel_totaal,0,0.000000001,fin_factuurregel_totaal))
* 100)
, 19,'19', 6, '6', 0, '0', '-1') btw_percentage,
REPLACE (TO_CHAR (ROUND(fin_factuurregel_btw,2)), ',', '.') btw_bedrag,
prs_kostenplaats_nr
FROM skaf_v_factuur_geg_akkoord fg
ORDER BY fin_factuur_key, regelnummer);
CREATE OR REPLACE VIEW skaf_v_export_fclt_factuur (
result,
result_order
)
AS
SELECT '<xml>',0 FROM DUAL
UNION
SELECT result, result_order FROM skaf_v_fclt_factuur_header
UNION
SELECT result, result_order FROM skaf_v_fclt_factuur_body
UNION
SELECT '</xml>',99999999999999999999 FROM DUAL;
CREATE OR REPLACE PROCEDURE skaf_export_fclt_factuur (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
-- In cursor cfactuur alle facturen die worden geexporteerd...
CURSOR cfactuur
IS
SELECT fin_factuur_key
FROM skaf_v_factuur_geg_akkoord
GROUP BY fin_factuur_key;
BEGIN
-- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT...
FOR cfact IN cfactuur
LOOP
-- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten
fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL);
END LOOP;
END;
/
CREATE OR REPLACE VIEW skaf_v_export_undo_exact (
result,
result_order
)
AS
SELECT REPLACE(REPLACE(f.fin_factuur_key
|| ';'
|| opdracht_id
|| ';'
|| fin_factuur_datum
|| ';'
|| fin_factuur_nr
|| ';'
|| prs_bedrijf_key
|| ';'
|| fin_factuurregel_totaal
|| ';'
|| fin_factuurregel_btw
|| ';'
|| fin_factuurregel_nr
|| ';'
|| fin_factuur_debiteur_nr
|| ';'
|| project_nummer
|| ';'
|| prs_kostensoort_refcode
|| ';'
|| bes_opdr_key
|| ';'
|| mld_opdr_key
|| ';'
|| cnt_contract_key
,CHR (13), ''), CHR (10), '<ret>'), f.fin_factuur_key
FROM skaf_v_factuur_geg f, fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code ='FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND f.fin_factuur_statuses_key = 7;
CREATE OR REPLACE PROCEDURE skaf_select_undo_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
BEGIN
v_errormsg := 'Geen akties';
END;
/
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE skaf_export_undo_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR cfactuur
IS
SELECT DISTINCT f.fin_factuur_key
FROM fac_tracking t, fac_srtnotificatie sn, fin_factuur f
WHERE sn.fac_srtnotificatie_code ='FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND fin_factuur_statuses_key = 7;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errormsg := 'Geen akties';
FOR cfact IN cfactuur
LOOP
-- Eerst de factuur in tracking zetten...
-- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via
-- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL);
-- Dan maar zelf en custom-made:
fac.trackaction ('FINFOK', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet');
UPDATE fin_factuur
SET fin_factuur_statuses_key = 6
WHERE fin_factuur_key = cfact.fin_factuur_key;
END LOOP;
END;
/
-- Views voor Graphs / Dashboard
CREATE OR REPLACE FORCE VIEW skaf_v_rap_mld_status
(key, mld_melding_behandelaar_key, FCLT_3D_DISCIPLINE_KEY, FCLT_3D_LOCATIE_KEY, alg_district_key, code)
AS
SELECT mld_melding_key,
mld_melding_behandelaar_key,
d.ins_discipline_key,
m.mld_alg_locatie_key,
l.alg_district_key,
'MLD_NEW'
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, alg_locatie l
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND mld_melding_status IN (2, 3, 0) -- 2-ingevoerd, 3-ingezien/te accepteren, 0-pending EN NIET 4-geaccepteerd, 7-uitgegeven, 99- niet opgelost
AND std.mld_ins_discipline_key = d.ins_discipline_key
UNION ALL
SELECT mld_melding_key,
mld_melding_behandelaar_key,
d.ins_discipline_key,
m.mld_alg_locatie_key,
l.alg_district_key,
'MLD_READY2CLOSE'
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, alg_locatie l
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND mld_melding_status IN (4, 7, 99) -- 4-geaccepteerd, 7-uitgegeven, 99- niet opgelost EN NIET 2-ingevoerd, 3-ingezien, , 0-pending
AND std.mld_ins_discipline_key = d.ins_discipline_key;
CREATE OR REPLACE FORCE VIEW skaf_v_rap_mld_status_overall
(key, FCLT_3D_DISCIPLINE_KEY, FCLT_3D_LOCATIE_KEY, code)
AS SELECT key, FCLT_3D_DISCIPLINE_KEY, FCLT_3D_LOCATIE_KEY, code
FROM skaf_v_rap_mld_status;
CREATE OR REPLACE FORCE VIEW skaf_v_rap_bes_status
(key, FCLT_3D_DISCIPLINE_KEY, FCLT_3D_LOCATIE_KEY, code)
AS
SELECT DISTINCT b.bes_bestelopdr_key,
bid.ins_discipline_key ,
l.alg_locatie_key,
'BES_READY2CLOSE'
FROM bes_bestelopdr b, mld_adres a, alg_locatie l,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_bestelling bst,
bes_srtdeel isd,
bes_srtgroep isg,
ins_tab_discipline bid
WHERE l.alg_locatie_key = A.ALG_LOCATIE_KEY
and A.MLD_ADRES_KEY = b.mld_adres_key_lev
and bes_bestelopdr_status = 4
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bst.bes_bestelling_key = bi.bes_bestelling_key
AND boi.bes_bestelopdr_key = b.bes_bestelopdr_key
AND bi.bes_srtdeel_key = isd.bes_srtdeel_key
AND isd.bes_srtgroep_key = isg.bes_srtgroep_key
AND isg.ins_discipline_key = bid.ins_discipline_key;
CREATE OR REPLACE VIEW SKAF_V_GRAPH_MLD_BEHAND (FCLT_XAS_, FCLT_YAS_, FCLT_URL)
AS
SELECT prs_perslid_voornaam, count(*), '/appl/mld/mld_search.asp?urole=bo' || '&' || 'behandel_key=' || MIN(prs_perslid_key) || '&' || 'autosearch=1'
FROM skaf_v_rap_mld_status, prs_perslid
WHERE mld_melding_behandelaar_key IS NOT NULL
AND prs_perslid_key = mld_melding_behandelaar_key
GROUP BY prs_perslid_voornaam;
CREATE OR REPLACE VIEW SKAF_V_GRAPH_MLD_PER_WIJK (FCLT_XAS_, FCLT_YAS_, FCLT_URL)
AS
SELECT SUBSTR(alg_district_omschrijving,1,10), count(*), '/appl/mld/mld_search.asp?urole=mi' || '&' || 'districtkey=' || MIN(d.alg_district_key)
|| '&' || 'mldstatus_str=4, 7, 99' || '&' || 'autosearch=1'
FROM skaf_v_rap_mld_status r, alg_district d
WHERE r.alg_district_key = d.alg_district_key
GROUP BY alg_district_omschrijving;
-- QRC-codes voor meldingen op objecten
-- Twee varianten (arai + ykpn) - Doorspreken op Acceptatie..keuze maken..
-- 1 - ARAI
CREATE OR REPLACE VIEW skaf_v_ins_qrc_mld
AS
SELECT i.ins_deel_omschrijving hide_f_sort,
l.alg_locatie_code||' '||l.alg_locatie_omschrijving fclt_f_locatie,
o.alg_gebouw_omschrijving fclt_f_gebouw,
o.alg_plaatsaanduiding fclt_f_plaats,
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,
d.ins_discipline_omschrijving||' / '||sm.mld_stdmelding_omschrijving fclt_f_melding,
i.ins_deel_key,
s.ins_srtdeel_key,
o.alg_gebouw_code,
o.alg_verdieping_code,
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,
(SELECT km.ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel km, ins_kenmerk k
WHERE km.ins_deel_key = i.ins_deel_key
AND km.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 62
AND km.ins_kenmerkdeel_verwijder IS NULL)
merk,
(SELECT km.ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel km, ins_kenmerk k
WHERE km.ins_deel_key = i.ins_deel_key
AND km.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 61
AND km.ins_kenmerkdeel_verwijder IS NULL)
serienummer,
(SELECT d.fac_usrdata_omschr
FROM ins_kenmerkdeel km, ins_kenmerk k, fac_usrtab t, fac_usrdata d
WHERE km.ins_deel_key = i.ins_deel_key
AND km.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 63
AND km.ins_kenmerkdeel_verwijder IS NULL
AND t.fac_usrtab_key = d.fac_usrtab_key
AND t.fac_usrtab_key = 161
AND fac.safe_to_number(km.ins_kenmerkdeel_waarde) = d.fac_usrdata_key)
type_opvang,
b.fac_bookmark_id hide_f_bookmark_id
FROM ins_deel i,
ins_v_alg_overzicht o,
ins_srtdeel s,
ins_srtgroep g,
ins_discipline d,
alg_locatie l,
fac_bookmark b,
mld_stdmelding sm,
mld_stdmelding_srtinst si
WHERE b.fac_bookmark_naam = 'QRC_MELDING_STORING'
AND (b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE)
AND ins_deel_verwijder IS NULL
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 = i.ins_alg_ruimte_key
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND o.alg_locatie_key = i.ins_alg_locatie_key
AND i.ins_alg_locatie_key = l.alg_locatie_key
AND sm.mld_stdmelding_key = si.mld_stdmelding_key
AND si.ins_srtinstallatie_key = DECODE(si.ins_srtinstallatie_niveau,
'S', i.ins_srtdeel_key,
'G', s.ins_srtgroep_key,
'D', g.ins_discipline_key)
;
--2. YKPN
CREATE OR REPLACE VIEW skaf_v_rap_mld_qrc2
(
omgeving,
fclt_3d_locatie_key,
fclt_3d_discipline_key,
fclt_f_discipline,
mld_stdmelding_omschrijving,
stdmelding_key,
alg_locatie_omschrijving,
fclt_f_gebouw,
fclt_f_verdieping,
plaats,
ruimte_key,
ruimtefunctie,
fclt_f_objectdiscipline,
fclt_f_objectgroep,
objectsoort_key,
fclt_f_objectsoort,
objectsoort_code,
ins_deel_key,
ins_deel_omschrijving,
ins_deel_upper,
merk,
serienummer,
type_opvang,
hide_f_bookmark_id,
hide_f_bookmark_path,
hide_f_bookmark_query,
variabele
)
AS
SELECT user omgeving,
l.alg_locatie_key,
disc.ins_discipline_key,
disc.ins_discipline_omschrijving,
msd.mld_stdmelding_omschrijving,
msd.mld_stdmelding_key,
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
o.alg_plaatsaanduiding plaats,
d.ins_alg_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving,
sd.ins_srtdeel_code,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_upper,
(SELECT km.ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel km, ins_kenmerk k
WHERE km.ins_deel_key = d.ins_deel_key
AND km.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 62
AND km.ins_kenmerkdeel_verwijder IS NULL)
merk,
(SELECT km.ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel km, ins_kenmerk k
WHERE km.ins_deel_key = d.ins_deel_key
AND km.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 61
AND km.ins_kenmerkdeel_verwijder IS NULL)
serienummer,
(SELECT d.fac_usrdata_omschr
FROM ins_kenmerkdeel km, ins_kenmerk k, fac_usrtab t, fac_usrdata d
WHERE km.ins_deel_key = d.ins_deel_key
AND km.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 63
AND km.ins_kenmerkdeel_verwijder IS NULL
AND t.fac_usrtab_key = d.fac_usrtab_key
AND t.fac_usrtab_key = 161
AND fac.safe_to_number(km.ins_kenmerkdeel_waarde) = d.fac_usrdata_key)
type_opvang,
b.fac_bookmark_id,
b.fac_bookmark_path,
b.fac_bookmark_query,
'INS_KEY'
FROM (SELECT fac_bookmark_id, fac_bookmark_path, fac_bookmark_query
FROM fac_bookmark
WHERE UPPER (fac_bookmark_path) = 'APPL/PDA/MELDING.ASP'
AND fac_bookmark_naam = 'QRC_MELDING_STORING' )
b,
(SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
si.ins_srtinstallatie_key ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'S'
UNION ALL
SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si,
ins_srtdeel sd
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'G'
AND si.ins_srtinstallatie_key = sd.ins_srtgroep_key
UNION ALL
SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si,
ins_srtgroep sg,
ins_srtdeel sd
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'D'
AND si.ins_srtinstallatie_key = sg.ins_discipline_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) msd, -- object-meldingen
ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_discipline disc,
ins_v_alg_overzicht o,
alg_locatie l,
alg_ruimte r,
alg_srtruimte sr
WHERE
msd.ins_srtdeel_key = d.ins_srtdeel_key
AND d.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND d.ins_deel_parent_key IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys
AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type
AND d.ins_alg_locatie_key = o.alg_locatie_key -- redundant?
AND o.alg_locatie_key = l.alg_locatie_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
;
-- Keuzelijst Kostenplaats bij locaties
CREATE OR REPLACE VIEW SKAF_V_KOSTENPLAATS
(
PRS_KOSTENPLAATS_KEY,
OMSCHRIJVING,
PRS_KOSTENPLAATS_VERWIJDER
)
AS
SELECT prs_kostenplaats_key,
prs_kostenplaats_upper || ' ' || prs_kostenplaats_omschrijving,
prs_kostenplaats_verwijder
FROM prs_kostenplaats
WHERE prs_kostenplaats_verwijder IS NULL
ORDER BY prs_kostenplaats_upper DESC;
-- view tbv widget met bol bestellingen die handmatig als verzonden gemarkeerd moeten
CREATE OR REPLACE VIEW skaf_v_bolbes
(
aantal
)
AS
SELECT COUNT (*)
FROM bes_bestelopdr
WHERE prs_bedrijf_key = 12921 -- bol.com
AND bes_bestelopdr_status = 3 -- in behandeling;
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('SKAF', 11); END;
/
------ 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