Add shared ERP sync core and Optima adapter
This commit is contained in:
6
.gitignore
vendored
6
.gitignore
vendored
@@ -8,5 +8,7 @@ NuGet/
|
||||
|
||||
# Lokalne konfiguracje wdrożeniowe; repozytorium zawiera wyłącznie wzorzec.
|
||||
src/SmartB2B.Enova.Service/config/enova.json
|
||||
release/config/enova.json
|
||||
release/config/enova.local.json
|
||||
release-enova/config/enova.json
|
||||
release-enova/config/enova.local.json
|
||||
src/SmartB2B.Optima.Service/config/optima.json
|
||||
release-optima/config/optima.json
|
||||
|
||||
48
OPTIMA-INTEGRATION-TESTS.md
Normal file
48
OPTIMA-INTEGRATION-TESTS.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Testy integracyjne Comarch ERP Optima
|
||||
|
||||
Testy z bazą są celowo wykonywane dopiero po ręcznym przygotowaniu i zarejestrowaniu firmy w Optimie. Narzędzia w tym repozytorium nie odtwarzają, nie tworzą ani nie modyfikują konfiguracji baz Optimy.
|
||||
|
||||
## Przygotowanie
|
||||
|
||||
1. Skopiuj `src/SmartB2B.Optima.Service/config/optima.json.sample` do lokalnego, ignorowanego przez Git pliku `src/SmartB2B.Optima.Service/config/optima.json`.
|
||||
2. Uzupełnij nazwę firmy widoczną podczas logowania, operatora, hasło, identyfikator magazynu i connection string SQL.
|
||||
3. Nie dodawaj pliku `optima.json` do repozytorium ani paczki wdrożeniowej.
|
||||
4. W przygotowanej firmie zapewnij kontrolowane dane testowe: kontrahenta, towar, magazyn, walutę oraz definicje RO liczone netto i brutto.
|
||||
|
||||
## Kontrola bez zapisu
|
||||
|
||||
Uruchom opublikowaną wersję x64:
|
||||
|
||||
```powershell
|
||||
.\release-optima\SmartB2B.Optima.Service.exe --config .\src\SmartB2B.Optima.Service\config\optima.json --check-config
|
||||
```
|
||||
|
||||
Polecenie sprawdza JSON, zgodność architektury procesu z `op_base.dll`, rejestrację COM, wersję Optimy, połączenie SQL, logowanie operatora i utworzenie sesji. Nie zapisuje dokumentu.
|
||||
|
||||
## Scenariusze zapisu przez WAMP
|
||||
|
||||
Pierwszy kontrolowany zapis adaptera można wykonać runnerem, który wymaga jawnego
|
||||
parametru `--write-order` i domyślnie zapisuje wyłącznie w trybie `Buffer`:
|
||||
|
||||
```powershell
|
||||
dotnet run --project .\tests\SmartB2B.Optima.IntegrationTests -- --config .\src\SmartB2B.Optima.Service\config\optima.json --negative-tests --write-order --customer-id 2 --product-code SMARTB2B_TEST_TWR
|
||||
```
|
||||
|
||||
Zatwierdzenie dokumentu wymaga dodatkowej flagi `--approved` i powinno być wykonywane
|
||||
wyłącznie w firmie testowej:
|
||||
|
||||
```powershell
|
||||
dotnet run --project .\tests\SmartB2B.Optima.IntegrationTests -- --config .\src\SmartB2B.Optima.Service\config\optima.json --write-order --approved --customer-id 2 --product-code SMARTB2B_TEST_TWR
|
||||
```
|
||||
|
||||
Po pomyślnym `--check-config` uruchom usługę z tym samym plikiem konfiguracji i sprawdź kolejno:
|
||||
|
||||
- RO w buforze (`saveMode: Buffer`) i zatwierdzone (`saveMode: Approved`);
|
||||
- definicję liczoną netto z `price_netto` i brutto z `price_brutto`;
|
||||
- rabat, uwagi, numer obcy, magazyn oraz walutę;
|
||||
- zgodność `order_erp_id`, `order_erp_symbol`, `value_netto` i `value_brutto` z dokumentem zapisanym w Optimie;
|
||||
- błędy dla brakującego kontrahenta, produktu, magazynu, waluty i wymaganej ceny;
|
||||
- parametryzowane `sql_raw`, wiele recordsetów, dane binarne oraz błąd SQL;
|
||||
- dwa równoczesne wywołania `place_order` — dokumenty mają zostać utworzone kolejno na jednym wątku COM.
|
||||
|
||||
Przed testami trybu `Approved` wykonaj kopię bezpieczeństwa bazy lub użyj firmy przeznaczonej wyłącznie do testów.
|
||||
61
README.md
61
README.md
@@ -1,6 +1,13 @@
|
||||
# SmartB2B SYNC dla enova365
|
||||
# SmartB2B SYNC dla enova365 i Comarch ERP Optima
|
||||
|
||||
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.
|
||||
Dedykowane usługi Windows zastępujące proces Node na stanowiskach z enova365 albo
|
||||
Comarch ERP Optima. Wspólny rdzeń utrzymuje połączenie WAMP, udostępnia diagnostykę
|
||||
i wykonuje `eu.smartb2b.sql_raw`. Osobne adaptery zapisują zamówienia przez API ERP.
|
||||
|
||||
Rozwiązanie składa się z bibliotek `SmartB2B.Sync.Contracts` i
|
||||
`SmartB2B.Sync.Service` oraz osobnych hostów i adapterów Enovy i Optimy. Usług dla
|
||||
tego samego portalu nie należy uruchamiać jednocześnie, ponieważ rejestrują te same
|
||||
procedury WAMP.
|
||||
|
||||
## Najważniejsze właściwości
|
||||
|
||||
@@ -15,6 +22,13 @@ Dedykowana usługa Windows zastępująca proces Node na stanowiskach z enova365.
|
||||
|
||||
Plik `config/enova.json` zawiera portal WAMP, ścieżkę instalacji, alias bazy używany wewnątrz procesu, 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.
|
||||
|
||||
Dla Optimy odpowiednikiem jest `config/optima.json`. Sekcja `optima` zawiera
|
||||
ścieżkę instalacji, nazwę firmy widoczną podczas logowania, operatora, hasło,
|
||||
symbol definicji dokumentu (domyślnie `RO`), liczbowy identyfikator magazynu i tryb
|
||||
`Buffer` albo `Approved`. `companyErpId` jest liczbowym `Knt_KntId`, a
|
||||
`warehouseErpId` liczbowym identyfikatorem magazynu. Paczka zawiera wyłącznie
|
||||
`optima.json.sample`.
|
||||
|
||||
Uzupełnij pola `enova.operator`, `enova.password` i `sql.connectionString` bezpośrednio w lokalnym pliku `config/enova.json`. Adapter rejestruje bazę Enovy tylko w pamięci procesu na podstawie `sql.connectionString`; baza nie musi być wcześniej dodana do listy baz w profilu użytkownika Windows, a dane połączenia nie są przez usługę zapisywane w plikach Enovy. Pole `enova.database` jest nazwą tego wpisu w procesie i może odpowiadać nazwie bazy z connection stringa. 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ę. Konto z `sql.connectionString` musi mieć uprawnienia wymagane do pracy Enovy oraz do zapytań `sql_raw`; `sql_raw` celowo dopuszcza również polecenia modyfikujące dane dla zgodności z obecną usługą.
|
||||
|
||||
## Budowanie i testy
|
||||
@@ -22,9 +36,10 @@ Uzupełnij pola `enova.operator`, `enova.password` i `sql.connectionString` bezp
|
||||
Z katalogu głównego repozytorium, przy zainstalowanym SDK .NET 8:
|
||||
|
||||
```powershell
|
||||
dotnet restore .\SmartB2B.EnovaSync.sln --configfile .\NuGet.Config
|
||||
dotnet build .\SmartB2B.EnovaSync.sln --no-restore
|
||||
dotnet restore .\SmartB2B.Sync.sln --configfile .\NuGet.Config
|
||||
dotnet build .\SmartB2B.Sync.sln --no-restore
|
||||
dotnet run --project .\tests\SmartB2B.Enova.Tests --no-build --no-restore
|
||||
dotnet run --project .\tests\SmartB2B.Optima.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.
|
||||
@@ -35,11 +50,20 @@ 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
|
||||
```
|
||||
|
||||
Dla Optimy `--check-config` sprawdza zgodność architektury procesu z `op_base.dll`, rejestrację COM
|
||||
`CDNBase.Application`, wersję instalacji, połączenie SQL oraz logowanie i utworzenie
|
||||
sesji. Nie zapisuje dokumentu. Pełne sprawdzenie wymaga gotowej bazy i prawdziwego
|
||||
operatora:
|
||||
|
||||
```powershell
|
||||
.\release-optima\SmartB2B.Optima.Service.exe --config .\release-optima\config\optima.json --check-config
|
||||
```
|
||||
|
||||
Szczegółowe logowanie włącza parametr `/debug` albo `/verbose` (obsługiwane są też
|
||||
warianty `--debug` i `--verbose`). Wyłącza je brak parametru lub jawny parametr
|
||||
`/nodebug` albo `/noverbose`. Błędy są zapisywane do `stderr` niezależnie od tego
|
||||
ustawienia. W usłudze Windows parametr można włączyć przez odkomentowanie elementu
|
||||
`<arguments>/verbose</arguments>` w `daemon/smartb2bsync-enova.xml` i restart usługi.
|
||||
`<arguments>/verbose</arguments>` w `daemon-enova/smartb2bsync-enova.xml` i restart usługi.
|
||||
|
||||
W trybie szczegółowym zapis ZO raportuje kolejne etapy: walidację żądania, logowanie
|
||||
do Enovy, wyszukanie definicji, kontrahenta, magazynu i towarów, commit transakcji
|
||||
@@ -52,24 +76,35 @@ nie kopiuje tej wartości automatycznie z `enova.json.sample` do istniejącej ko
|
||||
## Publikacja i instalacja
|
||||
|
||||
```powershell
|
||||
.\publish.ps1
|
||||
.\publish-enova.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ą:
|
||||
Paczka Optimy jest samodzielnym buildem `win-x64`, zgodnym z Optimą 2026.5.1,
|
||||
i nie wymaga instalowania runtime .NET x64. Nie zawiera bibliotek ani licencji Comarch:
|
||||
|
||||
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.
|
||||
```powershell
|
||||
.\publish-optima.ps1
|
||||
```
|
||||
|
||||
Wynik trafia do `release-optima`. Po uzupełnieniu `config/optima.json` instalację
|
||||
wykonuje `release-optima/daemon/install.cmd`. Usługa ma identyfikator
|
||||
`smartb2bsync-optima`.
|
||||
|
||||
Skrypt odtwarza katalog `release-enova` z hostem, adapterem, wzorcem konfiguracji i WinSW. Repozytorium zawiera również gotowy, skompilowany katalog `release-enova`, więc na komputerze produkcyjnym nie trzeba instalować SDK. Przed instalacją:
|
||||
|
||||
1. Skopiuj katalog `release-enova` na komputer produkcyjny. Możesz skopiować `release-enova/config/enova.json.sample` do `release-enova/config/enova.json` i uzupełnić go przed instalacją; jeżeli tego nie zrobisz, `install.cmd` utworzy plik automatycznie.
|
||||
2. Uzupełnij w `release-enova/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ę i ma dostęp do jej licencji. Lista baz zapisana w profilu tego konta nie jest wymagana.
|
||||
5. Jako administrator uruchom `release/daemon/install.cmd`.
|
||||
5. Jako administrator uruchom `release-enova/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.
|
||||
Wycofanie polega na uruchomieniu `release-enova/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.place_order` przyjmuje `currency_iso`, `companyErpId`, `warehouseErpId`, `purchase_order_number`, `notes` i `lines[]` z polami `symbol`, `quantity`, opcjonalnymi `price_netto` i `price_brutto` oraz `discount`. Enova wymaga `price_netto`; Optima wybiera cenę zgodnie z `TypNB` definicji dokumentu. 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`.
|
||||
|
||||
@@ -77,4 +112,4 @@ Kod produkcyjny, testy oraz gotowa wersja instalacyjna znajdują się w tym repo
|
||||
|
||||
## 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.
|
||||
Przy starcie WinSW pobiera pliki aplikacji z `https://demo.smartb2b.eu/files/smartb2b-sync-enova/` zgodnie z listą `<download>` w `daemon-enova/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-enova.ps1` porównuje zawartość gotowej paczki z manifestem i przerywa publikowanie, jeżeli którejkolwiek pozycji brakuje po jednej ze stron.
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.11.35327.3
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Enova.Contracts", "src\SmartB2B.Enova.Contracts\SmartB2B.Enova.Contracts.csproj", "{83EEA218-71A0-4E45-9572-B53767A3BC26}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Enova.Adapter", "src\SmartB2B.Enova.Adapter\SmartB2B.Enova.Adapter.csproj", "{64C5439F-00AA-48F9-9A9B-DAE69DB0BC57}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Enova.Service", "src\SmartB2B.Enova.Service\SmartB2B.Enova.Service.csproj", "{3473BD53-A2B9-46A8-AEE8-F087F373DF2B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Enova.Tests", "tests\SmartB2B.Enova.Tests\SmartB2B.Enova.Tests.csproj", "{842D10FD-D5FC-4AF9-8D72-619BF6EE10C2}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{83EEA218-71A0-4E45-9572-B53767A3BC26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{83EEA218-71A0-4E45-9572-B53767A3BC26}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{83EEA218-71A0-4E45-9572-B53767A3BC26}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{83EEA218-71A0-4E45-9572-B53767A3BC26}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{64C5439F-00AA-48F9-9A9B-DAE69DB0BC57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{64C5439F-00AA-48F9-9A9B-DAE69DB0BC57}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{64C5439F-00AA-48F9-9A9B-DAE69DB0BC57}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{64C5439F-00AA-48F9-9A9B-DAE69DB0BC57}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3473BD53-A2B9-46A8-AEE8-F087F373DF2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3473BD53-A2B9-46A8-AEE8-F087F373DF2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3473BD53-A2B9-46A8-AEE8-F087F373DF2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3473BD53-A2B9-46A8-AEE8-F087F373DF2B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{842D10FD-D5FC-4AF9-8D72-619BF6EE10C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{842D10FD-D5FC-4AF9-8D72-619BF6EE10C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{842D10FD-D5FC-4AF9-8D72-619BF6EE10C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{842D10FD-D5FC-4AF9-8D72-619BF6EE10C2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
71
SmartB2B.Sync.sln
Normal file
71
SmartB2B.Sync.sln
Normal file
@@ -0,0 +1,71 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.11.35327.3
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Sync.Contracts", "src\SmartB2B.Sync.Contracts\SmartB2B.Sync.Contracts.csproj", "{83EEA218-71A0-4E45-9572-B53767A3BC26}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Sync.Service", "src\SmartB2B.Sync.Service\SmartB2B.Sync.Service.csproj", "{D52B9C80-C6F4-4E0B-B3B8-17F6A8FD88E5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Enova.Adapter", "src\SmartB2B.Enova.Adapter\SmartB2B.Enova.Adapter.csproj", "{64C5439F-00AA-48F9-9A9B-DAE69DB0BC57}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Enova.Service", "src\SmartB2B.Enova.Service\SmartB2B.Enova.Service.csproj", "{3473BD53-A2B9-46A8-AEE8-F087F373DF2B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Optima.Adapter", "src\SmartB2B.Optima.Adapter\SmartB2B.Optima.Adapter.csproj", "{7C9A4077-0EB1-4E87-A202-99219EBE9BDF}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Optima.Service", "src\SmartB2B.Optima.Service\SmartB2B.Optima.Service.csproj", "{A0DA9C63-98D1-47AA-B491-E101D6131B0B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Enova.Tests", "tests\SmartB2B.Enova.Tests\SmartB2B.Enova.Tests.csproj", "{842D10FD-D5FC-4AF9-8D72-619BF6EE10C2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Optima.Tests", "tests\SmartB2B.Optima.Tests\SmartB2B.Optima.Tests.csproj", "{1F6B3CB3-141D-4438-B43B-B3B6CA80A483}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{83B01DA9-7F49-48C8-AB20-E9814B7093DA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmartB2B.Optima.IntegrationTests", "tests\SmartB2B.Optima.IntegrationTests\SmartB2B.Optima.IntegrationTests.csproj", "{9BDCCB4C-12DD-4CCF-A628-F30721ACC2C9}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{83EEA218-71A0-4E45-9572-B53767A3BC26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{83EEA218-71A0-4E45-9572-B53767A3BC26}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{83EEA218-71A0-4E45-9572-B53767A3BC26}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{83EEA218-71A0-4E45-9572-B53767A3BC26}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D52B9C80-C6F4-4E0B-B3B8-17F6A8FD88E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D52B9C80-C6F4-4E0B-B3B8-17F6A8FD88E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D52B9C80-C6F4-4E0B-B3B8-17F6A8FD88E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D52B9C80-C6F4-4E0B-B3B8-17F6A8FD88E5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{64C5439F-00AA-48F9-9A9B-DAE69DB0BC57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{64C5439F-00AA-48F9-9A9B-DAE69DB0BC57}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{64C5439F-00AA-48F9-9A9B-DAE69DB0BC57}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{64C5439F-00AA-48F9-9A9B-DAE69DB0BC57}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3473BD53-A2B9-46A8-AEE8-F087F373DF2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3473BD53-A2B9-46A8-AEE8-F087F373DF2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3473BD53-A2B9-46A8-AEE8-F087F373DF2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3473BD53-A2B9-46A8-AEE8-F087F373DF2B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7C9A4077-0EB1-4E87-A202-99219EBE9BDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7C9A4077-0EB1-4E87-A202-99219EBE9BDF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7C9A4077-0EB1-4E87-A202-99219EBE9BDF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7C9A4077-0EB1-4E87-A202-99219EBE9BDF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A0DA9C63-98D1-47AA-B491-E101D6131B0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A0DA9C63-98D1-47AA-B491-E101D6131B0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A0DA9C63-98D1-47AA-B491-E101D6131B0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A0DA9C63-98D1-47AA-B491-E101D6131B0B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{842D10FD-D5FC-4AF9-8D72-619BF6EE10C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{842D10FD-D5FC-4AF9-8D72-619BF6EE10C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{842D10FD-D5FC-4AF9-8D72-619BF6EE10C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{842D10FD-D5FC-4AF9-8D72-619BF6EE10C2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1F6B3CB3-141D-4438-B43B-B3B6CA80A483}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1F6B3CB3-141D-4438-B43B-B3B6CA80A483}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1F6B3CB3-141D-4438-B43B-B3B6CA80A483}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1F6B3CB3-141D-4438-B43B-B3B6CA80A483}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9BDCCB4C-12DD-4CCF-A628-F30721ACC2C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9BDCCB4C-12DD-4CCF-A628-F30721ACC2C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9BDCCB4C-12DD-4CCF-A628-F30721ACC2C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9BDCCB4C-12DD-4CCF-A628-F30721ACC2C9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{9BDCCB4C-12DD-4CCF-A628-F30721ACC2C9} = {83B01DA9-7F49-48C8-AB20-E9814B7093DA}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -3,7 +3,7 @@ setlocal
|
||||
cd /d "%~dp0"
|
||||
|
||||
if not exist "smartb2bsync-enova.exe" (
|
||||
echo Brak smartb2bsync-enova.exe. Najpierw uruchom publish.ps1.
|
||||
echo Brak smartb2bsync-enova.exe. Najpierw uruchom publish-enova.ps1.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
@@ -28,8 +28,10 @@
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Enova.Service.deps.json" to="%BASE%\..\SmartB2B.Enova.Service.deps.json" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Enova.Service.runtimeconfig.json" to="%BASE%\..\SmartB2B.Enova.Service.runtimeconfig.json" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Enova.Service.pdb" to="%BASE%\..\SmartB2B.Enova.Service.pdb" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Enova.Contracts.dll" to="%BASE%\..\SmartB2B.Enova.Contracts.dll" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Enova.Contracts.pdb" to="%BASE%\..\SmartB2B.Enova.Contracts.pdb" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Sync.Contracts.dll" to="%BASE%\..\SmartB2B.Sync.Contracts.dll" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Sync.Contracts.pdb" to="%BASE%\..\SmartB2B.Sync.Contracts.pdb" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Sync.Service.dll" to="%BASE%\..\SmartB2B.Sync.Service.dll" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Sync.Service.pdb" to="%BASE%\..\SmartB2B.Sync.Service.pdb" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/adapters/SmartB2B.Enova.Adapter.dll" to="%BASE%\..\adapters\SmartB2B.Enova.Adapter.dll" failOnError="false" />
|
||||
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/Azure.Core.dll" to="%BASE%\..\Azure.Core.dll" failOnError="false" />
|
||||
24
daemon-optima/install.cmd
Normal file
24
daemon-optima/install.cmd
Normal file
@@ -0,0 +1,24 @@
|
||||
@echo off
|
||||
setlocal
|
||||
cd /d "%~dp0"
|
||||
|
||||
if not exist "smartb2bsync-optima.exe" (
|
||||
echo Brak smartb2bsync-optima.exe. Najpierw uruchom publish-optima.ps1.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "..\config" mkdir "..\config"
|
||||
if not exist "..\config\optima.json" (
|
||||
if not exist "..\config\optima.json.sample" (
|
||||
echo Brak ..\config\optima.json.sample.
|
||||
exit /b 1
|
||||
)
|
||||
copy /Y "..\config\optima.json.sample" "..\config\optima.json" >nul
|
||||
echo Utworzono lokalna konfiguracje ..\config\optima.json.
|
||||
)
|
||||
|
||||
smartb2bsync-optima.exe install
|
||||
if errorlevel 1 exit /b %errorlevel%
|
||||
|
||||
smartb2bsync-optima.exe start
|
||||
exit /b %errorlevel%
|
||||
14
daemon-optima/smartb2bsync-optima.xml
Normal file
14
daemon-optima/smartb2bsync-optima.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<service>
|
||||
<id>smartb2bsync-optima</id>
|
||||
<name>SmartB2B SYNC - Comarch ERP Optima</name>
|
||||
<description>Synchronizuje Comarch ERP Optima z portalem SmartB2B.</description>
|
||||
<executable>%BASE%\..\SmartB2B.Optima.Service.exe</executable>
|
||||
<workingdirectory>%BASE%\..</workingdirectory>
|
||||
<!-- <arguments>/verbose</arguments> -->
|
||||
<stoptimeout>45sec</stoptimeout>
|
||||
<log mode="roll-by-time">
|
||||
<pattern>yyyyMMdd</pattern>
|
||||
</log>
|
||||
<onfailure action="restart" delay="10 sec" />
|
||||
<delayedAutoStart />
|
||||
</service>
|
||||
7
daemon-optima/uninstall.cmd
Normal file
7
daemon-optima/uninstall.cmd
Normal file
@@ -0,0 +1,7 @@
|
||||
@echo off
|
||||
setlocal
|
||||
cd /d "%~dp0"
|
||||
|
||||
smartb2bsync-optima.exe stop
|
||||
smartb2bsync-optima.exe uninstall
|
||||
exit /b %errorlevel%
|
||||
@@ -1,5 +1,5 @@
|
||||
param(
|
||||
[string]$OutputPath = (Join-Path $PSScriptRoot "release"),
|
||||
[string]$OutputPath = (Join-Path $PSScriptRoot "release-enova"),
|
||||
[ValidateSet("Debug", "Release")]
|
||||
[string]$Configuration = "Release"
|
||||
)
|
||||
@@ -10,19 +10,18 @@ $env:APPDATA = $PSScriptRoot
|
||||
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = "1"
|
||||
$env:DOTNET_CLI_TELEMETRY_OPTOUT = "1"
|
||||
|
||||
$bundledDotnet = Join-Path $PSScriptRoot "..\..\..\test1\.dotnet\dotnet.exe"
|
||||
$dotnet = if (Test-Path -LiteralPath $bundledDotnet) {
|
||||
(Resolve-Path $bundledDotnet).Path
|
||||
} else {
|
||||
(Get-Command dotnet -ErrorAction Stop).Source
|
||||
}
|
||||
$dotnet = (Get-Command dotnet -ErrorAction Stop).Source
|
||||
$project = Join-Path $PSScriptRoot "src\SmartB2B.Enova.Service\SmartB2B.Enova.Service.csproj"
|
||||
$daemonSource = Join-Path $PSScriptRoot "daemon"
|
||||
$adapterProject = Join-Path $PSScriptRoot "src\SmartB2B.Enova.Adapter\SmartB2B.Enova.Adapter.csproj"
|
||||
$daemonSource = Join-Path $PSScriptRoot "daemon-enova"
|
||||
$winSwSource = Resolve-Path (Join-Path $daemonSource "smartb2bsync-enova.exe")
|
||||
$output = [System.IO.Path]::GetFullPath($OutputPath)
|
||||
$workspace = [System.IO.Path]::GetFullPath($PSScriptRoot)
|
||||
$daemonOutput = Join-Path $output "daemon"
|
||||
|
||||
if ($output -eq [System.IO.Path]::GetPathRoot($output) -or $output.Length -lt 10) {
|
||||
if (-not $output.StartsWith($workspace, [StringComparison]::OrdinalIgnoreCase) -or
|
||||
$output -eq $workspace -or
|
||||
$output.Length -lt 10) {
|
||||
throw "Niebezpieczna ścieżka wyjściowa: $output"
|
||||
}
|
||||
|
||||
@@ -33,7 +32,12 @@ if (Test-Path -LiteralPath $output) {
|
||||
New-Item -ItemType Directory -Force -Path $output | Out-Null
|
||||
New-Item -ItemType Directory -Force -Path $daemonOutput | Out-Null
|
||||
|
||||
& $dotnet publish $project -c $Configuration --no-restore -o $output
|
||||
& $dotnet restore $adapterProject
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Przywracanie pakietów adaptera Enovy nie powiodło się."
|
||||
}
|
||||
|
||||
& $dotnet publish $project -c $Configuration -o $output
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Publikowanie usługi nie powiodło się."
|
||||
}
|
||||
79
publish-optima.ps1
Normal file
79
publish-optima.ps1
Normal file
@@ -0,0 +1,79 @@
|
||||
param(
|
||||
[string]$OutputPath = (Join-Path $PSScriptRoot "release-optima"),
|
||||
[ValidateSet("Debug", "Release")]
|
||||
[string]$Configuration = "Release"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$env:DOTNET_CLI_HOME = $PSScriptRoot
|
||||
$env:APPDATA = $PSScriptRoot
|
||||
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = "1"
|
||||
$env:DOTNET_CLI_TELEMETRY_OPTOUT = "1"
|
||||
|
||||
$dotnet = (Get-Command dotnet -ErrorAction Stop).Source
|
||||
|
||||
$project = Join-Path $PSScriptRoot "src\SmartB2B.Optima.Service\SmartB2B.Optima.Service.csproj"
|
||||
$daemonSource = Join-Path $PSScriptRoot "daemon-optima"
|
||||
$winSwSource = Resolve-Path (Join-Path $daemonSource "smartb2bsync-optima.exe")
|
||||
$output = [System.IO.Path]::GetFullPath($OutputPath)
|
||||
$workspace = [System.IO.Path]::GetFullPath($PSScriptRoot)
|
||||
$daemonOutput = Join-Path $output "daemon"
|
||||
|
||||
if (-not $output.StartsWith($workspace, [StringComparison]::OrdinalIgnoreCase) -or
|
||||
$output -eq $workspace -or
|
||||
$output.Length -lt 10) {
|
||||
throw "Niebezpieczna ścieżka wyjściowa: $output"
|
||||
}
|
||||
|
||||
if (Test-Path -LiteralPath $output) {
|
||||
Remove-Item -LiteralPath $output -Recurse -Force
|
||||
}
|
||||
|
||||
New-Item -ItemType Directory -Force -Path $output | Out-Null
|
||||
New-Item -ItemType Directory -Force -Path $daemonOutput | Out-Null
|
||||
|
||||
& $dotnet publish $project -c $Configuration -r win-x64 --self-contained true -o $output
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Publikowanie usługi Optimy nie powiodło się."
|
||||
}
|
||||
|
||||
Copy-Item $winSwSource (Join-Path $daemonOutput "smartb2bsync-optima.exe") -Force
|
||||
Copy-Item (Join-Path $daemonSource "smartb2bsync-optima.xml") $daemonOutput -Force
|
||||
Copy-Item (Join-Path $daemonSource "install.cmd") $daemonOutput -Force
|
||||
Copy-Item (Join-Path $daemonSource "uninstall.cmd") $daemonOutput -Force
|
||||
|
||||
$downloadBaseUrl = "https://demo.smartb2b.eu/files/smartb2b-sync-optima/"
|
||||
$manifestPath = Join-Path $daemonOutput "smartb2bsync-optima.xml"
|
||||
[xml]$manifest = Get-Content -Raw $manifestPath
|
||||
$packagedFiles = @(
|
||||
Get-ChildItem -Recurse -File $output |
|
||||
ForEach-Object { $_.FullName.Substring($output.Length).TrimStart('\') } |
|
||||
Where-Object { $_ -ne "daemon\smartb2bsync-optima.exe" } |
|
||||
Sort-Object
|
||||
)
|
||||
|
||||
foreach ($relativePath in $packagedFiles) {
|
||||
$download = $manifest.CreateElement("download")
|
||||
$urlPath = $relativePath.Replace('\', '/')
|
||||
$destination = if ($relativePath.StartsWith("daemon\", [StringComparison]::OrdinalIgnoreCase)) {
|
||||
"%BASE%\" + $relativePath.Substring("daemon\".Length)
|
||||
} else {
|
||||
"%BASE%\..\" + $relativePath
|
||||
}
|
||||
$download.SetAttribute("from", $downloadBaseUrl + $urlPath)
|
||||
$download.SetAttribute("to", $destination)
|
||||
$download.SetAttribute("failOnError", "false")
|
||||
[void]$manifest.service.AppendChild($download)
|
||||
}
|
||||
|
||||
$settings = [System.Xml.XmlWriterSettings]::new()
|
||||
$settings.Indent = $true
|
||||
$settings.Encoding = [System.Text.UTF8Encoding]::new($false)
|
||||
$writer = [System.Xml.XmlWriter]::Create($manifestPath, $settings)
|
||||
try {
|
||||
$manifest.Save($writer)
|
||||
} finally {
|
||||
$writer.Dispose()
|
||||
}
|
||||
|
||||
Write-Host "Gotowa usługa Optimy (self-contained win-x64): $output"
|
||||
Binary file not shown.
Binary file not shown.
@@ -8,14 +8,8 @@
|
||||
".NETCoreApp,Version=v8.0": {
|
||||
"SmartB2B.Enova.Service/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Bcl.AsyncInterfaces": "8.0.0",
|
||||
"Microsoft.Data.SqlClient": "5.2.2",
|
||||
"Microsoft.Identity.Client": "4.73.1",
|
||||
"Newtonsoft.Json": "13.0.3",
|
||||
"Sentry": "6.9.0",
|
||||
"SmartB2B.Enova.Contracts": "1.0.0",
|
||||
"System.IdentityModel.Tokens.Jwt": "8.3.1",
|
||||
"WampSharp.Default.Client": "23.8.1"
|
||||
"SmartB2B.Sync.Contracts": "1.0.0",
|
||||
"SmartB2B.Sync.Service": "1.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"SmartB2B.Enova.Service.dll": {}
|
||||
@@ -180,22 +174,22 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||
"assemblyVersion": "8.0.0.0",
|
||||
"fileVersion": "8.0.1024.46610"
|
||||
"fileVersion": "8.0.23.53103"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/8.0.2": {
|
||||
"Microsoft.Extensions.Logging.Abstractions/8.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"assemblyVersion": "8.0.0.0",
|
||||
"fileVersion": "8.0.1024.46610"
|
||||
"fileVersion": "8.0.23.53103"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -280,7 +274,7 @@
|
||||
"Microsoft.IdentityModel.Tokens/8.3.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Bcl.Memory": "9.0.0",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
|
||||
"Microsoft.IdentityModel.Logging": "8.3.1"
|
||||
},
|
||||
"runtime": {
|
||||
@@ -722,9 +716,27 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"SmartB2B.Enova.Contracts/1.0.0": {
|
||||
"SmartB2B.Sync.Contracts/1.0.0": {
|
||||
"runtime": {
|
||||
"SmartB2B.Enova.Contracts.dll": {
|
||||
"SmartB2B.Sync.Contracts.dll": {
|
||||
"assemblyVersion": "1.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SmartB2B.Sync.Service/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Bcl.AsyncInterfaces": "8.0.0",
|
||||
"Microsoft.Data.SqlClient": "5.2.2",
|
||||
"Microsoft.Identity.Client": "4.73.1",
|
||||
"Newtonsoft.Json": "13.0.3",
|
||||
"Sentry": "6.9.0",
|
||||
"SmartB2B.Sync.Contracts": "1.0.0",
|
||||
"System.IdentityModel.Tokens.Jwt": "8.3.1",
|
||||
"WampSharp.Default.Client": "23.8.1"
|
||||
},
|
||||
"runtime": {
|
||||
"SmartB2B.Sync.Service.dll": {
|
||||
"assemblyVersion": "1.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
@@ -787,19 +799,19 @@
|
||||
"path": "microsoft.data.sqlclient.sni.runtime/5.2.0",
|
||||
"hashPath": "microsoft.data.sqlclient.sni.runtime.5.2.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
|
||||
"path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512"
|
||||
"sha512": "sha512-cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==",
|
||||
"path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/8.0.2": {
|
||||
"Microsoft.Extensions.Logging.Abstractions/8.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
|
||||
"path": "microsoft.extensions.logging.abstractions/8.0.2",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512"
|
||||
"sha512": "sha512-arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==",
|
||||
"path": "microsoft.extensions.logging.abstractions/8.0.0",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Identity.Client/4.73.1": {
|
||||
"type": "package",
|
||||
@@ -1221,7 +1233,12 @@
|
||||
"path": "wampsharp.websockets/23.8.1",
|
||||
"hashPath": "wampsharp.websockets.23.8.1.nupkg.sha512"
|
||||
},
|
||||
"SmartB2B.Enova.Contracts/1.0.0": {
|
||||
"SmartB2B.Sync.Contracts/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"SmartB2B.Sync.Service/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
BIN
release-enova/SmartB2B.Enova.Service.dll
Normal file
BIN
release-enova/SmartB2B.Enova.Service.dll
Normal file
Binary file not shown.
Binary file not shown.
BIN
release-enova/SmartB2B.Enova.Service.pdb
Normal file
BIN
release-enova/SmartB2B.Enova.Service.pdb
Normal file
Binary file not shown.
BIN
release-enova/SmartB2B.Sync.Contracts.dll
Normal file
BIN
release-enova/SmartB2B.Sync.Contracts.dll
Normal file
Binary file not shown.
Binary file not shown.
BIN
release-enova/SmartB2B.Sync.Service.dll
Normal file
BIN
release-enova/SmartB2B.Sync.Service.dll
Normal file
Binary file not shown.
BIN
release-enova/SmartB2B.Sync.Service.pdb
Normal file
BIN
release-enova/SmartB2B.Sync.Service.pdb
Normal file
Binary file not shown.
BIN
release-enova/adapters/SmartB2B.Enova.Adapter.dll
Normal file
BIN
release-enova/adapters/SmartB2B.Enova.Adapter.dll
Normal file
Binary file not shown.
@@ -3,7 +3,7 @@ setlocal
|
||||
cd /d "%~dp0"
|
||||
|
||||
if not exist "smartb2bsync-enova.exe" (
|
||||
echo Brak smartb2bsync-enova.exe. Najpierw uruchom publish.ps1.
|
||||
echo Brak smartb2bsync-enova.exe. Najpierw uruchom publish-enova.ps1.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
BIN
release-enova/daemon/smartb2bsync-enova.exe
Normal file
BIN
release-enova/daemon/smartb2bsync-enova.exe
Normal file
Binary file not shown.
@@ -28,8 +28,10 @@
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Enova.Service.deps.json" to="%BASE%\..\SmartB2B.Enova.Service.deps.json" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Enova.Service.runtimeconfig.json" to="%BASE%\..\SmartB2B.Enova.Service.runtimeconfig.json" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Enova.Service.pdb" to="%BASE%\..\SmartB2B.Enova.Service.pdb" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Enova.Contracts.dll" to="%BASE%\..\SmartB2B.Enova.Contracts.dll" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Enova.Contracts.pdb" to="%BASE%\..\SmartB2B.Enova.Contracts.pdb" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Sync.Contracts.dll" to="%BASE%\..\SmartB2B.Sync.Contracts.dll" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Sync.Contracts.pdb" to="%BASE%\..\SmartB2B.Sync.Contracts.pdb" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Sync.Service.dll" to="%BASE%\..\SmartB2B.Sync.Service.dll" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/SmartB2B.Sync.Service.pdb" to="%BASE%\..\SmartB2B.Sync.Service.pdb" failOnError="false" />
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/adapters/SmartB2B.Enova.Adapter.dll" to="%BASE%\..\adapters\SmartB2B.Enova.Adapter.dll" failOnError="false" />
|
||||
|
||||
<download from="https://demo.smartb2b.eu/files/smartb2b-sync-enova/Azure.Core.dll" to="%BASE%\..\Azure.Core.dll" failOnError="false" />
|
||||
BIN
release-optima/Azure.Core.dll
Normal file
BIN
release-optima/Azure.Core.dll
Normal file
Binary file not shown.
BIN
release-optima/Azure.Identity.dll
Normal file
BIN
release-optima/Azure.Identity.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.Bcl.AsyncInterfaces.dll
Normal file
BIN
release-optima/Microsoft.Bcl.AsyncInterfaces.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.Bcl.Memory.dll
Normal file
BIN
release-optima/Microsoft.Bcl.Memory.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.CSharp.dll
Normal file
BIN
release-optima/Microsoft.CSharp.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.Data.SqlClient.SNI.dll
Normal file
BIN
release-optima/Microsoft.Data.SqlClient.SNI.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.Data.SqlClient.dll
Normal file
BIN
release-optima/Microsoft.Data.SqlClient.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.DiaSymReader.Native.amd64.dll
Normal file
BIN
release-optima/Microsoft.DiaSymReader.Native.amd64.dll
Normal file
Binary file not shown.
Binary file not shown.
BIN
release-optima/Microsoft.Extensions.Logging.Abstractions.dll
Normal file
BIN
release-optima/Microsoft.Extensions.Logging.Abstractions.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.Identity.Client.Extensions.Msal.dll
Normal file
BIN
release-optima/Microsoft.Identity.Client.Extensions.Msal.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.Identity.Client.dll
Normal file
BIN
release-optima/Microsoft.Identity.Client.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.IdentityModel.Abstractions.dll
Normal file
BIN
release-optima/Microsoft.IdentityModel.Abstractions.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.IdentityModel.JsonWebTokens.dll
Normal file
BIN
release-optima/Microsoft.IdentityModel.JsonWebTokens.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.IdentityModel.Logging.dll
Normal file
BIN
release-optima/Microsoft.IdentityModel.Logging.dll
Normal file
Binary file not shown.
Binary file not shown.
BIN
release-optima/Microsoft.IdentityModel.Protocols.dll
Normal file
BIN
release-optima/Microsoft.IdentityModel.Protocols.dll
Normal file
Binary file not shown.
BIN
release-optima/Microsoft.IdentityModel.Tokens.dll
Normal file
BIN
release-optima/Microsoft.IdentityModel.Tokens.dll
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user