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. 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.

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 --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. 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.

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%