Přenos produktů z e-shopu Shoptet do FlexiBee

Používáte e-shop na platformě Shoptet? Jednou z důležitých součástí synchronizace s účetnictvím ABRA FlexiBee je přenos produktů. Poradíme vám, jak na to.

Všechny potřebné údaje pro běžné i pro variantní produkty je v Shoptetu možné zadat celkem jednoduše. Pro synchronizaci s ekonomickým systémem ABRA FlexiBee je do něj nutné tyto produkty přenést. Stejný ceník v Shoptetu i v ABRA FlexiBee umožní – naskladňovat zboží ve FlexiBee a stav skladu přenášet zpět do e-shopu Shoptet.

Synchronizace e-shopu s ekonomickým systém by optimálně měla fungovat tak, že e-shop je hlavním místem, kde se upravují produkty. V ekonomickém systému se řeší naskladňování a přijaté faktury.

Jak získat z e-shopu Shoptet data o produktech?

Tato část je jednoduchá. Shoptet umožňuje export produktů do XML. Tento XML soubor je dostupný na pevně dané internetové adrese. Export do XML má několik formátů. Zvolit lze např. možnost Kompletní export, která bude obsahovat všechna potřebná data.

Export se nastavuje v menu Produkty → Export. Je možné zvolit si Typ (Kompletní export), podle něhož se vybere příslušný formát. Případně můžete nastavit filtraci. To ale nejspíš není nutné, protože chceme do ABRA FlexiBee přenést všechny produkty.

Pod nastavením je pak uveden Permanentní odkaz zvoleného exportu. To je adresa, kterou budeme využívat.

URL adresa kterou budeme používat při synchronizaci produktů.

Export produktů

Jak data nahrát do ABRA FlexiBee?

Na první pohled je jasné, že data z e-shopu Shoptet rovnou do ABRA FlexiBee nahrát nepůjde. Je tedy nutné využít jednu z novinek ABRA FlexiBee verze 2017.2. Touto novinkou jsou Uživatelské XSLT transformace.

Uživatelská XSLT transformace

Připravíme si tedy XSLT transformaci, která bude převádět data z Shoptet formátu na FlexiBee formát.

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:java="http://xml.apache.org/xalan/java" exclude-result-prefixes="java">

<xsl:output method="xml" encoding="utf-8" />

<!-- zkratka skladu na kterém je zboží určené pro eshop -->
<xsl:variable name="sklad" select="'SKLAD'" />

<xsl:template match="SHOP">
<winstrom version="1.0">
<xsl:apply-templates select="SHOPITEM"/>
</winstrom>
</xsl:template>

<xsl:template name="STEJNE">
<!-- identifikatory -->
<id>ext:shoptet-product:<xsl:value-of select="@id"/></id>
<id>code:<xsl:value-of select="CODE"/></id>
<kod><xsl:value-of select="CODE"/></kod>

<!-- dulezita pole -->
<xsl:choose>
<xsl:when test="PRICE_VAT">
<cenaZakl><xsl:value-of select="PRICE_VAT"/></cenaZakl>
<typCenyDphK>typCeny.sDph</typCenyDphK>
</xsl:when>
<xsl:when test="PRICE">
<cenaZakl><xsl:value-of select="PRICE"/></cenaZakl>
<typCenyDphK>typCeny.bezDph</typCenyDphK>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="VAT = 0">
<typSzbDphK>typSzbDph.dphOsv</typSzbDphK>
</xsl:when>
<xsl:when test="VAT = 10">
<typSzbDphK>typSzbDph.dphSniz2</typSzbDphK>
</xsl:when>
<xsl:when test="VAT = 15">
<typSzbDphK>typSzbDph.dphSniz</typSzbDphK>
</xsl:when>
<xsl:otherwise>
<typSzbDphK>typSzbDph.dphZakl</typSzbDphK>
</xsl:otherwise>
</xsl:choose>

<!-- skladove karty -->
<skladove>true</skladove>
<sklad-karty>
<skladova-karta>
<sklad>code:<xsl:value-of select="$sklad"/></sklad>
<ucetObdobi>code:2017</ucetObdobi>
</skladova-karta>
</sklad-karty>
</xsl:template>

<xsl:template name="ITEM">
<!-- jednoduchy cenik -->
<cenik>
<xsl:call-template name="STEJNE"/>
<nazev><xsl:value-of select="NAME"/></nazev>
</cenik>
</xsl:template>

<xsl:template match="VARIANTS/VARIANT">
<!-- cenik s variantami -->
<cenik>
<xsl:call-template name="STEJNE"/>
<nazev><xsl:value-of select="../../NAME"/> - <xsl:value-of select="CODE"/></nazev>
</cenik>
</xsl:template>

<xsl:template match="SHOPITEM">
<xsl:if test="VARIANTS">
<xsl:apply-templates select="VARIANTS/VARIANT"/>
</xsl:if>
<xsl:if test="not(VARIANTS)">
<xsl:call-template name="ITEM"/>
</xsl:if>
</xsl:template>

</xsl:stylesheet>

Tuto XSLT transformaci zadáme do ABRA FlexiBee. Zadání provedeme v menu Nástroje → Uživatelské transformace. Stiskneme tlačítko Nový a vyplníme pole Zkratka (zapamatovat!) a Název. Do pole Dotaz vložíme kompletní XSLT transformaci a stiskneme tlačítko Uložit a zavřít.

XSLT pro přenášení produktů ke stažení

Internetová adresa, kterou budeme používat pro import na straně ABRA FlexiBee je:

https://{server}:{port}/c/{identifikátor firmy}/cenik.xml?format=code:{zkratka}

Server a port jsou standardní hodnoty FlexiBee serveru. Identifikátor firmy určuje, do které firmy budete produkty nahrávat. Zkratka na konci koresponduje se zkratkou XSLT transformace.

Adresa tedy například bude:

https://demo.flexibee.eu:5434/c/demo/cenik.xml?format=code:SHOPTET-PRODUKTY

Jak spojit ABRA FlexiBee a Shoptet?

Nyní máte připraveno všechno na straně e-shopu Shoptet i na straně ABRA FlexiBee. Musíte jen zajistit, aby data „tekla“. Synchronizaci můžete rozpohybovat několika způsoby a záleží na každém uživateli, jaký si zvolí.

Využití cURL

Pro spojení obou stran je možné využít nástroj cURL. Funguje na Windows, macOS i na Linuxu. Spouštění je možné zajistit cronem (plánovačem úloh).

Přenos produktů ze Shoptetu do FlexiBee je možné pomocí cURL spustit například tako:

curl "https://123456.myshoptet.com/export/productsComplete.xml?patternId=-5&hash=e3ed846e17cbe694ae2072fbcc81234564fcd7375f64d07c6bf0714561b3c995" > shoptet-products.xml

curl -X PUT "https://demo.flexibee.eu:5434/c/demo/cenik.xml?format=code:SHOPTET-PRODUKTY" -T shoptet-products.xml -u winstrom:winstrom

První příkaz stáhne do souboru shoptet-products.xml kompletní seznam produktů z e-shopu. Druhým příkazem tento soubor nahrajete do ABRA FlexiBee. V URL pro nahrání do ABRA FlexiBee je použit parametr format. Tento parametr zajistí spuštění XSLT transformace.

Výhody? Je to zdarma s minimálním úsilím.

Nevýhody? Pokud má být řešení plně automatické, bude potřeba non-stop běžící počítač.

Scénář v Integromatu

Je také možné vytvořit si scénář v Integromatu. Toto řešení doporučujeme, protože uživatel má všechno pod kontrolou a nemusí mít nikde žádný běžící server.

Scénář je jednoduchý. Obsahuje jen dva HTTP moduly. První stahuje data ze Shoptetu a druhý je bez jakékoliv změny nahraje do ABRA FlexiBee.

Přenos produktů ze Shoptetu do ABRA FlexiBee

PHP nebo jiná aplikace

Je samozřejmě možné naprogramovat i jakoukoliv jinou jednoduchou aplikaci, která načte data ze Shoptetu a zapíše je do ABRA FlexiBee. Toto řešení je však příliš obtížné a nepřináší oproti předchozím dvěma způsobům žádné výhody.

Závěr

Pokud do ABRA FlexiBee přenesete seznam produktů, umožní vám to rychle vytvářet příjemky na zboží. Stav skladu pak budete moci přenášet zpátky do Shoptetu.