FSN#41632 usertelling rapportage gelijk trekken met 20171

svn path=/Customer/trunk/; revision=35281
This commit is contained in:
Ruud Lipper
2017-09-12 13:53:46 +00:00
parent 2736d9fd2f
commit a6a0d67295

View File

@@ -1,12 +1,21 @@
-- Script containing customer specific configuration sql statements for GDZW
-- (c) 2011 SG|facilitor bv
-- $Revision$
--
-- $Id$
--
-- Support: +31 53 4800700
-- Script containing customer specific configuration sql statements for GDZW
SET ECHO ON;
SPOOL xgdzw.lst
DEFINE thisfile = 'GDZW.SQL'
DEFINE dbuser = '^GDZW'
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 gdzw_v_import_log
AS
@@ -1512,100 +1521,87 @@ CREATE OR REPLACE VIEW gdzw_v_rap_keyvsfe
laatste_login
)
AS
SELECT DECODE (key_user, 1, 'KEY', 'FE'),
pf.prs_perslid_naam_full,
oslogin,
prs_perslid_login
FROM (SELECT *
FROM (SELECT p.prs_perslid_key prs_key,
COALESCE (p.prs_perslid_oslogin,
p.prs_perslid_oslogin2)
oslogin,
1 login,
-- 1=user heeft login + groep + rechten
DECODE (
SIGN(TRUNC(COALESCE (
p.prs_perslid_login
+ 92,
SYSDATE - 1
))
- TRUNC (SYSDATE)),
-1,
0,
1
) -- 1=user heeft laatste 92 dagen ingelogd
recent_login
FROM prs_v_aanwezigperslid p
WHERE EXISTS
-- op basis van login + groep + rechten
(SELECT 1
FROM fac_v_rap_groeprechten
WHERE fclt_f_login =
COALESCE (
p.prs_perslid_oslogin,
p.prs_perslid_oslogin2
))
UNION ALL
-- FSN#24029: Soms ook personen zonder login meetellen!
SELECT p.prs_perslid_key,
NULL oslogin,
1 login,
-- 1=user telt mee, want allow_for_others!
0 recent_login
-- geen login, dus nooit recent ingelogd
FROM prs_v_aanwezigperslid p
WHERE COALESCE (p.prs_perslid_oslogin,
p.prs_perslid_oslogin2) IS NULL
AND (fac.getSetting (
'mld_allow_for_others'
) = 1
OR EXISTS
(SELECT 1
FROM bes_disc_params dp
WHERE dp.bes_disc_params_for_others =
1))
UNION ALL
-- FSN#27315: En ook eventuele "sensorusers" meetellen!
SELECT NULL prs_perslid_key,
NULL oslogin,
COUNT ( * ) login,
-- elke sensoruser telt mee als FE!
1 recent_login
-- recent actief dus tellen als recent
FROM ins_v_aanwezigdeel d
WHERE ins_deel_statedate >
TRUNC (SYSDATE - 30)) x
LEFT JOIN
-- 1=user heeft rechten op key-codes=notFE-codes
(SELECT DISTINCT fclt_f_login, 1 key_user
FROM fac_v_rap_groeprechten gr,
fac_functie f
WHERE gr.fclt_f_funcode = f.fac_functie_code
AND f.fac_functie_groep IN (1, 2)) a
ON x.oslogin = a.fclt_f_login
LEFT JOIN -- FSN#30404: 1=user is cross-domain (xd) user
(SELECT p.prs_perslid_key, 1 xd_user
FROM prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
AND p.prs_perslid_apikey IS NOT NULL
AND ab.prs_bedrijf_key =
fac.safe_to_number(fac.getSetting('xd_primary_bedrijfkey')))
b
ON x.prs_key = b.prs_perslid_key) st,
prs_perslid p,
prs_v_perslid_fullnames pf
WHERE login = 1
AND UPPER (oslogin) != '_FACILITOR'
AND p.prs_perslid_key = st.prs_key
AND pf.prs_perslid_key = p.prs_perslid_key;
SELECT DECODE (key_user, 1, 'KEY', 'FE'),
pf.prs_perslid_naam_full,
oslogin,
prs_perslid_login
FROM (SELECT *
FROM (SELECT p.prs_perslid_key prs_key,
COALESCE (p.prs_perslid_oslogin,
p.prs_perslid_oslogin2)
oslogin,
1 login, -- 1=user heeft login + groep + rechten
DECODE (
SIGN(TRUNC(COALESCE (p.prs_perslid_login + 92,
SYSDATE - 1))
- TRUNC (SYSDATE)),
-1,
0,
1) -- 1=user heeft laatste 92 dagen ingelogd
recent_login
FROM prs_v_aanwezigperslid p
WHERE EXISTS -- op basis van login + groep + rechten
(SELECT 1
FROM fac_v_webgebruiker gg
WHERE gg.prs_perslid_key = p.prs_perslid_key)
AND NOT EXISTS -- FSN#36597: WEB_FACFAC-users niet meetellen!
(SELECT 1
FROM fac_v_webgebruiker gg, fac_functie f
WHERE gg.prs_perslid_key =
p.prs_perslid_key
AND gg.fac_functie_key =
f.fac_functie_key
AND fac_functie_code = 'WEB_FACFAC')
UNION ALL -- FSN#24029: Soms ook personen zonder login meetellen!
SELECT p.prs_perslid_key,
NULL oslogin,
1 login, -- 1=user telt mee, want allow_for_others!
0 recent_login -- geen login, dus nooit recent ingelogd
FROM prs_v_aanwezigperslid p
WHERE COALESCE (p.prs_perslid_oslogin,
p.prs_perslid_oslogin2) IS NULL
AND (fac.getSetting ('mld_allow_for_others') = 1
OR EXISTS
(SELECT 1
FROM bes_disc_params dp
WHERE dp.bes_disc_params_for_others = 1))
UNION ALL -- FSN#27315: En ook eventuele "sensorusers" meetellen!
SELECT NULL prs_perslid_key,
NULL oslogin,
COUNT ( * ) login, -- elke sensoruser telt mee als FE!
1 recent_login -- recent actief dus tellen als recent
FROM ins_v_aanwezigdeel d
WHERE ins_deel_statedate > TRUNC (SYSDATE - 30)) x
LEFT JOIN -- 1=user heeft rechten op key-codes=notFE-codes
(SELECT DISTINCT fclt_f_login, 1 key_user
FROM fac_v_rap_groeprechten gr, fac_functie f
WHERE gr.fclt_f_funcode = f.fac_functie_code
AND f.fac_functie_groep IN (1, 2)) a
ON x.oslogin = a.fclt_f_login
LEFT JOIN -- FSN#30404: 1=user is cross-domain (xd) user
(SELECT p.prs_perslid_key, 1 xd_user
FROM prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
AND p.prs_perslid_apikey IS NOT NULL
AND ab.prs_bedrijf_key =
fac.safe_to_number(fac.getSetting('xd_primary_bedrijfkey')))
b
ON x.prs_key = b.prs_perslid_key) st,
prs_perslid p,
prs_v_perslid_fullnames pf
WHERE login = 1
AND p.prs_perslid_key = st.prs_key
AND pf.prs_perslid_key = p.prs_perslid_key;
------ payload end ------
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion ('GDZW', 6); END;
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
spool off
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile