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.
  • Sentry raportuje błędy krytyczne procesu oraz nieoczekiwane błędy procedur Enovy i SQL, oznaczone portalem i nazwą procedury WAMP.

Konfiguracja

Plik config/enova.json zawiera portal WAMP, ścieżkę instalacji, alias bazy, operatora wraz z hasłem, connection string SQL, definicję dokumentu, magazyn domyślny, tryb zapisu oraz DSN Sentry. Repozytorium oraz paczka zawierają tylko config/enova.json.sample. Skrypt instalacyjny kopiuje wzorzec do config/enova.json wyłącznie wtedy, gdy lokalna konfiguracja jeszcze nie istnieje.

Uzupełnij pola enova.operator, enova.password i sql.connectionString bezpośrednio w lokalnym pliku config/enova.json. Parametr sentry.dsn wskazuje projekt Sentry; pusty lub pominięty DSN wyłącza wysyłanie błędów. Jeżeli operator lub hasło Enovy nie są podane, usługa nie loguje się do bazy Enovy i nie rejestruje endpointu eu.smartb2b.place_order; endpoint SQL oraz diagnostyka pozostają dostępne. Po zmianie konfiguracji 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 --config .\src\SmartB2B.Enova.Service\bin\Debug\net8.0\config\enova.json.sample --check-config

Publikacja i instalacja

.\publish.ps1

Skrypt odtwarza katalog release z hostem, adapterem, wzorcem konfiguracji i WinSW. 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. Możesz skopiować release/config/enova.json.sample do release/config/enova.json i uzupełnić go przed instalacją; jeżeli tego nie zrobisz, install.cmd utworzy plik automatycznie.
  2. Uzupełnij w release/config/enova.json hasło operatora i connection string SQL.
  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.

Automatyczne aktualizacje

Przy starcie WinSW pobiera pliki aplikacji z https://demo.smartb2b.eu/files/smartb2b-sync-enova/ zgodnie z listą <download> w daemon/smartb2bsync-enova.xml. Aktualizowane są program, biblioteki, adapter Enovy, skrypty, manifest usługi i config/enova.json.sample. Lokalny config/enova.json nie występuje na liście i nie jest nadpisywany. Sam smartb2bsync-enova.exe jest programem rozruchowym WinSW, dlatego nie aktualizuje samego siebie podczas pracy. publish.ps1 porównuje zawartość gotowej paczki z manifestem i przerywa publikowanie, jeżeli którejkolwiek pozycji brakuje po jednej ze stron.

Description
No description provided
Readme 75 MiB
2026-08-26 16:43:11 +02:00
Languages
C# 93.8%
PowerShell 4.2%
Batchfile 2%