1. Opis ogólny
2. Przygotowanie
3. Generowanie raportów
3.1 Opis ogólny
3.2 Generowanie ręczne
3.3 Generowanie automatyczne w SOA
4. Zgodność z wymaganiami
5. Weryfikacja poprawności raportu RPS
6. Źródła danych dla raportów
7. Tematy powiązane
1. Opis ogólny
Program wysyła dane o sprzedaży oraz o stanach magazynowych towarów,
których producentem jest firma XXXXX (firma, która korzysta z tych danych
gromadzonych na platformie Asseco EBI).
Program generuje pliki raportów w formacie wymaganym przez system Asseco EBI.
Zastosowano mechanizmy określone nazwą: Raportowanie automatyczne
Raportowanie automatyczne
System Asseco EBI, to platforma wymiany danych handlowych pomiędzy producentem
a dystrybutorami z nim współpracującymi.
(en: DMS Dealership management software; Zarządzanie siecią dealerską)
Umożliwia producentom bieżące pozyskiwanie danych o stanie zapasów
ich produktów u dystrybutorów oraz ilości sprzedanych towarów
do poszczególnych punktów detalicznych.
System EBI zbiera dane przekazywane przez programy dystrybutora,
tu: przekazywane przez program Trawers (raport EBI).
Zebrane dane przechowuje w bazie danych (Baza danych EBI), sumuje, segreguje
i przekazuje do producenta.
[1] [2] [3] [1] [2] <------ Punkty sprzedaży
| | | | | oddziały, magazyny
| | | | |
v v v v v
o----------------o o----------------o
| Dystrybutor 1 | | Dystrybutor 2 | Dystrybutor n ...
| | | | o
| Trawers | | Trawers | |
o--------o-------o o--------o-------o |
| | |
| | |
Raport EBI Raport EBI |
| | |
v v v
o--------->---o---<--------o---<----------------o--- ...
|
v
o-------o-------o
| Baza danych |
| EBI |
| |
o-------o-------o
|
|
v
Producent
otrzymuje informacje o sprzedaży
i stanach magazynowych u dystrybutorów i
w ich punktach sprzedaży
Dane przekazywane przez Trawers (Report EBI) mają określony format.
Zadaniem funkcji raportującej do EBI jest przygotowanie danych zgromadzonych
w Trawersie do formatu oczekiwanego przez EBI.
Program tworzy raporty
MAG - Kartoteka oddziałów (magazynów)
KLT - Kartoteka klientów
ASO - Kartoteka asortymentu
ASJ - Kartoteka jednostek asortymentu
SLO - Słowniki
SMG - Stany magazynowe
RPS - Raport sprzedaży
Raporty tworzone są w podziale na oddziały.
Raporty tworzone są wg specyfikacji:
* FPW_ebie_ebic_1_8_0_20130218_ogolna.pdf
2. Przygotowanie
Aby skorzystać z funkcji należy:
a) Utworzyć strukturę katalogów punktu styku wg schematu podanego
w opisie komunikacji z systemem EBI (dokument Asseco BS)
Głównym katalogiem punktu styku interfejsu EBI jest katalog
<EBI> = <TRAWERS>/adtres/adinout/ebi
gdzie: <TRAWERS> to katalog, w którym znajdują sie dane pakietu Trawers,
np. /opt/trawers5/dane/
Struktura podkatalogów w <EBI> jest następująca:
<EBI>
<symbol_firmy>
<symbol_oddzialu_1>
import
export
recv
sent
<symbol_oddzialu_2>
import
export
recv
sent
...
<symbol_oddzialu_N>
import
export
recv
sent
np. katalog export dla firmy FP
dla centrali (00):
/opt/trawers5/dane/adtres/adinout/ebi/fp/00/export
dla oddziału Gdynia (GD):
/opt/trawers5/dane/adtres/adinout/ebi/fp/gd/export
Dodając nowy oddział do systemu, należy utworzyć dla niego ręcznie
w/w strukturę katalogów EBI.
b) Wypełnić w kartotekach pola wymagane przez EBI
Poniżej jest lista kartotek i dane jakie trzeba w nich wypełnić.
Oddziały firmy
Wprowadzić pełne dane adresowe:
nip, nazwa, nazwa skrócona, miasto, kod, ulica, nr lokalu, telefon
Tabela magazynów
Podać oddział, do którego należy magazyn
Indeksy KIM
Wypełnić pola:
BarKod (EAN)
Dostawca - podać symbol producenta,
dla którego tworzone są raporty EBI
Utworzyć zapytanie Query, które będzie zwracało tylko
indeksy KIM producenta, dla którego tworzymy raporty EBI
Zapytania wg warunków (Query)
Podać jednostki miary producenta dla indeksów (dla raportu ASO)
Domyślnie jest brana Jm przychodu i przelicznik z karty KIM,
a jeżeli podano w ZA dla głównego dostawcy z KIM,
to z oferty cenowej dostawcy (Kartoteki cen dostawców) w ZA
Cenniki w MI
W cenniku katalogowym [60]
muszą być ujęte towary danego producenta.
Należy wypełnić ceny: netto 1 oraz brutto 4
Kartoteka odbiorców
- pełne dane adresowe (na głównej stronie karty)
- symbol oddziału
gdy >!!< to należy do wszystkich oddziałów
Utworzyć zapytanie Query, które będzie zwracało
tylko odbiorców, dla których tworzymy raporty EBI.
Kartoteka dostawców
Utworzyć zapytanie Query, które będzie zwracało
tylko dostawców, dla których tworzymy raporty EBI.
Parametry systemu NA
Podać: Symbol odbiorcy dla sprzedaży gotówkowej
Program sprawdza
Przed wygenerowaniem raportu, program sprawdza czy wypełniono dane
wymagane przez EBI:
* dane adresowe w karcie oddziałów
* przypisanie magazynu do oddziału w karcie magazynu
* symbol odbiorcy gotówkowego w parametrach NA
* symbol głównego dostawcy w kartach KIM
* dane adresowe w kartach odbiorców
* pozycje w cenniku katalogowym
* czy utworzono katalogi w ../adtres/adinout/ebi
(gdy nie ma, to program tworzy)
3. Generowanie raportów
3.1 Opis ogólny
Raporty tworzone są w podziale na oddziały
* Oddziały zdefiniowane są w tabeli oddziałów firmy w AD
* W MG > Tabela magazynów przypisuje się magazyn do oddziału
Do jednego oddziału może należeć wiele magazynów
* W karcie odbiorcy podaje się symbol oddziału
* Operator jest przypisany do oddziału
* Symbol oddziału operatora jest wstawiany w nagłówku dokumentu sprzedaży
Raporty można generować ręcznie za pomocą funkcji w NA > Pomocnicze > Wysyłanie danych ...
lub automatycznie poprzez mechanizm SOA
SOA Funkcje
W obu przypadkach program utworzy dla każdego z oddziałów,
w katalogu: <EBI>/<symbol_firmy>/<symbol_oddzialu>/export
dwa pliki:
1. plik z danymi raportu
2. plik potwierdzenia - z rozszerzeniem '.ok'
Raport sprzedaży RPS można wykonać dla dowolnego okresu.
Ujmowane są w nim tylko dokumenty zatwierdzone.
Stany magazynowe SMG są zawsze: na dziś.
Raport KLT tworzony jest na podstawie kartoteki odbiorców.
W raporcie tym nie ujmowani są klienci detaliczni z grupy [DE]
za wyjątkiem odbiorcy o symbolu podanym w parametrach NA
Nazwa tego odbiorcy podawana jest jako [Detal] a kod pocztowy jako [00000]
W raporcie RPS symbol klienta detalicznego z grupy [DE] zastępowany jest
symbolem podanym w parametrach NA.
Warunki, które są uwzględniane w poszczególnych raportach:
I O D Z
- - - -
MAG - - - -
KLT - O - -
ASO I - - -
ASJ I - - -
SLO - - D -
SMG I - - -
RPS I O - Z
| | | |
| | | Z ----- Zakres okresów
| | D ------- Dostawcy
| O --------- Odbiorcy
I ----------- Indeksy KIM
Po utworzeniu raportu wykonywany jest skrypt: ../adtres/tr_ebi.sh
z parametrami: <typ raportu> <symbol firmy> <symbol oddzialu> <nazwa pliku>
np. ../adtres/tr_ebi.sh RPS FP 01 rps_20100701_1250.txt
np. ../adtres/tr_ebi.sh RPS FP 01 rps_20100701_1250.txt.ok
Parametr 0816 [1] włącza zapis do logu szczegółowych informacji
diagnostycznych związanych z generowaniem raportów EBI.
3.2 Generowanie ręczne
Wybranie z menu funkcji: NA > Pomocnicze > Wysyłanie ....[NA_PDO50]
Należy wybrać typ raportu i wskazać zapytanie Query tj. określić
warunki wyboru indeksów (RPS,ASO,ASJ,SMG), odbiorców (RPS,KLT)
i dostawców (SLO) oraz zakres dat dokumentów sprzedaży (RPS)
3.3 Generowanie automatyczne w SOA
Polega na wywolaniu procesu SOA: AD_PSOA1 w trybie AutoRun.
SOA Funkcje
W parametrach AD_PSOA1 podaje się nazwę pliku XML, który zawiera żądanie
wykonania raportów EBI. Są to funkcje SOA: EBI_MAG, EBI_KLT, itd.
Funkcje (proces) AD_PSOA1 należy wywołać w trybie AutoRun z poziomu systemu
operacyjnego, np.
./tr5x.exe --operator=AA --firma=FP --oddzial=00 --proces=AD_PSOA1 \
--input=ebi_in.xml --output=ebi_out.xml
Wiecej szczegółów poniżej.
Należy utworzyć plik XML z żądaniem EBI w katalogu: adtres/adinout
i wskazać go w wywołaniu SOA.
W wyniku utworzone zostaną odpowiednie pliki raportów w strukturze katalogów EBI
Do uzyskania raportów EBI służą następujące żądania SOA:
typ raportu symbol żądania
----------- --------------
MAG -> <EBI_MAG>
KLT -> <EBI_KLT>
ASO -> <EBI_ASO>
ASJ -> <EBI_ASJ>
SLO -> <EBI_SLO>
RPS -> <EBI_RPS>
SMG -> <EBI_SMG>
Przykład pliku XML: ebi.xml
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
xmlns:fn="http://www.w3.org/2005/02/xpath-functions">
<soap:Header/>
<soap:Body>
<EBI_RPS>
<queryKIM>INDEKSY_CP</queryKIM>
<queryODB></queryODB>
<periodType>FromTo</periodType>
<fromDate>2009-07-01</fromDate>
<toDate>2009-11-30</toDate>
</EBI_RPS>
</soap:Body>
</soap:Envelope>
Parametry żadań EBI:
queryKIM : nazwa zapytania Query z kartoteki KIM
do wskazania, które towary ująć w raporcie
queryODB : nazwa zapytania Query z kartoteki Odbiorców
do wskazania, których ująć odbiorców (klientów)
queryDOS : nazwa zapytania Query z kartoteki Dostawców
do wskazania, których ująć dostawców (producentów)
periodType :
Today - dane sprzedażowe z dziś
nie wypełnia się pol <fromDate> i <toDate>
MonthToDate - od początku bieżącego miesiąca do dziś włącznie
nie wypełnia się pol <fromDate> i <toDate>
ThisMonth - cały bieżący miesiąc
nie wypełnia się pol <fromDate> i <toDate>
LastMonth - z całego poprzedniego miesiąca
nie wypełnia się pol <fromDate> i <toDate>
FromTo - z podanego zakresu <fromDate>..<toDate>
np. <fromDate>2015-01-01</fromDate>
<toDate>2015-06-30</toDate>
LastDays - z ostatnich N dni
np. <fromDate>-4</fromDate>
<toDate>-1</toDate>
czyli: od DZIS-4 do DZIS-1 np. 2015-07-02 .. 2015-07-05
Przykład wywołania SOA:
-----------------------
./tr5x.exe --operator=AA --firma=FP --oddzial=00 --proces=AD_PSOA1 \
--input=ebi_in.xml --output=ebi_out.xml
W pliku wyjściowym ebi_out.xml zapisywany jest wynik operacji:
* [OK] gdy operacja zakończona poprawnie
* [opis błędu] gdy wystapił błąd (może np. zawierać nazwę raportu ze szczegółami błędu)
W przypadku wystąpienia błędu, wysyłane jest także powiadomienie
do zainteresowanych operatorów (z oznaczonym parametrem: 1108 [1])
Aby raporty generowały się automatycznie o ustalonej porze,
należy utworzyć skrypt z w/w wywołaniami SOA i wykonywać go przez
cron (Linux) lub Harmonogram Zadań (Windows)
Aby zapewnić funkcji generowania raportów EBI dostępność sesji
należy w parametrach systemu AD zarezerwować sesje dla AutoRun
Parametry AD
Przykład skryptu dla Linux:
#!/bin/bash
cd /opt/trawers/dane/adtres
PARAMS="--operator=AA --firma=FP --oddzial=00 --proces=AD_PSOA1"
# Nalezy usunac pliki odpowiedzi (output) aby proces mogl sie wykonac
rm -f adinout/ebi_klt_out.xml
rm -f adinout/ebi_slo_out.xml
rm -f adinout/ebi_aso_out.xml
rm -f adinout/ebi_asj_out.xml
rm -f adinout/ebi_smg_out.xml
rm -f adinout/ebi_rps_out.xml
./tr5x.exe $PARAMS --input=ebi_klt_in.xml --output=ebi_klt_out.xml
./tr5x.exe $PARAMS --input=ebi_slo_in.xml --output=ebi_slo_out.xml
./tr5x.exe $PARAMS --input=ebi_aso_in.xml --output=ebi_aso_out.xml
./tr5x.exe $PARAMS --input=ebi_asj_in.xml --output=ebi_asj_out.xml
./tr5x.exe $PARAMS --input=ebi_smg_in.xml --output=ebi_smg_out.xml
./tr5x.exe $PARAMS --input=ebi_rps_in.xml --output=ebi_rps_out.xml
#koniec skryptu
4. Zgodność z wymaganiami
Program eksportu danych dla systemu EBI spełnia wymagania opisane
w dokumencie: Wymagania_dot_działania_interfejsu_20090526_bez_zam.pdf
Poniżej objaśnienie:
II. WYMAGANIA FUNKCJONALNE DLA INTERFEJSÓW
Interfejs do wymiany danych z EBI powinien zapewniać:
1. Automatyczny export danych z systemu
(o możliwej do ustalenia godzinie/ach)
Trawers: Eksport można wykonać ręcznie lub automatycznie przez usługi
SOA pakietu Trawers oraz mechanizm 'cron' systemu Linuks.
2. Możliwość interwałowego generowania komunikatów
(kartotek klientów, asortymentu, stanów magazynowych, raportów
sprzedaży (raz dziennie)).
Dodatkowo interfejs powinien umożliwiać ustalenie wstecznej
zakładki czasowej dla generowanych automatycznie danych (odsprzedaż).
Trawers: 1. Raporty mozna generować o dowolnej porze -> patrz p.1
2. W parametrach pliku wejściowego usługi SOA podaje się okres,
za który wykonywany jest raport RPS.
3. Możliwość wykonania exportu danych sprzedażowych za dowolny okres
wskazany przez operatora (np. trzy miesiące wstecz)
Trawers: patrz p.2
4. Dowolny komunikat uznawany powinien być za 'do przetworzenia'
jeśli dostępny będzie dla niego plik 'OK'
Trawers: jest
5. W przypadku wystąpienia zmian w dokumentach sprzedażowych,
które już były exportowane do EBI należy taki dokument
wysłać ponownie (wg jego obecnego stanu tzn wszystkie aktualne
informacje z nagłówka oraz pozycji)
Jeśli z jakiegoś powodu dokument już wyexportowany, zostaje w systemie
anulowany / usunięty, informacje o tym należy również wysłać do EBI,
wg jednej z poniższych metod:
a. Wysyłamy nagłówek oraz wszystkie pozycje anulowanego dokumentu wstawiając do
pól 'ilość' oraz 'wartość' zera.
b. Wysyłamy nagłówek oraz po jednej pozycji produktowej z kartoteki
każdego z producentów dla których jest
realizowana wymiana danych. Pozycje te w pliku powinny zawierać
w polach ilość oraz wartość wartości zerowe
Trawers: Eksportowane są tylko dokumenty zatwierdzone, których nie można
usuwać
6. W czasie działania interfejsu należy zadbać, aby w danych kartotekowych
(produkty, kontrahenci) nie dochodziło do modyfikacji logicznej danych
(np. zmiana nazwy towaru z 'batonik' na 'lizak' z zachowaniem tego samego
identyfikatora towaru). Wszelkie operacje tego typu będą prowadziły do
problemów ze spójnością i jakością danych.
Trawers: to zadanie dla Użytkownika programu
III. WYMAGANIA DODATKOWE
1) stworzenie dokumentacji technicznej...
Trawers: niniejszy dokument jest tą dokumentacją
2) wykonanie instrukcji obsługi...
Trawers: niniejszy dokument pełni rolę instrukcji obsługi
5. Weryfikacja poprawności raportu RPS
Do zweryfikowania poprawności danych umieszczanych w raporcie RPS
można użyć zestawienia z systemu NA > Sprzedaż > Dokumenty tabelarycznie
6. Żródła danych dla raportów
Raport MAG
Pola z karty firmy oraz kart oddziałów
ID_MAG : [symbol oddziału (00 dla centrali)]
ID_DYST :
KODOWANIE : [CP852]
NIP : nip
NAZWA : pnfirmy
SKROT : nfirmy
MIASTO : miasto
KOD : kod
ULICA : ulica
NR_LOK : nrlokalu
TEL : tel1
FAX : fax
EMAIL : tlx
Raport KLT
Pola z karty odbiorcy
ID_MAG : ododdzia [gdy !! to kolejne oddziały]
ID_KLT : odbdost
ID_PLT : odbdost
ID_PRAC : odsymop
NAZWA : odnazwa ['Detal', gdy detaliczny]
SKROT : odnazwa ['Detal', gdy detaliczny]
ID_W :
ID_P :
MIASTO : odmiasto
KOD : odkod [00000 gdy detaliczny]
ULICA : odulica+odnrdom
NR_LOK : odnrlok
NIP : odnip [0000000000000 gdy pusty]
TEL :
KOM :
FAX :
EMAIL :
RABAT : 0 lub odrabat [odrabat tylko, gdy odrupust = '0']
ID_FOR_PLT : odformap
TER_PLT : odwarpl
ID_CENNIK :
ID_GC_KLT :
ID_GL_KLT :
ID_GR_KLT :
ID_GRX_KLT :
LIM_KRED :
SALDO_PLT :
LIM_PRZET :
SALDO_PRZET :
WSK_BLOK :
ID_TYP_KLT :
ID_KAT_KLT :
ID_SIEC :
ID_POW :
ID_ST_KLT :
ST_MOB : 1
WSK_DOMYSLNY : 1
Raport ASO
Pola z karty KIM. Ceny z cennika katalogowego
ID_MAG : [symbol oddzialu]
ID_ASO : indeks
ID_ASO_CEN :
NR_FAB :
EAN : ean13
PKWIU :
NAZWA : inazwa
SKROT : indeks
CENA_BRUTTO :
CENA_NETTO :
CENA_ZAKUPU : zkcena [z KIM]
CENA_ST : 0 [zawsze]
RABAT :
RABAT_MAX :
VAT :
VAT_ZW : 0,1 lub 2 [wg nrptu: 00->1, 99->2, inne->0]
ID_JED : jm
ID_JED_DOM :
ID_PROD : dostawca
ID_FAB :
ID_KAT :
ID_BRAND :
ID_ODMIANA :
ID_ST_ASO :
ID_GC_ASO :
ID_GR_ASO :
ID_GRX_ASO :
WSK_PRM :
ST_MOB : 1
STAN_PP : [stan w magazynach oddziału w jedn. dystybutora]
STAN : [stan w magazynach oddziału w jedn. producenta (przelicznik z ofert dostawcy: OFWSZAK]
PRZELICZNIK : [przelicznik]
DATA_STANU : [data zestawienia]
WSK_DOMYSLNY : 1
Raport ASJ
Pola z karty KIM. Gdy są różne jm,jms i jmz to dla każdej jest osobny wpis
ID_MAG : [symbol oddzialu]
ID_ASO : indeks
ID_JED : jm
EAN : ean13
MNOZNIK : 1 lub wssprz(dla jms) lub wszaku(dla jmz)
Raport SLO
Pola z odpowiednich kartotek:
ID_MAG : [symbol oddzialu]
NAZWA_POLA : [możliwe wartości poniżej]
IDENTYFIKATOR: [możliwe wartości poniżej]
NAZWA : [możliwe wartości poniżej]
Wartości zapisywane do raportu SLO:
NAZWA_POLA IDENTYFIKATOR NAZWA
ID_JED symbol nazwa z Tabeli jednostek miary
ID_PROD odbdost odnazwa z Karty dostawcy
ID_FOR_PLT [symbol] [nazwa] metody płatności
Raport SMG
Pola z karty KIM
ID_MAG : [symbol oddzialu]
ID_ASO : indeks
STAN : [stan w magazynach oddziału w jedn. dystrybutora]
ID_JED : jm
OPIS :
DATA_STANU : [data zestawienia]
Raport SMG
Pola z dokumentów sprzedaży
Nagłówek:
LP_RAP : [nr kolejny]
ID_TYP : [wg rodzajd]
ID_MAG : oddzial
NR_DOKUMENTU : numer
WART_BRUTTO : [wart brutto sumy pozycji]
WART_ZAPL : 0 [zawsze 0. Objasnienie poniżej]
DATA_WYST : data
DATA_SPRZ : datas
TERM_PLT : termin
ID_KLT : odbdost [lub na00pa.DETALODB gdy detaliczny]
NR_DOK_KR : dnumer
DATA_DOK_KR : ddata
NR_FORMAT_KR : 1
ID_RODZ_SPRZ :
POLE_1 :
POLE_2 :
POLE_3 :
Pozycja:
LP_ASO : dnum_poz
ZRODLO_CEL : -
ID_ASO : indeks
NR_FAB :
EAN : KIM:ean13
ID_JED : jms
ILOSC : P:oilosc
ILOSC_BYLO : K:oilosc
CENA_NETTO : cenaspr [przeliczona wg cnb Netto/Brutto]
WART_NETTO : P:owartosc
WART_NETTO_BYLO : K:owartosc
WARTOSC_VAT : P:pwartosc
WARTOSC_VAT_BYLO : K:pwartosc
CENA_ZAKUPU : dwartosc/dilosc
NR_ZAM :
NR_ZAM_DYST :
CENA_NETTO_B : cenasp [przeliczona wg cnb Netto/Brutto]
RABAT : orabat
NR_DOK_KLT :
DATA_DOK_KR :
POLE_1 :
POLE_2 :
POLE_3 :
Pole [WART_ZAPL] - wartość zapłat za fakturę.
Wartość zapłat dotyczy całej faktury. A w raporcie RPS ujmowane są
tylko pozycje asortymentu danego Dostawcy.
W ogólnym przypadku nie można ustalić prawidłowo części zapłat
przypadających tylko na pozycje raportowane.
Dlatego program umieszcza w tym polu wartość zero.