143 lines
5.7 KiB
Plaintext
143 lines
5.7 KiB
Plaintext
<%@ language="javascript" %>
|
|
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: opdr_edit_uren_save.asp
|
|
Description: Sla de wijziging van uren bij een opdracht direct op
|
|
of bevries een hele week of sla kosten op.
|
|
Parameters:
|
|
datum Bij deze datum/ vanaf deze datum
|
|
prs_key Deze persoon
|
|
done 2=week bevriezen (door fe/fo), 3=week goedkeuren (door bo)
|
|
als niet done:
|
|
mld_opdr_key Bij deze opdracht of:
|
|
mld_impropdr_key Bij deze improductieve opdracht.
|
|
uren Aantal uren
|
|
Context: Op onBlur van een urenveldje of 'week klaar' knop
|
|
Note:
|
|
*/ %>
|
|
|
|
<%
|
|
var JSON_Result = true;
|
|
%>
|
|
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/json2.js" -->
|
|
|
|
<%
|
|
protectRequest.validateToken();
|
|
var urole = getQParamSafe("urole");
|
|
var datum_array = getFParamDateArray("datum");
|
|
var prs_key_array = getFParamIntArray("prs_key", [user_key]);
|
|
var done = getFParamInt("done", 0);
|
|
|
|
var autfunction = {fe: "WEB_UURUSE", fo: "WEB_UURFOF", bo: "WEB_UURBOF"} [urole];
|
|
var authparams = user.checkAutorisation(autfunction);
|
|
|
|
var result = {success: true};
|
|
|
|
if (done > 0) // Altijd hele week
|
|
{
|
|
for (var i = 0; i < prs_key_array.length; i++)
|
|
{
|
|
var sql = "UPDATE mld_opdr_uren"
|
|
+ " SET mld_opdr_uren_status = " + ((done == 2)? "2" : "3")// 2 is ter goedkeuring, 3 is goedgekeurd
|
|
+ " WHERE prs_perslid_key = " + prs_key_array[i]
|
|
+ " AND mld_opdr_uren_datum BETWEEN " + datum_array[i].toSQL() + " AND " + datum_array[i].endToSQL() + " +6"
|
|
+ " AND mld_opdr_uren_status < 3";
|
|
oRs = Oracle.Execute(sql);
|
|
}
|
|
Response.Write(JSON.stringify(result));
|
|
Response.End
|
|
}
|
|
|
|
var mld_opdr_key = getFParamInt("mld_opdr_key");
|
|
var mld_impropdr_key = getFParamInt("mld_impropdr_key"); // één van de twee zal -1 zijn
|
|
var uren = parseFloat(getFParam("uren", 0)) || 0;
|
|
|
|
for (var i = 0; i < prs_key_array.length; i++)
|
|
{
|
|
var opdrWhere = mld_opdr_key > 0? ("mld_opdr_key = " + mld_opdr_key) : ("mld_impropdr_key = " + mld_impropdr_key)
|
|
opdrWhere += " AND mld_opdr_uren_datum = " + datum_array[i].toSQL()
|
|
+ " AND prs_perslid_key = " + prs_key_array[i];
|
|
|
|
var sql = "SELECT mou.mld_opdr_uren_key"
|
|
+ " , mld_opdruren_kosten_key"
|
|
+ " , mou.mld_opdr_uren_opmerking"
|
|
+ " FROM mld_opdr_uren mou, mld_opdruren_kosten mouk"
|
|
+ " WHERE " + opdrWhere
|
|
+ " AND mou.mld_opdr_uren_key = mouk.mld_opdr_uren_key(+)";
|
|
var oRs = Oracle.Execute(sql)
|
|
|
|
var l_actie = ""; // Initieel geen Database actie, met mogelijk waarden: leeg (initieel), insert (I), update (U), delete (D) van uren, of dubbel delete (DD) van uren en kosten
|
|
|
|
if (!oRs.Eof) // er waren al uren op geboekt
|
|
{
|
|
if (uren == 0)
|
|
{
|
|
sql = "DELETE FROM mld_opdr_uren"
|
|
+ " WHERE " + opdrWhere;
|
|
l_actie = "D"; // Delete (uren)
|
|
if (oRs("mld_opdruren_kosten_key").Value)
|
|
{ l_actie = "DD"; // Delete (uren) en nog een Delete (kosten)
|
|
result.message = L("lcl_mlduren_kostenverwijderd");
|
|
result.refresh = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var remark = getFParam("remark", oRs("mld_opdr_uren_opmerking").Value);
|
|
if ((!S("mld_opdr_minuren") && (uren > 0)) || S("mld_opdr_minuren"))
|
|
{
|
|
var sql = "UPDATE mld_opdr_uren"
|
|
+ " SET mld_opdr_uren_besteed = " + uren
|
|
+ " , mld_opdr_uren_opmerking = " + safe.quoted_sql(remark)
|
|
+ " WHERE " + opdrWhere;
|
|
l_actie = "U"; // Update (uren)
|
|
}
|
|
}
|
|
//oRs = Oracle.Execute(sql);
|
|
}
|
|
else // insert nieuw
|
|
{
|
|
if ((!S("mld_opdr_minuren") && (uren > 0)) || S("mld_opdr_minuren"))
|
|
{ // Opmerking is nog niet ingevuld en hoeft dus nog niet opgeslagen te worden.
|
|
var sql = "INSERT INTO mld_opdr_uren"
|
|
+ " (mld_opdr_key"
|
|
+ " , mld_impropdr_key"
|
|
+ " , mld_opdr_uren_datum"
|
|
+ " , mld_opdr_uren_besteed"
|
|
+ " , prs_perslid_key"
|
|
+ " , mld_opdr_uren_status)"
|
|
+ " VALUES (" + (mld_opdr_key > 0? mld_opdr_key : " NULL")
|
|
+ " , " + (mld_impropdr_key > 0? mld_impropdr_key : " NULL")
|
|
+ " , " + datum_array[i].toSQL() + ", " + uren + ", " + prs_key_array[i]
|
|
+ " , " + (urole == "bo"? 2 : 1) // 2 is ter fiat, 1 is ingevoerd
|
|
+ ")";
|
|
l_actie = "I"; // Insert (uren)
|
|
// oRs = Oracle.Execute(sql);
|
|
}
|
|
}
|
|
|
|
if (l_actie != ""){
|
|
// Er is een DB-actie (sql) uit te voeren..., hetzij een I, U, D of DD
|
|
oRs = Oracle.Execute(sql);
|
|
|
|
// POST!! Hookfunction, dus na de sql-query!
|
|
// Klantspecifieke functie (hookfunction) voor de invoer (of beter gezegd: verwijdering) van kosten, die gaat niet via 'aanroep' opdr_edit_urenkosten_save.asp
|
|
// Let op: er is verschil tussen D en DD, zodat kan worden besloten om iets extra's te doen in de user-hook,
|
|
// Immers dat extra's is niet meer in de user-hook te bepalen omdat dit een post-hook is (de sql heeft via de DELETE-cascade de kosten-records verwijderd)
|
|
var pResult = new HookResult();
|
|
if (!custfunc.mld_urenpostsave(prs_key_array[i], datum_array[i], mld_opdr_key, mld_impropdr_key, l_actie, pResult))
|
|
{
|
|
abort_with_warning(pResult.errmsg);
|
|
}
|
|
} // endif l_actie != ""
|
|
}
|
|
|
|
|
|
Response.Write(JSON.stringify(result));
|
|
%>
|