Transakční e-maily pro Shoptet Premium

Jaroslav Bouška Jaroslav Bouška
11. července 2024

Pro Shoptet umíme řešit vlastní vizuál u transakčních emailů, které notifikují zákazníka o změně objednávky. Implementovaným způsobem můžeme to dokážeme řešit pouze Premium verzi.

Pro integraci je potřeba ze Shoptetu získat API klíč (Propojení -> Private API -> Přidat). API klíč doporučujeme vytvořit nový pouze pro Boldem a vhodně si ho pojmenovat, např. Propojení s Boldem.

V Boldem přejděte do Nastavení -> Propojení -> Nové propojení. Z nabídky „Vyberte typ propojení“ vyberte „Shoptet Premium API“ (je potřeba mít aktivovaný modul Shoptet Premium) a do pole zadejte API klíč. Klikněte na tlačítko „Otestovat Propojení“ a následně „Uložit a pokračovat“. Integrace pro jednu URL může v účtě existovat pouze jedna. Poud již existuje, uložení neproběhne.

Zaškrneme zatržítka zda chceme mít propojení „Aktivní“ a že „Posílat e-maily o objednávkách“.
Klikneme na tlačítko „Nastavit propojení“.

Propojení si na pozadí načte vaše stavy objednávek a zobrazí je v nabídce Vyberte kategorii objednávky. Pro každý stav objednávky, můžete vybrat transakční šablonu, která bude zákazníkovi odeslána. Po výběru stikněte „Nastavit kombinaci“.

Zobrazí se vám modální okno s aktuálně zvolenou kombinací. Zde si můžete nastavit zda se má zvolená kombinace posílat zákazníkoví, nebo třeba jen operátorovi. Operátorů můžete mít více, stačí emailové adresy v poli oddělit znakem „;“ nebo „|“. Zasílaná rekapitulace obejdnávky může obsahovat i statický soubor, např. obchodní podmínky, které budou přiloženy k emailu jako příloha.
Pokud emaily teprve připravujete, nechte zatržítko „Posílat zákazníkovi“ zašedlé a emaily si nechte zasílat pouze na svůj email.

Při notikaci ze Shoptetu o tom, že stav objednávky byl změněn, zkontrolujeme zda pro daný stav obejdnávky máme nastavenou kombinaci se šablonou. Pokud vhodnou kombinaci najdeme, připraví se k odeslání transakční email. Do proměnné v emailu jsou vložena data o objednávce – datový model ShoptetOrderModel. Data si v šabloně můžete vypsat pomocí proměnné „order“. Pro výpis ID objednávky tedy můžete použít {{ order.code }}.

Ukázka:

Dobrý den,{{if order.billingAddress.firstName != null}} {{vokativ order.billingAddress.firstName}},{{end}}
Vaši objednávku č. {{order.code}} jsme v pořádku přijali.

O dalším průběhu Vás budeme informovat.

Ukázka výpisu celé fakturační adresy:


{{if order.billingAddress != null}}
{{if order.billingAddress.fullName != null}}{{order.billingAddress.fullName}}<br/>{{end}}
{{if order.billingAddress.company != null}}{{order.billingAddress.company}}<br/>{{end}}
{{if order.billingAddress.street != null || order.billingAddress.houseNumber != null}}{{if order.billingAddress.street != null}}{{order.billingAddress.street}}{{end}}{{ if order.billingAddress.houseNumber != null}}{{order.billingAddress.houseNumber}}{{end}}<br/>{{end}}
{{if order.billingAddress.city != null}}{{order.billingAddress.city}}<br/>{{end}}
{{if order.billingAddress.zip != null}}{{order.billingAddress.zip}}<br/>{{end}}
{{if order.billingAddress.countryCode != null}}
    {{getCountryName(order.billingAddress.countryCode)}}
{{end}}
{{end}}

Pokud máte nastavenou kombinaci stav ojednávky – šablona můžete si zvolené natavení otestovat.
K tomu složí tlačítko vlevo nahoře „Poslat testovací e-mail“. Po stisku se otevře modální okno, které po vás bude vyžadvat ID objednávky ze Shoptetu. ID získáte v administraci Shoptetu, vybírejte pouze ty obejdnávky, které máte nakonfigurovány v kombinaci se šablonou.

Pomocné funkce pro filtrování

Pro pomocné funkce doporučujeme si vytvořit vlastní HTML šablonový blok, který budete načítat ve všech transaknčních šablonách pro Shoptet např. s názvem customFunctions

{{ include 'customFunctions' }}
{{func getCountryName(countryCode)
    case countryCode
      when 'CZ'
          ret 'Česká republika'
      when 'FR'
          ret 'France'
      when 'IT'
          ret 'Italia'
      when 'DE'
          ret 'Deutschland'
      when 'GB'
          ret 'United Kingdom'
      when 'PL'
          ret 'Polska'
      when 'SK'
          ret 'Slovensko'
      when 'UA'
          ret 'Ukraine'
      else
          ret 'Other'
    end
end}}

{{ func filterForProducts(item)
    ret item.itemType == 'product'
end }}
{{ func filterForShipping(item)
    ret item.itemType == 'shipping'
end }}
{{ func filterForPayment(item)
    ret item.itemType == 'billing'
end }}

{{products = array.filter order.items @filterForProducts}}
{{shippings = array.filter order.items @filterForShipping}}
{{payments = array.filter order.items @filterForPayment}}