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

     File:         kpn_edit_kpn.asp
     Description:  SUBMIT-form
*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../shared/save2db.inc" -->
<!-- #include file="./prs.inc" -->

<% FCLTHeader.Requires({ plugins:["jQuery"] }) %>
<%
var kpn_key = getQParamInt("kpn_key", -1);
var kpn_grpkey = getFParamInt("kpn_grpkey", -1);
if (kpn_key > 0)
{
  var sql = "SELECT k.prs_perslid_key kpn_prs_key"
          + "     , kpg.prs_perslid_key kpngrp_prs_key"
          + "  FROM prs_kostenplaats k"
          + "     , prs_kostenplaatsgrp kpg"
          + " WHERE kpg.prs_kostenplaatsgrp_key(+) = k.prs_kostenplaatsgrp_key"
          + "   AND k.prs_kostenplaats_key = " + kpn_key;
  oRs = Oracle.Execute(sql);

  var kpn_prs_key = oRs("kpn_prs_key").Value? oRs("kpn_prs_key").Value : -1;
  var kpngrp_prs_key = oRs("kpngrp_prs_key").Value? oRs("kpngrp_prs_key").Value : -1;
  oRs.Close();
}
else
{
  var kpn_prs_key = -1;
  var kpngrp_prs_key = -1;
}

// Wijzigen van de kostenplaats(groep)? Setting prs_restrict_kpedit {0=volgens autorisatie (default) | 1=alleen eigen kp/kpg wijzigen}.
// WEB_FINMSU rechten of budgethouder.
var authparams = user.checkAutorisation("WEB_FINMSU", true);
var canChange = ((authparams && authparams.ALGwritelevel < 9) ||
                 (S("prs_restrict_kpedit") == 1 && (kpn_prs_key == user_key || kpngrp_prs_key == user_key))) // Alleen eigen kp/kpg wijzigen
user.auth_required_or_abort(canChange);

// Indien kostenplaatsgroep limiet ingesteld is dan is die leidend. Kostenplaats wordt dan niet doorgegeven. In dat geval kostenplaats limiet leeg maken.
var kpn_limietperiode = getFParamInt("kpn_limietperiode", 0);

var kpn_limiet = getFParamInt("kpn_limiet", 0);
if (kpn_grpkey > 0 && prs.exceeds_budgetkpg(kpn_grpkey, kpn_key, kpn_limiet))
{ // Is de som van de kostenplaatslimieten(budgetten) lager dan de limiet(budget) van hun kostenplaatsgroep.
  abort_with_warning(L("lcl_prs_exceed_limitkpg"));
}

var fields =  [ { dbs: "prs_kostenplaats_nr",            typ: "varchar", frm: "kpn_nr",          track: L("lcl_prs_dept_name") },
                { dbs: "prs_kostenplaats_omschrijving",  typ: "varchar", frm: "kpn_oms",         track: L("lcl_prs_descr") },
                { dbs: "prs_perslid_key",                typ: "key",     frm: "prs_key",         track: L("lcl_prs_budgethouder"),   foreign: "prs_perslid" },
                { dbs: "prs_kostenplaats_module",        typ: "varchar", frm: "kpn_module",      track: L("lcl_prs_type") },
                { dbs: "prs_kostenplaatsgrp_key",        typ: "key",     frm: "kpn_grpkey",      track: L("lcl_prs_kostenpl_group"), foreign: "prs_kostenplaatsgrp" },
                { dbs: "prs_kostenplaats_eind",          typ: "date",    frm: "enddate",         track: L("lcl_end_date") },
                { dbs: "prs_kostenplaats_limiet",        typ: "float",   frm: "kpn_limiet",      track: L("lcl_prs_budget") },
                { dbs: "prs_kostenplaats_limietperiode", typ: "number",  val: kpn_limietperiode, track: true /* afzonderlijke tracking, wel oldjsval */ },
                { dbs: "prs_kostenplaats_extern",        typ: "check0",  frm: "kpn_extern",      track: L("lcl_prs_kpnextern") },
                { dbs: "prs_kostenplaats_fiat",          typ: "check0",  frm: "kpn_fiat",        track: L("lcl_prs_kpnfiat") }
              ];

var warning = "";
if (kpn_key > 0)
{
  var kpnUpd = buildTrackingUpdate("prs_kostenplaats", " prs_kostenplaats_key = " + kpn_key, fields);
  sql = buildUpdate("prs_kostenplaats", fields)
      + "     prs_kostenplaats_key = " + kpn_key;

  /* SUBMIT THE CHANGED DATA */
  var err = Oracle.Execute(kpnUpd.sql, true);
  if (err.friendlyMsg)
    abort_with_warning(err.friendlyMsg);

  var newtxt = kpn_limietperiode == 0? L("lcl_tracktoempty") : (kpn_limietperiode == 1? L("lcl_prs_per_month") : L("lcl_prs_annual"));
  var oldval = kpnUpd.oldjsvals["prs_kostenplaats_limietperiode"];
  var kpngrp_limietperiode = (oldval === null || oldval === "" || oldval <= 0? 0 : oldval);
  if (kpn_limietperiode != kpngrp_limietperiode)
  {
    var oldtxt = (oldval === null || oldval === "" || oldval <= 0? L("lcl_trackfromempty") : (oldval == 1 ? L("lcl_prs_per_month") : L("lcl_prs_annual")))
    kpnUpd.trackarray.push(L("lcl_prs_budgetperiode") + ": " + buildTrackText("varchar", oldtxt, newtxt, { nodiff: true }));
  }
  if (kpnUpd.trackarray.length)
    shared.trackaction("PRSKPU", kpn_key, kpnUpd.trackarray.join("\n"));
}
else
{
  fields.push({  dbs: "prs_kostenplaats_key",         typ: "key",      seq: "prs_s_prs_kostenplaats_key" });
  var regIns = buildInsert("prs_kostenplaats", fields);
  var kpn_key = regIns.sequences["prs_kostenplaats_key"];
  sql = regIns.sql;
  var err = Oracle.Execute(sql, true);
  if (err.friendlyMsg)
      warning = err.friendlyMsg;
}
%>
<html>
  <head>
    <%  FCLTHeader.Generate() %>
    <script>
        $(document).ready(function () {
            FcltMgr.closeDetail(window, { kpn_key: <%=kpn_key%>,
                                          warning: "<%=safe.jsstring(warning)%>",
                                          keepForm: <%=warning?"true":"false"%>
                                         });
         } );
    </script>
  </head>
  <body>
  </body>
</html>
