Files
Customer/LOGC/logc.sql
Ruud Lipper b10ac3b98b LOGC#58745 kwartaalrapport nu obv m.prs_afdeling_key
svn path=/Customer/trunk/; revision=44357
2019-09-25 10:41:58 +00:00

1358 lines
55 KiB
SQL

--
-- $Id$
--
-- Script containing customer specific db-configuration for LOGC.
DEFINE thisfile = 'LOGC.SQL'
DEFINE dbuser = '^LOGC'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE VIEW logc_v_my_activity
AS
SELECT to_date('1900-01-01', 'YYYY-MM-DD') - mld_melding_note_aanmaak HIDE_F_SORT,
n.prs_perslid_key,
n.mld_melding_note_aanmaak,
mld_melding_onderwerp,
n.mld_melding_note_omschrijving,
n.mld_melding_key
FROM mld_melding_note n, mld_melding m
WHERE n.mld_melding_key = m.mld_melding_key
UNION ALL
SELECT to_date('1900-01-01', 'YYYY-MM-DD') - fac_tracking_datum HIDE_F_SORT,
tr.prs_perslid_key,
tr.fac_tracking_datum,
mld_melding_onderwerp,
COALESCE (tr.fac_tracking_oms, LCL.L ('lcl_mld_is_' || LOWER (fac_srtnotificatie_code), 1)),
fac_tracking_refkey mld_melding_key
FROM fac_tracking tr, fac_srtnotificatie str, mld_melding m
WHERE tr.fac_tracking_refkey = m.mld_melding_key
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND str.fac_srtnotificatie_code <> 'MLDNOT' -- beetje dubbelop
AND str.fac_srtnotificatie_xmlnode IN ('melding')
ORDER BY mld_melding_note_aanmaak DESC;
CREATE OR REPLACE VIEW logc_v_rap_releasenotes
AS
SELECT m.mld_melding_key,
TRIM(NVL (
SUBSTR (mld_melding_opmerking,
0,
INSTR (mld_melding_opmerking, '*') - 1),
mld_melding_opmerking)
|| ' ('
|| m.mld_melding_key
|| ')')
onderwerp,
NVL (
SUBSTR (mld_melding_opmerking,
INSTR (mld_melding_opmerking, '*') + 2),
mld_melding_opmerking)
omchrijving,
st.mld_statuses_omschrijving status,
mld_kenmerkmelding_waarde fixversie,
CASE WHEN mld_melding_opmerking LIKE '--%' THEN 'Ja' ELSE 'Nee' END
intern
FROM mld_melding m, mld_kenmerkmelding mk, mld_statuses st
WHERE m.mld_melding_key = mk.mld_melding_key
AND mld_kenmerk_key = 25
AND m.mld_melding_status = st.mld_statuses_key;
--- IMPORT VAN URENBESTEDING FSN#51729
-- Requires
-- een flexkenmerk (op vakgroeptypeniveau) voor registratie van de bestede uren. De key is constante l_bestedingsflexkey
-- type iets van 8,2 en geen relevante min/max. Alleen lezen is goed genoeg
CREATE OR REPLACE PROCEDURE logc_import_besteding (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1) := ';';
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_import NUMBER (10) := 0;
v_ongeldig NUMBER (1);
-- De importvelden:
v_transactietekst VARCHAR2 (100);
v_projectnummer VARCHAR2 (100);
v_uren VARCHAR2 (25);
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM logc_imp_besteding;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_transactietekst);
fac.imp_getfield (v_newline, c_delim, v_projectnummer);
fac.imp_getfield (v_newline, c_delim, v_uren);
v_aanduiding := '[' || v_transactietekst || '] ';
-- 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.
-- Transactietekst;MaxString(Project);Sum(Uren)
IF (header_is_valid = 0)
THEN
IF UPPER (v_transactietekst) = 'TRANSACTIETEKST'
AND UPPER (v_projectnummer) = 'MAXSTRING(PROJECT)'
AND UPPER (v_uren) = 'SUM(UREN)'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Transactietekst (logcentrenummer) ongeldig/ongedefinieerd of te lang';
v_transactietekst := TRIM (v_transactietekst);
IF v_transactietekst IS NULL OR LENGTH (v_transactietekst) > 20 OR INSTR (v_transactietekst, '#') = 0
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Projectnummer ongeldig/ongedefinieerd of te lang';
v_projectnummer := TRIM (v_projectnummer);
IF v_projectnummer IS NULL OR LENGTH (v_projectnummer) > 100
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Uren ongeldig';
v_uren := TRIM (v_uren);
IF (v_uren IS NOT NULL AND fac.safe_to_number (replace(v_uren,',','.')) IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout bij wegschrijven importregel';
INSERT INTO logc_imp_besteding (transactietekst, projectnummer, uren)
VALUES (v_transactietekst, v_projectnummer, fac.safe_to_number (replace(v_uren,',','.')));
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'');
END;
COMMIT;
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',
'Besteding: #ingelezen importregels = ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (p_import_key,
'S',
'Besteding: #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, 200);
v_errormsg := v_errormsg || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces besteding afgebroken!');
END logc_import_besteding;
/
CREATE OR REPLACE PROCEDURE logc_update_besteding (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT * FROM logc_imp_besteding;
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_count_upd NUMBER (10);
l_meldingnr NUMBER (10);
l_bestedingsflexkey NUMBER (10) := 141; -- constante
BEGIN
v_count_tot := 0;
v_count_upd := 0;
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_errormsg := 'Fout bij bepalen bestaan transactietekst [' || rec.transactietekst || '] ';
l_meldingnr := SUBSTR (rec.transactietekst, INSTR (rec.transactietekst, '#') + 1);
SELECT COUNT ( * )
INTO v_count
FROM mld_melding
WHERE mld_melding_key = l_meldingnr;
IF (v_count = 1)
THEN
v_errormsg := 'Fout bij bijwerken besteding [' || rec.transactietekst || ' (' || l_meldingnr || ')] ';
mld.upsertmeldingkenmerk (l_bestedingsflexkey, l_meldingnr, rec.uren);
-- jammer dat de upsert geen tracking doet
END IF;
v_count_upd := v_count_upd + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Besteding: #ingelezen = ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (p_import_key,
'S',
'Besteding: #toegevoegd/bijgewerkt = ' || TO_CHAR (v_count_upd),
'');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Importproces Besteding afgebroken!');
END logc_update_besteding;
/
-- import nieuwe versie die ook dag en medewerker registreert
CREATE OR REPLACE PROCEDURE logc_import_uren_besteding (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1) := ';';
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_import NUMBER (10) := 0;
v_ongeldig NUMBER (1);
v_field VARCHAR2(100);
v_index NUMBER (2);
v_maxdate DATE;
v_mindate DATE;
-- De importvelden:
v_transactietekst VARCHAR2 (1000);
v_project VARCHAR2 (100);
v_uren VARCHAR2 (25);
v_datum_txt VARCHAR2 (20);
v_categorie VARCHAR2 (100);
v_werknemer NUMBER (10);
i_transactietekst NUMBER(2);
i_project NUMBER(2);
i_uren NUMBER(2);
i_datum_txt NUMBER(2);
i_categorie NUMBER(2);
i_werknemer NUMBER(2);
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM logc_imp_uren_besteding WHERE datum IS NULL;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
IF rec1.fac_imp_file_index = 1
THEN
v_index := 0;
v_field := 'QueQeLeQue';
WHILE v_field IS NOT NULL AND v_index < 30
LOOP
fac.imp_getfield (v_newline, c_delim, v_field);
v_index := v_index + 1;
CASE UPPER(v_field)
WHEN 'PROJECTDATUM' THEN i_datum_txt := v_index;
WHEN 'PROJECT' THEN i_project := v_index;
WHEN 'CATEGORIE' THEN i_categorie := v_index;
WHEN 'WERKNEMER' THEN i_werknemer := v_index;
WHEN 'UREN' THEN i_uren := v_index;
WHEN 'TRANSACTIETEKST' THEN i_transactietekst := v_index;
ELSE
NULL;
END CASE;
END LOOP;
IF i_datum_txt > 0
AND i_project > 0
AND i_categorie > 0
AND i_werknemer > 0
AND i_uren > 0
AND i_transactietekst > 0
THEN
header_is_valid := 1;
END IF;
ELSIF v_newline LIKE ';;;;;;%'
THEN
NULL; -- Lege regels slaan we over
ELSE
-- Lees alle veldwaarden
fac.imp_getfield_nr (v_newline, c_delim, i_transactietekst, v_transactietekst);
fac.imp_getfield_nr (v_newline, c_delim, i_project, v_project);
fac.imp_getfield_nr (v_newline, c_delim, i_uren, v_uren);
fac.imp_getfield_nr (v_newline, c_delim, i_datum_txt, v_datum_txt);
fac.imp_getfield_nr (v_newline, c_delim, i_categorie, v_categorie);
fac.imp_getfield_nr (v_newline, c_delim, i_werknemer, v_werknemer);
IF (header_is_valid = 1)
THEN
v_count_tot := v_count_tot + 1;
v_aanduiding := SUBSTR(v_transactietekst || ' ' || v_datum_txt || ' ' || v_categorie, 1, 200);
-- Controleer alle veldwaarden
--
v_errormsg := 'Categorie ongeldig';
v_categorie := TRIM (v_categorie);
IF (v_categorie IS NOT NULL AND LENGTH(v_categorie) > 10)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
v_errormsg := 'Transactietekst (logcentrenummer) ongeldig/ongedefinieerd of te lang';
v_transactietekst := TRIM (v_transactietekst);
IF v_transactietekst IS NOT NULL AND INSTR(v_transactietekst, '#') > 0
THEN
v_transactietekst := REGEXP_SUBSTR (v_transactietekst , '[[:alpha:]]{3,}#[[:digit:]]{5,}', 1, 1, 'i');
IF v_transactietekst IS NULL
THEN
--v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'');
END IF;
ELSE
v_transactietekst := NULL;
END IF;
--
v_errormsg := 'Project ongeldig/ongedefinieerd of te lang';
v_project := TRIM (v_project);
IF v_project IS NULL OR LENGTH (v_project) > 100
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Uren ongeldig';
v_uren := TRIM (v_uren);
IF (v_uren IS NOT NULL AND fac.safe_to_number (replace(v_uren,',','.')) IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Datum ongeldig';
v_datum_txt := TRIM (v_datum_txt);
IF (v_datum_txt IS NOT NULL AND fac.safe_to_date (v_datum_txt,'dd-mm-yyyy') IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Werknemer ongeldig';
v_werknemer := TRIM (v_werknemer);
IF (v_werknemer IS NOT NULL AND fac.safe_to_number (v_werknemer) IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout bij wegschrijven importregel';
INSERT INTO logc_imp_uren_besteding (transactietekst, project, uren, datum_txt, categorie, werknemer)
VALUES (v_transactietekst, v_project, fac.safe_to_number (replace(v_uren,',','.')), v_datum_txt, v_categorie, v_werknemer);
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'');
END;
COMMIT;
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!' || '(' ||
i_datum_txt || '-' ||
i_project || '-' ||
i_categorie || '-' ||
i_werknemer || '-' ||
i_uren || '-' ||
i_transactietekst || ')');
ELSE
fac.imp_writelog (p_import_key,
'S',
'Besteding: #ingelezen importregels = ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (p_import_key,
'S',
'Besteding: #ongeldige importregels = ' || TO_CHAR (v_count_tot - v_count_import),
'');
END IF;
SELECT MAX (TO_DATE (datum_txt, 'dd-mm-yyyy')) maxdate,
MIN (TO_DATE (datum_txt, 'dd-mm-yyyy')) mindate,
COUNT(*)
INTO v_maxdate, v_mindate, v_count_import
FROM logc_imp_uren_besteding
WHERE datum IS NULL;
SELECT count(*)
INTO v_count_tot
FROM logc_imp_uren_besteding
WHERE datum IS NOT NULL
AND datum >= v_mindate
AND datum <= v_maxdate;
fac.imp_writelog (p_import_key,
'S',
'Besteding: #ingelezen importregels = ' || TO_CHAR (v_count_import) || ' vervangt #regels uit import = ' || TO_CHAR (v_count_tot),
'');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces besteding afgebroken!');
END logc_import_uren_besteding;
/
CREATE OR REPLACE PROCEDURE logc_update_uren_besteding (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_count_upd NUMBER (10);
l_meldingnr NUMBER (10);
l_bestedingsflexkey NUMBER (10) := 141; -- constante
v_maxdate DATE;
v_mindate DATE;
BEGIN
v_count_tot := 0;
v_count_upd := 0;
SELECT MAX (TO_DATE (datum_txt, 'dd-mm-yyyy')) maxdate,
MIN (TO_DATE (datum_txt, 'dd-mm-yyyy')) mindate
INTO v_maxdate, v_mindate
FROM logc_imp_uren_besteding
WHERE datum IS NULL;
-- We verwijderen de data die we nu (opnieuw) ontvangen hebben. Misschien zit er een correctieregel bij.
DELETE logc_imp_uren_besteding
WHERE datum IS NOT NULL
AND datum >= v_mindate
AND datum <= v_maxdate;
-- Voeg de keys van de meldingen toe.
UPDATE logc_imp_uren_besteding i
SET mld_melding_key = (SELECT mld_melding_key
FROM mld_melding m
WHERE m.mld_melding_key = fac.safe_to_number(SUBSTR(i.transactietekst, instr(transactietekst, '#')+1,100)))
WHERE datum IS NULL;
-- En set de datum om naar een echt datumveld. Dat maakt de rapportages makkelijker.
UPDATE logc_imp_uren_besteding i
SET datum = TO_DATE (datum_txt, 'dd-mm-yyyy')
WHERE datum IS NULL;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Importproces Besteding afgebroken!');
END logc_update_uren_besteding;
/
-- View voor standaard kwartaalrapportage aan klanten (zie ticket 57657)
CREATE OR REPLACE VIEW logc_v_rap_klantoverzicht_mld
(
koptekst,
bedrijf,
hoofdklant,
extra_key,
fclt_3d_afdeling_key,
klantcode_melding,
aanvrager,
prs_perslid_key,
aanvrager_afdeling,
aanvrager_kp,
melding_datum,
melding_datum_tekst,
melding_key,
melding_nr,
onderwerp,
omschrijving,
samenvatting,
soort_melding,
vakgroep,
vakgroep_type,
huidige_status,
actie_status,
aanspreekpunt_facilitor,
behandelteam_actief,
streefdatum_gereed,
datum_afgemeld,
laatste_actiedatum,
laatste_notitie,
doorlooptijd_werkdagen,
klantreferentie,
planning,
raming,
gekoppeld_aan
)
AS
SELECT (CASE
WHEN m.mld_melding_datum >= TRUNC (SYSDATE, 'Q') -- Alle meldingen dit kwartaal
THEN
'0' -- 'Alle meldingen dit kwartaal'
WHEN m.mld_melding_datum >=
ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)
AND m.mld_melding_datum <= TRUNC (SYSDATE, 'Q') - 1
THEN
'1' -- Alle meldingen afgelopen kwartaal'
WHEN m.mld_melding_datum <
ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)
AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99)
THEN
'3' -- Alle LOPENDE meldingen die ouder zijn dan afgelopen kwartaal'
ELSE
'1' -- 'Alle meldingen die OUDER zijn dan afgelopen kwartaal, maar die wel afgelopen kwartaal zijn behandeld en afgemeld'
END)
koptekst,
b.prs_bedrijf_naam bedrijf,
(SELECT prs_afdeling_naam
FROM prs_afdeling
WHERE prs_afdeling_key =
COALESCE (am.prs_afdeling_parentkey,
am.prs_afdeling_key))
hoofdklant,
COALESCE (am.prs_afdeling_parentkey, am.prs_afdeling_key)
hoofdklant_key,
COALESCE (am.prs_afdeling_parentkey, am.prs_afdeling_key)
fclt_3d_afdeling_key,
am.prs_afdeling_naam klantcode_melding,
melder.naam,
melder.prs_perslid_key,
melder.afdeling,
melder.prs_kostenplaats_upper,
m.mld_melding_datum,
TO_CHAR (m.mld_melding_datum, 'DD-MM-YYYY'),
m.mld_melding_key,
sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingsnr,
m.mld_melding_onderwerp,
m.mld_melding_omschrijving,
m.mld_melding_opmerking,
s.mld_stdmelding_omschrijving,
md.ins_discipline_omschrijving,
sd.ins_srtdiscipline_omschrijving,
(SELECT sta.mld_statuses_omschrijving
FROM mld_statuses sta
WHERE m.mld_melding_status = sta.mld_statuses_key)
status,
CASE
WHEN m.mld_melding_actiecode = 1 AND m.mld_melding_flag = 0
THEN
''
WHEN m.mld_melding_actiecode = 1 AND m.mld_melding_flag > 0
THEN
lcl.l ('lcl_mld_flag' || m.mld_melding_flag)
WHEN m.mld_melding_actiecode = 2 AND m.mld_melding_flag = 0
THEN
'Uw actie gevraagd'
WHEN m.mld_melding_actiecode = 2 AND m.mld_melding_flag > 0
THEN
'Uw actie gevraagd - '
|| lcl.l ('lcl_mld_flag' || m.mld_melding_flag)
WHEN m.mld_melding_actiecode = 129 AND m.mld_melding_flag = 0
THEN
''
WHEN m.mld_melding_actiecode = 129 AND m.mld_melding_flag > 0
THEN
lcl.l ('lcl_mld_flag' || m.mld_melding_flag)
ELSE
''
END
actiecode,
(SELECT p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ')'
FROM prs_perslid p
WHERE m.mld_melding_behandelaar_key = p.prs_perslid_key)
aanspreekpunt_facilitor,
(SELECT d.ins_discipline_omschrijving
FROM ins_tab_discipline d
WHERE d.ins_discipline_key = m.mld_ins_discipline_key)
actiefbehandelteam,
TO_CHAR (m.mld_melding_einddatum, 'DD-MM-YYYY') streefdatumgereed,
(SELECT TO_CHAR (MAX (ft.fac_tracking_datum), 'DD-MM-YYYY')
FROM fac_tracking ft, fac_srtnotificatie srt
WHERE ft.fac_tracking_refkey = m.mld_melding_key
AND ft.fac_srtnotificatie_key = srt.fac_srtnotificatie_key
AND srt.fac_srtnotificatie_xmlnode = 'melding'
AND ft.fac_srtnotificatie_key = 39 -- MLDAFM
)
datum_afgemeld,
(SELECT TO_CHAR (MAX (ft.fac_tracking_datum), 'DD-MM-YYYY')
FROM fac_tracking ft, fac_srtnotificatie srt
WHERE ft.fac_tracking_refkey = mld_melding_key
AND ft.fac_srtnotificatie_key = srt.fac_srtnotificatie_key
AND srt.fac_srtnotificatie_xmlnode = 'melding')
laatsteactiedatum,
(SELECT CASE
WHEN MAX (mn.mld_melding_note_omschrijving) IS NOT NULL
AND LENGTH (MAX (mn.mld_melding_note_omschrijving)) <
400
THEN
MAX (mn.mld_melding_note_omschrijving)
WHEN MAX (mn.mld_melding_note_omschrijving) IS NULL
THEN
'<nog geen notities>'
ELSE
SUBSTR (MAX (mn.mld_melding_note_omschrijving),
1,
400)
|| ' ...... (zie Facilitor)'
END
omschrijving
FROM mld_melding_note mn
WHERE mn.mld_melding_key = m.mld_melding_key
AND mld_melding_note_flag = 1)
laatstenotitie,
(CASE
WHEN m.mld_melding_status IN (0, 2, 3, 4, 7, 99) -- Lopend, is ook uitgegeven en 99 niet opgelost...
THEN
fac.count_work_days (m.mld_melding_datum, SYSDATE)
WHEN m.mld_melding_status IN (5, 6) -- Verwerkt
THEN
fac.count_work_days (
m.mld_melding_datum,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey = m.mld_melding_key
AND ft.fac_srtnotificatie_key = 39)) -- MLDAFM
ELSE -- Vervallen
0
END)
doorlooptijd,
(SELECT km.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = 61)
klantreferentie,
(SELECT km.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = 25)
planning_releaseuitgifte,
(SELECT km.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = 26)
raming_uren,
(CASE
WHEN mld_melding_parentkey IS NOT NULL
THEN
'Wordt behandeld in ' || TO_CHAR (mld_melding_parentkey)
ELSE
''
END)
gekoppeldaan
FROM mld_melding m,
mld_stdmelding s,
mld_discipline md,
ins_srtdiscipline sd,
prs_kostenplaats pk,
prs_perslid p,
prs_v_aanwezigafdeling a,
prs_afdeling am,
prs_bedrijf b,
(SELECT p.prs_perslid_key,
p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ')'
naam,
prs_afdeling_naam afdeling,
kp.prs_kostenplaats_key,
kp.prs_kostenplaats_upper
FROM prs_perslid p, prs_afdeling a, prs_kostenplaats kp
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key)
melder
WHERE m.prs_perslid_key = melder.prs_perslid_key
AND m.mld_stdmelding_key = s.mld_stdmelding_key
AND s.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND am.prs_afdeling_key = m.prs_afdeling_key
AND p.prs_perslid_key = m.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND b.prs_bedrijf_key = a.prs_bedrijf_key
AND pk.prs_kostenplaats_key = m.prs_kostenplaats_key
AND ( -- Alle meldingen dit kwartaal
(m.mld_melding_datum >= TRUNC (SYSDATE, 'Q'))
OR -- Alle meldingen afgelopen kwartaal
(m.mld_melding_datum >=
ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)
AND m.mld_melding_datum <= TRUNC (SYSDATE, 'Q') - 1)
OR -- Alle LOPENDE meldingen die ouder zijn dan afgelopen kwartaal
(m.mld_melding_datum <
ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)
AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99))
OR -- Alle meldingen die OUDER zijn dan afgelopen kwartaal, maar die wel afgelopen kwartaal zijn behandeld en afgemeld)
(m.mld_melding_key IN
(SELECT mm.mld_melding_key
FROM mld_melding mm,
fac_tracking ft,
fac_srtnotificatie srt
WHERE mm.mld_melding_datum <
ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)
AND mm.mld_melding_key =
ft.fac_tracking_refkey
AND ft.fac_srtnotificatie_key =
srt.fac_srtnotificatie_key
AND srt.fac_srtnotificatie_xmlnode =
'melding'
AND ft.fac_srtnotificatie_key = 39 -- MLDAFM
AND ft.fac_tracking_datum >=
ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3))));
-- VIEW voor Notificatiejob Kwartaaloverzicht openstaande tickets opsturen naar klanten die hebben aangegeven dat ze dat willen
CREATE OR REPLACE VIEW LOGC_V_NOTI_KLANTOVERZICHT
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY
)
AS
SELECT NULL
sender,
v.prs_perslid_key
receiver,
'Overzicht meldingen ' || v.hoofdklant
text,
'CUST01'
code,
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST01')
fac_srtnotificatie_key,
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE fac_usrrap_omschrijving = 'Klantoverzicht_Kwartaal')
key,
v.extra_key -- Hoofdklant_key = afdeling_key
xkey
FROM (SELECT a.PRS_AFDELING_UPPER AS HOOFDKLANT,
a.prs_afdeling_key AS extra_key, -- HOOFDKLANT_KEY
p.prs_perslid_key,
p.prs_perslid_email AS EMAIL
FROM prs_perslid p, prs_kenmerklink km, prs_afdeling a
WHERE p.prs_perslid_key = km.prs_link_key
AND km.prs_kenmerk_key = 1020
AND km.prs_kenmerklink_waarde = 1
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL -- and p.prs_perslid_login is not null
) v,
(SELECT ADD_MONTHS (TRUNC (SYSDATE - 1, 'Q'), +3) AS NextRun -- Begin_VolgendeKwartaal
FROM DUAL) d
WHERE d.NextRun = TRUNC (SYSDATE) -- Om de job altijd de 1e van elk kwartaal te laten lopen.
;
CREATE OR REPLACE VIEW logc_v_kostenplaats_klant
AS
SELECT prs_kostenplaats_key,
prs_kostenplaats_nr || ' - ' || prs_kostenplaats_omschrijving
prs_kostenplaats_omschrijving,
COALESCE (prs_kostenplaats_verwijder, prs_kostenplaats_eind)
prs_kostenplaats_eind
FROM prs_kostenplaats;
CREATE OR REPLACE VIEW logc_v_rap_urenbesteding
AS
SELECT a1.prs_afdeling_naam
parent_afdeling,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
a1.prs_afdeling_key
fclt_3d_afdeling_key,
i.project,
i.categorie,
i.werknemer,
i.uren,
(SELECT FAC.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk mk
WHERE km.mld_kenmerk_key = mk.mld_kenmerk_key
AND mk.mld_srtkenmerk_key = 261
AND km.mld_melding_key = m.mld_melding_key)
raming,
(SELECT SUM (i2.uren)
FROM logc_imp_uren_besteding i2
WHERE i.transactietekst = i2.transactietekst)
urencum,
i.transactietekst,
pf.prs_perslid_naam_full,
i.datum,
m.mld_melding_onderwerp,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk mk
WHERE km.mld_kenmerk_key = mk.mld_kenmerk_key
AND mk.mld_srtkenmerk_key = 25
AND km.mld_melding_key = m.mld_melding_key)
custref
FROM logc_imp_uren_besteding i,
mld_melding m,
(SELECT DISTINCT
(DECODE (niveau,
2, prs_afdeling_parentkey,
1, prs_afdeling_key,
NULL))
prs_afdeling_key,
prs_kostenplaats_key
FROM prs_v_afdeling
WHERE prs_afdeling_verwijder IS NULL) ak,
prs_v_aanwezigafdeling a1,
prs_perslid p,
prs_kostenplaats k,
prs_v_perslid_fullnames_all pf
WHERE i.mld_melding_key = m.mld_melding_key(+)
AND m.prs_kostenplaats_key = ak.prs_kostenplaats_key(+)
AND ak.prs_afdeling_key = a1.prs_afdeling_key(+)
AND m.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND i.werknemer = p.prs_perslid_nr(+)
AND p.prs_perslid_key = pf.prs_perslid_key(+);
CREATE OR REPLACE VIEW logc_v_rap_mld_sleeping
AS
SELECT MAX (actiedatum) laatste_actie,
TRUNC (SYSDATE) - TRUNC (MAX (actiedatum)) dagen_stil,
p.prs_perslid_naam_full melder,
m.mld_melding_key,
a.prs_afdeling_naam || '#' || m.mld_melding_key meldingnr,
m.mld_melding_datum geregistreerd,
md.ins_discipline_omschrijving behandelgroep,
mld_stdmelding_omschrijving melding,
mld_melding_onderwerp,
pb.prs_perslid_naam_full behandelaar,
bhg.ins_discipline_omschrijving behandelteam,
abh.prs_perslid_naam_full actieve_behandelaar,
a.prs_afdeling_omschrijving klant,
CASE
WHEN mld_melding_flag > 0
THEN
lcl.l ('lcl_mld_flag' || mld_melding_flag)
END
status
FROM mld_melding m,
mld_stdmelding ms,
mld_discipline md,
prs_v_perslid_fullnames pb,
prs_v_perslid_fullnames p,
mld_discipline bhg,
prs_v_perslid_fullnames abh,
prs_afdeling a,
(SELECT n.mld_melding_key, n.mld_melding_note_aanmaak actiedatum
FROM mld_melding_note n
UNION ALL
SELECT fac_tracking_refkey, tr.fac_tracking_datum
FROM fac_tracking tr, fac_srtnotificatie str
WHERE tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND str.fac_srtnotificatie_xmlnode IN ('melding')) d
WHERE m.mld_melding_key = d.mld_melding_key
AND ms.mld_stdmelding_key = m.mld_stdmelding_key
AND md.ins_discipline_key = ms.mld_ins_discipline_key
AND mld_melding_behandelaar_key = pb.prs_perslid_key(+)
AND m.prs_perslid_key = p.prs_perslid_key
AND mld_melding_status NOT IN (1, 5, 6)
AND fac_activiteit_key IS NULL
AND m.mld_ins_discipline_key = bhg.ins_discipline_key(+)
AND m.mld_melding_behandelaar2_key = abh.prs_perslid_key(+)
AND m.prs_afdeling_key = a.prs_afdeling_key(+)
GROUP BY m.mld_melding_key,
m.prs_kostenplaats_key,
p.prs_perslid_naam_full,
m.prs_perslid_key,
mld_melding_datum,
md.ins_discipline_omschrijving,
bhg.ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
mld_melding_onderwerp,
pb.prs_perslid_naam_full,
abh.prs_perslid_naam_full,
mld_melding_flag,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving
ORDER BY MAX (actiedatum);
CREATE OR REPLACE VIEW LOGC_V_RAP_MLDSALDO
(
WEEK,
NIEUW,
MLDAFM,
NETTO,
SALDO
)
AS
SELECT week,
nieuw,
mldafm,
nieuw - mldafm netto,
SUM (nieuw - mldafm) OVER (ORDER BY week) saldo
FROM ( SELECT TRUNC (fac_tracking_datum, 'IW')
week,
(SELECT COUNT (*)
FROM mld_melding
WHERE TRUNC (mld_melding_datum, 'IW') = TRUNC (fac_tracking_datum, 'IW'))
nieuw,
COUNT (*)
MLDAFM
FROM fac_tracking
WHERE fac_srtnotificatie_key = 39 /* MLDAFM */
GROUP BY TRUNC (fac_tracking_datum, 'IW')
ORDER BY TRUNC (fac_tracking_datum, 'IW'));
CREATE OR REPLACE VIEW logc_v_rap_melding_note
AS
SELECT SYSDATE - mld_melding_note_aanmaak hide_f_sort,
m.mld_melding_key,
CASE
WHEN mld_melding_note_aanmaak > SYSDATE - 4 / 24 / 60
THEN
'updated'
WHEN mld_melding_note_aanmaak > SYSDATE - 1 / 24
THEN
'updated10'
ELSE
''
END
hide_f_rowclass,
mld_melding_note_aanmaak datum,
TO_CHAR (mld_melding_note_aanmaak, 'HH24:MI') tijd,
p.prs_perslid_naam_friendly door,
COALESCE (a.prs_afdeling_naam, prs_kostenplaats_nr)
|| '#'
|| m.mld_melding_key
nummer,
std.mld_stdmelding_omschrijving melding,
d.ins_discipline_key fclt_3d_discipline_key,
d.ins_discipline_omschrijving vakgroep,
sd.ins_srtdiscipline_omschrijving vakgroeptype,
p4.prs_perslid_naam_friendly melder,
p2.prs_perslid_naam_friendly behandelaar,
d2.ins_discipline_omschrijving team,
p3.prs_perslid_naam_friendly actieve_behandelaar,
mld_melding_note_omschrijving notitie,
m.mld_melding_onderwerp,
m.mld_melding_omschrijving,
COALESCE (a.prs_afdeling_naam, prs_kostenplaats_nr) klantcode,
COALESCE (a.prs_afdeling_omschrijving,
prs_kostenplaats_omschrijving)
klant,
COALESCE (a.prs_afdeling_naam, prs_kostenplaats_nr) || ' ('
|| COALESCE (a.prs_afdeling_omschrijving,
prs_kostenplaats_omschrijving)
|| ')'
klantcode2,
DECODE (m.prs_kostenplaats_key,
4, 'Intern',
127, 'Intern',
'Klant')
melding_klant,
DECODE (mn.mld_melding_note_flag, 1, 'Ja', 2, 'Nvt', 'Nee')
zichtbaar_fe
FROM (SELECT mld_melding_note_key,
mld_melding_key,
mld_melding_note_aanmaak,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag
FROM mld_melding_note
UNION ALL
SELECT mld_melding_key,
mld_melding_key,
ft.fac_tracking_datum, -- mld_melding_datum,
ft.prs_perslid_key,
'Nieuw: '
|| mld_melding_onderwerp
|| CHR (13)
|| SUBSTR (mld_melding_omschrijving, 1, 4000 - 80 - 10),
2
FROM mld_melding, fac_tracking ft
WHERE ft.fac_tracking_refkey = mld_melding_key
AND ft.fac_srtnotificatie_key =
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'MLDNEW')) mn,
mld_melding m,
prs_v_perslid_fullnames_all p,
prs_kostenplaats k,
mld_stdmelding std,
mld_discipline d,
ins_srtdiscipline sd,
mld_discipline d2,
prs_v_perslid_fullnames_all p2,
prs_v_perslid_fullnames_all p3,
prs_v_perslid_fullnames_all p4,
prs_afdeling a
WHERE mld_melding_note_aanmaak > SYSDATE - 365
AND m.mld_melding_key = mn.mld_melding_key
AND mn.prs_perslid_key = p.prs_perslid_key
AND m.prs_perslid_key = p4.prs_perslid_key
AND m.prs_kostenplaats_key = k.prs_kostenplaats_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
AND m.fac_activiteit_key IS NULL
AND m.mld_ins_discipline_key = d2.ins_discipline_key(+)
AND m.mld_melding_behandelaar_key = p2.prs_perslid_key(+)
AND m.mld_melding_behandelaar2_key = p3.prs_perslid_key(+)
AND m.prs_afdeling_key = a.prs_afdeling_key(+);
CREATE OR REPLACE VIEW logc_v_rap_releasenotes2
(
mld_melding_key,
notenummer,
onderwerp,
omschrijving,
melding,
vakgroep,
status_key,
status,
module,
planning,
releasenote,
note
)
AS
SELECT m.mld_melding_key,
TO_CHAR (m.mld_melding_key),
mld_melding_onderwerp,
mld_melding_omschrijving,
std.mld_stdmelding_omschrijving,
md.ins_discipline_omschrijving,
m.mld_melding_status,
st.mld_statuses_omschrijving,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata fu
WHERE mld_srtkenmerk_key = 22
AND fu.fac_usrtab_key = 1
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkmelding_waarde = TO_CHAR (fac_usrdata_key)
AND km.mld_melding_key = m.mld_melding_key)
module,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE mld_srtkenmerk_key = 1
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = m.mld_melding_key)
planning,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata fu
WHERE mld_srtkenmerk_key = 321
AND fu.fac_usrtab_key = 122
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkmelding_waarde = TO_CHAR (fac_usrdata_key)
AND km.mld_melding_key = m.mld_melding_key)
releasenote,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE mld_srtkenmerk_key = 281
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = m.mld_melding_key)
note
FROM mld_melding m,
mld_kenmerkmelding kmr,
mld_kenmerk mr,
mld_stdmelding std,
mld_discipline md,
mld_statuses st
WHERE kmr.mld_melding_key = m.mld_melding_key
AND kmr.mld_kenmerk_key = mr.mld_kenmerk_key
AND mr.mld_srtkenmerk_key = 1 ---- planning
AND kmr.mld_kenmerkmelding_waarde LIKE '20%'
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND m.mld_melding_status = st.mld_statuses_key
AND m.mld_melding_status != 1 --- vervallen
AND fac_activiteit_key IS NULL;
-- De menselijke versie van de urenbesteding, tevens basis voor de SAP-exportview
CREATE OR REPLACE VIEW logc_v_urenoverzicht
AS
SELECT TO_CHAR (mou.mld_opdr_uren_datum, 'IYYY-IW') weeknr,
p_aareon.prs_perslid_nr personeelsnr,
k.prs_kostenplaats_nr projectnr,
mou.mld_opdr_uren_datum datum,
mou.mld_opdr_uren_besteed uren,
d.prs_afdeling_naam || '#' || o.mld_melding_key logcentrenr,
pf.prs_perslid_naam_friendly medewerker,
d.prs_afdeling_naam account,
m.mld_melding_onderwerp betreft,
b.prs_bedrijf_naam klant,
o.mld_melding_key melding_key
FROM mld_opdr_uren mou,
mld_opdr o,
prs_perslid p_aareon,
prs_kostenplaats k,
mld_melding m,
prs_v_perslid_fullnames_all pf,
prs_afdeling d,
prs_bedrijf b,
prs_perslid p_klant
WHERE mou.mld_opdr_key = o.mld_opdr_key
AND m.mld_melding_key = o.mld_melding_key
AND COALESCE (m.prs_afdeling_key, p_klant.prs_afdeling_key) = d.prs_afdeling_key
AND p_klant.prs_perslid_key = m.prs_perslid_key
AND d.prs_bedrijf_key = b.prs_bedrijf_key
AND mou.prs_perslid_key = p_aareon.prs_perslid_key
AND k.prs_kostenplaats_key = o.prs_kostenplaats_key
AND pf.prs_perslid_key = p_aareon.prs_perslid_key;
-- Voor de Export van de urenbesteding naar SAP/CATS ==concept==
CREATE OR REPLACE VIEW logc_v_urenexport2cats
AS
SELECT weeknr,
personeelsnr
employeenumber,
TO_CHAR (datum, 'fmDD-MMfm-YYYY')
workdate,
projectnr
wbs_element,
ROUND (uren, 2)
catshours,
'H'
unit,
'CONS01'
acttype,
NULL
statkeyfig01,
NULL
statkeyfig02,
logcentrenr
|| ' '
|| (CASE
WHEN LENGTH (betreft) + 11 > 40 THEN SUBSTR (betreft, 1, 38 - 11) || '..'
ELSE betreft
END)
shorttext
FROM logc_v_urenoverzicht;
CREATE OR REPLACE VIEW logc_v_rap_prj_jaareffect
AS
SELECT m.mld_melding_key,
TO_CHAR (m.mld_melding_key) meldingnr,
m.mld_melding_onderwerp onderwerp,
mld_statuses_omschrijving status,
PF.PRS_PERSLID_NAAM_FRIENDLY melder,
fac.safe_to_number (km1.mld_kenmerkmelding_waarde) jaareffect,
fac.safe_to_date (km2.mld_kenmerkmelding_waarde, 'DD-MM-YYYY')
ingangsdatum,
( (fac.safe_to_number (km1.mld_kenmerkmelding_waarde / 12))
* (13
- (EXTRACT (
MONTH FROM fac.safe_to_date (
km2.mld_kenmerkmelding_waarde,
'DD-MM-YYYY')))))
jaareffect_rest,
COALESCE (
(SELECT lkp.PRS_KOSTENPLAATS_OMSCHRIJVING
FROM mld_kenmerkmelding km3, LOGC_V_KOSTENPLAATS_KLANT lkp
WHERE km3.mld_melding_key = m.mld_melding_key
AND km3.mld_kenmerk_key = 201
AND km3.mld_kenmerkmelding_waarde =
TO_CHAR (lkp.prs_kostenplaats_key)),
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km4
WHERE km4.mld_melding_key = m.mld_melding_key
AND km4.mld_kenmerk_key = 165))
Klant
FROM mld_kenmerkmelding km1,
mld_kenmerkmelding km2,
mld_melding M,
mld_statuses ms,
prs_v_perslid_fullnames_all pf
WHERE km1.mld_kenmerk_key = 171 --- Jaareffect
AND km2.mld_kenmerk_key = 167 --- Ingangsdatum
AND m.mld_melding_key = km1.mld_melding_key
AND km2.mld_melding_key = m.mld_melding_key
AND m.mld_melding_status != 1 --- afgewezen
AND m.mld_melding_status = ms.mld_statuses_key
AND pf.prs_perslid_key = m.prs_perslid_key;
------ 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