Přenos stavu skladu z ABRA FlexiBee do e-shopu Shoptet

Naše série článků o propojení oblíbeného e-shop řešení Shoptet s účetnictvím ABRA FlexiBee pokračuje přenosem aktuálního stavu skladu. V minulém článku jsme si ukázali, jak v účetnictví a e-shopu zajistit stejné produkty. Tato synchronizace umožňuje objednávat u dodavatelů a naskladňovat produkty příjemkami nebo přijatými fakturami. Jakmile je zboží naskladněno, ABRA FlexiBee přepočte stavy skladu na skladových kartách. Nyní si ukážeme, jak přenést nový stav skladu zpět do e-shopu Shoptet, aby měli zákaznici stále aktuální informace.

XSLT transformace v ABRA FlexiBee

ABRA FlexiBee má propracované REST-API, které umí data exportovat v různých formátech jako například XML nebo JSON. Před přenosem do Shoptetu je však nejprve nutné standardní XML formát upravit.

Pomůže vám opět XSLT transformace, která XML soubor vyexportovaný z ABRA FlexiBee upraví tak, aby mu Shoptet rozuměl. Samotná transformace je výrazně jednodušší než při synchronizaci produktů. Nazpět do Shoptetu totiž posíláte jen kód produktu, stav skladu a aktuální skladovou (nákupní) cenu.

Ukázka XSLT transformace:

<?xml version="1.0" encoding="utf-8" ?>
<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">
  <xsl:output method="xml" indent="yes" encoding="utf-8" />

  <xsl:template match="winstrom">
    <SHOP>
      <xsl:apply-templates select="skladova-karta"/>
    </SHOP>
  </xsl:template>

  <xsl:template match="skladova-karta">
    <!-- zpracování konkrétní skladové karty -->
    <SHOPITEM>
      <CODE><xsl:value-of select="java:flexibee.Tool.substring(cenik, 5)"/></CODE>
      <STOCK>
        <AMOUNT><xsl:value-of select="stavMjSPozadavky - rezervMJ"/></AMOUNT>
      </STOCK>
      <PURCHASE_PRICE><xsl:value-of select="java:flexibee.Tool.round(prumCenaTuz, '2')"/></PURCHASE_PRICE>
    </SHOPITEM>
  </xsl:template>

</xsl:stylesheet>

Do ABRA FlexiBee ji zadáte v menu NástrojeUživatelské transformace. Klikněte na tlačítko Nový a vyplňte Zkratku, Název a do pole Dotaz zkopírujte transformaci. Zadanou zkratku si opět poznamenejte.

XSLT transformace pro přenos stavu skladu ke stažení

URL adresa, kterou pro získání stavu skladu použijete je:

https://{server}:{port}/c/{identifikátor firmy}/skladova-karta/(sklad='code:{zkratka skladu}' and ucetObdobi='code:{zkratka účetního období}').xml?detail=custom:cenik,rezervMJ,stavMjSPozadavky,prumCenaTuz&format=code:{zkratka transformace}&limit=0

Tato URL adresa obsahuje několik parametrů, které musíte doplnit:

server a port – standardní adresa a port FlexiBee serveru

identifikátor firmy – ze které firmy se budou data načítat

filtrace – zkratka skladu a zkratka účetního období

zkratka transformace – vámi zadaná zkratka uživatelské transformace.

Reálná adresa tedy bude například:

https://demo.flexibee.eu:5434/c/demo/skladova-karta/(sklad='code:SKLAD'%20and%20ucetObdobi='code:2017').xml?detail=custom:cenik,rezervMJ,stavMjSPozadavky,prumCenaTuz&format=code:SHOPTET-STAV-SKLADU&limit=0

Ruční nahrávání do Shoptetu

Z ABRA FlexiBee si tedy můžete stáhnout XML soubor ve formátu, který Shoptet umí zpracovat. Je ho možné ručně nahrát do e-shopu Shoptet. Nahrání se provádí v administraci e-shopu v menu PRODUKTYImport. Vyberte uložený XML soubor, který vytvořilo ABRA FlexiBee a klikněte na tlačítko Importovat.

Stavy skladu je možné nahrát ručně

Po úspěšném importu se podle stavu skladu z ARBA FlexiBee nastaví stav skladu v e-shopu Shoptet. Také dojde k úpravě nákupních cen.

Automatizace přenosu

Komu by se ale chtělo každou chvíli ručně přehrávat stav skladu? I zde je možné si tuto činnost zautomatizovat. Na straně ABRA FlexiBee existuje neustále dostupný API feed. Jak tedy zajistit jeho automatické nahrávání do e-shopu Shoptet?

Automatický import produktů

K tomuto účelu je možné využít funkci Shoptetu pojmenovanou Automatický import produktů. Naleznete ji opět v administraci e-shopu v menu PRODUKTY. Zadáte adresu s API feedem, kterou validujete a zaškrtnete položky Nákupní cenu, Sklad a Množství. Shoptet následně data načte a aktualizuje podle nich svůj stav skladu.

Automatický import produktů

Odstranění autentizace

Je tu ale malý problém. Aby ABRA FlexiBee vydalo nějaká data, potřebuje přihlašovací údaje. Při ručním stažení souboru jste také museli zadat uživatelské jméno a heslo.

Existuje hned několik možností, jak tento problém vyřešit. Nejjednodušší je zadat jméno a heslo přímo do URL adresy API feedu.

Finální adresa pro automatický import produktů tedy bude:

https://{username}:{password}@{server}:{port}/c/{identifikátor firmy}/skladova-karta/(sklad='code:{zkratka skladu}' and ucetObdobi='code:{zkratka účetního období}').xml?detail=custom:cenik,rezervMJ,stavMjSPozadavky,prumCenaTuz&format=code:{zkratka transformace}&limit=0

Příklad:

https://winstrom:winstrom@demo.flexibee.eu:5434/c/demo/skladova-karta/(sklad='code:SKLAD'%20and%20ucetObdobi='code:2017').xml?detail=custom:cenik,rezervMJ,stavMjSPozadavky,prumCenaTuz&format=code:SHOPTET-STAV-SKLADU&limit=0

Nyní by vše mělo správně fungovat. Zadání jména a hesla je možné rovněž vyřešit např. vytvořením proxy serveru.

Možnosti rozšíření importu

Transformace je napsána tak, aby z ABRA FlexiBee vracela jen zkratku produktu (podle ní se páruje k produktu v e-shopu Shoptet), stav skladu a nákupní cenu. Je možné ji rozšířit i o prodejní cenu, popisky, výrobce, podobné produkty a další vlastnosti. Všechny mají v ABRA FlexiBee svá políčka.

Důvodem rozšířených importů může být např. situace, kdy chcete mít ve všech svých e-shopech stejné produkty, respektive v jednom e-shopu nějakou skupinu produktů a v jiném jinou. Tyto skupiny se mohou libovolně překrývat. Stačí jen jednoduchá úprava URL adresy ABRA FlexiBee API feedu, z něhož se získávají data (doplnění další filtrace).

Shrnutí aktuálního stavu propojení

Díky synchronizovaným produktům nyní můžete v ABRA FlexiBee naskladňovat a do e-shopu Shoptet v pravidelných intervalech načítat aktuální stav skladu. Zákazníci tedy ví, kolik zboží je skladem a mohou spokojeně nakupovat.

Dále je důležité pracovat s objednávkami. Do ABRA FlexiBee je potřebujete přenést, abyste mohli podle nich například objednávat zboží u dodavatelů. Jednoduchý přenos objednávek z e-shopu Shoptet do ABRA FlexiBee jsme popsali v samostatném článku. S použitím XSLT transformace můžete import rozšířit stejně jako v případě produktů a stavu skladu.

V dalším článku si podrobně ukážeme způsob přenosu a synchronizace zákazníků.