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.
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
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.
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.
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.
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.
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.
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.
Etykieta wielu jednostek logistycznych - lista etykiet dla wielu jednostek logistycznych (Rys. poniżej).
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.
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).
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.
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: , a następnie na przycisk . 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
Wydruk etykiety jednostki logistycznej z menu głównego:
Barcode_Code128_DP
Wydruk etykiety położenia z poziomu menu na skróty -> położenia:
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
Wydruk etykiety położenia z pozycji dokumentu:
LocalizationBig_Code128_DP
Wydruk etykiety jednostki logistycznej z pozycji dokumentu:
LogisticUnit_Code128_DP
Wydruk etykiety z użytą grafiką z pozycji dokumentu:
ImageTest_DP
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,
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,
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ń,
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],
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.
Następnie należy wybrać typ jednostki logistycznej i w kolejnym kroku podać ilość etykiet, jaka ma zostać wydrukowana.
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.
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).
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.
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.
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).
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ę . Zostaną wyświetlone 3 okna do konfiguracji: Ogólne, Drukarki oraz Dostępność (Rys. poniżej).
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:
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;
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,
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.
Następnie wyświetli się komunikat informujący o przesłaniu określonej liczby egzemplarzy do usługi drukowania.
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”,
Zamkniętego odczytu oraz zatwierdzonego arkusza inwentaryzacji
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 SecondaryUnitSymbolFROM WMS.Items IJOIN WMS.vArticles A ON I.ArticleId = A.IdLEFT JOIN WMS.vArticleUnits AU on AU.ArticleId = I.ArticleId AND AU.UnitId = I.SecondaryUnitIdWHERE I.DocumentId = @DocumentId</query></set><set><name>CompanyData</name><query>SELECT Frm_GidFirma as CompanyUnitId, Frm_Nazwa1as 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 EmailFROM [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
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
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
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.
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.
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.
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.
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.GrossWeightFROM WMS.Items IJOIN WMS.vArticles A ON I.ArticleId = A.IdLEFT JOIN WMS.vArticleUnits AU on AU.ArticleId = I.ArticleId AND AU.UnitId = I.SecondaryUnitIdWHERE 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: