Files
Facilitor/APPL/MLD/opdr_edit_uren_save.asp
Maykel Geerdink 824486c825 AAIT#34601: Opmerkingen kunnen maken bij boeken projecturen.
svn path=/Website/trunk/; revision=28516
2016-03-17 13:57:44 +00:00

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));
%>