Merge 2025.1 DB50b patches

svn path=/Database/trunk/; revision=68460
This commit is contained in:
Jos Groot Lipman
2025-03-19 13:55:57 +00:00
parent 061df2a8b2
commit 3ce4d873c0
8 changed files with 157 additions and 130 deletions

View File

@@ -2492,7 +2492,7 @@ DEF_IMPORT('WEB_PRSSYS', 'FLEX', 'TRANSPORT: Flexkenmerken',
DEF_IMPORT('WEB_PRSSYS', 'USRDATA', 'FIP: Eigen tabellen', 'FIP: Own tables', 0)
DEF_IMPORT('WEB_PRSSYS', 'SLE', 'FIP: Sleutels', 'FIP: Keys', 0)
DEF_IMPORT('WEB_PRSSYS', 'FAQ', 'FIP: Kennisbank', 'FIP: Knowledge base', 0)
DEF_IMPORT('WEB_PRSSYS', 'CNT', 'FIP: Contracten', 'FIP: Contracts', 0)
DEF_IMPORT('WEB_PRSSYS', 'CNT', 'FIP: Contracten', 'FIP: Contracts', 1)
DEF_IMPORT('WEB_PRSSYS', 'MLDAFMTXT', 'FIP: Afmeldteksten', 'FIP: Standard texts', 0)
DEF_IMPORT('WEB_PRSSYS', 'BEDRIJFADRES', 'FIP: Aanvullen technische bedrijfadressen', 'FIP: Add company technical addresses', 0)
DEF_IMPORT('WEB_LCLSYS', 'TRANSLATION', 'Import of FACILITOR translation file', 'Import of FACILITOR translation file', 0)

View File

@@ -2150,6 +2150,7 @@ FAC_LCL('lcl_mes_message', 'Bericht', 'Message')
FAC_LCL('lcl_mes_message_received', 'Ontvangen bericht', 'Received message')
FAC_LCL('lcl_mes_message_received_back', 'Terug ontvangen bericht', 'Received message')
FAC_LCL('lcl_mes_message_send', 'Mijn verzonden bericht', 'My message sent')
FAC_LCL('lcl_mes_message_recipients', 'ontvangers', 'recipients')
FAC_LCL('lcl_mes_all', 'Let op: wil je dit bericht echt versturen naar ALLE Facilitor gebruikers?', 'Attention: Do you really want to send this message to ALL Facilitor users?')
FAC_LCL('lcl_mes_empty', 'Typ hier het bericht (maximaal 4.000 tekens)', 'Enter your message here (with a maximum of 4000 characters)')
FAC_LCL('lcl_mes_is_send', ' bericht is verzonden', ' message is sent')
@@ -2157,6 +2158,7 @@ FAC_LCL('lcl_mes_is_send2', ' berichten zijn verzonden', ' messages are sent')
FAC_LCL('lcl_mes_del', 'Verwijderen portalbericht', 'Delete message')
COMMIT;
FAC_LCL('lcl_mes_sent_to', 'Bericht verstuurd naar {0}', 'Message sent to {0}')
FAC_LCL('lcl_mes_no_receivers', 'Bericht niet verzonden. Geen ontvangers gevonden met opgegeven zoekcriterium. Verruim/wijzig het zoekcriterium en probeer het eventueel nogmaals', 'Message not sent. No users found that match the search criteria. Please change the criteria and try again')
FAC_LCL('lcl_mes_to_many_char', 'Het bericht is te lang', 'Too many characters')
FAC_LCL('lcl_mes_less_500', 'Maximum is 4000 tekens', 'Maximum is 4000 characters')
@@ -6965,8 +6967,8 @@ FAC_LCL('mld_typeopdr_bez_register', 'Bezoekersregistratie', 'Visitor registrati
FAC_LCL('mld_typeopdr_afhandeling', 'Afhandeltekst verplicht bij afmelden', 'Text mandatory when closing order')
FAC_LCL('mld_typeopdr_confirmforsend', 'Opdrachtverzending', 'Order sending')
FAC_LCL('mld_typeopdr_confirmforsendLOV',
'0;Direct versturen;1;Eerst vragen;2;Markeren',
'0;Send directly;1;Ask first;2;Mark')
'0;Direct versturen;1;Eerst vragen;2;Handmatig versturen',
'0;Send directly;1;Ask first;2;Send manually')
FAC_LCL('mld_typeopdr_kosten_verplicht', 'Opdrachtbedrag verplicht', 'Order amount mandatory')
FAC_LCL('mld_typeopdr_kosten_verplichtLOV',
'0;Niet verplicht;7;Bij aanmaak;6;Bij afmelden;4;Bij afronden',

View File

@@ -2294,6 +2294,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
oldersmode fac_srtnotificatie.fac_srtnotificatie_mode%TYPE;
susermode fac_srtnotificatie.fac_srtnotificatie_usermode%TYPE;
lmode fac_srtnotificatie.fac_srtnotificatie_mode%TYPE;
any_tech NUMBER;
skey fac_srtnotificatie.fac_srtnotificatie_key%TYPE;
l_srtnoti_delay fac_srtnotificatie.fac_srtnotificatie_delay%TYPE;
lemail fac_notificatie.fac_notificatie_receiver_email%TYPE;
@@ -2341,13 +2342,14 @@ CREATE OR REPLACE PACKAGE BODY fac AS
NULL;
END;
END IF;
IF smode IS NULL OR smode = 0
THEN
RETURN; -- Geen kanaal om te notificeren
END IF;
-- Misschien komt er nog een technisch adres
--IF smode IS NULL OR smode = 0
--THEN
-- RETURN; -- Geen kanaal om te notificeren
--END IF;
ELSE
-- Wel status meegegeven; die is dan vast
-- Als status=2 en pcode=xxxMAI, dan moet de mail altijd vertuurd worden.
-- Als status=2 en pcode=xxxMAI, dan moet de mail altijd verstuurd worden.
smode := poptstatus;
IF ((SUBSTR(pcode, -3) = 'MAI' AND poptstatus = 2) OR pcode = 'PRSREG')
THEN
@@ -2410,59 +2412,70 @@ CREATE OR REPLACE PACKAGE BODY fac AS
IF pbedrijfadreskey IS NULL
THEN -- Mogelijk naar technische adressen van het (interne) bedrijf waar deze persoon onder valt
FOR bedrijfadresrec
IN (SELECT ba.prs_bedrijfadres_key
FROM prs_perslid p,
prs_v_afdeling aa,
prs_bedrijfadres ba,
prs_bedrijfadres_srtnoti basrt
WHERE p.prs_perslid_key = pto
AND aa.prs_afdeling_key = p.prs_afdeling_key
AND ba.prs_bedrijf_key = aa.prs_bedrijf_key
AND ba.prs_bedrijfadres_startdatum <= SYSDATE
AND ba.prs_bedrijfadres_type = 'S' // Systeem notificaties
AND basrt.prs_bedrijfadres_key = ba.prs_bedrijfadres_key
AND basrt.fac_srtnotificatie_key = skey
)
LOOP
notbefore := SYSDATE;
delaymode := fac.safe_to_number(fac.getsetting('noti_delay_mode'));
IF delaymode = 1 -- default uit, naar technische adres zonder vertraging
THEN
notbefore := notbefore + NVL(l_srtnoti_delay/ 60/ 60/ 24, 0);
ELSIF delaymode > 1 -- fixed delay
THEN
notbefore := notbefore + delaymode / 60/ 60/ 24;
END IF;
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
prs_perslid_key_sender,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit,
fac_notificatie_sender_email,
fac_notificatie_lang,
fac_notificatie_systeemadres,
fac_notificatie_attachments,
prs_bedrijfadres_key,
fac_notificatie_notbefore)
VALUES (skey,
0,
pfrom,
soms,
pref,
pxref,
pprio,
psender,
llang,
lsysteem,
pattach,
bedrijfadresrec.prs_bedrijfadres_key, -- enige bijzondere, rest gewoon blind doorgeven,
notbefore);
END LOOP;
END IF;
FOR bedrijfadresrec
IN (SELECT ba.prs_bedrijfadres_key
FROM prs_perslid p,
prs_v_afdeling_boom aa,
prs_bedrijfadres ba,
prs_bedrijfadres_srtnoti basrt
WHERE p.prs_perslid_key = pto
AND BITAND(prs_perslid_flags, 1) = 1 -- System user, voorkomt dat het naar elke user onder dit bedrijf gaat
AND prs_perslid_verwijder IS NULL
AND aa.prs_afdeling_key = p.prs_afdeling_key
AND ba.prs_bedrijf_key = aa.prs_bedrijf_key
AND ba.prs_bedrijfadres_startdatum <= SYSDATE
AND ba.prs_bedrijfadres_type = 'S' -- Systeem notificaties
AND basrt.prs_bedrijfadres_key = ba.prs_bedrijfadres_key
AND basrt.fac_srtnotificatie_key = skey
)
LOOP
DBMS_OUTPUT.PUT_LINE('Notify systeembedrijf-adres: ' || bedrijfadresrec.prs_bedrijfadres_key);
IF (pto = pfrom) -- Toch maar niet
THEN
DBMS_OUTPUT.PUT_LINE('Maar ik ga niet naar mezelf terugsturen');
CONTINUE;
END IF;
notbefore := SYSDATE;
delaymode := fac.safe_to_number(fac.getsetting('noti_delay_mode'));
IF delaymode = 1 -- default uit, naar technische adres zonder vertraging
THEN
notbefore := notbefore + NVL(l_srtnoti_delay/ 60/ 60/ 24, 0);
ELSIF delaymode > 1 -- fixed delay
THEN
notbefore := notbefore + delaymode / 60/ 60/ 24;
END IF;
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
prs_perslid_key_sender,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit,
fac_notificatie_sender_email,
fac_notificatie_lang,
fac_notificatie_attachments,
prs_bedrijfadres_key,
fac_notificatie_notbefore)
VALUES (skey, -- deze is eerder al bepaald
0, -- nooit via andere opties versturen
pfrom,
soms,
pref,
pxref,
pprio,
psender,
llang,
pattach,
bedrijfadresrec.prs_bedrijfadres_key, -- enige bijzondere, rest gewoon blind doorgeven,
notbefore);
END LOOP;
END IF;
END IF;
IF smode IS NULL OR smode = 0
THEN
RETURN; -- Geen kanaal om te notificeren
END IF;
lmode := smode;
@@ -4997,9 +5010,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
FROM fac_tracking ft
WHERE ft.fac_tracking_key = ptrackingkey;
-- als de tracking.prs_perslid_key een systeem contactpersoon is van prs_bedrijf
-- dan geen notificatie terugsturen (Arai/van Dorp case)
-- als de tracking.prs_perslid_key een systeem contactpersoon is van het prs_bedrijf
-- dan geen notificatie terugsturen (ARAI/van Dorp case)
SELECT COUNT(*)
INTO aantal
FROM prs_contactpersoon pcp
@@ -5008,6 +5020,23 @@ CREATE OR REPLACE PACKAGE BODY fac AS
AND prs_contactpersoon_systeem = 1;
IF aantal > 0
THEN
DBMS_OUTPUT.put_line ('NOT sending notification initiated by System contact person');
RETURN;
END IF;
-- als de tracking.prs_perslid_key zelf een system user is en van het prs_bedrijf
-- dan ook geen notificatie terugsturen
SELECT COUNT(*)
INTO aantal
FROM prs_perslid p,
prs_v_afdeling_boom aa
WHERE p.prs_perslid_key = l_perslid_key
AND BITAND(p.prs_perslid_flags, 1) = 1 -- System user
AND aa.prs_afdeling_key = p.prs_afdeling_key
AND aa.prs_bedrijf_key = pbedrijf_key;
IF aantal > 0
THEN
DBMS_OUTPUT.put_line ('NOT sending notification initiated by System user');
RETURN;
END IF;
END IF;

View File

@@ -23107,7 +23107,7 @@ BEGIN
( mld_vrije_dagen_datum
, mld_vrije_dagen_id
)
VALUES (v_datum, vrije_dag.calendarid);
VALUES (v_datum, COALESCE(vrije_dag.calendarid, 'Default'));
v_count_new := v_count_new + 1;
EXCEPTION
WHEN OTHERS

View File

@@ -65,6 +65,11 @@ DEFINE_SETTING('FAC', 0000, 'WEB_FACFAC', 'sys_ip_restrict_internal'
DEFINE_SETTING('FAC', 0000, 'WEB_FACFAC', 'fac_imagecharts_account_id' , 'string' , '' , 'Image-charts account_id (future use)')
DEFINE_SETTING('FAC', 0000, 'WEB_FACFAC', 'fac_imagecharts_secret_key' , 'string' , '' , 'Image-charts secret_key (future use)')
DEFINE_SETTING('FAC', 0001, 'WEB_FACFAC', 'licensed_fe_users' , 'number' , '0' , 'Number of licensed frontend users')
DEFINE_SETTING('FAC', 0001, 'WEB_FACFAC', 'licensed_key_users' , 'number' , '0' , 'Number of licensed key users')
DEFINE_SETTING('FAC', 0001, 'WEB_FACFAC', 'licensed_device_users' , 'number' , '0' , 'Number of licensed device users')
DEFINE_SETTING('FAC', 0001, 'WEB_FACFAC', 'licensed_passive_users' , 'number' , '0' , 'Number of licensed passive users')
DEFINE_SETTING('PUO', 0000, 'WEB_FACTAB', 'tsk_master_schema' , 'string' , '' , 'Tasker master schema name (not necessarily customerId)')
DEFINE_SETTING('PUO', 0000, 'WEB_FACTAB', 'tsk_extra_folders' , 'array' , '' , 'Tasker extra folders to start CUST tasks (future use))')
DEFINE_SETTING('FAC', 0000, 'WEB_FACTAB', 'noti_delay_mode' , 'number' , '0' , '0=Notification to bedrijfadres always zero delay, 1=honor fac_srtnotificatie_delay, >1=fixed delay in seconds (eg. 5)')
@@ -109,7 +114,7 @@ DEFINE_SETTING('FAC', 0001, 'WEB_FACFAC', 'fac_api_allow_impersonate'
DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'fac_api_key_in_url' , 'boolean' , 'false' , 'Is APIKEY= in url also allowed (unsafe)? Default is header X-Facilitor-API-Key only')
DEFINE_SETTING('ALG', 0001, 'WEB_FACFAC', 'fac_betafeatures' , 'number' , '0' , 'Bits for enabling release specific experimental features')
DEFINE_SETTING('FAC', 0001, 'WEB_FACFAC', 'fac_pdf_printer' , 'number' , '0' , 'PDF Printer support bits (future use)')
DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'fac_usrrap_mode' , 'number' , '0' , 'User reports mode {0=default, 1=advanced}')
DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'fac_usrrap_mode' , 'number' , '0' , 'User reports mode {0=default, 1=advanced (UDR)}')
DEFINE_SETTING('FAC', 0001, 'WEB_FACFAC', 'fac_usrrap_safe_view_regexp' , 'string' , '' , 'User reports safe views regexp')
DEFINE_SETTING('FAC', 0001, 'WEB_FACFAC', 'fclt_web_url' , 'string' , '' , 'Url to the Facilitor software (future use)')
DEFINE_SETTING('FAC', 0001, 'WEB_FACFAC', 'hiresTimer' , 'number' , '1' , 'internal use only')

View File

@@ -619,67 +619,48 @@ AS
-- Notificatie voor opdrachten in de queue die al meer dan S(puo_failalert_threshold) minuten gefaald zijn
CREATE_VIEW(fac_v_noti_facorderqueuefails, 0)
(
sender,
receiver,
text,
par1,
code,
key,
xkey, xemail, xmobile, fac_srtnotificatie_key, attachments, xsender, prs_bedrijfadres_key
text
)
AS
SELECT '',
wg.prs_perslid_key,
LTRIM(lcl.L('lcl_facilitor_appl')) || ' alert: transmission of '
|| DECODE (
fac_srtnotificatie_code,
'ORDSNX',
'Order '
|| (SELECT mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
|| ' to '
|| COALESCE (prs_bedrijf_naam, '??')
FROM mld_opdr o, prs_bedrijf b
WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key(+) AND mld_opdr_key = key),
'BES2SX',
'Procurement order '
|| (SELECT bes_bestelopdr_id || ' to ' || prs_bedrijf_naam
FROM bes_bestelopdr o, prs_bedrijf b
WHERE o.prs_bedrijf_key = b.prs_bedrijf_key AND bes_bestelopdr_key = key),
key)
|| ' has failed '
|| COUNT ( * )
|| ' times since '
|| TO_CHAR (MIN (ft.fac_tracking_datum), 'DD-MM-YYYY HH24:MI')
|| ' (' || MIN(fac_version_cust) || ')',
NULL,
NULL,
NULL,
NULL
, NULL xemail
, NULL xmobile
, NULL fac_srtnotificatie_key
, NULL attachments
, NULL xsender
, NULL prs_bedrijfadres_key
FROM fac_v_orderqueue q,
fac_tracking ft,
fac_srtnotificatie fs,
fac_functie f,
fac_v_webgebruiker wg,
fac_version
WHERE f.fac_functie_key = wg.fac_functie_key
AND f.fac_functie_code = 'WEB_PRSSYS'
AND ft.fac_srtnotificatie_key = fs.fac_srtnotificatie_key
AND ft.fac_tracking_refkey = q.key
AND fac_srtnotificatie_code IN ('ORDSNX', 'BES2SX')
GROUP BY xmlnode,
key,
fac_srtnotificatie_code,
wg.prs_perslid_key
HAVING (SYSDATE - MIN (ft.fac_tracking_datum)) * 24 * 60 > fac.getSetting('puo_failalert_threshold');
SELECT wg.prs_perslid_key,
LTRIM (lcl.L ('lcl_facilitor_appl'))
|| ' alert: transmission of '
|| DECODE (fac_srtnotificatie_xmlnode,
'opdracht', 'Order '
|| (SELECT mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr
FROM mld_opdr o
WHERE mld_opdr_key = fac_notificatie_refkey),
'bestelopdr', 'Procurement order '
|| (SELECT bes_bestelopdr_id
FROM bes_bestelopdr o
WHERE bes_bestelopdr_key = fac_notificatie_refkey),
fac_notificatie_refkey)
|| ' to '
|| COALESCE ((SELECT (prs_bedrijf_naam)
FROM prs_bedrijf b, prs_bedrijfadres pba
WHERE b.prs_bedrijf_key = pba.prs_bedrijf_key
AND pba.prs_bedrijfadres_key = q.prs_bedrijfadres_key),
'??')
|| ' has failed '
|| fac_notificatie_failcount
|| ' times since '
|| TO_CHAR (q.fac_notificatie_datum, 'DD-MM-YYYY HH24:MI')
|| ' ('
|| fac_version_cust
|| ')'
FROM fac_notificatie q,
fac_srtnotificatie fs,
fac_functie f,
fac_v_webgebruiker wg,
fac_version
WHERE f.fac_functie_key = wg.fac_functie_key
AND f.fac_functie_code = 'WEB_PRSSYS'
AND q.fac_srtnotificatie_key = fs.fac_srtnotificatie_key
AND BITAND (q.fac_notificatie_status, 64) = 0
AND (q.prs_bedrijfadres_key IS NOT NULL OR q.fac_notificatie_systeemadres IS NOT NULL)
AND q.fac_notificatie_failcount > 0
AND (SYSDATE - q.fac_notificatie_datum) * 24 * 60 > fac.getSetting ('puo_failalert_threshold');
-- dagelijkse notificatie voor verwoede inlogpogingen (1 regel per user beetje veel misschien)
CREATE OR REPLACE FORCE VIEW fac_v_noti_auditfail_day

View File

@@ -183,6 +183,8 @@ AS
, TO_CHAR(id.ins_deel_vervaldatum,'dd-mm-yyyy') Vervaldatum
, id.ins_deel_aantal Aantal
, id.ins_deel_externnr Externnr
, NULL Parentobjectsoortomschr
, NULL Parentobjectidentificatie
, NULL Kenmerk1
, NULL Kenmerk2
, NULL Kenmerk3
@@ -214,8 +216,8 @@ AS
, res_deel rd
, res_discipline r
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND d.alg_locatie_key = l.alg_locatie_key
AND d.alg_gebouw_key = g.alg_gebouw_key
AND d.alg_locatie_key = l.alg_locatie_key(+)
AND d.alg_gebouw_key = g.alg_gebouw_key(+)
AND d.ins_deel_key = id.ins_deel_key
AND d.ins_discipline_key = i.ins_discipline_key
AND id.ins_deel_key = rd.res_ins_deel_key(+)
@@ -275,6 +277,11 @@ SELECT sd.ins_srtdiscipline_omschrijving vakgroeptype
AND sm.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND sm.mld_typeopdr_key = mt.mld_typeopdr_key(+)
AND sm.prs_dienst_key = pd.prs_dienst_key(+)
AND sm.mld_stdmelding_verwijder IS NULL
AND ( sm.mld_stdmelding_vervaldatum IS NULL
OR sm.mld_stdmelding_vervaldatum > SYSDATE)
AND md.ins_discipline_verwijder IS NULL
AND sd.ins_srtdiscipline_verwijder IS NULL
;
-- import: FIP: 1-Aanvullen districten t/m gebouwen
@@ -341,7 +348,7 @@ SELECT l.alg_locatie_code Locatiecode
, pa.prs_afdeling_naam Afdelingscode
, ra.prs_ruimteafdeling_bezetting Bezetting
, CASE WHEN rb.aantal IS NULL
THEN 0
THEN 0
ELSE 1
END ReserveerbareRuimte
, rd.ins_discipline_omschrijving Categorie
@@ -482,7 +489,7 @@ SELECT l.alg_locatie_code Locatiecode
, alg_verdieping v
, prs_perslidwerkplek b
, prs_werkplek w
, prs_kostenplaats k
, prs_kostenplaats k
WHERE p.prs_srtperslid_key = s.prs_srtperslid_key(+)
AND p.prs_afdeling_key = a.prs_afdeling_key(+)
AND w.prs_alg_ruimte_key = o.alg_onroerendgoed_keys(+)
@@ -551,7 +558,7 @@ SELECT c.cnt_contract_nummer_intern ContractNr
, TO_CHAR(c.cnt_contract_termijnkosten) Termijnbedrag --X_termijnbedrag
, TO_CHAR(c.cnt_contract_uurloon) Uurtarief --Y_uurtarief
, TO_CHAR(c.cnt_contract_korting) Korting --Z_korting
, p.cnt_alg_plaats_code ScopeType --AA_scope
, p.cnt_alg_plaats_code ScopeType --AA_scope
, (SELECT MIN(CASE WHEN p.cnt_alg_plaats_code = 'L' THEN alg_locatie_code
WHEN p.cnt_alg_plaats_code = 'G' THEN alg_gebouw_code
ELSE ''
@@ -583,13 +590,13 @@ SELECT c.cnt_contract_nummer_intern ContractNr
, prs_v_aanwezigperslid b
, prs_v_aanwezigperslid e
, prs_kostenplaats k
WHERE c.cnt_contract_mantel_key = m.cnt_contract_key(+)
WHERE c.cnt_contract_mantel_key = m.cnt_contract_key(+)
AND c.cnt_contract_key = p.cnt_contract_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = b.prs_perslid_key
AND c.prs_perslid_key_eig = e.prs_perslid_key
AND c.prs_kostenplaats_key = k.prs_kostenplaats_key
AND c.cnt_contract_verwijder IS NULL
AND c.cnt_contract_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL
AND b.prs_perslid_email IS NOT NULL
AND k.prs_kostenplaats_verwijder IS NULL