<?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:param name="opzichter_variant"/>

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

	<xsl:template match="opdracht">
		<mld_opdr>
			<prs_afdeling_externnr><xsl:call-template name="zoek_bedrijf_key"><xsl:with-param name="p_afdeling" select="backoffice_contact/afdeling"/></xsl:call-template></prs_afdeling_externnr>
			<mld_melding_externnr><xsl:value-of select="melding/stdmelding/discipline/srtdiscipline/prefix"/><xsl:value-of select="melding/key"/></mld_melding_externnr>
			<mld_opdr_type><xsl:value-of select="opdrachttype/omschrijving"/></mld_opdr_type>
			<mld_opdr_soort>
  			<xsl:choose>
    			<xsl:when test="opdrachttype/isofferte=1">INS</xsl:when>
    			<xsl:otherwise>REP</xsl:otherwise>
  			</xsl:choose>
			</mld_opdr_soort>
			<mld_melding_discipline><xsl:value-of select="melding/discipline/omschrijving"/></mld_melding_discipline>
			<mld_stdmelding_omschrijving><xsl:value-of select="melding/stdmelding/omschrijving"/></mld_stdmelding_omschrijving>
			<mld_melding_omschrijving><xsl:value-of select="melding/omschrijving"/></mld_melding_omschrijving>
			<mld_opdracht_omschrijving><xsl:value-of select="omschrijving"/></mld_opdracht_omschrijving>
			<ax_supplier_id><xsl:value-of select="uitvoerende/bedrijf/key"/></ax_supplier_id>
      		<xsl:choose>
				<xsl:when test="$opzichter_variant='2'">
					<mld_opdr_opzichter><xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verantwoordelijke/naam_friendly"/></mld_opdr_opzichter>
					<mld_opdr_opzichter_tel><xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verantwoordelijke/telefoonnr"/></mld_opdr_opzichter_tel>
					<mld_opdr_opzichter_email><xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verantwoordelijke/email"/></mld_opdr_opzichter_email>
       			</xsl:when>
				<xsl:when test="$opzichter_variant='3'">
					<mld_opdr_opzichter><xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verantwoordelijke2/naam_friendly"/></mld_opdr_opzichter>
					<mld_opdr_opzichter_tel><xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verantwoordelijke2/telefoonnr"/></mld_opdr_opzichter_tel>
					<mld_opdr_opzichter_email><xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verantwoordelijke2/email"/></mld_opdr_opzichter_email>
       			</xsl:when>
				<xsl:when test="$opzichter_variant='4'">
					<mld_opdr_opzichter><xsl:value-of select="melding/voor/naam_friendly"/></mld_opdr_opzichter>
					<mld_opdr_opzichter_tel><xsl:value-of select="melding/voor/telefoonnr"/></mld_opdr_opzichter_tel>
					<mld_opdr_opzichter_email><xsl:value-of select="melding/voor/email"/></mld_opdr_opzichter_email>
            	</xsl:when>
            	<xsl:otherwise>
					<mld_opdr_opzichter><xsl:value-of select="backoffice_contact/naam_full"/></mld_opdr_opzichter>
				    <mld_opdr_opzichter_tel><xsl:value-of select="backoffice_contact/telefoonnr"/></mld_opdr_opzichter_tel>
				    <mld_opdr_opzichter_email><xsl:value-of select="backoffice_contact/email"/></mld_opdr_opzichter_email>
       			</xsl:otherwise>
      		</xsl:choose>
			<mld_melding_cust_name><xsl:value-of select="melding/voor/naam_full"/></mld_melding_cust_name>
  			<xsl:choose>
				<xsl:when test="melding/plaats/regio/district/locatie/gebouw/adres != ''">
					<mld_melding_cust_straat><xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/adres"/></mld_melding_cust_straat>
					<mld_melding_cust_postcode><xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/postcode"/></mld_melding_cust_postcode>
			</xsl:when>
            	<xsl:otherwise>
					<mld_melding_cust_straat><xsl:value-of select="melding/plaats/regio/district/locatie/adres"/></mld_melding_cust_straat>
					<mld_melding_cust_postcode><xsl:value-of select="melding/plaats/regio/district/locatie/postcode"/></mld_melding_cust_postcode>
       			</xsl:otherwise>
      		</xsl:choose>
			<mld_melding_cust_plaats><xsl:value-of select="melding/plaats/regio/district/locatie/plaats"/></mld_melding_cust_plaats>
			<mld_melding_cust_telefoonnr><xsl:value-of select="melding/voor/telefoonnr"/></mld_melding_cust_telefoonnr>
			<mld_melding_cust_mobielnr><xsl:value-of select="melding/voor/mobiel"/></mld_melding_cust_mobielnr>
			<mld_melding_cust_email><xsl:value-of select="melding/voor/email"/></mld_melding_cust_email>
			<mld_melding_cust_spoed><xsl:value-of select="melding/spoed"/></mld_melding_cust_spoed>
			<mld_melding_cust_object_omschr><xsl:value-of select="melding/plaats/plaatsaanduiding"/></mld_melding_cust_object_omschr>
			<pandnummer><xsl:value-of select="melding/plaats/regio/district/locatie/code"/> - <xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/code"/></pandnummer>
      <alg_ruimte_nr><xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verdieping/ruimte/nr"/></alg_ruimte_nr>
      <alg_ruimte_omschrijving><xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verdieping/ruimte/omschrijving"/></alg_ruimte_omschrijving>
      <alg_srtruimte_omschrijving><xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verdieping/ruimte/srtruimte/omschrijving"/></alg_srtruimte_omschrijving>
      <ins_deel_omschrijving><xsl:value-of select="melding/deel/omschrijving"/></ins_deel_omschrijving>
      <ins_srtdeel_omschrijving><xsl:value-of select="melding/deel/srtdeel/omschrijving"/></ins_srtdeel_omschrijving>
      <mld_melding_memo><xsl:value-of select="omschrijving"/></mld_melding_memo>
      <mld_opdr_externnr><xsl:value-of select="melding/stdmelding/discipline/srtdiscipline/prefix"/><xsl:value-of select="melding/key"/>/<xsl:value-of select="bedrijfopdr_volgnr"/></mld_opdr_externnr>
      <mld_opdr_ordernr><xsl:value-of select="key"/></mld_opdr_ordernr>
      <mld_opdr_datumbegin><xsl:value-of select="datumbegin/jaar"/>-<xsl:value-of select="datumbegin/maand"/>-<xsl:value-of select="datumbegin/dag"/></mld_opdr_datumbegin>
      <mld_opdr_datum_plan>
        <xsl:if test="plandatum/datum!=''"><xsl:value-of select="plandatum/jaar"/>-<xsl:value-of select="plandatum/maand"/>-<xsl:value-of select="plandatum/dag"/>T<xsl:value-of select="plandatum/tijd"/>:00</xsl:if>
       </mld_opdr_datum_plan>
      <mld_opdr_datum_plan2>
        <xsl:if test="plandatum2/datum!=''"><xsl:value-of select="plandatum2/jaar"/>-<xsl:value-of select="plandatum2/maand"/>-<xsl:value-of select="plandatum2/dag"/>T<xsl:value-of select="plandatum2/tijd"/>:00</xsl:if>
       </mld_opdr_datum_plan2>
       <mld_opdr_einddatum><xsl:value-of select="einddatum/jaar"/>-<xsl:value-of select="einddatum/maand"/>-<xsl:value-of select="einddatum/dag"/>T<xsl:value-of select="einddatum/tijd"/>:00</mld_opdr_einddatum>
       <xsl:if test="count(/facilitor/notificatie/bedrijfadres/flexfiles) = 0 or /facilitor/notificatie/bedrijfadres/flexfiles = '0' or /facilitor/notificatie/bedrijfadres/flexfiles = '1' or count(/facilitor/notificatie/bedrijfadres/fixedattachment) = 1">
        <attachments>
         <xsl:for-each select="kenmerk[@type='M' and floor(@rolcode div 2) mod 2 = 1]">
         <xsl:sort select="@volgnummer" data-type="number"/>
           <xsl:element name="FCLTopdrachtattachment">
            <xsl:attribute name="opdrachtkey"><xsl:value-of select="../key"/></xsl:attribute>
            <xsl:attribute name="kenmerkkey"><xsl:value-of select="@key"/></xsl:attribute>
            <xsl:attribute name="nodename">TMP_Attachment</xsl:attribute>
            <xsl:attribute name="encoding">base64</xsl:attribute>
           </xsl:element>
         </xsl:for-each>
         <xsl:if test="count(/facilitor/notificatie/bedrijfadres/fixedattachment) = 1">
          <FCLTfixedattachment encoding='base64' nodename='TMP_Attachment'>
           <xsl:value-of select="/facilitor/notificatie/bedrijfadres/fixedattachment"/>
          </FCLTfixedattachment>
         </xsl:if>
        </attachments>
       </xsl:if>
       <mld_opdr_materialen>
				<xsl:choose>
					<xsl:when test="count(materialen) &gt; 0">
						<!-- Facilitor opdracht MET materiaalregels, die gaan we stuk voor stuk langs -->
						<xsl:for-each select="materialen">
							<mld_opdr_materiaal>
							<xsl:call-template name="construct_instructionlines">
								<xsl:with-param name="p_LineNumber" select="position()"/>
						  	<xsl:with-param name="p_Quantity" select="aantal"/>
						  	<!-- MARX#38434: default met PCE doorsturen, indien AX leeg wordt aangeleverd. -->
						  	<xsl:with-param name="p_MeasurementUnitQuantity">
							  	<xsl:choose>
										<xsl:when test="eenheidcode != ''"><xsl:value-of select="eenheidcode"/></xsl:when>
										<xsl:otherwise><xsl:value-of select="eenheid"/></xsl:otherwise>
									</xsl:choose>
						  	</xsl:with-param>
						  	<xsl:with-param name="p_NormPriceCode" select="substring(normalize-space(code),1,17)"/>
						  	<xsl:with-param name="p_Area" select="''"/>
						  	<xsl:with-param name="p_ShortDescription" select="substring(normalize-space(omschrijving),1,35)"/>
								<xsl:with-param name="p_Price" select="stuksprijs"/>
								<xsl:with-param name="p_TaxPerc" select="btwpercentage"/>
							</xsl:call-template>
							</mld_opdr_materiaal>
						</xsl:for-each>
					</xsl:when>
					<xsl:otherwise>
						<!-- Mareon opdracht ZONDER materiaalregels, dan gaan we zelf 1 instructie-regel maken (AX-opdrachten tot MARX07 en Tobias-oud koppeling) -->
						<mld_opdr_materiaal>
						<xsl:call-template name="construct_instructionlines">
							<xsl:with-param name="p_LineNumber" select="'1'"/>
					  	<xsl:with-param name="p_Quantity" select="'1'"/>
					  	<xsl:with-param name="p_MeasurementUnitQuantity" select="'st.'"/>
					  	<xsl:with-param name="p_NormPriceCode" select="''"/>
					  	<xsl:with-param name="p_Area" select="''"/>
					  	<xsl:with-param name="p_ShortDescription" select="substring(normalize-space(melding/stdmelding/omschrijving),1,35)"/>
					    <xsl:with-param name="p_Price" select="kosten"/>
							<xsl:with-param name="p_TaxPerc" select="'21'"/>
						</xsl:call-template>
						</mld_opdr_materiaal>
					</xsl:otherwise>
				</xsl:choose>
				</mld_opdr_materialen>
		</mld_opdr>
	</xsl:template>

	<xsl:template name="construct_instructionlines">
  	<xsl:param name="p_LineNumber"/>
  	<xsl:param name="p_Quantity"/>
  	<xsl:param name="p_MeasurementUnitQuantity"/>
  	<xsl:param name="p_NormPriceCode"/>
  	<xsl:param name="p_Area"/>
  	<xsl:param name="p_ShortDescription"/>
  	<xsl:param name="p_LongDescription"/>
  	<xsl:param name="p_FreeText"/>
  	<xsl:param name="p_Price"/>
  	<xsl:param name="p_TaxPerc"/>
	  <mld_opdr_mat_linenr><xsl:value-of select="$p_LineNumber"/></mld_opdr_mat_linenr>
	  <mld_opdr_mat_aantal><xsl:value-of select="$p_Quantity"/></mld_opdr_mat_aantal>
	  <mld_opdr_mat_eenheid><xsl:value-of select="$p_MeasurementUnitQuantity"/></mld_opdr_mat_eenheid>
	  <mld_opdr_mat_code><xsl:value-of select="$p_NormPriceCode"/></mld_opdr_mat_code>
	  <mld_opdr_mat_naam><xsl:value-of select="$p_ShortDescription"/></mld_opdr_mat_naam>
	  <mld_opdr_mat_prijs><xsl:value-of select="$p_Price"/></mld_opdr_mat_prijs>
	  <mld_opdr_mat_btwperc><xsl:value-of select="$p_TaxPerc"/></mld_opdr_mat_btwperc>
  </xsl:template>

<xsl:template name="zoek_bedrijf_key">
  <xsl:param name="p_afdeling"/>
  <xsl:if test="$p_afdeling/parent">
    <xsl:call-template name="zoek_bedrijf_key">
      <xsl:with-param name="p_afdeling" select="$p_afdeling/parent"/>
    </xsl:call-template>
  </xsl:if>
    <xsl:if test="$p_afdeling/bedrijf">
      <xsl:value-of select="$p_afdeling/bedrijf/key"/>
    </xsl:if>
</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>