SKAF#79641: Taak koppelen aan lopende uitvoeringsmelding.

svn path=/Website/branches/v2023.3/; revision=62312
This commit is contained in:
Maykel Geerdink
2023-10-24 12:32:56 +00:00
parent d6e12a996c
commit 1909cbb922
3 changed files with 87 additions and 35 deletions

View File

@@ -427,6 +427,7 @@ FCLTHeader.Requires({ plugins: ["jQuery"],
omitRefType: true, // Het veld "kto_type" weglaten.
referenceType: "M", // Referentie meldingen
filtercode: "MJBU",
urlAdd: [{ urlParam: "ins_key_arr", field: "ins_keys" }],
required: true
});
MODAL_BLOCK_END();

View File

@@ -31,6 +31,7 @@ var perslidKey = getQParamInt("prs_key", user_key); // Voor wie is de melding
var stdm_key = getQParamInt("stdm_key", -1); // Voor wie is de melding
var filtercode = getQParam("filtercode", "");
var excl_mld_key_arr = getQParamIntArray("excludemldkey", []);
var ins_keys = getQParamIntArray("ins_key_arr", []);
if (filtercode == "MG" || filtercode == "MGO" || filtercode == "MJBU")
{
@@ -57,10 +58,10 @@ var mld_read = authparams && (authparams.PRSreadlevel < 9 && authparams.ALGrea
var func_keys = authparams && authparams.autfunctionkeys;
var filt_params = { perslidKey: perslidKey,
funcKeys: func_keys };
funcKeys: func_keys,
chars: chars };
var filtClause = getFiltClauseReferentie(filtercode, filt_params);
if (ikBenVerantwoordelijke || mld_read)
{ // Ik heb rechten om referenties op te halen.
var sql = "";
@@ -84,7 +85,9 @@ if (ikBenVerantwoordelijke || mld_read)
+ " , TO_CHAR(m.mld_melding_einddatum, 'DD-MM-YYYY') refdesc"
+ " , SUBSTR(m.mld_melding_onderwerp, 1, 200) reftitle"
+ " , m.mld_melding_einddatum datum"
+ ((filtercode == "MG" || filtercode == "MGO" || filtercode == "MJBU")?" , mld_statuses_omschrijving || ', ' || TO_CHAR(m.mld_melding_einddatum, 'DD-MM-YYYY') MGdesc":"")
+ ((filtercode == "MG" || filtercode == "MGO" || filtercode == "MJBU")
? " , mld_statuses_omschrijving || ', ' || TO_CHAR(m.mld_melding_einddatum, 'DD-MM-YYYY') MGdesc"
: "")
+ " , 'M' extra"
+ " , '' AS restype"
+ " FROM mld_melding m"
@@ -95,11 +98,7 @@ if (ikBenVerantwoordelijke || mld_read)
? " , mld_disc_params dp"
: "")
+ " , mld_statuses st"
+ (filtercode == "MJBU"
? " , mld_stdmelding_srtinst msi"
+ " , ins_srtgroep isg"
+ " , ins_srtdeel isd"
: "")
+ filtClause.M.from
// Zoektekst op melding, vakgroep, meldingnummer.
+ " WHERE (TO_CHAR(m.mld_melding_key) LIKE " + safe.quoted_sql_wild2(chars)
+ ((filtercode == "MG" || filtercode == "MGO" || filtercode == "MJBU")
@@ -114,17 +113,12 @@ if (ikBenVerantwoordelijke || mld_read)
? " AND md.ins_discipline_key = dp.mld_ins_discipline_key"
: "")
+ " AND m.mld_melding_status = st.mld_statuses_key"
+ (filtercode == "MJBU"
? " AND sm.mld_stdmelding_key = msi.mld_stdmelding_key"
+ " AND ((msi.ins_srtinstallatie_key = isg.ins_discipline_key AND msi.ins_srtinstallatie_niveau = 'D')"
+ " OR (msi.ins_srtinstallatie_key = isg.ins_srtgroep_key AND msi.ins_srtinstallatie_niveau = 'G')"
+ " OR (msi.ins_srtinstallatie_key = isd.ins_srtdeel_key AND msi.ins_srtinstallatie_niveau = 'S'))"
: "")
+ filtClause.M
+ filtClause.M.where
+ (excl_mld_key_arr && excl_mld_key_arr.length
? " AND mld_melding_key NOT IN (" + excl_mld_key_arr.join(",") + ")"
: "")
+ " AND TRUNC(m.mld_melding_einddatum, 'DD') >= SYSDATE - " + S("mld_reference_days");
+ " AND TRUNC(m.mld_melding_einddatum, 'DD') >= SYSDATE - " + S("mld_reference_days")
+ filtClause.M.union;
}
if ((kanverwijzen & 2) == 2)
@@ -356,7 +350,7 @@ if (ikBenVerantwoordelijke || mld_read)
+ " AND sm.mld_ins_discipline_key = md.ins_discipline_key"
+ " AND m.mld_stdmelding_key = sm.mld_stdmelding_key"
+ " AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key"
+ filtClause.M
+ filtClause.M.where
+ (excl_mld_key_arr && excl_mld_key_arr.length
? " AND mld_melding_key NOT IN (" + excl_mld_key_arr.join(",") + ")"
: "")

View File

@@ -137,7 +137,7 @@ function getReferenceNameReferentie(prefkey, preftype)
function getFiltClauseReferentie(pfiltcode, params)
{
//var lfiltClause = {from: "", where: ""};
var lfiltClause = {M: "",
var lfiltClause = {M: {from: "", where: "", union: ""},
O: "",
R: "",
B: "",
@@ -152,28 +152,83 @@ function getFiltClauseReferentie(pfiltcode, params)
case 'MGO': // Alle open meldingen mogelijke als referentie
case 'MG': // Alle meldingen mogelijk als referentie
case 'M': // Alle meldingen mogelijk als referentie
lfiltClause.M = " AND EXISTS (SELECT 1"
+ " FROM fac_v_webgebruiker g"
+ " WHERE g.prs_perslid_key = " + user_key
+ " AND g.ins_discipline_key = sm.mld_ins_discipline_key"
+ " AND g.fac_functie_key IN (" + (params.funcKeys ? params.funcKeys : "''") + ")" // ('WEB_MLDFOF', 'WEB_MLDBOF')
+ " AND g.fac_gebruiker_alg_level_read < 9)";
lfiltClause.M.where = " AND EXISTS (SELECT 1"
+ " FROM fac_v_webgebruiker g"
+ " WHERE g.prs_perslid_key = " + user_key
+ " AND g.ins_discipline_key = sm.mld_ins_discipline_key"
+ " AND g.fac_functie_key IN (" + (params.funcKeys? params.funcKeys : "''") + ")" // ("WEB_MLDFOF", "WEB_MLDBOF", "WEB_MLDBAC")
+ " AND g.fac_gebruiker_alg_level_read < 9)";
var sql_filt = " AND CASE WHEN dp.mld_disc_params_mldgroup = 0"
+ " THEN BITAND(sd.ins_srtdiscipline_mldgroup, 1)"
+ " ELSE BITAND(dp.mld_disc_params_mldgroup, 1)"
+ " END = 1";
if (pfiltcode == "MG")
lfiltClause.M += sql_filt; // Naar deze mag je verwijzen
lfiltClause.M.where += sql_filt; // Naar deze mag je verwijzen
if (pfiltcode == "MGO")
lfiltClause.M += sql_filt // Naar deze mag je verwijzen
+ " AND m.mld_melding_status IN (0,2,3,4,7)"; // en status is niet gesloten
lfiltClause.M.where += sql_filt // Naar deze mag je verwijzen
+ " AND m.mld_melding_status IN (0,2,3,4,7)"; // en status is niet gesloten
if (pfiltcode == "MJBU")
lfiltClause.M += " AND m.mld_melding_status IN (2,4,7)" // open meldingen.
+ " AND sd.ins_srtdiscipline_key != " + S("cnd_gebreken_srtdisc_key"); // Geen conditie metingen.
{ // Standaard meldingen die wel records in de mld_stdmelding_srtinst tabel hebben.
lfiltClause.M.from += ", mld_stdmelding_srtinst msi"
+ ", ins_srtgroep isg"
+ ", ins_srtdeel isd"
+ ", mld_v_mld_stdmelding_srtinst si"
+ ", ins_deel d";
lfiltClause.M.where += " AND sm.mld_stdmelding_key = msi.mld_stdmelding_key"
+ " AND ((msi.ins_srtinstallatie_key = isg.ins_discipline_key AND msi.ins_srtinstallatie_niveau = 'D')"
+ " OR (msi.ins_srtinstallatie_key = isg.ins_srtgroep_key AND msi.ins_srtinstallatie_niveau = 'G')"
+ " OR (msi.ins_srtinstallatie_key = isd.ins_srtdeel_key AND msi.ins_srtinstallatie_niveau = 'S'))"
+ " AND msi.mld_stdmelding_srtinst_key = si.mld_stdmelding_srtinst_key"
+ " AND si.ins_deel_key = d.ins_deel_key"
+ " AND d.ins_deel_verwijder IS NULL"
+ " AND si.ins_deel_key IN (" + ins_keys.join(",") + ")"
+ " AND m.mld_melding_status IN (2,4,7)" // open meldingen.
+ " AND sd.ins_srtdiscipline_key != " + S("cnd_gebreken_srtdisc_key"); // Geen conditie metingen.
// Standaard meldingen die geen records in de mld_stdmelding_srtinst tabel hebben.
lfiltClause.M.union += " UNION "
+ "SELECT DISTINCT m.mld_melding_key refkey"
+ " , sd.ins_srtdiscipline_prefix || TO_CHAR(m.mld_melding_key) || ' - ' || "
+ lcl.xsql("md.ins_discipline_omschrijving", "md.ins_discipline_key") + " || '/' || "
+ lcl.xsql("sm.mld_stdmelding_omschrijving", "sm.mld_stdmelding_key") + " refname"
+ " , TO_CHAR(m.mld_melding_einddatum, 'DD-MM-YYYY') refdesc"
+ " , SUBSTR(m.mld_melding_onderwerp, 1, 200) reftitle"
+ " , m.mld_melding_einddatum datum"
+ " , mld_statuses_omschrijving || ', ' || TO_CHAR(m.mld_melding_einddatum, 'DD-MM-YYYY') MGdesc"
+ " , 'M' extra"
+ " , '' AS restype"
+ " FROM mld_melding m"
+ " , mld_stdmelding sm"
+ " , mld_discipline md"
+ " , ins_srtdiscipline sd"
+ " , mld_statuses st"
+ " WHERE (TO_CHAR(m.mld_melding_key) LIKE " + safe.quoted_sql_wild2(params.chars)
+ " OR UPPER(mld_melding_omschrijving) LIKE " + safe.quoted_sql_wild2(params.chars)
+ " OR UPPER(mld_melding_onderwerp) LIKE " + safe.quoted_sql_wild2(params.chars) + ")"
+ " AND sm.mld_ins_discipline_key = md.ins_discipline_key"
+ " AND m.mld_stdmelding_key = sm.mld_stdmelding_key"
+ " AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key"
+ " AND m.mld_melding_status = st.mld_statuses_key"
+ " AND NOT EXISTS (SELECT *"
+ " FROM mld_stdmelding_srtinst si"
+ " WHERE si.mld_stdmelding_key = sm.mld_stdmelding_key)"
+ " AND EXISTS (SELECT 1"
+ " FROM fac_v_webgebruiker g"
+ " WHERE g.prs_perslid_key = " + user_key
+ " AND g.ins_discipline_key = sm.mld_ins_discipline_key"
+ " AND g.fac_functie_key IN (" + (params.funcKeys? params.funcKeys : "''") + ")" // ("WEB_MLDFOF", "WEB_MLDBOF", "WEB_MLDBAC")
+ " AND g.fac_gebruiker_alg_level_read < 9)"
+ " AND m.mld_melding_status IN (2, 4, 7)"
+ " AND sd.ins_srtdiscipline_key != " + S("cnd_gebreken_srtdisc_key") // Geen conditie metingen.
+ " AND TRUNC(m.mld_melding_einddatum, 'DD') >= SYSDATE - " + S("mld_reference_days");
}
break;
case 'O': // Weergeven van alle mogelijke eigen referenties
var lfiltClause = { M: " AND (m.prs_perslid_key = " + params.perslidKey
+ " OR m.prs_perslid_key_voor = " + params.perslidKey + ")",
var lfiltClause = { M: {from: "",
where: " AND (m.prs_perslid_key = " + params.perslidKey
+ " OR m.prs_perslid_key_voor = " + params.perslidKey + ")",
union: ""},
O: " AND (m.prs_perslid_key = " + params.perslidKey
+ " OR m.prs_perslid_key_voor = " + params.perslidKey + ")",
R: " AND (rm.res_rsv_ruimte_contact_key = " + params.perslidKey
@@ -192,10 +247,12 @@ function getFiltClauseReferentie(pfiltcode, params)
};
break;
case 'F': // Filteren op bestaande ingevoerde referenties
var lfiltClause = { M: " AND m.mld_melding_key IN (SELECT m1.mld_melding_kto_key"
+ " FROM mld_melding m1"
+ " WHERE m1.mld_melding_kto_type LIKE 'M'"
+ " AND m1.mld_melding_kto_key > 0)",
var lfiltClause = { M: {from: "",
where: " AND m.mld_melding_key IN (SELECT m1.mld_melding_kto_key"
+ " FROM mld_melding m1"
+ " WHERE m1.mld_melding_kto_type LIKE 'M'"
+ " AND m1.mld_melding_kto_key > 0)",
union: ""},
O: " AND o.mld_opdr_key IN (SELECT m1.mld_melding_kto_key"
+ " FROM mld_melding m1"
+ " WHERE m1.mld_melding_kto_type LIKE 'O'"