PCHD#41057 Hookfunctie tbv OCI Bidfood: afleveradres en leverdatum worden overgenomen vanuit webshop
svn path=/Website/branches/v2018.2/; revision=41013
This commit is contained in:
169
CUST/PCHD/custfunctions.wsc
Normal file
169
CUST/PCHD/custfunctions.wsc
Normal file
@@ -0,0 +1,169 @@
|
||||
<?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>
|
||||
|
||||
</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 Bidfood uitvoeren (prs_bedrijf_key = 10001)
|
||||
if (bedr_key == 10001)
|
||||
{
|
||||
// Alleen voor eerste item de leverdatum en bestellingid opvragen. Is toch voor elk item identiek.
|
||||
if (item == 1) {
|
||||
|
||||
// Bidfood 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 Bidfood 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): bidfood_klantnr -> alg_locatie kenmerk 'bidfood_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 bidfood_klantnr = punchNVL("NEW_ITEM-CUST_FIELD2[#]", item, "Onbekend");
|
||||
__Log('bidfood_klantnr: CUST_FIELD2[' + item + ']= ' + bidfood_klantnr);
|
||||
|
||||
if (bidfood_klantnr != "Onbekend")
|
||||
{
|
||||
sql = "SELECT alg_onrgoed_key FROM alg_onrgoedkenmerk WHERE alg_onrgoed_niveau = 'L' and alg_kenmerk_key = 1220 and alg_onrgoedkenmerk_verwijder is NULL and alg_onrgoedkenmerk_waarde = " + safe.quoted_sql(bidfood_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 = 1220 and alg_onrgoedkenmerk_verwijder is NULL and alg_onrgoedkenmerk_waarde = " + safe.quoted_sql(bidfood_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;
|
||||
}
|
||||
|
||||
|
||||
]]>
|
||||
</script>
|
||||
</component>
|
||||
Reference in New Issue
Block a user