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

    File:               bes_hook_punch.asp
    Description:        hookurl pagina voor punchout bestellingen.
                        Hier komen we als allereerst terug van de leverancier.
                        We maken onder water automatisch de srtdeel-en aan en gaan daarna terug
                        naar bes.asp met in de QueryString een lijst met srtdeel_key's en aantallen.
                        In feite is dat gewoon een deeplink met voorgekozen items

    Parameters:         urole
                        dis_key: puchhout catalogus.
                        <form> volgens de punchout specificatie
    Context:
    Note:
*/

  var wasCodePage = Session.CodePage;
  var cp = getQParamInt("codepage", 65001); // Default utf-8
  Session.CodePage = cp;

  // Initialize Request with CodePage = cp
  Request.Form("non-existent-param");

  // Reset to Session.CodePage default value, the CodePage is cp for the rest of this Request.
  Session.CodePage = wasCodePage;

%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="bes.inc" -->
<%

  var urole = getQParamSafe("urole");
  var dis_key = getQParamInt("dis_key");

  var orderurl = "bes_bestelling.asp?punch=1" + buildTransitParam(["urole", "dis_key", "mld_key"]);
  basketEmpty = false;

  function punchNVL(nm, n, def)
  {
    nm = nm.replace('#', n);
    if (Request.Form(nm).Count() == 0)
        return def;
    if (Request.Form(nm) == "")
        return def;
    return Request.Form(nm)(1);
  }

  i = 1;
  while (!basketEmpty)
  {
    description         = punchNVL("NEW_ITEM-DESCRIPTION[#]", i, "Onbekend");
    attachment          = punchNVL("NEW_ITEM-ATTACHMENT[#]", i, "");
    productGroup        = punchNVL("NEW_ITEM-MATGROUP[#]",i, "Onbekend");
    quantity            = parseInt(punchNVL("NEW_ITEM-QUANTITY[#]",i, "-1"),10);
    unitOfMeasure       = punchNVL("NEW_ITEM-UNIT[#]",i, '');
    price               = punchNVL("NEW_ITEM-PRICE[#]",i, '');
    priceunit           = punchNVL("NEW_ITEM-PRICEUNIT[#]",i, '');
    vendorProductNumber = punchNVL("NEW_ITEM-VENDORMAT[#]",i, 'Leeg');
    if (vendorProductNumber == 'Leeg')
    {
      vendorProductNumber = punchNVL("NEW_ITEM-EXT_PRODUCT_ID[#]",i, '');
    }
    vendor              = punchNVL("NEW_ITEM-VENDOR[#]",i, '');
    opmerking           = punchNVL("NEW_ITEM-LONGTEXT_#:132[]",i, '');

    if (quantity == -1)
    {
      basketEmpty = true; // and exit loop
    }
    else
    { // Maak item (eventueel) aan in catalogus
      var prijs = !(prijs!=""&&isNaN(parseFloat(price)))? parseFloat(price).toFixed(5) : "NULL";
      var bes_srtdeel_key = bes.upsert_deel(dis_key, { srtdeel_nr: vendorProductNumber,
                                                       srtgroep_omschrijving: productGroup,
                                                       srtdeel_omschrijving: description,
                                                       srtdeel_prijs: prijs,
                                                       srtdeel_eenheid: unitOfMeasure,
                                                       srtdeel_btw: 21,
                                                       srtdeel_opmerking: opmerking,
                                                       srtdeel_details_loc: attachment
                                                     });
      orderurl += "&ps=" + bes_srtdeel_key + "&pn=" + quantity;
      // Check customer specific restrictions
      // customer hook
      pResult = new HookResult();

      // Klantspecifieke check functie (hookfunction) voor de invoer
      var bes_punch_receive = custfunc.bes_punch_receive(Request.Form, bes_srtdeel_key, i, pResult);
      if (!bes_punch_receive)
      {
        abort_with_warning(pResult.errmsg);
      }
      else
        orderurl += (bes_punch_receive.orderurl||"");

      i = i + 1;
    }
  }
  if (i == 1)
  {
    __DoLog("Lege punchout?");
    shared.simpel_page("Strange, shopping basket is empty?");
  }

  // Mocht deze URL ooit te lang worden dan is een Sessie-variabele een oplossing
  Response.Redirect(orderurl);

%><% ASPPAGE_END(); %>
