<% /*
     $Revision$
     $Id$

     File:               bes/bes_flexkenmerk.inc
     Description:        Functie die html code genereert voor de presentatie van de flexvelden
     Parameters:         urole                Rol van de gebruiker (frontend, frontoffice, backoffice, management info)
                         bes_key              Bestelling key
                         disc_key             Catalogus key
                         srtgroup_key         Groep key
                         srtdeel_key          Item key
                         kenmerktype          Kenmerk type (B, I)
                         reado                Readonly
                         flexcolumns          aantal kolommen voor flexkenmerken
                         advanced             Geadvanceerd
                         prs_key              Perslid key
                         ord                  Via ORD binnengekomen
     Context:            Functie wordt aangeroepen door
                         1) load_kenmerk.asp
                         2) bes_edit_bestelling.asp die initieel serverside deze html code invoegd.
     Note:
*/ %>
<!-- #include file="../Shared/kenmerk_common.inc" -->
<%
function generateFlexKenmerkCode(params)
{ %>
  <div id="besKenmerken">
    <table id="flextable" cellpadding="0" cellspacing="0">
<%
      var urole = params.urole;
      var fronto = (urole == "fo");
      var backo = (urole == "bo");
      var minfo = (urole == "mi");
      var frontend = (urole == "fe" || (!fronto & !backo & !minfo));

      var bes_key = params.bes_key; // Bestelling key
      var disc_key = params.disc_key; // Catalogus key
      var srtgroup_key = params.srtgroup_key; // Groep
      var srtdeel_key = params.srtdeel_key; // Item
      var kenmerktype = params.kenmerktype; // Kenmerktype
      var ord = params.ord; // Via ORD binnengekomen
      var reado = params.reado; // Readonly
      var flexcolumns = params.flexcolumns;
      var advanced = params.advanced; // Geavanceerd

      var autfunction = "";
      switch(urole)
      {
        case "fe": autfunction = "WEB_BESUSE";
                   break;
        case "fo": autfunction = "WEB_BESFOF";
                   break;
        case "bo": autfunction = "WEB_BESBOF";
                   break;
        case "mi": if (ord)
                     autfunction = "WEB_BESBOR"; // Via ORD binnengekomen dan ook ORD rechten pakken
                   else
                     autfunction = "WEB_BESBAC"; // Via BES binnengekomen dan ook BES rechten pakken
                   break;
      }

      // De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
// TODO: Moeten we echt zo streng zijn? Fiatteur heeft namelijk geen BESUSE rechten
//       var authparams = user.checkAutorisation(autfunction);

      // Heb ik rechten om kenmerken met volgnummer 900 en hoger te zien?
      // De functie checkAutorisation(autfunction, true) geeft null terug indien er geen autorisatie voor autofunction wordt gevonden
      var besman_authparams = user.checkAutorisation("WEB_ORDSUP", true);
      var besman = false;
      if (besman_authparams)
        besman = true;

      if (kenmerktype != 'B' && kenmerktype != 'I')
      {
        %><p><%=L("lcl_internal_error")%></p><%
        Response.End();
      }

      if (bes_key > 0) // Bestaande bestelling. Bij nieuwe bestelling wordt catalogus, groep en item doorgegeven.
      { // Catalogus, groep en item van bestelling opvragen
      	sql = "SELECT DISTINCT bd.ins_discipline_key catalogus"
      	    + ", isg.bes_srtgroep_key groep"
      	    + ", isd.bes_srtdeel_key item"
            + " FROM bes_bestelling_item bi"
            + ", bes_srtdeel isd"
            + ", bes_srtgroep isg"
            + ", bes_discipline bd"
            + " WHERE bi.bes_srtdeel_key = isd.bes_srtdeel_key"
            + " AND isd.bes_srtgroep_key = isg.bes_srtgroep_key"
            + " AND isg.ins_discipline_key = bd.ins_discipline_key"
            + " AND bi.bes_bestelling_key = " + bes_key;
 	      oRs = Oracle.Execute(sql);
   		  var disc_key = oRs("catalogus").Value;
      	  var srtgroup_key = oRs("groep").Value;
      	  var srtdeel_key = oRs("item").Value;
      }

      function isReadonly (volgnummer)
      {
          if (reado) return true;
      }

      sql = "SELECT k.bes_kenmerk_key          kenmerk_key, "
          + lcl.xsql('sk.bes_srtkenmerk_omschrijving', 'sk.bes_srtkenmerk_key') +" kenmerk_omschrijving, "
          + " sk.bes_srtkenmerk_kenmerktype    kenmerk_kenmerktype, "
          + " sk.fac_kenmerkdomein_key         kenmerkdomein_key, "
          + " sk.bes_srtkenmerk_lengte         kenmerk_lengte, "
          + " sk.bes_srtkenmerk_dec            kenmerk_dec, "
          + " sk.bes_srtkenmerk_nmin           kenmerk_nmin, "
          + " sk.bes_srtkenmerk_nmax           kenmerk_nmax, "
          + (bes_key > 0
            ? " (SELECT v.bes_kenmerkbestell_waarde"
              + "  FROM bes_kenmerkbestell v"
              + " WHERE v.bes_bestelling_key = " + bes_key
              + "   AND v.bes_kenmerk_key = k.bes_kenmerk_key"
              + "   AND v.bes_kenmerkbestell_verwijder IS NULL)"
            :  lcl.xsql('k.bes_kenmerk_default', 'k.bes_kenmerk_key')
            ) + "                              kenmerk_waarde, "
          + " k.bes_kenmerk_volgnummer         kenmerk_volgnr, "
          + lcl.xsql('sk.bes_srtkenmerk_dimensie', 'sk.bes_srtkenmerk_key') +" kenmerk_dimensie, "
          + lcl.xsql('k.bes_kenmerk_hint', 'k.bes_kenmerk_key') +" kenmerk_hint, "
          + lcl.xsql('k.bes_kenmerk_default', 'k.bes_kenmerk_key') +" kenmerk_default, "
          + " k.bes_kenmerk_verplicht          kenmerk_verplicht, "
          + " k.bes_kenmerk_groep              kenmerk_groep, "
          + " NULL otherpath, "
          + " k.bes_kenmerk_toonbaar           kenmerk_toonbaar,"
          + " k.bes_kenmerk_uniek              kenmerk_uniek,"
          + " k.bes_kenmerk_regexp             kenmerk_regexp"
          + " FROM bes_srtkenmerk sk"
          + ", bes_kenmerk k"
          + (kenmerktype == 'I'
            ? " WHERE (k.bes_srtinstallatie_key = " + disc_key + " AND k.bes_kenmerk_niveau LIKE 'D'"
              + " OR k.bes_srtinstallatie_key = " + srtgroup_key + " AND k.bes_kenmerk_niveau LIKE 'G'"
              + " OR k.bes_srtinstallatie_key = " + srtdeel_key + " AND k.bes_kenmerk_niveau LIKE 'S')"
            : " WHERE k.bes_srtinstallatie_key IN (" + disc_key + ")")
          +   " AND k.bes_kenmerk_verwijder IS NULL"
          +   " AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key"
          +   " AND sk.bes_srtkenmerk_verwijder IS NULL"
          +   " AND k.bes_kenmerk_type = " + safe.quoted_sql(kenmerktype)
          + (!besman ? " AND k.bes_kenmerk_volgnummer < 900 ":"")
          +   " ORDER BY k.bes_kenmerk_volgnummer, UPPER("+lcl.xsql('sk.bes_srtkenmerk_omschrijving', 'sk.bes_srtkenmerk_key')+")";

      var trn = 0;

      listKenmerk(sql,
                  "BES",
                  bes_key,
                  { flexcolumns: flexcolumns,
                    kenmerk_search: advanced,
                    fnIsReadonly: isReadonly,
                    prs_key: params.prs_key,
                    hideVervallen: bes_key<0,
                    parentKey: bes_key,
                    defaults: params.defaults }
                 );
%>
    </table>
  </div>
<%
} %>
