<?xml version="1.0" encoding="utf-8"?>

<winstrom version="1.0" source="FlexiBee">
  <!-- Uživatelské transformace -->
  <xslt>
    <!-- ID (celé číslo) - -->
    <id>code:FLEXIBEE-PRODUKTY</id>
    <!-- Poslední změna (datum a čas) - -->
    <lastUpdate>2018-07-02T18:08:21.325+02:00</lastUpdate>
    <!-- Zkratka (řetězec) - max. délka: 20 -->
    <kod>FLEXIBEE-PRODUKTY</kod>
    <!-- Název (řetězec) - max. délka: 255 -->
    <nazev>Načítání produktů z FlexiBee do Shoptetu</nazev>
    <!-- Název EN (řetězec) - max. délka: 255 -->
    <nazevA></nazevA>
    <!-- Název DE (řetězec) - max. délka: 255 -->
    <nazevB></nazevB>
    <!-- Název FR (řetězec) - max. délka: 255 -->
    <nazevC></nazevC>
    <!-- Poznámka (řetězec) - -->
    <poznam></poznam>
    <!-- Popis (řetězec) - -->
    <popis></popis>
    <!-- Transformace (řetězec) - -->
    <transformace>&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:java="http://xml.apache.org/xalan/java" exclude-result-prefixes="java"&gt;
  &lt;xsl:output method="xml" indent="yes" encoding="utf-8" /&gt;

  &lt;!-- /cenik.xml?detail=full&amp;includes=/cenik/skupZboz&amp;limit=0&amp;relations=atributy,prilohy&amp;format=code:FLEXIBEE-PRODUKTY --&gt;

  &lt;!-- oddělovač podle kterého poznáme master a variantní produkty --&gt;
  &lt;!-- shoptet standardně používá / --&gt;
  &lt;xsl:variable name="variantDelimeter" select="'-'" /&gt;

  &lt;!-- obrázky jsou přímo uložené ve FlexiBee a tak je potřeba seskládat si správnou adresu, aby se k nim dokázal Shoptet dostat --&gt;
  &lt;xsl:variable name="imageProxyUrlPrefix" select="'https://username:password@server:port/c/firma/priloha/'" /&gt;
  &lt;xsl:variable name="imageProxyUrlPostfix" select="'/content'" /&gt;

  &lt;xsl:key name="masterProduct" match="winstrom/cenik" use="java:flexibee.Tool.substring3(kod, 0, java:flexibee.Tool.indexOf(kod, $variantDelimeter))" /&gt;
 
  &lt;xsl:template match="winstrom"&gt;
    &lt;SHOP&gt;
      &lt;!-- grouping from https://stackoverflow.com/questions/2146648/how-to-apply-group-by-on-xslt-elements --&gt;
      &lt;!-- java:flexibee.Tool.substring3 je použit protože substring-before při nenalezení delimeteru nevrací nic --&gt;
      &lt;xsl:apply-templates select="cenik[generate-id(.)=generate-id(key('masterProduct', java:flexibee.Tool.substring3(kod, 0, java:flexibee.Tool.indexOf(kod, $variantDelimeter)))[1])]"/&gt;
    &lt;/SHOP&gt;
  &lt;/xsl:template&gt;

  &lt;xsl:template match="cenik"&gt;
    &lt;xsl:choose&gt;
      &lt;xsl:when test="count(key('masterProduct', java:flexibee.Tool.substring3(kod, 0, java:flexibee.Tool.indexOf(kod, $variantDelimeter)))) &gt; 1"&gt;
        &lt;!-- produkt s variantami --&gt;
        &lt;SHOPITEM&gt;
          &lt;xsl:call-template name="CENIK-MASTER"/&gt;
          &lt;VARIANTS&gt;
            &lt;xsl:for-each select="key('masterProduct', java:flexibee.Tool.substring3(kod, 0, java:flexibee.Tool.indexOf(kod, $variantDelimeter)))"&gt;
              &lt;xsl:if test="contains(kod, $variantDelimeter)"&gt;
                &lt;VARIANT&gt;
                  &lt;xsl:call-template name="CENIK-BEZ-VARIANT-NEBO-VARIANTA"&gt;
                    &lt;xsl:with-param name="variant" select="true()" /&gt;
                  &lt;/xsl:call-template&gt;
                &lt;/VARIANT&gt;
              &lt;/xsl:if&gt;
            &lt;/xsl:for-each&gt;
          &lt;/VARIANTS&gt;
        &lt;/SHOPITEM&gt;
      &lt;/xsl:when&gt;
      &lt;xsl:otherwise&gt;
        &lt;!-- produkt bez variant --&gt;
        &lt;xsl:for-each select="key('masterProduct', java:flexibee.Tool.substring3(kod, 0, java:flexibee.Tool.indexOf(kod, $variantDelimeter)))"&gt;
          &lt;SHOPITEM&gt;
            &lt;xsl:call-template name="CENIK-MASTER"/&gt;
            &lt;xsl:choose&gt;
              &lt;xsl:when test="atributy and atributy/atribut and atributy/atribut/hodnota"&gt;
                &lt;!-- produkt bez variant ale s atributy musí mít alespoň jednu variantu --&gt;
                &lt;VARIANTS&gt;
                  &lt;VARIANT&gt;
                    &lt;xsl:call-template name="CENIK-BEZ-VARIANT-NEBO-VARIANTA"&gt;
                      &lt;xsl:with-param name="variant" select="false()" /&gt;
                    &lt;/xsl:call-template&gt;
                  &lt;/VARIANT&gt;
                &lt;/VARIANTS&gt;
              &lt;/xsl:when&gt;
              &lt;xsl:otherwise&gt;
                &lt;xsl:call-template name="CENIK-BEZ-VARIANT-NEBO-VARIANTA"&gt;
                  &lt;xsl:with-param name="variant" select="false()" /&gt;
                &lt;/xsl:call-template&gt;
              &lt;/xsl:otherwise&gt;
            &lt;/xsl:choose&gt;
          &lt;/SHOPITEM&gt;
        &lt;/xsl:for-each&gt;
      &lt;/xsl:otherwise&gt;
    &lt;/xsl:choose&gt;
  &lt;/xsl:template&gt;

  &lt;xsl:template name="CENIK-MASTER"&gt;
    &lt;NAME&gt;&lt;xsl:value-of select="nazev"/&gt;&lt;/NAME&gt;
    &lt;xsl:choose&gt;
      &lt;xsl:when test="kratkyPopis != ''"&gt;&lt;SHORT_DESCRIPTION&gt;&lt;xsl:value-of select="kratkyPopis"/&gt;&lt;/SHORT_DESCRIPTION&gt;&lt;/xsl:when&gt;
      &lt;xsl:when test="popis != ''"&gt;&lt;SHORT_DESCRIPTION&gt;&lt;xsl:value-of select="popis"/&gt;&lt;/SHORT_DESCRIPTION&gt;&lt;/xsl:when&gt;
      &lt;xsl:otherwise&gt;&lt;/xsl:otherwise&gt;
    &lt;/xsl:choose&gt;

    &lt;xsl:if test="popis != ''"&gt;
      &lt;DESCRIPTION&gt;&lt;xsl:value-of select="popis"/&gt;&lt;/DESCRIPTION&gt;
    &lt;/xsl:if&gt;

    &lt;ITEM_TYPE&gt;
      &lt;xsl:choose&gt;
        &lt;xsl:when test="typZasobyK = 'typZasoby.sluzba'"&gt;service&lt;/xsl:when&gt;
        &lt;xsl:otherwise&gt;product&lt;/xsl:otherwise&gt;
      &lt;/xsl:choose&gt;
    &lt;/ITEM_TYPE&gt;

    &lt;xsl:if test="vyrobce != ''"&gt;
      &lt;MANUFACTURER&gt;&lt;xsl:value-of select="java:flexibee.Tool.substring(vyrobce, 5)"/&gt;&lt;/MANUFACTURER&gt;
    &lt;/xsl:if&gt;

    &lt;xsl:if test="skupZboz and skupZboz/skupina-zbozi and skupZboz/skupina-zbozi/nazev"&gt;
      &lt;CATEGORIES&gt;
        &lt;CATEGORY&gt;&lt;xsl:value-of select="skupZboz/skupina-zbozi/nazev"/&gt;&lt;/CATEGORY&gt;
      &lt;/CATEGORIES&gt;
    &lt;/xsl:if&gt;

    &lt;xsl:if test="prilohy and prilohy/priloha and (prilohy/priloha/contentType = 'image/png' or prilohy/priloha/contentType = 'image/jpeg')"&gt;
      &lt;IMAGES&gt;
        &lt;xsl:for-each select="prilohy/priloha[contentType = 'image/png' or contentType = 'image/jpeg']"&gt;
          &lt;xsl:choose&gt;
            &lt;xsl:when test="typK = 'typPrilohy.odkaz'"&gt;
              &lt;IMAGE&gt;&lt;xsl:value-of select="link"/&gt;&lt;/IMAGE&gt;
            &lt;/xsl:when&gt;
            &lt;xsl:when test="typK = 'typPrilohy.obrazek'"&gt;
              &lt;IMAGE&gt;&lt;xsl:value-of select="$imageProxyUrlPrefix"/&gt;&lt;xsl:value-of select="id"/&gt;&lt;xsl:value-of select="$imageProxyUrlPostfix"/&gt;&lt;/IMAGE&gt;
            &lt;/xsl:when&gt;
            &lt;xsl:otherwise&gt;
            &lt;/xsl:otherwise&gt;
          &lt;/xsl:choose&gt;
        &lt;/xsl:for-each&gt;
      &lt;/IMAGES&gt;
    &lt;/xsl:if&gt;

    &lt;!-- odkomentováním následujících řádků a jejich správným vyplněním je možné vyplnit i další vlastnosti --&gt;
    &lt;!--FLAGS&gt;&lt;/FLAGS--&gt;
    &lt;!--WARRANTY&gt;&lt;/WARRANTY--&gt;
    &lt;!--ALTERNATIVE_PRODUCTS&gt;
      &lt;CODE&gt;&lt;/CODE&gt;
    &lt;/ALTERNATIVE_PRODUCTS--&gt;
    &lt;!--RELATED_PRODUCTS&gt;
      &lt;CODE&gt;&lt;/CODE&gt;
    &lt;/RELATED_PRODUCTS--&gt;
    &lt;!--VISIBILITY&gt;&lt;/VISIBILITY--&gt;
    &lt;!--TEXT_PROPERTIES&gt;&lt;/TEXT_PROPERTIES--&gt;
    &lt;!--INFORMATION_PARAMETERS&gt;&lt;/INFORMATION_PARAMETERS--&gt;

  &lt;/xsl:template&gt;

  &lt;xsl:template name="CENIK-BEZ-VARIANT-NEBO-VARIANTA"&gt;
    &lt;xsl:param name="variant"/&gt;

    &lt;CODE&gt;&lt;xsl:value-of select="kod"/&gt;&lt;/CODE&gt;
    &lt;PRICE&gt;&lt;xsl:value-of select="java:flexibee.Tool.round(cenaZaklBezDph, 2)"/&gt;&lt;/PRICE&gt;
    &lt;PRICE_VAT&gt;&lt;xsl:value-of select="java:flexibee.Tool.round(cenaZaklVcDph, 2)"/&gt;&lt;/PRICE_VAT&gt;
    &lt;PURCHASE_PRICE&gt;&lt;xsl:value-of select="java:flexibee.Tool.round(nakupCena, 2)"/&gt;&lt;/PURCHASE_PRICE&gt;
    &lt;STANDARD_PRICE&gt;&lt;xsl:value-of select="java:flexibee.Tool.round(cenaBezna, 2)"/&gt;&lt;/STANDARD_PRICE&gt;
    &lt;CURRENCY&gt;CZK&lt;/CURRENCY&gt;

    &lt;xsl:if test="skladove = 'true'"&gt;
      &lt;STOCK&gt;
        &lt;!--MAXIMAL_AMOUNT&gt;&lt;/MAXIMAL_AMOUNT--&gt;
        &lt;MINIMAL_AMOUNT&gt;1&lt;/MINIMAL_AMOUNT&gt;
        &lt;AMOUNT&gt;&lt;xsl:value-of select="sumDostupMj"/&gt;&lt;/AMOUNT&gt;
      &lt;/STOCK&gt;
    &lt;/xsl:if&gt;

    &lt;xsl:if test="mj1 != ''"&gt;
      &lt;UNIT&gt;&lt;xsl:value-of select="java:flexibee.Tool.substring(mj1, 5)"/&gt;&lt;/UNIT&gt;
    &lt;/xsl:if&gt;

    &lt;AVAILABILITY&gt;
      &lt;xsl:choose&gt;
        &lt;xsl:when test="sumStavMj &gt; 0.0"&gt;Skladem&lt;/xsl:when&gt;
        &lt;xsl:otherwise&gt;Není skladem&lt;/xsl:otherwise&gt;
      &lt;/xsl:choose&gt;
    &lt;/AVAILABILITY&gt;

    &lt;WEIGHT&gt;&lt;xsl:value-of select="hmotMj"/&gt;&lt;/WEIGHT&gt;

    &lt;xsl:choose&gt;
      &lt;xsl:when test="atributy and atributy/atribut and atributy/atribut/hodnota"&gt;
        &lt;PARAMETERS&gt;
          &lt;xsl:for-each select="atributy/atribut"&gt;
            &lt;PARAMETER&gt;
              &lt;NAME&gt;&lt;xsl:value-of select="substring-after(typAtributu, 'code:')"/&gt;&lt;/NAME&gt;
              &lt;VALUE&gt;&lt;xsl:value-of select="hodnota"/&gt;&lt;/VALUE&gt;
            &lt;/PARAMETER&gt;
          &lt;/xsl:for-each&gt;
        &lt;/PARAMETERS&gt;
      &lt;/xsl:when&gt;
      &lt;xsl:otherwise&gt;
        &lt;xsl:if test="$variant"&gt;
          &lt;PARAMETERS&gt;
            &lt;PARAMETER&gt;
              &lt;NAME&gt;parametr&lt;/NAME&gt;
              &lt;VALUE&gt;&lt;xsl:value-of select="id"/&gt;&lt;/VALUE&gt;
            &lt;/PARAMETER&gt;
          &lt;/PARAMETERS&gt;
        &lt;/xsl:if&gt;
      &lt;/xsl:otherwise&gt;
    &lt;/xsl:choose&gt;

    &lt;!-- odkomentováním následujících řádků a jejich správným vyplněním je možné vyplnit i další vlastnosti --&gt;
    &lt;!--FREE_SHIPPING&gt;&lt;/FREE_SHIPPING--&gt;
    &lt;!--FREE_BILLING&gt;&lt;/FREE_BILLING--&gt;
  &lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;</transformace>
  </xslt>
</winstrom>