= [wiki:DeployerGuide Przewodnik wdrożeniowca] > Synchronizacja kontrahentów = #kontrahent [wiki:DeployerGuide/Customization/Integration Strona główna Integracji][[br]] [wiki:DeployerGuide/Customization/Integration/Import Strona główna sekcji importu danych] === Menu === 1. [#wstep Wstęp] 2. [#kontrahenci Kontrahenci] 3. [#adresy Adresy] 4. [#dokumenty Konta bankowe] 5. [#osoby Osoby kontaktowe] == Wstęp == #wstep Niniejsza sekcja opisuje synchronizację Kontrahentów. Do tego można zaliczyć pobieranie : * kartotek kontrahentów, * kont bankowych kontrahentów, * osób kontaktowych kontrahenta Dla każdego obszaru zostanie pokazane: * przykładowy wygląd widoku z definicją kluczowych kolumn * mapowanie kolumn * przykład szablonu dla różnych akcji synchronizacji. Niniejszy opis dotyczy integracji przy pomocy połączenia typu DB. [#kontrahent Powrót do menu] == Kontrahenci == #kontrahenci === Widoki (perspektywy) === 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): * '''bs_contacts_view''' * '''bs_modified_contacts_view''' 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: [[Image(cnt_001.png)]][[BR]]''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|| [#kontrahent Powrót do menu] === Mapowanie kolumn === 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ć: [[Image(cnt_002.png)]][[BR]]''Rys. 2. Przykład mapowania dla kontrahenta'' Jak widać na powyższym obrazku mapowania składa się z dwóch części: * nazwy sekcji [CONTACT] * mapowania kolumn 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). [#kontrahent Powrót do menu] === konfigurowanie akcji === Po stworzeniu pliku mapowania kolumn następnym krokiem jest konfiguracja akcji pobierania danych. W tym celu należy: 1. Wejść do konfiguracji Połączeń z systemami zewnętrznymi {{{Narzędzia > Połączenia z systemami zewnętrznymi}}}. 2. W otwartym oknie wybiera się utworzone połączenie i otwieramy je do edycji. 3. W oknie edycji połączenia należy przejść na zakładkę Synchronizacja. 4. Na zakładce Synchronizacja klikając Nowy dodajemy obiekt: '''Klient''' (dzieje się to w małlym okienku pt. ''Nowy obiekt synchronizacji''). Po zatwierdzeniu dodania obiektu kreator pyta się, czy dodać domyślne akcje (dodaje wszystkie akcje zdefiniowane na tym obiekcie) oraz czy przejść do konfiguracji. 5. Wybierając wybraną akcję należy kliknąć ikonę ołówka w celu wyedytowania jej. 6. Istotną kwestią jest wprowadzenie szablonu mapowania (zaznaczony obszar na poniższym obrazku). Jeżeli przycisk przy polu Użyj szablonu jest zaznaczony, to szablon musi być wprowadzony. W przeciwnym przypadku należy odznaczyć pole Użyj szablonu. [[Image(cnt_003.png)]][[BR]]''Rys. 2. 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: {{{ #!sql -- 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. [#kontrahent Powrót do menu]