Grzegorz Warchoł Praca Inz(1) 1


0x08 graphic
0x08 graphic
0x01 graphic

WYDZIAŁ INFORMATYKI

STUDIA INŻYNIERSKIE

PRACA DYPLOMOWA

Grzegorz Warchoł

PORTAL INTERNETOWY DLA FIRMY HANDLOWEJ

Praca wykonana pod kierunkiem:

dr inż. Lech Kruś

WARSZAWA, 2007 r.


Autor: Grzegorz Warchoł

Tytuł: Portal internetowy dla firmy handlowej

Rok akademicki: 2006 / 2007

Dziekan Wydziału: dr inż. Jarosław Sikorski

Specjalność: sieci komputerowe

Opiekun specjalności: dr inż. Lech Kruś

Opiekun pracy: dr inż. Lech Kruś


Załącznik: płyta CD z oprogramowaniem oraz elektroniczną wersją pracy.

  1. Wstęp

Gwałtowny rozwój Internetu, stworzył możliwość licznym formom działalności gospodarczej wkroczyć w nowy etap rozwoju. Szczególną gałęzią biznesu która wykorzystuje powszechność i dostępność Internetu jest handel. Możliwość ukazania swojej oferty handlowej, wizerunku firmy sprawia, że podmioty handlowe mogą dotrzeć do praktycznie nieograniczonej liczby klientów. Właściwe wykorzystanie możliwości Internetu nie tylko w celach marketingowych, ale także w kierunku polepszenia zasad działania firmy może przynieść wymierne korzyści i oszczędności w prosperowaniu przedsiębiorstwa.

Podstawowym celem niniejszej pracy jest stworzenie oprogramowania portalu (aplikacji) wspomagającego działanie firmy handlowej. Portal ma za zadanie wspomóc szeroką komunikacje z klientem oraz z pracownikami wewnątrz firmy jak i tymi rozsianymi po całym kraju

W aplikacji zostaną zastosowane różne technologie internetowe, które ułatwią takie czynności jak przeglądanie, wyszukiwanie czy rejestrację, stworzone w możliwie przystępnym sposób dla nawet niedoświadczonego użytkownika Internetu. Dzięki zastosowaniu kontroli wprowadzanych danych do systemu, aplikacja pozwoli na bezpieczną pracę.

Aplikacja przeznaczona jest dla konkretnej firmy handlowej - GM Distribution, zajmującej się dystrybucją fonogramów (płyty z muzyką CD) oraz filmów (DVD, VHS).

W firmie tej do obsługi handlu używany jest komercyjny program magazynowy - SubiektGT firmy Insert, dla środowiska Windows oparty o bazę danych MSSQL. Proponowany portal będzie rozszerzał działanie programu magazynowego poprzez udostępnianie różnych danych w nim zawartych w Internecie.

Aplikacja pozwoli na przeglądania katalogu dystrybuowanych materiałów, zapowiedzi, nowości, możliwości komentowania i wyrażania opinii w postaci oceny na temat danego asortymentu oraz podstawowe dane dotyczące firmy. Nadrzędnym celem stworzenia portalu jest możliwość ulepszenia komunikacji pracownikom w tym także z pracującymi w terenie, łatwiejszy kontakt z klientem już współpracującym jak i tym potencjalnym zainteresowanym ofertą. Zostanie zapewniona możliwość tworzenia różnych wariantów zestawień analitycznych dotyczących pracy firmy.

W portalu zostaną wykorzystane dynamicznie tworzone strony HTML. Do tworzenia stron zostanie użyty, wykonywany po stronie serwera www, język skryptowy PHP[1] [2] [4] [5] [6] . Dane wyświetlane na stronach będą pobierane z dwóch baz danych - MSSQL[3] [7] oraz MySQL[2] [6] . Dane wprowadzane przez użytkowników portalu będą aktualizowane tylko w bazie MySQL, przez co obie bazy danych będą musiały pomiędzy sobą być synchronizowane. Synchronizacja baz zostanie rozwiązana poprzez stworzenie zestawu kilku funkcji.

W niniejszej pracy, w kolejnym rozdziale (drugim) przedstawia się cel stworzenia aplikacji, jej założenia oraz główne korzyści wynikające z działania portalu

W rozdziale trzecim są opisane techniki i technologie wykorzystane w implementacji portalu.

Rozdział czwarty zawiera opis realizacji portalu, poprzez pokazanie działania i synchronizacji baz danych, występowanie poszczególnych grup użytkowników oraz funkcji zestawień skierowanych do poszczególnych grup.

Rozdział piąty przedstawia przykłady ilustrujące administrowanie portalem i użytkownikami oraz prezentacje na tych przykładach interfejsu użytkownika.

W rozdziale szóstym jest przedstawiony zakres wymagań instalacji oprogramowania portalu.

Pracę kończy podsumowanie oraz bibliografia użyta przy realizacji projektu.

Załączona do pracy płyta CD zawiera:

  1. Cele, założenia i problemy projektowe portalu

Celem niniejszej pracy jest zaprojektowanie i wykonanie portalu internetowego oraz jego implementacja w firmie. Aplikacja nie tylko będzie wizytówką firmy w Internecie, prezentującą jej ofertę handlową, informacje na temat rodzaju działalności, ale także wspomoże komunikacje pracowników pomiędzy sobą, klientów z firmą oraz rozszerzy możliwości programu do obsługi handlu SubiektGT, wykorzystywanego już wcześniej w firmie.

Jednym z podstawowych warunków prawidłowego działania średniej wielkości firm handlowych, sprzedających jakikolwiek asortyment jest posiadanie programu do obsługi handlu. Program taki umożliwia wystawianie faktur sprzedaży, przeglądnie kartotek klientów, stanów magazynowych oraz prezentuje podstawowe analizy aspektów prowadzonej działalności. Każda firma posiada własny sposób działania i często bywa tak, że ogólno dostępne, komercyjne programy do obsługi handlu nie spełniają indywidualnych potrzeb danego przedsiębiorstwa. Praktycznie, takie programy komercyjne są zwykle aplikacjami opartymi o zamknięty kod źródłowy, a jedynym sposobem rozszerzenia ich możliwości, jest opłacenie autorskiej firmy w celu stworzenia potrzebnych modułów. Takie rozwiązanie jest najczęściej bardzo nieopłacalne, przewyższające często wartość licencji programu. Alternatywą rozszerzającą możliwości takich aplikacji jest stworzenie portalu internetowego, wykorzystującego bazę danych na której pracuje program magazynowy i w której składuje wszystkie swoje dane. W nowoczesnych aplikacjach do obsługi handlu wszystkie dane przechowywane są w relacyjnych bazach danych. Dzięki temu można w łatwy sposób, używając bezpłatnych narzędzi, stworzyć aplikację rozszerzającą możliwości programów do obsługi handlu na potrzeby indywidualne dla danej firmy.

Portal zostanie stworzony dla średniej wielkości firmy handlowej GM Distribution zajmującej się dystrybucją fonogramów (płyty z muzyką CD) oraz filmów (DVD, VHS).

Firma nie prowadzi sprzedaży detalicznej. Jej klientami są małe sklepy jak i duże hipermarkety i hurtownie. Bardzo duży zasób tytułowy asortymentu pozwala firmie być w czołówce branży w kraju. W przedsiębiorstwie jest ustabilizowana struktura stanowisk:

Wykonany portal będzie aplikacją korzystającą w dużej mierze z danych pobieranych z programu do obsługi handlu SubiektGT[10] .

Portal umożliwi przeglądanie oraz wprowadzanie szeregu danych, usprawniając dzięki temu komunikację wewnątrz firmy, pozwoli także klientom na łatwiejsze przeglądanie oferowanego asortymentu oraz jego zamawianie.

Fakturzyści otrzymają dostęp do dynamicznie zmieniających się informacji na temat kontrahentów. Informacje te mogą dotyczyć takich rzeczy jak np. przyznanie rabatu, zmiana miejsca dostawy towaru, zmiana terminu płatności oraz innych informacji potrzebnych przy dokonania sprzedaży, a niedostępnych w programie SubiektGT.

Magazynierzy, niezależnie do programu do obsługi handlu będą mogli uzyskać dostęp do wszystkich danych o towarze, ewentualnych brakach wynikających dużego zapotrzebowaniu na dany tytuł. Dostają także informacje o zamówieniach złożonych poprzez portal.

Dział księgowości uzyska wgląd do wykazu dokumentów wystawionych danego dnia, tygodnia, przed ich dostarczaniem w formie fizycznej.

Koordynatorzy sprzedaży - będą mogli tworzyć uwagi i inne informacje na temat swoich klientów, będą mieli dostęp do analiz sprzedaży, możliwość sprawdzania zamówień klientów wprowadzonych przez Internet - zatwierdzenie lub negacja potencjalnych zamówień.

Użytkownicy zarejestrowani w portalu jako klienci mogli zgłaszać zamówienia na dany asortyment towarowy, modyfikować i przeglądać zamówienia wcześniej złożone. Zgodnie z tymi zamówieniami wystawiane są później faktury sprzedaży.

Szefostwo firmy uzyska dostęp do informacji analitycznych w formie różnych zestawień, odnoszących się do rejonu, danego pracownika czy asortymentu.

Administratorzy portalu otrzymają możliwość zarządzaniem uprawnieniami użytkowników poprzez przypisywanie ich do poszczególnych grup. Mogą także edytować profil poszczególnych użytkowników. Osoby zarządzające portalem będą mogły także przeglądać różne statystyki dotyczące portalu, informacje dotyczące bezpieczeństwa, jak historie systemu rejestrującego logowania użytkowników, jak i statystyk wykazujących popularność aplikacji poprzez prezentacje liczby komentarzy, ocen asortymentu, złożonych zamówień przez klientów. Administratorzy mają także możliwość modyfikowania opisów towaru, blokowania jego wyświetlania, gdy. np. towar zostaje wycofany ze sprzedaży.

Proponowana aplikacja będzie korzystała z dwóch systemów baz danych, komercyjnej bazy MSSQL dostarczonej wraz z programem SubiektGT oraz darmowego systemu baz MySQL. Zastosowanie dwóch baz wynika z braku możliwości ingerencji w kod źródłowy programu. Bezpośredni dostęp do bazy MSSQL i dokonywanie w niej zmian uniemożliwiają ograniczenia licencyjne. Portal dane będzie pobierał z bazy MSSQL jednak sam nie będzie w tej bazie żadnych danych zmieniał. Do wprowadzania danych będzie wykorzystana baza MySQL. Zastosowanie dwóch baz danych wymaga stworzenia funkcji synchronizujących dane pomiędzy nimi tak, aby użytkownik miał wrażenie spójnej pracy na jednym systemie.

Poniżej na Rys. 2.1 znajduje się ogólny schemat działania portalu, na którym widoczna jest wymiana danych pomiędzy użytkownikami, a serwerem WWW oraz dwie bazy danych - MySQL i MSSQL. Pierwsza zwraca zapytania wykonane przez użytkowników i ewentualnie wprowadza / aktualizuje dane, druga natomiast tylko wysyła dane, nie pozwalając na ich modyfikacje. Pokazane jest także wprowadzania danych przez pracowników firmy do bazy MSSQL poprzez program SubiekGT.

0x08 graphic
0x01 graphic

Rys. 2.1 Ogólny schemat działania portalu

  1. Wykorzystane technologie

Zaprojektowana aplikacja umożliwia tworzenie dynamicznych stron HTML z wykorzystaniem języka PHP, którego kod wykonuje się po stronie serwera WWW. Język ten wybrano ze względu na jego prostotę oraz bardzo duże możliwości tworzenia zaawansowanych aplikacji internetowych. Jego struktura składni oparta jest na innych popularnych językach takich jak Java, C, Perl, a ścisła integracja z protokołem HTTP powoduje, że język ten stał się bardzo popularnym narzędziem do tworzenia aplikacji internetowych. Innym ważnym atutem tego języka jest współpraca z bardzo wieloma standardami baz danych, zarówno komercyjnymi takimi jak Oracle, MS SQL czy „otwartymi” projektami jak MySql i PostgreSql. PHP bardzo wydajnie łączy się z bazami obsługującymi Open Database Connection (ODBC), dzięki czemu można podłączyć dowolną aplikację do tego typu baz. Istnieje bardzo wiele funkcji zawartych w PHP, które wspierają popularne technologie w Internecie. Generowanie plików PDF, arkuszy kalkulacyjnych Microsoft Excel, parsowanie i tworzenie plików XML jest proste dzięki zastosowanym w nim modułom. Jest to tylko mała część zawartych w PHP możliwości, a jako że jest to projekt otwarty, istnieją setki dodatkowych modułów tworzonych przez użytkowników tego języka zwiększających jego horyzonty działania.

Do kontroli danych, wprowadzanych przez użytkowników z wykorzystaniem formularzy, służy skryptowy język JavaScript. Stara on się sprawdzać dane wprowadzane przez użytkowników oraz wskazywać potencjalne błędy przy wypełnianiu formularzy, np. przy wypełnianiu formularza rejestracji. Skrypt stworzony w języku JavaScript umieszczany jest w załączonym, interpretowanym po stronie klienta pliku, lub bezpośrednio w kodzie strony HTML pomiędzy znacznikami <scritpt></script>. Wszystkie skrypty są interpretowane dzięki obiektom wbudowanym w przeglądarkę. Wykorzystując to JavaScript może komunikować się z użytkownikiem, kontrolować jego działania oraz modyfikować treść witryny, bez konieczności wysyłania jakichkolwiek danych do serwera.

Podstawowe dane każdego użytkownika, który przeszedł pomyślnie autoryzacje umieszczane są w systemie logów serwisu. System ten oparty jest na plikach XML parsowanych przez PHP. XML (Extensible Markup Language) to uniwersalny język przeznaczony do reprezentowania danych w strukturze, którą nadaję mu programista. Dzięki niezależności platformowej języka XML, dane z dokumentów tego typu zachowują zadaną im strukturę, bez względu na typ przeglądarki lub serwera. Zapis w sytemie logów do języka XML pozwala nie tylko na łatwe przeglądanie logów bezpośrednio poprzez przeglądarkę internetową, ale także na prosty eksport danych do np. arkuszy kalkulacyjnych w celu dalszych analiz.

Istotną cechą języków JavaScript i XML jest zastosowanie ich w technice AJAX[8] . AJAX (Asynchronous JavaScript and XML) czyli asynchroniczny JavaScript i XML - chociaż często jest nazywany oddzielną technologią - nią nie jest - jest raczej połączeniem kilku technologii, takich jak wspomniane Javascript, XML oraz języków skryptowych działających po stronie serwera - np. PHP. W aplikacji wykorzystuje się go do wykonywania pewnych procedur po stronie serwera, bez potrzeby ponownego przetworzenia przez przeglądarkę całej witryny, dzięki czemu użytkownik ma wrażanie ciągłej i efektywnej pracy. W aplikacji wykorzystano procedury AJAX do przyśpieszania niektórych działań, takich jak np. ocenianie towaru, gdzie nie ma potrzeby przeładowania całej strony - dzięki czemu użytkownik ma wrażenie, że witryna szybciej reaguje na jego działania.

Głównymi nośnikami danych w aplikacji są dwie struktury baz danych: MySQL i MSSQL. Pierwsza wymieniona baza jest bardzo popularnym narzędziem w tworzeniu serwisów internetowych. Powodem wyboru tej bazy były liczne zalety MySQL, takie jak prostota obsługi, elastyczność i prędkość działania oraz licencja GPL. Baza ta dobrze współpracuje z PHP, dzięki czemu serwisy tworzone w tych technologiach są bardzo popularne w Internecie. Drugą bazą wykorzystywaną w aplikacji jest MSSQL (Microsoft SQL Server). Jest to komercyjne oprogramowanie wspierane i rozpowszechniane przez firmę Microsoft. Stworzona aplikacja wykorzystuje bazę MSSQL do pobierania danych wprowadzonych poprzez program obsługi handlu. Ograniczenia licencyjne oraz złożoność budowy komercyjnej bazy danych uniemożliwiają jakiekolwiek zmiany w tej bazie poprzez portal, więc wszelkie dane wprowadzane przez użytkowników portalu będą wyłącznie składowane w bazie MySQL. Baza MySQL będzie musiała być synchronizowana pod kątem bazy MSSQL, aby użytkownicy mieli wrażenie przezroczystej pracy ze względu na oba systemy.

Głównym programem do obsługi handlu w firmie GM Distribution jest SubiektGT, flagowy program wrocławskiej firmy Insert. Aplikacja ta została stworzona z myślą o małych i średnich firmach. Bardzo dobrze sprawdza się jako narzędzie do wystawiania dokumentów sprzedaży oraz obsługi magazynu. Głównym nośnikiem danych w tym programie jest właśnie wspomniana wyżej komercyjna baza danych MSSQL. Program w swoich podstawowych parametrach pozwala na dosyć ograniczone możliwości analiz po-sprzedażnych oraz nie daje możliwości udostępnienia swoich możliwości poza sieć firmową. Jednak zaletą jego jest zastosowanie właśnie wspomnianej bazy MSSQL. Umożliwia ona łatwe pozyskiwanie danych, jednak w przypadku zmieniania w niej danych w sposób inny niż poprzez program SubiektGT można w łatwo uszkodzić spójność tych danych. Budowa całego projektu będzie opierała się na scentralizowanej bazie MSSQL i wspomagającej ją w aplikacji bazie MySQL.

  1. Realizacja portalu dla firmy handlowej

Projektując i implementując portal starano się stworzyć uniwersalną platformę do wymiany informacji pomiędzy pracownikami firmy oraz jej klientami. Portal pozwala gromadzić i prezentować liczne informacje na temat oferowanego asortymentu, klientów firmy oraz jej pracowników. System starano się zaprojektować w taki sposób, aby był przyjazny i łatwy w użyciu pod względem interfejsu użytkownika oraz żeby dawał duże możliwości działań, dla różnych grup użytkowników, ułatwiając im przy tym codzienną pracę. W bieżącym rozdziale w kliku punktach zostaną pokazane różne problemy jakie zostały napotkane przy realizacji portalu, takie jak wykorzystanie dwóch baz danych i ich synchronizacja oraz metody rozwiązania tych problemów. Opisane zostaną też funkcje, jakie portal realizuje poprzez opis opcji dostępnym poszczególnym grupom użytkowników.

Na następnej stronie znajduję się ogólny diagram możliwych działań użytkownika odwiedzającego portal. Użytkownicy portalu są sklasyfikowani do różnych grup o różnym zakresie dostępu do funkcji portalu. Dokładny opis grup użytkowników znajduje się w następnym punkcie. Na diagramie 4.1 pokazano, że użytkownik wchodząc na portal ma możliwość rejestracji lub autoryzacji. Niezarejestrowany użytkownik ma tylko możliwość przeglądania i oceniania asortymentu. Po dokonaniu rejestracji użytkownik domyślnie zostaje przypisany do grupy Gość. Użytkownicy z grupy Gość mogą tylko komentować towar prezentowany w portalu. Użytkownik należący do innej grupy niż Gość po przejściu autoryzacji zostanie przekierowany na swoją podstronę główną z dostępem do różnych opcji, innych dla każdej z grup.


0x01 graphic

Rys. 4.1 Ogólny diagram możliwych działań użytkownika


    1. Grupy zarejestrowanych użytkowników

W portalu wszyscy zarejestrowani użytkownicy podzieleni są na osiem grup, z których sześć jest przyporządkowanych strukturze stanowisk występującej w firmie, siódma odpowiada klientowi współpracującemu już firmą, a ostatnia to grupa Gość, dla potencjalnych klientów. Poniższa tabela przedstawia przyporządkowanie nazw grup użytkowników do zmiennej sesyjnej $_SESSION[`stanowisko']. Zmienna ta wykorzystywana jest do przydziału załogowanemu użytkownikowi odpowiednich funkcji w portalu.

Dla każdej grupy użytkowników zdefiniowany jest, określony zestaw funkcji dostępnych w portalu.

Wartość zmiennej $_SESSION[`stanowisko']

Nazwa grupy użytkowników

1

Administrator

2

Magazynier

3

Fakturzysta

4

Księgowość

5

Koordynator sprzedaży

6

Szef

7

Klient

8

Gość

Tab. 4.4.1 Przyporządkowanie nazw grup użytkowników do zmiennej sesyjnej $_SESSION [`stanowisko'].

Po udanej rejestracji oraz aktywacji konta, użytkownik zostaje domyślnie przydzielony do grupy Gość. Jest to podstawowa grupa, której członkowie w porównaniu do użytkowników nie zarejestrowanych, posiadają dostęp do dwóch funkcji portalu, komentowania oraz oceniania asortymentu. Każda następna grupa użytkowników posiada funkcje grupy Gość.

Grupa Magazynier ukierunkowana jest na pracowników magazynu. Funkcje zawarte w portalu dają im szybki dostęp niezależnie od programu magazynowego, do wszelkich informacji na temat sprzedawanego asortymentu, zestawień na temat jego stanu lub ewentualnych braków. Grupa ta dostaje także informacje o zamówieniach złożonych przez Internet, które realizują i dostarczają fakturzystą.

Kolejną grupa to Fakturzysta, przypisana pracownikom odpowiedzialnym ze wystawianie dokumentów sprzedaży. Użytkownicy tej grupy poprzez portal mają dostęp do ewentualnych uwag na temat klienta, wprowadzanych poprzez regionalnych koordynatorów sprzedaży. Uwagi te mogą zawierać wszelkie informacje pomocne przy wystawianiu dokumentów sprzedaży, jak terminy płatności, wielkości rabatu lub blokada klienta.

Księgowość to grupa przydzielona do działu księgowości firmy. Pracownicy tego działu nie mają dostępu do programu magazynowego, gdyż dział ten nie znajduje się w głównym budynku firmy. Dzięki funkcją portalu otrzymują możliwość wglądu dokumentów wystawionych według zadanego okresu, przed dostarczeniem ich w formie fizycznej co skraca czas obiegu dokumentów ułatwiając pracę temu działowi.

Grupa Szef obejmuje ścisłe kierownictwo firmy. Portal dostarcza im dostęp do analiz finansowych firmy, takich jak wartość sprzedaży asortymentu lub ranking sprzedaży według fakturzystów. Szef firmy może bez wychodzenia z domu mieć możliwość analizy działania firmy poprzez pokazanie czynników sprzedaży.

Koordynator sprzedaży to grupa, a zarazem nazwa stanowiska na którym znajdują się pracownicy odpowiedzialni za utrzymywanie kontaktów z klientami oraz pozyskiwaniem nowych. Na każde województwo przydzielony jest jeden koordynator działający na jego terenie. Nie posiadają oni możliwości korzystania z programu do obsługi handlu, jednak dzięki portalowi mają wgląd do informacji analitycznych dotyczących swoich klientów, jak statystyki sprzedaży, liczba zamówień przez Internet. Otrzymują również możliwość kontroli składanych zamówień przez swoich klientów, poprzez akceptacje lub usunięcie danego zamówienia. Mogą także tworzyć pewne notatki na temat klientów, brane pod uwagę przez fakturzystów przy realizacji zamówienia.

Do grupy Klient należą wszyscy klienci współpracujący z firmą. Firma GM Distribution jest hurtownią i nie prowadzi sprzedaży detalicznej, klientami firmy są zarówno małe sklepy, markety, hurtownie jak i hipermarkety. Każdy użytkownik z grupy Klient ma możliwość składania zamówień poprzez portal, modyfikacji zawartości zamówienia oraz przeglądnia wcześniejszych zamówień. Poniżej przedstawiony jest schemat blokowy złożenia zamówienia oraz jego realizacji. Klient tworzy i wysyła zamówienie, koordynator sprzedaży po pomyślnej weryfikacji zatwierdza, magazynier składa i przekazuje do działu fakturowania, gdzie dokonuje się ostatni etap realizacji zamówienia przed dostarczeniem go do klienta. W przypadku nie zaakceptowania zamówienia, zostaje ono usunięte z systemu.

0x01 graphic

Rys 4.4.1 Schemat blokowy przebiegu realizacji zamówienia

Osoby przyporządkowane do grupy Administrator zarządzają portalem. Grupa ta ma możliwość zarządzania użytkownikami poprzez ich edycje, dodawania do poszczególnych grup. Zarządza także grupami użytkowników przypisując im dostęp do różnych zestawień i funkcji portalu oraz przegląda udane logi autoryzacji wszystkich użytkowników. Administrator może blokować wyświetlanie towaru, aby nie był dostępny do wglądu innym użytkownikom w przypadku gdy np. towar został wycofany ze sprzedaży. Wprowadza także opisy asortymentu prezentowanego w aplikacji oraz ma możliwość usuwania niecenzuralnych komentarzy użytkowników.

    1. Wykorzystanie baz danych

Jak już zostało wspomniane we wcześniejszych rozdziałach, aplikacja wykorzystuje do działania dwie bazy danych - komercyjną, dostarczoną w raz z systemem sprzedaży SubiektGT - bazą MSSQL oraz drugą, bezpłatną bazę MySQL.

Baza MSSQL zawiera strukturę około 250 tabel stanowiących trzon działania programu SubiektGT, przechowuje wszystkie dane wprowadzane poprzez ten program. Wykonana aplikacja wykorzystuje część z tych tabel do prezentacji różnego rodzaju danych, począwszy od informacji o towarze, po analizy sprzedaży i działania firmy, jednak sama aplikacja żadnych danych w bazie MSSQL nie zmienia. Poniżej przedstawiona jest tabela wykorzystywanych tabel z bazy MSSQL oraz opis ich przeznaczenia. Zmian w tych tabelach dokonuje tylko SubiektGT.

Nazwa tabeli

Opis

Ewidencja adresów. Id obiektów mogą się powtarzać- ważne typy adresów

Dokumenty handlowe i magazynowe

Parametry dokumentu

Obroty na dokumentach h. i m.

Ewidencja kontrahentów

Relacja kontrahenta i cecha

Parametry sterujące kartoteką kontrahentów

Słownik cech kontrahentów

Słownik cech towarów

Słownik grup kontrahentów

Słownik grup towarowych

Słownik magazynów podmiotu

Ewidencja towarów

Tabela złączeniowa towaru i cech

Ceny sprzedaży

Tab.4.1.1 Tabele bazy MSSQL oraz opis przeznaczenia wykorzystanych w portalu[10]

MySQL jest bazą przechowującą wszystkie dane wprowadzane poprzez portal. Uzupełnia ona też informacje zawarte w bazie MSSQL. Przykładem uzupełnień informacji może być tu opis danego towaru prezentowany w portalu. Program SubiektGT posiada rozbudowaną kartotekę towarową, gdzie można danemu asortymentowy przydzielić wiele opisujących go właściwości, jak np. grupa, cecha, data premiery, zdjęcie itp. Problem stwarza natomiast opcja pozwalająca na opis towaru, którego zapis dokonuje się w formacie RTF (Rich Text Format) - trudnym do parsowania i przy tym do wyświetlenia przez PHP w portalu. Dla rozwiązania powyższego problemu została utworzona tabela iz_towar w bazie MySQL, która zawiera relacje poprzez pole id_towar_sub z kluczu głównym Id_Tw tabeli tw_Towar w bazie MSSQL. W tabeli tej wprowadzany jest opis wstępny - jest to krótka informacja o towarze - i szczegółowy - pełny opis danego dla danego towaru prezentowanego w portalu. Podobnie ma się z tabelą iz_user, w której są zapisane dane wszystkich użytkowników portalu. Zawiera ona pole id_user_sub, której wartość identyfikuje użytkownika z grupy Klient zapisanego w programie SubiektGT tabeli kh__Kontrahent. Pusta wartość w tym polu oznacza że dany użytkownik nie należy do grupy Klient, lub nie posiada wpisu w programie handlowym.

Poniżej przedstawiona jest lista tabel z bazy MySQL użytych do budowy portalu.

Nazwa

Opis

iz_aktywacja

Przechowuje klucz sesji, nazwę i email użytkownika który jeszcze nie dokonał aktywacji konta

iz_koment_towar

komentarze do towarów

iz_online

Użytkownicy online

iz_stanowisko

słownik grup użytkowników

iz_top

lista najlepiej sprzedających się towarów

iz_towar

Słownik towarów

iz_towar_ocena

Oceny towarów

iz_user

Słownik użytkowników portalu

iz_zam_real

Zamówienia zaakceptowane

iz_zamowienia

Zamówienia przed akceptacją

iz_zestawienie

Zestawienia dla poszczególnych grup

Tab.4.1.2 Lista tabel używanych w portalu bazy MySQL

    1. Synchronizacja danych

Niektóre zapytania generowane przez portal do bazy danych, programu SubiektGT wymagają przetworzenia ogromnej ilości rekordów, co mam wpływ na wydajność systemu. Przy kilkudziesięciu wywołaniach na raz, niektóre mogą po prostu spowodować zawieszenie systemu. Przykładem takiego zapytania jest funkcja generująca dane najlepiej sprzedającego się asortymentu z ostatnich trzydziestu dni, umieszczona na stronie głównej, mająca za cel zachęcić potencjalnych klientów do zapoznania się z popularnym asortymentem. Zamiast każdorazowo wywoływać tą funkcję i obciążać system zastosowano prosty model synchronizacji danych, w którym funkcja jest wywoływana tylko raz dziennie, a wynik jej zapisany jest bazie MySQL w tabeli iz_top. Zawartość tabeli iz_top zostaje wyświetlona w portalu praktycznie bez obciążeń dla systemu.

W aplikacji zaprojektowano specjalną funkcję synchron_klient() w celu zapewnienia synchronizacji użytkowników z grupy Klient między bazami danych MSSQL i MySQL Może się okazać, że użytkownik, który się zarejestruje w portalu i otrzyma domyślnie podstawową grupę Gość, jest już w bazie klientów programu SubiektGT, więc powinien mieć dostęp do usług grupy Klient. Rozpatrzmy sytuacje, która powstaje, gdy zostanie założona nowa kartoteka klienta w programie SubiektGT. Klient taki powinien również dostać dostęp do usług dla zarejestrowanych użytkowników portalu. Wprowadzane ręcznie danych, każdego nowego klienta może okazać się, dla administratora co najmniej uciążliwe. Ostatnim problemem może być aktualizacja danych klienta w portalu zmienionych w programie SubiektGT. Powyższe problemy rozwiązuje właśnie funkcja synchron_klient(). Wywoływana przez administratora przykładowo raz dziennie synchronizuje dane użytkowników z tabeli iz_user bazy MySQL pod kątem kartotek klientów zawartych w tabelach kh__Kontrahent oraz adr__Ewid bazy MSSQL programu SubiektGT. Algorytm funkcji sprowadza się do porównania w pętli wszystkich klientów z programu SubiektGT z użytkownikami portalu z bazy MySQL. Funkcja zawiera dwa warunki kontroli danych. W pierwszym warunku sprawdzane jest, czy dany klient istnieje w obydwu bazach porównując klucz głowny Id_Kh tabeli kh__Kontrahent z polem id_klient_sub tabeli iz_user. Jeżeli warunek zwraca rekord funkcja sprawdza wszystkie pola tabeli iz_user pod względem poprawności danych i w razie jakichkolwiek różnic aktualizuje odpowiednie pole. Drugi warunek opiera się na założeniu, że użytkownik zarejestrował się w portalu, otrzymał grupę domyślną użytkownika Gość, ale jego kartoteka klienta jest też założona w programie SubiektGT, więc powinien mieć udostępnione korzystanie z usług dla grupy Klient. Funkcja sprawdza więc wartości pola nip tabeli iz_user z wartością pola adr_NIP tabeli adr__Ewid, gdzie oba pola zawierają niepowtarzalny numer identyfikacyjny podatnika, następnie sprawdzane są pola email tabeli iz_user z polem kh_Email tabeli kh__Kontrahent. Gdy zapytanie zwróci rekord następuje aktualizacja pola user tabeli iz_user wartością pola kh_Symbol tabeli kh__Kontrahent, gdzie pole user jest nazwą użytkownika logującego się do systemu, a pole kh_Symbol unikalnym symbolem klienta w programie SubiektGT, użytkownik zostaje przydzielony do grupy Klient poprzez zmianę wartości pola stanowisko. Po takiej aktualizacji użytkownik nie ma możliwości zalogowania się do systemu używając starej nazwą użytkownika, więc funkcja wysyła mail informujący o zmianie nazwy użytkownika do portalu oraz o zakresie dostępu do usług dla grupy Klient. Funkcja ponadto aktualizuje dodatkowe dane użytkownika takie jak nazwa firmy, adres. Jeżeli powyższe oba warunki nie zostały spełnione funkcji zakłada że dany klient którego kartoteka istnieje w programie SubiektGT nie posiada konta w portalu. Funkcja tworzy więc nowe konto użytkownika portalu w bazie MySQL, przydzielając nazwę użytkownika jako symbol kontrahenta, losowo wygenerowane hasło oraz wypełniając dodatkowe dane. Następuje także wysłanie maila do klienta informującego o założeniu konta, wraz z danymi niezbędnymi do zalogowania się.

Poniżej znajduje się cały kod funkcji synchron_klient().

function synchro_klient() {

// połączenie z bazą MSSQL - przez ODBC

$link1 = @odbc_connect ('serwer2','sa','') or die("Could not connect");

// zapytanie to bazy danych tworzące zbiór wszystkich klientów w systemie SubiektGT

$query1 = "SELECT

kh_Id,

kh_Symbol as [KODD],

woj_Nazwa AS [WOJ],

adr_Nazwa AS [Nazwa],

adr_NazwaPelna AS [Pelna],

adr_Telefon AS [Telefon],

adr_Faks AS [Fax],

adr_Adres AS [Adres],

adr_Ulica AS [Ulica],

adr_NrDomu AS [Nr domu],

adr_NrLokalu AS [Nr lokalu],

adr_Kod AS [Kod],

kh_Email AS [Email],

adr_Miejscowosc AS [Miejscowosc],

adr_NIP

FROM kh__Kontrahent, adr__Ewid, sl_Wojewodztwo

WHERE adr_IdObiektu=kh_Id

AND adr_IdWojewodztwo = woj_Id

AND adr_TypAdresu=1

AND woj_Nazwa IS NOT NULL

AND adr_NazwaPelna IS NOT NULL

";

$queryexe = odbc_exec($link1,$query1) or die("Błąd wykonania zapytania");

//połączenie z bazą MySQL

$link = @mysql_connect('localhost','root','1981') or die("Błąd połączenia".mysql_error());

mysql_select_db("baza") or die("Nie można wybrać bazy".mysql_error());

$k = 0;

$data = date("Y-m-d H:i:s");

while (odbc_fetch_row($queryexe)) {

/* warunek negujący wybór klientów z bazy MSSQL posiadających „polskie”

znaki w kodzie kontrahenta (tabela kh__Kontrahent, pole kh_Symbol) */

if (

strstr(strtolower(odbc_result($queryexe,"KODD")),"ł") == false

&& strstr(strtolower(odbc_result($queryexe,"KODD")),"ą") == false

&& strstr(strtolower(odbc_result($queryexe,"KODD")),"ś") == false

&& strstr(strtolower(odbc_result($queryexe,"KODD")),"ó") == false

&& strstr(strtolower(odbc_result($queryexe,"KODD")),"ź") == false

&& strstr(strtolower(odbc_result($queryexe,"KODD")),"ń") == false

&& strstr(strtolower(odbc_result($queryexe,"KODD")),"ż") == false

&& strstr(strtolower(odbc_result($queryexe,"KODD")),"ć") == false

&& strstr(strtolower(odbc_result($queryexe,"KODD"))," ") == false

&& strstr(strtolower(odbc_result($queryexe,"KODD")),"ę") == false

){

/*zmienna odpowiedzialna za wynik synchronizacji, przyjmuje wartość 1, gdy znaleziono klienta w obu bazach i dane są tylko uaktualniane lub 0, gdy danych klienta nie znaleziono bazie MySQL i jest automatycznie zakładane nowe konto użytkownika /*

$i = 0;

$nip = preg_replace('/\-/','',odbc_result($queryexe,"adr_NIP"));

$kod = odbc_result($queryexe,"KODD");

$kod = strtolower($kod);

$ulica = odbc_result($queryexe,"Ulica")." ".odbc_result($queryexe,"Nr domu");

$random_password = substr(md5(uniqid(microtime())), 0, 6);

$password = md5($random_password);

$query2 = " SELECT * FROM iz_user

WHERE (

id_user_sub = '".odbc_result($queryexe,"kh_Id")."'

OR replace(nip,'-','') = '".$nip."')

";

$result = mysql_query($query2) or die (mysql_error());

while ($myrow = mysql_fetch_assoc($result)){

$i++;

}

/*aktualizacja danych użytkownika, jeżeli nastąpiły jakieś zmiany użytkownik zostanie o tym poinformowany wiadomością email */

if($i == 1){

$myrow2 = mysql_fetch_assoc($result);

$query = "UPDATE iz_user SET

id_user_sub = '".odbc_result($queryexe,"kh_Id")."',

user = '".$kod."',

imie = '".odbc_result($queryexe,"Nazwa")."',

nazwisko = '".odbc_result($queryexe,"Pelna")."',

ulica = '".$ulica."',

kod = '".odbc_result($queryexe,"Kod")."',

miasto = '".odbc_result($queryexe,"Miejscowosc")."',

wojewodztwo = '".odbc_result($queryexe,"WOJ")."',

nip = '".odbc_result($queryexe,"adr_NIP")."',

stanowisko = 7,

aktywny = 1,

data_synchro = '$data',

email = '".odbc_result($queryexe,"Email")."'

WHERE (

id_user_sub = '".odbc_result($queryexe,"kh_Id")."'

OR replace(nip,'-','') = '".$nip."'

)";

mysql_query($query) or die(mysql_error());

$email = odbc_result($queryexe,"adr_NIP");

$msg = "Nastąpiła aktualizacja twojej nazwy użytkownika,

poprzednia: <b>".$myrow2['user']."<b> została zmieniona

na $kod , hasło i inne ustawinie pozostają bez zmian";

wyslij_mail($email,"Zmiana Portal GM",$msg);

}

//założenie nowego konta, użytkownik zostaje przydzielony do grupy Klient

if($i == 0){

$query = "

INSERT INTO iz_user

(id_user_sub,user, password, imie, nazwisko, ulica, kod, miasto, wojewodztwo, nip, stanowisko, data_synchro)

VALUES ('".odbc_result($queryexe,"kh_Id")."',

'".$kod."',

'".$password."',

'".odbc_result($queryexe,"Nazwa")."',

'".odbc_result($queryexe,"Pelna")."',

'".$ulica."',

'".odbc_result($queryexe,"Kod")."',

'".odbc_result($queryexe,"Miejscowosc")."',

'".odbc_result($queryexe,"WOJ")."',

'".odbc_result($queryexe,"adr_NIP")."',

stanowisko = 7,

'$data')";

mysql_query($query);

}

}

}

}

Wszystkie funkcje synchronizujące obie bazy wykonywane są przez administratora w jego panelu administracyjnym.

    1. Uwierzytelnianie i bezpieczeństwo

Uwierzytelnienie w portalu odbywa się za pomocą funkcji logowanie(). Wykorzystuje ona jedną z istotnych właściwości PHP - tzw. zmiennych sesyjnych[9] . Po wypełnieniu przez użytkownika formularza logowania, pomyślnym przejściu weryfikacji nazwy użytkownika i jego hasła, funkcja logowanie() nadaje wartości zmiennym sesyjnym. Dzięki stworzeniu tych zmiennych któremu aplikacja jest w stanie go rozpoznać użytkownika, przydzielić odpowiedni zestaw uprawnień oraz odczytać specyficzne dla niego dane lub przenieść automatycznie na odpowiednią stronę. Należy podkreślić ze za ochronę zmiennych sesyjnych odpowiada serwer WWW. Odpowiednie zabezpieczanie serwera może zniwelować możliwość nieautoryzowanego dostępu do danych portalu.

Poniżej znajduje się lista zmiennych sesyjnych tworzonych podczas procesu logowania, wykorzystywanych później do identyfikacji użytkownika w aplikacji.

Nazwa zmiennej

Funkcja zmiennej

$_SESSION['user']

Przechowuje nazwę (login) użytkownika

$_SESSION['czas']

Przechowuję wartość czasu ostatniej wizyty

$_SESSION ['stanowisko']

Przechowuje wartość do jakiej grupy należy użytkownik

$_SESSION['user_id']

Identyfikator użytkownika z tabeli iz_user, pola id_user

$_SESSION['wojewodztwo']

Województwo użytkownika

$_SESSION['member']

Nazwa strony użytkownika

Tab. 4.3.1 Tabela zmiennych sesyjnych aplikacji

    1. Funkcje spełniane przez portal oraz ich realizacja

Portal w swych założeniach ma zadanie udostępniać szereg danych odpowiednim użytkownikom jak i pozwolić im na wprowadzanie informacji przydatnym innym użytkownikom. Dane te, prezentowane w postaci licznych zestawień analitycznych, pozwalają na łatwiejszą pracę w firmie, ulepszają komunikację pomiędzy pracownikami oraz pomiędzy klientami a firmą. Każda grupa użytkowników posiada odrębne zestawienia, które mogą być przydatne w codziennej pracy.

Poniżej zostanie opisana lista podstawowych opcji dostępnym poszczególnym grupom użytkowników. Wymienione poniżej opcje pojawiają się w menu użytkownika po pomyślnym przejściu autoryzacji Część opisu listy opcji będzie ilustrowana ekranami pokazującymi przykładowe wyniki działań, dla innych zostanie pokazany kod funkcji realizujących dane zestawienie.

Sprzedaż towary - opcja generująca zestawienie analityczne realizowane przez funkcję top_lista_6() która generuje zapytanie do bazy danych MSSQL prezentujące pięćdziesiąt tytułów asortymentu którego najwięcej sprzedano danego dnia. Powyżej listy tytułów znajduje się podopcja przedstawiająca wynik sprzedaży asortymentu, dla całego miesiąca. Zestawienie domyślnie jest dostępne dla grupy użytkowników Szef. Poniżej znajduje się kod funkcji top_lista_6().

function top_lista_6(){

/*sprawdzenie czy funkcja ma pokazać wynik dla bieżącego dni czy od początku danego miesiąca */

if(isset($_GET['tryb'])){

$tryb = $_GET['tryb'];

}

else $tryb = 0;

$data = date("Y-m-d");

$data_od = date("Y-m-01");

if ($tryb == 0){

//połączonie z bazą MSSQL przez ODBC

$link = @odbc_connect ('serwer2','sa','') or die("Could not connect");

$query = "SELECT TOP 50 tw_Symbol, tw_Nazwa, sum(ob_Ilosc) as Suma, sum(ob_Ilosc*ob_CenaNetto) as Netto

FROM

kh__Kontrahent,

tw__Towar,

sl_GrupaTw ,

dok_Pozycja,

dok__Dokument

WHERE

tw_IdGrupa = grt_Id

AND dok_DataWyst = '$data'

AND ob_TowId=tw_Id

AND ob_DokHanId=dok_Id

AND dok_OdbiorcaId = kh_Id

AND dok_Typ = 2

GROUP BY tw_Symbol, tw_Nazwa

ORDER BY Netto DESC";

$tytul = "50 najlepiej sprzedających się tytułów dnia $data";

$li = "Lista od początku miesiąca";

$t = 1;

}

if ($tryb == 1){

$link = @odbc_connect ('serwer2','sa','') or die("Could not connect");

$query = "SELECT TOP 50

tw_Symbol, tw_Nazwa,

sum(ob_Ilosc) as Suma,

sum(ob_Ilosc*ob_CenaNetto) as Netto

FROM kh__Kontrahent,

tw__Towar,

sl_GrupaTw ,

dok_Pozycja,

dok__Dokument

WHERE

tw_IdGrupa = grt_Id

AND dok_DataWyst BETWEEN '$data_od' AND '$data'

AND ob_TowId=tw_Id

AND ob_DokHanId=dok_Id

AND dok_OdbiorcaId = kh_Id

AND dok_Typ = 2

GROUP BY tw_Symbol, tw_Nazwa

ORDER BY Netto DESC";

$tytul = "50 najlepiej sprzedających się tytułów od początku miesiąca";

$li = "Lista dnia: ".$data;

$t = 0;

}

$i = 1;

$queryexe = odbc_exec($link,$query) or die("Błąd".odbc_error());

echo "<a href=".$_SESSION['member']."?zest=".$_GET['zest']."&tryb=$t>$li</a><br>

<table width=100%>

<tr><td colspan=4 align=center class=bilans_dokumentow_tytul>$tytul</td></tr>

<tr><td class=bilans_dokumentow_gora>Lp.</td>

<td class=bilans_dokumentow_gora>Tytuł</td>

<td align=right class=bilans_dokumentow_gora>Wartość netto</td>

<td align=right class=bilans_dokumentow_gora>Wartość brutto</td>

</tr>";

while (odbc_fetch_row($queryexe)) {

echo "<tr><td class=bilans_dokumentow>$i.</td>

<td class=bilans_dokumentow>".odbc_result($queryexe,"tw_Nazwa")."</td>

<td align=right class=bilans_dokumentow>".number_format(odbc_result($queryexe,"Netto"),2,","," ")." zł</td>

<td align=right class=bilans_dokumentow>".number_format(odbc_result($queryexe,"Netto")*1.22,2,","," ")." zł</td>

</tr>";

$i++;

}

echo "</table>";

}

Sprzedaż rejon - zestawienie generuje zagregowane informacje dotyczące sprzedaży towarów według województw (patrz rys 4.5.1). W górnej części prezentuje zsumowaną sprzedaż na dzień bieżący, a w dolnej sprzedaż od początku bieżącego miesiąca. Prezentuje również przewidywaną prowizję jaką mają ze sprzedaży koordynatorzy. Prowizja wynosi 0.02% wartości sprzedaży. Zestawienie realizowane jest przez funkcję sprzedaz_szef_rejon() i domyślnie przypisane jest do grupy użytkowników Szef. Brak województwa w spisie informuje, że w tym województwie nie dokonano żadnej sprzedaży.

0x01 graphic

Rys. 4.5.1 Ekran wynikowy zestawienia Sprzedaż rejon

Sprzedaż fakturzyści - zestawienie generujące sumę sprzedaży wg fakturzystów (sprzedawców), dla bieżącego dnia oraz od początku danego miesiąca. Pokazuje przewidywaną wartość premii pracownika w danym dniu i od początku miesiąca. Premia liczona jest jako wartość 0,002% od wartości netto sprzedaży wykonanej przez daną osobę. Zestawienie domyślnie dostępne jest dla grupy Szef, a realizowane jest przez funkcję lista_dokumentow_pracownik(). Poniższy ekran ilustruje wynik działania funkcji dla danego dnia.

0x01 graphic

Rys. 4.5.2 Ekran wynikowy zestawienia Sprzedaż-fakturzyści

Dokumenty z okresu - zestawienie realizowane przez funkcję lista_dokumentow_okres_s() generuje listę dokumentów wystawionych od początku miesiąca. Bardzo przydatne zestawienie dla działu księgowości, który mając informacje o dokumentach może zaksięgować wystawione dokumenty przed dostarczeniem ich w formie fizycznej. Przyśpiesza i uelastycznia to pracę tego działu, gdyż księgowość nie znajduje się w budynku firmy i nie ma bezpośredniego dostępu do programu SubiekGT. Zestawienie to jest dostępne domyślnie dla użytkowników grup Księgowość, Fakturzysta oraz Szef. Rys. 4.5.3 ilustruje wynik działania tej funkcji.

0x01 graphic

Rys. 4.5.3 Ekran wynikowy zestawienia Dokumenty z okresu

Bilans dokumenty - zestawienie wszystkich dokumentów wraz z podsumowaniem pod względem liczności jaki i wartości wystawionych w bieżącym dniu oraz od początku miesiąca. Zestawienie to realizowane jest przez funkcję lista_dokumentow_bilans(), która dostępna jest dla grup Szef oraz Księgowość. Ekran ilustrujący działanie funkcji znajduje się poniżej.

0x01 graphic
Rys. 4.5.3 Ekran wynikowy zestawienia Dokumenty z okresu

Klient dopisz uwagi - opcja przygotowana z myślą o koordynatorach sprzedaży działających w terenie. Dzięki niej koordynatorzy mogą wpisywać, edytować uwagi i informację na temat swoich klientów. Informacje te brane są po uwagę przez fakturzystów, wystawiających faktury dla danego klienta. Mogą to być np. informację o zmianach w formie lub terminie płatności, przyznaniu rabatu klientowi lub inne uwagi wprowadzane na bieżąco bez potrzeby bezpośredniego kontaktu z firmą. Poniżej ekran z przykładowymi klientami i przypisanymi do dwóch z nich uwagami. Opcja domyślnie dostępna jest dla grupy Koordynator sprzedaży.

0x01 graphic

Rys. 4.5.4. Lista klientów dla danego rejonu i przypisane im uwagi

Klient uwagi - zestawienie wyświetlające listę klientów, do których są przypisane jakiekolwiek uwagi czy informację przez koordynatorów sprzedaży. Opcja domyślnie przypisana do grupy Fakturzysta i Szef. Zestawienie realizowane jest przez funkcję faktura_klient(). Ekran znajdujący się poniżej ilustruje wykonanie funkcji.

0x01 graphic

Rys. 4.5.5 Ekran ilustrujący opcję Klient uwagi.

Zamówienia - opcja tworzenia zamówienia na towar przez użytkownika z grupy Klient. Klient, aby dokonać zamówienia wybiera z listy interesujący go asortyment i wpisuje w polu tekstowym pożądaną liczbę sztuk. Tworzy się wówczas zamówienie tymczasowe, które jeszcze nie zostaje wysłane do koordynatora. Użytkownik może dowolnie modyfikować pozycje zamówienia poprzez ich usuwanie lub dodawanie. Po wybraniu podopcji Wyślij zamówienie, zostaje ono wysłane do właściwego koordynatora sprzedaży oraz magazynierów w firmie. Funkcje realizujące opcję Zamówienia to lista_towaro_klient() odpowiedzialna za wyświetlenie listy towarów, biezace_zamowienie(), kóra wyświetla zamówienie tymczasowe, jeszcze nie wysłane i wyslij_zamowienie(), która zmienia status zamówienia z tymczasowego na wysłane. Schemat blokowy przebiegu realizacji i tworzenia zamówienia został pokazany w rozdziale 4 rys. 4.4.1. Poniżej ekran ilustrujący przykładową listę z grupy towarów, wraz z zamówieniem tymczasowym.

0x01 graphic

Rys. 4.5.6 Przykładowe generowanie zamówienia przez klienta

Towary pożądane - zestawienie pokazujące ilość najlepiej sprzedającego się asortymentu z ostatnich 30 dni wraz z jego obecnym stanem na magazynie. Dzięki temu magazynier wie jaki towar jest obecnie atrakcyjny dla klienta i jaki należy zamówić u producenta, aby nie nastąpiła przerwa w sprzedaży spowodowane brakiem tego towaru na stanie w magazynie. Funkcja realizująca to zestawienie to top_lista_2(), domyślnie dostępna dla grup użytkowników Magazynier i Szef. Ekran znajdujący się poniżej ilustruje wykonanie funkcji. Widać na nim kolumny Tytuł, Sprzedano oraz Na stanie. W kolumnie Na stanie, wartości poniżej 100 sztuk wyróżnione są kolorem czerwonym.

0x01 graphic

Rys. 4.5.7 Ekran wynikowy opcji Towary pożądane

Zamówienia Internet - opcja pozwalające na przeglądanie wszystkich zamówień złożonych przez klientów. Realizowana jest przez funkcje zamowienie_klient_all() oraz zamowienie_klient_all_szczegol_2 (). Pokazuje zamówienie wg dat ich złożenia oraz czy zostały zaakceptowane czy nie przez koordynatora sprzedaży. Funkcje te są dostępne dla grupy Magazynier oraz Szef.

Komentowanie i ocenianie asortymentu - każdy użytkownik portalu ma możliwość oceniania produktów znajdujący się na stronach portalu. Opcję oceniania realizuje funkcja PHP towar_ocen() oraz zestaw kilku funkcji JavaScript. W realizacji tych funkcji wykorzystywana jest technika AJAX, dzięki czemu przy ocenie cała strona nie musi być powtórnie przetworzona przez przeglądarkę. Do sprawdzenia czy użytkownik dokonał oceny towaru, oraz aby mu uniemożliwić wykonanie powtórnie tej czynności, stosowana jest zmienna $_COOKIE['tow'.$id_towar]).

Opcja komentowania towaru dostępna jest tylko dla zarejestrowanych użytkowników portalu. Po dodaniu komentarza, powyżej jego treści pojawia się identyfikator użytkownika który dodał komentarz, numer ip oraz data i godzina dodania komentarza.

0x01 graphic
Rys. 4.5.8. Ekran z opisem, oceną i komentarzami dla filmu „O dwóch takich co ukradli księżyc”

  1. Użytkowanie systemu

    1. Strona główna

Interfejs użytkownika został zbudowany w taki sposób, aby nawet niedoświadczeni użytkownicy mogli bez problemu poruszać się po portalu.

Strona główna została domyślnie podzielona na cztery rejony, z których każdy spełnia odmienną rolę.

Górny rejon strony zawiera logo oraz nazwy firmy, informacje o ilości użytkowników zarejestrowanych na stronie oraz aktualną liczbę użytkowników aktualnie odwiedzających portal. Znajduje się tam także formularz logowania, oraz odnośnik do formularza rejestracyjnego. Po udanym procesie autoryzacji, w miejsce formularza logowania, pojawia się informacja o nazwie użytkownika zalogowanego, ostatnia data udanej autoryzacji oraz opcja wylogowania się.

W lewym rejonie strony znajduje się główne menu prowadzące do podstawowych działów asortymentowych wraz z podkategoriami, do których dany asortyment należy. Pod głównym menu działa funkcja wyświetlająca losowo zdjęcie jednego z towarów wraz z odnośnikiem do niego.

Rejon środkowy strony głównej wyświetla wszystkie wyniki wyboru dokonanego przez użytkownika poprzez wszystkie rejony/sekcje. Wyświetlane są tam także wszelkie formularze zawarte w aplikacji (poza formularzem logowania który znajduję się w sekcji górnej). Podczas startu strony głównej w tej części strony zaprezentowany jest asortyment ostatnio dodany (premierowy) wraz ze zdjęciem oraz krótki opisem i odnośnikiem do niego.

Prawy rejon to sekcja odpowiedzialna za wyświetlanie dodatkowych informacji na temat oferowanych towarów. Są tu prezentowane informacje dotyczące najczęściej sprzedawanego towaru oraz pozycje premierowe.

Rejon górny

Rejon lewy

Rejon środkowy

Rejon prawy

Tab.5.1.1 Podział strony głównej na rejony / sekcje

0x08 graphic

Rys. 5.1.1 Strona główna portalu

    1. Użytkownik zarejestrowany

Po udanym zalogowaniu użytkownika, system sprawdza wartość zmiennej sesyjnej $_SESSION[`stanowisko'] i na podstawie jej wartości wyświetla automatycznie daną podstronę główną użytkownika zarejestrowanego. Każda grupa użytkowników ma swoją podstronę główną. Analogicznie do strony głównej portalu, wygląda rozkład rejonów / sekcji na podstronie użytkownika zarejestrowanego. W części górnej wyświetlone są informacje o użytkowniku, logo i nazwa firmy. W rejonie lewym zaprezentowane jest menu tworzone dynamicznie, inne dla każdej grupy użytkowników. W środkowej części prezentowane są informacje wynikowe i formularze. W prawej sekcji są informacje dodatkowe, dotyczące użytkowników, towarów, tworzone dynamicznie, inne dla każdej grupy użytkowników.

    1. Wyszukiwanie informacji

System wyszukiwania informacji jest w każdym serwisie internetowym ważnym czynnikiem usprawniającym pracę. W aplikacji, moduł wyszukiwania został stworzony za pomocą techniki AJAX, dzięki czemu użytkownik wpisując szukaną frazę od razu otrzymuje wynik wyszukiwania. Szukany tekst jest pobierany bezpośrednio z pola tekstowego przez funkcje JavaScript i dalej przekazywany do serwera przez domyślnie wbudowany w przeglądarce obiekt XMLHttpRequest. Odpowiedź z serwera przechodzi w ten sam sposób, prezentując wynik wyszukiwania. Podstawową zaletą tego rozwiązania jest szybkość działania wyszukiwarki, gdyż użytkownik nie musi czekać na każdorazowe przeładowanie strony przy wpisywaniu szukanej frazy. Wyszukiwarka dostępna jest dla każdego użytkownika, wyszukując towar w którego nazwie istnieje fragment szukanego tekstu. W opcji dla administratora, pokazywana jest też jako wynik szukania, lista zarejestrowanych użytkowników portalu. Aby zawęzić wyniki szukania, moduł zaczyna działać po wpisaniu minimum trzech znaków w polu tekstowym.

Na rys. 5.3.1 pokazano wynik wpisania frazy „pol” w panelu administratora. Oprócz znalezionych towarów handlowych zawierającym w swej nazwie fragment tego tekstu, prezentowany jest wynik wyszukania użytkowników z podaną frazą w nazwie, grupie lub identyfikatorze użytkownika.

0x01 graphic

Rys 5.3.1 Wyniki wyszukania frazy „pol” w wyszukiwarce

    1. Zarządzanie portalem

Administrator zajmuje się edycją danych zarejestrowanych użytkowników, przydzielaniem ich do odpowiednich grup oraz nadaje odpowiednie uprawnienia poszczególnym grupom użytkowników. Do jego obowiązków należy także edycja informacji o towarach prezentowanych w portalu oraz kontrola komentarzy użytkowników dla danego asortymentu i ich ewentualne usunięcie. Administrator może także zablokować prezentacje towaru na stronach portalu. Ponadto odpowiada on za synchronizacje danych pomiędzy bazami oraz może przeglądać logi pomyślnych autoryzacji użytkowników.

Administrator ma do dyspozycji ma zestaw kilku opcji, pozwalający wpływać na różne działania portalu. Kolejne pozycje menu to:

Użytkownicy - opcja umożliwiająca administrowanie użytkownikami. Po kliknięciu pojawia się ekran ze stronicowaną listą wszystkich użytkowników.

0x01 graphic

Rys. 5.4.1 Lista użytkowników

Powyżej listy znajdują się odnośniki do wszystkich nazw grup użytkowników, dzięki czemu możliwe jest wyświetlanie użytkowników tylko z danej grupy. Po kliknięciu na odnośnik Edycja Administrator może zmieniać dane użytkowników oraz przydzielać ich do poszczególnych grup.

Logi - opcja umożliwiająca przeglądania logów. Domyślnie pokazuje udane autoryzacje użytkownika z dnia, jego identyfikator, godzinę logowanie, numer IP komputera z którego nastąpiło logowanie do systemu oraz typ przeglądarki internetowej. Powyżej znajduje się odnośnik Wszystkie logi prezentująca w formie kalendarza dni poszczególnych miesięcy w którym było przynajmniej jedno udane logowanie. Po kliknięciu na dany dzień zostanie pokazana lista udanych autoryzacji tego dnia. Poniżej ekran z fragmentem zapisu udanych autoryzacji użytkowników w formie kalendarza z podziałem na dni miesiąca.

0x01 graphic

Rys. 5.4.2 Logi użytkowników z podziałem na dni

Grupy użytkowników - opcja dzięki której administrator może przydzielać uprawnienia poszczególnym grupom użytkowników do uzyskiwania różnych zestawień informacji analitycznych generowanych przez portal. Zaznaczenie pola chceckbox, przy nazwie zestawienia, oznacza zezwolenie przez daną grupę użytkowników na uzyskanie dostępu do danej opcji. Rys. 5.4.3 przedstawia domyślne ustawienie przydziału opcji dla poszczególnych grup użytkowników. Opcja ta jest przydatna, kiedy np. chcemy przetestować nowe zestawienia lub zmodyfikować istniejące, wtedy zabieramy lub dajemy prawo do ich wykonywania poszczególnym grupom. Opis zestawień został zawarty w rozdziale 4.5 Funkcje portalu oraz ich realizacja

0x01 graphic

Rys. 5.4.3 Dostęp dla poszczególnych grup użytkowników do opcji portalu

Synchronizacja - dzięki tej opcji administrator portalu ma możliwość synchronizacji danych pomiędzy bazami. Więcej na temat synchronizacji zostało opisane w punkcie 4.3 Synchronizacja Danych

Towar - opcja dzięki której istnieje możliwość edycji opisów towaru oraz ewentualne blokowanie prezentacji asortymentu. Na ekranie pojawia się menu z asortymentem podzielone na grupy towarowe. Po wybraniu jednej z grup pojawia się lista tytułowa danej grupy towarowej wraz z polem typu checkbox pokazującej, czy dany towar ma być dostępny na stronach portalu.

0x01 graphic

Rys. 5.4.4. Przykładowy ekran administracji towarami

Po wybraniu nazwy towaru, administrator może wprowadzać informacje dotyczące danego towaru, oraz przeglądać komentarze użytkowników i ewentualnie je usuwać. Opisy towaru realizowane są przez edytor TinyMCE firmy Moxiecode opartego na licencji LGPL (http://www.moxiecode.com/). Na rys. 5.4.5 znajduje się ekran ilustrujący możliwość edycji informacji dla przykładowego towaru. W oknie Wstępny opis towaru wpisywane są skrótowe informacje na temat towaru. W oknie Opis towaru Mozę się znajdować obszerna informacja na temat danego asortymentu w postaci graficznej i tekstowej. Poniżej znajduje się lista komentarzy z opcją ewentualnego usunięcia.

0x01 graphic

Rys.5.4.5 Ekran ilustrujący edycję opisu towaru i komentarzy

  1. Instalacja

Instalacja portalu polega na zainstalowaniu oprogramowania oraz skonfigurowania odpowiednich plików. Pierwszym zadaniem jest zainstalowanie odpowiedniego oprogramowania które umożliwi prawidłowe działanie portalu. Drugim krokiem jest edycja i konfiguracja plików portalu.

Niezbędne pliki oraz oprogramowanie znajduje się na załączonej płycie CD. Struktura katalogów na płycie:

CD:\portal

|

+ - - plik_portalu/ -- katalog zawierający wszystkie pliki portalu

| + - - administrator/ --katalog administratora

| + - - member/ --katalog użytkowników portalu

| + - - logs/ --katalog z logami użytkowników

| + - - install/ --katalog ze skryptem instalacji struktury bazy MySQL

| + - - tinymc/--katalog edytora TinyMCE

| + - - images/ --katalog z plikami graficznymi

| | - index.php -plik generujący stronę główną portalu

| | - . . .

| | - config.php -plik konfiguracyjny portalu

| | - funkcje.php -plik z funkcjami PHP użytymi w portalu

| | - . . .

+ - - install/ -- oprogramowanie niezbędne do działanie portalu

| + - - software/

| | | - apache_2.2.4-win32-x86-no_ssl

| | | - InsERT_GT

| | | - mysql-essential-5.0.37-win32

| | | - php-5.2.1-win32-installer

| | + - - archiwum_subiekt/ --katalog z przykładowymi danymi dla SubiektGT

| | | |

| | | | - GM_DISTRIBUTION_SP_Z_O_O.i01

| | | | - GM_DISTRIBUTION_SP_Z_O_O.iar

|. . .

Oprogramowanie, niezbędne do uruchomienia aplikacji generującej portal znajduje się w katalogu install/software/ na dołączonej płycie CD.

Są to odpowiednio:

Oprogramowanie to przeznaczone jest dla systemu operacyjnego Windows, począwszy od wersji 2000. Do każdego programu dołączona jest instrukcja instalacji wraz z instalatorem. Po zainstalowaniu wszystkich programów i odpowiednim skonfigurowaniu środowiska serwerowego, należy uruchomić program Archiwizator zainstalowany wraz z aplikacją SubiektGT (domyślnie umiejscowiony Start->All Programs->Insert->InsertGT->Narzędzia->Archiwizator) użyć opcji Dearchiwizacja, następnie wybrać plik umiejscowiony na płycie CD w katalogu /install/software/archiwum_subiekt/ . Po wybraniu tego pliku, program automatycznie wczyta dane do bazy MSSQL programu SubiektGT.

Aplikacja łączy się z bazą MSSQL poprzez systemowe ODBC, więc należy odpowiednio je skonfigurować. Aby to zrobić, należy wejść w Start->Control Panel->Administrative Tools->Data Sources (ODBC), kliknąć w zakładkę System DSN opcję Add i z listy wybrać pozycję SQL Server i kliknąć Finish. Następnie w polu Name należy wpisać nazwę naszego serwera np. „serwer2”, w polu Description dowolny opis, w polu Server adres serwera MSSQL „localhost\insertgt” (jeżeli baza MSSQL znajduje się na innym serwerze człon localhost powinien być zamieniony na nazwę hosta docelowego bazy MSSQL). Następnie klikamy opcję Next, przy pytaniu „How should SQL Server verify the authenticity of the login ID?” zaznaczyć opcję „With SQL Server authentication using a login ID and password entered by the user”, kliknąć Next i ponownie tą samą opcję, kliknąć Finish i Test Data Source. Po pojawieniu się informacji „TESTS COMPLETED SUCCESSFULLY” istnieje pewność że połączenie zostało skonfigurowane poprawnie. Należy wtedy zakończyć działanie konfiguratora klikając OK. Po pomyślnym przejściu powyższych etapów instalacji i konfiguracji oprogramowania przechodzi się do drugiego etapu instalacji.

Drugi etape instalacji obejmuje edycje i konfiguracja plików aplikacji portalu. Należy przegrać wszystkie pliki i katalogi z katalogu /pliki_portalu/ płyty CD do katalogu, który jest docelowo stworzony jako katalog stron WWW (np. public_hmtl/). Kolejną czynnością jest edycja pliku config.php, zawartego w katalogu wirtualnym. Można to zrobić za pomocą dowolnego edytora tekstu. Należy wpisać wartości odpowiednich zmiennych, pomiędzy znakami apostrofu `', poniżej przykładowe przypisanie zmiennym wartości.:

Pozostałe zmienne pozostawiamy bez zmian.

Następie trzeba stworzyć strukturę bazy MySQL. W tym celu należy uruchomić plik instalacja.php znajdującym się w katalogu /install/ katalogu wirtualnego (np. http://localhost/install/instalacja.php). Zostanie stworzona baza danych wraz z tabelami i odpowiednimi danymi niezbędnymi do poprawnego działania portalu. Po poprawnym przebiegu instalacji, ważne elementem bezpieczeństwo danych jest usunięcie katalogu /install/ wraz z zawartością, gdyż ponowne uruchomienie skryptu nadpisze wszystkie dane do stanu początkowego. Do powyższych operacji mogą być wymagane uprawnienia administratora. Po prawidłowym wykonaniu wszystkich czynności aplikacja jest gotowa do pracy.

  1. Podsumowanie

Zakres pracy objął zaprojektowanie portalu internetowego, opracowanie oprogramowania tego portalu i jego implementację. Portal jest obecnie wykorzystywany w firmie handlowej GM Distribution

Zaprojektowanie i implementacja portalu dla firmy handlowej pokazała jak przy niskich kosztach projektowych, z wykorzystaniem bezpłatnych technologii informatycznych można ułatwić pracę w firmie. Wykorzystując ten portal, pracownicy mają dostęp do szeregu danych oraz możliwość wprowadzania kolejnych informacji, co pozwala im na łatwiejsze podejmowanie decyzji związanych z firmą. Projekt portalu początkowo pomyślany był jako prosty program intranetowy do generowania różnych zestawień analitycznych pobieranych z bazy MSSQL, używany tylko wewnątrz sieci firmowej. Jednak w miarę implementacji kolejnych modułów, projekt rozwinął się w pełny serwis internetowy firmy, dając wszystkim użytkownikom Internetu wgląd do oferty firmy, a grupom użytkowników dostęp do licznych funkcji, takich jak informacje analityczne, możliwość zamawiania asortymentu przez portal, oceniania i komentowania. Zastosowane technologie i techniki wykonania portalu pozwoliły na znaczne oszczędności, a z ekonomicznego punktu widzenia były uzasadnionym rozwiązaniem, szczególnie polecanym dla firm sektora małej i średniej przedsiębiorczości.

Implementacja portalu w firmie GM Distribution, nie tylko ułatwiła pracę pracownikom, ale także i klientom firmy. Prosta forma składania zamówienia określonego asortymentu, pozwoliła podwoić liczbę zamówień złożonych przez klientów (w porównaniu z okresem czasu przed wdrożeniem portalu). Zmalała także liczba pomyłek przy zamawianiu i realizacji zamówień. Dzięki możliwości wprowadzania uwag i innych informacji na temat swoich klientów w portalu przez koordynatorów sprzedaży, została zmniejszona potrzeba bezpośredniego kontaktu ich z firmą (np. telefonicznie), w celu przekazania tych informacji. Ścisłe kierownictwo firmy „bez potrzeby wychodzenia z domu” może otrzymać informacje analityczne na temat działania firmy lub pracowników. Przedstawienie oferty asortymentowej w portalu, dostępnym w sieci Internet, pozwoliło także na dotarcie do większej liczby potencjalnych klientów.

W planach rozwoju portalu przewidziana jest budowa kolejnych jego modułów. Pierwszym z planowanych nowości jest zaprojektowanie i wdrożenie modułu systemu EDI (Elektronic Data Intercharge), czyli elektronicznej wymiany dokumentów. Pozwoli on wykorzystać komponenty umożliwiające odbiór i wysyłanie dokumentów sprzedaży i zamówień do niezależnych podmiotów gospodarczych, np. duże sieci handlowe, hipermarkety. Inną nowością będzie rozbudowa modułu grupy Klient, poprzez dodanie większej ilości informacji analitycznych, spersonalizowanych pod względem konkretnego użytkownika grupy Klient. Przewiduje się także rozbudowę jego możliwości prezentacyjnych asortymentu. Zostanie stworzona prosta platforma multimedialna, prezentująca między innymi zwiastuny filmów będących w ofercie firmy, jak i fragmentów muzycznych, pozwalających potencjalnym klientom na jeszcze lepsze zapoznanie się z produktami.

Kolejne etapy rozwoju portalu pozwolą na jeszcze większy wpływ jego na działanie firmy GM Distribution, dzięki czemu portal stanie się bardziej użytecznym narzędziem komunikacji między pracownikami firmy oraz klientami.

Bibliografia

  1. J.Castagnetto H.Rawat S.Schumann Ch.Scollo, „Professional PHP Programming”, Wrox Press (1999)

  2. T. Converse and J. Park with C. Morgan, „PHP5 and MySQL® Bible”, Wiley Publishing, Inc., Indianapolis (2004)

  3. R. Waymire, R. Sawtell, „MS SQL Server 2000 dla każdego”, Helion (2002)

  4. D. Sklar, A. Trachtenberg, „PHP Cookbook”, O'Reilly (2002)

  5. A. Gutmans, S. Sæther Bakken, and D. Rethans “PHP 5 Power Programming” PRENTICE HALL Professional Technical Reference, Indianapolis (2005)

  6. E. Balanescu, M. Bucica, C. DariePHP 5 i MySQL. Zastosowania e-commerce”, Helion (2005)

  7. K. Kline, D. Kline SQL. „Almanach. Opis poleceń języka”, Helion (2002)

  8. C. Darie, B. Brinzarea, F. Cherecheş-Toşa, M. Bucica, „AJAX i PHP. Tworzenie interaktywnych aplikacji internetowych”, Helion (2006)

  9. M. Szeliga, R. Wileczek „PHP5. Tworzenie bezpiecznych stron WWW”, Helion (2006)

  10. Insert , „Dokumentacja bazy danych systemu Insert GT”, Wrocław (2004)

Internet

http://www.php.net

http://www.mysql.com

http://httpd.apache.org/

http://msdn2.microsoft.com/en-us/sql/default.aspx

General Public License

Library General Public License

3

Fakturzyści

Magazynierzy

Oprogramowanie

portalu

SubiektGT

USER n

USER 2

USER 1

BAZA

MySQL

BAZA

MSSQL

SERWER

WWW



Wyszukiwarka

Podobne podstrony:
czy uC zaczyna pracę wraz z załączeniem zasilania czy potrzebny jest sygnał wyzwalający, Pierdoły, j
Praca inż
praca inż tytułowa
egzaminy, praca inż.kpt.Miładowskiego, Temat: ANALIZA ZAGROŻENIA POŻAROWEGO I WYBUCHOWEGO ZAKŁADÓW P
egzaminy, praca inż.kpt.Miładowskiego, Temat: ANALIZA ZAGROŻENIA POŻAROWEGO I WYBUCHOWEGO ZAKŁADÓW P
Praca inż zPID123G
Praca inż zPID12a
Praca inż(1)
Praca inż zPID1
Formatka, praca inż
Praca inż zPID
Odpowiedzi moje, POLITECHNIKA ŚLĄSKA Wydział Mechaniczny-Technologiczny - MiBM POLSL, Semestr 7, PRA
praca inż, muza
prezentacja praca inz
Praca inż
Praca inż
czy uC zaczyna pracę wraz z załączeniem zasilania czy potrzebny jest sygnał wyzwalający, Pierdoły, j
Praca inż

więcej podobnych podstron