Konfiguracja drukarek, Definicje wydruków

Drukowanie etykiet w aplikacjach Comarch WMS realizowane jest przez usługę Comarch WMS Service.
Uwaga
Używane drukarki muszą zostać zainstalowane w systemie Windows, na komputerze, na którym została uruchomiona usługa.

1. Dodawanie drukarek w systemie

Drukarki lokalne, tzn. podłączone do komputera, widoczne są dla wszystkich użytkowników i nie wymagają żadnych dodatkowych operacji, natomiast drukarki sieciowe, są instalowane w systemie tylko dla konkretnego użytkownika i wymagają ich instalacji dla konta, na którym uruchamiana jest usługa Comarch WMS Service. Domyślnie usługa uruchamiana jest na Lokalne konto systemowe i drukarka musi zostać dodana dla tego konta. Proces dodawania drukarki udostępnionej przebiega dwuetapowo. Najpierw dodajemy drukarkę standardowo do systemu. Następnie uruchamiamy aplikacje „PrinterManager” z katalogu, w którym została zainstalowana aplikacja Comarch WMS Magazynier. W oknie aplikacji prezentowane są drukarki sieciowe, dodane dla aktualnie zalogowanego użytkownika. Na liście zaznaczamy drukarki, które mają zostać dodane dla Lokalnego konta systemowego, a następnie klikamy na przycisk „Dodaj/Usuń”. Aplikacja pozwala także na usunięcie wcześniej dodanej drukarki, poprzez odznaczenie jej na liście i naciśnięcia przycisku „Dodaj/Usuń”.

2. Konfiguracja drukarek

W menu „Drukarki” istnieje możliwość zdefiniowania drukarki dostępnej w systemie (Rys. poniżej). Określamy tutaj:
  • Nazwa – nazwa drukarki,
  • Drukarka – należy wybrać drukarkę etykiet z listy drukarek, dostępnych dla komputera, na którym uruchomiona jest usługa synchronizacji Comarch WMS Service,
  • Typ drukarki – należy wybrać typ drukarki (atramentowa/etykiet),
  • Dostępność – należy wybrać magazyn lub magazyny, dla których ma być dostępna ta drukarka.
uz_rys28  

3. Obsługiwane drukarki

Comarch WMS wspiera obecnie wydruki na drukarkach obsługujących protokoły Direct Protocol (DP), Datamax Programmer’s Language (DPL) oraz Zebra Programming Language (ZPL). Nie ma możliwości wykorzystania standardowych drukarek atramentowych/laserowych oraz drukarek zapisujących wydruki do plików do wydruku etykiet. Renderowanie wydruków etykiet jest realizowane przez samą drukarkę, a nie poprzez aplikację na komputerze jak przy zwykłych drukarkach, przez co nie ma możliwości podglądu wydruku przed jego wydrukowaniem. Przykładowe modele drukarek etykiet testowane z aplikacją Comarch WMS:
  • Intermec PD43 (protokół DP),
  • Datamax H-Class H-4310 (protokół DPL),
  • Zebra ZT220 (protokół ZPL).
 

4. Budowa definicji wydruków

Definicje wydruków dla etykiet znajdują się w katalogu „Labels” w katalogu, w którym został zainstalowany Comarch WMS Magazynier. Każda definicja znajduje się w oddzielnym katalogu. Wewnątrz znajduje się plik report.xml. Zbudowany jest on z dwóch głównym sekcji: DataCommand oraz Definition. Sekcja DataCommand definiuje źródło danych, jakie zostanie wykorzystane podczas pobierania danych dla wydruku. Parametr Type może przyjmować jedną z dwóch wartości: StoredProcedure – jeżeli jako źródło danych wykorzystywana jest procedura składowana lub Text – jeżeli jako źródło danych wykorzystywane jest zapytanie SQL. Do źródła danych przekazywane są parametry zależne od kontekstu wydruku oraz jego typu. Dokładny spis parametrów przedstawia poniższa tabela.
Typ etykiety Wydruk z poziomu Parametry Opis
Etykieta partii towaru Pozycja dokumentu @PositionId Id pozycji dokumentu
Położenie @LotId Id partii towaru
@LotId Id partii towaru
Etykieta jednostki logistycznej Pozycja dokumentu @PositionId Id pozycji dokumentu
Etykieta położenia Pozycja dokumentu @PositionId Id pozycji dokumentu
Położenie @WarehouseId Id magazynu
@LocalizationId Id położenia
@IsSingleInstance Parametr mówi nam o tym, czy wydruk ma zostać wykonany w kontekście danego położenia, czy jego położeń podrzędnych.

4.1. Sekcja Definition

Sekcja Definition zawiera definicje samego wydruku tj. jego rozmiar, zawartość oraz wygląd. W tej sekcji możemy wykorzystać dane zwrócone przez źródło danych zwrócone przez zapytanie z sekcji DataCommand. Sekcja Definition podzielona jest na 3 podsekcje: Header – kod z tej sekcji będzie wysłany tylko raz na początku wydruku, Page – kod z tej sekcji będzie wysłany do drukarki raz dla każdej etykiety, Footer – kod z tej sekcji będzie wysłany raz na końcu wydruku. Rozmiar etykiety definiujemy poprzez parametr PageWidth oraz PageHeight. Parametr Language mówi o tym, dla jakiego protokołu zdefiniowany jest dana definicja. Dla Direct Protocol oraz Zebra Programming Language podajemy w tym miejscu DP, natomiast dla Datamax Programmer’s Language podajemy DPL.  

4.2. Wykorzystanie danych w sekcji Definition

Dane zwrócone przez źródło danych zdefiniowane w sekcji DataCommand mogą składać się z wielu wyników, ale tylko pierwszy z nich może zawierać wiele rekordów. Każdy z rekordów zostanie przetworzony na jedną etykietę (w zdefiniowanej liczbie kopii). Dane z pierwszego wyniku pobieramy poprzez nazwę kolumny otoczoną przez podwójne nawiasy klamrowe np. {{nazwa_kolumny}}. Dane z pierwszych rekordów pozostałych wyników możemy pobrać analogicznie, poprzedzając nazwę kolumny numerem wyniku i dwukropkiem np. {{1:nazwa_kolumny}}, aby pobrać dane z pierwszego dodatkowego wyniku. W sekcji możemy wykorzystać funkcje, przetwarzające dane dla wydruku oraz pozwalające na pozycjonowanie elementów wydruku bazując na zdefiniowanym rozmiarze etykiety. Nazwa każdej funkcji zaczyna się od znaku: @, po którym występuje jej nazwa oraz argumenty objęte w nawiasy okrągłe. Funkcje niezależne od protokołu drukarki:
    • @comment(comment) – funkcja pozwala wstawić komentarz do kodu wydruku.
    • @replace-chars(value,src,dest) – pozwala na zamianę serii znaków w danych na inne. value - Łańcuch znaków do przetworzenia src - Znaki źródłowe dest - Znaki docelowe
Przykład
@replace-chars(Warehouse,xyz,XYZ) Zamienia znaki x,y i z na X,Y i Z w kolumnie Warehouse
  • @strip-polish(value) - Zamienia polskie znaki diakrytyczne na ich odpowiedniki bez ogonków.
  • @char(number) – Zwraca znak o podanym kodzie.
  • @format(value, format) – Formatuje ciąg znaków, format może być dowolnym, poprawnym formatem .NET.
  • @dpi(value) - Ustawia DPI dla wydruku. Funkcja wykorzystywana w sekcji Header.
</ br> Funkcje specyficzne dla protokołu DPL (Datamax Programmer’s Language):
  • @num-of-pages() – Zwraca liczbę kopii w formacie 4 znaków z zerami wiodącymi.
  • @image(image-name[,width[,height]]) – Przesyła obrazek do drukarki i wstawia jego nazwę w miejscu wywołania. Jeżeli dany obrazek wykorzystany jest kilkukrotnie, wysyłany jest tylko raz. Funkcja posiada opcjonalne parametry określające rozmiar obrazka.
  • @module(value) – Ustawia moduł, do którego będą przesyłane grafiki (obrazki). Domyślna wartość to C.
  • @width(value[,size]) – Zwraca wartość bazując na szerokości strony. Argument: size określa długość pola (domyślnie 4).
Przykład
@width(0.1) - odpowiada 10% szerokości @width(20%) - odpowiada 20% szerokości @width(50mm) @width(2in)
  • @height(value[,size]) – Analogicznie jak @width lecz bazuje na wysokości strony.
  • @h-center(bazeSize,sizePerChar,value[,size]) – Zwraca pozycję od lewego brzegu strony, tak aby obiekt był wyśrodkowany w poziomie. Pozwala na wyśrodkowanie kodu kreskowego. baseSize - stała szerokość bazowa sizePerChar - o ile powiększa się szerokość obiektu po dodaniu jednego znaku do value value - wartość np. kodu kreskowego size - szerokość pola, domyślnie 4
  • @v-center – Analogicznie jak @h-center tylko w pionie.
Funkcje specyficzne dla protokołu DP (Direct Protocol)
    • @width(value) – Wielkość bazująca na szerokości. Wartość w punktach bazująca na DPI.
Przykład
@width(0.1) - odpowiada 10% szerokości @width(20%) - odpowiada 20% szerokości @width(50mm) @width(2in)
  • @height(value) – Analogicznie jak @width, ale bazuje na wysokości.
  • @image(image-name[,width[,height,[,posX,posY[,anchor-point]]]]) – Wysyła grafikę (obrazek) do drukarki przy użycia protokołu PRBUF. image-name - nazwa obrazka width – szerokość height – wysokość posX - pozycja w poziomie posY - pozycja w pionie anchor-point - punkt zaczepienia
  • @num-of-pages() – Zwraca liczbę stron.

Wydruk etykiet

Funkcjonalność wydruku etykiet jest domyślnie wyłączona po zainstalowaniu aplikacji Comarch WMS Zarządzanie. Aby umożliwić korzystanie z funkcji wydruku etykiet (partii towarów, jednostek logistycznych, położeń) należy z poziomu menu Ustawienia/Ogólne zaznaczyć parametr Obsługa wydruków (Rys. poniżej).

1. Wydruki standardowe

Po instalacji Comarch WMS Magazynier w katalogu „Labels” domyślnie możemy znaleźć definicje dla wszystkich typów wydruków dla wspieranych protokołów.
Typ etykiety Miejsce wydruku Protokół Nazwa definicji
Etykieta partii towaru Pozycja dokumentu DP ArticleLotBig_Code128_DP
DPL ArticleLotBig_Code128_DPL
Położenie DP ArticleLot_Code128_DP
DPL ArticleLot_Code128_DPL
Etykieta jednostki logistycznej Pozycja dokumentu DP LogisticUnit_Code128_DP
DPL LogisticUnit_Code128_DPL
ZPL LogisticUnitForSourceDocument_ZPL
ZPL PositionLogisticUnit_Code128_ZPL
Etykieta położenia Pozycja dokumentu DP LocalizationBig_Code128_DP
DPL LocalizationBig_Code128_DPL
Położenie DP Localization_Code128_DP
DPL Localization_Code128_DPL
ZPL Localization_Code128_ZPL
Wydruk wielu etykiet jednostek logistycznych Menu główne DP Barcode_Code128_DP
DPL Barcode_Code128_DPL
Nagłówek dokumentu ZPL LogsticUnitArticles_ZPL
Dodatkowo dostępne są także wydruki:
  • ImageTest – przykład etykiety, na którym użyto grafikę.
  • SizeTest – wydruk pozwala na test ustawień rozmiaru etykiety.

2. Konfiguracja wydruków etykiet

W menu konfiguracji etykiet możliwe jest skonfigurowanie wydruków dla poszczególnych etykiet:
    • Etykiety towarów – po wejściu w tę opcję zostanie wyświetlone okno (Rys. poniżej), na którym prezentowana jest lista zdefiniowanych etykiet partii towaru. Na kaflu etykiety prezentowana jest jej nazwa oraz grupa towarowa, dla którego dostępna będzie etykieta. Jeżeli dana etykieta przypisana jest tylko do jednego kontrahenta, jego nazwa będzie prezentowana na kaflu pod nazwą etykiety. Przyciski po prawej stronie kafla pozwalają na edycję oraz usunięcie zdefiniowanej etykiety. Ikona plusa w prawym górnym rogu pozwala na dodanie nowej etykiety.
druk_rys5 W oknie edycji etykiety towaru (Rys. poniżej) dostępne są następujące opcje:
      • Nazwa – nazwa etykiety,
      • Definicja – definicja wydruku, odpowiednia dla danego typu etykiety, miejsca wydruku etykiety oraz drukarki,
      • Liczba egzemplarzy – domyślna liczba kopii drukowanych etykiet,
      • Miejsce wydruku – miejsca aplikacji, w którym ten wydruk będzie dostępny,
      • Drukarki – drukarki, na których będzie możliwy dany wydruk,
      • Operatorzy – operatorzy, którzy będą mieli możliwość wykonania danego wydruku. Jeżeli zostanie wybrana opcja „Zakazani”, wydruk będą mogli wykonać wszyscy operatorzy poza wskazanymi,
      • Towary –towary oraz grupy towarów, dla których będzie możliwość wykonania wydruku. Jeżeli zostanie wybrana opcja „Zakazani”, wydruk będzie możliwy dla wszystkich towarów oraz grup towarowych poza wybranymi,
      • Odbiorcy – kontrahenci, dla których wydruk danej etykiety będzie dostępny. Jeżeli zostanie wybrana opcja „Zakazani”, wydruk będzie możliwy dla wszystkich odbiorców poza wybranymi.
druk_rys6
    • Etykiety jednostek logistycznych – lista etykiet jednostek logistycznych (Rys. poniżej). Na kaflu etykiety, w przypadku gdy dana etykieta powiązana jest tylko z jednym typem nośnika, prezentowana jest dodatkowo nazwa typu jednostki logistycznej.
druk_rys7 W oknie edycji etykiety jednostki logistycznej (Rys. poniżej) dostępne są następujące opcje:
      • Nazwa – nazwa etykiety,
      • Definicja – definicja wydruku odpowiednia dla danego typu etykiety, miejsca wydruku etykiety oraz drukarki,
      • Liczba egzemplarzy – domyślna liczba kopii drukowanych etykiet,
      • Miejsce wydruku – miejsca aplikacji, w którym ten wydruk będzie dostępny,
      • Drukarki – drukarki, na których będzie możliwy dany wydruk,
      • Operatorzy – operatorzy, którzy będą mieli możliwość wykonania danego wydruku. Jeżeli zostanie wybrana opcja „Zakazani”, wydruk będą mogli wykonać wszyscy operatorzy poza wskazanymi,
      • Jednostki logistyczne – należy wybrać wcześniej zdefiniowaną jednostkę, dla której dostępna będzie dana etykieta,
      • Odbiorcy – kontrahenci, dla których wydruk danej etykiety będzie dostępny. Jeżeli zostanie wybrana opcja „Zakazani”, wydruk będzie możliwy dla wszystkich odbiorców poza wybranymi. druk_rys8
    • Etykiety położeń – lista etykiet położeń (Rys. poniżej). Jeżeli etykieta położeń przypisana jest tylko dla jednego magazynu, będzie on prezentowany na kaflu.
druk_rys9 W oknie edycji etykiet położeń (Rys. poniżej), dostępne są następujące opcje:
      • Nazwa – nazwa etykiety,
      • Definicja – definicja wydruku odpowiednia dla danego typu etykiety, miejsca wydruku etykiety oraz drukarki,
      • Liczba egzemplarzy – domyślna liczba kopii drukowanych etykiet,
      • Miejsce wydruku – miejsca aplikacji, w którym ten wydruk będzie dostępny,
      • Drukarki – drukarki, na których będzie możliwy dany wydruk,
      • Operatorzy – operatorzy, którzy będą mieli możliwość wykonania danego wydruku. Jeżeli zostanie wybrana opcja „Zakazani”, wydruk będą mogli wykonać wszyscy operatorzy poza wskazanymi,
      • Magazyny – magazyny, dla których dana etykieta będzie dostępna.
druk_rys10
    • Etykieta wielu jednostek logistycznych - lista etykiet dla wielu jednostek logistycznych (Rys. poniżej).
druk_rys11 W oknie edycji wielu etykiet jednostek logistycznych dostępne są następujące opcje:
      • Nazwa – nazwa etykiety,
      • Definicja –definicja wydruku odpowiednia dla danego typu etykiety, miejsca wydruku etykiety oraz drukarki,
      • Liczba egzemplarzy – domyślna liczba kopii drukowanych etykiet,
      • Miejsce wydruku – miejsca aplikacji, w którym ten wydruk będzie dostępny,
      • Drukarki –drukarki, na których będzie możliwy dany wydruk,
      • Operatorzy –operatorzy, którzy będą mieli możliwość wykonania danego wydruku. Jeżeli zostanie wybrana opcja „Zakazani”, wydruk będą mogli wykonać wszyscy operatorzy poza wskazanymi,
      • Jednostki logistyczne – należy wybrać wcześniej zdefiniowaną jednostkę, dla której dostępna będzie dana etykieta.
druk_rys12  

3. Wydruk etykiet dla położeń na magazynie

Istnieje możliwość wydrukowania etykiet dla położeń magazynu. Na widoku położeń, w dowolnym miejscu struktury, klikamy na ikonę z kodem kreskowym (Rys. poniżej). druk_rys2 W kolejnym oknie należy wybrać etykietę, którą chcemy wydrukować oraz drukarkę, na której mają zostać wydrukowane etykiety (Rys. poniżej). Po naciśnięciu przycisku Drukuj, polecenie wydruku zostanie wysłane do usługi Comarch WMS Service. Jeżeli w danym kontekście, dostępna jest tylko jedna etykieta oraz jedna drukarka, zostanie ona wybrana automatycznie. druk_rys3 Wydrukowane zostaną etykiety, dla wszystkich położeń najniższego poziomu, które są podległe względem wybranego położenia. Istnieje także możliwość wydrukowania etykiety położenia na wyższym poziome, w tym celu należy wejść w edycje danego elementu struktury klikając na przycisk: druk_iko1, a następnie na przycisk druk_iko2. W obu przypadkach, drukowana jest domyślna liczba kopii każdej etykiety, zgodnie z ustawieniem dla danej etykiety.

4. Przykłady standardowych wydruków etykiet

Poniżej zostały przedstawione przykłady standardowych wydruków etykiet dostępnych w Comarch WMS.   Wydruk etykiety partii towaru z poziomu menu na skróty -> towary:
ArticleBarcode_Code128_DP - z poziomu karty towaru
ArticleBarcode_Code128_DP
  Wydruk etykiety jednostki logistycznej z menu głównego:
Barcode_Code128_DP - z menu głównego
Barcode_Code128_DP
  Wydruk etykiety położenia z poziomu menu na skróty -> położenia:
Localization_Code128_DP - Z karty towaru
Localization_Code128_DP
    Wydruk etykiety partii towaru z poziomu menu na skróty -> położenia:
ArticleLot_Code128_DP
  Wydruk etykiety partii towaru z pozycji dokumentu:
ArticleLotBig_Code128_DP - z poziomu realizacji pozycji
ArticleLotBig_Code128_DP
  Wydruk etykiety położenia z pozycji dokumentu:
LocalizationBig_Code128_DP - z poziomu pozycji dokumentu
LocalizationBig_Code128_DP
  Wydruk etykiety jednostki logistycznej z pozycji dokumentu:
LogisticUnit_Code128_DP - z poziomu jednostki logistycznej
LogisticUnit_Code128_DP
  Wydruk etykiety z użytą grafiką z pozycji dokumentu:
ImageTest_DP - z poziomu realizacji pozycji
ImageTest_DP
 

Wydruki w WMS Magazynier

W aplikacji Comarch WMS istnieje funkcjonalność wydruku etykiet. Operator z poziomu kolektora może w trakcie realizacji dokumentu lub w innym miejscu programu, uruchomić funkcję wydruku aby wydrukować etykietę potrzebną w określonej sytuacji. Standardowo w aplikacji dostępne są 3 rodzaje etykiet:
  • Etykieta partii towaru
  • Etykieta logistyczna
  • Etykieta położenia
Drukowanie własnych etykiet ułatwi klientom zarządzanie magazynami, etykiety położeń usprawnią znacznie proces inwentaryzacji, etykiety dla partii towarów oraz jednostek logistycznych będzie można wykorzystywać w łańcuchu dostaw jako tak zwane etykiety logistyczne.

1. Miejsca wydruków w aplikacji

W aplikacji Comarch WMS Magazynier istnieje możliwość wydruku etykiet z poziomu:
  • Lista zasobów towaru – z listy zasobów towaru istnieje dostęp do wydruku etykiety partii towaru oraz do wydruku etykiety położenia. Jeśli żaden z zasobów nie leży na innym położeniu niż nieokreślone, nie ma możliwości wydruku etykiety położenia. Źródłem danych dla wydruku etykiet są odfiltrowane elementy występujące na liście,druk_rys18
  • Podgląd pozycji na zrealizowanej dyspozycji – po zrealizowaniu pozycji i zatwierdzeniu dokumentu istnieje możliwość wydrukowania do pozycji etykiety partii towaru, a jeśli towar na zrealizowanej pozycji znajdował się na jednostce logistycznej można wydrukować etykietę jednostki logistycznej,druk_rys19
  • Karta jednostki logistycznej – dostępna z menu „na skróty” - przycisk [Jednostki logistyczne], po zeskanowaniu kodu nośnika w Menu głównym lub na liście położeń,druk_rys20
  • Podczas realizacji dyspozycji – podczas realizacji pozycji dokumentu istnieje możliwość wydruku zarówno w obowiązkowym kroku procesu, jak i opcjonalnie po kliknięciu przycisku [Dodatkowe],druk_rys21druk_rys22
Dla dokumentu ZWM wystawionego z poziomu kolektora jak i pochodzącego z systemu ERP dostępne są wydruki:
  • Wydruk etykiety partii towaru występujący po kroku z ilością,
  • Z poziomu opcji dodatkowe:
    • Wydruk etykiety jednostki logistycznej o ile wybrano towar znajdujący się na takiej jednostce (opcja dostępna od kroku z wyborem artykułu),
Dla dokumentu AWD wystawionego z poziomu kolektora jak i pochodzącego z systemu ERP dostępne są wydruki:
  • Wydruk etykiety położenia występujący po kroku z wyborem położenia,
  • Z poziomu opcji dodatkowe:
    • Wydruk etykiety partii towaru (opcja dostępna od kroku z wyborem położenia),
    • Wydruk etykiety jednostki logistycznej o ile wybrano towar znajdujący się na takiej jednostce (opcja dostępna od kroku z wyborem artykułu),
Dla dokumentu MP dostępne są wydruki:
  • Wydruk etykiety położenia po kroku z wyborem położenia docelowego,
  • Z poziomu opcji dodatkowe:
    • Wydruk etykiety partii towaru (dostępne od kroku położenia docelowego),
    • Wydruk etykiety jednostki logistycznej o ile wybrano towar znajdujący się na takiej jednostce (dostępne od kroku położenia docelowego).
 

2. Wydruki etykiet z rejestracjami nośników dla dyspozycji magazynowych

Istnieje możliwość wydrukowania etykiet jednostek logistycznych z poziomu aplikacji Comarch WMS Magazynier jeszcze przed przystąpieniem do realizacji danej dyspozycji. Wywołując odpowiednie polecenie w aplikacji, pracownik magazynu będzie mógł z poziomu kolektora wydrukować potrzebną ilość nowych etykiet np. 20 nowych etykiet dla palet, które będzie stopniowo wykorzystywał w danym dniu podczas tworzenia nowych jednostek logistycznych. Funkcjonalność usprawnieni pracę magazynierów, którzy będą mogli wydrukować potrzebne etykiety, np. na cały dzień przed rozpoczęciem pracy, a nie każdorazowo podczas realizacji danej dyspozycji. Kody nośników generowane są w oparciu o generator kodów EAN – umożliwiono wykorzystanie go również podczas dodawania nowej etykiety z poziomu aplikacji Comarch WMS Zarządzanie. W tym celu, z poziomu menu głównego aplikacji należy przejść do menu "na skróty" i wybrać „Wydruk etykiet jednostek logistycznych”, co przedstawia rysunek poniżej. druk_rys23 Następnie należy wybrać typ jednostki logistycznej i w kolejnym kroku podać ilość etykiet, jaka ma zostać wydrukowana. druk_rys24 druk_rys25 Kolejnym krokiem jest wybór wariantu etykiety logistycznej, przykładowo wydruk etykiety europalety oraz w następnym kroku wybór drukarki i uruchomienie drukowania za pomocą przycisku Drukuj. druk_rys26 druk_rys27  

3. Parametry odnośnie wydruków

Istnieje możliwość określenia dostępności procesu wydruku określonego jako opcjonalny przy pomocy parametru AfterTask, gdzie należy wpisać nazwę procesu od którego proces wydruku ma być dostępny. Jeśli wydruk etykiety jest obowiązkowy, to w zależności od parametru ReportTaskRealizationMode określonego w parametrach procesu, kliknięcie strzałki w prawo definiuje poniższe zachowania:
  • Wartość 0 – krok wymagany, konieczność wyboru etykiety logistycznej i wykonania wydruku,
  • Wartość 1 – krok opcjonalny, po kliknięciu strzałki operator zostanie zapytany czy na pewno chce pominąć wydruk etykiety,
  • Wartość 2 – krok opcjonalny, kliknięcie strzałki powoduje przeskoczenie kroku wydruku bez informacji o pominięciu wydruku etykiety.
Kolejny krok to krok w którym określone są parametry wykonania wydruku tzn.
  • Wybór drukarki z listy dostępnych drukarek,
  • Ilość egzemplarzy - standardowo pobierana z definicji wydruku, możliwość jej nadpisania poprzez parametr NumberOfCopies przekazywany w parametrach procesu,
  • Tryb wydruku – odroczony lub natychmiastowy – pobierany z definicji wydruku, możliwość nadpisania tej wartości poprzez parametr ReportMode (0 – natychmiastowy, 1 – odroczony),
  • Dodatkowo z poziomu argumentów przekazywanych do wydruku można zablokować możliwość zmiany ilości kopii przez operatora (parametr NumberOfPagesReadOnly – przyjmujący wartości true i false) oraz możliwości zmiany trybu wydruku (parametr ChangeModeAllowed – przyjmujący wartości true i false).
druk_rys29 O ile parametr ReportTaskRealizationMode ma wartość różną od 0 to możliwe jest całkowite pominięcie wydruku na kroku z ustawieniami wydruku. Kliknięcie przycisku drukuj powoduje wysłanie wydruku do usługi drukowania i przejście do następnego kroku procesu lub zamknięcie procesu drukowania w przypadku uruchomienia funkcji drukowania z innych miejsc systemu. druk_rys30  

Wydruki dokumentów magazynowych

1. Konfiguracja wydruków dokumentów magazynowych

Aby skonfigurować obsługę wydruków dokumentów magazynowych należy w pierwszej kolejności aktywować tę opcję w Comarch WMS Zarządzanie, w menu Ustawienia, kafel Ogólne. druk_rys13 Po zaznaczeniu tej opcji w ustawieniach pojawi się dodatkowe okno, w którym możliwe jest wybranie opcji „Zapisuj kopię wydruku do PDF” oraz skonfigurowanie ścieżki zapisu dokumentu (dana opcja nie obsługuje wydruków etykiet). druk_rys14 Zaznaczenie opcji „Obsługa wydruków” skutkuje również pojawieniem się dodatkowego kafla – „Konfiguracja wydruków” w menu Ustawienia. Po wybraniu tego kafla użytkownik może konfigurować/dodawać drukarki, wydruki etykiet oraz wydruki standardowe. Konfiguracja wydruków dokumentów odbywa się oddzielnie dla każdego rodzaju dokumentów:
  • Arkusza inwentaryzacji,
  • Etykiety położeń A4,
  • Odczytu inwentaryzacji,
  • Przesunięcia,
  • Przyjęcia,
  • Wydania.
Aby skonfigurować nowy wydruk należy wejść w żądany dokument poprzez naciśnięcie ikony klucza oraz wybrać ikonę druk_iko3. Zostaną wyświetlone 3 okna do konfiguracji: Ogólne, Drukarki oraz Dostępność (Rys. poniżej). druk_rys16 Ogólne:
  • Nazwa – nazwa wydruku,
  • Definicja – wybór definicji wydruku,
  • Liczba egzemplarzy – liczba drukowanych egzemplarzy dokumentu,
  • Wydruk z poziomu – miejsce inicjowania wydruku.
Dostępność – określa dostępność konfigurowanego wydruku dla poszczególnych:
  • Operatorów: przypisani/zakazani, wszyscy/określeni,
  • Magazynów: wszystkie/określone,
  • Jednostek logistycznych – wszystkie/określone:
    • Wymagaj dowolnego – wydruk dostępny jest dla dokumentów, na których występuje dowolny typ jednostki logistycznej z określonych w konfiguracji wydruku;
    • Wymagaj wszystkich – wydruk dostępny jest dla dokumentów, na których pojawiają się wszystkie typy jednostek logistycznych, jakie zostały określone dla danego typu wydruku;
  • Towarów: przypisane/zakazane, pojedyncze towary/towary z określonej grupy:
    • Wymagaj dowolnego (towar przypisany) – wydruk dostępny jest dla dokumentów, na których występuje co najmniej jeden towar przypisany z określonej grupy;
    • Wymagaj wszystkich (towar przypisany) – wydruk dostępny dla dokumentów, na których znajdują się wszystkie przypisane w konfiguracji towary/grupy towarów;
    • Wymagaj dowolnego (towar zakazany) – wydruk niedostępny dla dokumentów zawierających towar/grupę towarów zakazanych;
  • Odbiorcy: przypisani/zakazani, wszyscy/określeni.
Drukarki – wybór drukarki.
Uwaga
Więcej informacji na temat definicji wydruków dokumentów magazynowych znajduje się w artykule Konfiguracja drukarek etykiet
   

2. Wydruki dokumentów

Po prawidłowym skonfigurowaniu ustawień wydruków w Comarch WMS Zarządzanie możliwe jest drukowanie dokumentów z poziomu Comarch WMS Magazynier. Istnieje możliwość drukowania:
  • Dokumentu tuż po zakończeniu jego realizacji: po wybraniu przycisku „Zakończ” na kolektorze wyświetli się komunikat z zapytaniem o wydruk dokumentu,druk_rys31 Na kolejnych ekranach użytkownik wybiera jeden ze skonfigurowanych wcześniej wydruków (jeżeli dla danego dokumentu skonfigurowany jest tylko jeden wydruk, wówczas ekran wyboru zostaje pominięty) oraz drukarkę, która ma zostać wykorzystana do drukowania dokumentu.druk_rys32 Następnie wyświetli się komunikat informujący o przesłaniu określonej liczby egzemplarzy do usługi drukowania.druk_rys33
  • Dowolnego dokumentu z listy dokumentów zrealizowanych – po wybraniu żądanego dokumentu wyświetli się jego nagłówek wraz z pozycjami; drukowanie inicjowane jest przyciskiem „Drukuj dokument”,druk_rys34
  • Zamkniętego odczytu oraz zatwierdzonego arkusza inwentaryzacjidruk_rys35
 

Modyfikacja wydruków dokumentów

Definicje wydruków

Definicje wydruków znajdują się w katalogu Printouts w katalogu instalacyjnym Comarch WMS Magazynier. Każda definicja znajduje się w oddzielnym katalogu, którego nazwa jest jednocześnie nazwą definicji. Wewnątrz katalogu muszą zostać umieszczone co najmniej trzy pliki definiujące źródło danych - Data.xml, układ wydruku - Layout.xml oraz jego wygląd - Styles.xml. Każdy z tych plików musi być poprawnym plikiem xml o określonej nazwie. Dokładna struktura każdego z tych plików została opisana w poszczególnych artykułach: Data.xml, Layout.xml, Styles.xml.

Źródło danych

Źródło danych dla wydruku musi zostać umieszczone w pliku o nazwie Data.xml. Głównym elementem w pliku jest sekcja data wewnątrz której musi się znaleźć dokładnie jeden element setf. Wewnątrz elementu setf musi się znaleźć jeden lub więcej elementów set. Każdy element set reprezentuje jeden zbiór danych (wynik jednego zapytania SQL). Musi on zawierać dwa elementy podrzędne: name - który określa nazwę zbioru oraz query, które definiuje zapytanie SQL na bazie danych systemu ERP XL.
Uwaga
Prezentowane zapytania SQL mogą różnić się w zależności od wersji systemu ERP XL.
  Przykładowy plik Data.xml
Przykład
<?xml version="1.0" encoding="utf-8"?> <data> <setf> <set> <name>DocumentPositions</name> <query> SELECT A.Code, A.Name, I.Quantity, I.RealizedQuantity, A.BasicUnitSymbol, CAST(I.RealizedQuantity * ISNULL(AU.Denominator, 1) / ISNULL(AU.Nominator, 1) as DECIMAL(19,4)) as SecondaryQuantityRealized, ISNULL(AU.UnitSymbol, A.BasicUnitSymbol) as SecondaryUnitSymbol FROM WMS.Items I JOIN WMS.vArticles A ON I.ArticleId = A.Id LEFT JOIN WMS.vArticleUnits AU on AU.ArticleId = I.ArticleId AND AU.UnitId = I.SecondaryUnitId WHERE I.DocumentId = @DocumentId </query> </set> <set> <name>CompanyData</name> <query> SELECT Frm_GidFirma as CompanyUnitId, Frm_Nazwa1 as CompanyFullName, Frm_Ulica as Street, Frm_KodP as ZipCode, Frm_Miasto as [City], Frm_NipPrefiks as NipPrefiks, Frm_NIP as NIP, Frm_telefon1 as Phone, Frm_Email as Email FROM [CDN].[Firma] WHERE Frm_DataArc = 0 </query> </set> </setf> </data>
  Zapytanie może być standardowym zapytaniem SQL lub nazwą procedury składowanej, która zwraca żądany wynik. Aby skorzystać z procedury składowanej do elementu query należy dodać atrybut type z wartością StoredProcedure.
Wskazówka
Przy wykonywaniu zapytań z pliku Data.xml przekazywane są do nich parametry zależne od typu oraz kontekstu wydruku. Jakie parametry przekazywane są do określonego typu wydruku można sprawdzić w tabeli [WMS].[PrintoutsArguments]. W przykładzie powyżej wykorzystany został jeden parametr @DocumentId.

Układ wydruku

Zawartość oraz układ wydruku definiowany jest w pliku Layout.xml. Głównym elementem w pliku jest document. Musi zawierać on co najmniej element body, który zawiera główną część wydruku. Dodatkowo w elemencie document może zostać umieszczony element title oraz wiele elementów header oraz footer. Zawartość elementów body, header oraz footer może zostać skomponowana z innych elementów opisanych poniżej. Elementy te mogą być zagnieżdżane.

Elementy

Wszystkie dostępne elementy, które mogą zostać zastosowane podczas tworzenia układu wydruku zostały opisane poniżej. Opis każdego elementu zawiera następujące sekcje:
  • Zawartość - opisuje jakie elementy podrzędne można umieścić wewnątrz danego elementu.
  • Parametry - opisuje wszystkie dostępne atrybuty jakie można dodać do elementu i co oznaczają.
  • Elementy stylujące - zawiera listę selektorów, które dopasowują dany element w pliku Styles.xml
  • Elementy podrzędne - opcjonalna sekcja opisująca elementy, które mogą wystąpić tylko wewnątrz danego elementu. Dla każdego elementu podrzędnego zachowany jest układ opisu taki sam jak dla głównego elementu.
  • Przykład - zawiera fragment kodu z przykładowym wykorzystanie opisywanego elementu.
 
Nazwa Barcode
Opis Kod kreskowy
Zawartość Wewnątrz elementu barcode umieszczane są dane tekstowe, które mają być przez ten kod zakodowane
Parametry
  • type - określa typ kodu kreskowego. Możliwe wartości: upc-a, upc-e, upc 2 digit ext., upc 5 digit ext., ean-13, jan-13, ean-8, itf-14, codabar, postnet, bookland/isbn, code 11, code 39, code 39 extended, code 39 mod 43, code 93, logmars, msi, interleaved 2 of 5, standard 2 of 5, code 128, code 128-a, code 128-b, code 128-c, telepen, fim, pharmacode
  • height - wysokość bazowa kody kreskowego w px. Wartość domyślna to 50
Elementy stylujące
  • Barcode
Przykład
<barcode type="Code 93"><data set="DocumentHeader" var="EAN" /></barcode>
 
Nazwa  Body
Opis Główna sekcja wydruku
Zawartość Dowolny element nietekstowy.
Parametry Brak
Elementy stylujące
  • Body
Przykład
<?xml version="1.0" encoding="utf-8"?> <document> <title><data set="DocumentHeader" var="NumberString" /></title> <body> [zawartość wydruku] </body> </document>
 
Nazwa Br
Opis Złamanie linii w tekście
Zawartość Element nie może zawierać żadnych elementów
Parametry Brak
Elementy stylujące Brak
Przykład
<p>Tekst<br/> w wielu<br/>liniach</p>
 
Nazwa Data
Opis Element zwracający dane ze źródła danych w postaci tekstowej
Zawartość Element nie może zawierać żadnych elementów
Parametry
  • set - nazwa zestawu danych
  • var - nazwa kolumny
  • index - indeks wiersza ze źródła danych (wartość domyślna 0)
  • format - todo
Elementy stylujące Brak
Przykład
<barcode type="Code 93"><data set="DocumentHeader" var="EAN" /></barcode>
 
Nazwa Footer
Opis Stopka wydruku
Zawartość Dowolny element nietekstowy.
Parametry
  • page - strona wydruku. Jeżeli nie podamy tego parametru to stopka traktowana jest jako stopka główna. Możliwe wartości: first - pierwsza strona, last - ostatnia strona, even - strona parzysta
Elementy stylujące
  • Footer
Przykład
<?xml version="1.0" encoding="utf-8"?> <document> <footer page="last"> <p>Stopka ostatniej strony</p> </footer> <footer> <p class="footer">Strona <pageNumber/> z <numOfPages/></p> </footer> <body> [...]
 
Nazwa Header
Opis Nagłówek wydruku
Zawartość Dowolny element nietekstowy
Parametry
  • page - strona wydruku. Jeżeli nie podamy tego parametru to nagłówek jest traktowany jako nagłówek główny. Możliwe wartości: first - pierwsza strona, even - strona parzysta
Elementy stylujące
  • Header
Przykład
<?xml version="1.0" encoding="utf-8"?> <document> <header> <p>Nagłówek</p> </header> <body> [...]
 
Nazwa Horizontal
Opis Podział na sekcje ułożone poziomo
Zawartość Jeden lub więcej elementów section
Parametry Brak
Elementy stylujące Brak
Elementy podrzędne
  • Section
 
Nazwa Horizontal: Section
Opis Sekcja
Zawartość Dowolne elementy nietekstowe
Parametry
  • weight - waga szerokości kolumny. Wartość domyślna 1.
Elementy stylujące
  • Section
Przykład
<horizontal> <section><p class="sign">Dokument wystawił</p></section> <section weight="0,1"></section> <section><p class="sign">Towar wydał</p></section> <section weight="0,1"></section> <section><p class="sign">Data odbioru</p></section> <section weight="0,1"></section> <section><p class="sign">Towar odebrał</p><p class="footer">Strona <pageNumber/> z <numOfPages/></p></section> </horizontal>
 
Nazwa Hr
Opis Linia pozioma
Zawartość Element nie może zawierać żadnych elementów
Parametry Brak
Elementy stylujące
  • Hr
Przykład
<p>tekst1</p> <hr /> <p>tekst2</p>
 
Nazwa If
Opis Element testowy pozwalający na układ wydruku zależny od dowolnych warunków
Zawartość Element test oraz co najmniej jeden z elementów true i false
Parametry Brak
Elementy stylujące Brak
Elementy podrzędne
  • Test
  • True
  • False
 
Nazwa If: Test
Opis Element zawierający warunek decydujący o tym czy do wydruku zostaną dodane elementy z sekcji true czy false . Warunek może być dowolnym wyrażeniem logicznym zawierającym podstawowe operacje matematyczne, porównania. Może on także zawierać nawiasy.
Zawartość Dowolne elementy tekstowe
Parametry Brak
Elementy stylujące Brak
 
Nazwa If: True
Opis Element zawierający elementy, które zostaną w przypadku kiedy warunek z sekcji test zostanie spełniony.
Zawartość Dowolne elementy, które mogą zostać umieszone w rodzicu elementu test
Parametry Brak
Elementy stylujące Brak
 
Nazwa If: False
Opis Element zawierający elementy, które zostaną w przypadku kiedy warunek z sekcji test nie zostanie spełniony.
Zawartość Dowolne elementy, które mogą zostać umieszone w rodzicu elementu test
Parametry Brak
Elementy stylujące Brak
Przykład
<if> <test><data set="DocumentsPositions" var="Id" /> < 3123</test> <true> <horizontal> <section weight="2"> <p><data set="DocumentsPositions" var="Name" /></p> <p><data set="DocumentsPositions" var="Barcode" /></p> </section> <section weight="3"> <p><data set="DocumentsPositions" var="Name" /></p> <p><data set="DocumentsPositions" var="Barcode" /></p> </section> </horizontal> </true> <false> <p><data set="Header" var="CompanyName" /></p> </false> </if>
 
Nazwa Image
Opis Obraz z bazy lub z dysku.
Zawartość Element nie może zawierać żadnych elementów.
Parametry
  • path - ścieżka do pliku względnie do katalogu głównego definicji wydruku. Jeżeli ustawiamy parametr path pozostałe parametry będą ignorowane.
  • set - Nazwa źródła danych
  • var - Nazwa kolumny w źródle danych
  • index - Indeks wiersza w źródle danych
Elementy stylujące
  • Image
Przykład
<image path="logowms.png" /> <image set="Header" var="Logo" />
 
Nazwa PageNumber
Opis Numer aktualnej strony.
Zawartość Element nie może zawierać żadnych elementów.
Parametry Brak
Elementy stylujące Brak
Przykład
<footer> <p class="footer">Strona <pageNumber/> z <numOfPages/></p> </footer>
 
Nazwa P
Opis Paragraf
Zawartość Dowolny element tekstowy
Parametry Brak
Elementy stylujące P
Przykład
<p class="date">Data wystawienia:&#160;<data set="DocumentHeader" var="DocumentCreationDate" /></p>
 
Nazwa RowNumber
Opis Numer aktualnego wiersza tabeli
Zawartość Element nie może zawierać żadnych elementów
Parametry Brak
Elementy stylujące Brak
Przykład
<table set="DocumentPositions"> <column weight="2" description="Lp." class="number"> <rowNumber /> </column> <column weight="12" description="[Kod] Nazwa towaru"> [<tableData var="Code" />] <tableData var="Name" /> </column> </table>
 
Nazwa StaticTable
Opis Tabela statyczna o ustalonej liczbie kolumn oraz wierszy
Zawartość Element head oraz jeden lub więcej elementów row
Parametry Brak
Elementy stylujące
  • StaticTable
Elementy podrzędne
  • Head
  • Column
  • Row
  • Cell
 
Nazwa StaticTable: Head
Opis Element definiujący nagłówek tabeli.
Zawartość Jeden lub więcej elementów column
Parametry Brak
Elementy stylujące Brak
 
Nazwa StaticTable: Column
Opis Element definiujący pojedynczą kolumnę tabeli.
Zawartość Dowolne elementy nietekstowe
Parametry
  • weight - waga szerokości kolumny. Wartość domyślna 1
Elementy stylujące
  • HeadCell
 
Nazwa StaticTable: Row
Opis Element definiujący pojedyńczy wiersz tabeli
Zawartość Jeden lub więcej elementów cell
Parametry Brak
Elementy stylujące Brak
 
Nazwa StaticTable: Cell
Opis Element definiujący pojedynczą komórkę wiersza tabeli.
Zawartość Dowolne elementy nietekstowe.
Parametry
  • collspan - parametr mówiący o tym ile kolumn ma zajmować dana komórka (parametr pozwalający na scalanie komórek tabeli).
  • rowspan - parametr mówiący o tym ile wierszy ma zajmować dana komórka (parametr pozwalający na scalanie komórek tabeli).
Elementy stylujące
  • Cell
Przykład
<staticTable class="customer"> <head> <column weight="1"><p class="tableHead">Odbiorca</p></column> <column weight="1"><p class="tableHead">Nabywca</p></column> </head> <row> <cell> <p class="customer"><data set="DocumentHeader" var="CustomerName" /><br/> <data set="DocumentHeader" var="Street" /><br/> <data set="DocumentHeader" var="ZipCode" /> <data set="DocumentHeader" var="City" /><br/> NIP: <data set="DocumentHeader" var="Tin" /><br/> </p> </cell> <cell> <p class="customer"><data set="DocumentHeader2" var="CustomerName" /><br/> <data set="DocumentHeader2" var="Street" /><br/> <data set="DocumentHeader2" var="ZipCode" /> <data set="DocumentHeader2" var="City" /><br/> NIP: <data set="DocumentHeader2" var="Tin" /><br/> </p> </cell> </row> <row> <cell collspan="2"> <p>...</p> </cell> </row> </staticTable>
 
Nazwa Table
Opis Tabela dynamiczna o ustalonej liczbie kolumn.
Zawartość Jeden lub więcej elementów column
Parametry
  • split - określa czy tabela może zostać podzielona na kilka stron. Parametr może przyjmować wartość true lub false .
  • set - nazwa zestawu danych.
Elementy stylujące
  • Table
Elementy podrzędne
  • Column
  • TableData
 
Nazwa Table: Column
Opis Element definiujący kolumnę tabeli.
Zawartość Dowolne elementy tekstowe
Parametry
  • description - nagłówek kolumny.
  • weight - waga szerokości kolumny. Wartość domyślna 1
Elementy stylujące
  • DataCell
  • HeadCell
 
Nazwa Table: TableData
Opis Element zwracający wartość tekstową ze zbioru danych bazującą na zbiorze danych tabeli, kolumnie podanej w parametrze var oraz aktualnym wierszu tabeli.
Zawartość Element nie może zawierać żadnych elementów.
Parametry
  • var - nazwa kolumny ze zbioru danych.
Elementy stylujące Brak
Przykład
<table set="DocumentPositions"> <column weight="2" description="Lp." class="number"> <rowNumber /> </column> <column weight="12" description="[Kod] Nazwa towaru"> [<tableData var="Code" />] <tableData var="Name" /> </column> <column weight="4" description="Ilość" class="number"> <tableData var="RealizedQuantity" /> </column> <column weight="4" description="Jm. (podstawowa)"> <tableData var="BasicUnitSymbol" /> </column> <column weight="4" description="Ilość" class="number"> <tableData var="SecondaryQuantityRealized" /> </column> <column weight="4" description="Jm. (pomocnicza)"> <tableData var="SecondaryUnitSymbol" /> </column> </table>
 
Nazwa Title
Opis Tytuł dokumentu używany do nazwania pliku PDF.
Zawartość Dowolny element tekstowy.
Parametry Brak
Elementy stylujące Brak
Przykład
<title><data set="DocumentHeader" var="NumberString" /></title>

Wygląd wydruku

Poniższy dokument składa się z opisu trzech części składających się na wygląd wydruku:
  • Atrybuty zawężające
  • Selektory
  • Reguły
Dostosowanie wygląd wydruku możliwe jest poprzez plik Styles.xml. Głównym elementem pliku jest style, który zawiera elementy określające wygląd poszczególnych elementów wydruku zdefiniowanych w pliku Layout.xml. Jednym z elementów podrzędnych elementu style jest element fonts, który określa wszystkie fonty, które zostaną wykorzystane w wydruku. Może on zawierać, jeden lub więcej elementów font, który definiuje krój, wielkość, wygląd oraz styl fontu.
Przykład
<font name="title" face="Arial" size="20" color="#9fc54c"/>
Atrybuty elementu font to:
  • name - określa nazwę fontu, przez którą możemy się do niego odwołać
  • face - nazwa kroju fontu
  • size - rozmiar w punktach
  • color - kolor
  • style - style fontu. Może zawierać jedną (lub więcej wartości oddzielonych znakiem spacji) z wartości bold, italic, underline.
Wewnątrz elementu fonts powinien znaleźć się także jeden element font z pominiętym atrybutem name. Font ten będzie stosowany jako font domyślny dla wydruku.
Przykład
<fonts> <font face="Trebuchet MS" size="10"/> <font name="title" face="Arial" size="20" color="#9fc54c"/> <font name="header" face="Tahoma" size="8" color="#999999"/> <font name="summary_value" face="Trebuchet MS" size="15" color="#9fc54c" style="bold"/> </fonts>
  Oprócz elementu fonts w pliku Styles.xml mogą znajdować się elementy w schemacie:
<selektor>
<reguła/>
<reguła/>
[...]
</selektor>
Gdzie selektor decyduje o tym, czy podległe mu reguły zostaną zastosowane dla danego elementu. Większość selektorów ma taką samą nazwę jak element, który stylują. Np. w celu ostylowania paragrafu (element p w pliku Layout.xml ) należy zastosować selektor p.  
Przykład
<p> <margin top="5"/> </p>
Powyższy przykład wszystkim paragrafom wydruku ustawi margines górny na 5 punktów. Selektor może wybrać do ostylowania tylko wybrane elementy danego typu. W tym celu do elementu w pliku Layout.xml oraz selektora w pliku Styles.xml należy dodać atrybut class. Selektor wybierze wtedy tylko te elementy, które mają identyczną wartość atrybutu class.  
Przykład
<p> <text font="normal"/> </p> <p class="title"> <text font="title"/> </p>
Powyższy przykład ustawi font wszystkich paragrafów na normal ale te, których atrybut class to title zostanie ustawiony font title. Dokładny opis innych atrybutów selektorów oraz spis reguł stylujących znajduje się w sekcji Wygląd. Lista selektorów oraz reguł, które można zastosować dla danego elementu znajduje się w opisie poszczególnych elementów w sekcji Układ. Reguły z pliku Styles.xml stosowane są od góry do dołu tzn. jeżeli dwa selektory dopasują ten sam element i zawierają one takie same reguły z innymi wartościami to zostanie zastosowana wartość występująca później.

 

Atrybuty zawężające

Opis każdego selektora zawiera listę elementów, które styluje oraz listę reguł, jakie można w nim umieścić. Opis każdej reguły zawiera listę atrybutów jakie można w niej zastosować. Każdy selektor może zostać zawężony poprzez atrybut class. Dodatkowo selektory elementów związane z tabelami mogą zostać zawężone poprzez atrybut index, który może zawierać liczbę całkowitą lub wyrażenie postaci An+B, gdzie A oraz B to liczby całkowite. Selektor taki dopasuje element, jeżeli zgadza się on z indeksem wiersza tabeli (wiersze tabeli numerowane są od 0 z góry na dół). Przykłady:
  • index="0" - dopasuje pierwszy wiersz w tabeli
  • index="first" - dopasuje pierwszy wiersz w tabeli
  • index="last" - dopasuje ostatni wiersz w tabeli
  • index="5" - dopasuje szósty wiersz w tabeli
  • index="2n" - dopasuje parzyste wiersze tabeli tzn. z indeksem równym 0,2,4... czyli wiersze pierwszy, trzeci, piąty...
  • index="3n+1" - dopasuje wiersze z indeksem 1, 4, 7...
  • index="3n+2" - dopasuje wiersze z indeksem 2, 5, 8...
 

Selektory

 
Nazwa Barcode
Opis Selektor dla kodu kreskowego
Elementy stylowane
  • Barcode
Parametry zawężające
  • class
Reguły
  • fit
 
Nazwa Body
Opis Selektor dla głównego elementu wydruku
Elementy stylowane
  • Body
Parametry zawężające
  • class
Reguły
  • page
  • margin
 
Nazwa Cell
Opis Selektor dla komórki w tabeli statycznej
Elementy stylowane
  • Cell
Parametry zawężające
  • class
  • index
Reguły
  • border
  • background
  • text
 
Nazwa DataCell
Opis Selektor dla komórki w tabeli dynamicznej
Elementy stylowane
  • Column
Parametry zawężające
  • class
  • index
Reguły
  • border
  • background
  • text
 
Nazwa Footer
Opis Selektor dla stopki dokumentu
Elementy stylowane
  • Footer
Parametry zawężające
  • class
Reguły
  • margin
  • text
 
Nazwa HeadCell
Opis Selektor dla komórki nagłówka w tabeli dynamicznej
Elementy stylowane
  • Column
Parametry zawężające
  • class
Reguły
  • border
  • background
  • text
 
Nazwa Header
Opis Selektor dla nagłówka dokumentu
Elementy stylowane
  • Header
Parametry zawężające
  • class
Reguły
  • margin
  • text
  • border
  • background
 
Nazwa Hr
Opis Selektor dla linii poziomej
Elementy stylowane
  • Hr
Parametry zawężające
  • class
Reguły
  • border
 
Nazwa Image
Opis Selektor dla obrazka
Elementy stylowane
  • Image
Parametry zawężające
  • class
Reguły
  • fit
 
Nazwa P
Opis Selektor dla paragrafu
Elementy stylowane
  • P
Parametry zawężające
  • class
Reguły
  • margin
  • text
  • border
  • background
 
Nazwa Section
Opis Selektor dla sekcji
Elementy stylowane
  • Section
Parametry zawężające
  • class
Reguły
  • border
  • background
  • text
 
Nazwa StaticTable
Opis Selektor dla tabeli statycznej
Elementy stylowane
  • StaticTable
Parametry zawężające
  • class
Reguły
  • width
  • border
  • background
  • text
 
Nazwa Table
Opis Selektor dla tabeli dynamicznej
Elementy stylowane
  • Table
Parametry zawężające
  • class
Reguły
  • width
  • border
  • background
  • text
 

Reguły

 
Nazwa Background
Opis Reguła określająca tło elementu
Atrybuty
  • color - kolor tła elementu. Może on być w formacie #RRGGBB lub 0xRRGGBB lub 0xAARRGGBB
 
Nazwa Border
Opis Reguła określająca obramowanie elementu
Atrybuty
  • left - szerokość lewego obramowania.
  • right - szerokość prawego obramowania.
  • top - szerokość górnego obramowania.
  • bottom - szerokość dolnego obramowania.
  • color - kolor obramowania elementu. Może on być w formacie #RRGGBB lub 0xRRGGBB lub 0xAARRGGBB
  • borderStyle - styl obramowania. Może przyjmować jedną z wartości: o dashdot o dashdotdot o dashlargegap o dashsmallgap o dot o none o single
Uwagi Szerokość obramowania może być podana w różnych jednostkach m.in.: cm, in, mm, pt. Domyślną jednostką są punkty.
 
Nazwa borderLeft, borderRight, borderTop, borderBottom
Opis Reguły określające poszczególne części obramowania elementu
Atrybuty
  • width - szerokość obramowania
  • color - kolor obramowania
  • borderStyle - styl obramowania
 
Nazwa Fit
Opis Reguła określająca rozmiar elementu
Atrybuty
  • width - szerokość elementu
  • height - wysokość elementu
Uwagi Szerokość i wysokość może być podana w różnych jednostkach m.in.: cm, in, mm, pt. Stylowany element zachowa swoje proporcje przyjmując mniejszy z podanych wymiarów.
 
Nazwa Margin
Opis Reguła określająca marginesy elementu
Atrybuty
  • left - lewy margines
  • right - prawy margines
  • top - górny margines
  • bottom - dolny margines
Uwagi Szerokość marginesu może być podana w różnych jednostkach m.in.: cm, in, mm, pt.
 
Nazwa Text
Opis Reguła określająca styl tekstu
Atrybuty
  • align - wyrównanie tekstu. Przyjmuje jedną z wartości: o right - wyrównanie do prawej o left - wyrównanie do lewej o justify - wyjustowanie tekstu o center - wyśrodkowanie tekstu
  • indent - wcięcie pierwszej linii tekstu.
  • leftIndent - wcięcie tekstu z lewej.
  • rightIndent - wcięcie tekstu z prawej.
  • font - nazwa fontu zdefiniowana wcześniej w sekcji fonts .
  • color - kolor tekstu. Może on być w formacie #RRGGBB lub 0xRRGGBB lub 0xAARRGGBB
 
Nazwa Width
Opis Reguła określająca szerokość elementu
Atrybuty
  • percentage - procentowa szerokość elementu bazująca na szerokości elementu-rodzica

Przykładowa modyfikacja

W przykładzie do standardowego wydruku dokumentu Zlecenie Wydania Magazynowego dodana zostanie kolumna zawierająca informację o wadze brutto danej pozycji.
Standardowy wydruk dokumentu ZWM
  W celu dodania kolumny należy wprowadzić modyfikację w plikach Data.xml oraz Layout.xml. W pliku Data.xml do zapytania SQL zwracającego dane pozycji dokumentu należy dodać kolumnę z informacją o wadze brutto (I.GrossWeight) według przykładu poniżej. Modyfikację oznaczono kolorem żółtym:
<?xml version="1.0" encoding="utf-8"?>
<data> 
<setf>
<set>
<name>DocumentPositions</name>
<query>
SELECT A.Code, A.Name, I.Quantity, I.RealizedQuantity, A.BasicUnitSymbol,
CAST(I.RealizedQuantity * ISNULL(AU.Denominator, 1) / ISNULL(AU.Nominator, 1) as DECIMAL(19,4)) as SecondaryQuantityRealized,
ISNULL(AU.UnitSymbol, A.BasicUnitSymbol) as SecondaryUnitSymbol, I.GrossWeight
FROM WMS.Items I
JOIN WMS.vArticles A ON I.ArticleId = A.Id
LEFT JOIN WMS.vArticleUnits AU on AU.ArticleId = I.ArticleId AND AU.UnitId = I.SecondaryUnitId
WHERE I.DocumentId = @DocumentId
</query>
</set>
...
  Do pliku Layout.xml należy w tabeli z pozycjami natomiast dodać nową kolumnę Waga brutto według następującego przykładu:
...
<table set="DocumentPositions">
<column weight="2" description="Lp." class="number">
<rowNumber />
</column>
<column weight="12" description="[Kod] Nazwa towaru">
[<tableData var="Code" />] <tableData var="Name" />
</column>
<column weight="4" description="Ilość" class="number">
<tableData var="RealizedQuantity" />
</column>
<column weight="4" description="Jm. (podstawowa)">
<tableData var="BasicUnitSymbol" />
</column>
<column weight="4" description="Ilość" class="number">
<tableData var="SecondaryQuantityRealized" />
</column>
<column weight="4" description="Jm. (pomocnicza)">
<tableData var="SecondaryUnitSymbol" />
</column>
<column weight="4" description="Waga brutto">
<tableData var="GrossWeight" />
</column>
</table>
...
  Po wprowadzeniu modyfikacji wydruk dokumentu ZWM powinien wyglądać następująco:
Wydruk dokumenty ZWM po modyfikacji