Merge 2016.3 Gold A patches

svn path=/Website/trunk/; revision=32580
This commit is contained in:
Jos Groot Lipman
2017-01-26 20:14:06 +00:00
16 changed files with 299 additions and 82 deletions

View File

@@ -203,15 +203,15 @@ function model_generic(table, autfunction)
if (seq)
field.seq = seq;
}
if (fld.match(/(_omschrijving|_oms|_remark|_code|_nr)$/))
field.filter = "like";
if (!hasName && fld.match(/_code$/))
{
field.filter = "like";
fld = "name";
hasName = true;
}
if (!hasName && fld.match(/(_omschrijving|_oms|_remark)$/))
{
field.filter = "like";
fld = "name";
hasName = true;
}

View File

@@ -433,7 +433,7 @@ else if (savemode == "C")
oRs.Close();
}
var respijt = false;
var isPlanned = false;
if (insPresent)
{
// Is er een plandatum? Dan is dit de volgende inspectiedatum.
@@ -448,10 +448,8 @@ else if (savemode == "C")
if (!oRs.eof && oRs("ins_deelsrtcontrole_plandatum").Value != null)
{
// De plandatum is de volgende inspectiedatum
plandatum = new Date(oRs("ins_deelsrtcontrole_plandatum").Value);
// Alleen als de plandatum na de volgende inspectiedatum valt is er sprake van respijt.
// Als het de allereerste inspectie is dan is er nooit sprake van respijt.
respijt = !firstinspect && plandatum > nextdate;
// Als het de allereerste inspectie is dan is er nooit sprake van isPlanned.
isPlanned = !firstinspect;
}
oRs.Close();
}
@@ -461,15 +459,11 @@ else if (savemode == "C")
{
var nextdate_trunc = new Date(new Date(nextdate).setMinutes(0, 0, 0));
var deelsrtcontrole_datum_trunc = new Date(new Date(deelsrtcontrole_datum).setMinutes(0, 0, 0));
if (respijt)
plandatum = new Date(plandatum.setMinutes(0, 0, 0));
}
else
{
var nextdate_trunc = new Date(nextdate.midnight());
var deelsrtcontrole_datum_trunc = new Date(deelsrtcontrole_datum.midnight());
if (respijt)
plandatum = new Date(plandatum.midnight());
}
// Afhankelijk van de modus de inspectie(s) opslaan.
@@ -478,7 +472,7 @@ else if (savemode == "C")
// De laatste datum die opgeslagen wordt is uiterlijk de opgegeven controledatum
// De trunc waarde van de controle datum gebruiken.
var firstone = true;
while ((respijt && plandatum <= deelsrtcontrole_datum_trunc) || (!respijt && nextdate_trunc <= deelsrtcontrole_datum_trunc))
while (isPlanned || (!isPlanned && nextdate_trunc <= deelsrtcontrole_datum_trunc))
{
var fields = [ { dbs: "prs_perslid_key", typ: "key", val: user_key, track: L("lcl_name"), foreign: "prs_perslid" },
{ dbs: "ins_deelsrtcontrole_datum", typ: "datetime", val: deelsrtcontrole_datum, track: L("lcl_ins_controle_datum") }, // De controledatum met tijd opslaan.
@@ -523,8 +517,7 @@ else if (savemode == "C")
// Nu nog de status zetten, tracking genereren en notificaties sturen.
ins.setinspectstatus(ingesloten[i].dlsrtcont_key, (finish? 6: 5)); // Afgemeld(5), History/Verwerkt(6).
respijt = false;
plandatum = null;
isPlanned = false;
insPresent = false; // Als er terug in de while lus wordt gesprongen is er geen inspectie record aanwezig.
firstone = false;
@@ -588,8 +581,7 @@ else if (savemode == "C")
// Nu nog de status zetten, tracking genereren en notificaties sturen.
ins.setinspectstatus(ingesloten[i].dlsrtcont_key, (finish? 6: 5)); // Afgemeld(5), History/Verwerkt(6).
respijt = false;
plandatum = null;
isPlanned = false;
}
}
else

View File

@@ -642,8 +642,9 @@ $(function () {
var w = $(window).width();
var p = $(this).position();
var smallsize = $(this).data("smallsize");
var pheader = $(this).closest('div.fcltheader');
var pheader = $(this).closest('div.fcltframeheader');
var headertop = pheader.length?pheader.position().top:0;
if (p.top > headertop + 20) // shifted to next line?
{
$(this).addClass("smallbuttons")

View File

@@ -124,35 +124,27 @@ table.planbord div.gepland{ position: absolute;
top: 0px;
}
table.planbord div.metobj:before {
div.metobj:before,
div.metcat:before,
div.metobjcat:before {
position: absolute;
font-family: 'FontAwesome';
line-height: 1.25em;
font-size: 1.25em;
color: #444;
left: 50%;
}
div.metobj:before {
content: "\f26c";
line-height: 1.25em;
font-size: 1.25em;
color: #444;
left: 50%;
margin-left: -9px;
margin-left: -0.6em;
}
table.planbord div.metcat:before {
position: absolute;
font-family: 'FontAwesome';
div.metcat:before {
content: "\f0f5";
line-height: 1.25em;
font-size: 1.25em;
color: #444;
left: 50%;
margin-left: -6px;
margin-left: -0.5em;
}
table.planbord div.metobj.metcat:before {
div.metobjcat:before {
content: "\f26c\00a0\f0f5";
left: 50%;
margin-left: -17px;
}
/*
background-image:url(../pictures/metobjcat.png);
background-repeat: no-repeat;
background-position:center; */
margin-left: -1.25em;
}
table.planbord div.begintijd{ position: absolute;

View File

@@ -308,7 +308,7 @@ var new_item_key = 0; // Globaal
<%=disc_key != curr_disc_key? " closed" : ""%>"
onClick="ItemChoosed_obj(this, 'div_dis<%=curr_disc_key%>',<%=curr_disc_key%>, <%=hour_px%>)">
<a>
<i class='fa fa-lg fa-<%=existing?'minus':'plus'%>-square-o' style='position:relative;left:-15px;width:0px;'></i>
<i class='fa fa-lg fa-<%=disc_key != curr_disc_key?'plus':'minus'%>-square-o' style='position:relative;left:-15px;width:0px;'></i>
<%=safe.html(oRs1("ins_discipline_omschrijving").value)%>
<%=(existing? " (" + oRs2("aantal").value + ")" : "")%>
</a>

View File

@@ -150,9 +150,11 @@ function make_plan_regel(room, ar, params, nr_days, hour_px)
}
else
{
if (ar[ci].aantalA > 0)
if (ar[ci].aantalA > 0 && ar[ci].aantalD > 0)
theClass += " metobjcat";
else if (ar[ci].aantalA > 0)
theClass += " metcat";
if (ar[ci].aantalD > 0)
else if (ar[ci].aantalD > 0)
theClass += " metobj";
}

View File

@@ -280,10 +280,6 @@ function scf_RWFIELDTR(model, fld, val, key, params)
return scf_ROFIELDTR(model, fld, val);
}
// we doen automatische listboxen maar vanuit model_generic kan dat te gortig worden
if (field.foreign && params.search && "num_rows" in field && field.num_rows > 1000) /* of S("qp_maxrows") */
field.foreign = null;
if (field.foreign)
{
if (typeof field.foreign == 'function')
@@ -397,31 +393,39 @@ function scf_RWFIELDTR(model, fld, val, key, params)
}
else // dan maar gewone select
{
var sql = "SELECT " + foreign.key
+ " , " + foreign.desc
+ " FROM " + foreign.tbl + " " + (foreign.alias||"")
+ (foreign.where?" WHERE " + foreign.where:"")
+ " ORDER BY 2";
var emptyOption = "";
if (!params.search)
// we doen automatische listboxen maar vanuit model_generic kan dat te gortig worden
if (params.search && "num_rows" in field && field.num_rows > 1000) /* of S("qp_maxrows") */
{
if ("emptyoption" in field)
emptyOption = field.emptyoption;
else
if (val && val.id && params.required)
emptyOption = null;
field.foreign = null;
}
if (val && typeof val == "object" && "id" in val)
{ // dereference
val = val.id;
else
{
var sql = "SELECT " + foreign.key
+ " , " + foreign.desc
+ " FROM " + foreign.tbl + " " + (foreign.alias||"")
+ (foreign.where?" WHERE " + foreign.where:"")
+ " ORDER BY 2";
var emptyOption = "";
if (!params.search)
{
if ("emptyoption" in field)
emptyOption = field.emptyoption;
else
if (val && val.id && params.required)
emptyOption = null;
}
if (val && typeof val == "object" && "id" in val)
{ // dereference
val = val.id;
}
FCLTselector(fld, sql, { label: field.label,
initKey: val||null,
emptyOption: emptyOption,
emptyKey: (field.typ=="key"?-1:""),
readonly: (foreign.readonly?foreign.readonly:false),
required: params.required
});
}
FCLTselector(fld, sql, { label: field.label,
initKey: val||null,
emptyOption: emptyOption,
emptyKey: (field.typ=="key"?-1:""),
readonly: (foreign.readonly?foreign.readonly:false),
required: params.required
});
}
}
}

View File

@@ -307,7 +307,6 @@ if (Application("otap_environment") == "O" || Session("logging") > 0)
Response.Write("\n<br>" + ShowSourcecode(-8, +4));
}
Session.Contents.Remove("last_sql");
Response.End;
function ASPErrorText(extra)
@@ -338,6 +337,7 @@ function ASPErrorText(extra)
if (Session("last_sql")) // vanuit m_connections.inc
{
err += "\n<tr><td style='vertical-align:top'>Last SQL:</td><td style='max-width: 800px;'>" + Server.HTMLEncode(Session("last_sql")) + "</td></tr>";
Session.Contents.Remove("last_sql"); // Direct weg, anders wordt hij bij Sessions ook nog getoond
}
err += "</table>";

View File

@@ -234,7 +234,8 @@ if (S("sys_ip_lockmode") > 0)
var ip = String(Request.ServerVariables("REMOTE_ADDR"));
if (Session("last_ip") && Session("last_ip") != ip)
{
__DoLog("Unexpected ip-change from {0} to {1}".format(Session("last_ip"), ip), "#0ff");
var agent = String(Request.ServerVariables("HTTP_USER_AGENT"));
__DoLog("Unexpected ip-change from {0} to {1}\n{2}".format(Session("last_ip"), ip, agent), "#0ff");
// Simuleer logoff
Session.Contents.Remove("last_ip");
Session("user_key")=user_key=-1; // geen remove hier, anders grijpt SSO direct weer in

View File

@@ -1005,13 +1005,15 @@ function jwt_verify(decoded_jwt, secret, skew, duration)
// Onze eigen duration/expiration controleren we ook nog
if (claim.payload.iat + duration < now - skew) {
__DoLog("Token expired. Now is {0}, got {1}".format(toDateTimeString(new Date(now * 1000), true),
toDateTimeString(new Date(claim.payload.iat * 1000), true)));
__DoLog("Token expired. Now is {0}, got {1}, skew {2}".format(toDateTimeString(new Date(now * 1000), true),
toDateTimeString(new Date(claim.payload.iat * 1000), true),
skew));
return { err: 'Token expired' };
}
if (claim.payload.iat > now + skew) {
__DoLog("Token not yet active. Now is {0}, got {1}".format(toDateTimeString(new Date(now * 1000), true),
toDateTimeString(new Date(claim.payload.iat * 1000), true)));
__DoLog("Token not yet active. Now is {0}, got {1}, skew {2}".format(toDateTimeString(new Date(now * 1000), true),
toDateTimeString(new Date(claim.payload.iat * 1000), true),
skew));
return { err: 'Token not yet active' };
}
}

View File

@@ -1454,11 +1454,12 @@ input[type=file] {
display: none;
}
.fileopen {
position: relative;
top: 1px;
left: -17px;
width: 16px;
height: 16px;
background-image: url(../appl/Pictures/fileopen.png); /*TODO*/
background-repeat: no-repeat;
background-color: transparent !important;
font-size: 1.2em;
}
.bijlage, .bijlage1, .materiaal {
background-repeat: no-repeat;

View File

@@ -9,7 +9,7 @@
Note: Sinds 5.2.2 zitten de settings in de database
*/
var FCLTVersion="2016.3";
var FCLTVersion="2016.3a";
var FCLTMinDatabaseSchema="30";
var custpath = rooturl + "/cust/" + customerId; // path to customer files

View File

@@ -1204,8 +1204,8 @@ function listKenmerk(sql, module, key, props)
+ "'"
+ " value='" + safe.htmlattr(val) + "'"
+ (required ? " required='required' " : "")
+ "><input type='button' class='fileopen details' "
+ " onClick='openDoc(\"" + safe.jsstring(viewpath) + "\");'>";
+ "><i class='fileopen details fa fa fa-folder-open' "
+ " onClick='openDoc(\"" + safe.jsstring(viewpath) + "\");'></i>";
else if (!kenmerk_search) // !val // Browse button for new er achter plakken
kv = "<input class='fldflexX"
+ (required ? required_class : "")

View File

@@ -1,4 +1,4 @@
Echo Starten get_unica_status.js
cscript ..\..\AAXX\import\Unica\UnicaStatusResponse.js ../oracle.udl 7742 "https://aazc.facilitor.nl/default.asp?API=UNICA2OPDR&APIKEY=kVVabWWmHSwMfTClBbuWRRiPFCpjLNbH">> gen_import.log
cscript ..\..\AAXX\import\Unica\UnicaStatusResponse.js ../oracle.udl 1808 "https://aaah.facilitor.nl/default.asp?API=UNICA2OPDR&APIKEY=vsOG9kuoe-4Wm5YHM6tBHspJ1QBcDhwl">> gen_import.log

View File

@@ -8,13 +8,23 @@
background: url(header.gif) no-repeat;
}
/* Ze willen de zoekvelden permanent zichtbaar hebben */
#headersuggest .fldpers { visibility: visible!important; }
#headersearch .fldsrch { visibility: visible!important; }
#headersuggest .suggestklikker { visibility: visible!important; }
#headersearch .productklikker { visibility: visible!important; }
.headerToggle .fa-arrow-right { display: none!important; }
.headerToggle .fa-search { display: none!important; }
#headersuggest .fldpers { width: 340px!important; }
#headersearch .fldsrch { width: 340px!important; }
/* zoek en bestelveld */
#productsearch {
background-color: orange;
font-weight : bold;
color: Black;
height:15px;
}
}
li.mk:hover span.menukop {
color: #fff!important;

View File

@@ -0,0 +1,212 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
<xsl:variable name="Rev">
<xsl:value-of select="substring(translate('$Revision$', '$ ', ''), 10)"/>
</xsl:variable>
<xsl:decimal-format name="european" decimal-separator="." grouping-separator=","/>
<xsl:param name="mode"/>
<xsl:template name="substring-after-last">
<xsl:param name="string"/>
<xsl:param name="delimiter"/>
<xsl:choose>
<xsl:when test="contains($string, $delimiter)">
<xsl:call-template name="substring-after-last">
<xsl:with-param name="string" select="substring-after ($string, $delimiter)"/>
<xsl:with-param name="delimiter" select="$delimiter"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$string"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="bestelopdracht">
<xsl:variable name="lev5">
<xsl:value-of select="bestelling/voor/afdeling/parent/parent/parent/parent/naam"/>
</xsl:variable>
<xsl:variable name="lev4">
<xsl:value-of select="bestelling/voor/afdeling/parent/parent/parent/naam"/>
</xsl:variable>
<xsl:variable name="lev3">
<xsl:value-of select="bestelling/voor/afdeling/parent/parent/naam"/>
</xsl:variable>
<xsl:variable name="lev2">
<xsl:value-of select="bestelling/voor/afdeling/parent/naam"/>
</xsl:variable>
<xsl:variable name="lev1">
<xsl:value-of select="bestelling/voor/afdeling/naam"/>
</xsl:variable>
<xsl:variable name="regio">
<xsl:choose>
<xsl:when test="$lev5!=''">
<xsl:choose>
<xsl:when test="substring(bestelling/voor/afdeling/parent/parent/parent/parent/naam,1,1)='4'">230</xsl:when>
<xsl:when test="substring(bestelling/voor/afdeling/parent/parent/parent/parent/naam,1,1)='5'">245</xsl:when>
<xsl:when test="substring(bestelling/voor/afdeling/parent/parent/parent/parent/naam,1,1)='6'">260</xsl:when>
<xsl:otherwise>215</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$lev4!=''">
<xsl:choose>
<xsl:when test="substring(bestelling/voor/afdeling/parent/parent/parent/naam,1,1)='4'">230</xsl:when>
<xsl:when test="substring(bestelling/voor/afdeling/parent/parent/parent/naam,1,1)='5'">245</xsl:when>
<xsl:when test="substring(bestelling/voor/afdeling/parent/parent/parent/naam,1,1)='6'">260</xsl:when>
<xsl:otherwise>215</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$lev3!=''">
<xsl:choose>
<xsl:when test="substring(bestelling/voor/afdeling/parent/parent/naam,1,1)='4'">230</xsl:when>
<xsl:when test="substring(bestelling/voor/afdeling/parent/parent/naam,1,1)='5'">245</xsl:when>
<xsl:when test="substring(bestelling/voor/afdeling/parent/parent/naam,1,1)='6'">260</xsl:when>
<xsl:otherwise>215</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$lev2!=''">
<xsl:choose>
<xsl:when test="substring(bestelling/voor/afdeling/parent/naam,1,1)='4'">230</xsl:when>
<xsl:when test="substring(bestelling/voor/afdeling/parent/naam,1,1)='5'">245</xsl:when>
<xsl:when test="substring(bestelling/voor/afdeling/parent/naam,1,1)='6'">260</xsl:when>
<xsl:otherwise>215</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$lev1!=''">
<xsl:choose>
<xsl:when test="substring(bestelling/voor/afdeling/naam,1,1)='4'">230</xsl:when>
<xsl:when test="substring(bestelling/voor/afdeling/naam,1,1)='5'">245</xsl:when>
<xsl:when test="substring(bestelling/voor/afdeling/naam,1,1)='6'">260</xsl:when>
<xsl:otherwise>215</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>999</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!--Facilitor custom XSL template for cXML bestelopdracht-->
<xsl:element name="cXML">
<xsl:attribute name="version">1.2.016</xsl:attribute>
<xsl:attribute name="payloadID"><xsl:value-of select="key"/></xsl:attribute>
<xsl:attribute name="timestamp"><xsl:value-of select="datum/jaar"/>-<xsl:value-of select="datum/maand"/>-<xsl:value-of select="datum/dag"/>T<xsl:value-of select="datum/tijd"/>:00+01:00</xsl:attribute>
<xsl:attribute name="xml:lang">NL</xsl:attribute>
<Header>
<From>
<xsl:element name="Credential">
<xsl:attribute name="domain"><xsl:value-of select="/facilitor/header/custId"/></xsl:attribute>
<Identity><xsl:value-of select='bedrijf/overeenkomst_nr'/></Identity>
</xsl:element>
</From>
<To>
<xsl:element name="Credential">
<xsl:attribute name="domain"><xsl:value-of select="bedrijf/naam"/></xsl:attribute>
<Identity/>
</xsl:element>
</To>
<Sender>
<Credential domain="Facilitor">
<Identity/>
</Credential>
<UserAgent/>
</Sender>
</Header>
<Request>
<OrderRequest>
<xsl:variable name="aanvraag"><xsl:value-of select="concat('000000', bestelling/key)"/></xsl:variable>
<xsl:element name="OrderRequestHeader">
<xsl:attribute name="orderID">PUR-C<xsl:value-of select="substring($aanvraag, string-length($aanvraag)-6)"/>-<xsl:value-of select="substring-after(id, '/')"/></xsl:attribute>
<xsl:attribute name="orderDate"><xsl:value-of select="datum/jaar"/>-<xsl:value-of select="datum/maand"/>-<xsl:value-of select="datum/dag"/></xsl:attribute>
<Total>
<Money currency="EUR"><xsl:value-of select="format-number(sum(bestelopdrachtitem/totaal), '0.00', 'european')"/></Money>
</Total>
<ShipTo>
<xsl:element name="Address">
<!--Unieke adressID gedefinieerd als: gebouw_ruimte of locatiecode + huisnummer (= substring-after-last spatie in bezoek_adres)!-->
<xsl:attribute name="addressID"><xsl:choose><xsl:when test="afleveradres/gebouw_ruimte!=''"><xsl:value-of select="afleveradres/gebouw_ruimte"/></xsl:when><xsl:otherwise><xsl:value-of select="afleveradres/plaats/regio/district/locatie/code"/></xsl:otherwise></xsl:choose><xsl:call-template name="substring-after-last"><xsl:with-param name="string" select="afleveradres/bezoek_adres"/><xsl:with-param name="delimiter" select="' '"/></xsl:call-template></xsl:attribute>
<Name xml:lang="NL"><xsl:choose><xsl:when test="substring-after(concat(afleveradres/naam, 'x'), 'SVRZ')!=''"><xsl:value-of select="afleveradres/naam"/></xsl:when><xsl:otherwise>SVRZ <xsl:value-of select="afleveradres/naam"/></xsl:otherwise></xsl:choose></Name>
<PostalAddress>
<DeliverTo><xsl:value-of select="bestelling/aanvrager/naam_full"/></DeliverTo>
<Street><xsl:value-of select="bestelling/afleveradres/bezoek_adres"/></Street>
<City><xsl:value-of select="bestelling/afleveradres/bezoek_plaats"/></City>
<State></State>
<PostalCode><xsl:value-of select="bestelling/afleveradres/bezoek_postcode"/></PostalCode>
<Country isoCountryCode="NL"><xsl:value-of select="bestelling/afleveradres/bezoek_land"/></Country>
</PostalAddress>
</xsl:element>
</ShipTo>
<BillTo>
<xsl:element name="Address">
<xsl:attribute name="addressID"><xsl:value-of select="bedrijf/overeenkomst_nr"/></xsl:attribute>
<!--Name xml:lang="NL">SVRZ Concern-administratie</Name>
<PostalAddress>
<Street>Postbus 100</Street>
<City>Middelburg</City>
<State></State>
<PostalCode>4330 AC</PostalCode>
<Country isoCountryCode="NL">NL</Country>
</PostalAddress-->
<!--Name xml:lang="NL"><xsl:value-of select="factuuradres/naam"/></Name-->
<xsl:choose>
<xsl:when test="$regio='215'"><Name xml:lang="NL">SVRZ F&amp;C Walcheren</Name></xsl:when>
<xsl:when test="$regio='230'"><Name xml:lang="NL">SVRZ F&amp;C Oosterschelde</Name></xsl:when>
<xsl:when test="$regio='245'"><Name xml:lang="NL">SVRZ F&amp;C Zeeuws-Vlaanderen</Name></xsl:when>
<xsl:otherwise><Name xml:lang="NL">SVRZ Concern-administratie</Name></xsl:otherwise>
</xsl:choose><br/>
<PostalAddress>
<Street><xsl:value-of select="factuuradres/post_adres"/></Street>
<City><xsl:value-of select="factuuradres/post_plaats"/></City>
<State></State>
<PostalCode><xsl:value-of select="factuuradres/post_postcode"/></PostalCode>
<Country isoCountryCode="NL"><xsl:value-of select="factuuradres/post_land"/></Country>
</PostalAddress>
</xsl:element>
</BillTo>
<Contact>
<Name xml:lang="NL"><xsl:value-of select="bestelling/aanvrager/naam_full"/></Name>
<Email><xsl:value-of select="bestelling/aanvrager/email"/></Email>
</Contact>
<Extrinsic name="Costcenter"><xsl:value-of select="bestelling/kostenplaats/nr"/></Extrinsic>
</xsl:element>
<xsl:for-each select="bestelopdrachtitem">
<xsl:sort select="srtdeel/omschrijving"/>
<xsl:sort select="posnr"/>
<xsl:element name="ItemOut">
<xsl:attribute name="quantity"><xsl:value-of select="aantal"/></xsl:attribute>
<xsl:attribute name="lineNumber"><xsl:value-of select="posnr"/></xsl:attribute>
<xsl:attribute name="requestedDeliveryDate"><xsl:value-of select="../bestelling/leverdatum/jaar"/>-<xsl:value-of select="../bestelling/leverdatum/maand"/>-<xsl:value-of select="../bestelling/leverdatum/dag"/></xsl:attribute>
<ItemID>
<SupplierPartID><xsl:value-of select="bestelitem/srtdeel/artikel_nummer"/></SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="EUR"><xsl:value-of select="format-number(prijs, '0.00', 'european')"/></Money>
</UnitPrice>
<Description xml:lang="NL"><xsl:value-of select="bestelitem/srtdeel/omschrijving"/></Description>
<UnitOfMeasure><xsl:value-of select="bestelitem/srtdeel/eenheid"/></UnitOfMeasure>
<Classification domain=""/>
</ItemDetail>
</xsl:element>
</xsl:for-each>
</OrderRequest>
</Request>
</xsl:element>
</xsl:template>
<xsl:template match="facilitor">
<xsl:apply-templates select="bestelopdracht"/>
</xsl:template>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="$mode='getExtension'">
<xsl:element name="format">
<xsl:element name="extension">xml</xsl:element>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="facilitor"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>