Rozwiązanie zostało stworzone w języku PHP pod system Windows i wymaga do działania instalacji na serwerze kilku zależności:
- interpretera PHP 5.4 (kompilacja VC9 thread-safe x86)
- serwera Apache 2.4 (kompilacja VC9 x86)
- sterownika PHP dla Microsoft SQL Server w wersji 3.01
- sterownika Microsoft SQL Server 2012 Native Client w wersji 32-bitowej
- pakietu Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)
Odpowiednie pliki instalacyjne znajdują się w katalogu "soft".
PHP instalujemy w katalogu c:\php\php-5.4.44-x86-sqlsrv, tworzymy także katalog c:\php\logs z prawami do zapisu przez użytkownika, z którego ma być uruchamiany serwer Apache (standardowo jest to użytkownik SYSTEM, więc jeśli tego nie zmieniamy, to wystarczy po prostu utworzyć katalog c:\php\logs i nie przejmować się kwestią uprawnień).
Sterownik SQLSRV30.EXE rozpakowujemy do katalogu: c:\php\php-5.4.44-x86-sqlsrv\sqlsrv-3.01
Do katalogu c:\php\php-5.4.44-x86-sqlsrv przerzucamy plik php.ini z repozytorium. Następnie katalog c:\php\php-5.4.44-x86-sqlsrv dodajemy do zmiennej środowiskowej PATH i przelogowujemy się (lub restartujemy system). Po ponownym zalogowaniu, po wpisaniu w konsoli "php -v" powinna się bez żadnych błędów i ostrzeżeń wyświetlić wersja PHP:
PHP 5.4.44 (cli) (built: Aug 5 2015 22:12:38)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
Apache instalujemy w katalogu c:\php\httpd-2.4.16-VC9-x86, a do jego podkatalogu "conf" przerzucamy plik httpd.conf z repozytorium.
Oczywiście wszystkie powyższe nazwy katalogów można dowolnie pozmieniać, trzeba tylko pamiętać, aby nowe nazwy wprowadzić do plików php.ini i httpd.conf, oraz do zmiennej środowiskowej PATH.
Rozwiązanie (całą zawartość repozytorium optima-integrator-soap) umieszczamy w katalogu c:\php\aplikacja, po czym restartujemy usługę Apache (albo cały system).
Jeśli jeszcze nie posiadamy dostępu do wspomnianego repozytorium, a chcemy tylko dokończyć konfigurację, tworzymy w katalogu c:\php\aplikacja plik o nazwie phpinfo.php, a w nim następującą zawartość:
<?php
phpinfo();
Następnie w przeglądarce (na serwerze) otwieramy adres:
http://localhost/phpinfo.php
Powinna pokazać się bardzo długa, fioletowo-szara tabela z różnymi danymi konfiguracyjnymi. Jej ukazanie się oznacza, że cała konfiguracja działa.
Plik c:\php\aplikacja\phpinfo.php można w tym momencie usunąć.
Teraz na maszynie, która będzie klientem SOAP, uruchamiamy polecenie:
curl -s http://192.168.231.15/soap.php?wsdl
Oczywiście zamiast powyższego adresu IP podajemy adres IP lub nazwę hosta serwera Comarch ERP Optima. Polecenie powinno pokazać na ekranie krótki plik XML, zawierający komunikat "WSDL generation is not supported yet".
Jeśli pokazuje się coś innego, należy udrożnić łączność sieciową (np. tworząc odpowiednie reguły Zapory Windows).
Plik c:\php\aplikacja\includes\config.php zawiera dane dostępowe do bazy danych systemu Comarch ERP Optima, oraz szereg ustawień funkcjonalnych.
Zmienna $atrybut_kanal_sprzedazy
zawiera nazwę atrybutu, który powinien być utworzony na poziomie kontrahenta (nie każdy kontrahent musi go mieć, ale nadal należy go ręcznie utworzyć z poziomu interfejsu Optimy, jako atrybut liczbowy, kopiowany na dokumenty). Znaczenie atrybutu można interpretować dowolnie, niekoniecznie tak jak sugeruje komentarz w pliku.
Pozostałe zmienne (domyślne kategorie, pozycje planu kont, typ dokumentu, oraz identyfikator magazynu źródłowego) są bezpiecznymi wartościami domyślnymi, tj. są prawidłowe merytorycznie, jak również powinny istnieć w prawidłowo wdrożonej instancji Optimy. Oczywiście w miarę potrzeb można te wartości dostosowywać do swojej nietypowej konfiguracji.
Plik init.php zawiera zmienną $location
wskazującą na serwer SOAP. Należy w tej zmiennej wstawić realny adres IP lub nazwę hosta.
Wykonując metody SOAP dodajKontrahenta
lub dodajRezerwacjeOdbiorcy
, należy pamiętać o przekazywaniu prawidłowych (tj. istniejących w konfiguracji Optimy) form płatności, nazw cen i nazw grup kontrahentów.
Nazwy widniejące w przykładowych plikach są prawidłowe w standardowej instalacji Optimy, natomiast chcąc zastosować np. inne ceny należy sprawdzić ich nazwy w konfiguracji Optimy (bądź bezpośrednio w bazie danych).