Strona główna Integracji
Strona główna sekcji importu danych
Niniejsza sekcja opisuje synchronizację Kontrahentów. Do tego można zaliczyć pobieranie :
Dla każdego obszaru zostanie pokazane:
Niniejszy opis dotyczy integracji przy pomocy połączenia typu DB.
Do obsługi pobierania danych kontrahentów należy po stronie zewnętrznego systemu (w odpowiednim schemacie - tym samym, co tabela bs_export_queue) zdefiniować dwa widoki (perspektywy):
Perspektywa bs_contacts_view zawiera kartoteki wszystkich kontrahentów, natomiast bs_modified_contacts_view jest złączeniem wewnętrznym tabeli bs_export_queue z widokiem bs_contacts_view. Definicja takiego widoku zostanie przedstawiona poniżej. Przykładowy widok bs_contacts_view może wyglądać w sposób następujący:
Rys. 1. Przykład widoku bs_contacts_view
W definicji widoku zaleca się następujących kolumn (pogrubione kolumny są wymagane):
Kolumna | Typ danych | Ograniczenia | Opis | Wymagalność |
bs_contact_id | int | PRIMARY KEY (UNIQUE, NOT NULL) | Kolumna z identyfikatorem numerycznym typu całkowitego. | Kolumna wymagana.Nazwa kolumny nie może być zmieniona |
Nazwa | varchar(n) | NOT NULL | Nazwa kontrahenta | Kolumna wymagana |
Skrot | varchar(n) | NOT NULL (UNIQUE) | Skrót nazwy kontrahenta | Opcjonalna, służyć może jako kolumna szablonowa do porównań istnienia kontrahentów |
NIP | varchar(n) | NOT NULL (UNIQUE) | NIP kontrahenta | Opcjonalna, służyć może jako kolumna szablonowa do porównań istnienia kontrahentów |
W lokalizacji public_html/apps/edokumenty/etc/sync należy utworzyć pliki .ini o nazwie x_columns_map.ini , gdzie "x" oznacza numer połączenia z systemem zewnętrznym. Np. połączenie nr. 1 będzie szukać pliku 1_colaumns_map.ini. Dla kontrahenta przykładowe mapowanie winno wyglądać:
Rys. 2. Przykład mapowania dla kontrahenta
Jak widać na powyższym obrazku mapowania składa się z dwóch części:
W mapowaniu kolumn należy mieć na uwadze to, że po lewej stronie znaku "=" znajdują się kolumny z widoku bs_contacts_view, a po prawej nazwy kolumn z bazy systemu eDokumenty (z kilkoma wyjątkami, ale dotyczącymi innych obszarów). W pliku tym nie wprowadzamy kolumn kluczowych, czyli w tym przypadku bs_contact_id !!!
W poniższej tabelce przedstawiono przykłady pól z systemu eDokumenty (po prawej stronie znaku "=") z opisem:
Nazwa pola | |Opis pola |
name_1 | Nazwa kontrahenta |
name_2 | Skrót (akronim) kontrahenta |
symbol | Symbol kontrahenta |
street | Ulica domyślnego/podstawowego adresu kontrahenta |
bldnum | Numer budynku domyślnego/podstawowego adresu kontrahenta |
fltnum | Numer lokalu domyślnego/podstawowego adresu kontrahenta |
code | Kod pocztowy domyślnego/podstawowego adresu kontrahenta |
city | Miejscowość domyślnego/podstawowego adresu kontrahenta |
post | Poczta domyślnego/podstawowego adresu kontrahenta |
gmina_ | Gmina domyślnego/podstawowego adresu kontrahenta |
powiat | Nazwa powiatu domyślnego/podstawowego adresu kontrahenta |
woj_ | Województwo (nazwa powinna się zgadzać ze słownikiem województw Ustawienia>Panel Sterowania) |
countr | Kraj (nazwa powinna się zgadzać ze słownikiem krajów Ustawienia>Panel Sterowania) |
nip_ | Numer NIP kontrahenta |
regon_ | Numer REGON kontrahenta |
pesel_ | Numer PESEL kontrahenta |
ph_num | Numer stacjonarny kontrahenta |
faxnum | Numer faksu kontrahenta |
email_ | Adres email kontrahenta |
websit | Adresy strony WWW kontrahenta |
saldo_ | Saldo obrotów z kontrahentem |
Uwaga! Jedna kolumna nie może być podwójnie mapowana (do dwóch różnych pól).
Po stworzeniu pliku mapowania kolumn następnym krokiem jest konfiguracja akcji pobierania danych. W tym celu należy:
szablonu.
Rys. 3. Konfiguracja akcji Pobierania wszystkich klientów
Przeznaczenie funkcji Użyj szablonu jest następujące. Na podstawie szablonu system wyszukuje, czy w bazie systemu eDokumenty istnieje już klient o takich samych danych, co aktualnie pobierane z systemu zewnętrznego. Konstrukcja jest następująca:
warunek po stornie PostgreSQL = warunek po stronie SZBD systemu zewnętrznego
Poniżej przedstawiono kilka przykładowych szablonów mapowania:
-- Przykład 1. trim(nip___) = ltrim(rtrim('{nip___}')) -- Przykład 2. lower(symbol) = lower('{symbol}')
W przykładzie 1. następuje porównanie pól nip-u (usuwanie zbędnych spacji przed i po numeru NIP). Lewa strona warunku to kolumna nip___ w bazie eDokumenty w tabeli contacts. Po prawej stronie jest brana pod uwagę prawa kolumna z pliku mapowana (Uwaga, dla niektórych akcji ta zasada jest inna!!!). Dodatkowo muszą być wykorzystywane funkcje dostępne w SZBD Systemu zewnętrznego (tutaj z MS SQL Server).
Analogicznie w przykładzie 2. Tu bierzemy pod uwagę pole symbol i dla ujednolicenia wyszukiwania sprawdzamy wg. małych liter w symbolu.
Opcji wyszukiwania jest wiele. Powyższe stanowią najczęściej stosowane przypadki.
Pobieranie adresów kontrahenta jest ściśle związane z pobieraniem kartotek kontrahentów.
Na potrzeby pobierania adresów kontrahenta należy w schemacie integracji utworzyć widok:
W widoku wymaganym jest zdefiniowanie następujących kolumn:
Kolumna | Typ danych | Ograniczenia | Opis | Wymagalność |
bs_address_id | int | PRIMARY KEY (UNIQUE, NOT NULL) | Nazwa kontrahenta | Kolumna wymagana..Nazwa kolumny nie może być zmieniona |
bs_contact_id | int | NOT NULL | Kolumna z identyfikatorem kontrahenta numerycznym typu całkowitego. | Kolumna wymagana.Nazwa kolumny nie może być zmieniona |
Rys. 4. Przykładowy widok adresów kontrahentów
Mapowanie kolumn odbywa się w tym samym pliku x_columns_map.ini , co mapowanie kontrahenta.Przykładowy schemat mapowania przedstawiony na poniższym rysunku
Rys. 5. Przykład mapowania adresów kontrahentów
Mapowanie kolumn adresów kontrahenta należy rozpocząć od zdefiniowania w pliku sekcji [CONTACT_ADDRESS]
Nazwa pola | |Opis pola |
street | Ulica domyślnego/podstawowego adresu kontrahenta |
bldnum | Numer budynku domyślnego/podstawowego adresu kontrahenta |
fltnum | Numer lokalu domyślnego/podstawowego adresu kontrahenta |
code | Kod pocztowy domyślnego/podstawowego adresu kontrahenta |
city | Miejscowość domyślnego/podstawowego adresu kontrahenta |
post | Poczta domyślnego/podstawowego adresu kontrahenta |
gmina_ | Gmina domyślnego/podstawowego adresu kontrahenta |
powiat | Nazwa powiatu domyślnego/podstawowego adresu kontrahenta |
woj_ | Województwo (nazwa powinna się zgadzać ze słownikiem województw Ustawienia>Panel Sterowania) |
countr | Kraj (nazwa powinna się zgadzać ze słownikiem krajów Ustawienia>Panel Sterowania) |
distkm | Dystans w kilometrach |
is_def | Wartość 0,1 lub t,f - znacznik domyślności danego adresu |
Pobieranie adresów kontrahentów nie posiada swoich dedykowanych akcji. Jest ono powiązane ściśle z pobieraniem samych kartotek kontrahentów. Aby skonfigurować pobieranie adresów należy:
Dodatkowo od wersji 4.2.xx pojawiła się opcja łączenia adresów. Oznacza to, że w przypadku zaistnienia takiego samego adresu (np. ulica + kod pocztowy) to taki adres dostaje dodatkowe powiązania, natomiast nie jest duplikowany w bazie danych. Przykładowy warunek może być następujący:
lower(street) = lower('{street}') AND COALESCE(regexp_replace(code__, '[ |-]*', '', 'g'), '') = COALESCE(regexp_replace('{code__}', '[ |-]*', '', 'g'), '')
Poniższy rysunek przedstawia konfigurowanie akcji pobierania adresów kontrahenta: