Program Migrator wykorzystuje funkcje API ERP XL. Do każdej wersji systemu ERP XL przeznaczona jest inna wersja Migratora. Aby sprawdzić, do której wersji systemu dany Migrator jest przeznaczony należy z menu Plik wybrać opcję: Wersja.
Program Migrator korzysta z systemu CDN XL zainstalowanego na komputerze. Miejsce instalacji ERP XL jest pobierane z wartości zmiennej środowiskowej: Path systemu: Windows. Jeśli w zmiennej: Path będzie podana ścieżka (np. „C:\Program Files\CDNXL”) do plików systemu ERP XL w wersji 2019.3 to Migrator będzie automatycznie pracować na bazie z wersji 2019.3. Katalog z plikiem instalacyjnym znajduje się w katalogu z zainstalowanym ERP XL. Z katalogu Migrator należy skopiować plik: migrator.exe oraz cdn_api20193.net do katalogu, w którym zainstalowany jest ERP XL.
Program Migrator składa się z:
Wykonywalnego pliku „migrator.exe”
Biblioteki cdn_api20193.net
Arkuszy Excel znajdujących się w tematycznych katalogach:
Towary:
Grupy Towarów, Towary, TowaryCenniki, TowaryDostawcy, TowaryJM, TowaryNormatywy, TowaryReceptury.
Logowanie do bazy danych odbywa się automatycznie po otwarciu programu za pomocą migrator.exe
i wskazaniu bazy. Po zalogowaniu do bazy danych użytkownik otrzyma informacje o stanie połączenia i bazie danych. Z paska menu można wybrać obszar migracji.
Okno programu i jego części składowe
Widok okna głównego jest taki sam dla wszystkich obszarów migracyjnych.
Okno główne Migratora.
W oknie poza obszarami migracyjnymi na pasku menu znajdują się funkcje:
[Logowanie do bazy] – zielona kłódka świadczy o tym, że Migrator połączył się z bazą.
[Import kart kontrahentów] – funkcja umożliwiająca migrowanie danych związanych z kontrahentami, np. grupa, adresy, osoby.
[Import kart towarów] – funkcja umożliwiająca migrowanie danych związanych z towarami np. grupy, cenniki, dostawy, jednostki miar, receptury, normatywy.
[Import dokumentów] – funkcja umożliwiającą migrowanie danych związanych z dokumentami np. magazynowymi, importowymi, SAD, umowy
Arkusze migracyjne
Wczytywanie arkusza Excel
W celu wczytania arkusza wybieramy z menu odpowiednią kategorie danych. Pojawia się formatka migracji:
Formatka migracji danych.
Po wybraniu przycisku Wczytaj Arkusz pojawia się okno dialogowe do wybrania konkretnego arkusza Excel. W polu z nazwą pliku podpowiada się prawidłowa nazwa arkusza.
Wybieranie arkusza Excel.
Po wybraniu i otworzeniu arkusza dane są wczytane na kanwę.
Dane wczytane na kanwę.
Za pomocą suwaków można przeglądać dane z arkusza.
Arkusze do migracji
Arkusze Excel do migracji danych są dołączone do programu. Są zgrupowane tematycznie w katalogach. Skoroszyty Excela zawierają jeden arkusz. Arkusze zawierają ściśle określone kolumny, których nie można zmieniać, oprócz arkusza do migracji atrybutów. W arkuszu AtrybutyWartości stałe są tylko kolumny: LP, Typ, Akronim. Pozostałe nagłówki kolumn zawierają nazwy klas atrybutów i można je dodawać dowolnie.
Nagłówki kolumn zawierają komentarze na temat wprowadzanych danych. Należy ściśle przestrzegać używania zawartych w nich symboli.
Daty w arkuszach wprowadzamy w formacie RRRR‑MM‑DD. Tylko taki format jest akceptowany przez program.
Towary
Poniżej została przedstawiona charakterystyka arkuszy migracyjnych katalogu Towary.
Grupy Towarów
Lp.
GrupyTowarów.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Kod
varchar
40
Kod grupy towarowe
Tak
3
Nazwa
varchar
255
Nazwa grupy towarowej
Tak
4
Grupa ścieżki
varchar
255
Ścieżka danej grupy towarowej, czyli w jakiej grupie nadrzędnej (GrupaScieżka) znajduje się wprowadzana grupa. Jeżeli mamy zdefiniowaną grupę towarów BUDOWLANE i w ramach tej grupy zdefiniowane są podgrupy MASZYNY i MATERIAŁY, a w ramach grupy Budowlane Maszyny mamy SAMOCHODY oraz POZOSTAŁE, to poprawna ścieżka dla grupy maszyny budowlane samochody to BUDOWLNE\|MASZYNY (to wpisujemy w kolumnie GrupaŚcieżka, wpisując jednocześnie w kolumnie Kod wartość SAMOCHÓD). Poszczególne poziomy drzewa grup Towarów oddzielane są kombinacją znaków \|. Aby założyć poprawnie grupę BUDOWLNE\|MASZYNY w pierwszej kolejności musimy założyć grupę BUDOWLANE, czyli w arkuszu migracyjnym przed zapisem MASZYNY powinien znaleźć się zapis BUDOWLANE (zapisy dotyczą kolumny Kod).
Czy towar jest kaucją (0 lub pole puste - nie, 1 - tak)
6
SWW
varchar
20
Numer SWW/PKWiU
7
EAN
varchar
40
Kod EAN towaru
8
JM
varchar
8
Podstawowa jednostka miary
9
GrupaPod
varchar
1
Symbol stawki VAT dla zakupu (np. A, B, C, itp.)
10
StawkaPod
varchar
1
Stawka VAT dla zakupu (np. 0, 8, 23 itp.)
11
GrupaPodSpr
varchar
1
Symbol stawki VAT dla sprzedaży (np. A, B, C, itp.)
12
StawkaPodSpr
varchar
1
Stawka VAT dla sprzedaży (np. 0, 8, 23 itp.)
13
Symbol
varchar
40
Symbol, numer katalogowy towaru. Dodatkowe pole do dowolnego wykorzystania.
14
KlasaCecha
varchar
20
Czy dostawy towarów będziemy oznaczać dodatkową cechą. Jeśli tak, to w tym polu wpisujemy nazwę tej cechy.
15
Magazyn
varchar
10
Kod magazynu, do którego ma być domyślnie przyjmowany towar.
16
MarzaMin
decimal
Zakładana minimalna marża na towarze wyrażona w procentach.
17
KosztUTyp
tinyint
1
Koszt typu usługi: 1-procentowy, 2-wartościowy
18
KosztUslugi
decimal
Jeżeli typ towaru ustawiony jest jako Usługa oraz w sytuacji, gdy typ kosztu usługi na karcie towaru ustawimy na Procent w polu tym przechowujemy wartość procentową kosztu usługi lub gdy typ usługi ustawiony jest na Kwotę w polu tym przechowujemy wartość kwotową kosztu usługi
19
Akcyza
decimal
Akcyza dla towaru (stawka podatku akcyzowego wyrażona liczbą w procentach)
20
Clo
decimal
Cło dla towaru (Stawka cła wyrażona w procentach)
21
PCN
varchar
10
Kod PCN dla towaru
22
TwrGrupa
varchar
255
Ścieżka do grupy towarowej, w której ma znaleźć się dany towar oddzielona znakami: \|
23
Opis
varchar
511
Możliwość wypełnienia pola opisem dodatkowym towaru.
Towary Cenniki
Lp.
TowaryCenniki.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Kod
varchar
40
Kod towaru
Tak
3
Numer
tinyint
1
Numer ceny. Jest to liczba widoczna przy cenniku na karcie towarowej.
Tak
4
Waluta
varchar
5
Symbol waluty, w jakiej jest wyrażona cena.
5
Wartość
decimal
Wartość ceny
6
Marza
decimal
Marża zakładana. Jeżeli wybrano aktualizację ceny przy nowej dostawie, cena sprzedaży zostanie zaktualizowana ceną zakupu powiększona o zakładaną marżę.
7
Zaok.
tinyint
1
Jak zaokrąglać cenę. Ustawienie 0.01 zaokrągli do groszy, ustawienie 1.00 zaokrągli do pełnych złotówek. Proponowanym ustawieniem jest 0.01.
8
Aktualizacja
tinyint
1
Czy aktualizować cenę przy nowej dostawie: 0 – nie, 1 – tak.
Cena towaru u dostawcy. W wartości używać kropki zamiast przecinka.
6
Waluta
varchar
5
Symbol waluty.
7
Jmz
varchar
8
Jednostka pomocnicza.
8
Czas
smallint
Czas dostawy/wysyłki w dniach. Wykorzystywany do optymalizowania generowanie Zamówień Zakupu z poziomu dokumentu Bilansu Stanu Towarów.
9
DataAkt
Date
Data aktualizacji ceny w formacie RRRR-MM-DD.
10
KodKnt
varchar
40
Kod pod jakim ten element występuje u kontrahenta – potrzebne w przypadku zamówień. Jest to kod zamówieniowy dostawcy.
Towary jednostki miary
Lp.
TowaryJM.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Kod_towaru
varchar
40
Kod towaru
Tak
3
Jmz
varchar
8
Symbol jednostki pomocniczej
Tak
4
PrzeliczL
Licznik przelicznika
5
PrzeliczM
decimal
Mianownik przelicznika. Mamy sytuację, że jednostką pomocnicza jest opak., które składa się z 12 szt. (szt. to jednostka podstawowa). W tym przypadku licznik przelicznika = 12, a mianownik przelicznika = 1.
6
EAN
varchar
40
Kod EAN jednostki pomocniczej
Towary normatywy
Lp.
TowaryNormatywy.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Kod_towaru
varchar
40
Kod towaru
Tak
3
Kod_magazynu
varchar
10
Kod magazynu
Tak
4
IloscZam
smallint
Ilość zamawiana towaru. Parametr wykorzystywany na potrzeby Bilansu Stanu Towarów.
5
IloscMin
smallint
Ilość minimalna towaru. Parametr wykorzystywany na potrzeby Bilansu Stanu Towarów.
6
IloscMax
smallint
Ilość maksymalna towaru. Parametr wykorzystywany na potrzeby Bilansu Stanu Towarów.
Towary Receptury
Lp.
TowaryReceptury.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Kod_towaru
varchar
40
Kod usługi lub produktu, dla którego dodajemy recepturę.
Tak
3
Symbol
varchar
20
Symbol towaru
Tak
4
Nazwa
varchar
40
Nazwa towaru
5
TypReceptury
long
Typ receptury: 1-kompletacyjna, 2-dekompletacyjna, 3- serwisowa
Tak
6
Ilość
varchar
12
Ilość wyprodukowanego towaru
Tak
7
KosztEwid
varchar
16
Koszt ewidencyjny
8
Opis
varchar
2000
Opis receptury
9
KlasaCechy
varchar
20
Klasa cechy receptury
10
Cecha
varchar
20
Cecha receptury
11
Jm
varchar
8
Jednostka miary w jakiej określona jest receptura dla towaru musi być określona dla towaru (zakładka opakowanie)
12
URL
varchar
255
URL receptury
13
Towar
varchar
40
Kod składnika towaru, który dodajemy do receptury
Tak
14
ilosc_skl
varchar
12
Ilość składnika
Tak
15
Zamienniki
long
Czy dopuszczalne są zamienniki (1 – tak, 0- nie)
16
TypPozycji
long
Typ pozycji (1- składnik, 3- robocizna, 4- produkt uboczny)
17
TypCechy_skl
long
Typ cechy składnika (0-nieistotne, 1- na zlecenie, 2- z receptury)
18
Ubytek
varchar
6
Ubytek w procentach
19
Koszt
varchar
16
Koszt składnika
20
Opis_skl
varchar
2000
Opis składnika
21
KlasaCechy_skl
varchar
20
Klasa cechy składnika
22
Cecha_skl
varchar
20
Cecha składnika
23
Jm_skl
varchar
8
Jednostka miary w jakiej określony jest składnik receptury dla towaru musi być określona dla towaru (zakładka opakowanie)
Kontrahenci
Poniżej została przedstawiona charakterystyka arkuszy migracyjnych katalogu Kontrahenci.
Grupy kontrahentów
Lp.
GrupyKontrahentów.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Akronim
varchar
20
Akronim grupy kontrahentów
Tak
3
GrupaSciezka
Ścieżka danej grupy kontrahenta, czyli w jakiej grupie nadrzędnej (GrupaSciezka) znajduje się wprowadzana grupa (Akronim). Jeżeli mamy zdefiniowaną grupę kontrahentów DOSTAWCY i w ramach tej grupy zdefiniowane są podgrupy KRAJOWI i ZAGRANICZNI, a w ramach dostawców zagranicznych mamy UNIJNI oraz POZAUNIJNI, to poprawna ścieżka dla dostawców zagranicznych unijnych to DOSTAWCY\|ZAGRANICZNI (to wpisujemy w kolumnie GrupaSciezka, wpisując jednocześnie w kolumnie Akronim wartość UNIJNI). Poszczególne poziomy drzewa grup kontrahentów oddzielane są kombinacją znaków \|. Aby założyć poprawnie grupę DOSTAWCY\|ZAGRANICZNI w pierwszej kolejności musimy założyć grupę DOSTAWCY, czyli w arkuszu migracyjnym przed zapisem ZAGRANICZNI powinien znaleźć się zapis DOSTAWCY (zapisy dotyczą kolumny Akronim).
Wprowadzając następujące dane do arkusza
LP
Akronim
GrupaSciezka
1
DOSTAWCY
2
KRAJOWI
DOSTAWCY
3
ZAGRANICZNI
DOSTAWCY
4
UNIJNI
DOSTAWCY\|ZAGRANICZNI
5
POZAUNIJNI
DOSTAWCY\|ZAGRANICZNI
Tak
Kontrahenci
Lp.
Kontrahenci.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Typ
smallint
20
Typ kontrahenta. Możliwa do wprowadzenia jedna z trzech wartości: 8 – dostawca, 16 – odbiorca, 24 – dostawca/odbiorca
Tak
3
Akwizytor
bool
Czy kontrahent jest akwizytorem? Ustawienie na 1 powoduje, że na liście akwizytorów możliwych do ustawienia na kartotece kontrahenta czy na dokumencie handlowym dany kontrahent zostanie ujęty. Jeżeli dany kontrahenta nie jest akwizytorem ustawiamy wartość na 0.
4
Akronim
varchar
20
Skrócona nazwa kontrahenta.
Tak
5
Nazwa1
varchar
50
Pierwsza część nazwy kontrahenta.
Tak
6
Nazwa2
varchar
50
Druga część nazwy kontrahenta.
7
Nazwa3
varchar
50
Trzecia część nazwy kontrahenta.
8
KodP
varchar
10
Kod pocztowy.
9
Miasto
varchar
30
Miasto.
Tak
10
Ulica
varchar
30
Ulica.
11
adres
varchar
30
Dodatkowe pole adresu.
12
NIPPrefix
varchar
13
Prefiks numeru nim, np. PL, DE.
Tak
13
NIP
varchar
13
Numer NIP z kreskami oddzielającymi poszczególne grupy cyfr, np. 677-00-65-406
Tak
14
REGON
varchar
20
Numer Regon
15
PESEL
varchar
11
Numer PESEL w sytuacji, gdy kontrahent jest osobą fizyczną
16
Bank
varchar
20
Kod banku, w którym kontrahenta ma rachunek. W celu uzupełnienia tego pole wymagana jest wcześniejsza migracja banków do systemu. Na dzień 2011-07-12 lista banków została zaczytana do bazy produkcyjnej.
17
NRRACHUNKU
integer
Numer rachunku bankowego
18
NRB
smallint
Czy numer rachunku jest zgodny ze standardem NRB. Dopuszczalne wartości 0 lub 1.
19
Odleglosc
decimal
Odległość do kontrahenta, pole informacyjne.
20
Kraj
varchar
2
Kod kraju, np. PL – Polska.
21
Wojewodztwo
varchar
30
Nazwa województwa.
22
Powiat
varchar
30
Nazwa powiatu.
23
Gmina
varchar
30
Nazwa gminy.
24
Telefon1
varchar
30
Numer telefonu do kontrahenta.
25
Telefon2
varchar
30
Numer telefon do kontrahenta.
26
FAX
varchar
30
Numer faksu do kontrahenta.
27
Modem
varchar
30
Dodatkowe pole na numer kontaktowy do kontrahenta.
28
TELEX
varchar
30
Obecnie pole na kartotece kontrahenta posiada etykietę GSM, więc możemy tutaj wpisać numer telefonu komórkowego.
29
EMAIL
varchar
255
Domyślny adres e-mail kontrahenta. Adresy e-mail poszczególnych osób od kontrahenta są rejestrowane na zakładce Osoby.
30
URL
varchar
255
Adres strony internetowej kontrahenta.
31
SeriaFA
varchar
10
Seria faktur, która będzie ustawiana automatycznie na dokumentach wystawianych dla danego kontrahenta. Seria ta ma wyższy priorytet niż seria ustawiona jako domyślna seria dla danego centrum uprawnień.
32
AkronimOpiekuna
varchar
30
Skrócona nazwa opiekuna kontrahenta.
33
MagKod
varchar
10
Kod magazynu, na który będą składane zamówienia zarejestrowane w Pulpicie Kontrahenta.
34
OUTLOOKURL
varchar
50
Jeżeli korzystamy z MS Outlook, w tym polu wprowadzamy adres folderu Outlook, który chcemy otworzyć, np. outlook:\\Foldery publiczne\Wszystkie foldery publiczne\Wdrozenia\Wdrozenia CDN XL\Klienci\.....
35
Rejestrbankowy
varchar
10
Rejestr bankowy, który będzie się podpowiadał na dokumencie przy wystawianiu dokumentów handlowych. Rejestr ten ma wyższy priorytet niż domyślny rejestr bankowy ustawiony dla danego centrum uprawnień.
36
SposóbDostawy
varchar
20
Nazwa sposobu dostarczania towaru zarówno od jak i do kontrahenta.
37
AkronimAkwizytor
varchar
30
Skrócona nazwa akwizytora. Przed uzupełnieniem tego pola wymagana jest migracja akwizytorów (kontrahentów z flagą akwizytor) lub pracowników, ponieważ akwizytorem może być albo kontrahent, albo pracownik.
38
Platnik
varchar
30
Akronim płatnika. Jeżeli pole pozostawimy puste, w polu płatnika ustawi się migrowany kontrahent, więc takie rozwiązanie proponujemy.
39
WalSymbol
varchar
5
Symbol waluty, w jakiej mają być wystawiane transakcje z danym kontrahentem.
40
AkwProwizja
smallint
Prowizja akwizytora. Pole informacyjne do ewentualnego wykorzystania w raportowaniu.
41
GLN
varchar
40
Numer GLN (Global Location Number) wykorzystywany do unikalnej identyfikacji lokalizacji na całym świecie, który jest warunkiem efektywnego funkcjonowania EDI. W Polsce numery GLN nadawane są przez Instytut Logistyki i Magazynowania.
42
Rabat
smallint
Domyślny rabat przypięty do kartoteki kontrahenta, który będzie uwzględniany na każdym dokumencie handlowymi, niezależnie do ilości czy rodzaju towaru.
43
MAXLIMITWART
smallint
Wartość kredytu kupieckiego.
44
LimitPoTerminie
smalint
Jaki procent kredytu kupieckiego mogą stanowić płatności przeterminowane.
45
CechaOpis
varchar
40
Opis z kartoteki kontrahenta przepisywany na dokument.
46
Marza
smallint
Ustalona, proponowana marża.
47
GrupaSciezka
varchar
1999
Ścieżka do grupy, w której ma znajdować się kartoteka kontrahenta.
48
Opis
varchar
Notatka związana z danym Klientem, umieszczana na zakładce Uwagi.
49
FormaPl
tinyint
2
Forma płatności związana ze sprzedażą. Pole może przyjąć następujące wartości: 10 – gotówka, 20 – przelew, 30 – kredyt, 40 – czek, 50 – karta, 60 – inne.
50
TERMINPLSPR
integer
Termin płatności dla sprzedaży w dniach.
51
FORMAPLZAK
integer
2
Forma płatności związana z zakupami. Pole może przyjąć następujące wartości: 10 – gotówka, 20 – przelew, 30 – kredyt, 40 – czek, 50 – karta, 60 – inne.
52
TERMINPLZAK
smallint
Termin płatności dla zakupów w dniach.
53
LimitTerminowy
bool
1
Rodzaj limitu związanego z kredytem kupieckim (0-nieograniczony 1-terminowy 2-bezterminowy)
54
Rejon
integer
Nazwa rejonu, do którego przynależeć ma kontrahent. Rejon jest jeszcze jednym z kryteriów podziałowych kartotek kontrahentów.
55
PlatnikVat
tinyint
1
Czy kontrahent jest płatnikiem VAT: 0 – nie jest, 1 – jest płatnikiem VAT.
56
Status
tinyint
1
Status kontrahenta: 1 – Podmiot gospodarczy, 2 – Odbiorca finalny
57
JednostkaPowiazana
tinyint
Parametr wskazujący czy kontrahent jest niepowiązany (wartość 0) czy powiązany (wartość 1) z innym podmiotem. Np. kontrahent ABC S.A. jest powiązany (poprzez udział) z kontrahentem XYZ. Parametr głównie wykorzystywany przy konstruowaniu filtrów.
58
Cena
smallint
Numer rodzaju ceny sprzedaży domyślny dla dokumentów. Dla 0 – cena domyślna.
59
RozliczeniaDewizowe
tinyint
Czy dla kontrahenta stosowane rozliczenie dewizowe: 0 – nie, 1 – tak.
60
Rodzaj
integer
Rodzaj kontrahenta np. Inny, Partner, domyślnie Kontrahent
61
MAXDNIPOTERMINIE
integer
Dozwolone przeterminowanie
62
DATAWYGASNIECIA
integer
Data zakończenia obowiązywania limitu kredytowego
Kontrahenci Adresy
Lp.
KontrahenciAdresy.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Akronim
varchar
20
Akronim kontrahenta, z którym ma być powiązany dany adres.
Tak
3
AkronimAdres
varchar
20
Skrócona nazwa kontrahenta
4
Wysylkowy
bool
Czy dany adres jest adresem wysyłkowym: 0 – nie, 1 – tak.
5
Nazwa1
varchar
50
Pierwsza część nazwy kontrahenta.
6
Nazwa2
varchar
50
Druga część nazwy kontrahenta.
7
Nazwa3
varchar
50
Trzecia część nazwy kontrahenta.
8
NIPPrefiks
varchar
13
Prefiks numeru NIP, np. PL, DE.
9
NIPE
varchar
13
Numer NIP kontrahent, bez kresek.
10
REGON
varchar
20
Numer Regon.
11
PESEL
varchar
11
Numer PESEL.
12
BANK
varchar
Kod banku, w którym kontrahenta ma rachunek. W celu uzupełnienia tego pole wymagana jest wcześniejsza migracja banków do systemu. Na dzień ………. lista banków została zaczytana do bazy produkcyjnej.
13
NRRACHUNKU
integer
Numer rachunku bankowego
14
KodP
varchar
10
Kod pocztowy.
15
Miasto
varchar
30
Miasto.
16
Ulica
varchar
30
Ulica.
17
Adres
varchar
30
Dodatkowe pole adresu.
18
Kraj
varchar
2
Kod kraju, np. PL.
19
Wojewodztwo
varchar
30
Nazwa województwa.
20
Powiat
varchar
30
Nazwa powiatu.
21
Gmina
varchar
30
Nazwa gminy.
22
Telefon1
varchar
30
Numer telefonu do kontrahenta.
23
Telefon2
varchar
30
Numer dodatkowego telefonu do kontrahenta.
24
FAX
varchar
30
Numer faksu do kontrahenta.
25
Modem
varchar
30
Dodatkowe pole na numer kontaktowy do kontrahenta.
26
TELEX
varchar
30
Obecnie pole na kartotece kontrahenta posiada etykietę GSM, więc możemy tutaj wpisać numer telefonu komórkowego.
27
Email
varchar
255
Adres e-mail kontrahenta związany z konkretnym adresem.
28
KontoDostawcy
varchar
30
Konto dostawcy z planu kont.
29
KontoOdbiorcy
varchar
30
Konto odbiorcy z planu kont.
Kontrahenci Osoby
Lp.
KontrahenciOsoby.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Akronim
varchar
40
Akronim kontrahenta, z którym ma być związana osoba.
Tak
3
Imię_i_nazwisko
varchar
40
Imię i nazwisko osoby.
Tak
4
Tytuł
varchar
40
Tytuł osoby
5
Stanowsiko
varchar
40
Stanowisko (wartość pobierana ze słownika definiowalnego w Comarch CDN XL)
6
Upowazniona
smallint
1
Czy osoba jest upoważniona do odbioru faktur VAT: 1 – tak, 0 – nie.
7
UpowaznionaZam
tinyint
1
Czy osoba jest upoważniona do składania zamówień: 1 – tak, 0 – nie.
8
UpowaznionaDoKon
tinyint
1
Czy osoba jest upoważniona do kontaktów: 1 – tak, 0 – nie.
9
Telefon1
varchar
30
Telefon kontaktowy.
10
Telefon2
varchar
30
Telefon kontaktowy.
11
Fax
varchar
30
Numer faksu.
12
Email
varchar
255
Adres e-mail.
13
Notatki
varchar
1024
Pole na notatki.
14
Rola
integer
Nazwa roli. Rola definiowana jest w konfiguracji systemu Comarch CDN XL i określa zakres dostępu do Pulpitu Kontrahenta, Zadań pracowników, Księgi Raportów (BI), Aplikacji intranetowych (m. in. RCP, nieobecności) oraz Intranetowego Obiegu dokumentów.
Dokumenty
Poniżej została przedstawiona charakterystyka arkuszy migracyjnych katalogu Dokumenty.
Dokumenty
Lp.
Dokumenty.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Typ_dokumenty
smallint
3
Typ dokumentu jaki ma być wystawiony (słownie - np. RW, PZ)
Tak
3
Numer_dokumentu
varchar
40
Numer dokumentu wystawionego przez kontrahenta, wg jego numeracji
4
Numer_DokHist
varchar
40
Numer oryginalnego dokumentu wystawionego przez kontrahenta, wg jego numeracji
5
Seria
varchar
5
Seria dokumentu
6
Numer_pozycji
integer
Numer pozycji dokumentu
Tak
7
Typ_korekty
tinyint
1
Typ korekty (1 - ilościowa, 2 - wartościowa, 3 – VAT, 5 – ilościowa na plus)
8
Kod_magazynuZrd
string
11
Kod magazynu źródłowego
9
Kod_magazynuDoc
string
11
Kod magazynu docelowego
10
Data_dokumentu
integer
Data dokumentu
11
Akronim
varchar
20
Akronim kontrahenta, dla którego ma być dokument
Tak
12
Forma_platnosci
varchar
7
Forma płatności (Gotówka, Przelew, Kredyt, Czek, Karta, Inne)
13
Termin_platnosci
integer
10
Termin płatności
14
Kod_towaru
varchar
40
Kod towaru
Tak
15
Ilosc
integer
13
Ilość towaru (części ułamkowe po przecinku)
Tak
16
Wartosc
integer
14
Wartość towaru (cena*ilość)
17
Grupa_VAT
Grupa podatku VAT (np. A, B)
18
Stawka_VAT
varchar
2
Stawka podatku VAT (np. 3, 6)
19
Status_VAT
Status podatku VAT: 0 – zwolniony, 1 – podatek, 2 - nie podlega
20
Opis
varchar
3999
Opis elementu transakcji
21
Rejestr
varchar
5
Do jakiego rejestru VAT ma trafić dokument
22
DataSpr
integer
10
W zależności od typu dokumentu data sprzedaży lub data zakupu
23
DataVat
integer
10
Data zapisu w rejestrze
24
DataMag
integer
10
Data przyjęcia/wydania
25
JM
varchar
8
Pomocnicza jednostka miary
26
Avista
bool
1
Czy dokument typu avista? Tak / Nie (domyślnie)
27
CechaDostawy
varchar
255
Wartość cechy towaru z dostawy
28
JMZ
varchar
8
Jednostka pomocnicza
29
MPP
tinyint
1
Mechanizm podzielonej płatności 0 – nie, 1 – tak.
Dokumenty importowe
Lp.
DokImp.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Typ_dokumentu
varchar
40
Typ dokumentu jaki ma być wystawiony 16 lub 3344 - FAI
Tak
3
Numer_dokumentu
varchar
40
Numer dokumentu
4
Numer_DokHist
varchar
40
Numer oryginalnego dokumentu wystawionego przez kontrahenta, wg jego numeracji
5
Numer_pozycji
integer
Numer pozycji dokumentu
6
Typ_korekty
tinyint
1
Typ korekty (1 - ilościowa, 2 - wartościowa, 3 – VAT, 5 – ilościowa na plus)
7
Numer_dokumentu_kor
tinyint
1
Numer dokumentu Korekty
8
Numer_pozycji_kor
integer
Numer pozycji na korekcie
9
Data_dokumentu
data
10
Data dokumentu
10
Akronim
varchar
20
Akronim kontrahenta, dla którego ma być wystawiony
11
Forma_platnosci
varchar
7
Forma płatności (Gotówka, Przelew, Kredyt, Czek, Karta, Inne)
12
Termin_platnosci
integer
10
Termin płatności
13
Uwagi
Uwagi na dokumencie
14
Kod_towaru
varchar
40
Kod towaru
15
Ilosc
integer
13
Ilość towaru (części ułamkowe po przecinku)
16
Wartosc
integer
14
Wartość towaru (cena*ilość)
17
Stawka_VAT
varchar
2
Stawka VAT
18
Typ_obrotu
19
Waluta
varchar
3
Waluta w jakiej jest wystawiany dokument
20
JM
varchar
8
Pomocnicza jednostka miary
Dokumenty magazynowe
Lp.
DokMag.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Typ_dokumentu
varchar
3
Typ dokumenty słownie np. PM
Tak
3
Numer_DokHist
varchar
40
Opis dla dokumentu
4
Numer_pozycji
integer
Numer pozycji na dokumencie (jeśli pozycja ma nr 1 to najpierw jest tworzony nagłówek dokumentu)
Tak
5
Kod_magazynu
varchar
11
Kod magazynu, na którym operuje dokument
6
Data_dokumentu
integer
10
Data dokumentu
7
Akronim
varchar
20
Akronim kontrahenta
Tak
8
Kod_towaru
varchar
40
Kod towaru
Tak
9
Ilosc
integer
13
Ilość towaru
Tak
10
JM
varchar
8
Pomocnicza jednostka miary
Dokument SAD
Lp.
DokSAD.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Typ_dokumentu
varchar
3
Typ dokumentu jaki ma być wystawiony
17 lub 3376 – SAD
18 lub 3377 – SSC
23 lub 3378 – FWZ
24 lub 3379 – FWS
3
Numer_dokumentu
varchar
40
Numer dokumentu
4
Numer_DokHist
varchar
40
Numer dokumentu historycznego
5
TypPodmiotu
integer
Typ podmiotu (32-kontrahent, 4304-urząd)
6
KursL
integer
Licznik kursu waluty pomnożony przez 100. Jeśli KursM lub KursL jest = 0, wówczas kurs odczytywany jest z tabeli kursów, z kolumny kursowej nr KursN. Jeśli i KursN jest = 0, wówczas odczytywany jest domyślny kurs z konfiguracji. Jeśli zarówno KursL jak i KursM są <> 0, kurs jest wyliczany jako KursL/KursM
7
KursM
integer
Mianownik kursu waluty
8
Numer_pozycji
integer
Numer pozycji na dokumencie
9
Typ_korekty
tinyint
1
Typ korekty 1 - ilościowa, 2 - wartościowa
10
DataWplywuWystawienia
data
10
Data wpływu/wystawienia
11
DataPrzyjeciaVat
data
10
Data przyjęcia/vat
12
DataZgloszeniaZakupu
data
10
Data zgłoszenia/zakupu
13
Akronim
varchar
20
Akronim kontrahenta
14
Forma_platnosci
varchar
7
Forma płatności (Gotówka, Przelew, Kredyt, Czek, Karta, Inne)
15
Termin_platnosci
integer
Termin płatności
16
Uwagi
Uwagi na dokumencie
17
TowarKod
varchar
40
Kod towaru
18
Ilosc
integer
13
Ilość towaru (części ułamkowe po przecinku)
19
Wartosc
integer
14
Wartość towaru (cena*ilość)
20
Stawka_VAT
varchar
2
Stawka VAT
21
Typ_obrotu
22
Waluta
varchar
3
Waluta w jakiej jest wystawiany dokument
23
Kwota
varchar
14
Nazwa kwoty (musi być w definicjach kwot)
24
Nazwa
varchar
80
Wartość kwot
25
Rodzaj
integer
Numer (rodzaj) dodatkowej kwoty. Kwoty dodatkowe mają rodzaje większe od 8. Uwaga, jeśli chcemy dodać kilka kwot do danego elementu to dla każdej kwoty musimy określić kolejny rodzaj, dla każdego następnego elementu musimy operować wyrzuconymi numerami rodzajów dodawanych kwot przy pierwszym elemencie
26
Rejestr
varchar
5
Rejestr VAT
27
JM
varchar
8
Pomocnicza jednostka miary
Dokumenty Umów
Lp.
DokUmw.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
2
Umowa_Akronim
varchar
20
Akronim kontrahenta lub kod banku
3
Umowa_Typ
varchar
512
Ścieżka typu umowy, kody umowy oddzielone "\" pomijając gałąź "Wszystkie"
4
Umowa_Rodzaj
varchar
128
Nazwa rodzaju umowy
5
Aneksowana_Id
integer
Numer identyfikacyjny umowy, która chcemy zaaneksować, jak nie znajdzie po ID to szuka po numeratorze
6
Aneksowana_Numer
integer
Numer dokumentu umowy do którego wystawić aneks
7
Aneksowana_Miesiac
tinyint
Miesiąc dokumentu umowy do którego wystawić aneks, gdy numeracja roczna to 0
8
Aneksowana_Rok
smallint
Rok dokumentu umowy do którego wystawić aneks
9
Aneksowana_Seria
varchar
5
Seria dokumentu umowy do którego wystawić aneks
10
Aneksowana_NettoTyp
tinyint
Typ w jakim zostanie uwzględniona kwota z kolumny Netto
0 - różnicowa
1 - na określoną
11
Numer_obcy
integer
Numer dokumentu z systemu zewnętrznego
12
Data_zawarcia
integer
Data zawarcia dokumentu umowy
13
Data_rozpoczęcia
integer
Data rozpoczęcia obowiązywania umowy
14
Data_zakończenia
integer
Data zakończenia obowiązywania umowy
15
Waluta
varchar
3
Waluta nagłówka umowy
16
Netto
decimal
15
Wartość netto umowy
17
StawkaVAT
varchar
2
Stawka vat np. 'A 23.00' kropka i miejsca dziesiętne wymagane
18
SeriaDok
varchar
5
Seria dokumentu dla numeratora
19
NumerDok
varchar
40
Numer dokumentu dla numeratora
20
Opis
varchar
1024
Opis nagłówka umowy
21
ProjektId
integer
Numer identyfikacyjny projektu, z którym umowa jest związana
Opis wybranego stanu pochodzący ze słownika kategorii, brak to pierwszy z listy
24
AneksPowodId
integer
Numer identyfikacyjny opisu powodu dodania aneksu ze słowika
Atrybuty
Poniżej została przedstawiona charakterystyka arkuszy migracyjnych katalogu Atrybuty.
Klasa Atrybutu
Lp.
AtrybutyKlasa.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
Lp
Liczba porządkowa
Tak
2
Nazwa
varchar
40
Nazwa klasy atrybutu
Tak
3
Typ
smallint
Typ atrybutu: 1 – flaga, 2 – tekst, 3 – liczba, 4 – lista, 5 – SQL, 10 + obiekty
Tak
4
GIDTyp
smallint
GIDTyp obiektu, do którego ma być dodana klasa atrybutu
Tak
5
ELEMENT
smallint
Typ elementu. Rozróżnienie obiektu, gdy ten sam GIDTyp: 0 – nagłówek, 1 – pozycja, 2 - składnik
6
Wartość
Wartość klasy atrybutu, jeśli klasa ma typ 4 - lista
7
Format
Format klasy atrybutu: Tekst; Data; 1234; 1234,56; 1234,5678
Tak
Wartość Atrybutu
Lp.
AtrybutyWartości.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
Lp
Liczba porządkowa
Tak
2
Typ
smallint
Typ obiektu: 16 – Towary, 32 – kontrahenci, 368 – środki trwałe
Tak
3
Akronim
varchar
20
Akronim obiektu: kod dla towaru, akronim kontrahenta, akronim środka trwałego
Tak
4
Nazwa_Klasy_Atr
varchar
40
W celu migracji wartości atrybutów należy zmienić nazwę kolumny na identyczną z nazwą klasy atrybutów, której wartości mają zostać dodane do wprowadzonego Akronimu.
W celu migracji jednocześnie wartości kilku klas atrybutów do podanego Akronimu należy dodać kolejne kolumny o nazwach identycznych z klasami atrybutów na które mają być zmigrowane wartości do podanego Akronimu.
Tak
Technologie
Poniżej została przedstawiona charakterystyka arkuszy migracyjnych katalogu Technologie.
Produkcja Funkcje
Arkusz służy do migracji gniazd roboczych.
Lp.
ProdFunkcje.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
Lp
integer
Liczba porządkowa
Tak
2
Kod
varchar
40
Kod gniazda
Tak
3
Nazwa
varchar
100
Nazwa gniazda
4
Oddzial
varchar
40
Nazwa oddziału
5
Opis
varchar
512
Opis gniazda
6
Planowana
tinyint
1
Planowanie: 0 – nie, 1 – szczegółowo, 2 – zgrubnie, 3 - zawsze
7
Typ
tinyint
1
Pole przyjmuje wartość 1 – gniazdo robocze
8
PlanujStrategicznie
tinyint
1
Uwzględnianie gniazda roboczego w planowaniu strategicznym. 0 – gniazdo nie będzie uwzględniane, 1 – gniazdo będzie uwzględniane przy planowaniu strategicznym.
9
ZdolnoscWOkresie
decimal
Zdolność produkcyjna gniazda roboczego
10
ZdolnoscWOkresieJedn
tinyint
1
Jednostka zdolności produkcyjnej: 0 – minuty, 1 – godziny, 2 – dni.
11
DopuszczalneObciazenie
smallint
Dopuszczalne procentowe obciążenie gniazda.
12
Zmienna
tinyint
1
Określenie czy zasoby mogą być zmieniane dla różnych terminów: 1 – tak, 0 – nie (domyślnie)
13
CzyZrownoleglac
tinyint
1
Zwiększanie liczby zasobów: 1 – tak, 0 – nie
14
KontynuacjaPracy
tinyint
1
Wybór kontynuacji pracy zasobu: 1- tak, 0 – nie.
Funkcje produkcyjne w czynnościach technologii
Arkusz służy do przypisania gniazda do technologii
Lp.
ProdFunkcjeCzynnosciTechnologie.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
Lp
integer
Liczba porządkowa
Tak
2
IdtechnilgiaCzynnosc
integer
PTC_ID czynności w technologii
Tak
3
IdFunkcji
integer
PFU_ID – id gniazda roboczego
4
KodFunkcji
varchar
40
Kod gniazda roboczego
5
LiczbaObiektow
smallint
Liczba zasobów
6
Wszystkie
smallint
Określenie czy gniazdo robocze ma być wymagane dla operacji podrzędnych: 1 – tak, 0 – nie.
7
Zmienna
tinyint
Określenie czy zasoby mogą być zmieniane dla różnych terminów: 1 – tak, 0 – nie
Obiekty w produkcji
Arkusz służy do migracji zasobów.
Lp.
ProdObiekty.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Kod
varchar
40
Kod obiektu (zasobu)
Tak
3
Nazwa
varchar
100
Nazwa obiektu
4
Oddzial
varchar
40
Kod oddziału
5
KodOjca
varchar
40
Kod obiektu nadrzędnego
6
Obiekt
varchar
100
Kod obiektu z CDN XL (towaru, kontrahenta …)
7
Kalendarz
varchar
40
Nazwa kalendarza
8
Konto
varchar
30
Konto księgowe
9
ZmianaStawka
decimal
Stawka za przezbrojenie gniazda
10
ZmianaCzas
integer
Czas potrzebny na zmianę
11
ZmianaCzasJedn
integer
1
Jednostka czasu zmiany (0 – sekunda, 1 – minuta, 2 – godzina, 3 – dzień, 4 – tydzień)
12
DopuszczaZasoby
integer
1
Czy dopuszczać zasoby: 1 – tak, 0 - nie
13
RejestrowacUzycie
integer
1
Czy rejestrować użycie: 1 – tak, 0 - nie
14
StawkaStala
varchar
20
Stawka stała
15
StawkaCzas
varchar
20
Stawka za czas
16
StawkaCzasM
varchar
15
Mianownik stawki za czas
17
StawkaCzasMJedn
tinyint
Jednostka czasu mianownika
Wartości: 0 - sekundy 1 - minuty 2 - godziny 3 - dni 4 – tygodnie
18
StawkaIlosc
decimal
Stawka za ilość
19
StawkaIloscM
decimal
Mianownik stawki za ilość
20
ObiTyp
smallint
Typ obiektu: 16 – materiał, 32 – kontrahent, 368 – środek trwały, -368 – grupa środków trwałych, 944 – pracownik, -4272 – centrum struktury firmy, 4701 – urządzenie serwisowane.
21
ObiNumer
integer
Numer obiektu
Obiekty w funkcjach
Arkusz służy przypisaniu gniazda roboczego do zasobu.
Typ zasobu (0 - produkt, 1 - surowiec, 2 - materiał pomocniczy)
55
MgazynZasob
varchar
10
Kod magazynu
56
TwrKodZasob
varchar
40
Kod towaru
57
CenaZasob
varchar
20
Cena towaru
58
IloscZasob
varchar
20
Ilość zasobu
59
KosztZasob
integer
1
Sposób wyliczenia kosztu (0 - rzeczywisty, 1 - ewidencyjny, 2 - ważony, 3 - cena zakupu)
60
JednostkaZasob
varchar
8
Jednostka
61
PlanowanyCalosciowoZasob
integer
Uwzględniaj przy planowaniu całościowym
62
ZrodloZasob
integer
1
Źródło zasobu z technologii (0 - z tego samego procesu, 1 - z tego samego zlecenia, 2 - z tego samego oddziału, 3 - dowolne)
63
DopasowanieIlosciZasob
varchar
20
Dopasowanie ilości
64
KlasaIloscAtrZasob
varchar
40
Kod klasy atrybutu z ilością
65
IloscAtrZasob
integer
Klasa atrybutu z ilością
66
IloscMinZasob
varchar
20
Ilość minimalna
67
KlasaIloscMinAtrZasob
varchar
40
Kod klasy atrybutu z ilością minimalną
68
IloscMinAtrZasob
integer
Klasa atrybutu z ilością minimalną
69
IloscMaxZasob
varchar
20
Ilość maksymalna
70
KlasaIloscMaxAtrZasob
varchar
40
Kod klasy atrybutu z ilością maksymalną
71
IloscMaxAtrZasob
integer
Klasa atrybutu z ilością maksymalną
72
IloscFormatZasob
integer
Ilość miejsc po przecinku
73
WagaKosztuZasob
varchar
20
Waga kosztu
74
WagaIloscZasob
integer
Czy waga wg ilości zasobu
75
JednostkaPomZasob
varchar
8
Jednostka pomocnicza
76
IloscPomZasob
varchar
20
Ilość pomocnicza
77
IloscPomMinZasob
varchar
20
Ilość pomocnicza min
78
IloscPomMaxZasob
varchar
20
Ilość pomocnicza max
79
PropIloscZasob
integer
Czy proponować ilość
80
PropIloscPomZasob
integer
Czy proponować ilość pomocniczą
81
EdycjaCechyZasob
integr
Edycja cechy
82
KlasaCechyZasob
varchar
20
Klasa Cechy
83
CechaZasob
varchar
20
Wartość cechy
84
Etap
tinyint
Czy operacja jest etapem
Bilans Otwarcia
Poniżej została przedstawiona charakterystyka arkuszy migracyjnych katalogu Kontrahenci.
BO Stany
Lp.
BOStany.xls
Opis
Wymagane
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
Wymagane
Wymagane
1
LP
integer
Liczba porządkowa wpisu w arkuszu
Tak
2
Kod_magazynu
varchar
10
Kod magazynu, na którym ustalamy stan początkowy. Kod musi być tożsamy z kodami magazynów zdefiniowanych w systemie Comarch CDN XL.
3
Data_dokumentu
data
10
Data, na która ustalamy stan początkowy magazynu. Z tą data zostanie wygenerowany dokument PW, który ustali stan ilościowy i wartościowy towaru na danym magazynie.
4
Akronim
varchar
20
Akronim kontrahenta, na którego ma być wystawiony dokument. Pole może pozostać niewypełnione.
5
Kod_towaru
varchar
20
Kod towaru z bazy systemu Comarch CDN XL.
Tak
6
Ilosc
integer
Ilość towaru w jednostce podstawowej jaka ma znaleźć się na magazynie.
Tak
7
Wartosc
integer
Wartość wprowadzanego na magazyn zasobu towaru.
8
Data_waznosci
data
10
Jeżeli jest potrzeba, możemy dany zasób oznaczyć datą ważności w formacie RRRR-MM-DD.
9
Cecha_klasa
Jeżeli istnieje potrzeba, możemy dany zasób oznaczyć cechą, która będzie identyfikowała zasób towaru na magazynie i będzie możliwe filtrowanie zasobów towaru wg wprowadzonej cechy. W tym polu określamy jaką nazwę ma mieć dana klasa cechy.
10
Cecha_wartosc
Wartość zdefiniowanej powyżej klasy cechy.
11
LP_Atrybut
integer
Liczba porządkowa wpisu w arkuszu dotycząca atrybutu związanego z dokumentem PW.
12
Typ
smallint
2
Określenie w którym miejscu ma zostać dodany atrybut: 0 - nagłówek dokumentu, 1 - pozycja dokumentu.
13
Atrybut
varchar
Nazwa klasy atrybutu.
14
Wartosc_atr
Wartość zdefiniowanej powyżej klasy atrybutu.
BO Dostawy
Lp.
BODostawy.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Tak
2
Typ_dokumentu
smallint
Tak
3
Akronim
varchar
20
Tak
4
Kod_magazynu
varchar
10
5
Numer_dokumentu
6
Data_dokumentu
data
10
7
Numer_DokHist
varchar
40
8
Opis
varchar
20
9
Numer_pozycji
integer
Tak
10
Kod_towaru
varchar
40
Tak
11
Ilosc
integer
Tak
12
Wartosc
integer
Zgody
Poniżej została przedstawiona charakterystyka arkuszy migracyjnych katalogu Zgody.
Kontrahenci Zgody
Lp.
KontrahenciZgody.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu.
Tak
2
Akronim
varchar
20
Akronim kontrahenta, którego dotyczy zgoda.
Tak
3
RodzajZgody
varchar
255
Rodzaj zgody wg słownika kategorii.
Tak
4
RodzajZgodyWersja
integer
Wersja rodzaju zgody wg słownika kategorii.
Tak
5
DataUdzielenia
Data
10
Data udzielenia zgody, format: RRRR MM DD
Tak
6
ZrodloUdzielenia
varchar
255
Źródło udzielenia zgody, wg słownika kategorii.
7
IP
varchar
100
IP komputera, z którego została udzielona zgoda.
8
URL
varchar
255
URL, link do treści zgody lub plik poświadczający o wyrażeniu zgody.
9
FormaKontaktu
integer
Forma kontaktu określona dla danej zgody: E-mail, Telefon, Sms, Przesyłka, Inne.
10
Szczegoly
varchar
1000
Dodatkowe informacje.
11
DataWycofania
Data
10
Data wycofania zgody, format: RRRR MM DD
12
PowodWycofania
varchar
255
Powód wycofania zgody wg słownika kategorii.
13
ZrodloWycofania
varchar
255
Źródło wycofania zgody, wg słownika kategorii.
Osoby Zgody
Lp.
OsobyZgody.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu.
Tak
2
Akronim
varchar
20
Akronim kontrahenta, z którym ma być związana osoba.
Tak
3
ImieNazwisko
varchar
40
Imię i nazwisko osoby, której zgoda dotyczy.
Tak
4
RodzajZgody
varchar
255
Rodzaj zgody wg słownika kategorii.
Tak
5
RodzajZgodyWersja
integer
Wersja rodzaju zgody wg słownika kategorii.
Tak
6
DataUdzielenia
Data
10
Data udzielenia zgody, format: RRRR MM DD
Tak
7
ZrodloUdzielenia
varchar
255
Źródło udzielenia zgody, wg słownika kategorii.
8
IP
varchar
100
IP komputera, z którego została udzielona zgoda.
9
URL
varchar
255
URL, link do treści zgody lub plik poświadczający o wyrażeniu zgody.
10
FormaKontaktu
integer
Forma kontaktu określona dla danej zgody: E-mail, Telefon, Sms, Przesyłka, Inne.
11
Szczegoly
varchar
1000
Dodatkowe informacje.
12
DataWycofania
Data
10
Data wycofania zgody, format: RRRR MM DD
13
PowodWycofania
varchar
255
Powód wycofania zgody wg słownika kategorii.
14
ZrodloWycofania
varchar
255
Źródło wycofania zgody, wg słownika kategorii.
Pracownicy Zgody
Lp.
PracownicyZgody.xls
Opis
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Liczba porządkowa wpisu w arkuszu.
Tak
2
Akronim
varchar
20
Akronim pracownika, którego dotyczy zgoda.
Tak
3
RodzajZgody
varchar
255
Rodzaj zgody wg słownika kategorii.
Tak
4
RodzajZgodyWersja
integer
Wersja rodzaju zgody wg słownika kategorii.
Tak
5
DataUdzielenia
Data
10
Data udzielenia zgody, format: RRRR MM DD
Tak
6
ZrodloUdzielenia
varchar
255
Źródło udzielenia zgody, wg słownika kategorii.
7
IP
varchar
100
IP komputera, z którego została udzielona zgoda.
8
URL
varchar
255
URL, link do treści zgody lub plik poświadczający o wyrażeniu zgody.
9
FormaKontaktu
integer
Forma kontaktu określona dla danej zgody: E-mail, Telefon, Sms, Przesyłka, Inne.
10
Szczegoly
varchar
1000
Dodatkowe informacje.
11
DataWycofania
Data
10
Data wycofania zgody, format: RRRR MM DD
12
PowodWycofania
varchar
255
Powód wycofania zgody wg słownika kategorii.
13
ZrodloWycofania
varchar
255
Źródło wycofania zgody, wg słownika kategorii.
Administracja danych
Poniżej została przedstawiona charakterystyka arkuszy migracyjnych katalogu Administracja danych.
Czynności PDO
Lp.
CzynnosciPDO.xls
Opis
Wymagane
Wymagane
Nazwa kolumny
Typ danych
Ilość znaków
1
LP
integer
Tak
2
Numer
integer
3
Kategoria
varchar
255
Tak
4
Cel
varchar
4000
5
KategorieOsob
varchar
4000
6
KategorieDanych
varchar
4000
7
KategorieOdbiorcow
varchar
4000
8
terminyUsuniecia
varchar
4000
9
InfDodatkowe
varchar
4000
Migracja danych
Do migracji danych służy przycisk Migruj Dane. Poszczególne kanwy mogą zawierać dodatkowe informacje:
Kanwa do migracji dokumentów handlowych zawiera
checkbox służący do automatycznego stworzenia stanów magazynowych towarów pod migrowanie dokumenty handlowe rozchodowe (Twórz PW)
checkbox służący do automatycznego rozchodu stanów magazynowych towarów po imporcie dokumenty handlowe przychodowych (Twórz RW)
Kanwa do migracji planu kont zawiera:
pole do wpisania okresu obrachunkowego, w którym będą tworzone konta
Kanwa do migracji stanów magazynowych zawiera:
checkbox (Do bufora), po zaznaczeniu, którego dokumenty PW będą migrowane do bufora; podczas migrowania stanów magazynowych system dzieli dane po 500 wierszy i tworzy dokumenty PW zawierające 500 pozycji.
O postępie migracji informuje zielony pasek stanu i liczba wierszy wczytanych i błędów.
Po zakończeniu migracji pojawia się komunikat:
Informacja o zakończeniu migracji
Raport błędów
Jeśli liczba błędów będzie większa od zera należy sprawdzić arkusz Excel z danymi po zamknięciu programu Migrator. W skoroszycie Excela zostanie dodany nowy arkusz z błędami (Zakładka Błędy) zawierający kod i opis błędu z przyporządkowanym wierszem danych.
Jak skonfigurować system Comarch CDN 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.
Parametry komputera, zakładka 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 CDN 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 CDN 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 CDN XL (np. OPTICON). Dla innych rekord kolektora można definiować wg uznania (np. CipherLab). Istotnym jest jednak to, żeby zdefiniować rekord kolektora w Comarch CDN XL, tak jak zaprogramowane jest urządzenie.
Definicja rekordu kolektora
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 CDN 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 CDN XL. Należy jednak pamiętać, żeby parametry na urządzeniu były zgodne z ustawieniami w systemie.
Parametry portu COM, przez który będzie prowadzona transmisja danych
Parametry komputera dla kolektora CipherLab
Definicja rekordu kolektora CipherLab
Dla urządzeń CipherLab istnieje możliwość przeprogramowania rekordu kolektora przy pomocy aplikacji Forge Batch Application Generator udostępnianej przez producenta.
Aplikacja umożliwiająca przeprogramowanie rekordu kolektora CipherLab – rekord
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.
Aplikacja umożliwiająca przeprogramowanie rekordu kolektora CipherLab – ustalenie długości pola oraz jej zablokowanie
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 CDN 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.
Parametry portu COM, przez który będzie prowadzona transmisja danych – OPTICON PHL2700.
Parametry komputera dla kolektora OPTICON PHL2700
Definicja rekordu kolektora OPTICON PHL2700 w trybach Inwentura, Sprzedaż oraz Magazyn – współpraca z kolektorem możliwa tylko dla takiej definicji rekordu
Definicja rekordu kolektora OPTICON PHL2700 w trybie Numery seryjne (w tym trybie przesyłana ilość będzie zawsze równa 1) – współpraca z kolektorem możliwa tylko dla takiej definicji rekordu
Uwaga
Kolejność synchronizacji danych jest bardzo ważna – Najpierw wysyłamy dane z kolektora, dopiero później zaczynamy odczytywać w Comarch CDN XL.
PHL1300 firmy OPTICON
Parametry portu COM, przez który będzie prowadzona transmisja danych – OPTICON PHL1300.
Parametry komputera dla kolektora OPTICON PHL1300
Definicja rekordu kolektora OPTICON PHL1300
Uwaga
Kolejność synchronizacji danych jest bardzo ważna – najpierw wysyłamy z kolektora dopiero później zaczynamy odczytywać w Comarch CDN XL.
Ze względu na niedostępność kolektora nie był testowany na najnowszych wersjach systemu.
DOLPHIN
Parametry portu COM, przez który będzie prowadzona transmisja danych – DOLPHIN.
Parametry komputera dla kolektora DOLPHIN.
Definicja rekordu kolektora DOLPHIN.
Uwaga
Kolejność synchronizacji danych jest bardzo ważna – najpierw odczytujemy dane w Comarch CDN 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 CDN XL podczas odczytywania przesyłanych danych. Biblioteka ta jest dostarczana wraz z systemem Comarch CDN 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.
Parametry portu COM, przez który będzie prowadzona transmisja danych – Denso BHT
Parametry komputera dla kolektora Denso BHT
Definicja rekordu kolektora Denso BHT
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 CDN XL
W przypadku pracy z kolektorami danych w systemie Comarch CDN 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.
Wczytaj pozycje – usuwa istniejące pozycje i dodaje dane przesłane z kolektora
Dodaj nowe pozycje – dodaje pozycje 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.
Inwentaryzacja – dodawanie odczytów inwentaryzacyjnych 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 CDN 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 CDN 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 CDN 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 CDN 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.
Uwaga
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. ↑
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
Przyklad
DOSTAWCA na pieczątce firmy ma numer GLN 11111111111111, ODBIORCA GLN 2222222222222. DOSTAWCA widnieje w bazie ODBIORCY jako kontrahent z numerem GLN 111111111111 oraz GLN adresu wysyłkowego (zależny od adresu docelowego, może być zgodny z adresem kontrahenta lub nie). ODBIORCA widnieje na bazie DOSTAWCY jako kontrahent z numerem GLN 22222222222222 oraz GLN adresu wysyłkowego. Na obu bazach widnieją towary o tych samych numerach EAN.
wskazać folder, do którego będą przekazywane odpowiednie pliki xml: Parametry komputera/Wymiana danych (w zależności od sposobu wymiany dokumentów)
Parametry komputera wybór sposobu tworzenia się struktury folderó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.
Uwaga
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.
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
Uwaga
W przypadku gdy oba atrybuty, atrybut o nazwie „FeeValue” i atrybut o nazwie „KGO”, zostały dodane na pozycję dokumentu faktury sprzedaży, linia <FeeValue> zostanie wypełniona wartością atrybutu „FeeValue”.
Uwaga
W przypadku gdy oba atrybuty, atrybut o nazwie „FeeValue” i atrybut o nazwie „KGO”, zostały przypięte do obiektu element faktury zakupu, wówczas przy imporcie dokumentu faktury zakupu, na pozycję dokumentu zostanie dodana pierwsza odszukana klasa atrybutu.
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
Uwaga
W przypadku gdy symbol jednostki jest inny niż wyżej wymieniony lub z innych powodów nie udaje się go zinterpretować, w pliku przesyłany jest symbol PCE.
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
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
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
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
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.
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>
<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 docelowego 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
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Ś”
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)
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
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
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
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>
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.
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"
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>
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 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.
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
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 głównego dokumentu ZZ, a od wersji 6.0 będzie to numer GLN zdefiniowany na formatce adresu kontrahenta docelowego 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.
<Remarks>Uwagi<Remarks>
Opis/Uwagi
Linia wypełniana wartością zgodną z opisem wprowadzonym na elemencie zamówienia
Łą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 Tabela 12. 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
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.
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.
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.
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.
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.
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.
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
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:
Komunikat o niezgodności numerów dokumentów.
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.
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:
Rys.1 Parametr służący do weryfikacji obecności cen wysyłanych do e-Sklepu
W przypadku, gdy na którymś z towarów brakuje ceny aktualnej, powyższa weryfikacja zwróci komunikat:
Rys.2 Komunikat o braku ceny aktualnej na karcie towarowej wysyłanej do e-Sklepu
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.
Rys.3 Tabela cdn.PicoLog
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.
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.
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ę.
Problemy 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:
Rys.4 Eksport różnicowy cennika
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.
Przyklad
1. Wersją zainstalowaną jest wersja 2019.1 Następnie pobrano kompilację w wersji aktualnej i na niej wykreowano/bądź podniesiono bazę współpracującą z Comarch ERP e-Sklep. W takiej sytuacji usługa może nie zadziałać.
Przyklad
2. Jeżeli na jednym serwerze na bazie A, na oddziale o ID=1 zdefiniujemy usługę do synchronizacji z MOS, a na bazie B, na oddziale o ID=1 zdefiniujemy usługę do synchronizacji z e-Sklepem to usługa synchronizacji z e-Sklepem nie zadziała.
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.
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ę.
Lista dodatków
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.
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.
Przyklad
Przykładowy warunek callbacka na zalogowanego operatora:
if (Runtime.ConfigurationDictionary.NumerOperatora == 1)
{return false;}
Przyklad
Przykładowy warunek na stan towaru:
if (TwrKarty.Twr_Typ==1)
{return false;}
else
{return true;}
Uwaga
Warunek callbacka Małej Hydry jest sprawdzany tylko w momencie uruchamiania formatki.
Uwaga
Aby warunek oparty o bufor tabeli działał prawidłowo, należy wyłączyć na operatorze Otwieranie okien w trybie zaawansowanym. W przeciwnym wypadku operator będzie miał możliwość przechodzenia między obiektami (np. dokumentami) bez ponownego sprawdzania warunku callbacka.
Przyklad
Dodatkowo warunki można definiować za pomocą sqlQuery, nazwy pól, tabel oraz wielkość znaków powinny być takie same jak w bazie danych.
string sqlQuery = “select case when “+ZamNag.ZaN_Stan+” = 4 AND “+ZamNag._ZaN_OpeNumerZ+” = 1 then 1/0 else 0 end”;
if (Runtime.ConfigurationDictionary.ExecSql(sqlQuery, true) == 1)
return true;
else
return false;
Edycja subskrypcji procedury
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)
Edycja akcji na kontrolce3
Uwaga
Akcja Wymagaj może być użyta tylko dla wybranych kontrolek. Dotyczy przede wszystkim kontrolek, dla których istnieje stan „bez wartości” np. kontrolek tekstowych. Akcja nie może być natomiast wykorzystana np. dla kontrolki check, gdyż kontrolka zawsze przyjmuje wartość (0 lub 1).
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.
Uwaga
Od wersji systemu Comarch ERP XL 2020 Hydra używa wersji Microsoft .NET Framework 4.5.1
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
Uwaga
Lista możliwych kolorów została przedstawiona w pliku kolory.txt w załącznikach do biuletynu.
Przed przypisaniem wartości należy przekonwertować kody kolorów z notacji szesnastkowej do postaci dziesiętnej.
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”
Uwaga
W przypadku przypisywania ikony na podstawie pliku należy podać pełną ścieżkę do ikony w formacie: @”C:\WINDOWS\msnms.ico”.
W przypadku przypisywania standardowej ikony ERP XL należy podać nazwę ikony w formacie: „~EXPORT20.ICO”. Pełna lista istniejących ikon nie jest dostępna na zewnątrz.
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
Uwaga
Jeżeli w etykiecie dodamy znak & to pojawi się możliwość wywołania przycisku z klawiatury zgodnie z kolejną literą. Przykładowo przycisk o etykiecie &nazwa pozwoli na wywołanie kliknięcia poprzez alt+n.
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:
Ewentualnie może zajść potrzeba wkliknięcia się w daną listę za pomocą zdarzenia SelectControl:
Runtime.WindowController.SelectControl(i);
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
Przyklad
Przykładowe ustawienia dla pól typu data zostały przedstawione w pliku daty.txt w załącznikach. Data powinna być przekazana w formacie Clariona, czas w formacie Timestamp.
ValueRaw – określenie wartości domyślnej w polu (wymagane ustawienie UseRaw=”1”)
Generalnie właściwości CheckedRaw oraz UseRaw powinny przyjmować wartości 0 oraz 1, jednak odczyt wartości kontrolek poprzez Hydrę zwraca wartości ustawione z poziomu zbudowania okna dlatego mogą pojawić się inne wartości np. wartość 2 dla zaznaczonej kontrolki. W przypadku gdy dana kontrolka zwraca wartość inną niż 0 wówczas ma wartość TRUE. Przy ustawianiu wartości kontrolek z poziomu Dużej Hydry zalecamy używanie wartości 0 i 1.
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
Przyklad
Przykładowy kod na obsłużenie kontrolki o typie dropcombo:
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.
Przyklad
Runtime.WindowController.LockThread();
Runtime.WindowController.UnlockThread();
MessageBox.Show(“Tekst komunikatu”);
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.
Uwaga
Dla wersji SE systemu Comarch ERP XL zalecamy dokumentację Clariona w wersji 5.5, natomiast dla wersji z nowym interfejsem w wersji 8).
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.
polelist.Bounds = new Rectangle(20, 20, 260, 260);
polelist.FormatRaw = “160L*~Naglowek~@s40@#1#”;
string tekst = “”;
tekst = “wartosc1|32768|-1|-1|-1|”;
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.
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.
Uwaga
Od wersji systemu Comarch ERP XL 2020.0.0 zmieniony zostanie obiekt Hydra.ActiveRuntime.Repository.Connection z SQLConnection na interfejs IDbConnection
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.
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()
Uwaga
Powyższe funkcje zwracają aktualną datę ustawioną w programie.
Jeżeli data zostanie zmieniona w programie, to również zmieniona zostanie zwrócona przez funkcję.
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”];
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ę:
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)
Przyklad
Przykładowe podniesienie formatki może mieć postać:
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.
Uwaga
Załączony przykład ukrywa kolumnę na liście jednak może okazać się konieczne dodatkowe zabezpieczenie przed możliwością rozszerzenia kolumny przez operatora.
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.
Uwaga
Funkcjonalność 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.
Przyklad
public override void Exit()
{
base.Exit();
MessageBox.Show(“komunikat”);}
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).
AddSubscription(true, Kontrahent.Id, Events.Accepted, new TakeEventDelegate( OnOpenWindow2));
AddSubscription(false, Kontrahent2.Id, Events.Accepted, new TakeEventDelegate( OnOpenWindow2));
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.
Uwaga
W przypadku niektórych list należy uwzględnić sytuację, gdy przechodzenie następuje pomiędzy różnymi dokumentami – przykładowo dokumenty korekt mają inne IdProcedury niż oryginalne dokumenty.
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.
Przyklad
public bool OpenWindow(Procedures ProcId, int ControlId, Events Event)
{
AddSubscription(true, GetWindow().AllChildren[“?ListaZam”].Id, Events.XLPopup, new TakeEventDelegate(BeforePopup));
AddSubscription(false, GetWindow().AllChildren[“?ListaZam”].Id, Events.XLPopup, new TakeEventDelegate(AfterPopup));
return true;
}
public bool BeforePopup(Procedures ProcId, int ControlId, Events Event)
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 budując tworząc oddzielny dodatek wówczas należy skorzystać z metody Runtime.WindowController.GetControlName().
Przyklad
public bool OnOpenWindow(Procedures ProcID, int ControlID, Events Event)
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.
Godzina_Spin..Bounds = new Rectangle(20, 20, 50, 10)
Godzina_Spin.RangeLowRaw = “0000000”;
Godzina_Spin.RangeHighRaw = “8640000”;
Godzina_Spin.ValueRaw = “1”;
Godzina_Spin.Visible = true;
Godzina_Spin.StepRaw = “6000”;
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).
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.
Uwaga
Zdefiniowany komunikat nie daje możliwości określenia ważności (severity) wyzwolonego komunikatu. System Comarch ERP XL wyświetla komunikaty o ważności nie mniejszej niż 16.
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.
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.
Uwaga
Zapisujemy do kolejki historii tylko bieżący wykres startowy i eksploracje (każdą). Cofanie ani posuwanie się wprzód nie dopisuje do kolejki rekordów, a tylko przesuwa pointer wskazujący bieżącą pozycję. Eksploracja usuwa wszystkie rekordy z kolejki historii będące „po rekordzie” odpowiadającym eksplorowanemu wykresowi, dopisuje rekord docelowego podwykresu i ustawia na nim pointer. Powoduje to „zapominanie” części historii po wykonaniu eksploracji, ale jest to standardowe zachowanie
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).
Przyklad
Zapytanie SELECT BRa_Akronim, BRa_BraID, Bra_SaldoBO, Bra_Symbol FROM cdn.BnkRachunki spowoduje, że wartości akronimów zostaną wpisane do kolumny typu LONG a jako wartości punktów zostanie podstawione zero (konwersja Bra_Symbol do DECIMAL(20,4)).
Wszystkie kolumny zwracane przez SELECT muszą być nazwane. Jeśli więc w liście tej występują agregaty lub stałe – należy koniecznie użyć aliasów (np. SELECT PunktID=1, TrN_TrNID, TrN_NumerPelny, RazemNetto=SUM(TrE_WartoscNetto) FROM … ).
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.
Przyklad
Zmienne dynamiczne są podstawiane pod parametry dynamiczne tylko dla bieżącego wykresu startowego (nie dotyczą podwykresów – tam występuje dziedziczenie wartości parametrów o zgodnej 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ę:
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).
Uwaga
Przy rozwijaniu wstawki jej rozwinięcie pobierane jest z tej bazy (wykresów standardowych lub użytkownika),
z której pobrano definicję wykresu. W przypadku nie znalezienia wstawki o podanej nazwie, jeśli mamy do czynienia z wykresem użytkownika, wstawka jest następnie poszukiwana w bazie wykresów standardowych
.
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.
Uwaga
Warto zwrócić uwagę na fakt, że przed sekwencją kończącą IF@ (IFNOT@) musi występować, co najmniej jedna spacja, zatem deklaracja:
@IF(FAPA)
xxx
IF@
nie jest poprawna, gdyż bezpośrednio przed końcowym IF@ występuje enter zamiast spacji
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:
SymbolGr
Znaczenie
Wartości
D
PD
D(*)
PD(*)
HeaderName
Tytuł wykresu
1
1
XAxisName
Tytuł osi X
1
1
YAxisName
Tytuł osi Y
1
1
Type
Typ wykresu
1 – kolumnowy, 2 – liniowy, 4 – kołowy,…
1
1
1
1
Depth
Głębokość 3D
0 – wykres 2D, >0 – wykres 3D
0
1
100
1
LineWidth
Grubość linii
1-10 (dotyczy typu 2)
2
1
0
PointWidth
Grubość słupka
1-10 (dotyczy typu 1)
0
0
ShowDataLabels
Wyświetla wartości punktów
0 – nie pokazuje, 1 – pokazuje
1
1
1
1
Series
Definicje serii
Kol,…,Kol gdzie Kol,…,Kol – numery kolumn zapytania (4<=Kol<=11).
4
1
4
1
NoHeadOnCols
Wykaz kolumn, które mają nie mieć headera
Kol,…,Kol gdzie Kol,…,Kol – numery kolumn zapytania (1<=Kol<=11).
0
0
HideCols
Wykaz kolumn, które mają być ukryte (zerowej szerokości)
Kol,…,Kol gdzie Kol,…,Kol – numery kolumn zapytania (1<=Kol<=11).
0
0
AutoRefresh
Automatyczne odświeżanie
0 – nie, 1 – tak
0
1
1
1
SkipFirstExec
Nie wykonywanie akcji (zapytania, procedury) za pierwszym razem, dopiero po odświeżeniu. Dotyczy tylko wykresu startowego.
0 – wykonuj akcję także przy pierwszym wykonaniu wykresu, 1 – nie wykonuj akcji przy pierwszym wykonaniu wykresu (np. nie chcemy wykonywać zapytania z domyślnymi wartościami parametrów)
0
1
1
1
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.
Uwaga
Parametry NoHeadOnCols, HideCols, mimo że formalnie przynależą do parametrów graficznych – dotyczą tabeli z wynikami, a nie wykresu. Stąd nie należy się dziwić, że wykres typu: tylko tabela, ma aktywne pole z parametrami graficznymi.
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}
Uwaga
Nazwy stałych graficznych są CASE SENSITIVE.
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:
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.
Formularz definicji wykresu, zakładka Ogólne.
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.
.
Uwaga
W trybie testowym nie są oczywiście przesyłane do wykresu żadne zmienne dynamiczne, które normalnie aplikacja przesyła dla potrzeb inicjalizacji niektórych parametrów dynamicznych wykresu – wszystkie te parametry zostają więc zainicjalizowane swoimi wartościami domyślnymi, określonymi w deklaracji lub definicji (inaczej jest w przypadku normalnego wykonania wykresu).
[Zabezpiecz wykres] – służy do założenia hasła blokującego zmiany w definicji wykresu dla użytkowników nieznających hasła. Przy wejściu na formularz tak zabezpieczonego wykresu nie mamy możliwości dokonania jakichkolwiek zmian chyba, że wciśniemy przycisk z kluczykiem i wpiszemy poprawne hasło
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.
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 wykresów (standardowych).
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ę).
Lista wstawek tekstowych (do wykresów standardowych).
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).
Formularz wstawki tekstowej (standardowej).
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.
Uwaga
Od wersji XL2019.0 zalecamy prezentację daty w ERP XL jako tekst, jest to związane z różnicami jakie wynikają z użycia nowszych wersji SQL serwer oraz sterowników ODBC ( SQL Native Client). Datę można przekazać jako tekst według przykładu:
select
lp = 1,
cast(DATEADD(DAY, ZN.ZaN_DataWystawienia ,CONVERT(DATE,’1800-12-28′,120)) as varchar) AS [Data wystawienia],
Typ potwierdzenia:
1 - kontrahenci, 2 - dokumenty MM, 3 - dokumenty handlowe, 4- raporty kasowo-bankowe, 5 - stany zamówień, 6- prawo do anulowania dokumentu, 7 - prawo do spinania
Sekcja <SPIDI> jest wypełniana w przypadku spinaczy paragonów RA oraz arkuszy inwentaryzacyjnych. Są w niej przesyłane odpowiednio identyfikatory spinanych paragonów albo dokumentów inwentaryzacyjnych PW, RW.
<SPIDI/>
ERP XL
Optima
<SPID/>
TraNag
TraNag
ID
ID spinanego dokumentu
TrN_OddDokId
TrN_TrNId
GT
GIDTyp spinanego dokumentu
TrN_GIDTyp
TrN_GIDTyp
GN
GIDNumer spinanego dokumentu
TrN_GIDNumer
TrN_GIDNumer
NR
Numer pełny spinanego dokumentu
CDN.NumerDokumentuTRN( )
TrN_NumerPelny
Elementy dokumentów (EDKI)
W sekcji <EDKI> przesyłane są elementy dokumentów handlowych, zamówień.
<EDKI/>
ERP XL
Optima
<EDK/>
TraElem, TwrKarty
TraElem, Towary
LP
Liczba porządkowa pozycji dokumentu
TrE_Pozycja
TrE_Lp
TGN
Identyfikator towaru (pozycji dokumentu)
TrE_TwrNumer
Twr_GIDNumer
TrE_TwrId =Twr_TwrId
TN
Nazwa towaru
TrE_TwrNazwa
TrE_TwrNazwa
PKW
Numer SWW (PKWIU) towaru
Twr_Sww
TrE_TwrNumer=Twr_GIDNumer
TrE_TwrSWW
VAT
Stawka podatku (%)
TrE_StawkaPod
TrE_Stawka
FL
Flaga podatku: 0 - zwolniony;
1-opodatkowany; 2 - nie podlega;
TrE_FlagaVat
TrE_Flaga
1- zwolniony; 2,3 -opodatkowany; 4 - nie podlega
IL
Ilość towaru w jednostkach podstawowych
TrE_Ilosc
TrE_Ilosc
JM
Jednostka miary towaru
TrE_JmZ
TrE_Jm
C0
Cena początkowa (w walucie)
TrE_Poczatkowa
TrE_Cena0
RA
Procent udzielonego rabatu
TrE_Rabat
TrE_Rabat
CW
Cena transakcyjna (po rabacie) w walucie
TrE_Cena
TrE_CenaW
WA
Symbol waluty
TrE_Waluta
TrE_Waluta
KL
Kurs waluty - licznik
TrE_KursL
TrE_KursL
KM
Kurs waluty - mianownik
TrE_KursM
TrE_KursM
CT
Cena transakcyjna w walucie systemowej
TrE_Cena
TrE_CenaT
WN
Wartość netto pozycji
TrE_KsiegowaNetto
TrE_WartoscNetto
WB
Wartość brutto pozycji
TrE_KsiegowaBrutto
TrE_WartoscBrutto
PR
Promocje
TrE_Promocje
TrE_Promocje
RAP
Rabat promocyjny
TrE_RabatPromocyjny
TrE_RabatPromocyjny
RAK
Korekta rabatu
TrE_RabatKorekta
TrE_RabatKorekta
Historia promocji dla elementu dokumentu (PRHI)
<PRHI/>
<PRH/>
PrmHistoria
PrmHistoria
HIDP
ID promocji
PrH_IDPrm
PrH_IDPrm
HRK
Kwota rabatu
PrH_RabatKwota
PrH_RabatKwota
HRR
Rodzaj rabatu
PrH_RodzajRabatu
PrH_RodzajRabatu
HRP
Procent udzielonego rabatu
PrH_RabatProcent
PrH_RabatProcent
HRKD
Kwota rabatu (z większą dokładnością)
PrH_RabatKwotaDokl
PrH_RabatKwotaDokl
HRE
Rabat efektywny
PrH_RabatEfektywny
PrH_RabatEfektywny
Tabelka VAT (VATI)
Tabelka VAT jest przesyłana tylko dla dokumentów zakupowych.
Do poprawnego działania komponentu CDNOfflineSrv opartego o Web Service Enhancements (WSE) wymagane jest zainstalowanie następujących komponentów systemowych:
System operacyjny (zgodnie z wymaganiami danej wersji Comarch ERP XL)
Microsoft Internet Information Services (IIS)
Microsoft .NET Framework (zgodnie z wymaganiami danej wersji Comarch ERP XL)
Microsoft Web Services Enhancements 3.0 for Microsoft.NET
Uwaga
Ważna jest kolejność instalacji poszczególnych komponentów.
Instalacja i konfiguracja komponentu CDNOfflineSrv
Instalacja i konfiguracja
Po zainstalowaniu komponentów systemowych przystępujemy do instalacji komponentu systemu Comarch ERP XL CDNOfflineSrv:
Katalog CDNOfflineSrv kopiujemy na dysk, na przykład do katalogu z Comarch ERP XL;
W celu ręcznego utworzenia katalogu wirtualnego uruchamiamy menedżera usług IIS – Panel sterowania/Narzędzia administratora/Internetowe usługi informacyjne. Klikając prawym klawiszem myszy na opcję Pule aplikacji wybieramy Dodaj pulę aplikacji… Jako nazwa podajemy CdnOfflineSrv, wskazujemy wersję architektury .NET Framework, Zarządzany tryb potokowy -> Zintegrowany, zaznaczony parametr: Uruchom pulę aplikacji natychmiast.
Internetowe usługi informacyjne, dodawanie puli aplikacji (dla maszyny 64-bitowej)
Po naciśnięciu przycisku OK, zatwierdzamy utworzenie puli aplikacji, a następnie przechodzimy do zaawansowanych ustawień utworzonej puli aplikacji, gdzie dla opcji: Tożsamość wskazujemy wartość: LocalSystem.
Internetowe usługi informacyjne, właściwości zaawansowane puli aplikacji
Internetowe usługi informacyjne, właściwości zaawansowane puli aplikacji dla maszyny 64-bitowej
Uwaga
W przypadku, gdy aplikacja będzie pracować na maszynie 64-bit-owej dodatkowo w zaawansowanych ustawieniach puli aplikacji wybieramy dla opcji Włącz aplikacje 32-bitowe wartość True.
Następnie klikając prawym klawiszem myszy na węzeł: Domyślna witryna sieci Web, wybieramy: Dodaj aplikację.
Wykonanie tych czynności spowoduje otwarcie okna Dodawanie aplikacji. W polu Alias jako nazwę podajemy: CdnOfflineSrv. W polu Ścieżka fizyczna wybieramy ścieżkę lokalizacji, gdzie wkopiowaliśmy pliki Web Serwisu. W polu: Pula aplikacji, wybieramy wcześniej utworzoną pulę CdnOfflineSrv.
w przeglądarce powinniśmy otrzymać stronę jak poniżej:
Test poprawności instalacji CDNOfflineSrv
Uwaga
Ze względu na kwestie dotyczące bezpieczeństwa połączenia i możliwego nieautoryzowanego dostępu do bazy danych poprzez CDNOfflineSrv, zalecane jest łączenie się poprzez wpisanie w powyższym adresie jako nazwy serwera prywatnego IP uzyskanego przy połączeniu poprzez VPN. Odpowiednie połączenie VPN należy wcześniej skonfigurować.
Problemy związane z wyświetleniem strony testowej CDNOfflineSrv
Jeżeli podczas próby uruchomienia strony testowej CDNOfflineSrv pojawia się następujący komunikat:
Test poprawności instalacji CDNOfflineSrv
to należy sprawdzić czy w zaawansowanych ustawieniach puli aplikacji wybrana została opcja Włącz aplikacje 32-bitowe wartość True w przypadku systemu 64- bitowego.
Jeżeli podczas próby uruchomienia strony testowej CDNOfflineSrv pojawia się następujący komunikat:
Test poprawności instalacji CDNOfflineSrv
to należy dodać dokument domyślny: cdnofflinesrv.asmx dla utworzonej aplikacji.
Do poprawnego działania programu Comarch OPT!MA Oddziałowa komunikującej się z Centralą za pomocą serwisu CDNOfflineSrv wymagane jest zainstalowanie następujących komponentów systemowych:
System operacyjny (zgodnie z wymaganiami danej wersji Comarch ERP Optima)
Microsoft .NET Framework (zgodnie z wymaganiami danej wersji Comarch ERP Optima)
Microsoft Web Services Enhancements 3.0 for Microsoft.NET.
Uwaga
Ważna jest kolejność instalacji poszczególnych komponentów.
Informacje dodatkowe dotyczące konfiguracji automatu synchronizacji
Konfiguracja automatu synchronizacji po stronie Comarch ERP XL jest definiowana w module: Administrator oddziałów, gdzie należy dodać i skonfigurować nowy oddział: Comarch ERP Optima. W celu uruchomienia automatu synchronizacji pomiędzy oddziałem Comarch ERP XL, a Comarch ERP Optima należy m.in., po stronie:
W Konfiguracji Comarch ERP XL na zakładce: Automat synchronizacji zaznaczyć opcję: Synchronizuj automatycznie i wpisać odpowiedni adres serwera i nazwę komputera, na którym zostanie „fizycznie” uruchomiony automat synchronizacji, a następnie włączyć automat synchronizacji
Konfigurowanie ustawień dla automatu synchronizacji w Comarch ERP XL
W Konfiguracji Comarch ERP Optima zdefiniować ustawienia na zakładce: Praca rozproszona, a następnie uruchomić synchronizację.
Comarch ERP Optima, Konfiguracja pracy rozproszonej
XL133 – Dokumentacja znaczników XML pliku synchronizacyjnego ERP XL – Comarch Mobile
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.
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