<% /*
     $Revision$
     $Id$

     File:               CNT/cnt_flexkenmerk.inc
     Description:        Functie die html code genereert voor de presentatie van de flexvelden
     Parameters:         cnt_key              Contract key
                         disc_key             Contractsoort key
                         reado                Readonly
                         flexcolumns          aantal kolommen voor flexkenmerken
                         advanced             Geadvanceerd
                         reqId                Perslid key
     Context:            Functie wordt aangeroepen door
                         1) load_kenmerk.asp
                         2) cnt_edit.asp die initieel serverside deze html code invoegt.
     Note:
*/ %>

<!-- #include file="../Shared/kenmerk_common.inc" -->
<%
function generateFlexKenmerkCode(params)
{ %>
  <div id="cntKenmerken">
    <table id="flextable" cellpadding="0" cellspacing="0">
<%
      var cnt_key = params.cnt_key; // Contract key
      var disc_key = params.disc_key; // Contractsoort key
      var reado = params.reado; // Readonly
      var flexcolumns = params.flexcolumns;
      var advanced = params.advanced; // Geavanceerd
      var reqId = params.reqId; // Perslid key (!search && multiMode)
      if (cnt_key > -1)
        var this_cnt = params.this_cnt || cnt.func_enabled_contract(cnt_key);
      else
        var this_cnt = cnt.func_enabled_cnt(disc_key);

      function isReadonly (volgnummer)
      {
        if (params.reado)
            return true;

        if (volgnummer <= 100 && this_cnt.canMANwrite)
            return false; // die mag je bewerken met CNTMAN

        if (volgnummer >= 100 && this_cnt.canUSEwrite)
            return false; // die mag je bewerken met CNTUSE

        return true; // blijkbaar toch niet...
      }

      function isInvisible(volgnummer, ktype) // MGE: In de search mode (overzichtscherm) zien we altijd alle flexkenmerken?? Deze functie wordt dan niet gebruikt.
      {
        if (volgnummer < 100 && !this_cnt.canMANread)
            return true; // Invisible

        if (volgnummer > 100 && !this_cnt.canUSEread /* incl readself */)
            return true; // Invisible

        return false;
      }

      if (cnt_key > 0)
      {
        var sql = "SELECT ins_discipline_key FROM cnt_contract WHERE cnt_contract_key = " + cnt_key;
        var loRs = Oracle.Execute(sql);
        var disc_key = loRs("ins_discipline_key").value;
      }

      sql = "SELECT k.cnt_kenmerk_key             kenmerk_key, "
          + lcl.xsql('t.cnt_srtkenmerk_omschrijving', 't.cnt_srtkenmerk_key') +" kenmerk_omschrijving, "
          + " t.cnt_srtkenmerk_kenmerktype        kenmerk_kenmerktype, "
          + " t.fac_kenmerkdomein_key             kenmerkdomein_key, "
          + " t.cnt_srtkenmerk_lengte             kenmerk_lengte, "
          + " t.cnt_srtkenmerk_dec                kenmerk_dec, "
          + " t.cnt_srtkenmerk_nmin               kenmerk_nmin, "
          + " t.cnt_srtkenmerk_nmax               kenmerk_nmax, "
          + (cnt_key > 0
            ? " (SELECT v.cnt_kenmerkcontract_waarde"
              + " FROM cnt_kenmerkcontract v"
              + " WHERE v.cnt_contract_key = " + cnt_key
              + " AND v.cnt_kenmerk_key = k.cnt_kenmerk_key"
              + " AND v.cnt_kenmerkcontract_verwijder IS NULL)"
            : lcl.xsql('k.cnt_kenmerk_default', 'k.cnt_kenmerk_key')
            ) + "                                 kenmerk_waarde, "
          + " k.cnt_kenmerk_volgnummer            kenmerk_volgnr, "
          + lcl.xsql('t.cnt_srtkenmerk_dimensie', 't.cnt_srtkenmerk_key') +" kenmerk_dimensie, "
          + lcl.xsql('k.cnt_kenmerk_hint', 'k.cnt_kenmerk_key') +" kenmerk_hint, "
          + lcl.xsql('k.cnt_kenmerk_default', 'k.cnt_kenmerk_key') +" kenmerk_default, "
          + " k.cnt_kenmerk_verplicht             kenmerk_verplicht, "
          + " k.cnt_kenmerk_groep                 kenmerk_groep, "
          + " NULL otherpath, "
          + " k.cnt_kenmerk_toonbaar              kenmerk_toonbaar, "
          + " k.cnt_kenmerk_uniek                 kenmerk_uniek,"
          + " k.cnt_kenmerk_regexp                kenmerk_regexp"
          + " FROM cnt_srtkenmerk t"
          + ", cnt_kenmerk k"
          + ", cnt_discipline s"
          + " WHERE s.ins_discipline_key = " + disc_key
          + " AND k.cnt_srtcontract_key = s.ins_discipline_key"
          + " AND k.cnt_kenmerk_verwijder IS NULL"
          + " AND k.cnt_srtkenmerk_key = t.cnt_srtkenmerk_key"
          + " AND t.cnt_srtkenmerk_verwijder IS NULL"
          + (!this_cnt.canMANread? " AND cnt_kenmerk_volgnummer >= 100" : "")
          + (!this_cnt.canUSEread? " AND cnt_kenmerk_volgnummer <= 100" : "")
          + " ORDER BY k.cnt_kenmerk_volgnummer"
          + ", UPPER("+lcl.xsql('t.cnt_srtkenmerk_omschrijving', 't.cnt_srtkenmerk_key')+")";

      var trn = 0;

      if (!flexcolumns && !advanced)
      {
        var nrflexcolumns = S("cnt_flexcolumns");
      }
      else
        var nrflexcolumns = flexcolumns || 1;

      listKenmerk(sql,
                  "CNT",
                  cnt_key,
                  { flexcolumns: nrflexcolumns,
                    kenmerk_search: advanced,
                    hideVervallen: cnt_key<0,
                    fnIsReadonly: isReadonly,
                    fnIsInvisible: isInvisible,
                    parentKey: cnt_key }
                 );
%>
    </table>
  </div>
<%
} %>

