<% /*
     $Revision$
     $Id$

     File:               FIN/fin_flexkenmerk.inc
     Description:        Functie die html code genereert voor de presentatie van de flexvelden
     Parameters:         
                         fin_key              Factuurnummer
                         reado                Readonly
                         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.
                         en nog een paar
     Note:
*/ %>
<!-- #include file="../Shared/kenmerk_common.inc" -->
<%
function generateFlexKenmerkCode(params)
{
      params = params || {};
      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 advanced = params.advanced; // Geavanceerd
      var reqId = params.reqId; // Perslid key (!search && multiMode)
      var nameprefix = params.nameprefix;
      var copy = params.copy || false;
      var noblock = params.noblock || false;
      var inline = params.inline || false;
      var hasfilter = params.hasfilter? params.hasfilter : null;

      function isReadonly (oRs)
      {
          var isBijlage = inArray(oRs("kenmerk_kenmerktype").Value, ["E", "F", "M"]);
          return reado && !(params.mobile && isBijlage);
      }

      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 MAX(CASE WHEN k.fin_kenmerk_kenmerktype = 'M'"
                          + "                THEN NULL"
                          + "                ELSE f.fin_kenmerkfactuur_waarde"
                          + "                END)"
                          + " 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 MAX(CASE WHEN k.fin_kenmerk_kenmerktype = 'M'"
                          + "                THEN NULL"
                          + "                ELSE f.fin_kenmerkfactregel_waarde"
                          + "                END)"
                          + " 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"
          + "     , 1                                     kenmerk_key_count"
          + "     , NULL                                  srtkenmerk_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"
          + "     , k.fin_kenmerk_systeem                 kenmerk_systeem"
          + "     , " + kenmerkwaarde + "                 kenmerk_waarde"
          + "     , k.fin_kenmerk_volgnr                  kenmerk_volgnr"
          + "     , k.fin_kenmerk_rolcode                 kenmerk_rolcode"
          + "     , " + 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_show_expr           	  kenmerk_show_expr"
          + "     , 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"
          + "     , k.fac_functie_key"
          + "  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") + ")";

      listKenmerk(sql,
                  "FIN",
                  (kenmerk_niveau == "F"? fin_key : regel_key),
                  {
                    kenmerk_search: advanced,
                    fnIsReadonly: isReadonly,
                    reado: reado,
                    mobile: params.mobile,
                    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,
                    inline: inline,
                    noblock: noblock,
                    hasfilter: hasfilter
                  }
                 );
%>
<%
} %>

