<%@ language = "JavaScript" %>
<%
 /*
    $Revision$
    $Id$

    File:               get_item_info_ajax.asp
    Description:        Ophalen van allerlei info van een bestelitem (bes_srtdeel)
    Parameters:         srtdeel_key:    te zoeken bestelitem
    Context:
    Note:

*/ %>
<%
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->

<%
var req_info = getQParam("req_info","");
var result = {};

if (req_info == "")
{
    var srtdeel_key = getQParamInt("srtdeel_key");

    var sql = "SELECT bes_srtdeel_key, g.bes_srtgroep_key"
            + "     , " + lcl.xsqla('bes_srtgroep_omschrijving','g.bes_srtgroep_key')
            + "     , bes_srtdeel_nr"
            + "     , " + lcl.xsqla('bes_srtdeel_omschrijving','d.bes_srtdeel_key')
            + "     , bes_srtdeel_image"
            + "     , " + lcl.xsqla('bes_srtdeel_eenheid','d.bes_srtdeel_key')
            + "     , bes.getsrtdeelprijs(bes_srtdeel_key, NULL) bes_srtdeel_prijs"
            + "     , bes_srtdeel_btw"
            + "     , COALESCE(bes_srtdeel_nr, UPPER("+ lcl.xsql('bes_srtdeel_omschrijving','d.bes_srtdeel_key') +")) nrofdeel"
            + "     , b.prs_bedrijf_xmldetails_loc"
            + "     , b.prs_bedrijf_image_loc"
            + "     , b.prs_bedrijf_details_loc"
            + "     , bes_srtdeel_veelvoud"
            + "     , (SELECT COUNT(bes_kenmerk_key)"
              + "        FROM bes_kenmerk k"
              + "       WHERE (k.bes_srtinstallatie_key = (SELECT isg.ins_discipline_key"
                + "                                          FROM bes_srtgroep isg"
                + "                                         WHERE isg.bes_srtgroep_key = g.bes_srtgroep_key)"
                + "                                           AND k.bes_kenmerk_niveau LIKE 'D'"
                + "                                               OR k.bes_srtinstallatie_key = g.bes_srtgroep_key"
                + "                                           AND k.bes_kenmerk_niveau LIKE 'G'"
                + "                                               OR k.bes_srtinstallatie_key = d.bes_srtdeel_key"
                + "                                           AND k.bes_kenmerk_niveau LIKE 'S')"
              + "          AND k.bes_kenmerk_verwijder IS NULL"
              + "          AND k.bes_kenmerk_type = 'I') num_prop"
            + "     , (SELECT COUNT(bes_kenmerk_key)"
              + "        FROM bes_kenmerk k"
              + "       WHERE (k.bes_srtinstallatie_key = (SELECT isg.ins_discipline_key"
                + "                                          FROM bes_srtgroep isg"
                + "                                         WHERE isg.bes_srtgroep_key = g.bes_srtgroep_key)"
                + "                                           AND k.bes_kenmerk_niveau LIKE 'D'"
                + "                                               OR k.bes_srtinstallatie_key = g.bes_srtgroep_key"
                + "                                           AND k.bes_kenmerk_niveau LIKE 'G'"
                + "                                               OR k.bes_srtinstallatie_key = d.bes_srtdeel_key"
                + "                                           AND k.bes_kenmerk_niveau LIKE 'S')"
              + "         AND k.bes_kenmerk_verwijder IS NULL"
              + "         AND k.bes_kenmerk_type = 'I'"
              + "         AND k.bes_kenmerk_default LIKE '%##SQL##%') num_prssql"
            + "     , CASE bst.bes_staffeltabel_groep"
              + "     WHEN 0"
              + "     THEN 0" // artikelkorting
              + "     WHEN 1"
              + "     THEN bst.bes_staffeltabel_key" // groepskorting
              + "     ELSE -1" // geen staffelkorting
              + "     END staffelgroep"
            + "     , COALESCE(d.bes_srtdeel_minimum, 0) bestelminimum"
            + "     , d.bes_srtdeel_maxbestel"
            + "     , " +   lcl.xsqla('d.bes_srtdeel_opmerking','d.bes_srtdeel_key')
            + "     , bes_srtdeel_vervaldatum"
            + "     , bst.bes_staffeltabel_key"
            + "     , (SELECT dp.bes_disc_params_singlegroep"
              + "        FROM bes_disc_params dp"
              + "       WHERE dp.bes_ins_discipline_key = g.ins_discipline_key) singlegroep"
            + "     , g.ins_discipline_key"
            + "  FROM bes_srtdeel d"
            + "     , bes_srtgroep g"
            + "     , prs_bedrijf b"
            + "     , bes_staffeltabel bst"
            + "  WHERE d.prs_bedrijf_key = b.prs_bedrijf_key "
            + "    AND bst.bes_staffeltabel_key(+) = d.bes_staffeltabel_key"
            + "    AND bes_srtdeel_key = " + srtdeel_key
            + "    AND g.bes_srtgroep_key = d.bes_srtgroep_key";

    oRs = Oracle.Execute(sql);

    var imgpath = "";
    var img = oRs("bes_srtdeel_image").value;
    if (img != null) // Er is een plaatje gedefinieerd
    {
      if (oRs("prs_bedrijf_image_loc").value != null) // Bij de leverancier
        imgpath = oRs("prs_bedrijf_image_loc").value + img;
      else if (img.slice(0,7) == "http://" || img.slice(0,8) == "https://") // volledige URL opgegeven
        imgpath = img;
      else /* Zelf geupload naar Facilitor server */
        imgpath = S("bes_image_path") + oRs("ins_discipline_key").value + "/" + img;
    }

    if (oRs("prs_bedrijf_details_loc").value != null)
        detailURL = oRs("prs_bedrijf_details_loc").value + oRs("nrofdeel").value;
    else // Als geen detail gedefineerd dan maar plaatje groot tonen bij onClick
        detailURL = imgpath;

        result = {  srtdeel_key: srtdeel_key,
                    srtdeel_nr: oRs("bes_srtdeel_nr").value,
                    srtdeel_omschrijving: oRs("bes_srtdeel_omschrijving").value,
                    srtgroup_key: oRs("bes_srtgroep_key").value,
                    srtgroup_text: oRs("bes_srtgroep_omschrijving").value,
                    singlegroep: oRs("singlegroep").value,
                    srtdeel_image: imgpath,
                    veelvoud: oRs("bes_srtdeel_veelvoud").value || 1,
                    price: oRs("bes_srtdeel_prijs").value || 0,
                    btw: oRs("bes_srtdeel_btw").value || "",
                    eenheid: oRs("bes_srtdeel_eenheid").value || "",
                    num_prop: oRs("num_prop").value,
                    num_prssql: oRs("num_prssql").value,
                    staffelgroep: oRs("staffelgroep").value,
                    bestelminimum: oRs("bestelminimum").value,
                    maxbestel: oRs("bes_srtdeel_maxbestel").Value,
                    opmerking: safe.html(oRs("bes_srtdeel_opmerking").value || ""), // uiteindelijk gebruiken als HTML
                    srtdeel_vervaldatum: new Date(oRs("bes_srtdeel_vervaldatum").value),
                    prs_bedrijf_image_loc: oRs("prs_bedrijf_image_loc").value? oRs("prs_bedrijf_image_loc").value : S("bes_image_path") + oRs("ins_discipline_key").value + "/",
                    prs_bedrijf_details_loc: detailURL,
                    prs_bedrijf_xmldetails_loc: oRs("prs_bedrijf_xmldetails_loc").value,
                    staffeltabel_key: oRs("bes_staffeltabel_key").value,
                    disc_key: oRs("ins_discipline_key").value
                  };

    if (result.staffeltabel_key)
    {
        // Staffel info toevoegen
        var sql = "SELECT bst.fac_typestaffel_key typestaffel"
                + ",      bst.bes_staffeltabel_groep staffelgroep"
                + ",      bst.bes_staffeltabel_naam staffelgroepnaam"
                + "  FROM bes_staffeltabel bst"
                + " WHERE bst.bes_staffeltabel_key = " + result.staffeltabel_key
        var oRs = Oracle.Execute(sql);

        var typestaffel = oRs("typestaffel").value; // 1: percentage, 2: vast (totaal) bedrag per bestelling, 3: vast bedrag per eenheid
        var staffelgroep = oRs("staffelgroep").value;
        var staffelgroepnaam = oRs("staffelgroepnaam").value;

        var sql = "SELECT bs.bes_staffel_grenswaarde"
                + ",      bs.bes_staffel_korting"
                + "  FROM bes_staffel bs"
                + " WHERE bs.bes_staffeltabel_key = " + result.staffeltabel_key
                + " ORDER BY 1";
        var oRs = Oracle.Execute(sql);

        var staffelhtml = "<table>";
        if (staffelgroep == 0)
          staffelhtml += "<tr><td colspan='8' class='result' align='left'><b><u>" + L("lcl_bes_staffel_individual") + "</u></b></td></tr>"
        else
          staffelhtml += "<tr><td colspan='8' class='result' align='left'><b><u>" + L("lcl_bes_staffel_group") + ": " + staffelgroepnaam + "</u></b></td></tr>"
        var start = result.bestelminimum;
        var kleur;
        var bedrag = "";
        var toeslagkorting = "";
        while (!oRs.eof)
        {
          if (oRs("bes_staffel_korting").value < 0)
            kleur = "red";
          else if (oRs("bes_staffel_korting").value > 0)
            kleur = "green";
          else
            kleur = "black";

          if (typestaffel == 1) // percentage
          {
            bedrag = result.price * (1 - oRs("bes_staffel_korting").value / 100) * result.veelvoud;
            if (oRs("bes_staffel_korting").value < 0)
              toeslagkorting = "(" + Math.abs(oRs("bes_staffel_korting").value) + "%&nbsp;" + L("lcl_bes_extra_charge") + ")"; // ...% toeslag
            else if (oRs("bes_staffel_korting").value > 0)
              toeslagkorting = "(" + oRs("bes_staffel_korting").value + "%&nbsp;" + L("lcl_bes_discount") + ")"; // ...% korting
            else
              toeslagkorting = "";
            toeslagkorting = "/" + result.veelvoud + " " + result.eenheid + " " + toeslagkorting
          }
          else if (typestaffel == 2) // vast (totaal) bedrag per bestelling
          {
            //bedrag = S("currency_pref") + parseFloat(oRs("bes_staffel_korting").value);
            if (oRs("bes_staffel_korting").value < 0)
               toeslagkorting = "(" + S("currency_pref") + safe.curr(Math.abs(oRs("bes_staffel_korting").value)) + "&nbsp;" + L("lcl_bes_extra_charge_tot") + ")"; // ... toeslag op totaal
            else if (oRs("bes_staffel_korting").value > 0)
              toeslagkorting = "(" + S("currency_pref") + safe.curr(Math.abs(oRs("bes_staffel_korting").value)) + "&nbsp;" + L("lcl_bes_discount_tot") + ")"; // ... korting op totaal
            else
              toeslagkorting = "(geen korting)";
          }
          else // typestaffel == 3, vast bedrag per eenheid
          {
            bedrag = (result.price - oRs("bes_staffel_korting").value) * result.veelvoud;
            toeslagkorting = "/" + result.veelvoud + " " + result.eenheid
          }

          tdspan_begin_right = "<td class='result' align='right'><span style='color: " + kleur + "'>";
          tdspan_begin_left = "<td class='result' align='left'><span style='color: " + kleur + "'>";
          tdspan_eind = "&nbsp;</span></td>";
          staffelhtml += "<tr>" + tdspan_begin_right
                       + L("lcl_bes_staffel")
                       + (oRs("bes_staffel_grenswaarde").value // Is er een grenswaarde
                         ? tdspan_eind + tdspan_begin_right
                           + L("lcl_bes_of") // van
                           + tdspan_eind + tdspan_begin_right
                           + (start? start : "0")
                           + tdspan_eind + tdspan_begin_right
                           + L("lcl_bes_until") // tot
                           + tdspan_eind + tdspan_begin_right
                           + (oRs("bes_staffel_grenswaarde").value? oRs("bes_staffel_grenswaarde").value : " ")
                           + tdspan_eind + tdspan_begin_right
                           + result.eenheid + ":"
                           + tdspan_eind + tdspan_begin_left
                         : tdspan_eind + "<td colspan='5' class='result' align='left'><span style='color: " + kleur + "'>"
                           + L("lcl_bes_for") + "&nbsp;" + start // voor x eenheid of meer ...
                           + "&nbsp;" + result.eenheid + ":"
                           + "&nbsp;" + L("lcl_bes_or_more")
                           //+ L("lcl_bes_for_more_than") + "&nbsp;" + start // voor meer dan ...
                           + tdspan_eind + tdspan_begin_left)
                       + "<nobr>" + (bedrag != 0? (S("currency_pref") + safe.curr(bedrag)) : "") //+ " / " + result.veelvoud + " " + result.eenheid
                       + toeslagkorting + "</nobr>"
                       + tdspan_eind + "</tr>";
          start = oRs("bes_staffel_grenswaarde").value;

          oRs.MoveNext();
        }
        staffelhtml += "</table>"; // Maximaal ongeveer 25 korting regels kunnen via header verstuurd worden. Moet genoeg zijn voor 4.81.

        result.staffelhtml = staffelhtml;
    }
}
else
{
        var niveau = getQParam("niveau","");
        var install_key = getQParamInt("install_key");
        var init_key = getQParamInt("init_key", -1);

        var sql = "SELECT bes_srtinstallatie_key"
                + "     , DECODE(niveau, 'D', discipline_oms"
                + "                    , 'G', srtgroep_oms"
                + "                    , 'S', srtdeel_oms) bes_srtinstallatie_oms"
                + "  FROM bes_v_allsrtinstallatie"
                + " WHERE niveau = " + safe.quoted_sql(niveau);
        switch(niveau)
        {
            case "G": sql += " AND bes_discipline_key = " + install_key; break;
            case "S": sql += " AND bes_srtgroep_key = " + install_key; break;
        }
        sql += " ORDER BY 2"
        var new_lov = [];
        var oRs = Oracle.Execute(sql);
        while(!oRs.eof)
        {
            new_lov.push({key: oRs("bes_srtinstallatie_key").Value,
                          oms: oRs("bes_srtinstallatie_oms").Value,
                          sel: oRs("bes_srtinstallatie_key").Value == init_key});
            oRs.MoveNext();
        }
        oRs.Close();
        result.niveau = niveau;
        result.lov = new_lov;
}

Response.Write(JSON.stringify(result));
%>
