5.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 kataloguenova.installationPathprzy 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_nettoi rabat procentowy0-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ą:
- Skopiuj katalog
releasena komputer produkcyjny. Możesz skopiowaćrelease/config/enova.json.sampledorelease/config/enova.jsoni uzupełnić go przed instalacją; jeżeli tego nie zrobisz,install.cmdutworzy plik automatycznie. - Ustaw sekrety maszyny.
- Zatrzymaj starą usługę Node dla tego samego portalu WAMP.
- Skonfiguruj usługę do pracy pod dedykowanym kontem Windows, które potrafi uruchomić Enovę, widzi jej bazę i licencję.
- 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_orderprzyjmujecurrency_iso,companyErpId,warehouseErpId,purchase_order_number,notesilines[]z polamisymbol,quantity,price_netto,discount. Wynik jest zwracany jako kwargs:order_erp_id,order_erp_symbol,value_netto,value_brutto,stocks.eu.smartb2b.sql_rawprzyjmujequeryi opcjonalneparams; parametry odpowiadają kolejno@1,@2, itd. Wynik ma polarecordsets,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.