<%@ language="javascript" %>

<% /*
     $Revision$
     $Id$

    File:                   opdr_edit_urenkosten_save.asp
    Description:            Sla de wijziging van kosten bij een aan uren direct op.
    Parameters:
        of kosten           kosten
        en kosten_key       de kosten_key
        en mld_opdruren_key op deze mld_opdruren. ER MOETEN DUS AL UREN ZIJN
    Context:                Op onBlur van een kostenveldje
    Note:
*/ %>

<%
var JSON_Result = true;
%>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->

<%
protectRequest.validateToken();
var urole = getQParamSafe("urole");
var autfunction = { fe: "WEB_UURUSE", fo: "WEB_UURFOF", bo: "WEB_UURBOF"} [urole];
var authparams = user.checkAutorisation(autfunction);

var result = {success: true};

var mld_opdruren_key = getFParamInt("mld_opdruren_key");
var kosten_key = getFParamInt("kosten_key");
var kosten  = parseFloat(getFParam("kosten", 0))||0;

var autfunction = "WEB_BEZBOF";

// De functie checkAutorisation(autfunction, true) geeft null terug indien er geen autorisatie voor autfunction wordt gevonden
//var authparams = user.checkAutorisation(autfunction, true);

var sql = "SELECT mld_opdr_uren_key"
        + "  FROM mld_opdr_uren"
        + " WHERE mld_opdr_uren_key = " + mld_opdruren_key;
var oRst = Oracle.Execute(sql);
if (oRst.eof) // BONS#28623: Het record mld_opdr_uren is door iemand anders of in een ander tabje verwijderd.
    abort_with_warning( L("lcl_record_is_deleted") );
oRst.Close();

var sql = "SELECT mld_opdruren_kosten_key"
        + "  FROM mld_opdruren_kosten"
        + " WHERE mld_kosten_key = " + kosten_key
        + "   AND mld_opdr_uren_key = " + mld_opdruren_key;
var oRsk = Oracle.Execute(sql)

var v_mld_opdruren_kosten_key = 0;
var v_actie = "" ; // DB-actie: "" (initieel), "I" (insert), "U" (update), "D" (delete)

if (!oRsk.eof) // er waren al kosten op geboekt
{		v_mld_opdruren_kosten_key = oRsk("mld_opdruren_kosten_key").Value;

    if (kosten == 0){
        sql = "DELETE FROM mld_opdruren_kosten"
            + " WHERE mld_opdruren_kosten_key = " + v_mld_opdruren_kosten_key;
        v_actie = "D";
    }
    else {
        sql = "UPDATE mld_opdruren_kosten"
            + "   SET mld_opdruren_kosten_besteed = " + kosten
            + " WHERE mld_opdruren_kosten_key = " + v_mld_opdruren_kosten_key;
        v_actie = "U";
    }
}
else if (kosten > 0)
{
    var sql = "INSERT INTO mld_opdruren_kosten"
            + "        (mld_opdr_uren_key, mld_kosten_key, mld_opdruren_kosten_besteed)"
            + " VALUES (" + mld_opdruren_key + ", " + kosten_key + ", " + kosten + ")";
    v_actie = "I";
}

var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
    result = { success: false, message: err.friendlyMsg };

// POST!! Hookfunction, for CARE: doorloop de week van deze persoon en bepaal de dagtotaalkilometers
// Klantspecifieke functie (hookfunction) voor de invoer van kosten
// 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_urenkostenpostsave(v_mld_opdruren_kosten_key, mld_opdruren_key, kosten_key, kosten, v_actie, pResult))
{
    abort_with_warning( pResult.errmsg );
}

Response.Write(JSON.stringify(result));
%>
