<% /*
     $Revision$
     $Id$

     File:               FIN/fin_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)
                         fin_key              Factuurnummer
                         reado                Readonly
                         flexcolumns          aantal kolommen voor flexkenmerken
                         advanced             Geadvanceerd
                         reqId                Perslid key
     Context:            Functie wordt aangeroepen door
                         1) load_kenmerk.asp
                         2) fin_edit.asp die initieel serverside deze html code invoegd.
     Note:
*/ %>
<!-- #include file="../Shared/kenmerk_common.inc" -->
<%
function generateFlexKenmerkCode(params)
{
      // Geen autfunction bepaald. Je komt bij FIN niet binnen met een bepaalde rol (urole).
      // Alleen PRSreadlevel en PRSwritelevel van belang want fac_functie_min_level = 7 (lezen en schrijven organisatie)
      var authparamsFINUSE = user.checkAutorisation("WEB_FINUSE", true);
      var authparamsFINFOF = user.checkAutorisation("WEB_FINFOF", true);
      var authparamsFINBOF = user.checkAutorisation("WEB_FINBOF", true);
      user.auth_required_or_abort(authparamsFINUSE || authparamsFINFOF || authparamsFINBOF || user.isBudgethouder());

      var fin_key = params.fin_key; // Factuurnummer
      var regel_key = params.regel_key || -1; // Factuurregelnummer
      var kenmerk_niveau = params.kenmerk_niveau; // Kenmerk niveau (F=factuur, R=regel).
      var reado = params.reado; // Readonly
      var flexcolumns = params.flexcolumns;
      var advanced = params.advanced; // Geavanceerd
      var reqId = params.reqId; // Perslid key (!search && multiMode)
      var nameprefix = params.nameprefix;
      var copy = (params.copy? params.copy : false);

      function isReadonly (volgnummer)
      {
          return reado;
      }

      var otherKenmerkPath = "NULL otherpath,";
      if (copy)
      { // Kopieeer eventueel flexfiles
        otherKenmerkPath = " 'FIN/" + subfolderKey("F", fin_key) + "/' || fin_kenmerk_key otherpath, ";
      }


      var kenmerkwaarde = "";
      if (kenmerk_niveau == "F")
      {
        kenmerkwaarde = (fin_key > 0
                        ? " (SELECT f.fin_kenmerkfactuur_waarde"
                          + " FROM fin_kenmerkfactuur f"
                          + " WHERE f.fin_factuur_key = " + fin_key
                          + " AND f.fin_kenmerk_key = k.fin_kenmerk_key"
                          + " AND f.fin_kenmerkfactuur_verwijder IS NULL)"
                        : lcl.xsql('k.fin_kenmerk_default', 'k.fin_kenmerk_key'))
      }
      else
      {
        kenmerkwaarde = (regel_key > 0
                        ? " (SELECT f.fin_kenmerkfactregel_waarde"
                          + " FROM fin_kenmerkfactregel f"
                          + " WHERE f.fin_factuurregel_key = " + regel_key
                          + " AND f.fin_kenmerk_key = k.fin_kenmerk_key"
                          + " AND f.fin_kenmerkfactregel_verwijder IS NULL)"
                        : lcl.xsql('k.fin_kenmerk_default', 'k.fin_kenmerk_key'))
      }

      sql = "SELECT k.fin_kenmerk_key               kenmerk_key, "
          + lcl.xsql('k.fin_kenmerk_omschrijving', 'k.fin_kenmerk_key') +" kenmerk_omschrijving, "
          + " k.fin_kenmerk_kenmerktype             kenmerk_kenmerktype, "
          + " k.fac_kenmerkdomein_key               kenmerkdomein_key, "
          + " k.fin_kenmerk_lengte                  kenmerk_lengte, "
          + " k.fin_kenmerk_dec                     kenmerk_dec, "
          + " k.fin_kenmerk_nmin                    kenmerk_nmin, "
          + " k.fin_kenmerk_nmax                    kenmerk_nmax, "
          + kenmerkwaarde + "                       kenmerk_waarde, "
          + " k.fin_kenmerk_volgnr                  kenmerk_volgnr, "
          + lcl.xsql('k.fin_kenmerk_dimensie', 'k.fin_kenmerk_key') +" kenmerk_dimensie, "
          + lcl.xsql('k.fin_kenmerk_hint', 'k.fin_kenmerk_key') +" kenmerk_hint, "
          + lcl.xsql('k.fin_kenmerk_default', 'k.fin_kenmerk_key') +" kenmerk_default, "
          + " k.fin_kenmerk_verplicht               kenmerk_verplicht, "
          + " k.fin_kenmerk_groep                   kenmerk_groep, "
          + otherKenmerkPath // corresponderende pad voor copy/move folder
          + " k.fin_kenmerk_toonbaar                kenmerk_toonbaar,"
          + " k.fin_kenmerk_uniek                   kenmerk_uniek,"
          + " k.fin_kenmerk_regexp                  kenmerk_regexp"
          + " FROM fin_kenmerk k"
          + " WHERE k.fin_kenmerk_verwijder IS NULL"
          + "   AND k.fin_kenmerk_type = " + safe.quoted_sql(kenmerk_niveau)
          + (kenmerk_niveau == "R"
            ? " AND k.fin_kenmerk_kenmerktype NOT IN ('F', 'M', 'E')"
            : "")
          + " ORDER BY k.fin_kenmerk_volgnr"
          + ", UPPER("+lcl.xsql('k.fin_kenmerk_omschrijving', 'k.fin_kenmerk_key')+")";

      var trn = 0;

      listKenmerk(sql,
                  "FIN",
                  (kenmerk_niveau == "F"? fin_key : regel_key),
                  { flexcolumns: flexcolumns,
                    kenmerk_search: advanced,
                    fnIsReadonly: isReadonly,
                    hideVervallen: fin_key < 0 && regel_key < 0,
                    nameprefix: (kenmerk_niveau == "R"? nameprefix + "_" : null), // nameprefix heeft voor regel kenmerken een uniek nummer in zich die voor elke regel anders is.
                    extraserie: (kenmerk_niveau == "R"? true : false),
                    parentKey: (kenmerk_niveau == "F"? fin_key : regel_key),
                    niveau: kenmerk_niveau }
                 );
%>
<%
} %>

