<% /*
     $Revision$
     $Id$

     File:               INS/ins_flexkenmerksrtcontrole.inc
     Description:        Functie die html code genereert voor de presentatie van de flexvelden
     Parameters:         deelsrtcontrole_key  vergelijkbaar met ins_deel_key bij object kenmerken
                         srtcontrole_key      vergelijkbaar met srtdeel_key bij object kenmerken
                         reado                Readonly
                         advanced             Geadvanceerd
     Context:            Functie wordt aangeroepen door
                         1) load_kenmerksrtcontrole.asp
                         2) ins_edit_inspect.asp/ins_edit_deel.asp/ins_edit_srtdeel.asp
                         3) ins_show_deel.asp/ins_show_srtdeel.asp
                         4) ins_inspect_plan.asp/ins_inspect_end.asp
                         2 t/m 4 voegen initieel deze html code toe.
     Note:
*/
%>
<!-- #include file="../Shared/kenmerk_common.inc" -->
<%
function generateFlexKenmerkBlock(params)
{
  var authparamsINSUSE = user.checkAutorisation("WEB_INSUSE", true);
  user.auth_required_or_abort(params.reado || authparamsINSUSE);

  var deelsrtcontrole_key = params.deelsrtcontrole_key;
  var srtcontrole_key     = params.srtcontrole_key;
  var ins_status          = params.ins_status;
  var reado               = params.reado; // Readonly
  var advanced            = (params.advanced?    params.advanced    : false); // Geavanceerd
  var nodefaults          = (params.nodefaults?  params.nodefaults  : false); // Niet de default waarden invullen voor flexkenmerk maar leeg laten
  var copy                = (params.copy? params.copy : false);
  var kenmerkNiveau       = "I";
  var submit              = (params.submit? params.submit : false);
  var close               = (params.close? params.close : false);
  var finish              = (params.finish? params.finish : false);

  var otherKenmerkPath = "NULL otherpath,";
  if (copy)
  { // Kopieeer eventueel flexfiles
    otherKenmerkPath = " 'INS/" + subfolderKey(kenmerkModule, deelsrtcontrole_key) + "/' || ins_kenmerk_key otherpath, ";
  }

  var sqlwaarde = " (SELECT v.ins_kmdeelsrtcontr_waarde"
                + "     FROM ins_kmdeelsrtcontr v"
                + "    WHERE ("
                + (deelsrtcontrole_key > 0
                  ? "        v.ins_deelsrtcontrole_key = " + deelsrtcontrole_key + " OR"
                  : "")
                + "          v.ins_deelsrtcontrole_key = " + srtcontrole_key + ")"
                + "     AND v.ins_kenmerk_key = k.ins_kenmerk_key"
                + "     AND v.ins_kmdeelsrtcontr_verwijder IS NULL)";

  sql = "SELECT DISTINCT " + (advanced? "k.ins_srtkenmerk_key" : "k.ins_kenmerk_key") + " kenmerk_key"
      + "     , 1                                      kenmerk_key_count"
      + "     , t.ins_srtkenmerk_key                   srtkenmerk_key"
      + "     , COALESCE (" + lcl.xsql("k.ins_kenmerk_omschrijving", "k.ins_kenmerk_key")
      + "              ,  " + lcl.xsql("t.ins_srtkenmerk_omschrijving", "t.ins_srtkenmerk_key") + ") kenmerk_omschrijving"
      + "     , t.ins_srtkenmerk_kenmerktype           kenmerk_kenmerktype"
      + "     , t.fac_kenmerkdomein_key                kenmerkdomein_key"
      + "     , t.ins_srtkenmerk_lengte                kenmerk_lengte"
      + "     , t.ins_srtkenmerk_dec                   kenmerk_dec"
      + "     , t.ins_srtkenmerk_nmin                  kenmerk_nmin"
      + "     , t.ins_srtkenmerk_nmax                  kenmerk_nmax"
      + "     , t.ins_srtkenmerk_systeem               kenmerk_systeem"
      + ((deelsrtcontrole_key > 0)
        ?
          (", COALESCE(" + sqlwaarde + (!nodefaults ? ", k.ins_kenmerk_default" : ", ''") + ")")
        :
          (!nodefaults
          ?
            " , k.ins_kenmerk_default"
          :
            " ''")
        ) + "   kenmerk_waarde"
      + "     , k.ins_kenmerk_volgnummer               kenmerk_volgnr"
      + "     , k.ins_kenmerk_rolcode                  kenmerk_rolcode"
      + "     , " + lcl.xsql("t.ins_srtkenmerk_dimensie", "t.ins_srtkenmerk_key") + " kenmerk_dimensie"
      + "     , k.ins_kenmerk_hint                     kenmerk_hint"
      + "     , k.ins_kenmerk_default                  kenmerk_default"
      + "     , k.ins_kenmerk_show_expr            	   kenmerk_show_expr "
      + "     , CASE"
      + "       WHEN k.ins_kenmerk_verplicht = 1"
          + ((!submit && (close || finish)) || ins_status == 5 || ins_status == 6
            ? "   OR (k.ins_kenmerk_verplicht_status = 5)"
            : "")
          + ((!submit && !close && finish) || ins_status == 6
            ? "   OR (k.ins_kenmerk_verplicht_status = 6)"
            : "")
          + "   THEN 1"
          + "   ELSE k.ins_kenmerk_verplicht"
          + "   END kenmerk_verplicht"
      + "     , k.ins_kenmerk_verplicht_status         kenmerk_verplicht_status"
      + "     , k.ins_kenmerk_groep                    kenmerk_groep"
      + "     , NULL otherpath, "
      + (advanced
        ? "1"
        : "     k.ins_kenmerk_toonbaar" ) + "          kenmerk_toonbaar"
      + "     , k.ins_kenmerk_uniek                    kenmerk_uniek"
      + "     , k.ins_kenmerk_regexp                   kenmerk_regexp"
      + "     , k.ins_kenmerk_bewerkniveau             bewerk_niveau"
      + "     , k.fac_functie_key"
      + "  FROM ins_srtkenmerk t"
      + "     , ins_kenmerk k"
      + "     , ctr_discipline cd"
      + "     , ins_srtcontrole c"
      + " WHERE k.ins_srtkenmerk_key = t.ins_srtkenmerk_key"
      + "   AND cd.ins_discipline_key = c.ctr_discipline_key"
      + "   AND ((k.ins_srtinstallatie_key = c.ins_srtcontrole_key"
      + "     AND k.ins_kenmerk_niveau = 'C')"
      + "     OR (k.ins_srtinstallatie_key = cd.ins_discipline_key"
      + "     AND k.ins_kenmerk_niveau = 'E')"
      + "     OR (k.ins_srtinstallatie_key IS NULL"
      + "     AND k.ins_kenmerk_niveau = 'T'))"
      + "   AND k.ins_kenmerk_verwijder IS NULL"
      + "   AND t.ins_srtkenmerk_verwijder IS NULL"
      + "   AND cd.ins_discipline_verwijder IS NULL"
      + "   AND c.ins_srtcontrole_key = " + srtcontrole_key
      + " ORDER BY k.ins_kenmerk_volgnummer"
      + "        , UPPER( COALESCE (" + lcl.xsql("k.ins_kenmerk_omschrijving", "k.ins_kenmerk_key")
      + "                        ,  " + lcl.xsql("t.ins_srtkenmerk_omschrijving", "t.ins_srtkenmerk_key") + "))";

  function isReadonly (oRs)
  {
    return reado;
  }

  function setClassname(poRs)
  {
    var classname = "";
    if (!advanced && (((submit && close && finish) && poRs("kenmerk_verplicht_status").Value == 5) ||
                      (((close && finish) || (finish && submit)) && poRs("kenmerk_verplicht_status").Value == 6)))
      classname = "mayberequired";
    return classname;
  }

  listKenmerk( sql,
               "INS",
               deelsrtcontrole_key,
               {
                 kenmerk_search: false,
                 fnIsReadonly: isReadonly,
                 fnClassname: setClassname,
                 hideVervallen: deelsrtcontrole_key < 0,
                 parentKey: deelsrtcontrole_key,
                 niveau: kenmerkNiveau,
                 reado: reado,
                 mobile: params.mobile
               }
             );
}
%>
