Przygotowywanie szablonu do wysyłki oferty w treści wiadomości

Przygotowywanie szablonu do wysyłki oferty w treści wiadomości
System umożliwia przygotowanie szablonów wiadomości email, które pozwalają wysyłać ofertę bezpośrednio w treści wiadomości. Dzięki temu możesz zautomatyzować komunikację i personalizować treści dla klientów.
Jak dodać szablon?
Z menu bocznego wybierz:
Ustawienia → Wysyłka wiadomości → Szablony wiadomości email
Kliknij Dodaj i uzupełnij formularz:
pola obowiązkowe oznaczone są gwiazdką (*)
możesz ustawić szablon domyślny
treść przygotujesz w edytorze lub przez kod źródłowy (HTML)
Po uzupełnieniu wszystkich pól kliknij Zapisz
Edycja lub usuwanie szablonu
Kliknij ⋯ (3 kropki) obok wybranego szablonu
Wybierz:
Edytuj – aby wprowadzić zmiany
Usuń – aby usunąć szablon
Obsługa znaczników (Twig)
Szablony obsługują dynamiczne dane dzięki znacznikom Twig.
UWAGA:
Znaczniki dodane w kodzie źródłowym (
{% code %}, 
{{ code }}) nie będą widoczne w edytorze, ale zostaną poprawnie przetworzone.
Dostępne obiekty
employee – dane pracownika
clients – dane klientów
elements – elementy oferty
investment – inwestycja
company – spółka
productBundles – pakiety produktów
Podstawowe tagi
Warunek
{% if company.address %}
  {{ company.address.street }} {{ company.address.buildingNumber }},
  {{ company.address.postalCode }} {{ company.address.city }}
{% endif %}
Pętla
{% set produkt = 'DOM' %}
{{ produkt }}
do (bez wyświetlania)
{% do 1 + 2 %}
Dostępne filtry
escape – znaki specjalne
lower / 
upper
capitalize / 
title
length
merge
number_format
format_currency
slice
filter
Dostępne funkcje
specificationArea(product: Product, optionName: string)
Zwraca powierzchnie z BuiltSpecifications jeśli istnieją, w przeciwnym razie ze Specifications.
Wiele wartości scala znakiem 
/.
Przykład:
Powierzchnie „Komórka lokatorska”:
{{ specificationArea(element.product, 'Komórka lokatorska') }}
getCardinalDirection(product: Product)
Zwraca kierunki świata dla lokalu (np. „północ, wschód”, „południowy zachód”).
Przykład:
Ekspozycja:
{{ getCardinalDirection(element.product) }}
downloadURL(file: File)
Funkcja pozwala na pobranie plików załączonych do produktu poprzez generowanie publicznego linku.
Przykład:
{% for productFile in element.product.files %}
    {% if productFile.fileType.systemName == 'IMG_PDF' %}
        <a href="{{ downloadUrl(productFile.file) }}">
            Zobacz kartę mieszkania
        </a>
        <br/>
    {% endif %}
{% endfor %}
footer()
Funkcja zwraca zawartość pola stopka z ustawień konta pracownika.
Przykład:
Przykładowa stopka pracownika
Przykładowy wygląd oferty
Przykładowe pola – Employee
{{ employee.name }}
{{ employee.surname }}
{{ employee.email }}
{{ employee.phone }}
Przykładowe pola – Client
{{ client.name }}
{{ client.surname }}
{{ client.displayName }}
{{ client.email }}
{{ client.phone }}
Przykładowe pola – Company
{{ company.name }}
{{ company.krs }}
{{ company.regon }}
{{ company.email }}
Przykładowe pola – Investment
{{ investment.name }}
{{ investment.getPlannedStartDate }}
{{ investment.getRealEndDate }}
Przykładowe pola – Product
{{ product.number }}
{{ product.area }}
{{ product.priceOffer }}
{{ product.roomsCount }}
Przykładowe pola – Address
{{ address.city }}
{{ address.street }}
{{ address.postalCode }}
Dobre praktyki
Udostępniaj tylko potrzebne dane
System działa w sandboxie (ograniczone możliwości Twig)
footer() zwraca HTML – nie używaj 
escape
Przykłady użycia
Przykład 1 – wiadomość
Szanowni klienci:
{% for client in clients %}
- {{ client.name | capitalize }} {{ client.surname | upper }}
{% endfor %}
Dziękujemy za zainteresowanie inwestycją {{ investment.name | title }}.
###  Przykład 2 – tabela pakietów
```html
<table>
  <thead>
    <tr>
      <td>Pakiet</td>
      <td>Pow. [m²]</td>
      <td>Ogród</td>
      <td>Cena</td>
    </tr>
  </thead>
  <tbody>
  {% for b in productBundles %}
    <tr>
      <td>{{ b.name }}</td>
      <td>{{ b.area }}</td>
      <td>{{ b.garden }}</td>
      <td>{{ b.price }}</td>
    </tr>
  {% endfor %}
  </tbody>
</table>
Przykład 3 – tabela elementów
<table>
  <thead>
    <tr>
      <td>ID</td>
      <td>PIĘTRO</td>
      <td>POWIERZCHNIA</td>
      <td>CENA</td>
    </tr>
  </thead>
  <tbody>
    {% for element in elements %}
    <tr>
      <td>{{ element.product.number }}</td>
      <td>{{ element.product.floor }}</td>
      <td>{{ element.area }}</td>
      <td>{{ element.nettoPrice }}</td>
    </tr>
    {% endfor %}
  </tbody>
</table>