Přenos seznamu zákazníků z e-shopu Shoptet do ABRA FlexiBee

Seriál o propojení oblíbeného e-shop řešení Shoptet s účetnictvím ABRA FlexiBee pokračuje dalším důležitým krokem, který vám pomůže k bezproblémovému fungování vašeho podnikání. Tentokrát vás detailně seznámíme s přenosem a synchronizací seznamu zákazníků.

Podobně jako v případě aktuálního stavu skladu je výhodné synchronizovat seznam zákazníků v e-shopu i v ABRA FlexiBee. Zákazníkům pak lze snadno rezervovat zboží, posílat upomínky nebo třeba SMS s přáním k narozeninám. Další samostatnou kapitolou jsou analýzy. ABRA FlexiBee totiž může jednoduše filtrovat zákazníky podle množství odběru zboží. Najít lze i zákazníky, kteří nakupovat přestali, a je pak oslovit nějakou kampaní.

Export zákazníků z e-shopu Shoptet

Ze Shoptetu je možné zákazníky vyexportovat ve třech formátech: XML, XLSX a CSV. Ukážeme vám export ve formátu XML, který je dostupný na permanentním odkazu (pevná URL adresa), takže bude možné přenos automatizovat.

Adresu permanentního odkazu naleznete v administraci e-shopu v menu ZÁKAZNÍCI → Export. Zvolte formát XML a v dolní části okna najdete adresu. Stažení dat lze zabezpečit omezením přístupu z konkrétní IP adresy.

Export zákazníků ze Shoptetu do XML

Import zákazníků do ABRA FlexiBee

Stejně jako v předchozích přenosech si opět musíte pomoci XSLT transformací, protože XML vygenerované e-shopem není ve formátu, který ABRA FlexiBee požaduje.

Transformace pro převod XML e-shopu Shoptet na XML pro ABRA FlexiBee:

<?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="CUSTOMERS">
    <winstrom verison="1.0">
      <xsl:apply-templates select="CUSTOMER"/>
    </winstrom>
  </xsl:template>

  <xsl:template match="CUSTOMER">
    <!-- zpracování konkrétního zákazníka -->
    <adresar>
      <id>ext:SHOPTET-CUSTOMER:<xsl:value-of select="GUID"/></id>
      <xsl:if test="ACCOUNTS/ACCOUNT/EMAIL != ''">
        <id>ext:SHOPTET-CUSTOMER-EMAIL:<xsl:value-of select="ACCOUNTS/ACCOUNT/EMAIL"/></id>
      </xsl:if>
      <xsl:choose>
        <xsl:when test="BILLING_ADDRESS/FULL_NAME != ''">
          <nazev><xsl:value-of select="BILLING_ADDRESS/FULL_NAME"/></nazev>
        </xsl:when>
        <xsl:otherwise>
          <nazev><xsl:value-of select="ACCOUNTS/ACCOUNT/EMAIL"/></nazev>
        </xsl:otherwise>
      </xsl:choose>
      <nazev2><xsl:value-of select="BILLING_ADDRESS/COMPANY"/></nazev2>
      <ulice><xsl:value-of select="BILLING_ADDRESS/STREET"/> <xsl:value-of select="BILLING_ADDRESS/HOUSE_NUMBER"/></ulice>
      <mesto><xsl:value-of select="BILLING_ADDRESS/CITY"/></mesto>
      <psc><xsl:value-of select="BILLING_ADDRESS/ZIP"/></psc>
      <xsl:apply-templates select ="BILLING_ADDRESS"/>
      <ic><xsl:value-of select="BILLING_ADDRESS/COMPANY_ID"/></ic>
      <dic><xsl:value-of select="BILLING_ADDRESS/VAT_ID"/></dic>
      <skupFir if-not-found="create">code:<xsl:value-of select="java:flexibee.Tool.toUpper(CUSTOMER_GROUP)"/></skupFir>
      <skupCen if-not-found="create">code:<xsl:value-of select="java:flexibee.Tool.toUpper(PRICELIST)"/></skupCen>
      <poznam><xsl:value-of select="REMARK"/></poznam>
      <kontakty>
        <xsl:apply-templates select ="ACCOUNTS/ACCOUNT"/>
      </kontakty>
    </adresar>

    <xsl:apply-templates select ="SHIPPING_ADDRESSES/SHIPPING_ADDRESS"/>

  </xsl:template>

  <xsl:template match="BILLING_ADDRESS">
    <xsl:call-template name="STAT"/>
  </xsl:template>

  <xsl:template match="SHIPPING_ADDRESSES/SHIPPING_ADDRESS">
    <misto-urceni>
      <!-- vytvoření dodacích adres -->
      <id>ext:SHOPTET-SHIPPING:<xsl:value-of select="GUID"/></id>
      <firma>ext:SHOPTET-CUSTOMER:<xsl:value-of select="../../GUID"/></firma>
      <xsl:choose>
        <xsl:when test="FULL_NAME != ''">
          <nazev><xsl:value-of select="FULL_NAME"/></nazev>
        </xsl:when>
        <xsl:otherwise>
          <nazev><xsl:value-of select="../../ACCOUNTS/ACCOUNT/EMAIL"/></nazev>
        </xsl:otherwise>
      </xsl:choose>
      <nazev2><xsl:value-of select="COMPANY"/></nazev2>
      <ulice><xsl:value-of select="STREET"/> <xsl:value-of select="HOUSE_NUMBER"/></ulice>
      <mesto><xsl:value-of select="CITY"/></mesto>
      <psc><xsl:value-of select="ZIP"/></psc>
      <xsl:call-template name="STAT"/>
    </misto-urceni>
  </xsl:template>

  <xsl:template match="ACCOUNTS/ACCOUNT">
    <kontakt>
      <!-- vytvoření kontaktů -->
      <id>ext:SHOPTET-ACCOUNT:<xsl:value-of select="GUID"/></id>
      <prijmeni><xsl:value-of select="EMAIL"/></prijmeni>
      <email><xsl:value-of select="EMAIL"/></email>
      <tel><xsl:value-of select="PHONE"/></tel>
    </kontakt>
  </xsl:template>

  <xsl:template name="STAT">
    <!-- správné naplnění pole stát v adrese ve FlexiBee -->
    <xsl:choose>
      <xsl:when test="COUNTRY = ''"><stat></stat></xsl:when>
      <xsl:when test="COUNTRY = 'Česká republika'"><stat>code:CZ</stat></xsl:when>
      <xsl:when test="COUTNRY = 'Slovensko'"><stat>code:SK</stat></xsl:when>
      <!-- zde je potřeba doplnit mapování dalších států -->
      <xsl:otherwise><stat>NEDEFINOVANO - <xsl:value-of select="COUNTRY"/></stat></xsl:otherwise>
    </xsl:choose>
  </xsl:template>

</xsl:stylesheet>

Transformaci zadejte v ABRA FlexiBee do evidence Uživatelské transformace (horní menu NástrojeUživatelské transformace). Vyplňte Zkratku (tu si zapamatujte) a Název. Do pole Dotaz vložte zdrojový kód XSLT transformace.

XSLT pro přenos zákazníků ke stažení

Pokud je transformace v ABRA FlexiBee zadaná, můžete začít skládat URL adresu, na kterou budete data ze Shoptetu posílat.

Adresa vypadá takto:

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

Server a port jsou standardní server a port ABRA FlexiBee serveru. Identifikátor firmy určuje, do které firmy budou zákazníci zapsáni. Zkratka určuje XSLT transformaci, kterou pro přenos využijeme.

Reálná ukázka adresy je například:

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

Automatický přenos zákazníků

Existuje opět několik možností, jak zákazníky přenést. Můžete využít Integromat, nástroj cURL nebo si naprogramovat jednoduchý PHP script.

Scénář v Integromatu

Přenášení můžete rozpohybovat pomocí scénáře v Integromatu. Tento scénář se bude skládat ze dvou HTTP modulů. První bude metodou GET načítat data ze Shoptetu a druhý je bude pomocí metody PUT posílat do ABRA FlexiBee.

Ukázky nastavení:

Scénář v Integromatu Načtení zákazníků ze Shoptetu

Načtení zákazníků ze Shoptetu

Využití nástroje cURL

Integromat nemusí být pro všechny tím správným řešením. To ale nevadí. Přenos je možné realizovat pomocí nástroje cURL. Tento nástroj funguje na Windows, macOS i na Linuxu. Vytvořte si jednoduchý script, který bude složen ze dvou volání cURL.

Ukázka volání:

curl "https://123456.myshoptet.com/export/customers.xml?hash=e3ed846e17cbe694ae2072fbcc81234564fcd7375f64d07c6bf0714561b3c995" > shoptet-customers.xml

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

Shrnutí aktuálního stavu propojení

Pokud sledujete seriál o propojení e-shopu Shoptet do ABRA FlexiBee, měli byste mít synchronizovaná data o produktech, stavu skladu, zákaznících a jednoduchým způsobem i objednávkách. V příštím návodu se vrátíme k přenosu objednávek a ukážeme si pokročilejší způsob přenosu, kde budou objednávky navázány na konkrétního zákazníka a zboží mu bude zarezervováno. Tím se sníží stav skladu, aby zákazník o zboží nepřišel.