<% /*
     $Revision$
     $Id$

    File:               kpl_ksrt_validate.nic
    Description:

    Parameters:
    Context:            Diverse save(!) script controleren.
    Note:
*/ %>

<% // Validatie Kostenplaats - Kostensoort

// Result: true als ok, false als niet ok
// JGL: ks_key wordt bijvoorbeeld meegegeven vanuit mld_edit_opdr_save
//      als de stdmeldig een specifiekere kostensoort heeft dan de discipline
function kpl_ksrt_validate(kp_key, ks_key, disc_key)
{
    ks_key = ks_key || -1;
    kp_key = kp_key || -1;
    disc_key = disc_key || -1;
    // omdat ks niet werd meegegeven, haal ik die hier evt zelf op. Mag vervallen als dat wel gebeurt.
    if (ks_key == -1 && disc_key != -1)
    {  // bepaal zelf een evt. kostensoort
      var sql= "SELECT COALESCE(prs_kostensoort_key, -1) FROM ins_tab_discipline WHERE ins_discipline_key="+disc_key;
      var oRs = Oracle.Execute(sql);
      if (!oRs.eof)
      {
        ks_key = oRs(0).value;
      }
      oRs.Close();
    }

    var CombinationOk = false;
    // start de afvalrace

    if (ks_key == -1 || kp_key == -1)
      CombinationOk = true;

    if (!CombinationOk)
    {
      var kostenpltsgrp_key = -1;
      var sql= "SELECT prs_kostenplaatsgrp_key FROM prs_kostenplaats WHERE prs_kostenplaats_key = " + kp_key;
      var oRs = Oracle.Execute(sql);
      if (!oRs.eof)
      {
        // het is goed als er geen groep gedefinieerd is
        kostenpltsgrp_key = oRs("prs_kostenplaatsgrp_key").value;
        CombinationOk = (kostenpltsgrp_key == null);
      }
      oRs.Close();
    }

    if (!CombinationOk)
    {
      // geldt er uberhaupt een restrictie op deze kostensoort?
      sql = "SELECT 1"
          + " FROM prs_kostencombinatie kc"
          + " WHERE kc.prs_kostensoort_key = " + ks_key;
      oRs = Oracle.Execute(sql);
      if (oRs.eof)
      { // geen vermelding, dus ok
        CombinationOk = true;
      }
      oRs.Close();
    }

    if (!CombinationOk)
    {
      sql = "SELECT prs_kostencombinatie_key"
          + " FROM prs_kostencombinatie kc"
          + " WHERE kc.prs_kostenplaatsgrp_key = " + kostenpltsgrp_key
          + " AND kc.prs_kostensoort_key = " + ks_key;

      oRs = Oracle.Execute(sql);
      if (!oRs.eof)
      {
        CombinationOk = true;
      }
      oRs.Close();
    }

    return CombinationOk;
}
%>