Files
Facilitor/APPL/MLD/opdr_handlerchange.asp
Jos Groot Lipman db07212af2 BLCC#75155 Behandelteams ook meenemen in vakgroepscope van opdracht-autorisaties
svn path=/Website/trunk/; revision=58402
2022-12-20 12:33:09 +00:00

119 lines
4.8 KiB
Plaintext

<%@ LANGUAGE = JavaScript %>
<% /*
$Revision$
$Id$
File: opdr_handlerchange.asp
Description: Past de behandelaar en/of uitvoerder van een array van opdrachten aan.
Parameters:
prs_key De nieuwe behandelaar van de opdracht(en).
uitv_key De nieuwe uitvoerder van de opdracht(en).
opdr_key Array van opdracht keys van opdrachten waarvan de behandelaar moet worden aangepast.
Context:
Note:
*/ %>
<%
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="mld.inc" -->
<%
protectRequest.validateToken();
var uitv_key = getFParamInt("uitv_key"); // Uitvoerder destination.
var prs_key = getFParamInt("prs_key"); // Behandelaar destination.
var uitv_type_dest = getFParam("uitv_type"); // Type uitvoerder destination.
var opdr_key_arr = getFParamIntArray("opdr_key_arr");
var tobechanged = 0;
var ingesloten = [];
var notmoved = [];
// Bepaal de opdrachten in de selectie waarvan ook echt de behandelaar aangepast kan of mag worden.
for (var i = 0; i < opdr_key_arr.length; i++)
{
var this_opdr = mld.func_enabled_opdracht(opdr_key_arr[i]); // Wat heb ik zoal aan rechten op deze specifieke opdracht
var mld_opdr = this_opdr.mld_opdr;
var canSelection = true;
var uitv_type_src = "PI";
if (mld_opdr.uitv_type == "B")
{
if (mld_opdr.uitv_intern)
var uitv_type_src = "BI";
else
{
var uitv_type_src = "BE"; // Kan niet voorkomen.
canSelection = false;
}
}
// Kan de beheerder bij de interne persoon/het interne bedrijf ofwel kan de beheerder bij de uitvoerder voor desbetreffende disipline? Dit checken.
// Als de beheerder niet is ingevuld is, dan hoef ik het niet te checken.
if (prs_key > 0)
{
var sql = "SELECT prs_perslid_key"
+ " FROM fac_v_webgebruiker f"
+ " , fac_functie ff"
+ " WHERE f.fac_functie_key = ff.fac_functie_key"
+ " AND ins_discipline_key = " + mld_opdr.opdr_disc_key // Discipline opdracht.
+ " AND (fac_functie_code = 'WEB_MLDBOF'"
+ " OR fac_functie_code = 'WEB_MLDBO3'"
+ (uitv_type_dest == "BI"
? " OR fac_functie_code = 'WEB_ORDBO2'" // Alleen bij interne bedrijven zie je ook personen met WEB_ORDBO2 rechten.
: "")
+ " OR fac_functie_code = 'WEB_ORDBOF')"
+ " AND f.fac_gebruiker_prs_level_write < 9"
+ " AND f.fac_gebruiker_alg_level_write < 9"
+ " AND prs_perslid_key = " + prs_key // Beheerder opdracht.
oRs = Oracle.Execute(sql);
canSelection = !oRs.eof;
oRs.close();
}
if (this_opdr.canChange && canSelection)
{
ingesloten.push({ opdr_key: opdr_key_arr[i],
mld_key: mld_opdr.mld_key,
volgnr: mld_opdr.volgnr,
srtdiscbes: mld_opdr.srtdiscbes
});
tobechanged++;
}
else
notmoved.push(opdr_key_arr[i]);
}
// Altijd doorgaan en resultaat teruggeven. Ook als er geen enkele opdracht wordt verplaatst.
//user.anything_todo_or_abort(tobechanged > 0); // We klagen niet over enkele wel en enkele niet.
// Opdrachttype van de laatst gecontroleerde opdracht is prima.
lcl.set_dialect(mld_opdr.opdr_type, "MLD_TYPEOPDR_KEY");
for (var i = 0; i < ingesloten.length; i++)
{ // Zetten van de uitvoerder en/of beheerder plus het afhandelen van de tracking voor elke opdracht.
if (uitv_type_dest == "BI")
var fields = [{ dbs: "prs_perslid_key", typ: "key", val: prs_key, track: L("lcl_mld_behandelaar"), foreign: "prs_perslid" },
{ dbs: "mld_uitvoerende_keys", typ: "key", val: uitv_key, track: ingesloten[i].srtdiscbes? L("lcl_bes_Supplier") : L("lcl_ord_company_uit"), foreign: "mld_uitvoerende" }];
else if (uitv_type_dest == "PI")
var fields = [{ dbs: "mld_uitvoerende_keys", typ: "key", val: uitv_key, track: ingesloten[i].srtdiscbes? L("lcl_bes_Supplier") : L("lcl_ord_company_uit"), foreign: "mld_uitvoerende" }];
var mldUpd = buildTrackingUpdate("mld_opdr", "mld_opdr_key = " + ingesloten[i].opdr_key, fields);
if (mldUpd && mldUpd.trackarray.length)
{
Oracle.Execute(mldUpd.sql);
var ins_srtdiscipline_prefix = mld.mld_prefix(ingesloten[i].mld_key);
var formattedID = ins_srtdiscipline_prefix + ingesloten[i].mld_key + "/" + ingesloten[i].volgnr;
mld.trackopdrachtupdate(ingesloten[i].opdr_key, L("lcl_ord_is_ordupdtrack").format(formattedID) + "\n" + mldUpd.trackarray.join("\n"));
}
}
var result = { message: "", notmoved: notmoved.join(","), success: true };
Response.Write(JSON.stringify(result));
%>
<% ASPPAGE_END(); %>