# 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 wersję opublikowaną dla tej samej architektury co `op_base.dll` (`x86` jest domyślne, opcjonalnie użyj `.\publish-optima.ps1 -Architecture 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. - `extraFields` z dwoma istniejącymi atrybutami dokumentu: wartości mają być widoczne na nagłówku RO; nieznany kod ma zwrócić błąd bez zapisu dokumentu. Runner może sprawdzić ostatni scenariusz po podaniu dwóch kodów atrybutów tekstowych istniejących w firmie testowej: ```powershell dotnet run --project .\tests\SmartB2B.Optima.IntegrationTests -- --config .\src\SmartB2B.Optima.Service\config\optima.json --write-order --customer-id 2 --product-code SMARTB2B_TEST_TWR --attribute-code-1 SOURCE --attribute-value-1 B2B --attribute-code-2 NOTE --attribute-value-2 test ``` Test odczytuje zapisane wartości z `CDN.DokAtrybuty` i sprawdza, że próba użycia nieznanego kodu nie utworzyła RO. ## Waluty i zamówienia zagraniczne Runner przyjmuje `--currency` (domyślnie PLN), `--international` i `--eu`. Przykład zamówienia unijnego w EUR w przygotowanej firmie testowej: ```powershell dotnet run --project .\tests\SmartB2B.Optima.IntegrationTests -- --config .\src\SmartB2B.Optima.Service\config\optima.json --write-order --customer-id 2 --product-code SMARTB2B_TEST_TWR --currency EUR --international --eu ``` Powtórz dla eksportu spoza UE (`--currency USD --international`), klienta krajowego (`--currency PLN --eu`) oraz zagranicznego zamówienia w PLN (`--currency PLN --international --eu`). Użyj kontrahentów i walut przygotowanych w firmie testowej. `--eu` bez `--international` oznacza klienta krajowego. Po każdym zapisie runner odczytuje nagłówek i pozycje z bazy. Weryfikuje walutę, rodzaj transakcji (0 / 3 / 1), zgodność sum w walucie z wynikiem adaptera, a dla zamówień zagranicznych także stawki 0% na pozycjach i zerową kwotę VAT. W Enovie analogiczne wywołanie WAMP powinno zapisać ZO z cenami i płatnością w `currency_iso`, rodzajem VAT na danych dokumentu `Krajowy` / `Unijny` / `Eksportowy`, oraz zwrócić sumy w walucie zamówienia. Sprawdź ZO w EUR dla kontrahenta unijnego będącego podatnikiem VAT, eksport w USD, ZO krajowe w PLN i unijne ZO w PLN. Definicja ZO i ustawienia podatkowe kontrahenta muszą pozwalać ERP dobrać właściwe stawki; dla WDT pozycje powinny mieć 0%. Przed testami trybu `Approved` wykonaj kopię bezpieczeństwa bazy lub użyj firmy przeznaczonej wyłącznie do testów.