XL040 - Definiowanie i obsługa procesów
Wykorzystanie funkcjonalności: Procesy
W systemie ERP XL wprowadzono mechanizm definiowania i obsługiwania procesów. Umożliwia on zaprogramowanie następujących po sobie czynności (tworzących proces), mających na celu osiągnięcie celu założonego przez Użytkownika. Czynności, jakie będą wykonywane w trakcie procesu, mogą być czynnościami, jakie wynikają z funkcjonalności systemu ERP XL, np. wygenerowanie zamówienia sprzedaży lub też będące „czynnościami zewnętrznymi” - np. wysłanie wiadomości e-mail, albo uruchomienie programu zewnętrznego, po spełnieniu określonego warunku, itp.
Za pomocą procesów możliwe jest również regulowanie obiegu dokumentów, wskazanie osób odpowiedzialnych za realizację wyznaczonych zadań oraz monitoring czynności wykonywanych przez podległych pracowników.
Parametry związane z obsługą procesów znajdują się w Konfiguracja, zakładka: Ogólne/Parametry2.
Definiowanie procesów:
- Włącz obsługę procesów – zaznaczenie parametru spowoduje uruchomienie obsługi procesów. Do momentu tego uruchomienia, procesy mogą być definiowane, jednak nie będą zastosowane.
- Do procesu załączaj log tylko gdy wystąpiły błędy lub ostrzeżenia – Na liście załączników wyświetlone będą automatycznie załączniki typu dziennik, które zawierają loga wygenerowanego podczas wykonywania akcji kluczowej przez XL WORK AUTOMAT w procesach. W logach tych zawarta jest informacja o przyczynach niepowodzenia w wykonywanych akcjach. W przypadku zaznaczenia tego parametru procesy powinny robić wpisy do załączników tylko w przypadku gdy w logu pojawią się błędy lub ostrzeżenia.
- Uwzględnij kontekst operatora przy wykonywaniu zadań – parametr Uwzględniaj kontekst operatora przy wykonywaniu zadań zmienił zasady weryfikacji uprawnień operatorów – ogólnie chodzi o to, żeby Operator nie wykonał akcji w procesie jeśli jest przypisany do innego centrum. Dotyczy to sytuacji, gdy jako opiekuna do zadania przypiszemy nie operatora, tylko centrum np. mamy Centrum 1 i Centrum 2, do obu centrów należy operator OP1. Centrum 1 jest opiekunem akcji: Dodanie dokumentu handlowego, a Centrum 2: Potwierdzenie dokumentu handlowego. Wówczas OP1, pomimo, że należy do obu centrów to nie będzie mógł dodawać dokumentów gdy jest zalogowany w Centrum 2 czy też potwierdzać dokumentów, gdy jest zalogowany do Centrum 1.
Generowanie dokumentów w ramach obsługi procesów
Generowanie dokumentów zamówień, jako realizacja akcji kluczowych
Wprowadzono obsługę dokumentów zamówień:
- zapytań ofertowych sprzedaży/zakupu
- ofert zakupu/sprzedaży
- zamówień sprzedaży/zakupu.
Obsługa ta wyraża się w tym, że w systemie zostały predefiniowane akcje, polegające na wygenerowaniu wymienionych dokumentów. Są to tzw. akcje kluczowe.
w wierszu: Akcja kluczowa.

Generowanie innych dokumentów
Możliwe jest również zdefiniowanie i wykonanie akcji polegającej na wygenerowaniu innych niż wymienione dokumentów. Akcje te nie są jednak predefiniowane w systemie. Z tego względu, Użytkownik musi zdefiniować je samodzielnie. Należy zwrócić uwagę, że zdefiniowanie akcji polegającej na wygenerowaniu dokumentu nie obejmuje każdego dokumentu, jaki występuje w systemie i jest ograniczone do przypadków generowania dokumentów z zamówień sprzedaży i zakupu.
Definiowanie akcji polegającej na generowaniu dokumentów
Aby zdefiniować akcję polegającą na generowaniu dokumentów, należy:
- podczas definiowania procesu polegającego na obsłudze zamówienia sprzedaży/zakupu (więcej w rozdziale: Definiowanie procesu: Obsługa zamówienia zakupu) otworzyć okno: Definicja Akcji.
- W oknie: Definicja Akcji, w wierszu: Akcja kluczowa, wybrać opcję: Generowanie dokumentu z zamówienia sprzedaży (lub zakupu – w zależności od rodzaju zamówienia, dla którego definiowany jest proces). Po wybraniu akcji kluczowej, w oknie: Definicja Akcji, zostanie uaktywniona zakładka: Parametry.

- Na zakładce: Parametry, należy wprowadzić nazwę dokumentu, który ma być wygenerowany, np. w procesie polegającym na obsłudze zamówienia sprzedaży ma zostać wygenerowana z tego zamówienia faktura sprzedaży – w takim przypadku, na zakładce: Parametry, należy wpisać skróconą nazwę dokumentu: FS.

Określenie zadań w definicji procesu
Typy zadań
Zadania predefiniowane
W każdej definicji procesu znajdują się dwa zadania predefiniowane. Są to zadania: START i KONIEC. Nie możliwości modyfikacji tych zadań, ani ich usunięcia z definicji.
Do zadania START, należy przypisać czynność, która spowoduje uruchomienie procesu, natomiast zadanie: KONIEC, jest ostatnim zadaniem każdego procesu i oznacza jego zakończenie.
Zadania definiowane przez Użytkownika
Oprócz zadań predefiniowanych, w definicji procesu znajdą się zadania określone przez Użytkownika. Zadania te stanowią etapy procesu. W ich ramach definiuje się czynności, których wykonanie skutkuje przejściem procesu do następnego zadania (etapu). Liczba zadań możliwych do wprowadzenia w definicji procesu nie jest ograniczona.
Funkcjonowanie akcji kluczowych
Rodzaje akcji kluczowych
Akcje kluczowe to akcje predefiniowane w systemie. Dla każdego procesu definiowanego w systemie możliwe jest przypisanie jednej z następujących akcji kluczowych:
- Zakończenie całego procesu
- Uruchomienie innego procesu
- Wysłanie wiadomości e-mail
- Uruchomienie programu zewnętrznego
- Wykonanie skryptu SQL
- Ponadto, dla definicji procesów związanych z zamówieniami możliwe jest wykonanie innych akcji kluczowych, takich jak: Wygenerowanie dokumentu z zamówienia sprzedaży/zakupu (więcej w rozdziale: Definiowanie akcji polegającej na generowaniu dokumentów), potwierdzenie zamówienia sprzedaży/zakupu, usuwanie zamówienia sprzedaży/zakupu i innych – odpowiednio do rodzaju dokumentu, dla którego definiowany jest proces.
Określanie parametrów dla akcji kluczowych
Dla niektórych akcji konieczne jest wskazanie ich parametrów, np. dla akcji: Wysłanie wiadomości email, konieczne jest podanie w Definicji Akcji adresata wiadomości, jej tematu oraz treści. Parametry te wprowadza się na zakładce: Parametry, uaktywnianej po wybraniu odpowiedniej akcji.
Uruchomienie innego procesu
Ta akcja kluczowa pozwala na przejście do innego procesu zdefiniowanego w ERP XL. W polu Uruchamiany proces wybieramy proces, który ma zostać uruchomiony.

Na zakładce parametry powinny zostać przekazane odpowiednie dane do nowego procesu. Jest to OBITyp i OBINumer właściwe dla nowego procesu. Przykładowo w opisanym przypadku uruchamiany jest proces wysyłający mail z fakturą sprzedaży, dlatego wynik zapytania powinien zwrócić TrN_GIDTyp = 2033 (faktura sprzedaży) oraz jego TrN_GIDNumer.

Wysłanie wiadomości e-mail
Na powyższym rysunku przedstawiono sposób wprowadzania parametrów dla akcji: Wysłanie wiadomości e-mail. Należy zwrócić uwagę na format wprowadzanych danych. Powinny one zostać zapisane zgodnie z poniższym schematem:
- <DO> adres odbiorcy </DO>
- <TEMAT> temat wiadomości </TEMAT>
- <TRESC> Treść wiadomości </TRESC>
- <ZALACZNIK Wydruk=1\> – wydruk domyślny
- <ZALACZNIK Wydruk=1> Zrodlo = 0, Wydruk = 94, Format = 1 </ZALACZNIK> – wskazany wydruk
- <ZALACZNIK Wydruk=1> Zrodlo=0, Wydruk=14, Format=1, FiltrSQL=’Knt_GIDNumer = 144′ </ZALACZNIK> – wskazany wydruk wraz z FiltrSQL
- <ZALACZNIK Wydruk=0> lokalizacja np.(C:\przyklad.jpg) </ZALACZNIK> – plik z dysku
Na zakładce: Parametry, można również wprowadzić zapytanie w języku T-SQL, które umożliwia np. wysłanie wiadomości e-mail, na adres podany na karcie kontrahenta, dla którego wygenerowany został dokument. Aby wykorzystać tę funkcjonalność, należy wykonać następujące czynności:
- W pierwszym znaku wyrażenia (wpisanego w sekcję <DO>, <TEMAT>, lub <TRESC>) interpretowanego przez program, należy wstawić znak: ‘!’, np, <TRESC>!’tutaj_kod’ </TRESC>
- Wśród dostępnych prymitywów są:
- @OBITYP, @OBINUMER – reprezentujące identyfikator procesowanego obiektu
- @PRCTYP, @PRCNUMER – identyfikator pracownika
- @OPENUMER – identyfikator operatora
- @SQL – funkcja wykonująca dowolne zapytanie SQL
- @ADRESEMAILKONTRAHENTA
- @NUMERDOKUMENTU
Generowanie dokumentu z zamówienia zakupu/sprzedaż.
Na zakładce: Parametry, należy wprowadzić skróconą nazwę dokumentu, np. FS, FZ itd. Jeżeli dla jednej akcji: Generowanie dokumentu z zamówienia zakupu, na zakładce: Parametry, zostało wskazanych wiele dokumentów, wtedy domyślnie będzie generowany ten, który został wprowadzony jako pierwszy.
Uruchomienie programu zewnętrznego.
Na zakładce: Parametry, należy wprowadzić nazwę pliku inicjującego odpowiedni program, np. jeżeli ma zostać uruchomiony program MS Word, w Definicji Akcji: Uruchomienie programu zewnętrznego, na zakładce: Parametry, należy wprowadzić tekst: winword.exe.
Jeżeli w procesie chcemy przekazać np. FS do edycji przez aplikację zewnętrzną to można przekazać zmienne procesowanego obiektu.


Wykonanie skryptu SQL.
Na zakładce: Parametry, wprowadza się skrypt, jaki ma zostać wykonany.
Zmiana etapu dokumentu w obiegu.
Na zakładce: Parametry, wprowadza się treść statusu jaki ma mieć dany dokument w obiegu wg Słownika statusów zdefiniowanego w Obiegu dokumentów.

Zastosowanie akcji kluczowych
Akcje kluczowe ułatwiają definiowanie procesów i zapewniają im dużą wszechstronność funkcjonalną. Zdefiniowanie procesu, w trakcie którego wykorzystana będzie akcja kluczowa – Wykonywanie skryptu SQL, umożliwia wywołanie czynności, której nie przewiduje „tradycyjna” – dostępna z poziomu interfejsu, funkcjonalność ERP XL. Z kolei wysłanie wiadomości e – mail, umożliwia np. automatyczne informowanie wskazanej grupy osób (pracowników/kontrahentów) o wykonaniu danej czynności, czy o osiągnięciu przewidzianego celu (więcej w rozdziale: 2.3 Definiowanie procesu: Sprawdzenie wysokości sprzedaży).
Akcje kluczowe przypisane do dokumentów zamówień, usprawniają tok definiowania procesów i automatyzują wykonywanie poszczególnych czynności w ich ramach.
Akcje automatyczne
Dla procesów możliwe jest zdefiniowanie akcji automatycznych, np. wysłanie wiadomości e – mail, uruchomienie programu zewnętrznego, lub wykonanie skryptu SQL, które będą wykonywane przez System. O tym, czy akcja będzie akcją automatyczną decyduje ustawienie jako Opiekuna dla Czynności, w której przewidziano wykonanie akcji automatycznej, Opiekuna automatycznego.
Podmioty odpowiedzialne za realizację procesów
Procesy stwarzają możliwość wyznaczenia osób odpowiedzialnych za realizację poszczególnych czynności. Dzięki temu, poszczególne zadania, odpowiadające czynnościom w ERP XL mogą być przekazywane wybranym pracownikom. Wykonanie czynności (akcji) przez pracownika/operatora powoduje automatyczne przejście procesu do następnego etapu (zadania). Jako odpowiedzialnego za realizację czynności w następnym zadaniu można już wyznaczyć innego pracownika/operatora.
Wyznaczanie Opiekuna odbywa się w oknie: Definicja czynności procesu, na zakładce: Opiekunowie (więcej w rozdziałach: Przypisywanie Opiekunów do Czynności: Potwierdzenie zamówienia Przypisywanie Opiekuna do Czynności: Akcja automatyczna).
XL Work Automat
Okno: XL Work Automat, pozwala określić przedział czasowy, co jaki będą wykonywane akcje automatyczne, zdefiniowane dla aktywnych procesów. Przedział ten określa się na zakładce: Parametry.
Aby uruchomić automat, należy nacisnąć przycisk: . Naciśnięcie przycisku:
, spowoduje natychmiastowe uruchomienie przetwarzania zadań automatycznych.


Przykładowe definicje procesów
Uwagi ogólne
W systemie ERP XL możliwe jest zdefiniowanie procesu, skupionego wokół obiektu, przewidzianego w jego funkcjonalności, jak również procesu, który nie dotyczy żadnego z takich obiektów. Wyboru dokonuje się w oknie: Definicje procesów, w jego lewym panelu, w którym wyświetlone są foldery, skupiające obiekty w ERP XL (zgodnie z podziałem na moduły). Wybór ostatniego folderu: Inne procesy, umożliwia utworzenie definicji procesu, który nie dotyczy obiektu, przewidzianego w funkcjonalności systemu.

Poniżej przedstawiono scenariusze definiowania procesu – zarówno takiego, który dotyczy obiektu w systemie ERP XL (rozdział: 2.2 Definiowanie procesu: Obsługa zamówienia zakupu), jak i takiego, który takiego obiektu nie dotyczy (rozdział: 2.3 Definiowanie procesu: ).
Niezależnie od rodzaju, wszystkie procesy mają cechy wspólne:
- W definicji procesu każde zadanie poza statusem końcowym (KONIEC) musi mieć zdefiniowaną przynajmniej jedną czynność
- Aby możliwe było uruchomienie i obsługa procesu, dla czynności musi być przypisany przynajmniej jeden opiekun
- Aby proces można było uruchomić, musi być on aktywny. Aktywność procesu zależy od spełnienia dwóch warunków:
- zaznaczenia w oknie: Definicja procesu, parametru: Aktywny
- zaznaczenia w konfiguracji, na zakładce: Ogólne/Parametry 1, parametru: Włącz obsługę procesów
- Jeżeli do czynności jest przypisany więcej niż jeden opiekun, wtedy wykonanie akcji przez jednego z opiekunów, powoduje przejście procesu do następnego etapu.
Definiowanie procesu: Obsługa zamówienia zakupu
Planowany przebieg procesu
Poniżej zaprezentowano sposób określenia definicji następującego procesu, dotyczącego obsługi zamówienia zakupu.
Jako pierwsza czynność w procesie, przypisana do etapu: Start (która spowoduje jego uruchomienie), zostanie zdefiniowana: Dodanie zamówienia zakupu. Wykonanie tej czynności spowoduje przejście procesu do następnego etapu: Akceptacja zamówienia (AZ). W etapie AZ zdefiniowane będą dwie czynności: Potwierdzenie zamówienia, lub Odrzucenie zamówienia. Wykonanie jednej z tych czynności spowoduje przejście procesu do następnego etapu:
- jeżeli zamówienie zostanie potwierdzone (przyjęte), wtedy proces przejdzie do etapu: Wysłanie wiadomości e-mail o przyjęciu zamówienia
- jeżeli zamówienie zostanie odrzucone, wtedy proces przejdzie do etapu: KONIEC, który oznacza zakończenie procesu.
W etapie: Akceptacja zamówienia, przewidziano więc dwie sytuacje, a wybór jednej z nich zadecyduje o prowadzeniu procesu jedną z dwóch ścieżek. Jeżeli zamówienie zostanie potwierdzone (przyjęte), wtedy, jak już wspomniano, proces przejdzie do zadania (etapu): Wysłanie wiadomości e-mail o potwierdzeniu zamówienia. W etapie tym, czynnością, która zostanie wykonana, będzie wysłanie wiadomości e-mail. Dla czynności tej, jako opiekun, zostanie przypisany opiekun automatyczny, dzięki czemu czynność ta zostanie wykonana automatycznie, po przejściu procesu właśnie do tego zadania. Kolejnym etapem, po wysłaniu wiadomości e-mail, będzie etap: Generowanie dokumentu handlowego z zamówienia zakupu. Dokumentem tym będzie Faktura zakupu. Wykonanie czynności spowoduje przejście procesu do etapu: Koniec, który oznacza zakończenie procesu.
Przedstawiony proces jest dość uproszczony i służy pokazaniu mechanizmu definiowania i działania procesu. W ramach definicji może zostać ujętych znacznie więcej zadań i czynności. Należy jedynie pamiętać, że o ile do jednego zadania można przypisać wiele czynności, to wykonać można tylko jedną z nich. Przypisanie wielu czynności do jednego zadania jest przydatne, jeśli dla procesu przewidziano różne ścieżki, którymi może podążyć. Wtedy, na etapie danego zadania, wykonując jedną z czynności wybiera się właściwą ścieżkę – w zależności od okoliczności i proces toczy się dalej odpowiednio do przyjętego wyboru (wykonanie jednej z czynności w danym zadaniu, powoduje, że zadanie jest również traktowane jako wykonane i proces przechodzi do następnego etapu).
Poniżej przedstawiony został schemat procesu: Obsługa zamówienia zakupu, w którym wyraźnie widać dwie ścieżki, jakimi może podążyć proces w konsekwencji wykonania jednej z dwóch czynności: Potwierdzenia zamówienia (jego przyjęcia) bądź Odrzucenia zamówienia.

Otworzenie definicji procesu
Szczegóły każdego zdefiniowanego procesu znajdują się w oknie: Definicja procesu. Znajduje się w nim wykreowana przez Użytkownika lista zadań i czynności do wykonania w ramach zadań. Dwa zadania: START i KONIEC, są predefiniowane w systemie i nie ma możliwości ich modyfikacji i usunięcia (więcej w rozdziale: Określenie zadań w definicji procesu). Okno: Definicja procesu, otwiera się z poziomu okna: Definicje procesów.
Aby otworzyć okno definicji procesu: Obsługa zamówienia zakupu, należy:
- otworzyć okno: Definicje procesów, poprzez wybranie w module: Administrator, z menu: Procesy, funkcje: Definicje procesów,
- w lewym panelu okna: Definicje procesów, rozwinąć folder: Zamówienia, a po jego rozwinięciu wybrać gałąź: Zamówienie zakupu.
- Po zaznaczeniu gałęzi: Zamówienie zakupu, należy nacisnąć przycisk: [Dodaj]. Zostanie otworzone okno: Definicja procesu. W oknie należy wprowadzić nazwę procesu: Obsługa zamówienia zakupu, a także można określić priorytet dla procesu. Parametr: Aktywny, decyduje o możliwość uruchomienia procesu (więcej w rozdziale: Uwagi ogólne).

Wyznaczenie zadań w definicji procesu: Obsługa zamówienia zakupu
Aby dodać nowe zadania o definicji procesu, należy:
W otworzonym oknie: Definicja procesu (więcej w rozdziale: Otworzenie definicji procesu), należy nacisnąć przycisk: , rozwijający menu, z którego należy wybrać opcję: Dodaj zadanie.

Zostanie otworzone okno: Definicja zadania procesu.

W oknie należy wskazać kod (skróconą nazwę zadania) i jego pełną nazwę. Aby ułatwić definiowanie procesu, okno można tymczasowo zapisać, używając przycisku: [Zapisz]. W ten sposób można wyznaczyć kolejne zadania. W podanym przykładzie, do definicji procesu, zostały dodane następujące zadania:
- AZ – Akceptacja zamówienia
- WW – Wysłanie wiadomości e-mail o potwierdzeniu zamówienia
- GD – Wygenerowanie dokumentu handlowego z zamówienia
Zdefiniowanie zadań dla procesu stworzyło podstawowe elementy jego konstrukcji. Teraz, dla każdego zadania należy określić czynności jakie będą wykonywane w ramach poszczególnych etapów. Sposób przypisywania czynności do poszczególnych zadań został przedstawiony na przykładzie przypisania czynności do zadania: Akceptacja zamówienia (więcej w rozdziale: Przypisywanie czynności do zadania: Akceptacja zamówienia).
Po ich wprowadzeniu do definicji procesu, wyglądać ona będzie jak na rysunku poniżej.

Po zdefiniowaniu zadań w procesie należy określić dla nich parametry i przypisać czynności, jakie mają zostać wykonane w ich ramach. Kroki te zostały opisane w następnych rozdziałach.
Określenie parametrów zadania: Akceptacja zamówienia
Określenie parametrów dla zadania rozpoczyna się od wprowadzenia jego kodu (czyli skróconej nazwy) i pełnej nazwy zadania (więcej w rozdziale: Wyznaczenie zadań w definicji procesu: Obsługa zamówienia zakupu). W prezentowanym przykładzie, jako pierwsze zdefiniowano zadanie: Akceptacja zamówienia, stąd w pola: kod i Nazwa, wprowadzono odpowiednio wartości: AZ i Akceptacja zamówienia. Ponadto, dla zadania tego (tak jak dla innych zadań) możliwe jest określenie następujących parametrów:
Termin realizacji - dla każdego zadania można określić termin jego realizacji, czyli taki, w jakim ma zostać zrealizowane dane zadanie. Jest on liczony od momentu trafienia zadania do skrzynki pracownika. Termin można określić poprzez wskazanie ilości sekund, minut, godzin, dni, tygodni lub za pomocą warunku SQL. Warunek wprowadza się na zakładce: SQL, uaktywnionej po zaznaczeniu pola: SQL. Warunek ten powinien zwrócić zmienną w formacie timestamp. W prezentowanym przykładzie określono termin realizacji zadania jako 3 dni. Oznacza to, że w ciągu 3 dni od momentu wygenerowania zamówienia ma ono zostać potwierdzone lub odrzucone. Przekroczenie terminu nie uniemożliwia jednak zatwierdzenia lub odrzucenia zamówienia. Określenie terminu ma znaczenie dla monitorowania przebiegu procesu – w trakcie jego obsługi, zadania przeterminowane będą wyświetlane w skrzynce pracownika na czerwono. Dzięki temu zarówno pracownik, jak kierownik będą mieli możliwość kontrolowania terminowości wykonywania zadań.
Data realizacji - proponowana data realizacji zadania. Datę można określić poprzez wskazanie ilości sekund, minut, godzin, dni, tygodni lub za pomocą warunku SQL. Warunek wprowadza się na zakładce: SQL, uaktywnionej po zaznaczeniu pola: SQL. Warunek ten powinien zwrócić zmienną w formacie timestamp. Podobnie, jak w przypadku terminu realizacji zadania, przekroczenie wyznaczonej daty nie blokuje możliwości jego wykonania.
Czas realizacji - czas przewidziany na realizację zadania. Czas można określić poprzez wskazanie ilości sekund, minut, godzin, dni, tygodni lub za pomocą warunku SQL. Warunek wprowadza się na zakładce: SQL, uaktywnionej po zaznaczeniu pola: SQL. Warunek ten powinien zwrócić zmienną w formacie timestamp.
Zarówno data realizacji zadania, jak i czas realizacji są parametrami, które mają służyć Użytkownikowi, poprzez możliwość określania za ich pomocą harmonogramu wykonywania zadań, np. w danej jednostce określa się, że czas przewidziany na wykonanie danego zadania wynosi godzinę, a innego 1 dzień i zgodnie z tym wprowadza się odpowiednie zapisy w definicji zadania procesu.
Warunek wejścia - warunek, jaki musi zostać spełniony, aby nastąpiło wejście do danego statusu. Warunek ten określa się przez wykonanie zadań poprzedzających:
- przynajmniej jedno – jeżeli wykonano przynajmniej jedno zadanie (czynność) poprzedzające (dla którego wynikiem będzie to zadanie),
- wszystkie – aby nastąpiło wejście do zadania, będą musiały zostać wykonane wszystkie zadania poprzedzające (czynności).
Wskazanie tego warunku może się również odbyć za pomocą warunku SQL, wprowadzanego na zakładce: SQL, uaktywnianej po zaznaczeniu w wierszu: Warunek wejścia, parametru: SQL.
W prezentowanej definicji, dla parametru: Warunek wejścia, zaznaczono opcję: Przynajmniej jedno, gdyż etap: Akceptacja zamówienia poprzedzona jest tylko jedną czynnością: Dodanie zamówienia zakupu, przypisaną do zadania: START (więcej w rozdziale: Planowany przebieg procesu).
Po określeniu opisanych parametrów, definicja zadania procesu będzie wyglądała, jak na poniższym rysunku.

Poza wymienionymi parametrami, dla zadania przypisuje się czynność, lub czynności, przewidziane do wykonania w jego ramach. Przypisywanie czynności wymaga ich zdefiniowania, dlatego zostało opisane w rozdziale: Przypisywanie czynności do zadania: Akceptacja zamówienia.
Przypisywanie czynności do zadania: Akceptacja zamówienia
Przypisanie czynności do zadania procesu polega na określeniu działań, jakie mają zostać wykonane, gdy proces przejdzie do tego zadania (etapu) oraz podmiotów odpowiedzialnych (opiekunów) za ich wykonanie. Przypisywanie czynności do zadania odbywa się w oknie: Definicja zadania procesu, na zakładce: Czynności. Do zadania: Akceptacja zamówienia, zostaną przypisane dwie Czynności: Potwierdzenie zamówienia i Odrzucenie zamówienia. Na początek zostaje zdefiniowana Czynność: Potwierdzenie zamówienia.
Przypisanie czynności: Potwierdzenie zamówienia do zadania: Akceptacja Zamówienia
Aby przypisać czynność: Potwierdzenie zamówienia, do zadania: Akceptacja zamówienia, należy:
- W oknie: Definicja zadania procesu (AZ), wybrać zakładkę i nacisnąć przycisk: [Dodaj]. Zostanie otworzone okno: Definicja czynności procesu.

- W oknie: Definicja czynności procesu, znajdują się dwie zakładki: Ogólne i Opiekunowie. Na zakładce: Ogólne, określa się Akcję czyli działanie jakie ma zostać wykonane w ramach czynności oraz Wynik, czyli zadanie, do którego przejdzie proces po wykonaniu Akcji. Przejście procesu do określonego Wyniku może zostać obłożone warunkiem SQL, który wprowadza się w polu: Warunek. Możliwe jest również określenie wielu Wyników dla tej samej Akcji, – wtedy o tym, do którego z nich przejdzie proces po wykonaniu Akcji zadecyduje warunek SQL przypisany do odpowiedniego Wyniku. Natomiast na zakładce: Opiekunowie, określa się podmioty odpowiedzialne za realizację czynności (wykonanie Akcji).
Określenie Akcji dla Czynności: Potwierdzenie zamówienia
Określenie Akcji następuje po naciśnięciu przycisku: . Zostanie otworzone okno: Definicja procesu (Zamówienie zakupu) z zakładką: Akcje.

W otwartym oknie, definiuje się akcję, która będzie wybrana jako Akcja do wykonania w ramach definiowanej Czynności. W tym celu należy nacisnąć przycisk: [Dodaj]. Zostanie otworzone okno: Definicja Akcji.

W oknie: Definicja Akcji, w wierszu Akcja kluczowa, znajduje się rozwijalna lista akcji predefiniowanych w systemie. Uruchamia się ją po naciśnięciu przycisku: . Z listy należy wybrać akcję: Potwierdzenie zamówienia zakupu.

Po wybraniu akcji, jej nazwa zostanie wyświetlona również w polu: Nazwa. Można ją modyfikować.
Akcja: Potwierdzenie zamówienia zakupu, została zdefiniowana, wobec tego należy ją zapisać, naciskając przycisk: [Zapisz]. Zapisana akcja zostanie wprowadzona na listę w oknie: Definicja procesu (Zamówienie zakupu).

Jeżeli akcja została wprowadzona na listę, można ją przypisać do Czynności. Aby to zrobić, należy ją zaznaczyć i nacisnąć przycisk: [Wybierz]. Wybrana akcja zostanie przypisana do Czynności.

Po określeniu Akcji, należy zdefiniować Wynik, czyli zadanie, do którego przejdzie proces po wykonaniu Akcji.
Określenie Wyniku dla Czynności: Potwierdzenie zamówienia
Wynikiem dla czynności będzie jedno ze zdefiniowanych wcześniej zadań. Ponieważ zostały one już określone, wystarczy wybrać jedno z nich. Jeżeli odpowiednie zadanie nie zostałoby zdefiniowane do tego momentu, można je określić również z poziomu okna: Definicja czynności procesu.
Określenie Wyniku Akcji następuje po naciśnięciu w oknie: Definicja czynności procesu, przycisku: . Zostanie otworzone okno: Definicja czynności procesu, z zakładką: Zadania.

W oknie wyświetlone będą zadania, jakie zostały zdefiniowane do tej pory. Jeżeli zadania, które ma być wynikiem, nie ma na tej liście, można je zdefiniować po rozwinięciu za pomocą przycisku: , menu kontekstowego i wybraniu z niego opcji: Dodaj zadanie. Uruchomiony zostanie w ten sposób proces definiowania zadania.
Jeżeli natomiast na liście znajduje się zadanie, które ma być Wynikiem dla Akcji, należy je zaznaczyć i nacisnąć przycisk: . Wybrane zadanie zostanie przypisane do Czynności jako Wynik dla Akcji.
W prezentowanym przykładzie, Wynikiem dla Akcji: Potwierdzenie zamówienia zakupu, ma być zadanie: Wysłanie wiadomości e-mail o potwierdzeniu zamówienia. Zadanie takie znajduje się na liście w oknie: Definicja procesu, zakładka: Zadania (Rys. 25). W tej sytuacji należy je zaznaczyć i nacisnąć przycisk: . Zadanie: Wysłanie wiadomości e-mail o potwierdzeniu zamówienia (WW), zostanie przypisany do Czynności, jako Wynik dla Akcji: Potwierdzenie zamówienia zakupu.

Po określeniu Akcji i wskazaniu Wyniku, należy przypisać osoby odpowiedzialne – tzw. Opiekunów, za wykonanie zadania. Opis przypisywania Opiekunów do czynności znajduje się w rozdziale: Przypisywanie Opiekunów do Czynności.
Przypisywanie Opiekunów do Czynności: Potwierdzenie zamówienia
Przypisywanie Opiekunów do Czynności odbywa się na zakładce: Opiekunowie. Aby przypisać Opiekuna, należy
- w oknie: Definicja czynności procesu, wybrać zakładkę: Opiekunowie,
- na zakładce: Opiekunowie, nacisnąć przycisk, który rozwija menu kontekstowe.

- Z menu kontekstowego, należy wybrać jedną z opcji, która umożliwia wybór Opiekuna:
- ze struktury firmy
- z listy pracowników
- z listy operatorów
- opiekuna automatycznego
- opiekuna ustalonego w procesie
Wybór opcji zadecyduje o tym, jaka lista zostanie otwarta. Z otwartej listy dokonuje się wyboru odpowiedniego podmiotu, który będzie Opiekunem dla definiowanej czynności. W prezentowanym przykładzie Opiekunem zostanie wybrane centrum ze struktury podległościowej. Dzięki temu, wszyscy pracownicy tego centrum będą mogli dokonywać potwierdzenia zamówień. Aby wybrać centrum jako Opiekuna, należy z menu kontekstowego wybrać opcję: Ze struktury firmy. Zostanie otworzone okno: Struktura firmy.

W oknie: Struktura firmy, należy zaznaczyć centrum, mające zostać Opiekunem i nacisnąć przycisk: . Wybrane centrum zostanie wprowadzone na zakładkę: Opiekunowie, w oknie: Definicja czynności procesu.

Jeżeli zostały zdefiniowane: Akcja, Wynik oraz Opiekun, definicję czynności procesu można zapisać, używając przycisku: [Zapisz zmiany]. Po zapisaniu, Czynność zostanie przypisana do zadania: Akceptacja zamówienia (na zakładce: Czynności).

Przypisanie czynności: Odrzucenie zamówienia zakupu
Przypisanie czynności: Odrzucenie zamówienia zakupu, do definicji zadania procesu [AZ] przebiega w podobny sposób, jak w przypadku przypisania czynności: Potwierdzenie zamówienia zakupu. W przypadku czynności: Odrzucenie zamówienia zakupu, zostanie jednak zdefiniowana inna akcja: Odrzucenie zamówienie zakupu, dla której wynikiem będzie status: KONIEC, oznaczający zamknięcie procesu. Sposób definiowania Akcji i Wyniku został opisany w rozdziałach: Określenie Akcji Określenie Wyniku.
Po wskazaniu elementów na Czynności, jej definicja będzie wyglądała jak na rysunku poniżej.

Po zdefiniowaniu Akcji i Wyniku, do Czynności zostanie przypisany Opiekun.
Przypisywanie czynności do innych zadań w procesie
Przypisywanie czynności do innych zadań w definicji procesu przebiega podobnie, jak w przypadku zadania: Akceptacja zamówienia (więcej w rozdziale: Przypisywanie czynności do zadania: Akceptacja zamówienia). Należy zwrócić uwagę na konieczność przypisania przynajmniej jednej czynności do każdego zadania (z wyjątkiem zadania: KONIEC) oraz pamiętać o tym, że do zadania; START ma zostać przypisana czynność, która będzie uruchamiała cały proces. Czynność do tego zadania przypisuje się z poziomu okna: Definicja procesu (Zamówienie zakupu), po jego zaznaczeniu i naciśnięciu przycisku: [Dodaj] lub wybraniu z menu kontekstowego, rozwijanego przyciskiem:
, opcji: Dodaj czynność. Zostanie otworzone okno: Definicja czynności procesu, które należy wypełnić podobnie jak opisano to w rozdziale: Przypisywanie czynności do zadania: Akceptacja zamówienia, podając jako Akcję: Dodanie zamówienia zakupu, a jako Wynik – zadanie: Akceptacja zamówienia.
Po przypisaniu czynności do wszystkich zadań (zgodnie z założeniami definicji procesu opisanymi w rozdziale: Planowany przebieg procesu) definicja procesu: Obsługa zamówienia zakupu, będzie wyglądała jak na poniższym rysunku. W oknie: Definicja procesu, wyświetlone są, w układzie drzewa, zadania i przypisane do nich czynności.

Zapisanie definicji procesu
Jeżeli w definicji procesu: Obsługa zamówienia zakupu, wszystkie zadania zostały już określone i zostały do nich przypisane wszystkie wymagane czynności, można ją zapisać, używając przycisku: [Zapisz zmiany]. Zapisana definicja zostanie umieszczona w oknie: Definicje procesów.

Jak widać na powyższym rysunku, definicja procesu: Obsługa zamówienia zakupu, wyświetlona jest w kolorze szarym. Stało się tak dlatego, że definicji tej nie został nadany status aktywności – nie został zaznaczony parametr: Aktywny, w oknie: Definicja procesu. Do momentu zaznaczenia tego parametru, uruchomienie procesu w oparciu o zapisaną definicję będzie niemożliwe.
Definiowanie procesu: Sprawdzenie wysokości sprzedaży
Planowany przebieg procesu
Poniżej zostanie zaprezentowany sposób definiowania procesu, którego celem będzie wysłanie informacji za pośrednictwem poczty elektronicznej o przekroczeniu określonej wysokości sprzedaży (np. 10000 zł) w danym dniu. Na potrzeby niniejszego dokumentu, nazwa definicji tego procesu zostanie ujęta w skrócie: Sprawdzenie wysokości sprzedaży.
Pierwszą czynnością w tym procesie, przypisaną do zadania: START, będzie: Uruchomienie. Czynność ta będzie wykonywana przez wybranego pracownika i ma na celu jedynie uruchomienie procesu. Po jej wykonaniu, proces przejdzie do zadania: AKTYWNY. Do zadania tego będzie przypisana jedna czynność, w której akcją do wykonania będzie: Akcja automatyczna. W trakcie tej czynności będzie automatycznie wykonywany select, sprawdzający, czy wartość sprzedaży przekroczyła już określony próg (10000 zł) czy też nie. Dla czynności zostaną określone dwa wyniki obłożone warunkami SQL:
Pierwszy – przewidujący sytuację, gdy wartość sprzedaży przekroczy 10000 zł – wtedy Wynikiem będzie zadanie polegające na wysłaniu odpowiedniej wiadomości e-mail,
Drugi – przewidujący sytuację, gdy wartość sprzedaży nie przekroczy 10000 zł – wtedy Wynikiem będzie zadanie: Aktywny, czyli proces wejdzie ponownie w etap sprawdzania wartości sprzedaży.
Z tak zdefiniowanych warunków będzie wynikało, że proces będzie znajdował się etapie sprawdzania wartości sprzedaży, do momentu, gdy wartość ta nie zostanie przekroczona. Po jej przekroczeniu zostanie wysłana odpowiednia wiadomość e-mail.
Jeśli proces przejdzie do następnego etapu: Wysłanie wiadomości e-mail, będzie to oznaczało, że cel procesu w danym dniu został osiągnięty. Proces, po wykonaniu czynności polegającej na wysłaniu wiadomości e-mail przejdzie do zadania: Czekaj. Zadanie to polega na „czekaniu” jedną dobę na ponowne sprawdzenie wysokości sprzedaży w dniu następnym. Stąd też, następnym etapem (Zadaniem), jakie zostanie wykonane (po upływie doby) będzie znów zadanie: Aktywny, który czynność taką (sprawdzenie wartości sprzedaży) będzie uwzględniał.
Należy zwrócić uwagę, że w takiej definicji procesu nie jest wykorzystywane zadanie: KONIEC. Uruchomienie procesu spowoduje, że będzie się on toczył przez kolejne dni automatycznie, bez konieczności ingerencji Użytkownika – codziennie będzie sprawdzana wartość sprzedaży, a po jej przekroczeniu, będzie wysyłana wiadomość e-mail. Aby zamknąć proces, należy go zaznaczyć w oknie: Lista procesów i nacisnąć przycisk: [Zamknij proces].
Poniżej został przedstawiony schemat wykonywania poszczególnych czynności w procesie: Sprawdzenie wysokości sprzedaży.

Otworzenie definicji procesu
Otworzenie definicji procesu następuje w oknie: Definicje procesów. Ponieważ jest to proces bez obiektu, musi on zostać zdefiniowany z poziomu z poziomu folderu: Inne procesy i gałęzi: Proces bez obiektu.
Aby otworzyć definicje procesu: Sprawdzenie wysokości sprzedaży, należy:
w module: Administrator, wybrać z menu: Procesy, opcję: Definicje procesów.
Następnie w lewym panelu okna, rozwinąć folder: Inne procesy. Zostanie wyświetlona gałąź: Proces bez obiektu.

Po zaznaczeniu gałęzi: Proces bez obiektu, należy nacisnąć przycisk: [Dodaj]. W ten sposób zostanie otworzona definicja procesu. W oknie należy wprowadzić nazwę procesu.

Wyznaczenie zadań w procesie
Po otworzeniu definicji procesu: Sprawdzenie wysokości sprzedaży, należy określić zadania czyli etapy tego procesu. W prezentowanym przykładzie – zgodnie z przyjętym założeniem (więcej w rozdziale: Planowany przebieg procesu), zdefiniowane zostaną następujące zadania i czynności:
START – do tego zadania zostanie przypisana czynność: Uruchomienie
AKTYWNY – do tego zadania zostanie przypisana czynność automatyczna, dla której możliwe będą dwa Wyniki (w zależności od tego czy wartość sprzedaży w danym dniu przekroczyła 10000 zł czy też nie).
E – MAIL (wysłanie wiadomości e-mail) – jeżeli wartość sprzedaży w danym dniu przekroczy 10000 zł, wtedy proces przejdzie do zadania: E-MAIL, w którym zostanie wysłana odpowiednia wiadomość e-mail.
CZEKAJ – po wysłaniu wiadomości e-mail, proces w zadaniu: CZEKAJ, będzie „oczekiwał” przez wskazany czas (jedną dobę) na ponowne przejście do zadania: AKTYWNY.
Definiowanie zadań odbywa się w ten sam sposób, jak w przypadku definiowania zadań w procesie: Obsługa zamówienia zakupu (więcej w rozdziale: Wyznaczenie zadań w definicji procesu: Obsługa zamówienia zakupu).
Po wyznaczeniu zadań, definicja procesu: Sprawdzenie wysokości sprzedaży, będzie wyglądać jak poniższym rysunku.

Zdefiniowanie zadania: Czekaj
W zdefiniowaniu zadania: Czekaj, istotne jest określenie terminu jego realizacji. Z przyjętych założeń wynika, że proces w tym zadaniu oczekuje jedną dobę na ponowne uruchomienie skryptów sprawdzających wysokość sprzedaży. W związku z tym, w oknie: Definicja zadania procesu, na zakładce: Ogólne, w polu: Data realizacji, należy wskazać 1 dzień.

Należy pamiętać, że istnieje możliwość większego zoptymalizowania czasu oczekiwania na ponowne uruchomienie sprawdzenia wysokości sprzedaży. W podanym bowiem przykładzie, czas oczekiwania będzie liczony od momentu przekroczenia wysokości sprzedaży w danym dniu. Oznacza to, że jeżeli przekroczenie wysokości sprzedaży jednego dnia nastąpi o godzinie 15.00, to ponowne uruchomienie zapytań SQL, sprawdzających wysokość sprzedaży w dniu następnym, nastąpi również o godzinie 15.00.
Uruchomienie wykonywania skryptów o oznaczonej godzinie, można zdefiniować poprzez warunek SQL. W tym celu, w oknie: Definicja zadania procesu (Czekaj), należy zaznaczyć w wierszu: Data realizacji, pole: SQL i na uaktywnionej zakładce: SQL, wprowadzić odpowiedni warunek.
Przypisanie czynności do zadań
Po wyznaczeniu zadań, należy przypisać do nich czynności. Sposób przypisania czynności do zadań odbywa się tak samo, jak w przypadku przypisywania czynności do zadań definicji procesu: Obsługa zamówienia zakupu (więcej w rozdziale: Przypisywanie czynności do zadania: Akceptacja zamówienia). W niniejszym rozdziale zostanie opisany sposób definiowania czynności: Akcja automatyczna, która zostanie przypisana do zadania: AKTYWNY, który różni się od przedstawionego powyżej.
Zdefiniowanie czynności: Akcja automatyczna
W czynności: Aktywny, zostanie przewidziana akcja, wykonywana automatycznie. Jej Wynik, będzie zależał od tego, czy sprawdzana wartość wysokości sprzedaży przekroczy 10000 zł, czy też nie. Wyniki te zostaną obłożone warunkami SQL.
Otworzenie definicji czynności: Akcja automatyczna
Aby zdefiniować czynność: Akcja automatyczna, należy:
- W oknie definicji procesu: Sprawdzenie wysokości sprzedaży, zaznaczyć zadanie: AKTYWNY
- nacisnąć przycisk: [Dodaj], lub za pomocą przycisku rozwinąć menu kontekstowe i wybrać opcję: Dodaj czynność.

- Zostanie otworzone okno: Definicja czynności procesu.

Przypisanie Akcji do Czynności: Akcja automatyczna
W oknie należy nacisnąć przycisk: . Zostanie otworzone okno: Definicja procesu, z zakładką: Akcje. W oknie tym, należy zdefiniować nową akcję – Akcję automatyczną. Odbywa się to po naciśnięciu przycisku:
[Dodaj]. W otworzonym oknie: Definicja Akcji, w polu: Nazwa, wprowadzić nazwę Akcji – czyli: Akcja automatyczna. Zdefiniowaną Akcję należy zapisać, naciskając przycisk:
[Zapisz].

Akcja automatyczna zostanie wyświetlona na liście akcji w oknie: Definicja procesu. Należy ją teraz zaznaczyć i nacisnąć przycisk: [Wybierz].

W ten sposób, do czynności: Akcja automatyczna, została przypisana Akcja.

Przypisanie Wyników do Czynności: Akcja automatyczna
Należy teraz określić Wyniki dla przypisanej Akcji. Ze względu na charakter Czynności, zostaną zdefiniowane dwa Wyniki – jeden dla sytuacji, gdy wysokość wartości sprzedaży przekroczy 10000 zł, drugi – dla sytuacji, gdy wartość sprzedaży nie przekroczy tej wysokości.
Aby przypisać pierwszy Wynik, należy:
- W oknie: Definicja czynności procesu, nacisnąć przycisk: [Dodaj]. Zostanie otworzone okno: Definicja statusu wynikowego czynności.
- W oknie, należy nacisnąć przycisk: [Wynik]. Zostanie otworzone okno: Definicja procesu, z listą zadań możliwych do wybrania jako Wynik. Ponieważ zadania dla definicji procesu: Sprawdzenie wysokości sprzedaży, zostały uprzednio zdefiniowane (więcej w rozdziale: Wyznaczenie zadań w procesie), na liście należy zaznaczyć zadanie: E-MAIL i nacisnąć przycisk: [Wybierz]. Wybrane zadanie zostanie wprowadzone (jako Wynik do Czynności: Akcja automatyczna), do Definicji statusu wynikowego czynności.

- Po wskazaniu Wyniku, należy określić warunek, pod jakim, po wykonaniu Akcji, proces do niego przejdzie. Warunek ten będzie wyglądał jak na poniższym rysunku.

W ten sposób pierwszy Wynik zostanie zdefiniowany. Należy go zapisać i przystąpić do definiowania drugiego Wyniku, przewidzianego po spełnieniu warunku, gdy wysokość wartości sprzedaży nie przekroczy 10000 zł. Wynikiem tym będzie zadanie: AKTYWNY. Definiowanie odbywa się tak, jak w przypadku pierwszego Wyniku (oczywiście z uwzględnieniem funkcji przewidzianej dla drugiego Wyniku). Po zdefiniowaniu, Wynik: Aktywny, będzie wyglądał jak na poniższym rysunku.

Po zapisaniu definicji statusu wynikowego: AKTYWNY, zostanie on przypisany do Czynności: Akcja automatyczna.
Okno Czynności: Akcja automatyczna, po przypisaniu do niej Wyników: E-MAIL i AKTYWNY, będzie wyglądało jak na poniższym rysunku.

Przypisywanie Opiekuna do Czynności: Akcja automatyczna
Dla zdefiniowanej Czynności: Akcja automatyczna, należy określić Opiekuna. Ponieważ Czynność będzie wykonywana automatycznie, należy wybrać Opiekuna automatycznego.

Definicję czynności procesu należy zapisać. Zostanie ona przypisana do zadania: AKTYWNY.
W podobny sposób definiuje się kolejne czynności dla tej definicji procesu, jednak, ze względu na to, że każda z nich przewiduje jeden Wynik, zostanie on wprowadzony w oknie definicji czynności procesu, w polu: Wynik (po naciśnięciu przycisku: ).
Po przypisaniu wszystkich przewidzianych Czynności do zadań, definicja procesu: Sprawdzenie wysokości sprzedaży, będzie wyglądała jak na poniższym rysunku:

Obsługa procesu
Obsługa procesu polega na jego uruchomieniu i wykonywaniu zadań przewidzianych w jego definicji. Definicja procesu stanowi wzór, według którego może być wykonywana nieograniczona ilość procesów. Obsługa procesów w oparciu o definicję jest możliwa, gdy:
- Odpowiednia definicja procesu ma status: Aktywny (decyduje o tym zaznaczenie parametru: Aktywny, w oknie: Definicji procesu)
- W Systemie włączona jest obsługa procesów (w konfiguracji, na zakładce: Ogólne/Parametry 1, został zaznaczony parametr: Włącz obsługę procesów).
Poniżej przedstawiono obsługę dwóch procesów wykonywanych w oparciu o definicje zaprezentowane w rozdziale: Przykładowe definicje procesów.
Obsługa procesu: Obsługa zamówienia zakupu
Uwagi ogólne
Proces dotyczący obsługi zamówienia zakupu może być uruchamiany i wykonywany z poziomu:
- Skrzynki pracownika
- Obsługiwanego zamówienia (lub listy zamówień).
Obsługa z poziomu skrzynki pracownika polega na tym, że Opiekun, wybiera z listy odpowiedni proces, identyfikowany po nazwie procesu i numerze obiektu (czyli numerze zamówienia) i wykonuje akcję, przez:
wybranie przycisku: [Wykonaj akcję],
lub jeżeli w danym etapie przewidziano wykonanie jednej w wielu czynności:
rozwinięciu menu kontekstowego za pomocą przycisku: , znajdującego się obok ikony
i wybraniu odpowiedniej opcji, oznaczającej wykonanie jednej z czynności.
Rys. 50 Skrzynka pracownika z rozwiniętym menu kontekstowym umożliwiającym wybór czynności do wykonania.
Kilka procesów na jednym obiekcie
Może się zdarzyć, że dla jednego obiektu – np. zamówienia zakupu, zostanie zdefiniowanych klika definicji procesu, przewidujących różne ścieżki obiegu dokumentów. W takiej sytuacji, operując konkretnym zamówieniem, o ile istnieją wspólne punkty tych procesów można wybrać definicję, według której będzie obsługiwany dalej dany obiekt.
Wyboru definicji dokonuje się w oknie: Lista zamówień. Aby wybrać jedną z definicji do obsługi konkretnego zamówienia, należy:
- W oknie: Lista zamówień, wskazać zamówienie, dla którego zostanie wybrana odpowiednia definicja
- Nacisnąć przycisk: [Historia procesu], zostanie otworzone okno: Historia procesu,
- W oknie: Historia procesu, w polu: Proces, za pomocą przycisku: , zostanie rozwinięta lista dostępnych definicji, możliwych do wykorzystania przy obsłudze wybranego zamówienia.

Po wybraniu jednej z definicji, uruchomienie przycisku: [Wykonaj akcję] spowoduje wykonanie akcji, przewidzianej dla czynności będącej elementem tej definicji. Przycisk:
, rozwija menu kontekstowe z możliwymi opcjami wykonania akcji.

Uruchomienie procesu (zadanie START)
Proces rozpoczyna się w momencie, gdy podmiot przypisany jako Opiekun do Czynności: Dodanie zamówienia zakupu, wygeneruje zamówienie zakupu. Wygenerowanie zamówienia zakupu jest możliwe:
- Z poziomu listy zamówień – poprzez otworzenie okna: Lista zamówień i naciśnięciu przycisku: [Dodaj],
- Z poziomu Skrzynki pracownika (czyli podmiotu, będącego Opiekunem) – po otworzeniu okna: Lista zamówień i naciśnięciu przycisku: [Dodaj proces]. Zostanie wtedy otworzone okno: Procesy do uruchomienia, z której należy wybrać odpowiedni proces i nacisnąć przycisk: [Wybierz]. Po zapisaniu okna: Proces, które otwiera się w trakcie uruchamiania procesu, zostanie wygenerowane zamówienie zakupu.
Wygenerowane zamówienie zostanie zapisane, a proces przechodzi do następnego etapu: Akceptacja zamówienia.
Proces na etapie: Akceptacja zamówienia
W tym etapie, proces pojawi się skrzynkach pracowników, którzy zostali przypisani jako Opiekunowie do czynności: Akceptacja zamówienia zakupu lub Odrzucenie zamówienia zakupu. Jeżeli ten sam podmiot jest Opiekunem do jednej i drugiej czynności, wtedy z poziomu otwartego zamówienia, lub swojej skrzynki pracownika może dokonać albo przyjęcia zamówienia, albo jego odrzucenia. Wykonanie jednej z tych czynności powoduje przejście procesu do następnego etapu:
- w przypadku zatwierdzenia i przyjęcia zamówienia będzie to Wysłanie wiadomości o potwierdzeniu zamówienia (WW)
- w przypadku Potwierdzenia i odrzucenia zamówienia, będzie to etap KONIEC, który spowoduje zakończenie procesu.
Proces na etapie: Wysłanie wiadomości o potwierdzeniu zamówienia
Opiekunem na etapie: Wysłanie wiadomości o potwierdzeniu zamówienia, jest Opiekun automatyczny. Oznacza to, że czynność polegająca na wysłaniu do wskazanych podmiotów wiadomości za pośrednictwem poczty elektronicznej o pozytywnym potwierdzeniu zamówienia zostanie wykonana automatycznie, po przejściu procesu do tego etapu. Należy jednak pamiętać o odpowiednim zdefiniowaniu parametrów w konfiguracji, na zakładce: Ogólne/Parametry 2, dotyczące ustawień SMTP.
Po wysłaniu wiadomości e-mail, proces przejdzie automatycznie do następnego etapu: Wygenerowanie dokumentu handlowego z zamówienia, czyli znajdzie się w skrzynce tych pracowników, którzy zostali wybrani jako Opiekunowie do czynności polegającej na wygenerowaniu dokumentu handlowego z potwierdzonego zamówienia (GD).
Proces na etapie: Wygenerowanie dokumentu handlowego z zamówienia
Opiekunowie mogą wykonać czynność generowania dokumentu handlowego:
- Z poziomu listy zamówień (poprzez wybranie zamówienia, a następnie funkcji polegającej na generowaniu dokumentu handlowego z zamówienia).
- Z poziomu swojej skrzynki pracownika – poprzez zaznaczenie odpowiedniego procesu (identyfikowanego po nazwie procesu i numerze obiektu) i naciśnięciu przycisku: [Wykonaj akcję].
Po wykonaniu akcji, proces przejdzie do statusu KONIEC, który oznacza jego zakończenie.
Proces na etapie: KONIEC
Proces przechodzi automatycznie do statusu wynikowego: KONIEC:
- po wykonaniu czynności: Odrzucenie zamówienia, w etapie: Akceptacja zamówienia,
- po wykonaniu czynności: Wygenerowanie dokumentu handlowego, w etapie: Wygenerowanie dokumentu handlowego z zamówienia zakupu.
Status: KONIEC, oznacza zakończenie procesu. Na tym etapie nie jest wykonywana żadna czynność.
Obsługa procesu: Sprawdzenie wysokości sprzedaży
Uwagi ogólne
Proces: Sprawdzenie wysokości sprzedaży, w przeciwieństwie do procesu: Obsługa zamówienia zakupu, nie dotyczy obiektu w ERP XL. W związku z tym, jego obsługa możliwa jest tylko z poziomu okna: Skrzynka pracownika.
Uruchomienie procesu (zadanie: START)
Uruchomienie procesu następuje z poziomu skrzynka pracownika, który jest opiekunem Czynności: Uruchomienie, przypisanej do zadania: START. Odbywa się on po naciśnięciu w oknie: Skrzynka pracownika, przycisku: [Dodaj proces], który spowoduje otworzenie okna: Procesy do uruchomienia. W oknie, należy wybrać proces: Sprawdzenie wysokości sprzedaży i nacisnąć przycisk:
[Wybierz].

Po wybraniu procesu, zostanie otworzone okno: Proces, w którym podane są podstawowe dane uruchamianego procesu.

Po zapisaniu okna (przycisk: ) proces zostanie uruchomiony i przejdzie do następnego etapu: AKTYWNY.
Proces w etapie: AKTYWNY
Czynności w zadaniu: AKTYWNY, wykonywane są przez Opiekuna automatycznego. Polegają one na wykonywaniu zapytań SQL, sprawdzających czy wartość sprzedaży w danym dniu przekroczyła 10000 zł. Jeżeli warunek zostanie spełniony, wtedy proces przechodzi do etapu: E-MAIL, polegającego na wysłaniu wiadomości e-mail o przekroczeniu wartości sprzedaży 10000 zł. Jeżeli warunek nie zostanie spełniony, proces będzie dalej „wracał” do zadania: AKTYWNY, czyli zapytanie będzie dalej ponawiane.
Proces w etapie: E-MAIL
Etap: E-MAIL, polega na wysłaniu wiadomości e-mail o przekroczeniu wartości sprzedaży 10000 zł. Opiekunem dla tej czynności jest również Opiekun automatyczny, co oznacza, że zostanie ona wykonana automatycznie, po przejściu procesu do tego zadania. Treść wiadomości, jaka zostanie wysłana określona jest w definicji procesu, w oknie: Definicja Akcji, na zakładce: Parametry (więcej informacji o definiowaniu akcji: Wysłanie wiadomości e – mail znajduje się w rozdziale: Określanie parametrów dla akcji kluczowych. Po wysłaniu wiadomości, osiągnięty zostanie cel procesu. Przejdzie on zatem do etapu (zadania) CZEKAJ, w którym proces będzie „oczekiwał” 1 dobę.
Proces w etapie: Czekaj
W etapie: Czekaj, wykonywana jest akcja automatyczna, polegająca na wstrzymaniu na jedną dobę sprawdzania, czy wysokość sprzedaży została przekroczona ponad 10000 zł. Również dla tej czynności został ustalony Opiekun automatyczny, a czas oczekiwania wynika z ustawienia w oknie: Definicja zadania procesu (Czekaj), na zakładce: Ogólne, parametru: Data realizacji, na 1 dzień (więcej informacji w rozdziale: Zdefiniowanie zadania: Czekaj). Po upływie jednego dnia, proces ponownie przejdzie do zadania: AKTYWNY, w którym nastąpi sprawdzanie wysokości sprzedaży (więcej informacji w rozdziale: Proces w etapie: AKTYWNY).
Nowe funkcjonalności w procesach
Obsługa BST
Lista obiektów Systemu obsługiwana w procesach została uzupełniona o dokument Bilansu Stanu Towarów BST. Dla obiektu tego udostępnione zostały akcje kluczowe odpowiadające operacjom dokonywanym na tym dokumencie:

- Dodanie bilansu stanu towarów – Akcja odpowiada operacji dodania dokumentu z interfejsu, czyli dodany zostanie dokument BST z domyślnymi wartościami tj. Grupa towarów, dostawca, magazyn, zakres planowany.
- Potwierdzenie bilansu stanu towarów – Akcja umożliwia zatwierdzenie bilansu analogicznie do operacji zatwierdzenia z poziomu interfejsu.
- Zamknięcie bilansu stanu towarów – Akcja odpowiada operacji zamknięcia dokumentu z poziomu interfejsu. (Można zamknąć tylko zatwierdzone BST)
- Anulowanie bilansu stanu towarów – Akcja odpowiada operacji anulowania dokumentu z poziomu interfejsu
- Przelicz bilans stanu towarów – Akcja odpowiada operacji przeliczenia BST, według parametrów ustawionych na BST.
- Drukowanie bilansu stanu towarów – Akcja analogiczna do akcji drukowania innych dokumentów
- Generowanie dokumentu z bilansu stanu towarów – Akcja ma zakładkę Parametry. Na zakładce parametry można określić, jaki dokument powinien być generowany z BST.
Możliwe parametry:
- – ZZ – zamówienie zakupu
- – ZW – zamówienie wewnętrzne
- – MMW – przesunięcie MMW
- – ZP – zlecenie produkcyjne
- – ZK – zlecenie kompletacji
- – SAD
Usuwanie bilansu stanu towarów
Akcja powinna odpowiadać operacji usuwania dokumentu z poziomu interfejsu
Oprócz akcji wynikających ze specyfiki dokumentu BST, udostępnione zostały akcje ogólne, podobnie jak dla innych obiektów Systemu:
- Uruchomienie innego procesu
- Uruchomienie programu zewnętrznego
- Wykonanie skryptu SQL
- Wysłanie wiadomości e-mail
- Zakończenie całego procesu
Podczas konwersji bazy, czy też tworzenia nowej bazy System dodaje predefiniowany proces przeliczania dokumentu BST, aby z niego skorzystać, wystarczy zaznaczyć na nim parametr „Aktywny”. Po włączeniu w Systemie obsługi procesów i uruchomieniu XLWorkAutomat Użytkownik może ustawić na konkretnym dokumencie BST zadanie wykonania automatycznego przeliczenia BST w określonym czasie. Aby tego dokonać wystarczy zaznaczyć parametr „Przelicz”, ustalić żądany czas aktualizacji i zlecić jej wykonanie poprzez uruchomienie opcji „przelicz bilans”.

Obsługa Planu Produkcji
Lista obiektów Systemu obsługiwana w procesach została uzupełniona o dokument Planu Produkcji. Dla obiektu tego udostępnione zostały akcje kluczowe odpowiadające operacjom dokonywanym na tym dokumencie:

- Dodanie planu produkcji – Akcja powinna odpowiadać akcji dodania dokumentu Plany produkcji z poziomu interfejsu z danymi wejściowymi, jak przy dodawaniu nowego dokumentu z ręki.
- Zatwierdzenie planu produkcji – Akcja powinna odpowiadać zatwierdzaniu dokumentu, dokonywanego z poziomu interfejsu.
- Zamknięcie planu produkcji – Akcja powinna odpowiadać zamknięciu dokumentu planu produkcji z poziomu interfejsu.
- Usunięcie planu produkcji – Akcja powinna odpowiadać usunięciu planu produkcji z poziomu interfejsu.
- Przeliczenie planu produkcji – Akcja odpowiada operacji przeliczenia Planu produkcji, według parametrów ustawionych na planie
- Drukowanie dokumentu – Akcja analogiczna do akcji drukowania innych dokumentów.
- Generowanie dokumentu na materiały – Dla akcji udostępniono zakładkę: Parametry, określa się tam jaki dokument ma być generowany z Planu produkcji: ZZ, ZW, ZP czy MMW.
- Generowanie dokumentu na produkty – Dla akcji udostępniono zakładkę: Parametry, określa się tam jaki dokument ma być generowany z Planu produkcji: ZZ, ZW, ZP czy MMW
Dla obiektu Planu produkcji dostępne będą również akcje wspólne dla wszystkich obiektów:
- Uruchomienie innego procesu
- Uruchomienie programu zewnętrznego
- Wykonanie skryptu SQL
- Wysłanie wiadomości e-mail
- Zakończenie całego procesu
Podczas konwersji bazy, czy też tworzenia nowej bazy System dodaje predefiniowany proces przeliczania dokumentu Planu produkcji, aby z niego skorzystać, wystarczy zaznaczyć na nim parametr „Aktywny”. Po włączeniu w Systemie obsługi procesów i uruchomieniu XLWorkAutomat Użytkownik może ustawić na konkretnym dokumencie Planu produkcji zadanie wykonania automatycznego przeliczenia planu w określonym czasie. Aby tego dokonać wystarczy zaznaczyć parametr „Przelicz”, ustalić żądany czas aktualizacji i zlecić jej wykonanie poprzez uruchomienie opcji „Przeliczenie Plan produkcji”.

Obsługa wiązania zasobów z rezerwacjami
Została udostępniona akcja kluczowa w procesach: „Rezerwowanie zasobów”, dostępna dla procesu podpiętego do gałęzi procesów bez obiektu. Akcja ta będzie wyzwalała operację przypisywania zasobów do aktywnych, ważnych rezerwacji sprzedażowych.
Podczas kreacji i konwersji bazy zostanie dodany predefiniowany proces „Przypisywanie zasobów do rezerwacji” z użyciem ww. akcji, który wystarczy aktywować (zaznaczyć checkbox „Aktywny”) oraz uruchomić (wykonać 1-wsze zadanie), aby uzyskać funkcjonalność automatycznego wiązania zasobów za pomocą procesu. Operatorem „wykonującym” zadanie Rezerwowania zasobów w ww. predefiniowanym procesie jest automat, a efekt „cykliczności” i powtarzalności ww. operacji uzyskany został na nim poprzez przypisanie jako czynności „wynikowej” dla Rezerwowania zasobów tej samej czynności. Zmiany częstotliwości powtarzania akcji Użytkownik może dokonać poprzez zmianę parametrów zadania (edycja definicji zadania, sekcja Data realizacji, Termin realizacji).

Akcję kluczową Rezerwowanie zasobów można wykorzystywać także w innych procesach. Parametrami funkcji definiowanymi na zakładce Parametry są:
- Typ dokumentu źródłowego (dokumentu tworzącego rezerwację np. ZS, ZW)
- Magazyn (wartość „Wszystkie”, lub kolejne kody magazynu rezerwacji, dla których ma być wykonana operacja)
- Centrum (wartość Wszystkie, lub kolejne nazwy centrum – właścicieli rezerwacji, dla których ma być wykonana operacja)

Procesy w Produkcji
W systemie Comarch ERP XL udostępniono funkcjonalność procesów dla wybranych operacji wykonywanych w module Produkcja. Dla grupy obiektów: Produkcja, dla istniejących już obiektów: Zlecenie produkcyjne i Harmonogram projektu dodane zostały nowe predefiniowane akcje kluczowe:

- Dodanie zlecenia produkcyjnego – Akcja odpowiada dodaniu, z poziomu interfejsu systemu,
- Planowanie zlecenia produkcyjnego – Akcja odpowiada planowaniu ZP z poziomu interfejsu systemu. Wymaga ona dodatkowej parametryzacji. Na zakładce: Parametry, należy podać odpowiedni numer, oznaczający wybrany sposób planowania zleceń.

- 1024 – Planowanie zgrubne
- 1280 – Planowanie uproszczone
- 1536 – Planowanie szczegółowe
- 1792 – Planowanie wszystkie zasoby
- 2048 – Planowanie całościowe zgrubne
- 2304 – Planowanie całościowe uproszczone
- 2560 – Planowanie całościowe szczegółowe
- 2816 – Planowanie całościowe wszystkie zasoby
Przeplanowanie zlecenia produkcyjnego – Akcja odpowiada przeplanowaniu ZP z poziomu interfejsu systemu. Akcja ta wymaga dodatkowej parametryzacji. Na zakładce: Parametry, na definicji tej akcji, należy podać odpowiedni numer, oznaczający wybrany sposób przeplanowania zleceń:
- 4096 – Przeplanowanie zgrubne
- 4352 – Przeplanowywanie uproszczone
- 4608 – Przeplanowywanie szczegółowe
- 4864 – Przeplanowywanie wszystkie zasoby
- 8192 – Przeplanowywanie konfliktów zgrubne
- 8448 – Przeplanowywanie konfliktów uproszczone
- 8704 – Przeplanowywanie konfliktów szczegółowe
- 8960 – Przeplanowywanie konfliktów wszystkie zasoby
- 16896 – Dobierz zasoby szczegółowo
- 17152 – Dobierz zasoby wszystkie
Aktualizacja rezerwacji - Akcja odpowiada dostępnej z poziomu interfejsu systemu, funkcji: Aktualizacja rezerwacji
Realizacja zlecenia produkcyjnego - Akcja odpowiada wykonaniu realizacji całego dokumentu ZP.
Generowanie dokumentów ze zlecenia produkcyjnego - za pomocą akcji możliwe będzie automatyczne wygenerowanie z ZP dokumentów RW lub PW. Akcja wymaga dodatkowej parametryzacji. Na zakładce: Parametry, na definicji tej akcji, należy podać, jaki rodzaj dokumentu ma być generowany za pomocą akcji:
- RW 1 – parametr będzie oznaczał generowanie RW z planu
- RW – parametr będzie oznaczał generowanie RW
- PW – parametr będzie oznaczał generowanie PW
Rozliczanie zlecenia produkcyjnego - Akcja odpowiada funkcji: Rozliczanie zleceń, dostępnej z poziomu interfejsu systemu.
Zamykanie zlecenia produkcyjnego - Akcja odpowiada zamknięciu ZP z poziomu interfejsu systemu. Akcja ta wymaga dodatkowej parametryzacji. Na zakładce: Parametry, na definicji tej akcji należy podać odpowiedni numer, oznaczający wybrany sposób zamykania zleceń:
- 7 – Zamknięcie zlecenia
- 8 – Zamknięcie niezrealizowanego zlecenia
- 9 – Zamknięcie bez rozliczenia
- 10 – Zamknięcie niezrealizowanego zlecenia bez rozliczenia
Uwaga! Dla obiektu : Harmonogram operacji, wprowadzono analogicznie, jak ww. akcje kluczowe. Dodatkowo udostępniono w systemie predefiniowane definicje procesów, które mogą stanowić wzór do budowania nowych procesów w Produkcji:

Od wersji 2018.1 w definicji procesów, do obiektu: Plan produkcji, dodano nową akcję kluczową: Generowanie rekomendacji na podstawie wzorca.
Akcja ta odpowiada operacji generowania rekomendacji na podstawie wzorca i jest ona parametryzowana. W oknie definicji Akcji, na zakładce [Parametry], należy podać Id wzorca, na podstawie którego mają być generowane rekomendacje. Jeśli nie zostanie wskazany nr Id wzorca, wówczas rekomendacje będą generowane na podstawie wzorca domyślnego.
Dodatkowo, dla grupy obiektów: Produkcja, w definicji procesów, wprowadzono nowe obiekty: Rekomendacja do produkcji i Rekomendacja do zakupu ze standardowymi akcjami: Uruchomienie innego procesu, Uruchomienie programu zewnętrznego, Wykonanie skryptu SQL, Wysłanie wiadomości e-mail, Zakończenie całego procesu.
Procesy na AWD i ZWM
Od wersji 2018.1 udostępniono funkcjonalność procesów dla dokumentów magazynowych: AWD, ZWM.
Do nowego obiektu poza standardowymi udostępniono nowe akcje kluczowe:
- Zatwierdzenie dokumentu magazynowego – akcja odpowiada odznaczeniu parametru Do bufora i zapisaniu dokumentu AWD
- Realizacja dokumentu magazynowego – akcja odpowiada dodaniu, z poziomu interfejsu systemu, realizacji dla pozycji na dokumencie AWD
- Zamykanie dokumentu magazynowego – akcja odpowiada zaznaczeniu parametru Zamknięte i zapisaniu dokumentu AWD
Akcje jw. przy wskazaniu na dokumencie magazynu z włączoną obsługą WMS, operują na dokumentach (W)AWD, (W)ZWM. Dla tychże dokumentów, ze względu na inną ich koncepcje, procesy powinny być trochę inaczej definiowane. Należy tu mieć na uwadze m.in.:
- Zatwierdzenie dokumentu magazynowego – akcja odpowiada zaznaczeniu parametru Realizuj w WMS i zapisaniu dokumentu
- Realizacja dokumentu magazynowego – akcja nie dotyczy dokumentów WMS
- Zamykanie dokumentu magazynowego – akcja odpowiada zaznaczeniu parametru Zamknięte i zapisaniu dokumentu; przy czym zachowana zostaje blokada zamknięcia dla dokumentu zatwierdzonego, tzn. przekazanego do realizacji w WMS
Generowanie spinacza
W wersji 2019.0 lista akcji kluczowych w Procesach została wzbogacona o akcję Generowanie spinacza, pozwalającą na utworzenie faktury typu spinacz z wydania zewnętrznego/przyjęcia zewnętrznego. Akcja ta jest alternatywą dla dostępnej już od wielu wersji akcji Dołączenie do spinacza. W przypadku akcji dołączenia do spinacza, jak sama nazwa akcji wskazuje System dołącza dokument do niezatwierdzonego spinacza, dopiero jeżeli takowego nie ma w Systemie, wówczas tworzy nowy spinacz. W przypadku akcji generowania spinacza System zawsze tworzy nowy spinacz dla danego dokumentu wydania/przyjęcia. Rodzaj spinacza, który ma zostać utworzony w tej akcji należy zdefiniować na zakładce [Parametry] tej akcji, przykładowo będzie to dla WZ:
- (s)FS – spinacz elementów
- FS – spinacz nagłówkowy
Generowanie dokumentów magazynowych w procesach w oparciu o parametry
W procesach dostępnych dla dokumentów handlowych do akcji kluczowej służącej do generowania dokumentów magazynowych, została dodana zakładka [Parametry], gdzie należy określić, jaki typ dokumentu w danym kroku powinien powstać, czyli czy ma to być PM/WM, AWD/ZWM czy ich odpowiedniki dla magazynów WMS. Jest to działanie analogiczne do generowania dokumentów handlowych w procesach, gdzie na definicji akcji jest możliwość ustawienia za pomocą parametrów, czy generowanym dokumentem ma być np. FZ czy PZ.
Oczywiście nadal zachowana jest zasada, że dla danej konfiguracji w Systemie nie będzie możliwe utworzenie np. dokumentów WM/PM na magazyny WMS, więc użytkownicy powinni odpowiednio zdefiniować swój proces warunkując wykonanie danego zadania od rodzaju magazynu na dokumencie źródłowym.
W konwersji dotychczasowych procesów, w których występuje zadania generowania dokumentów magazynowych parametry zostały ustawione tak, aby zachowane było dotychczasowe działanie Systemu. Oznacza to, że symbole dokumentów uzupełnione zostaną zależnie od typu dokumentów źródłowych, dla których akcja została dodana:
-
- Dokumenty handlowe przychodu – pojawią się symbole: PM, AWD, WM, ZWM
- Dokumenty handlowe rozchodu – pojawią się symbole: WM, ZWM, PM, AWD
Jako pierwsze zostaną ustawione symbole dokumentów PM i WM, ponieważ dotychczas to one były generowane w akcjach ręcznych lub automatycznych, więc zachowane zostanie dotychczasowe działanie dla istniejących procesów.
Należy pamiętać o tym, że ustawienie w definicji procesu określonego parametru wpływa również na inne operacje w Systemie, jak opisano poniżej.
- Dla operacji ręcznego generowania dokumentów magazynowych z handlowych z listy dokumentów (czyli przycisk pod listą lub menu kontekstowe) sprawdzane jest prawo operatora do wykonania zadania uwzględniając informacje z zakładki [Parametry]. Czyli aby operator przypisany do procesu mógł utworzyć wybrany przez siebie dokument, to na tej zakładce musi być przypisany jego symbol.
- Dla operacji automatycznego generowania dokumentów magazynowych z handlowych przy zatwierdzaniu handlowego przez operatora przypisanego do zadania w procesie, sprawdzane są zapisy na zakładce [Parametry] i następuje próba wygenerowania dokument o symbolu, który jest pierwszy na liście. Tutaj będzie więc różnica w stosunku do obecnego działania, w którym generowanie zawsze było wykonywane na podstawie typu dokumentu ustalanego zgodnie z konfiguracją Systemu. Należy więc sprawdzić definicje istniejących procesów i ewentualnie przedefiniować je tak, aby ustalić w odpowiednich miejscach właściwe symbole dokumentów. Bez tej zmiany może okazać się, że utworzenie dokumentu magazynowego się nie powiedzie.
W bazie są dwa rodzaje magazynów: zwykłe i WMS. Chcemy, aby dla magazynów zwykłych generowały się dokumenty PM lub WM, ale dla magazynów WMS też powstawały odpowiednie dla nich dokumenty magazynowe. Gdyby do kroku procesu, w którym jest generowany dokument magazynowy dodać w parametrach: WM,ZWM, to nie utworzy się dokument magazynowy dla magazynów WMS. Jeśli parametry zapiszemy w odwrotnej kolejności: ZWM,WM, to nie utworzy się dokument magazynowy WM dla magazynów zwykłych. Konieczne jest więc dodanie do czynności procesu warunku na rodzaj magazynu.
Należy wiec zdefiniować kolejne kroki procesu, np:
- Dodanie dokumentu
- Potwierdzenie dokumentu, po którym ma nastąpić generowanie dokumentu magazynowego, więc tutaj musi zostać dodany warunek na rodzaj magazynu i w zależności od niego będzie wykonany jeden z poniższych kroków:
- Wygenerowanie dokumentu magazynowego z parametrem WM
- Wygenerowanie dokumentu magazynowego z parametrem ZWM.

- Podczas wykonywania zadania generowania dokumentów magazynowych jako realizacja zadania ze skrzynki pracownika lub poprzez XLWork Automat wybierany do generowania jest zawsze dokument podany jako pierwszy na zakładce [Parametry].
Szczególnym przypadkiem jest generowanie dokumentów magazynowych, jeśli na źródłowym dokumencie handlowym są różne magazyny. W takich sytuacjach System będzie dążył do wygenerowania w jednym zadaniu wszystkich dokumentów magazynowych możliwych do utworzenia i dopiero wtedy zadanie zostanie uznane za wykonane. Jeśli np. z powodu braku ilości na magazynie nie powstanie dokument do jakichś pozycji, ale przy generowaniu zostanie utworzony chociaż jeden dokument, to zadanie trafi do wykonanych. A tylko wtedy, gdy nie będzie możliwe utworzenie żadnego dokumentu, to będzie ono nadal do wykonania. Mogą tu wystąpić następujące scenariusze:
- Źródłowym dokumentem jest dokument handlowy z pozycjami na różne magazyny i zadanie z czynnością Generowanie dokumentu magazynowego wykonywane jest ze Skrzynki pracownika lub poprzez XLWork Automat. Wówczas powstaną dokumenty zgodnie z ustawionymi parametrami:
- Tylko parametr PM lub WM – utworzą się tylko dokumenty PM lub WM na zwykłe magazyny;
- Tylko parametr AWD lub ZWM – utworzą się dokumenty AWD lub ZWM na zwykłe magazyny i dokumenty (W)AWD lub (W)ZWM na magazyny WMS;
- Parametry PM,AWD lub WM,ZWM – tutaj będzie decydowała kolejność wpisanych dokumentów, czyli przy takim zapisie utworzą się dokumenty PM lub WM na zwykłe magazyny, ale nie utworzą się dokumenty (W)AWD lub (W)ZWM na magazyny WMS; przy odwrotnej kolejności parametrów utworzą się dokumenty (W)AWD lub (W)ZWM na magazyny WMS, ale nie utworzą się dokumenty PM lub WM na zwykłe magazyny. Żeby powstały dokumenty PM i (W)AWD lub WM i (W)ZWM na wszystkie pozycje, to muszą być dwa osobne zadania w procesie: jeden na dokumenty PM lub WM, a potem warunek na magazyn WMS i do niego zadanie z parametrami AWD lub ZWM, czyli analogicznie jak w powyższym przykładzie.
- Parametry AWD,PM lub ZWM,WM – utworzą się dokumenty AWD lub ZWM na zwykłe magazyny i dokumenty (W)AWD lub (W)ZWM na magazyny WMS.
- Jeśli źródłowym dokumentem jest dokument handlowy, na którym znajdują się pozycje na różne magazyny, to przy zatwierdzaniu takiego dokumentu, jeśli mają być automatycznie generowane dokumenty magazynowe nastąpi próba ich tworzenia zgodnie ze standardem, czyli:
- Jeśli w konfiguracji jest włączony parametr Obsługa AWD/ZWM, to będą się tworzyły dokumenty AWD lub ZWM na zwykłe magazyny i dokumenty (W)AWD lub (W)ZWM na magazyny WMS, pod warunkiem, że na zakładce [Parametry] w procesie będzie dodany symbol AWD lub ZWM (bez względu, na którym miejscu zostanie wpisany). W przeciwnym razie będzie błąd procesu związany z brakiem praw operatora.
- Jeśli w konfiguracji nie jest włączony parametr Obsługa AWD/ZWM, to będą się tworzyły dokumenty PM/WM na zwykłe magazyny, pod warunkiem, że na zakładce [Parametry] w procesie będzie dodany symbol PM lub WM (bez względu, na którym miejscu zostanie wpisany).
Proces jako usługa
Od wersji 2017.0 działa mechanizm, który będzie tworzył działającą usługę XLWFLService samodzielnie przez aplikację.
Służy do tego parametr Obsługa procesów za pomocą usługi. Warunkiem jest aby Operator Systemu Operacyjnego Windows miał uprawnienia do logowania w trybie usługi i pracy w trybie wsadowym. Podczas tworzenia usługi moduł musi być uruchomiony jako administrator (prawy przycisk myszy > "Uruchom jako administrator").


Graficzna prezentacja definicji procesu
Od wersji 2019.0 możliwa jest graficzna prezentacja procesu. Takie wyświetlenie procesu wpłynie na czytelność
i pozwoli zweryfikować poprawność jego definicji.
Na formatkach związanych z procesami jest dostępny przycisk umożliwiający podgląd graficzny wykresu.
Podgląd graficzny wykresu umożliwia:
- wyświetlanie drzewa procesu czyli zadania powiązane czynnościami/akcjami do ich wykonania
- wyświetlanie informacji kontekstowych dla zadania procesu – akcje możliwe do wykonania, opiekunowie zadania
- wyświetlanie informacji kontekstowych dla czynności (akcji procesu)
- dowolne przemieszczenie składowych procesu wg potrzeb Operatora
- eksport układu do pliku
- jednoczesną prezentację powiązanych procesów – połączonych za pomocą akcji Uruchomienie innego procesu

Graf zawiera dwie główne sekcje:
- Główną część, w której wyświetlony jest diagram procesu
- Sekcję informacyjną, po prawej stronie okna, w której wyświetlane są kontekstowo informacje dla elementu procesu na zaznaczonego na diagramie.
Dla wyświetlania elementów procesu przyjęto następujące zasady domyślne:
- W kolorze zielonym – są wyświetlane: początek i koniec procesu
- W kolorze niebieskim – są wyświetlane zadania w definicji procesu
- W kolorze szarym – wyświetlane są czynności do wykonania w ramach procesu
- W kolorze pomarańczowym – wyświetlane są czynności, uruchamiające kolejny proces
- Podświetlenie na żółto – stosowane jest po zaznaczeniu w prawej sekcji odpowiadającego mu elementu procesu
Domyślną kolorystykę można dowolnie modyfikować za pomocą panelu: Wybór kolorów, znajdującego się w dolnej części diagramu.
Obsługa operacji KSeF w Procesach
Od wersji 2024.0 komunikacja z KSeF została obsłużona w definiowanych Procesach. Za ich pomocą można dokonać:
- wysyłki faktury do KSeF
- pobrania UPO
- importu faktur zakupu z KSeF
Jak w przypadku każdej metody komunikacji z KSeF, również w Procesach do dokonania ww. operacji konieczne jest uwierzytelnienie w KSeF. W przypadku Procesu uruchomionego w trybie wsadowym jedynym narzędziem uwierzytelnienie jest token. Uwierzytelnienie odbędzie się więc wyłącznie, jeżeli Operator ma włączone prawo do używania tokena i token został przypisany na pieczątce firmy.
W przypadku Procesów działających w trybie interakcyjnym uwierzytelnianie odbywa się w sposób standardowy tj., jeżeli Operator ma włączone prawo do używania tokena, wówczas na podstawie tokena z pieczątki firmy, jeżeli Operator nie ma tego prawa, wówczas za pomocą wskazanego przez niego certyfikatu.
Obsługa wysyłki faktur oraz pobrania UPO w Procesach
Lista akcji kluczowych definiowalnych procesów została wzbogacona o dwie nowe akcje:
- Wysłanie dokumentu do KSeF
- Pobranie UPO z KSeF
Ww. akcje dostępne są dla dokumentów, które podlegają wysyłce do KSeF, a więc dla faktur sprzedaży, faktur eksportowych, faktur zaliczkowych sprzedaży oraz korekt tych dokumentów.

Warunkowa wysyłka faktur do KSeF
Użytkownicy, którzy rejestrują zarówno faktury podlegające wysyłce do KSeF jak i takie, które rejestrowane są poza systemem KSeF mogą korzystać z akcji wysyłania faktury w sposób warunkowy. Poniżej umieszczono propozycje definicji procesu na okoliczność ww. scenariuszy:
- Propozycja nr 1:
- Zdefiniowanie procesu: Dodanie FS- Potwierdzenie FS- Wysłanie FS do KSeF – Koniec
- W procesie jw. w definicji zadania Wysłanie do KSeF dodanie warunku j.n., aby zadanie to było wykonywane wyłącznie dla FS z Trn_KSeFWyslij=1: select @Wynik = TrN_KSeFWyslij from CDN.TraNag where TrN_GIDNumer = @ObiNumer

- Propozycja nr 2:
- Na formatce czynności Potwierdzanie dokumentu handlowego” dodać Status wynikowy czynności z warunkiem na Trn_KSeFWyslij=1, przy którym jest przejście do zadania Wysłanie dokumentu do KSeF

Akcja pobrania UPO
Podczas akcji pobrania UPO wywołanej w kontekście konkretnego dokumentu System pobiera UPO dla tego dokumentu oraz innych dokumentów wysłanych w ramach danej sesji KSeF, a co za tym idzie wykonuje w ten sposób również zadania pobrania UPO dla tych pozostałych faktur, jeżeli takowe zostały wygenerowane i jeżeli Operator ten jest opiekunem takich zadań.
W ramach sesji XXX wysłano do KSeF: FS-1; FS-6, FS-12, FSE-15; FSL-16. Zgodnie z definicją procesu wygenerowane zostały zadania j.n. których opiekunem jest operator OPE_1 i Automat: - Zad1: Pobranie UPO dla FS-1 - Zad2: Pobranie UPO dla FS-6 - Zad3: Pobranie UPO dla FS-12 - Zad4: Pobranie UPO dla FSE-15 - Zad5: Pobranie UPO dla FSL-16 Operator OPE_1(lub Automat) wykonuje zadanie Zad3, w wyniku czego System pobiera UPO do wszystkich ww. dokumentów, a co za tym idzie wszystkie ww. zadania zostają wykonane.
Obsługa pobierania faktur z KSeF
Dodana została akcja kluczowa Pobieranie faktur z KSeF, dostępna dla procesów definiowanych w gałęzi Inne procesy/Proces bez obiektu. Za pomocą tej akcji można dokonać importu z KSeF faktur, na których Nabywcą jest Firma będąca Użytkownikiem Systemu. Operacja dokonywana jest wg zasad jak dla opcji Nowe dokonywanej z interfejsu, tj. System importuje faktury z datą przyjęcia w KSeF równą i większą od największej z dat dotąd zaimportowanych dokumentów, a jeżeli dotąd takiego importu nie dokonano, wówczas z datą przyjęcia w KSeF należącą do bieżącego miesiąca i miesiąca go poprzedzającego.
Podczas kreacji i konwersji bazy System dodaje predefiniowany proces, służący do dokonywania takiego importu Aby z takiego procesu skorzystać wystarczy go aktywować, włączając parametr Aktywny. Jeżeli Użytkownik zechce go zmodyfikować zmieniając np. godzinę wykonywania czynności wystarczy takie proces wyeksportować, a następnie zaimportować i na tak utworzonym nowym procesie dowolnie zmieniać jego parametry.

Ww. akcja Pobieranie faktur z KSeF traktowana jest pod kątem prawa do jej wykonania w standardowy sposób tj., jeżeli aktywny jest proces z akcją pobrania faktur z KSeF, wówczas System kontroluje, aby Użytkownik inny niż przypisany do takiej akcji nie mógł wykonać operacji Import/Nowe, czy to poprzez próbę wykonania zadania procesu, czy to opcją na liście faktur zakupu z KSeF. Dla akcji importu Za okres oraz importu konkretnego numeru KSeF operacja nie jest blokowana. Jako akcja procesu Pobierania faktur z KSeF rozumiana jest wyłącznie operacja Nowe. Jeżeli więc w Firmie uruchomiony jest ww. proces i dany Operator ma mieć możliwość wykonywania operacji importu/nowe, wówczas Operatora tego należy dodać do aktywnego procesu pobierania faktur jako wykonującego tą czynność.
Jeżeli utworzone zostało zadanie Pobieranie faktur z KSeF na konkretny dzień/godzinę i uprawniony do tego Operator dokona operacji import/nowe przed tą datą/godziną, wówczas zadanie procesu nadal pozostaje do wykonania. Dzięki temu operacja importu dokonywana jest automatycznie o określonej godzinie, nawet, jeżeli taka operacja została wykonywana przez jakiegoś Użytkownika w trakcie dnia. Jeżeli zaś Operator wykona zadanie procesu w danym terminie, czy też po nim, wówczas zadanie procesu zostaje wykonane i pojawia się kolejne np. na kolejny dzień i określoną godzinę, jeżeli tak ten proces zdefiniowano.
XL001 - Parametry dynamiczne
Wykorzystanie parametrów dynamicznych
Parametry dynamiczne to zmienne, zdefiniowane przez Użytkownika, wykorzystywane w trakcie pracy z programem poprzez ich wstawienie w definicje zmiennych. W zależności od rodzaju tekstu, którym definiowane są parametry istnieją parametry dynamiczne:
- Filtrów (tekstem jest najczęściej fragment pewnej klauzuli: WHERE)
- Wykresów i Szybkich raportów (tekstem jest treść zapytania lub parametrów graficznych definicji wykresu)
- Wydruków (parametry dynamiczne Runtimes przekazywane do wydruku)
Składnia parametrów dynamicznych
Uwagi ogólne
Ogólna składnia parametru dynamicznego jest następująca:
?@[H]Picture[(_Q|_NQ)]|[Nazwa|]Prompt:Default[@?] (PD) albo ?@EOL (PD) albo ?@ABC(‘Tekst’) (PD) gdzie: @[H]Picture - format parametru. Jeśli w formacie zostanie użyty opcjonalny przełącznik ukrycia parametru (H), wówczas kontrolka odpowiadająca parametrowi nie jest kreowana, a wartość parametru pozostaje stała (dziedziczona lub Default - owa). Przełącznik ukrycia parametru H jest dostępny zawsze dla wszystkich formatów (dla uproszczenia – w dokumencie będzie on pomijany).Dostępne formaty
- Standardowe (predefiniowane) formaty Clarionowe (np. @S20, @N-14.2, @N3, @D17, @T1,…)
- Dodatkowe formaty, zdefiniowane specjalnie dla obsługi parametrów dynamicznych:
Elementy składni
- Nazwa – kod, po którym klasa identyfikuje i wiąże parametr (np. rozpoznaje, która dana z kolejki wynikowej wykresu / zmienna dynamiczna z aplikacji odpowiada temu parametrowi). Niedozwolonymi znakami w nazwie są pipe (separator nazwy od promptu) i dwukropek (separator promptu od wartości).
- Prompt – prompt pojawiający się przy kreowanych dynamicznie kontrolkach parametrów.Niedozwolonymi znakami w prompcie są pipe (separator nazwy od promptu) i dwukropek (separator promptu od wartości). Można natomiast używać znaku & (akcelerator).
- Default – domyślna (początkowa) wartość parametru (w przypadku parametrów posiadających sekwencję zakończenia @? można nie stosować otaczających stringowy Default ciapek). Jeśli Default nie zostanie podany – klasa przyjmie jego wartość jako pustą (0 lub ”, w zależności od typu parametru, określonego przez Picture). W wartości domyślnej można używać wyrażeń. Nie można natomiast stosować odwołań do parametrów dynamicznych (brak możliwości zagnieżdżania (z jednym wyjątkiem, opisanym przy omawianiu formatu lookupu)).
- Składnia typu: ?@EOL, służy do wstawienia w danym miejscu pustej linii.
Opcjonalna sekwencja zakończenia parametru: @?
W przypadku braku sekwencji zakończenia parametru (@?) należało przyjąć jakieś inne kryterium zakończenia. Kryterium to jest następujące:
Jako koniec parametru dynamicznego w przypadku braku sekwencji zakończenia przyjmujemy:
- Znak poprzedzający pierwsze wystąpienie któregokolwiek z poniższych znaków (sekwencji):
- koniec tekstu. (SZ 2)
Modyfikatory otaczania apostrofami _Q i _NQ
Wymuszają otaczanie (_Q) lub nieotaczanie (_NQ) wstawianej wartości parametru apostrofami.
Jeśli parametr jest stringowy (@Picture=@S...) – jego wartość przy wstawianiu zostaje domyślnie otoczona apostrofami. Chcąc z tego zrezygnować używamy modyfikatora _NQ (użycie w tym przypadku modyfikatora _Q jest ignorowane).
Jeśli parametr jest niestringowy (@Picture<>@S...) – jego wartość przy wstawianiu nie zostaje domyślnie otoczona apostrofami. Chcąc wymusić otoczenie apostrofami takiego parametru używamy modyfikatora _Q (użycie w tym przypadku modyfikatora _NQ jest ignorowane).
Wstawianie pustych linii pomiędzy parametrami
Jeśli chcemy wstawić linię przerwy pomiędzy kontrolkami parametrów – można w tym celu zadeklarować pomiędzy nimi specjalny, ukryty parametr (może być to również parametr, który nie będzie nigdzie indziej używany). Ukrycie należy wprowadzić wykorzystując deklarację parametru z opcją ukrycia @H[IDE]. Opcja ukrycia powinna być w tym przypadku bezparametrowa (@HIDE()) lub zawierać wyrażenie ewaluujące się zawsze do prawdy (np. @HIDE(1=1)).
Powyższe rozwiązanie ma wadę w postaci pojawiania się na moment kontrolki parametru a także ze względu na konieczność wpisywania członów składni, które nigdzie nie są wykorzystywane.
Wobec powyższego rozwiązanie to należy traktować jako przestarzałe.
Aby łatwo wstawić pustą linię, należy zastosować drugi wariant składni (PD), a więc: ?@EOL, jak w przykładzie 3:
Powtarzanie parametrów w tekście
Jeśli w tekście mamy kilka wystąpień parametru o takiej samej nazwie – wszystkie one generują jeden, wspólny parametr (wiązanie po nazwie), którego wartość za każdym razem jest wstawiana we wszystkie miejsca definicji tego parametru. Wartość domyślna parametru jest zczytywana z pierwszego wystąpienia.
Wobec powyższego powtarzanie pełnej definicji parametru w tekście jest zbyteczne. Aby uprościć wstawianie w kilku miejscach tego samego parametru została zaimplementowana składnia tzw. odwołań skróconych.
Zagnieżdżanie parametrów
Niedopuszczalne.Typy parametrów
Każdy parametr ma określony typ. O typie decyduje człon: Picture, definicji parametru. W zależności od typu dla parametru, kreowana jest jedna lub więcej kontrolek, których ustawienia są standardowe (generyczne). Ustawienia te można zmienić, używając odpowiednich opcji w deklaracji parametru (poza obrębem jego definicji).
Typ stringowy S (typ standardowy CW)
Składnia?@[H]S... – gdzie: …, oznacza odpowiedni fragment każdego clarionowego członu: Picture, odpowiedniego typu. Kontrolki
PROMPT + ENTRY Atrybuty standardowe:
- dla kontrolki ENTRY: OVR, LEFT.
- dla kontrolki ENTRY: brak.
Wartość otoczona apostrofami (lub nieotoczona apostrofami, jeśli użyto modyfikatora _NQ).
Typ numeryczny N (typ standardowy CW)
Składnia?@[H]N... – gdzie: …, oznacza odpowiedni fragment każdego clarionowego członu: Picture, odpowiedniego typu. Kontrolki
PROMPT + SPIN Atrybuty standardowe dla kontrolki SPIN: INS, RIGHT, STEP=1, RANGELOW = (9999999999999|0), RANGEHIGH=9999999999999. Akcje standardowe kontrolki SPIN: brak. Rozwinięcie
Wartość (dodatkowo otoczona apostrofami, jeśli użyto modyfikatora _Q).
Typ datownikowy D (typ standardowy CW)
Składnia?@[H]D... – gdzie: …, oznacza odpowiedni fragment każdego clarionowego członu: Picture, odpowiedniego typu. Kontrolki
PROMPT + SPIN Atrybuty standardowe dla kontrolki SPIN: INS, RIGHT, STEP=1, RANGELOW=Date(1,1,1900), RANGEHIGH= Date(1,1,2100). Akcje standardowe kontrolki SPIN:
- Prawy klawisz myszy – wywołanie kalendarza pozwalającego wybrać datę.
W zależności od kontekstu:
- wynik funkcji modyfikatora (np. Long2YMD), jeśli w odwołaniu skróconym użyto modyfikatora (np. _YMD_) albo
- wartość LONG clarionowej daty (dodatkowo otoczona apostrofami jeśli użyto modyfikatora _Q), jeśli wstawiony zostanie parametr do dowolnego tekstu w CDN XL albo do filtra TPS z KF lub parametrów wydruku RW w Optimie, albo
- wynik funkcji Long2DateTimeSQL (lub Long2DateTimeSQLQ jeśli użyto modyfikatora _Q) w pozostałych przypadkach.
Typ czasowy T (typ standardowy CW)
Składnia?@[H]T... – gdzie: …, oznacza odpowiedni fragment każdego clarionowego członu: Picture, odpowiedniego typu. Kontrolki
PROMPT + SPIN Atrybuty standardowe dla kontrolki SPIN: INS, RIGHT, STEP= 60*100(1 min.), RANGELOW=1 (północ), RANGEHIGH=24*3600 (północ). Akcje standardowe kontrolki SPIN: brak. Rozwinięcie
W zależności od kontekstu:
- wynik funkcji modyfikatora (np. Long2HMS) jeśli w odwołaniu skróconym użyto modyfikatora (np. _HMS_), albo
- wartość LONG clarionowego czasu (dodatkowo otoczona apostrofami jeśli użyto modyfikatora_Q)
- wynik funkcji LongT2DateTimeSQL (lub LongT2DateTimeSQLQ jeśli użyto modyfikatora _Q) w pozostałych przypadkach.
Typ dataczasowy DT (typ dodatkowy)
Składnia?@[H]DT Wartość początkowa
Może być podana w postaci YYYY-MM-DD HH:MM:SS lub YYYYMMDDHHMMSS (bez separatorów i spacji). Można też użyć wyrażenia zawierającego zabindowane funkcje; najczęściej używanym w tym kontekście funkcjami są:
- Now()
- DT(_Year, _Month, _Day, _Hour, _Minutes, _Seconds) Zwraca podaną parametrami datę i czas w postaci YYYY-MM-DD HH:MM:SS
- DT(_DateExpr, _IgnoredValue, _IgnoredValue, _Hour, _Minutes, _Seconds)
Ustalony moment: @PAR ?@DT|dt1|Termin &ostateczny:2003-03-25 16:30:00 @? PAR@ lub @PAR ?@DT|dt1|Termin &ostateczny:20030325163000 @? Bieżący moment: @PAR ?@DT|dt2|&Teraz:{Now()} @? PAR@ Ustalony moment: @PAR ?@ DT|dt3|t&3:2003-03-20 18:00:00@? PAR@ Początek m-ca o 7.15: @PAR ?@DT|dtm1|&Pocz.mc.7.15:{DT({DateClwFirstDay('M')}, 0, 0, 7, 15, 0)} @? PAR@ Koniec m-ca o 16.30: @PAR ?@DT|dtm2|&Kon.mc.16.30:{DT({DateClwLastDay('M')}, 0, 0, 16, 30, 0)} @? PAR@ Początek roku, północ: @PAR ?@DT|dty1|&Początek roku:{DT({DateClwFirstDay('Y')}, 0, 0, 0, 0, 0)} @? PAR@ Koniec roku, północ: @PAR ?@DT|dty2|&Koniec roku:{DT({DateClwLastDay('Y')}, 0, 0, 0, 0, 0)} @? PAR@ 15. nast. m-ca o 13.45: @PAR ?@DT|dtx|&15. nast. m-ca o 13.45:{DT({Date(Month(Today())+1, 15, Year(Today()))}, 0, 0, 13, 45, 0)} @? PAR@
PROMPT + ENTRY Atrybuty standardowe kontrolki ENTRY: INS, LEFT, format @P####-##-## ##:##:##P (YYYY-MM-DD HH:MM:SS), INS, RIGHT. Akcje standardowe kontrolki ENTRY:
- Prawy klawisz myszy – wywołanie kalendarza pozwalającego wybrać datę (czas pozostaje bez zmian).
W zależności od kontekstu:
- wartość w formacie YYYY-MM-DD HH:MM:SS (dodatkowo otoczona apostrofami jeśli użyto modyfikatora _Q) jeśli w odwołaniu skróconym użyto modyfikatora (np. _YMDHMS_), albo
- wartość w formacie YYYY-MM-DD HH:MM:SS (dodatkowo otoczona apostrofami jeśli użyto modyfikatora_Q)
- wynik funkcji YMDHMS2DateTimeSQL (lub YMDHMS2DateTimeSQLQ jeśli użyto modyfikatora _Q) w pozostałych przypadkach.
Typ logiczny X (typ dodatkowy)
Składnia?@[H]X Wartość początkowa
Jedna z wartości {0, 1}. Jeśli nie podano – zostanie podstawione 0. Kontrolki
CHECK Atrybuty standardowe kontrolki CHECK: TRUEVALUE=1, FALSEVALUE=0. Akcje standardowe kontrolki CHECK: brak. Rozwinięcie
Wybrana wartość TRUEVALUE lub FALSEVALUE.
Typ wyboru opcji O (typ dodatkowy)
Składnia@O(RadioPrompt:RadioValue{[|rPrompt:rValue]...}) Wartość początkowa
Jedna z wartości: RadioValue - jeśli nie podano, żadne radio nie będzie podświetlone, chyba że któreś z nich ma przypisaną wartość zero lub pustą.
KontrolkiOPTION{RADIO,…} Atrybuty standardowe kontrolki OPTION: BOXED. Akcje standardowe kontrolki OPTION: brak. Rozwinięcie
Wartość wybranej opcji: rValue (dodatkowo otoczona apostrofami, jeśli użyto modyfikatora _Q).
UwagiZaleca się używać list rozwijanych zamiast opcji; jest to podyktowane tym, iż kontrolka opcji zajmuje dużo miejsca na ekranie (w pionie tyle, co dwa inne parametry) i teksty radio są najczęściej obcinane z powodu braku miejsca. Customizować można tylko całą kontrolkę OPTION (zmiana właściwości kontrolek RADIO nie jest przewidywana).
Typ wyboru z listy rozwijanej R (typ dodatkowy)
Składnia@R(Zapytanie) - gdzie Zapytanie musi być tak zbudowane, aby zwracało przynajmniej dwie kolumny. Te dwie pierwsze kolumny mogą być stringowe lub całkowite w układach Str-Int lub Int-Str; najczęściej zwracają one odpowiednio Id i Kod (albo Kod i Id) pobranych rekordów. W dropdownie wyświetlana jest kolumna stringowa, a jako wartość parametru wstawiana jest kolumna całkowita.
Zapytanie nie zawsze musi odwoływać się do jakiegokolwiek obiektu w bazie SQL; dropdowny można z powodzeniem wykorzystywać zamiast „ekranożernych” opcji, np.: @PAR ?@R(SELECT 1, 'Radio1' UNION SELECT 2, 'Radio2' UNION SELECT 3, 'Radio3')|DD|&DD:Radio2 @? PAR@
Wartość początkowaWartość jest postaci: Id|Kod.
Jeśli defaultowy Kod odpowiada istniejącemu w recordsecie rekordowi, wtedy zostanie pobrany odpowiedni Id.
Jeśli defaultowe Id odpowiada istniejącemu w recordsecie rekordowi, wtedy zostanie pobrany odpowiedni Kod.
Jeśli recordset zawiera choć jeden rekord, wtedy zostanie pobrany Kod i Id pierwszego rekordu.
Jeśli jako Kod zostanie podstawiona wartość: brak, wtedy jako Id – wartość pusta.
KontrolkiPROMPT + DROPDOWN Atrybuty standardowe kontrolki DROPDOWN: DROP=5, VSCROLL, LEFT, FROM=kolejka wynikowa recordsetu Zapytania. Akcje standardowe kontrolki DROPDOWN: brak. Rozwinięcie
Jeśli nie użyto modyfikatora – wstawiana jest wartość Id wybranej pozycji rValue (dodatkowo otoczona apostrofami, jeśli użyto modyfikatora _Q). Użycie modyfikatora _RES2_ powoduje wstawienie wartości pola Kod.
Typ wyboru z listy wywoływanej L – LOOKUP (typ dodatkowy)
Składnia@L(s|n)…(Biblioteka.dll|CallLookupFunkcjaU[(ParametryCallLookupFunkcjaU)])
Typ odpowiada lookupowi do funkcji Funkcja z użyciem przesiadki CallLookupFunkcjaU z biblioteki Biblioteka.dll, która to przesiadka dostaje parametry określające typ akcji (‘INIT’|‘BUTTON’|’ENTRY’), ID (zwykłe ID, GID itp.) i kod (string określający obiekt w sposób jednoznaczny, najczęściej kod, akronim itp.) obiektu i na podstawie tych parametrów wywołuje funkcję wyświetlającą odpowiednią listę w trybie lookup a następnie zwraca wartości dotyczące wybranego przez użytkownika rekordu (szczegóły – analogicznie, jak w rozdziale Lookupy).
Wybór s|n decyduje jedynie o formie wyświetlania wartości parametru (ENTRY|SPIN).
Wartość początkowa
Jest postaci Id|Kod. Jeśli defaultowy Kod odpowiada istniejącemu w bazie rekordowi – zostanie pobrany odpowiedni Id, w przeciwnym razie zostanie wykonana próba pobrania rekordu o podanym Id. Jeśli rekord zostanie znaleziony – zostanie podstawiony odpowiedni Kod, jeśli nie – obiekt zasygnalizuje błąd (to przy inicjalizacji kontrolki parametru, natomiast przy akceptacji nieznalezionej wartości wywoła lookup).
Jeśli chcemy z aplikacji wysłać zmienną dynamiczną inicjalizującą wartość początkową parametru typu lookup to możemy, ale nie musimy użyć składni [Id]|[Kod] (z pipem). Podanie samego Id jest też poprawne (klasa wykresów w przypadku stwierdzenia braku pipe-a w wartości związanej z parametrem typu lookup doklei go na koniec wartości, a więc zainicjalizuje parametr wartością:’|Id’).
Opcjonalne parametry ParametryCallLookupFunkcjaU mogą zawierać odwołania do wartości innych parametrów dynamicznych; jest to jedyny obsługiwany przypadek zagnieżdżania parametrów (obsługiwany tylko w wyższej warstwie, tj. przez klasę operującą na kontrolkach). Składnia odwołania jest następująca:
?#[_Q]NazwaInnegoParametru#?.
Przykład: BZp_BRpID=?@Ls30_NQ(OP_KASAI.DLL|CALLLOOKUPBRPLISTA({_Q'BRA,'&?#_QRachunekID#?}))|RaportID|&Raport:0|@?.
PROMPTBUTTON + (ENTRY|SPIN) Atrybuty standardowe kontrolki ENTRY/SPIN: takie, jak dla standardowego typu stringowego/numerycznego. Akcje standardowe kontrolki PROMPTBUTTON:
- Lookup do funkcji lookupowej i podstawienie wartości (Id|Kod) wybranego rekordu
- Akcje standardowe kontrolki ENTRY/SPIN:
- Sprawdzenie poprawności Kod-u/Id; jeśli Kod /Id nie jest poprawny – lookup do funkcji lookupowej i podstawienie wartości (Id|Kod) wybranego rekordu
Jeśli nie użyto modyfikatora – wstawiana jest bieżąca wartość: Id (dodatkowo otoczona apostrofami, jeśli użyto modyfikatora _Q). Użycie modyfikatora _RES2_ powoduje wstawienie wartości pola Kod.
Typ wyboru pliku lub katalogu F - FILE(DIR)DIALOG (typ dodatkowy)
Składnia@Fs…(F[ile]|D[irectory]][,[O[pen]|S[ave]][,Maski][,MaskaDomyslna][,Flagi]) Typ odpowiada dialogowi systemowemu pozwalającemu wybrać plik lub katalog. Kontrolki
PROMPTBUTTON + ENTRY - gdzie znaczenie opcjonalnych atrybutów jest następujące:
- Maski (istotne tylko dla wyboru pliku) składa się z ciągu oddzielonych pipami (|) par Opis typu (maska typu) | Maska typu. Ciąg ten musi być otoczony apostrofami. Jeśli nie podano – przyjmuje się ‘Wszystkie pliki (*.*)|*.*’
- MaskaDomyslna (istotne tylko dla wyboru pliku) odpowiada jednej z wymienionych w atrybucie Maski masek.Jeśli nie podano – przyjmuje się *.*
- Flagi określa tryb otwarcia dialogu, jest to suma bitowa następujących flag:
Jeśli nie podano – przyjmuje się OFN_NOCHANGEDIR + OFN_PATHMUSTEXIST + OFN_FILEMUSTEXIST - dla otwierania pliku, OFN_NOCHANGEDIR + OFN_PATHMUSTEXIST – dla zapisu pliku i OFN_NOCHANGEDIR + OFN_PATHMUSTEXIST dla otwarcia katalogu.
Atrybuty standardowe kontrolki ENTRY:
jak dla standardowego typu stringowego.
Akcje standardowe kontrolki PROMPTBUTTON:
File Dialog lub Dir Dialog
Akcje standardowe kontrolki ENTRY:W trybie wyboru katalogu doklejanie backslash-a na końcu wartości, jeśli wartość kończy się innym znakiem.
Rozwinięcie
Wartość otoczona apostrofami (lub nieotoczona apostrofami, jeśli użyto modyfikatora _NQ). Przykłady
@PAR ?@Fs255(File, Open, 'Pliki tekstowe (*.txt)|*.txt|Wszystkie pliki (*.*)|*.*', *.txt)|FileOpen|&File open:d:\app @? PAR@ @PAR ?@Fs255(, , 'Pliki tekstowe (*.txt)|*.txt|Wszystkie pliki (*.*)|*.*', *.txt)|FileOpen|&File open:d:\app@? @PAR ?@Fs255(File,Save)|FileSave|&File save:d:\app @? PAR@ @PAR ?@Fs255(Dir)|Dir|&Dir:d:\app @? PAR@
Typ pusty EOL – wstawienie wolnego miejsca (typ dodatkowy)
Składnia?@EOL
Parametr tego typu jest interpretowany tylko w procesie wyświetlania kontrolek parametrów dynamicznych. Jego deklaracja jest usuwana z tekstu, a używanie odwołań – niemożliwe (brak nazwy parametru).
Kontrolkibrak Rozwinięcie
Usunięcie deklaracji z tekstu.
Typ tekstowy ABC – wstawienie zadanego tekstu na oknie (typ dodatkowy)
Składnia?@ABC(‘Tekst do wyświetlenia’)
Parametr tego typu jest interpretowany tylko w procesie wyświetlania kontrolek parametrów dynamicznych. Jego deklaracja jest usuwana z tekstu, a używanie odwołań – niemożliwe (brak nazwy parametru).
brak Rozwinięcie
Usunięcie deklaracji z tekstu. Uwagi
Jeśli parametr ma być przez całą szerokość panelu – należy umieścić go po lewej stronie, a po prawej stronie (jako sąsiadujący parametr) wstawić parametr EOL.
Przykłady@PAR ?@ABC('To jest tylko taki testowy tekst żeby wypróbować nowy typ parametru dynamicznego (typ ''ABC'').')@? PAR@
Odwołania do parametrów, rozwijanie parametrów
Rozwijanie parametrów, to wstawianie ich aktualnych wartości w miejsce odwołań do tych parametrów. Istnieją dwa rodzaje odwołań do parametru:- Definicja parametru – umieszczając w tekście kilka definicji tego samego parametru
- Skrócone odwołanie do parametru – składnia skróconego odwołania do parametru:
Zalecanym odwołaniem jest odwołanie skrócone – jest ono prostsze w użyciu a zarazem daje większe możliwości (modyfikatory). Odwołanie pełne (poprzez definicję parametru) jest pozostawione jedynie dla kompatybilności wstecz. Zalecanym sposobem jest utworzenie w jednym miejscu deklaracji wszystkich parametrów, a następnie stosowanie w dowolnych miejscach tylko odwołań skróconych.
Jest to zdecydowanie bardziej ergonomiczny sposób: nie musimy wpisywać wiele razy ustawień parametru, które i tak (poza pierwszym) będą zignorowane. Ustawienia będą oczywiście pobrane z pierwszego wystąpienia parametru o nazwie Nazwa, zgodnego z pełną składnią (PD).
Ponadto tylko w odwołaniach skróconych można stosować modyfikatory. Ograniczeniem tego rozwiązania jest niedopuszczenie spacji w Nazwie parametru.
Ponieważ odwołanie skrócone nie posiada sekwencji zakończenia – jego koniec ustalany jest podobnie, jak w przypadku zwykłego parametru bez sekwencji zakończenia (tj. po Nazwie musi występować jeden ze znaków określonych w zbiorze automatycznej sekwencji zakończenia parametru) z tą różnicą, że terminatorem może być dodatkowo znak ‘{‘.
Deklaracje parametrów
Podana na początku składnia definicji parametru dynamicznego (PD) może zostać umieszczona wewnątrz tzw. deklaracji parametru. Składnia deklaracji parametru dynamicznego jest następująca:
@PAR Definicja Opcje PAR@ (PD-DEKL)gdzie Definicja ¬oznacza definicję parametru, określoną wzorem (PD) natomiast Opcje - ciąg opcji określających dodatkowe własności kontrolki parametru, oddzielonych spacjami:
Opcje = @Opcja([WarunekLubWartosc]) [@Opcja([WarunekLubWartosc])...] (PD-DEKL-O)
gdzie Opcja – jedna z opcji określających dodatkowe własności kontrolki parametru, WarunekLubWartosc - wyrażenie określające warunek zastosowania Opcji (np. dla disablowania) lub wartość opcji (np. wartość tip-u). W tej chwili dostępne są następujące opcje:
Opcja = (D[ISABLE] | H[IDE] | U[PPER] | (RL|RANGE LOW) | (RH|RANGE HIGH) | S[TEP] | T[IP] | M[SG] | COND | CONDMSG) (PD-DEKL-O-O) W WarunekLubWartosc mogą występować wyrażenia. Jeśli WarunekLubWartosc nie zostanie otoczony nawiasami {} – nawiasy te zostaną automatycznie dodane, co spowoduje ewaluację WarunekLubWartosc jako wyrażenia. W przypadku pominięcia WarunekLubWartosc – uznaje się, że dana opcja ma występować bezwarunkowo lub ma wartość pustą. Jeżeli WarunekLubWartosc dotyczy opcji COND to jest on sprawdzany w oparciu o bieżące wartości wszystkich parametrów dynamicznych. Warunek jest sprawdzany:- przy akceptacji kontrolki danego parametru (jeśli walidacja nie powiedzie się – wyświetlany jest komunikat i przywracana jest poprzednia wartość akceptowanego parametru),
- przy akceptacji całego tekstu (np. przed wykonaniem wykresu, zastosowaniem filtra itp.). Jeśli walidacja nie powiedzie się – jest tylko wyświetlany komunikat – błędna wartość jest pozostawiana.
- ustalenie kolejności kontrolek parametrów innej niż kolejność definicji w tekście (bez deklaracji),
- określenie dodatkowych opcji dotyczących kontrolek parametrów (takich, które nie mogą być podane w definicji, np. warunki disablowania i hidowania kontrolek, case,…),
- walidację wartości parametrów (z odpowiednimi komunikatami),
- logiczne zgrupowanie parametrów w jednym miejscu tekstu (np. na początku).
XL017 - Wykorzystanie API ERP XL
Wprowadzenie
System Comarch ERP XL może pracować jako serwer aplikacji udostępniając innym aplikacjom swoje funkcje. Dzięki zaimplementowaniu funkcji API (Application Programming Interface) dowolna aplikacja może w prosty sposób korzystać z mechanizmów, którymi dysponuje Comarch ERP XL. Daje to niespotykaną w rozwiązaniach konkurencyjnych otwartość systemu, pozwalając zarówno na integrację ze standardowymi narzędziami programistycznymi, (np. Microsoft Office i Visual Basic) jak i możliwość integracji z dowolnym systemem informatycznym eksploatowanym w firmie.
System Comarch ERP XL oferuje kilkadziesiąt funkcji pozwalających na zdalną pracę w systemie. Funkcje te są zgromadzone w bibliotece CDN_API.DLL, która jest instalowana łącznie z całym systemem Comarch ERP XL.
Hermetyczność
Duży nacisk przy tworzeniu funkcji XL API położony został na bezpieczeństwo i integralność danych wprowadzanych poprzez te funkcje. Wynikiem tego jest funkcja weryfikująca Użytkownika (XLLogin) oraz wewnętrzny mechanizm Comarch ERP XL kontrolujący poprawność zakończenia działania funkcji API.
Program Comarch ERP XL bardzo dokładnie śledzi wszelkie zmiany w bazie, dokonywane przy pomocy funkcji API. Jeżeli wystąpi błąd, który spowoduje niepoprawne przerwanie działania aplikacji wykorzystującej API, to wszystkie zmiany przez nią wprowadzone, które nie zostały poprawnie zakończone, zostają bezwzględnie wycofane. Warunkiem poprawności zmian wprowadzanych przez API jest albo zakończenie wprowadzania obiektu, który stanowi logiczną całość albo wylogowanie się z systemu funkcją XLLogout.
Wersjonowanie
Ponieważ zakładamy, iż funkcjonalność XL API będzie stale rozszerzana, funkcje te zostały wyposażone w mechanizm wersjonowania. Zapewni on kompatybilność z poprzednimi wersjami API, czyli pozwoli na uniknięcie sytuacji, w których po zmodyfikowaniu (rozszerzeniu) funkcji API Użytkownicy i Integratorzy byliby zmuszeni do wprowadzania odpowiednich zmian w napisanych przez siebie aplikacjach wspomagających.
Ponieważ Comarch ERP XL musi zawsze działać na najnowszych strukturach danych, mechanizm wersjonowania będzie pełnił rolę translatora pomiędzy strukturami API przekazanymi z zewnętrznej aplikacji, a strukturami wykorzystywanymi wewnątrz Comarch ERP XL. Po wartości przekazanej w polu: Wersja, zostanie rozpoznana struktura przekazana do funkcji i dokonane zostanie odpowiednie przepisanie wartości do struktury wewnętrznie wykorzystywanej przez Comarch ERP XL. W momencie, gdy struktury wewnętrzne i zewnętrzne są różne, pola niewykorzystywane zostaną wypełnione domyślnymi wartościami.
Ponieważ struktury danych wykorzystywane przez API służą również do zwracania danych z programu Comarch ERP XL, mechanizm wersjonowania jest mechanizmem działającym w obie strony (dokonana zostanie odpowiednia translacja danych wewnętrznych do struktury przekazywanej na zewnątrz).
Dzięki temu aplikacje napisane w aktualnej wersji API będą działały poprawnie również w kolejnych wersjach Comarch ERP XL, bez potrzeby dokonywania w nich przeróbek (z wyjątkiem sytuacji, w której chcemy rozszerzyć funkcjonalność aplikacji o nowe możliwości Comarch ERP XL API).
Po każdorazowej zmianie struktur, publikowana będzie nowa wersja XL API oznaczona kolejnym numerem. Numer ten będzie nadawany równolegle dla wszystkich struktur API niezależnie od tego, czy została ona zmieniona (np. zmiana tylko w strukturze XLLoginInfo spowoduje zmianę numeru wersji dla wszystkich pozostałych struktur API).
Algorytm postępowania
Typowy scenariusz wykorzystujący funkcje XL-API najprościej jest prześledzić na przykładzie faktury sprzedaży.
Kolejność wywoływanych funkcji jest następująca:
- XLLogin - inicjalizacja bibliotek Comarch ERP XL, login operatora do bazy danych;
- XLNowyDokument – otwarcie nagłówka nowego dokumentu; powoduje zapisanie w bazie danych otwartego nagłówka dokumentu (w omawianym przypadku jest to faktura sprzedaży);
- XLDodajPozycje – dodanie pozycji do faktury; wywołanie tej funkcji może nastąpić wielokrotnie, jeżeli do dokumentu chcemy dopisać więcej niż jedną pozycję;
- XLDodajPlatnosc – zapis płatności do tworzonej faktury; wywołanie tej funkcji jest opcjonalne – jeżeli nie zostanie wywołana, system automatycznie wygeneruje płatność domyślną przy zamykaniu faktury; funkcja może być wołana wielokrotnie – np. w przypadku specyfikacji płatności ratalnej;
- XLZamknijDokument – zakończenie edycji i zamknięcie dokumentu; dokument może być zamykany w trybie normalnym (zapis bez możliwości późniejszej modyfikacji) lub w trybie „do bufora";
- XLLogout – w obrębie jednej sesji otwartej funkcją XLLogin możemy wystawić dowolną ilość dokumentów. Wystawienie każdego z nich powinno zaczynać się wywołaniem funkcji XLNowyDokument i kończyć wywołaniem funkcji XLZamknijDokument.
Przykłady zastosowań
Import dokumentu z pliku .TXT
Jest to szczególnie istotne dla firm wprowadzających bardzo długie transakcje zakupu. Często wraz z towarem jego dostawca dostarcza plik ze specyfikacją dostawy. Korzystając np. z programu Microsoft Excel można napisać prosty program wczytujący taki plik tekstowy do arkusza, a następnie łączący się poprzez XL API z systemem Comarch ERP XL i generujący odpowiedni dokument zakupu.Wsadowy import transakcji
Firmy wielooddziałowe często importują poprzez łącza modemowe transakcje ze swoich oddziałów do centrali, gdzie mają one być następnie wprowadzone do bazy danych. Program importujący transakcje może za pośrednictwem XL API połączyć się z systemem Comarch ERP XL i zapisywać w jego bazie danych zaimportowane z oddziałów dokumenty.Przykładowe kody
Poniżej przedstawione zostały przykładowe kody wykorzystujące XL API.Dadanie ZS z jednym elementem (VBA)
Sub Dodaj_Zamowienie() Dim Sesja As Long Dim Wynik As Long Dim Login As XLLoginInfo_12 Dim IDDokumentu As Long Dim Naglowek As XLDokumentZamNagInfo_12 Dim Element As XLDokumentZamElemInfo_12 Dim Zamkniecie As XLZamkniecieDokumentuZamInfo_12 Sesja = 0 IDDokumentu = 0 With Login.Wersja = 12
.programID = "TestXL"
.Baza = "CDNXL_Test"
.OpeIdent = "ADMIN"
.OpeHaslo = ""
End With Wynik = XLlogin_12(Login, Sesja) If Wynik <> 0 ThenMsgBox("Błąd logowania: " & Wynik)
End If With Naglowek.Wersja = 12
.Typ = 6
.Akronim = "Test"
End With Wynik = XLNowyDokumentZam_12(Sesja, IDDokumentu, Naglowek) If Wynik <> 0 ThenMsgBox("Błąd dodawania nagłówka: " & Wynik)
End If With Element.Wersja = 12
.Ilosc = 10
.CenaKatalogowa = 1
.Towar = "Test"
End With Wynik = XLDodajPozycjeZam_12(IDDokumentu, Element) If Wynik <> 0 ThenMsgBox("Błąd dodawania pozycji: " & Wynik)
End If With Zamkniecie.Wersja = 12
.TrybZamkniecia = 2
End With Wynik = XLZamknijDokumentZam_12(IDDokumentu, Zamkniecie) If Wynik <> 0 ThenMsgBox("Błąd zamykania nagłówka: " & Wynik)
End If Wynik = XLlogout_12(Sesja) If Wynik <> 0 ThenMsgBox("Błąd wylogowania: " & Wynik)
End If
End SubW wersji 2024.1 dokonano zmian w obsłudze funkcji XLDodajPlatnoscZam w zakresie waluty ustalanej na dodawanej płatności zamówienia. Dotychczas, pomimo podawania wartości dla pola Waluta System ustalał każdorazowo na płatności walutę systemową. Niedogodność ta została usunięta i odtąd honorowana jest waluta przekazana do tej funkcji.
Jeżeli Użytkownik nie przekaże waluty do ww. funkcji, wówczas System ustali na płatności walutę zgodną z walutą nagłówka zamówienia.
Przekształcenie ZS do FS (VBA)
Public Sesja As Long Public IDDokumentu As Long Public Wynik As Long Public ElemInfo As XLDokumentElemInfo_12 Sub Zaloguj()Dim Login As XLLoginInfo_12
Sesja = 0
Wynik = 0
With Login
.Wersja = 12
.ProgramId = "X:VBA"
.Baza = "CDN_XL_Test"
.OpeIdent = ""
.OpeHaslo = ""
End With
Wynik = XLLogin_12(Login, Sesja)
If Wynik <> 0 Then
Wynik = MsgBox("Błąd logowania: " & Wynik)
Exit Sub
End If
End Sub Sub DodajNaglowek()Dim NagInfo As XLDokumentNagInfo_12
Worksheets("Nagłówek ZS").Select
Wersja = 12
With NagInfo
.Wersja = 12
.Typ = 4
.ZamFirma = Range("b2").Value
.ZamNumer = Range("c2").Value
.ZamTyp = Range("a2").Value
End With Wynik = 0 Wynik = XLNowyDokument_12(Sesja, IDDokumentu, NagInfo) If Wynik <> 0 ThenWynik = MsgBox("Błąd dodawania nagłówka: " & Wynik)
Exit Sub
End If
End Sub Sub ZamknijNaglowek()Dim ZamkniecieInfo As XLZamkniecieDokumentuInfo_12
ZamkniecieInfo.Wersja = 12
ZamkniecieInfo.Tryb = 0
Wynik = 0
Wynik = XLZamknijDokument_12(IDDokumentu, ZamkniecieInfo)
If Wynik <> 0 Then
Wynik = MsgBox("Błąd zamykania nagłówka: " & Wynik)
Exit Sub
Else
Wynik = MsgBox("Poprawnie dodano dokument WZ.")
End If
End Sub Function Pierwszy_wolny_rekord() As IntegerDim licznik As Long
licznik = 2
Do
If Range("A" & licznik).Value = "" Then
Pierwszy_wolny_rekord = licznik
Exit Function
Else
licznik = licznik + 1
End If
Loop
Stop
End Function Sub DodajPozycje() Worksheets("Pozycja ZS").Select licznik = Pierwszy_wolny_rekord() For x = 2 To licznik - 1With ElemInfo
.Wersja = 12
.ZamFirma = Range("b" & x).Value
.ZamTyp = Range("a" & x).Value
.ZamNumer = Range("c" & x).Value
.ZamLp = Range("d" & x).Value
End With
Wynik = 0
Wynik = XLDodajPozycje_12(IDDokumentu, ElemInfo)
If Wynik <> 0 Then
Wynik = MsgBox("Błąd dodawania pozycji: " & Wynik)
Exit Sub
End If
Next x
End Sub Sub Wyloguj()Wynik = 0
Wynik = XLLogout_12(Sesja)
If Wynik <> 0 Then
Wynik = MsgBox("Błąd wylogowywania: " & Wynik)
Exit Sub
End If
End Sub Sub Przeksztalc_ZS()Zaloguj
DodajNaglowek
DodajPozycje
ZamknijNaglowek
Wyloguj
End SubDodaj Kontrahenta (.NET)
Dla programistów wykorzystujących platformę MS .NET został przygotowany plik assembly, zawierający deklaracje struktur oraz funkcji używanych w XL API. Plik jest dostępny na stronie Comarch (w zasobach Comarch ERP XL). Obecna wersja jest wersją testową, ciągle rozwijaną. Plik należy dołączyć w referencjach projektu (w Microsoft Visual Studio .NET można to zrobić wybierając w menu Project/Add Reference). using System; using cdn_api; namespace XLNowyKontrahent{
class APIDodajKontrahenta
{
[STAThread]
static void Main(string[] args)
{
XLLoginInfo_12 Login = new XLLoginInfo_12();
Login.Wersja = 12;
Login.ProgramID = "API.NET";
Login.Baza = "maciek4n";
Login.OpeIdent = "ADMIN";
Login.OpeHaslo = "";
Int32 SesjaID = 0;
Int32 KontrahentID = 0;
int LoginResult = cdn_api.cdn_api.XLLogin(Login, ref
SesjaID);
if (LoginResult == 0)
{
XLKontrahentInfo_12 Kontrahent = new XLKontrahentInfo_12();
Kontrahent.Wersja = 12;
Kontrahent.Akronim = "Nowy Kontrahent";
int KontrahentResult =
cdn_api.cdn_api.XLNowyKontrahent(SesjaID,ref KontrahentID,Kontrahent);
}
cdn_api.cdn_api.XLLogout(SesjaID);}
}
}Wskazówki do API w C8
Ogólne wytyczne w zakresie konfiguracji
1. Do sprawdzenia są elementy związane z wymogami systemowymi.- Zainstalowany i włączony .NET 4.0.
- Baza systemu ERP XL musi być podpięta dla wszystkich użytkowników komputera
- Musi być wpisany klucz HASP
- Ścieżka do systemu ERP XL musi być w globalnej zmiennej środowiskowej PATH -widzianej przez wszystkich użytkowników systemu, a w szczególności przez ASPNET
- Operator, na którego jest logowanie przez API nie może mieć pustego hasła
- Wymagania związane z użytkownikami Windowsów:
try
{
AttachThreadToClarion(1);
}
catch (Exception){}
} } Powyższe AttachThreadToClarion trzeba wołać przy każdym podnoszeniu nowego wątku. 6. W zmiennej środowiskowej Path powinno być wskazanie w ścieżce na jeden folder z systemem ERP XL (jeżeli jest zawarte odwołanie do innych folderów z wcześniejszymi wersjami należy je usunąć a następnie zapisać zmiany i zrestartować komputer). 7. Trzeba wołać attachthread wg wskazań w dokumentacji (lub jak powyżej) do każdego nowego wątku i nie używać async'a. Jeżeli XLLogin jest wołane w innym wątku niż pozostałe funkcje API to ten wątek musi pozostać aktywny tak długo jak wołamy funkcje API – nie można po jego zakończeniu wołać funkcji API. 8. AttachThreadToClarion woła się 1 raz po utworzeniu wątku .net ( w tymże utworzonym wątku) – czyli 1 raz na wątek (teoretycznie nie ma ograniczenia na ilość wywołań AttachThread). Po wywołaniu AttachThreadToClarion wątek .net i wątek Clariona to jest jeden i ten sam wątek, nie ma więc operacji odwrotnej do AttachThreadToClarion. Jak zakończy się wątek utworzony w .net to zakończy się również w Clarionie i obiekty wątkowe zostaną zwolnione.Plik Konfiguracyjny
Plik konfiguracyjny aplikacji nie pojawia się automatycznie po stworzeniu projektu i należy go dodać samodzielnie. Wystarczy kliknąć prawym przyciskiem myszy na projekt, do którego chcemy dodać plik z konfiguracjami, następnie wybrać opcję "Add New Item" i w oknie wyboru typu pliku zaznaczyć "Application Configuration File". Dalej podaje się jego nazwę - standardowo App.config i potwierdza wybór.Logowanie do API poprzez usługę
Podczas startowania usługi ( np. realizacja zamówienia ZS dokumentem WZ) wołany jest XLLogin, czyli są ustawiane obiekty globalne m.in. kolekcje rodzajów kontrahentów, definicje dokumentów itd. (wszystkie rzeczy konfiguracyjne XL’a). Potem startuje nowy wątek, w którym są wystawiane dokumenty np. WZ. Podczas gdy startuje nowy wątek to część danych konfiguracyjnych kopiuje z wątku głównego (robiona jest kopia żeby wątki się nie blokowały na czas dostępu do danych w wątku głównym). Należy zwrócić uwagę na specyficzne zachowanie usług (jeżeli usługa zawiera metody OnStart, OnStop, AutoResetEvent, WaitOne) – przy jej uruchamianiu wołana jest metoda OnStart (jeśli w niej byłoby umieszczone logowanie do API) to wątek w którym OnStart został wywołany może być za chwilę zakończony, co pociąga za sobą zwolnienie obiektów globalnych ładowanych przy XLLogin. Od tego momentu nowo tworzone wątki generujące np. WZ nie mają skąd skopiować danych konfiguracyjnych. Rozwiązaniem jest w metodzie OnStart uruchomienie nowego wątku, w którym jest logowanie do API i ustawienie po zalogowaniu aby wątek nie zakończył się. Można to zrobić za pomocą statycznego obiektu klasy AutoResetEvent i metody WaitOne. W metodzie OnStop usługi trzeba wtedy zawołać metodę Set na tym obiekcie (po wylogowaniu z API).API a aplikacje działające w oparciu o webserwis
W architekturze serwera opartego o WCF i klienta, problemem dla clariona jest kończenie wątku głównego gdy proces się nie kończy – czyli z punktu widzenia systemu operacyjnego wszystko jest poprawnie, jest wątek główny samej usługi. Wątek ten nie jest jednak związany z clarionem, więc w clarionie dopiero wątek w którym następuje logowanie do API jest wątkiem głównym – po wylogowaniu wątek ten się kończy mimo iż proces nadal działa – czy z punktu widzenia clariona sytuacja niemożliwa do uzyskania – nie ma czegoś takiego jak proces bez żadnego wątku, dlatego tez z tego powodu co jakiś czas zgłaszane mogą być wyjątki. Rozwiązaniem będzie przy starcie usługi wydzielenie jednego wątku, związanie go z clarionem (AttachThread…) i pozostawieniem aktywnym przez cały czas działania usługi. W wątku tym trzeba wywołać od razu XLLogin. I teraz można zrobić od razu XLLogout, lub pozostawić tą sesję aktywną i w niej wystawiać dokumenty z wątków tworzonych na żądanie klientów – będzie szybciej działać. Czyli teraz nie byłoby już wołania XLLogin,XLNowyDokument…, XLLogout za każdym razem, ale jedynie XLNowyDokument z ID sesji ustalonym w wątku pierwszym. Trzeba tak zmodyfikować dodatek, żeby choć jeden wątek procesu był podłączony do wątku clarionowego, tak aby nie było sytuacji, w której proces jest aktywny a żaden wątek nie jest połączony z clarionem. To wymaganie nie dotyczy okresu aktywności przed pierwszym wywołaniem AttachThreadToClarion. Możliwe problemy do weryfikacji:- czy IIS po wylogowaniu z API od razu zamknie wątek czy zostawi w puli na pewien czas
- czy podczas pracy w innym wątku na API IIS nie zamknie takiego zużytego wątku z puli, bo już tam długo tkwił (wtedy zwolnione zostaną obiekty globalne z których może chcieć korzystać pracujący wątek – one pracują w ramach jednego procesu w3wp)
Connection string
Po zmianach w API XLPolaczenie nie zwraca automatycznie danych odnośnie połączenia. Funkcja API zwraca niezbędne dane do połączeń w aplikacji uzupełnione w tabeli cdn.Konfig i Kon_Numer = -137, Kon_Komentarz = ‘ConnectionString’. Od wersji 2019.0 XLPolaczenie zwraca dane z funkcji skalarnej CDN.PodajDodatokwyConnectString – co pozwala na dynamiczną weryfikację połączenia, w przeciwieństwie do stałej danej wpisanej w CDN.Konfig.Debugowanie od wersji XL 2021
Od wersji 2021.0 podłączenie się pod procesy XL debugerem zostało standardowo zablokowane ze względu na zalecenia działu bezpieczeństwa. W celu debugowania należy zastosować pakiet deweloperski dostępny na stronach walidowanych dla partnerów w sekcji dodatki dla wersji XL 2021 ( pliki z pakietu należy wgrać do katalogu XL następnie uruchomić rejestr.bat).Funkcje API wspierające operacje KSeF
W wersji 2024.0 przygotowany został szereg funkcji API, służących do komunikacji z KSeF.
Funkcje API do komunikacji z KSeF | ||
Nazwa funkcji | Obsługa | |
XLKSeFOtworzSesje | Funkcja służąca do nawiązywania sesji KSeF | |
XLKSeFZamknijSesje | Funkcja służąca do zamykania sesji KSeF | |
XLKSeFDodajDokumentyDoWyslania | Funkcje służące do wysyłania faktury/faktur do KSeF. Pierwsza z nich służy do podania listy dokumentów, które mają zostać wysłana, druga zaś do wysyłki tej listy dokumentów | |
XLKSeFWyslijDokumenty | ||
XLKSeFPobierzUPO | Funkcja służąca do pobierania UPO do wskazanej sesji/dokumentu | |
XLKSeFUstalStatusDokumentu | Dodanie rekordu KSeFDokumenty | Funkcje służące do dodawania/modyfikacji/usuwania rekordów tabeli KSeFDokumenty, tj. zapisania w Systemie informacji o: - Dla faktur sprzedaży: o dokonanej wysyłce faktur/pobranym UPO dokonanym poza Systemem Comarch ERP XL - Dla faktur zakupu: o fakturze KSeF na podstawie której zarejestrowano dany dokument zakupu, dla przypadków, kiedy faktury te nie były importowane wprost do Systemu, ale poza nim |
XLKSeFZmienStatusDokumentu | Zmiana rekordu KSeFDokumenty | |
XLKSeFUsunStatusDokumentu | Usunięcie rekordu KSeFDokumenty | |
XLKSeFSpinajZDokumentem | Funkcja służąca do spięcia faktury zaimportowanej z KSeF z dokumentem zakupu zarejestrowanym w Comarch ERP XL | |
XLKSeFRozłaczZDokumentem | Funkcja służąca do rozłączania faktury zaimportowanej z KSeF z dokumentem zakupu zarejestrowanym w Comarch ERP XL | |
XLKSeFPobierzDokumenty | Funkcja służąca do pobrania faktur zakupu z KSeF |
Funkcja służąca do otwierania sesji KSeF
Za pomocą funkcji XLKSeFOtworzSesje Operator może nawiązać sesję KSeF, w ramach której po użyciu kolejnej funkcji API czy to wyśle faktury do KSeF, czy to pobierze UPO. Operator może podać Systemowi informację o sposobie w jaki ma być dokonane uwierzytelnienie w KSeF w następujący sposób:
- Jeżeli Użytkownik wskaże, że ma to być token i poda ten token, wówczas to za jego pomocą dokonane zostanie uwierzytelnienie. Jeżeli token nie zostanie podany, wówczas System dokona uwierzytelnienia za pomocą tokena z pieczątki firmy, o ile Operator na karcie ma włączone używanie tokena, w przeciwnym razie do uwierzytelnienia nie dojdzie, więc i sesja KSeF nie zostanie nawiązania
- Jeżeli Użytkownik wskaże, że uwierzytelnienie ma się odbyć przy użyciu certyfikatu, wówczas System podniesie listę certyfikatów w trybie do wyboru i uwierzytelni za pomocą wskazanego certyfikatu. Będzie to miało miejsce wyłącznie przy trybie interaktywnym pracy Operatora, w przypadku trybu wsadowego uwierzytelnienie się nie uda, więc i sesja KSeF nie zostanie nawiązana
- Jeżeli Użytkownik nie wskaże sposobu uwierzytelnienia, wówczas będzie to oznaczało, że System ma go dokonać wg domyślnych ustawień
- Jeżeli na karcie Operatora włączone jest używanie tokena, wówczas dokonane zostanie uwierzytelnienie tokenem podanym do funkcji API lub tokenem z pieczątki firmy, jeżeli w API go nie podano. Jeżeli token nie zostanie zidentyfikowany, wówczas nastąpi próba uwierzytelniania przy pomocy certyfikatu, ale wyłącznie, jeżeli Użytkownik pracuje w trybie interaktywnym.
- Jeżeli na karcie Operatora wyłączone jest używanie tokena, wówczas nastąpi próba uwierzytelniania przy pomocy certyfikatu, ale wyłącznie, jeżeli Użytkownik pracuje w trybie interaktywnym.
Zachowanie Systemu w zakresie uwierzytelnienia zależne jest dodatkowo od rodzaju sesji, którą nawiązuje Operator (plik wsadowy/wysyłka interaktywna). Nawiązanie sesji wsadowej KSeF możliwe jest wyłącznie przy pomocy certyfikatu.
Funkcja służąca do zamykania sesji KSeF
Udostępniona została funkcja XLKSeFZamknijSesje pozwalająca na zamknięcie danej sesji KSeF. Jeżeli Operator poda numer sesji, wówczas to ona zostanie zamknięta, wywołanie funkcji bez podania numeru sesji będzie zaś oznaczało, że System ma zamknąć sesję utworzoną w XLKSeFOtworzSesje.
Za pomocą tej funkcji można zamknąć dowolną sesję, również innego Operatora, nawiązaną z innego modułu.
Funkcje służące do wysyłania dokumentów do KSeF
Udostępnione zostały funkcje służące do wysyłania faktury/faktur do KSeF. Funkcja XLKSeFDodajDokumentyDoWyslania służy do podania listy dokumentów, które mają zostać wysłane, funkcja XLKSeFWyslijDokumenty zaś do wysyłki tej listy dokumentów.
Aby wysłać dokumenty do KSeF Operator powinien wykonać poniższe działania:
- XLKSeFOtworzSesje – nawiązanie sesji z KSeF
- XLKSeFDodajDokumentyDoWyslania – wskazanie dokumentu/dokumentów do wysłania
- XLKSeFWyslijDokumenty – wysłanie ww. dokumentów do KSeF
- XLKSeFZamknijSesje – zamknięcie ww. sesji KSeF
Funkcja służąca do pobierania UPO
Pobrania UPO można dokonać za pomocą funkcji XLKSeFPobierzUPO. Użytkownik może w niej podać numer sesji, dla której ma zostać pobrane UPO lub GID dokumentu, dla którego ma zostać pobrane UPO. W tym ostatnim przypadku System samodzielnie ustali numer sesji, w ramach której został wysłany podany dokument i pobierze UPO dla tego dokumentu oraz wszystkich pozostałych dokumentów wysłanych w ramach tej sesji.
Aby możliwe było pobranie UPO dla danej sesji, taka sesja musi być zamknięta. Podczas pracy przy użyciu funkcji API System samodzielnie nie dokonuje zamknięcia sesji, dla której wywołane zostanie pobranie UPO, takiego zamknięcia musi dokonać Użytkownik. Z kolei każda komunikacja ze środowiskiem KSeF odbywa się po nawiązaniu sesji KSeF. Powyższe determinuje określony model pracy Użytkownika korzystającego z funkcji API.
- Scenariusz 1: wysłanie faktur do KSeF i pobranie dla nich UPO
- XLKSeFOtworzSesje – nawiązanie sesji z KSeF (sesja S1)
- XLKSeFDodajDokumentyDoWyslania i XLKSeFWyslijDokumenty – wysłanie dokumentu do KSeF (w ramach sesji S1)
- XLKSeFZamknijSesje – zamknięcie ww. sesji S1
- XLKSeFOtworzSesje – nawiązanie sesji z KSeF (S2)
- XLKSeFPobierzUPO – pobranie UPO (dla sesji S1 lub wysłanego dokumentu)
- XLKSeFZamknijSesje – zamknięcie ww. sesji S2
- Scenariusz 2: pobranie UPO dokonywana z opóźnieniem, dokumenty wysłane w ramach sesji S1, sesja S1 zamknięta:
- XLKSeFOtworzSesje – nawiązanie sesji z KSeF (sesja S2)
- XLKSeFPobierzUPO – pobranie UPO (dla sesji S1 lub wysłanego dokumentu)
- XLKSeFZamknijSesje – zamknięcie ww. sesji S2
- Scenariusz 3: pobranie UPO dokonywana z opóźnieniem, dokumenty wysłane w ramach sesji S1, sesja S1 nie jest zamknięta:
- XLKSeFOtworzSesje – nawiązanie sesji z KSeF (sesja S2)
- XLKSeFZamknijSesje – wykonywana dla S1
- XLKSeFPobierzUPO – pobranie UPO (dla sesji S1 lub wysłanego dokumentu)
- XLKSeFZamknijSesje – zamknięcie ww. sesji S2
- Scenariusz 4: Operator zatwierdza dokument z automatyczną jego wysyłką a następnie pobiera dla niego UPO
- Operator loguje się do API a następie dodaje FS i zamyka z XLZamknijDokument: KSeF=4 (System nawiązuje sesję S1, wysyłka w ramach sesji S1)
- XLKSeFZamknijSesje – wywołana dla S1
- XLKSeFPobierzUPO – pobranie UPO (dla sesji S1 lub wysłanego dokumentu)
- XLKSeFZamknijSesje – zamknięcie ww. sesji S2
Funkcje dodawania/zmiany/usuwania rekordu w tabeli KSeFDokumenty
Ideą ww. funkcji jest tworzenie/modyfikacja rekordów tabeli KSeFDokumenty, tj. zapisanie w Systemie informacji j.n.:
- Dla faktur sprzedaży: o dokonanej wysyłce faktur/pobranym UPO dokonanym poza Systemem Comarch ERP XL
- Dla faktur zakupu: o fakturze KSeF na podstawie, której zarejestrowano dany dokument zakupu, dla przypadków, kiedy faktury te nie były importowane wprost do Systemu, ale poza nim
- XLKSeFUstalStatusDokumentu – dodanie rekordu do KSeFDokumenty
- XLKSeFZmienStatusDokumentu – zmiana rekordu KSeFDokumenty
- XLKSeFUsunStatusDokumentu – usunięcie rekordu KSeFDokumenty
Funkcje służące do spinania/rozłączania faktury zakupu z fakturą KSeF
Za pomocą funkcji XLKSeFSpinajZDokumentem Użytkownik może dokonać spięcia faktury zaimportowanej z KSeF z dokumentem zakupu zarejestrowanym w Comarch ERP XL, za pomocą funkcji XLRozłaczZDokumentem zaś dokonać rozłączenia tych obiektów.
Funkcja pobierania faktur z KSeF
Funkcja XLKSeFPobierzDokumenty służy do pobrania faktur zakupu z KSeF. Za jej pomocą Operator może dokonać importu tych faktur, w których Nabywcą jest firma będąca Użytkownikiem Systemu Comarch ERP XL. Import ten może się odbyć według identycznych kryteriów, jak te dostępne z interfejsu tj. można w ten sposób zaimportować fakturę o konkretnym numerze KSeF, faktury zarejestrowane w podanym okresie czasu lub dokonać importu nowych faktur tj. faktur z datą równą i większą od najpóźniejszego z dotąd zaimportowanych dokumentów.
XL133 - Dokumentacja znaczników XML pliku synchronizacyjnego ERP XL - Comarch Mobile
Struktura plików synchronizacyjnych z bazy mobilnej




Sekcja informacyjna (INFOBLOK)
Tabela 1 Sekcja informacyjna i odpowiednik pól w tabelach bazy ERP XLAtrybut | Opis | ERP XL |
<INFOBLOK/> | Sekcja informacyjna | PicoKonfig |
OddzialID | ID oddziału Mobile | PcK_PicoID |
CentrumID | ID centrum będącego oddziałem | PcK_CentrumID |
WersjaPliku | Wersja pliku | |
Kierunek | Kierunek synchronizacji (1 – plik dla oddziału, 2 – plik od oddziału) |
Kontrahenci (KNTI)
Tabela 2 Sekcja z kontrahentami i odpowiednik pól w tabelach bazy ERP XL<KNTI/> | Opis | ERP XL |
<KNT/> | Sekcja z kontrahentami | KntKarty, KntOpisy |
GIDTyp | Identyfikator kontrahenta | Knt_GIDTyp |
GIDNumer | Identyfikator kontrahenta | - |
KnANumer | Identyfikator aktualnego adresu | - |
Adres | Dodatkowe pole adresu | Knt_Adres |
Wojewodztwo | Nazwa województwa | Knt_Wojewodztwo |
Pesel | Pesel kontrahenta | Knt_Pesel |
Akwizytor | Czy kontrahent jest akwizytorem? | Knt_Akwizytor |
PlatnikVAT | Czy kontrahent jest płatnikiem VAT? | Knt_PlatnikVAT |
Status | Status kontrahenta
|
Knt_Status |
Typ | Czy kontrahent jest dostawcą/odbiorcą? 08 – dostawca 16 – odbiorca 24 – dostawco-odbiorca | Knt_Typ |
Oddzialowy | Czy kontrahent został przesłany do oddziału? 0 – NIE, 1 – TAK | Knt_Oddzialowy |
KodP | Kod pocztowy | Knt_KodP |
Miasto | Adres kontrahenta | Knt_Miasto |
Ulica | Adres kontrahenta | Knt_Ulica |
Regon | Nr REGON kontrahenta | Knt_Regon |
Telefon1 | Telefon do biura | Knt_Telefon1 |
Telefon2 | Telefon domowy | Knt_Telefon2 |
Fax | Połączenia telefoniczne | Knt_Fax |
Telex | Połączenia telefoniczne | Knt_Telex |
Adres poczty elektronicznej | Knt_Email | |
Modem | Połączenia telefoniczne | Knt_Modem |
URL | Adres strony w internecie | Knt_URL |
Symbol | Symbol waluty | Knt_Symbol |
Dewizowe | Czy kontrahent dewizowy? | Knt_Dewizowe |
Knt_MSTwrGrupaNumer | Identyfikator grupy towarów dla Comarch Mobile | Knt_MSTwrGrupaNumer |
Nazwa1 | Pierwsza część nazwy kontrahenta | Knt_Nazwa1 |
Nazwa2 | Druga część nazwy kontrahenta | Knt_Nazwa2 |
Nazwa3 | Trzecia część nazwy kontrahenta | Knt_Nazwa3 |
Cena | Rodzaj ceny sprzedaży – domyślny dla dokumentów | Knt_Cena |
FormaPl | Forma płatności (sprzedaż) | Knt_FormaPl |
LimitOkres | Maksymalny okres odroczenia płatności | Knt_LimitOkres |
SposobDostawy | Domyślny sposób dostawy dla kontrahenta w transakcjach | Knt_SposobDostawy |
CechaOpis | Opis przepisywany na dokument | Knt_CechaOpis |
DataUtworzenia | Data utworzenia karty kontrahenta | Knt_DataUtworzenia |
Rodzaj | Rodzaj kontrahenta | Knt_Rodzaj |
Osoba | Domyślna osoba kontrahenta | Knt_Osoba |
Akronim | Skrócona nazwa kontrahenta | Knt_Akronim |
NipE | NIP prezentowany na ekranie | Knt_NipE |
Nip | NIP bez kresek | Knt_Nip |
NipPrefiks | Prefiks numeru NIP | Knt_NipPrefiks |
OpeTyp | Operator zakładający kartę | Knt_OpeTyp |
OpeNumer | Operator zakładający kartę | Knt_OpeNumer |
FrsID | Identyfikator centrum struktury praw | Knt_FrsID |
Opis | Treść opisu karty kontrahenta | KnO_Opis |
Adresy kontrahenta (KNAI)
Tabela 3 Sekcja z adresami kontrahenta i odpowiednik pól w tabelach bazy ERP XL<KNAI/> | Opis | ERP XL |
<KNA/> | Sekcja z adresami kontrahenta | KntAdresy |
GIDTyp | Identyfikator zapisu | KnA_GIDTyp |
GIDNumer | Identyfikator zapisu | - |
Akronim | Skrócona nazwa kontrahenta | KnA_Akronim |
Wysylkowy | Ten adres jest adresem wysyłkowym | KnA_Wysylkowy |
Nazwa1 | Pierwsza część nazwy kontrahenta | KnA_Nazwa1 |
Nazwa2 | Druga część nazwy kontrahenta | KnA_Nazwa2 |
Nazwa3 | Trzecia część nazwy kontrahenta | KnA_Nazwa3 |
KodP | Kod pocztowy | KnA_KodP |
Miasto | Adres kontrahenta | KnA_Miasto |
Ulica | Adres kontrahenta | KnA_Ulica |
Telefon1 | Telefon do biura | KnA_Telefon1 |
Telefon2 | Telefon zastępczy | KnA_Telefon2 |
Fax | Połączenia telefoniczne | KnA_Fax |
Telex | Połączenia telefoniczne | KnA_Telex |
Adres poczty elektronicznej | KnA_Email | |
URL | nieużywane | - |
Modem | Połączenia telefoniczne | KnA_Modem |
LastModL | Data ostatniej modyfikacji lokalnej | KnA_LastModL |
Domyslny | Adres domyslny | KnA_Domyslny |
Nip | Nip bez kresek | KnA_Nip |
NipE | Nip prezentowany na ekranie | KnA_NipE |
NipPrefiks | Prefiks numeru NIP | KnA_NipPrefiks |
Regon | Numer REGON kontrahenta | KnA_Regon |
Osoby kontrahenta (KNSI)
Tabela 4 Sekcja z osobami kontrahenta i odpowiednik pól w tabelach bazy ERP XL<KNSI/> | Opis | ERP XL |
<KNS> | Sekcja z opisami kontrahenta | KntOsoby |
GIDNumer | Identyfikator kontrahenta,z którym zapis jest związany | - |
RolaDecyzyjna | Id roli decyzyjnej osoby ze słownika “rola decyzyjna” | KnS_RolaDecyzyjna |
Stanowisko | Stanowisko zajmowane przez osobę | KnS_Stanowisko |
Notatki | Adnotacje o osobie | KnS_Notatki |
Nazwa | Imię I nazwisko osoby | KnS_Nazwa |
KntLp | Kolejny numer osoby | KnS_KntLp |
Telefon | Telefon prywatny | KnS_Telefon |
Adres poczty elektronicznej | KnS_Email | |
Fax | Połączenia telefoniczne | KnS_Fax |
TelefonK | Numer telefonu komórkowego | KnS_TelefonK |
LastModL | Data i czas ostatniej modyfikacji | KnS_CzasModyfikacji |
Archiwalny | Flaga określająca, czy osoba jest archiwalna | KnS_Archiwalny |
Upowazniona | Czy osoba jest upoważniona do odbioru FA | KnS_Upowazniona |
UpowaznionaZam | Czy osoba jest upoważniona do składania zamówienia | KnS_UpowaznionaZam |
Dzial | Dział, w którym pracuje osoba | KnS_Dzial |
Tytul | Tytuł osoby | KnS_Tytul |
HasloChk | Litery kontrolne hasła | KnS_HasloChk |
HasloOsoby | Hasło osoby | KnS_HasloOsoby |
UpoDoK | Osoba upoważniona do kontaktów | KnS_UpoDoK |
CzyDomyslna | Czy osoba jest domyślna dla kontrahenta? | - |
Atrybuty kontrahenta (ATRI*)
<ATRI/> | Opis | ERP XL |
<ATR> | Sekcja z atrybutami kontrahenta | Atrybuty, AtrybutyWartosci |
Id | ID atrybutu | |
ObiTyp | GID obiektu, do którego przypisany jest atrybut | Atr_ObiTyp |
ObiNumer | GID obiektu, do którego przypisany jest atrybut | - |
ObiLp | GID obiektu, do którego przypisany jest atrybut | Atr_ObiLp |
ObiSubLp | - | - |
AtkId | Id klasy atrybutu | Atr_AtkId |
Modyfikuj | - | |
Wartosc | Wartość atrybutu | Atr_Wartosc |
Załączniki kontrahenta (DABI*)
<DABI/> | Opis | ERP XL |
<DAB> | Sekcja z załącznikami kontrahenta | DaneBinarne |
ZewnetrznyId | Identyfikator załącznika z Comarch Mobile | DAB_ZewnetrznyId |
DAB_Id | ID załącznika w systemie | - |
Id | - |
Zamówienia (ZANI)
Tabela 7 Sekcja z zamówieniami i odpowiednik pól w tabelach bazy ERP XL<ZANI/> | Opis | ERP XL |
<ZAN> | Sekcja z nagłówkami zamówień | ZamNag, ZaNOpisy |
DokumentNr | Numer zamówienia z oddziału | ZaN_ZamRok, ZaN_ZamMiesiac, ZaN_ZamSeria, ZaN_ZamNumer |
GIDTyp | GIDTyp zamówienia | ZaN_GIDTyp |
OpeNumer | Identyfikator operatora wystawiającego | ZaN_OpeNumerW |
GIDNumer | Identyfikator rekordu | - |
OddDokID | Identyfikator dokumentu nadany w oddziale | ZaN_OddDokID |
DataWystawienia | Data wystawienia oferty/zamówienia | ZaN_DataWystawienia |
GodzinaWystawienia | Godzina wystawienia dokumentu | ZaN_GodzinaWystawienia |
Url | url | ZaN_Url |
WgStatusu | ||
Stan | Stan dokumentu Możliwe wartości: Stan_zrealizowane = 21 - maska_archiw + w_realizacji, Stan_odrzucone = 19 - maska_archiw + potwierdzone, Stan_anul_potwierdzone = 35 - maska_anulowane + potwierdzone, Stan_maska_archiw = 16, Stan_maska_anulowane = 32, Stan_w_realizacji = 5, Stan_zaakceptowane = 4, Stan_potwierdzone = 3, Stan_zamowienie = 2, Stan_oferta = 1, Stan_zapytanie = 0. | ZaN_Stan |
Blokuj | ||
Modyfikuj | ||
DokumentObcy | Oznaczenie oferty/zamówienia u kontrahenta | ZaN_DokumentObcy |
RodzajCeny | ||
KntTyp | Identyfikator kontrahenta | ZaN_KntTyp |
KntNumer | Identyfikator kontrahenta | ZaN_KntNumer |
KnDTyp | GID odbiorcy | ZaN_KnDTyp |
KnDNumer | GID odbiorcy | ZaN_KnDNumer |
AdWNumer | Identyfikator adresu wysyłkowego | ZaN_AdWNumer |
KnPTyp | Identyfikator płatnika | ZaN_KnPTyp |
KnPNumer | Identyfikator płatnika | ZaN_KnPNumer |
Rabat | Rabat globalny (% lub kwotowy) | ZaN_Rabat |
FlagaNB | Flaga netto/brutto | ZaN_FlagaNB |
FormaNr | Numer formy płatności 10 – Gotówka 20 – Przelew 30 – Kredyt 40 – Czek 50 – Karta 60 – Inne | ZaN_FormaNr |
TerminPlatnosci | Termin płatności | ZaN_TerminPlatnosci |
Waluta | Symbol waluty | ZaN_Waluta |
WspolnaWaluta | Czy wspólna waluta na zamówieniach | ZaN_WspolnaWaluta |
KursL | Licznik kursu | ZaN_KursL |
KursM | Mianownik kursu | ZaN_KursM |
ZamSeria | Seria zamówienia | ZaN_ZamSeria |
ZamTyp | Typ zamówienia/oferty oferta na zakup (dostawcy), 768 - oferta sprzedaży (nasza), 1152 - zamówienie na zakup (do dostawcy), 1280 - zamówienie sprzedaży (od klienta), 2688 - zapyt. ofert. na zakup, 2816 - zapyt. ofert. na sprzedaż, Powstały w wyniku sklejenia masek: 1024 - zamówienie, 512 - oferta, 2048 - dokument pomocniczy (zapytanie lub potwierdzenie), 256 - na sprzedaż, 128 - na zakup. | ZaN_ZamTyp |
ZamNumer | Numer zamówienia | ZaN_ZamNumer |
ZamRok | Rok zamówienia | ZaN_ZamRok |
ZamMiesiac | Miesiąc zamówienia | ZaN_ZamRok |
Rodzaj | Rodzaj transakcji 0-krajowa; 1-inna zagr., VAT 0%; 2-inna zagr., VAT dowolny; 6-ww dostawa, VAT 0%; 7-ww dostawa, VAT dowolny; 8-ww dostawa trójstronna, VAT 0%; 9-ww dostawa trójstronna, VAT dowolny; 10-ww nabycie, VAT 0%; 11-ww nabycie, VAT dowolny; 12-ww nabycie trójstronne, VAT 0%; 13-ww nabycie trójstronne, VAT dowolny; | ZaN_Rodzaj |
RokMiesiac | Rok i miesiąc dokumentu | ZaN_RokMiesiac |
FrsID | Identyfikator miejsca w strukturze firmy | ZaN_FrsID |
OpiTyp | Opiekun | ZaN_OpiTyp |
OpiNumer | Opiekun | ZaN_OpiNumer |
CechaOpis | Cecha zamówienia | ZaN_CechaOpis |
MagTyp | Identyfikator magazynu domyślnego | ZaN_MagTyp |
MagNumer | Identyfikator magazynu domyślnego | ZaN_MagNumer |
DataRealizacji | Przewidywana data realizacji zamówienia | ZaN_DataRealizacji |
RealWCalosci | Czy realizacja zamówienia ma być tylko w całości | ZaN_RealWCalosci |
Opis | Opis zamówienia | ZnO_Opis |
WtrID | Identyfikator promocj iwartościowej | ZaN_WtrID |
WtrProgId | Identyfikator progu promocji wartościowej | ZaN_WtrProgId |
ExpoNorm | Rodzaj transakcji 0-krajowa; 1-inna zagr., VAT 0%; 2-inna zagr., VAT dowolny; 6-ww dostawa, VAT 0%; 7-ww dostawa, VAT dowolny; 8-ww dostawa trójstronna, VAT 0%; 9-ww dostawa trójstronna, VAT dowolny; 10-ww nabycie, VAT 0%; 11-ww nabycie, VAT dowolny; 12-ww nabycie trójstronne, VAT 0%; 13-ww nabycie trójstronne, VAT dowolny; | ZaN_ExpoNorm |
Elementy zamówienia (ZAEI)
Tabela 8 Sekcja z elementami zamówienia i odpowiednik pól w tabelach bazy ERP XL<ZAEI/> | Opis | ERP XL |
<ZAE> | Sekcja z elementami zamówienia | ZamElem |
GIDTyp | Identyfikator nagłówka | ZaE_GIDTyp |
Pozycja | Pozycja elementu na dokumencie | ZaE_Pozycja |
OddElemId | Id elementu w oddziale | ZaE_OddElemId |
GIdLp | Identyfikator nagłówka | ZaE_GIDLp |
Modyfikuj | ||
DataPotierdzeniaDostawy | Data potwierdzenia przyjęcia dostawy | ZaE_DataPotwierdzeniaDostawy |
MagNumer | Identyfikator magazynu domyślnego | ZaE_MagNumer |
JmZ | Jednostka pomocnicza | ZaE_JmZ |
PrzeliczM | Mianownik przelicznika jednostki miary | ZaE_PrzeliczM |
PrzeliczL | Licznik przelicznika jednostki miary | ZaE_PrzelicznL |
TwrNumer | Identyfikator towaru | ZaE_TwrNumer |
Wartosc | ||
GrupaPod | Grupa podatku (A,B,C itd.) | ZaE_GrupaPod |
StawkaPod | Stawka VAT | ZaE_StawkaPod |
CenaSpr | Cena sprzedaży | ZaE_CenaSpr |
Rabat | Procent udzielonego rabatu | ZaE_Rabat |
CenaKatalogowa | Cena z karty towaru | ZaE_CenaKatalogowa |
Ilosc | Ilość na jaką opiewa transakcja | ZaE_Ilosc |
IloscJmZ | ||
FlagaNB | Flaga NB N – linia od netto B – linia od brutto | ZaE_FlagaNB |
Opis | Opis elementu zamówienia | ZnO_Opis |
Gratis | Rodzaj elementu promocji pakietowej 0 – element, 1 – gratis | ZaE_Gratis |
PakietID | Identyfikator promocji pakietowej | ZaE_PakietID |
PakietProgID | ||
Waluta | Symbol waluty | ZaE_Waluta |
KursL | ZaE_KursL | |
KursM | ZaE_KursM |
Dokumenty handlowe (TRNI)
Tabela 9 Sekcja z dokumentami handlowymi i odpowiednik pól w tabelach bazy ERP XL<TRNI/> | Opis | ERP XL |
<TRN> | Sekcja z nagłówkami dokumentów handlowych | TraNag |
GIDTyp | Identyfikator rekordu 1521 - FZ 1529 - FZK 1489 - PZ 1497 - PZK 1490 - PZI 1498 - PKI 2033 - FS 2041 - FSK 2036 - FW 2044 - FWK 2001 - WZ 2009 - WZK 2034 - PA 2042 - PAK 2035 - RA 2043 - RAK 1968 - TF 2039 - RS 2047 - RSK 2003 - KK 2037 - FSE 2045 - FKE 2005 - WZE 2013 - WKE 1312 - FZL 1824 - FSL 1828 - FEL 1836 - KEL 1616 - RW 1624 - RWK 1617 - PW 1625 - PWK 1603 - MMW 1604 - MMP 1600 - MM | TrN_GIDTyp |
GIDNumer | ID dokumentu w bazie mobilnej | TrN_GIDNumer |
OddDokID | ID dokumentu w bazie mobilnej | TrN_OddDokId |
SpiTyp | GID Spinacza | TrN_SpiTyp |
SpiNumer | GID Spinacza | TrN_SpiNumer |
Data2 | Data wystawienia dokumentu | TrN_Data2 |
Data3 | Data sprzedaży/zakupu | TrN_Data3 |
DataVat | - | - |
DataMag | Data przyjęcia/wydania towaru | TrN_DataMag |
Url | url | TrN_Url |
DokumentObcy | Numer dokumentu obcego | TrN_DokumentObcy |
RodzajCeny | - | - |
KntTyp | GID Kontrahenta | TrN_KntTyp |
KntNumer | GID Kontrahenta | TrN_KntNumer |
KnDTyp | GID Kontrahenta docelowego | TrN_KnDTyp |
KnDNumer | GID Kontrahenta docelowego | TrN_KnDnumer |
AdWNumer | GID adresu wysyłkowego | TrN_AdWNumer |
KnPTyp | GID płatnika | TrN_KnPTyp |
KnPNumer | GID Płatnika | TrN_KnPNumer |
FlagaNB | Flaga netto/brutto N – netto B – brutto | TrN_FlagaNB |
FormaNr | Forma płatności 10 – Gotówka 20 – Przelew 30 – Kredyt 40 – Czek 50 – Karta 60 – Inne | TrN_FormaNr |
Termin | Domyślny termin płatności | TrN_Termin |
DokumentNr | - | - |
TrNTyp | Typ transakcji 1-faktura zakupu; 2-przyjęcie zewnętrzne; 3-faktura sprzedaży; 4-wydanie zewnętrzne; 5-rozchód wewnętrzny; 6-przychód wewnętrzny; 7-przesunięcie międzymagazynowe; 10-paragon 12-AVista zakupu 13-AVista sprzedaży 19-Korekta kosztu 20-Faktura Eksportowa 21-Wydanie zewnętrzne eksportowe 22-Faktura wewnętrzna | TrN_TrNTyp |
TrNSeria | Seria dokumentu | TrN_TrNSeria |
TrNNumer | Numer dokumentu | TrN_TrNNumer |
TrNRok | Rok dokumentu | TrN_TrNRok |
TrNMiesiac | Miesiąc dokumentu | TrN_TrNMiesiac |
FrsID | Identyfikator centrum-właściciela dokumentu | TrN_FrsID |
Fiskalny | Czy wydrukowano fiskalnie?
0 – sprzedaż zwykła
|
TrN_Fiskalny |
OpeNumer | GID operatora wystawiającego | TrN_OpeNumer |
OpiTyp | Opiekun kontrahenta | TrN_OpiTyp |
OpiNumer | Opiekun kontrahenta | TrN_OpiNumer |
CechaOpis | Wartość cechy transakcji | TrN_CechaOpis |
Waluta | Symbol waluty | TrN_Waluta |
Opis | Opis dokumentu | TnO_Opis |
MagazynZ | Akronim magazynu źródłowego | |
WtrId | Identyfikator promocji wartościowej | TrN_WtrId |
WtrProgId | Identyfikator progu promocji wartościowej | TrN_WtrProgId |
ExpoNorm | Rodzaj transakcji 1-krajowa; 2-inna zagr., VAT 0%; 3-inna zagr., VAT dowolny; 4-inna zagr., korekta VAT dowolny -> VAT 0%; 5-inna zagr., korekta VAT 0% -> VAT dowolny; 6-ww dostawa, VAT 0%; 7-ww dostawa, VAT dowolny; 8-ww dostawa trójstronna, VAT 0%; 9-ww dostawa trójstronna, VAT dowolny; 10-ww nabycie, VAT 0%; 11-ww nabycie, VAT dowolny; 12-ww nabycie trójstronne, VAT 0%; 13-ww nabycie trójstronne, VAT dowolny; 14-inna zagr., VAT 0%, dla FW (import usług); 15-inna zagr., VAT dowolny, dla FW (import usług); 16-ww dostawa, korekta VAT dowolny -> VAT 0%; 17-ww dostawa, korekta VAT 0% -> VAT dowolny; 18-ww dostawa trójstronna, korekta VAT dowolny -> VAT 0%; 19-ww dostawa trójstronna, korekta VAT 0% -> VAT dowolny; 20-podatnikiem jest nabywca; 21-ww dostawa, VAT dowolny, transakcja opodatkowana poza terytorium kraju; 22-tax free; 23-inna zagr., VAT dowolny, transakcja opodatkowana poza terytorium kraju; | TrN_ExpoNorm |
CWENumer | ||
ZewnetrznyId | ||
ZewnetrznySys | ||
CWELp |
Elementy dokumentu handlowego (TREI)
Tabela 10 Sekcja z elementami dokumentu handlowego i odpowiednik pól w tabelach bazy ERP XL<TREI/> | Opis | ERP XL |
<TRE> | Sekcja z elementami dokumentu handlowego | TraElem, TraSElem |
NiePrzeliczaj | ||
GIDTyp | GID Elementu transakcji | TrE_GIDTyp |
GIDLp | Numer kolejny elementu transakcji | TrE_GIDLp |
SubGIDLp | - | - |
Pozycja | Pozycja elementu na dokumencie | TrE_Pozycja |
JmZ | Jednostka pomocnicza | TrE_JmZ |
PrzeliczM | Mianownik przelicznika | TrE_PrzeliczM |
PrzeliczL | Licznik przelicznika | TrE_PrzeliczL |
TwrNumer | GID towaru | TrE_TwrNumer |
Wartosc | ||
Cena | Cena początkowa | TrE_Cena |
GrupaPod | Symbol grupy podatkowej | TrE_GrupaPod |
StawkaPod | Stawka podatku | TrE_StawkaPod |
CenaSpr | Cena domyślna dla transakcji | TrE_CenaSpr |
Poczatkowa | Cena początkowa | TrE_Poczatkowa |
Rabat | Procent udzielonego rabatu | TrE_Rabat |
Ilosc | Ilość na jaką opiewa transakcja | TrE_Ilosc |
Opis | Opis elementu | TeO_Opis |
DstNumerO | GID dostawy | TrS_Dstnumer |
DstNumer | GID dostawy | TrS_DstNumer |
Gratis | Rodzaj elementu promocji pakietowej 0 – element, 1 – gratis | TrE_Gratis |
PakietID | Identyfikator promocji pakietowej | TrE_PakietID |
PakietProgID | ||
Zlom | Element traktowany jako odwrotne obciążenie 0 – element, 1 – odwrotne obciążenie | TrE_Zlom |
Dokumenty magazynowe (MANI)
Tabela 11 Sekcja z dokumentami magazynowymi i odpowiednik pól w tabelach bazy ERP XL<MANI/> | Opis | ERP XL |
<MAN> | Sekcja z nagłówkami dokumentów magazynowych | MagNag |
Typ | Identyfikator rekordu | MaN_GIDTyp |
GIDTyp | Identyfikator rekordu | MaN_GIDTyp |
GIDNumer | GID dokumentu w bazie mobilnej | MaN_OddDokId |
OddDokID | GID dokumentu w bazie mobilnej | MaN_OddDokId |
MaN_ZewnetrzneId | Identyfikator dokumentu w systemie zewnętrznym | MaN_ZewnetrzneId |
MaN_ZewnetrznySys | Identyfikator systemu zewnętrznego | MaN_ZewnetrznySys |
Data | Data wystawienia dokumentu | MaN_Data3 |
Rok | Rok transakcji | MaN_TrNRok |
Miesiac | Miesiąc transakcji | MaN_TrNMiesiac |
Numer | Numer transakcji | MaN_TrNNumer |
MAG_GIDNumer | GID magazynu docelowego | MaN_MagDNumer |
Cecha | Cecha transakcji | MaN_CechaOpis |
Knt_GIDNumer | Identyfikator kontrahenta | MaN_KntNumer |
SER_GIDnumer | GID serii dokumentu | MaN_TrNSeria |
Opis | Opis dokumentu | MnO_Opis |
OpeId | Identyfikator operatora | MaN_OpeNumer |
FrsID | Identyfikator centrum – właściciela dokumentu | MaN_FrsID |
Element dokumentu magazynowego (MAE)
Tabela 12 Sekcja z elementem dokumentu magazynowego i odpowiednik pól w tabelach bazy ERP XL<MAE/> | Opis | ERP XL |
Sekcja z elementami dokumentu magazynowego | MagElem | |
TwrNumer | Identyfikator towaru | MaE_TwrNumer |
Ilosc | Ilość w jednostce podstawowej | MaE_Ilosc |
JmZ | Jednostka pomocnicza | MaE_JmZ |
PrzeliczL | Licznik przelicznika | MaE_PrzeliczL |
PrzeliczM | Mianownik przelicznika | MaE_PrzeliczM |
Opis | Opis elementu | MnO_Opis |
Subelement elementu dokumentu magazynowego (MAS)
Tabela 13 Sekcja z subelementem dokumentu magazynowego i odpowiednik pól w tabelach bazy ERP XL<MAS/> | Opis | ERP XL |
Sekcja z subelementami dokumentu magazynowego | MagSElem, MagPElem | |
Ilosc | Ilość na jaką opiewa transakcja | MaS_Ilosc |
DstNumer | Identyfikator dostawy | MaS_DstNumer |
Reklamacje (RLNI)
Tabela 14 Sekcja z reklamacjami i odpowiednik pól w tabelach bazy ERP XL<RLNI/> | Opis | ERP XL |
<RLN> | Sekcja z nagłówkami reklamacji | ReklNag |
DokumentNr | - | |
Id | GID reklamacji w bazie mobilnej | RLN_OddDokId |
OddDokID | GID reklamacji w bazie mobilnej | RLN_OddDokId |
Typ | GIDTyp reklamacji 3584 – RLS | RLN_Typ |
KntTyp | Gid Kontrahenta | RLN_KntTyp |
KntNumerC | GID kontrahenta | RLN_KntNumer |
KnDTyp | GID Kontrahenta docelowego | RLN_KnDTyp |
KnDNumer | GID kontrahenta docelowego | RLN_KnDNumer |
KnDLp | GID Kontrahenta docelowego | RLN_KnDLp |
AdWNumer | GID adresu wysyłkowego | RLN_AdWNumer |
AdWTyp | GID adresu wysyłkowego | RLN_AdWTyp |
FrsID | Identyfikator właściciela dokumentu | RLN_FrsID |
DataWyst | Data wystawienia dokumentu | RLN_DataWyst |
Rok | Rok reklamacji | RLN_Rok |
Miesiac | Miesiąc reklamacji | RLN_Miesiac |
Seria | Seria reklamacji | RLN_Seria |
Numer | Numer reklamacji | RLN_Numer |
Stan | Stan dokumentu 1- niepotwierdzona, 2-niepotwierdzona po reedycji, 6-reklamacja anulowana, 10- potwierdzono, 20- w realizacji, 21- w realizacji po reedycji, 30- rozpatrzona, 31- rozpatrzona po reedycji, 40- zamknięta | RLN_Stan |
Status | Status reklamacji | RLN_Status |
OpeNumer | GID operatora wystawiającego | RLN_OpeNumer |
CechaOpis | Wartość cechy transakcji | RLN_CechaOpis |
Opis | Opis transakcji | RLN_Opis |
Url | url | RLN_Url |
DokumentObcy | Numer dokumentu obcego | RLN_DokumentObcy |
Elementy reklamacji (RLEI)
Tabela 15 Sekcja z elementami reklamacji i odpowiednik pól w tabelach bazy ERP XL<RLEI/> | Opis | ERP XL |
<RLE> | Sekcja z elementami reklamacji | ReklElem |
Id | Id rekordu w bazie mobilnej | RLE_OddElemId |
OddElemId | Id rekordu w bazie mobilnej | RLE_OddElemId |
ZrdTyp | GID elementu dokumentu żródłowego na podstawie, którego reklamowany jest dany towar | RLE_ZrdTyp |
ZrdNumer | GID elementu dokumentu żródłowego na podstawie, którego reklamowany jest dany towar | RLE_ZrdNumer |
ZrdLp | GID elementu dokumentu żródłowego na podstawie, którego reklamowany jest dany towar | RLE_ZrdLp |
DokNumer | Numer dokumentu z pól: RKE_ZrdGID lub tekst, jaki wprowadzi ręcznie operator w polu Numer. | RLE_DokNumer |
TwrTyp | GID towaru | RLE_TwrTyp |
TwrNumer | GID towaru | RLE_TwrNumer |
Ilosc | Ilość na jaką opiewa transakcja | RLE_Ilosc |
JmFormat | Miejsca po przecinku | RLE_JmFormat |
Zadanie | Żądanie reklamującego | RLE_Zadanie |
Status | 0 – rozpatrywana, 1 – Uznana, 2- Odrzucona | RLE_Status |
Przyczyna | Przyczyna reklamacji | RLe_Przyczyna |
Rozpatrzenie | Rozpatrzenie reklamacji | RLE_Rozpatrzenie |
Wizyty Handlowe (CWNI)
Tabela 16 Sekcja z wizytami handlowymi i odpowiednik pól w tabelach bazy ERP XL<CWNI/> | opis | ERP XL |
<CWN> | Sekcja z nagłówkami wizyt handlowych | CRMWizytyNag |
ID | - | |
ZewnetrznyId | Identyfikator wizyty w bazie mobilnej | CWN_ZewnetrznyId |
OpeNumer | Numer operatora wystawiającego | CWN_OpeNumerW |
Renumeruj | - | |
FrsId | Identyfikator centrum – właściciela dokumentu | CWN_FrsId |
ZewnetrznySys | Identyfikator systemu zewnętrznego | CWN_ZewnetrznySys |
WzNumer | Wzorzec wizyty | CWN_WzNumer |
Opis | Opis wizyty | CWN_Opis |
Jednorazowa | Czu wizyta jest jednorazowa 0 – NIE, 1 – TAK | CWN_Jednorazowa |
CZyZMobile | - | |
NrKursu | Numer kursu | CWN_NrKursu |
Stan | Stan wizyty 1 - Niepotwierdzona, 2 - Potwierdzona, 3 - Anulowana, 4 - Zakończona, 5 - W realizacji | CWN_Stan |
Zakonczono | Czy wizyta jest zakończona 0 - nie, 1 - zakończona/wykonana, 2 - zakończona/niewykonana, 3 - zakończona/odrzucona | CWN_Zakonczono |
DataWystawienia | Data wystawienia | CWN_DataWystawienia |
Rok | Rok wystawienia dokumentu | CWN_Rok |
Miesiac | Miesiąc dokumentu | CWN_Miesiac |
TypId | Typ wizyty (wartość ze słownika kategorii) | CWN_TypId |
Seria | Seria dokumentu | CWN_Seria |
Nazwa | Nazwa wizyty | CWN_Nazwa |
Numer | Numer dokumentu | CWN_Numer |
KntNumer | Numer kontrahenta głównego | CWN_KntNumer |
KntTyp | Typ kontrahenta głównego | CWN_KntTyp |
KnANumer | Numer adresu kontrahenta głównego | CWN_KnANumer |
KnATyp | Typ adresu kontrahenta głównego | CWN_KnATyp |
KntOsobaLp | Osoba z karty kontrahenta | CWN_KntOsobaLp |
TerminOd | Planowana data/godzina rozpoczęcia wizyty | CWN_TerminOd |
TerminDo | Planowana data/godzina zakończenia wizyty | CWN_TerminDo |
Obsluga | Identyfikator pracownika obsługującego | CWN_Obsluga |
DataZakonczenia | Data/godzina zakończenia realizacji wizyty | CWN_DataZakonczenia |
DataZakonczeniaOd | Data/godzina rozpoczęcia wizyty | CWN_DataZakonczeniaOd |
Element wizyty handlowej (CWE)
Tabela 17 Sekcja z elementem wizyty handlowej i odpowiednik pól w tabelach bazy ERP XL<CWE/> | Opis | ERP XL |
Sekcja z elementami wizyt handlowych | CRMWizytyElem | |
GIDLp | GIDLp rekordu | CWE_GIDLp |
Wykonano | Czy wykonano 0 nie, 1 – tak | CWE_Wykonano |
Kod | Kod elementu wizyty | CWE_Kod |
Nazwa | Nazwa elementu wizyty | CWE_Nazwa |
Pozycja | Pozycja elementu wizyty | CWE_Pozycja |
Opis | Opis elementu wizyty | CWE_Opis |
Wymagany | Czy wymagany do wykonania 0 – nie, 1 tak | CWE_Wymagany |
RodzajId | Identyfkator rodzaju elementu wizyty | CWE_RodzajId |
sekcja zwracająca obiekty dla wizyty, jak np. Załączniki (CWOI)
Dokument powiązany z elementem wizyty (CDL)
Tabela 18 Sekcja z dokumentem powiązanym z elementem wizyty i odpowiednik pól w tabelach bazy ERP XL<CDL/> | Opis | ERP XL |
Sekcja z dokumentami powiązanymi z wizytą handlową | CRMDokumentyLinki | |
DokTyp | GIDTyp powiązanego dokumentu | CWD_DokTyp |
DokNumer | - | |
DokZewNumer | Numer dokumentu w bazie mobilnej | - |
Raporty (KRPI)
Tabela 19 Sekcja z raportami kasowymi i odpowiednik pól w tabelach bazy ERP XL<KRPI/> | opis | ERP XL |
<KRP> | Sekcja z raportami kasowymi | Raporty |
GIDNumer | GID raportu w bazie mobilnej | KRP_ZewnetrznyId |
Rok | Rok raportu | KRP_Rok |
Numer | Numer raportu | KRP_Numer |
Seria | Seria (skrót nazwy kasy/banku) | KRP_Seria |
RaportNr | Pełny numer raportu | - |
DataOtwarcia | Data otwarcia raportu | KRP_DataOtwarcia |
DataZamkniecia | Data zamknięcia raportu | KRP_DataZamkniecia |
CzasOtwarcia | Data i godzina otwarcia raportu | KRP_CzasOtwarcia |
CzasZamkniecia | Data i godzina zamknięcia raportu | KRP_CzasZamkniecia |
OpeNumer | GID operatora księgującego raport | KRP_OpeNumerKs |
OpeNumerZam | GID operatora zamykającego raport | KRP_OpeNumerZam |
Zapisy kasowe/bankowe (KAZI)
Tabela 20 Sekcja z zapisami kasowymi i odpowiednik pól w tabelach bazy ERP XL<KAZI/> | Opis | ERP XL |
<KAZ> | Sekcja z zapisami kasowymi | Zapisy |
GIDNumer | GID zapisu w bazie mobilnej | KAZ_ZewnetrznyId |
OpeNumer | GID operatora wpisującego do raportu | KAZ_OpeNumerRm |
OpeNumerR | GID operatora wpisującego do raportu | KAZ_OpeNumerR |
OpeNumerB | GID operatora wpisującego do bufora | KAZ_OpeNumerB |
KntTyp | GID kontrahenta/pracownika | KAZ_KntTyp |
KntNumer | GID Kontrahenta/pracownika | KAZ_KntNumer |
NumerDokumentu | Numer dokumentu | KAZ_NumerDokumentu |
DataZapisu | Data dokumentu kasowego | KAZ_DataZapisu |
CzasZapisu | Data i czas zapisu dokumentu kasowego | KAZ_CzasZapisu |
DataDokumentu | Data dokumentu źródłowego | KAZ_DataDokumentu |
Kwota | Kwota zapisu | KAZ_Kwota |
KRPLp | Lp LONG dla uniknięcia przepełn. buforów | KAZ_KRPLp |
Opis | Opis zapisu | KAZ_Opis |
Tresc | Treść zapisu | KAZ_Tresc |
Seria | Seria (skrót nazwy kasy) | KAZ_Seria |
RP | Rozchód/przychód | KAZ_RP |
Rozliczenia (ROZI)
Tabela 21 Sekcja z rozliczeniami i odpowiednik pól w tabelach bazy ERP XL<ROZI/> | Opis | ERP XL |
<ROZ> | Sekcja z rozliczeniami | Rozliczenia |
ID | Identyfikator rozliczenia/rozrachunku | R2_ID |
Info | - | - |
Dok1Typ | GIDTyp dokumentu 1 | R2_Dok1Typ |
Dok1Numer | GIDnumer dokumentu 1 w bazie mobilnej | R2_Dok1Numer |
Dok1NumerO | - | - |
Dok1Lp | GIDLp dokumentu 1 | R2_Dok1Lp |
Seria1 | - | - |
Dok2Typ | GIDTyp dokumentu 2 | R2_Dok2Typ |
Dok2Numer | GIDnumer dokumentu 2 w bazie mobilnej | R2_Dok2Numer |
Dok2NumerO | - | - |
Dok2Lp | GIDLp dokumentu 2 | R2_Dok2Lp |
Seria2 | - | - |
Kwota | Kwota rozliczenia/rozrachunku | R2_KwotaWal1, R2_KwotaWal2, R2_KwotaSys |
XL137 - Instalacja i konfiguracja ERP XL- Comarch POS
Informacje ogólne
Od wersji 2019.2.1 została udostępniona możliwość współpracy z Comarch POS.Wersja Comarch ERP XL | Comarch POS |
---|---|
od wersji 2019.2.1 do wersji 2020.0 | 2019.0 |
od wersji 2020.1 do 2020.2.0 | 2019.5.1 |
2020.2.2 | 2019.5.4 |
2021.0 | 2021.0 |
od wersji 2021.01 do wersji 2021.0.2 | 2021.1 |
2021.1 | 2021.6 |
od wersji 2022.0 do wersji 2022.0.1 | 2022.0 |
2022.0.2 | 2022.1 |
2022.1 | 2022.5 |
2023.0 | 2023.0 |
2023.1 | 2023.0 |
2023.2 | 2023.5 |
2024.0 | 2024.0 |
2024.1 | 2024.5 |
2025.0 | 2024.5 |
Instalacja Comarch POS
Comarch POS instaluje się z wykorzystaniem narzędzia Comarch ERP Auto Update. Instrukcja instalacji Comarch POS znajduje się w dokumentacji na stronie https://pomoc.comarch.pl/pos/ Po otworzeniu narzędzia Comarch ERP Auto Update należy wskazać wybraną wersję do instalacji.



- Nazwa serwera – nazwa serwera wraz z instancją, na którym zostanie utworzona baza danych
- Nazwa bazy danych – domyślnie podpowiada się POSDB_[kod_profilu]
- Dane do logowania – Login, Hasło
- Przycisk [Test połączenia] umożliwia sprawdzenie nawiązania połączenia ze wskazanym serwerem.

Konfigurowanie Usługi synchronizacji POS
Synchronizacja ze stanowiskami POS odbywa się automatycznie za pomocą usługi synchronizacji POS. Definiowanie usługi należy wykonać wybierając z Panelu głównego w module Administrator Oddziałów opcję Konfiguracja logowania automatu synchronizacji. Po wybraniu opcji j.w. należy wybrać przycisk: Synchronizacja jako usługa, który otworzy listę usług. Na liście należy wybrać opcję z menu rozwijanego przy przycisku plusa: Dodaj usługę synchronizacji POS. Na wyświetlonym oknie należy uzupełnić następujące dane:- Nazwa usługi – dowolna nazwa własna usługi (nie należy stosować polskich znaków, znaków specjalnych oraz spacji).
- Konto usługi – należy wpisać nazwę użytkownika domenowego oraz hasło.
- Klucz sprzętowy – należy podać nazwę serwera SQL, na którym zainstalowany jest serwis klucza oraz podać numer klucza posiadającego licencje na Comarch POS.
- Port – numer portu, na którym będzie pracować usługa- wprowadzony numer portu nie może być używany aktualnie w systemie.


Usługa Comarch POS Agent
Usługa Comarch POS Agent (POS Agent) dostarcza aktualne informacje o stanach magazynowych na każdym stanowisku, podczas wystawiania dokumentów. Informacje te prezentowane są z uwzględnieniem poszczególnych magazynów. Wszystkie procesy w magazynie będą mogły zachodzić w trybie off-line z centralą, dzięki czemu korzystanie z tej usługi zapewni pełną autonomię sklepu, poprzez zagwarantowanie, że stan towaru będzie zawsze aktualny. Każdy oddział Comarch POS zdefiniowany w Systemie XL musi podsiadać własną usługę POS Agent.
Usługa POS Agent to miejsce, w którym przechowywane są stany magazynowe towaru wraz z rezerwacjami zasobowymi w podziale na magazyny. Usługa POS Agent działa jako samodzielna usługa z własną bazą danych na tym samym komputerze co baza Comarch POS lub osobnym. Aktualizuje stany towarów na podstawie dokumentów wystawianych na wszystkich stanowiskach obsługiwanych przez daną usługę.Rejestracja usługi POS Agent
Po poprawnym skonfigurowaniu POS Agent oraz POS Agent Broker należy zrestartować usługę XLDataService (Menadżer zadań/Usługi). W następnej kolejności należy zarejestrować usługę POS Agent. W tym celu należy otworzyć katalog instalacyjny POS Agent i uruchomić aplikację POSAgentConfigurator.exe. Przy pierwszym uruchomieniu pojawi się błąd informujący o tym, że usługa jest odinstalowana:

- Adres IP usługi POS Agent – adres IP komputera, na którym została zainstalowana usługa POS Agent
- Port usługi POS Agent – domyślnym portem jest 8098
- Adres serwera usługi XLDataService np. http://localhost:8099/DataService/ gdzie 8099 jest numerem portu, na którym działa usługa
- Kod POS Agenta – kod POS Agent wprowadzony w Comarch ERP XL
- GUID – wartość nadawana automatycznie
Comarch POS Agent Broker
Komponent Comarch POS Agent Broker (POS Agent Broker) wykorzystywany jest do komunikacji z usługą Comarch POS Agent (POS Agent) jako broker wiadomości. Pozwala na aktualizowanie stanów towaru oraz rezerwacji po wystawieniu w Systemie XL dokumentu wpływającego na stany towaru/rezerwacje w magazynach oddziału POS. W przypadku pracy online (połączenie z centralą) stany towaru na oddziałach POS aktualizowane są natychmiast. W przypadku pracy offline (brak połączenia z centralą) komponent agreguje kolejkę wiadomości, przekazując aktualizację stanów magazynowych do właściwego POS Agenta. Aktualizowanie informacji o stanach następuje bezpośrednio po wystawieniu dokumentów w Comarch ERP XL poprzez:- wprowadzenie do kolejki wiadomości informacji o zwiększeniu stanów, gdy zostanie wystawiony dokument, który zwiększa stany towaru
- wprowadzenie do kolejki wiadomości informacji o zmniejszeniu stanów, gdy zostanie wystawiony dokument, który pomniejsza stany towaru
- wprowadzenie do kolejki wiadomości informacji o zmianach w rezerwacjach zasobowych
Konfigurowanie komponentu POS Agent Broker
W Konfiguracji systemu została dodana zakładka [POS], na której należy uzupełnić adres brokera wiadomości, czyli usługi POS Agent Broker.
W polu Adres usługi kolejki wiadomości należy wprowadzić adres usługi Comarch POS Agent Broker oraz numer portu. Domyślnym portem jest 80, pole przyjmuje 64 znaki- W przypadku korzystania z głównego profilu programu Comarch ERP Auto Update należy wprowadzić adres: http://localhost/POSAgentBroker
- Przycisk Test konfiguracji służy do sprawdzenia, czy POS Agent Broker został poprawnie skonfigurowany
- Otworzyć Menedżer internetowych usług informacyjnych (IIS)
- W widoku Połączenia rozwinąć Witryny -> Default Web Site
- Wskazać pozycję zawierającą w nazwie ‘POSAgentBroker‘
- W widoku Akcje wybrać Przeglądaj *:80 (http)
- W domyślnej przeglądarce w pasku adresu znajdzie się poprawny link do usługi POS Agent Broker
Konfiguracja Oddziału/Stanowiska POS
Kreator nowego Oddziału POS
Konfiguracja oddziału/stanowiska POS realizowana jest w module Administrator oddziałów. Przed rozpoczęciem kreowania nowego oddziału należy dodać rejestry, które w kolejnych krokach będą przypisywane do oddziału POS.



- w Panelu głównym przejść na zakładkę [Oddziały] i wybrać opcję: Kreator nowego oddziału Comarch POS,
- lub w Panelu głównym przejść na zakładkę [Ogólne], wybrać opcję: Oddziały, na otwartej liście oddziałów w polu typ wskazać Comarch POS a następnie przyciskiem plusa rozpocząć kreowanie nowego oddziału.



- Sposób wyszukiwania dokumentów: Lokalnie/Globalnie, wyszukiwanie globalne polega na możliwości przeszukania dokumentów w bazie Comarch ERP XL i pobranie na stanowisko POS.
- Logowanie, podpowiadanie nazwy użytkownika – zaznaczenie parametru spowoduje, że podczas logowania do aplikacji Comarch POS będzie możliwe wybieranie operatorów z listy a po rozpoczęciu wpisywania loginu będą podpowiadane kody operatorów, którzy mogą pracować na danym stanowisku.
- Logowanie za pomocą karty, dodano ułatwienie opcji logowania za pomocą karty.
- Zezwalaj na generowanie faktury do paragonu po terminie– odznaczenie parametru powoduje blokadę wygenerowania faktury do paragonu na stanowisku POS, po upływie trzech miesięcy (90 dni) od końca miesiąca kalendarzowego, w którym wystawiono paragon.
- Automatyczne zamykanie okna płatności- parametr umożliwia ustalenie, czy okno płatności ma być automatycznie zamykane, czy ręcznie zamykane. W przypadku odznaczonego parametru, po zatwierdzeniu płatności, okno pozostanie otwarte. Parametr domyślnie zaznaczony.
- Przeliczaj dokumenty handlowe bez pytania- parametr pozwala na przeliczanie wartości na dokumencie handlowym bez wyświetlania komunikatu w przypadku zmiany kontrahenta, usuwaniu pozycji lub ilości artykułu.
- Kopiuj ilość z zamówienia sprzedaży (na FS, PA)- po zaznaczeniu parametru przy generowaniu dokumentu handlowego z zamówienia będą przenoszone ilości z zamówienia, pomniejszone o ilości wcześniej zrealizowane, gdy parametr będzie odznaczony ilości będą zerowe.
- Zezwalaj na minimalizację aplikacji- zaznaczenie tego parametru pozwala na możliwość minimalizacji okna programu POS, w przypadku braku zaznaczenia, nie mamy możliwości minimalizacji okna, aby przejść np. do okna widoku XL należy zamknąć okno widoku POS-tym samym wymuszając zakończenie pracy.
- Blokada otwarcia wielu dokumentów handlowych- uniemożliwia otworzenie więcej niż jednego dokumentu handlowego na stanowisku POS, tj. paragonu, faktury itd.
- Wymagana autoryzacja dla ujemnego stanu kasy- jeżeli jest zaznaczony, to próba osiągnięcia ujemnego stanu kasy wywołuje komunikat blokujący.
- Generuj PW na brakujące towary- automatyczne generowanie dokumentu PW, gdy brak danego towaru na stanie
- Obsługa inwentaryzacji- parametr odpowiedzialny za wykonanie operacji inwentaryzacji w oddziałach.
- Ostrzegaj podczas dodawania inwentaryzowanego towaru na dokument- przy dodawaniu towaru który znajduje się na arkuszu pojawi się stosowny komunikat.
- Automatyczne naliczanie promocji pakietowych- przy wystawianiu dokumentów promocje będą naliczane automatycznie po spełnieniu progów.
- Ignoruj termin płatności ustawiony na dokumencie ZS- przy generowaniu faktury będzie ignorowany termin płatności z zamówienia.
- Blokada wystawienia faktury bez numeru NIP- brak możłiwości wystawienia faktury dla podmiotu gospodarczego bez numeru NIP.


Ustawienia oddziału Comarch POS
Zakładka [Ogólne] prezentuje Centrum powiązane z danym oddziałem, nadane ID oddziału oraz datę Ostatniej synchronizacji

Grupy szybkiej sprzedaży- Po lewej stronie znajduje się lista Grupy szybkiej sprzedaży, gdzie można dodawać grupy z listy grup wysyłanych do POS. Po wybraniu opcji Dodaj grupę zostanie wyświetlona lista grup, zawężona do grup wysyłanych do POS, czyli ta część drzewa, która jest wskazana w polu Wysyłaj towary z grupy.



Ulubione towary- Po prawej stronie znajduje się lista towarów ulubionych, które w POS będą widoczne po wybraniu specjalnego kafelka o nazwie Ulubione. Do listy ulubionych można dodawać dowolne towary lub produkty, które są wysyłane do POS. Podczas dodawania towaru do listy, system sprawdza czy towar zawiera się w drzewie grup przesyłanym do POS, zgodnie z ustawieniem w polu Wysyłaj towary z grupy. Sprawdzane jest powiązanie towaru z grupą domyślną i jeśli grupa domyślna towaru nie jest wysyłana do POS, wówczas towar nie będzie mógł trafić na listę ulubionych.
Po naciśnięciu opcji Dodaj towar zostanie wyświetlona lista wszystkich towarów, gdzie można wskazać jeden lub więcej towarów i dodać je do listy. Na liście towarów ulubionych możliwe jest ustawianie kolejności wyświetlania towarów w POS za pomocą przycisków: Przesuń o jedną pozycję w dół lub w górę . Dodane towary można usuwać pojedynczo lub zbiorczo zaznaczając pozycje. W każdym momencie można też wzbogacić listę o nowe pozycje. Ustawiona kolejność towarów przesyłana jest na wszystkie stanowiska POS.Przesyłanie powiązania towaru z wszystkimi grupami towarów
Do tej pory towary były przesyłane na stanowiska POS wg grupy domyślnej ustawionej na karcie towaru. Aktualnie towary przesyłane są również wówczas, gdy należą do grupy lub podgrupy przesyłanej do POS bez względu na to, czy jest to grupa domyślna czy dodatkowa danego towaru. Przesyłane są również wszystkie powiązania towaru z grupami, które są przesyłane do POS. Na podglądzie towaru w POS można zobaczyć powiązanie towaru z grupami.

- Obsługa limitu kredytowego – po zaznaczeniu tej opcji limity będą wysyłane do POS i kontrolowane podczas sprzedaży
- Maksymalny czas od ostatniej synchronizacji (m) – możliwość ustawienia maksymalnego czasu w minutach, w którym możliwe będzie korzystanie z lokalnie zapisanych limitów w sytuacji, gdy połączenie POS z centralą nie będzie aktywne.
- Prezentacja dostępnego limitu – parametr ten posiada trzy opcje decydujące o tym, jak limity mają być prezentowane podczas sprzedaży:
- Odejmuj wartość dokumentu – wartość dodawanych pozycji będzie automatycznie zmniejszała wartość dostępnego limitu
- Nie odejmuj wartości dokumentu – dostępny limit nie będzie się zmniejszał wraz z dodawaniem kolejnych pozycji do dokumentu.
- Nie prezentuj – kwota limitu nie będzie prezentowana, jednak podczas zatwierdzania dokumentu system sprawdzi limit i zostanie wyświetlone ostrzeżenia bądź blokada zgodnie z ustawieniami definicji dokumentu.
Przesyłanie maski dla kodu pocztowego
Przesyłana jest odpowiednia konfiguracja, dzięki której w POS kontrola poprawności zapisu kodu pocztowego na adresie kontrahenta odnosi się tylko do kontrahentów polskich. W przypadku wyboru kraju innego niż PL brak walidacji kodu pocztowego w formacie 00-000. Na zakładce [Waluty] należy ustawić walutę domyślną, w jakiej będzie pracował POS oraz waluty wraz z kursem, które będą konieczne np. w przypadku wysyłania cenników w walucie innej niż domyślna. Od wersji Comarch ERP XL 2024.1 umożliwiono pobieranie i ustawianie kursów walut z precyzją do 10 miejsc po przecinku. Przy ustawieniu opcji Kurs z tabeli kursów, kursy pobierane są z precyzją zapisaną w tabeli kursów. Minimalnie prezentowane są 4 miejsca po przecinku, w przypadku większej precyzji, prezentowane są wszystkie cyfry znaczące. Przy ręcznym uzupełnianiu kursu możliwe jest wpisanie do 5 miejsc przed przecinkiem i do 10 miejsc po przecinku.




Blokada wystawiania faktur bez numeru NIP. Po jego zaznaczeniu nie będzie możliwe wystawienie faktury dla podmiotu gospodarczego bez uzupełnienia numeru NIP. Równocześnie w przypadku wystawiania faktury dla kontrahenta detalicznego pojawi się komunikat o konieczności rejestracji paragonu a następnie wystawienia faktury do paragonu. Jeśli jednak numer NIP zostanie przesłany dla kontrahenta detalicznego z XLa, możliwe będzie wystawienie faktury bezpośrednio (bez konieczności rejestrowania paragonu).


Wybór typu aplikacji i rodzaju licencji
Na oknie konfiguracji stanowiska POS oddano dwa nowe pola związane z konfigurowaniem typu aplikacji i rodzaju licencji. W zależności od tego na jakiego typu aplikacji pracuje stanowisko istnieje możliwość wybrania rodzaju licencji pomiędzy:- POS
- mPOS
- Front Office
- Back Office
- Front Office + Back Office
- Typ aplikacji: POS
- Licencja: Front Office + Back Office

- Generowanie KP/KW na różnicę przy otwarciu/zamknięciu dnia- parametr umożliwia wybór czy system ma automatycznie generować dokumenty KP/KW jeśli system wykryje różnicę w stanie gotówki na otwarciu/zamknięciu dnia
- Zezwalaj na otwarcie/zamknięcie dnia bez podania stanu rzeczywistego- podczas otwierania aplikacji POS ukazuje nam się okno otwarcia dnia na którym widnieje podany stan początkowy kasy, waluta oraz stan rzeczywisty i różnica pomiędzy początkowym a rzeczywistym. Parametr zaznaczony daje możliwość zatwierdzenia otwarcia dnia bez podania stanu rzeczywistego w kasie.

- Automatyczne zamknięcie dnia – umożliwia automatyczne zamknięcie dnia przez aplikację bez zliczania kasy na stanowisku sprzedażowym.
- Godzina zamknięcia dnia – pozwala na ustalenie, o jakiej godzinie nastąpi automatyczne zamknięcie dnia. Domyślnie jest to 23:59.59. Pole jest aktywne, jeżeli parametr Automatyczne zamknięcie dnia jest zaznaczony.
- Wydruk raportów zmianowych na drukarce fiskalnej – pozwala na drukowanie na drukarce fiskalnej raportów zmianowych przy zamykaniu zmiany lub dnia, a także przy podglądzie zapisanej zmiany kasjera lub raportu dziennego.
- Wyświetlanie tylko dostępnych – pozwala na wyświetlanie na stanowisku POS tylko tych artykułów, które są aktualnie dostępne na magazynie.
- Domyślnie korzystaj z przycisków szybkiej sprzedaży – Aby podczas sprzedaży w Comarch POS domyślnie ustawiały się kafelki szybkiej sprzedaży należy zaznaczyć parametr, czyli oznacza to, że podczas sprzedaży w POS domyślne prezentowane będą skonfigurowane w Comarch ERP XL przyciski a nie zwykła lista towarów. Jeśli operator nie znajdzie odpowiedniego towaru wśród dostępnych kafelków wówczas będzie mógł przełączyć się na standardową listę towarów za pomocą kontrolki Wyszukaj artykuł.
- Otwieranie i zamykanie raportów kasowych na podstawie otwarcia i zamknięcia sesji w POS – Standardowo parametr ten jest zaznaczony w celu zachowania poprzedniej funkcjonalności. Jeśli użytkownik nie będzie chciał, aby raporty były tworzone na podstawie sesji, powinien odznaczyć powyższy parametr. Po jego odznaczeniu zapisy kasowe będą trafiały do aktualnie otwartego raportu. W przypadku gdy nie będzie żadnego otwartego raportu, do którego można dodać zapis, będzie otwierany nowy raport z data i godziną przesłania pierwszego dokumentu lub zapisu do danego rejestru. Zamykanie raportu należy realizować ręcznie po stronie Comarch ERP XL. Po zamknięciu raportu, w przypadku przesłania kolejnych dokumentów czy zapisów, system otworzy kolejny raport.
- Codzienne otwieranie raportów kasowych podczas importu pierwszego dokumentu – Po zaznaczeniu tego parametru, każdego dnia podczas importu pierwszego dokumentu lub zapisu, otwierany będzie raport z godziną otwarcia 00:00:00. Raporty będą otwierane każdego dnia bez względu na to czy raport z poprzedniego dnia został zamknięty, czy nie. Zamykanie raportu należy realizować ręcznie po stronie Comarch ERP XL. Po zamknięciu raportu, w przypadku przesłania kolejnych dokumentów czy zapisów, system otworzy kolejny raport w danym dniu.

- Z poziomu stanowiska POS


- Z poziomu karty Operatora


- Z poziomu listy operatorów


- kod, nazwę i serię oddziałową
- Nazwy, rejestry i parametry dla poszczególnych form płatności (udostępnionych w Centrum POS)
- Parametry związane z operacjami kasowymi
- Ustawieni drukarki fiskalnej i szuflady
- Operatorów, którzy będą mogli logować się do POSa. Pierwsze logowanie z hasłem: admin, następnie klient może zmienić hasło z poziomu POSa
- Listę dostępnych wydruków
Konfiguracja Centrum
Na definicji Centrum w module Administrator, oprócz elementów zdefiniowanych podczas kreacji oddziału i dodawania stanowiska POS można dodać cenniki inne niż domyślne, oraz magazyny inne niż domyślne.Parametry operatorów (moduł Administrator)
Prawa operatorów można przesyłać do stanowiska POS tylko w kontekście grup operatorów. W związku z tym prawa związane z operatorami należy definiować na wzorcu operatora, do którego jest przypięty. Uprawnienia operatorów zapisywane są na zakładce [POS] na wzorcu operatora.
- Dostęp do konfiguracji – pozwala na otwarcie okna konfiguracji na stanowisku POS.
- Konfiguracja interfejsu – jeżeli operator nie posiada tego uprawnienia to nie może modyfikować widoków okien na stanowisku POS.
- Ręczne otwarcie szuflady – Pozwala na otwarcie szuflady specjalnym przyciskiem w dowolnym momencie a nie tylko podczas zatwierdzania dokumentów
- Drukowanie raportu fiskalnego dobowego – umożliwia drukowanie raportu fiskalnego dobowego za pomocą przycisku [Raport dobowy], który znajduje się w oknie Raporty fiskalne na stanowisku POS wybraniu Rozliczenia→ Raporty fiskalne.
- Drukowanie raportu okresowego – operator nieposiadający tego uprawnienia nie może korzystać z przycisku [Raport okresowy], który widoczny jest po wybraniu Rozliczenia → Raporty fiskalne.
- Dodawanie i edycja kontrahenta – jeśli operator nie posiada tego uprawnienia to nie ma możliwości dodawania i edytowania kontrahentów na liście kontrahentów oraz dokumentach na stanowisku POS.
- Edycja dokumentów innych operatorów – jeżeli operator nie posiada tego uprawnienia, to nie może edytować dokumentów wystawionych przez innych operatorów, które znajdują się na liście dokumentów niezatwierdzonych (nawet jeśli ma do nich dostęp).
- Zmiana statusu realizacji na zamówieniu- możliwość zmiany statusu.
- Zmiana statusu płatności na zamówieniu- możliwość zmiany statusu płatności.
- Otwarcie zmiany z różnicą stanu kasy – umożliwia otwarcie zmiany, gdy występuje różnica pomiędzy stanem kasy w systemie, a stanem rzeczywistym podanym przez użytkownika. Jeśli uprawnienie jest nadane, to podczas otwierania zmiany będzie możliwość zatwierdzenia okna otwarcia zmiany bez względu na kwotę różnicy między stanem kasy wyliczonym przez system, a stanem rzeczywistym wprowadzonym przez użytkownika.
- Zamknięcie zmiany bez wypłaty – zamknięcie zmiany odbywa się z domyślnie wpisaną kwotą wypłaty równą 0,00.
- Przekroczenie limitu stanu kasy – operator ma możliwość przekroczenia limitu stanu kasy, w przypadku uruchomionej obsługi limitu stanu kasy (minimalnego, maksymalnego, ujemnego stanu kasy), (parametr obecnie nieobsługiwany)
- Oznaczenie dokumentów jako zafiskalizowane – funkcja używana do testów albo w przypadku awarii połączenia z drukarką w przypadku gdy paragon się wydrukował a ta informacja o fiskalizacji nie wróciła do POS, istnieje możliwość aby dokument oznaczyć jako zafiskalizowany lub ponownie go wydrukować (zafiskalizować).
- Prawo do uzgadniania stanów magazynowych- operator po zaznaczeniu parametru ma możliwość uzgadniania stanów w Comarch POS
- Dostęp do inwentaryzacji
- Zamykanie arkuszy
- Podgląd listy raportów (odczytów)
- Modyfikacja raportów (odczytów) innych użytkowników
Maksymalny rabat na dokumentach sprzedaży
Wystawiając dokument w Comarch POS weryfikowane jest ustawienie z karty operatora logującego się do Comarch POS dotyczące maksymalnego rabatu na dokumentach.Zmiany w konfiguracji oddziałów Comarch POS
Wprowadzenie na Oddziale zakładki POS Agent
Dla każdego istniejącego oddziału Comarch POS należy zdefiniować Agenta. Aby to zrobić należy przejść do konfiguracji oddziału Comarch POS, następnie na zakładce [POS Agent] uzupełnić pole kod POS Agenta. Kod POS Agenta powinien być ciągiem znaków (litery i/lub cyfry) bez spacji. Dla każdego oddziału należy ustalić inny kod POS Agenta. W przypadku nowych oddziałów system pilnuje, aby kod został uzupełniony przed zapisaniem oddziału. Pola Host, Port oraz GUID zostaną uzupełnione automatycznie po zarejestrowaniu usługi POS Agent.
Przycisk Resetuj ustawienia POS Agenta służy do usunięcia ustawień POS Agenta w sytuacji, gdy koniczna jest jego ponowna rejestracja.
Na zakładce [POS Agent] definiuje się również magazyny przypisane do danego oddziału Comarch POS.

W przypadku nowych oddziałów na zakładce [POS Agent] pojawi się magazyn wskazany podczas kreacji oddziału. Jeśli w sklepie jest więcej niż jeden magazyn należy go przypisać do POS Agenta (wcześniej musi zostać dodany do Centrum powiązanego z oddziałem Comarch POS). W związku z powyższym przywrócono możliwość dodawania wielu magazynów do Centrum powiązanego z oddziałem Comarch POS. Magazyn przypisany do jednego POS Agenta nie może zostać przypisany do innego POS Agenta.
W przypadku gdy oddział był kreowany w poprzednich wersjach, podczas konwersji magazyn domyślny zostanie przypisany do POS Agenta. Jeśli ten sam magazyn był przypisany do wielu oddziałów Comarch POS, wówczas zostanie on usunięty z konfiguracji wszystkich oddziałów i konieczne będzie przypisanie magazynów domyślnych dla każdego oddziału na nowo.
Uzgadnianie stanów magazynowych w Comarch POS
Przy poprawnie zainstalowanej i działającej usłudze stany towaru są na bieżąco aktualizowane. Ponieważ stany towaru nie są już zapisywane w bazie Comarch POS, lecz w bazie POS Agent, użytkownicy, którzy posiadali oddziały Comarch POS w poprzednich wersjach Systemu muszą dokonać operacji uzgodnienia stanów. Prawo do uzgadniania stanów magazynowych zostało dodane na wzorcu operatorów na zakładce [POS]. Tylko operatorzy z zaznaczonym prawem Prawo do uzgadniania stanów magazynowych mogą aktualizować stany z poziomu Comarch POS. Operacji uzgodnienia stanów dokonuje się z poziomu aplikacji Comarch POS. Z menu głównego należy wybrać opcję Back office, a następnie przycisk Uzgadnianie stanów magazynowych.
Sprzedaż z wielu magazynów
Comarch POS umożliwia sprzedaż towaru z kliku magazynów. Gdy na domyślnym magazynie braknie towaru, wówczas pobierany jest on z kolejnych magazynów. Możliwe jest również wskazanie konkretnego magazynu na poziomie pozycji dokumentu (wymaga zmian w konfiguracji interfejsu w POS). Informacje o tym z jakiego magazynu został pobrany towar przesyłane są na poziomie subelementów pozycji dokumentu. Informacja o magazynie/magazynach poszczególnych pozycji dokumentu jest uwzględnia podczas importu i odpowiednio zapisywana na dokumentach. W przypadku braków towaru, automatyczne PW dodaje towar do właściwego magazynu.Podgląd stanów magazynowych w innych sklepach
W ERP XL obsłużono funkcję podglądu towaru w innych sklepach. W Comarch POS na liście towarów oraz na podglądzie towaru znajduje się przycisk Dostępność w sklepach. Standardowo przycisk ten jest ukryty, dlatego najpierw należy go odkryć z poziomu konfiguracji interfejsu w POS. Po wybraniu przycisku Dostępność w sklepach zostanie otwarte okno, w którym prezentowany jest stan danego towaru w magazynach innych sklepów Comarch POS w ramach danej instalacji. Stany towarów sprawdzane są on-line, dlatego do uruchomienia tej opcji potrzebne jest aktywne połączenie z Comarch ERP XL czyli działająca usługa XLDataService.Konfigurowanie i przesyłanie domyślnego kontrahenta
Umożliwiono przesyłanie domyślnego kontrahenta innego niż Jednorazowy. Aby na dokumentach w POS domyślnie podpowiadał się inny kontrahent niż Jednorazowy należy na definicji dokumentu PA (w kontekście centrum powiązanego z danym oddziałem POS), na zakładce [Inne] wybrać odpowiedniego kontrahenta, który należy do grupy wysyłanej do Comarch POS. Aby przywrócić kontrahenta Jednorazowego wystarczy usunąć wskazanego wcześniej kontrahenta z definicji dokumentu PA.
Obsługa podzielonej płatności – MPP
Obsługa podzielonej płatności została obsłużona w następującym zakresie:- Przesyłanie informacji o obsłudze MPP na podstawie parametru w Konfiguracji XLa
- Przesyłanie ustawienia na karcie towaru dot. podzielonej płatności (MPP)
- Ustawianie na zaimportowanej fakturze parametru związanego z podzieloną płatnością (zakładka [Płatności]) zgodnie z informacjami przesłanymi z Comarch POS.
Import wartości atrybutów na dokument
Do POS przekazywane są klasy atrybutów związane z definicją dokumentów, jak również elementów dokumentów. Wartość dla danego atrybutu może być uzupełniona w trakcie wystawiania dokumentu w POS. Podczas importu dokumentów wartości atrybutów dokumentu i elementów dokumentu są odczytywane i odpowiednio zapisywane na transakcjach.Przesyłanie kodów kreskowych związanych z jednostkami pomocniczymi
Jeśli dla towaru zostaną zdefiniowane dodatkowe jednostki miary i do tych jednostek zostaną przypisane kody kreskowe, to zostaną one przesłany do POS. Przesyłane kody to kody własne, które widoczne są na zakładce [Jednostki i kody]/[Kody kreskowe]. Dzięki temu możliwe będzie wyszukiwanie towarów na liście towarów oraz dodawanie do dokumentu z wykorzystaniem dodatkowego kodu EAN. Na pozycji dokumentu automatycznie ustawi się jednostka miary powiązana z danym kodem kreskowym.
Blokada zatwierdzania RA do PA z niezgodnym NIP
Został również obsłużony parametr Blokada zatw. RA do PA z niezgodnym NIP, ustawienie znajduje się na definicji dokumentu faktury sprzedaży w kontekście centrum powiązanego z oddziałem Comarch POS.Przesyłanie informacji o domyślnej jednostce dla sprzedaży
Do POS przesyłamy ustawienia z karty towaru decydujące o tym, która jednostka ma być jednostka domyślną na transakcjach. Jeśli na karcie towaru, na zakładce [Jednostki i kody]/[Opakowanie], dla wybranej jednostki pomocniczej zostanie ustawiony parametr Ustaw jako jednostkę proponowaną: sprzedaży, jednostka ta zostanie przesłana do POS jako jednostka domyślna.
Podgląd historii kontrahenta
W POS możliwe jest wyświetlanie historii transakcji dokonywanych z danym kontrahentem. Informacje te pobierane są z systemu Comarch ERP XL, aby mogły pojawić się wszystkie transakcje wystawione również na innych stanowiskach POS. Do uruchomienia podglądu Historii konieczna jest praca on-line, czyli musi być uruchomiona usługa XLDataService. Historia kontrahenta dostępna jest z poziomu podglądu karty kontrahenta po przyciskiem Historia Transakcji. Historia prezentowana jest wg artykułów z podaniem daty i numeru transakcji, ilości sprzedanych bądź zwróconych towarów, ceny, wartości udzielonego rabatu. Dla transakcji wystawionych na danym stanowisku możliwe jest wykonanie korekty przez wybranie opcji Korekta na wybranej pozycji historii.Przyjmowanie towaru w POS za pomocą dokumentów przesunięć międzymagazynowych MMW/MMP
Podczas kreowania nowego oddziału Comarch POS możliwe jest wskazanie czy na stanowisku mają być wystawiane dokumenty MMW i MMP. W przypadku użytkowników, którzy posiadają już skonfigurowane oddziały Comarch POS (poprzednio Comarch POS), koniecznym jest zaznaczenie na definicji dokumentów MMW oraz MMP w centrum firmy, z którym jest powiązany oddział Comarch POS, parametru Wystawianie i edycja.Wystawianie MMW w celu przesunięcia towarów do POS
Aby przesunąć towar z magazynu Centrali na magazyn POS należy wystawić po stronie Comarch ERP XL dokument MMW, gdzie magazynem docelowym będzie magazyn oddziału Comarch POS. Do MMW nie może być wygenerowany dokument MMP – przyjęcia towaru na magazyn POS. Aby ułatwić kontrolowanie generowania MMP, na formatce magazynu dodano parametr Generowanie MMP po stronie Comarch POS. Po zaznaczeniu tego parametru, dokument MMP nie będzie tworzony automatycznie a podczas próby jego wygenerowania pojawi się stosowny komunikat. Parametr można zaznaczyć tylko na magazynach przypisanych do POS Agenta (oddziału Comarch POS).
Przyjęcie towaru po stronie stanowiska POS
Wystawiony dokument przesunięcia magazynowego (MMW) trafia na stanowisko POS, gdzie może zostać przyjęty. Opcja przyjęcia towaru znajduje się w menu Back Office, pod przyciskiem Przyjęcie dostawy. Po wejściu na listę dostaw wyświetlają się dokumenty MMW wystawione w XLu na magazyny POS, które nie zostały jeszcze przyjęte na stan. Możliwe jest podejrzenie dokumentu MMW przyciskiem Podgląd lub przyjęcie przyciskiem Przyjmij. Użytkownik może przyjąć wszystkie pozycje w ilościach jakie zostały przesłane lub może wprowadzić ilości ręcznie zgodnie ze stanem faktycznym. Możliwe jest też skanowanie przyjmowanych pozycji za pomocą czytnika. Po zatwierdzeniu przyjęcia przyciskiem Zatwierdź, generowany jest dokument MMP (przyjęcie na magazyn POS), gdzie ilości dla pozycji są zgodne z dokumentem MMW oraz dokument PRP – protokół przyjęcia (rozbieżności), gdzie zapisano ilości rzeczywiście przyjęte na stanowisku POS. Po wygenerowaniu powyższych dokumentów, trafiają one do Comarch ERP XL. Dokument MMP widoczny jest na liście dokumentów wewnętrznych, zakładka [MMP], natomiast raport rozbieżności jest dostępny z poziomu podglądu MMP lub MMW za pomocą przycisku PRP dostępnego na prawym pasku okna jak przedstawiono poniżej.

MMW a partie towaru
Jeśli na MMW znajdą się towary, które pochodzą z różnych partii wówczas po stronie POS na dokumencie MMW każda partia będzie widoczna jako oddzielna pozycja. Również na dokumencie PRP towary i rozbieżności dla nich będą prezentowane oddzielnie dla każdej partii.Atrybuty, opis dokumentu
Na dokumentach MMW i MMP wystawianych w POS można uzupełnić opis oraz wartości atrybutów nagłówka i pozycji, jeśli zostały określone do tych obiektów. Informacje te są przekazywane na importowane MMW i MMP na zasadach analogicznych jak dla innych dokumentów.Anulowanie dokumentów magazynowych
Nie jest możliwe anulowanie dokumentów MMW wystawionych w Comarch ERP XL i wysłanych do oddziału POS. Przy próbie anulowania pojawi się komunikat: Anulowanie dokumentu MMW-8/21/10 nie jest możliwe. Nie jest możliwe anulowanie dokumentów MMP wygenerowanych podczas przyjęcia towaru w POS i przesłanych do XL. Przy próbie anulowania pojawi się stosowny komunikat. Anulowanie dokumentu MMP możliwe jest z poziomu stanowiska POS. Informacja o anulowaniu przesyłana jest do Comarch ERP XL gdzie dokument jest również anulowany. Po anulowaniu dokumentu MMP możliwe jest ponowne przyjęcie towaru na stanowisku POS.Zwrot towaru do centrali
Aby możliwy był zwrot towarów z oddziału Comarch POS do magazynu Centrali konieczne jest przypisanie magazynów do Centrum powiązanego z oddziałem Comarch POS. Tylko magazyny przypisane do Centrum mogą być magazynami docelowymi, na które może być dokonywany zwrot towaru. Zwrot towaru realizowany jest poprzez wystawienie w Comarch POS dokumentu zwrotu w postaci MMW z magazynu sklepu do magazynu Centrali. Aby wystawić dokument przesunięcia zwrotu towaru w POS należy wybrać opcję Back Office, a następnie przycisk Wydanie towarów i kolejno opcje Przygotowanie wysyłki i Przesuniecie ręczne. Podczas dodawania zwrotu konieczne jest wskazanie magazynu źródłowego, z którego ma zostać wydany towar oraz magazynu docelowego, na który ma trafić zwracany towar. POS Agent kontroluje ilość towaru ma magazynach POS i nie pozwoli na zwrot towaru, którego nie ma na stanie magazynu POS. Po zatwierdzeniu dokumentu, MMW trafia do sytemu Comarch ERP XL a następnie jest do niego generowany dokument MMP. To, czy dokument MMP zostanie wygenerowany automatycznie, czy też nie zależy od ustawień na definicji dokumentu MMW, na zakładce [Inne] j.n.
Anulowanie dokumentów zwrotu
Dokumenty MMW wystawione w POS nie mogą być anulowane z poziomu Comarch ERP XL. Przy próbie anulowania pojawi się komunikat: Anulowanie dokumentu MMW-11/21/P5/10 nie jest możliwe. Możliwe jest natomiast anulowanie MMW z poziomu stanowiska POS, gdzie taki dokument został wystawiony. Po anulowaniu w POS następuje anulowanie dokumentu po stronie XL, o ile nie ma do niego wygenerowanego dokumentu MMP. W przypadku gdy taki dokument został już wygenerowany, najpierw należy anulować MMP w XL a następnie MMW w POS.Przesunięcia towaru między magazynami sklepu
Jeśli sklep prowadzi więcej niż jeden magazyn możliwe będzie przesuwanie towaru pomiędzy jego magazynami. Każdy magazyn sklepu musi zostać przypisany do oddziału Comarch POS na zakładce [POS Agent]. Aby wystawić dokument przesunięcia magazynowego w Comarch POS należy wybrać opcję Back Office, a następnie przycisk Przesunięcia wewnętrzne. Po wybraniu magazynu źródłowego i docelowego należy wskazać towary do przesunięcia oraz ich ilości. POS Agent kontroluje ilość towaru ma magazynach POS i nie pozwoli na przesuniecie towaru, jeśli nie ma wystarczającej ilości na stanie magazynu. Po zatwierdzeniu dokumenty MMW i MMP przesyłane są do Comarch ERP XL i można je podejrzeć z poziomu listy dokumentów – dokumenty wewnętrze.Anulowanie przesunięć międzymagazynowych
Dokumenty MMW i MMP wystawione w POS nie mogą być anulowane z poziomu Comarch ERP XL. Przy próbie anulowania pojawi się komunikat: Anulowanie dokumentu MMW-11/21/P5/10 nie jest możliwe. Możliwe jest natomiast anulowanie dokumentów przesunięć z poziomu stanowiska POS, gdzie taki dokument został wystawiony. Po anulowaniu dokumentów w POS następuje anulowanie dokumentów MMW i MMP po stronie XL.Przesunięcia towaru pomiędzy sklepami (oddziałami) Comarch POS
- Odblokowano możliwość dodawania magazynów przypisanych do innych oddziałów w Centrum powiązanym z oddziałem POS. Dzięki temu w Comarch POS możliwe będzie wykonanie przesunięcia towarów pomiędzy różnymi sklepami (oddziałami POS).
- Przesunięcia pomiędzy różnymi sklepami można realizować w Comarch POS z poziomu menu Back Office/ Wydanie towarów/ Przygotowanie wysyłki/ Przesuniecie ręczne. Po dodaniu nowego dokumentu należy wskazać magazyn oddziału, z którego będzie realizowane przesuniecie (lokalny magazyn sklepu) oraz magazyn docelowy innego sklepu, na który zostaną przesunięte dodane do dokumentu towary.
- Jeśli na definicji dokumentu MMW w kontekście Centrum powiązanego z oddziałem POS zostanie niezaznaczony parametr dotyczący automatycznego generowania dokumentów MMP, wówczas MPP nie zostanie utworzone a dokument MMW może zostać pobrany na stanowisko oddziału, do którego zostały przesunięte towary. Standardowo przyjęcie towaru na drugim oddziale może być realizowane z poziomu opcji Back Office> Przyjęcie dostawy. Jeśli ww. parametr będzie zaznaczony wówczas dokument MMP zostanie utworzony w XLu a stany towarów na magazynie docelowym zostaną zaktualizowane.
Zamówienia wewnętrzne
Zmiany w kreatorze oddziału
Podczas kreowania nowego oddziału możliwe jest wskazanie jest czy na stanowisku mają być wystawiane dokumenty ZW. W przypadku użytkowników, którzy posiadają już skonfigurowane oddziały Comarch POS, koniecznym jest zaznaczenie na definicji dokumentów ZW w Centrum firmy, z którym jest powiązany oddział Comarch POS, parametru Wystawianie i edycja.Przyjmowanie zamówień z oddziałów Comarch POS
Obsłużono scenariusz, w którym operator POS składa zmówienie w oddziale a następnie zamówienie to trafia do Centrali w Comarch ERP XL, gdzie może zostać zrealizowane. Aby wystawić dokument zamówienia wewnętrznego w Comarch POS należy wybrać opcję Back Office, a następnie przycisk Zamówienia wewnętrzne. Podczas dodania zamówienia należy wskazać magazyn źródłowy, na który trafi składane zamówienie oraz magazyn docelowy, na który mają trafić zamawiane towary. Zamówienie przesłane z Comarch POS do Comarch ERP XL może zostać po stronie XL:- Potwierdzone
- Anulowane
- Odrzucone
- Zamknięte
- Zrealizowane
- Otwierane – po próbie otwarcie dokumentu pojawi się komunikat w logu: Nie można otworzyć dokumentu Dokument wystawiony w Comarch POS
- Korygowane – przycisk korekty dla ZW pochodzących z POS jest niedostępny
- Niedostępna też jest opcja Ustal termin na pozycji zamówienia przesłanego z POS
Realizacja zamówień w Comarch ERP XL
Realizacja zamówienia polega na wystawieniu do niego dokumentu MMW z magazynu Centrali do magazynu POS. Zamówienie nie musi być od razu realizowane w całości. Można dokonywać częściowej realizacji zamówień, wówczas zamówienie zyskuje status w realizacji. MMW wystawione do zamówień trafiają do POS wraz z informacją, do jakich ZW zostały wygenerowane. Informacja ta widoczna jest w POS zarówno z poziomu listy zamówień wewnętrznych jaki dokumentów przyjęć magazynowych w kolumnie Dokumenty powiązane. We współpracy z Comarch POS nie jest możliwe wystawianie jednego MMW do wielu dokumentów ZW, dlatego podczas zaznaczenia wielu dokumentów ZW pochodzących z POS lub dokumentów pochodzących i niepochodzących z POS w logu pojawi się stosowna informacja: Dokument MMW nie może zostać wygenerowany. Zaznaczono więcej niż jeden dokument ZW i wygenerowanie dokumentu MMW nie powiedzie się. Zamówienia, które trafiły do XL z Comarch POS mogą być edytowane po stronie XL w zakresie zmiany ilości na pozycjach, bądź usuwania pozycji. Zmiany te przesyłane są do POS gdzie zamówienia są odpowiednio aktualizowane.Sposoby dostawy, atrybuty, opis
Do Comarch POS przesyłana jest lista sposobów dostawy, dzięki czemu operator na etapie składania zamówienia może określić jaki sposób dostawy preferuje. Na zamówieniu można też uzupełnić opis oraz wartości atrybutów nagłówka i pozycji, jeśli zostały określone do tych obiektów. Informacje te są przekazywane na importowanych zamówieniach na zasadach analogicznych jak dla innych dokumentów.Zamówienia sprzedaży
Zmiany w kreatorze oddziału
Podczas kreowania nowego oddziału możliwe jest wskazanie jest czy na stanowisku mają być wystawiane dokumenty ZS. W przypadku użytkowników, którzy posiadają już skonfigurowane oddziały Comarch POS, koniecznym jest zaznaczenie na definicji dokumentów ZS w Centrum firmy, z którym jest powiązany oddział Comarch POS, parametru Wystawianie i edycja. Dodatkowo na zakładce [Magazyny] należy ustawić magazyn źródłowy, z którego będą wystawiane dokumenty zamówienia sprzedaży w POS.Uprawnienia operatorów
Na wzorcu operatora zakładka [POS] dodano dwa parametry określające prawo do ustalania/zmiany statusów realizacji i płatności na dokumentach ZS, Zmiana statusów realizacji na zamówieniu oraz Zmiana statusu płatności na zamówieniu. Przesyłane są uprawnienia do edycji, dodawania, kasowania, podglądu zamówień na podstawie zakazów ustalanych na zakładce [Zakazy] karty wzorca operatora.Słowniki dla Zamówienia sprzedaży
W słowniku kategorii dodano dwie nowe pozycje, które wykorzystywane są na zamówieniach wystawianych w POS.- Statusy realizacji zamówienia (moduł Administrator, Listy/Słowniki kategorii/Transport)
- Statusy płatności na zamówieniu w POS (moduł Administrator, Listy/Słowniki kategorii/Transakcje)
Zmiany na formularzu dokumentu ZS
Na formularzu dokumentu ZS dodano nową zakładkę o nazwie [Realizacja], gdzie są prezentowane statusy realizacji zamówienia i płatności. Status realizacji zamówienia może być dowolnie zmieniany, natomiast status płatności z POS jest zawsze ustalany na stanowiskach oddziału POS i nie można go zmienić po stronie XLa.Rodzaje zamówień/ sposoby rezerwacji towaru
Zamówienia wystawiane zarówno w XLu jak i w POS mogą w różny sposób rezerwować towar. Działanie rezerwacji na zamówieniach zależy od ustawień definicji dokumentu ZS w kontekście Centrum powiązanego z oddziałem Comarch POS. Jeśli na definicji dokumentu nie zostanie zaznaczony żadne parametr dotyczący rezerwacji, wówczas nie będą tworzone żadne rezerwacje na towar dodany do zamówienia. Jeśli na definicji dokumentu zostanie zaznaczony parametr Rezerwacje blokują towar na magazynie, wówczas rezerwacje są traktowane jako ilościowe i nie pomniejszają w POS dostępnego stanu towarów. Jeśli zaznaczono parametr Rezerwuj zasoby, wówczas rezerwacje traktowane są jako zasobowe i pomniejszają ilość dostępną towaru na magazynie. Na stanowisku POS ilość zarezerwowana jest prezentowana w kolumnie Rezerwacje na podglądzie towaru lub partii towaru pod przyciskiem Zasoby.Synchronizacja zamówień pomiędzy systemami
Import zamówień z Comarch POS
Wszystkie zamówienia wystawiane na stanowiskach oddziałów Comarch POS, trafiają do bazy systemu Comarch ERP XL. Przenoszone są informacje o odbiorcy i nabywcy, o zarezerwowanych towarach wraz z informacją czy rezerwacja jest ilościowa, zasobowa lub jest to zamówienie bez rezerwacji, ustalona forma płatności, termin realizacji zamówienia i płatności, statusy realizacji i płatności, atrybuty pozycji i nagłówka oraz opis. Zamówienie wystawione na jednym stanowisku POS może być przesłane na inne stanowiska sprzedaży. Zamówienie trafia na listę zamówień sprzedaży na innym stanowisku POS po naciśnięciu przycisku Odśwież oraz w trakcie wykonywania pełnej synchronizacji.Eksport zamówień do Comarch POS
Zamówienia wystawione w Comarch ERP XL również mogą być wysyłane na stanowiska POS. Warunkiem przesłania zamówienia do systemu Comarch POS jest ustawienie na zamówieniu magazynu wykorzystywanego w danym oddziale Comarch POS, czyli dodanym na oknie konfiguracji oddziału na zakładce [POS Agent]. Magazyn POS musi być ustawiony zarówno na nagłówku jak i elementach, i rezerwacjach zamówienia. Do POS przesyłane są zamówienia Potwierdzone, natomiast nie są wysyłane zamówienia Niepotwierdzone oraz zamówienia Odrzucone. Zamówienia wystawione w innej walucie niż systemowa, również nie będą wysyłane do POS. Comarch ERP XL pilnuje również czy kontrahenci i towary ustawione na zamówieniu są przesyłane do POS. Jeśli nie są, wówczas całe zamówienie nie jest przesyłane.Modyfikacja zamówień oraz ich realizacja
Zamówienia sprzedaży mogą być modyfikowane zarówno na stanowiskach POS jak i w centrali, czyli w systemie Comarch ERP XL. Modyfikacje realizowane w POS trafiają automatycznie do bazy XLa, zamówienia modyfikowane po stronie XLa są aktualizowane na stanowiskach POS naciśnięciu przycisku Odśwież na liście zamówień lub podczas pełnej synchronizacji. Podczas otwierania zamówienia w POS, zmiany statusów, zamykania, anulowania czy realizacji zamówienia następuje sprawdzenia stanu zamówienia on-line w bazie XLa. Jeśli zamówienie jest otwarte w systemie XL lub na innym stanowisku, wówczas wyświetlana jest stosowna informacja i system nie pozwala na wykonanie żadnej akcji na tym zamówieniu. Dodatkowo dzięki usłudze sprawdzania zamówień on-line, przed jego modyfikacją pobierana zawsze aktualna wersja zamówienia, tak aby wykonywana modyfikacja czy realizacja zamówienia odbywała się zawsze na aktualnej wersji dokumentu. Zamówienie może być realizowane zarówno po stronie POS jak i po stronie XLa za pomocą faktury lub paragonu. W Comarch POS faktura czy paragon mogą być wystawiane tylko do jednego zamówienia, a zamówienie nie musi być realizowane w całości, lecz wieloma dokumentami sprzedaży. Po wystawieniu faktury lub paragonu do zamówienia, dokument sprzedaży wysyłany jest do XLa a dokument zamówienia jest aktualizowany (status w realizacji lub zrealizowany). Dokumenty ZS i FS lub PA są ze sobą powiązane co widoczne jest zarówno po stronie XLa jak i POS. Informacja o stanie realizacji zamówienia jest przekazywana również na inne stanowiska pod warunkiem wykonania tam opcji Odśwież lub pełnej synchronizacji. Podczas synchronizacji realizowanego zamówienia pochodzącego z innego stanowiska nie są przesyłane powiązane dokumenty handlowe, lecz informacja o statusie zamówienia (w realizacji lub zrealizowany).Aktualizacja stanów
Zamówienia zasobowe wpływają na stany towaru dostępnego do sprzedaży i są widoczne na liście zasobów w kolumnie Rezerwacje. Bez względu na to czy zamówienie zasobowe ZS zostało wystawione w POS czy w XLu (na magazyn POS), zamówienia od razu wpływają na stany towaru. Dzięki usłudze Comarch POS Agent, aktualna dostępna ilość towaru jest widoczna od razu na wszystkich stanowiskach bez konieczności synchronizacji tych dokumentów na inne stanowiska. Aby zamówienia wystawiane w XLu również na bieżąco aktualizowały stany towaru w POS Agencie, konieczne jest skorzystanie z usługi Comarch POS Agent Broker. Zamówienia ilościowe oraz zamówienia bez rezerwacji nie wpływają na stany dostępne w POS.Korekty zasobów na stanowisku Comarch POS- RW/PW
Funkcja korekty zasobów umożliwia ręczną aktualizację stanów magazynowych przy pomocy rozchodu wewnętrznego (RW) i przychodu wewnętrznego (PW). Korektę zasobów przy użyciu dokumentów PW i RW dokumentów można zastosować np. w przypadkach:- zniszczenia towaru
- znalezienia pustych opakowań
- kradzieży
- korekty stanów magazynowych
- korekty przyjęć towarów/paczek
Zmiany w kreatorze oddziału RW/PW
Podczas kreowania nowego oddziału możliwe jest wskazanie czy na stanowisku mogą być wystawiane dokumenty PW oraz RW. Odpowiednie typy dokumentów należy zaznaczyć w kroku 1 kreacji nowego oddziału.

- schematem numeracji tych dokumentów
- powiązaniem typu dokumentu z magazynami
- wydrukami dedykowanymi dla danych dokumentów
- uprawnieniami do wystawiania, anulowania, podglądu dokumentów – przesyłane są uprawnienia na podstawie zakazów ustawianych na wzorcu operatora
Wystawianie dokumentów PW i RW na stanowisku POS
Aby dokonać korekty zasobów na stanowisku POS za pomocą dokumentów PW lub RW w Comarch POS należy wybrać opcję Back Office, a następnie przycisk Korekty zasobów. Po wybraniu opcji Nowa korekta zasobów należy wybrać opcję wystawienia RW lub PW. Opcja korekty zasobów dostępna jest też na podglądzie konkretnych artykułów pod przyciskiem Nowa korekta zasobów. Podczas tworzenia dokumentu PW i RW należy wskazać magazyn, dla którego będzie wykonywana korekta zasobów oraz powód wystawienia takiej korekty. Określenie magazynu oraz powodu korekty jest obowiązkowe. Korekty zasobów mogą być realizowane w kontekście magazynów danego oddziału, czyli tych magazynów, które zostały określone na zakładce [POS Agent] na formatce Oddziału Comarch POS w XL. Aby możliwe było określenie powodu korekty w Comarch ERP XL został wprowadzony nowy słownik kategorii, który jest przesyłany do oddziałów POS.
Import dokumentów do Comarch ERP XL
Dokumenty wystawione na stanowisku POS są importowane do XLa. Na dokumentach RW pobierane są dostępne zasoby i partie wskazane podczas wystawiania dokumentu w POS. Przy imporcie dokumentów PW cena nie jest przekazywana, dlatego na pozycjach dokumentów PW cena jest ustawiana na podstawie ostatniej ceny zakupu. Generowanie dokumentów magazynowych do PW, RW uzależnione jest od ustawień na definicji dokumentów. Na definicji dokumentu PW, na zakładce [Inne] należy wybrać opcję Zezwalaj dla ustawienia: Zatwierdzanie dokumentów z pozycjami o wartości zerowej. W przeciwnym wypadku, dokument może nie zostać zaimportowany, jeśli w XLu nie zapisano ceny zakupu (nie było dostaw towaru).
Przyczyna korekty, atrybuty, opis
Do Comarch POS przesyłana jest lista przyczyn korekty (wystawienia PW, RW), dzięki czemu operator może określić przyczynę podczas wystawiania dokumentów. Informacja o przyczynie korekty przesyłana jest do XL i zapisywana na zakładce [Nagłówek], w sekcji Transakcja w polu Cecha. Na zamówieniu można też uzupełnić opis oraz wartości atrybutów nagłówka i pozycji, jeśli klasy atrybutów zostały przypisane do tych obiektów. Informacje te są przekazywane na importowanych dokumentach na zasadach analogicznych jak dla innych dokumentów.Dodawanie nowego słownika kategorii
W module Administrator w menu Listy/Słowniki kategorii w gałęzi Transakcje dodano nowy słownik Przyczyna wystawienia PW, RW w POS. Lista domyślnie nie zawiera żadnych wpisów, dlatego przed wystawieniem pierwszego dokumentu PW lub RW w POS należy dodać przynajmniej jedną pozycję do listy. Przyczyna wystawienia korekty może być przeznaczona tylko dla PW, tylko dla RW lub dla obu dokumentów. Można o tym decydować przez zaznaczenie odpowiednich opcji na formatce przyczyny.Przyjmowanie dostaw bezpośrednio na stanowisku POS za pomocą dokumentów PZ
W określonych branżach czy sklepach istnieje potrzeba przyjmowanie towarów bezpośrednio na stanowisku POS bez konieczności oczekiwania na przyjęcie towaru w Centrali. Czasami towar trafia bezpośrednio do sklepu, dlatego umożliwiono wprowadzanie dokumentów PZ bezpośrednio na stanowiskach Comarch POS. Aby móc korzystać z opcji wystawiania dokumentów PZ, podczas dodawania nowego oddziału POS należy zaznaczyć opcję obsługi dokumentów PZ w danym oddziale.

- Sprzedaż z magazynów: wszystkich
- Parametr Generuje płatności na zakładce [Parametry] odznaczony.
Dla dokumentów PZ wysyłane są następujące dane:
- Schemat numeracji – dokumenty PZ wprowadzane będą z serią przypisaną do stanowiska POS analogicznie jak inne dokumenty.
- Wydruki – dodano standardowy wydruk dostępny na zakładce [Wydruki] na stanowisku POS.
- Uprawnienia operatorów – na podstawie zakazów ustawionych na wzorcach/grupach operatorów.
- Atrybuty – możliwość wysyłania klas atrybutów przypisanych do nagłówka lub pozycji dokumentu PZ wraz z określeniem ich wymagalności.
Wystawianie dokumentów PZ w POS
Po zaznaczeniu parametru Wystawianie i edycja na definicji PZ w XLu, w Comarch POS w menu Back Office/Przyjęcie dostawy pojawi się przycisk Dodaj ręczny PZ.
- Wybranie magazynu sklepu, na który realizowane jest przyjęcie
- Ustalenie dostawcy oraz kontrahenta dodatkowego wraz z adresami
- Dodawanie towarów wraz z ilością (w przypadku wskazania konkretnej partii towaru, w XL ustalana jest odpowiednia partia na zakładce [Dostawy])
- Wprowadzenie ceny zakupu na podstawie otrzymanego dokumentu (to, czy ceny mają być wprowadzane w wartości netto czy brutto zależy od definicji dokumentu ustalonej w Comarch ERP XL)
- Dodanie informacji o numerze zamówienia, do którego realizowane jest przyjęcie – informacja ta zapisywana jest w XLu w polu Zamówienie na zakładce [Nagłówek]
- Dodanie numeru powiązanego dokumentu – informacja ta zapisywana jest w polu Faktura na zakładce [Nagłówek]
- Dodanie opisu
- Dodanie atrybutów nagłówka i pozycji
Rejestrowanie reklamacji sprzedaży na stanowiskach POS
Podczas dodawania nowego oddziału POS można zaznaczyć opcje obsługi dokumentów RLS w danym oddziale.

Przesyłanie do POS przyczyn reklamacji oraz żądań reklamującego
W module Administrator w Słowniku kategorii (Listy/Słowniki kategorii/Transakcje) został dodany nowy słownik Przyczyny reklamacji w POS. Słownik ten domyślnie nie zawiera żadnych pozycji, należy uzupełnić go wg własnych potrzeb. Dodane pozycje zostaną przesłane na stanowiska POS. W przypadku niezdefiniowania przyczyn, w POS można wybrać opcję <INNA>. Odznaczenie parametru Aktywny na dodanej pozycji spowoduje, że nie będzie ona dostępna do wybrania po stronie POS. Do Comarch POS wysyłane będą również pozycje słownika Żądania reklamującego dostępnego również w Słowniku kategorii (Listy/Słowniki kategorii/Transakcje).Dla dokumentów RLS wysyłane są następujące dane:
- Schemat numeracji – dokumenty RLS wprowadzane będą z serią przypisaną do stanowiska POS analogicznie jak inne dokumenty.
- Wydruki – dodano standardowy wydruk dostępny na zakładce [Wydruki] na stanowisku POS.
- Uprawnienia operatorów – na podstawie zakazów ustawionych na wzorcach/grupach operatorów.
- Atrybuty – możliwość wysyłania klas atrybutów przypisanych do nagłówka lub pozycji dokumentu RLS wraz z określeniem ich wymagalności.
Wystawianie dokumentów RLS w POS i przesyłanie do XLa
Na stanowiskach Comarch POS możliwe jest wystawianie dokumentów reklamacji zarówno z listy reklamacji jak i bezpośrednio z dokumentu faktury lub paragonu, do którego wystawiana jest reklamacja. Reklamacja może być też wystawiona jako niepowiązana z dokumentem handlowym ze wskazaniem towaru, którego dotyczy. Jeden dokument reklamacji dotyczy zawsze jednego towaru lub jednej pozycji dokumentu handlowego. Na dokumencie RLS wystawianym w POS należy określić:- Kontrahenta oraz odbiorcę wraz z adresami
- Reklamowany towar/usługę wraz z ilością
- Termin rozpatrzenia reklamacji (domyślnie pobierany z definicji dokumentu w XLu)
- Datę usterki – data powstania/zauważenia usterki
- Przyczynę reklamacji – wybór z listy dostępnych przyczyn zdefiniowanych w XLu
- Żądanie reklamującego – wybór z listy dostępnych żądań zdefiniowanych w XLu
- Opis usterki
- Atrybuty towaru i dokumentu

Realizacja reklamacji w Comarch POS
Po wysłaniu RLS do bazy XLa, reklamacja może być nadal uznawana bądź odrzucana na stanowisku POS. Po wykonaniu tej akcji informacja o zmianie stanu jest przesyłana do bazy XLa. Stany i statusy są odpowiednio aktualizowane; na pozycji reklamacji a na zakładce [Realizacja] pojawia się nowa pozycja: uznanie lub odrzucenie. Reklamacja, która jest rozpatrzona może zostać zamknięta przez operatora POS, po czym następuje aktualizacja stanu reklamacji w Xlu na Zamknięta. Reklamacja złożona w Comarch POS nie może być anulowana ani na stanowisku POS, ani z poziomu XLa. Jedyna droga to odrzucenie i zamknięcie reklamacji.Realizacja reklamacji w Comarch ERP XL
Rozpatrzenie i realizacja reklamacji mogą następować również w systemie Comarch ERP XL. Do POS przesyłane są następujące akcje wykonane w XLu:- Uznanie
- Odrzucenie
- Zamknięcie
- Otwarcie
Bony we współpracy z POS
Opis działania bonów
Opis konfigurowania, generowania i obrotu bonami został opisany w punkcie: Obsługa bonów towarowych. Rodzaje bonów, które mogą być obsługiwane w Comarch POS muszą zostać przypisane do Centrum powiązanego z oddziałem Comarch POS na zakładce [Rodzaje bonów]. Tylko bony z przypisanych rodzajów zostaną przesłane do oddziału Comarch POS. Do POS będą przesyłane bony, które mogą być sprzedane (stan: przyjęte na stan) lub wykorzystywane do rozliczenia (stan: wydane lub w realizacji). Nie zostaną przesłane bony zrealizowane oraz zablokowane.Przesyłanie do POS nowej formy płatności: bon
Aby płatność Bon została przesłana do Comarch POS konieczne jest zaznaczenie na płatności na definicji Centrum powiązanego z oddziałem Comarch POS, na zakładce [Formy Płatności], parametru Dostępna w oddziale. Na definicji każdego stanowiska POS konieczne jest powiązanie formy płatności Bon z rejestrem kasowo- bankowym. Możliwe jest wskazanie tego samego rejestru, który jest wykorzystywany dla gotówki lub dodanie nowego rejestru przeznaczonego tylko dla płatności bonem. Oznaczenie parametru Bez KP/KW będzie oznaczało, że dla płatności kartą nie będą tworzone dokumenty wpłat. Oznaczenie parametru Wyczyść po zamknięciu sesji będzie oznaczało, że kwoty z zapłaty bonami nie będą się kumulować, lecz będą zerowane po każdym zamknięciu sesji. Podczas przypisywania rejestru kasowego/bankowego do płatności typu Bon sprawdzane jest ustawienie parametru Bony na operacji przychodowej przypisywanej do rejestru. Do wybieranego rejestru musi być przypisana przynajmniej jedna operacja przychodowa z zaznaczonym parametrem Bony. Jeśli warunek nie zostanie spełniony, rejestr nie będzie mógł być przypisany. Należy wówczas wybrać inny rejestr lub zmienić ustawienie powyższego parametru.Sprzedaż bonów
Bony towarowe mogą być sprzedawane na dokumentach handlowych (fakturze lub paragonie) lub za pomocą not memoriałowych. To czy bon będzie sprzedawany za pomocą dokumentów handlowych czy też za pomocą not memoriałowych zależy od tego czy na rodzaju bonu został przypisany rodzaj noty. Aby bon mógł być sprzedany w POS musi nastąpić przyjęcie towaru i partii odpowiadającej numerowi bonu. Można to zrobić na kilka sposobów:- Przyjęcie bonów bezpośrednio na magazyn w POS za pomocą dokumentu przychodowego np. PW czy PZ
- Przesunięcie bonów dokumentem MMW z magazynu, na który bony zostały przyjęte na magazyn POS. Przyjęcie bonów na magazyn POS odbywa się analogicznie jak przyjęcie towarów w menu Back Office, Przyjęcie dostawy
Sprzedaż za pomocą faktury lub paragonu
Jeśli do rodzaju bonu nie został przypisany rodzaj noty wówczas standardowo sprzedaż bonów będzie realizowana wybranym dokumentem handlowym. Do sprzedaży bonów konieczne jest połączenie on-line z Comarch ERP XL. W przypadku gdy takiego połączenia nie ma, system POS wyświetli komunikat: Brak połączenia z serwisem bonów. W momencie sprzedaży bonu serwis bonów sprawdza stan bonu. Do sprzedaży może być przekazany tylko bon o stanie: Przyjęty na stan. Dodatkowo sprawdzany jest stan ilościowy dla partii odpowiadającej numerowi bonu i jeśli na magazynie, z którego wystawiana jest faktura/paragon brak ilości dla bonu, sprzedaż również nie będzie możliwa. Informacja o sprzedaży bonu trafia do XL wraz z zaimportowanym dokumentem sprzedaży. Po zaimportowaniu dokumentu do XL, stan bonu zmienia się na Wydany.Sprzedaż za pomocą not memoriałowych
Aby możliwa była sprzedaż za pomocą not memoriałowych konieczne jest odpowiednie skonfigurowanie systemu.- Podczas kreacji oddziału Comarch POS oraz podczas konwersji baz z istniejącymi oddziałami zostanie dodana nowa seria do listy serii not memoriałowych oznaczona nowym parametrem Oddziałowa. Seria dla not będzie taka sama jak dla dokumentów handlowych. Serii tej nie będzie można wykorzystywać podczas wystawiania not z poziomu XL, podczas próby wybrania pojawi się stosowny komunikat
- Konieczne jest dodanie nowej definicji noty memoriałowej oznaczonej parametrem Bony jak opisano w punkcie: Zmiany w definicji noty memoriałowej
- Na definicji rodzaju bonu należy przypisać dowolną definicję noty oznaczoną parametrem Bony

- paragon na towary i bony niepowiązane z notami
- notę na bony powiązane z definicją noty

Płatność za pomocą bonu
Do rozliczenia płatności mogą być wykorzystywane bony, które posiadają stan Wydany lub W realizacji, które równocześnie nie są przeterminowane. Do zapłaty bonem konieczne jest połączenie on-line z Comarch ERP XL, gdyż serwis bonów sprawdza w momencie zapłaty stan bonu w XL. W przypadku braku takiego połączenia, po wpisaniu numeru bonu zostanie wyświetlony komunikat: Brak połączenia z serwisem bonów i zapłata bonem nie będzie możliwa. Serwis bonów sprawdza stan bonu, jego wartość (lub wartość pozostałą do wykorzystania), oraz termin ważności. Jeśli bo nie może zostać wykorzystany do zapłaty jest to sygnalizowane odpowiednim komunikatem. Podczas zapłaty bonem należy wskazać formę płatności Bon oraz wpisać numer bonu. Jeśli bon jest możliwy do wykorzystania zostaje przypisany do płatności typu Bon. W przypadku bonu jednorazowego, po jego wykorzystaniu na płatności dokumentu, staje się on bonem zrealizowanym i nie może być użyty powtórnie, nawet wówczas, gdy płatność opiewała na wartość mniejszą niż wartość bonu. W przypadku bonów wielokrotnych po wpisaniu numeru bonu i dodaniu go do płatności, wyświetlana jest informacja o pozostałej kwocie bonu. Bon może zostać wykorzystany w kolejnych transakcjach. Po zaimportowaniu dokumentów sprzedaży do XL następuje aktualizacja stanu bonu. Możliwe stany to: W realizacji (bon wielokrotny, wykorzystany częściowo), Zrealizowany (jednokrotny lub wielokrotny rozliczony w całości). Jeśli zgodnie z konfiguracją płatności na stanowisku POS, w XL zostanie utworzony zapis kasowy lub bankowy do płatności typu bon, na zapisie zostanie dodana informacja o numerze bonu wykorzystanym na płatności. Numer bonu widoczny będzie na zapisie w polu: Bon na zakładce [Ogólne]. Informacja o numerze bonu zapisywana jest również na Płatności do dokumentu w polu: Bon na zakładce [Ogólne].Aktualizacja stanu bonu w momencie jego wykorzystania podczas zapłaty za dokument w POS
Wprowadzono usługę, która aktualizuje stan bonu on-line czyli od razu w momencie zapłaty w POS. Bon jednorazowy zostaje od razu ustawiony jako zrealizowany natomiast dla bonu wielokrotnego jest ustalana nowa wartość pomniejszona o kwotę użytą podczas rozliczenia. Tak wiec, zanim dokument sprzedaży, który został opłacony bonem trafi do XLa, bon jest zaktualizowany i nie istnieje ryzyko, aby został użyty ponownie.Obsługa usług
Umożliwiono przesyłanie kart towarowych o typie usługa. Dla usług przesyłane są również cenniki, jednostki pomocnicze, kody kreskowe, atrybuty oraz zdjęcia.Obsługa klawiatury numerycznej w POS
Na stanowisku POS dodano nowy parametr Obsługa klawiatury numerycznej, który odpowiada za włączenie odpowiedniej obsługi po stronie Comarch POS. Po zaznaczeniu parametru i synchronizacji ustawień, na oknie sprzedaży na stanowisku POS dostępna będzie numeryczna klawiatura ekranowa, która umożliwia łatwe wpisywanie danych liczbowych za pomocą ekranów dotykowych.Synchronizacja towarów powiązanych i zamienników
Towary powiązane i zamienniki są to obiekty rejestrowane na kartach towarów, na zakładce [Zamienniki]. Jest to rodzaj powiązania pomiędzy towarami, które pozwala na lepsze zarządzenie sprzedażą, proponowanie dodatkowych towarów bądź zamienników. Rodzaje powiązań pomiędzy towarami można definiować w słownikach kategorii w module Administrator. Wszystkie rodzaje powiazań (łącznie z zamiennikami) wysyłane są do Comarch POS.
Warunki przesyłania towarów powiązanych i zamienników
Do Comarch POS przesyłane są te powiązania, które na zakładce [Miejsca w strukturze firmy] mają dodane centrum powiązane z oddziałem Comarch POS lub centrum nadrzędne w stosunku do powyższego.

- Towary powiązane
- Powiązanie towaru z innym towarem przesyłane jest pod warunkiem, że towary należą do drzewa grup towarów przesyłanych do POS.
- Powiązanie nie będzie widoczne w POS, jeśli dany typ powiązania zostanie oznaczony w słownikach kategorii jako nieaktywny.
- Zamienniki
- zamiennik jednostronny lub obustronny (nie są przesyłane zamienniki: równoważne wszystkim)
- przelicznik towaru do zamiennika jest równy 1:1
- zaznaczono rodzaj dokumentów: Rozchodowe
Po usunięciu lub modyfikacji zamiennika/towaru powiązanego w Comarch ERP XL, zmiany przesyłane są do POS i aktualizowane.
Widoczność towarów powiązanych i zamienników w POS
- Podgląd karty towaru (artykułu) w Comarch POS
- Menu Artykuły > Podgląd > zakładka [Artykuły powiązane]

- Podczas dodawania towaru do faktury lub paragonu
Produkty proponowane, zamienniki i inne towary powiązane widoczne są kontekstowo dla każdej dodawanej do dokumentu pozycji.

Z listy widocznych towarów powiązanych można wybrać dowolny produkt i dodać go do dokumentu sprzedaży.
Obsługa limitów kredytowych
Wprowadzono możliwość obsługi limitów kredytowych we współpracy z Comarch POS. Limity są wysyłane na poszczególne stanowiska POS i kontrolowane podczas sprzedaży. Kontrahenci mogą mieć limit nieograniczony, ograniczony do określonej wysokości lub mogą korzystać z limitów innego kontrahenta. Obsłużono również możliwość korzystania z opcji kontroli limitów akwizytora.
Konfiguracja działania limitów we współpracy z POS
Na oknie konfiguracji oddziału Comarch POS, na zakładce [Kontrahenci] dodano następujące parametry:
- Obsługa limitu kredytowego – po zaznaczeniu tej opcji limity będą wysyłane do POS i kontrolowane podczas sprzedaży
- Maksymalny czas od ostatniej synchronizacji (m) – możliwość ustawienia maksymalnego czasu w minutach, w którym możliwe będzie korzystanie z lokalnie zapisanych limitów w sytuacji, gdy połączenie POS z centralą nie będzie aktywne.
- Prezentacja dostępnego limitu – parametr ten posiada trzy opcje decydujące o tym, jak limity mają być prezentowane podczas sprzedaży:
- Odejmuj wartość dokumentu – wartość dodawanych pozycji będzie automatycznie zmniejszała wartość dostępnego limitu
- Nie odejmuj wartości dokumentu – dostępny limit nie będzie się zmniejszał wraz z dodawaniem kolejnych pozycji do dokumentu.
- Nie prezentuj – kwota limitu nie będzie prezentowana, jednak podczas zatwierdzania dokumentu system sprawdzi limit i zostanie wyświetlone ostrzeżenia bądź blokada zgodnie z ustawieniami definicji dokumentu.

Przesyłanie ustawień związanych z limitami
Wymagane płatności bezgotówkowe
Aby działały funkcjonalności związane z limitami konieczne jest przesyłanie na stanowisko POS przynajmniej jednej płatności, która nie jest płatnością gotówkową, czyli nie tworzy zapisów kasowo-bankowych podczas zatwierdzania dokumentu. Tylko dla takich płatności stosowane są zabezpieczenia przed przekroczeniem limitu.
Na stanowisku POS należy dodać przynajmniej jedną płatność, która ma zaznaczoną opcję w kolumnie Bez KP/KW jak przedstawiono poniżej.

Czy w limicie uwzględniać dokumenty nie generujące płatności
To ustawienie przesyłane jest na podstawie definicji dokumentu FS w centrum głównym. W Comarch POS ustawienie to jest wspólne dla wszystkich dokumentów oraz dla wyświetlania na karcie kontrahenta. W Comarch ERP XL jest definiowane dla każdego dokumentu oddzielnie. Ze względu na fakt, że limity mają najczęściej zastosowanie na fakturach, przyjęto, że ustawienie to będzie pobierane z definicji faktury sprzedaży.

Sposób reakcji na przekroczenie limitu
To ustawienie przesyłane jest na podstawie definicji poszczególnych dokumentów (FS, PA) w centrum powiązanym z oddziałem Comarch POS. W zależności od ustawienia parametrów jak niżej podczas zatwierdzania dokumentu forma płatności niegotówkową może pojawić się ostrzeżenie lub nastąpić blokada zatwierdzenia dokumentu. Możliwe jest również pomijanie informacji o limicie w przypadku wybrania opcji Zezwalaj.

Przesyłanie limitów
Dla każdego kontrahenta wysyłane są wszystkie aktualne ustalone dla niego limity kredytowe. Nie są wysyłane limity, które są już przeterminowane. Każda zmiana wielkości limitu jest aktualizowana a usunięcie limitu powoduje jego usunięcie na stanowisku POS.
- W przypadku zaznaczenia na karcie kontrahenta, zakładce [Limity kredytowe] parametru Limit nieograniczony, limity nie będą wysyłane do POS a limit nie będzie kontrolowany.
- Jeśli wymieniony wyżej parametr nie będzie zaznaczony, ale limity nie zostaną ustalone wówczas na stanowisku POS będzie wyświetlana informacja o braku przyznanego limitu kredytowego.
- W przypadku dodania limitu kredytowego na zakładce [Limity kredytowe], limity będą odpowiednio wyświetlane i kontrolowane.
- Jeśli na karcie kontrahenta, zakładka [Handlowe] zostanie wskazany inny płatnik oraz zaznaczony parametr: Forma i termin płatności oraz limit kredytowy z karty płatnika, wówczas limit kredytowy będzie sprawdzany dla ustawionego dla kontrahenta płatnika.

Kontrola on-line limitów
Bardzo ważne jest, aby podczas sprzedaży możliwe było ustalenie najbardziej aktualnego wykorzystania limitu kredytowego, gdyż limit może być wykorzystany na innym stanowisku lub w systemie Comarch ERP XL. W momencie wyświetlenia danych kontrahenta w POS limit zostanie pobrany z XLa i wyświetlana zostanie aktualna wartość całkowita oraz dostępna limitu. Podobnie podczas wystawiania dokumentów sprzedaży prezentowany będzie dostępny i całkowity limit kontrahenta lub jego płatnika a przy zatwierdzaniu dokumentu FS czy PA z płatnością niegotówkową nastąpi kontrola bądź ostrzeżenie w przypadku przekroczenia limitu lub jego braku.
Jeśli z jakiegokolwiek powodu połączenie on-line nie będzie możliwe, wówczas z limitu można korzystać przez określony czas, którego długość ustala się w konfiguracji oddziału.
Limity akwizytora
Jeśli w Konfiguracji na zakładce [Sprzedaż]/[Parametry2] zostanie zaznaczony parametr: Sprawdzaj limit akwizytora, wówczas do POS będą wysyłane limity ustawione na karcie kontrahenta oznaczonego jako akwizytor, na zakładce [Limity akwizytora]. Limit akwizytora ustalany jest oddzielnie dla każdego centrum, dlatego, aby limit trafił do oddziału Comarch POS musi zostać przypisany do odpowiedniego centrum powiązanego z danym oddziałem.

Aby dla danego kontrahenta zadziałał limit akwizytora, konieczne jest przypisanie akwizytora na karcie kontrahenta, na zakładce [Inne]. Akwizytor musi być wybrany z listy kontrahentów (nie może być pracownikiem).

Limit akwizytora traktowany jest jak limit innego płatnika, to znaczy, że jeśli do kontrahenta zostanie przypisany akwizytor, a na karcie akwizytora zostanie ustalony limit, to na karcie kontrahenta oraz podczas sprzedaży dla tego kontrahenta, będzie sprawdzany limit przypisanego akwizytora.
W przypadku stosowania limitów akwizytora (włączony parametr Sprawdzaj limit akwizytora), nie są obsługiwane inne limity kontrahentów.
Zasady przesyłania, kontroli i kontroli on-line limitów akwizytora są takie same jak limitów kontrahenta/płatnika.
Wyszukiwanie kontrahentów w GUS i VIES
Umożliwiono wyszukiwanie i weryfikowanie kontrahentów w serwisach GUS i VIES. W tym celu przekazywany jest do systemu Comarch POS zaszyfrowany numer klucza ustawionego na definicji Usługi synchronizacji z POS. Aby wyszukiwanie w GUS i VIES było możliwe, serwis klucza musi być aktywny a klucz musi posiadać ważną gwarancję.Rozliczanie płatności w walucie obcej z równoczesnym wydaniem reszty w PLN (w walucie systemowej)
W Comarch POS możliwe jest przyjmowanie zapłaty za fakturę lub paragon w walucie obcej. Jeśli płatność walutowa zostanie przyjęta formą płatności gotówkową, wówczas system automatycznie wyliczy kwotę do wydania klientowi w walcie systemowej, czyli w PLN. Przy imporcie tak rozliczonych dokumentów do Comarch ERP XL tworzone są dwie płatności – jedna jako należność w wysokości wpłaty walutowej a druga jako zobowiązanie na wartość stanowiąca różnicę pomiędzy zapłatą w walucie obcej przeliczoną na PLN a wartością dokumentu (reszta wydana klientowi w PLN). To, czy do płatności zostaną wygenerowane dokumenty zapłaty (rozliczenia) zależy od ustawienia parametru Bez KP/KW na definicji płatności na stanowisku POS. Wyliczenie kwoty do zwrotu (reszty) realizowane jest po stronie Comarch POS wg określonego kursu (ustawienia kursu dla Comarch POS dostępne są na definicji Oddziału POS na zakładce [Waluty]).Inwentaryzacja
Wprowadzono możliwość realizowania inwentaryzacji we współpracy z Comarch POS, gdzie odczyty (spis towarów z natury) mogą być realizowane na stanowiskach POS. Dodanie dokumentu inwentaryzacji będzie realizowane po stronie XLa. Następnie do dokumentu inwentaryzacji należy wygenerować arkusze inwentaryzacyjne, które zostaną przesłane na stanowiska POS. Po stronie stanowisk POS będą generowane odczyty, które po zamknięciu arkuszy w POS trafią do XLa. Zatwierdzenie całej inwentaryzacji i wykonanie korekt inwentaryzacyjnych realizowane będzie po stronie Comarch ERP XL.Ustawienia i uprawnienia
Na oknie konfiguracji oddziału Comarch POS oraz w kreatorze oddziału dodano nowe parametry związane z inwentaryzacją. Aby móc wykonywać operacje związane z inwentaryzacją w oddziałach Comarch POS konieczne jest zaznaczenie parametru Obsługa inwentaryzacji. Dodatkowo dodano parametr Ostrzegaj podczas dodawania inwentaryzowanego towaru na dokument. Po jego zaznaczeniu, podczas wystawiania dokumentów w POS na towary znajdujące się na arkuszach inwentaryzacyjnych pojawi się stosowny komunikat informujący o trwającej inwentaryzacji. Komunikat będzie się pojawiał do czasu zatwierdzenia arkusza, na którym znajduje się towar. Należy pamiętać, że zamknięcie arkusza w Comarch POS spowoduje aktualizację stanów w POS i przesłanie arkuszy do Comarch ERP XL, natomiast po stronie systemu XL inwentaryzacja do czasu jej zamknięcia nadal będzie blokować sprzedaż i wystawianie innych dokumentów. Na wzorcu operatora na zakładce [POS] również dodano parametry związane z inwentaryzacją. Są to parametry związane z uprawnieniami operatorów.Typy inwentaryzacji
Przed przystąpieniem do pierwszej inwentaryzacji należy dodać odpowiedni typ inwentaryzacji w POS. W tym celu w module Administrator należy przejść do opcji Listy/ Słowniki Kategorii/ Transakcje/ Typy inwentaryzacji POS. W słowniku tym należy dodać przynajmniej jeden typ inwentaryzacji, który jest niezbędny przy realizowaniu inwentaryzacji w Comarch POS. Na każdym z typów możliwe jest określenie kodu i nazwy typu oraz parametrów dotyczących sposobu realizacji inwentaryzacji. Jeden z typów można ustawić jako domyślny, wówczas automatycznie zostanie ustawiony no nowej inwentaryzacji. Można również dezaktywować wybrany typ za pomocą odznaczenia parametru Aktywny.Przygotowanie inwentaryzacji w Comarch ERP XL
Inwentaryzację należy dodać standardowo w module Sprzedaż w menu Zestawienia/Inwentaryzacja. Następnie należy wybrać jeden z magazynów POS, dla którego ma być przeprowadzona inwentaryzacja. Dla każdego magazynu inwentaryzacja musi być przeprowadzona oddzielnie tzn. należy wygenerować oddzielny dokument inwentaryzacyjny. Po dodaniu magazynu POS, zostanie aktywowany parametr Realizuj w Comarch POS. Po jego zaznaczeniu w polu Typ inwentaryzacji POS ustawi się domyślny typ inwentaryzacji. Jeśli żaden z typów nie został określony jako domyślny, obowiązkowo należy wybrać typ inwentaryzacji. Dla inwentaryzacji realizowanych po stronie POS konieczne jest przekazanie numeru dokumentu. W tym celu dodano pole Nazwa/Numer, którego uzupełnienie jest wymagane tylko w przypadku inwentaryzacji realizowanych w Comarch POS.Parametry inwentaryzacji
Na oknie inwentaryzacji niektóre parametry nie są dostępne do edycji i ich ustawienie jest domyślne.- Rodzaj odczytów – ustawienie to pobierane jest z typu inwentaryzacji.
- Generowanie arkuszy z podziałem na partie – opcja zaznaczona ze względu na to, że Comarch POS operuje na partiach towarów.
- Ilość inwentaryzowana – zaznaczona opcja handlowa, gdyż do Comarch POS wysyłane są stany handlowe towarów.
Dodawanie arkuszy inwentaryzacji
Aby inwentaryzacja została przesłana do Comarch POS należy wygenerować przynajmniej jeden arkusz. Podczas dodawania towarów do arkusza, system pilnuje, aby dodawane towary należały do grupy towarów wysyłanych do danego oddziału POS. Jeśli zostaną wskazane towary nie wysyłane do danego oddziału POS, z którego pochodzi magazyn na inwentaryzacji, nie zostaną one dodane do arkusza. Można również przygotować puste arkusze, wówczas towary można będzie dodawać podczas wykonywania spisu towarów na stanowiskach POS. Po zapisaniu formularza inwentaryzacji może on zostać przesłany do POS. Pobranie dokumentu inwentaryzacji inicjowane jest po stronie stanowiska POS podczas wejścia na listę dokumentów inwentaryzacji i wybranie opcji Odśwież. Po dodaniu kolejnych arkuszy, zostaną one dodane do inwentaryzacji w POS po odświeżeniu listy. Arkusze przekazane do Comarch POS nie mogą być usuwane ani aktualizowane w systemie XL, nie mogą być też dodawane do nich odczyty. Spisywanie towarów i generowanie odczytów możliwe będzie po stronie stanowisk POS.Realizacja inwentaryzacji na stanowiskach POS
Dokument inwentaryzacji oraz przesłane arkusze mają ustawiony stan otwarty i są gotowe do spisywania towaru. Do każdego arkusza może być generowanych wiele raportów (odczytów). Stany spisywanych towarów są sumowane lub nadpisywane w zależności od typu inwentaryzacji. Podczas spisywania towarów możliwe jest dodanie towaru, którego nie ma na arkuszu, w takim przypadku towar zostanie dodany do arkusza zarówno w POS jak i w XLu. Po skończonym spisie towarów należy zamknąć arkusz na stanowisku POS. Po jego zamknięciu arkusz wraz z odczytami zostanie przesłany do systemu XL i nie będzie możliwości kontynuowania spisu towarów będących na danym arkuszu. Odczyty przygotowywane na stanowiskach POS otrzymują nazwę wg schematu: Kod stanowiska_data i godzina dodania odczytu.Zamykanie inwentaryzacji
Po zamknięciu i przesłaniu do XLa wszystkich arkuszy można zamknąć inwentaryzację w systemie Comarch ERP XL. Zamknięcie inwentaryzacji w XLu spowoduje wygenerowanie dokumentów różnicowych na braki i nadwyżki zgodnie ze standardowym działaniem inwentaryzacji w Comarch ERP XL. Przed zamknięciem system zapyta czy na pewno proces inwentaryzacji po stronie Comarch POS został zakończony i czy na pewno zamknąć inwentaryzację.
Sprzedaż i inne dokumenty wpływające na stan towaru podczas inwentaryzacji
Istnieje różnica pomiędzy działaniem inwentaryzacji w Comarch ERP XL a Comarch POS polegająca na tym, że w XLu nie można wystawiać dokumentów na inwentaryzowane towary, podczas gdy w POS jest to możliwe. Oznacza to, że dokumenty wystawione na stanowiskach POS na inwentaryzowane towary lub na cały magazyn podlegający inwentaryzacji nie będą mogły być zaimportowane do czasu zamknięcia inwentaryzacji. Jeśli na dokumencie inwentaryzacji został zaznaczony opcja Inwentaryzacja blokuje cały magazyn, wówczas żadne dokument nie zostanie zaimportowany. Jeśli zostanie wybrana opcja Inwentaryzacja blokuje tylko inwentaryzowane towary, wówczas nie zostaną zaimportowane tylko te dokumenty, na których znajdą się inwentaryzowane towary. Blokada dotyczy magazynu, którego dotyczy inwentaryzacja. Na pozostałych magazynach można dokonywać sprzedaży czy wystawiać inne dokumenty. Przy włączonym parametrze Ostrzegaj podczas dodawania inwentaryzowanego, podczas dodawania towaru na dokument pojawi się stosowne ostrzeżenie o trwającej inwentaryzacji.Uzgadnianie stanów towarów podczas trwania inwentaryzacji w POS
W Comarch POS istnieje funkcjonalność polegająca na uzgodnieniu stanów towarów na podstawie stanów w Comarch ERP XL. Po wybraniu opcji Uzgadnianie stanów magazynowych w menu Aktualizacja danych stany towarów są ustalane na zgodne ze stanami w bazie systemu Comarch ERP XL. W trakcie trwania inwentaryzacji stany w Comarch POS aktualizowane są po zamknięciu arkusza, natomiast w Comarch ERP XL standardowo dopiero po zamknięciu inwentaryzacji i wygenerowaniu dokumentów na różnice inwentaryzacyjne. Wykonanie akcji Uzgodnienie stanów magazynowych doprowadziłoby do przywrócenia stanów sprzed rozpoczęcia inwentaryzacji. Nie należy wykonywać akcji Uzgodnienie stanów magazynowych podczas trwania inwentaryzacji w POS, gdyż doprowadzi to do niezgodności w stanach magazynowych pomiędzy systemami. Dodano wydruki do Inwentaryzacji (Inwentaryzacja, Wykaz rozbieżności inwentaryzacji, Arkusz inwentaryzacji, Raport inwentaryzacji). Wydruki widoczne są na formularzu stanowiska POS na zakładce [Wydruki].Wyszukiwanie globalne dokumentów w POS oraz możliwość wystawienia do nich korekt i reklamacji
Globalne wyszukiwanie dokumentów na stanowiskach POS
Obsłużono parametr globalne wyszukiwanie dokumentów na stanowiskach POS wg ustawienia na konfiguracji oddziału POS, zakładka [Parametry]. Wyszukiwanie globalne polega na możliwości przeszukania dokumentów w bazie Comarch ERP XL i pobranie na stanowisko POS. W przypadku, gdy po wpisaniu numeru poszukiwanego dokumentu (faktury lub paragonu) na liście dokumentów na stanowisku POS nie zostanie on odnaleziony w bazie lokalnej POS, System zadaje pytanie: Czy chcesz kontynuować wyszukiwanie również w systemie ERP?. Po wybraniu opcji Szukaj wysyłane jest zapytanie o konkretny numer dokumentu do Comarch ERP XL. W przypadku gdy dokument zostanie odnaleziony następuje jego pobranie i zapisanie w lokalnej bazie POS.Pobieranie dokumentów handlowych (faktur i paragonów) wystawionych na innych stanowiskach POS
Wystawianie korekt i reklamacji do dokumentów pobranych z innych stanowisk i oddziałów
Do pobranego paragonu możliwe będzie wygenerowanie faktury, wystawienie korekty oraz wystawienie dokumentu reklamacji na takich samych zasadach jak dla dokumentów wystawionych lokalnie. Do pobranych faktur możliwe będzie wystawienie korekty lub reklamacji na takich samych zasadach jak dla dokumentów wystawionych lokalnie.Współpraca z Comarch webPOS
Comarch webPOS jest wysoce skalowalnym rozwiązaniem, hostowanym w Comarch Cloud. Zadaniem aplikacji jest realizacja procesów biznesowych sprzedaży detalicznej. Aplikacja przeznaczona jest dla sprzedawców pracujących na stanowiskach kasowych. Jej głównym zadaniem jest wykonanie operacji związanych z obsługą klienta. Od wersji 2024.0 umożliwiono integrację Comarch ERP XL ze stanowiskami obsługi klienta Comarch webPOS. Aby możliwa była praca na stanowiskach webPOS, w konfiguracji Oddziału POS na zakładce [POS] dodano pole do wpisania kodu webPOS. Kod webPOS może być dowolnym ciągiem znaków, który posłuży do identyfikacji bazy danych, na której zarejestrowane są oddziały POS ze stanowiskami webPOS.
Logowanie do Comarch webPOS
W Comarch webPOS wykorzystywany jest adres e-mail operatora do powiązania użytkowników z kontem SSO, gdzie adres e-mail jest loginem. Oznacza to, że dla każdego operatora należy przesyłać adres mailowy. W tym celu zostanie wykorzystany adres e-mail pracownika powiązanego z operatorem przesyłanym do webPOS. W związku z powyższym wymaganiem należy każdemu operatorowi, który może pracować na wersji webowej POS przypisać konto pracownika, na którym należy uzupełnić adres mailowy w polu E-mail na zakładce [Ogólne]. Podczas przypisywania pracownika do operatora system pilnuje, aby ten sam pracownik nie został przypisany do kilku operatorów wykorzystywanych w oddziałach POS, dlatego nie istnieje ryzyko, że ten sam pracownik zostanie dodany do kilku operatorów. Każdy pracownik powinien mieć przypisany inny adres mailowy, pole to nie jest walidowane w systemie XL, dlatego należy zwrócić uwagę, aby adresy e-mail były unikalne.Nowy typ stanowiska
W konfiguracji Oddziałów Comarch POS dodano możliwość definiowania stanowisk z przeznaczeniem do pracy na platformie webPOS. Podczas dodawania stanowiska pojawiła się możliwość wskazania w polu Typ aplikacji opcji webPOS. Po wybraniu typu aplikacji webPOS, w polu Licencja automatycznie ustawi się opcja FrontOffice, bez możliwości zmiany, ze względu na to, że webowa wersja Comarch POS umożliwia na chwilę obecną obsługę sprzedaży i kasy. Stanowiska webowe mogą być mieszane z innymi typami aplikacji, tak więc w ramach jednego oddziału mogą pracować stanowiska POS, mPOS i webPOS. Podczas synchronizacji z platformą webPOS wysyłane są dane związane z wszystkimi stanowiskami webPOS dodanymi w dowolnym oddziale zarejestrowanym w XLu. Dokumenty wystawiane po stronie webPOS trafiają automatycznie do bazy XLa, po ich wystawieniu na stanowiskach webPOS.
Inne zmiany
Import korekty wystawionej do faktury wystawionej do paragonu
Umożliwiono przesyłanie do Comarch ERP XL korekt wystawionych do faktury, która została wystawiona do paragonu w Comarch POS. Korekta do faktur wystawionej do paragonu tworzona jest jako spinacz RAK. Aby możliwe było utworzenie korekty po stronie Comarch ERP XL spinacza korekty do faktury, generowany jest po stronie XLa dokument korekty do paragonu a następnie tworzony spinacz korekty, spinający korektę. Korekta paragonu wystawiana jest po stronie systemu XL w centrum głównym. Numer dokumentu nadawany jest po stronie XLa, zgodnie z ustawieniami centrum głównego.Przesyłanie pełnej nazwy kontrahenta
Umożliwiono przesyłanie wszystkich trzech linii nazwy kontrahenta do Comarch POS, jak również zapisywanie nazwy przesłanej z POS do Comarch ERP XL we wszystkich liniach aż do wyczerpania miejsca. Po stronie XLa nazwa może zostać zapisana w trzech liniach (2 linie po 50 znaków, w trzeciej linii 250 znaków). Podczas wysyłania kontrahentów do Comarch POS zawartość poszczególnych linii łączona jest przy pomocy spacji, podczas importu do Comarch ERP XL dane zapisywane są tak, aby słowa nie zostały podzielone w środku.Przesłanie numeru karty kontrahenta
W Comarch ERP XL na karcie towaru na zakładce [Ogólne] znajduje się pole Karta, w którym można zapisać numer karty kontrahenta. Wraz z uzupełnieniem numeru karty wybierany jest też typ karty. Jeśli nie zostanie wybrany typ karty, wówczas domyślnie zostanie ustawiona opcja Własna karta. Numery kart będą wysyłane wraz z typem do Comarch POS, dzięki czemu możliwe będzie wyszukiwanie kontrahentów wg numeru karty. Jeśli dla danego numeru karty kontrahenta zostanie wygenerowany kod kreskowy i przygotowana fizycznie karta, wówczas wyszukiwanie kontrahenta możliwe będzie z użyciem czytnika kodów kreskowych.
Przesyłanie jednostek wagi i miary towaru

Uruchomienie stanowiska POS
Po zainstalowaniu aplikacji Comarch POS należy uruchomić aplikację. Podczas pierwszego uruchomienia następuje łączenie stanowiska w Comarch POS ze stanowiskiem POS zdefiniowanym w Comarch ERP XL.- Kod stanowiska POS ustalony w XL (kod można zweryfikować w module Administartor Oddziałów, konfiguracja oddziału, zakładka stanowiska POS)
- Adres i numer portu, na którym pracuje usługa synchronizacji.

Przesyłanie danych do stanowisk POS
Na stanowiska POS wysyłane są następujące informacje:- Operatorzy przypisani do stanowiska
- Parametry operatorów zdefiniowane na wzorcu operatora
- Profile POS
- Magazyny przypisane do stanowiska
- Parametry zdefiniowane na stanowisku
- Parametry zdefiniowane na oddziale
- Waluty zdefiniowanie na oddziale wraz z kursami
- Jednostki miary
- Stawki VAT
- Kontrahenci z grupy wskazanej na oddziale – pod uwagę brana jest grupa domyślna kontrahenta
- Osoby kontrahenta
- Adresy kontrahenta
- Towary z grupy wskazanej na oddziale
- Atrybuty i zdjęcia towarów
- Cenniki
- Stany magazynowe
- Partie
- Drzewa grup towarów i kontrahentów
- Definicje dokumentów wraz z przypisaną serią
- Pieczątka firmy
- Rejestr kasowy i bankowy
- Formy płatności
- Wydruki
- Dokumenty MMW/ZS
Odbieranie danych ze stanowisk POS
Stanowiska POS pracują w trybie on-line co oznacza, że dokumenty wystawione w POS bądź też nowo dodany kontrahent trafiają od razu do bazy Comarch ERP XL. W przypadku braku połączenia informacje zostaną uzupełnione po ponownym nawiązaniu połączenia z XL. Na POS współpracującym z XL można wystawiać paragony, faktury, korekty do paragonu i faktury, faktury do paragonów oraz dokumenty kasowe. Do XL importowane są następujące dane:- Nowo dodani kontrahenci lub zmiana danych kontrahenta wraz z osobami i adresami
- Zgody kontrahenta
- Dokumenty handlowe (faktura, paragon, korekty do faktury i paragonu) – nie są obsługiwane korekty ręczne
- Dokumenty kasowe
- Dokumenty MMW/MMP
- Dokumenty RW/PW
- Dokumenty PZ
- Reklamacje
- Dokumenty ZW/ZS
- Dokumenty handlowe - POS można wystawiać tylko faktury i paragony, korekty do nich oraz spinacze do paragonów
- Faktury mogą być wystawiane od netto (zależne od definicji dokumentu )
- Numeracja dokumentów jest zgodna z ustawieniami w XL i zawsze z serią przypisaną do stanowiska (wspólna numeracja dla dokumentów i korekt!)
- Zapisy kasowe – wpłaty i wypłaty ręczne, dokumenty otwarcia i zamknięcia dnia, automatyczne KP/KW do dokumentów tworzone po stronie Xla (ustawienie na stanowisku POS)
- Sprzedaż poniżej stanów – możliwa jeśli zaznaczony jest parametr -automatyczne tworzenie PW
- Sprzedaż wg partii – towar widoczny kilka razy na liście towarów.
Przesyłanie podstawowych promocji do oddziałów Comarch POS
Rabaty przesyłane do Comarch POS- KNT (upusty globalne dla kontrahentów)
- KNU (upusty na towary, grupy towarów dla kontrahenta)
- PRM (promocje dla towaru)
- WTR (promocje od wartości dokumentu)
- Promocje pakietowe stałe i elastyczne
- Podstawowym kryterium jest Centrum, do którego przypięta jest promocja
- Kryterium kontrahentów

- Kryterium towarów

- Ograniczenia ze względu na formy płatności oraz sposoby dostawy
- Ograniczenia ze względu na magazyn
- Ograniczenia ze względu na rodzaj dokumentów
- Inne ograniczenia
- nazwa promocji
- typ promocji
- priorytety promocji
- sposób łączenia z poprzednią; do wyboru: dodaj lub mnóż
- ustawienie parametru: Pomijaj kolejne rabaty
Promocja KNT
Rabaty zapisywane na karcie kontrahenta na zakładce [Handlowe] zebrane są do jednej promocji o typie KNT i będą przesyłane do określonych oddziałów Comarch POS. Dla promocji KNT dla każdego wskazanego w promocji kontrahenta przesyłana jest wysokość rabatu do wykorzystania w oddziale. Rabat ten dotyczy wszystkich towarów i łączy się z innymi rabatami.Promocja WTR
Promocja na całą wartość dokumentu przesyłana jest do określonych oddziałów Comarch POS po warunkami opisanymi wyżej. Promocja może być zdefiniowana dla pojedynczych kontrahentów lub dla grup kontrahentów. Aby promocja naliczała się dla wszystkich kontrahentów wysyłanych do oddziału Comarch POS, konieczne jest wskazanie na zakładce [Kontrahenci] grupy zdefiniowanej jako grupa do eksportu kontrahentów do oddziału POS.Promocja PRN i KNU
Promocje PRN i KNU są to promocje elementowe, które dotyczą konkretnych towarów lub grup towarowych i naliczane są na pozycjach dokumentów. Ze względu na wymogi modułu rabatowego Comarch POS nie wszystkie elementy rabatów będą mogły zostać wysłane.- Typy promocji
- Rabaty progowe

Promocja pakietowa stała i elastyczna
Wprowadzono możliwość przesyłania promocji pakietowych stałych i elastycznych do systemu Comarch POS. Naliczanie promocji pakietowych w Comarch POS będzie analogiczne jak w Comarch ERP XL, przy czym w POS nie ma możliwości wyboru promocji pakietowych, lecz zostanie naliczony pierwszy pakiet spełniający warunku wg ustawień kolejności na liście promocji pakietowych. Nie wszystkie ustawienia promocji mogą zostać przesłane do Comarch POS ze względu na różnice w działaniu modułów rabatowych w obu systemach, co zostało opisane w kolejnych punktach.Warunki przesyłania promocji pakietowych
Do Comarch POS przesyłamy promocje pakietowe stałe i elastyczne pod określonymi warunkami. Do Comarch POS przesyłane są promocje pakietowe, które:- Zostały potwierdzone
- Data końcowa jest większa lub równa dacie bieżącej lub jest nieograniczona
- Data początkowa jest mniejsza lub równa dacie bieżącej lub jest nieograniczona
- W parametrze Rodzaj dokumentów wskazano opcję Wszystkie lub Rozchodowe
- Nie mają zaznaczonego parametru: Ważna w godzinach
- Nie mają zaznaczonego parametru: Powtarzać co
- Są przeznaczone dla Comarch POS ze względu na Centrum:
- Zostały udostępnione dla Centrum, z którym powiązany jest oddział Comarch POS
- Zostały udostępnione dla Centrum nadrzędnego w stosunku do powyższego
- Zostały udostępnione dla Centrum Głównego
- Na zakładce [Magazyny] wybrano opcję Wszystkie lub magazyny ustawione dla Oddziału POS
- Na zakładce [Formy płatności] wybrano opcję Wszystkie
- Na zakładce [Sposób dostawy] wybrano opcję Wszystkie
- Zostały zdefiniowane na dowolną grupę kontrahentów wysyłanych do POS lub przynajmniej jeden kontrahent przypisany na zakładce [Kontrahenci] jest wysyłany do POS
- Wszystkie towary na promocji należą do drzewa grup wysyłanego do POS – zakładka [Towary]
Automatyczne naliczanie promocji pakietowych
To czy promocja zostanie naliczona automatycznie na dokumentach wystawianych na stanowisku POS czy też będzie konieczne wybranie przycisku Nalicz promocje zależy od parametru, który ustawiany jest na oknie Konfiguracji oddziału Comarch POS na zakładce [Parametry].Kolejność naliczania promocji na stanowisku POS
W Systemie Comarch ERP XL możliwe jest ustalanie kolejności promocji pakietowych za pomocą przycisków Przesuń w dół pozycję na liście i Przesuń w górę pozycję na liście. Kolejność promocji możliwa jest do ustalenia osobno w obrębie promocji pakietowych i osobno w obrębie promocji PRM. Ustalenie kolejności promocji pakietowych jest przesyłane do Comarch POS, nie ma natomiast wpływu na wyświetlanie kolejności promocji podczas wystawiania dokumentów w Comarch ERP XL.
Informacje dodatkowe
Z powodu różnic pomiędzy działaniem promocji pakietowych w Comarch ERP XL a działaniem modułu rabatowego w Comarch POS mogą występować pewne odstępstwa w naliczaniu promocji.- Limity ilości pakietów
- Inne rabaty a promocje pakietowe
- Parametry dla gratisów
- Naliczenie pakietów dla innej jednostki niż podstawowa
- Promocja pakietowa stała
-
- Promocja pakietowa elastyczna
- Promocja pakietowa elastyczna towar wymagany
Informacja o pakiecie na dokumentach importowanych z Comarch POS
Na dokumentach importowanych z POS widoczna będzie informacja o zastosowanym pakiecie, a pozycje wchodzące w skład pakietu będą stosownie oznaczone. Również w oknie Struktura udzielonego rabatu prezentowana będzie informacja o pakietach oraz strukturze rabatu.Przesyłanie promocji progowych typu stała cena
Umożliwiono przesyłanie rabatów progowych typu stała cena, czyli promocji, gdzie dla danego towaru ustalono różne ceny w zależności od progu. Nie jest jednak możliwe przesyłanie promocji mieszanych, czyli takich, gdzie dla jednego progu ustalono rabat a dla innego stałą cenę w ramach tej samej promocji. Dla poszczególnych progów typ ceny powinien być taki sam, jeśli na jednym z progów zostanie ustawiony typ netto a na innym brutto to dla wszystkich cen stałych w tej promocji zostanie ustalony typ jak na pierwszej pozycji. Ograniczenia te wynikają z różnic w działaniu modułu rabatowego w obu systemach.Naliczanie rabatów od promocji typu stała cena
Istnieje możliwość naliczania dodatkowych rabatów do promocji typu stała cena. Zależy to od parametru globalnego ustawianego w konfiguracji systemu System/ Konfiguracja /Sprzedaż /Rabaty i promocje Naliczaj inne promocje/ rabaty.
Pytania i odpowiedzi
Czy można wystawić korektę do Paragonu do którego jest wystawiona Faktura? Rozwiązanie do wersji wcześniejszych niż ERP XL 2024. W POS można wystawić jedynie korektę do Faktury, inaczej niż w XL, gdzie korektę wystawiamy do Paragonu. Wystawiając więc korektę do faktury w POS nie zostanie ona przesłana do XL. Można skorzystać z rozwiązania zastępczego: Sposób A- Zmiana na rejestrze flagi oddział poprzez update update cdn.Rejestry set KAR_Oddzial=0 where KAR_GIDNumer=xxx
- Dodanie zapisu kasowego uzupełniając pola: wartość, treść, kontrahent, opis
- Dodanie PAK do synchronizowanego paragonu, można dodać nową serię specjalnie dla takich dokumentów
- Powiązanie dodanego zapisu z płatnością na PAK
- Utworzenie spinacza korekt RAK np. z nową serią
- Przywrócenie na rejestrze flagi oddział poprzez update update cdn.Rejestry set KAR_Oddzial=1 where KAR_GIDNumer=xxx
- Dokument FSK wygenerowany na stanowisku POS na formę i rejestr taki sam jak sprzedaż PA
- Dodanie PAK do synchronizowanego paragonu, można dodać nową serię specjalnie dla takich dokumentów
- Dodanie zapisu -rejestr zwrotów z POS, powiązany z PAK
- Utworzenie spinacza korekt RAK np. z nową serią
- Saldo uzgadniać biorąc pod uwagę salda dwóch rejestrów – oddziałowego i dedykowanego zwrotom na oddziale, porównywać z saldem rejestru na POS
- Przy tworzeniu korekty FS gdzie dodany jest PA, zmiana formy płatności na np. rejestr zwrotów z POS-gdzie dodany jest rejestr np. bankowy
- Dodanie PAK do synchronizowanego paragonu, można dodać nową serię specjalnie dla takich dokumentów
- Dodanie zapisu -rejestr bankowy zwrotów z POS, powiązany z PAK
- Utworzenie spinacza korekt RAK np. z nową serią
- Saldo uzgadniać biorąc pod uwagę salda dwóch rejestrów – oddziałowego i dedykowanego zwrotom na oddziale, porównywać z saldem rejestru na POS
Numer błędu i komunikat | Przyczyna | Rozwiązanie |
---|---|---|
XLDodajRaport zwróciła błąd:-1 | Najprawdopodobniej została wycięta sesja operatora, na którego założona na którego ustawiona jest synchronizacja | W tabeli Documents.TradeDocumentsdla pola WasSentToERP ustawić wartość 0 dla tych dokumentów które nie przeszły i wykonać restart usługi synchronizacji. |
XLOtworzRaport zwróciła błąd:8148 | błędna data otwarcia pokrywa się z innym raportem | Należy zmodyfikować daty na raporcie |
XLZamknijRaport zwróciła błąd:8034 | komunikat wskazuje, że raport został już zamknięty | Należy otworzyć raport, aby dokumenty przeszły do XLa |
XLDodajZapis zwróciła błąd:8007 | Komunikat 8007 oznacza: nie znaleziono bieżącego okresu obrachunkowego | Należy dodać bieżący okres obrachunkowy; System/Konfiguracja/Księgowość/Okresy obrachunkowe, oraz wskazać konto księgowe na rejestrze kasowym ; Administrator/Firma/Rejestry kasowe/Ogólne/ |
XLLogin zwrócił błąd:-3 | Niepoprawnie wystartowała usługa do synchronizacji Nie podano nazwy programu | Można ponownie podłączyć bazę w Menedżerze Baz, uruchamiając CDNMGR spod prawego jako administrator, kolejno podłączyć bazę po autoryzacji na serwerze sql, dostępną dla wszystkich użytkowników. Należy usunąć usługę i dodać ją ponownie. |
XLLogin zwróciła błąd:-6 | Niepoprawnie wystartowała usługa do synchronizacji Nie podano hasła lub brak operatora -na stanowisku nie było logowania do XLa na operatora do synchronizacji, a w między czasie mogło zostać zmienione hasło do Xla (związane z błędem w TFS=432188, gdy usługa tworzona jest na inne konto domenowe niż zalogowany użytkownik) -TFS=443789 błąd w działaniu jednej usługi na kilku oddziałach | - błędne hasło na operatorze do synchronizacji przy tworzeniu usługi i na operatorze na oddziale zakładka Synchronizacja -błędna ścieżka w Path - centrum domyślne wskazane jako centrum oddziałowe, a powinno być centrum XL nie powiązane z oddziałem |
XLNowyDokument zwróciła błąd:-39 | - Wystąpił niezidentyfikowany Błąd najprawdopodobniej jest spowodowany złym działaniem otoczenia programu, niestandardowe triggery lub dodatki. | Należy zweryfikować niestandardowe triggery i dodatki na bazie oraz ponowić synchronizacje dokumentu |
XLNowyDokument zwróciła błąd:33 | Nie udało się wymusić numeru dokumentu. Numer dokumentu, który wyświetlany jest w POS (seria i numeru) może jest już dodany do XL Usługa synchronizacji ustawiona jest dla kilku oddziałów, na zakładce synchronizacja dla każdego oddziału powinna mieć wskazanego innego operatora, jeśli będzie ten sam pojawi się komunikat w logach XLNowyDokument zwróciła błąd:33 | Nazwy dokumentów w POS znajdują się w NumberString w tabeli Documents.TradeDocuments. W XL można odfiltrować cdn.TraNag po serii POSowej w TrN_TrNSeria i numerze TrN_TrNNumer . Zmiana operatora na oddziale zakładka synchronizacja, moduł musi zostać uruchomiony jako administrator, aby zmienić operatora i hasło |
XLNowyDokument zwróciła błąd:66 | -Próba wystawienia korekty do dokumentu, który nie może być korygowany, błąd | Do takiego dokumentu nie można wygenerować korekty |
XLNowyDokument zwróciła błąd:71 | -Oryginał korekty w buforze | Należy sprawdzić czy dokument do którego generowana jest korekta w XLu nie jest w buforze, jeśli tak i płatność została dodana można taki dokument zatwierdzić w XLu i ponowić synchronizacje korekty |
XLNowyDokument zwróciła błąd:81 | -Brak licencji (nie udało się pobrać licencji a wymagana przez procedurę) | Należy sprawdzić czy są dostępne licencje na kluczu następnie wykonać restart usługi synchronizacji |
XLNowyDokument zwróciła błąd:234 | -Brak uprawnień do wystawiania tego typu dokumentu (NowyDokument-234). - Brak uprawnień; ustawienie na definicji dokumentu, problem z magazynem lub serią. - Zakaz na operatorze do wystawiania dokumentu | Należy sprawdzić wskazane uprawnienia |
XLOtworzDokument zwróciła błąd:122 | - Dokument jest edytowany na innym stanowisku | Należy sprawdzić czy dokument nie jest wyświetlony na czerwono w XLu |
XLOtworzDokument zwróciła błąd:339 | Błąd podczas ponownej fiskalizacji dokumentu handlowego - Niezidentyfikowany błąd (problem związany z ponowną fiskalizacją) | Wykonano ponowna fiskalizację dokumentu |
XLZamknijDokument zwróciła błąd:-1 | Błąd może mieć różne przyczyny: -Wskazuje na błąd wersji API bądź API nie zostało aktywowane - problem z fiskalizacją, jeżeli fiskalizacja z jakichś powodów się nie powiedzie Błąd TFS=403898 W przypadku, gdy była wykonana ponowa fiskalizacja dokumentu w POS, pojawiał się komunikat w logach Wystąpił błąd podczas ponownej fiskalizacji dokumentu handlowego | Sprawdzić ścieżkę Path czy na pierwszym miejscu jest do tej wersji, z której aktualnie korzystamy (jeśli nastąpi zmiana ścieżki wymagany jest restart komputera) TFS nieprawidłowość naprawiona w wersji od 2020.1.0 |
XLZamknijDokument zwróciła błąd:106 | -Wystąpił DeadLock (błąd DeadLock zgłaszany jest przez serwer bazy danych, gdy nie może zrealizować zleconego zadania obsługa tego typu błędu polega najczęściej na ponownym wywołaniu procedury) | Należy ponowić synchronizacje dokumentu |
XLDodajPozycje zwróciła błąd:17 | Zabrakło ilości (przy trybie wsadowym musi być w pełni zaspokojona) Brak ilości na dany towar | -Aby dokument przeszedł do XL na oddziale należy zaznaczyć Generuj PW na brakujące towary - należy zwrócić uwagę czy towar nie ma wprowadzonej daty ważności. Zasób z inną datą ważności jest inną partią, co widać w tabeli cdn.TwrPartie, gdzie pozycje o różnym TPa_DataW są oddzielnie wykazane. - czy są dostępne ilości handlowe-partie na te towary z paragonów, czyli z uwzględnieniem cechy, EAN-u, daty ważności |
XL ZmienAdres zwróciła błąd:53 | Podano niepoprawny kod pocztowy. Dla kontrahenta krajowego kod pocztowy powinien mieć postać ##-### Wskazuje na błędny format kodu pocztowego. Nie można zapisać dokumentu bez miasta NIPu i nazwy | Jeśli będą wpisy; że nie odnaleziono aby taki kontrahent miał taki GUID, należy np. na jednym z tych dokumentów, który nie przechodzi sprawdzić jaki jest wybrany kontrahent potem w cdn.KntKarty wykonać update na ten guid który jest podany w logu pola KnT_GuidDane (jeśli dokument jest w XLu w buforze to go usunąć i wykonać dla tego dokumentu update na tabeli Documents.TradeDocuments WasSenttoERP=0) |
- Błąd przy pierwszej synchronizacji Brak kodu stanowiska w konfiguracji
- Czy przycisk ,,Sprawdź połączenie” wyświetla błąd ,,Brak połączenia z serwisem danych”?
- Czy w Usługach jest uruchomiona usługa Comarch XL POS … ? Jeśli usługa nie jest uruchomiona proszę ją uruchomić.
- Czy w zmiennych środowiskowych / Path, wersja XL jest ustawiona na pierwszym miejscu? Należy zweryfikować czy dana wersja XL współpracuje z dana wersją POS?
- Czy przy próbie zalogowania / sprawdzenia połączenia pobierana jest licencja z klucza
- Przy wyłączonym parametrze generuj PW na brakujące towary mimo dostępnej ilości towaru generuje się PW:
- Czy doszło do dodania prawidłowej partii (takiej jakiej wymaga XL na PA)
- W tabeli cdn.PicoLogElem wyszukujemy dokument dla którego wyświetlony został komunikat odnośnie braku ilości
- w tabeli Documents.TradeDocuments odszukujemy Id dla tego dokumentu, takie samo ID będzie w tabeli Documents.TradeDocumentItems, w polu LotId będzie podany numer partii
- w tabeli cdn.TwrPartie wyszukujemy czy jest taka partia w XLu LotId=TpA_Id
- kolejno w cdn.Dostawy patrzymy czy jest dostępna jeszcze doatwa z tą partią czyli TpA_Id=Dst_TpAId
- Wystąpił błąd podczas importu dokumentu handlowego (…). W bazie XL nie znaleziono kontrahenta. Knt_GuidDane=…
- Czy nie została wycięta sesja na operatora odpowiedzialnego za synchronizację
- Kolejno wymusić ponowne przesynchronizowanie kontrahentów lub adresu do XLa
- Gdyby dokumenty były dodane w XLu jako do bufora to należy usunąć taki dokument i ponownie wymusić synchronizację
- Brak widoczności przyczyn korekty sprzedaży w POS
- Czy są wpisy w tabeli GenericDirectoryValues dla DirectoryId=5
- Czy w tabeli cdn.Slowniki jest kategoria SLW_Kategoria jako ‘Przyczyna korekty sprzedaży’ czy ‘Przyczyna korekty sprzedaż’, poprawna to Przyczyna korekty sprzedaż i należy ją zmodyfikować w tej tabeli od strony bazy i ponowić synchronizację z POS
XL002 - Wykresy
Wykresy – uwagi ogólne
Wykresy umożliwiają stworzenie jednolitego, spójnego mechanizmu pozwalającego m.in. na wygodne definiowanie wykresów (inaczej: analiz) prezentujących graficznie i/albo tabelarycznie wybrane dane z bazy, podłączanie wykresów w przewidzianych (przez programistę) punktach programu i wykonywanie. Wykresy posiadają cechę aktywności.
Integracja modułu wykresów z resztą systemu polega na udostępnieniu przez moduł wykresów mechanizmu podobnego, jak w przypadku wydruków. Przyciski związane z wykresami działają kontekstowo: w momencie wykonania na nich akcji przez użytkownika najpierw zostają odczytane aktualne dane kontekstu wywołania, a następnie, w oparciu o te dane, zostaje wykonana akcja.
Z punktu widzenia użytkownika wykresy są zwykle dostępne w tych samych punktach programu (tzw. punkty wywołania wykresów, w skrócie: wywołania), co wydruki. Do każdego wywołania można podłączyć dowolną ilość wykresów (tzw. wykresów startowych), z których jeden jest domyślny (domyślność wykresów można zmieniać przez przełączanie specjalnej flagi określonej na poziomie podłączenia a w przypadku nie ustawienia tej flagi na żadnym z wykresów startowych domyślnym wykresem jest pierwszy w kolejności lp. – kolejność tą można zmieniać wykorzystując mechanizm bąbelkowania).
Wykresy mogą być zagnieżdżane tzn. każdy wykres może mieć dowolną ilość podłączonych do niego (pod)wykresów (dzieci). Z drugiej strony ten sam wykres może być równocześnie podłączony do dowolnej ilości (nad)wykresów (ojcowie). Zagnieżdżanie wykresów może zawierać zapętlenia, tzn. wykres A może mieć podwykres B, który z kolei posiada podwykres A (co więcej, wykres może być podłączony nawet do samego siebie).
Edycja (dodawanie, modyfikacja, testowanie, usuwanie) wykresów, ich podłączanie (także warunkowe) do wywołań oraz do siebie nawzajem, ustalanie domyślności i kolejności, a także różne inne operacje są dostępne z poziomu specjalnego drzewa hierarchii wykresów.
Wykresy, podobnie jak wydruki, są podzielone na dwie grupy:
- wykresy standardowe (dostarczane przez Comarch ERP XL w pliku cdn_wykr.tps),
- wykresy użytkownika (definiowane w bazie SQL).
To czy wykres jest wykresem standardowym czy użytkownika określamy mianem: bazy wykresu.
Edycja wykresów standardowych przez użytkownika jest bardzo ograniczona – sprowadza się do zmiany dostępności wykresu (globalny / operatora lub stanowiska), zmiany ustawień opcji wysyłania wyniku oraz przełączania domyślności wykresów.
Wyniki wykonania wykresów (ich graficzna postać i/albo dane tabelaryczne składające się na serie danych wykresu) są umieszczane na specjalnym oknie wynikowym analiz. Okno to stanowi dla użytkownika właściwe środowisko pracy z analizami. To tu użytkownik widzi wyniki analizy, może zmieniać parametry i przeliczać wykres, tu także może nawigować po grafie wykresów (eksplorować wykresy, czyli przechodzić do podwykresów i wracać z powrotem) i wykonywać inne, pomocnicze operacje (np. drukowanie wyników, ich zapis do pliku w wybranym formacie czy wysyłanie wyników do innych programów).
Wykresy – cechy
Aktywność
Aktywność wykresu polega na możliwości jego interakcji z użytkownikiem, w tym także na możliwości wykonania wykresu podrzędnego po kliknięciu przez użytkownika w wybrany punkt. Interakcja następuje po wykonaniu przez użytkownika odpowiedniej akcji na bieżącym wykresie i może mieć postać:
- Eksploracji wykresu. Eksploracja polega na wybraniu jednego z punktów bieżącego wykresu i zagłębieniu się w niego to znaczy wykonaniu wykresu podrzędnego dla danych pobranych z tego punktu. Można np. kliknąć na fragmencie wykresu, obrazującym łączne obroty na wybranym rejestrze kasowym/bankowym i dostać podwykres obrazujący rozbicie wartości tego fragmentu na obroty poszczególnych raportów. Mamy tu do czynienia z tzw. akcją drill-down. Następnie można wybrać jeden z raportów i, klikając w punkt jemu odpowiadający, wyświetlić listę zapisów składających się na obroty tego raportu (ta z kolei akcja, polegająca na wyświetleniu listy a nie podwykresu jest nazywana drill-through).
- Oczywiście mamy możliwość powrotu z eksploracji do poprzedniego wykresu (tzw. nadwykresu; jest to tzw. akcja drill-up) aż do wykresu, od którego zaczęliśmy. Całość przypomina więc surfowanie po stronach WWW – nieprzypadkowo zatem, jak się przekonamy później, okno wynikowe z wykresami posiada wiele analogii do przeglądarki internetowej.
- Przeładowania (odświeżenia) danych na wykresie. Po zmianie przez użytkownika parametrów wpływających na dane na wykresie jest możliwe przeładowanie tych danych, a więc powtórne wykonanie wykresu. Odświeżenie wykresu może również być wykonane (na żądanie) bez zmiany jakichkolwiek wartości parametrów (np. ze względu na możliwość zmian dokonanych w bazie w związku z normalną pracą tej albo innych stacji roboczych).
- Zmiany parametrów graficznych wykresu. Wśród możliwych do zmiany parametrów mogą się także znajdować parametry graficzne nie wpływające na same dane wykresu, ale określające jego postać graficzną (np. powiększenie, typ wykresu, wymiarowość: 3D/2D,…). Te parametry również można zmieniać na bieżąco z poziomu okna z wykresem.
- Wydrukowania wykresu na drukarce graficznej. Wydruk wykresu jest realizowany standardowym mechanizmem wydruków. Będzie o tym mowa w rozdziale poświęconym wydrukom wykresów.
- Zapisu danych z wykresu do pliku (z opcjonalnym przekazaniem pliku do innego programu) Zapis danych z wykresu do pliku może być dokonywany w jednym ze standardowych formatów (COMMA, XLS, WMF, XML/XSL). Lokalizację pliku docelowego podaje użytkownik. Taki plik może być następnie podany do otwarcia innemu programowi (np. Notepad.exe, Excel.exe itp.).
Wykresy startowe, domyślny i bieżący wykres startowy
Do każdego wywołania można podłączyć dowolną ilość wykresów – są to tzw. wykresy startowe danego wywołania. Wykresy te są odpowiednio posortowane (wg lp) a jeden z nich jest domyślnym wykresem startowym danego wywołania. Domyślność wykresu oznacza dla użytkownika najprostszą możliwość wykonania wykresu – poprzez jeden klik lewym przyciskiem myszy w główny przycisk analiz. Każdy inny wykres startowy w tym punkcie może być wykonany tylko poprzez jego wybór z menu kontekstowego.
Określanie domyślnego wykresu startowego danego punktu wywołania przebiega wg następującego algorytmu:
1.Sprawdzamy czy do wywołania (np. kontekstu) jest podłączony wykres użytkownika z zaznaczoną flagą: Domyślny. Jeśli tak – wykres ten jest domyślnym wykresem startowym – kończymy poszukiwanie.Jeśli nie:
2.Sprawdzamy czy do kolejnych gałęzi nadrzędnych wywołania (np. procedury, potem roota) jest podłączony wykres użytkownika z zaznaczoną flagą: Domyślny. Jeśli tak – wykres ten jest domyślnym wykresem startowym – kończymy poszukiwanie.Jeśli nie:
3. Sprawdzamy czy do wywołania (np. kontekstu) jest podłączony wykres standardowy z zaznaczoną flagą: Domyślny. Jeśli tak – wykres ten jest domyślnym wykresem startowym – kończymy poszukiwanie.Jeśli nie:
4. Sprawdzamy czy do kolejnych gałęzi nadrzędnych wywołania (np. procedury, potem roota) jest podłączony wykres standardowy z zaznaczoną flagą: Domyślny. Jeśli tak – wykres ten jest domyślnym wykresem startowym – kończymy poszukiwanie.Jeśli nie:
5. Pobieramy pierwszy w kolejności lp wykres startowy użytkownika podłączony do wywołania, a w przypadku jego braku do kolejnych gałęzi nadrzędnych wywołania. Jeśli taki wykres znajdziemy – wykres ten jest domyślnym wykresem startowym – kończymy poszukiwanie.Jeśli nie:
6. Pobieramy pierwszy w kolejności lp wykres startowy standardowy podłączony do wywołania, a w przypadku jego braku do kolejnych gałęzi nadrzędnych wywołania. Jeśli taki wykres znajdziemy – wykres ten jest domyślnym wykresem startowym – kończymy poszukiwanie.Obsługa przycisków wykresu jest analogiczna jak w przypadku wydruków; do wyboru są trzy akcje:
- Wykonaj domyślny wykres startowy (przycisk główny wykresów),
- Wybierz wykres startowy z menu kontekstowego i wykonaj go (dodatkowy przycisk wykresów; z ikoną strzałki) oraz
- Edycja węzła wykresów (Ctrl + lewy klawisz myszy na przycisku głównym).
Po wykonaniu domyślnego lub wybranego wykresu startowego jest otwierane okno wynikowe analiz. Obiekt wykresu po aktywacji (otwarcie okna z wykresem) widzi tylko węzeł narysowanego wykresu a więc, mimo że do danego wywołania możemy mieć podłączoną dowolną ilość wykresów startowych – tylko jeden z nich jest bieżącym wykresem startowym.
Wykresy startowe mogą być filtrowane przez zastosowanie dynamicznych warunków, które decydują czy w danej sytuacji (przy bieżących ustawieniach przez aplikację zmiennych występujących w warunku podłączenia wykresu) dany wykres startowy ma być widoczny w danym kontekście czy też nie. W warunkach można umieszczać zmienne i funkcje zabindowane przez aplikację (moduł wykresów nie robi PUSHBIND) a także standardowe funkcje Clariona (np. Today()).
Zagnieżdżanie wykresów
Każdy wykres (w szczególności także wykresy startowe dla danego wywołania) może mieć dowolną ilość wykresów podrzędnych (podwykresów), podłączonych do niego w uporządkowany sposób; jeden z tych podwykresów jest traktowany jako domyślny (decyduje ustawienie flagi: Domyślny podłączenia a w przypadku jej wyzerowania dla wszystkich podwykresów - kolejność podwykresów wg lp; kolejność tą można zmieniać na drzewie hierarchii wykresów używając mechanizmu bąbelkowania).
Z drugiej strony każdy wykres może być podłączony do dowolnej ilości wykresów nadrzędnych w stosunku do niego.
Nie ma tu ograniczenia, aby wykresy „nie zapętlały się” tzn. aby dla żadnego łańcucha wykresów nie zachodziła sytuacja, że jakiś wykres występuje w tym łańcuchu więcej niż jeden raz.
Graf wykresów – nawigacja w czasie wykonywania
Ciąg wykonań wykresów danego punktu wywołania, począwszy od bieżącego wykresu startowego nazywamy historią wykonań wykresów. Zapis wykonania wykresu do historii następuje przy wczytywaniu bieżącego wykresu startowego a następnie przy wykonywaniu akcji: Eksploruj. W odpowiednich zmiennych zapamiętywane są dane pozwalające odtworzyć wyświetlony uprzednio wykres w niezmienionej postaci (z dokładnością do zmian wynikających z odświeżenia wyników); dane te, to oczywiście zapytanie i wartości parametrów ostatnio użyte w tych zapytaniach oraz ostatnie wartości parametrów graficznych. Na każdym wykresie (poza bieżącym startowym dla opcji: Na początek), na specjalnych przyciskach, są dostępne dodatkowo cztery opcje: Na początek (powrót do bieżącego wykresu startowego), Wstecz (powrót do poprzednio wykonanego wykresu), Wprzód (przejście do następnego „historycznie” wykresu) i Na koniec (przejście do ostatniego „historycznie” wykresu).
Opcja: Wstecz (także: Na początek) nie pojawia się w przypadku, gdy jesteśmy na bieżącym wykresie startowym. Wszystkie parametry wykresu (z zapytania i graficzne), do którego się cofamy są odtwarzane na podstawie odpowiednich zmiennych, ale dane wykresu są przeładowywane.
Analogiczne uwagi dotyczą opcji: Wprzód, którą dodatkowo trzeba odróżniać od opcji: Eksploruj, także w tym sensie, że nawet, jeśli opcja: Wprzód, powoduje przejście do podrzędnego wykresu (tak jak opcja: Eksploruj), to po pierwsze niekoniecznie jest to ten sam wykres podrzędny (jeśli jest ich więcej) a po drugie opcja: Eksploruj, dotyczy klikniętego w momencie jej wybrania punktu, a opcja: Wprzód, bierze pod uwagę punkt poprzednio kliknięty, tj. kliknięty w trakcie wykonywania opcji: Eksploruj, które wprowadziło dany wykres do historii.
Edycja wykresów
Do wygodnego podłączania wykresów startowych do wywołań oraz wykresów do wykresów (zagnieżdżanie) zostało utworzone specjalne wielopoziomowe drzewo (korzeń, procedura, kontekst, wykresy startowe, wykresy podrzędne). Poza podstawowymi operacjami takimi jak dodawanie, podłączanie i odłączanie wykresów, ich edycja (w tym testowanie) i usuwanie dostępne są także różne funkcje pomocnicze, np. włączanie/wyłączanie flagi domyślności, bąbelkowanie, szukanie wykresu zawierającego w definicji podany ciąg znaków i inne.
Źródła danych do wykresów
Zapytanie SQL i dane w bazie
Jest to podstawowy rodzaj źródła danych dla wykresów.
Przez zapytanie rozumiemy tu ciąg dowolnych (niezmieniających struktury ani zawartości bazy danych) instrukcji T-SQL, w którym ostatnią jest instrukcja SELECT o strukturze zgodnej ze strukturą specjalnej kolejki z danymi, predefiniowanej w module Prefix_GRPH:
t_op_qWykresyDane QUEUE,TYPE
Id LONG !ID punktu, służy do jednoznacznej identyfikacji punktu wykresu
nX DECIMAL(20,4) !Wartość X punktu (dla wykresów nie ‘XY’ równa ID)
sNazwa STRING(50) !Nazwa punktu (dla wykresów ‘XY’ równa nX)
nY DECIMAL(20,4) !Wartość Y punktu
sW1 STRING(255) !Inne dane punktu, wartość 1
...
sW20 STRING(255) !Inne dane punktu, wartość 20
END
Struktura ta, w przypadku gdy mamy do czynienia z prawdziwym wykresem a nie tylko z tabelą wynikową, nakłada pewne ograniczenia na typy i zawartość pierwszych trzech kolumn zapytania:
- pierwsza kolumna numeruje wiersze wyniku, zatem musi być całkowita, a jej wartości unikalne,
- druga kolumna określa wartości na osi X – musi więc być rzeczywista lub całkowita, a jej wartości unikalne,
- trzecia kolumna określa opisy osi X – powinna być znakowa, a jej wartości unikalne choć akurat te wymagania są tylko zaleceniami a nie formalnymi wymogami.
W przypadku wykresów typu: tylko tabela, powyższe ograniczenia nie obowiązują.
Zapytanie nie musi zwracać wszystkich wartości w kolejce t_op_qWykresyDane - ważna jest tylko zgodność typów poszczególnych kolumn (z dokładnością do clarionowej konwersji typów) i zgodność merytoryczna (np. druga kolumna zapytania powinna określać wartości na osi X a czwarta – wartości na osi Y, chyba, że w parametrach graficznych umieszczono jawnie parametr /@Series określający kolumnę/kolumny zapytania stanowiącą/ce źródło wartości osi Y).
Zapytanie jest wykonywane przez ADO. Rezygnacja z klasy SqlQuery na rzecz ADO ma miejsce z dwóch powodów:
- aby móc wykonywać dowolne skrypty (np. zawierające deklaracje kursorów, tworzenie tabel tymczasowych itp.) zwracające recordset – będzie to potrzebne chociażby przy implementacji po stronie serwera tzw. poziomu odcięcia.
- ADO zwraca także nazwy kolumn z zapytania tak jakby je wypisał QA (nie trzeba więc parsować zapytania uwzględniając składnię PodID=Knt_KntID czy Knt_KntID AS PodID – w obu przypadkach ADO zwróci PodID).
W tekście zapytania w definicji wykresu mogą występować tzw. parametry dynamiczne, których wartości są wyliczane i wstawiane w miejsce definicji (odwołań do) tych parametrów przed przesłaniem wynikowego zapytania na serwer. Poza parametrami dynamicznymi w zapytaniu można umieszczać wyrażenia, zmienne tekstowe, wstawki tekstowe i wiele innych konstrukcji, które przed podaniem zapytania do serwera SQL są rozwijane bądź wyliczane i podstawiane wartościami. Język użyty w zapytaniu wykresu jest połączeniem T-SQL i specjalnego języka obsługi parametrów dynamicznych, tzw. DPL.
Wynika stąd wiele możliwości, np. komentarze w zapytaniu wykresu mogą być wstawiane jako komentarze SQL-owe: -- (jednak język DPL nie interpretuje komentarzy SQL-owych stąd też np. wstawienie odwołania do parametru dynamicznego w komentarzu SQL spowoduje wstawienie wartości tego parametru do zapytania przed wysłaniem go na serwer ale nie ma to oczywiście wpływu na wynik zapytania).
Kolejka globalna wypełniona przez aplikację
Dane serii wykresu mogą także pochodzić ze specjalnych kolejek globalnych wypełnianych przez aplikację w różny sposób. Ma to miejsce w przypadkach, gdy aplikacja dysponuje już danymi (często uzyskanymi w inny sposób niż wykonanie instrukcji SQL-owych; np. niektóre browsy po kolejce). Kolejki te są wypełniane przez aplikację a następnie przepisywane przez obiekt wykresu do wewnętrznej kolejki wynikowej (property wskaźnika na kolejkę o strukturze t_op_qWykresyDane) przed wykonaniem wykresu.
Wywołanie procedury
Wykonanie wykresu może polegać nie tylko na uzyskaniu wyników i ich graficznej i/albo tabelarycznej prezentacji (wykresy normalne / wykresy typu: tylko tabela), ale także na wywołaniu procedury (tzw. drill-trough). W tym przypadku składnia zapytania nie ma nic wspólnego z SQL-em – wywołanie procedury następuje zgodnie ze składnią języka DPL.
Parametry dynamiczne wykresów
Parametrem dynamicznym wykresu (w skrócie: parametrem) nazywamy zmienną występującą w zapytaniu lub parametrach graficznych (można np. sparametryzować tytuł wykresu), której wartość jest ustalana i wstawiana w miejsce definicji parametru w czasie wykonywania wykresu (tzw. runtime).
Przed wykonaniem bieżącego wykresu startowego lub potomnego po raz pierwszy w danej sesji wywołania obiekt przeszukuje zapytanie i parametry graficzne wykresu w poszukiwaniu parametrów dynamicznych. Po znalezieniu wszystkich parametrów, przed wykonaniem wykresu obiekt stara się ustalić ich wartości:
- Jeśli mamy do czynienia z bieżącym wykresem startowym – przeszukiwane są parametry przekazane z aplikacji. Wiązanie odbywa się po Nazwie parametru. Dotyczy to tylko parametrów dynamicznych zdefiniowanych w zapytaniu.
- Jeśli wykonujemy opcję: Eksploruj – najpierw sprawdzane jest zapytanie wykresu nadrzędnego (dokładniej kolekcja Fields jego wynikowego recordsetu) w poszukiwaniu kolumn o nazwie zgodnej z Nazwą parametru. Jeśli taka kolumna zostanie znaleziona – jest pobierany kliknięty rekord z kolejki z danymi nadrzędnego wykresu a następnie w miejsce parametru wstawiana jest wartość z odpowiedniej kolumny tego rekordu. Dotyczy to zarówno parametrów zapytania jak i graficznych. Jeśli szukana kolumna nie zostanie znaleziona – jest przeszukiwana kolejka parametrów dynamicznych nadwykresu (czyli eksplorowanego wykresu). Jeśli w kolejce tej zostanie znaleziony parametr o nazwie Nazwa – następuje odziedziczenie wartości. Oczywiście dla parametrów zdefiniowanych w zapytaniu przeszukiwana jest kolejka parametrów dynamicznych „nadzapytania”, a dla parametrów zdefiniowanych w parametrach graficznych – kolejka parametrów dynamicznych „nadparametrów” graficznych.
- Jeśli mamy do czynienia z parametrem dynamicznym zdefiniowanym w parametrach graficznych, niezależnie od wyników poprzednich poszukiwań, następuje próba odziedziczenia wartości tego parametru z parametru dynamicznego o takiej samej nazwie, zdefiniowanego w zapytaniu bieżącego wykresu. Mamy tu zatem do czynienia z bezwarunkowym dziedziczeniem wartości graficznych parametrów dynamicznych z wartości zapytaniowych parametrów dynamicznych bieżącego wykresu.
- W obu przypadkach, jeśli poszukiwania nie dadzą rezultatu – wartość parametru jest ustalana na podstawie jego Defaultu (odczytanej z definicji parametru).
Wszystkie parametry danego wykresu, łącznie z ustalonymi wartościami zapisywane są w odpowiedniej kolejce. Na podstawie tej kolejki kreowane są dynamicznie kontrolki parametrów i od razu rysowany wykres.
Przed wykonaniem wykresu, który już wcześniej został wczytany (Na początek, Wstecz, Wprzód Na koniec, Odśwież) następuje wykreowanie kontrolek parametrów tego wykresu z wartościami ostatnio użytymi i narysowanie wykresu w oparciu o te wartości. Teraz użytkownik może manipulować wartościami parametrów poprzez kontrolki – wartości te są zapisywane do kolejki w momencie wykonania akcji: Odśwież.
Zmienne dynamiczne przekazywane z aplikacji do bieżącego wykresu startowego
Zmienne dynamiczne mają za zadanie zainicjalizować wybrane parametry dynamiczne wykresu wartościami przekazanymi z aplikacji. Wartości tych zmiennych są ustalane w czasie wykonywania programu (runtime) i przesyłane do bieżącego wykresu startowego.
Klasa wykresów korzysta z przekazanych jej zmiennych dynamicznych przy ustalaniu wartości początkowych parametrów dynamicznych zapytania i grafiki bieżącego wykresu startowego (nadpisanie wartości początkowych odczytanych z definicji parametru). Wiązanie parametru ze zmienną odbywa się po nazwie.
Wyrażenia
Wyrażenia to ciągi znaków występujące w zapytaniach oraz w parametrach graficznych wykresu ewaluowane (czyli takie, których wartości są obliczane) clarionową instrukcją EVALUATE przed wykonaniem wykresu. W wyrażeniach mogą występować m.in. odwołania do parametrów dynamicznych, a także funkcje systemowe clarionowe oraz zabindowane w Clarionie zmienne i funkcje. Wyrażeń używa bardzo często do określania wartości początkowych parametrów dynamicznych (np. bieżąca data).
Składnia wyrażenia jest następująca:
{ciąg_znaków} (W)
Makra
Przed parsowaniem zapytania i parametrów graficznych wykresu w poszukiwaniu parametrów dynamicznych jest przeprowadzany tzw. preparsing polegający na znalezieniu i rozwinięciu makr występujących w zapytaniu. Makro jest specjalnym ciągiem znaków, który jest rozpoznawany przez preparser i zamieniany na tzw. rozwinięcie makra. Najczęściej makra są rozwijane do definicji parametrów dynamicznych, szczególnie do lookupów. Pozwala to w prosty, szybki i standardowy sposób definiować podobne lub identyczne parametry w różnych zapytaniach. Obecnie jednak do tworzenia deklaracji/definicji lookupów (oraz innych parametrów dynamicznych) zamiast makr zalecane jest stosowanie wizardów.
Preparser jest w praktyce metodą klasy operującej na parametrach dynamicznych. Metoda ta jest wirtualna, co pozwala rozwijać makra w sposób zależny od różnych uwarunkowań, np. od projektu (Optima, XL itp.). Ze względu na wirtualność preparsera nie można zdefiniować ogólnej składni makra – może ona być różna dla różnych przegięć metody. Możemy jednak podać składnię makra, jaka obowiązuje w preparserze Opt!my:
@MAKRO(Typ,Kod,Default) (MD)
Makra z Szybkich Raportów
Przed rozwijaniem makr opisanych poprzednio zapytanie wykresu jest przeszukiwane pod kątem występowania w nim specjalnych sekwencji używanych przez Szybkie Raporty XL. Sekwencje te są odpowiednio rozwijane:
{FILTRSQL} Jest rozwijane do wartości wpisanej przez programistę w template GraphButton-a i przechowywanej w dodatkowym property GraphManagerClass.sFiltrSQL (jeśli puste – rozwija się do ‘1=1’)
{FILTRLINK} Jest rozwijane do wartości wpisanej przez programistę w template GraphButton-a i przechowywanej w dodatkowym property GraphManagerClass.sFiltrLink (jeśli puste – rozwija się do ‘1=1’)
{OPCJEAPP} Jest rozwijane do wartości wpisanej przez programistę w template GraphButton-a i przechowywanej w dodatkowym property GraphManagerClass.cOpcjeApp.
Oczywiście rozwijanie makr SR nie ma większego sensu w przypadku podwykresów (szybkich raportów nie można było zagnieżdżać). Jednak, jeśli ktoś świadomie umieścił takie makro w zapytaniu to trzeba je rozwinąć (na odpowiedzialność użytkownika).
Predefiniowane wstawki tekstowe
Wstawki tekstowe
Stosując predefiniowane wstawki tekstowe, zmiana jakiejkolwiek własności kontrolki powoduje zmianę w jednym miejscu (nie ma potrzeby dokonywania zmian we wszystkich odpowiednich wykresach). Dzięki temu powtarzające się w wielu miejscach analogiczne kontrolki występują tak samo. Podobnie ma się rzecz, jeśli chodzi o parametry graficzne, które, poza tytułem, typem wykresu i wyborem serii powinny być w zasadzie identyczne dla wszystkich wykresów.
Wyodrębnienie wspólnych części wykresów polega na tym, że jeżeli mamy kilka wykresów o bardzo podobnej konstrukcji (różniących się tylko detalami) to za pomocą predefiniowanych wstawek tekstowych można jak gdyby stworzyć jedną, sparametryzowaną definicję wykresu. Oczywiście, formalnie rzecz biorąc, definicji będzie kilka, tyle tylko, że będą one posiadały jedynie wywołanie odpowiedniej, wspólnej wstawki z różnymi parametrami.
Pierwszą czynnością, jaką wykonuje moduł wykresów po wczytaniu definicji wykresu z bazy, jeszcze przed podaniem tekstów (zapytanie i grafika) do preparsingu, jest poszukiwanie w tych tekstach deklaracji predefiniowanych wstawek tekstowych (PWT) i ich rozwijanie.
Deklaracja PWT w tekście zapytania bądź grafiki ma następującą składnię:
@INS Nazwa||[Parametry] [ParametryX] INS@ (PWT0)
gdzie Nazwa jest unikalną (w ramach bazy wykresu) nazwą wstawki (NO CASE) a opcjonalne człony Parametry i ParametryX posiadają następującą składnię:
Parametr[, Parametr...] (PWTP)
^NazwaParametruX=WartoscParametruX [^NazwaParametruX=WartoscParametruX,...] (PWTPX)
gdzie Parametr jest dowolnym ciągiem znaków (NO CASE) , niezawierającym przecinka (seperator parametrów), znaku ^ (definicja parametru typu X) ani ciągu znaków ‘ INS@’ (spacja, INS@ - terminator PWT). Parametry typu X muszą występować po parametrach zwykłych i nie mogą być z nimi wymieszane. Zostaną one omówione w dalszej części tego rozdziału.
Parametry są przekazywane do definicji wstawki i decydują o wstawianiu do niej tekstów warunkowych (patrz następny rozdział) i wstawek podrzędnych (tzw. podwstawek).
Definicja wstawki jest traktowana jak normalny tekst – wynika stąd, że wstawki mogą być zagnieżdżone. Deklaracja (pod)wstawki we wstawce ma postać:
@INS Nazwa|[Warunek]|[Parametry] INS@ (PPWT)
gdzie Nazwa jest unikalną (w ramach bazy wykresu) nazwą wstawki podrzędnej (NO CASE), a opcjonalny człon Warunek posiada następującą składnię:
Segment[,Segment...] (PWTW)
gdzie Segment jest dowolnym ciągiem znaków (NO CASE), nie zawierającym przecinka (seperator segmentów) ani ciągu znaków ‘INS@’ (spacja, INS@ - terminator PWT). Ponieważ podwstawka może zostać wywołana z parametrami (deklaracja w tekście nadrzędnym) – sprawdzamy czy parametry te spełniają Warunek wstawienia podwstawki. Jeśli Warunek jest spełniony - następuje zamiana deklaracji podwstawki na jej rozwinięcie, jeśli nie – usunięcie deklaracji podwstawki. Walidacja warunku odbywa się w następujący sposób:
jeśli Warunek jest pusty – uznaje się, że jest spełniony jeśli Warunek nie jest pusty – uznaje się, że jest spełniony, jeśli dla co najmniej jednego z jego członów (Segment) istnieje odpowiednik (równość NO CASE) wśród przekazanych do podwstawki parametrów zwykłych (nie typu X).
Teksty warunkowe
Tekst warunkowy jest dowolnym ciągiem znaków, który może zostać wstawiony do definicji wstawki przy spełnieniu określonych warunków.
Tekst warunkowy może występować jedynie w definicji predefiniowanej wstawki tekstowej a jego składnia jest następująca:
@IF(Warunek) Tekst IF@(TW)
gdzie Warunek jest analogiczny jak w definicji (PPWT) a Tekst jest dowolnym ciągiem znaków nie zawierającym sekwencji zakończenia ‘IF@’ (spacja, IF@). Ponieważ TW może występować jedynie w definicji PWT – są określone parametry przekazane do definicji PWT z jej deklaracji w tekście nadrzędnym. Parametry te pozwalają na walidację warunku Warunek (mechanizm dokładnie taki sam jak w przypadku PPWT).
Uzupełniającym elementem składni tekstu warunkowego jest zaprzeczony tekst warunkowy:
@IFNOT(Warunek) Tekst IFNOT@(TWNOT)
różni się on od TW tylko tym, że tekst jest wstawiany jeśli warunek jest pusty albo żaden jego człon nie ma odpowiednika wśród przekazanych parametrów.
Analogicznie do powyższych zostały wprowadzone teksty warunkowe:
@IFAND(Warunek) Tekst IFAND@ (TWAND)
oraz
@IFANDNOT(Warunek) Tekst IFANDNOT@ (TWANDNOT)
różniące się od opisanych jedynie sposobem sprawdzania Warunku, który w tym przypadku uważa się za spełniony tylko wtedy, gdy jest pusty lub dla wszystkich jego członów (Segment) istnieje odpowiednik (równość NO CASE) wśród przekazanych do podwstawki parametrów zwykłych (nie typu X).
Rozszerzone parametry tekstowe (parametry typu X)
Opisany wyżej mechanizm nie pozwala na parametryzowanie wstawek tekstowych. Przypuśćmy, że chcemy zdefiniować wstawkę wstawiającą zakres dat. Wstawki tej chcemy użyć zarówno w analizie a1 gdzie wartości domyślne dat mają być odpowiednio Today() i Today()+1 i w analizie a2 z wartościami domyślnymi Date(Month(Today()), 1, Year(Today())) i Today(). Aby wstawka mogła zrealizować oba te zadania – musi obsługiwać parametry rozszerzone.
Składnia rozszerzonego parametru tekstowego wstawianego do wstawki jest następująca:
@INSP(Nazwa) (INSP)
gdzie Nazwa jest nazwą parametru przekazanego z tekstu nadrzędnego (zapytania, grafiki bądź podwstawki).
Składnia przekazania w/w parametru tekstowego jest określona przez (PWTPX). We wzorze tym NazwaParametruX odpowiada Nazwie w (INSP) (równość jest typu NO CASE). Wartość parametru może być ustalona, ale może też zawierać element @INSP().
Parametry graficzne wykresu
Aby nie zmieniać struktury tabeli z wykresami przy dodawaniu w przyszłości obsługi kolejnych parametrów graficznych wprowadzamy jedną, parsowaną kolumnę stringową ParametryGraficzne. Kolumna ta powinna zawierać ustawienia wszystkich potrzebnych parametrów graficznych danego wykresu w postaci:
/@SymbolGr[=WartoscGr(BezApostrofów)] (PG)
gdzie SymbolGr jest nazwą parametru graficznego a WartoscGr jego wartością początkową. Kolumna ParametryGraficzne jest parsowana przez klasę przy wczytywaniu definicji wykresu i składana przy zapisie.
Opcjonalna wartość WartoscGr jest wartością parametru, z którą wykres jest rysowany pierwszy raz; wartość ta może zostać zmieniona w trakcie oglądania wykresu przez edycję odpowiedniej kontrolki dynamicznej, wykreowanej na podstawie parametru dynamicznego wykresu dotyczącego wartości danego parametru graficznego. Wartość WartoscGr może bowiem zawierać parametry dynamiczne.
W wartościach parametrów graficznych obu typów mogą występować wyrażenia.
Oto najważniejsze symbole dostępnych parametrów graficznych:
Default jest wartością, która jest podstawiana, gdy w parametrach graficznych dany parametr w ogóle nie występuje i PodstawDefault=1. Gdy w parametrach graficznych dany parametr w ogóle nie występuje i PodstawDefault=0, to wartość parametru nie jest w ogóle podstawiana. Default(*) jest wartością, która jest podstawiana, gdy w parametrach graficznych dany parametr występuje, ale nie ma podstawionej wartości (np. /@3D, /@PokazujEtykietyDanych) i PodstawDefault(*)=1. Gdy w parametrach graficznych dany parametr występuje, ale nie ma podstawionej wartości i PodstawDefault(*)=0, to wartość parametru nie jest w ogóle podstawiana. Boldem zaznaczono parametry graficzne niemające swoich odpowiedników we własnościach obiektu Insight.
Graficzne stałe symboliczne
Graficzne stałe symboliczne to stałe postaci @NAZWASTAŁEJ, występujące w parametrach graficznych wykresu, których wartości podstawiane są do parametrów graficznych przed narysowaniem wykresu, ale już po załadowaniu wyników. Poniższa tabela zawiera wszystkie obsługiwane w tej chwili stałe:
Nazwa stałej | Opis (wartość) |
RECORDS | Zwraca ilość rekordów wyniku zapytania. Przykład użycia: /@ShowXLabelsEvery={@Records/3} |
Przekazywanie do wykresów zaznaczonych pozycji
Moduł analiz posiada możliwość odwoływania się do pozycji zaznaczonych na liście. Mogą to być nie tylko zaznaczenia na konkretnej liście, ale dowolny ciąg identyfikatorów rekordów, które to identyfikatory w dalszej części będziemy nazywać zaznaczeniami. Idea obsługi zaznaczeń jest następująca:
MANAGER WYKRESÓW.
Jeśli wykres jest zbudowany w oparciu o tabelę zaznaczeń (flaga na definicji wykresu), przed wykonaniem zapytania (w metodzie .Wykonaj) generuje unikalny, 50-znakowy GUID i zapisuje przekazane wcześniej z aplikacji zaznaczenia do SQL-owej tabeli WkrZaznaczenia2.
Wszystkie zapisywane rekordy mają ustawiony wspólny (wygenerowany wyżej) GUID (WkZ2_GUID). Wartość ta jest także przekazywana do wykresu za pośrednictwem parametru dynamicznego ZazGUID.
Identyfikator zaznaczonego rekordu zapisuje się w polach WkZ2_GIDTyp, WkZ2_GIDFirma, WkZ2_GIDNumer i WkZ2_GIDLp. W zależności od potrzeb można podstawić pełny GID (XL) lub tylko ID (Opt!ma); w tym drugim przypadku ID zaznaczonego rekordu podstawia się pod WkZ2_GIDNumer.
Po wykonaniu wykresu odpowiednie rekordy z tabeli WkrZaznaczenia2 są usuwane.
W procedurze, która dopuszcza obsługę wykresów z zaznaczeniami (najczęściej listy), przed wykonaniem wykresu (np. w przegięciu metody GraphButtonClass.ObliczParametry), następuje wywołanie metody:
GraphManagerClass.WypelnijKolejkeZaznaczen(ZaznaczoneQueue _qZaz)
z podaniem kolejki identyfikatorów (kolejka ta to najczęściej templatowa kolejka zaznaczeń browse’a).
PROGRAMISTA w tempalte GraphButton-a wpisuje nazwę kolejki z zaznaczeniami (dokładnie na takiej samej zasadzie jak w przypadku wydruków).
UŻYTKOWNIK ustawia na wykresie flagę: Wykres oparty o tabelę zaznaczeń (nowe pole w tabelach WkrDefinicje i WkrDefinicje2) oraz w definicji wykresu:
Deklaruje ukryty parametr dynamiczny @PAR ?@Hs50|ZazGUID|ZazGUID:’’ PAR@
W zapytaniu wykonuje JOIN do tabeli WkrZaznaczenia2 (np. ... JOIN WkrZaznaczenia2 ON BNa_BNaID = WkZ2_GIDNumer ...).
W filtrze zapytania umieszcza warunek na (odziedziczony ze zmiennej dynamicznej) GUID (WkZ2_GUID = ??_QZazGUID)
Wysyłanie wyników wykresu
Wyniki wykonania analizy (wykres w postaci graficznej oraz tabela z wynikami) są zawsze (o ile nie jest to wynik skalarny) zapisywane do pliku. Plik ten (tzw. plik wynikowy) może mieć jeden z następujących formatów:
COMMA (dane tabelaryczne)
Excel (dane tabelaryczne)
XML (dane tabelaryczne)
Jest tu możliwość zastosowania podanego szablonu XSL.
WMF (grafika)
W przypadku formatu COMMA istnieje możliwość dopisywania danych do istniejącego pliku.
W/w plik jest zapisywany z podaną nazwą (lub systemową nazwą tymczasową, jeśli nie podano nazwy docelowej) i w podanym katalogu (lub systemowym katalogu tymczasowym, jeśli nie podano katalogu docelowego).
Edycja wykresów
Formularz wykresu
Do edycji wykresu służy formularz definicji wykresu.

W oknie znajdują się przyciski:
[Testuj wykres] - służy do testowania edytowanego wykresu. Dokładniej przycisk ten służy do wykonania testu edytowanego wykresu z zastosowaniem bieżących ustawień na formularzu. Po jego naciśnięciu jest wykonywany w trybie testowym edytowany wykres. Tryb testowy polega na tym, że bezpośrednio przed przesłaniem zapytania na serwer zapytanie to (ze wstawionymi bieżącymi wartościami parametrów dynamicznych) jest podawane do edycji użytkownika. Po wykonaniu wykresu jest możliwa normalna nawigacja począwszy od węzła odpowiadającego edytowanemu wykresowi. Wykonaniu każdego wykresu w trybie testowym towarzyszy okno pozwalające na edycję zapytania przed przesłaniem go do serwera.

W takim przypadku definicja zostanie odblokowana i będzie również możliwa zmiana hasła (w tym jego wyczyszczenie, czyli odbezpieczenie definicji).
Pozostałe kontrolki są albo standardowe albo ich opis w pełni wyjaśnia zastosowanie. Dlatego tutaj ograniczymy się tylko do nadmienienia o jednej istotnej sprawie. Mianowicie w celu ułatwienia posługiwania się językiem stosowanym w definicji wykresu (połączenie SQL i języka parametrów dynamicznych) opracowano system zagnieżdżonych wizardów. Wizardy te pozwalają tworzyć i edytować deklaracje i odwołania do parametrów dynamicznych, wyrażenia, zmienne tekstowe, szablon zapytania SQL itp. Są one dostępne po kliknięciu prawym klawiszem myszy tekstu zapytania lub parametrów graficznych wykresu.
Poniżej przedstawiono dwie pozostałe zakładki formularza.



Lista wykresów
Do wyboru wykresu, który chcemy podłączyć, jak również do edycji wykresów zaimplementowano listy wykresów (Rysunek 5 przedstawia listę wykresów standardowych; wykresy użytkownika posiadają analogiczną listę). Lista ta może służyć również do edycji wykresów niepodłączonych do żadnego wywołania.

Lista wstawek tekstowych do wykresów
Do edycji wstawek tekstowych służą listy wstawek tekstowych do wykresów (Rysunek 6 przedstawia listę wstawek do wykresów standardowych; wstawki użytkownika posiadają analogiczną listę).

Formularz wstawki tekstowej do wykresu
Formularz wstawki tekstowej do wykresu wygląda następująco (Rysunek 7 przedstawia formularz wstawki standardowej; wstawki użytkownika posiadają analogiczny formularz).

Okno operacyjne wykresów
Głównym elementem modułu wykresów jest tzw. okno operacyjne wykresów. Okno to, zaraz po otwarciu, wyświetla wykres startowy, a następnie pozwala na nawigację po grafie wykresów i zmianę parametrów dynamicznych wykonywanych wykresów.
Głównym elementem okna jest kontrolka REGION zawierająca wykres. Pod wykresem dostępne są przyciski nawigacyjne, przycisk odświeżania wykresu oraz panel z kontrolkami parametrów dynamicznych.
Na drugiej zakładce umieszczone zostały kontrolki dynamicznych parametrów graficznych wykresu (jeśli ich brak – zakładka ta nie pokazuje się) a na trzeciej – lista z danymi serii wykresu przedstawionymi w formie tabelarycznej. Czwarta zakładka w całości dotyczy opcji wysyłania danych wynikowych. Na toolbarze okna są dostępne przyciski obsługujące wydruki wykresu i eksport danych do Excela. Wydruk z poziomu pierwszych dwóch zakładek produkuje plik .wmf (którego link jest wstawiany do definicji wydruku) a z trzeciej i czwartej zakładki – kolejkę z danymi serii wykresu (wydruk tu podłączony powinien więc operować na kolejce).
Eksport danych do Excela obejmuje dane serii wykresu, a więc dane z listy na trzeciej zakładce.
Jedną z podstawowych akcji wykonywanych na wykresie jest eksploracja do wykresu podrzędnego. Następuje to przez kliknięcie lewym klawiszem myszy w wybrany punkt wykresu (wykonanie podwykresu domyślnego) lub kliknięcie prawym klawiszem myszy w wybrany punkt wykresu i wybór z menu podwykresu, który chcemy wykonać.
Umieszczone pod wykresem przyciski nawigacyjne służą do poruszania się po historii wykonanych wykresów od startowego począwszy. Odpowiada to analogicznym przyciskom w internetowych browserach. Należy jednak zwrócić uwagę, że wykonanie każdej akcji nawigacji (Wstecz, Wprzód itp.) wiąże się z odświeżeniem danych (powtórne załadowanie – brak cache’owania wyniku).
Jak powiedziano wcześniej, bieżący wykres startowy zostaje po raz pierwszy wykonany z wartościami początkowymi parametrów dynamicznych (nadpisanymi ewentualnie wartościami zmiennych dynamicznych przekazanych z aplikacji). Po zmianie któregokolwiek z parametrów przycisk odświeżenia zmienia ikonę na: , co ma sygnalizować, że dane na wykresie nie odpowiadają bieżącym nastawom parametrów. Aby uzgodnić dane
z parametrami należy wykonać odświeżenie. Sytuacja taka nie występuje, jeśli w parametrach graficznych wykresu użyto parametru /@AutoRefresh – wówczas dane odświeżają się automatycznie po każdej zmianie dowolnego parametru.




XL013 - Komunikaty definiowalne
Komunikaty definiowalne
W Comarch ERP XL istnieje możliwość dodawania definiowalnych komunikatów wyświetlanych przez aplikację pochodzących z triggerów w bazie MSSQL.
Dotychczas komunikaty wyświetlane na skutek działania triggerów były błędami krytycznymi. W większości przypadków komunikat zwracany przez trigger znajdował się na zakładce Przyczyna. Powodowało to spore utrudnienie w odnalezieniu właściwego komunikatu z serwera MSSQL. Często intencją autora triggera było wyświetlenie innego komunikatu niż błąd krytyczny oraz umieszczenie odpowiedniej treści w głównym oknie komunikatu.
Definiowalne komunikaty umożliwiają określenie priorytetu oraz zdefiniowanie treści komunikatu, a także informacji wyświetlanej na zakładkach Przyczyna oraz Remedium.
Definiowanie komunikatu w triggerze
Komunikaty w triggerze jest wyświetlany za pomocą funkcji RAISERROR(). Funkcja ta generuje komunikat oraz błąd na podstawie zadanych parametrów. Błąd ten jest przechwytywany przez system, który wyświetla odpowiedni komunikat, zawierający w swej treści komunikat błędu wygenerowany przez serwer MSSQL. W dotychczasowym działaniu użytkownik nie miał żadnego wpływu na typ oraz treść wyświetlanego komunikatu. Definiowanie komunikatu będzie polegało na umieszczeniu w jego treści, konkretnie w wywołaniu funkcji RAISERROR(), odpowiednich znaczników określających priorytet komunikatu (informacja, błąd, błąd krytyczny), znaczników określających treść komunikatu oraz treść zakładki Przyczyna i Remedium.
Znaczniki określające priorytet komunikatu
Znacznikami określającymi priorytet komunikatu są:
- #CDN_INFO/#
- #CDN_BLAD/#
- #CDN_BLADK/#
Znaczniki te mogą być umieszczone w dowolnym miejscu w treści komunikatu. Dla zwiększenia czytelności kodu proponujemy umieszczanie tych znaczników na początku treści.
Znaczniki określające treść komunikatu
Komunikat podzielony jest na treść właściwą oraz zakładki Przyczyna i Remedium. Definiowana treść powinna zaczynać się od jednego z poniższych znaczników:
- #CDN_1= – ogólna treść komunikatu
- #CDN_2= – zakładka Przyczyna
- #CDN_3= – zakładka Remedium
Znacznikiem kończącym treść danej części komunikatu są znaki /#.
Przykłady
Poniżej przedstawiono przykładowe wywołanie funkcji RAISERROR() z definiowanym komunikatem:
- RAISERROR(‘#CDN_INFO/# #CDN_1=Test aktualizacji kontrahenta/# #CDN_2=Przyczyną jest trigger/# #CDN_3=Wyłącz trigger/#’,16,1)
- RAISERROR(‘#CDN_BLAD/# #CDN_1=Test aktualizacji kontrahenta/# #CDN_2=Przyczyną jest trigger/# #CDN_3=Wyłącz trigger/#’,16,1)
- RAISERROR(‘#CDN_BLADK/# #CDN_1=Test aktualizacji kontrahenta/# #CDN_2=Przyczyną jest trigger/# #CDN_3=Wyłącz trigger/#’,16,1)
Przykład triggera ze zdefiniowanym komunikatem
Poniżej został przedstawiony prosty trigger blokujacy zmianę nazwy towaru, ze zdefiniowanym komunikatem.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER CDN.ZmianaNazwyTowaru
ON CDN.TwrKarty
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON
IF UPDATE(Twr_Nazwa)
BEGIN
IF EXISTS (SELECT * FROM deleted WHERE deleted.Twr_Nazwa<>'')
BEGIN
RAISERROR('#CDN_BLAD/# #CDN_1=Próba zmiany nazwy indeksu towarowego!/# #CDN_2=Nie masz uprawnień do wykonania tej operacji./# #CDN_3=Skontaktuj się z Twoim administratorem./#',16,1)
ROLLBACK TRAN
RETURN
END
END
END
SET NOCOUNT OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Jako informacja ogólna pojawi się komunikat: Próba zmiany nazwy indeksu towarowego!
W informacjach szczegółowych będą widniały następujące treści:
- Zakładka Przyczyna: Nie masz uprawnień do wykonania tej operacji.
- Zakładka Remedium: Skontaktuj się z Twoim administratorem.
- Zakładka Zaawansowane: pełna treść komunikatu.

XL003 - Hydra
Mała Hydra
Przez Małą Hydrę rozumiemy mechanizm, który pozwala na ukrycie, wyłączenie lub ustawienie wymagalności dla kontrolek na istniejących oknach. Callbacki zarówno Małej jak i Dużej Hydry są widoczne na Liście dodatków. Lista ta umożliwia importowanie i eksportowanie callbacków, zmianę ich stanu, dodawanie, usuwanie oraz edycję.

Na liście dodatków znajdują się następujące przyciski:
Nowy dodatek – użycie funkcji rozpocznie proces dodawania nowego callbacka.
Importuj – funkcja umożliwia zaimportowanie zdefiniowanego callbacka ze wskazanej lokalizacji.
Eksportuj - funkcja umożliwia wyeksportowanie callbacka do wskazanej lokalizacji.
Odśwież – odświeżenie listy dodatków.
Odśwież w programie - funkcja odświeżania w całym programie, np. w przypadku usunięcia callbacka, zostanie on usunięty ze struktury firmy i innych obiektów w systemie dopiero po jej użyciu.
Dodaj - funkcja aktywna po dodaniu callbacka. Umożliwia jego szczegółowe zdefiniowanie.
Edytuj - umożliwia edycję zdefiniowanego callbacka.
Usuń – usuwa callbacka zaznaczonego na liście.
Aby dodać nowy dodatek Małej Hydry należy uruchomić funkcję Nowy dodatek. Zostanie podniesione okno Edycja dodatku.

Nazwa - w polu należy wprowadzić nazwę callbacka.
Wersja - wersja „Hydry”, w jakiej został utworzony callback; pole wypełniane jest automatycznie.
Przeznaczony dla wersji - wersja systemu Comarch ERP XL, w której callback będzie funkcjonował; pole wypełniane automatycznie.
Autor - autor callbacka; pole wypełniane automatycznie - wartością wprowadzaną domyślnie będzie zalogowany operator.
Data utworzenia - data utworzenia callbacka; pole wypełniane automatycznie.
Data dodania - data dodania callbacka do systemu; pole wypełniane automatycznie.
Operator - operator dodający callback do systemu; pole wypełniane automatycznie.
Stan - zaznaczenie wybranej opcji zadecyduje o aktywności callbacka w systemie. Aby callback funkcjonował w systemie, musi mieć zaznaczoną opcję: Aktywny.
Opis - w polu można wprowadzić opis callbacka.
Aby skonfigurować callbacka należy zaznaczyć dodatek i uruchomić funkcję Dodaj. W efekcie zostanie podniesione okno Edycja grupy procedur. W tym miejscu istnieje możliwość zdefiniowania dodatkowego warunku, na zakładanym callbacku. Warunek musi być zdefiniowany zgodnie ze składnią języka C# i musi zwracać wartość logiczną. W przypadku zwrócenia wartości true callback zostanie wykonany, w przypadku zwrócenia wartości false działanie callbacka zostanie zablokowane. W programie możemy definiować dwa rodzaje złożonych warunków callbacka:
Warunek oparty o zmienne słownikowe – warunek można skonstruować w oparciu o zmienne zawarte w ConfigurationDictionary.
Warunek oparty o bufor tabeli – warunek może być oparty o dane zawarte w buforze tabeli.

W ostatnim kroku należy zdefiniować zmienioną obsługę kontrolek. W tym celu należy na liście dodatków zaznaczyć dodaną procedurę i wywołać funkcję Dodaj. Zostanie podniesione okno Edycja akcji na kontrolce. W tym miejscu należy wskazać za pomocą znacznika odpowiednią kontrolkę na oknie, a następnie zdefiniować właściwą akcję:
Ukryj – ukrycie kontrolki na oknie
Dezaktywuj – dezaktywacja kontrolki na oknie
Wymagaj – ustawienie wymagalności kontrolki – nie będzie możliwe zamknięcie okna do czasu wprowadzenia wartości w kontrolce.
Pogrub – pogrubia czcionkę etykiety (pogrubiona czcionka zwykle służy do wizualnego oznaczenia pól wymaganych na formularzu)

Aby dodatek był aktywny w systemie należy go dodać do właściwego centrum w strukturze praw. W tym celu należy uruchomić okno Edycja struktury firmy i dodać zdefiniowanego callbacka na zakładce Dodatki.
Duża Hydra - informacje ogólne
Callbacki
Callbacki Dużej Hydry są mechanizmem, który służy do dodawania nowej funkcjonalności, bez potrzeby modyfikacji binariów programu. Od strony technicznej callbacki są zrealizowane jako plik dll eksportujący określony zestaw funkcji, podzielonych na funkcje plikowe i okienkowe.
Funkcje plikowe są wywoływane przez program podczas uruchamiania lub zamykania formatki - wówczas każda akcja użytkownika powoduje wywołanie pary zdarzeń: poprzedzających akcję i następujących po niej. Callbacki z tej grupy są najczęściej wykorzystywane do kontroli poprawności zapisywanych danych oraz do zaawansowanej kontroli uprawnień operatora.
Funkcje okienkowe są wykorzystywane w celu modyfikacji wyglądu i zachowania formatek. Składają się na nie trzy funkcje: wywoływane podczas inicjalizacji okna, przy każdym zdarzeniu okna oraz przed zamknięciem okna. Callbacki z tej grupy są najczęściej wykorzystywane do ukrywania lub uniemożliwiania edycji niektórych pól na formatkach lub do dodawania elementów interfejsu.
Zdarzenia obu grup są bardzo często używane łącznie.
Kod obsługujący zdarzenia należy umieścić w specjalnie przygotowanym module .NET’owym. Moduł taki musi zostać opisany za pomocą atrybutu CallbackAssemblyDescription w następujący sposób:
Przygotowanie Callbacka
[assembly:CallbackAssemblyDescription("Nazwa callbacka","Opis callbacka",”Autor callbacka","wersja callbacka","wersja systemu, dla której callback jest przeznaczony","data utworzenia callbacka w formacie dd-mm-rrrr”)]
Aby obsłużyć zdarzenia plikowe i okienkowe, należy dodać do modułu publiczną klasę dziedziczącą po klasie Callback, zdefiniowaną w assembly CdnHydra.dll. Klasę taką należy opisać atrybutem SubscribeProcedure w następujący sposób:
[SubscribeProcedure(Procedura z enumeracji Procedures,"Opis subskrypcji")]
Klasa Callback jest abstrakcyjna, więc do skompilowania assembly będzie konieczne zdefiniowanie metod Init i Cleanup. Zdefiniowanie tych metod umożliwia użytkownikowi wykonanie kodu odpowiednio inicjującego i kończącego pracę z procedurą. Uwaga – nie należy umieszczać takiego kodu wewnątrz konstruktora ani metody Dispose, ponieważ jedna instancja klasy może być wykorzystywana wielokrotnie (każde kolejne uruchomienie przez użytkownika procedury będzie powodowało uruchomienie metody Init, ale nie konstruktora, podobnie z metodą Cleanup). W metodzie Init należy określić zainteresowanie zdarzeniami w procedurze. W przypadku zdarzeń plikowych subskrypcja powinna mieć postać:
AddFileActionSubscription(bool BeforeAction,
FileActionTypes ActionType,
FileActionDelegate ActionDelegate)
gdzie
BeforeAction – określa czy obsługa ma być wywoływana przed czy po zdarzeniu
FileActionTypes – określa typ zdarzenia plikowego, którego dotyczy subskrypcja
ActionDelegate – określa delegat wywoływany w odpowiedzi na zdarzenie
W przypadku zdarzeń okienkowych subskrypcja powinna mieć postać:
AddSubscription(bool BeforeHandling,
int ControlId,
Events EventId,
TakeEventDelegate EventDelegate)
gdzie
BeforeHandling – określa czy obsługa ma być wywoływana przed czy po zdarzeniu
ControlId – określa ID kontrolki (wartość 0 w przypadku ID okna)
EventId – określa zdarzenie, którego dotyczy subskrypcja
EventDelegate – określa delegat wywoływany w odpowiedzi na zdarzenie
Subskrypcje na zdarzenia mogą zostać usunięte za pomocą instrukcji:
RemoveFileActionSubscription(bool BeforeAction,
FileActionTypes ActionType,
FileActionDelegate ActionDelegate)
RemoveSubscription(bool BeforeHandling,
int ControlId,
Events EventId,
TakeEventDelegate EventDelegate)
Deklaracje delegatów dla zdarzeń plikowych i okienkowych powinny mieć odpowiednio postać:
public delegate bool FileActionDelegate (Procedures ProcedureId,
GID GID,
ADODB._Recordset Attributes);
gdzie
ProcedureId – id procedury, której dotyczy zdarzenie
GID – identyfikator rekordu, którego dotyczy zdarzenie
Attributes – zestaw atrybutów powiązanych z edytowanym rekordem
public delegate bool TakeEventDelegate (Procedures ProcedureId,
int ControlId,
Events EventId);
gdzie
ProcedureId – id procedury, której dotyczy zdarzenie
ControlId – id kontrolki, której dotyczy zdarzenie
EventId – id zdarzenia
Kod znajdujący się w callbacku ma dostęp do kontekstu, w którym został uruchomiony za pośrednictwem własności klasy ConfigurationManager. W ramach tej klasy są przechowywane następujące informacje:
- Baza string
- BazaHurtowni string
- BazaOLAP string
- Centra ADODB._Recordset
- DomyslnyMagazynSprzedazy string
- DomyslnyMagazynZakupu string
- DomyslnyRejestrBankowy string
- DomyslnySkladCelny string
- IdCentrumKosztowego int
- IdCentrumPodleglosciowego int
- IdCentrumWlasciwego int
- IdFirmy int
- KasaTransakcjiGotowkowych string
- KatalogProgramu string
- KoniecOkresuObrachunkowego datetime
- KontoDostawcow string
- KontoOdbiorcow string
- LoginZintegrowany bool
- MagazynDocelowyKompletacji string
- Magazyny ADODB._Recordset
- MagazynZrodlowyKompletacji string
- NumerOperatora int
- PieczatkaEmail string
- PieczatkaMiasto string
- PieczatkaNazwa string
- PieczatkaNIP string
- PieczatkaNIPPrefiks string
- PoczatekOkresuObrachunkowego datetime
- RabatyOdCeny bool
- RejestryBankowe ADODB._Recordset
- SciezkaWStrukturze string
- Serie ADODB._Recordset
- SerieOddzialowe ADODB._Recordset
- Serwer string
- SerwerOLAP string
- TypNaliczaniaMarzy Hydra.TypMarzy
- TypyKlasAtrybutow ADODB._Recordset
- WalutaSystemowa string
- Waluty ADODB._Recordset
Procedury HASPa:
- HASPDataAplikacji datetime
- HASPDataDealera datetime
- HASPLicencje ADODB._Recordset
- HASPLiczbaBaz int
- HASPNazwaUzytkownika string
- HASPNumerBazyDanych int- HASPNumerKlucza int
- HASPOpcje int
- HASPPlatforma int
- HASPStanKlucza int
Operacje na kontrolkach
Kod znajdujący się w callbacku może wykonywać operacje na interfejsie (dodawać, przesuwać i ukrywać kontrolki, wypełniać je itp.) za pośrednictwem własności i metod klasy ClaWindow. Instancję klasy ClaWindow można uzyskać za pomocą metody GetWindow klasy Callback (w celu uzyskania głównego okna procedury) lub GetControl (w celu uzyskania kontrolki).
Klasa ClaWindow jest wykorzystywana do operowania na oknach i kontrolkach Clarionowych. Każda instancja klasy ClaWindow jest powiązana z kontrolką lub oknem, na którym operuje.
Kolekcja AllChildren przechowuje wszystkie kontrolki znajdujące się na oknie. Można ją wykorzystać do odnalezienia poszukiwanej kontrolki. Pozostałe własności klasy odpowiadają własnościom kontrolek Clarionowych, które zostały opisane w dalszej części biuletynu.
Zdarzenia do kontrolki mogą być wysyłane za pośrednictwem metody:
public void PostEvent(Events EventId)
gdzie:
EventId – identyfikator zdarzenia, które ma zostać wysłane do kontrolki
Bardzo często zdarzenia do kontrolki są wysyłane parami – po wysłaniu określonego zdarzenia wymagane jest wysłanie zdarzenia Accepted w celu zatwierdzenia wprowadzonej wartości.
Podstawowe zdarzenia dla kontrolek:
OpenWindow/JustAfterWindowOpening – otwarcie okna
ResizeWindow – zmiana wielkości okna
NewSelection – kliknięcie w spin, przejście do innej zakładki
Accepted – akceptacja wprowadzenia nowej wartości do pola (odpowiednik wyjścia z kontrolki za pomocą tabulatora), kliknięcie przycisku.
ScrollDown/ScrollUp – scrollowanie listy
Podstawowe kontrolki
Główne właściwości kontrolek
Visible – (true/false) – widoczność kontrolki
Disable – kontrolka nieaktywna
Skip – kontrolka jest pomijana podczas przechodzenia tabulatorem
TextRaw – tekst widoczny na kontrolce
Bounds – współrzędne kontrolki
FontSizeRaw – wielkość czcionki
FontColorRaw – kolor czcionki
BackgroundRaw – kolor tła
FontStyleRaw – format tekstu
100 – cienki tekst, 400 – zwykły tekst, 700 – pogrubiony tekst, 4096 – kursywa, 8192 – podkreślenie, 16384 – tekst przekreślony
LeftRaw/RightRaw/CenterRaw – wyrównywanie tekstu w kontrolce
TipRaw – tekst wyświetlany w tooltipie kontrolki
MsgRaw – opis wyświetlany w stopce okna podczas aktywności kontrolki
Box
Kontrolka typu Box definiuje ramkę na oknie (prostokątny obszar).
ColorRaw – kolor ramki
RoundRaw – zaokrąglenie ramki
FillRaw – kolor wypełnienia
LineWidthRaw – grubość ramki
Panel
Kontrolka typu Panel definiuje obszar na oknie.
BevelRaw – efekt 3D dla ramki
Image
Kontrolka typu Image pozwala umieścić rysunek na oknie.
TextRaw – ścieżka do pliku z rysunkiem
Button
Kontrolka typu Button dodaje przycisk na oknie
IconRaw – przypisanie ikony do przycisku np. "~EXPORT20.ICO"
ReqRaw – naciśnięcie przycisku spowoduje sprawdzenie czy wszystkie pola Entry na oknie, które mają ustawiony parametr Req są wypełnione. Jeżeli nie są wypełnione to kursor zostanie przeniesiony do odpowiedniego pola Entry.FlatRaw – określenie czy przycisk jest płaski (wymagane jest przypisanie ikony do przycisku)
ImmRaw – moment wyzwolenia akcji na kontrolce. W przypadku przekazania do właściwości wartości „1” akcja zostanie wywołana w momencie kliknięcia przycisku, ale przed zwolnieniem przycisku myszy. W przypadku przekazania wartości „0” akcja zostanie wykonana po naciśnięciu i zwolnieniu przycisku myszy.
TextRaw – etykieta przycisku
StdRaw – przypisanie do przycisku standardowej akcji
Menu
Kontrolka dodaje dodatkową opcję w Menu okna. Aby zbudować menu należy posłużyć się dwoma
typami kontrolek: Menu i Item. Poniżej zaprezentowano przykład działania Menu:
Group
Kontrolka pozwala zgrupować na oknie inne kontrolki. Możliwe jest narysowanie ramki dla grupy i nadanie jej nazwy.
BoxedRaw – czy ma być wyświetlana ramka dla grupy (0 – nie, 1 – tak)
TextRaw – nazwa grupy
Text
Kontrolka typu Text dodaje pole tekstowe na oknie.
ToolTipRaw – tekst w tooltipie
SkipRaw – pole jest ignorowane podczas przechodzenia między kontrolkami za pomocą przycisku
Tabulatora
ReadOnlyRaw – pole ma status „tylko do odczytu”
TextRaw – domyślna wartość w polu tekstowym
List
Kontrolka typu List dodaje listę na oknie.
FromRaw – wypełnienie listy wartościami gdzie kolejne rekordy powinny być oddzielone od siebie
znakiem |. Jeżeli taki znak ma zostać wpisany jako wartość pozycji to należy wpisać ||. Pustą wartość
można uzyskać wpisując | |
VScrollRaw – umieszczenie pionowego paska przewijania na liście
FormatRaw – zdefiniowanie kolumn listy
SelectedRaw – numer zaznaczonego elementu na liście
Progress
Kontrolka Progress definiuje pasek postępu. Określenie postępu dla kontrolki określa się za pomocą parametru ProgressRaw.
Region
Kontrolka typu Region dodaje „interaktywny” obszar (Panel) na oknie.
ImmRaw – ustawienie parametru pozwala na obsługę zdarzeń typu MouseIn/MouseOut. Ponieważ właściwość może mieć wpływ na prędkość otwierania formatki należy ją definiować jedynie w przypadku wykorzystania dodatkowych zdarzeń.
DragIDRaw/DropIDRaw – obsługa zdarzeń typu Drag i Drop na obszarze.
Spin
RangeLowRaw – minimalna wartość dla kontrolki
RangeHighRaw – maksymalna wartość dla kontrolki
ScreenTextRaw – domyślna wartość dla kontrolki
FromRaw – lista możliwych wartości dla kontrolki oddzielonych od siebie znakiem |
TextRaw – określenie formatu pola
.Check
Kontrolka typu Check pozwala na zwrócenie wartości z przedziału {0,1}
CheckedRaw – domyślna wartość kontrolki (1 – zaznaczony, 0 – odznaczony)
UseRaw – wartość w kontrolce przy odczycie
DropCombo
Kontrolka typu DropCombo jest połączeniem dwóch kontrolek: List oraz Entry. Kontrolka pozwala na wybranie wartości z listy jednocześnie umożliwiając dopisanie/zmianę wartości.
FromRaw – wypełnienie listy wartościami gdzie kolejne rekordy powinny być oddzielone od siebie znakiem |. Jeżeli taki znak ma zostać wpisany jako wartość pozycji to należy wpisać ||. Pustą wartość można uzyskać wpisując | |
VScrollRaw – umieszczenie pionowego paska przewijania na liście.
DropRaw – liczba wierszy wyświetlanych na liście.
VCRRaw – pasek szybkiego przechodzenia po liście wartości
UprRaw – wpisanie wartości do pola będzie skutkowało automatyczną zmianą tekstu na duże znaki
SelectedRaw – wybranie pozycji na liście wartości
ScreenTextRaw – wpisanie wartości do pola entry
Droplist
Kontrolka typu Droplist pozwala na wybór wartości z rozwijanej listy bez możliwości jej edycji lub wprowadzania nowych wartości. Właściwości kontrolki w większości pozostają analogiczne jak na kontrolce Dropcombo.
Wyświetlanie komunikatów (dotyczy wyłącznie wersji SE)
Komunikat można wyświetlić za pomocą polecenia MessageBox.Show(string) po uprzednim odblokowaniu wątku. Właściwa obsługa wątków jest również konieczna na przykład w przypadku wywoływania okna .net’owego.
Ogólne wskazówki związane z tworzeniem callbacków
Odczytanie nazwy kontrolki
Nazwę danej kontrolki można odczytać korzystając z konstruktora Małej Hydry. W przypadku modułu Detal nazwy procedur rozpoczynają się od słowa Detal, a nazwy kontrolek w większości są zgodne z analogicznymi kontrolkami w innych modułach.
Bufor Tabeli
W wielu miejscach programu mamy możliwość odwołania się do wartości przechowywanych w buforze tabeli. Przykładowo z poziomu formatki dokumentu możemy odczytać informacje na temat jego nagłówka bez konieczności otwierania połączenia do bazy. Aby wykonać taki odczyt należy wskazać nazwę tabeli wraz z nazwą kolumny w bazie np. TraNag.TrN_GIDNumer.
Warto zwrócić uwagę że w buforze pliku jest przechowywany tylko jeden, aktualny rekord. Dodatkowo bufory plików mogą być wykorzystywane przez główny kod programu na różne sposoby – np. mogą być modyfikowane w odpowiedzi na zdarzenia na oknie. Dlatego warto ograniczyć poleganie na informacjach znajdujących się w buforach plików do niezbędnego minimum, wszelkie dodatkowe informacje odczytując samodzielnie np. przy użyciu ADO.NET. Modyfikowanie buforów plików jest możliwe, ale jest to działanie, które absolutnie odradzamy – może prowadzić do powstania trudnych do wykrycia i usunięcia błędów w bazie danych.
Identyfikator błędu w przypadku zdarzeń plikowych
W przypadku zdarzeń plikowych istnieje możliwość zareagowanie na ewentualny błąd np. nieudaną aktualizację rekordu. W tym celu obok standardowej subskrypcji AddFileActionSubscription jest udostępniona funkcja AddFileActionErrSubscription. W ramach tej subskrypcji jest dodany delegat FileActionErrDelegate, do którego będzie przekazywany kod błędu. Delegat jest wołany tylko na zdarzeniach typu after.
Oba typy subskrypcji mogą działać równocześnie. Wówczas Hydra najpierw wywołuje delegata z przekazanym kodem błędu, a później stary delegat.
W materiałach dodatkowych zostały udostępnione callbacki przedstawiające wykorzystanie zdarzeń plikowych. Są to odpowiednio callback_plikowy.cs (dla AddFileActionSubscripion) i callback_plikowy_err.cs (dla AddFileActionErrSubscription).
Obsługa list z poziomu Hydry
W przypadku tworzenia nowych list za pomocą Hydry, pierwszym etapem jest ustalenie prawidłowej definicji listy. Aby prawidłowo utworzyć listę należy się posłużyć dokumentacją Clariona, gdzie szczegółowo opisano działanie poszczególnych parametrów definicji listy. Jeżeli nie dysponujemy dokładnym opisem, to można odczytać i ewentualnie zmodyfikować format innej, istniejącej już listy w programie.
Kolejnym etapem jest proces wypełniania listy danymi. Aby prawidłowo wypełnić listę należy określić parametr FormatRaw wcześniej zdefiniowanym łańcuchem znaków. Stopniowa inkrementacja wartości parametru w pętli nie jest w tym przypadku zalecana, gdyż powoduje znaczne wydłużenie procesu wypełniania kontrolki. Poniższy fragment kodu prezentuje w jaki sposób powinno wyglądać prawidłowe wypełnianie listy:
W przypadku nowej listy istnieje możliwość określenia kolorów dla każdego rekordu. Aby pojawiła się taka możliwość należy dodać znak * w definicji danej listy. Poniżej zaprezentowano fragment kodu dodającego nową listę. Dla każdej wartości został zdefiniowany zestaw 4 kolorów oznaczających kolejno: kolor tekstu, kolor tła, kolor tekstu po podświetleniu wiersza, kolor tła po podświetleniu wiersza. W przypadku pozostawienia wartości -1 zostanie pobrany domyślny kolor zdefiniowany dla listy.
W przypadku list istniejących nie możemy odczytać kolejki danych wysyłanych do kontrolki i w związku z tym, nie mamy możliwości zmiany koloru poszczególnych pozycji.
Zmiana wartości w kontrolce Check
Poniżej zaprezentowano przykład na zmianę wartości kontrolki typu Check.Zasady działania głównych funkcji Dużej Hydry
Podczas tworzenia dodatków należy pamiętać, iż metoda Init() wykonuje się przed zbudowaniem okna. Metoda Cleanup() jest wykonywana przed zamknięciem okna. Okno jeszcze istnieje, ale już nie obsługuje zdarzeń. Metoda Exit() wykonuje się po zamknięciu okna, po zwolnieniu lokalnych obiektów (wszystkich łącznie z oknem i kontrolkami). Można tą metodę przeciążać – dlatego właśnie została udostępniona, trzeba tylko nie odwoływać się do zwolnionych obiektów.
Przykłady
Zdefiniowanie połączenia do bazy bez potrzeby podawania ConnectionStringa.
Nie ma potrzeby definiowania Connection Stringa przy wywoływaniu połączenia do bazy danych. W to miejsce można zastosować intrukcję: Runtime.ActiveRuntime.Repository.Connection; która zwróci pełny ConnectionString dla połączenia XL-owego.Wywołanie zapytania na bazie bez potrzeby otwierania nowego połączenia do bazy.
Do klasy Config została dodana metoda ExecSQL, która pozwala na wywołanie zapytania SQL bez potrzeby otwierania nowego połączenia do bazy. Wykonanie zapytania odbywa się w tym przypadku na połączeniu XLa i służy wykonaniu instrukcji bez zwracania jej wyniku. W związku z tym jest ona przeznaczona przede wszystkim do uruchamiania procedur SQL lub instrukcji insert/update/delete na bazie danych. Na chwilę obecną nie ma możliwości wykorzystania instrukcji w celu zwrócenia wartości select.
Instrukcja ma postać: Runtime.Config.ExecSql (string Sql, bool Transakcja) gdzie parametr Sql - zapytanie SQL parametr Transakcja (true lub false) - czy zapytanie ma być wykonane w transakcji (true) lub nie (false)Aktualna data i godzina
Informacje na temat aktualnej daty i godziny można uzyskać korzystając z klasy ConfigurationDictionary:
Runtime.ConfigurationDictionary.Today()
Runtime.ConfigurationDictionary.TimeStamp()
Odczyt zaznaczonych pozycji
Na listach została udostępniona możliwość odczytu zaznaczonych pozycji. Przykład tego rozwiązania można odnaleźć w materiałach dodatkowych w pliku listazaznaczonych.cs.
Odczyt wartości atrybutu
W materiałach dodatkowych w pliku atrybuty.cs można odnaleźć przykład odczytania wartości atrybutu na dokumencie FS. Odczytanie wartości nie jest możliwe za pomocą mechanizmu Hydry, więc w tym celu zostało wykorzystane odwołanie bezpośrednio do bazy danych. Aby callback zadziałał prawidłowo należy zdefiniować atrybut z opcją automatycznego zapisu wartości w bazie.
Zmiana wartości pola tekstowego
Aby zmienić wartość istniejącego pola tekstowego należy zmienić odpowiednią właściwość danej kontrolki, a następnie odświeżyć kontrolkę.
ClaWindow Parent = GetWindow();
ClaWindow miasto = Parent.AllChildren["?Knt:Miasto"];
miasto.ScreenTextRaw = "miasto";
Runtime.WindowController.PostEvent(Parent.AllChildren["?Knt:Miasto"].Id,Events.Accepted);
Odświeżanie zawartości okna
Jeżeli wykonujemy operacje dla całego okna, a nie konkretnej kontrolki to w miejsce id kontrolki powinna zostać ustawiona wartość 0. Przykładowo, aby odświeżyć zawartość okna należy wywołać zdarzenie FullRefresh bez wskazania na konkretną kontrolkę:
Runtime.WindowController.PostEvent(0, Events.FullRefresh);
Podniesienie do edycji wybranego okna
Istnieje możliwość wywołania funkcji XLUruchomFormatkeWgGID bez konieczności wykorzystania w tym celu zewnętrznych funkcji API. Należy w tym celu wykorzystać wbudowaną funkcję:
public Hydra.GID UruchomFormatkeWgGID(short GIDTyp, int GIDFirma, int GIDNumer, short GIDLp,Hydra.Request request)
W przypadku wystąpienia błędów do pola Typ klasy GID zostaje zwrócony numer błędu zgodny z analogiczną funkcją dostępną w API, a do pozostałych pól (Firma, Numer, Lp) zostaje zwrócona wartość -1.
Ukrycie kolumny na liście
W programie Comarch ERP XL nie ma możliwości, aby ukryć lub dodać kolumnę do listy z poziomu Hydry, gdyż wiązałoby się to z koniecznością zmiany sposobu wypełniania takiej listy danymi, nad czym z poziomu Hydry nie mamy kontroli. Aby ukryć kolumnę można za pomocą Hydry zmniejszyć jej szerokość tak, aby operator nie był w stanie zobaczyć jej zawartości. Efekt taki można osiągnąć modyfikując definicję danej listy poprzez zmianę właściwości FormatRaw. Przykładowy kod można odnaleźć w załącznikach w pliku UkrywanieKolumny.cs, który przedstawia sposób na ukrycie kolumny z ceną na liście towarów.
Debugowanie kodu z poziomu Visual Studio
Istnieje możliwość debugowania stworzonego callbacka. Aby przeprowadzić ten proces z poziomu Visual Studio należy wstawić w kodzie odpowiedni breakpoint, a następnie ustawić we właściwościach projektu, aby przy starcie została uruchomiona zewnętrzna aplikacja (w naszym przypadku moduł Comarch ERP XL). Właściwości projektu można ustawić z poziomu menu Project -> Properties. Konieczne jest również zaimportowanie aktualnego callbacka do ERP XL.
Przy powyższych ustawieniach w momencie uruchamiania debugowania zostanie uruchomiony moduł wskazany w linii ‘start external program’, a działanie programu zostanie przerwane przy dojściu do pierwszego breakpointa.
UwagaFunkcjonalność wywołania zewnętrznego programu w przedstawiony sposób podczas uruchamiania debugowania nie jest dostępna w Visual Studio w wersji Express.
Reakcja na zamknięcie okna
Aby zareagować na zamknięcie formatki najczęściej wykorzystuje się zdarzenie CloseWindow. Zdarzenie to ma jednak podstawowe ograniczenie, gdyż pozwala jedynie na reakcję przed zamknięciem formatki. Aby zareagować na moment „po zamknięciu” należy zadeklarować metodę Exit. Należy również zwrócić uwagę na brak blokowania wątku podczas wywoływania komunikatu.
Ctrl+ins na dokumencie
Comarch ERP XL oferuje możliwość dodania nowych obiektów do bazy jak również skopiowanie istniejących za pomocą kombinacji Ctrl+ins. Aby z poziomu Hydry wykryć w jaki sposób nowy obiekt został dodany do bazy należy zapiąć się na zdarzenie plikowe before InsertInit. Jeżeli dodawany jest nowy obiekt do bazy, to w gidnumerze zostanie zwrócona wartość 0. W przypadku kopiowania obiektu zostanie zwrócony gidnumer kopiowanego elementu.
Zmiana kontrahenta na dokumencie
W przypadku zmiany kontrahenta lub towaru na dokumencie dostępne są dwie ścieżki postępowania – wartość może zostać wpisana w polu z klawiatury lub wybrana z podniesionej listy. Aby obsłużyć przedstawioną sytuację należy założyć dwie subskrypcje. Jedna z nich na wypełnienie wartości z klawiatury (zdarzenie before Accepted), druga na kliknięcie przycisku (zdarzenie after Accepted).
Przechodzenie między oknami w trybie zaawansowanym
Jeżeli na karcie operatora ustawiono otwieranie okien w trybie zaawansowanym, to pojawia się możliwość przechodzenia między dokumentami. Aby wykryć taką operację z poziomu Hydry należy zapiąć subskrypcję na kliknięcie strzałki, a następnie poczekać na pierwsze wysłanie zdarzenia FullRefresh do okna. Po wystąpieniu tego zdarzenia należy zdjąć subskrypcję na zdarzenie FullRefresh, aby uniknąć wyzwalania callbacka przy standardowym odświeżeniu danych.
Wykonanie wydruku
Z poziomu Hydry możliwe jest wykonanie wydruków. W tym celu w ConfigrationDictionary udostępniono metodę WykonajWydruk().
public int WykonajWydruk(int ProceduraID, int Kontekst, int Zrodlo, int Wydruk, int Format, string Zmienne, string FiltrTPS, string FiltrSQL, string Sortowanie, short Urzadzenie)
Przykład tego rozwiązania można odnaleźć w materiałach dodatkowych w pliku WykonajWydruk.cs.
Odczyt naciśniętego klawisza
Od wersji 2014.1 jest możliwe odczytywanie za pomocą Hydry, jaki klawisz klawiatury został naciśniety. W tym celu dodano metodę GetKeyCode do klasy WindowController.
Przykład tego rozwiązania można odnaleźć w materiałach dodatkowych w pliku OdczytKlawisza.cs.
Modyfikacja menu kontekstowego
Od wersji 2017.0 istnieje możliwość modyfikacji menu kontekstowych (tzw. PopupMenu) wyświetlanych w Comarch ERP XL. Służą do tego klasy XLPopup oraz XLPopupItem, które reprezentują odpowiednio menu oraz pojedynczą pozycję z menu.

W klasie WindowController dostępne są metody pomocnicze:
SetPopup – ustawia wygląd popup menu
SetPopupChoice – wybiera pozycję z popup menu związanym ze wskazaną kontrolką
GetPopup – zwraca definicję popup menu związanego z daną kontrolką
GetPopupChoice – zwraca numer pozycji ostatnio wybranej z popup menu
GetPopupItem – zwraca definicję pozycji ostatnio wybranej z popup menu
Aby modyfikować popup menu należy dodać subskrypcję przed zdarzeniem Events.XLPopup i w niej dokonać modyfikacji popup menu, natomiast na subskrypcji po tym zdarzeniu należy dodać obsługę wybranej pozycji.
Uwaga: Można dodawać i usuwać pozycje menu z dowolnego miejsca, ale jeżeli nie są to pozycje ostatnie to trzeba zadbać o przenumerowanie wyboru użytkownika tak aby dla standardowych pozycji zwracać ich pierwotne numery.
Odczyt nazwy kontrolki z pomocą dodatku Dużej Hydry
W przypadku gdy nazwy kontrolki nie da się odczytać za pomocą małej hydry można skorzystać z możliwości dużej hydry tworząc oddzielny dodatek. Wówczas należy skorzystać z metody Runtime.WindowController.GetControlName().
Format czasu w kontrolce spin
Umieszczając kontrolkę spin zdarza się potrzeba umieszczenia danych w formacie czasu np. hh:mm. W tym celu należy dodać odpowiedni parametr TextRaw = "@T1" oraz odpowiedni krok StepRaw = "6000". Format @T1 to GG:MM, czyli z dokładnością do minuty. Wartości w spinie natomiast to standardowy czas, czyli liczba setnych sek. od godziny 00:00:00. Domyślnym krokiem jest 1, więc gdy przewijamy w górę to kontrolka zaokrągla czas do pełnych minut zgodnie z formatem więc wartość się nie zmienia (np. 10:11:00.00 zmienia się na 10:11:00.01,więc w formacie @T1 nadal jest 10:11), gdy przewijamy w dół robi tak samo, ale teraz już minuty się zmieniły bo np. z 10:11:00.00 zrobi się 10:10:59.59.
Znane problemy w Hydrze
Współpraca API z oknami .net’owymi (dotyczy wyłącznie wersji SE)
Mechanizm Hydry umożliwia wywołanie okienek .net’owych co przyczynia się do znacznego zwiększenia jej możliwości, jednak oznacza to równocześnie próbę pogodzenia ze sobą dwóch różnych technologii. Dosyć często takie formatki pośredniczą pomiędzy XL-em, a funkcjami API – przykładowo zachodzi taka sytuacja gdy z poziomu programu zostaje zawołane okno .net’owe, a następnie na podstawie zebranych danych wywołujemy funkcje API. Przy klasycznej konstrukcji callbacka, gdy w ramach danego frame’a wywołujemy funkcje API dosyć często pojawiają się błędy obsługi pamięci. Jedynym rozwiązaniem jest wówczas wywołanie funkcji API poza oknem .net’owym. Najprościej uzyskać taki efekt tworząc osobną aplikację wywoływaną z poziomu linii poleceń z odpowiednimi parametrami. Dzięki temu udaje się ominąć problemy z obsługą pamięci.
Wywoływanie funkcji API z poziomu danego dokumentu
Niestety nie ma możliwości wywołania większości funkcji API z poziomu edytowanego dokumentu. Najczęściej stosuje się podobne próby w sytuacji, gdy podczas wystawiania jednego dokumentu zachodzi potrzeba wystawienia innego dokumentu. Z technicznego punktu widzenia taka sytuacja jest możliwa do obsłużenia, tzn. z poziomu jednego dokumentu możemy wywołać dodanie innego dokumentu. Najczęściej nie jest jednak wtedy możliwe prawidłowe zamknięcie pierwszego dokumentu, który pozostanie w bazie jako aktywny. Jest to spowodowane współdzieleniem przez obie sesje (XLa i API) informacji w tabeli ObiektyObce. Wówczas konieczne jest wywołanie nowego dokumentu dopiero po zamknięciu pierwszego.
Ograniczenia callbacków plikowych
Stosowanie callbackow plikowych ma swoje ograniczenia. Aby callback został wykonany niezbędne jest podniesienie danej formatki. Ma to istotne znaczenie zwłaszcza w przypadku obsługi menu kontekstowego i opcji pociągających za sobą update na elemencie. Przykładowo potwierdzenie lub anulowanie dokumentu handlowego nie spowoduje wyzwolenia callbacka zapiętego na akcję updateaction gdyż modyfikacja odbywa się bez otwierania danego okna. Inaczej natomiast wygląda sytuacja z usuwaniem takiego dokumentu z listy – w tym przypadku jest to obsłużone przez mechanizm Clariona, który podnosi okno w tle i dzięki temu callback zostanie wykonany.
Hydra i nowy interfejs
- Callbacki przygotowane dla wersji SE, nie muszą być ponownie kompilowane do wersji z nowym interfejsem.
- Jeżeli dodatek Hydry startuje nowy wątek i w tym nowym wątku występują odwołania do API bądź metod udostępnianych przez Hydrę (ogólnie odwołanie do XL-a np. przez wywołania funkcji z DLLImport), to należy w tym wątku, zaraz po jego uruchomieniu wywołać funkcję z biblioteki ClaRUN.dll AttachThreadToClarion(1).
- [DllImport(“ClaRUN.dll”)]
- static extern void AttachThreadToClarion(int _flag);
Pliki do pobrania:
ERPXL_HydraXL041 - Analiza testów integralności w logistyce
Informacje ogólne
Testy integralności z zakresu modułu: Logistyka, służą do monitorowania poprawności, spójności, przejrzystości bazy pod kątem danych logistycznych, do koordynowania prawidłowości relacji między odpowiednimi tabelami. W przypadku istniejących nieprawidłowości, testy zgłaszają w logu błędy, ostrzeżenia i zwracają rekordy, będące efektem błędogennej sytuacji w bazie, bądź będące skutkiem czynności wykonywanych przez Użytkownika w sposób niepoprawny (powodujących zaburzenia w utrzymaniu spójności danych). Poniższy rysunek przedstawia listę dostępnych standardowych testów integralności z logistyki

- Poprawność danych kart kontrahentów i towarów
- Zgodność magazynu
- Zgodność transakcji
- Zgodność dostaw
- Zgodność inwentaryzacji
Sprzedaż
Poprawność danych kontrahentów
Sprawdza poprawność danych kart kontrahentów. Obejmuje też poprawność adresów kontrahentów (tabele cdn.KntKarty, cdn.KntAdresy). Porównywane są pola: Knt_GIDNumer, KnA_KntNumer Pojawiające się komunikaty:- Niezgodność gidów pomiędzy kartą kontrahenta a jego adresem – Komunikat taki może pojawić się, kiedy w tabeli cdn.KntKarty wskazanie jest na adres, który ma przypisanego innego kontrahenta. Można spróbować usunąć taki adres z karty kontrahenta (zakładka: Adresy). W większości przypadków konieczna jednak będzie interwencja z poziomu bazy.
- Niezgodność, brak ustawionej formy płatności – Dla kontrahenta nie jest ustawiona forma płatności. Należy ustawić odpowiednia na karcie kontrahenta.
- Niezgodność, kontrahent nie jest podpięty do żadnej grupy – Karta kontrahenta nie jest związana z żadną grupą. Należy ustawić ręcznie grupę na karcie kontrahenta (zakładka: Grupy).
Poprawność danych grup kontrahentów
Sprawdza poprawność grup kontrahentów (tabela cdn.KntGrupy). Pojawiające się komunikaty:- Niezgodność, kontrahent nie ma określonej grupy domyślnej – Na karcie kontrahenta nie jest ustawiona żadna grupa domyślna. Należy ustawić ręcznie grupę na karcie kontrahenta (zakładka Grupy).
- Niezgodność, grupa kontrahentów nie ma określonej grupy domyślnej – Na definicji grupy kontrahentów nie jest ustawiona żadna grupa domyślna. Należy uruchomić funkcję specjalną Naprawa grup domyślnych.
Poprawność danych towarów
Sprawdza poprawność danych kart towarowych (tabela cdn.TwrKarty). Pojawiające się komunikaty:- Niezgodność, towar nie jest podpięty do żadnej grupy – Karta towaru nie jest związana z żadną grupą. Należy ustawić ręcznie grupę na karcie towaru (zakładka: Grupy).
Poprawność danych grup towarów
Sprawdza poprawność zapisanych w bazie informacji o grupach towarów (tabela cdn.TwrGrupy). Pojawiające się komunikaty:- Niezgodność, towar nie ma określonej grupy domyślnej – Na karcie towaru nie jest ustawiona żadna grupa domyślna. Należy ustawić ręcznie grupę na karcie towaru (zakładka: Grupy).
- Niezgodność, grupa towarów nie ma określonej grupy domyślnej – Na definicji grupa towaru nie jest ustawiona żadna grupa domyślna. Należy uruchomić funkcję specjalną Naprawa grup domyślnych.
Poprawność zamknięcia dokumentów VAT
Sprawdzana jest poprawność stanu zapisanych w bazie dokumentów (tabela cdn.TraNag). Pojawiające się komunikaty:- Dokument nie został poprawnie zamknięty – Dokument wyświetlany jest na liście na czerwono. Jeżeli w trakcie wystawiania dokumentu komputer na przykład został wyłączony, to w bazie zapisywana jest informacja o tym kto i na jakim stanowisku dany dokument wystawiał. Należy edytować dokument z poziomu listy dokumentów, program powinien go automatycznie naprawić. Edycji powinna dokonać osoba która wystawiała dokument przed wystąpieniem awaryjnej sytuacji ze stanowiska z którego dokument był wystawiany.
Sprawdzenie duplikacji kodów EAN
Sprawdzana jest unikalność zapisanych w bazie kodów EAN (tabele cdn.TwrKarty, cdn.TwrZasoby, cdn.Dostawy, cdn.TwrJM) Porównywane są pola: Twr_Ean, TwZ_Ean, Dst_Ean, TwJ_EAN Pojawiające się komunikaty:- Zduplikowany EAN – Należy poprawić kod EAN odpowiednio, na karcie towaru, jednostce pomocniczej itd. Możliwe, że konieczna będzie interwencja z poziomu bazy.
Zgodność magazynu
Zgodność kosztów księgowego i rzeczywistego oraz stanu handlowego
Sprawdzana jest zgodność kosztu księgowego i rzeczywistego oraz stanu handlowego zapisanego na elemencie i subelemencie dokumentu (tabela cdn.TraSElem, cdn.TraElem). Porównywane są pola: TrS_ilość, TrE_KosztKsiegowy, TrE_KosztRzeczywisty, TrS_Ilość, TrS_KosztKsiegowy, TrS_KosztRzeczywisty. Pojawiające się komunikaty:- Niezgodność, kod koszt księgowy – niezgodność kosztu księgowego zapisanego na zasobie oraz na subelementach dokumentu.
- Niezgodność, kod koszt rzeczywisty – niezgodność kosztu rzeczywistego zapisanego na zasobie oraz na subelementach dokumentu.
- Niezgodność, kod ilość różnica – niezgodność ilości towaru zapisanej na zasobie oraz na subelementach dokumentu.
Zgodność stanu magazynowego
Sprawdzana jest ilość zapisana na dokumencie magazynowym oraz zasobie. (tabele cdn.TwrZasoby, cdn.MagSElem) Porównywane są pola: TwZ_Ilmag, MaS_Ilosc Pojawiające się komunikaty:- Niezgodność, różnica w zasobach w subelementach – niezgodnośc ilości towaru zapisanej na zasobie oraz na subelemencie dokumentu.
Zgodność ilości i kosztów w elementach transakcji z wartościami w subelementach
Zgodność w transakcjach rozchodowych
Sprawdzana jest zgodność kosztu księgowego i rzeczywistego oraz stanu handlowego zapisanego na elemencie i subelemencie dokumentów rozchodowych (tabele cdn.TraElem, cdn.Traselem). Porównywane są pola: TrE_Ilosc, TrE_KosztKsiegowy, TrE_KosztRzeczywisty, TrS_IloscP, TrS_IloscR, TrS_KosztKsiegowyP, TrS_KosztRzeczywistyP, TrS_KosztKsiegowyR, TrS_KosztRzeczywistyR, TrN_Stan, TrN_NettoP, TrN_NettoR Pojawiające się komunikaty:- Niezgodność, ilość w elemencie ilość w subelementach – niezgodność ilości towaru zapisanej na pozycji dokumentu oraz na subelemencie dokumentu.
- Niezgodność, koszt rzeczywisty różnica w elemencie koszt w subelementach - niezgodność kosztu rzeczywistego zapisanego na pozycji dokumentu oraz na subelemencie dokumentu.
- Niezgodność, koszt księgowy rozchodu w elemencie koszt w subelementach - niezgodność kosztu księgowego zapisanego na pozycji dokumentu oraz na subelemencie dokumentu.
Zgodność w transakcjach przychodowych
Sprawdzana jest zgodność kosztu księgowego i rzeczywistego oraz stanu handlowego zapisanego na elemencie i subelemencie dokumentów przychodowych (tabele cdn.TraElem, cdn.Traselem). Porównywane są pola: TrE_Ilosc, TrE_KosztKsiegowy, TrE_KosztRzeczywisty, TrS_IloscP, TrS_IloscR, TrS_KosztKsiegowyP, TrS_KosztRzeczywistyP, TrS_KosztKsiegowyR, TrS_KosztRzeczywistyR, TrN_Stan, TrN_NettoP, TrN_NettoR Pojawiające się komunikaty:- Niezgodność, ilość w elemencie ilość w subelementach – niezgodność ilości towaru zapisanej na pozycji dokumentu oraz na subelemencie dokumentu.
- Niezgodność, koszt rzeczywisty różnica w elemencie koszt w subelementach – niezgodność kosztu rzeczywistego zapisanego na pozycji dokumentu oraz na subelemencie dokumentu.
- Niezgodność, koszt księgowy przychodu w elemencie koszt w subelementach – niezgodność kosztu księgowego zapisanego na pozycji dokumentu oraz na subelemencie dokumentu.
Zgodność w transakcjach międzymagazynowych
Sprawdzana jest zgodność kosztu księgowego i rzeczywistego zapisanego na elemencie i subelemencie dokumentów przychodowych (tabele cdn.TraElem, cdn.Traselem). Porównywane są pola: TrE_KosztKsiegowy, TrE_KosztRzeczywisty, TrS_KosztKsiegowyP, TrS_KosztRzeczywistyP, TrS_KosztKsiegowyR, TrS_KosztRzeczywistyR, TrN_Stan, TrN_NettoP, TrN_NettoR Pojawiające się komunikaty:- Niezgodność, koszt księgowy różnica koszt w elemencie koszt w subelementach – niezgodność kosztu księgowego zapisanego na pozycji dokumentu oraz na subelemencie dokumentu.
- Niezgodność, koszt rzeczywisty różnica w elemencie koszt w subelementach – niezgodność kosztu rzeczywistego zapisanego na pozycji dokumentu oraz na subelemencie dokumentu.
Zgodność transakcji
Zgodność ilości dostępnej na zasobie z ilościami wynikającymi z dokumentów
Sprawdzana jest zgodność ilości dostępnej na zasobie oraz wynikająca z dokumentów zarejestrowanych w programie (Tabele cdn.TwrZasoby, cdn.TraSElem, cdn.MagSElem). Porównywane są pola: Trs_ilosc, Mas_ilosc, Twz_ilosc Pojawiające się komunikaty:- Niezgodność ilości między zasobem a wynikającą z dokumentów – Należy uruchomić funkcję specjalną Naprawa stanów towarów. Może się jednak okazać, że konieczna będzie poprawa z poziomu bazy.
Zgodność nagłówka z tabelą VAT, poprawny rejestr VAT
Sprawdza zgodność zapisanej informacji o wartości VAT na nagłówku i tabeli VAT dla dokumentów (tabele cdn.TraNag, cdn.TraVat). Porównywane są pola: TrN_NettoP, TrV_NettoP, TrN_NettoR, TrV_NettoR, TrN_VatP, TrV_VatP, TrN_VatR, TrV_VatR, TrN_VatRejestr, TrN_VatTyp Pojawiające się komunikaty:- Niezgodność nagłówka z tabelą VAT – Wartości zapisane w nagłówku dokumentu różnią się od tych zapisanych w tabeli VAT.
- Niezgodność, niezdefiniowany w systemie rejestr VAT – Wartości zapisane w nagłówku dokumentu wskazują na nieistniejący w systemie rejestr VAT.
- Niezgodność, niewypełniony rejestr VAT – na nagłówku dokumentu nie jest wybrany żaden rejestr VAT.
- Niezgodność, niepoprawny typ rejestru w nagłówku – na nagłówku dokumentu jest wybrany niepoprawny rejestr VAT.
Zgodność nagłówka z pozycjami dokumentu
Test zgodności danych zapisanych na pozycjach dokumentu i nagłówkiem (tabele cdn.TraNag, cdn.TraElem). Porównywane są pola: TrN_WartoscWal, TrE_WartoscPoRabacie, TrE_KsiegowaNetto, TrE_KsiegowaBrutto, TrN_NettoP, TrN_NettoR, TrN_VatP, TrN_VatR Pojawiające się komunikaty:- Niezgodność nagłówka z pozycjami – Suma wartości zapisanych na pozycjach dokumentu nie zgadza się z informacją zapisaną na nagłówku dokumentu.
Zgodność daty pomiędzy nagłówkiem i pozycjami
Test zgodności dat zapisanych na pozycjach dokumentu i nagłówkiem (tabele cdn.TraNag, cdn.TraElem). Porównywane są pola: TrN_DataMag , TrN_Data3, TrE_TrnTStamp Pojawiające się komunikaty:- Niezgodność nagłówka z pozycjami – Niezgodność dat zapisanych na pozycjach dokumentu z datami na nagłówku.
Zgodność z płatnościami
Test zgodności danych o płatnościach zapisanych na dokumencie i w tabeli Płatności (tabele cdn.TraNag, cdn.TraPlat). Porównywane są pola: TrN_WartoscWal, TrN_VatR, TrN_KursM, TrN_KursL, TrN_NettoP, TrN_VatP TrP_Kwota, TrP_KursM, TrP_KursL Pojawiające się komunikaty:- Niezgodność nagłówka z płatnościami – Niezgodność informacji zapisanych na nagłówku dokumentu odnośnie płatności z informacjami zapisanymi w tabeli z płatnościami.
Zgodność kontrahenta z nagłówka z kontrahentem na płatności
Test zgodności danych o kontrahencie zapisanych na dokumencie i w tabeli Płatności (tabele cdn.TraNag, cdn.TraPlat). Porównywane są pola: trp_kntnumer, trn_knpnumer Pojawiające się komunikaty:- Na dokumencie jest inny kontrahent niż na płatności – Niezgodność informacji zapisanych na dokumencie odnośnie kontrahenta z informacją zapisaną na płatności.
Poprawność płatności do spinaczy
Sprawdza czy dla płatności zapisanej w bazie istnieje spinacz który jest nią rozliczony (tabela TraPlat). Porównywane są pola: Pojawiające się komunikaty:- Niezgodność: brak spinacza na którego wskazuje płatność – W tabeli z płatności znaleziono zapis wskazujący na nieistniejący dokument.
Poprawność nagłówków spinaczy
Sprawdzana jest poprawność nagłówków spinaczy (tabela cdn.TraNag). Porównywane są pola: TrN_GID, TrN_SpiGID Pojawiające się komunikaty:- Niezgodność: brak spinacza wskazywanego przez dokument – dokument ma zapisaną informację o spinaczu który nie istnieje.
- Niezgodność: błędny spinacz wskazywany przez dokument – dokument ma zapisana błędną informację o spinaczu.
Zgodność magazynów w przesunięciach magazynowych
Sprawdzana jest zgodność magazynów na dokumentach przesunięć międzymagazynowych zapisanych na nagłówku dokumentu i na subelementach (Tabele cdn.TraNag, cdn.TraSElem). Porównywane są pola: TrS_MagGID, TrN_MagZGID, TrN_MagDGID Pojawiające się komunikaty:- Niezgodność magazynu źródłowego – na nagłówku dokumentu zapisany jest inny magazyn źródłowy niż na subelemencie.
- Niezgodność magazynu docelowego – na nagłówku dokumentu zapisany jest inny magazyn docelowy niż na subelemencie.
Poprawność wystawienia transakcji z kontrahentem jednorazowym
Sprawdzana jest poprawność transakcji z kontrahentem Jednorazowym (tabela cdn.TraNag). Porównywane są pola: Pojawiające się komunikaty:- Niepoprawnie wypełniony kontrahent jednorazowy – dokument wystawiony jest na kontrahenta jednorazowego, niepoprawnie wypełnione są pola z informacja o nim.
Zgodność wartości TrE_RzeczywistaNetto, TrE_KsiegowaNetto na dokumentach pochodzących z zamówień
Sprawdzana jest zgodność wartości rzeczywistej netto oraz wartości księgowej netto zapisanej na dokumencie handlowym pochodzącym z zamówienia oraz na zamówieniu (tabele cdn.TraNag, cdn.TraElem) Porównywane są pola: TrE_KsiegowaNetto, TrE_ RzeczywistaNetto Pojawiające się komunikaty:- Niezgodność wartości: TrE_KsiegowaNetto, TrE_RzeczywistaNetto – niezgodność pomiędzy wartością księgową netto i rzeczywistą netto.
Sprawdzenie równania Ilość*Cena = Wartość
Sprawdzana jest poprawność wyliczonej wartości na dokumentach handlowych (tabela cdn.TraElem). Porównywane są pola: TrE_Cena, TrE_Ilosc, TrE_KsiegowaNetto, TrE_KsiegowaBrutto Pojawiające się komunikaty:- Równanie ilość*cena = wartość nie jest spełnione – informacje zapisane w pozycjach dokumentu o ilości, cenie i wartości nie spełniają równania.
Zgodność dat transakcji
Transakcje z datą wyprzedzające
Sprawdzana jest poprawność dat zapisanych na pozycjach dokumentów (Tabela cdn.TraELem). Porównywane są pola: TrE_TrnTStamp Pojawiające się komunikaty:- Towar na transakcji został wystawiony z datą późniejszą niż data rzeczywista – data zapisana na pozycji dokumentu jest późniejsza niż data rzeczywista.
Transakcje z data wsteczną (antydatowane)
Sprawdzana jest poprawność dat zapisanych na pozycjach dokumentów (Tabela cdn.TraELem). Porównywane są pola: TrE_TrnTStamp Pojawiające się komunikaty:- Towar na transakcji został wystawiony z datą wcześniejszą niż data rzeczywista – data zapisana na pozycji dokumentu jest wcześniejsza niż data rzeczywista.
Transakcje przyjęcia przed datą dostawy
Sprawdzana jest poprawność dat zapisanych na nagłówkach dokumentów przychodowych oraz na związanych z nimi dostawach(tabele cdn.TraSElem, cdn.TwrDostawy) Porównywane są pola: TrS_TrNTStamp, Dst_DstTStamp Pojawiające się komunikaty:- Towar na transakcji został zakupiony z datą ze wskazaniem na dostawę która została przyjęta w dniu – data zapisana na transakcji jest wcześniejsza niż data z jaką został przyjęty zasób, wykorzystany podczas tej transakcji.
Transakcje rozchodu przed datą dostawy
Sprawdzana jest poprawność dat zapisanych na nagłówkach dokumentów rozchodowych oraz na związanych z nimi dostawach (tabele TraSElem, TwrDostawy). Porównywane są pola: TrS_TrNTStamp, Dst_DstTStamp Pojawiające się komunikaty:- Towar na transakcji został rozchodowany z datą z dostawy która została przyjęta w dniu – data zapisana na transakcji jest wcześniejsza niż data z jaką został przyjęty zasób, wykorzystany podczas tej transakcji.
Korekty wystawione przed datą oryginału
Sprawdzana jest poprawność dat na oryginale dokumentu oraz na korekcie z nim związanym (tabele cdn.TraNag, cdn.TraSElem). Porównywane są pola: TrS_TrNTStamp, TrN_DataMag Pojawiające się komunikaty:- Towar na transakcji został skorygowany z datą podczas gdy data oryginału jest późniejsza – data wystawienia korekty do dokumentu jest wcześniejszą niż data wystawienia dokumentu korygowanego.
Zgodność transakcji magazynowych z handlowymi
Zgodność ilości dostawy i magazynu
Sprawdzana jest ilość towaru wynikająca z zapisów na dostawie oraz na dokumentach magazynowych (tabel cdn.TraSElem, cdn.MagSElem). Porównywane są pola: TrS_Ilosc, Mas_Ilosc, mas_dsttyp, mas_dstnumer, trs_dsttyp, trs_dstnumer, mas_magtyp, mas_magnumer, trs_magtyp, trs_magnumer Pojawiające się komunikaty:- Niezgodność dostawy – niezgodność dostawy zapisanej na subelemencie dokumentu handlowego i subelemencie dokumentu magazynowego.
- Niezgodność magazynu – niezgodność magazynu zapisanej na subelemencie dokumentu handlowego i subelemencie dokumentu magazynowego.
- Niezgodność ilości w dokumencie – niezgodność ilości zapisanej na subelemencie dokumentu handlowego i subelemencie dokumentu magazynowego.
- Niedobór ilości w dokumencie – niezgodność ilości zapisanej na subelemencie dokumentu handlowego i subelemencie dokumentu magazynowego.
Sprawdzenie istnienia transakcji handlowej dla transakcji magazynowej
Sprawdzane jest czy dla dokumentów magazynowych które powinny zawierać dokumenty handlowe, istnieją poprawnie wygenerowane dokumenty (tabele cdn.MagSElem, cdn.TraSElem). Porównywane są pola: TrS_GIDTyp, TrS_GIDFirma , TrS_GIDNumer, TrS_GIDLp, Mas_ZrdTyp , Mas_ZrdFirma, Mas_ZrdNumer, Mas_ZrdLp Pojawiające się komunikaty:- Brak transakcji handlowej – dokument magazynowy wskazuje na nieistniejący dokument handlowy.
Zgodność transakcji magazynowych z zamówieniami
Zgodność ilości zamówienia i magazynu
Sprawdzana jest zgodność ilości zapisana na elemencie zamówienia oraz na powiązanych z nimi dokumentach magazynowych (tabele cdn.MagSElem, cdn.ZamElem). Porównywane są pola: MaS_Ilosc, ZaE_Ilosc Pojawiające się komunikaty:- Brak elementu zamówienia lub błąd przy jego odczycie – nie można sprawdzić zgodności ilości – na subelemencie dokumentu magazynowego zapisana jest niepoprawna informacja o zamówieniu.
- Niezgodność ilości w zamówieniu – niezgodność w ilości zapisanej na subelemencie dokumentu magazynowego i subelementu dokumentu zamówienia.
- Niedobór ilości w zamówieniu – niezgodność w ilości zapisanej na subelemencie dokumentu magazynowego i subelementu dokumentu zamówienia.
Zgodność dostaw
Zgodność kosztu księgowego i rzeczywistego z wartością na transakcjach zakładających
Sprawdzana jest zgodność kosztu księgowego oraz rzeczywistego pomiędzy dostawami oraz pozycjami dokumentów. (tabele cdn.TraSElem, CDN.twrdostawy). Porównywane są pola: TrS_KosztKsiegowy, TrS_KosztRzeczywisty, Dst_KsiegowaNetto, Dst_RzeczywistaNetto Pojawiające się komunikaty:- Niezgodność, Dst_GID zakładająca, data, różnica kosztu księgowego – niezgodność pomiędzy informacja o koszcie księgowym zapisanym na dostawie oraz na dokumentach zakładających tą dostawę.
- Niezgodność, Dst_GID zakładająca, data, , różnica kosztu rzeczywistego – niezgodność pomiędzy informacja o koszcie rzeczywistym zapisanym na dostawie oraz na dokumentach zakładających tą dostawę.
Istnienie dokumentów zakładających dostawy
(tabele cdn.TraSElem, cdn.TwrDostawy, CDN.ImpElem) Porównywane są pola: Trs_TrnTyp, Trs_TrnFirma, Trs_TrnNumer, Trs_TrnLp, Trs_SubGIDLp, ImE_GIDNumer, mas_gidfirma, mas_gidnumer, mas_gidtyp, mas_gidlp, mas_subgidlp Pojawiające się komunikaty:- Brak transakcji handlowej zakładającej dostaw – dostawa wskazuje na nieistniejący dokument zakładający ją.
- Brak faktury importowej zakładającej dostawę – dostawa wskazuje na nieistniejący dokument zakładający ją.
- Brak transakcji magazynowej zakładającej dostawę – dostawa wskazuje na nieistniejący dokument zakładający ją.
Zgodność inwentaryzacji
Istnienie dokumentów PW i RW inwentaryzacyjnych
Sprawdzane jest czy dla dokumentu inwentaryzacyjnego (z którego wynikają różnice w ilości towaru na magazynie) zostały wygenerowane dokumenty PW i RW (tabele cdn.InwNag, cdn.TraNag) Porównywane są pola: InN_RWTyp, Inn_RWNumer, InN_PWTyp, Inn_PWNumer, Trn_GIDTyp, TrN_GIDNumer Pojawiające się komunikaty:- Niezgodność, brak dokumentu PW inwentaryzacyjnego – na dokumencie inwentaryzacji zapisane jest wskazanie na nieistniejący dokument PW
- Niezgodność, brak dokumentu RW inwentaryzacyjnego – na dokumencie inwentaryzacji zapisane jest wskazanie na nieistniejący dokument RW
Zgodność ilości na arkuszach i dokumentach PW i RW inwentaryzacyjnych
Sprawdzane jest czy dla dokumentu inwentaryzacyjnego (z którego wynikają różnice w ilości towaru na magazynie) zostały poprawnie wygenerowane dokumenty PW i RW (tabele cdn.InwTwr, cdn.InwArkTwr, CDN.TraSElem). Porównywane są pola: INT_iloscmag, IAT_iloscinw, TrS_ilosc Pojawiające się komunikaty:- Niezgodność, brak dokumentu RW dla towaru – dokument inwentaryzacyjny wskazuje na nieistniejący dokument RW
- Niezgodność ilości na dokumencie RW – ilość wynikająca z arkusza inwentaryzacyjnego nie zgadza się z ilością zapisaną na dokumencie RW
- Niezgodność, brak dokumentu PW dla towaru – dokument inwentaryzacyjny wskazuje na nieistniejący dokument RW
- Niezgodność ilości na dokumencie PW – ilość wynikająca z arkusza inwentaryzacyjnego nie zgadza się z ilością zapisaną na dokumencie PW
Zamówienia
Zgodność rezerwacji dla zamówienia
Sprawdzane są założone rezerwacje na zamawianych towarach. Tabele biorące udział w analizie: cdn.Rezerwacje, cdn.ZamNag, cdn.ZamElem, cdn.TraNag, cdn.TraElem, cdn.TraSElem, cdn.MagNag, cdn.MagSElem, cdn.SadElem Pojawiające się komunikaty: Dokument ma ustawioną flagę Aktywny- zamówienie posiada ustawioną flagę Aktywny.- Niezgodność, <numer_dokumentu> posiada rezerwacje, mimo że jest niepotwierdzone (lub anulowane)- rezerwacja jest powiązana z zamówieniem, które posiada stan niepotwierdzone lub anulowane.
- Niezgodność, <numer_dokumentu> posiada wyprowadzone dokumenty, mimo że jest niepotwierdzone (lub anulowane)- zamówienie posiada powiązanie z dokumentami, pomimo iż jego stan jest niepotwierdzony lub anulowany.
- Niezgodność, <numer_dokumentu> ma stan potwierdzone, a ilości na pozycjach nie zgadzają się z rezerwacjami- zamówienie posiada rozbieżności między ilościami znajdującymi się na elementach zamówienia, a ilościami na rezerwacji.
- Niezgodność, <numer_dokumentu> ma stan potwierdzone, mimo że posiada wyprowadzone dokumenty- zamówienie pomimo wygenerowania dokumentów posiada stan potwierdzone.
- Niezgodność, <numer_dokumentu> ma stan w realizacji, a ilość Rez:Zrealizowano nie zgadza się z ilościami na subelementach- zamówienie posiada stan w realizacji, a ilości dotyczące zrealizowanych ilości na utworzonej rezerwacji nie zgadzają się z ilościami wskazującymi na daną rezerwacje w subelementach wygenerowanych dokumentów.
- Niezgodność, <numer_dokumentu> ma stan w realizacji, a część pozostała do realizacji nie zgadza się z ilością wynikającą z wyprowadzonych dokumentów- zamówienie posiada stan w realizacji, a ilości dotyczące pozostałych niezrealizowanych ilości na utworzonej rezerwacji nie zgadzają się z ilościami wskazującymi na daną rezerwacje w subelementach wygenerowanych dokumentów.
- Niezgodność, <numer_dokumentu> ma stan zrealizowane, mimo że istnieją do niego rezerwacje- zamówienie posiada stan zrealizowane, a mimo to w tabeli cdn.rezerwacje nadal znajdują się wpisy dotyczące rezerwacji utworzonych do zamówienia.
- Niezgodność, <numer_dokumentu> ma stan zrealizowane, mimo że istnieje wyprowadzony z niego niezatwierdzony dokument- zamówienie posiada stan zrealizowane pomimo, iż utworzone rezerwacje znajdują się na dokumentach niezatwierdzonych.
- Niezgodność, <numer_dokumentu> ma stan zrealizowane, a nie zgadzają się ilości wynikające z zamówienia i wyprowadzonych z niego dokumentów- zamówienie posiada stan zrealizowane, pomimo iż ilości wynikające z elementów na zamówieniu są rozbieżne od ilości znajdujących się na subelementach dokumentach wygenerowanych z zamówienia.
- Niezgodność, <numer_dokumentu> ma stan anulowane w realizacji, a posiada niezerowe rezerwacje- zamówienie posiada stan anulowane w realizacji, a w tabeli cdn.rezerwacje nadal znajdują się niezerowe wpisy dotyczące rezerwacji utworzonych do zamówienia.
- Niezgodność, <numer_dokumentu> ma stan anulowane w realizacji, a ilość Rez:Zrealizowano nie zgadza się z ilościami na subelementach- zamówienie ma stan anulowane w realizacji, a ilości dotyczące zrealizowanych ilości na utworzonej rezerwacji są różne od ilości wskazanymi na daną rezerwacje w subelementach wygenerowanych dokumentów.
Zgodność pozycji zamówienia z tabelą VAT
Sprawdzane jest czy nagłówek na zamówieniu (cdn.Zamnag) jest zgodny z tabelą VAT (cdn.ZamVat). Tabele biorące udział w analizie: cdn.ZamNag, cdn.ZamVat, cdn.ZamElem Możliwe komunikaty:- Niezgodność pomiędzy nagłówkiem i tabelą VAT, <NumerZamowienia>, różnica netto <różnica_netto>, stawka Vat <ZaV:StawkaPod>- zamówienie posiada rozbieżność między nagłówkiem, a tabelą VAT w zakresie wartości netto w obrębie danej stawki VAT.
- Niezgodność pomiędzy nagłówkiem i tabelą VAT, <NumerZamowienia>, różnica brutto <różnica_brutto>, stawka Vat <ZaV:StawkaPod>- zamówienie posiada rozbieżność między nagłówkiem, a tabelą VAT w zakresie wartości brutto w obrębie danej stawki VAT.
- Niepoprawnie wyliczony VAT w tabeli VAT, <NumerZamowienia>, stawka Vat <ZaV:StawkaPod>- zamówienie posiada nieprawidłowo naliczony VAT w tabeli VAT w obrębie danej stawki VAT.
Zgodność relacji stan-typ zamówienia
Sprawdzenie poprawności stanu zamówienia w zależności od jego typu. Tabele biorące udział w analizie: cdn.ZamNag Możliwe komunikaty:- Niezgodność relacji Stan-Typ zamówienia, <NumerZamowienia>, stan <ZaN:Stan>, typ <ZaN:ZamTyp>- występuje niezgodność co do stanu w odniesieniu do typu jakie posiada zamówienie.
Poprawność zamówień wewnętrznych
Sprawdzanie poprawności statusu zamówienia wewnętrznego z wystawionymi do niego dokumentami handlowymi. Jeśli do zamówienia istnieją wystawione dokumenty handlowe inne niż MMW wykazywany jest błąd. Tabele biorące udział w analizie: cdn.ZamNag, cdn.TraNag, cdn.ImpNag, cdn.MagNag Możliwe komunikaty:- Dokument ma ustawioną flagę Aktywny, <NumerZamowienia>- zamówienie posiada flagę Aktywny.
- Niezgodność: błędny typ dokumentu wyprowadzonego z zamówienia wewnętrznego <NumerZamowienia>, tabela <nazwa_tabeli>, GID <GID>- z zamówienia wewnętrznego został wygenerowany dokument handlowy innego typu niż MMW.
Zgodność ilości dla zrealizowanego zamówienia wewnętrznego
Sprawdzenie dla stanu zrealizowany, czy pokrywa się ilość towaru na takim dokumencie z sumą ilości na MMW wystawionych z niego. Tabele biorące udział w analizie: cdn.ZamNag, cdn.ZamElem, cdn.TraNag, cdn.TraElem Możliwe komunikaty:- Niezgodność ilości, ZaN:GID: <ZaN:GID>, Towar GID: <ZaE:TwrGID>, ilość towaru na zamówieniu <sum_ZaE_Ilosc>, ilość na dokumentach MMW: <sum_TrE_Ilosc>- występuje rozbieżność między ilością towaru na elemencie zamówienia, a ilością towaru na elemencie wygenerowanego dokumentu MMW.
Sprawdzenie poprawności wypełnienia nowych pól
Sprawdzenie poprawności nowo dodanych pól po wykonaniu konwersji bazy danych. Tabele biorące udział w analizie: cdn.ZamNag, cdn.Rezerwacje Możliwe komunikaty:- Niezgodność: nieprawidłowa wartość w polu: <Pole>, tabela: <Tabela>, GID: <GID>- zamówienie posiada niezgodność w określonym polu w tabeli.
SAD
Zgodność wartości dostawy SAD/FWS z FAI
Sprawdzenie dla każdej pozycji SAD czy suma kwot wartości dostawy dla tej pozycji jest równa wartości pozycji FAI, z której pochodzi. Tabele biorące udział w analizie: cdn.ImpNag, cdn.ImpElem, cdn.SadNag, cdn.SadElem, cdn.SadSElem Możliwe komunikaty:- Niezgodność w wartości towaru <towar> między <dokument_SAD> a <dokument_FAI>- występuje niezgodność między wartością fakturową elementu na dokumencie SAD, a wartością tego elementu na dokumencie FAI
- Nie znaleziono rekordu w tabeli ImpElem dla elementu <towar> na dokumencie <dokument_SAD>- towar na elemencie dokumentu SAD nie posiada odpowiedniego rekordu na elemencie dokumentu FAI , z którego został wygenerowany.
- Element <towar> na dokumencie <dokument_SAD> nie jest typu towar, produkt ani kaucja, nie można przeprowadzić testu- na elemencie dokumentu SAD znajduje się pozycja, która nie jest typu towar, produkt, ani kaucja.
Zgodność VAT’u dla dokumentów SAD
Sprawdzenie, czy suma podstawy VATu z kwot elementów SADu jest równa wartości netto z tabeli VAT (grupowanie po poszczególnych stawkach VAT), natomiast suma kwot VAT z elementów równa wartości VAT z tabeli VAT. Tabele biorące udział w analizie: cdn.SadNag, cdn.SeSKwoty, cdn.TraVat Możliwe komunikaty:- Niezgodność podstawy VAT na dokumencie <dokument_SAD>. Z elementów: <SumaVAT>, w tabeli TraVAT: <WartoscVAT>, grupa podatkowa: <Skw:GrupaPod>- występuje niezgodność podstawy VAT na dokumencie SAD wynikająca z sumy VAT elementów w obrębie danej stawki VAT.
- Niezgodność kwot VAT na dokumencie <dokument_SAD>. Z elementów: <SumaVAT>, w tabeli <WartoscVAT>, grupa podatkowa: <Skw:GrupaPod>- występuje niezgodność kwot VAT na dokumencie SAD wynikająca z sumy VAT elementów w obrębie danej stawki VAT.
Zgodność kwot na dokumentach SAD/FWS
Sprawdzenie, czy poszczególne kwoty w nagłówku SADu są równe sumom kwot elementów. Tabele biorące udział w analizie: cdn.SadNag, cdn.SadKwoty, cdn.SaEKwoty Możliwe komunikaty:- Niezgodność kwot na dokumencie <dokument_SAD>. W nagłówku: <SaK:Kwota> <Waluta>, z elementów: <SeK_Kwota> < Waluta>, test: <SaK:Nazwa>- występuje niezgodność kwot na dokumencie SAD, na nagłówku kwota nie jest zgodna z sumą kwot na elementach.
Zgodność wartości FAI z płatnościami
Sprawdzenie, czy suma wszystkich pozycji FAI równa się sumie płatności tego dokumentu. Tabele biorące udział w analizie: cdn.ImpNag, cdn.ImpElem, cdn.TraPlat Możliwe komunikaty:- Niezgodność płatności na fakturze importowej <numer_FAI>. Na dokumencie: <ImE_Wartosc> , przeliczona suma z tabeli TraPlat: <suma TrPKwota>- występuje niezgodność na płatności dokumentu FAI, suma płatności dokumentu nie jest zgodna z sumą wszystkich pozycji występujących na dokumencie.
Sprawdzenie ilości na dostawach dla faktur importowych
Sprawdzana jest zgodność pomiędzy Dostawami, a elementami Faktury importowej. Tabele biorące udział w analizie: cdn.ImpNag, cdn.ImpElem, cdn.Dostawy Możliwe komunikaty:- Niezgodność w tabeli Dostawy, GID: <Dst:GID>, Towar GID: <Dst:TwrGID>, powodem FAI-<NumerFAI>, ilość towaru w tabeli ImpElem: <ImE_Ilosc>, ilość w tabeli Dostawy: <Dst_Ilosc>- występuje niezgodność między ilością towaru znajdującą się na elemencie dokumentu FAI, a ilością w tabeli cdn.Dostawy.
Zakończenie
Systematyczne koordynowanie spójności bazy danych stanowi podstawowy warunek utrzymania poprawności danych. Testy integralności są kluczowym narzędziem pomocnym w analizie problemów zaburzających prawidłowość danych, dlatego Użytkownik Systemu powinien być świadomy faktu, że regularne ich uruchamianie i natychmiastowa reakcja na występujące problemy stanowią podstawę otrzymania rzetelnego obrazu transakcji handlowych.XL086 - e-Sklep w pytaniach i odpowiedziach
Synchronizacja z Comarch ERP XL- najczęściej zadawane pytania
Synchronizacja danych z Comarch ERP XL do Comarch e-Sklep
Błąd podczas eksportu danych: Wystąpił nieoczekiwany błąd podczas wysyłania danych:Synchronization_ImportXML 16, 1 9420: XML parsing line 26, character 9837, illegal XML character
Komunikat informuje o tym, iż w powstającym pliku XML pojawiły się znaki niedozwolone. Mogą to być np. puste znaki. Problem najczęściej występuje wskutek bezpośredniego wklejenia treści tekstowych skopiowanych np. z Internetu i niezweryfikowanych w edytorze tekstowym.
Remedium:
W takiej sytuacji należy w pliku XML odnaleźć pole zawierające problematyczny znak przy użyciu poniższej instrukcji, a następnie, z poziomu XL-a usunąć zawartość tego pola i ponownie wpisać ręcznie, bądź po weryfikacji w edytorze tekstowym.
Instrukcja weryfikacji XML-a pod kątem występowania nieprawidłowych znaków:
Wywołać procedurę CDN.Esklep_EksportTwr; w otrzymanym wyniku, pliku XML zastąpić wszystkie apostrofy jakąś literą (np. a)
tak zmodyfikowany wynik wkleić w poniższe zapytanie:
declare @xml xml
set @xml = ‘<zawartość zwrócona przez procedurę>’
select @xml
i wybrać F5.
Jeżeli wynik zapytania zwraca błąd- oznacza to, że w obrębie towarów znajdują się towary z błędnymi znakami. W celu ich odnalezienia należy analizować wynik w sposób fragmentaryczny, tj:
w celu zawężenia obszaru poszukiwań podzielić wynik na dwie równe części i każdą z nich poddać ponownej analizie przy pomocy zapytania:
declare @xml xml
set @xml = ‘<zawartość zwrócona przez procedurę>’
select @xml
Jeżeli poszczególny wynik nie zwraca błędu, oznacza to, że w danym fragmencie nie ma towarów z błędnymi znakami, Jeżeli poszczególny wynik zwraca błąd , należy ponownie postąpić wedle punktu 4)
Po odnalezieniu problematycznego towaru, należy odnaleźć pole, w którym występuje błąd. Najczęściej jest to nazwa towaru/opis. W tym celu należy usunąć zawartość pola i zweryfikować, wklejając w zapytanie podane w punkcie (4). W przypadku gdy problem jest z wartością atrybutu, należy usunąć tę wartość, a następnie ponownie wpisać ją ręcznie i wykonać synchronizacje.
Jeżeli znak nie zostanie odnaleziony przy pomocy analizy wyników CDN.ESKLEP_EksportTwr, wówczas w analogiczny sposób należy zanalizować procedurę CDN.ESKLEP_EksportGrup.
Cannot insert the value NULL into column ‘PdR_Price’, table ‘CDNeSklep_11969.CDN.Products’; column does not allow nulls. INSERT fails.
Komunikat pojawia się po stronie panelu administracyjnego w e-Sklepie i informuje o wystąpieniu jednej z dwóch poniższych sytuacji:
- na towarze/towarach wysyłanych do e-Sklepu brakuje ceny określonej na definicji oddziału jako cena aktualna. Aby zapobiec takiej sytuacji, należy przed dokonaniem eksportu do e-Sklepu dokonać weryfikacji, czy na wszystkich towarach, które mają zostać wyeksportowane znajduje się odpowiednia cena:

W przypadku, gdy na którymś z towarów brakuje ceny aktualnej, powyższa weryfikacja zwróci komunikat:

- na towarze wysyłanym do e-Sklepu ustalono cenę w walucie, która nie została zmapowana na oddziale e-Sklepu (Definicja oddziału/Waluty)
Błąd podczas dodawania atrybutów dla towaru: (Violation of PRIMARY KEY constraint ‘PK_Attachments’. Cannot insert duplicate key in object ‘CDN.Attachments’. The duplicate key value is (213)
Komunikat informuje nas o tym, iż do e-Sklepu wysyłany jest zduplikowany załącznik o ID 213.
Opis zdarzenia:|Błąd podczas eksportu danych: Wystąpił nieoczekiwany błąd podczas wysyłania danych:Synchronization_ImportProductsRelated 14, 1 2627: Violation of PRIMARY KEY constraint 'PK__#Product__DCE249BD17CE2A6B'. Cannot insert duplicate key in object 'dbo.#ProductsRelated'. The duplicate key value is (1, 5649, 8373, -2).
The statement has been terminated.|
Komunikat pojawia się po stronie loga automatycznej synchronizacji i informuje o tym, że do e-Sklepu wysyłane są zduplikowane zamienniki. W powyższym przypadku dla towaru o ID 5649 kilkukrotnie wysyłany jest zamiennik o ID 8373.
Remedium: Należy zweryfikować, czy na karcie towaru dany zamiennik znajduje się więcej, niż jeden raz.
Opis zdarzenia:|Błąd podczas eksportu danych: Wystąpił nieoczekiwany błąd podczas wysyłania danych:Synchronization_ImportProductsRelated 14, 1 2627: Violation of PRIMARY KEY constraint 'PK__#Product__DCE249BD17CE2A6B'. Cannot insert duplicate key in object 'dbo.#ProductsRelated'. The duplicate key value is (2, 5649, 8373, -2).
The statement has been terminated.|
Komunikat pojawia się po stronie loga automatycznej synchronizacji i informuje o tym, że do e-Sklepu wysyłane są zduplikowane komplety. W powyższym przypadku dla towaru o ID 5649 kilkukrotnie wysyłany jest komplet o ID 8373.
Remedium: Należy zweryfikować, czy na karcie towaru dany komplet znajduje się więcej, niż jeden raz.
Duplikacja kontrahenta o ID: 5516
Komunikat pojawia się w sytuacji, gdy do e-Sklepu wysyłanych jest wielu kontrahentów o adresie e-mail podanym na kontrahencie o ID 5516.
Remedium: Zmienić powtarzające się adresy e-mail na kontrahentach wysyłanych do e-Sklepu
Błąd podczas eksportu danych: Wystąpił błąd:[HRESULT=”0x80040e57” Description=”Wykonywanie instrukcji zostało przerwane.”HRESULT=”0x80040e57” Description=”Dane w postaci ciągu lub dane binarne zostaną obcięte.”]
Komunikat informuje o tym, iż w polach na wysyłanych towarach przekroczone zostały zakresy zmiennych dopuszczalnych w procedurach eksportujących dane do e-Sklepu.
Remedium: Najczęstszym powodem pojawiania się takiego komunikatu jest zbyt długa nazwa załączanego do synchronizacji z e-Sklepem pliku. Należy odszukać załącznik i skrócić nazwę lub też dokonać modyfikacji procedury CDN.ESKLEP_EksportTwr DABKOD zwiększając ilość znaków z 40. do 99.
Błąd podczas eksportu danych: Wystąpił nieoczekiwany błąd podczas wysyłania danych-5:CDN.Synchronization_ImportXML 16, 1 50000: Synchronizacja już trwa na innym stanowisku (Synchronization id already in progres)
Remedium: Wymagany jest kontakt z asystą e-Sklepu, Komunikat pojawi się w sytuacji, w której automat rozpoczyna synchronizacje w momencie gdy poprzednia synchronizacja jeszcze nie została zakończona lub wykonywanie ręcznej synchronizacji w momencie gdy włączony jest automat synchronizacji.
Błąd podczas eksportu danych: Błąd podczas tworzenia pliku XML:Wystąpił błąd [HRESULT=”0x80004005” Description=”Cannot continue the execution because the session is the kill state.”]
Remedium: Przyczyną może być wykonanie synchronizacji w trakcie restartu serwera
Synchronizacja danych z Comarch e-Sklep do Comarch ERP XL
Błąd podczas dodawnia zamówienia o ID=24481 - Kontrahent nie istnieje - <ZAM ID="24481" Typ="2" DataWystawienia="78941" DataWys="540386763" FormaPlID="2" FormaPl="PayU" SposobDostawy="Przesyłka kurierska [UPS] - Przelew" KosztPrzesylki="13.99" TypTransakcji="1" KodKraju="" Waluta="PLN" KntID="465" KntNazwa1="Beata Stawiarska" KntNazwa2="Marsh sp. z oo" KntNazwa3="" KntUlica="Niemcewicza" KntNrBudynek="26" KntNrLokal="66"KntKodP="02-306"KntMiasto="Warszawa" KntWojewodztwo="mazowieckie" KntNIP="" KntNIPUE=
Komunikat może świadczyć o nieprawidłowości w mapowaniu kontrahenta w Comarch ERP XL oraz w Comarch e-Sklep i tym samym braku wpisu w tabeli cdn.PicoLog, w której znajdują się powiązania GIDNumerów obiektów w bazie systemu z ID obiektów w bazie e-Sklepu.
Remedium:
W razie braku wpisu na danego kontrahenta należy wykonać update wedle poniższego wzoru:
INSERT INTO CDN.PicoLog
VALUES
(PcL_ID, ID oddziału e-Sklep, 32, GIDNumer kontrahenta w bazie systemu, KntID, null, 'Kontrahent-KntNazwa1', '', DATEDIFF(s,convert(datetime,'1990-01-01',120),'2017-02-28 15:50:09.000'))
Można również zweryfikować czy w tabeli cdn.PicoLog znajduje się wpis dla danego kontrahenta. W przypadku braku wpisu należy dodać wpis w PicoLog (po uprzednim wykonaniu backupu bazy danych) poprzez odpowiedni insert. Przy samym insercie trzeba zwrócić uwagę na 3 pola: Pcl_ObiektID - id kontrahenta w e-Sklepie PcL_Obinumer - GIDnumer kontrahenta w bazie XL PcL_PcKID – ID Oddziału esklepu (należy zwrócić uwagę czy został utworzony nowy oddział w tym czasie)
Poniżej przykładowy wpis dla kontrahenta o GIDnumerze 25, ID 17 w sklepie dla oddziału sklepu o ID 9.

Błąd podczas dodawania nagłówka zamówienia o ID=1-XLNowyDokumentZam(33) <ZAM ID=”1”Typ=”2”DataWystawienia=”77977”(…)
Komunikat zwracany przez API XLNowyDokumentZam(33) świadczy o tym, iż operator wykonujący synchronizację ręczną/zalogowany do automatu synchronizacji/zalogowany do usługi synchronizacji nie posiada uprawnień do modułu Zamówień jak również sytuację, w której operator ma uprawnienia, lecz w momencie logowania do systemu licencja na ten moduł nie był dostępna na kluczu i nie została pobrana.
Remedium: Należy zaznaczyć moduł Zamówienia na operatorze, opcjonalnie przelogować moduł Administratora Oddziałów. Jeżeli operator posiada zaznaczony moduł Zamówień, należy zweryfikować czy na kluczu znajduje się wolna licencja.
Błąd podczas dodawania kontrahenta ESKL2_19 – NowyKontrahentSQL(61) - <KNT ID=”19” GIDNumer=”-1”(…)
Komunikat zwracany przez API NowyKontrahentSQL(61) zwracany jest w przypadku utraty sesji na operatorze wykonującym synchronizację ręczną/zalogowanym do automatu lub usługi.
Remedium: Należy ponownie zalogować operatora poprzez ponowne uruchomienie CDNSynchro bądź Administratora Oddziałów.
Błąd podczas dodawania nagłówka zamówienia o ID=605 – XLNowyDokumentZam(51) <ZAM ID=”605”Typ=”2”(…)
Komunikat zwracany przez API XLNowyDokumentZam(51) zwracany jest w przypadku gdy do systemu próbuje się zaimportować zamówienie złożone na kontrahenta archiwalnego.
Remedium: Odznaczyć archiwalność kontrahenta w celu wczytania dokumentu.
Błąd podczas dodawnia nagłówka zamówienia o ID=68 - XLNowyDokumentZam(2) <ZAM ID="68" Typ="1" DataWystawienia="78972" DataWys="543072806" FormaPlID="3" FormaPl="Przelew bankowy" SposobDostawy="Przesyłka kurierska" KosztPrzesylki="20.00" TypTransakcji="1" KodKraju="" Waluta="PLN" KntID="541" KntNazwa1="Aflofarm Farmacja Polska" KntNazwa2="" KntNazwa3="" KntUlica="Partyzancka" KntNrBudynek="133" KntNrLokal="151/" KntKodP="95-200" KntMiasto="Pabianice" KntWojewodztwo="łódzkie" KntNIP="7311821205" KntNIPUE=""
Komunikat może być powiązany z komunikatem NowyAdres(2) oznaczającym- Wystąpił błąd przy próbie zablokowania tabel dla wykonania transakcji.
Problem występuje podczas insertu na bazę danych podczas importu z e-Sklepu. Przyczyna: brak uprawnień użytkowników od strony serwera SQL bądź dodatkowe rozwiązania.
Błąd podczas dodawnia nagłówka zamówienia o ID=15250 BŁĘDY [Brak praw do dokumentu. (NowyDokumentZam-41)
Rozwiązaniem problemu może być wykonanie update na bazie:
Update cdn.konfig set kon_wartosc=0 where kon_numer=-143.
Błąd podczas importu danych – Procedura CDN.XLNowaReklamacja zwróciła błąd nr 3
Remedium: Numer 3 wskazuje na brak dokumentu reklamowanego lub towaru. Należy wykonać zmianę statusu reklamacji w panelu administracyjnym e-Sklepu oraz ponowić synchronizację.
Błąd. Błąd podczas dodawania towaru: Niepoprawna struktura danych – niepoprawny status dostępności towaruKomunikat świadczy o braku lub niepoprawności ustawienia statusu dostępności w systemie ERP. Przykładowo: na kartotece towarowej w systemie ERP XL na zakładce Aplikacje jest ustawiony status: Dostępny, natomiast status dostępności pozostaje pusty.
Dodatkowo dla masowej zmiany wartości wskazanych ustawień na karcie towaru można wykorzystać update na bazie danych, wskazaną zmianę należy w pierwszej kolejności wykonać na kopi zapasowej bazy danych. (obinumertowaru należy podstawić gidnumer karty towarowej, możliwe wartości dla kolumn TAP_status oraz TAP_Dostepnosc zostały opisane w dokumentacji tabel)Synchronization_ImportBinaryData Dane binarne zawierają dane skompresowane, skontaktuj się z Asystą Comarch ERP
W przypadku komunikatu o skompresowanych danych należy zweryfikować czy dla załącznika pola DAB_TypId=326 (typ obraz) w tabeli ERP XL cdn.danebinarne oraz czy DAB_Rozmiar=0 w tej samej tabeli. Jeśli DAB_Rozmiar jest różny od 0 należy zmienić ustawienia dla typu załącznika obraz zgodnie ze zrzutem, następnie usunąć załącznik i dodać ponownie.
Po dokonanych zmianach należy dokonać pełnej synchronizacji. Dodatkowo dla optymalizacji załączników można skorzystać za aplikacji poprawiającej załączniki. Pod wskazanym adresem znajduje się opis oraz instrukcja dla aplikacji:
https://spolecznosc.comarch.pl/index.php/viewpost/post28780/Obrazki-w-Comarch-e-Sklep-Comarch-B2B-ERPProblemy techniczne
Komunikaty związane z wystąpieniem Timeout podczas automatycznej synchronizacji danych mogą być związane ze zbyt dużą ilością danych, które system próbuje wysłać w zbyt krótkim czasie. W takiej sytuacji należy zweryfikować, jaki typ synchronizacji cennika został wybrany na definicji oddziału. W razie wystąpienia problemu należy wybrać eksport różnicowy:

Pomimo prawidłowo zdefiniowanej usługi synchronizacji dla oddziału e-Sklepu synchronizacja danych nie wykonuje się.
Remedium: Należy zweryfikować, czy w zmiennej środowiskowej %PATH% podano ścieżkę do jednej tylko, aktualnie zainstalowanej wersji XL-a, w której baza współpracuje z aplikacją Comarch ERP e-Sklep.
Najczęściej zadawane pytania
Czy można zasilić Comarch e-Sklep innym sposobem, niż synchronizacja z systemem ERP?
Comarch e-Sklep można zasilić wyłącznie poprzez synchronizację z systemem ERP tj. XL, Altum, Optima, XT oraz Enterprise. W przyszłości planowane jest również funkcjonowanie e-Sklepu jako standalone.
Synchronizacja z Comarch e-Sklep przebiega bezbłędnie, jednak po stronie e-Sklepu nie widać żadnych towarów.
Należy zweryfikować, czy na towarach, które mają być wysyłane do e-Sklepu zaznaczono parametr dostępności w aplikacji. Ponadto grupa wybrana na oddziale e-Sklepu musi posiadać podgrupy towarowe.
W jaki sposób uruchomić synchronizację automatyczną z e-Sklepem?
W celu uruchomienia synchronizacji automatycznej należy na oddziale e-Sklepu zaznaczyć parametr Synchronizacja automatyczna oraz z poziomu katalogu XL-a uruchomić komponent CDNSynchro.
W jaki sposób uruchomić synchronizację z e-Sklepem przy pomocy usługi?
W celu uruchomienia synchronizacji przy pomocy usługi należy na oddziale e-Sklepu zaznaczyć parametr Synchronizuj z wykorzystaniem usługi. Należy ponadto zdefiniować odpowiednią usługę z poziomu Administratora oddziałów.
Na definicji załącznika został zaznaczony parametr dostępności w e-Sklepie. Na karcie towarowej, w zakładce Załączniki również został zaznaczony parametr dostępności w e-Sklepie dla danego załącznika. Mimo to zdjęcie główne nie jest wysyłane do e-Sklepu.
Należy zweryfikować jaką pozycję na liście załączników przypiętych do towaru zajmuje to zdjęcie. Jako zdjęcie główne wysyłane jest pierwsze zdjęcie z listy załączników.
W jaki sposób prawidłowo udostępnić załącznik towaru do e-Sklepu?
Załącznik dodajemy na karcie towarowej, w zakładce załączniki, wykorzystując przycisk import z pliku , załącznik musi spełnić wymagania co do rozmiaru, typu pliku oraz wymiarów. Dostępność w e-Sklepie zatwierdzamy poprzez zaznaczenie na zakładce Ogólne załącznika przycisku e-Sklep. Jeżeli przycisk nie był zaznaczony a wykonaliśmy synchronizację, ważne jest również aby upewnić się, że dostępność e-sklep jest także zaznaczona w zakładce Obiekty.
XL009 - Atrybuty
Wstęp
Atrybuty stanowią dodatkowy opis kontrahentów, transakcji, dokumentów i innych obiektów rejestrowanych w systemie Comarch ERP XL. Dzięki temu są znakomitym narzędziem służącym dokładnemu zdefiniowaniu obiektów i wyróżnieniu ich spośród wielu innych znajdujących się w systemie, a to sprzyja analizie tych obiektów. Dzięki mechanizmowi kopiowania atrybutów funkcjonalność ta ma bardzo szerokie zastosowanie niezależnie od dziedziny jaką zajmuje się firma.
Poniżej przedstawiono podstawowe informacje odnośnie atrybutów oraz opis funkcjonalności związanych z ich działaniem w systemie.
Atrybuty definiuje się w module Administrator/Narzędzia/Atrybuty. Najpierw definiuje się klasy atrybutów, a następnie można (ale nie jest to wymagane) przypisać wartość dla takiej klasy. Ponadto klasy atrybutów mogą być grupowane. W sytuacji, gdy jest kilka klas atrybutów, którymi można opisać dany obiekt, wtedy zamiast przypisywać kolejno klasy do obiektu, można przypisać daną grupę, obejmującą wymagane klasy.
Definiowanie atrybutów
-
Okno: Definicja atrybutów.
Na wszystkich obiektach, na których znajdują się atrybuty, klasy atrybutów wyświetlane są w lewej części okna, natomiast wartości atrybutów w prawej. Aby mogły być wykorzystane na poszczególnych obiektach, należy je do nich przypisać. Odbywa się to w oknie: Definicja atrybutów, na zakładce Obiekty. Jedna klasa atrybutu może być dodawana do kilku obiektów.
Od wersji 2017.0 Systemu Comarch ERP XL na zakładce Atrybuty dostępnej dla danego obiektu czy dokumentu wyświetlany jest dodatkowy panel prezentujący listę grup, do których przypisane są klasy atrybutów dodane do tego obiektu lub dokumentu. Jeżeli dla danego obiektu dodana zostanie klasa atrybutu, wówczas po lewej stronie automatycznie zostanie wyświetlona nazwa grupy, do której ta klasa jest przypisana, nie ma tu znaczenia czy dana grupa atrybutów jest powiązana z danym rodzajem obiektu, czy nie.
Klasa atrybutu ‘data ‘przypisana jest do obiektu [Towary].[Wzorce towarowe].[Towar] i jednocześnie do grupy atrybutów ‘Właściwości’ i ‘Ważne do’. Grupa ta nie jest przypisana do obiektu [Towary].[Wzorce towarowe].[Towar]. Atrybut na obiekcie docelowym [Towar] prezentowany jest jak poniżej mimo że grupy ‘Właściwości’ i ‘Ważne do’ nie są bezpośrednio związane z obiektem [Towar], są prezentowane z uwagi na to, że klasa atrybutu ‘data’ została do nich przypisana.

Jeżeli klasa atrybutu jest przypisana do kilku grup, wówczas zostanie wyświetlona w kontekście każdej grupy, zawsze z jedną przypisaną jej wartością. Jeżeli jednak klasa atrybutu nie jest przypisana do żadnej grupy, będzie prezentowana tylko w kontekście wszystkich atrybutów (grupa Wszystkie).
Listę klas atrybutów można wyświetlać zbiorczo (grupa Wszystkie) oraz po zawężeniu do danej grupy. Użytkownicy nie korzystający z grup atrybutów mogą ukryć nowo dodany panel tak, aby zachowany był dotychczasowy widok zakładki Atrybuty.
Obiekty jako atrybuty
System ERP XL umożliwia przypisanie do wybranych obiektów atrybutów w postaci innych obiektów. np.: kontrahenta, towaru, pracownika, konta, noty memoriałowej, środków trwałych, dokumentu (handlowego, magazynowego, importowego), zamówienia, oferty, zlecenia (produkcyjnego, kompletacji, dekompletacji, serwisowego, remontowego), technologii, danych binarnych bądź do obiektu wskazanego zapytaniem SQL’owym.
Typy atrybutów
Typ atrybutów można wybrać spośród listy rozwijalnej – jest do wyboru typ: tekst, flaga, liczba, lista, adres URL, SQL (SQL Obiektowy – przy jego pomocy zapisywana jest do tabeli Atrybuty nie tylko informacja typu tekstowego (Atr_Wartosc), ale także wskazanie na dowolny obiekt XLowy (czyli wypełnienie pól Atr_OBIGID)) oraz wszystkie te, które zostały wymienione w poprzednim pkt. Poza tym wśród najważniejszych zmian w tym zakresie należy wymienić: przypisanie do obiektu atrybutu, który jest innym obiektem – prezentuje to poniższy przykład:Zarejestrowano kartę towaru. Towar ma charakter zabytkowy i wymaga opieki konserwatora. Ze względu na unikalność towaru i niezbędną specjalizację konserwatora, zachodzi potrzeba wskazania dla towaru podmiotu, który może dokonywać odpowiednich czynności. W tym celu należy:
– Zdefiniować klasę atrybutu: Konserwator (moduł Administrator, okno Definicja atrybutów, zakładka Klasa atrybutów), typ Kontrahent
– Przypisać klasę atrybutu do obiektu: Towar (moduł Administrator, okno Definicja atrybutów, zakładka Obiekty)
– Na karcie towaru (o charakterze zabytkowym), na zakładce Atrybuty, przypisać klasę atrybutu: Konserwator i po naciśnięciu przycisku: wybrać wartość – nazwę/nazwisko konserwatora (kontrahenta).
W ten sposób dla obiektu: towar, zostanie przypisany atrybut, który również jest obiektem (kontrahent).
Format atrybutu
Atrybuty mogą być zdefiniowane w wybranym przez Użytkownika formacie. Dostępne są warianty:
- Tekst – atrybut, którego wartość będzie wyrażona dowolnym tekstem 256 – znakowym
- Data – atrybut, którego wartość będzie wyrażona jako data w kolejności: rok – miesiąc – dzień/dzień - miesiąc - rok
- 1234 – atrybut, którego wartość będzie wyrażona jako liczba całkowita
- 1234.56 – atrybut, którego wartość będzie wyrażona jako liczba z dwoma miejscami po przecinku
- 1234,5678 – atrybut, którego wartość będzie wyrażona jako liczba z czterema miejscami po przecinku
- (*) Zaawansowany – po wybraniu tego formatu, do edycji zostanie udostępnione pole dla opisywania atrybutów w formacie clarionowym. (Wybranie jednego z wyżej wymienionych formatów spowoduje wypełnienie tego pola wartością domyślną, niedostępną do edycji). Format: Zaawansowany, sprzyja dużej elastyczności atrybutu, który może zostać określony wartościami przydatnymi dla konkretnego Użytkownika.
Postać, w jakiej będzie wyrażony atrybut, będzie zależała od wybranego formatu. Poniżej przedstawiono przykład przypisania do obiektu: Kontrahent, atrybutu w formacie: Data.
Dla obiektu: Kontrahent, przypisano atrybut o nazwie ''DATA''. Atrybut ten jest zdefiniowany w formacie: Data.
-
Atrybut w formacie: Data.
Po przypisaniu do kontrahenta klasy atrybutu:'' DATA'', w kolumnie: Wartość atrybutu, możliwe będzie wpisanie jedynie daty w polach: dzień - miesiąc – rok

Lista wartości atrybutów
Klasie atrybutu może zostać przyporządkowana lista wartości, które będą określały konkretny obiekt. Lista ta może mieć charakter:
- zamknięty
- otwarty
Zamknięty charakter listy oznacza, że na obiekcie możliwy będzie wybór wartości atrybutu jedynie ze zdefiniowanej uprzednio listy. Uniemożliwi on określenie wartości w ramach klasy atrybutu, poprzez jej zdefiniowanie na obiekcie.
Jeżeli lista wartości ma charakter otwarty, wtedy po przypisaniu klasy atrybutu do obiektu możliwe będzie nadanie jakiejkolwiek wartości do przypisanej klasy.
Stosowanie listy zamkniętej ma zastosowanie w sytuacji, gdy wartości dla klasy danego atrybutu mają charakter ściśle określony, wyznaczony np. normami ustalonymi przez regulamin firmy. Zastosowanie wtedy listy zamkniętej, uchroni przed wprowadzeniem ewentualnych błędnych zapisów na obiekcie.
Lista otwarta będzie miała zastosowanie bardziej powszechne, umożliwiając opisanie obiektu w sposób szczegółowy, w odniesieniu do konkretnej sytuacji, okoliczności itp. Wskazane jest, aby tam, gdzie nie jest to konieczne, nie stosować listy zamkniętej, gdyż może to ograniczyć funkcjonalność atrybutów.
Aby lista wartości atrybutów miała charakter zamknięty, należy w definicji klasy atrybutu zaznaczyć parametr: Lista zamknięta, który zostanie uaktywniony po wybraniu typu atrybutu: Lista.
Wartości dla takiego atrybutu określa się w oknie: Definicja atrybutów, na zakładce: Klasy atrybutów, po naciśnięciu przycisku: [Dodaj wartość.]
Atrybuty wielowartościowe
Zdarzają się sytuacje, gdzie dany atrybut może przyjmować wiele wartości. Można wtedy wykorzystać opcję: Wielowartościowy. Jeśli zostanie określony typ jako Lista, wtedy można obsłużyć np. sytuację taką, że chcemy zapisywać odbyte przez pracownika szkolenia. W przypadku, gdy oferta szkoleniowa jest szeroka, trudno dla każdego z dostępnych szkoleń definiować osobną klasę atrybutu i określać jego wartość jako „tak” lub „nie”. W takim przypadku najlepszym rozwiązaniem jest postąpić następująco:
- założyć klasę atrybutu „szkolenia”
- określić typ Lista (może być w szczególnym przypadku listą zamkniętą)
- zaznaczyć opcję: Wielowartościowy
- dodać wartości tego atrybutu – nazwy szkoleń
- atrybut ten dołączyć do obiektu Pracownicy
Na pracowniku będzie można wybrać spośród całej listy szkoleń, te w których on uczestniczył.
-
Atrybut typu lista – zamknięta, wielowartościowy.
-
Wybór wartości atrybutu spośród zdefiniowanej listy.
Atrybuty okresowe
Zaznaczając na klasie atrybutu parametr: Okresowy, uzyskamy taką sytuację, że na obiekcie, do którego jest dodany ten atrybut, będzie można określić kilka wartości atrybutu w danych okresach czasu. Przy czym kontrolowane jest, aby zakresy dat były rozdzielne.
Wartość domyślna atrybutów
Definiując klasę atrybutu można ustalić jego wartość domyślną. Wartość ta będzie podpowiadana za każdym razem, gdy wybrany atrybut będzie przypisywany do danego obiektu. Możliwa jest modyfikacja wartości tego atrybutu.
Wartość dla operacji wsadowych
Wartość dla operacji wsadowych jest niezbędna przy atrybutach wymaganych (więcej informacji w rozdziale: Atrybuty wymagane).
Wartość wsadowa jest wprowadzana wszędzie tam, gdzie program nie będzie mógł wymusić wprowadzenia wartości dla atrybutu, a atrybut ten będzie wymagany.
W odróżnieniu od powyższej sytuacji, wygenerowanie faktury ręcznie spowoduje, że na element faktury zostanie przypisany atrybut wymagany ze „zwykłą” wartością domyślną.
Zestaw znaków dla atrybutów
Wartość atrybutu może być wyrażona w jednym ze zdefiniowanych w systemie zestawu znaków. Wybór zestawu znaków jest możliwy, jeżeli wybrano typ atrybutu:
- Tekst
- Lista
- SQL
- SQL obiektowy
- Adres URL
Zestaw znaków wskazuje alfabet, w jakim określona będzie wartość atrybutów. Funkcja ta może być wykorzystana np. w sytuacjach, gdy dokonywane są transakcje międzynarodowe lub obrót towarami pochodzenia zagranicznego. Umożliwiają określenie cech, zdefiniowanych przez producenta danego towaru, które z różnych przyczyn nie mogą zostać przetłumaczone bezpośrednio na język polski (np. oznaczenie modelu danego towaru).
Należy zwrócić uwagę, aby przy wyborze danego zestawu znaków, została odpowiednio skonfigurowana klawiatura, co umożliwi wykorzystanie wybranych w atrybucie znaków.
Atrybuty wymagane
Obiekty w ERP XL mają pola wymagane i opcjonalne. Wypełnienie pól wymaganych jest niezbędne dla zarejestrowania danego obiektu w systemie. Pola wymagane są zdefiniowane w systemie i ta ich cecha nie podlega modyfikacji przez Użytkownika. Użytkownik może jednak zdefiniować dodatkową cechę na wybranych obiektach, która będzie musiała zostać określona, aby można było zarejestrować ten obiekt. Cechami takimi są atrybuty.
Dla obiektu: Kontrahent, ma być zawsze określana branża, w jakiej ma on specjalizację. Branżę taką określać może atrybut: Branża, zdefiniowany przez Użytkownika. Dla pewności, że branża kontrahenta będzie zawsze określana przy jego rejestracji, należy nadać temu atrybutowi cechę wymagalności. Dzięki temu nie będzie możliwe zapisanie karty kontrahenta bez wskazania jego branży. Aby atrybuty były wymagane, należy w definicji klasy atrybutu:
- zaznaczyć parametr: Wymagany,
- zaznaczyć parametr: Automat, co spowoduje, że atrybut zostanie automatycznie przypisany do obiektu podczas dodawania nowego obiektu,
- w polu: Dla operacji wsadowych, wpisać wartość klasy atrybutu dla operacji wsadowych. Niemożliwe będzie zapisanie klasy atrybutu (wymaganej), która nie będzie miała wprowadzonej tej wartości (zostanie wyświetlony odpowiedni komunikat).
-
Atrybut z zaznaczonym parametrem Wymagany.
Atrybut wymagany odznacza się następującymi cechami:
- Przypisanie klasy atrybutu z zaznaczonym parametrem: Wymagany, do wybranego obiektu, spowoduje, że atrybut ten będzie wymagany, przy rejestrowaniu obiektu (zapisywaniu), do którego został on przypisany.
- Nie jest możliwe usunięcie atrybutu wymaganego z obiektu z zaznaczonym parametrem Automat, do którego został przypisany.
Atrybut wymagany, na liście atrybutów oraz na wybranym obiekcie będzie wyświetlony w kolorze czerwonym
-
Przypisany do obiektu atrybut wymagany.
Atrybuty Business Intelligence
Atrybut Business Intelligence to taki, który na definicji ma zaznaczone pole: BI. Na podstawie tych atrybutów, DTS - y będą konstruować wymiary analityczne, w oparciu o które, możliwe będzie tworzenie raportów i analizowanie danych na podstawie tych atrybutów.
Atrybuty historyczne
Atrybut historyczny, to atrybut z zaznaczonym parametrem: Historia. Zaznaczony parametr umożliwia podgląd historycznych wartości atrybutów przypisanych do obiektów. Jeżeli do obiektu przypisano atrybut historyczny: A z wartością: a, a następnie (po zapisaniu i ponownej edycji) zmieniono jego wartość na: b, wtedy, możliwe jest wybranie z menu kontekstowego, otwieranego prawym przyciskiem myszy funkcji:
- Historia atrybutu lub
- Historia atrybutu obiektu.
Parametr klasy atrybutu dla wskazanego typu obiektu
Niektóre parametry, uległy rozdzieleniu. Jeden atrybut może być przypięty do kilku obiektów. Można określić, dla którego obiektu jakie ustawienia mają obowiązywać. Lista opcji poniżej:
- Wymagany
- Automat
- Tylko do odczytu
Dopuszczalna może być sytuacja, że parametry na typie obiektu będą inne niż na samej klasie atrybutu.
Okno otwierane z poziomu klasy atrybutu przypiętej do obiektu zawiera wspomniane wyżej parametry zaprezentowane w sposób podobny jak poniżej: Opcja Wymagany/Automat/Tylko do odczytu jest nieaktywna, jeżeli jest zaznaczone radio wg klasy atrybuty – oznacza to, że ta opcja jest „dziedziczona” z klasy atrybutu.
-
Parametry klasy atrybutu dla wskazanego typu obiektu.
Zakładka Tłumaczenia
Ideą zakładki tłumaczenia jest przedstawienie Nazwy i Opisu danej Klasy atrybut w dowolnym języku obcym wybieranym ze składnika kategorii.
-
Klasa atrybutu, zakładka Tłumaczenie.
Aby nazwę i opis Klasy atrybutu móc pisać w obcym alfabecie np. rosyjskim należy na karcie Operatora zaznaczyć parametr: Przełączanie wersji językowej. Dalsze wykorzystanie informacji zapisanych na zakładce Tłumaczenia będzie w aplikacjach web’owych np. Pulpicie kontrahenta.
Wyszukiwanie zasobów wg atrybutów
Udostępniona została możliwość filtrowania istniejących zasobów według wartości atrybutów. W tym celu, w oknie zasobu został dodany obszar z nazwą Klasy i Wartością atrybutu, które odpowiednio wypełnione mogą stanowić parametr filtrujący dostępne zasoby.
Zasoby mogą być wyszukiwane wg klasy atrybutów przypisanych do obiektu Dostawa. Po otwarciu listy zasobów, automatycznie zostają wyświetlone Klasy atrybutów, dla których jako obiekt docelowy została wskazana Dostawa. Aby wyszukać zasób, należy dla Klasy atrybutu wskazać odpowiednią wartość i użyć przycisku [Ogranicz do wskazanej cechy].Konfiguracja ustawień dostępności do atrybutów
W definicji klasy atrybutu została dodana nowa zakładka {Dostępność} pozwalająca ograniczyć listę operatorów do tych, dla których dostępna będzie dana klasa atrybutu. Możliwe jest określenie praw dostępu odrębnie w zakresie możliwości wprowadzania wartości dla klasy atrybutu (parametr Wprowadzenie) oraz edycji/zmiany tej wartości (parametr Zmiana).
-
Zakładka Dostępność w definicji klasy atrybutu
Na zakładce Dostępność możliwe jest:
- Przypisywanie operatorów – za pomocą przycisku Dołącz operatora można przypisać wybranego operatora lub wielu operatorów jednocześnie.
- Odłączanie – za pomocą przycisku Odłącz operatora można odłączyć wybranego operatora lub wielu operatorów jednocześnie (operacja dla zaznaczonych).
- jeśli parametr zaznaczony, wówczas parametr Zmiana jest niezaznaczony i nieaktywny,
- jeśli parametr niezaznaczony, wówczas parametr Zmiana jest zaznaczony i aktywny (możliwość zmiany ustawienia).
Analogiczne ustawienie pojawiło się na grupie klas atrybutów. Oznacza ono jedynie wzorzec dla klas atrybutów dodawanych do tej grupy, czyli nie decyduje bezpośrednio o widoczności danej grupy dla konkretnego operatora. Podczas przypisywania klasy atrybutów do grupy, dla której lista Dostępność nie jest pusta, można dokonać przeniesienia ustawień dostępności z grupy do przypisywanej klasy (lub klas) atrybutów – wybór należy do użytkownika. Analogiczną operację można wykonać z poziomy listy Grupy klas atrybutów, za pomocą przycisku pioruna ‘Przypisz uprawnienia do atrybutów’ dostępnego pod listą. W przypadku, gdy na grupie nie ma ustawionych żadnych operatorów zostanie wyświetlony komunikat:
-
Komunikat pojawiający się w przypadku, gdy na grupie nie ma ustawionych żadnych operatorów i wybrano opcję ‘Przypisz uprawnienia do atrybutów’.
Dopiero wybranie odpowiedzi TAK pozwoli na wykasowanie operatorów z listy powiązanych klas atrybutów.
-
Przypisywanie uprawnień do atrybutów na podstawie grup.
Ograniczenie dostępności atrybutów jest możliwe również z poziomu karty operatora, poprzez dopisanie na zakładce Uprawnienia do atrybutów konkretnych klas atrybutów. A następnie określenie dostępu w zakresie wprowadzenia lub zmiany.
-
Karta operatora, zakładka Uprawnienia do atrybutów.
Dane wprowadzone na klasie atrybutu mają automatycznie odzwierciedlenie na karcie operatora i odwrotnie. Również na karcie wzorca operatora można dopisywać uprawnień do klas atrybutów, które następnie przenoszone są na karty operatorów przypisanych do tego wzorca. Działanie zgodne ze standardem pozwala na pobieranie danych z wzorca podczas dodawania nowych operatorów lub aktualizacji istniejących.
Od wersji 2018.2 Comarch ERP XL na zakładce uprawnienia do atrybutów:
- dodano panel z listą grup, do których są przypisane wybrane klasy atrybutów
- umożliwiono dodawanie własnych kolumn
- dodano możliwość sortowania listy po kliknięciu na nagłówek kolumny (domyślne sortowanie po nazwie klasy atrybutu)
- dodano obsługę lokatora
Prezentowana jest data ostatniej modyfikacji dla powiązania klasy atrybutu z operatorem. Data jest widoczna w osobnej kolumnie Data modyfikacji na zakładkach [Dostępność na klasie atrybutu] oraz [Uprawnienia do atrybutów] na karcie wzorcu/operatora.
Podczas dodawania nowego atrybutu na zakładce [Uprawnienia do atrybutów] na karcie operatora oraz na wzorcu operatora, na wołanej spod plusa liście wyświetlane są tylko te klasy atrybutów, które nie są jeszcze przypisane do operatora. Dodatkowo kolorem zielonym wyróżniane są te klasy atrybutów, które zostały dodane do bazy po dacie ostatniej zmiany na tej liście.
Dostęp do atrybutów dla uprawnionych operatorów
Dostęp do atrybutu na obiekcie będzie możliwy, jeśli w definicji klasy atrybutu:
- Nie został dodany żaden operator ani centrum praw – co oznacza, że jest on dostępny dla wszystkich operatorów.
- Został dodany konkretny operator/operatorzy – wtedy tylko oni mają dostęp do tej klasy
Tryb dostępu do wartości klasy atrybutów na obiekcie zależny jest od ustawienia dostępności:
- Wartość dostępna do edycji, jeśli:
- klasa nie ma przypisanej wartości i w nowej tabeli parametr Wprowadzenie jest zaznaczony,
- klasa ma przypisaną wartość i w nowej tabeli parametr Zmiana jest zaznaczony
- Wartość dostępna do Podglądu, jeśli:
- klasa nie ma przypisanej wartości i w nowej tabeli parametr Wprowadzenie jest niezaznaczony.
- klasa ma przypisaną wartość i w nowej tabeli parametr Zmiana jest niezaznaczony
Również dodawanie klas atrybutów do obiektów jest uzależnione od nowych uprawnień dostępu. Jeśli dana klasa atrybutu nie ma w definicji przypisanych operatorów, wówczas będzie traktowana na dotychczasowych zasadach, czyli będzie możliwa do dodania przez każdego operatora. Natomiast jeśli w definicji klasy są przypisani operatorzy, wówczas tylko oni będą mieli możliwość przypisywania nowych klas na zakładkach Atrybuty poszczególnych obiektów. Tak samo działa to dla atrybutów dodawanych automatycznie (parametr Automat w definicji klasy) – będą dodawane do nowych obiektów tylko pod warunkiem, że operator dodający te obiekty ma do nich uprawnienia. Również w trakcie wykonywania operacji Seryjna zmiana wartości atrybutów na dekretach (z poziomu zakładki Konto), przy opcji Dodaj lista atrybutów zostanie zawężona do tych, do których operator ma uprawnienia.
Wyjątek stanowią natomiast wartości domyślne ustawione na klasie atrybutu. Niezależnie od uprawnień operatora do wprowadzania wartości dla atrybutów, są one zawsze automatycznie przypisywane do atrybutu. Dotyczy to również wartości domyślnej dla operacji wsadowych.
Operacje kopiowania atrybutów pozostają bez zmian, czyli kopiowanie pomiędzy różnymi obiektami nie sprawdza uprawnień operatora do kopiowanej klasy atrybutu. Kontrola odbywa się jedynie przy wyświetlaniu listy klas przypisanych do obiektu. Skutkuje to tym, że nawet jeśli klasa, do której operator nie ma uprawnienia, zostanie dodana do obiektu, to operator ten nie będzie jej widział.
Ustawienie na karcie klasy atrybutu może być zupełnie inne niż na grupie klas, dlatego wyświetlając atrybuty na karcie obiektu widoczność grup zostaje ograniczona do tych, w których operator ma dostępny chociaż jeden atrybut. Ustawienie na grupie atrybutów nie będzie więc decydowało o tym, czy grupa jest widoczna na karcie obiektu, czy nie.
Kopiowanie atrybutów
W ramach funkcjonalności kopiowania atrybutów udostępniony został mechanizmy do definiowania powiązań pomiędzy kopiowanymi obiektami, z możliwością określania warunków, kiedy takie kopiowanie ma nastąpić.
W oknie: Definicja atrybutów, z poziomu zakładki: Kopiowanie atrybutów, po naciśnięciu przycisku: , zostanie otworzone okno: Klasa atrybutu dla obiektu - klasa atrybutu wpięta do tego obiektu i podświetlona w czasie naciśnięcia przycisku. Na taj właśnie formatce ustawia się warunki kopiowania.
Aby było możliwe określenie źródła i akcji trzeba zaznaczyć parametr: Zaawansowane. Warunki:
- Źródło – kontrolka z przyciskiem. W kontrolce wyświetlana informacja o źródle pochodzenia atrybutu, jeśli wartość jest pusta – to atrybut dodawany na obiekt będzie z ręki. Naciśnięcie przycisku obok kontrolki otwierać będzie listę z odfiltrowanymi obiektami źródłowymi, z możliwością ich wyboru
- Akcja – kontrolka z listą rozwijalną umożliwia wybór akcji inicjującej kopiowanie z predefiniowanego słownika.
Akcje
Kopiowanie atrybutów może mieć miejsce:- W czasie dodawania nowego obiektu.
- W czasie zapisu lub odczytu obiektu.
W szczególnym przypadku za pomocą tego mechanizmu można zrealizować funkcjonalność atrybutów wyliczanych.
- W innych wybranych miejscach aplikacji.
Należy zwrócić uwagę, że powyższa funkcjonalność umożliwia realizację (przynajmniej częściowo) „atrybutów wyliczanych” – zapis, odczyt może wymusić ponowne wyliczenie wartości atrybutu.
Źródła
Rejestracja powiązań pomiędzy kopiowanymi obiektami odbywa się z poziomu obiektu, do którego będzie kopiowanie (CEL), poprzez wskazanie jaką klasę atrybutu, skąd (z którego obiektu) należy przepisać (ŹRÓDŁO).
-
Klasa atrybutu dla obiektu.
Lista dostępnych obiektów, z których można kopiować (ŹRÓDŁO) jest predefiniowana i kontekstowa (zależna od rodzaju obiektu, do którego chcemy atrybut skopiować).
Lista powiązań między obiektem źródłowym a obiektem docelowym jest wyświetlana na zakładce: Kopiowanie atrybutów, w oknie: Definicja atrybutów. Jest ona definiowalna przez Użytkownika.
Pod listą dostępne są przyciski (podobnie rozmieszczone jak na zakładce „Klasy atrybutów) o funkcjach:
- Dodanie nowego połączenia obiektów źródłowego i docelowego
- Edycja powiązania
- Usunięcie połączenia – kontrola usuwania oparta o relacje.
Parametr: Pokazuj nieaktywne – odznaczenie powoduje filtrowanie wyświetlanych rekordów do aktywnych, zaznaczenie – wszystkie. Rekordy nieaktywne na liście będą w kolorze szarym.
Niezależnie od predefiniowanych ŹRÓDEŁ możliwe jest zdefiniowanie dowolnego ŹRÓDŁA, którego atrybut będzie skopiowany. Taką operację definiuje się za pomocą wyrażenia SQL-owego.
-
Definiowanie źródła.
W zapytaniu definiujemy jaka wartość powinna być przypisana do atrybutu na obiekcie docelowym. Na zakładce: Obiekty docelowe, w tym przypadku dodajemy obiekt ZS.
Edycja danych w kontrolkach zależna jest od parametru: Predefiniowane. Użytkownik może przejąć taką definicję i dowolnie ją wyedytować – warunkiem jest odznaczenie opcji: Predefiniowane. Odznaczenie parametru jest operacją jednorazową – po zapisie okienka nie ma możliwości ponownego jego zaznaczenia. Odtworzenie definicji predefiniowanych możliwe jest wywołując funkcję z apteczki.
Kopiowanie atrybutów (dokładniej: określenie wartości dla atrybutów na obiektach docelowych) oparte jest na definiowanym zapytaniu SQL. Wynik zapytania (select) jest podstawą określenia wartości atrybutu na obiekcie docelowym, dlatego powinien być zwrócony jako jednowierszowy recordset zbudowany z min:1 – max:6 kolumn o typach odpowiednio: Atr_Wartosc, Atr_AtrTyp, Atr_AtrFirma, Atr_AtrNumer, Atr_AtrLp, Atr_AtrSubLp. Przy budowie zapytań dostępne są predefiniowane „zmienne”: {FiltrSQL}, {Ato_AtkID} ustawiane w momencie wykonania zapytania.
Kopiowanie atrybutu z pozycji ZS na pozycję FS. Kopiowanie uwzględnia przekształcenie wielu ZS do jednej FS (towary na ZS-ach są różne, nie powtarzają się. SQL:
select Atr_Wartosc, Atr_AtrTyp, Atr_AtrFirma,Atr_AtrNumer, Atr_AtrLp from CDN.ZamNag join CDN.zamElem on ZaN_gidnumer=zae_gidnumer join CDN.TraSElem on TrS_ZlcTyp=ZaN_GIDTyp and TrS_ZlcNumer=ZaN_GIDNumer and zae_GIDLp=TrS_zlcLp join CDN.TraElem on TrE_GIDTyp=TrS_GIDTyp and TrE_GIDNumer=TrS_GIDNumer and TrE_GIDLp=TrS_GIDLp join cdn.Tranag on Trs_GIDNumer=trn_GIDNumer join cdn.atrybuty on Atr_ObiTyp = zan_GIDTyp AND Atr_ObiNumer =zan_GIDNumer and Atr_ObiLp = zaE_GidLP and Atr_AtkId = {Ato_AtkID} WHERE {FiltrSQL}
- Jeśli na obiekcie docelowym (CEL) klasa nie istnieje, zostanie utworzona z nową wartością
- Jeśli kopiowany atrybut już istnieje, to jego wartość zostanie nadpisana wartością atrybutu z ŹRÓDŁA
- Jeśli w wyniku zmiany obiektu ŹRÓDŁOWEGO, nowe ŹRÓDŁO nie zawiera atrybutu przepisanego ze „starego” ŹRÓDŁA, to atrybut taki powinien zostać usunięty z obiektu docelowego.
Na ZS dodano kontrahenta posiadającego atrybut „Partner złoty”, który został przepisany na nagłówek dokumentu. Następnie zmieniono kontrahenta na takiego, który nie posiada tego atrybutu – atrybut zostanie usunięty z dokumentu.
Atrybuty z natychmiastowym zapisem do bazy (zapis on-line)
Aktualizacja atrybutów dodanych na obiekcie (lub edytowanych) dopiero w momencie zapisu obiektu (np. formatki dokumentu czy karty towaru) bywa czasami niewystarczająca.
Włączenie może spowodować spadek wydajności systemu.
Konstrukcja atrybutów determinuje to, że ‘zapisywalność’ atrybutów jest cechą niekonkretnego atrybutu, ale wszystkich atrybutów na obiekcie. Dlatego zmiana nowopowstałego parametru będzie synchronizowana na wszystkich klasach podpiętych do obiektu.
Od wersji 2020.0 Comarch ERP XL w systemie umożliwiono tworzenie zapisów historii zmian na większości dokumentów. Operacją, która jest zapisywana do historii to rownież modyfikacja obiektów powiązanych. Modyfikacja obiektów powiązanych, to każda zmiana, która została wykonana z poziomu formatki dokumentu m.in. na zakładce [Atrybuty].
Dla klas atrybutów, które mają ustawiony natychmiastowy zapis do bazy (zaznaczony parametr na formatce Klasa atrybutu dla obiektu) w Historii zapisów będzie tyle wpisów o modyfikacji atrybutów, ile zmian zostało wykonanych podczas jednej edycji dokumentu. Wystarczy, że do dokumentu będzie przypisana jedna klasa atrybutu z takim ustawieniem, a każda zmiana w atrybutach na formatce obiektu będzie logowana jako osobny wpis.
Zakazy do atrybutów
Ograniczenia uprawnień do operacji na atrybutach są poszerzone i zbudowane na bazie istniejącego mechanizmu zakazów, czyli dotyczą:
- Całej listy atrybutów na obiekcie (a nie poszczególnych atrybutów)
- Wskazanego operatora.
- zakazu dodawania nowych atrybutów (brak możliwości dodawania atrybutu),
- zakazu usuwania atrybutów (brak możliwości usuwania atrybutu),
- zakazu modyfikacji atrybutów (brak edycji, dodawania i usuwania atrybutów),
- zakazu podglądu – pusta lista, brak edycji.
Odbudowa źródeł predefiniowanych - apteczka
Z poziomu modułu Administrator wybierając Funkcje specjalne tzw. apteczkę możliwe jest wykorzystanie funkcji: Naprawa atrybutów źródłowych. Funkcja ta odbudowuje (lub nadpisuje istniejące) rekordy w tabelach CDN.AtrybutyZrodla, CDN.AtrybutyZrodlaObiekty wg takich samych zasad jak w konwersji.
Atrybuty a ECOD
Przykłady zastosowań funkcjonalności atrybutów podczas eksportu dokumentów do ECOD:
- Założyć klasę atrybutu: FeeValue, typ liczba, format tekst.
- Dodać do niej obiekty: Towar, FS Pozycje i WZ Pozycje
W tym przypadku atrybut na Towarze może być, ale nie musi, więc na klasie atrybutu na obiekcie Towar nie trzeba ustawić żadnych dodatkowych parametrów. Wymagane jest jednak, aby w przypadku, gdy na FS/ WZ dodajemy towar z określonym atrybutem to ten atrybut ma się przepisać, więc na klasie obiektu dla Pozycji FS/WZ zaznaczamy Wymagany wg. klasy obiektu.
Ustawiamy źródło na Towar i Akcję Zmiana towaru. Akcja ta powoduje, że w przypadku pierwszego wpisania towaru na pozycję atrybut się przepisze z jego karty, a w przypadku zmiany towaru na inny, atrybut ten zostanie zaktualizowany – bądź jak na nowym towarze nie będzie zdefiniowanego atrybutu to na pozycji zakładka Atrybuty zostanie pusta.
-
Klasa atrybutu FeeValue.
-
Klasa atrybutu FeeValue – Obiekty.
-
Klasa atrybutu dla obiektu – pozycji FS.
Definiuje klasę atrybutu: OrderType, typ liczba, format tekst. Dodajemy obiekty: Kontrahent, ZZ. Na klasach atrybutu dla obiektów ustawiamy (o ile potrzeba) parametry odnośnie wymagalności. Dodatkowo na ZZ klasy obiektu ustawiamy źródło na Kontrahent i akcję Zmiana kontrahenta.
Więcej na temat zastosowania funkcjonalności atrybutów podczas eksportu dokumentów do ECOD w biuletynie ''Wymiana dokumentów za pomocą systemu ECOD''.
Atrybuty grupujące
Aby klient e-Sklepu mógł wskazać, jaki konkretnie rodzaj danego towaru chce zamówić, koniecznym jest ustalenie po stronie Comarch ERP XL, wg jakich atrybutów mają być grupowane towary. W tym celu, na karcie towaru na zakładce [Atrybuty] dodana została możliwość potwierdzenia danego atrybutu jako grupującego.
-
Karta towaru, zakładka Atrybuty, parametr Grupujący
Parametr jest dostępny wówczas, gdy na zakładce [Aplikacje] zaznaczona jest dostępność w e-Sklepie oraz dana klasa jest oznaczona jako dostępna w e-Sklepie. Dodatkowo, atrybut, po którym ma być wybierany towar w e-Sklepie musi być atrybutem typu lista. Grupujący umożliwia określenie tych atrybutów, które są wyświetlane w e-Sklepie dla towarów zgrupowanych – fantomów.
Wraz z ww. zmianami wprowadzono zmiany w synchronizacji. Do obsługi wyświetlania zgrupowanych kart towarowych wykorzystywane jest pole „Nadrzędny” w TWRI (-1 towar nie jest zgrupowany; >0 towar jest zgrupowany, wówczas podawane jest ID towaru nadrzędnego)
Do obsługi atrybutów grupujących wykorzystywane jest pole „Grupuj” (0 nie; 1 tak – atrybut jest grupującym).
Od wersji 2019.0 Comarch ERP XL dostosowano synchronizację atrybutów do aktualnych e-Sklepu. Atrybuty typu lista będą prezentowane w następujący sposób:
- Jeśli dla atrybutu typu lista zostanie wybrana konkretna wartość, wówczas atrybut ten będzie widoczny w sekcji Cechy towaru wraz z wybraną wartością.
- Jeśli do towaru zostanie dodany atrybut typu lista bez wskazanej wartości, wówczas podczas zamawiania towaru dostępna będzie opcja wyboru wartości atrybutu z całej dostępnej listy.
- Jeśli do towaru zostanie dodany atrybut typu lista, z zaznaczoną opcją: wielowartościowy, a na towarze zostanie wybranych kilka wartości z całej listy, wówczas podczas zamawiania towaru dostępne będą tylko te wartości, które zostały ustawione na towarze.
Więcej na temat zastosowania funkcjonalności atrybutów we współpracy z Comarch e-Sklep w podręczniku do e-Sklepu.
Wysyłka atrybutu do KSeF jako dodatkowy opis
Dotychczas w sekcji Dodatkowy Opis wysyłany był opis z nagłówka dokumentu oraz opisy z poszczególnych elementów dokumentu, o ile w Konfiguracji/KSeF włączono parametr Podczas eksportu wysyłaj/Opis elementu. Tak więc zarówno dla nagłówka, jak i danego elementu można był wysłać tylko jedną informację dodatkową. W wersji 2024.0 funkcjonalność ta została rozwinięta i odtąd oprócz ww. opisów w ww. sekcji wysyłane są również te atrybuty przypisane czy to do nagłówka dokumentu, czy to do danego elementu faktury, które zostały oznaczone parametrem KSeF.

Na podstawie każdego z tak oznaczonych atrybutów wysyłana jest sekwencja danych:
- Nr wiersza: numer elementu faktury, dla której zdefiniowano ten atrybut, pole nie jest wysyłane, jeżeli atrybut zdefiniowany został dla nagłówka dokumentu
- Klucz: nazwa klasy atrybutu
- Wartość: wartość atrybutu

XL014 - Konfiguracja wydruków kodów kreskowych
Ogólna struktura mechanizmu wydruków
Wydruki kodów kreskowych w programie ERP XL, realizowane są przy pomocy funkcjonalności tak zwanych wydruków XML. Całość instrukcji dotyczących definicji wydruków zawarta jest w pliku o rozszerzeniu XPT, który jest importowany do programu ERP XL. Dla lepszego zobrazowania posłużono się przykładem pliku Wydruk.xpt przeznaczonego dla drukarki Datamax.
Struktura pliku XPT
Plik o rozszerzeniu XPT składa się z dwóch części. Pierwszej [SQL] zawierającej zapytania SQL, oraz drugiej [XSL]. Przykładowy plik Wydruk.xpt wygląda następująco:
[SQL]
select Twr_Kod,Twr_EAN FROM cdn.TwrKarty WHERE ?@Hs200_NQ|Filtr:''@?
[XSL]
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output omit-xml-declaration="yes"/>
<xsl:preserve-space elements="*"/>
<xsl:template match="/">
<xsl:for-each select="ROOT">
<xsl:apply-templates select="RECORDSET1"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="RECORDSET1">
<xsl:apply-templates select="RECORD"/>
</xsl:template>
<xsl:template match="RECORD">
 H07 D11 m 1911008000800041 <xsl:value-of select="@Twr_Kod" /> 3a6210000000050 <xsl:value-of select="@Twr_EAN" /> PCS E
</xsl:template>
</xsl:stylesheet>
Sekcja SQL
Sekcja ta zawiera zapytania SQL (w przypadku naszego przykładu jedno zapytanie), które zostaną zadane do bazy i na podstawie zwróconych odpowiedzi utworzony zostanie plik XML o określonej strukturze.
Zastosowanie w sekcji WHERE wyrażenia ?@s200H_NQ|Filtr:''@? spowoduje wstawienie w jego miejsce filtru przekazanego z programu. Jest to tak zwany parametr dynamiczny. Struktura pliku XML otrzymanego w wyniku zapytań SQL wygląda następująco:
<ROOT>
<RECORDSET1>
<RECORD NazwaKolumny1=”wartość kolumny 1” NazwaKolumny2=”Wartość kolumny 2” />
<RECORD NazwaKolumny1=”wartość kolumny 1” NazwaKolumny2=”Wartość kolumny 2” />
</RECORDSET1>
<RECORDSET2>
<RECORD NazwaKolumny1=”wartość kolumny 1” NazwaKolumny2=”Wartość kolumny 2” />
<RECORD NazwaKolumny1=”wartość kolumny 1” NazwaKolumny2=”Wartość kolumny 2” />
</RECORDSET2>
……
</ROOT>
Każdy XML wygenerowany z zapytań z sekcji [SQL] rozpoczyna się od Tagu <ROOT>. Tagi <RECORDSETn> odpowiadają kolejnym zapytaniom select tzn. pierwszy select generuje <RECORDSET1> itd. Każdy wiersz z odpowiedzi przedstawiony jest w formie Tagu <RECORD>. Każdy z nich posiada tyle atrybutów, ile kolumn zwraca zapytanie. Nazwa atrybutu odpowiada nazwie kolumny a wartość atrybutu wartości kolumny.
Plik XML dla naszego przykładu może więc wyglądać następująco:
<ROOT>
<RECORDSET1>
<RECORD Twr_Kod=”MAG770T” Twr_EAN=”8” />
</RECORDSET1>
</ROOT>
Sekcja XSL
Sekcja zawiera schemat, który jest „nakładany” na XML z danymi. Tłumaczy plik XML na język poleceń drukarki. W naszym przykładzie dla Tagu <RECORD> zdefiniowany został zestaw instrukcji dla drukarki:
 H07 D11 m 1911008000800041 <xsl:value-of select="@Twr_Kod" /> 3a6210000000050 <xsl:value-of select="@Twr_EAN" /> PCS E
W instrukcjach sterujących drukarką osadzone zostały instrukcje xsl-a, pozwalające na wykorzystanie danych uzyskanych z zapytania SQL.
W przypadku innych typów drukarek należy przeczytać dokumentację producenta w celu zapoznania się ze składnią instrukcji sterujących dla drukarki.
Struktura pliku XPT będzie więc różnić się od przedstawionej w przykładzie. Przykładowy plik XPT zawierający instrukcje sterujące dla drukarki DYMO wygląda następująco:
[SQL]
select Twr_Kod,Twr_Nazwa,Twr_GrupaPod,Twr_EAN FROM cdn.TwrKarty where ?@Hs200_NQ|Filtr:''@?
[XSL]
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:usr="urn:the-xml-files:xslt" version="1.0">
<xsl:output omit-xml-declaration="yes" method="html"/>
<ms:script language="VBScript" implements-prefix="usr">
<![CDATA[
Function PrintEan(Ean)
Dim DymoAddIn, DymoLabel
Set DymoAddIn = CreateObject("DYMO.DymoAddIn")
Set DymoLabel = CreateObject("DYMO.DymoLabels")
DymoAddIn.Open "C:\Program Files\Dymo Label\Label Files\Barcode Label (30252, 30320).LWL"
DymoLabel.SetField "Barcode",Ean
DymoAddIn.Print 1, TRUE
PrintEan=""
End Function
]]>
</ms:script>
<xsl:output omit-xml-declaration="yes"/>
<xsl:preserve-space elements="*"/>
<xsl:template match="/">
<xsl:for-each select="ROOT">
<xsl:apply-templates select="RECORDSET1"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="RECORDSET1">
<xsl:apply-templates select="RECORD"/>
</xsl:template>
<xsl:template match="RECORD">
<xsl:value-of select="usr:PrintEan(123456)"/>
</xsl:template>
</xsl:stylesheet>
W przypadku drukarek DYMO najwygodniej posłużyć się językiem skryptowym. W naszym przykładzie jest to VBscript.
<ms:script language="VBScript" implements-prefix="usr">
Dzięki temu można łatwo zdefiniować funkcje, w których można wykorzystać obiekty COM, dostarczone przez producenta.
XL021 - Specyfikacja standardu wydruków w ERP XL
Założenia ogólne
Wszystkie liczby określające położenie i rozmiar obiektów są podane w jednostkach 1/10 mm. Tworzenie elementów w określonej przez opis kolejności, pozwali otrzymać prawidłowy wygląd elementów.
Obszar wydruku
Przyjęcie poniższych wartości pozwala na uzyskanie poprawnego wydruku na wszystkich drukarkach atramentowych (mają one mniejszy obszar drukowania niż laserowe)
Marginesy ustawiane w wydrukach standardowych:
Zmniejszenie marginesów lewego i prawego pozwala na umożliwienie automatycznego przesunięcia wydruku, tak by nadawał się on do wpięcia do skoroszytu. W trybie landscape można zmniejszyć margines lewy albo prawy do wielkości 7 mm – wydruk zostanie automatycznie dostosowany do trybu landscape jaki supportuje drukarka (90 lub 270 stopni)
Standard prezentacji danych
Ogólne założenia co do wyglądu elementów wydruku: • Opisy elementów – czcionka normalnej grubości, Times New Roman CE • Kluczowe elementy (wartości liczbowe, daty itp.) - czcionka pogrubiona, Courier New CE • Opisy kolumn list – w ramce o grubości 10; bez pionowych linii dzielących na kolumny, oddalone o 10 jednostek w pionie od poprzedniego elementu
Wydruk typu „Lista”
Obiekty o numerach 1, 2, 3, 4 umieszczamy w sekcji „PAGE HEADER”
Obiekty 5, 6, 7 umieszczamy w sekcji „GRAND TOTALS”
Obiekt 1. [Ramka pieczątki firmy]
Ramka pieczątki firmy:
BOX(Black, White, 275, 5, No, 920, 0, 10) - „Send to back”
BOX(Black, Black, 275, 5, No, 920, 10, 20) - „Send to back”
Obiekt 2. [Elementy pieczątki firmy]
Elementy pieczątki firmy przekazywane są poprzez parametry: CDN_FIRMA1, CDN_FIRMA2, CDN_FIRMA3, CDN_FMIASTO, CDN_FULICA
Pieczątkę firmy drukujemy czcionką: TIMES NEW ROMAN; rozmiar = 10, normalna grubość
Pola pieczątki firmy umieszczamy jedne po drugimi w odstępie 50 jednostek, począwszy od punktu o współrzędnych (10,20). Wszystkie pola wyrównujemy do współrzędnej X=10. Szerokość wszystkich elementów ustawiamy na 900 jednostek.
Obiekt 3. [Tytuł wydruku]
Tytuł wydruku jest odpowiednim, polem tekstowym sformatowanym wg poniższego przykładu:
STRING(Silver, Times New Roman CE, 14, Black, Bold, No, No, No, 0, Center, ‘Plan Kont’, No, 930, 940, 10)
LANDSCAPE: do współrzędnej X dodajemy 685
Obiekt 4. [Listwa z numerem strony]
BOX(Default, Silver, 55, 0, No, 930, 940, 240) – „Send to Back”
STRING(Silver, Times New Roman CE, 10, Black, Normal, No, No, No, 0, Right, ‘Strona:’, No, 145, 1675, 242)
Zmienna z numerem strony: PG#(Silver,,Times New Roman CE, 10, Black, Normal, No, No, No, 0, Left, @n3, No, No, 80, 1795, 242)
LANDSCAPE: do współrzędnej X dodajemy 685
Obiekt 5. [Listwa z opisem wydruku]
Sekcja kończąca wydruk rozpoczyna się podkreśleniem elementów oraz umieszczoną pod nim listwą z opisem wydruku (operator drukujący, liczba stron, data sporządzenia wydruku). Dane operatora drukującego są przekazywane do wydruku poprzez zmienną CDN_OPERATOR.
Współrzędna Y wszystkich elementów obiektu są zależne od wcześniej umieszczonych elementów zmiennych wydruku (np. Podsumowania) – dlatego w opisie właściwości obiektów są one zastąpione napisem „YYY”. Na
tej współrzędnej położone jest podkreślenie, współrzędne Y pozostałych obiektów podane są jako przesunięcie w stosunku do położenia podkreślenia (np. YYY+8) – dotyczy to także elementów składających się na obiekt nr.6
HLINE(Black, 10, 1873, 0, YYY)
BOX(Default, Silver, 55, 0, No, 1873, 0, YYY+5) – „Send to back”
STRING(Silver, Times New Roman CE, 10, Black, Normal, No, No, No, 0, Default, ‘Operator drukujący:’, No, 290, 4, YYY+8)
FIELD(Silver, CDN_Operator, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s50, No, No, 660, 300, YYY+8)
STRING(Silver, Times New Roman CE, 10, Black, Normal, No, No, No, 0, Default, ‘Liczba stron:’, No, 185, 1600, YYY+8)
PG#( Silver,,Times New Roman CE, 10, Black, Normal, No, No, No, 0, Left, @n3, No, No, 80, 1790, YYY+8)
Jeżeli data wydruku nie została umieszczona w sekcji „PAGE HEADER”, to umieszczamy ja na listwie z opisem wydruku, wg poniższych danych: Datę wydruku obliczamy wyrażeniem „TODAY()” – dla jasności opisu formułę zawierającą to wyrażenie nazwę „DZISIAJ”
STRING(Silver, Times New Roman CE, 10, Black, Normal, No, No, No, 0, Default, ‘Data wydruku:’, No, 215, 970, YYY+8)
FIELD(Silver, DZISIAJ, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Left, @d10, No, No, 230, 1190, YYY+8)
LANDSCAPE: Dla obiektów o pełnej szerokości strony (HLINE i BOX) zwiększamy szerokość o 685;
Obiekt ‘Liczba stron:’ ustawiamy na wsp. X =2290
Obiekt ‘PG#’ ustawiamy na wsp. X=2480
Obiekt ‘Data wydruku: ‘ ustawiamy na wsp. X=1780
Obiekt ‘DZISIAJ’ ustawiamy na wsp. X=2000
Obiekt 6. [Zastosowany Filtr]
Do wydruku przy pomocy parametru CDN_Filtr przekazywany jest filtr jaki został zastosowany w momencie jego uruchomienia. Ponieważ może on być stosunkowo długi, rozkładamy go na 3 części, tworząc następujące formuły:
FILTR_P1: IF CDN_FILTR<>’’ THEN ‘Zastosowano filtr: ‘&SUB(CDN_FILTR,1,85) ELSE ‘’
FILTR_P2: SUB(CDN_FILTR,86,85)
FILTR_P3: SUB(CDN_FILTR,172,85)
Rozmieszczenie formuł na wydruku:
FIELD(Default, FILTR_P1, Courier New CE, 8, Black, Normal, Yes, No, No, 0, Default, @s115, Yes, No, 1873, 0, YYY +66)
FIELD(Default, FILTR_P2, Courier New CE, 8, Black, Normal, Yes, No, No, 0, Default, @s115, Yes, No, 1873, 0, YYY +103)
FIELD(Default, FILTR_P2, Courier New CE, 8, Black, Normal, Yes, No, No, 0, Default, @s115, Yes, No, 1873, 0, YYY +140)
Jeżeli w wydruku stosujemy własne parametry, mające wpływ na filtr to poniżej umieszczamy napis ‘GDZIE’ oraz kolejno opis tych parametrów ( <nazwa> = <wartość> ):
STRING(Default, Courier New CE, 8, Black, Normal, Yes, No, No, 0, Deafult, ‘Gdzie: ‘, 120, 0, YYY+177)
Wszystkie opisy zmiennych drukujemy takim samym fontem jak filtr. Opisy te wyrównujemy do lewej do współrzędnej X=130
LANDSCAPE: W tym trybie ustawiamy szerokość pól na 2565 jednostek
Obiekt 7. [Listwa kończąca wydruk]
Współrzędne Y elementów tego obiektu zależą od ilości danych umieszczonych w obiekcie nr. 6. Odległość od ostatniego elementu obiektu 6 ustalmy na 10 jednostek. Dla czytelności zapisu zamiast wsp. Y wpisany będzie napis „YYY”
BOX(Default, Silver, 55, 0, No, 1873, 0, YYY)
STRING(Silver, Times New Roman CE, 10, Black, Normal, No, No, No, 0, Default, ‘*** Koniec Wydruku ***’, No, 290, 4, YYY+3)
Dodajemy jeszcze pole identyfikujące aplikacje drukującą. Wstawiamy tutaj tekst wg zasady: jeżeli jednoznacznie możemy określić z jakiego modułu pochodzi wydruk, drukujemy napis „CDN XL” + nazwa modułu (np. „CDN XL Księgowość”); W przeciwnym wypadku drukujemy sam napis „CDN XL”
STRING((Silver, Times New Roman CE, 10, Black, Normal, No, No, No, 0, Right, ‘CDN XL ...’, No, 420, 1450, YYY+3)
LANDSCAPE: Elementowi BOX ustawiamy szerokość na 2565 Pole identyfikujące aplikację umieszczamy na wsp. X=2135
Wygląd dokumentów handlowych (Faktury)
Obiekt 1. [Ramka pieczątki firmy]
GROUP(White, Yes, Times New Roman CE, 10, Black, Normal, No, No, No, 330,’Sprzedawca’, 920, 0,0) – „Send to back”
BOX(White, White, 310, 0, No, 920, 0,20) – „Send to back”
BOX(Black, Black, 310, 0, No, 920, 13,35) – „Send to back”
Obiekt 2. [Elementy pieczątki firmy]
Elementy pieczątki firmy przekazywane są poprzez parametry: CDN_FIRMA1, CDN_FIRMA2, CDN_FIRMA3, CDN_FMIASTO, CDN_FULICA, CDN_FNIP
Pieczątkę firmy drukujemy czcionką: TIMES NEW ROMAN; rozmiar = 10, Bold
Pola pieczątki firmy (oprócz CDN_FNIP) umieszczamy jedne po drugimi w odstępie 45 jednostek, począwszy od punktu o współrzędnych (10,40). Wszystkie pola wyrównujemy do współrzędnej X=10. Szerokość wszystkich elementów ustawiamy na 900 jednostek.
Numer NIP:
STRING(Default, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, ‘NIP:’, 85, 10, 265)
FIELD(Default, CDN_FNIP, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s13, No, No, 365, 95, 265)
Obiekt 3. [Nagłówek dokumentu]
Tytuł dokumentu: W tytule dokumentu umieszczamy formułę (nazwijmy ją „DOK_TYTUL”), która zwraca nam konkatenację typu dokumentu (Faktura VAT, Rachunek Uproszczony itp.) i odpowiednio sformatowanego numeru dokumentu (np. „Faktura VAT nr. 1245/99/CDX”).
FIELD(Silver, DOK_TYTUL, Times New Roman CE, 14, Black, Bold, 0, Center, @s40, No, No, 925, 940,10)
Listwa z numerem strony i oznaczeniem kopii:
BOX(Default, Silver, 65, 0, No, 925, 240, 280) – „Send to back”
STRING(Silver, Times New Roman CE, 10, Black, Normal, No, No, No, 0, Right, ’Strona’, 105, 1665, 288)
Zmienna z numerem strony: PG#(Silver,,Times New Roman CE, 10, Black, Normal, No, No, No, 0, Left, @n3, No, No, 80, 1790, 288)
Poprzez parametr CDN_NRKOPII przekazywany jest do wydruku numer drukowanej kopii. Pozwala to na wydrukowanie od razu oryginału i kopii dokumentu. Realizujemy to formułą: ORYGINAL_KOPIA: CHOOSE(CDN_nrKopii>0,' KOPIA',' ORYGINAŁ')
Umieszczoną wg danych: FIELD(Silver, ORYGINAL_KOPIA, Times New Roman CE, 12, Black, Bold, No, No, No, 0, Left, @s10, No, No, 300,940,280)
Zawartość nagłówka oryginału:
STRING(Default, Times New Roman CE, 10, Black, Normal, No, No, No, 0, Default, ‘Data wystawienia:’, 280, 1355, 110)
STRING(Default, Times New Roman CE, 10, Black, Normal, No, No, No, 0, Default, ‘Data sprzedaży’, 280, 1355, 165)
FIELD(Default, TRN_Data2, Courier New CE, 10, Black, Bold, No, No, No, 0, Right, @d10, No, No, 220, 1645, 110) FIELD(Default, TRN_Data3, Courier New CE, 10, Black, Bold, No, No, No, 0, Right, @d10, No, No, 220, 1645, 165)
Obiekt 4. [Dane nabywcy–odbiorcy / sprzedawcy-dostawcy]
Napis „Nabywca” („Sprzedawca” dla dokumentów zakupu) STRING(Default, Times New Roman CE, 10, Black, Normal, No, No, No, 0, Default, ‘Nabywca:’, 220, 10, 350)
Napis „Odbiorca” („Dostawca” dla dokumentów zakupu) STRING(Default, Times New Roman CE, 10, Black, Normal, No, No, No, 0, Default, ‘Odbiorca’, 220, 930, 350)
Adres nabywcy/sprzedawcy (pobrany z tabeli KntAdresy standardowo połączonej z tabelą TraNag)
FIELD(Default, KnA:Kna_Nazwa1, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s50, No, No, 0, 40, 400)
FIELD(Default, KnA:Kna_Nazwa2, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s50, No, No, 0, 40, 445)
FIELD(Default, KnA:Kna_Nazwa3, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s50, No, No, 0, 40, 490)
Kod pocztowy łączymy z miastem kontrahenta formułą KNTMIASTO: IF KnA:KnA_KodP='00-000' THEN KnA:KnA_Miasto ELSE KnA:KnA_KodP&' '& KnA:KnA_Miasto
FIELD(Default, KNTMIASTO, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s50, No, No, 0, 40, 535)
FIELD(Default, KnA:Kna_Ulica, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s30, No, No, 0, 40, 580)
NIP kontrahenta drukujemy za pomocą formuły KNTNIP: 'NIP: ' & KnA:KnA_NipE FIELD(Default, KNTNIP, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s30, No, No, 0, 40, 625)
Adres odbiorcy/dostawcy (pobrany z aliasu KntAdresy połączonego z tabelą TraNag poprzez Trn_AdWGID – GID adresu wysyłkowego)
FIELD(Default, KnAA:Kna_Nazwa1, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s50, No, No, 0, 950, 400)
FIELD(Default, KnAA:Kna_Nazwa2, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s50, No, No, 0, 950, 445)
FIELD(Default, KnAA:Kna_Nazwa3, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s50, No, No, 0, 950, 490)
Kod pocztowy łączymy z miastem kontrahenta formułą ODBMIASTO: IF KnAA:KnA_KodP='00-000' THEN KnAA:KnA_Miasto ELSE KnAA:KnA_KodP&' '& KnAA:KnA_Miasto
FIELD(Default, ODBMIASTO, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s50, No, No, 0, 950, 535)
FIELD(Default, KnAA:Kna_Ulica, Times New Roman CE, 10, Black, Bold, No, No, No, 0, Default, @s30, No, No, 0, 950, 580)
Obiekt 5. [Opis dokumentu]
W skład tego obiektu wchodzi opis sposobu dostawy i opis dokumentu (tytuły i wartości). Tytuły tych pól realizujemy formułami: SPOSOBDOSTAWY: IF TrN:TrN_SposobDostawy='' THEN '' ELSE 'Sposób dostawy: '
OPISDOKUMENTU: IF TnO:TnO_Opis='' THEN '' ELSE 'Opis dokumentu: '
FIELD(Default, SPOSOBDOSTAWY, Times New Roman CE, 9, Black, Normal, No, No, No, 0, Center, @s16, 300, 10, 685)
FIELD(Default, OPISDOKUMENTU, Times New Roman CE, 9, Black, Normal, No, No, No, 0, Center, @s16, 300, 10, 730)
FIELD(Default, TrN:TrN_SposobDostawy, Times New Roman CE, 9, Black, Bold, No, No, No, 0,Default, @s20, 570, 315, 685)
FIELD(Default, TnO:TnO_Opis, Times New Roman CE, 9, Black, Bold, No, No, No, 0,Default, @s255, 1550, 315, 730)
Obiekt 6. [Harmonogram płatności]
Umieszczony jest w sekcji „GRAND TOTALS”
BOX (Default, Silver, 50, 10, No, 918, 0, 0) HLINE(Black, 10, 918,0,50)
STRING(Silver, Times New Roman CE, 10, black, Normal, No, No, No, 0, Center, ‘Forma płatności’, Yes, 257, 4, 1) STRING(Silver, Times New Roman CE, 10, black, Normal, No, No, No, 0, Center, ‘Termin’, Yes, 177, 335, 1) STRING(Silver, Times New Roman CE, 10, black, Normal, No, No, No, 0, Center, ‘Forma’, Yes, 117, 750, 1)
Kolumna form płatności: od współrzędnej (4,54) 4 wiersze co 45 jednostek; picture @s15, szerokość =0 Kolumna terminów płatności: od współrzędnej (335,54) 4 wiersze co 45 jednostek; picture @s10, szerokość =0 Obie powyższe kolumny drukujemy czcionką Times New Roman CE; rozmiar=9 ; normalna grubość
Kolumna kwot płatności: od współrzędnej (561, 54) 4 wiersze co 45 jednostek; szerokość=307. Kwoty drukujemy czcionką Courier New CE; rozmiar=9; Bold
Obiekt 7. [Tabelka VAT]
BOX (Default, Silver, 50, 10, No, 930, 940, 0) HLINE (Black, 10, 930,940,50) HLINE (Black, 10, 930,940,105) STRING(Silver, Times New Roman CE, 10, black, Normal, No, No, No, 0, Center, ‘Razem:’, No, 132, 940, 53) STRING(Silver, Times New Roman CE, 10, black, Normal, No, No, No, 0, Center, ‘ W tym:’, No, 132, 940, 114) STRING(Silver, Times New Roman CE, 10, black, Normal, No, No, No, 0, Center, ‘Stawka’, No, 130, 1063, 0) STRING(Silver, Times New Roman CE, 10, black, Normal, No, No, No, 0, Center, ‘Brutto’, No, 108, 1286, 0) STRING(Silver, Times New Roman CE, 10, black, Normal, No, No, No, 0, Center, ‘VAT’, No, 82, 1522, 0) STRING(Silver, Times New Roman CE, 10, black, Normal, No, No, No, 0, Center, ‘Netto’, No, 90, 1760, 0)
Przy dokumencie liczonym „od brutto” kolejność kolumn tabelki VAT ulega zmianie.
Sumy tabelki VAT (nazwy formuł przyjęte dla czytelności opisu) FIELD(Default, BRUTTOTOT, Courier New CE, 9, Black, Bold, No, No, No, 0, Default, @n-14.2, No, No, 222, 1186, 53) FIELD(Default, VATTOT, Courier New CE, 9, Black, Bold, No, No, No, 0, Default, @n-14.2, No, No, 196, 1415, 53) FIELD(Default, NETTOTOT, Courier New CE, 9, Black, Bold, No, No, No, 0, Default, @n-14.2, No, No, 246, 1617, 53)
Kolumny tabelki VAT (Courier New CE, rozmiar = 9, normalna grubość) Stawka VAT – od współrzędnych (1081,114) 7 wierszy co 45 jedn. Szerokość=101 Brutto – od współrzędnych (1186,114) 7 wierszy co 45 jedn. Szerokość=222 VAT– od współrzędnych (1415,114) 7 wierszy co 45 jedn. Szerokość=196 Netto – od współrzędnych (1617,114) 7 wierszy co 45 jedn. Szerokość=246
Począwszy od wiersza 4 elementy tabelki VAT mają ustawioną właściwość „Skip if empty” na YES
Obiekt 7. [Stopka strony]
BOX (Default, Silver, 55, 0, No, 1873, 0, 3)
STRING(Silver, Times New Roman CE, 10, black, Normal, No, No, No, 0, Right, ‘Razem do zapłaty:’, No, 270, 1200, 5)
FIELD(Silver, BRUTTOTOT, Times New Roman CE, 10, black, Bold, , No, No, No, Right,@n-14.2, No, No, 340, 1475, 5) STRING(Silver, Times New Roman CE, 10, black, Bold, No, No, No, 0, Right, ‘zł’, No, 50, 1810, 5)
FIELD(Default, KWOTASLOWNIE, Times New Roman CE, 10, black, Normal, No, No, No, 0, Right, @s255, No, No, 1873, 0, 62)
Formuła ZAPLACONO_PRINT drukuje zapłacona już kwotę faktury i pozostała do zapłaty. Jeżeli nic nie zostało zapłacone to linia jest pusta. FIELD(Default, ZAPLACONO_PRINT, Times New Roman CE, 10, black, Bold, No, No, No, 0, Right, @s255, Yes, No, 1873, 0, 118) HLINE(Black, 10, 1873, 0, 177)
Miejsca na podpisy:
HLINE(Black, 10, 665, 5, 285)
HLINE(Black, 10, 285, 1080, 285)
HLINE(Black, 10, 390, 1470, 285)
STRING(Default, Times New Roman CE, 8, Black, Normal, No, No, No, 0, Default, ‘Wystawił:’, No, 0, 115, 290) STRING(Default, Times New Roman CE, 8, Black, Normal, No, No, No, 0, Default, ‘Data odbioru:’, No, 0, 1165, 290) TEXT(No, Default, Times New Roman CE, 8, Black, Normal, No, No, No, 77, Center, Yes, ‘Podpis osoby uprawnionej <chr(13),chr(10)> do otrzymania faktury’, No, 390, 1470, 290)
Operator wystawiający dokument: FIELD(Default, Ope:Ope_Nazwisko, Times New Roman CE, 8, Black, Bold, No, No, No, 0, Center, @s50, No, No, 450, 226, 290)
XL011 - Podłączanie kolektora
Podłączanie kolektora
Kolektory obsługiwane przez Comarch ERP XL
Z programem Comarch ERP XL współpracują następujące kolektory:
- Dolphin (HandHeld)
- Denso BHT 300B
- CIPHERLAB 711, 720, 8000, 8001, 8200, 8300, 8400, 8600[1]
- OPTICON PHL 2700, PHL 1300.
Jak skonfigurować system Comarch ERP XL do współpracy z kolektorem?
Prawidłowa konfiguracja jest czynnością, dla której prawidłowego wykonania konieczne jest spełnienie kilku warunków.
Należy upewnić się, że obie strony komunikacji są skonfigurowane identycznie (jest to bardzo istotne - nawet najmniejsza różnica w konfiguracji spowoduje brak komunikacji z kolektorem).
Należy sprawdzić następujące elementy:
- Szybkość transmisji, protokół – ustawione na kolektorze. W przypadku ich braku, należy je odszukać w dokumentacji urządzenia.
- Bity danych, parzystość, bity stopu – dane te rzadko znajdują się na kolektorze. w przypadku ich braku, należy je odszukać w dokumentacji urządzenia.
- Strukturę rekordu wysyłanego przez urządzenie – najłatwiej to zrobić odczytując dane z kolektora za pomocą narzędzi dostarczonych przez producenta.
Producenci/dystrybutorzy zwykle dostarczają również oprogramowanie, którym można modyfikować powyższe ustawienia. Ma to szczególne znaczenie w przypadku struktury rekordu z danymi.[2]
Konfiguracja parametrów transmisji
Konfiguracji kolektora dokonuje się w oknie: Konfiguracja komputera, na zakładce: Kolektor.

Poniżej przedstawiono opis dla poszczególnych parametrów konfiguracji:
Nazwa pliku sterownika – pole w którym wskazuje się plik sterownika używany podczas współpracy systemu z urządzeniem:
- CDN_Coll.dll dla kolektorów Denso BHT i Dolphin (HandHeld)
- CDN_Ciph.dll dla CipherLab i OPTICON
Używaj transceivera - istotne tylko dla kolektorów CipherLab – pole zaznacza się, jeżeli do połączenia używany jest transceiver (stacja dokująca COM - IrDA).
Protokół – istotne tylko dla Denso BHT oraz Dolphin. Protokół transmisji – należy ustawić taki sam, jak w urządzeniu. Dla kolektora Dolphin należy używać protokołu YMODEM.
Szybkość transmisji – istotne dla wszystkich modeli – szybkość wymiany danych przez port szeregowy; należy ustawić taką szybkość, jak w urządzeniu; również ustawienia dla portu COM, do którego zostanie podłączony kolektor, powinny być zgodne z ustawieniami na urządzeniu oraz w systemie Comarch ERP XL.
Parzystość; Bity danych; Bity stopu – parametry istotne dla wszystkich modeli; należy ustawić je tak, jak w urządzeniu; jeżeli w urządzeniu nie da się ustawić powyższych należy sprawdzić w instrukcji, jakie są prawidłowe dla nich ustawienia; również ustawienia dla portu COM powinny być zgodne z ustawieniami na urządzeniu oraz w systemie Comarch ERP XL.
Port – port szeregowy przez, który odbywa się komunikacja z urządzeniem. W przypadku podłączenia kolektora przez port USB należy zmapować port USB na jeden z portów COM1 lub COM2.
Definiuj rekord kolektora – przycisk otwierający okno definicji rekordu kolektora; od prawidłowego zdefiniowania rekordu kolektora zależy czy współpraca z urządzeniem będzie odbywać się bez błędów (w skrajnych przypadkach czy w ogóle się powiedzie).
Definiowanie rekordu kolektora
Część z kolektorów ma „na sztywno” zdefiniowane parametry transmisji, również rekord kolektora, które pozwalają na współpracę z systemem Comarch ERP XL (np. OPTICON). Dla innych rekord kolektora można definiować wg uznania (np. CipherLab). Istotnym jest jednak to, żeby zdefiniować rekord kolektora w Comarch ERP XL, tak jak zaprogramowane jest urządzenie.

Definiując rekord można określić następujące parametry:
Wielkość rekordu – ilość znaków jaka przeznaczona jest na cały rekord kolektora
Pola – parametry pozwalające na określenie które z pól, a więc jakie dane, będą przesyłane z urządzenia do aplikacji; dla poszczególnych pól należy określić w jakich przedziałach (od którego do którego znaku) znajdują się dane:
- EAN – kod EAN służący do identyfikacji towaru/jednostki pomocniczej/dostawy
- Ilość – ilość towaru odpowiadającego przesłanemu kodowi EAN
- Cecha – wartość cechy przesłanego towaru
- Data ważności – data ważności partii towaru, data powinna być w formacie ddmmrrrr i mieścić się w zakresie: od 01011801 do 11102074 (od 01-01-1801 do 11-10-2074)
- Położenie – adres w magazynie gdzie towar będzie przyjmowany lub skąd będzie pobierany (ma znaczenie tylko dla dokumentów magazynowych PM, WM, MP)
Znak wypełniający – znak oddzielający poszczególne pola z danymi.
Brak zakończeń linii – czy poszczególne rekordy są przesyłane jako jeden ciąg znaków.
Poniżej przedstawiono przykład jak zdefiniować połączenie dla kilku wybranych urządzeń.
Przykładowe ustawienia
CipherLab
Kolektory CipherLab można w łatwy sposób konfigurować tak aby umożliwić przesyłanie żądanych danych do systemu Comarch ERP XL. Pod tym względem są najbardziej elastyczne z opisanych poniżej.
Poniższe ustawienia są przykładowe i mogą być modyfikowane podczas zestawiania współpracy z systemem Comarch ERP XL. Należy jednak pamiętać, żeby parametry na urządzeniu były zgodne z ustawieniami w systemie.



Dla urządzeń CipherLab istnieje możliwość przeprogramowania rekordu kolektora przy pomocy aplikacji Forge Batch Application Generator udostępnianej przez producenta.

Podczas definiowania poszczególnych pól rekordu kolektora Cipherlab należy zaznaczyć, że mają mieć one zachowaną ustaloną długość. W tym celu należy wywołać okno ze szczegółami pola (przycisk: More), w którym wpisujemy długość pola oraz zaznaczamy parametr: Fixed data lenght.

W celu zaprogramowania rekordu na kolektorze należy przesłać aplikację na urządzenie – Send Application, a na kolektorze wybrać opcję: 6. Load Program w menu Utilities.
PHL2700 firmy OPTICON
Kolektor PHL1300 może przesyłać dane wynikowe w czterech trybach dostępnych na urządzeniu: Inwentura, Magazyn, Sprzedaż, Numery seryjne. Pierwsze trzy tryby z punktu widzenia systemu Comarch ERP XL nie różnią się niczym. Przesyłane są kod EAN oraz ilość. W trybie Numery seryjne dodatkowo istnieje możliwość przesłania wartości cechy. (szczegóły: www.optidata.pl).
Dla tego kolektora dystrybutor zaleca transmisję z szybkością 19200 bps. Poniższe ustawienia konfiguracyjne proponuje transmisję z większą szybkością, podczas którego nie napotkano na żadne problemy. W celu przeprowadzenia transmisji z taką szybkością należy ustawić ją również na urządzeniu oraz stacji dokującej.




Kolejność synchronizacji danych jest bardzo ważna - Najpierw wysyłamy dane z kolektora, dopiero później zaczynamy odczytywać w Comarch ERP XL.
PHL1300 firmy OPTICON



Kolejność synchronizacji danych jest bardzo ważna - najpierw wysyłamy z kolektora dopiero później zaczynamy odczytywać w Comarch ERP XL. Ze względu na niedostępność kolektora nie był testowany na najnowszych wersjach systemu.
DOLPHIN



Kolejność synchronizacji danych jest bardzo ważna - najpierw odczytujemy dane w Comarch ERP XL, a następnie wysyłamy z kolektora. Ze względu na niedostępność kolektora w dystrybucji nie był testowany na najnowszych wersjach systemu.
Denso BHT
Do współpracy z tym urządzeniem konieczne jest zarejestrowanie biblioteki SKKTrans.ocx, z której korzysta Comarch ERP XL podczas odczytywania przesyłanych danych. Biblioteka ta jest dostarczana wraz z systemem Comarch ERP XL. W celu jej zarejestrowania należy wykonać polecenie: regsvr32 SKKTrans.ocx.
Transmisja danych w przypadku tego kolektora odbywa się przez plik tymczasowy, do którego zapisywane są dane odczytane z portu COM, a następnie dane wczytywane są do systemu. W tej sytuacji, jeśli praca odbywa się na systemach, dla których włączona jest kontrola kont użytkowników (np. Windows 7, Windows Serwer 2008, etc.) istotne jest aby aplikacja miała uprawnienia do zapisywania danych w folderach tymczasowych Windows.



Dla kolektora Denso BHT szybkość transmisji jest ustawiana na stacji dokującej urządzenia. Dla 9600 bps należy ustawić: switch 1 –OFF, switch 2 – OFF, switch 3 – ON.
Praca z kolektorem w systemie Comarch ERP XL
W przypadku pracy z kolektorami danych w systemie Comarch ERP XL możliwy jest jedynie odczyt danych z kolektora przez aplikację. W celu przesłania danych w kierunku odwrotnym (z systemu do urządzenia, np. baza towarów) należy użyć aplikacji zewnętrznych przygotowanych podczas wdrożenia systemu lub dostarczanych przez dystrybutorów kolektorów.
W systemie można wczytywać dane z kolektora na dokumenty handlowe (PZ, PZI, FZ, FRR, FS, WZ, , PA, FW, FSE, WZE), wewnętrzne (PW, RW, MMW, MMP), magazynowe (WM, PM, MP), zamówienia (ZZ, ZS, ZW) oraz oferty (OZ, OS). Istnieje również możliwość dodania odczytu inwentaryzacyjnego z kolektora.
W celu przesłania danych na dokument, należy przesyłając dane z urządzenia, nacisnąć przycisk: Wczytaj dane z kolektora.
Dodawanie na dokument pozycji przesłanych z kolektora, może odbyć się w dwóch trybach:
- usuwanie istniejących pozycji i dodanie nowych pozycji na podstawie przesłanych danych – domyślne działanie przycisku,
- dodawanie nowych pozycji do istniejących na dokumencie.


W celu dodania odczytu inwentaryzacyjnego z kolektora, należy mając otwarty arkusz inwentaryzacyjny na zakładce: Odczyty, przesłać dane z urządzenia i nacisnąć przycisk: Odczyt z kolektora.

Podczas dodawania odczytu inwentaryzacyjnego system uzupełnia ilości tylko dla pozycji przesłanych z kolektora.
Identyfikacja pozycji (towarów) przesłanych z kolektora odbywa się na podstawie kodów EAN. W systemie Comarch ERP XL kody EAN są szukane pośród kodów zapisanych na kartach towarów, jednostkach pomocniczych, zasobach oraz dostawach.
Najczęściej zadawane pytania
Podczas próby odebrania danych z kolektora otrzymuje błąd – Brak danych w kolektorze.
Błąd ten może być spowodowany niepoprawną definicją rekordu kolektora.
Bardzo ważne jest poprawne zdefiniowanie długości rekordu danych oraz długości poszczególnych pól. Muszą być one zgodne z ustawieniami w urządzeniu.
Nieprawidłowa długość powoduje błąd odczytu.
W celu zweryfikowania jaka jest struktura danych wysyłanych przez kolektor, należy odebrać dane przy pomocy aplikacji do komunikacji z urządzeniem (zwykle udostępnianej przez producenta).
Czy istnieje możliwość transmisji danych z kolektora przy pracy z systemem Comarch ERP XL przez pulpit zdalny?
Tak. W tym celu należy podczas połączenia z pulpitem udostępnić porty szeregowe stacji lokalnej.
Ustawienia portu COM na stanowisku, do którego podłączone jest urządzenie (stanowisko, z którego łączymy się do pulpitu zdalnego) powinny być zgodne z ustawieniami w konfiguracji Comarch ERP XL.
Port COM, do którego podłączony jest kolektor należy zmapować na serwerze terminali z numerem COM1 lub COM2, w zależności od tego jaki został wybrany w konfiguracji Comarch ERP XL.
Jak interpretowane są daty ważności przesłane z kolektora?
Daty ważności przesłane z kolektora na dokument przyjęcia (handlowego lub magazynowego) są zapisywane na partii towaru zgodnie z ustawieniem w karcie towaru:
- w przypadku przesłania daty ważności dla towaru, dla którego nie zaznaczono na karcie parametru: Oznacz partię towaru datą ważności informacja przesłana jako data ważności jest ignorowana
- w przypadku przesłania nieprawidłowej daty albo nie przesłana jej dla towaru, którego partia towaru ma być oznaczana datą ważności, system pobiera ustawienie z karty towaru i odpowiednio ustawia datę
- w przypadku przesłania prawidłowej daty dla towaru, którego partia towaru ma być oznaczana datą ważności, system ustawia przesłaną datę na partii powstałej w wyniku dostawy
Daty ważności przesłane z kolektora na dokument wydania (handlowego lub magazynowego) są traktowane jako wymagane (nawet dla towarów, dla których nie zaznaczono na karcie parametru: Oznacz partię towaru datą ważności). System zawsze szuka zasobu z odpowiednią datą ważności. Jeśli go nie znajdzie wyświetla odpowiedni komunikat, np.: Zabrakło ilości (nie udało się pobrać towaru lub wymuszono realizacje całości). W przypadku nie przesłania daty ważności system pobiera zasoby wg kolejki zdefiniowanej na karcie towaru.
Data powinna być w formacie ddmmrrrr i mieścić się w zakresie: od 01011801 do 11102074 (od 01-01-1801 do 11-10-2074).
Jak interpretowane są cechy przesłane z kolektora?
Cechy przesłane z kolektora na dokument przyjęcia (handlowego lub magazynowego) są zapisywane na partii towaru. Jeśli towar ma określoną domyślą klasę cechy, przesłana cecha jest zapisywana jako jej wartość.
Cechy przesłane z kolektora na dokument wydania (handlowego lub magazynowego) są traktowane zawsze jako wymagane. System zawsze szuka zasobu z odpowiednią cechą. Jeśli go nie znajdzie wyświetla odpowiedni komunikat, np.: Zabrakło ilości (nie udało się pobrać towaru lub wymuszono realizacje całości). W przypadku nie przesłania daty ważności system pobiera zasoby wg kolejki zdefiniowanej na karcie towaru.
Jak interpretowane są położenia (adresy magazynowe) przesłane z kolektora?
Adresy magazynowe przesłane z kolektora są interpretowane tylko na dokumentach magazynowych (PM, WM, MP) oraz odczytach inwentaryzacyjnych (jeśli inwentaryzacja jest przeprowadzana wg ilości magazynowych).
W przypadku dokumentu PM, system będzie starał się umieścić towar w lokalizacji przesłanej z kolektora. Jeśli przesłany adres będzie nieprawidłowy (np. nie występuje w odpowiednim magazynie, będzie przepełniony, składowanie towaru będzie niedozwolone, etc.) to wyświetli odpowiedni błąd i nie doda takiej pozycji.
W przypadku dokumentów WM i MP system traktuje przesłany adres jako wymagany i stara się pobrać towar ze wskazanego położenia. Jeśli towar nie zostanie znaleziony w tym położeniu pozycja nie zostanie dodana.
W przypadku gdy adres nie zostanie przesłany a praca odbywa się na dokumentach magazynowych w magazynie z obsługą położeń, system pobierze lub rozlokuje towary zgodnie z algorytmem działającym w systemie.
Czy istnieje możliwość skonfigurowania kolektora do pracy na dokumentach MP. tak aby przekazywać położenie skąd ma być pobierany towar oraz położenie docelowe?
Nie ma możliwości przesłania dwóch położeń z kolektora. W związku z powyższym nie ma również możliwości skonfigurowania kolektora tak aby przekazywać położenie skąd ma być pobierany towar oraz położenie docelowe. Podczas wczytywania danych z kolektora na dokument MP, przekazane położenie jest traktowane jako adres skąd ma zostać pobrany towar. Jako adres dokąd ustawiane jest położenie Nieznane.
Czy istnieje emulator kolektorów Opticon PHL1300 lub Opticon PHL2700?
Nie spotkaliśmy się z emulatorem dla kolektorów Opticon PHL1300 lub Opticon PHL2700. W celu bliższych informacji należy skontaktować się z dystrybutorem tych urządzeń, firmą OPTIDATA (www.optidata.pl).
- Urządzenie współpracuje z systemem przy zastosowaniu oprogramowania firmy TORELL. Obsługiwane są 3 parametry: EAN, Ilość i Cecha. Przy użyciu oprogramowaniu producenta współpraca z systemem nie jest możliwa. ↑
- W dalszej części biuletynu zostanie zaprezentowana aplikacja do konfiguracji urządzeń CipherLab, pozwalająca między innymi na dowolne definiowanie rekordu kolektora. ↑
XL007 - Konfiguracja HASP - Menadżer kluczy
Ogólna architektura
Ogólna architektura zabezpieczenia klucza HASP składa się z 5 warstw:
Warstwa 1 – klient usług zabezpieczeń – stanowią ją algorytmy w programie ERP XL, służące w ogólnym rozumieniu do zabezpieczenia programu przed nielegalnym używaniem. Klient usług zabezpieczeń dokonuje logowania i pobrania licencji z serwera zabezpieczeń (poprzez warstwę 2), odpowiada za zwrot pobranych licencji przy zamykaniu programu. Od v 2020 możliwe jest bezpośrednie połączenie warstwy 1 z warstwą 3 za pomocą protokołu http standardowo odbywa się to poprzez port 5150.
Warstwa 2 - stanowi ją MS SQL Server, na którym są zainstalowane procedury wbudowane (extended stored procedures) służące do komunikacji klienta usług zabezpieczeń z serwerem usług zabezpieczeń.
Warstwa 3 - to właściwy serwer zabezpieczeń – tzw. usługa HASP. Rolą tej usługi jest zarządzanie licencjami, czyli:
- kontrola liczby pobranych licencji,
- obsługa żądań pobrania i zwolnienia licencji,
- zwalnianie licencji zablokowanych przez instancje systemu, która zakończyła swoje działanie, a z różnych przyczyn nie zwolniła zablokowanych licencji.
Warstwa 4 - to sprzętowy klucz HASP, który służy do przechowywania informacji o zakupionej puli licencji oraz do weryfikacji jej wykorzystania w trakcie pracy klienta (systemu ERP XL) oraz serwer zabezpieczeń (serwisu HASP)
Warstwa 5 – to połączenie do klucza wirtualnego, podczas gdy do instalacji może być podłączony jeden klucz HASP kluczy wirtualnych może być zarejestrowanych w instalacji większa ilość. Gdy do instalacji zostanie dodany klucze wirtualne warstwa 3 łączy się do serwera Comarch o adresie ml.comarch.pl – https i pobiera informacje o przypisanych do danego klucza licencjach, warstwa 3 co kilka godzin łączy się do serwera Comarch i pobiera ponownie informacje o kluczach maksymalnie czas ten może wynosić do 3 dni

Klient usług zabezpieczeń
Algorytm działania klienta usług zabezpieczeń jest następujący:
W momencie uruchomienia przez operatora programu ERP XL (dowolnego modułu), następuje zalogowanie klienta usług zabezpieczeń do serwera zabezpieczeń i pobranie wszystkich licencji przypisanych do operatora, który uruchomił system. Licencje są pobierane zgodnie z ustawieniami na zakładce {Parametry/Uprawnienia} karty operatora w module: Administrator. W celu poprawnego zalogowania aplikacji do serwera zabezpieczeń, muszą zostać pobrane wszystkie licencje ustawione dla danego operatora. Brak możliwości pobrania jakiejkolwiek licencji spowoduje, że dowolny moduł systemu, uruchomiony przez operatora będzie działał bez licencji. W takiej sytuacji zostanie wyświetlony komunikat informujący o tym, że nie udało się pobrać licencji i zalogować do serwera zabezpieczeń.
Wszystkie pobrane licencje w danej sesji są blokowane do wyłącznego użytku przez danego operatora, nawet jeśli w trakcie sesji nie uruchamia wszystkich modułów, na które pobrał licencje.
Wyjątek od powyższego opisu stanowi pobieranie licencji na moduł obsługi drukarek fiskalnych za pośrednictwem usług terminalowych. W tym przypadku licencja jest pobierana w przypadku pierwszego użycia terminalowych sterowników fiskalnych (FP600T.dll, DF300T.dll, DF300_1T.dll oraz INNOWAT.dll).

Jeżeli licencje zostały pobrane z serwera poprawnie, w trakcie pracy programu ERP XL następuje okresowa komunikacja z serwerem zabezpieczeń w celu sprawdzenia, czy serwis HASP pracuje poprawnie (np. czy ktoś nie wyjął klucza HASP z portu serwera), a także „poinformowanie” serwisu o tym, że aplikacja ERP XL nadal działa.
Po zakończeniu pracy programu następuje wylogowanie z serwisu zabezpieczeń i zwolnienie pobranych licencji.
Jeżeli przy uruchamianiu programu nie udało się pobrać licencji z klucza, praca z systemem ERP XL będzie możliwa tylko w ograniczonym zakresie, pozwalającym tylko i wyłącznie na przeglądanie danych, bez możliwości ich modyfikacji np. wystawiania i przekształcania dokumentów lub ich księgowania.
Procedury wbudowane na serwerze SQL
Warstwa ta służy w rzeczywistości do komunikowania się klienta usług zabezpieczeń z serwerem usług zabezpieczeń. Klient wywołuje procedury wbudowane, które zostały zainstalowane na serwerze SQL poprzez standardowe mechanizmy komunikacji aplikacji z serwerem bazy danych. Za pośrednictwem procedur, żądania klienta są przekazywane do serwera zabezpieczeń.
Dzięki takiemu rozwiązaniu zapewniona została bezproblemowa komunikacja sieciowa pomiędzy klientem, a serwerem usług zabezpieczeń – poprawne skonfigurowanie sieci dla potrzeb komunikacji z bazą danych gwarantuje równocześnie komunikację z serwerem zabezpieczeń.
Procedury te zwykle znajdują się na serwerze SQL, na którym znajdują się bazy danych programu ERP XL. Na tym samym komputerze co procedury wbudowane, musi znajdować się serwer zabezpieczeń. Istnieje jednakże możliwość zainstalowania procedur wbudowanych i serwera zabezpieczeń na innym komputerze niż serwer baz danych ERP XL. Warunkiem jest zainstalowanie na tym komputerze silnika bazy danych MS SQL Server (może to być bezpłatny silnik MSDE lub SQL Express). Równocześnie należy skonfigurować program ERP XL w taki sposób, aby odwoływał się do innego serwera zabezpieczeń niż serwer bazy danych. Należy to zrobić w oknie konfiguracji komputera:

W podanym powyżej przykładzie procedury wbudowane będące elementem systemu zabezpieczeń zostały zainstalowane na serwerze KASTOR.
Nazwa serwera klucza jest zapamiętywana w rejestrze systemowym, w kluczu HKEY_LOCAL_MACHINE\SOFTWARE\ERP\HASP w wartości „Serwer”.
W przypadku braku określenia nazwy serwera klucza w aplikacji ERP XL, domyślnie zakłada się, że serwerem klucza jest serwer bazy danych.
Serwer usług zabezpieczeń
Serwer usług zabezpieczeń odpowiada za zarządzanie licencjami – sprawdzanie liczby pobranych licencji, obsługę żądań zalogowania i wylogowania.
Działanie serwera usług zabezpieczeń opisuje poniższy schemat:
Po uruchomieniu serwer zabezpieczeń komunikuje się z kluczem HASP bądź z serwerem kluczy wirtualnych dla kluczy wirtualnych w celu odczytania maksymalnej puli licencji, którą dysponuje.
W momencie pobrania przez klienta licencji, serwer zapamiętuje ten fakt i „odejmuje” pobraną licencję z dostępnej puli.
W momencie wylogowania się klienta, zwalniane są pobrane wcześniej przez niego licencje.
Dla właściwego zrozumienia zachowania programu w pewnych szczególnych przypadkach, pomocne będą poniższe uwagi.
Okresowa kontrola Klucza HASP
W trakcie pracy, co pewien czas, serwer zabezpieczeń sprawdza obecność klucza HASP. Oznacza to, że jeśli w trakcie pracy serwera zabezpieczeń zostanie wyjęty klucz HASP, praca wszystkich zalogowanych do serwera aplikacji ERP XL zostanie zablokowana.
Wielokrotne logowanie
Jeżeli Użytkownik na tym samym komputerze uruchomi wielokrotnie program ERP XL (różne moduły), to pobierze z serwera każdą licencję tylko jeden raz.
Awaryjne zakończenie pracy
Jeżeli Użytkownik aplikacji ERP XL zakończy jej pracę inaczej niż poprzez wybranie opcji: Koniec pracy i nie nastąpi wylogowanie z serwera zabezpieczeń, to licencje pobrane przez tego Użytkownika będą zablokowane jeszcze przez pewien określony czas (domyślnie 1800 sekund). Po tym czasie licencje zostaną zwrócone do puli i inny Użytkownik będzie mógł je pobrać.
Blokowanie licencji dotyczy wyłącznie Użytkowników uruchamiających program ERP XL z innych komputerów. Zgodnie z zasadą opisaną w rozdziale Wielokrotne logowanie, jeżeli Użytkownik zakończy pracę programu ERP XL inaczej niż poprzez wybranie opcji: Koniec pracy, to będzie mógł na tym samym komputerze ponownie uruchomić program ERP XL, wykorzystując wcześniej pobraną licencję, która nie została jeszcze automatycznie zwolniona
Klucz HASP
Serwer zabezpieczeń komunikuje się bezpośrednio z kluczem HASP, który stanowi sprzętowe zabezpieczenie, służące do weryfikacji posiadanej puli licencji.
Zabezpieczenie może być realizowane za pomocą kluczy typu: MemoHasp lub NetHasp. Klucze te są dostępne dla portów USB lub LPT. Dostępne są również klucze na karcie PCIMCIA. Mają one zastosowanie w komputerach przenośnych stosowanych w celach prezentacyjnych lub testowych.
W przypadku klucza MemoHasp musi być on wpięty w lokalny port komputera, na którym znajduje się serwer zabezpieczeń.
Modele instalacji ERP XL z serwerem klucza HASP
Instalacja jednostanowiskowa

Instalacja sieciowa

Instalacja sieciowa z wyodrębnionym serwerem zabezpieczeń

Współpraca XL-a z Menadżerem Kluczy
Instalacja Menadżera kluczy
Aplikacja Comarch ERP Menadżer Kluczy dostępna jest na stronach walidowanych dla Partnerów w sekcji Comarch ERP XL, podsekcja Pobierz wersję. Szczegółowy opis instalacji zawarty jest w dokumentacji do aplikacji Comarch ERP Menadżer Kluczy.
Ogólna konfiguracja
Odwołanie do klucza
W Menadżerze Kluczy może znajdować się więcej, niż jeden klucz. Może być to jeden klucz fizyczny HASP i klucze wirtualne bądź same klucze wirtualne. W systemie Comarch ERP XL należy więc wskazać odwołanie do konkretnego klucza z którego mają być pobierane licencje. Pełny wpis powinien mieć format:Nazwa serwera\nazwa instancji::numer klucza, zgodnie z poniższym zrzutem:

Od v 2020.1 wprowadzono możliwość łączenia się bezpośrednio z menadżerem klucza bez pośrednictwa serwera SQL za pomocą protokołu http , domyślnym portem po którym odbywa się komunikacja jest port 5150 , ponieważ łączymy się bez pośrednictwa serwera SQL nie podajemy nazwy instancji a jedynie nazwy serwera i po :: nr klucza lub gdy w instalacji jest obecny jeden klucz zabezpieczający samą nazwę serwera.
Wartości te zapisywane są w rejestrze systemu Windows pod ścieżką:
HKEY_CURRENT_USER\Software\CDN\HASPXL:

Informacje o pobranych licencjach
Informacje o aktualnie pobranych licencjach możemy uzyskać z poziomu interfejsu programu ERP XL, wykorzystując funkcje serwera zabezpieczeń lub używając procedury serwerowej xp_HASPSetIdleTime lub z poziomu Monitora Menadżera Kluczy.
Aby wyświetlić informację o pobranych licencjach z poziomu programu ERP XL należy wybrać z menu polecenie: Pomoc/O programie/Informacje o kluczu sprzętowym:

Wyświetlone informacje zawierają: nazwę modułu, aktualną ilość dostępnych licencji, początkową ilość licencji, status oraz datę pobrania licencji.
Drugą możliwością sprawdzenia informacji o pobranych licencjach z klucza HASP jest wywołanie procedury xp_HASPLicenceStateInfo z bazy master:

Trzecią możliwością sprawdzenia ilości pobranych licencji jest Monitor Menadżera Kluczy. W tym celu z menu kontekstowego należy wybrać opcję: Pokaż konfigurację i przejść do zakładek: Dostępne moduły (informacje ogólne dotyczące ilości dostępnych oraz pobranych licencji) oraz: Pobrane moduły (informacje szczegółowe uwzględniające pobranie licencji przez poszczególnych operatorów):


Informację tę można również wywołać na dowolnym komputerze w sieci wpisując adres serwera na którym zainstalowany został Menadżer Kluczy w przeglądarce internetowej wraz z numerem portu TCP/IP:
http://Nazwa_Serwera:5150 lub http://IP_Adres_Serwera:5150:

W przypadku, gdy w Menadżerze Kluczy znajduje się więcej, niż jeden klucz należy do powyższych wpisów dodać odwołanie: http://Nazwa_Serwera:5150/numer klucza.
Ustawienie czasu zwolnienia licencji
Serwer HASP posiada zabezpieczenie przed zablokowaniem licencji pobranych, a niezwróconych przez program ERP XL. System ten jest oparty o okresową komunikację programu ERP XL z serwerem zabezpieczeń. Jeżeli program nie skomunikuje się z serwerem przez pewien określony czas, serwer uznaje proces za „martwy” i zwalnia pobrane przez tego klienta licencje.
System ten może powodować problemy podczas przetwarzania przez program długotrwałych operacji wsadowych. Jeśli czas trwania operacji przekroczy czas oczekiwania serwera na zwolnienie licencji, serwer wyloguje klienta i program ERP XL wyświetli komunikat o braku licencji.
Z kolei ustawienie zbyt dużej wartości będzie blokować możliwość uruchamiania programu na innych stanowiskach w przypadku niepoprawnego zakończenia pracy z programem ERP XL (patrz: Awaryjne zakończenie pracy).
Domyślny czas oczekiwania na zwolnienie licencji przez serwer wynosi 30 minut. Czas ten możemy zmienić bezpośrednio w rejestrze Windows w kluczu: HKEY_LOCAL_MACHINE\SOFTWARE\ERP\HASP\IdleTime (patrz: Konfiguracja serwisu HASP) lub wykorzystując procedurę serwerową xp_HASPSetIdleTime, podając czas oczekiwania w sekundach. Aby dokonać ustawienia tego czasu na pół godziny można wykonać następujące polecenie SQL:
execute xp_HASPSetIdleTime @IdleTime=1800
Równocześnie aktualne ustawienie czasu oczekiwania można sprawdzić poprzez procedurę xp_HASPGetIdleTime, poleceniem:
execute xp_HASPGetIdleTime
Ustalając czas oczekiwania, należy pamiętać o tym, że ustawienie zbyt małej wartości będzie powodować problemy przy wykonywaniu długotrwałych operacji wsadowych (niezalecane jest ustawienie tego czasu poniżej 300 sekund).
IdleTime można również ustawić w poziomu Menadżera kluczy, zakładka Konfiguracja, okno Zaawansowane:

Czas, jaki upłynął od ostatniej komunikacji systemu ERP XL z serwerem zabezpieczeń, można skontrolować w oknie przeglądarki www w kolumnie „Zalogowani użytkownicy” (ostatni człon wpisu) lub bezpośrednio w programie ERP XL (należy wybrać z menu polecenie: Pomoc/O programie/Informacje o kluczu sprzętowym i ikonką lupy wybrać interesującą nas licencje).

Informacja taka zawarta jest także w Menadżerze Kluczy, zakładka Pobrane Moduły:

Programowanie klucza HASP
Klucz HASP programuje się celem aktualizacji posiadanej puli licencji bądź w celu aktualizacji daty ważności prawa do aktualizacji wersji systemu Comarch ERP XL. Do programowania klucza służy plik RUS, który można uzyskać w dziale Sprzedaży COMARCH bądź na stronach iZam. W celu wykonania czynności programowania należy z menu kontekstowego Menadżera Kluczy wywołać polecenie:

XL012 - Wydruki tekstowe
Ogólna struktura mechanizmu wydruków tekstowych
Wydruki tekstowe zostały oparte o mechanizm wydruków XML, dlatego na początku w skrócie zostanie nakreślona zasada działania wydruków XML.
Wydruki XML
Definicja wydruku XML zawiera 4 sekcje: [SQL], [XSL], [FILE] i [RUN]
Sekcja SQL
Sekcja ta zawiera zapytanie (lub zapytania SQL), które zostaną zadane do bazy danych. Na podstawie zwróconych recordsetów tworzony jest plik XML o strukturze:
<ROOT>
<RECORDSET1>
<RECORD NazwaKolumny1=”wartość kolumny 1” NazwaKolumny2=”wartość kolumny 2” .../>
<RECORD NazwaKolumny1=”wartość kolumny 1” NazwaKolumny2=”wartość kolumny 2” .../>
</RECORDSET1>
<RECORDSET2>
<RECORD NazwaKolumny1=”wartość kolumny 1” NazwaKolumny2=”wartość kolumny 2” .../>
<RECORD NazwaKolumny1=”wartość kolumny 1” NazwaKolumny2=”wartość kolumny 2” .../>
</RECORDSET2>
</ROOT>
Tagów RECORDSETn jest tyle, ile recordsetów zwracają zapytania z sekcji [SQL] (są one kolejno numerowane).
Tagów RECORD w każdym tagu RECORDSETn jest tyle, ile wierszy zwróciło dane zapytanie.
Każdy tag RECORD posiada tyle atrybutów, ile kolumn zwraca zapytanie. Nazwa danego atrybutu odpowiada nazwie kolumny, a wartość atrybutu - wartości kolumny, np.
<RECORD Knt_GIDNumer=”1” Knt_Kod=”COMARCH” />
Sekcja XSL
Sekcja XSL zawiera schemat, który jest „nakładany” na plik XML wygenerowany zgodnie z opisem w poprzednim punkcie. W wyniku tego „nałożenia” powstaje plik wynikowy.
Sekcja FILE
Sekcja FILE zawiera nazwę pliku, pod jaką zostanie zapisany wynikowy plik XML. Jeżeli sekcja FILE jest pusta, wówczas plik wynikowy zostanie zapisany w katalogu tymczasowym pod nazwą rptNNN.tmp (gdzie NNN jest liczbą szesnastkową)
Sekcja RUN
Sekcja RUN zawiera nazwę programu, do którego zostanie przesłany plik wynikowy. Jeżeli sekcja RUN jest pusta, wówczas plik wynikowy zostanie wysłany do programu domyślnego ze względu na rozszerzenie pliku, np.:
[FILE]
C:\wynik.xml
[RUN]
spowoduje zapisanie pliku wynikowego do pliku C:\wynik.xml i otwarcie go za pomocą przeglądarki internetowej.
Parametry dynamiczne
Cała definicja wydruku XML jest poddawana analizie przez silnik parametrów dynamicznych. Może to być wykorzystywane w dwóch przypadkach:
- do przekazywania parametrów dynamicznych wydruku (np. filtr aplikacji, opis wydruku itp.),
- do wywoływania okienka z parametrami, które do wydruku przekazuje użytkownik.
Aplikacja może przekazać do wydruku listę parametrów dynamicznych, zgodnie z zawartością zakładki Parametry na oknie Konfiguracja wydruków.
Dodatkowo użytkownik może definiować własne parametry dynamiczne, dla których, w chwili wykonywania wydruku, zostanie wyświetlone okno z zapytaniem o wartość parametru.
Opis działania parametrów dynamicznych znajduje się w biuletynie poświęconym modułowi analiz (tworzenie wykresów)
Działanie parametrów dynamicznych zostanie w dalszej części zilustrowane na przykładzie.
Wydruk tekstowy
Do potrzeb wydruków tekstowych przygotowany został program PrintTxt.EXE, który jako parametr wejściowy otrzymuje plik XML o określonej strukturze i w wyniku swego działania przetwarza ten XML na plik tekstowy, który jest kierowany na drukarkę.
Pełny mechanizm generowania wydruku polega na przygotowaniu pliku XML o określonej strukturze, a następnie przetworzenie go przez program PrintTxt.EXE
Struktura plików XML dla wydruków tekstowych
Plik XML, który jest przekazywany do programu PrintTxt.EXE powinien mieć następującą strukturę:
<ROOT> <!-- one, req -->
<RAPORT> <!-- many, req -->
<PARAM/> <!-- many, opt -->
<RPT_HEADER> <!-- one, opt -->
<LINE> <!-- many, opt -->
<PARAM/> <!-- many, opt -->
<FIELD/> <!-- many, opt -->
</LINE>
</RPT_HEADER>
<PG_HEADER> <!-- one, opt -->
<LINE> <!-- many, opt -->
<PARAM/> <!-- many, opt -->
<FIELD/> <!-- many, opt -->
</LINE>
</PG_HEADER>
<DETAIL> <!-- many, req -->
<LINE> <!-- many, req -->
<PARAM/> <!-- many, opt -->
<FIELD/> <!-- many, opt -->
</LINE>
</DETAIL>
<PG_FOOTER> <!-- one, opt -->
<LINE> <!-- many, opt -->
<PARAM/> <!-- many, opt -->
<FIELD/> <!-- many, opt -->
</LINE>
</PG_FOOTER>
<RPT_FOOTER> <!-- one, opt -->
<LINE> <!-- many, opt -->
<PARAM/> <!-- many, opt -->
<FIELD/> <!-- many, opt -->
</LINE>
</RPT_FOOTER>
</RAPORT>
</ROOT>
Oczywiście komentarze nie muszą występować w pliku XML - tutaj zostały dodane, aby oznaczyć czy dany tag ma występować, czy też nie: many oznacza, że tag może wystąpić wiele razy, one oznacza, że dany tag (na określonym poziomie) może wystąpić tylko raz, req oznacza, że dany tag jest wymagany, opt oznacza, że dany tag jest opcjonalny.
Zawartość tagów
ROOT
Na najwyższym poziomie pliku XML musi wystąpić tylko jeden tag o nazwie ROOT
RAPORT
RAPORT zawiera definicję pojedynczego wydruku. Na ogół ROOT zawierał będzie jeden tag RAPORT, jednakże w przypadku konstruowania wydruków seryjnych możliwe jest umieszczenie wielu tagów RAPORT. Istotne jest to, że dla każdego tagu RAPORT zerowana jest numeracja stron.
RPT_HEADER
Tag ten zawiera definicję wyglądu nagłówka raportu. Nagłówek ten zostanie wydrukowany jeden raz na początku raportu.
PG_HEADER
Tag ten zawiera definicję wyglądu nagłówka strony. Nagłówek ten zostanie wydrukowany na początku każdej strony.
DETAIL
Tag ten zawiera definicję zawartości wierszy raportu.
PG_FOOTER
Tag ten zawiera definicję wyglądu stopki strony. Stopka ta zostanie wydrukowana na końcu każdej strony.
RPT_FOOTER
Tag ten zawiera definicję wyglądu stopki raportu. Stopka ta zostanie wydrukowana jeden raz na końcu raportu.
PARAM | P
Tag ten zawiera definicję parametrów. Parametry są zmiennymi raportu, w których można zapisywać pewne informacje (np. takie, do których się potem wielokrotnie odwołujemy) czy dokonywać pewnych obliczeń (np. sumy). Każdy raport posiada pewną predefiniowaną listę parametrów systemowych (takich jak np. numer strony, numer linii, typ drukarki itp.). Nazwy parametrów systemowych są poprzedzone znakiem @.
Jeżeli odwołujemy się do jakiegoś parametru (np. przy obliczeniach) to jego nazwę poprzedzamy znakiem @, stąd odwołanie do parametrów systemowych poprzedzone jest poprzez @@ (np. @@PAGENO)
Tag PARAM może posiadać następujące atrybuty:
name | nazwa parametru |
---|---|
type | typ parametru Dopuszczalne wartości to text i number. Domyślnym typem jest text Uwaga: typ parametru jest istotny ze względu na operacje dokonywane na nich. Przykładowo, mając dwa parametry P1 i P2 o wartościach odpowiednio 1 i 2, jeżeli wykonamy na nich operację @P1+@P2, to w przypadku parametrów typu number w wyniku otrzymamy 3, a jeśli co najmniej jeden z nich będzie typu text, to w wyniku otrzymamy 12 |
value | wartość parametru |
calc | przyjmuje wartości true i false (domyślnie false). Określa, czy wartość parametru jest podana przez wartość (calc=”true”), czy przez wyrażenie (calc=”false”). Przykładowo, jeśli value=”@P1+@P2” calc=”true” to jako wartość parametru zostanie podstawiony wynik wykonania działania na parametrach P1 i P2. Jeżeli natomiast calc=”false”, wówczas jako wartość parametru zostałby podstawiony po prostu tekst @P1+@P2. |
Tagi PARAM mogą być elementami tagu RAPORT (zainicjalizowanie lub jednorazowe ustawienie parametru na początku wydruku). W tym miejscu można ustawiać niektóre parametry systemowe (np. typ drukarki, nazwa urządzenia wyjściowego) oraz zapamiętywać w zmiennych stałe wartości parametrów, które będą później wielokrotnie wykorzystywane w raporcie.
Tagi PARAM mogą być również elementami tagów LINE . wówczas są one przeliczane dla każdej linii.
Dla wydruku definiowane są następujące parametry systemowe
@PRINTER | nazwa urządzenia wyjściowego (np. LPT1, \\KOMPUTER\DRUKARKA, C:\PLIK.TXT – jeżeli chcemy w wydruku zaszyć urządzenie wyjściowe). Możemy również zastosować drukowanie na drukarkę Windows służy do tego parametr dynamiczny ?@Hs100_NQ|Printer:''@?. |
---|---|
@VIEWER | nazwa programu służącego do podglądu wydruku, domyślnie jest to „notepad.exe” . |
@CODEPAGE | sposób kodowania polskich znaków na drukarce. Aktualnie dostępne wartości MAZOVIA, LATIN i EMULATOR (oznacza tworzenie polskiej litery poprzez wydrukowanie litery łacińskiej, cofnięcie karetki i wydrukowanie ogonka lub akcentu). Ustawienie tego parametru inicjalizuje wartość parametrów @INPUTCODE i @OUTPUTCODE. Domyślnie wartość pusta, oznaczająca brak przekodowania. Zagadnienie dotyczące przekodowania polskich liter omówione jest szczegółowo dalej. |
@INPUTCODE | tekst wejściowy dla algorytmu przekodowania polskich liter. Inicjalizowany zgodnie z parametrem @CODEPAGE. |
@OUTPUTCODE | tekst wyjściowy dla algorytmu przekodowania polskich liter. Inicjalizowany zgodnie z parametrem @CODEPAGE. |
@PRINTERTYPE | typ drukarki. Aktualnie dostępne wartości to EPSON i PCL. Powodują ustalenie kodów sterujących dla drukarki (w szczególności tryby zagęszczone i pogrubione) |
@FONT_NARROW | kod przełączenia drukarki w tryb czcionki zagęszczonej. Inicjalizowany zgodnie z ustawieniem parametru @PRINTERTYPE |
@FONT_NARROW_ | kod końca tryby czcionki zagęszczonej. Inicjalizowany zgodnie z ustawieniem parametru @PRINTERTYPE |
@FONT_BOLD | kod przełączenia drukarki w tryb czcionki pogrubionej. Inicjalizowany zgodnie z ustawieniem parametru @PRINTERTYPE |
@FONT_BOLD_ | kod końca trybu czcionki pogrubionej. Inicjalizowany zgodnie z ustawieniem parametru @PRINTERTYPE |
@CR | znak cofnięcia karetki do początku strony (domyślnie znak o kodzie 13) |
@LF | znak przejścia do nowej linii (domyślnie znak o kodzie 10) |
@FF | znak końca strony (domyślnie znak o kodzie 12) |
@BS | znak cofnięcia karetki o jeden znak (domyślnie znak o kodzie 8) |
@PAGENO | numer strony |
@PAGETOT | łączna liczba stron wydruku |
@LINENO | numer linii na stronie |
@PAGELENGTH | liczba wierszy na stronie (domyślnie 60) |
LINE | L
Tag ten zawiera definicję wyglądu linii oraz (opcjonalnie) definicje parametrów. Przy przetwarzaniu tagu LINE najpierw obliczane są parametry zdefiniowane dla danej linii, a następnie na podstawie zawartości tagów FIELD tworzony jest .wygląd. linii na wydruku. Po przetworzeniu tagu LINE do pliku wynikowego dodawany jest automatycznie znak nowej linii
FIELD | F
Tag FIELD zawiera definicję pojedynczego pola w drukowanej linii. Tag ten może posiadać następujące atrybuty:
name | Jeżeli atrybut nazwa jest ustawiony, to pole jest traktowane tak jak parametr, tzn. wartość aktualnie drukowanego pola jest zapamiętywana jako zmienna |
---|---|
type | Typ pola. Dopuszczalne wartości to text i number (domyślnie text). Od ustawienia typu pola zależy jego formatowanie, wyrównywanie itp. |
value | Wartość pola. Może być podana jako wartość (jeżeli calc=”false”) lub jako wyrażenie (jeżeli calc=”true”) |
align | Sposób wyrównania pól. Dopuszczalne wartości to left, right i center (domyślnie: brak wyrównania dla tekstu i wyrównanie do prawej dla liczb) |
width | Szerokość pola. |
prec | Dla pól typu number oznacza liczbę miejsc po przecinku. |
calc | Określa, czy value zawiera wartość (calc=”false”) czy wyrażenie (calc=”true”) |
fill | Znak dopełniający pole do pełnej szerokości podanej w width. Domyślnie spacja. |
hide | Jeżeli hide=”true” to pole jest ukrywane |
hidezero | Jeżeli hidezero=”true” to dla pól typu number ukrywane są nieznaczące miejsca po przecinku (w ich miejsce pojawia się spacja) |
blankzero | Jeżeli blankzero=”true” to pola typu number o wartości 0 są ukrywane. |
Wszędzie tam gdzie parametr może przyjmować wartości true lub false możliwe jest również wprowadzanie wyrażeń. Poniższy przykład ilustruje sposób wydrukowania pola tylko na ostatniej stronie: <LINE>
<FIELD value=”napis na stronie” hide=”@@PAGENO!=@@PAGETOT” />
</LINE>
Parametry systemowe a typ drukarki
W poniższym rozdziale zostaną omówione kwestie ustalania kodów sterujących dla drukarek oraz przekodowania polskich liter.
Ustawienie typu drukarki
Obecnie program drukujący potrafi obsługiwać 2 standardy drukarek: EPSON (drukarki igłowe) oraz PCL (większość drukarek atramentowych i laserowych). Ustalenie typu drukarki jest niezbędne ze względu właściwą obsługę kodów sterujących drukarki, w szczególności przełączania pisma na pogrubione i zawężone.
Jeżeli drukarka wymaga innych kodów sterujących, można to osiągnąć poprzez ustawienie parametrów:
- @FONT_NARROW
- @FONT_NARROW_
- @FONT_BOLD
- @FONT_BOLD_
Przykładowo, ustawienie kodów równoważnych dla trybu EPSON można uzyskać poprzez wpisanie:
<PARAM calc="true" type="text" name="@FONT_NARROW" value="String.fromCharCode(15)"/>
<PARAM calc="true" type="text" name="@FONT_NARROW_" value="String.fromCharCode(18)"/>
<PARAM calc="true" type="text" name="@FONT_BOLD" value="String.fromCharCode(14)"/>
<PARAM calc="true" type="text" name="@FONT_BOLD_" value="String.fromCharCode(20)"/>
Natomiast ustawienie kodów równoważnych dla trybu PCL można uzyska poprzez wpisanie:
<PARAM calc="true" type="text" name="@FONT_NARROW" value="String.fromCharCode(27)+'&k2S'"/>
<PARAM calc="true" type="text" name="@FONT_NARROW_" value="String.fromCharCode(27)+'&k0S'"/>
<PARAM calc="true" type="text" name="@FONT_BOLD" value="String.fromCharCode(27)+'(s7B'"/>
<PARAM calc="true" type="text" name="@FONT_BOLD_" value="String.fromCharCode(27)+'(s0B'"/>
Ustawienie standardu polskich liter
Obecnie program drukujący potrafi obsługiwać polskie litery w standardach Mazovia i Latin oraz emulować polskie litery poprzez wydruk litery łacińskiej i dodanie do niej akcentu czy ogonka.
Jeżeli drukarka obsługuje polskie litery w jakimś innym standardzie, można uzyskać wydruki poprzez ustalenie wartości parametrów:
- @INPUTCODE lista polskich znaków w standardzie Windows, oddzielonych znakami |
- @OUTPUTCODE lista polskich znaków w standardzie drukarki, oddzielonych znakami |
Przykładowo, aby uzyskać przekodowanie polskich liter na litery łacińskie (wydruk bez polskich liter) należałoby wpisać:
<PARAM type="text" name="@INPUTCODE" value="Ą|ą|Ć|ć|Ę|ę|Ł|ł|Ń|ń|Ó|ó|Ś|ś|Ź|ź|Ż|ż|"/>
<PARAM type="text" name="@OUTPUTCODE" value="A|a|C|c|E|e|L|l|N|n|O|o|S|s|Z|z|Z|z|"/>
Przykład definicji wydruku
Zasady budowania definicji wydruku zostaną omówione na przykładzie wydruku Faktury sprzedaży. Przykład ten został wybrany na względu na stosunkowo prostą formę wydruku oraz powszechność w użyciu. Definicja tego wydruku jest w standardowej bazie wydruków programu. W niniejszym biuletynie omówimy tylko ciekawsze fragmenty formatu wydruku.
Projektowanie wydruku
Dla potrzeb sprawnego wykonania wydruku należy wcześniej dokładnie zaplanować jego wygląd. Ze względu na to, że na wydrukach tekstowych wyrównanie kolumn uzyskuje się przez dobór ich szerokości (liczonej w znakach) szczególnie ważne jest zaplanowanie rozkładu poszczególnych pól na wydruku. Do potrzeb wydruku przyjęto, że na stronie mieści się 80 znaków w trybie normalnym oraz 133 znaki w trybie zagęszczonym.
Sekcja SQL
Sekcja SQL zawiera pięć zapytań - tak więc do „pierwotnego” pliku XML zostanie podstawionych pięć recordsetów.
Select Frm_Nazwa1, Frm_Nazwa2, Frm_Nazwa3, Frm_KodP+' '+Frm_Miasto As Frm_Miasto, Frm_Ulica, 'NIP: '+ Frm_NIP As Frm_Nip From CDN.Firma where Frm_GIDNumer=1
Powyższe zapytanie wyciąga dane firmy (pieczątkę firmy) z odpowiedniej tabeli.
exec CDN.wydrTabelkaPlatnosciIVat ??_QFiltr
Powyższe zapytanie wyciąga tabelkę płatności oraz vat dla danego dokumentu. Jak widzimy w sekcji SQL oprócz zapytania SELECT możemy również wywołać procedurę serwerową - klauzula EXEC (EXECUTE).
Zastosowanie w sekcji parametrów procedury wyrażenia ??_QFiltr spowoduje podstawienie w jego miejsce filtru przekazanego z listy (a więc wydruk będzie zawierał dokładnie płatności i tabelę VAT dla wybranego dokumentu). Użycie wywołania wyrażenia ??_QFiltr było możliwe dzięki temu, że we wcześniejszym zapytaniu (w sekcji WHERE klauzuli SQL) użyliśmy deklaracji tego parametru ?@H200_NQ|Filtr:’’@?. Warto zwrócić uwagę, że parametr dynamiczny został wywołany z opcją H, co spowoduje, że użytkownik nie będzie monitowany o podanie jego wartości (parametr zostanie przekazany z aplikacji). Kolejną opcją, na którą warto zwrócić uwagę to opcja NQ w deklaracji parametru i Q (brak N w tej opcji) w wywołaniu tego parametru. Oznacza ona, że przekazany filtr nie będzie otaczany apostrofami (NQ) lub będzie (Q).
Sekcja XSL
Początkowy fragment definicji, tzn.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method = "xml" omit-xml-declaration="yes"/>
<xsl:preserve-space elements="*"/>
<xsl:template match="/">
<xsl:for-each select="ROOT">
<xsl:value-of disable-output-escaping="yes" select="string('<?xml version="1.0"
encoding="windows-1250"?>')"/>
można w zasadzie uznać za stały. Ustala on sposób przetwarzania „wejściowego” pliku XML oraz ustawia nagłówek pliku wyjściowego. Następnie rozpoczyna się właściwa deklaracja definicji wydruku.
RAPORT
W tagu RAPORT jest ustalonych kilka tagów PARAM (a więc zdefiniowanych kilka zmiennych raportu). Ich znaczenie jest następujące:
Poniższe 3 tagi zawierają ustawienia wartości parametrów systemowych, powodujące ustalenie portu wydruku jako LPT1, typu drukarki jako EPSON i standardu polskich liter na drukarce jako MAZOVIA
<PARAM type="text" name="@PRINTER" value="LPT1"/>
<PARAM type="text" name="@PRINTERTYPE" value="EPSON"/>
<PARAM type="text" name="@CODEPAGE" value="MAZOVIA"/>
Kolejny tag:
<xsl:apply-templates select="RECORDSET1"/>
powoduje wykonanie template dla recordsetu 1. Są z nim związane następujące dalsze fragmenty w definicji:
<xsl:template match="RECORD" mode="r1">
<P type="text" name="FRM_NAZWA1"><xsl:attribute name="value"><xsl:value-of select="@Frm_Nazwa1" /></xsl:attribute></P>
<P type="text" name="FRM_NAZWA2"><xsl:attribute name="value"><xsl:value-of select="@Frm_Nazwa2" /></xsl:attribute></P>
<P type="text" name="FRM_NAZWA3"><xsl:attribute name="value"><xsl:value-of select="@Frm_Nazwa3" /></xsl:attribute></P>
<P type="text" name="FRM_ULICA" ><xsl:attribute name="value"><xsl:value-of select="@Frm_Ulica" /></xsl:attribute></P>
<P type="text" name="FRM_MIASTO"><xsl:attribute name="value"><xsl:value-of select="@Frm_Miasto" /></xsl:attribute></P>
<P type="text" name="FRM_NIP" ><xsl:attribute name="value"><xsl:value-of select="@Frm_Nip" /></xsl:attribute></P>
</xsl:template>
Cały ten zabieg powoduje podstawienie wartości pól odczytanych z pierwszego recordsetu do odpowiednich parametrów.
RPT_HEADER
W tagu RPT_HEADER znajduje się pieczątka firmy, dane faktury (numer, data wystawienia, data sprzedaży, numer konta bankowego, dane kontrahentów itp.). Informacje te będą drukowane tylko na pierwszej stronie wydruku.
Zawiera on kilkanaście tagów L [LINE] . tak więc nagłówek raportu będzie liczył tyleż linii.
Omówimy tylko kilka linii na które należy zwrócić uwagę:
<L>
<F value="+-Sprzedawca:" width="42" fill="-"/>
<F value="+" width="5"/>
<F calc="true" value="@@FONT_BOLD"/>
<F value="Faktura VAT"/>
<F calc="true" value="@@FONT_BOLD_"/>
</L>
W powyższej linii na wydruku będzie wydrukowane
+-Sprzedawca:---------------------------+ Faktura VAT
Czyli na 42 znakach (width=”42”) zostanie wydrukowany tekst „+-Sprzedawca” (zawartość atrybutu value), 30 znaków minus - (minus bo atrybut fill="-", 30 bo 42-12 gdzie 42 to wartość atrybutu width, a 12 to długość stringu w wartości atrybutu value). Jest to pierwsze pole w linii. Drugie pole to + i cztery spacje, następne pole to pogrubiony napis Faktura VAT (dzięki wstawieniu znaków sterujących zapisanych w parametrze @FONT_BOLD). Następne linie będą drukowane fontem normalny, ponieważ został wstawiony znacznik końca fontu pogrubionego (@FONT_BOLD_).
<L>
<F value="|" width="2"/>
<F calc="true" value="@FRM_NAZWA1" width="40"/>
<F value="|"/>
</L>
W powyższej linii mamy wstawioną nazwę firmy na długości 40 znaków otoczonej znakami |. Nazwa firmy znajduje się w parametrze @FRM_NAZWA1, którego wartość brana jest z zapytania SQL omawianego w sekcji SQL.
<L hide="!(@NAB_NAZWA2!='' || @ODB_NAZWA2!='')">
<F calc="true" value="@NAB_NAZWA2" width="60"/>
<F calc="true" value="@ODB_NAZWA2" width="60"/>
</L>
Powyższa linia zawiera drugi człon nazwy kontrahenta głównego (nabywca) oraz docelowego (odbiorca). Warto zwrócić uwagę na atrybut hide, który steruje wyświetlaniem tej linii. Linia ta będzie drukowana wtedy, gdy jedna z wartości @NAB_NAZWA2 lub @ODB_NAZWA2 będzie niepusta, czyli jeżeli na odpowiednich adresach kontrahentów będą wypełnione drugie pola w nazwie kontrahenta. Dzięki temu unikniemy „pustych” linii na wydruku.
PG_HEADER
Kolejnym tagiem jest PG_HEADER. Zawiera on 3 tagi L [LINE], tak więc nagłówek strony będzie liczył 3 linie, które są nagłówkiem tabelki z pozycjami faktury.
DETAIL
Kolejny tag DETAIL zawiera pozycje faktury. Do jego wygenerowania wykorzystany jest template tworzący linię dla każdego wiersza z recordsetu czwartego
<DETAIL>
<xsl:apply-templates select="RECORDSET4"/>
</DETAIL>
i dalej
<xsl:template match="RECORDSET4">
<xsl:apply-templates select="RECORD" mode="r4"/>
</xsl:template>
<xsl:template match="RECORD" mode="r4">
.....
</xsl:template>
Każda pozycja na fakturze generuje na wydruku jedną linię. W ramach tej linii obliczane są pewne zmienne oraz drukowane pola.
RPT_FOOTER
RPT_FOOTER zawiera podsumowanie całego wydruku, czyli tabelkę płatności, tabelkę VAT, kwotę dokumentu itp.
PG_FOOTER
PG_FOOTER zawiera dolne obramowanie tabelki pozycji faktury, stronę wydruku oraz informuje o nazwie programu, z którego powstał wydruk.
Proszę zwrócić uwagę, że linia, która jest obramowaniem tabelki pozycji drukowana na ostatniej stronie wygląda inaczej niż linia drukowana na innych stronach (ze względów estetycznych, na ostatniej stronie, linia ta stanowi równocześnie górne obramowanie tabelki z płatności i vat). Zostało to uzyskane przez wykorzystanie atrybutu hide.
<L><F value="+----+------------+--------------------------------------------+-----------------+--------------+-----+--------------+--------------+" hide="@@PAGENO==@@PAGETOT"/></L>
<L/>
<L hide="@@PAGENO==1">
<F value="Strona:" width="10"/>
<F calc="true" value="@@PAGENO" width="3" type="number"/>
<F value="/"/>
<F calc="true" value="@@PAGETOT" width="3" type="number"/>
<F value="CDN XL (C) COMARCH S.A." align="right" width="120"/>
</L>
<L hide="@@PAGENO!=1"><F value="ERP XL (C) COMARCH S.A." align="right" width="133"/></L>
Warto zaznaczyć również, że numer strony w stopce strony nie drukowany jest na pierwszej stronie tylko na każdej następnej (warunek @@PAGENO==1). Na pierwszej stronie, drukowany jest w nagłówku raportu RPT_HEADER
Sekcja FILE
Sekcja FILE nie została wypełniona „pomocniczy” plik XML będzie więc zapisywany do katalogu TEMP.
Jeżeli w sekcji file wpiszemy np. C:\FS.XML to zostanie stworzony plik XML wygenerowany poprzez wydruk XML, jest to plik będący bezpośrednio działaniem mechanizmu wydruków XML i jest on poddawany dalszej obróbce przez program PrintTXT.
W ramach testów mechanizmu wydruków można taki plik wygenerować i zobaczyć jego strukturę.
Sekcja RUN
Sekcja RUN zawiera wywołanie programu PrintTXT.EXE, przetwarzającego plik XML na plik tekstowy wysyłany do drukarki.
Wymagania systemowe
Wymagania systemowe dla poprawnego działania systemu ERP XL zostały opisane w dokumencie Wymagania Minimalne Systemu do aktualnej wersji...
Dodatkowo dla poprawnego działania wydruków tekstowych konieczne są komponenty:
- Microsoft Windows Script
- Microsoft Windows Script Control
Wersje instalacyjne powyższych komponentów oraz więcej informacji na ich temat można znaleźć w lokalizacji:
http://msdn.microsoft.com/library/default.asp?url=/downloads/list/webdev.asp
Drukowanie tekstowe w usługach terminalowych
Program printtxt.exe który obsługuje drukowanie txt nie pozwala na drukowanie gdy program XL pracuje w usługach terminalowych na drukarki zmapowane w sesji terminalowej. Do obsługi drukowania na drukarkach mapujących się w usługach terminalowych wykorzystano drukowania porze kanału wirtualne. Aby móc drukować wydruki txt w takim środowisku należy:
- W konfiguracji Stanowiska w zakładce Wydruki i wykresy zaznaczyć parametrWydruki tekstowe przez kanał wirtualny
- Zainstalować na komputerze gdzie podłączone są drukarki i gdzie uruchamia się klienta połączenia terminalowego program: PrintTxtDVC.exe który znajduje się w katalogu XL-a
XL053 - Wymiana dokumentów za pomocą systemu ECOD
Informacje wstępne
W celu przygotowania baz do wymiany dokumentów przez ECOD, należy:
- ustawić numery GLN na kontrahentach oraz na ich adresach wysyłkowych.
- ustalić numer GLN na pieczątce firmy oraz pamiętać o dodaniu pieczątki w strukturze firmy.
- ustalić kody EAN na towarach
- wskazać folder, do którego będą przekazywane odpowiednie pliki xml: Parametry komputera/Wymiana danych (w zależności od sposobu wymiany dokumentów)

Z listy rozwijalnej można wybrać sposób generowania folderów podrzędnych, mogą one powstawać w zależności od wskazanych opcji.

Zaznaczając parametr „Przenoś wczytane do podkatalogu” system utworzy dodatkowy folder, w którym będzie przechowywał pliki xml, które zostały już wczytane do systemu poprzez ECOD.
Wymiana dokumentów za pomocą systemu ECOD
Funkcjonalność programu Comarch ERP XL pozwala na wymianę pomiędzy dostawcą i odbiorcą takich dokumentów jak katalog produktów, zamówienia, awiza wysyłki, potwierdzenia dostawy, faktury czy faktury-korekty.
Do obsługi katalogu produktów służy komunikat: ProductCatalogue, zamówień, komunikat: Order, awiza wysyłki, komunikat: DespatchAdvice, potwierdzenia dostawy, komunikat: ReceivingAdvice natomiast faktury, komunikat: Invoice.
Pełna obsługa wyżej wymienionych komunikatów z punktu widzenia dostawcy wraz z towarzyszącymi mu dokumentami generowanymi w systemie Comarch ERP XL wygląda następująco:

- Dostawca przesyła do klienta katalog produktów
- W wyniku importu zamówienia złożonego przez klienta w systemie generowane jest zamówienie sprzedaży
- Po odpowiednim przygotowaniu zamówionego towaru do wysyłki z zamówienia generowany jest dokument WZ, który następnie eksportowany jest do klienta jako Awizo wysyłki
- Dla danego dokumentu WZ dokonywany jest import Potwierdzenia Dostawy od klienta. Na tej podstawie dokonywane jest sprawdzenie zgodności kodów i ilości towarów: na dokumencie WZ oraz na Potwierdzeniu Dostawy. W przypadku zgodności ww. dokumentów, w systemie generowany jest spinacz do dokumentu WZ ((S)FS do bufora), w przypadku wystąpienia jakiejkolwiek niezgodności spinacz nie jest tworzony, a operator otrzymuje stosowną informację o występujących rozbieżnościach.
- Wystawiony w wyniku ww. operacji spinacz (S)FS eksportowany jest do klienta w formie pliku INVOICE
Pełna obsługa wyżej wymienionych komunikatów z punktu widzenia odbiorcy wraz z towarzyszącymi mu dokumentami generowanymi w systemie Comarch ERP XL wygląda następująco:

- W wyniku importu katalogu produktów przez klienta w systemie generowana jest oferta zakupu
- Na podstawie wygenerowanego w systemie zamówienia zakupu dokonywany jest eksport i złożenie zamówienia u dostawcy
- Jeżeli towar został przez dostawce wysłany odbiorca otrzymuje i importuje Awizo Wysyłki, w wyniku czego w systemie generowany jest dokument PZ do bufora
- Po sprawdzeniu zgodności kodów i ilości towaru i ewentualnej dokonanej zmianie na ww. dokumencie PZ, po jego ilościowym zatwierdzeniu dokument ten eksportowany jest jako Potwierdzenie Dostawy
Dla ww. dokumentu PZ dokonywany jest import przesłanej przez dostawcę faktury, na podstawie wczytywanego pliku dokonywane jest sprawdzenie zgodności: kodów i ilości towarów oraz ceny zakupu. W przypadku, gdy wartość dostawy na dokumencie PZ nie jest ustalona, następuje zmiana ceny zakupu towarów. Jeżeli w wyniku tych operacji dokumenty: PZ i importowana faktura są zgodne, wówczas do dokumentu PZ tworzony jest spinacz do bufora, w przeciwnym wypadku operator otrzymuje informacje o zaistniałych rozbieżnościach.
W związku z tym, iż niektóre sieci przesyłają w plikach komunikacyjnych ECOD, EAN 14 znakowy, eksportowany kod EAN obcięty jest do 14 znaków, bez względu na to czy występuje na jednostce pomocniczej, na karcie towaru, czy też w polu „Kod u kontrahenta”. Obsługa linii <BuyerItemCode> i <SupplierItemCode> pozostała bez zmian. Dotyczy eksportu dokumentów: OS, ZZ, WZ, PZ, FS, (S)FS, FSK, (S)FSK.
W związku z tym, iż niektóre sieci przesyłają w plikach komunikacyjnych ECOD, EAN 14 znakowy, podczas importu komunikatów system Comarch ERP XL będzie interpretować całą zawartość przesyłaną w linii <EAN> i identyfikować towary po tej całej wartości. Dotyczy importu komunikatów: OZ, ZS, PZ, potwierdzenie dostawy, FZ, FZK.
Eksport dokumentów dokonywany dla sieci elektrotechnicznych
Ustalanie formatu dla dokonywanego eksportu
System Comarch ERP XL umożliwia wymianę komunikatów ProductCatalogue, Order oraz Invoice w formacie przewidzianym dla branży elektrotechnicznej. Operator może więc zdecydować w jakim formacie ma zostać dokonany eksport dokumentu do systemu ECOD. Różnicowanie to zostało oparte na atrybucie wg następującej zasady. Jeżeli na eksportowanym dokumencie OS/ZZ/FS zdefiniowano atrybut o nazwie „FormatEcod” i określono dla niego wartość „Elektro”, wówczas wynikiem eksportu takiego dokumentu będzie generowanie pliku xml wg struktury przewidzianej dla sieci elektrotechnicznej, w przeciwnym wypadku wygenerowany plik będzie miał dotychczasową strukturę, właściwą dla sieci handlowych.
Obsługa opłaty produktowej podczas eksportu faktury sprzedaży
Jeżeli dla pozycji eksportowanego dokumentu FS zostanie dodany atrybut o nazwie „FeeValue” bądź o nazwie „KGO” i podana zostanie wartość liczbowa tego atrybutu, wówczas wartość ta zostanie potraktowana jako cena jednostkowa opłaty produktowej związanej z daną pozycją, a co za tym idzie linia <FeeValue> dla danej linii komunikatu Invoice zostanie wypełniona wartością tego atrybutu.
W celu poprawnej obsługi wyżej wymienionej linii oraz innych linii pliku związanych z opłatą produktową jeden z wyżej wymienionych atrybutów należy dodać do każdego towaru faktury sprzedaży, dla którego opłata ta ma zostać obsłużona, a wartość atrybutu powinna zostać określona na poziomie jednostkowej ceny netto opłaty, wyrażonej z dokładnością do dwóch miejsc po przecinku, bez względu na ilość towaru na tej pozycji FS
Jednostka miary w systemie Comarch ERP XL, a jej odpowiednik w systemie ECOD
Jednostka miary w słowniku jednostek ERP XL (bez rozróżnienia na małe/duże litery) | Wysyłany w pliku kod/wartość pola | Pliki dla sieci handlowych: Makro, Real, ... | Pliki dla branży elektro – technicznej |
---|---|---|---|
PCE, szt, szt. | PCE | WZ, PZ, ZZ, FS, FSK, WZE, FSE, FKE, OS | ZZ, FS, FSK, OS, FSE, FKE |
KGM, kg | KGM | WZ, PZ, ZZ, FS, FSK, WZE, FSE, FKE, OS | ZZ, FS, FSK, OS, FSE, FKE |
MTR, metr, m | MTR | WZ, PZ, ZZ, FS, FSK, WZE, FSE, FKE, OS | ZZ, FS, FSK, OS, FSE, FKE |
MTK, m2, metr kwadratowy | MTK | WZ, PZ, ZZ, FS, FSK, WZE, FSE, FKE, OS | |
LTR, litr | LTR | WZ, PZ, ZZ, FS, FSK, WZE, FSE, FKE, OS | ZZ, FS, FSK, OS, FSE, FKE |
PR, para | PR | WZ, PZ, ZZ, FS, FSK, WZE, FSE, FKE, OS | ZZ, FS, FSK, OS, FSE, FKE |
TNE, tona, tona metryczna | TNE | WZ, PZ, ZZ, FS, FSK, WZE, FSE, FKE, OS | ZZ, FS, FSK, OS, FSE, FKE |
KMT, kilometr | KMT | FS, FSK, OS, FSE, FKE | ZZ, FS, FSK, OS, FSE, FKE |
PA, pa, pacz, op, opa, opak, opakow | PA | FS, FSK, OS, FSE, FKE | ZZ, FS, FSK, OS, FSE, FKE |
SET, kpl, komplet | SET | FS, FSK, OS, FSE, FKE | ZZ, FS, FSK, OS, FSE, FKE |
CT, karton | CT | FS, FSK, OS, FSE, FKE | |
PK, paczka | PK | FS, FSK, OS, FSE, FKE |
Wymiana dokumentów typu faktura za pomocą systemu ECOD
Eksport faktury sprzedaży FS oraz faktury eksportowej FSE do systemu ECOD
Tabela przedstawia strukturę komunikatu typu Invoice oraz zasady ustalania i przesyłania do pliku xml informacji zawartych w eksportowanej fakturze sprzedaży (FS) lub fakturze eksportowej (FSE). Te sekcje, które nie są przez program obsługiwane są w tabeli pozostawione jako puste. Linie występujące wyłącznie w formacie właściwym dla sieci Elektro prezentowane są w kolorze zielonym, linie występujące wyłącznie w formacie Makro w kolorze niebieskim, linie wspólne w kolorze czarnym.
Nazwa pola wraz z przykładem jego wypełnienia | Opis | Źródło informacji (interfejs) | |||||
---|---|---|---|---|---|---|---|
<Document-Invoice> | |||||||
<Invoice-Header> | |||||||
<Invoice-Number>FSK-42/09/SER</Invoice-Number> | Numer faktury | Symbol i pełny numer dokumentu FS/FSK lub FSE/FKE, zgodnie z przyjętym w systemie schematem numeracji | |||||
<InvoiceDate>2009-10-20</InvoiceDate> | Data faktury | Data wystawienia FS, FSE. | |||||
<SalesDate>2009-10-20</SalesDate> | Data sprzedaży | Data sprzedaży FS/(S)FS, FSE/(S)FSE. W przypadku FSK/(S)FSK, FKE/(S)FKE także będzie to data sprzedaży FS/(S)FS, FKE/(S)FKE. | |||||
<InvoiceDuplicateDate></InvoiceDuplicateDate> | Data duplikatu | Linia występuje wyłącznie w przypadku eksportu duplikatu faktury. Jeżeli do FS, FSE dodano atrybut o tej nazwie i typie „data” i wypełniono go wartością (datą), wówczas w linii tej przesyłana jest wartość tego atrybutu, w przeciwnym wypadku przesyłana jest data dokonywania eksportu | |||||
<InvoiceCurrency>PLN</InvoiceCurrency> | Waluta | Waluta systemowa. Dla FSE waluta dokumentu | |||||
<InvoicePaymentDueDate>2009-10-27</InvoicePaymentDueDate> | Data płatności | Data płatności z pola Płatność/Do | |||||
<InvoicePaymentTerms>7</InvoicePaymentTerms> | Termin płatności w dniach | Ilość dni liczona jako różnica pomiędzy datą sprzedaży i datą płatności | |||||
<InvoicePaymentType>42</InvoicePaymentType> | Forma płatności | Forma płatności dokumentu FS, FSE. Wg zasady: gotówka-10, przelew-42, czek-20, kompensata-97, w przypadku, gdy formy nie uda się ustalić przesyłana jest 42-przelew | |||||
<PaymentInformation>mechanizm podzielonej płatności</PaymentInformation> | Adnotacja o podzielonej płatności | Adnotacja o podzielonej płatności, uzupełnienia dla faktur i korekt po zaznaczeniu Podzielonej płatności MPP na dokumencie na zakładce [Płatności] | |||||
<DocumentFunctionCode>C</DocumentFunctionCode> | Typ dokumentu (kopia, oryginał, …) | Wartość atrybutu „DocumentFunctionCode” zdefiniowanego na zakładce Atrybuty dokumentu FS/FSK, FSE/FKE. Jeżeli atrybut nie został zdefiniowany, wówczas podczas eksportu dokumentu FS, FSE wysyłany jest symbol „O” – oryginał, a w przypadku eksportu dokumentu FSK, FKE symbol „C” – korekta |
|||||
<CorrectionReason>zwrot uszkodzonego towaru</CorrectionReason> | Powód korekty | Linia pojawia się wyłącznie podczas eksportu FSK/(S)FSK, FKE/(S)FKE, wówczas, gdy powód korekty jest taki sam dla wszystkich korygowanych pozycji lub przyczyna korekty nie została określona na pozycjach, a tylko w Nagłówku | |||||
<Returns> | |||||||
<ReturnsNoticeNumber>RET19523</ReturnsNoticeNumber> | Numer zawiadomienia o zwrotach | Wartość atrybutu „ReturnsNoticeNumber” zdefiniowanego na zakładce Atrybuty dokumentu FSK. | |||||
<ReturnsNoticeDate>08-11-2019</ReturnsNoticeDate> | Data zawiadomienia o zwrotach | ||||||
</Returns> | |||||||
<Remarks>Uwagi</Remarks> | Opis/Uwagi | Linia zostanie wypełniona wartością wprowadzoną w polu Opis nagłówka eksportowanego dokumentu FS/(S)FS/FSK/(S)FSK, FSE/(S)FSE/FKE/(S)FKE | |||||
<Order> | Sekcja ta pojawi się wówczas, gdy wszystkie linie towarowe wskazują na to samo zamówienie | ||||||
<BuyerOrderNumber>15/2009</BuyerOrderNumber> | Numer zamówienia | Wartość atrybutu „BuyerOrderNumer”, zdefiniowanego na zakładce Atrybuty dokumentu FS/FSK, FSE/FKE. | |||||
<BuyerOrderDate>2009-10-20</BuyerOrderDate> | Data zamówienia | Wartość atrybutu „BuyerOrderDate”, zdefiniowanego na zakładce Atrybuty dokumentu FS/FSK, FSE/FKE. W przypadku braku atrybutu linia jest uzupełniana datą wystawienia FSK/(S)FSK, FKE/(S)FKE. |
|||||
</Order> | |||||||
<Reference> | |||||||
<InvoiceReferenceNumber>FS15/09</InvoiceReferenceNumber> | Nr faktury korygowanej | Wypełnianie jak dla sekcji Line Reference | |||||
<InvoiceReferenceDate>2009-10-30</InvoiceReferenceDate> | Data faktury korygowanej | Wypełnianie jak dla sekcji Line Reference | |||||
</Reference> | |||||||
<Delivery> | |||||||
<DeliveryLocationNumber>12548798658702</DeliveryLocationNumber> | Wypełniane jak dla sekcji Line-Delivery | ||||||
<DeliveryDate>2009-10-30</DeliveryDate> | Wypełniane jak dla sekcji Line-Delivery | ||||||
<DespatchNumber>WZ12</DespatchNumber> | Wypełniane jak dla sekcji Line-Delivery | ||||||
<Name>ABS</Name> | Nazwa kupującego | ||||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | Ulica i numer | ||||||
<CityName>Kraków</CityName> | Miasto | ||||||
<PostalCode>33-156</PostalCode> | Kod pocztowy | ||||||
<Country>PL</Country> | Kraj | ||||||
</Delivery> | |||||||
<Payments> | Sekcja płatności, wysyłana na fakturze w przypadku zaznaczenia parametru „Wysyłaj płatność faktury” w konfiguracji systemu. | ||||||
<Payment> | |||||||
<InvoicePaymentDueDate>2017-05-10</InvoicePaymentDueDate> | Data płatności | ||||||
<InvoicePaymentMeans>10</InvoicePaymentMeans> | Forma płatności dokumentu FS, FSE. Wg zasady: gotówka-10, przelew-42, czek-20, kompensata-97, w przypadku, gdy formy nie uda się ustalić przesyłana jest 42-przelew | ||||||
<PaymentAmount>3.32</PaymentAmount> | Wartość płatności | ||||||
<PaymentCurrency>EUR</PaymentCurrency> | Waluta płatności | ||||||
</Payment> | |||||||
</Payments> | |||||||
</Invoice-Header> | |||||||
<Invoice-Parties> | |||||||
<Buyer> | |||||||
<ILN>1212121212122</ILN> | GLN kupującego | Numer GLN wprowadzony na formatce adresu, który jest adresem kontrahenta głównego na dokumencie FS, FSE | |||||
<TaxID>125236665588</TaxID> | NIP kupującego | NIP zdefiniowany na formatce adresu, który jest adresem kontrahenta głównego | |||||
<AccountNumber></AccountNumber> | Konto bankowe | ||||||
<Name>ABS</Name> | Nazwa kupującego | Akronim zdefiniowany na formatce adresu, który jest adresem kontrahenta głównego FS, FSE | |||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | Ulica i numer | Dane zdefiniowane na formatce adresu, który jest adresem kontrahenta głównego dokumentu FS, FSE | |||||
<CityName>Kraków</CityName> | Miasto | ||||||
<PostalCode>33-156</PostalCode> | Kod pocztowy | ||||||
<Country>PL</Country> | Kraj | ||||||
</Buyer> | |||||||
<Payer> | |||||||
<ILN>1212121212122</ILN> | GLN płatnika | Numer GLN wprowadzony na formatce adresu, który jest adresem płatnika na dokumencie FS, FSE | |||||
<TaxID>125236665588</TaxID> | NIP płatnika | NIP zdefiniowany na formatce adresu, który jest adresem płatnika | |||||
<AccountNumber></AccountNumber> | Konto bankowe płatnika | ||||||
<Name>ABS</Name> | Nazwa płatnika | Akronim zdefiniowany na formatce adresu, który jest adresem płatnika FS, FSE | |||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | Ulica i numer | Dane zdefiniowane na formatce adresu, który jest adresem płatnika dokumentu FS, FSE | |||||
<CityName>Kraków</CityName> | Miasto | ||||||
<PostalCode>33-156</PostalCode> | Kod pocztowy | ||||||
<Country>PL</Country> | Kraj | ||||||
<Payer> | |||||||
<Invoicee> | |||||||
<ILN>1212121212122</ILN> | GLN odbiorcy | GLN odbiorcy faktury | |||||
<TaxID>125236665588</TaxID> | NIP odbiorcy | NIP odbiorcy faktury | |||||
<AccountNumber></AccountNumber> | Konto bankowe | Konto bankowe odbiorcy faktury | |||||
<Name>ABS</Name> | Nazwa | Nazwa odbiorcy faktury | |||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | Ulica i numer | Dane zdefiniowane na formatce adresu, który jest adresem kontrahenta głównego dokumentu FS, FSE | |||||
<CityName>Kraków</CityName> | Miasto | ||||||
<PostalCode>33-156</PostalCode> | Kod pocztowy | ||||||
<Country>PL</Country> | Kraj | ||||||
</Invoicee> | |||||||
<Seller> | |||||||
<ILN>1313131313133</ILN> | GLN sprzedającego | Numer GLN zdefiniowany na pieczątce firmy przypisanej do centrum będącego właścicielem dokumentu FS, FSE | |||||
<TaxID>125236669902</TaxID> | NIP sprzedawcy | NIP zdefiniowany na wyżej wymienionej pieczątce firmy | |||||
<AccountNumber></AccountNumber> | Konto bankowe | ||||||
<CodeByBuyer>1414141414144</CodeByBuyer> | Kod wg kupującego | ||||||
<Name&;gtCDK</Name> | Nazwa sprzedawcy | ||||||
<StreetAndNumber>Mała 14</StreetAndNumber> | Ulica i numer | Dane z pieczątki firmy przypisanej do centrum będącego właścicielem dokumentu FS, FSE | |||||
<CityName>Kraków</CityName> | Miasto | ||||||
<PostalCode>33-185</PostalCode> | Kod pocztowy | ||||||
<Country>PL</Country> | Kraj | ||||||
<UtilizationRegisterNumber>123456789</UtilizationRegisterNumber> | Obsługa pola UtilizationRegisterNumber odbywa poprzez pobranie wartości z pieczątki firmy, która przypięta jest do centrum w ramach, którego rejestrowany jest dokument z pola: "Numer GIOŚ” | ||||||
<CourtAndCapitalInformation>KRS 0000011, Kapitał zakładowy 100000PLN, Kapitał wpłacony: 100000PLN</CourtAndCapitalInformation> | Informacja o sądzie rejestrowym, nr rejestru, wysokości kapitału | Dane z sekcji Organ rejestrowy pieczątki odszukanej jw. (zakładka Deklaracje) | |||||
</Seller> | |||||||
<Payee> | |||||||
<ILN>1515151515155</ILN> | GLN odbiorcy płatności | Zgodny z Seller/ILN | |||||
<TaxID>125236669902</TaxID> | NIP odbiorcy płatności | Zgodny z Seller/TaxID | |||||
<AccountNumber>1245555666668555</AccountNumber> | Konto bankowe odbiorcy płatności | Numer rachunku bankowego z zakładki Nagłówek dokumentu FS, FSE | |||||
<Name>ABS</Name> | Nazwa odbiorcy płatności | Dane zgodne z danymi dla sekcji Seller | |||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | Ulica i numer | ||||||
<CityName>Kraków</CityName> | Miasto | ||||||
<PostalCode>33-156</PostalCode> | Kod pocztowy | ||||||
<Country>PL</Country> | Kraj | ||||||
</Payee> | |||||||
<SellerHeadquarters> | |||||||
<ILN>1313131313133</ILN> | Dane dotyczące siedziby firmy | Dane z pieczątki centrum głównego firmy, niezależnie od tego, które centrum jest właścicielem eksportowanego dokumentu | |||||
<Name>CDK</Name> | |||||||
<StreetAndNumber> Mała 14</StreetAndNumber> | |||||||
<CityName>Kraków</CityName> | |||||||
<PostalCode>33-185</PostalCode> | |||||||
<Country>PL</Country> | |||||||
</SellerHeadquarters> | |||||||
</Invoice-Parties> | |||||||
<Invoice-Lines> | |||||||
<Line> | |||||||
<Line-Item> | |||||||
<LineNumber>1</LineNumber> | Numer pozycji w fakturze | Kolejny numer pozycji wczytywanej z FS, FSE do pliku | |||||
<EAN>4444444444444</EAN> | EAN towaru | ||||||
<BuyerItemCode></BuyerItemCode> | Kod produktu wg nabywcy | ||||||
<SupplierItemCode></SupplierItemCode> | Kod produktu wg sprzedawcy | ||||||
<ItemDescription>buty</ItemDescription> | Nazwa produktu | Nazwa towaru podana na pozycji dokumentu. Jeżeli na karcie towarowej dodano atrybut: „ItemDescription” to w linii <ItemDescription> pojawi się wprowadzona nazwa. | |||||
<ItemType>CU</ItemType> | Typ towaru (jednostka handlowa lub opakowanie zwrotne) | ||||||
<InvoiceQuantity>7</InvoiceQuantity> | Zafakturowana ilość | Wartość atrybutu o nazwie Precyzja ilości zdefiniowanego dla nagłówka dokumentu. Możliwe wartości 3,4. W przypadku innej wartości ustawiana wartość domyślna 3. | |||||
<UnitOfMeasure>PCE</UnitOfMeasure> | Jednostka miary | ||||||
<InvoiceUnitPacksize>1.000</InvoiceUnitPacksize> | Liczba sztuk detalicznych w jednostce zbiorczej | ||||||
<PackItemUnitOfMeasure>PCE</PackItemUnitOfMeasure> | Jednostka miary sztuki detalicznej w jednostce zbiorczej | ||||||
<InvoiceUnitNetPrice>120.00</InvoiceUnitNetPrice> | Cena netto | Wartość atrybutu o nazwie Precyzja ceny zdefiniowanego dla nagłówka dokumentu. Możliwe wartości 2,3,4. W przypadku innej wartości ustawiana jest wartość domyślna 2. | |||||
<TaxRate>22.00</TaxRate> | Stawka VAT | To pole nie jest eksportowane, jeżeli stawka jest równa 0% (zwolniony). | |||||
<TaxCategoryCode>S</TaxCategoryCode> | Kod stawki | Kod stawki: "E" (exempt) - zwolniony "S" (standard) - inna, wyrażona liczba |
|||||
<TaxReference> | |||||||
<ReferenceType>SWW</ReferenceType> | Typ referencji | ||||||
<ReferenceNumber>23-569</ReferenceNumber> | Kod SWW/PKWiU | ||||||
</TaxReference> | |||||||
<TaxAmount>184.80</TaxAmount> | Wartość VAT pozycji | ||||||
<NetAmount>840.00</NetAmount> | Wartość netto pozycji | ||||||
<PreviousInvoiceQuantity>10.000</PreviousInvoiceQuantity> | Ilość przed korektą | Wartość atrybutu o nazwie Precyzja ilości zdefiniowanego dla nagłówka dokumentu. Możliwe wartości 3,4. W przypadku innej wartości ustawiana wartość domyślna 3. | |||||
<PreviousInvoiceUnitNetPrice>12.00</PreviousInvoiceUnitNetPrice> | Cena przed korektą | Wartość atrybutu o nazwie Precyzja ceny zdefiniowanego dla nagłówka dokumentu. Możliwe wartości 2,3,4. W przypadku innej wartości ustawiana wartość domyślna 2. | |||||
<PreviousTaxRate>22.00</PreviousTaxRate> | Stawka podatku przed korektą | ||||||
<PreviousTaxCategoryCode>S</PreviousTaxCategoryCode> | Kategoria podatku przed korektą | ||||||
<PreviousTaxAmount>264.00</PreviousTaxAmount> | Wartość VAT przed korektą | ||||||
<PreviousNetAmount>1200.00</PreviousNetAmount> | Wartość netto przed korektą | ||||||
<CorrectionInvoiceQuantity>-3.000</CorrectionInvoiceQuantity> | Korekta ilości | Wartość atrybutu o nazwie Precyzja ilości zdefiniowanego dla nagłówka dokumentu. Możliwe wartości 3,4. W przypadku innej wartości ustawiana wartość domyślna 3. | |||||
<CorrectionInvoiceUnitNetPrice>0.00</CorrectionInvoiceUnitNetPrice> | Korekta ceny | Wartość atrybutu o nazwie Precyzja ceny zdefiniowanego dla nagłówka dokumentu. Możliwe wartości 2,3,4. W przypadku innej wartości ustawiana wartość domyślna 2. | |||||
<CorrectionTaxAmount>-79.20</CorrectionTaxAmount> | Korekta podatku | ||||||
<CorrectionNetAmount>-360.00</CorrectionNetAmount> | Korekta wartości netto | ||||||
<CorrectionReason>zwrot uszkodzonego towaru</CorrectionReason> | Powód korekty | Wartość atrybut o nazwie CorrectionReason zdefiniowanego dla pozycji lub przyczyna korekty zapisaną na elemencie FSK, FKE | |||||
<ProductFeeDetails> | |||||||
<UnitNetPriceWithoutFee>23.00</UnitNetPriceWithoutFee> | Cena netto bez kosztów gospodarowania odpadami | Cena wyliczona jak dla linii InvoiceUnitNetPrice, pomniejszona o FeeValue | |||||
<NetAmountWithautFee>46.00</NetAmountWithautFee> | Wartość bez ww. kosztów | UnitNetPriceWithoutFee x InvoiceQuantity | |||||
<FeeValue>0.45</FeeValue> | Jednostkowy koszt gospodarowania odpadami | Wartość atrybutu a nazwie FeeValue zdefiniowanego dla pozycji lub cena 2-go elementu zestawu, o którym mowa w pkt 3.2.2 | |||||
<FeeNetAmount>0.06</FeeNetAmount> | Wartość ww. kosztu | FeeValue x InvoiceQuantity | |||||
</ProductFeeDetails> | |||||||
<Line-Item> | |||||||
<Line-Order> | |||||||
<BuyerOrderNumber>ZZ-15/09/SER2</BuyerOrderNumber> | Numer zamówienia | Linia nie wypełniana dla FSK/(S)FSK, FKE/(S)FKE w przypadku istnienia atrybutu „BuyerOrderNumber”. | |||||
<BuyerOrderDate>2009-10-20</BuyerOrderDate> | Data zamówienia | Linia nie wypełniana dla FSK/(S)FSK, FKE/(S)FKE w przypadku istnienia atrybutu „BuyerOrderDate”. | |||||
<OrderLineNumber>1</OrderLineNumber> | Linia eksportowana jest do ECOD dla atrybutu FormatEcod z wartością Elektro lub Castorama. | ||||||
</Line-Order> | |||||||
<Line-Reference> | |||||||
<InvoiceReferenceNumber>FS15</InvoiceReferenceNumber> | Numer faktury korygowanej | ||||||
<InvoiceReferenceDate>2009-10-17</InvoiceReferenceDate> | Data faktury korygowanej | ||||||
</Line-Reference> | |||||||
<Line-Delivery> | |||||||
<DeliveryLocationNumber>12548798658702</DeliveryLocationNumber> | GLN lokalizacji dostawy | ||||||
<PartyName>ABS</PartyName> | |||||||
<Name>ABS</Name> | |||||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | |||||||
<CityName>Kraków</CityName> | |||||||
<PostalCode>33-156</PostalCode> | |||||||
<Country>PL</Country> | |||||||
<DeliveryDate>2009-10-20</DeliveryDate> | Data dostawy | ||||||
<DespatchNumber>WZ-12</DespatchNumber> | Numer dostawy | ||||||
<DespatchAdviceNumber></DespatchAdviceNumber> | Numer awiza wysyłki | ||||||
</Line-Delivery> | |||||||
</Line> | |||||||
</Invoice-Lines> | |||||||
<Invoice-Summary> | |||||||
<TotalLines>1</TotalLines> | |||||||
<TotalNetAmount>840.00</TotalNetAmount> | Suma netto | ||||||
<TotalTaxableBasis>840.00</TotalTaxableBasis> | Suma podlegająca opodatkowaniu | ||||||
<TotalTaxAmount>184.00</TotalTaxAmount> | Suma VAT | ||||||
<TotalGrossAmount>1024.80</TotalGrossAmount> | Suma brutto | ||||||
<GrossAmountInWords>minus czterysta trzydzieści dziewięć PLN</GrossAmountInWords> | Suma brutto słownie | ||||||
<Tax-Summary> | |||||||
<Tax-Summary-Line> | |||||||
<TaxRate>22.00</TaxRate> | Stawka VAT | To pole nie jest eksportowane, jeżeli stawka jest równa 0% (zwolniony). | |||||
<TaxCategoryCode>S</TaxCategoryCode> | Kod stawki | Kod stawki: "E" (exempt) - zwolniony "S" (standard) - inna, wyrażona liczba |
|||||
<TaxAmount>184.80</TaxAmount> | Suma VAT dla danej stawki | ||||||
<TaxableBasis>840.00</TaxableBasis> | Suma podlegająca opodatkowaniu | ||||||
<TaxableAmount>840.00</TaxableAmount> | Suma VAT | ||||||
<GrossAmount>1024.80</GrossAmount> | Suma brutto | ||||||
</Tax-Summary-Line> | |||||||
</Tax-Summary> | |||||||
<ProductFee-Summary> | |||||||
<TotalNetAmountWithoutFee>46.00</TotalNetAmountWithoutFee> | |||||||
<TotalFeeNetAmount>0.90</TotalFeeNetAmount> | |||||||
</ProductFee-Summary> | |||||||
</Invoice-Summary> | |||||||
</Document-Invoice> |
Najczęstsze problemy występujące przy eksporcie FS, FSE do systemu ECOD
Aby eksport dokumentu FS, FSE do ECOD przebiegł prawidłowo, system musi mieć dostęp do tych informacji, które są informacjami obowiązkowymi dla komunikatu Invoice. Tabela przedstawia najczęstsze problemy, z jakimi operator może się spotkać podczas wykonywania operacji Eksport do ECOD i ich przyczyny:
Treść informacji w logu | Przyczyna | Remedium |
---|---|---|
Nie określono GLN kontrahenta | Dla adresu, który jest adresem kontrahenta głównego FS, FSE nie zdefiniowano numeru GLN | Odnaleźć adres wskazany na FS, FSE jako adres kontrahenta głównego i wpisać na formatce adresu numer GLN |
Nie określono GLN kontrahenta | Dla adresu, który jest adresem kontrahenta docelowego na FS, FSE nie zdefiniowano numeru GLN | Odnaleźć adres wskazany na FS, FSE jako adres kontrahenta docelowego i wpisać na formatce adresu numer GLN |
Nie określono GLN firmy na pieczątce | Do centrum będącego właścicielem dokumentu FS, FSE nie przypisano pieczątki lub na przypisanej pieczątce nie zdefiniowano numeru GLN | Przypisać do centrum pieczątkę lub jeżeli jest ona już przypisana wpisać na niej numer GLN |
Nie określono numeru NIP firmy | Do centrum będącego właścicielem dokumentu FS, FSE nie przypisano pieczątki lub na przypisanej pieczątce nie zdefiniowano numeru NIP | Przypisać do centrum pieczątkę lub jeżeli jest ona już przypisana wpisać na niej numer NIP |
Nie określono numeru rachunku na rejestrze dokumentu | Na zakładce Nagłówek dokumentu FS, FSE nie wybrano rejestru bankowego | Wybrać rejestr bankowy na dokumencie FS, FSE |
Nie określono numeru EAN na karcie towaru: T1 (format Makro) | Dla towaru T1 będącym elementem dokumentu FS, FSE nie zdefiniowano numeru EAN (błąd wystąpi, jeżeli dla towaru nie zdefiniowano żadnego z poniższych numerów: brak numeru na formatce jednostki pomocniczej towaru użytej na dokumencie FS, FSE, brak numeru EAN na zakładce Ogólne karty towaru T1, brak „kodu u kontrahenta” dla Odbiorcy zgodnego z kontrahentem głównym FS, FSE | Jeżeli użyto jednostki pomocniczej towaru i wysłana ma być ilość w tej jednostce, należy określić EAN na formatce tej jednostki pomocniczej towaru. Jeżeli wysłana ma być ilość w jednostce głównej należy zdefiniować EAN na zakładce Ogólne karty towaru T1 lub wpisać EAN w polu „u kontrahenta” na formatce Odbiorca towaru, definiowanej na zakładce Kontrahenci karty towaru T1 dla kontrahenta głównego FS, FSE |
Import faktury FZ z systemu ECOD
W wyniku dokonywanej operacji Import FZ z ECOD w systemie zostaje wygenerowany dokument FZ. Podstawowe dane na tym dokumencie ustalane są na podstawie przekazanych w pliku Invoice informacji. Sposób interpretacji tych danych przedstawia. Puste sekcje w tabeli oznaczają, że informacje, których dotyczą nie są przez system interpretowane.
Sekcje: Order, Reference, Delivery, Line-Order, Line-Reference, Line-Delivery, Invoice-Summary nie są interpretowane, stąd zostały w tabeli pominięte.
Nazwa pola wraz z przykładem jego wypełnienia | Opis | Źródło informacji (interfejs) | |||||
---|---|---|---|---|---|---|---|
<Document-Invoice> | |||||||
<Invoice-Header> | |||||||
<Invoice-Number>FS-48/09/SER</Invoice-Number> | Numer faktury | Numer faktury przepisywany jest do pola Faktura na zakładce Nagłówek dokumentu FZ | |||||
<InvoiceDate>2009-10-06</InvoiceDate> | Data faktury | Na tej podstawie ustalana jest data wystawienia dokumentu FZ | |||||
<InvoiceDuplicateDate>2009-10-10</InvoiceDuplicateDate> | Data duplikatu | Jeżeli dla obiektu „FZ” zdefiniowano klasę atrybutu o nazwie „InvoiceDuplicateDate”, wówczas na generowanym w wyniku importu dokumencie FZ ta klasa zostanie automatycznie dodana i wypełniona wartością atrybutu zgodną z przesyłaną w pliku | |||||
<InvoiceCurrency>PLN</InvoiceCurrency> | Waluta | Waluta FZ, widoczna na zakładce Nagłówek dokumentu FZ. Jeżeli waluta jest inna niż PLN, wówczas na dokumencie zaznaczony zostaje parametr „import” i ustalony kurs bieżący o rodzaju zdefiniowanym w definicji dokumentu FZ centrum, które wykonuje operację importu | |||||
<InvoicePaymentDueDate>2009-11-06</InvoicePaymentDueDate> | Data płatności | Na tej podstawie ustalany jest termin płatności (data) na dokumencie FZ oraz na jego płatnościach | |||||
<InvoicePaymentTerms>30</InvoicePaymentTerms> | Termin płatności w dniach | Termin w dniach jest wyliczany samodzielnie jako różnica pomiędzy datą płatności (InvoicePaymentDueDate) a odpowiednio: datą wpływu, wystawienia lub zakupu – w zależności od dokonanego wyboru w definicji dokumentu FZ („Płatność od daty…” zakładka Parametry) | |||||
<InvoicePaymentType>42</InvoicePaymentType> | Forma płatności | Na tej podstawie ustalana jest forma płatności na FZ, wg zasady: 10-gotówka, 42-przelew, 20-czek, 97-kompensata, jeżeli w systemie nie zdefiniowano takiej formy, lub linia ta nie jest przesyłana, wówczas na FZ ustalana jest forma domyślna | |||||
<PaymentInformation>mechanizm podzielonej płatności </PaymentInformation> | Adnotacja o podzielonej płatności | Adnotacja odnośnie podzielonej płatności. Jeżeli linia jest wypełniona na FZ, FZK zostanie zaznaczony parametr MPP na zakładce [Płatności]. | |||||
<DocumentFunctionCode>O</DocumentFunctionCode> | Typ dokumentu (kopia, oryginał, …) | ||||||
<CorrectionReason>zwrot uszkodzonego towaru</CorrectionReason> | Powód korekty | ||||||
<Remarks>Uwagi</Remarks> | Opis/Uwagi | Jeżeli linia jest wypełniona wówczas jej wartość zostanie zapisana w polu Opis dokumentu FZ/(S)FZ. | |||||
</Invoice-Header> | |||||||
<Invoice-Parties> | |||||||
<Buyer> | |||||||
<ILN>1212121212122</ILN> | GLN kupującego | ||||||
<TaxID>125236665588</TaxID> | NIP kupującego | ||||||
<AccountNumber></AccountNumber> | Konto bankowe kupującego | ||||||
<Name>ABS</Name> | Nazwa kupującego | ||||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | Ulica i numer | ||||||
<CityName>Kraków</CityName> | Miasto | ||||||
<PostalCode>33-156</PostalCode> | Kod pocztowy | ||||||
<Country>PL</Country> | Kraj | ||||||
</Buyer> | |||||||
<Invoicee> | |||||||
<ILN>1212121212122</ILN> | GLN odbiorcy | ||||||
<TaxID>125236665588</TaxID> | NIP odbiorcy | ||||||
<AccountNumber></AccountNumber> | Konto bankowe | ||||||
<Name>ABS</Name> | Nazwa | ||||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | Ulica i numer | ||||||
<CityName>Kraków</CityName> | Miasto | ||||||
<PostalCode>33-156</PostalCode> | Kod pocztowy | ||||||
<Country>PLN</Country> | Kraj | ||||||
</Invoicee> | |||||||
<Seller> | |||||||
<ILN>1313131313133</ILN> | GLN sprzedającego | Na tej podstawie ustalany jest kontrahent główny na dokumencie FZ w sposób następujący: Najpierw poszukiwany jest kontrahent z numerem GLN zdefiniowanym na zakładce Ogólne karty kontrahenta zgodnym z przesyłanym GLN, jeżeli zostanie on odnaleziony, wówczas zostanie on ustalony jako kontrahent główny z jego adresem aktualnym. Jeżeli ww. kontrahent nie zostanie odnaleziony, wówczas poszukiwany jest adres z numerem GLN zgodnym z przesyłanym nr GLN. Tak odnaleziony adres staje się adresem kontrahenta głównego na dokumencie FZ, a kontrahentem głównym kontrahent z tego adresu. Kontrahent docelowy jest zgodny z kontrahentem głównym, a adres zgodny z adresem aktualnym kontrahenta |
|||||
<TaxID>125236669902</TaxID> | NIP sprzedawcy | ||||||
<AccountNumber></AccountNumber> | Konto bankowe sprzedawcy | ||||||
<CodeByBuyer>1414141414144</CodeByBuyer> | Kod wg kupującego (kod pod jakim sprzedawca figuruje u odbiorcy) | Jeżeli dla obiektu „FZ” zdefiniowano klasę atrybutu o nazwie „CodeByBuyer” i jeżeli w pliku jest ten numer przesyłany, wówczas na generowanym w wyniku importu dokumencie FZ ta klasa zostanie automatycznie dodana i wypełniona wartością atrybutu zgodną z przesyłaną w pliku zawartością sekcji <CodeByBuyer> | |||||
<Name>CDK</Name> | Nazwa sprzedawcy | ||||||
<StreetAndNumber>Mała 14</StreetAndNumber> | Ulica i numer | ||||||
<CityName>Kraków</CityName> | Miasto | ||||||
<PostalCode>33-185</PostalCode> | Kod pocztowy | ||||||
<Country>PL</Country> | Kraj | ||||||
<UtilizationRegisterNumber>123456789</UtilizationRegisterNumber> | Jeżeli dla obiektu „FZ” zdefiniowano klasę atrybutu o nazwie „UtilizationRegisterNumber”, wówczas na generowanym w wyniku importu dokumencie FZ ta klasa zostanie automatycznie dodana i wypełniona wartością zgodną z przesyłaną w pliku zawartością tej linii | ||||||
</Seller> | |||||||
<Payee> | |||||||
<ILN>1515151515155</ILN> | GLN odbiorcy płatności | Na tej podstawie ustalony zostaje płatnik na dokumencie FZ (interpretowany jako odbiorca płatności) | |||||
<TaxID>125236669902</TaxID> | NIP odbiorcy płatności | ||||||
<AccountNumber></AccountNumber> | Konto bankowe odbiorcy płatności | ||||||
<Name>ABS</Name> | Nazwa odbiorcy płatności | ||||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | Ulica i numer | ||||||
<CityName>Kraków</CityName> | Miasto | ||||||
<PostalCode>33-156</PostalCode> | Kod pocztowy | ||||||
<Country>PL</Country> | Kraj | ||||||
</Payee> | |||||||
</Invoice-Parties> | |||||||
<Invoice-Lines> | |||||||
<Line> | |||||||
<Line-Item> | |||||||
<LineNumber>1</LineNumber> | Numer pozycji w fakturze | ||||||
<EAN>4444444444444</EAN> | EAN towaru | Na tej podstawie identyfikowany jest towar, którego faktura dotyczy wg kolejności: najpierw sprawdzane są jednostki pomocnicze towaru, jeżeli zostanie odnaleziona jednostka pomocnicza z numerem EAN zgodnym z przesłanym, wówczas na elemencie FZ ustalany jest dany towar w tej jednostce. Jeżeli jednostka taka nie zostanie odnaleziona, wówczas poszukiwany jest towar, dla którego na zakładce Ogólne zdefiniowano EAN zgodny z przesyłanym i towar spełniający ww. warunek zostaje ustalony na elemencie FZ. Jeżeli taki towar nie zostanie odnaleziony, wówczas poszukiwany jest towar, dla którego na zakładce Kontrahenci „kod u kontrahenta” zgodny z przesyłanym EAN-em. W przypadku tak odnalezionego towaru, jeżeli dla kontrahenta tego towaru zdefiniowano jednostkę pomocniczą, wówczas towar taki dodawany jest na FZ z tą jednostką jako pomocnicza |
|||||
<BuyerItemCode></BuyerItemCode> | Kod produktu wg nabywcy | Jeżeli EAN nie jest przesyłany, wówczas ustalony zostanie towar z kodem (Twr_Kod) zgodnym z wartością przesyłaną w tej linii | |||||
<SupplierItemCode></SupplierItemCode> | Kod produktu wg sprzedawcy | Jeżeli ani EAN ani BuyerItemCode nie jest przesyłany, wówczas ustalany jest towar, dla którego na formatce dostawcy zdefiniowano: kod u kontrahenta” zgodny z wartością przesyłaną w tej linii. | |||||
<ItemDescription>buty</ItemDescription> | Nazwa produktu | Nazwa towaru podana na pozycji dokumentu. Jeżeli na karcie towarowej dodano atrybut: „ItemDescription” to w linii <ItemDescription> pojawi się wprowadzona nazwa. | |||||
<ItemType>CU</ItemType> | Typ towaru | ||||||
<InvoiceQuantity>2</InvoiceQuantity> | Zafakturowana ilość | Jeżeli towar zostanie zidentyfikowany na podstawie EAN-u jednostki pomocniczej, czyli na podstawie EAN-u zdefiniowanego na formatce jednostki pomocniczej lub na podstawie „kod u kontrahenta”, dla którego zdefiniowano jednostkę pomocniczą, wówczas przesłana ilość traktowana jest jako ilość w jednostce pomocniczej, a ilość w jednostce głównej wyliczana jest na podstawie przelicznika do jednostki pomocniczej. W pozostałych wypadkach przesyłana ilość traktowana jest jako ilość w jednostce podstawowej i taka jest ustalana na elemencie FZ. W takim wypadku jednostka pomocnicza pojawi się na elemencie FZ tylko wówczas, jeżeli jest ona domyślna dla zakupu, a jej ilość zostanie wyliczona na podstawie ilości w jednostce głównej i przelicznika. |
|||||
<UnitOfMeasure>PCE</UnitOfMeasure> | Jednostka miary | ||||||
<InvoiceUnitPacksize>1.000</InvoiceUnitPacksize> | Liczba sztuk detalicznych w jednostce zbiorczej | ||||||
<PackItemUnitOfMeasure>PCE</PackItemUnitOfMeasure> | Jednostka miary sztuki detalicznej w jednostce zbiorczej | ||||||
<InvoiceUnitNetPrice>23.45</InvoiceUnitNetPrice> | Cena netto | Jeżeli towar znaleziony zostanie wg jednostki pomocniczej (patrz wyżej), wówczas przesyłana cena jest traktowana jako cena dla tej jednostki pomocniczej, a cena dla jednostki głównej wyliczana wtórnie. W pozostałych wypadkach przesyłana cena jest interpretowana jako cena jednostkowa dla jednostki głównej. W każdym przypadku, jeżeli waluta faktury jest inna niż PLN, wówczas przesyłana cena jest przeliczana na PLN po kursie bieżącym |
|||||
<TaxRate>7.00</TaxRate> | Stawka VAT | Na tej podstawie ustalana jest stawka VAT pozycji dokumentu FZ | |||||
<TaxCategoryCode>S</TaxCategoryCode> | Kod stawki | Istotna dla TaxRate=0, wówczas przesyłany kod jest interpretowany następująco: "Z" - na elemencie ustalona zostanie ta stawka 0%, dla której w systemie zdefiniowano status "nie podlega"; "E" - na elemencie ustalona zostanie ta stawka 0%, dla której w systemie zdefiniowano status "zwolniony" | |||||
<TaxReference> | |||||||
<ReferenceType>SWW</ReferenceType> | Typ referencji (SWW/PKWiU) | ||||||
<ReferenceNumber>23-569</ReferenceNumber> | Kod SWW/PKWiU | ||||||
</TaxReference> | |||||||
<TaxAmount>3.28</TaxAmount> | Wartość VAT pozycji | ||||||
<NetAmount>46.90</NetAmount> | Wartość netto pozycji | ||||||
<PreviousInvoiceQuantity>1.000</PreviousInvoiceQuantity> | Ilość przed korektą | ||||||
<PreviousInvoiceUnitNetPrice>12.00</PreviousInvoiceUnitNetPrice> | Cena przed korektą | ||||||
<PreviousTaxRate>22.00</PreviousTaxRate> | Stawka podatku przed korektą | ||||||
<PreviousTaxCategoryCode>S</PreviousTaxCategoryCode> | Kategoria podatku przed korektą | ||||||
<PreviousTaxAmount>5.16</PreviousTaxAmount> | Wartość VAT przed korektą | ||||||
<PreviousNetAmount>23.45</PreviousNetAmount> | Wartość netto przed korektą | ||||||
<CorrectionInvoiceQuantity>-1.000</CorrectionInvoiceQuantity> | Korekta ilości | ||||||
<CorrectionInvoiceUnitNetPrice>0.00</CorrectionInvoiceUnitNetPrice> | Korekta ceny | ||||||
<CorrectionTaxAmount>-5.16</CorrectionTaxAmount> | Korekta podatku | ||||||
<CorrectionNetAmount>-23.45</CorrectionNetAmount> | Korekta wartości netto | ||||||
<ProductFeeDetails> | |||||||
<UnitNetPriceWithoutFee>46.00</UnitNetPriceWithoutFee> | Cena netto bez kosztów gospodarowania odpadami | ||||||
<NetAmountWithautFee>46.00</NetAmountWithautFee> | Wartość bez ww. kosztów | ||||||
<FeeValue>0.45</FeeValue> | Jednostkowy koszt gospodarowania odpadami | Jeżeli do pozycji FZ przypisano klasę atrybutu o nazwie FeeValue, wówczas na utworzonym w wyniku importu elemencie dokumentu FZ atrybut ten zostanie automatycznie dodany i wypełniony wartością przesyłaną w tej linii | |||||
<FeeNetAmount>0.06</FeeNetAmount> | Wartość ww. kosztu | ||||||
</ProductFeeDetails> | |||||||
</Line-Item> | |||||||
</Line> | |||||||
</Invoice-Lines> | |||||||
Pełna nazwa pliku Invoice zapisywana jest w polu URL zakładka Nagłówek generowanego dokumentu FZ | |||||||
</Document-Invoice> |
Najczęstsze problemy występujące podczas importu faktury zakupu z ECOD
Aby operacja importu pliku Invoice przebiegła prawidłowo, system muszą odnaleźć i odpowiednio zinterpretować przesyłane w pliku informacje. Tabela przedstawia najczęstsze problemy, z jakimi operator może się spotkać podczas wykonywania operacji Import FZ z ECOD i ich przyczyny.
Treść informacji w logu | Przyczyna | Remedium |
---|---|---|
Nie znaleziono waluty | W programie XL nie zdefiniowano waluty o symbolu zgodnym z przesyłaną waluta faktury | Sprawdzić w sekcji <Invoice-Currency> importowanego pliku symbol waluty, zdefiniować taką walutę w systemie |
Nie udało się odnaleźć kontrahenta o numerze GLN: 1256565656565 | W systemie nie ma kontrahenta, dla którego istniałby (na jego karcie lub formatce adresu) numer GLN zgodny z przesyłanym w pliku | Wprowadzić numer GLN na zakładce Ogólne karty kontrahenta-sprzedawcy, a jeżeli adres kontrahenta ma być inny niż jego adres aktualny, wówczas wprowadzić numer GLN na jednym z jego adresów |
Nie udało się odnaleźć towaru o numerze EAN 1255555555555 | W systemie nie istnieje towar z numerem EAN zgodnym z przesyłanym w pliku (błąd wystąpi, jeżeli nie zostanie odnaleziony EAN w żadnej ze wskazanych pozycji: brak jednostki pomocniczej z numerem EAN zgodnym z przesyłanym, brak karty towaru, na której na zakładce Ogólne zdefiniowano EAN zgodny z przesyłanym, brak towaru, dla którego zdefiniowano „kod u kontrahenta” zgodny z przesyłanym | Na towarze, którego dotyczy importowana faktura należy zdefiniować numer EAN zgodny z przesyłanym |
Nie znaleziono w konfiguracji wybranej stawki podatkowej 7% S | W programie nie zdefiniowano stawki podatkowej 7% | Dodać brakująca stawkę podatku do konfiguracji systemu |
Wymiana katalogu produktów za pomocą systemu ECOD
Eksport katalogu produktów OS do systemu ECOD
Podstawą generowania pliku xml dla komunikatu Product Catalogue wysyłanego do odbiorcy jest zarejestrowana w systemie oferta na sprzedaż. Tabela przedstawia strukturę komunikatu typu Product Catalogue oraz zasady ustalania i przesyłania do pliku xml informacji zawartych w eksportowanej ofercie sprzedaży. Sekcje, które nie są przez program obsługiwane, pozostawione są w tabeli jako puste. Linie występujące wyłącznie w formacie właściwym dla sieci Elektro prezentowane są w kolorze zielonym, linie występujące wyłącznie w formacie Makro w kolorze niebieskim, linie wspólne w kolorze czarnym.
Nazwa pola wraz z przykładem jego wypełnienia | Opis | Źródło informacji (interfejs) | |||||
---|---|---|---|---|---|---|---|
<Document-ProductCatalogue> | |||||||
<ProductCatalogue-Header> | |||||||
<ProductCatalogueNumber>4</ProductCatalogueNumber> | Numer katalogu produktów | ||||||
<ProductCatalogueDate>2009-10-20</ProductCatalogueDate> | Data katalogu produktów | ||||||
<PeriodEndDate>2009-10-20</PeriodEndDate> | Data obowiązywania | Data obowiązywania „Do” (brak wpisu oznacza bezterminowe obowiązywanie) | |||||
<DocumentFunctionCode>N</DocumentFunctionCode> | Typ dokumentu: „N” – nie przyrostowy |
||||||
</ProductCatalogue-Header> | |||||||
<ProductCatalogue-Parties> | |||||||
<Buyer> | |||||||
<ILN>2222222222222</ILN> | GLN kupującego | ||||||
<OrderContact></OrderContact> | Osoba kontaktowa | Osoba kontaktowa dotycząca zamówień | |||||
</Buyer> | |||||||
<Seller> | |||||||
<ILN>1111111111116</ILN> | GLN sprzedawcy | ||||||
<OrderContact></OrderContact> | Osoba kontaktowa | Osoba kontaktowa dotycząca zamówień | |||||
</Seller> | |||||||
</ProductCatalogue-Parties> | |||||||
<ProductCatalogue-Lines> | |||||||
<Line> | |||||||
<Line-Item> | |||||||
<LineNumber>1</LineNumber> | Numer linii | ||||||
<LineType>3</LineType> TYLKO MAKRO | Typ linii | Typ linii: 1-dodana; 2-usunięta; 3-zmieniona; 4-bez zmian |
|||||
<EAN>2010000000069</EAN> | EAN produktu | ||||||
<BuyerItemCode>2010000000052</BuyerItemCode> TYLKO MAKRO | Kod produktu kupującego | ||||||
<SupplierItemCode>T1</SupplierItemCode> | Kod produktu sprzedawcy | ||||||
<PreviousEAN></PreviousEAN> | EAN produktu poprzednika | Linia wypełniana na podstawie atrybutu PreviousEAN umieszczonego na elemencie oferty sprzedaży | |||||
<PreviousBuyerItemCode></PreviousBuyerItemCode> TYLKO MAKRO | Kod produktu kupującego poprzednika | ||||||
<PreviousSupplierItemCode></PreviousSupplierItemCode> | Kod produktu sprzedawcy poprzednika | ||||||
<ItemDescription>buty</ItemDescription> | Nazwa produktu | Nazwa towaru podana na pozycji dokumentu. Jeżeli na karcie towarowej dodano atrybut: „ItemDescription” to w linii <ItemDescription> pojawi się wprowadzona nazwa. | |||||
<ItemType>CU</ItemType> | Identyfikator opakowania zwrotnego. | "CU" – jednostka handlowa "RC" – opakowanie zwrotne |
|||||
<UnitOfMeasure>PCE</UnitOfMeasure> | Jednostka miary | "PCE" – sztuka "KGM" – kilogram "MTR" - metr "KMT" – kilometr "PA" - opakowanie "SET" - komplet "PR" - para "TNE" – tona metryczna "LTR" - litr |
|||||
<UnitNetPrice>81.97</UnitNetPrice> TYLKO MAKRO | Cena jednostkowa netto | ||||||
<TaxRate>22.00</TaxRate> | Stawka VAT | To pole nie jest eksportowane, jeżeli stawka jest równa 0% (zwolniony). | |||||
<TaxCategoryCode>S</TaxCategoryCode> | Kod stawki | Kod stawki: "E" (exempt) - zwolniony "S" (standard) - inna, wyrażona liczba |
|||||
<TaxReference> | |||||||
<ReferenceType>PKWIU</ReferenceType> | Kod typu referencji | ||||||
<ReferenceNumber></ReferenceNumber> | Kod PKWIU | ||||||
</TaxReference> | |||||||
<PackDetails> | |||||||
<UnitPackSize>1.000</UnitPackSize> TYLKO MAKRO | Ilość w opakowaniu zbiorczym w jednostce miary | ||||||
</PackDetails> | |||||||
</Line-Item> | |||||||
</Line> | |||||||
</ProductCatalogue-Lines> | |||||||
<ProductCatalogue-Summary> | |||||||
<TotalLines>1</TotalLines> | Ilość linii | ||||||
</ProductCatalogue-Summary> | |||||||
</Document-ProductCatalogue> |
Najczęstsze problemy występujące podczas eksportu katalogu produktów do systemu ECOD
Aby eksport katalogu produktu do ECOD przebiegł prawidłowo, system musi mieć dostęp do tych informacji, które są informacjami obowiązkowymi dla komunikatu Product Catalog. Tabela przedstawia najczęstsze problemy, z jakimi operator może się spotkać podczas wykonywania operacji Eksport do ECOD i ich przyczyny.
Treść informacji w logu | Przyczyna | Remedium |
---|---|---|
Nie określono numeru GLN firmy na pieczątce | Do centrum będącego właścicielem dokumentu ZZ nie przypisano pieczątki lub na przypisanej pieczątce nie zdefiniowano numeru GLN | Przypisać do centrum pieczątkę lub jeżeli jest ona już przypisana wpisać na niej numer GLN |
Nie określono numeru GLN kontrahenta | Dla adresu, który jest adresem kontrahenta głównego ZZ nie zdefiniowano numeru GLN | Odnaleźć adres wskazany na ZZ jako adres kontrahenta głównego i wpisać na formatce adresu numer GLN |
Nie określono numeru GLN miejsca dostawy | Do centrum będącego właścicielem ZZ nie została przypisana pieczątka lub też nie zdefiniowano żadnego z poniższych numerów GLN: numeru GLN na formatce adresu wysyłkowego kontrahenta wewnętrznego przypisanego do pieczątki firmy, numeru GLN na pieczątce firmy | Przypisać pieczątkę do centrum-właściciela ZZ i wpisać na niej numer GLN. Jeżeli miejsce dostawy ma być inne niż adres z pieczątki, przypisać do pieczątki kontrahenta wewnętrznego, zdefiniować dla niego adres wysyłkowy zgodny z miejscem dostawy i wprowadzić na nim numer GLN |
Nie określono numeru GLN punktu wysyłki | Dla adresu, który jest adresem kontrahenta docelowego ZZ nie zdefiniowano numeru GLN | Sprawdzić, który adres został wybrany jako adres kontrahenta docelowego ZZ, zdefiniować na formatce tego adresu numer GLN |
Nie określono numeru EAN na karcie towaru: T1 (format Makro) | Dla towaru T1 będącym elementem dokumentu ZZ nie zdefiniowano numeru EAN (błąd wystąpi, jeżeli dla towaru nie zdefiniowano żadnego z poniższych numerów: brak numeru na formatce jednostki pomocniczej towaru użytej na dokumencie ZZ, brak numeru EAN na zakładce Ogólne karty towaru T1, brak „kodu u kontrahenta” dla Odbiorcy zgodnego z kontrahentem głównym ZZ | Jeżeli użyto jednostki pomocniczej towaru i wysłana ma być ilość w tej jednostce, należy określić EAN na formatce tej jednostki pomocniczej towaru. Jeżeli wysłana ma być ilość w jednostce głównej należy zdefiniować EAN na zakładce Ogólne karty towaru T1 lub wpisać EAN w polu „u kontrahenta” na formatce Odbiorca towaru, definiowanej na zakładce Kontrahenci karty towaru T1 dla kontrahenta głównego ZZ |
Import katalogu produktów OZ z systemu ECOD
W wyniku dokonywanej z poziomu listy zamówień sprzedaży operacji: Import z ECOD w systemie zostaje wygenerowany dokument ZS. Podstawowe dane na tym dokumencie ustalane są na podstawie przekazanych w pliku Order informacji. Sposób interpretacji tych danych przedstawia poniższa tabela. Puste sekcje w tabeli oznaczają, że informacje, których dotyczą nie są przez system interpretowane.
Nazwa pola wraz z przykładem jego wypełnienia | Opis | Źródło informacji (interfejs) | |||||
---|---|---|---|---|---|---|---|
<Document-ProductCatalogue> | |||||||
<ProductCatalogue-Header> | |||||||
<ProductCatalogueNumber>4</ProductCatalogueNumber> | Numer katalogu produktów | ||||||
<PeriodEndDate>2009-10-20</PeriodEndDate> | Data obowiązywania | Data obowiązywania „Do” (brak wpisu oznacza bezterminowe obowiązywanie) | |||||
<DocumentFunctionCode>N</DocumentFunctionCode> | Typ dokumentu: „P” – przyrostowy „N” – nie przyrostowy |
||||||
</ProductCatalogue-Header> | |||||||
<ProductCatalogue-Parties> | |||||||
<Seller> | |||||||
<ILN>1111111111116</ILN> | GLN sprzedawcy | ||||||
</Seller> | |||||||
</ProductCatalogue-Parties> | |||||||
<ProductCatalogue-Lines> | |||||||
<Line> | |||||||
<Line-Item> | |||||||
<LineNumber>1</LineNumber> | Numer linii | ||||||
<LineType>3</LineType> TYLKO MAKRO | Typ linii | Typ linii: 1-dodana; 2-usunięta; 3-zmieniona; 4-bez zmian |
|||||
<EAN>2010000000069</EAN> | EAN produktu | ||||||
<BuyerItemCode>2010000000052</BuyerItemCode> TYLKO MAKRO | Kod produktu kupującego | ||||||
<SupplierItemCode>T1</SupplierItemCode> | Kod produktu sprzedawcy | ||||||
<PreviousEAN></PreviousEAN> | EAN produktu poprzednika | Linia wypełniana na podstawie atrybutu PreviousEAN umieszczonego | |||||
<PreviousBuyerItemCode></PreviousBuyerItemCode> TYLKO MAKRO | Kod produktu kupującego poprzednika | ||||||
<PreviousSupplierItemCode></PreviousSupplierItemCode> | Kod produktu sprzedawcy poprzednika | ||||||
<UnitNetPrice>81.97</UnitNetPrice> TYLKO MAKRO | Cena jednostkowa netto | ||||||
<PackDetails> | |||||||
<UnitPackSize>1.000</UnitPackSize> TYLKO MAKRO | Ilość w opakowaniu zbiorczym w jednostce miary | ||||||
</PackDetails> | |||||||
</Line-Item> | |||||||
</Line> | |||||||
</ProductCatalogue-Lines> | |||||||
<ProductCatalogue-Summary> | |||||||
<TotalLines>1</TotalLines> | Ilość linii | ||||||
</ProductCatalogue-Summary> | |||||||
</Document-ProductCatalogue> |
Najczęstsze problemy występujące podczas importu katalogu produktów OZ z ECOD
Aby operacja importu pliku ProductCatalog przebiegła prawidłowo, system musi odnaleźć i odpowiednio zinterpretować przesyłane w pliku informacje. Tabela przedstawia najczęstsze problemy, z jakimi operator może się spotkać podczas wykonywania operacji Import OZ z ECOD i ich przyczyny.
Treść informacji w logu | Przyczyna | Remedium |
---|---|---|
Nie znaleziono waluty | W programie XL nie zdefiniowano waluty o symbolu zgodnym z przesyłaną waluta faktury | Sprawdzić w sekcji <Invoice-Currency> importowanego pliku symbol waluty, zdefiniować taką walutę w systemie |
Nie udało się odnaleźć kontrahenta o numerze GLN: 1256565656565 | W systemie nie ma kontrahenta, dla którego istniałby (na jego karcie lub formatce adresu) numer GLN zgodny z przesyłanym w pliku | Wprowadzić numer GLN na zakładce Ogólne karty kontrahenta-sprzedawcy, a jeżeli adres kontrahenta ma być inny niż jego adres aktualny, wówczas wprowadzić numer GLN na jednym z jego adresów |
Nie udało się odnaleźć towaru o numerze EAN 1255555555555 | W systemie nie istnieje towar z numerem EAN zgodnym z przesyłanym w pliku (błąd wystąpi, jeżeli nie zostanie odnaleziony EAN w żadnej ze wskazanych pozycji: brak jednostki pomocniczej z numerem EAN zgodnym z przesyłanym, brak karty towaru, na której na zakładce Ogólne zdefiniowano EAN zgodny z przesyłanym, brak towaru, dla którego zdefiniowano „kod u kontrahenta” zgodny z przesyłanym | Na towarze, którego dotyczy importowana faktura należy zdefiniować numer EAN zgodny z przesyłanym |
Nie znaleziono w konfiguracji wybranej stawki podatkowej 7% S | W programie nie zdefiniowano stawki podatkowej 7% | Dodać brakująca stawkę podatku do konfiguracji systemu |
Wymiana zamówień za pomocą systemu ECOD
Eksport zamówienia zakupu ZZ do systemu ECOD
Podstawą generowania pliku xml dla komunikatu Order wysyłanego do dostawcy jest zarejestrowane w systemie zamówienie zakupu. Tabela przedstawia strukturę komunikatu typu Order oraz zasady ustalania i przesyłania do pliku xml informacji zawartych w eksportowanym zamówieniu. Sekcje, które nie są przez program obsługiwane, pozostawione są w tabeli jako puste. Linie występujące wyłącznie w formacie właściwym dla sieci Elektro prezentowane są w kolorze zielonym, linie występujące wyłącznie w formacie Makro w kolorze niebieskim, linie wspólne w kolorze czarnym.
Nazwa pola wraz z przykładem jego wypełnienia | Opis | Źródło informacji (interfejs) | ||||
---|---|---|---|---|---|---|
<Document-Order> | ||||||
<Order-Header> | ||||||
<OrderType>220</OrderType> | Rodzaj zamówienia | Wartość atrybutu o nazwie OrderType zdefiniowanego na zakładce Atrybuty dokumentu ZZ, a jeżeli jej brak, wówczas wysyłane jest 220 | ||||
<OrderNumber>ZZ-42/09/SER</OrderNumber> | Numer zamówienia | Pełny numer ZZ | ||||
<OrderDate>2009-10-17</OrderDate> | Data zamówienia | Data wystawienia ZZ | ||||
<ExpectedDeliveryDate>2009-10-17</ExpectedDeliveryDate> | Oczekiwana data dostawy | Data realizacji ZZ | ||||
<ExpectedDeliveryTime>2009-10-17</ExpectedDeliveryTime> | Oczekiwany czas dostawy | |||||
<PromotionReference></PromotionReference> | Kod transakcji promocyjnej | |||||
<DocumentFunctionCode>O</DocumentFunctionCode> | Typ dokumentu | O – oryginał | ||||
<ResponseType>AC</ResponseType> | Typ potwierdzenia | Wartość atrybutu o nazwie ResponseType zdefiniowanego na zakładce Atrybuty dokumentu ZZ, a jeżeli jej brak, wówczas wysyłane jest NA | ||||
<PaymentType>42</PaymentType> | Forma płatności | Forma płatności dokumentu ZZ, wg zasady: gotówka-10, przelew-42, czek-20, kompensta-97, w przypadku, gdy formy nie uda się ustalić linia jest pusta | ||||
<Remarks></Remarks> | Opis/Uwagi | Informacje pobierane z pola „Opis” na zakładce Nagłówek. | ||||
</Order-Header> | ||||||
<DetailsOfTransport> | ||||||
<TermsOfDelivery>BY</TermsOfDelivery> | Wartość atrybutu o nazwie TermsOfDelivery zdefiniowanego na zakładce Atrybuty dokumentu ZZ | |||||
<CarrierName>ABC</CarrierName> | Nazwa spedytora zdefiniowanego na wysyłce, do której spięto ZZ | |||||
</DetailsOfTransport> | ||||||
<Order-Parties> | ||||||
<Buyer> | ||||||
<ILN>3333333333333</ILN> | GLN kupującego | Dane z pieczątki centrum głównego firmy, niezależnie od tego, które centrum jest właścicielem eksportowanego dokumentu | ||||
<PartyName>ABS</PartyName> | Nazwa kupującego | Dane z ww. pieczątki firmy | ||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | ||||||
<CityName>Kraków</CityName> | ||||||
<PostalCode>33-156</PostalCode> | ||||||
<Country>PL</Country> | ||||||
<TelephoneNo>012334569658</TelephoneNo> | ||||||
<FaxNo>012565986555</FaxNo> | ||||||
</Buyer> | ||||||
<BuyerHeadquarters> | ||||||
<ILN>3333333333333</ILN> | GLN siedziby kupującego | Dane z pieczątki centrum głównego firmy, niezależnie od tego, które centrum jest właścicielem eksportowanego dokumentu | ||||
<Name>K2</Name> | Nazwa kupującego | |||||
<StreetAndNumber>czarna</StreetAndNumber> | Ulica i numer | |||||
<CityName>Warszawa</CityName> | Miasto | |||||
<PostalCode>00-000</PostalCode> | Kod pocztowy | |||||
<Country /> | Kraj (kodowane ISO 3166) | |||||
</BuyerHeadquarters> | ||||||
<Seller> | ||||||
<ILN>2222222222222</ILN> | GLN Sprzedającego | Numer GLN zdefiniowany na formatce adresu, który jest adresem kontrahenta głównego na dokumencie ZZ | ||||
<Name>K1</Name> | Nazwa sprzedawcy | |||||
<CodeByBuyer /> | Kod sprzedawcy według Kupującego | |||||
<Fax /> | Numer faksu sprzedawcy | |||||
<PartyName>ABC</PartyName> | Nazwa sprzedawcy | Dane z ww. adresu | ||||
<CodeByBuyer>121254555</CodeByBuyer> | Kod wg kupującego | Wartość atrybutu o nazwie CodeByBuyer zdefiniowanego na zakładce Atrybuty dokumentu ZZ | ||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | Dane z ww. adresu | |||||
<CityName>Kraków</CityName> | ||||||
<PostalCode>33-156</PostalCode> | ||||||
<Country>PL</Country> | ||||||
<TelephoneNo>012334569658</TelephoneNo> | ||||||
<FaxNo>012565986555</FaxNo> | ||||||
</Seller> | ||||||
<DeliveryPoint> | ||||||
<ILN>1111111111111</ILN> | GLN miejsca dostawy | Numer GLN zdefiniowany na formatce adresu wysyłkowego kontrahenta wewnętrznego przypisanego do pieczątki centrum będącego właścicielem ZZ. Jeżeli ww. GLN nie zostanie odnaleziony, wówczas wysyłany jest numer GLN z ww. pieczątki Jeżeli na ww. pieczątce nie określono numeru GLN wówczas wysyłany jest numer GLN z najbliższego centrum nadrzędnego, którego pieczątka posiada określony numer GLN |
||||
<Name>K2</Name> | Nazwa miejsca dostawy | |||||
<PartyName>WWA</PartyName> | Nazwa miejsca dostawy | Dane pobrane z ww. adresu/pieczątki | ||||
<StreetAndNumber>Handlowa 3</StreetAndNumber> | ||||||
<CityName>Kraków</CityName> | ||||||
<PostalCode>33-156</PostalCode> | ||||||
<Country>PL</Country> | ||||||
<TelephoneNo>012334569658</TelephoneNo> | ||||||
<FaxNo>012565986555</FaxNo> | ||||||
</DeliveryPoint> | ||||||
<ShipFrom> | ||||||
<ILN>4444444444444</ILN> | GLN punktu wysyłki | Numer GLN zdefiniowany na formatce adresu, który jest adresem kontrahenta docelowego dokumentu ZZ | ||||
</ShipFrom> | ||||||
<UltimateCustomer> | ||||||
<ILN>4444444444444</ILN> | GLN kontrahenta | Numer GLN zdefiniowany na formatce adresu, który jest adresem kontrahenta przypisanego do atrybutu o nazwie UltimateCustomer, zdefiniowanego na zakładce Atrybuty dokumentu ZZ | ||||
</UltimateCustomer> | ||||||
</Order-Parties> | ||||||
<Order-Lines> | ||||||
<Line> | ||||||
<Line-Item> | ||||||
<LineNumber>1</LineNumber> | Numer linii | Kolejny numer pozycji wczytywanej z ZZ do pliku | ||||
<EAN>4444444444444</EAN> | EAN towaru | Kod EAN zdefiniowany na formatce jednostki pomocniczej użytej na elemencie ZZ. Jeżeli kod EAN nie został dla tej jednostki zdefiniowany lub na elemencie ZZ jednostka pomocnicza nie została użyta, wówczas wysyłany jest kod EAN z zakładki Ogólne karty towaru. Jeżeli i tam nie zostanie znaleziony, wówczas wysyłany jest kod z pola "kod u kontrahenta" definiowanego na zakładce Kontrahenci karty towaru dla kontrahenta głównego ZZ |
||||
<BuyerItemCode></BuyerItemCode> | Kod towaru u kupującego | Kod towaru z założonej w systemie karty towaru | ||||
<SupplierItemCode></SupplierItemCode> | Kod towaru u sprzedawcy | Kod zdefiniowany na formatce "Dostawca towaru" w polu "Kod u kontrahenta", dostępnej na zakładce Kontrahenci karty towaru, dla kontrahenta zgodnego z kontrahentem głównym ZZ | ||||
<ItemDescription></ItemDescription> | Nazwa towaru | Nazwa towaru podana na pozycji dokumentu. Jeżeli na karcie towarowej dodano atrybut: „ItemDescription” to w linii <ItemDescription> pojawi się wprowadzona nazwa. | ||||
<LineRemarks>opis</LineRemarks> | Informacja tekstowa | Treść wprowadzona w polu Opis elementu ZZ | ||||
<ItemType>CU</ItemType> | Identyfikator towaru | Jeżeli element ZZ jest kaucją (zaznaczony parametr "kaucja" na karcie towaru), wówczas wysyłany jest symbol kaucji tj. RC, w pozostałych przypadkach symbol jednostki handlowej tj.CU | ||||
<OrderedQuantity>2</OrderedQuantity> | Zamawiana ilość | Jeżeli wysyłany jest EAN zdefiniowany dla jednostki pomocniczej, użytej na elemencie ZZ, wówczas wysyłana jest ilość w jednostce pomocniczej, w przeciwnym razie tj., jeżeli wysyłany jest EAN zdefiniowany na zakładce Ogólne karty towaru lub kod u kontrahenta, wówczas wysyłana jest ilość w jednostce podstawowej. | ||||
<OrderedUnitPackSize>1.000</OrderedUnitPackSize> | Ilość szt. detalicznych w opakowaniu handlowym | Wskaźnik wyliczany na podstawie przelicznika jednostki pomocniczej występującej na elemencie ZZ do jednostki głównej, wskazujący, ile towaru w jednostce głównej "mieści" się w 1 jednostce pomocniczej. Jeżeli na ZZ jednostka pomocnicza nie została użyta, wówczas przesyłana jest 1. | ||||
<UnitOfMeasure>KGM</UnitOfMeasure> | Jednostka miary | Symbol jednostki miary z grupy jednostek dozwolonych dla danego formatu (Makro/Elektro) ustalony na podstawie jednostki głównej/pomocniczej, w zależności od tego, która z tych jednostek dotyczy wysyłany EAN | ||||
<OrderedUnitNetPrice>23.45</OrderedUnitNetPrice> | Cena netto | Jeżeli przesyłana jest ilość w jednostce pomocniczej, tj. wysyłany jest EAN tej jednostki, wówczas wysyłana jest cena jednostkowa dla jednostki pomocniczej, w przeciwnym wypadku wysyłana jest cena dla jednostki podstawowej. | ||||
<ExpectedDeliveryDate>2011-09-01</ExpectedDeliveryDate> | Data realizacji | Linia wypełniana datą realizacji kolejnych elementów eksportowanego ZZ | ||||
<Remarks>Uwagi<Remarks> | Opis/Uwagi | Linia wypełniana wartością zgodną z opisem wprowadzonym na elemencie zamówienia | ||||
</Line-Item> | ||||||
</Line> | ||||||
</Order-Lines> | ||||||
<Order-Summary> | ||||||
<TotalLines>1</TotalLines> | Ilość linii | Ilość przesyłanych linii (pozycji) dokumentu | ||||
<TotalOrderedAmount>2.000</TotalOrderedAmount> | Suma zamawianych ilości | Łączna ilość zamawianych towarów wyrażona w jednostce podstawowej. W przypadku gdy dla danego towaru wysyłana jest ilość w jednostce pomocniczej, ulega ona przeliczeniu na ilość w jednostce podstawowej i taka ilość jest brana pod uwagę podczas sumowania łącznej ilości zamawianych towarów |
||||
</Order-Summary> | ||||||
</Document-Order> |
Najczęstsze problemy występujące podczas eksportu ZZ do systemu ECOD
Aby eksport dokumentu ZZ do ECOD przebiegł prawidłowo, system musi mieć dostęp do tych informacji, które są informacjami obowiązkowymi dla komunikatu Order. Tabela przedstawia najczęstsze problemy, z jakimi operator może się spotkać podczas wykonywania operacji Eksport do ECOD i ich przyczyny.
Treść informacji w logu | Przyczyna | Remedium |
---|---|---|
Nie określono numeru GLN firmy na pieczątce | Do centrum będącego właścicielem dokumentu ZZ nie przypisano pieczątki lub na przypisanej pieczątce nie zdefiniowano numeru GLN | Przypisać do centrum pieczątkę lub jeżeli jest ona już przypisana wpisać na niej numer GLN |
Nie określono numeru GLN kontrahenta | Dla adresu, który jest adresem kontrahenta głównego ZZ nie zdefiniowano numeru GLN | Odnaleźć adres wskazany na ZZ jako adres kontrahenta głównego i wpisać na formatce adresu numer GLN |
Nie określono numeru GLN miejsca dostawy | Do centrum będącego właścicielem ZZ nie została przypisana pieczątka, lub też nie zdefiniowano żadnego z poniższych numerów GLN: numeru GLN na formatce adresu wysyłkowego kontrahenta wewnętrznego przypisanego do pieczątki firmy, numeru GLN na pieczątce firmy | Przypisać pieczątkę do centrum-właściciela ZZ i wpisać na niej numer GLN. Jeżeli miejsce dostawy ma być inne niż adres z pieczątki, przypisać do pieczątki kontrahenta wewnętrznego, zdefiniować dla niego adres wysyłkowy zgodny z miejscem dostawy i wprowadzić na nim numer GLN |
Nie określono numeru GLN punktu wysyłki | Dla adresu, który jest adresem kontrahenta docelowego ZZ nie zdefiniowano numeru GLN | Sprawdzić, który adres został wybrany jako adres kontrahenta docelowego ZZ, zdefiniować na formatce tego adresu numer GLN |
Nie określono numeru EAN na karcie towaru: T1 (format Makro) | Dla towaru T1 będącym elementem dokumentu ZZ nie zdefiniowano numeru EAN (błąd wystąpi, jeżeli dla towaru nie zdefiniowano żadnego z poniższych numerów: brak numeru na formatce jednostki pomocniczej towaru użytej na dokumencie ZZ, brak numeru EAN na zakładce Ogólne karty towaru T1, brak „kodu u kontrahenta” dla Odbiorcy zgodnego z kontrahentem głównym ZZ | Jeżeli użyto jednostki pomocniczej towaru i wysłana ma być ilość w tej jednostce, należy określić EAN na formatce tej jednostki pomocniczej towaru. Jeżeli wysłana ma być ilość w jednostce głównej należy zdefiniować EAN na zakładce Ogólne karty towaru T1 lub wpisać EAN w polu „u kontrahenta” na formatce Odbiorca towaru, definiowanej na zakładce Kontrahenci karty towaru T1 dla kontrahenta głównego ZZ |
Import zamówienia ZS z systemu ECOD
W wyniku dokonywanej z poziomu listy zamówień sprzedaży operacji: Import z ECOD w systemie zostaje wygenerowany dokument ZS. Podstawowe dane na tym dokumencie ustalane są na podstawie przekazanych w pliku Order informacji. Sposób interpretacji tych danych przedstawia poniższa tabela. Puste sekcje w tabeli oznaczają, że informacje, których dotyczą nie są przez system interpretowane.
Nazwa pola wraz z przykładem jego wypełnienia | Opis | Źródło informacji (interfejs) | ||||
---|---|---|---|---|---|---|
<Document-Order> | ||||||
<Order-Header> | ||||||
<OrderType>220</OrderType> | Rodzaj zamówienia | Jeżeli dla ZS zdefiniowano klasę atrybutu o nazwie OrderType, wówczas atrybut taki zostanie automatycznie na ZS dodany i wypełniony wartością przesyłaną w linii | ||||
<OrderNumber>ZZ-42/09/SER</OrderNumber> | Numer zamówienia | Przesyłany numer jest zapisywany w polu "u kontrahenta" na zakładce Nagłówek ZS | ||||
<OrderDate>2009-10-17</OrderDate> | Data zamówienia | Na tej podstawie ustalana jest data wystawienia ZS | ||||
<ExpectedDeliveryDate>2009-10-17</ExpectedDeliveryDate> | Oczekiwana data dostawy | Na tej podstawie ustalana jest data realizacji ZS | ||||
<ExpectedDeliveryTime>2009-10-17</ExpectedDeliveryTime> | Oczekiwany czas dostawy | |||||
<PromotionReference></PromotionReference> | Kod transakcji promocyjnej | |||||
<DocumentFunctionCode>O</DocumentFunctionCode> | Typ dokumentu | |||||
<ResponseType>AC</ResponseType> | Typ potwierdzenia | Jeżeli dla ZS zdefiniowano klasę atrybutu o nazwie ResponseType, wówczas atrybut taki zostanie automatycznie na ZS dodany i wypełniony wartością przesyłaną w linii | ||||
<PaymentType>10</PaymentType> | Forma płatności | Na tej podstawie ustalana jest forma płatności na ZS, wg zasady: 10-gotówka, 42 - przelew, 20-czek, 97-kompensata, jeżeli w systemie nie zdefiniowano takiej formy, lub nie jest ona przesyłana, wówczas na ZS ustalana jest forma domyślna | ||||
<Remarks></Remarks> | Opis/Uwagi | |||||
</Order-Header> | ||||||
<DetailsOfTransport> | ||||||
<TermsOfDelivery>BY</TermsOfDelivery> | Jeżeli dla ZS zdefiniowano klasę atrybutu o nazwie TermsOfDelivery, wówczas atrybut taki zostanie automatycznie na ZS dodany i wypełniony wartością przesyłaną w linii | |||||
<CarrierName>ABC</CarrierName> | ||||||
</DetailsOfTransport> | ||||||
<Order-Parties> | ||||||
<Buyer> | ||||||
<ILN>3333333333333</ILN> | GLN kupującego | Na tej podstawie ustalany jest kontrahent główny na dokumencie ZS w sposób następujący: najpierw poszukiwany jest kontrahent z numerem GLN zdefiniowanym na zakładce Ogólne jego karty zgodnym z przesyłanym GLN, kontrahent spełniający ww. warunek zostanie ustalony jako kontrahent główny na ZS, a jego adresem aktualny będzie adresem kontrahenta głównego ZS. Jeżeli ww. kontrahent nie zostanie odnaleziony, wówczas poszukiwany jest adres z numerem GLN zgodnym z przesyłanym. Tak odnaleziony adres staje się adresem kontrahenta głównego na dokumencie ZS, a kontrahentem głównym kontrahent z tego adresu. |
||||
<Name>K2</Name> | Nazwa kupującego | |||||
<StreetAndNumber>czarna</StreetAndNumber> | Ulica i numer | |||||
<CityName>Warszawa</CityName> | Miasto | |||||
<PostalCode>00-000</PostalCode> | Kod pocztowy | |||||
<Country /> | Kraj (kodowane ISO 3166) | |||||
<PartyName>ABS</PartyName> | Nazwa kupującego | |||||
</Buyer> | ||||||
<Seller> | ||||||
<ILN>2222222222222</ILN> | GLN Sprzedającego | |||||
<Name>K1</Name> | Nazwa sprzedawcy | |||||
<CodeByBuyer /> | Kod sprzedawcy według Kupującego | |||||
<Fax /> | Numer faksu sprzedawcy | |||||
<PartyName>ABC</PartyName> | Nazwa sprzedawcy | |||||
<CodeByBuyer>121254555</CodeByBuyer> | Kod wg kupującego | Jeżeli dla obiektu "ZS" zdefiniowano klasę atrybutu o nazwie "CodeByBuyer" i jeżeli w pliku jest ten numer przesyłany, wówczas na generowanym w wyniku importu dokumencie ZS zostanie taki atrybut automatycznie dodany i wypełniony wartością zgodną z przesyłaną w pliku zawartością linii <CodeByBuyer> | ||||
</Seller> | ||||||
<DeliveryPoint> | ||||||
<ILN>1111111111111</ILN> | GLN miejsca dostawy | Na tej podstawie ustalany jest kontrahent docelowy na dokumencie ZS w sposób następujący: najpierw poszukiwany jest kontrahent z numerem GLN zdefiniowanym na zakładce Ogólne jego karty zgodnym z przesyłanym GLN, odnaleziony kontrahent staje się kontrahentem docelowym na ZS, a jego aktualny adres staje się adresem kontrahenta docelowego na ZS. Jeżeli ww. kontrahent nie zostanie odnaleziony, wówczas poszukiwany jest adres z numerem GLN zgodnym z przesyłanym GLN. Tak odnaleziony adres staje się adresem kontrahenta docelowego na dokumencie ZS, a kontrahentem docelowym kontrahent z tego adresu. |
||||
<Name>K1</Name> | Nazwa sprzedawcy | |||||
<CodeByBuyer /> | Kod sprzedawcy według Kupującego | |||||
<Fax /> | Numer faksu sprzedawcy | |||||
<PartyName>WWA</PartyName> | Nazwa miejsca dostawy | |||||
</DeliveryPoint> | ||||||
<ShipFrom> | ||||||
<ILN>4444444444444</ILN> | GLN punktu wysyłki | |||||
</ShipFrom> | ||||||
<UltimateCustomer> | ||||||
<ILN>4444444444444</ILN> | GLN kontrahenta | Jeżeli dla ZS zdefiniowano klasę atrybutu o nazwie UltimateCustomer, wówczas atrybut taki zostanie automatycznie na ZS dodany. Na podstawie tego numeru ustalany jest kontrahent na atrybucie ZS w sposób następujący: najpierw poszukiwany jest kontrahent z numerem GLN zdefiniowanym na zakładce Ogólne jego karty zgodnym z przesyłanym GLN, odnaleziony kontrahent staje się kontrahentem dla atrybutu na ZS. Jeżeli ww. kontrahent nie zostanie odnaleziony, wówczas poszukiwany jest adres z numerem GLN zgodnym z przesyłanym GLN. Tak odnaleziony kontrahent staje się kontrahentem dla atrybutu na ZS. |
||||
</UltimateCustomer> | ||||||
</Order-Parties> | ||||||
<Order-Lines> | ||||||
<Line> | ||||||
<Line-Item> | ||||||
<LineNumber>1</LineNumber> | Numer linii | |||||
<EAN>4444444444444</EAN> | EAN towaru | Na tej podstawie identyfikowany jest towar, którego zamówienie dotyczy wg kolejności: najpierw poszukiwana jest jednostka pomocnicza, dla której numer EAN jest zgodny z przesyłanym w pliku, jeżeli zostanie ona odnaleziona, wówczas na elemencie ZS ustalany jest towar, którego jednostka pomocnicza spełnia ww. warunek i na elemencie tym ustalona zostanie ta jednostka jako pomocnicza. Jeżeli ww. jednostka nie zostanie odnaleziona, wówczas poszukiwany jest towar, dla którego na zakładce Ogólne zdefiniowano EAN zgodny z przesyłanym w pliku i towar spełniający ww. warunek zostaje ustalony na elemencie ZS. Jeżeli i taki towar nie zostanie odnaleziony, wówczas poszukiwany jest towar, dla którego na zakładce Kontrahenci, dla ustalonego na podstawie wcześniejszych informacji kontrahenta, "kod u kontrahenta" jest zgodny z przesłanym EAN-em. W przypadku tak odnalezionego towaru oraz gdy dla kontrahenta tego zdefiniowano jednostkę pomocniczą, wówczas towar taki dodawany jest na ZS z tą jednostką jako pomocniczą, jeżeli jednostka nie została przypisana do kontrahenta, wówczas z jednostką podstawową. |
||||
<BuyerItemCode></BuyerItemCode> | Kod towaru u kupującego | Jeżeli EAN nie jest przesyłany, wówczas ustalany jest towar, dla którego na formatce dostawcy zdefiniowano „kod u kontrahenta” zgodny z wartością przesyłana w tej linii | ||||
<SupplierItemCode></SupplierItemCode> | Kod towaru u sprzedawcy | Jeżeli EAN i BuyerItemCode nie są przesyłane, wówczas ustalony zostanie towar z kodem (twr_kod) zgodnym z wartością przesyłana w tej linii | ||||
<ItemDescription></ItemDescription> | Nazwa towaru | Nazwa towaru podana na pozycji dokumentu. Jeżeli na karcie towarowej dodano atrybut: „ItemDescription” to w linii <ItemDescription> pojawi się wprowadzona nazwa. | ||||
<LineRemarks></LineRemarks> | Informacja tekstowa | Treść przesyłana w tej linii zostanie dodana do pola Opis na elemencie ZS | ||||
<ItemType>CU</ItemType> | Identyfikator towaru | |||||
<OrderedQuantity>2</OrderedQuantity> | Zamawiana ilość | Jeżeli towar zostanie zidentyfikowany na podstawie EAN‑u jednostki pomocniczej, czyli na podstawie EAN‑u zdefiniowanego na formatce jednostki pomocniczej lub na podstawie kod u kontrahenta, dla którego zdefiniowano jednostkę pomocniczą, wówczas przesłana ilość traktowana jest jako ilość w jednostce pomocniczej a ilość w jednostce głównej wyliczana jest na podstawie przelicznika do jednostki pomocniczej. W pozostałych wypadkach przesyłana ilość traktowana jest jako ilość w jednostce podstawowej i taka ustalana na elemencie ZS. W takim wypadku jednostka pomocnicza pojawi się na elemencie ZS tylko jeżeli jest ona domyślna dla sprzedaży, a jej ilość zostanie wyliczona na podstawie ilości w jednostce głównej i przelicznika. |
||||
<OrderedUnitPackSize>1.000</OrderedUnitPackSize> | Ilość szt. w opakowaniu handlowym | |||||
<UnitOfMeasure>KGM</UnitOfMeasure> | Jednostka miary | |||||
<OrderedUnitNetPrice>23.45</OrderedUnitNetPrice> | Cena netto | |||||
<Remarks>Uwagi</Remarks> | Opis/Uwagi | Jeżeli linia jest wypełniona wówczas wartość tej linii dodawana jest na element zamówienia jako opis. | ||||
<ExpectedDeliveryDate>2009-10-17</ExpectedDeliveryDate> | Oczekiwana data dostawy | Na tej podstawie ustalana jest data realizacji danego elementu ZS wg poniższych zasad: Jeżeli ww. linia jest wypełniona datą, wówczas zostanie porównana z datą wystawienia ZS (datą bieżącą, czyli datą dokonywania operacji): - Jeżeli data w ww. linii jest równa lub większa od daty wystawienia ZS, wówczas zostanie ustalona na jej podstawie data realizacji danego elementu - jeżeli ww. data jest mniejsza od daty wystawienia ZS, wówczas zostanie zignorowana, a data realizacji elementu ZS zostanie ustalona na podstawie ustalanej podczas importu daty realizacji nagłówka ZS. |
||||
</Line-Item> | ||||||
</Line> | ||||||
</Order-Lines> | ||||||
<Order-Summary> | ||||||
<TotalLines>1</TotalLines> | Ilość linii | |||||
<TotalOrderedAmount>2.000</TotalOrderedAmount> | Suma zamawianych ilości | |||||
</Order-Summary> | ||||||
Pełna nazwa pliku Invoice zapisywana jest w polu URL na zakładce Nagłówek generowanego dokumentu ZS | ||||||
</Document-Order> |
Najczęstsze problemy występujące podczas importu zamówienia sprzedaży z systemu ECOD
Aby operacja importu pliku Order przebiegła prawidłowo, system musi odnaleźć i odpowiednio zinterpretować przesyłane w pliku informacje. Tabela przedstawia najczęstsze problemy, z jakimi operator może się spotkać podczas wykonywania operacji Import z ECOD dotyczącej zamówienia sprzedaży i ich przyczyny:
Treść informacji w logu | Przyczyna | Remedium |
---|---|---|
Nie znaleziono waluty | W programie XL nie zdefiniowano waluty o symbolu zgodnym z przesyłaną waluta faktury | Sprawdzić w sekcji <Invoice-Currency> importowanego pliku symbol waluty, zdefiniować taką walutę w systemie |
Nie udało się odnaleźć kontrahenta o numerze GLN: 1256565656565 | W systemie nie ma kontrahenta, dla którego istniałby (na jego karcie lub formatce adresu) numer GLN zgodny z przesyłanym w pliku | Wprowadzić numer GLN na zakładce Ogólne karty kontrahenta-kupującego, a jeżeli adres kontrahenta ma być inny niż jego adres aktualny, wówczas wprowadzić numer GLN na jednym z jego adresów |
Nie udało się odnaleźć kontrahenta o numerze GLN: 1025652125666 | W systemie nie ma kontrahenta, dla którego istniałby (na jego karcie lub formatce adresu) numer GLN zgodny z przesyłanym w pliku | Wprowadzić numer GLN na zakładce Ogólne karty kontrahenta-miejsca dostawy, a jeżeli adres dostawy ma być inny niż aktualny adres tego kontrahenta, wówczas wprowadzić numer GLN na jednym z jego adresów |
Nie udało się odnaleźć towaru o numerze EAN 1255555555555 | W systemie nie istnieje towar z numerem EAN zgodnym z przesyłanym w pliku (błąd wystąpi, jeżeli nie zostanie odnaleziony EAN w żadnej ze wskazanych pozycji: brak jednostki pomocniczej z numerem EAN zgodnym z przesyłanym, brak karty towaru, na której na zakładce Ogólne zdefiniowano EAN zgodny z przesyłanym, brak towaru, dla którego zdefiniowano „kod u kontrahenta” zgodny z przesyłanym | Na towarze, którego dotyczy importowana faktura należy zdefiniować numer EAN zgodny z przesyłanym |
Obsługa Awiza wysyłki w programie Comarch ERP XL
Eksport dokumentu WZ, WZE – generowanie Awiza wysyłki
Podstawą generowanie pliku xml dla komunikatu DESADV wysyłanego do odbiorcy jest zarejestrowany w systemie dokument WZ, WZE. Tabela przedstawia strukturę komunikatu oraz zasady ustalania i przesyłania do pliku xml informacji zawartych w eksportowanym dokumencie. Sekcje, które nie są przez program obsługiwane, pozostawione są w tabeli jako puste. Linie występujące wyłącznie w formacie właściwym dla sieci Castorama prezentowane są w kolorze brązowym.
Nazwa pola wraz z przykładem jego wypełnienia | Opis | Źródło informacji (interfejs) | |||||
---|---|---|---|---|---|---|---|
<Document-DespatchAdvice> | |||||||
<DespatchAdvice-Header> | |||||||
<DespatchAdviceNumber>WZ-42/6/SER1</DespatchAdviceNumber> | Numer awiza wysyłki przydzielany przez wysyłającego | Symbol i pełny numer dokumentu WZ, WZE, zgodnie z przyjętym w systemie ERP XL schematem numeracji | |||||
<DespatchAdviceDate>2009-10-17</DespatchAdviceDate> | Data dokumentu/komunikatu | Data wystawienia WZ, WZE | |||||
<ExpectedDeliveryDate>2009-10-19</ExpectedDeliveryDate> | Spodziewana data dostaway | Linia występuje wyłącznie w przypadku eksportu dokumentu dla formatu "Castorama". Jeżeli do WZ dodano atrybut o tej nazwie, typie „data” i wypełniono go wartością (datą), wówczas w linii tej przesyłana jest wartość tego atrybutu. | |||||
<EstimatedDeliveryDate>2009-10-17</EstimatedDeliveryDate> | Planowana data dostawy | Data wydania WZ, WZE. Jeżeli do WZ, WZE dodano atrybut o tej nazwie, typie „data” i wypełniono go wartością (datą), wówczas w linii tej przesyłana jest wartość tego atrybutu. | |||||
<EarliestDeliveryDate>2009-10-15</EarliestDeliveryDate> | Najwcześniejsza data dostawy. | Linia występuje wyłącznie w przypadku eksportu dokumentu dla formatu "Castorama". Jeżeli do WZ dodano atrybut o tej nazwie, typie „data” i wypełniono go wartością (datą), wówczas w linii tej przesyłana jest wartość tego atrybutu. | |||||
<BuyerOrderNumber>ZZ-15/06/SER2</BuyerOrderNumber> | Numer zamówienia (kupującego) | Numer zamówienia kupującego, tj. numer wprowadzony w polu Zamówienie na zakładce Nagłówek dokumentu WZ, WZE widoczny również w kolumnie "Źródłowy" listy dokumentów handlowych. Numer ten jest przepisywany automatycznie, jeżeli WZ, WZE realizuje ZS, na którym zdefiniowano "numer u kontrahenta". |
|||||
<BuyerOrderDate>2019-11-06</BuyerOrderDate> | Data zamówienia | Data wystawienia zamówienia. Pole wysyłane po uzupełnieniu atrybutu FormatEcod wartością Castorama. | |||||
<DespatchNumber>WZ-42/6/SER1</DespatchNumber> | Numer WZ, WZE lub listu przewozowego | Jeżeli dokument WZ, WZE jest elementem wysyłki, wówczas numer listu przewozowego z tej wysyłki, w przeciwnym wypadku, tj., jeżeli WZ, WZE nie jest elementem wysyłki, lub dla wysyłki nie jest określony list przewozowy, wówczas jest to nr WZ, WZE | |||||
<DespatchDate>2019-11-06</DespatchDate> | Data wysyłki | Data wystawienia WZ | |||||
</DespatchAdvice-Header> | |||||||
<DespatchAdvice-Transport> | |||||||
<TermsOfDelivery>EXW</TermsOfDelivery> | Incoterms | Symbol incoterms z dokumentu WZ, WZE | |||||
<ConveyanceReferenceNumber /> | Numer referencyjny przewozu | ||||||
<ModeOfTransport>30</ModeOfTransport> | Rodzaj transportu | Rodzaj transportu zdefiniowany na zakładce Ogólne dokumentu WZ, WZE | |||||
</DespatchAdvice-Transport> | |||||||
<DespatchAdvice-Parties> | |||||||
<Buyer> | |||||||
<ILN>1212121212122</ILN> | GLN kupującego | Numer GLN wprowadzony na formatce adresu, który jest adresem kontrahenta głównego na dokumencie WZ, WZE | |||||
</Buyer> | |||||||
<Seller> | |||||||
<ILN>1313131313133</ILN> | GLN sprzedającego | Numer GLN zdefiniowany na pieczątce firmy przypisanej do centrum będącego właścicielem dokumentu | |||||
<CodeByBuyer>1414141414144</CodeByBuyer> | Kod wg kupującego (kod pod jakim sprzedawca figuruje u odbiorcy) | Wartość atrybutu o nazwie CodeByBuyer zdefiniowanego na zakładce Atrybuty dokumentu WZ, WZE | |||||
</Seller> | |||||||
<DeliveryPoint> | |||||||
<ILN>1515151515155</ILN> | GLN miejsca dostawy | Numer GLN wprowadzony na formatce adresu, który jest adresem kontrahenta docelowego na dokumencie WZ, WZE | |||||
</DeliveryPoint> | |||||||
<FreightForwarder> | |||||||
<ILN>1616161616166</ILN> | GLN przewoźnika | Jeżeli dokument WZ, WZE znajduje się w wysyłce, wówczas będzie to GLN adresu bieżącego kontrahenta będącego spedytorem ww. wysyłki, jeżeli brak wysyłki lub spedytor nie jest określony, lub też nie zdefiniowano dla niego numeru GLN, wówczas będzie to GLN sprzedającego (wg opisu dla pola Seller/ILN) | |||||
</FreightForwarder> | |||||||
</DespatchAdvice-Parties> | |||||||
<DespatchAdvice-Consignment> | |||||||
<Packing-Sequence> | |||||||
<Line> | |||||||
<Line-Item> | |||||||
<LineNumber>1</LineNumber> | Numer pozycji | Kolejny numer pozycji | |||||
<OrderLineNumber>00001</OrderLineNumber> | Lp. pozycji na zamówieniu | Numer pozycji na zamówieniu, z którego wygenerowano WZ, WZE | |||||
<OrderedQuantity>1.000</OrderedQuantity> | Ilość zamawiana | Ilość zamawiana na dokumencie ZS | |||||
<UnitPacksize>1.000</UnitPacksize> | Ilość w opakowaniu | Ilość w opakowaniu zbiorczym | |||||
<EAN>4444444444444</EAN> | Numer wysyłanego towaru | Kod EAN zdefiniowany na formatce jednostki pomocniczej użytej na elemencie, jeżeli nie jest tam zdefiniowany to EAN z zakładki Ogólne karty towaru, jeżeli i tam nie zostanie znaleziony, wówczas z pola "kod u kontrahenta" | |||||
<QuantityDespatched>10</QuantityDespatched> | Ilość wysyłana | Jeżeli dla jednostki pomocniczej na elemencie zdefiniowany jest EAN, wówczas wysyłana jest ilość w jednostce pomocniczej, w przeciwnym razie tj., jeżeli wysyłany jest EAN zdefiniowany na zakładce Ogólne karty towaru lub kod u kontrahenta, wówczas wysyłana jest ilość w jednostce podstawowej | |||||
<UnitOfMeasure>PCE</UnitOfMeasure> | Jednostka miary | Jeżeli wysyłana jednostka zapisana jest jako kgm, wówczas wysyłany jest symbol KGM, w pozostałych wypadkach wysyłany jest symbol PCE - sztuka, przy czym, jeżeli wysyłany jest EAN jednostki pomocniczej, to ww. sprawdzenie dokonywane jest dla symbolu jednostki pomocniczej, jeżeli zaś wysyłany jest EAN jednostki głównej, to ww. sprawdzenie dotyczy symbolu jednostki głównej | |||||
<ItemDescription>buty</ItemDescription> | Opis pozycji | Nazwa towaru podana na pozycji dokumentu. Jeżeli na karcie towarowej dodano atrybut: „ItemDescription” to w linii <ItemDescription> pojawi się wprowadzona nazwa. | |||||
</Line-Item> | |||||||
<Line-Order> | |||||||
<BuyerOrderNumber>ZS-66/19</BuyerOrderNumber> | Numer zamówienia | Numer zamówienia, z którego wygenerowano awizo wysyłki. | |||||
<BuyerOrderDate>2019-11-06</BuyerOrderDate> | Data zamówienia | Data wystawienia zamówienia | |||||
</Line-Order> | |||||||
</Line> | |||||||
</Packing-Sequence> | |||||||
</DespatchAdvice-Consignment> | |||||||
</Document-DespatchAdvice> |
Import Awiza wysyłki – generowanie dokumentu PZ
W wyniku dokonywanej z poziomu listy dokumentów PZ operacji: Import awiza wysyłki w systemie zostaje wygenerowany dokument PZ. Podstawowe dane na tym dokumencie ustalane są na podstawie przekazanych w pliku Desadv informacji. Sposób interpretacji tych danych przedstawia poniższa tabela. Puste sekcje w tabeli oznaczają, że informacje, których dotyczą nie są przez system interpretowane.
Nazwa pola wraz z przykładem jego wypełnienia | Opis | Źródło informacji (interfejs) | |||||
---|---|---|---|---|---|---|---|
<Document-DespatchAdvice> | |||||||
<DespatchAdvice-Header> | |||||||
<DespatchAdviceNumber>WZ-42/09/SER1</DespatchAdviceNumber> | Numer awiza wysyłki | Zapisywany w polu "Faktura" na zakładce Nagłówek dokumentu PZ | |||||
<DespatchAdviceDate>2009-10-17</DespatchAdviceDate> | Data dokumentu | Data wystawienia PZ | |||||
<EstimatedDeliveryDate>2009-10-17</EstimatedDeliveryDate> | Planowana data dostawy | Data przyjęcia PZ | |||||
<BuyerOrderNumber>ZZ-15/09/SER2</BuyerOrderNumber> | Numer zamówienia | ||||||
<DespatchNumber>WZ-42/09/SER1</DespatchNumber> | Numer WZ, WZE lub listu przewozowego | ||||||
</DespatchAdvice-Header> | |||||||
<DespatchAdvice-Transport> | |||||||
<TermsOfDelivery>EXW</TermsOfDelivery> | Incoterms | Symbol incoterms | |||||
<ConveyanceReferenceNumber></ConveyanceReferenceNumber> | Numer referencyjny przewozu | ||||||
<ModeOfTransport>30</ModeOfTransport> | Rodzaj transportu | Rodzaj transportu zdefiniowany na zakładce Ogólne dokumentu PZ | |||||
</DespatchAdvice-Transport> | |||||||
<DespatchAdvice-Parties> | |||||||
<Buyer> | |||||||
<ILN>1212121212122</ILN> | GLN kupującego | ||||||
</Buyer> | |||||||
<Seller> | |||||||
<ILN>1313131313133</ILN> | GLN sprzedającego | Na tej podstawie znajdowany jest kontrahent główny na dokument PZ, wg kolejności: najpierw poszukiwany jest kontrahent, który ma na zakładce Ogólne GLN zgodny z przesłanym, jeżeli nie zostanie znaleziony, wówczas poszukiwany jest kontrahent, na którego adresie zdefiniowany jest GLN zgodny z przesłanym | |||||
<CodeByBuyer>1414141414144</CodeByBuyer> | Kod wg kupującego (kod pod jakim sprzedawca figuruje u odbiorcy) | Jeżeli dla dokumentów PZ przywiązano klasę atrybutu o nazwie "Codebybuyer, wówczas na dokument PZ atrybut ten zostanie automatycznie dodany i wypełniony wartością przesyłaną w tej linii | |||||
</Seller> | |||||||
<DeliveryPoint> | |||||||
<ILN>1515151515155</ILN> | GLN miejsca dostawy | ||||||
</DeliveryPoint> | |||||||
<FreightForwarder> | |||||||
<ILN>1616161616166</ILN> | GLN przewoźnika | ||||||
</FreightForwarder> | |||||||
</DespatchAdvice-Parties> | |||||||
<DespatchAdvice-Consignment> | |||||||
<Packing-Sequence> | |||||||
<Line> | |||||||
<Line-Item> | |||||||
<LineNumber>1</LineNumber> | Numer pozycji | ||||||
<EAN>4444444444444</EAN> | Numer wysyłanego towaru | Na tej podstawie identyfikowany jest towar, wyszukiwany w kolejności: najpierw sprawdzane są jednostki pomocnicze towarów, jeżeli zostanie znaleziona jednostka z numerem EAN zgodnym z przesłanym, wówczas elementem PZ staje się towar w tej jednostce. Jeżeli jednostka taka nie zostanie odnaleziona, wówczas poszukiwany towar, dla którego na zakładce Ogólne zdefiniowano EAN zgodny z przesłanym, jeżeli nie znaleziono, wówczas poszukiwany towar, dla którego zdefiniowano kontrahenta (odbiorcę/dostawcę) i wskazano kod u kontrahenta zgodny z przesłanym EAN‑em | |||||
<QuantityDespatched>10</QuantityDespatched> | Ilość wysyłana | 1.Jeżeli towar zostanie zidentyfikowany na podstawie EAN‑u jednostki pomocniczej, wówczas przesłana ilość traktowana jest jako ilość w jednostce pomocniczej, ilość w jednostce głównej wyliczana jest na podstawie przelicznika do jednostki pomocniczej. 2.Jeżeli towar zidentyfikowany jest na podstawie EAN zakładki Ogólne towaru, wówczas przesyłana ilość jest ilością w jednostce głównej 3.Jeżeli towar został zidentyfikowany wg kodu u kontrahenta i jeżeli dla tego kontrahenta przypisana jest jednostka pomocnicza, wówczas ilość przesłana wyrażona zostaje w tej jednostce a ilość w jednostce głównej obliczana na podstawie przelicznika. Jeżeli z kontrahentem nie jest związana jednostka pomocnicza, wówczas przesłana ilość interpretowana jest jak ilość w jednostce głównej. |
|||||
<UnitOfMeasure>PCE</UnitOfMeasure> | Jednostka miary | ||||||
<ItemDescription>buty</ItemDescription> | Opis pozycji | Nazwa towaru podana na pozycji dokumentu. Jeżeli na karcie towarowej dodano atrybut: „ItemDescription” to w linii <ItemDescription> pojawi się wprowadzona nazwa. | |||||
</Line-Item> | |||||||
</Line> | |||||||
</Packing-Sequence> | |||||||
</DespatchAdvice-Consignment> | |||||||
</Document-DespatchAdvice> |
Obsługa Potwierdzenia dostawy w programie Comarch ERP XL
Eksport dokumentu PZ – generowanie Potwierdzenia dostawy
Podstawą generowania pliku xml dla komunikatu RECADV wysyłanego do dostawcy jest zarejestrowany w systemie dokument PZ. Tabela przedstawia strukturę komunikatu oraz zasady ustalania i przesyłania do pliku xml informacji zawartych w eksportowanym dokumencie. Sekcje, które nie są przez program obsługiwane, pozostawione są w tabeli jako puste.
Nazwa pola wraz z przykładem jego wypełnienia | Opis | Źródło informacji (interfejs) | ||||
---|---|---|---|---|---|---|
<Document-ReceivingAdvice> | ||||||
<ReceivingAdvice-Header> | ||||||
<ReceivingAdviceNumber>PZ-42/09/SER1</ReceivingAdviceNumber> | Numer dowodu przyjęcia dostawy | Symbol i pełny numer dokumentu PZ, zgodnie z przyjętym w systemie ERP XL schematem numeracji | ||||
<ReceivingAdviceDate>2009-10-17</ReceivingAdviceDate> | Data dokumentu | Data wystawienia PZ | ||||
<GoodsReceiptDate>2009-10-17</GoodsReceiptDate> | Planowana data dostawy | Data przyjęcia PZ | ||||
<BuyerOrderNumber>ZZ-15/09/SER2</BuyerOrderNumber> | Numer zamówienia (kupującego) | Numer z pola "zamówienie”, na zakładce Nagłówek dokumentu PZ | ||||
<DespatchNumber>WZ-42/09/SER1</DespatchNumber> | Numer dostawy | Zgodnie z zawartością pola "Faktura" na zakładce Nagłówek dokumentu PZ. Numer dostawy importowany do kolumny „Numer dostawy” w oknie import dokumentów z ECOD. | ||||
<DocumentFunctionCode>O<DocumentFunctionCode> | Typ dokumentu "O" | Zawsze "O" -oryginał | ||||
</ReceivingAdvice-Header> | ||||||
<ReceivingAdvice-Parties> | ||||||
<Buyer> | ||||||
<ILN>1212121212122</ILN> | GLN kupującego | Numer GLN zdefiniowany na pieczątce firmy przypisanej do centrum będącego właścicielem dokumentu | ||||
</Buyer> | ||||||
<Seller> | ||||||
<ILN>1313131313133</ILN | GLN sprzedającego | Numer GLN wprowadzony na formatce adresu, który jest adresem kontrahenta głównego na dokumencie PZ | ||||
<CodeByBuyer>1414141414144</CodeByBuyer> | kod wg kupującego | Wartość atrybutu o nazwie CodeByBuyer zdefiniowanego na zakładce Atrybuty dokumentu PZ | ||||
</Seller> | ||||||
<DeliveryPoint> | ||||||
<ILN>1515151515155</ILN> | GLN miejsca dostawy | Zgodny z Buyer/ILN | ||||
</DeliveryPoint> | ||||||
</ReceivingAdvice-Parties> | ||||||
<ReceivingAdvice-Lines> | ||||||
<Line> | ||||||
<Line-Item> | ||||||
<LineNumber>1</LineNumber> | Numer pozycji towarowej | Kolejny numer pozycji dokumentu PZ | ||||
<EAN>4444444444444</EAN> | numer wysyłanego towaru | Kod EAN zdefiniowany na formatce jednostki pomocniczej użytej na elemencie PZ, jeżeli nie jest tam zdefiniowany to EAN z zakładki Ogólne karty towaru, jeżeli i tam nieznaleziony, wówczas z pola "kod u kontrahenta" | ||||
<QuantityReceived>10.000</QuantityReceived> | Ilość wysyłana | Jeżeli dla jednostki pomocniczej na elemencie zdefiniowany jest EAN, wówczas wysyłana jest ilość w jednostce pomocniczej, w przeciwnym razie tj., jeżeli wysyłany jest EAN zdefiniowany na zakładce Ogólne karty towaru lub kod u kontrahenta, wówczas wysyłana jest ilość w jednostce podstawowej | ||||
<UnitOfMeasure>PCE</UnitOfMeasure> | Jednostka miary | Jeżeli wysyłany jest EAN jednostki pomocniczej, wówczas wysyłany symbol jednostki pomocniczej, jeżeli wysyłany jest EAN jednostki głównej, to symbol jednostki głównej, odpowiednio: KGM lub PCE | ||||
</Line> | ||||||
</Line-Item> | ||||||
</ReceivingAdvice-Lines> | ||||||
<ReceivingAdvice-Summary> | ||||||
<TotalLines>1</TotalLines> | Ilość linii towarowych | Łączna ilość przesyłanych linii (pozycji) towarowych | ||||
<TotalGoodsReceiptAmount>4.000</totalGoodsReceiptAmount> | Suma odebranych ilości | Łączna ilość otrzymanych towarów | ||||
</ReceivingAdvice-Summary> | ||||||
</Document-ReceivingAdvice> |
Import Potwierdzenia dostawy
Podczas importu komunikatu Potwierdzenie dostawy, dokonywanego do konkretnego dokumentu WZ zarejestrowanego w systemie dokonywana jest weryfikacja czy odbiór towarów będących elementami dokumentu WZ został przez kontrahenta potwierdzony, czy został potwierdzony w ilości zgodnej z ilością na dokumencie WZ oraz czy w potwierdzeniu tym nie ma towarów, które nie zostały ujęte na dokumencie WZ. W przypadku zgodności ww. dokumentów, do dokumentu WZ zostanie automatycznie wystawiony spinacz (S)FS. Natomiast w przypadku stwierdzenia jakiejkolwiek niezgodności w zakresie kodów towarów czy też ich ilości, w logu zostanie wyświetlona odpowiednia informacja o występujących różnicach i operacja wystawiania spinacza nie odbędzie się.
Przed wykonaniem importu potwierdzenia dostawy należy wybrać WZ do którego wykonujemy import. Przy próbie importu potwierdzenia o niezgodnym numerze dostawy dostaniemy komunikat:

Informacje dodatkowe
Kod wg Kupującego automatycznie kopiowany na nagłówek dokumentu
Pole CodeByBuyer będzie przekazywane do pliku, jeśli na nagłówku eksportowanego dokumentu będzie dodany atrybut o nazwie CodeByBuyer z odpowiednią wartością.
Aby system automatycznie uzupełniał atrybut dla dokumentów wymienianych przez ECOD należy zdefiniować kopiowanie atrybutu z karty kontrahenta. W tym celu na karcie kontrahenta należy dodać atrybut, który przechowywałby stosowny kod, a następnie zdefiniować kopiowanie tego atrybutu na dokument eksportowany do ECOD, a dokładniej, aby wartość tego atrybutu z karty kontrahenta wypełniała wartość atrybutu CodeByBuyer zapiętego na dokumencie.
Jak przesłać duplikat faktury do ECOD?
W celu przesłania duplikatu faktury w systemie ERP XL do ECOD należy wykonać następujące czynności. Do eksportowanego dokumentu należy dodać atrybut o nazwie DocumentFunctionCode i wypełnić go wartością „D”, wówczas w przesyłanej linii <DokumentFunctionCode> zostanie podany symbol duplikatu. Do dokumentu można również dodać atrybut o nazwie InvoiceDuplicateDate i wypełnić datą (konieczny jest format daty dla atrybutu), wówczas przesłana zostanie również konkretna data. W przypadku, gdy ten atrybut nie zostanie dodany wówczas pole zostanie wypełnione datą wykonania eksportu.
Czy można zmodyfikować format numeracji dokumentów wg którego tworzony jest wpis w komunikatach w linii <InvoiceNumber>?
Tak. Modyfikacja funkcji [CDN].[ECODPelnyNumerDokumentu] pozwoli na zmianę formatu nazwy dokumentu przesyłanej w linii <InvoiceNumber>.
Jak przesłać informację o numerze dokumentu zwrotu dla FSK i (S)FSK?
W tym celu należy zdefiniować w nagłówku dokumentu FSK/(S)FSK atrybut o nazwie BuyerOrderNumber i wypełnić go odpowiednią wartością. Wówczas w linii <BuyerOrderNumber> pojawi się wartość atrybutu.
Przeliczanie nagłówka dokumentu podczas importu FZ
Sposób wyliczenia VAT-u może się różnić w zależności od klienta, wskutek czego mogą nastąpić różnice groszowe w wyliczeniu wartości VAT i brutto. Na dokumencie FZ możliwa jest ręczna korekta tych kwot. Aby wartości były zgodne z plikiem INVOICE, podczas importu kwoty nagłówka FZ aktualizowane są automatycznie na podstawie danych z pliku. Jeżeli pojawiła się taka różnica i nagłówek dokumentu zostanie przeliczony w logu pojawi się informacja: „Kwoty w tabeli VAT zostały przeliczone zgodnie z zapisami w importowanym pliku”.
W jakiej kolejności identyfikowany jest towar podczas importu komunikatu do systemu Comarch ERP XL?
Kolejność wyszukiwania jest następująca:
- Najpierw baza przeszukiwania jest po kodach obcych u kontrahenta głównego – weryfikowania jest linia <BuyerItemCode>, jeżeli algorytm odszuka dany towar, dla którego podpięty jest kontrahent główny na zakładce kontrahenci i kod u kontrahenta się zgadza to system wstawia pozycje do zamówienia (towar) z ilością jaka jest w pliku w linii, <OrderedQuantity> w jednostkach jakie wskazane są na zakładce kontrahenci na towarze dla kontrahenta głównego.
- W przypadku, gdy nie znajdzie takiego towaru po kodzie obcym, pobiera wartość z pola <EAN> i następnie przeszukuje wszystkie towary po EAN jednostki pomocniczej. Jeżeli znajdzie taki towar to wstawia go do zamówienia w ilości z pola <OrderedQuantity> w jednostkach pomocniczych.
- W przypadku, gdy powyższe próby nie znajdą towaru, system pobrany kod z linii <EAN> weryfikuje w bazie z towarami z EAN jednostki podstawowej. Jeżeli po kodzie EAN jednostki podstawowej zostanie znaleziony towar to wstawia pozycję do zamówienia w ilości z pola <OrderedQuantity> w jednostkach podstawowych.
Jakie licencje wymagane są do wymiany danych?
Do jakiejkolwiek wymiany danych konieczna jest licencja serwerowa Mechanizm wymiany danych, do której w zależności od rodzaju wymienianych komunikatów należy dołożyć ECOD współpraca z odbiorcami lub ECOD współpraca z dostawcami.
Wymiana dokumentów odbywa się na podstawie dwóch licencji ECOD Wymiana danych - wymaganej oraz jednej z dwóch pozostałych. Bez licencji wymaganej nie będzie działała żadna z licencji opcjonalnych, czyli nie będzie możliwa wymiana komunikatów ani z odbiorcami, ani z dostawcami.
W jaki sposób mogę wymieniać dokumenty, jakie są modele wymiany?
Istnieją 3 modele obsługi dokumentów w ECOD:
- Pierwszy model sprowadza się do ręcznego generowania plików xml z poziomu systemu Comarch ERP XL. Tak wygenerowane pliki należy przesłać np. pocztą do odbiorcy. Odbiorca po otrzymaniu plików importuje je z poziomu systemu Comarch ERP XL.
- Drugi model opiera się o wykorzystanie serwera ECOD. Plik generowany jest ręcznie w XL’u i zapisywany w katalogu udostępnionym na serwerze. Następnie odbiorca co pewien czas loguje się na stronę ECOD na swoje konto i sprawdza, czy znajdują się dla niego komunikaty do pobrania. Po pobraniu importuje plik za pomocą systemu Comarch ERP XL.
- Trzeci model oparty jest o wykorzystanie EcodConnectora. Po wygenerowaniu z poziomu systemu Comarch ERP XL plików xml i zapisaniu ich w odpowiednim katalogu pliki te transportowane są przez EcodConnector do odbiorcy. EcodConnector co pewien określony czas sprawdza czy w danym katalogu nie znajdują się pliki, a jeśli znajdują wówczas automatycznie przesyła je do odbiorcy. Odbiorca importuje plik xml z poziomu systemu.
Czy mogę zmienić format dla NIP‑u?
Tak. Modyfikacja funkcji [CDN].[ECODTaxId] pozwoli na formatowanie numeru NIP‑u odbiorcy.
Zasady rozpoznawania indeksów towarowych przy eksporcie dokumentów do ECOD
O kolejności poszukiwania kodów w celu wypełnienia linii EAN będzie decydować parametr: „Preferuj kod obcy jako EAN towaru” dostępny z poziomu konfiguracji systemu na zakładce Sprzedaż, zakładce Parametry 2.
Jeżeli parametr „Preferuj kod obcy jako EAN towaru” będzie odznaczony, wówczas system będzie próbował ustalić kod towaru w pierwszej kolejności przeszukując kody własne, a jeżeli nie uda się odnaleźć, wówczas kody obce.
Jeżeli parametr „Preferuj kod obcy jako EAN towaru” będzie zaznaczony, wówczas system będzie próbował ustalić kod towaru w pierwszej kolejności przeszukując kody obce, a jeżeli nie uda się odnaleźć, wówczas kody własne.

Ustalanie kodu towaru na podstawie kodu własnego dla komunikatów: FS, (S)FS, FSE, (S)FSE, FSK, (S)FSK, FKE, (S)FKE, WZ, WZE, OS, PZ, ZZ
System będzie poszukiwać w pierwszej kolejności kodu EAN przypisanego do danego towaru i jednostki jaka została użyta na elemencie dokumentu, przy czym w pierwszej kolejności będzie brany pod uwagę kod typu EAN-13, a jeżeli takich kodów jest wiele, wówczas „domyślny” spośród nich, bądź jeżeli taki nie istnieje to pierwszy z listy.
W drugiej kolejności system będzie poszukiwać EAN‑u przypisanego do towaru i jednostki, lecz o innym typie kodu niż EAN-13.
Następnie, jeżeli kod EAN na podstawie powyższych działań nie zostanie ustalony, wówczas system będzie poszukiwać kodu EAN dla jednostki głównej według identycznych zasad, jakie zostały przedstawione powyżej.
Ustalanie kodu towaru na podstawie kodu obcego dla komunikatów: FS, (S)FS, FSE, (S)FSE, FSK, (S)FSK, FKE, (S)FKE, WZ, WZE, OS, PZ, ZZ
Jeżeli kod towaru nie zostanie określony na podstawie kodu własnego, wówczas system będzie poszukiwać kodu towaru w oparciu o kody obce.
W pierwszej kolejności system będzie poszukiwać kodu EAN przypisanego do danego towaru i jednostki jaka została użyta na elemencie dokumentu i posiadającego przypisanego kontrahenta zgodnego z kontrahentem głównym dokumentu, przy czym najpierw brany będzie pod uwagę kod typu EAN-13.
Jeżeli taki kod nie zostanie ustalony wówczas system będzie poszukiwać kodu EAN zgodnie z powyższym, lecz brany pod uwagę będzie kod typu innego niż EAN-13.
Następnie, jeżeli kod EAN nie zostanie ustalony, wówczas system będzie poszukiwać kodu według identycznych zasad, jakie zostały przedstawione powyżej, lecz z tą różnicą, że bez wskazania na jednostkę.
Jeżeli powyższe działania nie pozwolą określić kodu EAN wówczas operacja eksportu zostanie przerwana, a komunikat nie zostanie utworzony.
Zasady rozpoznawania indeksów towarowych przy imporcie dokumentów z ECOD
O kolejności ustalania indeksów towarowych podczas importu komunikatu z ECOD do systemu Comarch ERP XL będzie decydować parametr: „Preferuj kod obcy z pliku” dostępny z poziomu konfiguracji systemu na zakładce Sprzedaż, zakładce Parametry 2. Dodatkowo podczas poszukiwania towaru na podstawie linii EAN kolejność poszukiwać będzie zależeć od ustawienia parametru: „Dla linii EAN preferuj kod obcy”.
Ustalanie kodu towaru na podstawie kodu obcego z pliku podczas importu komunikatów: ZS i (S)FS (potwierdzenie dostawy)
Jeżeli parametr „Preferuj kod obcy z pliku” jest zaznaczony, wówczas system rozpocznie poszukiwanie kodu na podstawie danych przesyłanych w linii „BuyerItemCode”. Jeżeli ta identyfikacja się nie powiedzie wówczas system rozpocznie poszukiwanie towaru na podstawie linii EAN w kolejności zgodnej z ustawieniem parametru „Dla linii EAN preferuj kod obcy”.
Jeżeli identyfikacja towaru na podstawie danych z linii EAN nie powiedzie się, wówczas system rozpocznie poszukiwanie towaru na podstawie linii „SupplierItemCode”.
Jeżeli powyższe działania nie pozwolą określić kodu towaru wówczas operacja importu zostanie przerwana, a komunikat nie zostanie wczytany do systemu Comarch ERP XL.
Ustalanie kodu towaru na podstawie kodu własnego podczas importu komunikatów: ZS i (S)FS (potwierdzenie dostawy)
Jeżeli parametr „Preferuj kod obcy z pliku” jest odznaczony, wówczas system rozpocznie poszukiwanie kodu na podstawie danych przesyłanych w linii EAN w kolejności zgodnej z ustawieniem parametru „Dla linii EAN preferuj kod obcy”.
Jeżeli identyfikacja towaru na podstawie danych z linii EAN nie powiedzie się, wówczas system rozpocznie poszukiwanie towaru na podstawie linii „BuyerItemCode”.
Jeżeli ta identyfikacja się nie powiedzie wówczas system rozpocznie poszukiwanie towaru na podstawie linii „SupplierItemCode”.
Jeżeli powyższe działania nie pozwolą określić kodu towaru wówczas operacja importu zostanie przerwana, a komunikat nie zostanie wczytany do systemu Comarch ERP XL.
Zasady identyfikacji towaru w oparciu o linię „BuyerItemCode”
System w pierwszej kolejności będzie poszukiwać kodu obcego z kontrahentem zgodnym z kontrahentem głównym dokumentu i z jednostką inną niż jednostka podstawowa towaru, a jeżeli to nie przyniesie rezultatu, wówczas w drugiej kolejności z jednostką podstawową towaru.
Zasady identyfikacji towaru w oparciu o linię „SupplierItemCode”
Identyfikacja towaru odbywa się na podstawie kodu towaru określonego na karcie towaru.
Zasady identyfikacji towaru na podstawie linii EAN
Jeżeli parametr „Dla linii EAN preferuj kod obcy” jest zaznaczony, wówczas system będzie poszukiwać kodu obcego zgodnie z zasadami przedstawionymi w części „Zasady identyfikacji towaru w oparciu o linię BuyerItemCode”. Następnie, jeżeli towar nie zostanie określony, wówczas system będzie poszukiwać kodu towaru wśród kodów własnych z jednostką inną niż jednostka główna, a jeżeli to nie da rezultatu to wśród kodów własnych z jednostką główną towaru.
Jeżeli zostanie wyszukanych wiele kodów, wówczas system pobierze „domyślny” spośród nich, bądź jeżeli taki nie istnieje to pierwszy z listy.
Jeżeli parametr „Dla linii EAN preferuj kod obcy” jest odznaczony, wówczas system w pierwszej kolejności będzie poszukiwać kodu własnego z jednostką pomocniczą, a następnie z jednostką główną. Jeżeli to nie da rezultatu to system będzie poszukiwać kodu wśród kodów obcych dla danego kontrahenta i jednostki pomocniczej, a następnie bez przypisanej jednostki.
Ustalanie kodu towaru na podstawie kodu obcego z pliku podczas importu komunikatów: FZ/FZK, (S)FZ (import faktury realizującej awizo wysyłki), PZ, OZ
Jeżeli parametr „Preferuj kod obcy z pliku” jest zaznaczony, wówczas system rozpocznie poszukiwanie kodu na podstawie danych przesyłanych w linii „SupplierItemCode”. Jeżeli ta identyfikacja się nie powiedzie wówczas system rozpocznie poszukiwanie towaru na podstawie linii EAN w kolejności zgodnej z ustawieniem parametru „Dla linii EAN preferuj kod obcy”.
Jeżeli ta identyfikacja się nie powiedzie, wówczas system rozpocznie poszukiwanie kodu na podstawie danych przesyłanych w linii „BuyerItemCode”.
Jeżeli powyższe działania nie pozwolą określić kodu towaru wówczas operacja importu zostanie przerwana, a komunikat nie zostanie wczytany do systemu Comarch ERP XL.
Ustalanie kodu towaru na podstawie kodu własnego podczas importu komunikatów: FZ/FZK, (S)FZ (import faktury realizującej awizo wysyłki), PZ, OZ
Jeżeli parametr „Preferuj kod obcy z pliku” jest odznaczony, wówczas system rozpocznie poszukiwanie kodu na podstawie danych przesyłanych w linii EAN w kolejności zgodnej z ustawieniem parametru „Dla linii EAN preferuj kod obcy”.
Jeżeli ta identyfikacja się nie powiedzie, wówczas system rozpocznie poszukiwanie kodu na podstawie danych przesyłanych w linii „SupplierItemCode”.
Jeżeli ta identyfikacja się nie powiedzie, wówczas system rozpocznie poszukiwanie kodu na podstawie danych przesyłanych w linii „BuyerItemCode”.
Jeżeli powyższe działania nie pozwolą określić kodu towaru wówczas operacja importu zostanie przerwana, a komunikat nie zostanie wczytany do systemu Comarch ERP XL.
Zasady identyfikacji towaru w oparciu o linię „BuyerItemCode”
Identyfikacja towaru odbywa się na podstawie kodu towaru określonego na karcie towaru.
Zasady identyfikacji towaru w oparciu o linię „SupplierItemCode”
System w pierwszej kolejności będzie poszukiwać kodu obcego z kontrahentem zgodnym z kontrahentem głównym dokumentu i z jednostką inną niż jednostka podstawowa towaru, a jeżeli to nie przyniesie rezultatu, wówczas w drugiej kolejności z jednostką podstawową towaru.
Zasady identyfikacji towaru na podstawie linii EAN
Jeżeli parametr „Dla linii EAN preferuj kod obcy” jest zaznaczony, wówczas system będzie poszukiwać kodu obcego zgodnie z zasadami przedstawionymi w części „Zasady identyfikacji towaru w oparciu o linię SupplierItemCode”. Następnie, jeżeli towar nie zostanie określony, wówczas system będzie poszukiwać kodu towaru wśród kodów własnych z jednostką inną niż jednostka główna, a jeżeli to nie da rezultatu to wśród kodów własnych z jednostką główną towaru.
Jeżeli zostanie wyszukanych wiele kodów, wówczas system pobierze „domyślny” spośród nich, bądź jeżeli taki nie istnieje to pierwszy z listy.
Jeżeli parametr „Dla linii EAN preferuj kod obcy” jest odznaczony, wówczas system w pierwszej kolejności będzie poszukiwać kodu własnego z jednostką pomocniczą, a następnie z jednostką główną. Jeżeli to nie da rezultatu to system będzie poszukiwać kodu wśród kodów obcych dla danego kontrahenta i jednostki pomocniczej, a następnie bez przypisanej jednostki.
E-faktura w zamówieniach publicznych, integracja z PEF
Wysyłka faktur do pliku XML realizowana jest na podstawie specyfikacji przygotowanej przez PEF. Struktura pliku XML oparta została o wytyczne PEPPOL BIS 3.O i CEFACT.
Aby wyeksportować plik w odpowiednim formacie należy dodać klasę atrybutu FormatEcod i uzupełnić wartością: peppol. Dla ułatwienia atrybut ten może zostać przypisany do kontrahenta i przenoszony na fakturę.
Wymiana dokumentów dostosowana do wymagań Castoramy
Jeżeli na karcie kontrahenta oraz dokumentach WZ, FS zdefiniowano atrybut o nazwie „FormatEcod” i określono dla niego wartość „Castorama”, wówczas dokumenty będą generowane i odbierane w standardzie oczekiwanym przez Castoramę, w przeciwnym wypadku wygenerowany plik będzie miał dotychczasową strukturę, właściwą dla sieci handlowych. Dokumenty realizowane są w ścieżce ZS -> WZ -> (S)FS lub (s)FS. Jednostki miary wykorzystywane przy wymianie to EA dla jednostki podstawowej oraz PK, PK1 dla jednostki pomocniczej.
Ustalanie jednostki podczas importu zamówienia ZS
- Jeśli na zamówieniu określona zostanie jednostka miary EA w <UnitOfMeasure> wówczas towar zostanie dodany w jednostce podstawowej.
- Jeśli na zamówieniu w <UnitOfMeasure> zostanie określona jednostka miary PK lub PK1 oraz przelicznik w polu <UnitPacksize> będzie większy od 1, wówczas na zamówieniu zostanie ustawiona jednostka o tym samym kodzie EAN oraz przeliczniku.
- Jeśli na zamówieniu zostanie określona jednostka miary PK lub PK1 a przelicznik w polu <UnitPacksize> będzie równy 1, wówczas pozycja zostanie dodana o ile, zostanie odnaleziony towar o identycznej jednostce miary (PK lub PK1) i odpowiednim kodzie EAN.
Eksport numeru awiza dla dokumentu WZ, WZE
Podczas eksportu awiza dostawy konieczne jest wysłanie 16-cyfrowego numeru awiza w polu <DespatchAdviceNumber>. Numer ten składa się powinien z kodu kontrahenta u odbiorcy, daty wystawienia WZ, WZE oraz kolejnego numeru w danym dniu.
Aby poprawnie wysłać numer awiza na dokumencie WZ, WZE należy dodać atrybuty:
- CodeByBuyer (tekstowy) – 6-cyfrowy kod kontrahenta u odbiorcy.
- DespatchNumber (tekstowy) – kolejny numer w danym dniu. Numer uzupełniany jest zerami do 4 cyfr.
Eksport dat
Aby przesłać oczekiwaną datę dostawy <ExpectedDeliveryDate> oraz najwcześniejszą datę dostawy <EarliestDeliveryDate> na dokumencie WZ, WZE należy dodać atrybuty odpowiednio:
- ExpectedDeliveryDate (data) – oczekiwana data dostawy.
- EarliestDeliveryDate (data) – najwcześniejsza data dostawy.
W przypadku braku tych atrybutów pola zostaną uzupełnione na podstawie daty wystawienia WZ, WZE.
Ustalanie jednostki podczas eksportu awiza
- Jeżeli pozycja na WZ, WZE dodana jest w jednostce podstawowej będzie ona przesyłana z jednostką EA
- Jeżeli pozycja na WZ, WZE dodana jest w jednostce podstawowej o nazwie PK lub PK1 będzie przesyłana odpowiednio z jednostką PK lub PK1.
- Jeżeli pozycja na WZ, WZE dodana jest w jednostce pomocniczej (z określonym kodem EAN) przesyłana będzie z jednostką PK oraz odpowiednim przelicznikiem w polu: <UnitPacksize>.
Dodatkowe pola przy eksporcie WZ, WZE
Przy eksporcie awiza wysyłki z określonym atrybutem FormatEcod o wartości Castorama wysyłane jest dodatkowo pole daty zamówienia <BuyerOrderDate>2019-11-06</BuyerOrderDate>.
Dodana została sekcja <Line-Order>, w której zapisywane są numer <BuyerOrderNumber> i data <BuyerOrderDate> zamówienia.
W sekcji <Line-Item> zostały dodane pola odnośnie liczby porządkowej <OrderLineNumber>, ilości <OrderedQuantity> oraz ilości w opakowaniu zbiorczym <UnitPacksize> na zamówieniu.
Przesyłanie faktur do KSeF za pośrednictwem Comarch EDI
Użytkownik ma możliwość wysyłki dokumentów do KSeF za pośrednictwem systemu Comarch EDI. Aby nie procesować oddzielnie wysyłki dokumentów do EDI, a oddzielenie do KSeF można wysyłać dokumenty tylko do Comarch EDI, a system zadba o wysłanie faktur do KSeF.
Więcej informacji dostępnych w biuletynie XL154 – Krajowy System e-Faktur.
XL038 - Zastosowanie danych binarnych
Zastosowanie załączników
Załączniki (dane binarne) pozwalają na wprowadzenie do systemu dowolnych danych w postaci: obrazków, plików, dokumentów oraz powiązania ich z obiektami w systemie, jak np. towarami czy kontrahentami. Dzięki temu, przykładowo do karty towaru można dołączyć jego zdjęcie, a do karty kontrahenta referencje w postaci pliku MS Word. Użytkownik ma pełną dowolność w określeniu formatu, w jakim zapisane i przechowywane będą dane binarne.
Definiowanie i przypisywanie załączników do obiektów
Typy załączników
Typy załączników definiowane są w module Administrator w oknie: Słowniki kategorii, w folderze: Inne, w gałęzi: Typy załączników. W systemie predefiniowane są następujące typy:
- Archiwum, na który składają się rodzaje plików: Archiwa (*.zip)|*.zip|Wszystkie pliki (*.*)|*.*
- Archiwum wydruków, na który składają się rodzaje plików: Pliki PDF (*.pdf).pdf|Wszystkie pliki (*.*)|*.*
- Dziennik, na który składają się Pliki dziennika (*.log) |*.log|Wszystkie pliki (*.*)|*.*
- MSExcel, na który składają się rodzaje plików: Skoroszyty (*.xls,*.xlsx) |*.xlx),*.xlsx|Wszystkie pliki (*.*)|*.*
- MSWord, na który składają się rodzaje plików: Dokumenty (*.doc,*.docx)|*.doc,*.docx|Wszystkie pliki (*.*)|*.*
- Obraz, na który składają się rodzaje plików: Obrazy (*.bmp,*.jpg,*.gif)|*.bmp;*.jpg;*.gif|Wszystkie pliki (*.*)|*.*
- Outlook, na który składają się rodzaje plików: Outlook (*txt,*htm,*html,*msg)|*.txt,*.htm,*.html, *.msg|Wszytkie pliki (*.*)|*.*
- Plik PDF, na który składają się rodzaje plików: Pliki PDF (*.pdf)|*.pdf|Wszystkie pliki (*.*)|*.*
- Tapeta, na który składają się rodzaje plików: Tapeta (*.bmp,*.jpg,*.gif)|*.bmp;*.jpg;*.gif|Wszystkie pliki (*.*)|*.*
- WFLMail, na który składają się rodzaje plików: Pliki WFLMail (*.WFLMail)|*.WFLMail|Wszystkie pliki (*.*)|*.


Typy te umożliwiają przypisanie do obiektów załączników w postaci wymienionych plików. Ponadto, możliwe jest zdefiniowanie nowych typów załączników. Informacje dotyczące dodawania nowych typów załączników znajdują się w rozdziale: Definiowanie nowego typu .
O właściwościach załączników przypisywanych do obiektów w Comarch ERP XL decydują ustawienia w oknie: Typy załączników, otwieranym z poziomu okna: Słowniki kategorii.

W oknie: Typy załączników określa się pola:
- Kategoria – kategoria będąca nazwą gałęzi ze słownika kategorii dotyczącą załączników (załączników)
- Nazwa – nazwa typu umożliwiająca identyfikację plików objętych danym typem
- Pliki – w polu wskazywane są pliki, objęte definiowanych typem
- Grupa – grupa załączników, których dotyczy kategoria załączników, gdzie domyślnie jest to grupa główna. Nową grupę załączników można dodać po otwarciu w Administracji systemu zakładki: Narzędzia, następnie należy wybrać opcję:
Załączniki. Po naciśnięciu przycisku: zostanie otwarte okno: Lista załączników, w którym po naciśnięciu przycisku:
[Dodaj] będzie można dodać nową grupę załączników

- Kompresja danych – odpowiednie zaznaczenie w polu wyboru jednej z opcji zadecyduje o tym, czy w trakcie importu plik zostanie skompresowany. Opcja: Test, służy określeniu czy kompresja jest konieczna. Skompresowane zostaną pliki, których objętość zmniejszy się do 80% stany przed kompresją
- Wersjonowane dane – dotyczy funkcjonalności pokazującej historię zmian załączania kolejnych wersji załącznika. Po zaznaczeniu na typie załącznika w grupie: Wersjonować dane opcji:
- Tak, dodaniu i zapisaniu załącznika o określonym typie do obiektu, a następnie zaznaczeniu go na liście: Historia zmian i naciśnięciu w nim przycisku: [Szukaj] i zapisaniu otwartego za jego pomocą pliku załącznika, w oknie: Historia zmian będzie prezentowana zarówno obecna data modyfikacji pliku, jaki i poprzednia wg sortowania od najnowszej do najstarszej;
- Nie, dodaniu i zapisaniu załącznika o określonym typie do obiektu, a następnie zaznaczeniu go na liście: Historia zmian i naciśnięciu w nim przycisku: [Szukaj] i zapisaniu otwartego za jego pomocą pliku załącznika, w oknie: Historia zmian będzie prezentowana wyłącznie ostatnia data modyfikacji pliku o określonym formacie.
- Dopuszczalny rozmiar pliku (wartość) kB – określa maksymalny dopuszczalny rozmiar pliku załącznika w kB;
- Automatycznie wyświetlaj – parametr ma znaczenie dla plików typu obraz. Po jego zaznaczeniu pliki typu .jpg, .bmp i podobne, będą automatycznie wyświetlone w prawym panelu zakładki: Załączniki, obiektu, do którego takie załączniki zostały przypisane;
- Aktywne – pole wyboru zaznacza się, aby uaktywnić typ załączników w systemie. Po zaznaczeniu tego parametru typ załączników będzie mógł być wykorzystywany podczas przypisywania określonych plików od obiektów.
Lista załączników, zakładka: Załączniki
Okno wyświetla listę załączników wykorzystywanych w systemie COMARCH ERP XL. Aby otworzyć okno, należy z menu: Narzędzia, wybrać pozycję: Załączniki.



Rozmiar załączników
Ograniczenia w wielkości importowanych załączników zależą od wydajności komputera/serwera Użytkownika. W trakcie testów wersji starszej wersji import plików o wielkości ponad 200 MB przebiegał bez zakłóceń (zarówno przy kompresji danych jak i bez kompresji), jednak przy wielkościach plików ponad 400 MB, pojawiały się problemy z importem lub eksportem zaimportowanych załączników. W kolejnych wersjach Comarch ERP XL planowane są prace nad zwiększeniem bezproblemowego importu załączników o większej pojemności.
Osobne ograniczenia dotyczą wyświetlania załączników typu obraz bezpośrednio (bez potrzeby uruchomienia podglądu) w oknie obiektu, do którego zostały przypisane. W ten sposób mogą być wyświetlane pliki, których wielkość nie przekracza około 2 MB, a w przypadku karty załączników do 10 MB.
Ponadto, załączniki mogą być pakowane podczas zapisu, gdzie możliwe jest wykorzystanie opcji: Test, przy wykorzystaniu której możliwa jest weryfikacja wielości pliku po spakowaniu (tzn. czy jest to korzystne).
Wyświetlanie załączników
Po przypisaniu załączników do obiektów w Comarch ERP XL, możliwy jest ich podgląd. Jeżeli załączniki stanowią obraz (np.: *.bmp,*.jpg,*gif), wtedy możliwy jest bezpośredni podgląd w oknie obiektu, do którego zostały przypisane, np.: fotografia pracownika zostanie wyświetlona w oknie: Karta pracownika, po wybraniu zakładki: Załączniki. W takim przypadku musi być jednak zaznaczone pole: Automatycznie wyświetlaj, w oknie: Typy załączników (należy przy tym pamiętać o ograniczeniu wyświetlania plików do określonej wielkości – więcej w rozdziale: Rozmiar załączników ). Pozostałe typy załączników zostaną wyświetlone po naciśnięciu przycisku: [Uruchom] dotyczący podglądu załącznika w oknie obiektu, do którego zostały przypisane. Jego naciśnięcie spowoduje uruchomienie programu, umożliwiającego przegląd załączników, np. dla wyświetlenia arkusza kalkulacyjnego zostanie automatycznie uruchomiona aplikacja: MS Excel.
Podsumowując, wyświetlanie załączników odbywa się:
Automatycznie (dla plików typu: Obraz - np.: *.bmp,*.jpg,*gif), jeżeli dla typu załączników: Obraz, zaznaczono opcję: Automatycznie wyświetlaj (więcej w rozdziale: Rozmiar załączników );
Po naciśnięciu w oknie obiektu, do którego zostały przypisane załączniki, przycisku: [Uruchom] lub wybraniu z menu kontekstowego, (rozwijanego prawym klawiszem myszy) funkcji: Uruchom podgląd.
Definiowanie nowego typu załączników
W przypadku, gdy typy załączników, predefiniowanych w systemie nie odpowiadają Użytkownikowi (Użytkownik życzy sobie zaimportować plik, którego typ predefiniowany nie obejmuje) ma on możliwość zdefiniowania wybranego przez siebie typu załączników. Definiowanie nowego typu załączników odbywa się w oknie: Słowniki kategorii, dostępnym z poziomu modułu: Administrator. Sposób definiowania nowego typu załączników został przedstawiony na przykładzie dodawania typu załączników MS Visio, obejmującego skonwertowane pliki o rozszerzeniu .vsd.
Aby dodać nowy typ załączników (np.: .vsd), należy:
- W oknie: Słowniki kategorii, rozwinąć gałąź kategorii: Inne i zaznaczyć kategorię: Typy załączników
- Po zaznaczeniu danych załączników, nacisnąć przycisk: [Dodaj]. Zostanie otworzone okno: Typy załączników
- W oknie: Typy załączników, należy wprowadzić następujące wartości:
- Kategoria – przy dodawaniu załączników jest to domyślnie i bez możliwości modyfikacji kategoria: Typy załączników
- Nazwa – nazwa typu umożliwiająca identyfikację plików objętych danym typem. Zakładając, że dodawany jest typ załącznika, który umożliwi importowanie plików PDF, można przyjąć nazwę PDF
- Pliki – w polu wskazywane są pliki, objęte definiowanych typem, np. jeśli mają być zaimportowane pliki MS VISIO, należy je wymienić w tym polu w formacie: MS VISIO (*.vsd)|*.vsd|Wszystkie pliki (*.*)|*.*.
- Grupa – grupa załączników, których dotyczy kategoria załączników, gdzie domyślnie jest to grupa główna
- Kompresja danych – odpowiednie zaznaczenie w polu wyboru jednej z opcji zadecyduje o tym, czy w trakcie importu plik zostanie skompresowany. Opcja: Test, służy określeniu czy kompresja jest konieczna. Skompresowane zostaną pliki, których objętość zmniejszy się do 80% stany przed kompresją
- Wersjonowane dane – dotyczy funkcjonalności pokazującej historię zmian załączania kolejnych wersji załącznika – szerzej w rozdziale: Typy załączników
- Dopuszczalny rozmiar pliku (wartość) kB – określa maksymalny dopuszczalny rozmiar pliku załącznika w kB
- Aktywne – zaznaczenie zadecyduje o statusie aktywności danego typu. Niemożliwe będzie umieszczenie nieaktywnego typu danych na obiekcie


Po wypełnieniu pól w oknie: Typy załączników, należy je zapisać, naciskając przycisk: [Zapisz]. Nowy typ załączników zostanie wprowadzony na listę typów załączników w oknie: Słowniki kategorii.

- Nowy typ załączników będzie mógł być wykorzystywany w systemie – będą mogły być przypisywane pliki PDF do wybranych obiektów, jeżeli:
- typ załączników będzie aktywny (zaznaczony parametr: Aktywne, w oknie: Typy załączników, zob. wyżej)
- po zapisaniu typu załączników, została nagrana konfiguracja (aby ją nagrać należy otworzyć okno:
- Konfiguracja i nacisnąć przycisk: [Zapisz].
Lista załączników
Lista załączników, zakładka: Załączniki
Załączniki, które zostały użyte w systemie prezentowane są w oknie: Lista załączników. Z poziomu tego okna możliwe jest również dodawanie, usuwanie, importowanie i eksportowanie załączników oraz przypisywanie ich od obiektów.

W oknie dostępne są pola i funkcje:
Rozmiar – filtr umożliwiający zawężenie listy wyświetlanych załączników według kryterium wielkości plików w kB.
Archiwalne – po zaznaczeniu parametru, na liście zostaną wyświetlone zarówno załączniki aktywne jak i archiwalne. Załączniki archiwalne będą wyświetlane szarym kolorem czcionki.
Typ – filtr umożliwiający zawężenie listy wyświetlanych załączników według ich typu.
Język - filtr umożliwiający zawężenie listy wyświetlanych załączników według języka.
Data utworzenia – filtr umożliwiający zawężenie listy wyświetlanych załączników do wskazanego zakresu dat w polach: Od, Do.
[Dodaj grupę] – po naciśnięciu przycisku otwiera się okno: Grupa załączników.
[Dodaj] – służy dodaniu załącznika do listy. Po naciśnięciu przycisku zostanie wyświetlone okno: Załącznik, z poziomu którego można importować oraz eksportować załączniki, a także przypisywać załączniki do obiektu. Po dodaniu łącznika kursor będzie podświetlał nowo dodany rekord na liście.
[Karta] – po naciśnięciu przycisku zostanie wyświetlone do podglądu/edycji okno: Załącznik
[Usuń] – usuwa załącznik (niepowiązaną z żadnym obiektem) z listy.
Na liście załączników wyświetlone będą automatycznie załączniki typu dziennik, które zawierają loga wygenerowanego podczas wykonywania akcji kluczowej przez XL WORK AUTOMAT w procesach. W logach tych zawarta jest informacja o przyczynach niepowodzenia w wykonywanych akcjach. W Konfiguracji w części Ogólne na zakładce Parametry 2 jest parametr umożliwiający konfigurację pojawiania się informacji w logu „Do procesu załączaj log tylko gdy wystąpiły błędy lub ostrzeżenia”. W przypadku jego zaznaczenia procesy powinny robić wpisy do załączników tylko w przypadku gdy w logu pojawią się błędy lub ostrzeżenia.
Po podniesieniu pojedynczego załącznika, zostaje otwarte okno: Załącznik, którego właściwości zostały opisane w punkcie: 1.1.6.
Lista załączników, zakładka: Archiwum wydruków
Zakładka Archiwum wydruków na Liście załączników jest analogiczna do zakładki Załączniki. Różnica między nimi sprowadza się do dodatkowych filtrów.
Ponadto na tej zakładce widoczne są wydruki wysyłane jako załączniki w postaci PDF programem pocztowym obok wydruków generowanych na drukarkę stacjonarną. Nazwa wydruku składa się z: <Nazwa wydruku>_<Numer dokumentu>_<Data wydruku>.pdf. Przykład: Faktura sprzedaży_FS-15/10/2010_20101210.pdf
W oknie funkcjonują następujące filtry:
- Data wydruku – umożliwia zawężenie listy wyświetlanych załączników do wskazanego zakresu dat w polach: Od, Do. Sortowanie odbywa się po dacie wydruku
- Data dokumentu – umożliwia zawężenie listy wyświetlanych załączników do wskazanego zakresu dat w polach: Od, Do
- Podmiot – umożliwia zawężenie listy wyświetlanych załączników w zależności od wskazanego podmiotu. Przy tym można wskazać: Kontrahenta, Pracownika, Urząd, Bank, Inny
- [Podgląd wydruku w PDF] – umożliwia podgląd zaznaczonego załącznika w postaci PDF.
- [Podgląd] – umożliwia podgląd zaznaczonego załącznika. Naciśnięcie ikony spowoduje otwarcie formatki zaznaczonego dokumentu.

Właściwości załączników
Informacje ogólne o właściwościach załączników
W Konfiguracji systemu na zakładce: Ogólne / Parametry 1 w grupie: Załączniki systemowe, czyli znajdujące się w archiwum wydruków, dla których zostały obsłużone opcje:
Nie pozwalaj na usuwanie obiektów, do których przypisane są systemowe załączniki – po zaznaczeniu tej opcji, nie będzie możliwe usuwanie obiektów (np. dokumentów, kart towarów, kontrahentów), do których przypisane są systemowe załączniki. Jeśli zostanie zaznaczona ta opcja, jednocześnie zostanie zaznaczona opcja: Nie pozwalaj na usuwanie załączników systemowych jn
Nie pozwalaj na usuwanie załączników systemowych – po zaznaczeniu tej opcji, nie będzie możliwe usuwanie załączników systemowych

Na poszczególnym obiekcie dotyczącym załącznika jest obsłużony parametr: Systemowy odnoszący się do ustawień z Konfiguracji:
Okno: Załącznik, zakładka: Ogólne
W oknie właściwości załączników, na zakładce: Ogólne określamy kod oraz nazwę załącznika, a także dokonujemy importu i eksportu pliku.

W oknie dostępne są pola i funkcje:
- Kod – w polu wprowadza się kod załącznika, wyświetlany na liście załączników
- Nazwa – nazwa załącznika. Po zaimportowaniu danej wyświetlona zostanie domyślnie nazwa tego pliku
- Typ – format załącznika. Pole również wypełniane automatycznie po zaimportowaniu pliku
- Rozszerzenie – rozszerzenie załącznika. Pole wypełniane jest automatycznie po jej zaimportowaniu do systemu
- Rozmiar – pole określające rozmiar załącznika, wypełniane automatycznie
- Modyfikował/Data – w polu wyświetlane są dane operatora, który dokonał modyfikacji załącznikowi oraz daty, kiedy została dokonana modyfikacja
- Archiwalny – nadanie załącznikowi charakteru archiwalności umożliwia zawężenie listy załączników tylko do aktywnych. Archiwalny załącznik będzie mógł nadal być wykorzystywany na obiektach – możliwy będzie jej podgląd, edycja itd.
- [Uruchom] – naciśnięcie przycisku powoduje otworzenie załącznikowi do podglądu/edycji (za pomocą programu wskazanego w typie załączników – więcej w rozdziale: Typy załączników ).
- [Import z pliku] – funkcja umożliwia import załącznikowi do systemu. Po naciśnięciu przycisku zostanie wyświetlone okno: Import pliku do bazy danych, w którym należy wskazać odpowiedni plik, a następnie nacisnąć przycisk: Otwórz. Załącznik zostanie zaimportowany.
- [Eksport do pliku] – funkcja umożliwia eksport załącznikowi (pliku) z bazy danych. Po naciśnięciu przycisku zostanie otworzone okno: Eksport do pliku z bazy danych, w którym należy wskazać lokalizację, do której ma zostać wyeksportowany plik, a następnie nacisnąć przycisk: Zapisz. Eksport załącznikowi nie spowoduje usunięcia załącznikowi z bazy danych – zostanie ona po prostu skopiowana do wskazanej lokalizacji.
W systemie Comarch ERP XL istnieje możliwość opisywania załączników. Wprowadzony na załącznikach opis jest widoczny w odpowiedniej kolumnie, bezpośrednio z poziomu zakładki: Załączniki danego obiektu


Okno: Załącznik, zakładka: Historia zmian
W oknie: Historia zmian są prezentowane daty i godziny zapisywania załącznika wraz ze wskazaniem operatora, który dokonywał zmiany i opisem. Historia zmian dział w zależności od ustawień dla danego typu załącznika określonego w oknie: Typy załączników w sekcji: Wersjonowane dane, co zostało szczegółowo opisane w rozdziale: Typy załączników.
Na zakładce zostały obłożone opisane powyżej standardowe przyciski: [Podgląd],
[Uruchom],
[Zapisz],
[Eksport do pliku],
[Usuń],
[Zapisz],
[Anuluj], których działanie zostało opisane powyżej.

Okno: Załącznik, zakładka: Obiekty
Na zakładce: Obiekty wyświetlona jest lista obiektów, z którymi powiązany jest załącznik. Z poziomu tego okna możliwe jest również wyświetlenie załączników zdefiniowanych jako atrybuty (klasa atrybutu o typie: Załącznik), i które jako atrybuty przypisane zostały do obiektów w systemie. Zaleta wiązania załączników z obiektami z poziomu okna: Właściwości załączników jest to, że możliwe jest tu wiązanie jednej danej z wieloma obiektami. Nie ma więc potrzeby edytowania kart kolejnych obiektów i przypisywanie im tego samego załącznika.
Z poziomu tego okna możliwe jest również dodawanie kolejnych obiektów za pomocą przycisku: [Dodaj], ich podgląd
[Podgląd],
[Usuń].
Ponadto, jest obsłużona funckonalność obłsużona za pomocą przycisku: dotycząca pokazywania obiektów i aplikacji, których dotyczy załącznik.

Okno: Załącznik, zakładka: Atrybuty
W oknie: Załączniki na zakładce: Atrybuty istnieje możliwość opisania załącznikowi za pomocą atrybutów. Jednak aby można było przypisać atrybut do załącznika, w pierwszej kolejności należy przypisać klasę tego atrybutu do obiektu: Załącznik.

Okno: Załącznik, zakładka: Załączniki
W oknie Załączniki na zakładce: Załączniki zostały standardowo obsłużone załączniki, które można zdefiniować dodatkowo załącznik będący załącznikiem do załącznika.

Przypisywanie załączników do obiektów
Załączniki można przypisać do większości obiektów znajdujących się systemie m.in.: Karty pracownika, Karty kontrahenta, Karty towaru, dokumentów handlowych, magazynowych, wewnętrznych, obiektów CRM itd. Dodano także zakładkę: Dane binarne (nazwa w kolejnych wersjach została zmieniona na: Załączniki) w nagłówkach dokumentów: zapytań, ofert, zamówień, paczkach oraz wysyłkach.
Aby przypisać załączniki do obiektu, należy:
- Na edytowanym obiekcie, do którego mają zostać przypisane załączniki, przechodzimy na zakładkę: Załączniki
- Na zakładce: Załączniki, należy nacisnąć przycisk: [Dodaj]. Podniesione zostanie okno: Załącznik, wybieramy zakładkę: Ogólne

- Naciskając przycisk: [Import z pliku], zostanie otworzone okno: Import pliku do bazy załączników. W oknie należy wskazać lokalizację pliku (załączników – obrazu, pliku tekstowego, arkusza kalkulacyjnego, innych), a po jej podaniu, nacisnąć przycisk: [Otwórz] . Po jego użyciu, plik zostanie zaimportowany do systemu Comarch ERP XL
- Uzupełniamy Kod załącznika. Możliwe jest wprowadzenie od razu nazwy pliku, który zostanie dodany, ale należy pamiętać, że podczas importu zostanie automatycznie przypisana nazwa pliku importowanego. Następnie wskazujemy typ załączników
- Przechodzimy na zakładkę: Obiekty, rozwijamy menu przyciskiem: [Rozwija menu dostępnych opcji] i wybieramy z listy typ obiektu (np. Kontrahent), do którego ma zostać przypisany załącznik; zostanie otworzona lista obiektów, z której wskazujemy konkretny obiekt (np. kontrahenta), z którym nastąpi powiązanie załącznikowi


- Zapisujemy załącznik (przyciskiem: [Zapisz])

- Ilość zaimportowanych plików może być dowolna. Aby uruchomić podgląd zaimportowanych załączników, należy zaznaczyć odpowiednią pozycję na zakładce i nacisnąć przycisk: [Uruchom podgląd]. Więcej informacji o wyświetlaniu plików znajduje się w rozdziale: Wyświetlanie załączników .
Wczytywanie bezpośrednio do załączników
W systemie Comarch ERP XL istnieje możliwość dodawania załączników poprzez udostępnienie skanowania bezpośrednio z poziomu otwartego obiektu, np. dokumentu. Dane mogą być również wczytywane z innych nośników, takich jak np. aparatu fotograficznego. Aby wczytać dane z aparatu fotograficznego na nagłówek dokumentu należy:
- Otworzyć obiekt na zakładce: Załączniki
- Przyciskiem: [Rozwija menu dostępnych opcji] obok przycisku: [Dodaj] wybieramy opcję: Pobierz;
Faktura zakupu, zakładka: Załączniki, przycisk: Dodaj, opcja Pobierz - w otwartym nowym oknie: Wybieranie źródła, wskazujemy źródło danych z którego zostaną pobrane obrazy:
Okno: Wybieranie źródła - po wskazaniu konkretnego obrazu, następnie jest on dodawany jako załącznik. Więcej informacji o dodawaniu załączników znajduje się w rozdziale: Właściwości załączników.
Wykorzystanie załączników na obiektach
Poniżej wymieniono przykłady wykorzystania załączników na obiektach występujących w systemie Comarch ERP XL. Nie jest to wyliczenie enumeratywne - załączniki, dzięki swej uniwersalności mogą mieć wszechstronne zastosowanie - adekwatne do konkretnych potrzeb Użytkownika.
Załączniki na karcie pracownika
Załączniki na karcie pracownika mogą stanowić:
- Fotografie pracownika
- Dokumenty dotyczące pracownika (umowy o pracę, świadectwa uczestnictwa w szkoleniach, uzyskane dyplomy, inne)
- Arkusze kalkulacyjne (arkusze ocen kwalifikacyjnych, inne)
- Inne.
Załączniki w Intranetowych Aplikacjach Pracowniczych
Załączniki - pliki zawierające fotografie o wielkości do 1 mb mogą być wyświetlane w Intranetowych Aplikacjach Pracowniczych. Wyświetlane one są na zakładce: Info, przedstawiającej podstawowe dane identyfikacyjne pracownika. Aby obraz taki został wyświetlony należy:
- Na Karcie pracownika, na zakładce: Załączniki, przypisać załączniki – plik z fotografią pracownika, zgodnie z opisem w rozdziale: Przypisywanie załączników do obiektów;
- Zaznaczyć wprowadzone załączniki, i nacisnąć prawy klawisz myszy – zostanie rozwinięte menu kontekstowe;
- Z menu kontekstowego, należy wybrać funkcję: Ustaw domyślną;
- Po uruchomieniu Intranetowych Aplikacji Pracowniczych i wybraniu zakładki: Info, dla pracownika, któremu przypisano załączniki, zostanie wyświetlona jego fotografia.

Załączniki na Karcie kontrahenta
Załączniki na Karcie kontrahenta mogą stanowić:
- Dokumenty dotyczące kontrahenta (np. uzyskane certyfikaty, licencje, listy referencyjne, kopie umów);
- Arkusze kalkulacyjne;
- Obrazy (np. mapy dojazdu do kontrahenta);
- Inne.

Załączniki na Karcie towaru
Załączniki na Karcie towaru mogą stanowić:
- Dokumenty dotyczące towaru (np. certyfikaty towaru, licencje, zezwolenia na dopuszczenie do obrotu, specyfikacja funkcjonalna towaru, katalogi, ulotki informacyjne itp.);
- Arkusze kalkulacyjne (np. analizy wydajności, trwałości towaru itp.);
- Obrazy (np. zdjęcia dostępnego towaru itp.);
- Inne.

Seryjne dodawanie załączników/zdjęć
W systemie Comarch ERP XL obsłużone zostało wczytywanie zdjęć oraz innych plików do systemu wraz z automatycznym tworzeniem załączników do towarów. Funkcjonalność ta pozwala na zautomatyzowanie i przyspieszenie całego procesu dodawania zdjęć lub innych plików do towarów Dzięki takiemu rozwiązaniu użytkownik będzie mógł szybko i sprawnie przygotować ba danych np. do Comarch ERP e-Sklep.
Automatyzacja procesu dodawania zdjęć wymaga od użytkownika przygotowania odpowiedniej bazy zdjęć (lub innych plików) i takie jej opisanie aby program mógł bezbłędnie przypisać dane zdjęcie (lub inny plik) do określonego towaru.
Udostępnione zostały dwie opcje importu zdjęć/plików w zależności od tego gdzie i jak będą umieszczone zdjęcia/pliki:
- * Import zdjęć bezpośrednio z katalogu na dysku, w którym są umieszczone zdjęcia/pliki. Warunek konieczny: nazwa pliku musi być zgodna z kodem lub kodem EAN towaru.
- * Import zdjęć na podstawie mapy przygotowanej w arkuszu MS Excel, arkusz musi zawierać kod (lub kod kreskowy) towaru oraz link do zdjęcia w postaci ścieżki do konkretnego pliku lub adresu URL.
Przygotowane przez użytkownika zdjęcia czy inne pliki będą mogły być równocześnie zaimportowane do bazy i powiązane ze wskazanymi towarami. Efektem importu będzie dodanie załącznika do listy załączników oraz podpięcie go do odpowiedniego towaru. Możliwe jest również dodanie wielu załączników do tego samego towaru.
Podczas importu możliwe jest określenie języka załącznika, ustalenie, do jakiej grupy powinien trafić oraz zdefiniowanie, do jakich aplikacji ma być wysyłany. Jeżeli import będzie realizowany z wykorzystaniem pliku MS Excel wówczas grupa załącznika może być określona w arkuszu.
Lista towarów – okno importu
Na liście towarów został dodany przycisk służący do wywołania operacji importu plików „Seryjny import załączników”:


Przed rozpoczęciem importu należy ustalić następujące parametry:
Rodzaj Importu
* Import plików zapisanych na dysku
* Import na podstawie arkusza MS Excel
Katalog/plik źródłowy – w zależności od wybranego rodzaju importu należy wskazać katalog w którym umieszczone są pliki do importu bądź wskazać arkusz MS Excel w którym zapisano ścieżki do plików.
Ustaw dostępność w aplikacjach – należy zaznaczyć, w których aplikacjach dodane załączniki mają być widoczne. Dotyczy wszystkich dodawanych załączników.
Ustaw grupę załączników – można wskazać jedną z istniejących grup załączników lub wybrać opcję „Grupa załączników wg pliku” wówczas grupa zostanie określona na podstawie zapisów w arkuszu.
Język – należy ustawić język dla dodawanych załączników.
Sposób zapisu do bazy – należy określić czy do załączników mają zostać dodane pliki w postaci danych binarnych czy tylko, jako linki do plików.
Import plików zapisanych na dysku
Aby móc zaimportować zdjęcia czy inne pliki zapisane na dysku muszą zostać spełnione określone warunki. Pliki zapisane na dysku muszą mieć nazwę zgodną z kodem lub z kodem kreskowym towaru. Jeśli zachodzi konieczność zaimportowania kilku plików do jednego towaru w katalogu wskazanym na oknie importu należy utworzyć katalog o kodzie (lub kodzie kreskowym) towaru i umieścić z nim pliki, które mają być dodane do towaru. W tym przypadku nazwa pliku nie ma znaczenia.
Akcja importu złączników do bazy będzie skutkowała zapisem w bazie nowego załącznika z równoczesnym podpięciem go do ustalonego towaru.
Kod i nazwa załącznika będzie ustalana na podstawie nazwy pliku. W przypadku nazw pliku dłuższych niż 40 znaków kod załącznika będzie skracany. Program podczas importu rozpozna rodzaj pliku i odpowiednio ustawi „Typ” załącznika. W przypadku zdjęć będzie to obraz. Pozostałe parametry załącznika zostaną ustalone na podstawie ustawień na oknie importu.
Import na podstawie arkusza MS Excel
Możliwe jest importowanie zdjęć umieszczonych w różnych lokalizacjach lub zdjęć zapisanych, jako URL. W tym celu należy utworzyć arkusz MS Excel, w którym zapisane będą kody (bądź kody kreskowe) towarów oraz ścieżki do plików, na podstawie, których zostaną utworzone załączniki do towarów.
W arkuszu powinny się znaleźć następujące informacje:
Przykładowy arkusz z danymi do importu:
Podczas importu na podstawie danych umieszczonych w arkuszu pliki zostaną odszukane i zaimportowane do systemu tworząc załączniki zgodnie z ustawieniami na oknie importu. W przypadku gdy w pliku zostanie uzupełniona kolumna Grupa oraz na oknie importu zostanie ustawiona opcja „Grupa załączników wg pliku” stworzone załączniki zostaną dodane do grupy wskazanej w pliku. W przypadku braku takiej grupy w systemie zostaną dodane do Grupy głównej. Pliki mogą zostać zapisane do bazy lub umieszczone tylko jako linki, jeśli podczas importu zostanie wybrana opcja „Zapis danych w postaci linków”
Załączniki jako linki
W systemie Comarch ERP XL umożliwiono dodawanie do obiektów załączników w formie linków dzięki czemu możliwe jest udostępnianie za pośrednictwem adresów URL załączników o dużych rozmiarach bez zbędnego obciążania bazy danych.
Zmiany w oknie: Załącznik
W oknie Załącznik dodane zostało pole URL, w którym można wprowadzać adres strony internetowej lub ścieżki dostępu do pliku czy folderu znajdującego się na danym nośniku.
Obok pola URL dodane zostały opcje
[Zobacz stronę], która służy do wywoływania (otwierania) załącznika oraz
[Lokalizacja pliku lub folderu], za pomocą której można wskazywać ścieżkę do załącznika.

W menu rozwijalnym obok przycisku [Lokalizacja pliku lub folderu], znajdują się opcje, za pomocą których można wskazać odpowiedni link:

Opcja: Lokalizacja pliku - umożliwia wskazanie linku do pliku. Po wybraniu opcji uruchomione zostaje okno: Wybierz plik, w którym można wskazać odpowiedni plik, do którego ścieżkę dostępu chcemy zapisać i za pomocą opcji: Otwórz uzupełnić na załączniku link do wybranego pliku:

Opcja: Lokalizacja folderu - umożliwia wskazanie linku do folderu. Po wybraniu opcji uruchomione zostaje okno: Przeglądanie w poszukiwaniu folderu, w którym można wskazać folder, do którego ścieżkę dostępu chcemy zapisać i za pomocą opcji OK uzupełnić na załączniku link do wybranego folderu:

Opcja: Adres strony internetowej - umożliwia otwarcie domyślnej przeglądarki w celu wyszukiwania odpowiednego adresu URL. Wybrany w przeglądarce adres strony internetowej można skopiować, a następnie wkleić w polu URL w oknie Załącznika

Załącznik dodany jako link można „nadpisać” poprzez wykonane na nim zmiany np. poprzez wskazanie innej ścieżki do załącznika lub wykonanie importu załącznika z pliku. Jeśli wykonany zostanie import załącznika z pliku za pomocą opcji [Import pliku] to załącznik przestanie być tylko linkiem. W takiej sytuacji wykonany zostanie standardowy zapis pliku do bazy danych.
Zmiana na zakładce: Załączniki
Na zakładce Załączniki dodana została nowa kolumna: Adres URL. W kolumnie prezentowany jest link do załącznika, wskazany w oknie: Załącznik, w polu URL. W przypadku prawidłowo podanej ścieżki dostępu/adresu strony internetowej w oknie załącznika, kliknięcie w link w kolumnie: Adres URL spowoduje otwarcie załączonego pliku folderu lub strony internetowej.

Zmiany na liście załączników
Na liście załączników dodana została nowa kolumna: Adres URL. W kolumnie prezentowany jest link do załącznika wskazany w oknie: Załącznik, w polu URL. Analogicznie jak z poziomu zakładki: Załączniki, kliknięcie w link w kolumnie adres URL na liście załączników powinno spowodować otwarcie załącznika.

Nowa kolumna: Adres URL została również uwzględniona w eksporcie do arkusza kalkulacyjnego wykonywanym z poziomu listy załączników.
Kopiowanie załączników z TP na ZP
Wprowadzono opcjonalne kopiowanie załączników, zdefiniowanych w technologiach produkcyjnych, na odpowiednie obiekty, na ZP. Kopiowanie załączników z technologii na ZP obejmuje kopiowanie załączników z materiałów/produktów w technologii na materiały/produkty, znajdujące się na realizacjach operacji, a także kopiowanie załączników z operacji w technologii na operacje planowane

Dodatkowo obsłużono kopiowanie załączników dodanych na operacjach planowanych, na odpowiednie ich realizacje. Działała ono niezależnie od jakiegokolwiek parametru, tzn., jeśli na operacji planowanej dodane będą załączniki, to podczas dodawania realizacji do tej operacji kopiowane będą wszystkie załączniki z operacji planowanej, na dodawaną do niej realizację.
XL010 - Podłączenie Drukarki Fiskalnej
Podłączanie drukarki fiskalnej lokalnie
Aby podłączyć drukarkę fiskalną do systemu Comarch ERP XL należy:
- ustawić właściwości portu COM w systemie operacyjnym,
- wybrać odpowiedni sterownik dla drukarki fiskalnej i ustawić port, do którego drukarka jest podłączona,
- zmapować stawki podatku VAT,
- zafiskalizować bazę danych.
Po wprowadzeniu wszystkich ustawień należy zakończyć pracę we wszystkich modułach systemu Comarch ERP XL i rozpocząć pracę na nowo.
Ustawienia portu COM
Ustawienia portów COM wprost wpływają na działanie drukarek fiskalnych w programie. Tym samym należy poprawnie ustawić port COM zgodnie z instrukcją użytkownika drukarki.
Elzab | |
---|---|
Szybkość | 9600, 19200 |
Parzystość | Parzyste (Even) |
Liczba bitów | 8 |
Bit stopu | 1 |
Sterowanie | Brak, xon/xoff, Sprzętowe |
Posnet (Novitus, Innova) | |
---|---|
Szybkość | 9600 |
Parzystość | Brak (None) |
Liczba bitów | 8 |
Bit stopu | 1 |
Sterowanie przepływem | Brak |
Właściwości portu COM są dostępne w Menedżerze urządzeń systemu Windows.

Konfiguracja sterownika, portu COM, do którego jest podłączona drukarka fiskalna oraz pozostałych parametrów
Wybranie sterownika oraz portu COM można wykonać w Menu Comarch ERP XL -> System -> Konfiguracja komputera na zakładce: Drukarka fiskalna.


Na zakładce: Drukarka fiskalna w polu: Nazwa pliku sterowania należy wskazać sterownik. Sterownik należy wybrać po naciśnięciu ikony: [Wybierz plik]. Wymagane pliki sterowników znajdują się w katalogu, do którego został zainstalowany system Comarch ERP XL. Sterowniki te należy dobierać w zależności od typu drukarki i rodzaju pracy (stacjonarna, przez terminal).
DF300.dll | Drukarki Posnet Thermal, Emar Printo |
DF300_1.dll | Drukarki zgodne z Posnet |
FP600.dll | Drukarki firmy Elzab |
Innova.dll | Drukarki firmy Innova |
Novitus.dll | Drukarki firmy Novitus |
Jeżeli drukarka fiskalna podłączana jest do portu USB, to w oknie: Parametry komputera pojawia się dodatkowy port COM z kolejnym numerem.
Następnie należy ustawić port COM, zarówno na zakładce: Drukarka fiskalna, jak i Drukarka fiskalna 2:

Po ustawieniu sterownika i portu COM należy:
- Wykonać test sterownika naciskając przycisk
[Test sterownika] – po jego wykonaniu otrzymujemy informacje na temat: Nazwy, Wersji oraz Typu sterownika. Opcja ta jest dostępna jedynie na zakładce: Drukarka fiskalna;

- Nie drukuj informacji na starcie systemu – jeżeli parametr nie będzie zaznaczony, to przy otwieraniu, któregokolwiek modułu będzie drukowana na drukarce fiskalnej informacja o rozpoczęciu pracy kasjera,
- Wyświetlaj numer paragonu – po zaznaczeniu parametru na każdym paragonie będzie drukowany numer dokumentu PA z systemu Comarch ERP XL,
- Drukuj kaucje – po zaznaczeniu parametru system będzie drukował informacje o towarach kaucjonowanych do dokumentów kaucji spiętych z fiskalizowanymi dokumentami,
- Oznaczenie operatora i stanowiska – po zaznaczeniu parametru udostępnia się do edycji pole: Oznaczenie stanowiska (kasy), do którego można wpisać numer kasy, który później będzie drukowany na paragonach;

- Test połączenia drukarki z system Comarch ERP XL, naciskając przycisk
[Test drukarki] – jeżeli wybrany wcześniej sterownik oraz port COM są prawidłowe oraz nie ma problemów technicznych, to pojawia się komunikat: Drukarka podłączona;

- Dodatkowo, w oknie: Parametry komputera na zakładce: Drukarka fiskalna 2 jest możliwe wybranie trybu pracy na drukarce niezafiskalizowanej.


Mapowanie stawek VAT
Kolejną czynnością jaką należy wykonać jest mapowanie stawek VAT. Można je wykonać z poziomu dowolnego modułu, menu System -> Konfiguracja komputera -> zakładka: Sprzedaż -> Słownik: Drukarki fiskalne.

Po naciśnięciu przycisku: [Dodaj] podnosi się okno: Drukarka fiskalna - zostanie dodana.

W oknie: Drukarka fiskalna znajduje się parametr: Nowy sterownik. Jeżeli w Konfiguracji komputera na zakładce:
- Drukarka fiskalna zostaną zdefiniowane niezbędne parametry, to w Konfiguracji na zakładce: Sprzedaż / Słowniki / Drukarki fiskalne należy zdefiniować wszystkie parametry bez zaznaczania parametru: Nowy sterownik,
- Drukarka fiskalna 2 zostaną zdefiniowane niezbędne parametry, to w Konfiguracji na zakładce: Sprzedaż / Słowniki / Drukarki fiskalne należy zdefiniować wszystkie parametry z zaznaczeniem parametru: Nowy sterownik.
Jeśli nie zostanie wybrana współpraca z zastosowaniem tzw. Nowych sterowników, to w polu: Nazwa należy wpisać nazwę wybranego wcześniej sterownika drukarki.
Jeśli zostanie wybrana współpraca z zastosowaniem tzw. Nowych sterowników, czyli zostanie zaznaczony ww. parametr: Nowy sterownik, to pole: Nazwa wypełni się automatycznie i w polu: Opis zostanie uaktywnione pole z listą drukarek, gdzie należy wskazać odpowiedni model (dla pracy w trybie terminalowym na końcu nazwy drukarki będzie słowo: Terminal):

W kolumnie: Odpowiednik wskazujemy odpowiednik literowy stawki VAT zmapowanej na drukarce fiskalnej. Aby uzyskać mapowanie stawek VAT z drukarki fiskalnej można wydrukować Raport dobowy z drukarki fiskalnej.

Zafiskalizowanie bazy danych
Jeżeli system Comarch ERP XL ma pracować z drukarką, która jest zafiskalizowana (taką drukarkę otrzymuje zwykle klient), to jego baza również musi być zafiskalizowana.
Jeżeli podłączona drukarka fiskalna nie jest zafiskalizowana (taką drukarkę zwykle udostępnia się do testów systemu), to baza systemu Comarch ERP XL również powinna być niezafiskalizowana.
Aby zafiskalizować bazę Comarch ERP XL należy uruchomić Konfigurację, przejść na zakładkę: Sprzedaż -> zakładkę: Parametry 1 i za pomocą przycisku: [Data fiskalizacji systemu] wybrać datę i zapisać Konfigurację.


Po zafiskalizowaniu bazy danych nie można jej odfiskalizować od strony interfejsu. Jeżeli istnieje potrzeba odfiskalizowania systemu, np. w sytuacji, kiedy pracowaliśmy testowo z drukarką fiskalną, to można to zrobić od strony bazy danych poniższym updatem:
update cdn.konfig set kon_wartosc = '' where kon_numer = 995
Podłączanie drukarki fiskalnej przez Terminal Services
System Comarch ERP XL posiada możliwość pracy w środowisku Terminal Services (TS). Istotnym elementem pracy tego systemu jest możliwość korzystania z drukarek fiskalnych. Przepisy wymagają od użytkownika drukarek fiskalnych umieszczenia ich na stanowisku gdzie odbywa się sprzedaż fiskalna.
W środowisku terminalowym oznacza to podłączenie drukarki fiskalnej do komputera, na którym pracuje klient terminala. W przypadku systemów Microsoft Windows Terminal Serwer do podłączenia drukarki fiskalnej do portu COM stanowiska terminalowego należy wykorzystać stworzone w ERP XL oprogramowanie tzw. sterowników terminalowych do drukarek fiskalnych. Powodem jest to, że drukarka fiskalna działa bez zarzutu przy wykorzystywaniu mapowania portów w TS na Windows 2000 w sieci LAN, natomiast w sieci WAN pojawiają się problemy. Wynika to z faktu, że domyślny timeout zapisany w sterownikach do drukarek wynosi około 2 s. W praktyce okazało się, że jest to zbyt krótki czas, aby sterownik nawiązał połączenia z drukarką przez wirtualne połączenia COM i otrzymał odpowiedź, czy też potwierdzenie od strony drukarki. Problem praktycznie nie występuje w sieciach LAN, gdzie prędkości transmisji, są zwykle w granicach 100 Mb/s, a w połączeniach przez sieć Internet mogą pojawiać się problemy.
W przypadku drukowania fiskalnego przez terminal przy użyciu pakietu tzw. sterowników terminalowych do drukarek fiskalnych, połączenie serialowe jest lokalne, tzn. sterownik, który je nawiązuje jest zainstalowany na stacji roboczej, do której podłączona jest drukarka. Komunikacja systemu Comarch ERP XL (działającego na serwerze terminali) z tym sterownikiem, odbywa się za pomocą kanału wirtualnego RDP, czyli po protokole TCP/IP.
Oprogramowanie pozwala na przekazanie do końcówki terminala danych dla drukarki fiskalnej poprzez tak zwany kanał wirtualny. Aby przekazywanie danych do drukarki mogło mieć miejsce zarówno po stronie końcówki terminala jak i po stronie serwera musi być zainstalowane odpowiednie oprogramowanie. Wymagane pakiety z oprogramowaniem można znaleźć na stronach ERP XL.

Zawartość pakietu obsługi drukarek fiskalnych po stronie klienta usługi terminalowej | Zawartość pakietu obsługi drukarek fiskalnych po stronie serwera usługi terminalowej | ||
---|---|---|---|
DF300.dll | Sterownik do drukarek Posnet | DF300T.dll | Odpowiednik sterownika DF300.dll po stronie serwera |
DF300_1.dll | Sterownik do drukarek zgodnych z Posnet | DF300_1T.dll | Odpowiednik sterownika DF300_1.dll po stronie serwera |
FP600.dll | Sterownik do drukarki FP600 | FP600T.dll | Odpowiednik sterownika FP600.dll po stronie serwera |
Innova.dll | Sterownik do drukarki Innova | InnovaT.dll | Odpowiednik sterownika Innova.dll po stronie serwera |
Novitus.dll | Sterownik do drukarki Novitus | NovitusT.dll | Odpowiednik sterownika Novitus.dll po stronie serwera |
RDP.dll | Sterowniki do komunikacji przez połączenie terminalowe | KFdrv.dll | Sterownik do komunikacji przez połączenie terminalowe, po stronie serwera |
rdpcli.inf | Plik dla instalatora Windows dla systemów Windows 2000/XP | ||
Rdpcli98_1.reg | Plik rejestru dla Windows 98 cz.1 | ||
Rdpcli98_2.reg | Plik rejestru dla Windows 98 cz. 2 |
Instalacja i konfiguracja komponentów na serwerze
Program Comarch ERP XL nawiązuje połączenie z drukarką fiskalną poprzez API udostępnione przez bibliotekę drivera fiskalnego.
W przypadku współpracy z drukarką podłączoną do konsoli klienta usługi terminalowej należy w konfiguracji programu wybrać odpowiednio zmodyfikowany driver, przeznaczonego do pracy w TS. Dodatkowe drivery oznaczone są literą T (terminal) dodaną do nazwy standardowego drivera (DF300T.dll, DF300_1T.dll, FP600T.dll, InnovaT.dll).
Wszystkie wymagane pliki powinny znajdować się w katalogu, do którego został zainstalowany system ERP XL.
Mapowanie stawek VAT powinno być wykonane tak, jak dla stacji lokalnej – mimo, iż wybieramy sterownik z literą T, to nazwa mapowania jest bez literki T.
Instalacja pakietu na stacji roboczej spełniającej rolę klienta usługi terminalowej
System Windows 7/8/10
W systemie Windows 7/8/10 można wykonać automatyczną instalację za pomocą rdpcli.inf.
Aby to zrobić należy z serwera z katalogu, do którego został zainstalowany system Comarch ERP XL skopiować pliki:
- rdpcli.cab
- rdpcli.inf
do tego samego dowolnego katalogu na stacji klienckiej. Następnie należy wskazać myszą plik rdpcli.inf, nacisnąć prawy przycisk i wybrać z menu kontekstowego opcję: Zainstaluj. Instalator dokonuje automatycznego przeniesienia plików do wymaganej lokalizacji na stacji klienckiej (C:\Windows\system32) oraz dokonuje niezbędnych wpisów w rejestrze systemu Windows.
Należy również ustawić właściwości portu COM, więcej w rozdziale: Ustawienia portu COM.
Przed nawiązaniem połączenia z serwerem terminali należy udostępnić Porty szeregowe dla połączenia terminalowego.
Konfiguracja sesji użytkownika
Do prawidłowego funkcjonowania drukarki wymagane są następujące działania, po stronie aplikacji uruchomionej w sesji terminalowej, na koncie każdego użytkownika, pracującego z drukarką fiskalną:
- wybranie właściwego sterownika drukarki fiskalnej po stronie serwera (DF300T.dll, DF300_1T.dll, FP600T.dll, InnovaT.dll, NovitusT.dll) w zakładce: Drukarka Fiskalna w oknie: Konfiguracja komputera dostępnym z Menu Comarch ERP XL -> System,
- określenie portu do którego jest podłączona drukarka na lokalnym komputerze z którego jest uruchomiona sesja terminalowa; w przypadku połączenia przez port USB należy wskazać COM 3 (lub COM z kolejnym numerem),
- jawne zdefiniowanie nazwy serwera klucza w zakładce: Klucz w oknie: Konfiguracja komputera dostępnym z Menu Comarch ERP XL -> System – należy wpisać nazwę serwera\nazwę instancji, na której został skonfigurowany i jest wpięty klucz HASP.
Najczęściej popełniane błędy konfiguracyjne
Zgodność plików KFdrv.dll i Rdp.dll
Zwykle większość problemów związanych z drukarkami fiskalnymi opiera się na niezgodności wersji pliku KFdrv.dll po stronie serwera (w katalogu, w którym został zainstalowany system Comarch ERP XL) oraz pliku rdp.dll po stronie klienta (w katalogu C:\Windows\System32). Jeżeli wersje plików są niezgodne nie istnieje komunikacja drukarki z serwerem terminali.
Jeżeli wersje plików są zgodne oraz drukarka jest prawidłowo podłączona, to test drukarki wykonany za pomocą przycisku [Test drukarki] kończy się komunikatem: Drukarka podłączona.

Przeinstalowanie systemu Comarch ERP XL
Patrz UWAGA w rozdziale Zgodność plików KFdrv.dll i rdp.dll.
Zapisy w rejestrze systemu Windows
W trakcie przygotowywania biuletynu i testów udało się uzyskać sytuację, w której brak połączenia był spowodowany faktem, iż na stacji klienckiej drukarka fiskalna została najpierw skonfigurowana lokalnie – wprowadzono ustawienia umożliwiające pracę lokalną z drukarką fiskalną.
Remedium było usunięcie z rejestru systemu Windows klucza: Fiskalne z gałęzi: HKEY_CURRENT_USER -> Software -> CDN.

Drukarka fiskalna w pracy terminalowej- nowe sterowniki
Oprogramowanie pozwala na przekazanie do końcówki terminala danych dla drukarki fiskalnej przez tak zwany kanał wirtualny. Aby przekazanie danych mogło mieć miejsce zarówno po stronie klienta, jak i po stronie serwera, musi być zainstalowane odpowiednie oprogramowanie.
Instalacja i konfiguracja komponentów na serwerze
Instalacja sterowników do obsługi drukarek fiskalnych odbywa się wraz z instalacją programu Comarch ERP XL. Konfiguracja programu do współpracy z drukarką fiskalną polega na wybraniu odpowiedniego sterownika przeznaczonego do pracy przez terminal.
W menu głównym systemu Comarch ERP XL (uruchamianym plikiem CDNXL.exe) lub w module Administrator wchodzimy do Konfiguracji komputera.

Aby skorzystać z nowych sterowników, na zakładce Drukarka fiskalna 2 zaznaczamy opcję „Używaj nowych sterowników”. W polu model drukarki wybieramy urządzenie, z którym będzie współpracował system. Przy pracy przez usługę terminalową ważne jest aby sterownik w nazwie miał dopisek „Terminal”. Następnie wybieramy numer portu, jego prędkość i sterownie przepływem (zgodnie z ustawieniami na drukarce i we właściwościach portu COM w Menedżerze urządzeń).
Instalacja i konfiguracja komponentów na końcówce terminala
Po stronie końcówki terminala, czyli komputera, na którym pracuje klient i do którego jest podłączona drukarka fiskalna, należy zainstalować komponenty zajmujące się obsługą kanału wirtualnego oraz połączeniem systemu z drukarką.
Plik instalacyjny znajduje się w głównym katalogu systemu Comarch ERP XL: onlineFP.exe
Aby zainstalować obsługę terminalową drukarek fiskalnych, należy plik przegrać na końcówkę terminala. Następnie zainstalować na końcówce. Oprogramowanie po stronie klienta składa się z plików obsługujących kanał wirtualny i ze sterowników do drukarek. Wszystkie te pliki kopiowane są do katalogu wskazanego w trakcie instalacji.
Po prawidłowo wykonanej instalacji na końcówce terminala i konfiguracji komponentów można wykonać test połączenia. W tym celu po połączeniu się z serwerem należy uruchomić system, wejść w Konfigurację komputera i na zakładce Drukarki fiskalne 2, w sekcji Test drukarki, uruchomić test odpowiednim przyciskiem.

W przypadku prawidłowego otrzymamy komunikat Drukarka podłączona. To oznacza, że drukarka jest podłączona i skonfigurowana poprawnie. Jeżeli system nie uzyska połączenia pojawi się komunikat Brak połączenia z drukarką. Należy wówczas sprawdzić poprawność podanego numeru portu, jego prędkości i sterownia przepływem, porównać je z ustawieniami na urządzeniu fiskalnym i z właściwościami portu COM w Menedżerze urządzeń.
Drukowanie fiskalne przez Drukarkę sieciową
W systemie Comarch ERP XL obsłużona została funkcja drukowania fiskalnego na drukarce podłączonej do serwera wydruków fiskalnych. Serwer wydruków fiskalnych jest oddzielną usługą w systemie Windows z którą końcówki wystawiające dokumenty fiskalne łączą się za pomocą protokołu TCP/IP, domyślnie portem na którym pracuje serwer wydruków fiskalnych to port 3500, w momencie instalacji można podać inny nr. portu dla tej usługi.
Instalacja serwera wydruków fiskalnych
Do instalacji usługi fiskalnego drukowania sieciowego służy aplikacja ComarchOnlineFPServerInstaller.exe
Parametry z jakimi uruchamiamy instalator są następujące:
/i - instalacja pakietu z domyślnymi parametrami
/w <USER_LOGIN> [<USER_PASSWORD>] - instalacja z zmianą loginu na którym pracuje usługa serwera wydruków fiskalnych
/tcp <TCP_Port> - ustawienia innego nr portu na którym pracuje usługa niż 3500
/start – uruchomienie usługi
/stop – zatrzymanie usługi
/u – odinstalowanie usługi
W systemach gdzie uruchomiona jest zapora sieciowa należy dodać wyjątek do zapory dla portu 3500 lub innego ustawionego portu, bądź dodać wyjątek dla aplikacji(usługi): Comarch ERP Fiscal Server.
Podłączenie ERP XL do serwera wydruków fiskalnych
Konfigurację stanowiska do współpracy z sieciową drukarką fiskalną wykonujemy w oknie Parametry komputera na zakładce: Drukarka fiskalna 2 po załączeniu parametru: Drukarka sieciowa , pod ikoną lupy pojawia się możliwość konfiguracji połączenia do drukarki: Ustaw parametry sieciowe.


Okno Parametry drukarki sieciowej pozwala na podanie:
- Adresu serwera
- Portu TCP – domyślny port dla usługi to 3500.
- Ustawienia sterownika ustawienia sterownika takie jak Model drukarki, Port COM, prędkość portu i sterowanie przepływem są identyczne jak dla ustawień sterownika dla pracy lokalnej z drukarką fiskalną dla ustawień z zakładki Drukarka fiskalna 2 z okna Parametry komputera.
Operacje fiskalne obsługiwane w systemie Comarch ERP XL
Dokumenty fiskalizowane w systemie Comarch ERP XL
W systemie Comarch ERP XL można zafiskalizować:
- Paragon,
- Fakturę sprzedaży FS oraz (S)FS – dokumenty wystawione z parametrem Vat od: Brutto (zakładka Nagłówek) i zaznaczonym: Fiskalny (zakładka VAT) – te dokumenty można fiskalizować od wersji Comarch ERP XL 7.1,
- Fakturę zaliczkową – w trakcie jej wystawiania należy zaznaczyć parametr: Fiskalny na zakładce VAT dokumentu,
- Fakturę końcową do faktury zaliczkowej, która została zafiskalizowana na drukarce fiskalnej.
System umożliwia również wydrukowanie kaucji jako dodatkowych pozycji paragonu fiskalnego.
Drukowanie kaucji na paragonie fiskalnym
W Comarch ERP XL istnieje możliwość drukowania kaucji z dokumentu wydania kaucji (WKA) na drukarce fiskalnej. Aby elementy dokumentu WKA zostały wydrukowane na paragonie fiskalnym, dokument WKA musi być związany z fiskalizowanym dokumentem, np. PA. W trakcie zatwierdzania dokumentu PA, elementy tego dokumentu są drukowane na drukarce fiskalnej; po wydrukowaniu wszystkich elementów PA drukarka fiskalna drukuje kaucje z dokumentu WKA w części niefiskalnej paragonu.
Parametr Drukuj kaucje
Jeżeli drukarka fiskalna nie posiada obsługi drukowania kaucji należy odznaczyć parametr: Drukuj kaucje w Konfiguracji komputera, zakładka: {Drukarka fiskalna}.

Menu Fiskalne
Jeżeli mamy prawidłowo skonfigurowaną drukarkę, to mamy dostęp z każdego modułu do Menu Fiskalne:

Z poziomu tego Menu możemy wykonać na drukarce fiskalnej:
- powtórną fiskalizację dokumentu,
- wydrukować raport dobowy,
- wydrukować raport szczegółowy.
Powtórna fiskalizacja dokumentu
W sytuacjach, w których dokument nie został zafiskalizowany na drukarce fiskalnej, a jest dokumentem zatwierdzonym (na liście paragonów, taki dokument wyświetlony jest na żółto), to można go zafiskalizować na drukarce fiskalnej.
Aby to zrobić z Menu Fiskalne wybieramy przycisk – otwiera się okno: Fiskalizacja dokumentów. Aby wybrać dokument do powtórnej fiskalizacji należy nacisnąć przycisk:
[Dokument].
W oknie Fiskalizacja dokumentu naciskamy przycisk: [Fiskalizuj dokument].

Drukuj numer NIP na paragonie
W wersji 2018.2 w konfiguracji komputera na zakładce Drukarka fiskalna 2, dodano parametr: Drukuj numer NIP. Parametr dostępny jest dla nowych sterowników fiskalnych. Zaznaczenie tego parametru ma sens tylko dla tych drukarek, które posiadają zgodnie z przepisami możliwość drukowania numeru NIP w określonym miejscu paragonu. W przypadku starszych modeli drukarek, po zaznaczeniu tego parametru podczas drukowania paragonu pojawi się błąd. Równocześnie zrezygnowano z drukowania numeru NIP w części niefiskalnej paragonu, w sytuacji, gdy zaznaczono parametr Wyświetlaj numer paragonu.

Problemy z drukowaniem fiskalnym dokumentów
Brak możliwości wydrukowania dokumentu na drukarce fiskalnej może być spowodowany m.in.:
- nieprawidłową konfiguracją systemu,
- niezgodnością wartości w elementach transakcji,
- zmianą stawki VAT w karcie towaru lub w elemencie transakcji,
- brakiem połączenia z drukarką fiskalną – problemy sprzętowe.
Nieprawidłowa konfiguracja systemu
Brak połączenia z drukarką w połączeniu terminalowym
Opis znajduje się w rozdziale: Najczęściej popełniane błędy konfiguracyjne.
Ustawienia portu COM dla drukarki FP600 starej homologacji
W trakcie testów okazało się, że dla drukarek Elzab FP600 starej homologacji należy ustawić sterowanie przepływem na: Sprzętowe.
Jeżeli ustawimy sterowanie przepływem na: brak, to dokumenty fiskalizują się na drukarce fiskalnej, a w systemie Comarch ERP XL otrzymujemy komunikat o braku możliwości zamknięcia dokumentu. Tym samym otrzymujemy niezafiskalizowany dokument w Comarch ERP XL mimo, iż zafiskalizował się on na drukarce fiskalnej.

Remedium
Dla drukarek Elzab FP600 starej homologacji ustawić sterowanie przepływem na: Sprzętowe.
Nieprawidłowe mapowanie stawek VAT
Jeżeli wykonano nieprawidłowe mapowanie stawek VAT – wskazano odpowiedniki o innych stawkach niż są zmapowane w drukarce fiskalnej – to dana pozycja dokumentu może wydrukować się na drukarce fiskalnej z inną stawką podatku niż wskazana w Comarch ERP XL lub może się nie wydrukować. Brak możliwości wydrukowania może objawić się komunikatem:

oraz anulowaniem paragonu na drukarce fiskalnej – komunikat na paragonie: „paragon anulowany”.
Remedium
Należy poprawnie zamapować stawki VAT wg instrukcji z rozdziału: Mapowanie stawek VAT.
Nieprawidłowa nazwa towaru
Każda drukarka fiskalna ma określoną minimalną długość nazwy towaru oraz listę znaków specjalnych, która nie jest obsługiwana. Jeżeli nazwa towaru nie spełnia kryteriów określonych w specyfikacji drukarki fiskalnej dana pozycja nie zostanie na niej wydrukowana. Może się to objawić następującym komunikatem:

Remedium
Należy zmienić nazwę towaru w karcie towaru w taki sposób, aby spełniała wymagania specyfikacji drukarki fiskalnej. Następnie usunąć i dodać daną pozycję z dokumentu, który chcemy zafiskalizować.
W takiej sytuacji należy zmienić nazwę towaru w taki sposób, aby spełniała kryteria ze specyfikacji.
Kod autoryzacyjny drukarki
Niektóre drukarki posiadają zaimplementowany „kod autoryzacyjny” ważny w zadanym okresie czasu. Przykładowo, jeżeli drukarka posiada 30 dniowy kod autoryzacyjny tzn. po 30 dniach drukarka przestaje działać i nie drukuje jakiekolwiek paragonu, w systemie prezentowany wówczas jest następujący komunikat:

Remedium
Należy sprawdzić czy „kod autoryzacyjny” funkcjonuje na urządzeniu i czy Użytkownik bądź Serwis wprowadził taki kod, który odblokowuje drukarkę „na zawsze”.
W przypadku, gdy drukarka nie posiada kodu autoryzacyjnego, a w systemie podczas zapisu dokumentu występuje komunikat: NowyParagon 3 należy wykonać z poziomu Comarch CDN XL, menu Fiskalne-> Raport dobowy. Po wykonaniu Raportu dobowego na drukarce problem powinien ustąpić.
Niezgodność wartości elementu
Element transakcji nie zostanie zafiskalizowany na drukarce fiskalnej jeżeli nie jest spełnione równanie ilość*cena=wartość. Jeżeli równanie jest niespełnione, to możemy uzyskać następujący komunikat:

oraz na drukarce fiskalnej: „paragon anulowany”.
Remedium
Należy sprawdzić, czy są zaznaczone parametry w Elemencie transakcji:
- Ilość*cena=wartość,
- Cena z dokładnością do groszy,
- Zakładka: {Kalkulacja}, „Od księgowych”.
Powyższe parametry powinny być zaznaczone dla fiskalizowanego elementu.
Następnie należy sprawdzić równanie ilość*cena=wartość. Jeżeli nie jest spełnione, to wprowadzić prawidłową wartość na element.
Zmieniona stawka podatku VAT dla danego towaru
Zmiana stawki podatku VAT w karcie towaru lub w elemencie transakcji może uniemożliwić zafiskalizowanie danej pozycji na drukarce fiskalnej. Objawia się to komunikatem:

oraz na drukarce fiskalnej: „błąd PTU paragon anulowany”.
Remedium
Rozwiązaniem jest:
- zmiana stawki podatku na taką jaka była zafiskalizowana przed zmianą lub
- zmiana nazwy towaru na nową – wtedy w drukarce fiskalnej zostanie dodana nowa nazwa z przypisaną do niej stawką podatku.
Problemy sprzętowe
Jeżeli mamy wprowadzone prawidłowo wszystkie ustawienia wg tego biuletynu, a mimo to nadal nie drukują się nam dokumenty na drukarce fiskalnej, to istnieje duże prawdopodobieństwo, że jest to spowodowane problemami sprzętowymi – uszkodzeniem drukarki fiskalnej, uszkodzeniem przewodów, uszkodzeniem portu COM itp.
Remedium
W takich sytuacjach należy:
- sprawdzić czy drukarka jest prawidłowo podłączona do komputera;
- spróbować ją podpiąć do innego stanowiska, które drukuje paragony na innej drukarce fiskalnej;
- skontaktować się z serwisem drukarek fiskalnych.
Lista komunikatów i przyczyna występowania
Sprzedaż: informacja (2092)

Patrz rozdział: Ustawienia portu COM dla drukarek FP600 starej homologacji.
Sprzedaż: informacja (2093), Szczegóły >> brak

Patrz rozdziały:
Sprzedaż: informacja (2093), Szczegóły >> Towar posiada nieprawidłową nazwę
Rysunek 33 Sprzedaż: informacja (2093), Szczegóły >> Towar posiada nieprawidłową nazwę (…)
Patrz rozdział: Nieprawidłowa nazwa towaru
Drukarki fiskalne z jakimi współpracuje program Comarch ERP XL
Poniżej przedstawiono modele drukarek fiskalnych współpracujących z systemem Comarch ERP XL w wersji 2021.- POSNET (oparte o protokół DF-3001, Thermal, Thermal HS i FV, HD, HD EJ, XL2 OnLine, Temo)
- ELZAB (Omega, Mera, Mera OnLine, ZETA),
- INNOVA (Profit, Market, DF-1),
- NOVITUS (Vivo, Vento, Quarto, Delio Prime (E) , Deon(E), Deon OnLine, Bono (E), Bono OnLine, HD Online),
- TORELL (Duo Pro, Andros),
- EMAR (Printo, Tempo 3),
- Epson TM-T801FV
XL030 - Obsługa dashboardów
Pulpit operatora
Dashboardy są to pulpity zmieniające wygląd interfejsu. Użytkownik Systemu może przygotować własny pulpit z obiektami, z których korzysta najczęściej, dzięki czemu dostęp do nich będzie szybszy, a układ spersonalizowany. Dodatkowo, poza standardowymi obiektami na pulpicie można dodać widżet z odwołaniem do dowolnej strony www, innego programu czy raportów BI. Włączenie dostępu do konfiguracji pulpitu odbywa się w: Ustawieniach użytkownika.

Pulpity predefiniowane
Wraz z możliwością kreowania własnych pulpitów dla Użytkowników, udostępnione zostały pulpity tzw. predefiniowane, stanowiące bazę jak pulpity mogą wyglądać, z przykładowymi obiektami i ułożeniem. Te predefiniowane pulpity mogą być przypisane do operatorów i w proponowanej wersji używane lub można je indywidualnie modyfikować wg własnych potrzeb i upodobań. Funkcjonalność dashboardów pozwala użytkownikowi zdefiniować własne pulpity, odrębnie do predefiniowanych.
Przypisywanie pulpitów predefiniowanych do operatora
Aby udostępnione predefiniowane pulpity, a także te pulpity, które zostały przygotowane przez administratora jako predefiniowane mogły być używane przez Użytkownika, należy Mu je przypisać. W tym celu na karcie operatora dodana została stosowna sekcja dla przypisywania predefiniowanego pulpitu. Z uwagi na możliwość korzystania z więcej niż jednego pulpitu, na liście prezentowane są wszystkie pulpity przypisane do operatora. Przypisanie pulpitu do operatora odbywa się poprzez kopiowanie rekordu w bazie z danym pulpitem predefiniowanym, a następnie uzupełnianie numeru operatora, któremu pulpit jest przypisywany. Jednocześnie udostępniona została opcja usuwania pulpitu konkretnemu operatorowi. Oznacza to usunięcie pulpitu operatora z bazy danych. Działanie jest tożsame z usunięciem pulpitu z poziomu konfiguracji.

Wskazanie predefiniowanego pulpitu jest możliwe również na wzorcu operatora. Dzięki temu można przy pomocy funkcjonalności aktualizacji kart operatorów grupowo przypisać operatorom konkretny predefiniowany pulpit. Także dodając nową kartę operatora w kontekście wzorca, można na samym początku przypisać do niego wybrany pulpit.

Obsługa pulpitu operatora

Domyślny wygląd pulpitu operatora podzielony jest na 3 sekcje:
W sekcji Konfiguracja znajdują się wszystkie dostępne widżety, które można przenieść na panele.
Sekcja z podłączonymi pulpitami – w tej części wyświetlana jest lista pulpitów podłączonych do danego operatora.
Sekcja, w której są widoczne wszystkie panele podłączone do danego pulpitu
Dodawanie nowego pulpitu
W sekcji z widokiem podłączonych pulpitów znajduje się przycisk służący do utworzenia nowego pulpitu.

Automatycznie po kliknięciu ‘Dodaj pulpit’ zostaje utworzony nowy pulpit z nazwą ‘Nowy …’. Nazwę pulpitu można zmienić poprzez kliknięcie prawym przyciskiem myszy na jego nazwie. Pojawi się lista z opcjami Usuń oraz Zmień nazwę.
Dodawanie paneli
Do każdego pulpitu można dodać dowolną ilość paneli. Nowy panel można dodać poprzez opcję ‘Dodaj panel’. Nowo utworzony panel zostaje dodany do obecnie używanego pulpitu z nazwą ‘Panel…’.

Rozmieszczenie paneli na pulpicie
Panele na pulpicie można rozmieścić na kilka różnych sposobów:
Panel przypięty – nowo utworzony panel jest dosunięty do krawędzi pulpitu. Tak przypięty panel nie zmienia wielkości po przypięciu. Można dowolnie zmienić jego wielkość. Nowo otwarte okna w programie powodują przesłonięcie panelu.

Panel pływający – panel nie dosunięty do żadnej krawędzi. Można zmieniać dowolnie jego wielkość. Otwarcie nowego okna w programie nie powoduje przesłonięcia panelu, który w takim ułożeniu widoczny będzie zawsze na wierzchu.

Panel zadokowany – panel zadokowany do krawędzi pulpitu. Podczas przesuwania panelu pokazują się opcje, gdzie można zadokować panel. Tak zadokowany panel zmienia swoją wielkość na domyślną, ale możliwa jest zmiana szerokości panelu. Taki panel jest widoczny spod otwieranych okien.


Panele połączone – panele można ze sobą łączyć w różnej konfiguracji. Jako dwa sklejone ze sobą panele lub jako zakładki, między którymi można się przełączać.

Opcja auto hide na panelach

Dla paneli została udostępniona funkcja Auto hide – autoukrywanie się panelu w postaci pinezki na nagłówku panelu. Panel, po włączeniu tej opcji, zwija się automatycznie, pozostawiając widoczny tylko nagłówek.
Ustawienia na panelach
Dla każdego panelu możliwa jest zmiana nazwy, jak i koloru. Opcje te dostępne są po wybraniu Ustawień z poziomu nagłówka panelu.

Dla paneli można ustawić kolor niestandardowy, wybierając pole z wielokropkiem.

Widżety
Na panel można dodać dowolną ilość widżetów poprzez opcję Przeciągnij i upuść. W tym celu należy wybrać interesujący nas widżet z wszystkich dostępnych w sekcji Konfiguracja i przeciągnąć go na konkretny panel. Możliwe jest również przeciągnięcie i dodanie całej grupy widżetów.
Konfiguracja widżetów
Dodane widżety można konfigurować. W tym celu należy najechać myszką na wybrany widżet i poprzez kliknięcie prawym przyciskiem myszy wybrać opcję Ustawienia.

W oknie ustawień widżetów, można odpowiednio skonfigurować widżet.

Dla każdego widżetu możliwa jest zmiana nazwy, zmiana typu, wielkości i koloru czcionki, jak również dodanie własnej ikony na widżecie lub wybranie filtra. Dla niektórych widżetów możliwy jest również wybór kontekstu. Dla każdego widżetu można indywidualnie zdefiniować kolor tła, wybierając z podanych lub wybrać niestandardowy, jak również zmienić wymiar na jeden ze zdefiniowanych.
Parametr Zliczaj służy do zliczania np. ilości dokumentów odpowiadających widżetowi. Można tam wstawić zapytanie zwracające pojedynczą wartość. Wynik tego zliczenia widoczny jest przy nazwie widżetu.
Konfiguracja widżetów niestandardowych
Na liście widżetów znajdują się widżety z ustawieniami niestandardowymi, są to m. in. Uruchom program, Zdjęcie, Przeglądarka WWW, BI Point.
Konfiguracja widżetu Uruchom program
Dla widżetu Uruchom program w ustawieniach możliwe jest określenie programu, który ma być otwierany po kliknięciu w widżet.

Po wybraniu przycisku wielokropka pojawia się okno wyboru aplikacji do podłączenia. W sekcji Parametry należy podać parametry uruchomienia programu np. jako program: C:\Windows\notepad.exe, a jako parametry: c:\mojplik.txt. Spowoduje to uruchomienie C:\Windows\notepad.ex\ mojplik.txt.
Konfiguracja widżetu Zdjęcie
Widżet Zdjęcie, to widżet służący do wyświetlanie zminiaturyzowanego zdjęcia jako ikony widżetu.


Konfiguracja widżetów BI Point i Przeglądarka www
Dodanie widżetów Przeglądarka WWW i BI Point możliwe jest tylko do panelu, dla którego nie są dodane inne widżety. Ustawienia tych widżetów dostępne są z nagłówka panelu z menu.

W ustawieniach widżetu BI Point w sekcji URL, domyślnie jest wpisany adres http://bicloud.comarch.pl.

W ustawieniach widżetu Przeglądarka WWW w sekcji URL, należy wpisać adres strony internetowej, która ma być wyświetlona.

Dla widżetu nie jest udostępniona pełna przeglądarka. Ideą tego widżetu jest możliwość wyświetlania strony, która będzie przydatna podczas pracy. By cofnąć się do poprzedniej strony, należy na stronie kliknąć prawy przycisk myszy i wybrać Wstecz.
XL019 - Delegacje krajowe
Delegacje krajowe
Funkcjonalność ta pozwala na rejestrację i obsługę delegacji krajowych wraz z powiązanymi z nimi wnioskami o zaliczkę. Dodawanie delegacji możliwe jest za pośrednictwem aplikacji Comarch HRM oraz z poziomu systemu Comarch ERP XL. Dalsza praca z delegacjami (rozliczenie delegacji i zaliczek oraz ewidencja księgowa) są możliwe jedynie z poziomu Comarch ERP XL.
Wnioski pracowników
Dodawanie wniosków możliwe jest z poziomu listy wniosków udostępnionej we wszystkich modułach, w menu Dokumenty.


Z poziomu modułu Księgowość każdy operator będzie widział na liście wszystkie wnioski. Z poziomu pozostałych modułów każdy operator na liście wniosków będzie widział tylko własne wnioski. Dodatkowo, z poziomu pozostałych modułów, operatorzy, którym na karcie zostanie nadane uprawnienie „Wgląd do listy wniosków” (zakładka Parametry/Księgowe, obszar: Delegacje, Wnioski) będą widzieli wszystkie wnioski dodane do bazy. Uprawnienie jest dedykowane szczególnie do pracowników działów księgowych, którzy będą mieli dostęp do wszystkich delegacji. Została wyszczególniona jeszcze jedna grupa użytkowników, którzy będą mieli dostęp do listy wniosków ograniczonych do dokumentów przypisanych pracownikom podległym w strukturze. W tym celu na roli pracownika należy wybrać jedno lub kilka praw dotyczących wniosków pracowników:
- Odrzucanie wniosków zatwierdzonych
- Zatwierdzanie/odrzucanie wniosków podwładnych
- Zatwierdzanie/odrzucanie wniosków prac. centrum

W Słownikach Kategorii (w Module Administrator), w gałęzi Inne/Typy wniosków można zdefiniować własne typy wniosków. Wartością domyślną jest jednak Wniosek o zaliczkę.

Jedynie predefiniowany typ „Wniosek o zaliczkę” umożliwia podanie na wniosku kwoty oraz wygenerowanie z niej zaliczki (zapisu k/b). Pozostałe własne typy wniosków nie mają tej funkcjonalności.
Z poziomu zakładki Ogólne na zatwierdzonym wniosku, za pomocą wybierając odpowiedni rejestr k/b oraz operację, można dodać zapis k/b - zaliczkę pracownika na poczet powiązanej delegacji.

Wnioski o zaliczkę można również powiązać z delegacją wybierając opcję Delegacja i wskazując odpowiedni dokument.
Po wystawieniu wniosku na odpowiedniego pracownika, możliwe jest jego zatwierdzenie lub odrzucenie. W systemie zapisywane są informacje o operatorze (i powiązanym z nim pracowniku) dokonującym tych operacji. Na wnioskach zatwierdzonych lub odrzuconych nie można zapisywać już żadnych zmian, nie jest możliwe również ich usunięcie. Większość z tych funkcji dostępna jest również w menu kontekstowym rozwijanym spod prawego klawisza myszy z poziomu listy wniosków.

Dodawanie delegacji w Comarch HRM
Aby korzystać z tej funkcjonalności konieczne jest posiadanie aplikacji HRM lokalnie - Comarch ERP WAMC albo w modelu usługowym dostępnym w chmurze Comarch. Szczegółowe informacje o aplikacji Comarch HRM (w tym m.in. instalacja i aktualizacje, konfiguracja aplikacji) zamieszczone są w Bazie wiedzy Comarch HRM dostępnej pod linkiem: https://pomoc.comarch.pl/hrm/pl/
Aby móc rozliczać delegacje, zaliczki i dokonać ewidencji księgowej w Comarch ERP XL konieczna jest dwustronna synchronizacja baz systemów XL i XL HR. Sposób synchronizacji systemu Comarch ERP XL z Comarch ERP XL HR został szczegółowo opisany w biuletynie technicznym XL064 - Współpraca Comarch ERP XL z modułem kadrowo-płacowym Comarch ERP XL HR.pdf. Dodatkowo w Konfiguracji/ zakładka HR wymagane jest ustawienie Operatora dla zapisów z aplikacji Comarch HRM. W przypadku braku tych ustawień pojawi się następujący komunikat: „W module Administracja XL nie ustawiono operatora do realizacji zapisów w bazie danych. Prosimy o kontakt z Administratorem systemu”.

Aplikacja HRM opiera się na strukturze podległościowej, dlatego też ustawiając synchronizację z Comarch ERP XL HR, w Comarch ERP XL należy odznaczyć parametr „Blokada synchronizacji struktury podległościowej”.
Kroki dodawania delegacji w aplikacji zostały opisane w Bazie wiedzy Comarch HRM. Dostępnej pod linkiem: https://pomoc.comarch.pl/hrm/pl/index.php/dokumentacja/delegacje/
Dodawanie delegacji w Comarch ERP XL
Obsługa delegacji możliwa jest z poziomu listy delegacji udostępnionej we wszystkich modułach, w menu Dokumenty.
Każdy operator na liście delegacji będzie widział własne delegacje. Dodatkowo operatorzy, którym na karcie zostanie nadane jedno z uprawnień dotyczących delegacji umieszczonych na zakładce Parametry/Księgowe, obszar Delegacje, Wnioski, będą widzieli wszystkie delegacje dodane do bazy. Uprawnienia te są dedykowane szczególnie dla pracowników działów księgowych, którzy będą rozliczali i księgowali delegacje.

Została wyszczególniona jeszcze jedna grupa użytkowników, którzy będą mieli dostęp do listy delegacji ograniczonych do dokumentów przypisanych pracownikom podległym w strukturze. W tym celu na roli pracownika należy wybrać jedno lub kilka praw dotyczących poleceń wyjazdu służbowego:
W Module Administrator w sekcji Definicje dokumentów w gałęzi Księgowość, dodany został nowy typ dokumentu: Delegacja.

W konfiguracji Modułu Księgowość dodano zakładkę: Delegacje. Na zakładce umieszczono listę: Stawki diet i ryczałtów.

Użytkownik może dowolnie zdefiniować stawki diet i ryczałtów dla danego kraju wybierając zielony przycisk plusa.


Kolory dokumentów Delegacji na liście: Delegacja mająca status dokumentu wprowadzonego składa się z 3 podstawowych zakładek: Ogólne, Atrybuty, Załączniki. Zakładki: Atrybuty oraz Załączniki mają analogiczne zastosowanie jak w pozostałych miejscach systemu. W miarę zmiany statusu delegacji, na dokumencie pojawiać się będą dodatkowe zakładki. Numer dokumentu Delegacji nadany jest przez system, numeracja jest zależna od ustawień w Konfiguracji: Sprzedaż/Parametry 1. Domyślne ustawionym rodzajem delegacji jest delegacja krajowa. Obecnie pole nie podlega modyfikacji. Na zakładce Ogólne dokumentu delegacji znajduje się również check „Zaakceptowano.” Po zweryfikowaniu danych ujętych na dokumencie delegacji, można ją zaakceptować (również z poziomu menu kontekstowego). Może tego dokonać operator posiadający szczególne uprawnienia, np. kierownik. Jeżeli powyższe warunki nie zostaną spełnione przy próbie zaakceptowania Polecenia wyjazdu służbowego pojawi się komunikat: "Operator nie ma uprawnień do akceptacji polecenia wyjazdu" Po zaakceptowaniu delegacji na dokumencie pojawią się dodatkowe zakładki: Rozliczenie oraz Płatności. Po wykonaniu tej czynności, delegacja będzie miała stan „Zaakceptowanego polecenia wyjazdu.” Jeśli operator ma przypisane uprawnienie (Parametry/Księgowe, obszar: Delegacje, Wnioski) „Modyfikacja zaakceptowanych poleceń wyjazdu”, wówczas na zaakceptowanej delegacji będzie mógł zmienić daty trwania delegacji, jej miejsce oraz cel. Po zaakceptowaniu delegacji automatycznie zostają zatwierdzone wszystkie wnioski o zaliczkę powiązane z tą delegacją. Delegacja: zakładka Rozliczenie Sekcja Przejazdy:
Jeśli delegacja ma status „Zaakceptowane polecenie wyjazdu”, to z tego poziomu można dodawać nowe przejazdy oraz aktualizować istniejące. Służą do tego standardowe ikony: Po wskazaniu ikony zielonego plusa podnoszona jest formatka Przejazdy, w której wskazać należy szczegóły przejazdu. Formatka składa się z 2 zakładek: Ogólne oraz Atrybuty. Zakładka Atrybuty jest analogiczna jak w pozostałych miejscach systemu. Na zakładce Ogólne należy wskazać szczegółowe informacje na temat przejazdu. W związku z udostępnieniem funkcjonalności Delegacji, w module Administrator w Słownikach Kategorii w gałęzi Transport, magazyn dodano nową kategorię: Rodzaje środków transportu. Oprócz predefiniowanych wartości, użytkownik ma możliwość dodawania własnych kategorii w tym obszarze. W gałęzi Transport, magazyn w obszarze Rodzaje przejazdów, dodana została kategoria Delegacje. Ten typ przejazdu będzie domyślnie powiązany z przejazdami generowanymi z poziomu delegacji i na tych przejazdach wyświetlany. Zapisanie przejazdu skutkuje pojawieniem się takiej pozycji na liście przejazdów. Pod listą przejazdów znajduje się pole „Liczba godzin delegacji”, które zostaje automatycznie wyliczone na podstawie dodanych przejazdów, jako różnica pomiędzy godziną wyjazdu z pierwszego przejazdu i godziną powrotu z ostatniego przejazdu. Listę przejazdów pracowników można uruchomić klikając na zakładkę Środki trwałe/ Samochody. Lista ta składa się z 3 zakładek: Ogólne, Przejazdy, Wydatki. Dodany z poziomu delegacji przejazd będzie widoczny w tej liście. Sekcja Wydatki:
Wprowadzenie przejazdu w sekcji Przejazdy powoduje automatyczne utworzenie wydatku w gałęzi Wydatki. W gałęzi Rodzaje wydatków (Słowniki kategorii/ Inne) wprowadzone są predefiniowane wartości powiązane z obszarem Delegacji. Na kategorii wydatku udostępniono przycisk, umożliwiający wskazanie konta księgowego z planu kont odnoszącego się do danego wydatku. Użytkownik ma również możliwość definiowania własnych kategorii w tym obszarze. W obszarze wydatków, używając ikonki zielonego plusa, można również wprowadzać pozostałe wydatki związane z delegacją. Ikona ta będzie aktywna w momencie podświetlenia konkretnej kategorii wydatku w sekcji „Rodzaj wydatku”. Lista wydatków pracowników dostępna jest również z poziomu, m.in. modułu Księgowość, zakładka Dokumenty. Na formatce wskazać należy rodzaj oraz typ wydatku. Wydatek powiązać można z dokumentem faktury lub noty memoriałowej. Można również wskazać kontrahenta. Powiązanie wydatku z dokumentem może nastąpić również z poziomu dokumentu delegacji, zakładki Rozliczenia. W sekcji Rodzaj wydatku udostępniono funkcje pozwalające na takie powiązanie. Pod listą wydatków znajdują się pola dotyczące wyżywienia oraz diet i ryczałtów. Na podstawie tych danych oraz ilości godzin trwania delegacji wyliczana jest ilość należnych diet. Ilość wyliczana jest automatycznie przy zapisie delegacji lub na żądanie, za pomocą przycisku pioruna. Użytkownik może wprowadzać również ilości ryczałtów należnych za noclegi lub dojazdy. Po wprowadzeniu zmian na tej zakładce, pracownik może oznaczyć „wydatki do akceptacji.” Parametr będzie możliwy do edycji do momentu zapisu formatki delegacji. Po zapisaniu zmian parametr zostanie wyszarzony. Kolejnym krokiem jest akceptacja wydatków. W tym celu należy zaznaczyć parametr „Zaakceptowano wydatki”. Obydwie czynności można wykonać również z menu kontekstowego dostępnego na liście delegacji. Delegacja: zakładka Płatności Po oznaczeniu wydatków jako zaakceptowane, na zakładce Płatności, automatycznie wygenerowana zostaje płatność rozliczająca koszty delegacji. Sposób generowania płatności jest zależny od ustawienia parametru „Generuj płatności w wersji rozszerzonej” w definicji dokumentu delegacji. Zakładka Płatności składa się z 2 sekcji: Delegacja oraz Dokumenty związane z wydatkami. W definicji dokumentu znajduje się parametr „Generuj płatności w wersji rozszerzonej”, którego zaznaczenie będzie miało wpływ na to, czy płatność powiązana z delegacją będzie generowana na kwotę wydatków nie powiązanych z dokumentami będącymi źródłem płatności, czy też na kwotę równą kwocie wszystkich wydatków. W sekcji Delegacja prezentowane są płatności delegacji, czyli kwoty pochodzące z wydatków delegacji niezwiązanych z dokumentami. Płatnikiem na płatności jest pracownik wskazany na delegacji. W sekcji Dokumenty związane z wydatkami prezentowane są płatności pochodzące z dokumentów powiązanych z wydatkami delegacji. Modyfikacja płatności jest możliwa do momentu zaksięgowania delegacji. Delegacja: zakładka Księgowość Zakładka ta pojawia się na dokumencie Delegacji po zmianie jej statusu na „Zaakceptowano wydatki.” Wówczas na dokumencie delegacji można dodawać opis analityczny, a po jej zatwierdzeniu podlega ona księgowaniu (zakładka Dekretacja zostaje odszarzona). Delegacje: zakładka Atrybuty Na tej zakładce można opisać dany wniosek zdefiniowanymi w systemie i przypiętymi do danego obiektu atrybutami (definiowanie atrybutów odbywa się w module: Administrator). Delegacje: zakładka Załączniki Na zakładce możliwe jest umieszczenie załączników dotyczących wniosku. Możliwe jest tu umieszczanie zdjęć, plików tekstowych, arkuszy kalkulacyjnych, itp. Użytkownik ma pełną dowolność w określeniu formatu, w jakim zapisane i przechowywane będą załączniki. Sposób dodawania załączników został opisany w module: Administrator (rozdział: Załączniki). Jeżeli powyższe warunki nie zostaną spełnione przy próbie anulowania Polecenia wyjazdu służbowego pojawi się komunikat: "Operator nie ma uprawnień do anulowania polecenia wyjazdu"
[Dodaj] - umożliwia dodanie nowego przejazdu.
[Zmień] – umożliwia podgląd i edycję istniejącego rekordu.
[Usuń] – umożliwia usunięcie rekordu.
XL054 - Prowadzenie ksiąg rachunkowych zgodnie z zaleceniami JPK_KR
Zalecenia nowej broszury JPK_KR
Ministerstwo Finansów opublikowało w październiku 2020 r. nową broszurę dotyczącą JPK dla ksiąg rachunkowych. Sama struktura JPK_KR(1) nie została zmodyfikowana, zostały natomiast wprowadzone dodatkowe opisy, które mają na celu doprecyzować znaczenie poszczególnych sekcji tego pliku oraz ich funkcjonowanie w kontekście Ustawy o Rachunkowości.
Nowa broszura JPK_KR będzie obowiązywać od 1 stycznia 2021, co ma dać spółkom czas na dostosowanie swojego systemu księgowania dokumentów do opublikowanych wyjaśnień.
Dziennik
Najważniejsze zmiany wprowadzone w broszurze dotyczą numeracji operacji w dzienniku. Zgodnie z wyjaśnieniami powinny one być zgodne z art. 14 UoR, czyli prowadzone w sposób chronologiczny, numerowane i bez pozostawiania miejsc na późniejsze dopiski lub zmiany. Sama chronologia zapisów w dzienniku powinna być zachowana według dat zapisów księgowych, a nie według dat dokonania operacji gospodarczych. W pliku JPK_KR znajduje się zarówno informacja o numerze zapisu w poszczególnym dzienniku (np. 1/Zak/01/2020, 280/Sprz/01/2020), jak i jego dacie księgowania. Niedopuszczalna jest zatem sytuacja, że zapis o wyższym numerze będzie miał wcześniejszą datę księgowania niż już istniejące.Prowadzenie dziennika w XL
W systemie Comarch ERP XL firma może założyć dowolną ilość dzienników księgowań, w zależności od typu ujmowanych tam operacji. W ramach każdego z nich jest prowadzona odrębna numeracja.Schemat księgowania
Najczęstszą formą wprowadzania do nich zapisów jest automatyczne księgowanie dokumentów z wykorzystaniem schematów księgowań. Aby zachować ciągłość numeracji zalecanym ustawieniem parametru Data księgowania jest opcja dzisiejsza. Powoduje to ujmowanie zapisów księgowych pod bieżącą datą systemową. W przypadku konieczności ujęcia dokumentu w miesiącu poprzednim zalecana jest zatem zmiana daty systemowej na ostatni jego dzień.
Renumeracja bufora
W przypadku stosowania innego typu ustawienia daty księgowania może dojść do sytuacji gdy kolejny numer wpisu w dzienniku będzie niezgodny pod kątem chronologicznym (np. w przypadku ujmowania faktur, które wpłynęły później, ale dotyczą wcześniejszych operacji niż już zarejestrowane). Aby zapobiegać takim sytuacjom należy stosować księgowania do bufora. Podczas przenoszenia zapisów do Księgi Głównej zostają one poddane renumeracji. W takim przypadku numer zapisu jest przyporządkowany zgodnie z datą księgowania. Renumerację w buforze można również wykonać ręcznie.
XL159- Najczęściej zadawane pytania ERP XL-Comarch Mobile
Synchronizacja tryb automatyczny
Po wykreowaniu oddziału należy ustawić odpowiednie parametry aby synchronizacja mogła zostać przeprowadzona poprzez tryb automatyczny. W oknie edytowanego oddziału zakładka Automat synchr. należy zaznaczyć parametr Synchronizuj automatycznie, uzupełnić Adres serwera oraz odpowiedni numer sesji Windows.





Synchronizacja za pomocą usługi
Po wykreowaniu oddziału należy ustawić odpowiednie parametry aby synchronizacja mogła zostać przeprowadzona poprzez usługę. W oknie edytowanego oddziału zakładka Automat synchr. należy zaznaczyć parametr Synchronizuj automatycznie Synchronizuj z wykorzystaniem usługi, uzupełnić Adres serwera oraz odpowiedni numer sesji Windows.




- Konto Usługi:
- Użytkownik: konto domenowe na którym ma powstać usługa, licencje weryfikowane są z wpisanego klucza w konfiguracji komputera zakładka Klucz na danym koncie domenowym
- Hasło: hasło użytkownika domenowego
- Identyfikator operatora ( z którego pobierane są licencje ERP XL do synchronizacji )
- Operator: karta operatora ERP XL
- Hasło: hasło operatora ERP XL
- Zakładka Oddziały
Weryfikacja logów automatycznej synchronizacji
Logi są dostępne na pasku/wstążce za pomocą opcji .
Podczas Przełączania w tryb automatyczny pojawia się komunikat jak niżej

Wystąpił problem z działaniem usługi synchronizacji
Remedium:- Czy konto domenowe, na którym działa usługa ma uprawnienia do logowania się w trybie usługi (Zasady zabezpieczeń lokalnych, folder zasady lokalne – przypisywanie praw użytkownika – logowanie w trybie usługi), ponadto, zalecane jest, żeby użytkownik, na którym działa usługa, miał uprawnienia administracyjne Windows
- Czy w zmiennej środowiskowej Path nie znajduje się ścieżka do wcześniejszych wersji systemu Comarch ERP XL, na pierwszym miejscu ma być wpis do aktualnej wersji ERP XL
- Czy podgląd zdarzeń Windows nie zwraca komunikatów o nieprawidłowościach w działaniu usługi synchronizacji
- Usunąć usługę z poziomu Administratora oddziałów, następnie należy sprawdzić czy w rejestrze Windows nie zostały wpisy o nazwie usługi, która została usunięta, jeśli są należy je usunąć, gdy wpisów w rejestrze nie ma możemy ponownie dodać usługę w Administratorze Oddziałów
Brak licencji na moduł zamówień (NowyDokumentZam-33)

Brak licencji na moduł Serwis

Brak licencji na moduł Sprzedaż (NowyDokument-81)

Brak możliwości w strukturze firmy powiązanej z oddziałem zaznaczenia na formie płatności Dostępna w oddziale i zapis takiego centrum

Brak bieżącego okresu obrachunkowego



Brak zaczytania zapisów kasowych

Korygowanie dokumentów pochodzących z oddziału w ERP XL
Typ Dokumentu | Opis |
RW | Brak możliwości anulowania, skorygowania dokumentu, należy przyjąć towar dokumentem PW |
FS | Brak możliwości anulowania, można wystawić korektę FSK |
ZS | Można anulować, otworzyć dokument |
OS | Brak możliwości anulowania, skorygowania, należy zmienić status oferty |
MMW/MMP | Brak możliwości anulowania, skorygowania, należy przesunąć towar nowym MMW/MMP |
Możliwość określenia dostępnych typów dokumentów dla Operatora z poziomu aplikacji Comarch Mobile
W Comarch CDN XL istnieje możliwość ograniczenia rodzaju wystawianych dokumentów dla Operatora zalogowanego na urządzeniu mobilnym. W celu ograniczenia praw do wystawienia określonego dokumentu na urządzeniu mobilnym należy w Comarch CDN XL w Centrum domyślnym Operatora Mobile odznaczyć dozwoloną operację na dokumencie: wystawianie i edycja.
XL165 - ChatERP (Beta) w Comarch ERP XL
Informacje ogólne
Comarch ChatERP to eksperymentalna usługa wirtualnego asystenta w fazie testów BETA, która pozwala na realizację poleceń skierowanych do niego przez uprawnionych użytkowników Systemu. W pierwszej odsłonie potrafi on udzielić informacji dotyczących części danych zgromadzonych w systemie oraz wyjaśnić funkcje działające w ramach samego oprogramowania Comarch ERP XL.
Odpowiedzi udzielone przez ChatERP są generowane przez algorytmy AI, co oznacza, że zarówno dane z pytań, jak i z uzyskanych odpowiedzi są przesyłane do Comarch lub Open AI w celu świadczenia usługi. Dlatego też korzystanie z usługi naszego inteligentnego asystenta stanowi jednoczesne wyrażenie zgody na przesłanie danych zawartych w pytaniach i odpowiedziach do firmy Comarch lub podwykonawców technologicznych. Aby w tej wymianie danych ograniczyć ryzyko nadmiernego przetwarzania informacji:
- Użytkownik korzystający z usługi zobowiązuje się do nieprzekazywania w zadawanych pytaniach danych osobowych, wrażliwych i innych stanowiących tajemnicę firmy;
- mechanizm generowania odpowiedzi w ChatERP (Beta) nie dopuszcza takich, które skutkowałyby przetwarzaniem danych osobowych.
Jest to również istotne ze względu na fakt, że wszelkie informacje zawarte w zadawanych pytaniach i udzielonych odpowiedziach są zapisywane i wykorzystywane do celów treningowych doskonalenia usługi.
Dostęp do Comarch ChatERP w Systemie
Wersja Comarch ERP XL 2024.0
W Komunikatorze do paska bocznego dodana została zakładka [Chat ERP (Beta)], która pozwala otworzyć okno rozmowy z wirtualnym asystentem. Aby zakładka była widoczna dla zalogowanego operatora, to konieczne jest przyznanie mu dostępu do ChatERP w wersji testowej Beta. W tym celu na karcie operatora (zakładka [Parametry]/[Uprawnienia]) dodano parametr Dostęp do ChatERP (Beta). Aby faktycznie operator miał dostęp do okna rozmowy z ChatERP, to musi mieć również zaznaczony parametr Używaj komunikatora.
Przy włączaniu parametru pojawia się informacja o tym, że wersja testowa Beta nie obsługuje uprawnień operatorów, w związku z czym należy rozważyć, czy przyznanie dostępu danemu operatorowi jest zasadne i bezpieczne z punktu widzenia dostępu do danych, które szczegółowo opisano poniżej.
W treści jest również wskazanie na konieczność przestrzegania przepisów o ochronie danych osobowych przez uprawnionych użytkowników, o czym będą oni informowani bezpośrednio w oknie czatu.

Widok i działanie okna rozmowy z ChatERP (Beta) jest taki jak sam, jak każdej innej rozmowy w komunikatorze. Różnica jest tylko w:
- widoku górnego paska, gdzie pod przyciskiem Pomoc znajduje się link do tego biuletynu,
- ostrzeżenia na górze okna o konieczności przestrzegania przepisów o ochronie danych w treści pytań,
- braku możliwości zadawania pytań głosowych w dolnej części, gdzie wpisywana jest treść pytania.

W oknie prezentowanych jest domyślnie 100 ostatnich wiadomości wymienianych przez użytkownika z inteligentnym asystentem.
Nowe okno rozmowy od wersji Comarch ERP XL 2024.1
Dotychczasowe okno rozmowy z inteligentnym asystentem ChatERP dostępne z poziomu Komunikatora XL zostało zmienione. Od nowej wersji uruchamianie okna możliwe jest z poziomu Ribbona, gdzie w menu każdego modułu Sztuczna inteligencja pojawił się nowy przycisk ChatERP.

Przycisk jest aktywny tylko dla operatorów, którzy mają ustawiony parametr Dostęp do ChatERP (Beta).
Od wersji 2025.0 korzystanie z usługi Comarch ChatERP (Beta) wymaga akceptacji przez firmę regulaminu określającego zasady, zakres i warunki świadczenia takiej usługi. Regulamin zawiera m.in. warunki powierzenia do przetwarzania danych osobowych w ramach usługi.
Informacje o konieczności zaakceptowania niniejszego regulaminu znajdują się obecnie w dwóch miejscach:- W oknie komunikatu wyświetlanego przy włączaniu dostępu na karcie operatora (parametr Dostęp do ChatERP (Beta) na zakładce [Parametry]/[Uprawnienia])
- W oknie komunikacji z inteligentnym asystentem Comarch dostępnym z poziomu Ribbona (menu Sztuczna Inteligencja), gdzie dla operatora z uprawnieniami administratora pojawia się poniższe okno startowe, o ile zgoda nie została jeszcze wyrażona i przesłana do Comarch.

W oknie wyświetlana jest informacja o konieczności zachowania ostrożności w danych przekazywanych do pytań oraz wymaganych w odpowiedziach, w której chodzi głównie o przestrzeganie przepisów o ochronie danych osobowych. Stąd też można uruchomić dokumentację dotyczącą zapytań obsługiwanych przez asystenta.

Po użyciu przycisku Rozpocznij rozmowę przechodzimy do okna komunikacji z ChatERP, które przebiega wg dotychczasowych zasad. Na początku mamy więc wiadomość powitalną, gdzie przykładowe pytanie jest wyświetlone jako przycisk, którego użycie spowoduje wysłanie dokładnie takiego zapytania do asystenta.
W trakcie oczekiwania na odpowiedź użytkownik jest informowany, że przygotowywana jest odpowiedź, i dopiero po jej otrzymaniu można wprowadzić kolejne i użyć przycisku Wyślij.

Ogólne zasady komunikacji nie uległy zmianie, więc nadal wskazane jest, aby polecenia dotyczyły tylko zakresu danych opisanych w biuletynie https://pomoc.comarch.pl/xl/index.php/dokumentacja/xl165-chaterp-w-comarch-erp-xl/.
Rozmowy z inteligentnym asystentem ChatERP (Beta)
Zakres danych dostępny w wersji Beta, czyli o co jest sens pytać
W rozmowie można odpytywać ChatERP o możliwości Systemu, czyli odpytać o konkretne listy, obiekty oraz możliwość wykonywania dowolnych operacji. W zakresie dokumentacji użytkownika dysponuje on szeroką wiedzą, dzięki czemu potrafi podać natychmiastową, przetworzoną i konkretną odpowiedź, zamiast odsyłania do określonego fragmentu instrukcji.
Pierwsza wersja ChatERP udostępniona w wersji Comarch ERP XL 2024.0 potrafi również udzielić odpowiedzi na podstawowe pytania o dane handlowe w Systemie, które zostały wyszczególnione w tabeli.
Przykład pytania | Co zawiera odpowiedź | Wskazówki dotyczące pytań i odpowiedzi |
---|---|---|
Wyszukaj 5 kontrahentów, którzy w ostatnim tygodniu/miesiącu/roku kupili towar o kodzie … | Odpowiedź zwróci akronimy kontrahentów, którzy w podanym okresie kupili towar o podanym kodzie. | Wyniki pobierane są jedynie z dokumentów FS i posortowane alfabetycznie po kodzie kontrahenta. Jeśli w poleceniu nie podano: - ilości kontrahentów, to zwróci jeden rekord; - okresu (tydzień/miesiąc/rok), to zwróci wyniki z ostatniego miesiąca od daty bieżącej. |
Pokaż 5 kontrahentów z największymi zakupami z ostatniego miesiąca/tygodnia/roku | Odpowiedź zwróci akronimy kontrahentów, którzy kupili najwięcej w podanym okresie wraz z sumaryczną kwotą sprzedaży dla każdego z nich. | Wyniki pobierane są jedynie z dokumentów FS i posortowane rosnąco po sumarycznej ilości transakcji na FS. Jeśli w poleceniu nie podano: - ilości kontrahentów, to zwróci jeden rekord; - okresu (tydzień/miesiąc/rok), to zwróci wyniki z ostatniego miesiąca od daty bieżącej. |
Pokaż 5 największych moich dostawców z ostatniego miesiąca/tygodnia/roku | Odpowiedź zwróci akronimy kontrahentów, od których dokonaliśmy największych zakupów w podanym okresie wraz z sumaryczną kwotą tych zakupów dla każdego z nich. | Wyniki pobierane są jedynie z dokumentów FZ i posortowane rosnąco po sumarycznej ilości transakcji na FZ. Jeśli w poleceniu nie podano: - ilości kontrahentów, to zwróci jeden rekord; - okresu (tydzień/miesiąc/rok), to zwróci wyniki z ostatniego miesiąca od daty bieżącej. |
Pokaż 5 największych dłużników | Odpowiedź zwróci akronimy kontrahentów i kwotę zadłużenia na dzisiaj dla każdego z nich. | Wyniki wyliczane są jako suma nierozliczonych płatności (typu należność). Jeśli w poleceniu nie podano ilości kontrahentów, to zwróci jeden rekord. |
Pokaż 5 największych wierzycieli | Odpowiedź zwróci akronimy kontrahentów i kwotę zobowiązania na dzisiaj w stosunku do każdego z nich. | Wyniki wyliczane są jako suma nierozliczonych płatności (typu zobowiązanie). Jeśli w poleceniu nie podano ilości kontrahentów, to zwróci jeden rekord. |
Podaj sprzedaż dla kontrahenta o akronimie … z ostatniego miesiąca/tygodnia/roku | Odpowiedź zwróci listę towarów sprzedanych dla podanego kontrahenta w podanym okresie. Możliwe do wyświetlania będą: kod i nazwa towaru oraz ilość z j.m. | Wyniki pobierane są jedynie z dokumentów FS i posortowane zgodnie z kolejnością dokonywania transakcji na FS. Jeśli w poleceniu nie podano okresu (tydzień/miesiąc/rok), to zwróci wyniki z ostatniego miesiąca od daty bieżącej. |
Pokaż 5 najczęściej sprzedawanych towarów w ostatnim miesiącu z ostatniego miesiąca/tygodnia/roku | Odpowiedź zwróci listę towarów sprzedanych w największej ilości w podanym okresie. Możliwe do wyświetlania będą: kod i nazwa towaru oraz ilość z j.m. | Wyniki pobierane są jedynie z dokumentów FS i posortowane malejąco po sumarycznej ilości z transakcji na FS. Jeśli w poleceniu nie podano: - ilości towarów, to zwróci jeden rekord; - okresu (tydzień/miesiąc/rok), to zwróci wyniki z ostatniego miesiąca od daty bieżącej. |
Pokaż 5 najczęściej kupowanych towarów w ostatnim miesiącu/tygodniu/roku | Odpowiedź zwróci listę towarów zakupionych w największej ilości w podanym okresie. Możliwe do wyświetlania będą: kod i nazwa towaru oraz ilość z j.m. | Wyniki pobierane są jedynie z dokumentów FZ i posortowane malejąco po sumarycznej ilości z transakcji na FS. Jeśli w poleceniu nie podano: - ilości towarów, to zwróci jeden rekord; - okresu (tydzień/miesiąc/rok), to zwróci wyniki z ostatniego miesiąca od daty bieżącej. |
Pokaż wzrost sprzedaży w bieżącym roku (kwotowo i/lub procentowo) | Odpowiedź zwróci kwotę i/lub procent wzrostu (albo spadku) sprzedaży w bieżącym roku. | Wynik stanowi porównanie sumarycznej wartości sprzedaży z dokumentów FS za okres bieżącego roku i analogiczny okres roku poprzedniego. |
Pokaż 5 faktur sprzedaży z przeterminowanymi płatnościami o więcej niż 7 dni | Odpowiedź zwróci: akronim kontrahenta, numer faktury, przeterminowaną nierozliczoną kwotę płatności i jej termin. | Wyniki posortowane są malejąco po nierozliczonych kwotach z FS. Jeśli w poleceniu nie podano ilości rekordów lub ilości dni, wówczas nie będzie możliwe udzielenia odpowiedzi. |
Pokaż 5 niezrealizowanych zamówień sprzedaży (lub zakupu) przeterminowanych więcej niż 7 dni | Odpowiedź zwróci listę zamówień z podaniem szczegółów: akronim kontrahenta, nr zamówienia, data realizacji. | Wyniki posortowane są rosnąco po dacie realizacji z ZS. Jeśli w poleceniu nie podano ilości rekordów lub ilości dni, wówczas nie będzie możliwe udzielenia odpowiedzi. Natomiast dla braku określenia rodzaju zamówień (sprzedaży/zakupu) wyświetlone zostaną wyniki dla ZS. |
Pokaż 5 towarów które zalegają powyżej 60 dni na magazynach | Odpowiedź zwróci listę zalegających towarów na wszystkich magazynach. Możliwe do wyświetlania będą: kod i nazwa towaru, ilości dni zalegania i kod magazynu. | Wyniki posortowane są malejąco po ilości dni zalegania. Jeśli w poleceniu nie podano ilości rekordów lub ilości dni, wówczas nie będzie możliwe udzielenia odpowiedzi. |
Pokaż 5 towarów które zalegają powyżej 60 dni na magazynie … | Odpowiedź zwróci listę zalegających towarów na podanym magazynie. Możliwe do wyświetlania będą: kod i nazwa towaru, ilości dni zalegania i kod magazynu. | Wyniki posortowane są malejąco po ilości dni zalegania. Jeśli w poleceniu nie podano ilości rekordów lub ilości dni, wówczas nie będzie możliwe udzielenia odpowiedzi. |
- Dla pytań o kontrahentów w odpowiedzi zostaną przekazane tylko ich akronimy, bez podawania żadnych dodatkowych informacji z kart tych kontrahentów. W przypadku towarów natomiast może to być zarówno kod, jak i nazwa z karty towaru.
- Dla zapytań o sprzedaż, czyli np. kontrahenci z największymi zakupami lub najczęściej sprzedawane towary, są one obecnie wyliczane na podstawie wartości czy ilości z samych dokumentów FS. W analogicznych pytaniach dotyczących dokumentów zakupowych (np. najwięksi dostawcy), wyliczenia są wykonywane z wartości/ilości na dokumentach FZ.
- Jeśli w poleceniu podano dużą ilość rekordów do wyświetlenia, to w oknie odpowiedzi zostanie wyświetlona tylko taka ich część, która mieści się w tym polu, a na końcu będzie znak: … Nie ma więc sensu żądać ilości większej niż kilkanaście rekordów, bo podana odpowiedź może być nieczytelna dla użytkownika lub zostać obcięta.
- Jeśli w poleceniu nie podano ilości rekordów do wyświetlenia, to w większości przypadków domyślnie zostanie wyświetlony jeden rekord, który najbardziej odpowiada warunkom zapytania, czyli np. najczęściej sprzedawany/kupowany towar, największy dłużnik/wierzyciel itp. Ale w przypadku, gdy określona dana jest wymagana (np. wspomniana ilość rekordów lub ilość dni przeterminowania), to pojawia się informacja o braku kompletnych danych do udzielenia odpowiedzi. Więcej szczegółów w powyższej tabeli.
- W odpowiedzi na pytanie może pojawić się ogólny komunikat błędu: ‘Ups, coś poszło nie tak… Spróbuj ponownie za chwilę.’, co może oznaczać, że nastąpiło chwilowe zerwanie komunikacji z ChatERP lub wystąpił inny niezidentyfikowany błąd uniemożliwiający udzielenie odpowiedzi.
Co jeszcze potrafi ChatERP (Beta)?
Wersja Beta usługi dla Comarch ERP XL 2024.0 pozwala również na wykonanie prostej operacji, czyli wstrzymania transakcji dla kontrahentów. Można zdecydować czy wstrzymać je dla konkretnego rekordu o podanym akronimie, czy dla kilku największych dłużników, czy może idąc krok dalej, dla tych dłużników, których poziom zadłużenia przekroczył określoną kwotę.
Przykład polecenia | Co zawiera odpowiedź | Wskazówki dotyczące odpowiedzi |
---|---|---|
Wstrzymaj transakcje dla kontrahenta o akronimie … | Odpowiedź zwróci informację o wstrzymaniu transakcji dla podanego kontrahenta i zaznaczy na jego karcie parametr ‘Wstrzymano transakcję’. | Jeśli kontrahent nie zostanie znaleziony wówczas operacja nie zostanie wykonana, o czym użytkownik zostanie poinformowany w treści odpowiedzi. |
Wstrzymaj transakcje dla 2 największych dłużników | Odpowiedź zwróci akronimy kontrahentów (największych dłużników), dla których został zaznaczony parametr ‘Wstrzymano transakcję’. | Jeśli w poleceniu nie podano ilości rekordów, wówczas operacja zostanie wykonana dla jednego rekordu. Jeśli kontrahent nie zostanie znaleziony wówczas operacja nie zostanie wykonana, o czym użytkownik zostanie poinformowany w treści odpowiedzi. |
Wstrzymaj transakcje dla 2 dłużników, których kwota zadłużenia przekracza … | Odpowiedź zwróci akronimy kontrahentów (o zadłużeniu większym niż podano), dla których został zaznaczony parametr ‘Wstrzymano transakcję’. |
Wstrzymanie transakcji polega na ustawieniu dla kontrahenta odpowiedniego parametru, na podstawie którego blokowane jest dla niego wiele działań dotyczących dokumentów. Z tego też powodu jej wykonanie zlecone przez ChatERP jest dodatkowo kontrolowane przez System, czyli wywołuje komunikat, w którym użytkownik musi potwierdzić zamiar wykonania takiej operacji.

Od wersji 2025.0 w komunikacji z inteligentnym asystentem Comarch weryfikowane są uprawnienia dostępu Użytkownika do żądanych informacji lub do wykonania zleconej operacji. Dzięki temu otrzyma on odpowiedź tylko na takie zapytania, które dotyczą dostępnych dla niego informacji. Nie uda mu się również wykonać takich operacji, które są dla niego zablokowane (z poziomu interfejsu lub poprzez API).
Przy obecnie obsługiwanych poleceniach weryfikowane są na karcie operatora dostępy do modułów oraz przypisane zakazy. Brak dostępu do modułu lub zakaz mogą bowiem blokować dostęp do określonych danych lub operacji. W takim przypadku:
- Dla zapytań o dane z bazy asystent wysyła w odpowiedzi informację o braku uprawnień.
- Dla wykonania operacji najczęściej zostaje wyświetlony odpowiedni komunikat z Systemu, który również pokazałby się przy próbie wykonania jej z interfejsu. Dodatkowo informacja ta jest zawarta w odpowiedzi od asystenta.
Nowe polecenia obsługiwane w wersji Comarch ERP XL 2024.1
W nowej wersji Systemu dodano obsługę poleceń dotyczących limitów kredytowych kontrahenta, które przedstawia poniższa tabela.
Przykład pytania | Co zawiera odpowiedź | Wskazówki dotyczące pytań i odpowiedzi |
---|---|---|
Pokaż pozostały limit kredytowy dla kontrahenta … | Odpowiedź zwróci kwotę limitu pozostałego dla podanego kontrahenta wraz z datą jego obowiązywania, jeśli aktualnie jakiś limit jest dla niego ustawiony. | Jeśli w poleceniu podano nieprawidłowy akronim kontrahenta, to w odpowiedzi znajdzie się taka informacja. |
Ustaw limit kredytowy nieograniczony dla kontrahenta … | Odpowiedź zwróci informację o ustawieniu limitu nieograniczonego dla podanego kontrahenta i zaznaczy na jego karcie parametr ‘Limit nieograniczony’. | Jeśli podany kontrahent nie zostanie znaleziony wówczas operacja nie zostanie wykonana, o czym użytkownik zostanie poinformowany w treści odpowiedzi. |
Ustaw limit kredytowy kontrahentowi ... w wysokości … od dnia … | Odpowiedź zwróci informację o ustawieniu limitu w żądanej kwocie dla podanego kontrahenta i doda do listy limitów nowy rekord z: - datą OD zgodną z podaną, - datą DO ‘Brak ograniczenia’, - kwotą zgodną z podaną. | Jeśli podany kontrahent nie zostanie znaleziony lub podana kwota będzie spoza dopuszczalnego zakresu, wówczas operacja nie zostanie wykonana, o czym użytkownik zostanie poinformowany w treści odpowiedzi. Jeśli nie podano daty, wówczas jako data OD zostanie przyjęta data bieżąca. |
Ustaw dla kontrahenta … dozwolone przeterminowanie płatności na … dni. | Odpowiedź zwróci informację o ustawieniu żądanej ilości dni przeterminowania dla podanego kontrahenta i ustawi tą ilość dni na jego karcie, na zakładce [Limity kredytowe]. | Jeśli podany kontrahent nie zostanie znaleziony lub podana ilość dni będzie spoza dopuszczalnego zakresu, wówczas operacja nie zostanie wykonana, o czym użytkownik zostanie poinformowany w treści odpowiedzi. |
W wersji Comarch ERP XL 2024.1 obsługiwane są zarówno dotychczasowe, jak i nowe polecenia.
Nowe polecenia obsługiwane w wersji Comarch ERP XL 2025.0
W komunikacji z Comarch ChatERP nadal rozwijany jest obszar działań handlowych prowadzonych z kontrahentami. Od wersji 2025.0 obsługiwane są polecenia:
- Zarezerwuj dla kontrahenta [akronim] towar [kod towaru] na magazyn [kod magazynu] w ilości [ilość] do dnia DD-MM-RRRR.
- Wystaw zamówienie sprzedaży (lub zakupu) dla kontrahenta [akronim] na [ilość] jednostek towaru [kod towaru].
- Wystaw fakturę sprzedaży (lub zakupu) dla kontrahenta [akronim] na [ilość] jednostek towaru [kod towaru].
- Zatwierdź [numer dokumentu, np. ZS-255/12/24].
Pogrubionym drukiem oznaczono dane, które są wymagane, aby polecenie zostało wykonane. Nowe rezerwacje lub dokumenty zostaną dodane z jednostką podstawową ustawioną dla towaru, nie ma więc konieczności wpisywania jednostki w treści samych poleceń.
Zgodnie ze standardowym działaniem asystenta powyższe operacje zostaną wykonane dopiero po zaakceptowaniu komunikatu systemowego, w którym Użytkownik potwierdza zamiar ich wykonania.
XL146-Dobre praktyki. Konfiguracja, zarządzanie Microsoft SQL Serwer oraz bazami danych.
Konfiguracja serwera
Po zainstalowaniu serwera Microsoft SQL Serwer należy zwrócić uwagę na kilka rzeczy:
- Zaznaczony parametr SQL Server and Windows Authentication mode

- Zmienić parametry serwera w zakładce Advanced:

- Blocked Process Threshold – parametr, który odpowiada za rejestrację blokad przez dodatek SQL Server Profiler. Domyślnie ustawiona jest wartość 0 oznacza to, że żadne blokady nie są rejestrowane. Parametr wyrażony jest w sekundach. W tym przypadku będą rejestrowane blokady trwające 3 sekundy i więcej. Parametr ten nie ma bezpośtredniego wpływu na wydajność serwera.
- Optimize for Ad hoc Workloads – parameter, odpowiadający za przetrzymywanie pełnych zapytań wywoływanych Ad – hoc na serwerze. Domyślna wartość False. Parametr warto zmienić na True, ze względu na to, iż podczas pracy w Systemie Comarch ERP XL, wywoływana jest spora liczba zapytań Ad-hoc. Niektóre z nich bardzo rzadko, w związku z tym nie ma potrzeby przetrzymywania ich w buforze. Jeśli zapytanie pojawi się częściej, trafi wówczas w całości do bufora. Pozwoli to zaoszczędzić pamięć RAM na serwerze.
- Cost Threshold For Parallelism – parametr określający jak kosztowne zapytania mają być zrównoleglane. Dla Systemu Comarch ERP XL przyjmuje się że wartości te mogą przybierać wartości od 25 do 50. Przykładowe ustawienie 50 oznacza że tylko zapytania o wyliczonym koszcie przez SQL Server powyżej 50 będą zrównoleglane.
- Max Degree of Parallelism (Max DoP) – parametr określający ile vCPU lub CORE może wziąć udział w zrównoleglaniu zapytania. Domyślna wartość wynosi 0 oznacza to, że o tym ile rdzeni lub wątków zaangażować decyduje SLQ Server. Przyjmuje się że parametr ten nie powinien wynosić więcej niż połowa dostępnych wątków lub CORE dla serwera na którym zainstalowany jest Microsoft SQL Serwer.
- Do określenia rodzajów blokad możemy posłużyć się zapytaniem:
Bazy danych
Konfiguracja
- Dla baz danych pod względem wydajności oraz bezpieczeństwa jest ich na macierzy w RAID 01/10. To rozwiązanie kosztowne ale zapewnia najlepszą wydajność oraz bezpieczeństwo danych. Łączy zalety RAID 1 orz 0. RAID 5/6 to rozwiązanie kompromisowe pomiędzy bezpieczeństwem i wydajności a ceną. Rozwiązanie dla mniejszych baz.
- Bazy danych, logi oraz buckupy powinny znajdować się na osobnych dyskach (systemach dyskowych). Jeśli nie jest to możliwe bazy oraz logi mogą znajdować się w tej samej lokalizacji. Dla bezpieczeństwa backupy powinny być umieszczone na osobnym systemie dyskowym, aby w razie awarii można było przywrócić funkcjonowanie bazy danych. Kopie baz warto również przenosić na zewnętrzne nośniki.
- Baza TempDB – baza systemowa odpowiedzialna w dużej mierze za wydajność systemów. Jeśli jest taka możliwość baza powinna znajdować się na najszybszym dysku (systemie dyskowym).
- Warto podzielić ją na pliki, nie więcej niż vCPU (maszyny wirtualne) CORE (maszyny fizyczne) na serwerze.

Serwisowanie bazy
Backupy
Backupy baz ich rodzaj i częstotliwość ustawia się zgodnie z oczekiwaniami Klienta. Rodzaje podstawowych kopii baz danych:- Full – Kopia całej bazy danych, włącznie z procedurami funkcjami etc. Jeśli stosujemy inne rodzaje backupowania, to i tak co jakiś czas zaleca się wykonanie pełnej kopii bazy.
- Differential –Tworzenie kopii zapasowej tylko tych danych, które uległy zmianie od czasu ostatniej pełnej kopii zapasowej.
- Transaction log – backup loga bazy danych, log zawiera wszystkie informacje na temat operacji wykonanych na bazie danych (konieczne włączenie Recovery Model Full). Każda kolejna kopia zwiera informacje o zdarzeniach które wydarzyły się pomiędzy kolejnymi kopiami.
Aktualizacja statystyk oraz odbudowa indeksów
Od wersji 2016 SQL Server zmianie uległ algorytm dotyczący częstotliwości aktualizacji statystyk. W kolejnych wersjach działa on poprawnie. Jednak można w oknie serwisowym, po skończonej pracy przeprowadzić aktualizację statystyk, korzystając z Maintenance Plans lub wprowadzając do JOB’a polecenie T-SQL. Można również przeprowadzić reorganizacje największych i najbardziej pofragmentowanych indeksów (powyżej 2500 stron i stopień fragmentacji powyżej 5%). Raz w tygodniu można wykonać reindeksację największych i najbardziej pofragmentowanych indeksów (2500 stron, stopień fragmentacji powyżej 50%).Konfiguracja maszyn wirtualnych
W przypadku konfigurowania maszyn wirtualnych na serwerze, należy zwrócić uwagę na ilość przypisywanych gniazd procesorów dla wirtualnych CPU (vCPU). Część wirtualizatorów dla jednego vCPU przypisuje pojedyncze gniazdo. W przypadku najnowszych wersji Microsoft SQL Server Standard maksymalna ilość obsługiwanych gniazd wynosi cztery.![]() |
Przykład: Jeśli dla maszyny zostanie przypisanych 8 vCPU i 8 gniazd to SQL będzie wykorzystywał tylko 4 gniazda i 4 vCPU pozostałe cztery nie będą brały udziału w operacja wykonywanych na SQL Serwerze. Dobrą praktyką jest przypisanie takiej ilości gniazd jaka znajduje się na maszynie fizycznej. Natomiast jeśli z jakiejś przyczyny zostanie przydzielona inna ilość to należy się stosować do założenia, że na 8 vCPU można przypisać jedno gniazdo (dla 16 vCPU – 2 gniazda itd.).a |