Niektóre elementy aplikacji mają możliwość samodzielnej modyfikacji. Dotyczy to przede wszystkim elementów widocznych dla klienta, czyli:
- wydruków,
- plików PDF,
- etykiety dla drukarki etykiet,
- wiadomości e-mail wysyłanych do klientów
- wiadomości SMS.
Modyfikacja powyższych treści opiera się na samodzielnej edycji szablonów, które można znaleźć w panelu opcji konfiguracyjnych.
Szablony, to fragmenty kodu HTML wraz ze specjalnymi znacznikami, które nazwijmy 'tokenami’, które zostaną zastąpione odpowiednimi danymi, numerem naprawy, nazwą klienta, etc. Listę dostępnych tokenów znajdziesz niżej.
SKŁADNIA
Jak wspomniałem szablony używają tokenów. Tokeny mają następującą postać: <%= nazwa_tokenu %>
. Ważne jest aby dokładnie tak wyglądały. Istnieją także specyficzne konstrukcje typu <% if (nazwa_tokenu) { %> <%= nazwa_tokenu %> <% } %>
, które służą do warunkowego wyświetlania pewnych elementów: token 'nazwa_tokenu’ nie wyświetli się, jeśli nie będzie miał wartości.
PODPOWIEDŹ
Szablony bazują na mechanizmie EJS, który jest połączeniem HTMLa i JavaScript. W niektórych miejscach, na przykład na wydrukach możesz korzystać z bogactwa HTMLa używając wszystkich znaczników i CSSów – szablony maili są najczęściej redukowane do podstawowego HTMLa poprzez klienty pocztowe, tak więc nie ma większego sensu aby osadzać w nich CSS
EDYCJA
Najłatwiej, jeśli zaczniesz od przyjrzenia się domyślnym szablonom. Każda opcja konfigurująca szablon poniżej okna edycyjnego, w szarym polu, pokazuje domyślną postać szablonu. Rozpoczynając modyfikację skopiuj po prostu domyślny szablon do okna edycji (ctrl+c ctrl+v) i zacznij na nim pracować powoli go rozwijając. Zwróć uwagę na poprawność osadzania tokenów i używania nazw tokenów. Użycie niepoprawnej nazwy spowoduje błąd. Jeśli chcesz przywrócić domyślny szablon wyczyść po prostu zawartość okna edycji i zapisz opcję.
UWAGA
Błąd w szablonie lub użycie nieistniejącego tokena spowoduje iż otrzymasz pusty wydruk (plik PDF) lub w przypadku e-maili list nie zostanie wysłany (status wysyłki listów znajdziesz w historii danej naprawy). Po każdej modyfikacji sprawdź czy otrzymujesz poprawne wydruki, lub czy listy się wysyłają. Trudno nam odpowiadać za błędy w samodzielnej konfiguracji
INFORMACJA
Postać domyślnych szablonów czasem ulega zmianie z uwagi na zmiany w aplikacjach. Użycie własnego szablonu lub choćby przekopiowanie domyślnego szablonu do opcji zamrozi wszelkie zmiany. Z jednej strony masz cały czas takie same szablony, z innej przeglądaj czasem tę sekcję pomocy, ponieważ będziemy aktualizowali ją o nowe tokeny, etc.
Tokeny dostępne w każdym szablonie wydruku, emaila lub SMSa (naprawy, zgłoszenia, etc.) |
|
Token | Jakie dane zostaną użyte w jego miejscu? |
---|---|
current_time | aktualna na moment wydruku data i czas |
currency | symbol waluty, odpowiedni dla Twojego kraju |
application_url | Adres URL aplikacji Serwisant Online |
current_user | nazwa zalogowanego użytkownika (pracownika serwisu, imię i nazwisko) |
application_holder_name | Nazwa głównego oddziału firmy (zazwyczaj handlowa nazwa firmy) |
application_holder_address | Adres głównego oddziału firmy |
application_holder_phone | Numer telefonu głównego oddziału firmy |
application_holder_email | Email głównego oddziału firmy |
application_holder_logo_url | URL do logo głównego oddziału firmy, powinno zostać użyte jako źródło obrazka, zazwyczaj:
<img src="<%= application_holder_logo_url %>" /> |
customer_login_url/ca_login_url | link logowania do panelu klienta, o ile aktywny jest moduł internetowy. |
service_supplier_name | Nazwa serwisu w którym dokonywana jest naprawa lub do którego przynależy aktualny użytkownik – w większości przypadków są to dane Twojej firmy, jeśli masz więcej oddziałów i zlecenie zostało przyjęte w jednym z nich, będą to dane oddziału. |
service_supplier_address | adres serwisu |
service_supplier_phone | numer telefonu serwisu |
service_supplier_phone2 | alternatywny numer telefonu serwisu |
service_supplier_email | e-mail serwisu |
service_supplier_logo_url | URL do pliku z logo serwisu, , powinno zostać użyte jako źródło obrazka, zazwyczaj:
<img src="<%= service_supplier_logo_url %>" /> |
customer_person | imię i nazwisko klienta lub osoby kontaktowej w przypadku firmy |
customer_company_name | nazwa firmy |
customer_name | nazwa klienta, imię i nazwisko w przypadku klienta indywidualnego, lub nazwa firmy |
customer_is_company | Prawda, jeśli klient jest firmą, powinno zostać obsłużone przez poniższy fragment kodu:
<p> typ klienta: <% if (customer_is_company) { %> firma <% } else { %> klient indywidualny <% } %> </p> |
customer_nip | Numer NIP jeśli podano |
customer_phone | telefon klienta |
customer_phone_2 | alternatywny telefon klienta |
customer_email | email klienta |
customer_address_names | lista adresów klienta. Aby wyświetlić wszystkie adresy wstaw do swojego szablonu:
<% if (customer_address_names.length > 0) { %> <% for(var i=0; i<customer_address_names.length; i++) { %> <%= customer_address_names[i] %><br /> <% } %> <% } %> Jeśli chcesz dowolny, pierwszy adres, wstaw: <% if (customer_address_names.length > 0) { %><%= customer_address_names[0] %><% } %> |
customer_number | Numer identyfikacyjny klienta, w bazie serwisant online, np. SO/000085 |
customer_group | Nazwa grupy, do której przypisany jest klient. Puste, jeśli nie przypisano grupy. |
Tokeny dostępne w szablonach wydruku, email lub SMSa związanych z naprawą w dowolnym stanie |
|
Token | Jakie dane zostaną użyte w jego miejscu? |
customer_order_url | link, którego klient może użyć do sprawdzenia statusu naprawy – jeśli klient ma aktywny dostęp przez internet link prowadzi do strony logowania, jeśli nie jest aktywny, prowadzi do karty statusu |
customer_status_url | link, którego klient może użyć do sprawdzenia statusu naprawy – karta statusu naprawy |
order_rma | numer naprawy (RMA) |
order_secret_code | kod naprawy, umożliwiający sprawdzenie jego statusu – zastąp link 'customer_order_url’ kodem, jeśli integrujesz własną stronę z Serwisantem |
order_qr_code_img | URL do grafiki z QR code, prowadzącego do strony z informacją o naprawie, przydatny dla klienta, ale także dla serwisu. Aby poprawnie użyć tokenu należy użyć go w tagu HTML <img />
<img src="<%= order_qr_code_img %>" /> |
order_internal_qr_code_img | URL do grafiki z QR code, prowadzącego do karty naprawy. Token przydatny jest wyłącznie dla serwisu, aby móc szybko nawigować do szczegółów naprawy. Aby poprawnie użyć tokenu należy użyć go w tagu HTML <img />
<img src="<%= order_internal_qr_code_img %>" /> |
order_128_code_img | URL do grafiki z kodem kreskowym zawierającym numer RMA naprawy (code 128) – jest to przydatne wyłącznie dla dla serwisu. Aby poprawnie użyć tokenu należy użyć go w tagu HTML <img />
<img src="<%= order_128_code_img %>" /> |
order_created_time | data utworzenia rekordu z informacją o naprawie w bazie danych |
order_arrival_time | data przyjęcia naprawy – jest to data, którą określisz jako 'data rozpoczęcia naprawy’ i tak też powinna być rozumiana: moment od którego zaczyna biec czas naprawy |
order_estimated_time | przewidywana data zwrotu naprawy |
order_object_name | nazwa przedmiotu naprawy: rodzaj, producent, etc, możesz użyć także samodzielnych elementów nazwy, patrz tokeny poniżej |
order_object_type | rodzaj przedmiotu naprawy |
order_object_avatar_url | url awatara rodzaju przedmiotu naprawy, jeśli podano, jeśli nie podano będzie pusty |
order_object_vendor | producent |
order_object_model | model |
order_object_serial | numer seryjny |
order_estimated_price | szacowany koszt naprawy, na który akceptuje klient, może być równy zero, co oznacza, że klientowi nie podano kosztów w momencie przyjęcia naprawy. To jest liczba zmiennoprzecinkowa, można wykonywać na niej obliczenia. |
order_estimated_price_f | to samo co order_estimated_price, przy czym jest to sformatowana zgodnie ze standardami wyświetlania cen liczba. |
order_advance_amount | kwota wpłaconej zaliczki, puste jeśli nie wpłacono. To jest liczba zmiennoprzecinkowa, można wykonywać na niej obliczenia. |
order_advance_amount_f | To samo co order_advance_amount, zy czym jest to sformatowana zgodnie ze standardami wyświetlania cen liczba. |
order_items: | [lista] dodatkowe elementy naprawy, obiekty zawierające:
|
parcels: | [lista] aktywne (zamówione, w trakcie) przesyłki kurierskie, obiekty zawierające:
<% if (parcels.length > 0) { %> |
order_issue | opis problemu, tak, jak podano w formularzu |
order_collection | opis sposobu odbioru naprawy przez klienta po zakończeniu naprawy – w ten sposób naprawa powinna zostać zwrócona klientowi |
order_collection_required | flaga, mówiąca, że naprawa przed rozpoczęciem wymaga odbioru od klienta (kurier, własne środki) |
order_collection_address | adres, z którego powinna zostać odebrana naprawa |
order_delivery_required | flaga, mówiąca, że naprawa po zakończeniu wymaga dostarczenia do klienta (kurier, własne środki) |
order_delivery_address | adres, pod który powinna zostać odesłana naprawa |
order_archive_data |
Opcja wycofana, proszę użyć własnych pól formularza flaga, mówi, że zaznaczono opcję archiwizacji danych
|
order_device_password |
Opcja wycofana, proszę użyć własnych pól formularza
hasło do urządzenia Proszę używać rozsądnie – istnieje możliwość ujawnienia hasła klienta osobom postronnym
|
order_remarks | uwagi wewnętrzne – Proszę używać rozsądnie – pole na uwagi wewnętrzne nie jest przewidziane do prezentacji dla klienta, token powinien być używany jedynie na wydrukach wewnętrznych |
order_employee | Nazwa pracownika realizującego naprawę – jeśli pracownik jest nieprzypisany token token nic nie zwróci |
order_employee_phone | Numer telefonu do pracownika realizującego naprawę – jeśli pracownik jest nieprzypisany token token nic nie zwróci |
order_warranty_repair | flaga, mówi, że zaznaczono opcję naprawy gwarancyjnej |
order_warranty_purchase_date | data wystawienia dokumenty zakupu, tak jak podał klient – może być puste jeśli klient nic nie określił |
order_warranty_purchase_document | numer/opis dokumentu sprzedaży, tak jak podał klient |
order_custom_fields | [lista] zawiera obiekty opisujące dodatkowe, konfigurowalne pola zdefiniowane dla naprawy:
Przykładowy kod, umożliwiający wyświetlenie wszystkich pól: <% if (order_custom_fields.length > 0) { %> <% for(var i=0; i<order_custom_fields.length; i++) { %> <p><%= order_custom_fields[i].name %>: <%= order_custom_fields[i].value %></p> <% } %> <% } %> Przykładowy kod umożliwiający wyświetlenie pojedynczego pola, które nazywa się 'Pole X’: <% if (order_custom_fields.length > 0) { %> <% for(var i=0; i<order_custom_fields.length; i++) { %> <% if (order_custom_fields[i].name == 'pole x') { %> <p><%= order_custom_fields[i].value %></p> <% } %> <% } %> <% } %> |
order_images | Niewidoczne w domyślnej konfiguracji. Lista załączonych do naprawy zdjęć, oznaczonych jako widoczne dla klienta. Wszelkie inne rodzaje plików są ignorowane. Aby dodać listę zdjęc należy użyć kodu podobnego do tego poniżej:
<% if (order_images.length > 0) { %> <% for(var i=0; i<order_images.length; i++) { %> <a href="<%= order_images[i].url %>" target="_blank"> <img src="<%= order_images[i].url_small %>" class="img-thumbnail"> </a> <% } %> <% } %> |
order_device_leased | wartość logiczna/flaga – prawda, jeśli do naprawy wydano urządzenie zastępcze. Do wykorzystania w warunkach logicznych. |
order_leased_device_name | Nazwa opisowa wydanego urządzenia zastępczego. |
order_leased_device_serial | Numer seryjny wydanego urządzenia zastępczego |
Tokeny dostępne wyłącznie na wydrukach i mailach po wydaniu diagnozy. |
|
Token | Jakie dane zostaną użyte w jego miejscu? |
diagnosis_price_estimated | koszt naprawy brutto dla klienta, liczba zmiennoprzecinkowa |
diagnosis_price_estimated_f | to samo co diagnosis_price_estimated, tyle, że sformatowane |
diagnosis_remarks | opis wyniku diagnozy – opis usterki – z pola widocznego dla klienta |
Tokeny dostępne wyłącznie na potwierdzeniach wydania sprzętuOprócz poniższych tokenów dostępne są również wszystkie z listy wcześniejszej. |
|
Token | Jakie dane zostaną użyte w jego miejscu? |
order_repair_summary | podsumowanie wykonanej naprawy |
order_price | koszt naprawy tak jak podano w podsumowaniu |
order_repair_warranty | ilość miesięcy gwarancji na naprawę, domyślnie zero |
order_canceled | wartość logiczna, informująca o fakcie anulowania naprawy. Może sterować widocznością opisu wydania, eg,:
<% if (order_canceled) { %> ta naprawa została anulowana <% } else { %> ta naprawa została ukończona <% } %> |
components | Niewidoczne w domyślnej konfiguracji. Lista podzespołów użytych podczas naprawy – format identyczny jak dla karty gwarancyjnej, opisany poniżej |
order_repair_actions | Niewidoczne w domyślnej konfiguracji. [lista] zawiera obiekty opisujące wszystkie czynności serwisowe, wraz z kosztami. Zwróć uwagę, ze koszt, w zależności od konfiguracji aplikacji może być kosztem dla klienta (domyślne ustawienie) lub kosztem serwisu. Zwróć także uwagę, że lista zawiera opisy czynności naprawczych tak jak podano – jeśli używasz wewnętrznych opisów czynności nie powinieneś wystawiać ten lisy dla klientów, w zamian korzystać z podsumowania naprawy i tokenu order_repair_summary
Przykładowy kod, umożliwiający wyświetlenie wszystkich pól: <% if (!order_canceled && order_repair_actions.length > 0) { %> <table class="table table-striped"> <% for(var i=0; i<order_repair_actions.length; i++) { %> <tr> <td><%= order_repair_actions[i].remarks %></td> <td><%= order_repair_actions[i].cost_net %></td> <td><%= order_repair_actions[i].vat %></td> <td><%= order_repair_actions[i].cost_gross %></td> </tr> <% } %> </table> <% } %> |
Tokeny dostępne dla karty gwarancyjnejOprócz poniższych tokenów dostępne są również wszystkie z listy dla szablonu wydruku wydania naprawy. |
|
Token | Jakie dane zostaną użyte w jego miejscu? |
components: | [lista] wszystkie dołączone z magazynu podzespoły, obiekty zawierające:
Przykładowy kod, umożliwiający wyświetlenie wszystkich pól: <% if (components.length > 0) { %> <table class="table table-striped"> <% for(var i=0; i<components.length; i++) { %> <tr> <td><%= components[i].name %></td> <td><%= components[i].sale_date %></td> <td><%= components[i].warranty_period %></td> <td><%= components[i].serial %></td> </tr> <% } %> </table> <% } %> |
components_price_net | Sumaryczna cena netto podzespołów, sformatowana |
components_price_gross | Sumaryczna cena brutto podzespołów, sformatowana |
components_price_net_n | Sumaryczna cena netto podzespołów, liczba zmiennoprzecinkowa |
components_price_gross_n | Sumaryczna cena brutto podzespołów, liczba zmiennoprzecinkowa |
Tokeny dostępne wyłącznie dla protokołu przekazania sprzętu do serwisu zewnętrznego |
|
Token | Jakie dane zostaną użyte w jego miejscu? |
delegation_supplier_name | Nazwa serwisu, do którego została oddelegowana naprawa |
delegation_supplier_address | Adres serwisu, do którego została oddelegowana naprawa |
delegation_supplier_phone | Numer telefonu serwisu, do którego została oddelegowana naprawa |
delegation_rma | Numer naprawy w zewnętrznym serwisie. Numer wpisujesz w formularzu delegacji naprawy. |
delegation_remarks | Uwagi dla zewnętrznego serwisu. Uwagi wpisujesz w formularzu delegacji naprawy. |
delegation_date | Data przekazania sprzętu (zazwyczaj data wydrukowania protokołu) |
Tokeny dostępne wyłącznie maila z informacją o rejestracji konta klienta przez internet |
|
Token | Jakie dane zostaną użyte w jego miejscu? |
activation_url | URL który aktywuje nowe konto. Powinien zostać zaprezentowany jako link gotowy do kliknięcia. Bez aktywacji konta klient nie będzie mógł się zalogować. |
Tokeny dostępne wyłącznie maila z informacją zmianie hasła |
|
password_reset_url | URL do strony na której klient może ustawić zapomniane hasło. Powinien zostać zaprezentowany jako link gotowy do kliknięcia. |
Tokeny dostępne dla wydruków związanych ze zgłoszeniem |
|
Token | Jakie dane zostaną użyte w jego miejscu? |
ticket_number | Numer zgłoszenia, np
|
ticket_employee | Nazwa pracownika realizującego zgłoszenie – jeśli pracownik jest nieprzypisany token token nic nie zwróci |
ticket_employee_phone | Numer telefonu do pracownika realizującego zgłoszenie – jeśli pracownik jest nieprzypisany token token nic nie zwróci |
ticket_created_time | Data utworzenia zgłoszenia |
ticket_scheduled_from | Data oczekiwanego rozpoczęcia pracy nad zgłoszeniem |
ticket_scheduled_to | Data oczekiwanego zamknięcia zgłoszenia |
ticket_started_on | Data rzeczywistego rozpoczęcia pracy nad zgłoszeniem |
ticket_finished_at | Data rzeczywistego zakończenia pracy nad zgłoszeniem |
ticket_issue | Opis problemu |
ticket_category_name | Nazwa kategorii do której przyporządkowano zgłoszenie |
ticket_address | Adres realizacji zgłoszenia – może być pusty, jeśli wybrano dowolny adres – pojawi się wówczas w tokenieticket_address_remarks . |
ticket_address_remarks | Adres realizacji zgłoszenia podany odręcznie. |
ticket_actions |
[lista] Akcje podjęte dla zgłoszenia. Każdy z elementów zawiera następujace pola
Przykładowy sposób renderowania listy czynności: <% for(var i=0; i<ticket_actions.length; i++) { %> <tr> <td><%= ticket_actions[i].employee %></td> <td><%= ticket_actions[i].remarks %></td> </tr> <% } %> |
Tokeny dostępne dla wydruków związanych z wypożyczeniem urządzenia |
|
Token | Jakie dane zostaną użyte w jego miejscu? |
device_name | Nazwa ogólna wypożyczonego urządzenia, producent, model |
device_serial | Numer seryjny wypożyczonego urządzenia |
device_lease_from | Data (z godziną, sformatowana) rozpoczęcia wypożyczenia |
device_lease_to | Data (z godziną, sformatowana) zadeklarowanego zwrotu urządzenia |
device_lease_rental_cost_gross | Wyliczony na podstawie cennika i zadeklarowanego czasu wypożyczenia koszt brutto, lub określony indywidualnie całkowity koszt wypożyczenia |
device_lease_rental_cost_net | Jak wyżej, netto |
device_lease_deposit | Wpłacona kaucja. Może być puste jeśli kaucji nie wpłacono. |
device_lease_customer_signature | URL do pliku z podpisem elektronicznym klienta, powinno zostać użyte jako źródło obrazka, zazwyczaj:
<img src="<%= device_lease_customer_signature %>" /> |