Files
Sync-Enova365/README.md

4.0 KiB

SmartB2B SYNC dla enova365

Dedykowana usługa Windows zastępująca proces Node na stanowiskach z enova365. Utrzymuje połączenie WAMP, dodaje zamówienia przez oficjalne API Enovy i wykonuje eu.smartb2b.sql_raw na osobnym połączeniu SQL.

Najważniejsze właściwości

  • Host nie zawiera bibliotek Soneta.*. Adapter ładuje je z katalogu enova.installationPath przy każdym starcie procesu.
  • Zmiana wersji lub katalogu Enovy wymaga restartu usługi. Start kończy się błędem, jeżeli nowy zestaw DLL nie jest zgodny z adapterem.
  • Operacje Enovy są wykonywane pojedynczo i w osobnych sesjach. Zapytania SQL korzystają z puli połączeń i mogą działać równolegle.
  • ZO jest zapisywane transakcyjnie, domyślnie do bufora. Powtarzający się numer obcy nie jest blokowany.
  • Pierwsza wersja obsługuje PLN, price_netto i rabat procentowy 0-100.

Konfiguracja

Plik config/enova.json zawiera portal WAMP, ścieżkę instalacji, alias bazy, operatora, definicję dokumentu, magazyn domyślny i tryb zapisu.

Sekrety nie są przechowywane w JSON-ie. Konto usługi musi widzieć dwie zmienne środowiskowe maszyny:

[Environment]::SetEnvironmentVariable('SMARTB2B_ENOVA_PASSWORD', '<hasło operatora>', 'Machine')
[Environment]::SetEnvironmentVariable('SMARTB2B_SQL_CONNECTION_STRING', 'Server=...;Database=...;User ID=...;Password=...;TrustServerCertificate=True', 'Machine')

Po zmianie zmiennych trzeba zrestartować usługę. Connection string powinien używać konta SQL o możliwie najmniejszych uprawnieniach; sql_raw celowo dopuszcza również polecenia modyfikujące dane dla zgodności z obecną usługą.

Budowanie i testy

Z katalogu głównego repozytorium, przy zainstalowanym SDK .NET 8:

dotnet restore .\SmartB2B.EnovaSync.sln --configfile .\NuGet.Config
dotnet build .\SmartB2B.EnovaSync.sln --no-restore
dotnet run --project .\tests\SmartB2B.Enova.Tests --no-build --no-restore

Ostrzeżenie NU1603 dotyczące Soneta.Generator jest takie samo jak w działającym prototypie test1 i nie blokuje kompilacji.

Kontrola konfiguracji i dynamicznego ładowania, bez zapisu do bazy:

.\src\SmartB2B.Enova.Service\bin\Debug\net8.0\SmartB2B.Enova.Service.exe --check-config

Publikacja i instalacja

.\publish.ps1

Skrypt odtwarza katalog release z hostem, adapterem, konfiguracją i WinSW. Istniejąca konfiguracja release/config/enova.json jest zachowywana. Repozytorium zawiera również gotowy, skompilowany katalog release, więc na komputerze produkcyjnym nie trzeba instalować SDK. Przed instalacją:

  1. Skopiuj katalog release na komputer produkcyjny i uzupełnij release/config/enova.json.
  2. Ustaw sekrety maszyny.
  3. Zatrzymaj starą usługę Node dla tego samego portalu WAMP.
  4. Skonfiguruj usługę do pracy pod dedykowanym kontem Windows, które potrafi uruchomić Enovę, widzi jej bazę i licencję.
  5. Jako administrator uruchom release/daemon/install.cmd.

Jeżeli usługa ma działać pod innym kontem niż LocalSystem, po instalacji ustaw je w services.msc albo poleceniem administracyjnym sc.exe config smartb2bsync-enova obj= "DOMENA\\Użytkownik" password= "...", a następnie uruchom usługę ponownie.

Wycofanie polega na uruchomieniu daemon/uninstall.cmd i ponownym uruchomieniu dotychczasowej usługi Node. Nie ma migracji schematu bazy.

Procedury WAMP

  • eu.smartb2b.place_order przyjmuje currency_iso, companyErpId, warehouseErpId, purchase_order_number, notes i lines[] z polami symbol, quantity, price_netto, discount. Wynik jest zwracany jako kwargs: order_erp_id, order_erp_symbol, value_netto, value_brutto, stocks.
  • eu.smartb2b.sql_raw przyjmuje query i opcjonalne params; parametry odpowiadają kolejno @1, @2, itd. Wynik ma pola recordsets, recordset, output, rowsAffected.
  • Diagnostyka: eu.smartb2b.sync.get_version, get_info, get_log, get_error_log.

Kod produkcyjny, testy oraz gotowa wersja instalacyjna znajdują się w tym repozytorium.