Add shared ERP sync core and Optima adapter
This commit is contained in:
1 parent
a040a91d1f
commit
6c4e50f7a6
366 files changed
+4708
-479
No files matched your search
+4
-2
@@ -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
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
)
|
||||
|
||||
File renamed without changes.
@@ -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" />
|
||||
File renamed without changes.
@@ -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%
|
||||
File renamed without changes.
@@ -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>
|
||||
@@ -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ę."
|
||||
}
|
||||
@@ -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"
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file not shown.
BIN
Binary file not shown.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+42
-25
@@ -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": ""
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File renamed without changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file not shown.
File renamed without changes.
@@ -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
|
||||
)
|
||||
|
||||
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" />
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loaded 100 of 366 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user