<?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:decimal-format name="european" decimal-separator="," grouping-separator="."/>

	<xsl:param name="mode"/>

	<xsl:variable name="Rev">
		<!-- Revision -->
		<xsl:value-of select="substring(translate('$Revision$', '$ ', ''), 10)"/>
	</xsl:variable>

	<xsl:template match="opdracht">
		<Order>			
			<!-- Ordersoort: Code 220 = Order. Verplicht, C(3) -->
			<OrderType>220</OrderType>
			<!-- Purchase Ordernumber, toegekend door de zender van het bronbericht, ontvanger vermeldt dit nummer op pakbon en/of factuur. Verplicht, C(17)-->
			<OrderNumber><xsl:value-of select="opdr_id"/></OrderNumber>
			<!-- FSN#31496: Meldingnummer erbij (Provides) -->
			<!-- CallNumber (bestaat niet in SidB, hier toegevoegd -->
			<!-- Bedoeld voor system-2-system communicatie -->
			<!-- Meldingnummer in het bronsysteem, toegekend door de zender van het bronbericht, ontvanger zou bij OrderNumber kunnen relateren aan dit CallNumber -->
			<!-- 1 Callnumber kan 'n' OrderNumbers hebben, vanaf de 2e order bij een call kan ontvanger ervoor kiezen om dit te koppelen aan planning, beter gezegd geen expliciet planning -->
			<!-- Oftewel shortcut in proces: indien de 1e opdracht al is ingepland bij handyman 'X', dan kan in de systeemkoppeling ervoor worden gekozen om de 2e opdracht op dezelfde datum/dezelfde handyman in te plannen -->
			<CallNumber><xsl:value-of select="melding/externnr"/></CallNumber>
			<!-- OrderId (bestaat niet in SidB, hier toegevoegd -->
			<!-- Intern opdrachtnummer vanuit Broker/koppelsysteem (= Mareon), toegekend door de zender van het bericht, ontvanger vermeldt dit nummer op pakbon en/of factuur. Verplicht, C(17)-->
			<!-- Bedoeld voor system-2-system communicatie -->
			<OrderId><xsl:value-of select="melding/stdmelding/discipline/srtdiscipline/prefix"/><xsl:value-of select="melding/key"/>/<xsl:value-of select="bedrijfopdr_volgnr"/></OrderId>
			<!-- Opdrachtdatum, datum waarop de opdracht is aangemaakt, Verplicht, formaat YYYY-MM-DD  -->
			<OrderDate><xsl:value-of select="datumbegin/jaar"/>-<xsl:value-of select="datumbegin/maand"/>-<xsl:value-of select="datumbegin/dag"/></OrderDate>
			<!-- Opdracht tijd, tijdstip waarop de opdracht is aangemaakt, Optioneel, formaat hh:mm -->
			<OrderTime><xsl:value-of select="datumbegin/tijd"/></OrderTime>
			<DeliveryDateTimeInformation>
				<!-- Datum waarop de opdracht uitgevoerd moet worden, Optioneel, formaat YYYY-MM-DD -->
				<RequiredDeliveryDate></RequiredDeliveryDate>
				<!-- Tijdstip waarop de opdracht uitgevoerd moet worden, Optioneel, formaat hh:mm -->
				<RequiredDeliveryTime></RequiredDeliveryTime>
				<!-- Levertijdvak, gegevens over periode waarbinnen opdracht uitgevoerd/geleverd kan worden, Optioneel -->
				<DeliveryTimeFrame>
					<!-- Datum vanaf wanneer de opdracht uitgevoerd kan worden, Verplicht, formaat YYYY-MM-DD  -->
					<DeliveryDateEarliest><xsl:value-of select="datumbegin/jaar"/>-<xsl:value-of select="datumbegin/maand"/>-<xsl:value-of select="datumbegin/dag"/></DeliveryDateEarliest>
					<!-- Tijdstip op de vroegste leverdatum (datum vanaf wanneer de opdracht uitgevoerd kan worden), Verplicht, formaat hh:mm  -->
					<DeliveryTimeEarliest><xsl:value-of select="datumbegin/tijd"/></DeliveryTimeEarliest>
					<!-- Datum tot en met wanneer de opdracht uitgevoerd kan worden, Verplicht, formaat YYYY-MM-DD  -->
					<DeliveryDateLatest><xsl:value-of select="einddatum/jaar"/>-<xsl:value-of select="einddatum/maand"/>-<xsl:value-of select="einddatum/dag"/></DeliveryDateLatest>
					<!-- Tijdstip op de laatste leverdatum (datum tot en met wanneer de opdracht uitgevoerd kan worden), Verplicht, formaat hh:mm  -->
					<!-- In Facilitor staat hier tijdstip 00:00 hetgeen betekent op deze dag, dit is in SidB 24:00 (t/m einde van de dag; 00:00 betekent begin van de dag, dus feitelijk de dag ervoor) -->
					<!-- Daarom hier 'hard' 24:00 en niet XML-node einddatum/tijd -->
					<DeliveryTimeLatest><xsl:value-of select="'24:00'"/></DeliveryTimeLatest>
				</DeliveryTimeFrame>
			</DeliveryDateTimeInformation>
			<!-- Afnemer, partij/bedrijf aan wie goederen en diensten worden verkocht en geleverd -->
			<Buyer>
				<!-- Global Location Number, wereldwijd unieke ID, Verplicht -->
				<GLN><xsl:value-of select="melding/voor/afdeling/bedrijf/leverancier_nr"/></GLN>
				<!-- Onderstaande NAW nodes zijn optioneel -->
				<Name></Name>
				<StreetAndNumber></StreetAndNumber>
				<City></City>
				<PostalCode></PostalCode>
				<Country></Country>
				<!-- Contactinformatie is optioneel -->
				<ContactInformation>
					<ContactPersonName></ContactPersonName>
					<EmailAddress></EmailAddress>
				</ContactInformation>
			</Buyer>
			<!-- Leverancier, partij/bedrijf die goederen en diensten verkoopt en levert -->
			<Supplier>
				<!-- Global Location Number, wereldwijd unieke ID, Verplicht -->
				<GLN><xsl:value-of select="uitvoerende/bedrijf/leverancier_nr"/></GLN>
				<!-- Onderstaande NAW nodes zijn optioneel -->
				<Name></Name>
				<StreetAndNumber></StreetAndNumber>
				<City></City>
				<PostalCode></PostalCode>
				<Country></Country>
				<!-- Contactinformatie is optioneel -->
			</Supplier>
			<!-- Afleveradres, lokatie waar de geoderen en diensten worden afgeleverd -->
			<DeliveryParty>
				<!-- Global Location Number, wereldwijd unieke ID, HIER Optioneel -->
				<!-- In deze node worden de huurder gegevens genoemd -->
				<GLN></GLN>
				<!-- Melding kenmerk key 1 is huurder -->
				<Name><xsl:value-of select="melding/kenmerk[@key='1']"/></Name>
				<Name2></Name2>
				<!-- Melding kenmerk key 2 is adres -->
				<StreetAndNumber><xsl:value-of select="melding/kenmerk[@key='2']"/></StreetAndNumber>
				<!-- Melding kenmerk key 4 is plaatsnaam -->
				<City><xsl:value-of select="melding/kenmerk[@key='4']"/></City>
				<!-- Melding kenmerk key 3 is postcode -->
				<PostalCode><xsl:value-of select="melding/kenmerk[@key='3']"/></PostalCode>
				<Country></Country>
				<!-- Melding kenmerk key 6 is objectomschrijving -->
				<LocationDescription><xsl:value-of select="melding/kenmerk[@key='6']"/></LocationDescription>
				<ContactInformation>
					<ContactPersonName><xsl:value-of select="melding/kenmerk[@key='1']"/></ContactPersonName>
					<!-- Melding kenmerk key 5 is telefoon van huurder -->
					<PhoneNumber><xsl:value-of select="melding/kenmerk[@key='5']"/></PhoneNumber>
				</ContactInformation>
			</DeliveryParty>
			<!-- Partij waaraan gefactureerd wordt, Optioneel-->
			<Invoicee>
				<GLN><xsl:value-of select="melding/voor/afdeling/bedrijf/leverancier_nr"/></GLN>
			</Invoicee>
			<!-- Specificatie van de goederen en diensten, Verplicht -->
			<OrderLine>
				<!-- Regelnummer ter identificatie van een regel, Verplicht -->
				<!-- Er is - tot nu toe - altijd 1 regelnummer binnen de opdracht, standaard dus 1 -->
				<LineNumber>1</LineNumber>
				<!-- Besteld aantal, zoals gevraagd door de afnemer/koper, Verplicht -->
				<OrderedQuantity>1</OrderedQuantity>
				<!-- Eenheid van besteld aantal, Optioneel, maar verplicht indien ongelijk aan stuks (=PCE) -->
				<OrderedQuantityMeasureUnitCode>PCE</OrderedQuantityMeasureUnitCode>
				<!-- Regelidentificatie (alweer?): de leverancier gebruikt dit nummer in de SidB orderbevestiging, - verzendberEenheid of - factuur ter referentie aan deze regel -->
				<!-- Lijkt op niet erg praktische toepassing, standaard ook 1 (net als LineNumber) maar -->
				<LineIdentitfication>1</LineIdentitfication>
				<!-- Gegevens ter identificatie van een artikel -->
				<TradeItemIdentification>
					<!-- Global Trade Item Numer, wereldwijd uniek nummer ter identificatie van artikel-->
					<GTIN></GTIN>
					<AdditionalItemIdentification>
						<!-- Tekstveld met een (eenduidige) omschrijving ter identificatie van het artikel-->
						<TradeItemDescription><xsl:value-of select="omschrijving"/></TradeItemDescription>
					</AdditionalItemIdentification>
				</TradeItemIdentification>				
			</OrderLine>
		</Order>
	</xsl:template>

	<xsl:template match="facilitor">
		<xsl:apply-templates select="opdracht"/>
	</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>
