119 lines
4.8 KiB
Plaintext
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(); %>
|