> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omnilinker.pl/llms.txt
> Use this file to discover all available pages before exploring further.

# Wapro

> Co dostawca Wapro odczytuje z Twojej bazy Wapro Mag, co w niej zapisuje i jakie uprawnienia nadać jego loginowi SQL.

Dostawca Wapro łączy Omnilinkera z Wapro Mag, systemem magazynowo-sprzedażowym firmy Asseco. Jest to obecnie jedyny
dostępny dostawca ERP. Działa w agencie ERP Sync w Twojej sieci i komunikuje się bezpośrednio z bazą danych Wapro na
SQL Server, ponieważ Wapro Mag nie ma webowego API.

## Obsługiwane wersje

Dostawca podaje jako obsługiwane wersje **Wapro Mag 10+** i **WF-Mag**. Agent pokazuje wersję Wapro wykrytą w bazie
danych na karcie **Agent** połączenia, w polu **Wersja ERP**.

## Co dostawca odczytuje

Dostawca tylko odczytuje Twoje dane biznesowe. Nigdy nie zmienia artykułów, cen, stanów magazynowych ani magazynów.

| Dane                  | Źródło w Wapro                                                                                                | Uwagi                                                                                                                                         |
| --------------------- | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Produkty              | Artykuły (`ARTYKUL`)                                                                                          | Tylko artykuły oznaczone jako aktywne dla systemów zewnętrznych (`AKTYWNY_DLA_SYS_ZEW = 1`) i nieoznaczone jako usunięte (`FLAGA_STANU = 5`). |
| Marki                 | Pole producenta w artykułach (`PRODUCENT`)                                                                    | Wapro nie ma listy marek. Każda unikalna nazwa producenta staje się marką, bez rozróżniania wielkości liter.                                  |
| Typ produktu          | Rodzaj artykułu (`RODZAJ`)                                                                                    | Zestaw staje się produktem typu zestaw. Wszystko inne staje się produktem prostym.                                                            |
| Poziomy cen           | Widok `Api_V_Price`                                                                                           | Poziomy pochodne (wyliczane z innego poziomu) nigdy nie są używane.                                                                           |
| Ceny produktów        | Ceny artykułów (`CENA_ARTYKULU`)                                                                              | Cena netto i brutto dla każdego produktu i poziomu cen. Wymaga śledzenia zmian WFM\_INT.                                                      |
| Magazyny              | `MAGAZYN`                                                                                                     | Synchronizacja wymaga śledzenia zmian WFM\_INT. Lista jest też przesyłana do mapowania w obu trybach.                                         |
| Stany magazynowe      | Kolumny stanów w artykułach (`STAN`, `ZAREZERWOWANO`, `ILOSC_EDYTOWANA`, `STAN_MINIMALNY`, `STAN_MAKSYMALNY`) | Jedna ilość na produkt i magazyn. Wymaga śledzenia zmian WFM\_INT.                                                                            |
| Skład zestawu         | Definicje produktów (`DEFINICJA_PRODUKTU`, `PRODUKT_WARIANT`)                                                 | Zobacz [Zestawy](#zestawy).                                                                                                                   |
| Jednostki i kategorie | `JEDNOSTKA`, `KATEGORIA_ARTYKULU`                                                                             | Przesyłane jako dane słownikowe. Jeszcze nieużywane w Omnilinkerze.                                                                           |
| Firmy                 | `FIRMA`                                                                                                       | Umożliwiają wybór firmy w ustawieniach agenta.                                                                                                |
| Wersja Wapro          | `WAPRODBSTATE`, `aktywnosc_wfs`                                                                               | Służy do wykrywania aktualizacji Wapro.                                                                                                       |

Domyślne mapowania pole po polu znajdziesz na stronie
[Mapowania pól](/pl/erp/field-mappings#domyślne-mapowania-wapro).

### Czego dostawca nie robi

Dostawca nie zapisuje danych w Wapro. Możliwości, które Omnilinker pokazuje dla Wapro, obejmują **Zapis produktów** i
**Usuwanie produktów**, ale nie są one zaimplementowane. Utworzenie, zmiana lub usunięcie produktu w Omnilinkerze nigdy
nie zmienia Wapro. Zapisywanie cen i stanów magazynowych z powrotem do Wapro również nie jest dostępne.

Zamówienia nie są synchronizowane w żadnym kierunku.

## Jak identyfikowane są produkty

W Wapro każdy magazyn ma własny wiersz tego samego artykułu. Omnilinker traktuje wszystkie wiersze o tym samym
indeksie katalogowym (`INDEKS_KATALOGOWY`) jako jeden produkt i używa tego indeksu jako SKU produktu. Spacje na
początku i na końcu są ignorowane.

* Artykułów z pustym indeksem katalogowym nie da się zidentyfikować, więc są pomijane.
* Dane produktu (nazwa, kod kreskowy, wymiary itd.) pochodzą z wiersza jednego magazynu. Aby wybrać magazyn, ustaw
  **ID magazynu źródłowego** w połączeniu. Jeśli go nie ustawisz, agent użyje wiersza o najniższym ID artykułu.
  Zobacz [Konfiguracja synchronizacji](/pl/erp/sync-configuration#ustawienia-synchronizacji-dla-całego-połączenia).
* Stany magazynowe są wysyłane osobno dla każdego magazynu.
* Ceny są pobierane z tego samego wiersza co dane produktu.

### Kiedy produkt uznaje się za usunięty

Omnilinker usuwa odpowiadający produkt w katalogu, gdy artykuł zostanie usunięty w Wapro, oznaczony jako usunięty lub
przestanie być oznaczony jako aktywny dla systemów zewnętrznych.

## Bazy z wieloma firmami

Baza danych Wapro może zawierać kilka firm. Wpisz identyfikator firmy (`ID_FIRMY`) w ustawieniach agenta, w polu
**Company ID (optional, for multi-company databases)**. Agent będzie wtedy odczytywał tylko magazyny, poziomy cen i
artykuły tej firmy. W bazie z jedną firmą zostaw to pole puste. Zobacz [Kreator konfiguracji](/pl/erp/setup-wizard).

## Wykrywanie zmian

Dostawca obsługuje oba tryby śledzenia zmian. Jak przełączać tryb, opisuje sekcja
[Tryb śledzenia zmian](/pl/erp/sync-configuration#tryb-śledzenia-zmian).

* **Skanowanie skrótów** odczytuje produkty i marki według harmonogramu i porównuje skróty (hashe). Wymaga tylko
  dostępu do odczytu i niczego nie zapisuje w bazie danych. Nie synchronizuje cen, magazynów ani stanów magazynowych.
* **Śledzenie zmian WFM\_INT** korzysta z własnego frameworku integracyjnego Wapro, `WFM_INT`. Wyzwalacze Wapro
  rejestrują każdą zmianę w śledzonych tabelach, także zmiany wprowadzone bezpośrednio przez SQL, a agent odczytuje te
  zapisy mniej więcej raz na minutę.

### Co agent zapisuje w Twojej bazie danych

W trybie **Śledzenie zmian WFM\_INT** agent zapisuje dane w tabelach frameworku `WFM_INT` Wapro. Nigdy nie zapisuje
niczego w Twoich tabelach biznesowych. Przed rejestracją prosi w aplikacji w zasobniku o wyraźną zgodę:
**I consent to Omnilinker registering change tracking in the WFM\_INT framework tables**.

Po kliknięciu **Enable Change Tracking** agent w jednej transakcji:

1. Dodaje jeden wiersz do `WFM_INT_SYSTEM` z opisem `OMNILINKER`. W ten sposób rejestruje Omnilinkera jako odbiorcę
   zapisów zmian.
2. Dodaje do `WFM_INT_SYSTEM_TABLICE` po jednym wierszu subskrypcji dla każdej śledzonej tabeli: `ARTYKUL`, `CENA`,
   `CENA_ARTYKULU`, `MAGAZYN`, `KOD_KRESKOWY`, `KATEGORIA_ARTYKULU` i `KATEGORIA_ARTYKULU_TREE`.
3. Dodaje do odpowiedniej tabeli `WFM_INT_<table>` po jednym wierszu dla każdego istniejącego rekordu tych tabel,
   oznaczonym jako nowy. Dzięki temu pierwsza synchronizacja wysyła wszystko. W dużej bazie jest to duża operacja
   wstawiania, więc wykonaj ją poza godzinami największego obciążenia.

Ponowna rejestracja jest bezpieczna. Dodaje tylko to, czego brakuje.

Po rejestracji:

* Wyzwalacze Wapro dodają lub aktualizują wiersz w `WFM_INT_<table>` dla Omnilinkera za każdym razem, gdy zmieni się
  śledzony rekord, tak samo jak dla każdego innego zarejestrowanego odbiorcy.
* Gdy agent zapisze paczkę zmian w swojej kolejce wychodzącej (outbox), oznacza te wiersze jako przetworzone (ustawia
  `StatusObiektu` na `0`). Aktualizuje wyłącznie wiersze należące do rejestracji `OMNILINKER`.

Po kliknięciu **Disable Change Tracking** w aplikacji w zasobniku agent usuwa swoje wiersze subskrypcji, swoje wiersze
w każdej tabeli `WFM_INT_<table>` i swój wiersz w `WFM_INT_SYSTEM`, również w jednej transakcji. Wiersze innych
odbiorców nigdy nie są zmieniane. Samo przełączenie połączenia z powrotem na **Skanowanie skrótów** w aplikacji
webowej sprawia, że agent przestaje odczytywać zapisy zmian, ale rejestracja pozostaje na miejscu.

Agent wykonuje też kontrole stanu, które tylko odczytują dane. Odczytuje metadane wyzwalaczy (`sys.triggers`) dla
wyzwalaczy `WFM_INT` w śledzonych tabelach oraz ustawienie serwera `nested triggers` (`sys.configurations`), a także
liczy artykuły zablokowane obecnie do edycji (`ARTYKUL.SEMAFOR`).

### Warunki poprawnego działania WFM\_INT

* **Wyzwalacze `WFM_INT` Wapro muszą być włączone** w śledzonych tabelach. Wyłączony wyzwalacz oznacza, że zmiany w
  tej tabeli nie są rejestrowane.
* **Opcja `nested triggers` SQL Server musi być włączona (`1`).** Wapro wymaga, aby wyzwalacze mogły uruchamiać inne
  wyzwalacze.
* **Artykuły zablokowane do edycji** w Wapro są pobierane po zwolnieniu blokady.

### Aktualizacje Wapro

Aktualizacja Wapro tworzy wyzwalacze śledzenia zmian od nowa, a zmiany wprowadzone w jej trakcie nie są rejestrowane.
Agent obserwuje wersję Wapro i historię poprawek (hotfixów). Gdy się zmienią, ponownie sprawdza śledzenie zmian i
uruchamia uzgadnianie. W trakcie aktualizacji agent może natrafić na brakujące tabele lub kolumny. Wstrzymuje wtedy
dany strumień danych i próbuje ponownie później, nie oznaczając zmian jako odczytanych.

## Uzgadnianie

W trybie **Śledzenie zmian WFM\_INT** agent nadal uruchamia skanowanie skrótów jako zabezpieczenie:

* co tydzień oraz
* po wykryciu aktualizacji Wapro.

Ponownie wysyła każdy produkt i każdą markę, których skrót różni się od tego, co Omnilinker otrzymał ostatnio. Marki
są wysyłane właśnie podczas tego uzgadniania, więc nowa nazwa producenta może pojawić się jako marka dopiero po
tygodniu.

## Zestawy

Artykuł rodzaju Zestaw staje się w katalogu produktem typu zestaw. Jego składniki pochodzą z definicji produktu w
Wapro:

* Agent odczytuje składy zestawów przy uruchomieniu, a potem co 6 godzin. Zmiany składu nie są śledzone przez
  `WFM_INT`, więc za każdym razem jest to pełny odczyt.
* Jeśli zestaw ma kilka wariantów, agent używa wariantu domyślnego, który nie jest zablokowany, a w przeciwnym razie
  wariantu o najniższym ID.
* Ilości tego samego składnika są sumowane.
* Składniki są dopasowywane po indeksie katalogowym. Składniki z pustym indeksem są pomijane.
* Zestaw bez składników w Wapro ma wyczyszczone składniki w Omnilinkerze.
* Zestaw jest pomijany, dopóki sam produkt zestawu i wszystkie jego składniki nie dotrą do Omnilinkera.
* Zestaw nie może zawierać innego zestawu. Taki zestaw jest pomijany.

Sposób zapisywania cen zestawów zależy od ustawienia **Źródło ceny zestawu** w połączeniu. Zobacz
[Ceny zestawów](/pl/erp/sync-configuration#ceny-zestawów).

## Login SQL Server

Agent łączy się za pomocą loginu SQL Server wpisanego w jego ustawieniach albo przez uwierzytelnianie Windows.

* **Skanowanie skrótów** wymaga dostępu do odczytu bazy danych Wapro, na przykład roli `db_datareader`.
* **Śledzenie zmian WFM\_INT** wymaga dodatkowo uprawnień `INSERT` i `DELETE` do `WFM_INT_SYSTEM` i
  `WFM_INT_SYSTEM_TABLICE` oraz `INSERT`, `UPDATE` i `DELETE` do siedmiu tabel `WFM_INT_<table>` wymienionych wyżej.

Dokładne polecenia `GRANT` znajdziesz na stronie [Wymagania](/pl/erp/requirements).

Jeśli nadajesz dostęp do odczytu obiekt po obiekcie zamiast przez `db_datareader`, pamiętaj, że agent odczytuje te
obiekty: `ARTYKUL`, `CENA`, `CENA_ARTYKULU`, `MAGAZYN`, `KOD_KRESKOWY`, `KATEGORIA_ARTYKULU`, `JEDNOSTKA`, `FIRMA`,
`DEFINICJA_PRODUKTU`, `PRODUKT_WARIANT`, `Api_V_Price`, `WAPRODBSTATE`, `aktywnosc_wfs`, `WFM_INT_SYSTEM`,
`WFM_INT_SYSTEM_TABLICE` oraz tabele `WFM_INT_<table>`.

## Znane ograniczenia

* Tylko odczyt: nic nie jest zapisywane z powrotem w Wapro. Zobacz [Czego dostawca nie robi](#czego-dostawca-nie-robi).
* Ceny produktów, magazyny i stany magazynowe wymagają śledzenia zmian WFM\_INT.
* W trybie WFM\_INT marki są aktualizowane tylko przez cotygodniowe uzgadnianie.
* Synchronizowany jest tylko podstawowy kod kreskowy (`KOD_KRESKOWY` w artykule). Dodatkowe kody kreskowe i kategorie
  nie są synchronizowane.
* Wyzwalacz cen Wapro nie rejestruje samej zmiany waluty, więc cena, w której zmieniła się tylko waluta, nie zostanie
  wysłana, dopóki nie zmieni się w niej coś innego.
* Zmiany wprowadzone w trakcie aktualizacji Wapro są wychwytywane dopiero przez następujące po niej uzgadnianie.
* Ceny i stany magazynowe pominięte z powodu niezmapowanego poziomu cen lub magazynu są stosowane przy ich następnej
  zmianie, a nie w chwili dodania mapowania. Zobacz
  [Dane słownikowe](/pl/erp/reference-items#co-się-dzieje-z-niezmapowanymi-elementami).
* Artykuły z pustym indeksem katalogowym nie są synchronizowane.

## Powiązane strony

<CardGroup cols={2}>
  <Card title="Wymagania" icon="list-checks" href="/pl/erp/requirements">
    Sieć, login SQL Server i uprawnienia.
  </Card>

  <Card title="Mapowania pól" icon="arrow-left-right" href="/pl/erp/field-mappings">
    Domyślne mapowania pól Wapro.
  </Card>

  <Card title="Konfiguracja synchronizacji" icon="settings" href="/pl/erp/sync-configuration">
    Tryb śledzenia zmian, interwały i ceny zestawów.
  </Card>

  <Card title="Dane słownikowe" icon="list" href="/pl/erp/reference-items">
    Zmapuj poziomy cen i magazyny z Wapro.
  </Card>
</CardGroup>
