<%@language = "javascript" %>
<% /*
     $Revision$
     $Id$

    File:           ins_xcp_save.asp
    Description:    Inspectie kenmerken (parameters) opslaan
    Parameters:     ins_keys of ins_key (geen verschil)

    Context:        Vanuit ins_xcp.asp
    Note:           Resultaat van een submit is een json object

*/
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="../Shared/kenmerk_common.inc" -->
<!-- #include file="ins.inc" -->

<%
protectRequest.validateToken();
var ins_key = getQParamInt("ins_key");
var srtcontrole_key = getFParamInt("sel_srtcontrole"); // ins_srtcontrole_key.
var scen_key = getFParamInt("scen_key", 1); // Scenario.
var isScenario = scen_key > 1;
var this_ins = ins.func_enabled_deel(ins_key,
                                     { srtcont_key: srtcontrole_key,
                                       scen_key: scen_key
                                     });

// Mag ik de parameters van het inspectie object aanpassen?
user.anything_todo_or_abort(this_ins.canChangeXcp);

var xcp_key = getFParamInt("xcp_key"); // ins_srtcontroledl_xcp_key.
var mode = getFParamInt("mode"); // ins_srtcontrole_mode.

var eenheid = -1;
if (this_ins.canChangeCycle) // Het mag geen lopende taak zijn. canChangeCycle moet true zijn.
{
  eenheid = getFParamInt("eenheid", -1); // ins_srtcontroledl_xcp_eenheid.
  if (eenheid < 0) // uurlijks is 0
  { // Er is niets bij eenheid ingevuld. Standaard waarde moet (weer) gaan gelden.. Huidige standaard waarde ophalen.
    var sql = "SELECT ins_srtcontrole_eenheid"
            + "  FROM ins_srtcontrole"
            + " WHERE ins_srtcontrole_key = " + srtcontrole_key;
    var oRs = Oracle.Execute(sql);
    eenheid = oRs("ins_srtcontrole_eenheid").Value;
  }
}
else
{ // Er is een lopende taak aanwezig. Eenheid mag niet aangepast worden. De eenheid die meegegeven is maakt dan niet meer uit maar zou overeen moeten komen.
  eenheid = -1;
}

var periode = null;
// De periode van een lopende taak mag niet worden aangepast.
if (this_ins.canChangeCycle)
  // Er zijn geen lopende taken.
  periode = getFParamInt("periode", null); // ins_srtcontroledl_xcp_periode.
else
{ // Er zijn lopende taken. Huidige waarde ophalen.
  var sql = "SELECT ins_srtcontrole_periode"
          + "  FROM ins_v_defined_inspect_xcp"
          + " WHERE ins_deel_key = " + ins_key
          + "   AND ins_srtcontrole_key = " + srtcontrole_key
          + "   AND ins_scenario_key = 1";
  var oRs = Oracle.Execute(sql);
  periode = oRs("ins_srtcontrole_periode").Value;
}
var kp_key = getFParamInt("account", -1); // prs_kostenplaats_key
var aantal = getFParamFloat("aantal", null); // ins_srtcontroledl_xcp_aantal.
var aanteh = getFParam("aanteh", null); // ins_srtcontroledl_xcp_aanteh.
var kosten1 = getFParamFloat("kosten1", null); // ins_srtcontroledl_xcp_kosten.
var kosten2 = getFParamFloat("kosten2", null); // ins_srtcontroledl_xcp_kosten2.
var kosten3 = getFParamFloat("kosten3", null); // ins_srtcontroledl_xcp_kosten3.
var uren = getFParamFloat("uren") || null; // ins_srtcontroledl_xcp_uren.
var materiaal = getFParamFloat("materiaal", null); // ins_srtcontroledl_xcp_materia.
var perc = getFParamInt("perc", null); // ins_srtcontroledl_xcp_perc.
var groep = getFParam("groep", null); // ins_srtcontroledl_xcp_groep.
var startdatum = getFParamDate("startdatum", null); // ins_srtcontroledl_xcp_startdat.
var vervaldatum = getFParamDate("vervaldatum", null); // ins_srtcontroledl_xcp_eind.
var opmerk = getFParam("opmerk", null); // ins_srtcontroledl_xcp_opmerk.
var bits = 0;

if (periode && (periode < 0 || periode > 999))
  abort_with_warning("Invalid number for " + L("lcl_ins_controle_period") + " (" + periode + ")");

// De betekenis van bits is afhankelijk van de mode en eenheid.
// Alleen in de mode 0 (moment modus) heeft bits betekenis.
if (mode == 0)
{
  var noHoliday = getFParamInt("insInspNoHoli", 0); // Vinkje "Niet op feestdagen"
  switch (eenheid)
  {
    case -1: // Nooit
    case 0:  // Uurlijks
    case 1:  // Dagelijks
             bits = noHoliday * 128;
             break;
    case 2:  // Wekelijks
             bits = getFParamInt("insInspZo", 0) * 1  // Vinkje "Zondag"
                  + getFParamInt("insInspMa", 0) * 2  // Vinkje "Maandag"
                  + getFParamInt("insInspDi", 0) * 4  // Vinkje "Dinsdag"
                  + getFParamInt("insInspWo", 0) * 8  // Vinkje "Woensdag"
                  + getFParamInt("insInspDo", 0) * 16 // Vinkje "Dondersdag"
                  + getFParamInt("insInspVr", 0) * 32 // Vinkje "Vrijdag"
                  + getFParamInt("insInspZa", 0) * 64 // Vinkje "Zaterdag"
                  + noHoliday * 128;
             break;
    case 3:  // Maandelijks
             var dagbits = getFParamInt("dagbits");
             var weekbits = getFParamInt("weekbits");
             bits = dagbits + weekbits + noHoliday * 128;
             break;
    case 4:  // Jaarlijks
             bits = getFParamInt("insInspJan", 0) * 1     // Vinkje "Januari"
                  + getFParamInt("insInspFeb", 0) * 2     // Vinkje "Februari"
                  + getFParamInt("insInspMaa", 0) * 4     // Vinkje "Maart"
                  + getFParamInt("insInspApr", 0) * 8     // Vinkje "April"
                  + getFParamInt("insInspMei", 0) * 16    // Vinkje "Mei"
                  + getFParamInt("insInspJun", 0) * 32    // Vinkje "Juni"
                  + getFParamInt("insInspJul", 0) * 64    // Vinkje "Juli"
                  + getFParamInt("insInspAug", 0) * 128   // Vinkje "Augustus"
                  + getFParamInt("insInspSep", 0) * 256   // Vinkje "September"
                  + getFParamInt("insInspOkt", 0) * 512   // Vinkje "Oktober"
                  + getFParamInt("insInspNov", 0) * 1024  // Vinkje "November"
                  + getFParamInt("insInspDec", 0) * 2048; // Vinkje "December"
             break;
  }
}
else
  // Interval modus
  bits = null;

var params = { xcp_key: xcp_key,
               periode: periode,
               eenheid: eenheid,
               kp_key: kp_key,
               bits: bits,
               uren: uren,
               materiaal: materiaal,
               kosten1: kosten1,
               kosten2: kosten2,
               kosten3: kosten3,
               perc: perc,
               groep: groep,
               vervaldatum: vervaldatum,
               opmerk: opmerk,
               startdatum: startdatum,
               aantal: aantal,
               aanteh: aanteh,
               isScenario: isScenario,
               scen_key: -1, // Doorvoeren scenario.
               commit: false // Doorvoeren scenario.
             };
var result = ins.saveXcp(ins_key, srtcontrole_key, params);

Response.Write(JSON.stringify(result));
Response.End();
%><% ASPPAGE_END(); %>
