S SISL docs EN

Konfiguracja

Wszystko ustawiasz w jednym miejscu: Stores → Configuration → SISL → Optima Connector.

Sekcja 0. Licencja

Pole Opis Domyślnie
Klucz licencji Format SISL-OPT-XXXX-XXXX-XXXX-XXXX (puste — wpisz po zakupie)
Serwer licencyjny URL serwera weryfikacji https://license.sisl.pl

Klucz zostaje zaszyfrowany przez Magento Encryptor i zapisany w core_config_data. Plugin sprawdza go raz na 24h (lub na żądanie z Diagnostyki).

Sekcja 1. Połączenie z mikrouslugą

Pole Opis Przykład
Włączone Master switch całego pluginu Yes
URL Sisl.Sync.Service Adres mikrousługi w sieci http://192.168.1.50:5000
HMAC shared secret 32-bajtowy hex, identyczny po obu stronach (wygenerowany openssl rand -hex 32)
HTTP timeout (s) Timeout requestu HTTP 15

Ważne: URL musi być osiągalny z kontenera/serwera Magento. Jeśli używasz Dockera, użyj host.docker.internal lub LAN IP.

Sekcja 2. Synchronizacja

Pole Opis Domyślnie
Pobieraj produkty Włącz ProductSync Yes
Synchronizuj stany Włącz StockSync Yes
Wyślij zamówienia do Optimy Włącz OrderForward Yes
Synchronizuj ceny Czy nadpisywać ceny w Magento No
Magazyn (Mag_Symbol) Z którego magazynu Optimy ciągnąć stany MAGAZYN
Cennik nr Który cennik (TwC_TwCNumer) 1 (detal)
Cennik zawiera VAT Czy cena z Optimy jest brutto Yes
Default attribute set ID Dla nowych produktów 4 (Default)
Filtr SKU (prefix) Sync tylko SKU z tym prefixem (puste = wszystkie)
Pomijaj usługi Filtr Twr_Typ != 0 Yes
Bufor magazynowy Odejmij N szt jako rezerwa 0
Próg "out of stock" Jeśli qty - bufor <= próg → OOS 0
Rozmiar strony Batch dla API (50-1000) 200

Sync cen — kiedy włączyć

Domyślnie wyłączone. Włącz tylko jeśli ceny w Optimie są autorytatywne. Inaczej ceny w Magento (ustawione ręcznie lub przez kampanię marketingową) nie będą nadpisywane przy każdym cyklu.

Bufor magazynowy

Przykład: produkt ma w Optimie 5 szt, bufor=2, próg=0: - Magento qty = 5 - 2 = 3 - Sklep dalej "in stock"

Gdy w Optimie zostanie 2 szt: qty = 0, plugin automatycznie ustawi is_in_stock=0. Zabezpiecza przed sprzedażą ostatniego kawałka który mógł zostać już sprzedany offline.

Sekcja 3. Domyślne wartości dla NOWYCH produktów

Pole Opis Domyślnie
Status nowego produktu Enabled / Disabled Enabled
Widoczność nowego produktu Niewidoczny / Katalog / Wyszukiwarka / Oba Katalog i wyszukiwarka

Stosowane tylko przy pierwszym imporcie SKU. Późniejsze syncy nie ruszają tych pól.

Sekcja 4. Harmonogram (cron)

Wymaga aktywnego cron Magento (bin/magento cron:run w systemowym crontab co minutę, lub kontener cron w Docker).

Pole Dropdown
Synchronizacja produktów Wyłączone / Co 5 min / Co 15 min / Co 30 min / Co 1 godz. / 2h / 6h / 12h / Codziennie 02:00 / Codziennie 04:00
Synchronizacja stanów jw.
Sprawdzanie licencji jw. (zalecane: Codziennie 03:00)

Sekcja 5. v0.3 — Funkcje rozszerzone (opt-in)

Trzy duże, opcjonalne funkcje. Wszystkie domyślnie wyłączone — włączasz świadomie kiedy ich potrzebujesz. Wyłączone nie wpływają na zachowanie modułu.

F1. Multi-store — różne cenniki/SKU per website

Każdy website Magento może pobierać ceny z innego cennika Optimy. Format pola Multi-store: Per-website overrides:

hurt=2:HURT-
detal=1:
partner=3:PARTNER-

Każda linia to website_code=cennik:sku_prefix: - website_code — Stores → All Stores → Website → Code w Magento - cennik — numer cennika Optimy (TwC_TwCNumer), np. 1 = detal, 2 = hurt - sku_prefix — filtruj produkty dla tego website po prefiksie SKU (pusty = wszystkie)

Ceny default scope (z sekcji 2) pozostają — multi-store nakłada się na nie jako warstwa website-scoped.

Włączasz w 5. v0.3 → Multi-store: Enabled = Yes + wpisujesz overrides.

F2. Order updates — pełen cykl zamówienia (FA/PAR/WZ)

Cron pobiera z mikrousługi faktury/paragony/WZ utworzone w Optimie i automatycznie tworzy w Magento odpowiednio Invoice (zamówienie → "Complete") lub Shipment.

Wymagany workflow w Optimie: w polu Opis dokumentu (TraNag.TrN_Opis) handlowiec wpisuje MG-<numer_zamowienia_magento>, np. MG-100000123. Plugin filtruje po tym prefiksie i dopasowuje do increment_id.

Pola w configu:

Pole Opis Domyślnie
Order updates: Enabled Master switch F2 No
Order updates: Reference prefix Prefiks w TrN_Opis MG-
Order updates: Cron schedule Cron expression (puste = nie odpala) (puste)

Zalecane harmonogramy: */15 * * * * (co 15 min) lub */30 * * * *.

Idempotentny — pomija zamówienia już zafakturowane / zashippowane.

F3. Bidirectional customer sync — karty kontrahentów Optima → Magento

Cron pobiera z mikrousługi karty kontrahentów (CDN.KntKarty) zmodyfikowane od ostatniego polla (delta sync) i upsertuje je do customer_entity w Magento. Pierwszy poll = full sync, kolejne = tylko delta.

Match: po email + websiteId (Magento wymaga email — kontrahenci bez emaila są pomijane).

Pola w configu:

Pole Opis Domyślnie
Customers: Enabled Master switch F3 No
Customers: Default group Customer Group ID dla nowych klientów 1 (General)
Customers: Default website Website ID dla nowych klientów 1
Customers: Cron schedule Cron expression (puste)

Zalecane harmonogramy: 0 */2 * * * (co 2h) lub raz na noc 0 3 * * *.

Wykluczenie pojedynczego produktu

Catalog → Products → kliknij produkt → tab SISL Optima → ustaw "Wykluczony z synchronizacji" na Yes.

Plugin pominie ten SKU w obu ProductSync i StockSync. Cena, nazwa, stan w Magento nie będą dotykane.

Konfiguracja po stronie microservice'u

Plik C:\Sisl\sync\publish\appsettings.Local.json:

{
  "Sisl": {
    "Backend": "optima",
    "ListenUrl": "http://0.0.0.0:5000",
    "AllowedTimestampDriftSeconds": 300,
    "SharedSecret": "<HMAC, ten sam co w Magento>",
    "Optima": {
      "Server": "TWOJ-SERWER\\OPTIMA",
      "Database": "CDN_Firma_Twoja",
      "IntegratedSecurity": true
    },
    "License": {
      "Key": "<klucz licencji>",
      "ServerUrl": "https://license.sisl.pl",
      "ProductCode": "sisl_optima",
      "Enforce": "true"
    }
  }
}

Po zmianie wymagany restart Windows Service:

Restart-Service SislSyncService

Następny krok: Licencjonowanie →