<?xml version="1.0"?>
<component>
<?component error="true" debug="true"?>
<registration
	description="custfunctions"
	progid="custfunction.wsc"
	version="1.00"
	classid="{4F51571C-1DFC-4769-B8DD-37B356378F12}"
>
</registration>

<public>

<!-- properties -->
	<property name="Oracle">
		<put/>
	</property>
	<property name="__Log">
		<put/>
	</property>
	<property name="__DoLog">
		<put/>
	</property>
	<property name="safe">
		<put/>
	</property>

<!-- methods -->
	<method name="bes_punch_receive">
		<PARAMETER name="RequestForm"/>
		<PARAMETER name="bes_srtdeel_key"/>
		<PARAMETER name="item"/>
	</method>

	<method name="API_PHONEBOOK">
		<PARAMETER name="prs_key"/>
		<PARAMETER name="data"/>
	</method>
</public>

<script language="javascript">
<![CDATA[


/*
   $Revision$
   $Id$
*/

function put_Oracle(newValue)	{Oracle		= newValue};
function put___Log(newValue)	{__Log		= newValue};
function put___DoLog(newValue)	{__DoLog	= newValue};
function put_safe(newValue)	    {safe		= newValue};

var Oracle;
var __Log;
var __DoLog;
var safe;

bes_punch_receive = 
function (RequestForm, bes_srtdeel_key, item, pResult)
{
  var result = {orderurl: ""};
  sql = "SELECT sd.prs_bedrijf_key FROM bes_srtdeel sd WHERE sd.bes_srtdeel_key = " + bes_srtdeel_key;
  oRs = Oracle.Execute(sql);
  bedr_key = oRs("prs_bedrijf_key").value;

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

  // Alleen voor leverancier Medeco uitvoeren (prs_bedrijf_key = 799)
  if (bedr_key == 799)
  {
    // VGLD#29791
    // Voor elk item de eenheid (die standaard uit NEW_ITEM_UNIT wordt ingelezen) bij Medeco uit CUST-field NEW_ITEM-CUST_FIELD5 te halen...
    
    var artikel_eenheid = punchNVL("NEW_ITEM-CUST_FIELD5[#]", item, "Onbekend");
    __Log('ARTIKEL EENHEID: CUST_FIELD5[' + item + ']= ' + artikel_eenheid); 
    
    if (artikel_eenheid != 'Onbekend')
    {
       sql = "UPDATE bes_srtdeel SET bes_srtdeel_eenheid = " + safe.quoted_sql(artikel_eenheid) + " WHERE bes_srtdeel_key = " + bes_srtdeel_key;
       oRs = Oracle.Execute(sql);
    }
    
  }

  // Alleen voor leverancier DeliXL uitvoeren (prs_bedrijf_key = 684)
  if (bedr_key == 684)
  {
    // Alleen voor eerste item de leverdatum en bestellingid opvragen. Is toch voor elk item identiek.
    if  (item == 1) {
        
        // Deli XL heeft 2 belangrijke gegevens, die Facilitor 1-op-1 moet overnemen en in de bestelopdracht moet terugsturen:
        // Aleverdatum en Afleveradres, 2 onafscheidelijke vaste gegevens die door DeliXL wordt bepaald (business rules).
        
        // Leverdatum is in formaat yyyy-mm-dd
        var leverdatum = punchNVL("NEW_ITEM-CUST_FIELD1[#]", item, "Onbekend");
        __Log('Leverdatum: CUST_FIELD1[' + item + ']= ' + leverdatum);
        if (leverdatum != "Onbekend")
        {
          sql = "SELECT TO_DATE(" + safe.quoted_sql(leverdatum) + ", 'yyyy-mm-dd') leverdatum FROM DUAL";
          oRs = Oracle.Execute(sql);
          leverdatum = oRs("leverdatum").value;
          result.orderurl = "&leverdatum=" + (new Date(leverdatum)).getTime();
        }
        
        // Afleveradres is het klantnummer, en moeten wij 'mappen' op een mld_adres record (=aflever adres)
        // Implementatie van deze mapping (vertaaltabel): delixl_klantnr -> alg_locatie kenmerk 'Deli XL Klantnr' -> alg_locatie -> mld_adres.
        // Uitgangspunt is dat alg_locatie wel een mld_adres met vinkje 'afleveradres=ja' heeft, en precies 1 (anders wordt de '1e' of een willekeurige gepakt).
        // Indien alg_locatie geen mld_adres heeft, dan wordt geen mld_adres_key meegegeven!
        
        var delixl_klantnr = punchNVL("NEW_ITEM-CUST_FIELD2[#]", item, "Onbekend");
        __Log('DeliXL Klantnummer: CUST_FIELD2[' + item + ']= ' + delixl_klantnr);
        
        if (delixl_klantnr != "Onbekend")
        {
          sql = "SELECT alg_onrgoed_key FROM alg_onrgoedkenmerk WHERE alg_onrgoed_niveau = 'L' and alg_kenmerk_key = 1040 and alg_onrgoedkenmerk_verwijder is NULL and alg_onrgoedkenmerk_waarde = " + safe.quoted_sql(delixl_klantnr);
          
          
          sql = " SELECT mld_adres_key FROM mld_adres a, alg_locatie l, alg_onrgoedkenmerk k"
              + " WHERE alg_onrgoed_niveau = 'L' and alg_kenmerk_key = 1040 and alg_onrgoedkenmerk_verwijder is NULL and alg_onrgoedkenmerk_waarde = " + safe.quoted_sql(delixl_klantnr)
              + " AND l.alg_locatie_key = k.alg_onrgoed_key"
              + " AND a.alg_locatie_key = l.alg_locatie_key"
              + " AND a.mld_adres_afleveradres = 1"
              + " AND a.mld_adres_verwijder IS NULL";

          oRs = Oracle.Execute(sql);
          if (!oRs.eof){
            var mld_adres_key = oRs("mld_adres_key").value;
            result.orderurl = result.orderurl + "&adres_key=" + mld_adres_key;
          }          
        }
        
        
        //OCI offertenummer
        var bestellingid = punchNVL("NEW_ITEM-CUST_FIELD7[#]", item, "Onbekend");
        
        //Uw referentie
        var mijn_ref = punchNVL("NEW_ITEM-CUST_FIELD11[#]", item, "Onbekend");
        __Log('Uw referentie: CUST_FIELD11[' + item + ']= ' + mijn_ref);
        
        
        if (bestellingid != "Onbekend")
          //straks vanaf 5.3.3 gebruiken: result.flex_defaults = "OCI offertenr=" + safe.URLEncode(bestellingid);
          result.flex_defaults = "OCI offertenr=" + bestellingid;
        if (mijn_ref != "Onbekend")
          //straks vanaf 5.3.3 gebruiken: result.flex_defaults = result.flex_defaults + "&Mijn referentie=" + safe.URLEncode(mijn_ref);
          result.flex_defaults = result.flex_defaults + "&Mijn referentie=" + mijn_ref;
    }
    // En voor elk item:
    var btw_perc = punchNVL("NEW_ITEM-CUST_FIELD3[#]", item, "Onbekend");
    __Log('BTW-PERCENTAGE: CUST_FIELD3[' + item + ']= ' + btw_perc); 
    var portie = punchNVL("NEW_ITEM-CUST_FIELD4[#]", item, "Onbekend");
    __Log('PORTIE: CUST_FIELD4[' + item + ']= ' + portie); 
    var artikelspec = punchNVL("NEW_ITEM-CUST_FIELD5[#]", item, "Onbekend");
    __Log('ARTIKEL SPECS: CUST_FIELD5[' + item + ']= ' + artikelspec); 
    if (btw_perc != 'Onbekend')
    {
       sql = "UPDATE bes_srtdeel SET bes_srtdeel_btw = ROUND(" + parseFloat(btw_perc) + ") WHERE bes_srtdeel_key = " + bes_srtdeel_key;
       oRs = Oracle.Execute(sql);
    }
    
    if (portie != 'Onbekend')
    {
       sql = "UPDATE bes_srtdeel SET bes_srtdeel_opmerking = bes_srtdeel_opmerking || 'Portie:' || " + safe.quoted_sql(portie) + " || chr(10) WHERE bes_srtdeel_key = " + bes_srtdeel_key;
       oRs = Oracle.Execute(sql);
    }
    if (artikelspec != 'Onbekend')
    {
       sql = "UPDATE bes_srtdeel SET bes_srtdeel_opmerking = bes_srtdeel_opmerking || 'Artikelspec:' || " + safe.quoted_sql(artikelspec) + " || chr(10) WHERE bes_srtdeel_key = " + bes_srtdeel_key;
       oRs = Oracle.Execute(sql);
    }    
  }
  return result;
}



API_PHONEBOOK =
function (prs_key, data)
{
   var result = {};
   //
       // Hoofdlocatie
   //
   if (data.werkplekken.length)
   {
       var txt = "";
       var wp;
       var wplabel = "Hoofdlocatie:";
       var loc_key = -1;
       for (wp in data.werkplekken)
       {
           if (!data.werkplekken[wp].prs_werkplek_aanduiding.isVirtueel && wp < 1)  // pak er maar eentje, TODO hoofdwerkplek
           {
              //  trs += "<tr><td>"+wplabel+"</td><td>" + data.werkplekken[wp].prs_werkplek_aanduiding + "</td></tr>";
               txt +=  data.werkplekken[wp].prs_werkplek_aanduiding;
               loc_key = data.werkplekken[wp].alg_locatie_key;

           }
       }
       result.demo_locatie = safe.html(txt);
   }
   //
   // Klikbaar e-mailadres
   //
   if (data.prs_perslid_email)
   {
        result.demo_mailto = "<a href='mailto:" + data.prs_perslid_email + "'>" + data.prs_perslid_email + "</a>";
   }

   return result;
};

]]>
</script>
</component>