<!-- $Id$ -->
<chapter id="user">
 <title>Interfejs Użytkownika (LMS-UI)</title>
 <para>LMS'owy Interfejs Użytkownika to panel administracyjny do tworzenia
  i zarządzania bazą klientów i komputerów dostępny za pomocą przeglądarki
  internetowej. Umożliwia wprowadzanie danych komputerów,
  przypisanie ich do klientów i sieci. Definiowanie opłat i zarządzanie finansami sieci,
  Szybkie wyszukiwanie danych o klientach i ich sprzęcie. Sporządzanie korespondencji
  seryjnej do klientów, definiowanie praw dostępu dla użytkowników i ich haseł.
  Ponadto daje możliwość przeglądania statystyk wykorzystania łącza, a także
  tworzenia kopii bazy danych oraz zarządzania konfiguracją usług na serwerze. 
  <emphasis>LMS-UI</emphasis> posiada także wiele innych możliwości, które w tym
  rozdziale zostaną opisane.</para>
  <sect1 id="user-login">
	<title>Logowanie</title>
	<para>Po wpisaniu w przeglądarce adresu do strony z LMS'em, powita cię
	ekran logowania. Musisz podać właściwy login oraz hasło. Hasła w bazie
	danych przechowywane są w formie zaszyfrowanej.</para>
	<para>Jeżeli jest to twoje pierwsze logowanie i nie masz jeszcze
	założonego konta, zostaniesz przekierowany do modułu tworzenia kont
	użytkowników. W tym momencie będziesz miał tylko dostęp do tego
	jednego modułu.</para>
  </sect1>
  <sect1 id="menu-administration">
	<title>Administracja</title>
	<para>Po zalogowaniu do LMS'a znajdziesz się w module (menu) administracji
	systemem LMS. Tutaj znajdziesz niezbędne informacje o systemie. Będziesz
	mógł zarządzać użytkownikami i tworzyć/odtwarzać kopie bazy danych.</para>
	<para>Z menu po lewej stronie wybierasz interesujący cię moduł. Możesz również
	dokonać zmiany hasła, wylogować się lub szybko przejść do informacji o kliencie i komputerze.
	W polach szybkiego wyszukiwania, oprócz id klienta lub komputera, możesz 
	podawać nazwisko, nazwę, fragment adresu, telefon, email, adres IP lub MAC. 
	W przypadku gdy w bazie znajduje się więcej klientów pasujących do szukanych
	danych zostaną wyświetlone informacje tylko o jednym kliencie lub komputerze.</para>
	<sect2 id="administration-info">
	    <title>Informacje</title>
	    <para>To panel, na którym znajdują się podstawowe informacje na temat naszego 
	    systemu: wersja LMS i jego składników, informacje o prawach autorskich, 
	    wersja jądra i uptime serwera, dane statystyczne o klientach i komputerach,
	    bieżące informacje o aktywności komputerów i stanie finansów sieci. 
	    Ponadto znajdziesz tu przydatne LMS'owe linki.</para>
	</sect2>
	<sect2 id="administration-users">
	    <title>Użytkownicy</title>
	    <para>Panel 'Użytkownicy' służy do zarządzania kontami użytkowników, czyli osób
	    korzystających z LMS'a, zakładania i przeglądania ich kont, zmiany haseł i definiowania 
	    praw dostępu.</para>
	    <para> Prawa dostępu zostały szczegółowo opisane w rozdziale <xref linkend="install-rights">.</para> 
	    <para>Po wybraniu menu 'Użytkownicy' zobaczysz listę wszystkich użytkowników
	    z informacją o ostatnim logowaniu. Kliknięcie na pozycji z listy spowoduje wyświetlenie 
	    informacji szczegółowych o danym koncie, w tym o zdefiniowanych prawach dostępu.
	    W każdej chwili możliwa jest zmiana danych i uprawnień za pomocą przycisku 'Edytuj'. 
	    Aby założyć nowe konto użytkownika skorzystaj z górnego menu 'Nowy użytkownik'.</para>
	</sect2>
	<sect2 id="administration-newuser">
	<title>Nowy użytkownik</title>
	    <para>Aby dodać nowe konto użytkownika należy podać login, nazwisko/imię oraz hasło,
	    które nie może być puste. Pozostałe dane nie są wymagane.
	    "Dozwolone hosty" to lista adresów IP hostów lub sieci
	    oddzielonych przecinkiem, z których dany użytkownik może się logować do
	    systemu (podobnie do opcji konfiguracyjnej 'allow_from'). Jeśli lista ta
	    jest pusta system nie dokonuje sprawdzenia adresu IP.
	    Poniżej można zaznaczyć uprawnienia dostępu do
	    systemu. Jeżeli wszystkie pola pozostawisz puste, użytkownikowi 
	    przypisany zostanie 'Pełen dostęp'.</para>
	    <para>Pole "Powiadomienia" określa jakiego typu powiadomienia (np. z helpdesku)
	    mają być wysyłane do użytkownika. Aby skorzystać z powiadomień należy też podać adres e-mail i/lub
	    numer telefonu.</para>
	</sect2>
	<sect2 id="administration-db">
	    <title>Kopie zapasowe</title>
	    <para>Z panelu 'Kopie zapasowe' możesz zarządzać kopiami awaryjnymi danych z bazy LMSa.
	    Kopia bazy to plik tekstowy zawierający zapytania SQL i dane z wszystkich tabel w bazie, zapisywany w
	    katalogu zdefiniowanym w sekcji <emphasis>[directories]</emphasis> <filename>lms.ini</filename>
	    zmienną <prompt>backup_dir</prompt>.</para>
	    <para><note><para>Domyślnie kopie zapisywane są w katalogu <filename>lms/backups</filename>
	    dostępnym przez przeglądarkę, dlatego dobrze było by przenieść go w inne miejsce.</para></note></para>
	    <para>Sporządzone kopie można w każdej chwili przeglądać, usuwać lub zapisywać na lokalnym dysku.
	    Kliknięcie na ikonkę Odtwórz spowoduje wyczyszczenie bieżącej bazy danych i załadowanie
	    do niej danych z wybranego pliku kopii. Tuż przed odtworzeniem tworzona jest kopia
	    aktualnej bazy danych. Odtworzenie bazy danych z kopii jest możliwe tylko wtedy
	    gdy została ona utworzona na tej samej wersji LMSa.</para>
	</sect2>
 </sect1>
 <sect1 id="menu-customers">
	<title>Klienci</title>
	<para>Tutaj zarządzasz danymi klientów twojej sieci i ich finansami, ale także 
	ich komputerami. Możesz na przykład jednym kliknięciem odłączyć wszystkie 
	komputery klienta.
	<note><para>Do automatycznego odłączania komputerów klientów, których bilans jest poniżej zadanej wartości
	służy skrypt lms-cutoff.</para></note></para>
	<sect2 id="menu-customers-list">
	    <title>Lista</title>
	    <para>Po wejściu do panelu 'Klienci' ukaże się lista klientów,
	    którą możesz filtrować według wybranych kryteriów (statusu, grupy lub sieci)
	    lub sortować klikając na nazwie kolumny. Na liście ikona żarówki informuje
	    o statusie podłączenia komputerów klienta, a ikona znaku drogowego
	    o statusie ostrzeżeń. Kliknięcie na nich zmienia status na przeciwny w
	    stosunku do wszystkich komputerów danego klienta. Gdy klient nie
	    posiada przypisanych żadnych komputerów ikony te zostaną zamienione znakiem
	    wykrzyknika.</para>
	    <para>U klientów z saldem ujemnym pojawia się link "Rozlicz", pozwalający na
	    zaksięgowanie jednym kliknięciem wpłaty równoważącej ujemne saldo.</para>
	    <para>Kliknięcie na wybranym kliencie spowoduje przejście do panelu
	    z informacjami szczegółowymi o nim i przypisanych mu komputerach, taryfach oraz
	    operacjach finansowych. Tam też możesz modyfikować dane klienta, definiować
	    opłaty abonamentowe i zaksięgować wpłatę lub obciążenie jego rachunku.</para>
	</sect2>
	<sect2 id="menu-customers-new">
	    <title>Nowy klient</title>
	    <para>Dodając nowego klienta podajesz jego nazwisko/nazwę i dane teleadresowe
	    oraz status (podłączony/oczekujący/zainteresowany).
	    <note><para>Często zgłaszane jest błędne kapitalizowanie narodowych znaków diakrytycznych.
	    Odpowiedzialny za to jest serwer bazy danych i rozwiązania należy szukać w jego 
	    konfiguracji.</para></note></para>
	</sect2>
	<sect2 id="menu-customers-search">
	    <title>Szukaj</title>
	    <para>Możliwe jest wyszukiwanie klientów (także usuniętych) wg zadanych kryteriów. Moduł ten,
	    od pola szybkiego wyszukiwania z menu po lewej stronie, oprócz tego, że jest bardziej rozbudowany 
	    i pozwala wyszukiwać wg wielu kryteriów, różni się także tym, że zwraca listę klientów
	    spełniających podane kryteria.</para>
	</sect2>
	<sect2 id="menu-customers-groups">
	    <title>Grupy</title>
	    <para>Tutaj zarządzasz grupami klientów. Po kliknięciu menu 'Grupy'
	    ukaże ci się lista grup z podstawowymi informacjami o grupach. Klikając 
	    na wybranej grupie przejdziesz do modułu, w którym możesz zmienić dane
	    tej sieci, przeglądać oraz przypisywać klientów do grup.</para>
	</sect2>
	<sect2 id="menu-customers-newgropup">
	    <title>Nowa grupa</title>
	    <para>Grupa powinna posiadać unikalną nazwę, składającą się z liter, cyfr, znaku
	    myślnika lub podkreślenia. Ponieważ grupy wykorzystywane są w skryptach w nazwie
	    nie może być znaku spacji.</para>
	</sect2>
	<sect2 id="menu-customers-notices">
	    <title>Powiadomienia</title>
	    <para>Tutaj można "hurtowo" przypisać treść wiadomości administracyjnej (powiadomienia)
	    klientom, których wybiera się z listy w lewym oknie. Treść przypisuje się klientom,
	    natomiast aby wiadomość zostałą wyświetlona w przeglądarce internetowej na 
	    komputrerze klienta należy ją włączyć dla wybranych komputerów. Włączenie jak i wyłączenie
	    powiadomień wszystkim komputerom należącym do wybranych klientów jest możliwe w tym miejscu.</para>
	</sect2>
	<sect2 id="menu-customers-reports">
	    <title>Raporty</title>
	    <para>Zestaw modułów wyświetlających listy i raporty formie przyjaznej dla drukarki
	    zawiera:
	    <itemizedlist>
		<listitem>
		    <para><emphasis>Lista klientów</emphasis> z wieloma filtrami i dowolnym sortowaniem,</para>
		</listitem>
		<listitem>
		    <para><emphasis>Raport wierzytelności</emphasis> klienta(ów) na dany dzień,</para>
		</listitem>
		<listitem>
		    <para><emphasis>Bilans klienta</emphasis> za wybrany okres</para>
		</listitem>
	    </itemizedlist>
	    </para>
	</sect2>
 </sect1>
 <sect1 id="menu-nodes">
	<title>Komputery</title>
	<para>Panel ten służy do zarządzania komputerami i umożliwia: przeglądanie listy komputerów,
	wyszukiwanie, dodawanie nowych lub usuwanie już	wpisanych do bazy komputerów, a także podgląd 
	i zmianę informacji o nich.</para>
	<sect2 id="menu-nodes-list">
	    <title>Lista</title>
	    <para>Lista komputerów, ta która pokazuje się po wejściu do panelu 'Komputery'. 
	    obejmuje wszystkie komputery w bazie. Można ją sortować klikając na nazwie dowolnej 
	    kolumny. W każdym wierszu, po prawej stronie znajdują się ikony służące kolejno do:
	    zmiany statusu komputera [Podłącz/Odłącz], zmiany statusu ostrzeżenia [Ostrzegaj/Nie ostrzegaj],
	    usunięcia z bazy [Usuń], wywołania panelu edycyjnego [Edytuj] oraz wyświetlenia
	    informacji szczegółowych na temat danego komputera [Informacje]. Do panelu informacyjnego,
	    który jest zintegrowany z panelem informacji o właścicielu komputera można także
	    przejść klikając na podświetlonym wierszu.</para>
	</sect2>
	<sect2 id="menu-nodes-new">
	<title>Nowy komputer</title>
	    <para>Tutaj dodaje się nowe komputery do bazy danych. W tym celu definiujemy nazwę
	    komputera (składającą się z liter, cyfr, znaku podkreślenia lub myślnika), jego właściciela,
	    adres IP, adres MAC oraz status. Przy polach na adresy IP i MAC znajdują się linki
	    do paneli, w których można wybrać dostępny adres IP oraz znaleziony w sieci MAC.
	    Po wpisaniu danych naciśnij "Zapisz". Przy wprowadzaniu danych dla wielu komputerów
	    wygodnie jest zaznaczyć pole "Wywołaj ponownie..."
	    <note><para>Aby wyszukać komputery w swojej sieci
	    możesz skorzystać z programu nbtscan. Jeśli jest on zainstalowany w systemie, po
	    naciśnięciu 'Skanuj' zobaczysz listę znalezionych komputerów.</para></note>
	    <note><para>Aby dodać komputer musisz mieć sieć i klienta,
	    którym go przypiszesz.</para></note></para>
	</sect2>
	<sect2 id="menu-nodes-search">
	    <title>Szukaj</title>
	    <para>Wyszukiwanie komputerów według zadanych kryteriów. Możesz podać 
	    całą lub fragment nazwy komputera oraz jego adresów IP i MAC.</para>
	</sect2>
	<sect2 id="menu-nodes-notices">
	    <title>Powiadomienia</title>
		<para>Tutaj definiuje się treść wiadomości administracyjnych (powiadomień) dla klientów oraz
		włącza lub wyłącza je wybranym komputerom. Po lewej stronie znajduje się lista, na
		której komputery z włączonym powiadomieniem zaznaczone są kolorem czerwonym. Jeśli chcesz
		tylko zmienić/przypisać klientom treść powiadomienia, zaznacz odpowiednie
		komputery na liście i pozostaw puste pola 'Włącz' oraz 'Wyłącz'.</para>
	</sect2>	
	<sect2 id="menu-nodes-reports">
	    <title>Raporty</title>
		<para>Wyświetlenie list komputerów, w formacie przyjaznym dla drukarki 
		z możliwością definiowania filtrów i sortowania podobnie jak na Liście.</para>
	</sect2>
 </sect1>
 <sect1 id="menu-netdevices">
	<title>Osprzęt sieciowy</title>
	<para>W panelu przeznaczonym do ewidencji sprzętu zarządzamy strukturą 
	sieci, urządzeniami typu switch, hub, router, serwer i połączeniami między
	nimi, a także przyłączonymi do nich komputerami. Każdemu urządzeniu można przypisać 
	co najmniej jeden adres sieciowy.</para>
	    <sect2 id="menu-netdevices-list">
	    <title>Lista</title>
		<para>Lista urządzeń zawiera ich nazwy i symbole, położenie i opis, a ponadto 
		ilość dostępnych portów. Lista może być sortowana wg dowolnego parametru/kolumny.
		Kliknięcie na wybranym urządzeniu spowoduje wyświetlenie informacji szczegółowych 
		o nim, gdzie możliwe jest definiowanie połączeń urządzeń i komputerów, adresów IP
		urządzenia oraz zamiana dwóch urządzeń.</para>
	    </sect2>
	    <sect2 id="menu-netdevices-new">
	    <title>Nowe urządzenie</title>
		<para>Urządzenie sieciowe powinno posiadać unikalną nazwę. Pozostałe
		parametry tj. producent, model, nr seryjny, ilość portów, lokalizacja
		i opis są opcjonalne.</para>
	    </sect2>
	    <sect2 id="menu-netdevices-search">
		<title>Szukaj</title>
		<para>Wyszukiwanie urządzeń według zadanych kryteriów. Możesz podać 
		całą lub fragment nazwy, adresów IP i MAC oraz innych danych.</para>
	    </sect2>
	    <sect2 id="menu-netdevices-map">
	    <title>Mapa</title>
		<para>Generowanie graficznej mapy całej sieci, na podstawie
		danych z bazy LMS'a następuje po wybraniu opcji menu 'Mapa'. Możesz 
		zdefiniować, które urządzenie jest nadrzędne w stosunku do pozostałych.
		<note><para>Do wygenerowania mapy potrzebna jest wbudowana w PHP obsługa 
		biblioteki graficznej GD lub Ming.</para></note>
		Aby wybrać typ mapy musisz skorzystać z opcji <filename>map_type</filename>
		z sekcji <emphasis>[phpui]</emphasis>. Ustaw "flash" jeśli używasz biblioteki
		Ming, "gd" jeśli chcesz generować obrazki przy pomocy gdlib lub "openlayers" jeśli
		chcesz używać biblioteki OpenLayers do generowania mapy. Domyślnie
		(opcja nieustawiona) LMS spróbuje wykryć jaką bibliotekę masz dostępną w systemie, przy czym
		w pierwszej kolejności szuka możliwości wygenerowania mapy we flashu, a jak
		się to nie uda, to użyje GD.
		</para>
		<para>Na mapie hosty wyłączone oznaczone są kolorem czarnym. Ikona z pytajnikiem
		oznacza, że dany komputer nie był jeszcze skanowany/włączony. Aby skorzystać z 
		tej funkcjonalności należy, korzystając z crona, uruchamiać skrypt skanujący.
		Na mapie komputer traktowany jest za włączony jeśli czas ostatniego pozytywnego
		skanowania nie jest starszy od zadanej wartości (domyślnie 600 sekund).
		Parametr ten określa się przy pomocy opcji
		<filename>lastonline_limit</filename> w sekcji [phpui] pliku konfiguracyjnego.
		Powyższe odnosi się również do urządzeń z tym, że status urządzenia określa
		się na podstawie statusu wszystkich jego adresów.
		Status komputerów jest także widoczny na liście komputerów.
		<note><para>Do badania aktywności hostów można wykorzystać skrypt lms-fping lub demona lmsd.</para></note>
		</para>
	    </sect2>
 </sect1>
 <sect1 id="menu-networks">
	<title>Sieci IP</title>
	<para>Tutaj definiujesz dane swojej sieci tj. pulę adresową, domenę, DNS'y, bramę,
	zakres DHCP. Jeżeli LMS służy ci do zarządzania wieloma sieciami lub dzielisz jedną sieć 
	na podsieci, albo korzystasz z różnych pul adresowych tutaj jest to możliwe.</para>
	<sect2 id="menu-networks-list">
	    <title>Lista</title>
	    <para>Lista sieci oprócz podstawowych danych o sieciach zawiera podsumowanie ilości
	    adresów wolnych i przypisanych. Modyfikowanie właściwości sieci następuje w module 
	    dostępnym po wybraniu sieci z listy lub bezpośrednio po kliknięciu ikony [Edytuj].</para>
	    <para>Podczas edycji danych sieci możesz przeglądać listę komputerów z tej sieci, gdzie w 
	    miejscu adresu IP pojawia się nazwa komputera/urządzenia, do którego możesz przejść 
	    klikając na odpowiednim polu. Kliknięcie na polu z adresem IP przeniesie Cię do modułu
	    dodawania nowego komputera. Znajdziesz tu także dwa przydatne linki: <emphasis>
	    Porządkuj sieć</emphasis> służący do przeadresowania komputerów, tak aby wyeliminować 
	    luki w adresacji oraz <emphasis>Przeadresuj do sieci</emphasis> służący do przenoszenia wszystkich 
	    komputerów/urządzeń z tej sieci do innej.</para>
	</sect2>
	<sect2 id="menu-networks-new">
	    <title>Nowa sieć</title>
	    <para>Definiując nową sieć musisz określić jej unikalną nazwę i pulę adresową podając adres IP sieci i maskę. Pozostałe dane są opcjonalne.</para>
	    <para>Interfejsy fizyczne, aliasy i vlany są rozpoznawane przez LMS, w sposób podany poniżej:
	    <itemizedlist>
		    <listitem>
			    <para><emphasis>Interfejs fizyczny</emphasis> - przykład: eth0</para>
		    </listitem>
		    <listitem>
			    <para><emphasis>Alias</emphasis> - przykład: eth0:1</para>
		    </listitem>
		    <listitem>
			    <para><emphasis>Interfejs vlan o VID 19</emphasis> - przykład: eth0.19</para>
		    </listitem>
		    <listitem>
			    <para><emphasis>Pierwszy alias na interfejsie vlan o VID 19</emphasis> - przykład: eth0.19:1</para>
		    </listitem>
	    </itemizedlist>
    </para>
	</sect2>
 </sect1>
 <sect1 id="menu-finances">
	<title>Finanse</title>
	<para>Jest to właściwie wiele modułów umożliwiających zarządzanie finansami sieci.
	Masz możliwość definiowania taryf abonamentowych, opłat (zleceń) stałych, księgowania 
	operacji finansowych, przeglądania bilansu i historii rachunku oraz sporządzania faktur
	i zestawień finansowych.</para> 
	<sect2 id="menu-tariffs-list">
	    <title>Lista taryf</title>
	    <para>Po wejściu do panelu 'Finanse' zobaczysz listę taryf zawierającą
	    podstawowe informacje o nich. Klikając wybraną taryfę na liście zostaniesz
	    przeniesiony do modułu 'Informacje o taryfie', gdzie możesz edytować jej parametry
	    lub zamieniać klientom taryfy. W polu 'ilość klientów' podana jest liczba
	    klientów, którym dana taryfa została przypisana oraz kolejno od lewej (w nawiasie) całkowita 
	    liczba przypisań taryfy i liczba aktywnych przypisań taryfy, uwzględniająca okresy obowiązywania.</para>
	</sect2>
	<sect2 id="menu-tariffs-new">
	    <title>Nowa taryfa</title>
	    <para>Definiując nową taryfę musisz podać unikalną nazwę, kwotę i stawkę podatku.
	    Przy czym "zw." w polu stawka podatku oznacza "zwolnienie z podatku".</para>
	</sect2>
	<sect2 id="menu-payments-list">
	    <title>Lista płatności</title>
    	    <para>Lista opłat stałych świadczonych na rzecz innych podmiotów, oprócz elementów standardowych
	    zawiera ikonę [Nalicz], przy pomocy której można obciążyć rachunek sieci. Automatycznym naliczaniem
	    opłat zajmuje się skrypt 'lms-payments' lub odpowiedni moduł demona lmsd. Klikając wybraną 
	    opłatę na liście zostaniesz przeniesiony do modułu 'Informacje o opłacie', gdzie możesz 
	    edytować jej parametry lub zaksięgować daną opłatę w bazie operacji finansowych.</para>
	</sect2>
	<sect2 id="menu-payments-new">
	    <title>Nowa płatność</title>
	    <para>Nowej opłacie stałej przypisujesz unikalną nazwę, wierzyciela oraz kwotę i dzień
	    naliczenia.</para>
	</sect2>
	<sect2 id="menu-balance">
	    <title>Bilans finansowy</title>
	    <para>Historia operacji finansowych z podsumowaniem przychodu, rozchodu,
	    wpłat i zobowiązań klientów. Ikona drukarki umożliwia wydruk faktury odpowiadającej
	    danej pozycji z listy.</para>
	</sect2>
	<sect2 id="menu-newbalance">
	    <title>Nowa operacja</title>
	    <para>Wprowadzanie nowych operacji finansowych. Możliwe jest
	    zaksięgowanie tej samej wpłaty lub obciążenia wielu klientom równocześnie.</para>
	    <para><note><para>Do naliczania stałych opłat abonamentowych najlepiej wykorzystywać
	    skrypt lms-payments lub demona <emphasis>lmsd</emphasis>, które potrafią ponadto
	    wystawiać faktury.</para></note></para>
	</sect2>
	<sect2 id="menu-invoices-list">
		<title>Lista faktur</title>
		<para>Lista wystawionych faktur z możliwością wydruku wybranych faktur (ikona [Drukuj])
		oraz oznaczenia faktur jako rozliczone. Faktury oznaczone jako rozliczone będą na liście
		wyszarzone. Faktury można filtrować wg zadanych kryteriów przy użyciu dostępnego na liście filtra.</para>
	</sect2>
	<sect2 id="menu-invoices-new">
		<title>Nowa faktura</title>
		<para>Ręczne wystawianie faktury dla wybranego klienta. W pierwszej kolejności
		wybieramy klienta z listy, ustawiamy typ płatności i pozostałe dane takie jak
		termin płatności, data wystawienia, a nawet numer faktury i klikamy 
		'Zapisz'. Następnie możemy dodawać pozycje do faktury. 
		'Zapisz i drukuj' kończy edycję nowej faktury, zapisuje ją w systemie
		i wyświetla wydruk faktury w nowym oknie.</para>
		<para>Konfigurację wydruków faktur opisano w rozdziale p.t. 
		Instalacja i Konfiguracja.</para>
	</sect2>
	<sect2 id="menu-debitnotes-list">
		<title>Lista not obciążeniowych</title>
		<para>Lista wystawionych not obciążeniowych (debetowych) z możliwością wydruku wybranych (ikona [Drukuj])
		oraz oznaczenia ich jako rozliczone. Noty oznaczone jako rozliczone będą na liście
		wyszarzone. Noty można filtrować wg zadanych kryteriów przy użyciu dostępnego na liście filtra.</para>
	</sect2>
	<sect2 id="menu-debitnotes-new">
		<title>Nowa nota obciążeniowa</title>
		<para>Ręczne wystawianie noty dla wybranego klienta. W pierwszej kolejności
		wybieramy klienta z listy, ustawiamy datę wystawienia oraz numer i klikamy 
		'Zapisz'. Następnie w tabelce poniżej możemy dodawać pozycje do noty. 
		'Zapisz i drukuj' kończy edycję nowej noty obciążeniowej, zapisuje ją w systemie
		i wyświetla wydruk faktury w nowym oknie.</para>
		<para>Konfigurację wydruków not opisano w rozdziale p.t. 
		Instalacja i Konfiguracja.</para>
	</sect2>
	<sect2 id="menu-receipts-list">
	    <title>Rejestr kasowy</title>
		<para>Kasę gotówkową można podzielić na rejestry np. kasa1, kasa2, kasa główna,
		bank itp. Na liście rejestrów znajdują się wszystkie informacje o zdefiniowanych
		rejestrach wraz z aktualnym stanem kasy w każdym z nich oraz podsumowaniem,
		które nie obejmuje rejestrów, którym włączono opcję "Wyłączenie z sumowania".</para>
		<para>Każdy rejestr kasowy może posiadać własną numerację dokumentów kasowych
		oraz uprawnienia dla użytkowników. Uprawnienie "Zapis", przeznaczone dla zwykłych
		kasjerów, pozwala na odczyt oraz dodawanie nowych dokumentów dla wybranego celu:
		<itemizedlist>
			<listitem><para>klient - KP/KW dla klienta</para></listitem>
			<listitem><para>przen.śr. - przeniesienie środków między kasami</para></listitem>
			<listitem><para>zaliczka - dowód wypłaty zaliczki (dla użytkownika - pracownika firmy)</para></listitem>
			<listitem><para>inny - KP/KW dla osoby nie będącej klientem</para></listitem>
			<listitem><para>mod. - możliwość dodania pozycji w inny sposób niż wybranie z listy faktur.</para></listitem>
		</itemizedlist>
		Uprawnienie "Zaawansowany" daje możliwość edycji i usuwania dokumentów oraz zmiany numeru i daty wystawienia.</para>
		<para>Na dokumenty kasowe składają się dowody wpłaty "KP" oraz wypłaty "KW",
		stanowiące poświadczenia przyjęcia/wydania gotówki do/z kasy (rejestru kasowego).
		Lista dokumentów kasowych. do której dostajemy się klikając wybrany rejestr na
		liście rejestrów kasowych, może być dowolnie sortowana oraz filtrowana
		podobnie jak lista faktur. Masz także możliwość wydrukowania wybranych
		dowodów.</para>
		<para>Z listy można przejść do edycji dokumentu. Dokonując zmian 
		w wystawionych poświadczeniach należy zachować szczególną ostrożność, gdyż
		zapisanie zmian powoduje usunięcie starego poświadczenia i związanych z nim
		operacji oraz wstawienie nowych.</para>
	</sect2>
	<sect2 id="menu-receipts-new">
	    <title>Nowy dokument kasowy</title>
		<para>Podczas wystawiania dokumentu kasowego w pierwszej kolejności
		wybieramy rejestr kasowy i typ operacji. Następnie wybieramy z listy klienta 
		lub wyszukujemy go wg zadanych kryteriów, ustawiamy datę i numer (najlepiej pozostawić 
		wartości zaproponowane przez system). Istnieje możliwość wybrania innego typu
		operacji nie związanych z klientem lub przekazania środków do innego rejestru.
		Następnie klikamy 'Wybierz' aby zatwierdzić wybór. Po tym możemy dodawać dowolną 
		ilość pozycji zawierających opis i kwotę lub wybrać je z listy nierozliczonych 
		faktur klienta. 'Zapisz i drukuj' kończy edycję, zapisuje poświadczenie
		oraz wpłaty/wypłaty w systemie, przechodzi do listy dokumentów w wybranym
		rejestrze i wyświetla wydruk KP/KW w nowym oknie.</para>
		<para>Konfigurację wydruków dokumentów kasowych opisano w rozdziale p.t. 
		Instalacja i Konfiguracja.</para>
	</sect2>
	<sect2 id="menu-import">
	    <title>Import</title>
		<para>Import służy do zapisywania operacji finansowych z zewnętrznych
		systemów np. pobranych z banku bezpośrednio ze stron www lub z e-maila. 
		Do tego celu należy napisać skrypt (parser) wrzucający dane do tabeli
		cashimport. Przykładem takiego zastosowania jest skrypt lms-cashimport-ingbs.
		Następnie po wejściu do menu Import zobaczymy listę wrzuconych operacji
		finansowych, które należy zatwierdzić (ewentualnie zmodyfikować) przed
		zapisem do systemu finansowego LMSa.</para>
		<para>Dzięki temu modułowi możliwe jest także wczytanie płatności/przelewów z przygotowanego
		wcześniej pliku tekstowego. Plik taki jest czytany linia po linii
		i korzystając z ustawionych wyrażeń regularnych parsowany w celu wyłuskania
		danych dotyczących każdej płatności, potrzebnych do zapisania w bazie danych
		(ID klienta, kwota, itd.). Po wczytaniu pliku zostanie wyświetlona lista
		płatności do zatwierdzenia i/lub korekty.</para>
		<para>Aby skrypt potrafił odczytać dane z plików w dowolnym formacie należy
		zdefiniować odpowiednio wyrażenia regularne w skrypcie PHP, którego lokalizację
		podajemy w opcji <filename>import_config</filename> sekcji <emphasis>[phpui]</emphasis>.
		Przykładowe wartości wraz z objaśnieniem dostępnych parametrów znajdują się w pliku 
		<filename>modules/cashimportcfg.php</filename>. 
		Domyślna konfiguracja zakłada, że dane będą miały postać następującą:
<screen>
23.02.2004	Machniak Aleksander	123,45	Opłata za Internet 04/2004 ID:0013
15.02.2004	Ból Józef	123,45	Opłata za faktrę LMS/34/2004
</screen>
		</para>
		<para>Podczas zatwierdzania importowanych pozycji możliwe jest włączenie
		automatycznego oznaczania faktur jako rozliczonych, zależnie od wielkości wpłaty 
		(i bilansu klienta). Służy do tego opcja 'cashimport_checkinvoices' z sekcji
		<emphasis>[finances]</emphasis>. Faktura (oraz jej korekty) oznaczana jest jako
		rozliczona jeśli wpłata (z uwzględnieniem bilansu klienta) przewyższa
		kwotę obciążenia wynikającą z danej faktury.</para>
	</sect2>
	<sect2 id="menu-export">
		<title>Eksport</title>
			<para>Eksport danych finansowych do systemów zewnętrznych polega na
			generowaniu plików tekstowych zawierających dane pobrane wg zdefiniowanych
			filtrów. Dla każdego dokumentu tworzony jest rekord w pliku tekstowym.
			Format rekordu ustala użytkownik korzystając ze zmiennych.</para>
			<para>Konfiguracji eksportu dokonujemy w pliku, którego lokalizację
			podajemy w opcji <filename>export_config</filename> sekcji <emphasis>[phpui]</emphasis>.
			Przykładowe wartości wraz z objaśnieniem dostępnych parametrów znajdują się w pliku 
			<filename>modules/exportcfg.php</filename>. Najlepiej więc jest zapisać jego kopię
			i w niej dokonywać stosownych zmian.</para>
			<para>Każdej pozycji Rejestru Sprzedaży (każdej fakturze)
			odpowiada jeden rekord w pliku wyjściowym. W przypadku Raportu Kasowego rekordem 
			jest pozycja dokumentu kasowego.</para>
	</sect2>
	<sect2 id="menu-finances-reports">
	    <title>Raporty</title>
	    <para>Wydruki zestawień finansowych obejmują:
	    <itemizedlist>
		<listitem>
			<para><emphasis>Historia operacji finansowych</emphasis> obejmujący operacje finansowe 
			za dany okres z możliwością użycia rozbudowanego filtra.</para>
		</listitem>
		<listitem>
			<para><emphasis>Historia operacji klienta</emphasis> na dany okres.</para>
		</listitem>
		<listitem>
			<para><emphasis>Rejestr sprzedaży</emphasis>, czyli zestawienie faktur na dany okres.</para>
		</listitem>
		<listitem>
			<para><emphasis>Raport kasowy</emphasis>, czyli zestawienie dokumentów
			kasowych za dany okres, całościowe lub z wybranego rejestru albo dla
			wybranego kasjera.</para>
		</listitem>
		<listitem>
			<para><emphasis>Faktury</emphasis> - wydruk wszystkich lub wybranego klienta za dany okres 
			(z wyborem oryginał/kopia) lub wygenerowanie PDFa z danymi potrzebnymi do zadruku standardowych 
			dwuodcinkowych formularzy przelewu/wpłaty z potwierdzeniem.</para>
		</listitem>
		<listitem>
			<para><emphasis>Formularze przelewu</emphasis> - wydruk PDFa z danymi przeznaczonymi
			do zadruku standardowych czteroodcinkowych formularzy przelewu/wpłaty.</para>
		</listitem>
		<listitem>
			<para><emphasis>Łączny przychód bezrachunkowy sieci</emphasis> w danym okresie.</para>
		</listitem>
		<listitem>
		    <para><emphasis>Raport wierzytelności</emphasis> na dany dzień, dla wszystkich lub 
		    wybranego klienta.</para>
		</listitem>
		<listitem>
			<para><emphasis>Historia importu płatności</emphasis> z danego okres
			z możliwością wyboru źródła importu.</para>
		</listitem>
	    </itemizedlist>
	    </para>
	</sect2>
</sect1>
<sect1 id="menu-documents">
	<title>Dokumenty</title>
	<para>Dokumenty niefinansowe można znaleźć bezpośrednio w zakładce klienta oraz
	w menu 'Dokumenty'. LMS umożliwia przechowywanie gotowych dokumentów w dowolnym formacie 
	oraz tworzenie ich wg zdefiniowanych własnych szablonów. Zwłaszcza funkcjonalność
	szablonów jest ciekawa, gdyż umożliwia tworzenie rozbudowanych wtyczek, których
	działanie nie musi ograniczać się tylko do wygenerowania wydruku.</para>
	<sect2 id="menu-documents-list">
		<title>Lista</title>
		<para>Lista zawiera podstawowe informacje o wszystkich dokumentach takie jak numer, tytuł,
		typ, datę utworzenia, daty obowiązywania oraz nazwę/nazwisko i imię klienta. Prosty
		filtr umożliwia przeszukiwanie wg typu dokumentu lub klienta.</para>
	</sect2>
	<sect2 id="menu-documents-new">
		<title>Nowy dokument</title>
		<para>Dokumenty można tworzyć na podstawie szablonów utworzonych według
		zasad opisanych w rozdziale <xref linkend="install-documents-other">. Mogą to być
		także już gotowe pliki, które zostaną zapisane na serwerze. Podczas tworzenia/zapisu 
		dokumentu należy nadać mu tytuł oraz typ oraz wybrać klienta. Można określić daty
		obowiązywania oraz dodatkowy opis. Dokumenty mogą być numerowane według dowolnie
		zdefiniowanych w systemie planów numeracyjnych.</para>
	</sect2>
	<sect2 id="menu-documents-documentgen">
		<title>Generator dokumentów</title>
		<para>Generator umożliwia utworzenie dokumentów wg wybranego szablonu dla wybranej
		grupy klientów. Opcja 'Drukuj' umożliwia jednocześnie wydruk wygenerowanych dokumentów
		pod warunkiem, że są to dokumenty HTML.
		<note><para>Z uwagi na wydajność zaleca się korzystanie ze zoptymalizowanych pod kątem 
		generatora szablonów oraz nie drukowania większej ilości dokumentów (może to prowadzić do
		zawieszenia przeglądarki).</para></note>
		</para>
	</sect2>
	<sect2 id="menu-documents-rights">
		<title>Prawa dostępu</title>
		<para>Tutaj możesz zdefiniować prawa dostępu (odczyt, tworzenie, 
		zatwierdzanie, edycja, usuwanie) użytkowników do wybranych typów
		dokumentów.</para>
	</sect2>
</sect1>
<sect1 id="menu-hosting">
	<title>Hosting</title>
	<para>Zarządzanie różnymi usługami na serwerze jest teraz
	możliwe. Funkcjonalność ta jest przeznaczona dla zaawansowanych 
	użytkowników. Wymaga znajomości tych usług i ich konfiguracji
	w celu korzystania z bazy danych.</para>
	<para>W LMSie można utworzyć pięć rodzajów kont: shell (1), poczta (2),
	www (4), ftp (8) i sql (16). W nawiasach podano numeryczne wewnętrzne oznaczenie
	typu konta w bazie. Konta mogą być wielotypowe. Przykładowo, jeśli 
	zdefiniujesz konto shell+poczta+ftp w bazie zostanie zapisana cyfra 11.
	Oznacza to, że do rozpoznawania typu konta w warunkach WHERE zapytań
	SQL należy stosować sumowanie binarne (jak na przykładach w dalszej
	części rozdziału).</para>
	<para>Masz także możliwość definiowania domen i aliasów.</para>
	<sect2 id="menu-hosting-accounts">
	    <title>Konta</title>
	    <para>Na liście przedstawione są podstawowe informacje o kontach.
	    Możliwe jest dowolne sortowanie listy poprzez kliknięcie nazwy
	    kolumny oraz filtrowanie wg zadanych kryteriów. Przejście do edycji 
	    danych konta następuje po wybraniu ikony [Edytuj]. Użytkownik ma 
	    także prawo do zmiany hasła.</para>
	</sect2>
	<sect2 id="menu-hosting-new-account">
	    <title>Nowe konto</title>
	    <para>Definiując dane konto musisz podać login, hasło, wybrać domenę,
	    wybrać typ konta oraz przypisać klienta (lub utworzyć tzw. konto
	    systemowe). Data ważności konta jest opcjonalna. Pozostawienie pustego pola z datą 
	    oznacza, że konto nigdy nie wygasa. </para>
	    <para>Masz możliwość zdefiniować dowolny katalog domowy użytkownika (konta).
	    Opcja konfiguracyjna <filename>homedir_prefix</filename> w sekcji 
	    <emphasis>[phpui]</emphasis> zawiera prefix katalogu domowego, domyślnie
	    ustawiony na wartość "/home/".</para>
	</sect2>
	<sect2 id="menu-hosting-aliases">
	    <title>Aliasy</title>
	    <para>Konta (głównie mailowe) mogą posiadać dowolną ilość aliasów.
	    Administrator serwera pocztowego może przekierować (lokalnie) pocztę
	    z wszystkich aliasów do jednego konta. Na liście aliasów przedstawione 
	    są podstawowe informacje o nich i o kontach na które aliasy te wskazują.
	    Możliwe jest dowolne sortowanie listy poprzez kliknięcie nazwy
	    kolumny oraz filtrowanie wg zadanych kryteriów.</para>
	</sect2>
	<sect2 id="menu-hosting-new-alias">
		<title>Nowy alias</title>
		<para>Tworząc alias definiujesz dla niego login i domenę oraz cel. Celem może 
		być jedno lub więcej istniejących kont. Uwaga: aby utworzyć alias do konta,
		które znajduje się na obcym serwerze należy utworzyć konto i podać adres przekierowania.</para>
	</sect2>
	<sect2 id="menu-hosting-domains">
	    <title>Domeny</title>
	    <para>Obecnie LMS może bezpośrednio zarządzać serwerem PowerDNS z mysql/pqsl backend.
		LMS teraz posiada pełne wsparcie dla większości funkcji serwera PowerDNS. Ma pełnie wsparcie 
		dla domen typu: master, slave i native. Na liście domen przedstawione są podstawowe informacje 
		o zdefiniowanych domenach jak nazwa, typ, właściciel. Możliwe jest dowolne sortowanie listy 
		poprzez kliknięcie nazwy kolumny lub poprzez pierwszą literę nazwy domeny. Możliwa jest edycja 
		podstawowych danych domeny po wybraniu ikony [Edytuj]. Zaawansowana edycja rekordów domeny 
		odbywa się poprzez wybranie ikony [Informacje] a następnie [Rekordy]. Możliwa wtedy jest pełna 
		konfiguracja wszystkich rekordów opisujących daną domenę. Każda zmiana rekordu zapisana w bazie 
		danych LMS np.: edycja, dodanie lub usunięcie rekordu automatycznie zwiększa licznik domeny o 1.
		Każda zmiana jest także automatycznie dostrzegana przez serwer PowerDNS. Aby taka wspópraca była 
		możliwa należy w bazie danych LMS założyć dodatkowego użytkownika z uprawieniami SELECT, INSERT,
		UPDATE, DELETE dla tabel domains, records oraz SELECT dla tabeli supermaster.</para>
	</sect2>
	<sect2 id="menu-hosting-new-domain">
		<title>Nowa domena</title>
		<para>Dane domeny zawierają nazwę, opis, typ (master, slave, native), adres ip serwera www, 
		adres ip serwera pocztowego, adres ip głównego serwera nazw (jeśli wybrano typ slave) i inne
		parametry, których wartości domyślne ustawione są w sekcji [zones]. Domena może zostać przypisana 
		do klienta.</para>
	</sect2>
	<sect2 id="menu-hosting-search">
		<title>Szukaj</title>
		<para>Wyszukiwanie kont, aliasów i domen według zadanych kryteriów.</para>
	</sect2>
	<sect2 id="hosting-examples">
	    <title>Przykłady</title>
	    <para>Poniżej opisano sposób intergracji LMS z serwerem PowerDNS.
	    <example id="hosting-e0">
	    <title>Domeny. Konfiguracja PowerDNS.</title>
<screen>
Przygotowanie bazy danych na której działa LMS do współpracy z serwerem PowerDNS.  

Dodajemy użytkownika powerdns o uprawnieniach ograniczonych do tabel domains i records.

GRANT SELECT, INSERT, UPDATE, DELETE ON lms.domains TO 'powerdns'@'adres-serwera-dns' IDENTIFIED BY 'hasło';
GRANT SELECT, INSERT, UPDATE, DELETE ON lms.records TO 'powerdns'@'adres-serwera-dns' IDENTIFIED BY 'hasło';

Instalujemy pakiety: pdns, pdns-backend, pdns-recursor.

W dystrybucjach Centos, Fedora, RedHat:

yum install pdns pdns-backend pdns-recursor

Edytujemy plik /etc/pdns/pdns.conf dodając:

launch=gmysql
gmysql-dbname=lms #wpisz właściwą nazwę bazy danych na której pracuje lms
gmysql-host=adres-serwera-sql #podaj adres ip lub nazwę serwera na którym pracuje bazy danych
gmysql-password=hasło
gmysql-user=powerdns
master=yes 
slave=yes
recursor=127.0.0.1:5300
allow-recursion=127.0.0.0/8, 192.168.0.1/24 

Gdzie 192.168.0.1 to przykładowa sieć. Po przecinku należy dodać własne sieci z których
serwer ma obsługiwać zapytania rekurencyjne.

Edytujemy plik /etc/pdns-recursor/recursor.conf	dodając:

allow-from=127.0.0.0/8 
local-address=127.0.0.1
local-port=5300

Następnie:

chkconfig --levels 235 pdns-recursor on
chkconfig --levels 235 pdns on

service pdns-recursor start
service pdns start

Na Debianie:

apt-get install pdns-server pdns-backend-mysql pdns-recursor

Edytujemy plik  /etc/powerdns/pdns.conf dodając:

launch=gmysql

Edytujemy /etc/powerdns/pdns.d/pdns.local dodając: 

gmysql-dbname=lms #wpisz właściwą nazwę bazy danych na której pracuje lms
gmysql-host=adres-serwera-sql #podaj adres ip lub nazwę serwera na którym pracuje bazy danych
gmysql-password=hasło
gmysql-user=powerdns
master=yes 
slave=yes

Edytujemy plik /etc/powerdns/recursor.conf	dodając:

allow-from=127.0.0.0/8 
local-address=127.0.0.1
local-port=5300

Następnie 

/etc/init.d/pdns start
/etc/init.d/pdns-recursor start

</screen>
</example></para>
	    <para>Poniższy listing zawiera istotne fragmenty pliku konfiguracyjnego
	    demona proftpd (w wersji 1.2.10) umożliwiający przechowywanie danych
	    o kontach ftp w bazie LMSa. Przykład zawiera konfigurację dla bazy
	    danych PostgreSQL, w komentarzach podano rozwiązania dla MySQLa:
	    <example id="hosting-e1">
		<title>Hosting. Konfiguracja proftpd.</title>
<screen>
  ServerName	"LMS FTP Server"
  
  #nazwa_bazy@host:port klient hasło
  SQLConnectInfo lms@localhost:5432 lms mypassword
  
  SQLAuthTypes Crypt Plaintext
  SQLUserInfo passwd login password uid NULL home NULL
  RequireValidShell off
  SQLAuthenticate users
  
  # utworzenie katalogu domowego gdy nie istnieje
  SQLHomedirOnDemand on
  
  # komunikat przy logowaniu
  SQLShowInfo PASS "230" "Last login: %{getlastlogin}"
  SQLLog PASS setlastlogin
  
  # SQLNamedQuery getlastlogin SELECT "CASE lastlogin WHEN 0 THEN '' ELSE FROM_UNIXTIME(lastlogin) END FROM passwd WHERE login='%u'"
  # SQLNamedQuery setlastlogin UPDATE "lastlogin=UNIX_TIMESTAMP() WHERE login='%u'" passwd 
  SQLNamedQuery getlastlogin SELECT "CASE lastlogin WHEN 0 THEN '' ELSE lastlogin::abstime::timestamp::text END FROM passwd WHERE login='%u'"
  SQLNamedQuery setlastlogin UPDATE "lastlogin=EXTRACT(EPOCH FROM CURRENT_TIMESTAMP(0)) WHERE login='%u'" passwd
  
  # Sprawdzamy datę ważności konta oraz ograniczamy szukanie do kont ftp
  # SQLUserWhereClause "type & 8 = 8 AND (expdate = 0 OR expdate &gt; UNIX_TIMESTAMP())"
  SQLUserWhereClause "type & 8 = 8 AND (expdate = 0 OR expdate &gt; EXTRACT(EPOCH FROM CURRENT_TIMESTAMP(0)))"
</screen>
	    </example></para>
	    <para>W kolejnym przykładzie przedstawimy jak skonfigurować serwer
	    Postfix 2.1.1 oraz Cyrus-SASL 2.1.19, Courier-IMAP/POP3 3.0.4, aby korzystały
	    z bazy danych LMSa. LMS'owe konta będą kontami wirtualnymi, a poczta
	    przechowywana będzie w formacie Maildir.</para>
	    <para>Ponieważ hasła w LMS'ie są szyfrowane, wymagane jest zainstalowanie
	    SASL'a z łatą pozwalającą na to. W komentarzach podano wartości opcji
	    charakterystycznych dla bazy MySQL. Listing zawiera tylko opcje bezpośrednio
	    związane z bazą danych:
	    <example id="hosting-e2">
		<title>Konta. Konfiguracja serwera pocztowego (postfix+sasl+courier).</title>
<screen>
# Plik smtpd.conf (Cyrus-SASL):

pwcheck_method: auxprop
password_format: crypt
mech_list: login plain
sql_user: lms
sql_passwd: hasło
sql_hostnames: localhost
sql_database: lms
# MySQL
#sql_engine: mysql
#sql_select: SELECT p.password FROM passwd p, domains d WHERE p.domainid = d.id
#       AND p.login='%u' AND d.name ='%r' AND p.type & 2 = 2 
#	AND (p.expdate = 0 OR p.expdate &gt; UNIX_TIMESTAMP())
# PostgreSQL
sql_engine: pgsql
sql_select: SELECT p.password FROM passwd p, domains d WHERE p.domainid = d.id
	AND p.login='%u' AND d.name ='%r' AND p.type & 2 = 2 
	AND (p.expdate = 0 OR p.expdate &gt; EXTRACT(EPOCH FROM CURRENT_TIMESTAMP(0)))

# authpgsqlrc (lub authmysqlrc) (Courier):

# użytkownik postfix (właściciel katalogu z pocztą)
#MYSQL_UID_FIELD '1004'
PGSQL_UID_FIELD '1004'
# grupa postfix (właściciel katalogu z pocztą)
#MYSQL_GID_FIELD '1004'
PGSQL_GID_FIELD '1004'
#MYSQL_PORT		3306
PGSQL_PORT		5432
#MYSQL_USERNAME		lms
PGSQL_USERNAME		lms
#MYSQL_PASSWORD		hasło
PGSQL_PASSWORD		hasło
#MYSQL_DATABASE		lms
PGSQL_DATABASE		lms
#MYSQL_SELECT_CLAUSE SELECT p.login, \
#       p.password, '', 104, 104, '/var/spool/mail/virtual', \
#       CONCAT(d.name,'/', p.login, '/'), '', p.login, '' \
#       FROM passwd p, domains d WHERE p.domainid = d.id \
#       AND p.login = '$(local_part)' AND d.name = '$(domain)' \
#       AND p.type & 2 = 2 AND (p.expdate = 0 OR p.expdate &gt; UNIX_TIMESTAMP())
PGSQL_SELECT_CLAUSE SELECT p.login, \
        p.password, '', 104, 104, '/var/spool/mail/virtual', \
        d.name || '/' || p.login ||'/', '', p.login, '' \
        FROM passwd p, domains d WHERE p.domainid = d.id 
        AND p.login = '$(local_part)' AND d.name = '$(domain)' \
        AND p.type & 2 = 2 \
        AND (p.expdate = 0 OR p.expdate &gt; EXTRACT(EPOCH FROM CURRENT_TIMESTAMP(0)))

# main.cf (Postfix):

virtual_mailbox_base = /var/spool/mail/virtual
virtual_mailbox_domains = pgsql:/etc/postfix/virtual_domains_maps.cf
virtual_mailbox_maps = pgsql:/etc/postfix/virtual_mailbox_maps.cf
virtual_alias_maps = pgsql:/etc/postfix/virtual_alias_maps.cf
recipient_bcc_maps = pgsql:/etc/postfix/recipient_bcc_maps.cf

# virtual_domains_maps.cf (Postfix):

user = lms
password = hasło
hosts = localhost
dbname = lms
#pgSQL i MySQL
query = SELECT name FROM domains WHERE name = '%s'

# virtual_mailbox_maps.cf (Postfix):

user = lms
password = hasło
hosts = localhost
dbname = lms

# MySQL
#query = SELECT CONCAT(d.name,'/', p.login, '/') 
#	FROM passwd p, domains d WHERE p.domainid = d.id
#	AND p.login = '%u' AND d.name = '%d' 
#	AND p.type & 2 = 2 AND (p.expdate = 0 OR p.expdate &gt; UNIX_TIMESTAMP())
# PostgresSQL
query = SELECT d.name || '/' || p.login || '/' 
	FROM passwd p, domains d WHERE p.domainid = d.id
        AND p.login = '%u' AND d.name = '%d' 
        AND p.type & 2 = 2 
        AND (p.expdate = 0 OR p.expdate &gt; EXTRACT(EPOCH FROM CURRENT_TIMESTAMP(0)))

# virtual_alias_maps.cf (Postfix):

user = lms
password = hasło
hosts = localhost
dbname = lms
# MySQL
#query = SELECT p.mail_forward
#	FROM passwd p
#	JOIN domains d ON (p.domainid = d.id)
#	WHERE p.login = '%u' AND d.name = '%d'
#		AND p.type & 2 = 2 AND p.mail_forward != ''
#		AND (p.expdate = 0 OR p.expdate &gt; UNIX_TIMESTAMP())
#	UNION
#       SELECT CASE WHEN aa.mail_forward != '' THEN aa.mail_forward ELSE CONCAT(p.login, '@', pd.name) END
#	FROM aliases a
#	JOIN domains ad ON (a.domainid = ad.id)
#	JOIN aliasassignments aa ON (aa.aliasid = a.id)
#	LEFT JOIN passwd p ON (aa.accountid = p.id AND (p.expdate = 0 OR p.expdate &gt; UNIX_TIMESTAMP()))
#	LEFT JOIN domains pd ON (p.domainid = pd.id)
#	WHERE a.login = '%u' AND ad.name = '%d'
#		AND (aa.mail_forward != '' OR p.id IS NOT NULL)
# PostgreSQL	
query = SELECT p.mail_forward
	FROM passwd p
	JOIN domains d ON (p.domainid = d.id)
	WHERE p.login = '%u' AND d.name = '%d'
		AND p.type & 2 = 2 AND p.mail_forward != ''
		AND (p.expdate = 0 OR p.expdate &gt; EXTRACT(EPOCH FROM CURRENT_TIMESTAMP(0)))
	UNION
	SELECT CASE WHEN aa.mail_forward != '' THEN aa.mail_forward ELSE p.login || '@' || pd.name END
	FROM aliases a
	JOIN domains ad ON (a.domainid = ad.id)
	JOIN aliasassignments aa ON (aa.aliasid = a.id)
	LEFT JOIN passwd p ON (aa.accountid = p.id
		AND (p.expdate = 0 OR p.expdate &gt; EXTRACT(EPOCH FROM CURRENT_TIMESTAMP(0))))
	LEFT JOIN domains pd ON (p.domainid = pd.id)
	WHERE a.login = '%u' AND ad.name = '%d'
		AND (aa.mail_forward != '' OR p.id IS NOT NULL)

# recipient_bcc_maps.cf (Postfix):

user = lms
password = hasło
hosts = localhost
dbname = lms
# MySQL
#query = SELECT p.mail_bcc FROM passwd p, domains d 
#	WHERE p.domainid = d.id
#	    AND p.login = '%u' AND d.name = '%d'
#		AND p.type & 2 = 2
#		AND p.mail_bcc != ''
#		AND (p.expdate = 0 OR p.expdate &gt; UNIX_TIMESTAMP())
# PostgreSQL
query = SELECT p.mail_bcc FROM passwd p, domains d 
	WHERE p.domainid = d.id
	        AND p.login = '%u' AND d.name = '%d'
		AND p.type & 2 = 2
		AND p.mail_bcc != ''
		AND (p.expdate = 0 OR p.expdate &gt; EXTRACT(EPOCH FROM CURRENT_TIMESTAMP(0)))
					
</screen>
	    </example></para>
		<para>Następny przykład podesłany przez bart'a przedstawia instalację i konfigurację
		serwera pure-ftpd w dystrybucji Gentoo z wykorzystaniem bazy danych MySQL.
		<example id="accounts-e3">
		    <title>Konta. Konfiguracja pure-ftpd.</title>
		    <para>No to zaczynamy od instalacji serwera pure-ftpd. Pod Gentoo wygląda to tak:
<screen>
bart # emerge pure-ftpd -av
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild   R   ] net-ftp/pure-ftpd-1.0.20-r1  -caps -ldap +mysql +pam -postgres +ssl +vchroot 459 kB
Total size of downloads: 459 kB
</screen>
			Co do innych systemów to każdy chyba wie jak się instaluje pakiety w
			swoim systemie, a jeżeli nie to pozostaje kompilacja ze źródeł.
			Po zainstalowaniu przechodzimy do stworzenia pliku, który będzie
			odpowiadał za łączenie się z bazą LMS'a.
			Tworzymy plik <filename>/etc/pureftpd-mysql.conf</filename>, który to 
			powinien zawierać minimum:
<screen>
MYSQLServer     localhost (adres serwera bazy danych - domyślnie 'localhost')
MYSQLPort       3306 (port na którym działa serwer MySql - domyślnie '3306')
MYSQLSocket     /var/run/mysqld/mysqld.sock (
MYSQLUser       lms (nazwa usera z dostępem do bazy)
MYSQLPassword   hasło (tutaj należy podać hasło)
MYSQLDatabase   lms (nazwa bazy danych)
MYSQLCrypt      crypt (sposób przechowywania haseł)
MYSQLGetPW      SELECT password FROM passwd WHERE login="\L" (pobieranie hasła dla usera)
MYSQLGetUID     SELECT uid FROM passwd WHERE login="\L" (pobieranie uid dla usera)
MYSQLGetGID     SELECT gid FROM passwd WHERE login="\L" (pobieranie gid dla usera)
MYSQLGetDir     SELECT home FROM passwd WHERE login="\L" (pobieranie nazwy katalogu domowego dla usera)
MySQLGetQTASZ   SELECT quota_ftp FROM passwd WHERE login="\L" (quota czyli pojemność konta w MB - podając w lms-ui 10 oznacza to pojemność 10MB)
</screen>
			Teraz pozostaje nam już tylko konfiguracja serwera pure-ftpd. (w gentoo
			plik konfiguracyjny mieści się w <filename>/etc/conf.d/pure-ftpd</filename>) 
			a więc:
<screen>
## Najpierw odkomentujmy tę linię, ponieważ inaczej serwer nie będzie chciał wystartować
IS_CONFIGURED="yes"
## Tutaj podajemy adres naszego serwera i port na którym ma nasłuchiwać
SERVER="-S www.nasza.domena.pl,21"
## Określamy ilość jednoczesnych połączeń do serwera oraz ilość połączeń z tego samego IP
## To już chyba każdy według potrzeb
MAX_CONN="-c 50"
MAX_CONN_IP="-C 2"
## Startujemy daemona w tle
DAEMON="-B"
## Ustalamy procentową zajętość dysku/partycji kiedy serwer powinien przestać zezwalać na przyjmowanie danych
DISK_FULL="-k 90%"
## Jeżeli serwer jest za NATem odkomentuj tę linię
#USE_NAT="-N"
## Autoryzacja ma być pobierana z bazy LMS'a - podajemy ścieżkę do stworzonego przez nas wcześniej pliku
AUTH="-l mysql:/etc/pureftpd-mysql.conf"
## Pozostałe opcje w moim wypadku są takie
MISC_OTHER="-A -x -j"
</screen></para>
	</example></para>
	</sect2>
 </sect1>
 <sect1 id="menu-messages">
	<title>Wiadomości</title>
	<para>Wiadomości to miejsce z którego możesz rozsyłać do klientów spam w postaci
	wiadomości e-mail lub sms. </para>
	<sect2 id="menu-messages-list">
		<title>Lista</title>
		<para>Lista wiadomości zawiera historię wysłanych wiadomości. Możesz
		ją dowolnie przeszukiwać korzystając z filtra. Kliknięcie wiersza
		wiadomości powoduje przejście do strony ze szczegółowymi informacjami
		o wiadomości tj. treści, nadawcy. Strona ta zawiera również listę
		odbiorców wiadomości wraz ze statusem wysyłki.</para>
	</sect2>
	<sect2 id="menu-messages-new">
		<title>Nowa wiadomość</title>
		<para>Aby wysłać wiadomość należy wybrać grupę docelową przy pomocy
		dostępnych filtrów określających status klienta, sieć, grupę, typ łącza, itp. 
		Należy również wybrać typ wiadomości, podać jej temat (wymagany również dla smsów) i treść.</para>
		<para>W treści wiadomości można używać zmiennych, w miejsce których zostaną
		podstawione dane właściwe dla każdego z odbiorców:
		<simplelist>
			<member><prompt>%customer</prompt> - nazwisko/nazwa i imię klienta</member>
			<member><prompt>%balance</prompt> - kwota bilansu (ze znakiem)</member>
			<member><prompt>%cid</prompt> - ID klienta</member>
			<member><prompt>%pin</prompt> - PIN klienta</member>
			<member><prompt>%last_10_in_a_table</prompt> - lista ostatnich 10 operacji na koncie klienta</member>
			<member><prompt>%bankaccount</prompt> - numer konta bankowego</member>
		</simplelist>
		</para>
	</sect2>
	<sect2 id="menu-messages-conf">
		<title>Konfiguracja</title>
		<para>Serwer musi być odpowiednio skonfigurowany do użycia PEAR::Mail dla mailingu. 
		Jeżeli korzystasz z serwera pocztowego na zdalnym hoście będziesz musiał ustawić 
		opcje smtp_host, smtp_port, smtp_username, smtp_password.</para>
		<para>Poniżej znajduje się lista opcji konfiguracyjnych związanych
		z wysyłaniem wiadomości pocztowych. Opcje te umieszczone są w sekcji
		<emphasis>[mail]</emphasis>
		<itemizedlist>
			<listitem>
				<para>debug_email</para>
				<para>Adres e-mail do debugowania - pod ten adres będą szły wiadomości wysyłane z sekcji 'Wiadomości' LMS'a, 
				zamiast do właściwych klientów.</para>
				<para>Przykład:     <prompt>debug_email = root@localhost</prompt></para>
			</listitem>
			<listitem>
				<para>smtp_host, smtp_port, smtp_username, smtp_password</para>
				<para>Parametry połączenia SMTP. LMS umożliwia korzystanie ze
				zdalnego serwera pocztowego z autoryzacją, wykorzystując do tego moduł
				PEAR::Mail. Domyślnie: 127.0.0.1:25.</para>
				<para>Przykład:     <prompt>smtp_host = poczta.domena.pl</prompt></para>
			</listitem>
			<listitem>
				<para>smtp_auth_type</para>
				<para>Metoda autoryzacji SMTP w mailingu. Przy ustawieniach domyślnych
				zostanie użyta najlepsza z dostępnych metod. Domyślnie: nie ustawiona.</para>
				<para>Przykład:     <prompt>smtp_auth_type = DIGEST-MD5</prompt></para>
			</listitem>
		</itemizedlist>
		</para>
		<para>Konfiguracja wiadomości SMS jest bardziej rozbudowana. Przede wszystkim 
		należy zdefiniować z jakiej usługi będziemy korzystać. Czy będzie to bramka smsowa,
		czy jakieś oprogramowanie zainstalowane na serwerze (np. gnokii, smstools). Konfiguracji
		dokonujemy w sekcji <emphasis>[sms]</emphasis>:
		<itemizedlist>
			<listitem>
				<para>service</para>
				<para>Usługa używana do wysyłania smsów. Dozwolone wartości to 'smstools' i 'smscenter'</para>
				<para>Przykład:     <prompt>service = smstools</prompt></para>
			</listitem>
			<listitem>
				<para>prefix</para>
				<para>Telefoniczny prefix kraju. Domyślnie: 48 (Polska)</para>
				<para>Przykład:     <prompt>prefix = 49</prompt></para>
			</listitem>
			<listitem>
				<para>from</para>
				<para>Nadawca wiadomości. Domyślnie: pusta.</para>
				<para>Przykład:     <prompt>from = ISP Sp. z o.o.</prompt></para>
			</listitem>
			<listitem>
				<para>username</para>
				<para>Nazwa użytkownika bramki smsowej. Domyślnie: pusta.</para>
				<para>Przykład:     <prompt>username = isp</prompt></para>
			</listitem>
			<listitem>
				<para>password</para>
				<para>Hasło do bramki smsowej. Domyślnie: puste.</para>
				<para>Przykład:     <prompt>password = haslo</prompt></para>
			</listitem>
			<listitem>
				<para>smscenter_type</para>
				<para>Typ konta w usłudze smscenter. Jeśli wybrano 'static' LMS doda nazwę
				nadawcy na końcu wiadomości. Domyślnie: dynamic.</para>
				<para>Przykład:     <prompt>smscenter_type = static</prompt></para>
			</listitem>
			<listitem>
				<para>smstools_outdir</para>
				<para>Katalog na pliki wiadomości do wysłania dla demona smsd z pakietu smstools.
				Serwer HTTP musi mieć prawa do zapisu w tym katalogu.
				Domyślnie: /var/spool/sms/outgoing.</para>
				<para>Przykład:     <prompt>smstools_outdir = /home/smsd/outgoing</prompt></para>
			</listitem>
		</itemizedlist>
		</para>
	</sect2>
 </sect1>
 <sect1 id="menu-reload">
	<title>Przeładowanie</title>
	<para>Menu 'Przeładowanie' służy do zarządzania usługami na serwerach/routerach
	poprzez "włączanie" żądania przeładowania dla <emphasis>LMS-MGC</emphasis>
	lub demona <emphasis>lmsd</emphasis>.</para>
	<para>Jeżeli korzystasz z <emphasis>LMS-MGC</emphasis> kliknięcie na menu 
	'Przeładowanie' spowoduje uruchomienie generatora plików
	konfiguracyjnych <emphasis>LMS-MGC</emphasis>, który wygeneruje 
	zdefiniowaną konfigurację i przeładuje usługi (zależnie od zdefiniowanej
	opcji <prompt>reload_execcmd</prompt>).</para>
	<para> Zachowanie menu 'Przeładowanie' jest zależne od ustawienia 
	opcji <prompt>reload_type</prompt>. Jeśli zdefiniowałeś zapytanie SQL 
	w opcji <prompt>reload_sqlquery</prompt> zostanie ono wykonane.
	Jeżeli zdefiniowałeś hosty możesz wybrać z listy, na których
	z nich chcesz dokonać przeładowania. W takim wypadku zapytania sql lub
	komendy zostaną wykonane dla każdego hosta, przy czym definiując
	je możesz skorzystać ze zmiennej '%host', pod którą zostanie
	podstawiona właściwa nazwa hosta.</para>
	<para>Więcej informacji znajdziesz w rozdziałach dotyczących 
	<emphasis>LMS-MGC</emphasis> oraz demona.</para>
 </sect1>
 <sect1 id="menu-stats">
	<title>Statystyki</title>
	<para>Interfejs do przeglądania statystyk wykorzystania łącza w postaci prostych wykresów jest
	dostępny w menu 'Statystyki'. Dane statystyk zawierają ilość danych wysyłanych i pobieranych 
	z Internetu (na danym interfejsie) dla każdego komputera. Korzystając z górnego menu możesz szybko wygenerować statystyki z ostatniej 
	godziny, ostatniego dnia, ostatnich 30 dni lub ostatniego roku.</para>
	<para> 
	    <note><para>Zapisem danych do bazy zajmuje się skrypt lms-traffic, albo demon <emphasis>lmsd</emphasis>.</para></note>
	</para>
	<sect2 id="menu-stats-filter">
	<title>Filtr</title>
	    <para>Przed wygenerowaniem wykresu możesz zdefiniować parametry
	    określające okres jaki ma być brany pod uwagę, ograniczyć do jednej sieci (jeśli masz 
	    ich więcej), ilości komputerów oraz posortować odpowiednio wyniki (na przykład 
	    według downloadu).</para>
	</sect2>
	<sect2 id="menu-stats-compact">
	<title>Kompaktowanie</title>
		<para>W zależności od wybranej przez klienta częstotliwości zapisu, może
		nastąpić szybki przyrost danych w bazie, co spowoduje zwiększenie czasu
		oczekiwania na rysowanie wykresów. Z tego powodu w menu 'Kompaktowanie'
		udostępniono możliwość zmniejszenia rozmiarów bazy statystyk bez
		utraty danych. Wybierając poziom dokładności danych, dane zostaną uśrednione
		w następujący sposób:
		<itemizedlist>
			<listitem><para><emphasis>Poziom Niski (low)</emphasis>: dane z poprzedniego dnia i starsze, zostaną uśrednione
			do jednego dnia, czyli jeśli do bazy zapisywane były z częstotliwością 10 minut,
			to 6*24 wpisów zostanie zastąpione jednym.</para></listitem>
			<listitem><para><emphasis>Poziom Średni (medium)</emphasis>: dane starsze niż miesiąc zostaną uśrednione do
			jednego dnia.</para></listitem>
			<listitem><para><emphasis>Poziom Wysoki (high)</emphasis>: dane starsze niż miesiąc zostaną uśrednione do
			jednej godziny.</para></listitem>
		</itemizedlist>
	    	<warning><para>Kompaktowanie bazy danych jest procesem nieodwracalnym.</para></warning>
	    	</para>
		<para>Możliwe jest kompaktowanie bazy danych z wykorzystaniem cron'a. Stronę kompaktowania
		można wywołać (uruchomić) bezpośrednio w przeglądarce, np. w następujący sposób:
<screen>
links -dump \
"http://lms/?m=trafficdbcompact&amp;level=low&amp;removeold=1&amp;removedeleted=1&amp;loginform[login]=login&amp;loginform[pwd]=pass&amp;override=1	
</screen>
		</para>
	</sect2>
	<sect2 id="menu-stats-reports">
		<title>Raporty</title>
			<para>Obecnie masz możliwość wydruku statystyk klienta z wybranego miesiąca.
			Na wydruku będą statystyki podane w formie tabelarycznej z podziałem na dni wraz
			z podsumowaniem pobranych/wysłanych danych i średnimi prędkościami.</para>
	</sect2>
 </sect1>
  <sect1 id="menu-helpdesk">
	<title>Helpdesk</title>
	    <para>Helpdesk (inaczej Request Tracker) to system obsługi zgłoszeń.
	    W systemie można prowadzić bazę wszystkich zgłoszeń i zapytań klientów
	    sieci, ale także osób które nie są wpisane do bazy LMS'a. Zgłoszenia można
	    pogrupować w kategorie (kolejki) i wyszukiwać wg zadanych kryteriów.
	    Do każdej kolejki można zdefiniować uprawnienia dla użytkowników.
	    </para>
	    <para>W menu po lewej stronie znajduje się pole szybkiego wyszukiwania
	    zgłoszenia, w którym można podawać jego ID lub nazwisko zgłaszającego je
	    klienta. W drugim przypadku zostanie wyświetlona lista wszystkich zgłoszeń
	    danego klienta.</para>
	    <para>Każde zgłoszenie posiada historię, na którą składają się wiadomości
	    od użytkowników i klientów. Administrator może wysłać swoją wiadomość do 
	    klienta, klikając 'Wyślij' podczas dodawania wiadomości. (Należy podać
	    e-mail odbiorcy. Adresem nadawcy będzie adres kolejki, a jeśli jest pusty, adres 
	    użytkownika). Wszystkie wiadomości także te wysłane, zostają zapisane 
	    w historii zgłoszenia. Zgłoszenie może mieć cztery stany: nowy, otwarty, rozwiązany 
	    i martwy.</para>
	    <para>Skrypt <xref linkend="lms-rtparser"> został stworzony aby umożliwić
	    obsługę systemu i przesyłanie zgłoszeń pocztą elektroniczną.</para>
	<sect2 id="menu-helpdesk-list">
	<title>Lista kolejek</title>
	    <para>Na liście kolejek znajdują się podstawowe informacje i statystyki zgłoszeń.
	    Kliknięcie na wybranej kolejce powoduje wyświetlenie listy zgłoszeń. Stąd można
	    także przejść do informacji szczegółowych (w tym także uprawnieniach) o kolejce lub
	    usunąć wybraną kolejkę. Usunięcie kolejki spowoduje także usunięcie zgłoszeń z bazy
	    danych przypisanych do niej.
	    </para>
	</sect2>
	<sect2 id="menu-helpdesk-newqueue">
	<title>Nowa kolejka</title>
	    <para>Kolejka (kategoria) posiada nazwę, opcjonalny opis oraz opcjonalny adres
	    poczty elektronicznej, który używany jest do korespondencji. W tabeli 'Uprawnienia'
	    definiuje się prawa do danej kolejki, które mają moc większą od ogólnych 
	    uprawnień użytkowników tzn. jeśli user nie ma praw do danej kolejki, to nawet
	    jeśli ma 'pełny dostęp' zgłoszeń w tej kolejce nie zobaczy. Prawo zapisu pozwala na edycję i dodawanie zgłoszeń i wiadomości. Prawo 'Usuwanie'
	    pozwala na usuwanie wiadomości i zgłoszeń. Prawo 'Powiadomienia'
	    służy do otrzymywania informacji o nowych zgłoszeniach. Jeżeli włączono opcję 'newticket_notify' 
	    wszyscy użytkownicy z tym uprawnieniem będą otrzymywać emailowe powiadomienia 
	    o nowych zgłoszeniach do przedmiotowej kolejki. Wszystkie prawa "wyższe" od
    	prawa 'Odczyt' zawierają uprawnienie do odczytu wiadomości.</para>
	</sect2>
	<sect2 id="menu-helpdesk-search">
	<title>Wyszukiwanie</title>
	    <para>Wyszukiwanie zgłoszeń polega na wybraniu z bazy zgłoszeń spełniających 
	    wszystkie podane kryteria (warunek AND, nie OR). Możesz podać temat, właściciela, 
	    kolejkę, status i zgłaszającego. Klientów sieci wybieraj z listy, dla pozostałych
	    należy podać Nazwisko/Imię i/lub e-mail.
	    </para>
	</sect2>
	<sect2 id="menu-helpdesk-newticket">
	<title>Nowe zgłoszenie</title>
	    <para>Dodając nowe zgłoszenie należy określić dla niego temat, treść, wybrać kolejkę
	    oraz zgłaszającego klienta. Osoby spoza sieci wpisujemy w polach Nazwisko i Imię.
	    Opcjonalnie, jeśli wiadomość została zgłoszona pocztą elektroniczną podajemy adres 
	    e-mail (także dla klienta zapisanego w bazie).</para>
	</sect2>
	<sect2 id="menu-helpdesk-reports">
		<title>Raporty</title>
		<para>Tutaj mamy możliwość wydruku list zgłoszeń lub statystyk helpdesku:
		<itemizedlist>
			<listitem>
				<para><emphasis>Lista zgłoszeń</emphasis> z  filtrami kolejki, statusu i klienta oraz możliwością określenia granicy dni,</para>
			</listitem>
			<listitem>
				<para><emphasis>Statystyki zgłoszeń</emphasis> z możliwością wyboru kolejki oraz wartości granicznych.</para>
			</listitem>
		</itemizedlist>
		</para>
	</sect2>
 </sect1>
 <sect1 id="menu-timetable">
	<title>Terminarz</title>
	<para>Terminarz, to tzw. organizer czasu, czyli miejsce gdzie każdy użytkownik
	może prowadzić własny kalendarz. Wprowadzone zadania (zdarzenia) mogą być
	również dostępne dla wszystkich i mieć przypisanych dowolnych klientów, co
	pozwala np. na zarządzanie ekipami serwisowymi.</para>
	<para>Dodatkiem do Terminarza jest skrypt <filename>lms-reminder</filename>,
	służący do przypominania użytkownikom o zaplanowanych na dany dzień zadaniach.</para>
	<sect2 id="timetable-list">
	    <title>Terminarz (Lista zadań)</title>
	    <para>Terminarz przedstawia listę dni od dnia wybranego z podręcznego
	    kalendarzyka. Ilość dni na liście określa opcja <filename>timetable_days_forward</filename>
	    domyślnie ustawiona na 7 dni. Z poziomu listy można wydrukować plan dnia
	    lub przejść do edycji zdarzenia.</para>
	</sect2>
	<sect2 id="timetable-new">
	    <title>Nowe zdarzenie</title>
	    <para>Dodając do Terminarza nowe zadania musisz określić krótki tytuł
	    oraz dzień i godzinę (zakres godzin). Pozostałe pola są opcjonalne. 
	    Zaznaczenie opcji 'prywatne' spowoduje ukrycie zadania przed wszystkimi
	    użytkownikami oprócz tego, który je dodał do Terminarza. Właściwość ta
	    pozwala na prowadzenie przez każdego użytkownika własnego, prywatnego kalendarza.</para>
	</sect2>
	<sect2 id="timetable-search">
	    <title>Szukaj</title>
	    <para>Wyszukując w Terminarzu zadania możemy określić zakres dat,
	    poszukiwanego klienta, klienta lub fragment tekstu, znajdującego
	    się w tytule, opisie lub notatce do zadania. Na liście zadań
	    zostaną wyświetlone zadania spełniające wszystkie podane kryteria.</para>
	</sect2>
 </sect1>
    <sect1 id="menu-configuration">
	<title>Konfiguracja</title>
	<sect2 id="config-ui">
	    <title>Interfejs Użytkownika</title>
	    <sect3 id="config-basic">
		<title>Podstawy</title>
	        <para>Począwszy od wersji 1.5.3 możliwa jest konfiguracja interfejsu
		użytkownika także poprzez <emphasis>LMS-UI</emphasis>. Opcje przechowywane 
        	są w bazie danych i należy je przenieść z pliku <filename>lms.ini</filename>.
		W celu automatycznego przeniesienia konfiguracji do bazy danych kliknij na
    	        linku znajdującym się na pustej liście opcji konfiguracyjnych.</para>
    		<para><note><para>Opcje konfigurowane w <emphasis>LMS-UI</emphasis> mają
    		większy priorytet od tych zapisanych w <filename>lms.ini</filename>, co
    		oznacza, że plik konfiguracyjny jest także odczytywany, ale wartości 
    		zmiennych z tego pliku nadpisywane są wartościami zapisanymi
    		w bazie danych.</para></note>
    		<note><para>Demon odczytuje niektóre opcje konfiguracyjne UI tylko z bazy
    		danych, dlatego zaleca się przechowywanie konfiguracji w bazie zamiast w pliku 
    		ini.</para></note></para>
    		<para>Aby dodać nową opcję kliknij link 'Dodaj opcję'.
    		Aby wyedytować parametry opcji kliknij na jej rekord. Zostaniesz przeniesiony 
    		do formularza edycyjnego. Zmiana statusu
    		opcji oznacza włączenie/wyłączenie jej działania, co polega na przypisaniu
    		jej wartości domyślnej (jeżeli taką posiada).</para>
    	</sect3>
	<sect3 id="config-options">
        <title>Lista opcji konfiguracyjnych</title>
    	    <para>Poniżej przedstawiamy listę opcji konfiguracyjnych interfejsu
	    użytkownika. Opcje te należy umieścić w sekcji <emphasis>[phpui]</emphasis>.
	    Pozostałe opcje zostały omówione w odpowiednich rozdziałach ich dotyczących.
    <itemizedlist>
        <listitem>
             <para>lang</para>
             <para>Ustawia język interfejsu użytkownika. Jeśli nie podano, język
            zostanie ustawiony na podstawie ustawień przeglądarki. Domyślnie: en.</para>
             <para>Przykład:          <prompt>lang = pl</prompt></para>
        </listitem>
	<listitem>
             <para>allow_from</para>
             <para>Lista sieci i adresów IP które mają dostęp do LMS. Jeżeli puste, każdy adres IP ma dostęp do LMS'a, 
            jeżeli wpiszemy tutaj listę adresów bądź pul adresowych, LMS odrzuci błędem HTTP 403 każdego 
            niechcianego użytkownika.</para>
             <para>Przykład:          <prompt>allow_from = 192.168.0.0/16, 213.25.209.224/27, 213.241.77.29</prompt></para>
        </listitem>
        <listitem>
            <para>timeout</para>
            <para>Timeout sesji www. Po tym czasie (w sekundach) użytkownik zostanie wylogowany jeżeli nie 
            podejmie żadnej akcji. Domyślnie 600 sekund.</para>
            <para>Przykład:     <prompt>timeout = 900</prompt></para>
            <para><warning><para>Nie ma możliwości ustawienia braku timeoutu. Jeżeli ustawisz tą wartość na zero, nie 
            będziesz mógł korzystać z LMS!</para></warning></para>
        </listitem>
	<listitem>
		<para>default_module</para>
		<para>Nazwa modułu startowego (nazwa pliku z katalogu <filename>/modules</filename>
		bez rozszerzenia .php). Domyślnie: welcome.</para>
		<para>Przykład:          <prompt>default_module = copyrights</prompt></para>
        </listitem>
        <listitem>
            <para>customerlist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście klientów. Domyślnie: 100.</para>
            <para>Przykład:     <prompt>customerlist_pagelimit = 10</prompt></para>
        </listitem>
        <listitem>
            <para>nodelist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście komputerów. Domyślnie: 100.</para>
            <para>Przykład:     <prompt>nodelist_pagelimit = 10</prompt></para>
        </listitem>
        <listitem>
            <para>balancelist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie na rachunku klienta. Domyślnie: 100.</para>
            <para>Przykład:     <prompt>balancelist_pagelimit = 50</prompt></para>
    	</listitem>
        <listitem>
            <para>invoicelist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście faktur. Domyślnie: 100</para>
            <para>Przykład:     <prompt>invoicelist_pagelimit = 50</prompt></para>
        </listitem>
        <listitem>
            <para>ticketlist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście zgłoszeń. Domyślnie: 100</para>
            <para>Przykład:     <prompt>ticketlist_pagelimit = 50</prompt></para>
        </listitem>
        <listitem>
            <para>networkhosts_pagelimit</para>
            <para>Ilość komputerów wyświetlanych na jednej stronie w informacjach 
            o sieci. Domyślnie: 256.</para>
            <para>Przykład:     <prompt>networkhosts_pagelimit = 1024</prompt></para>
        </listitem>
        <listitem>
            <para>accountlist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście kont. Domyślnie: 100.</para>
            <para>Przykład:     <prompt>accountlist_pagelimit = 25</prompt></para>
        </listitem>
        <listitem>
            <para>domainlist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście domen. Domyślnie: 100.</para>
            <para>Przykład:     <prompt>domainlist_pagelimit = 25</prompt></para>
        </listitem>
        <listitem>
            <para>aliaslist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście aliasów. Domyślnie: 100.</para>
            <para>Przykład:     <prompt>aliaslist_pagelimit = 25</prompt></para>
	</listitem>
        <listitem>
            <para>configlist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście opcji konfiguracyjnych. Domyślnie: 100.</para>
            <para>Przykład:     <prompt>configlist_pagelimit = 50</prompt></para>
        </listitem>
        <listitem>
            <para>taxratelist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście stawek podatkowych. Domyślnie: 100.</para>
            <para>Przykład:     <prompt>taxratelist_pagelimit = 10</prompt></para>
        </listitem>
        <listitem>
            <para>numberplanlist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście planów numeracyjnych. Domyślnie: 100.</para>
            <para>Przykład:     <prompt>numberplanlist_pagelimit = 10</prompt></para>
        </listitem>
        <listitem>
            <para>divisionlist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście firm. Domyślnie: 100.</para>
            <para>Przykład:     <prompt>divisionlist_pagelimit = 10</prompt></para>
        </listitem>
        <listitem>
            <para>documentlist_pagelimit</para>
            <para>Limit wyświetlanych pozycji na stronie w liście dokumentów. Domyślnie: 100.</para>
            <para>Przykład:     <prompt>documentlist_pagelimit = 10</prompt></para>
        </listitem>
        <listitem>
            <para>reload_type</para>
            <para>Typ reloadu. Dozwolone wartości:</para>
            <para>exec - wywoływanie jakiejś komendy (najczęściej coś przez sudo, jakiś skrypt lub coś, konfigurowalny
            poniżej)</para>
            <para>sql  - zrobienie wpisów w SQL'u (też można ustawić konkretne query SQL'a)</para>
            <para>Domyślna wartość to 'sql'.</para>
            <para>Przykład:     <prompt>reload_type = exec</prompt></para>
        </listitem>
        <listitem>
            <para>reload_execcmd</para>
            <para>Komenda do wykonania podczas reloadu jeżeli reload_type jest ustawione na 'exec'. Domyślnie
            <filename>/bin/true</filename>. String ten puszczany do komendy system() więc proponuję rozwagę 
            i pomyślenie co się robi i jak :) Generalnie średniki powinny być parsowane przez bash'a, ale z paru 
            względów LMS sam dzieli poniższy ciąg pod względem średników i wykonuje komendy pojedynczo.
	    W poleceniach można używać zmiennej '%host', która zostanie zamieniona na nazwę
	    zdefiniowanego hosta (Konfiguracja -> Hosty).</para>
            <para>Przykład:     <prompt>reload_execcmd = "sudo /usr/bin/reload_lms.sh"</prompt></para>
        </listitem>
        <listitem>
            <para>reload_sqlquery</para>
            <para>Zapytanie SQL wykonywane podczas reloadu, jeśli <prompt>reload_type = sql</prompt>.  
            Domyślnie zapytanie ustawia w bazie polecenie przeładowania dla demona
	    <emphasis>lmsd</emphasis>. W zapytaniu można użyć zmiennej '%host' oraz
            '%TIME%' jako podstawki pod aktualny timestamp unixowy. UWAGA! Znak średnika jest 
            traktowany jako separator kwerend, tzn. oddzielając znakiem średnika możesz wpisać kilka zapytań SQL.</para>
            <para>Przykład:     <prompt>reload_sqlquery = "INSERT INTO reload VALUES ('1','%TIME%')"</prompt></para>
        </listitem>
        <listitem>
            <para>force_ssl</para>
            <para>Wymuszanie SSL'a. Ustawienie tej zmiennej na 1 spowoduje że LMS będzie wymuszał połączenie 
            SSL powodując redirect do 'https://'.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI] przy każdej 
            próbie dostępu bez SSL. Domyślnie wyłączone.</para>
            <para>Przykład:     <prompt>force_ssl = 0</prompt></para>
	</listitem>
        <listitem>
            <para>allow_mac_sharing</para>
            <para>Przyzwolenie na dodawanie rekordów komputerów z adresami MAC już istniejącymi (nie sprawdza 
            czy jakiś inny komputer posiada taki adres MAC). Domyślnie wyłączone</para>
            <para>Przykład:     <prompt>allow_mac_sharing     = 1</prompt></para>
        </listitem>
        <listitem>
            <para>smarty_debug</para>
            <para>Włączenie konsoli debugowej Smarty-ego, przydatne do śledzenia wartości przekazywanych z PHP 
            do Smarty-ego. Domyślnie wyłączone.</para>
            <para>Przykład:     <prompt>smarty_debug = 1</prompt></para>
        </listitem>
        <listitem>
            <para>default_zip, default_city, default_address</para>
            <para>Domyślny kod pocztowy, miasto, ulica, stosowane podczas wstawiania nowego
            klienta. Przydatne gdy mamy do wpisania wielu klientów z tej samej ulicy.</para>
            <para>Przykład:     <prompt>default_zip = 39-300</prompt></para>
        </listitem>
        <listitem>
            <para>use_current_payday</para>
            <para>Określa, czy ma być użyta aktualna data jako dzień zapłaty podczas
            przypisywania zobowiązań klientom. Domyślnie wyłączone.</para>
            <para>Przykład:     <prompt>use_current_payday = 1</prompt></para>
        </listitem>
        <listitem>
            <para>default_monthly_payday</para>
            <para>Określa domyślny dzień miesiąca odpowiadający dniom zapłaty podczas
            przypisywania zobowiązań klientom. Domyślnie niezdefiniowany.</para>
            <para>Przykład:     <prompt>default_monthly_payday = 1</prompt></para>
        </listitem>
	<listitem>
	    <para>use_invoices</para>
	    <para>Powoduje zaznaczenie opcji "z fakturą" w formularzu dodawania zobowiązania. Domyślnie wyłączona.</para>
	    <para>Przykład:     <prompt>use_invoices = tak</prompt></para>
        </listitem>
        <listitem>
            <para>lastonline_limit</para>
            <para>Określa czas (w sekundach), po którym komputer zostaje uznany za
            nieaktywny. Powinien odpowiadać częstotliwości uruchamiania skryptu
            badającego aktywność komputerów (np.lms-fping). Domyślnie: 600.</para>
            <para>Przykład:     <prompt>lastonline_limit = 300</prompt></para>
        </listitem>
        <listitem>
            <para>timetable_days_forward</para>
            <para>Określa ilość dni (łącznie z bieżącym) jaka ma być wyświetlana 
            w terminarzu. Domyślnie: 7.</para>
            <para>Przykład:     <prompt>timetable_days_forward = 2</prompt></para>
        </listitem>
        <listitem>
            <para>arpd_servers</para>
            <para>Lista serwerów arpd do sczytywania MAC'adresów z odległych sieci.
            Lista ta powinna zawierać wpisy w postaci adresIP[:port] oddzielone
            spacjami. Domyślnie pusta.</para>
            <para>Przykład:     <prompt>arpd_servers = 192.168.1.1 192.168.2.1</prompt></para>
        </listitem>
        <listitem>
            <para>helpdesk_backend_mode</para>
            <para>Włączenie tej opcji spowoduje, że wszystkie wiadomości w systemie 
            helpdesk (oprócz tych skierowanych do zgłaszającego) 
            będą wysyłane do serwera pocztowego na adres odpowiedniej kolejki.
            Na serwerze tym powinien być uruchomiony skrypt lms-rtparser, który zajmie
            się zapisem wiadomości do bazy danych. Domyślnie: wyłączona.</para>
            <para>Przykład:     <prompt>helpdesk_backend_mode = 1</prompt></para>
        </listitem>
        <listitem>
            <para>helpdesk_sender_name</para>
            <para>Nazwa nadawcy wiadomości albo predefiniowane wartości: 'queue'
            - nazwa kolejki do której należy zgłoszenie, 'user' - nazwa zalogowanego
            użytkownika (nadawcy). Domyślnie: pusta.</para>
            <para>Przykład:     <prompt>helpdesk_sender_name = Helpdesk</prompt></para>
        </listitem>
        <listitem>
            <para>newticket_notify</para>
            <para>Włączenie tej opcji spowoduje, że wszyscy użytkownicy z prawami
            do kolejki dostaną powiadomienie (mailem i/lub smsem) o dodaniu do niej nowego
            zgłoszenia. Domyślnie: wyłączona.</para>
            <para>Przykład:     <prompt>newticket_notify = 1</prompt></para>
        </listitem>
	<listitem>
		<para>helpdesk_stats</para>
		<para>Dodaje statystyki przyczyn zgłoszeń na stronie informacji o zgłoszeniu
		oraz na jego wydruku. Domyślnie: włączona.</para>
		<para>Przykład:     <prompt>helpdesk_stats = 0</prompt></para>
        </listitem>
	<listitem>
		<para>helpdesk_customerinfo</para>
		<para>Dodaje podstawowe informacje o kliencie na stronie informacji o zgłoszeniu
		oraz w treści powiadomienia. Domyślnie: włączona.</para>
		<para>Przykład:     <prompt>helpdesk_customerinfo = 0</prompt></para>
        </listitem>
	<listitem>
		<para>ticketlist_status</para>
		<para>Domyślne ustawienie filtra statusu na liście zgłoszeń. Dozwolonych
		wartości szukaj w kodzie strony html. Domyślnie: nie ustawiona.</para>
		<para>Przykład:     <prompt>ticketlist_status = -1</prompt></para>
        </listitem>
	<listitem>
		<para>ticket_template_file</para>
		<para>Szablon wydruku zgłoszenia. Domyślnie: rtticketprint.html.</para>
		<para>Przykład:     <prompt>ticket_template_file = ../mytemplates/ticket.html</prompt></para>
        </listitem>
        <listitem>
            <para>to_words_short_version</para>
            <para>Określa format reprezentacji słownej kwot (na fakturach). Dla wartości "1"
            rozwinięciem kwoty 123,15 będzie "jed dwa trz 15/100". Domyślnie: 0.</para>
            <para>Przykład:     <prompt>to_words_short_version = 1</prompt></para>
        </listitem>
        <listitem>
            <para>nodepassword_length</para>
            <para>Domyślna długość hasła (generowanego automatycznie) dla komputera. 
            Maksymalnie 32. Domyślnie: 16.</para>
            <para>Przykład:     <prompt>nodepassword_length = 8</prompt></para>
        </listitem>
	<listitem>
            <para>gd_translate_to</para>
            <para>Kodowanie danych dla biblioteki GD (przydatne jeśli GD wymaga ISO-8859-2 zamiast UTF-8 dla funkcji imagetext). Domyślnie: ISO-8859-2.</para>
            <para>Przykład:     <prompt>gd_translate_to = </prompt></para>
	</listitem>
	<listitem>
    	    <para>check_for_updates_period</para>
    	    <para>Jak często sprawdzać czy są dostępne poprawki LMS-a (w sekundach). Domyślnie: 86400.</para>
    	    <para>Przykład:     <prompt>check_for_updates_period = 604800</prompt></para>
	</listitem>
	<listitem>
    	    <para>default_taxrate</para>
    	    <para>Określa wartość (nie etykietę) stawki podatkowej, która
	    będzie domyślnie zaznaczona na listach wyboru. Domyślnie: 22</para>
    	    <para>Przykład:     <prompt>default_taxrate = 7</prompt></para>
	</listitem>
	<listitem>
		<para>big_networks</para>
		<para>Wsparcie dla dużych ISPów, np. ukrywanie list wyboru klientów. 
		Domyślnie: wyłączona</para>
		<para>Przykład:     <prompt>big_networks = true</prompt></para>
	</listitem>
	<listitem>
		<para>short_pagescroller</para>
		<para>Zmienia wygląd pól wyboru strony, ułatwiając nawigację na listach z 
		bardzo dużą liczbą stron. Domyślnie: wyłączona</para>
		<para>Przykład:     <prompt>short_pagescroller = tak</prompt></para>
	</listitem>
	<listitem>
		<para>ewx_support</para>
		<para>Wsparcie dla urządzeń <ulink url="http://etherwerx.com">EtherWerX</ulink>.
		Domyślnie: wyłączona</para>
		<para>Przykład:     <prompt>ewx_support = tak</prompt></para>
	</listitem>
	<listitem>
		<para>account_type</para>
		<para>Zmienia domyślnego zaznaczenie checkboxów w dodwaniu kont.
		shell = 1 (0000000000000001)
		mail = 2  (0000000000000010)
		www = 4   (0000000000000100)
		ftp = 8   (0000000000001000)
		sql = 16  (0000000000010000)
		Domyślnie: 32767</para>
		<para>Przykład:     <prompt>account_type = 2</prompt></para>
	</listitem>
	<listitem>
		<para>default_assignment_period</para>
		<para>Domyślnie wybrana z listy rozwijanej wartość okresu obciążenia, przy dodawaniu zobowiązania dla klienta.
			Możliwe wartości:
			
			jednorazowo - 0
			codziennie  - 1
			co tydzień  - 2
			co miesiąc  - 3 
			co kwartał  - 4
			co rok	    - 5			
			Domyślnie: 0</para>
		<para>Przykład:     <prompt>default_assignment_period = 3</prompt></para>
	</listitem>
    </itemizedlist>
	</para>
        </sect3>
	</sect2>
    	<sect2 id="config-taxes">
	    <title>Stawki podatkowe</title>
		<para>Przed rozpoczęciem pracy z systemem finansowym należy zdefiniować
		stawki podatkowe jakich będziemy używać. Na liście znajdują się wszystkie
		dane stawek. Możliwa jest edycja stawki podatkowej, przy czym należy pamiętać,
		że system nie pozwoli na zmianę wartości stawki, jeżeli została ona
		użyta w przeszłości. Nie możliwe jest także usunięcie takiej stawki.</para>
		<para>Link 'Dodaj stawkę' przenosi do formularza definiowania nowej stawki
		procentowej. Etykieta stawki jest wyświetlana na listach wyboru oraz
		w szablonie faktury. Wartość stawki to liczba od 0 do 100 z dokładnością
		do dwóch miejsc po przecinku. Status opodatkowania jest wykorzystywany
		do wyróżnienia stawki zwolnionej z podatku, czyli wszystkie pozostałe
		stawki powinny mieć włączone 'opodatkowanie'.</para>
		<para>Stawkę, która będzie domyślnie zaznaczona na listach wyboru
		można zdefiniować przy pomocy opcji <filename>default_taxrate</filename>
		w sekcji <emphasis>[phpui]</emphasis></para>
	</sect2>
	<sect2 id="config-numberplans">
	    <title>Plany numeracyjne</title>
		<para>Wszystkim dokumentom generowanym przez system LMS można nadawać
		dowolną numerację wg zdefiniowanych wzorów (planów). Możliwe jest
		używanie różnych numeracji w obrębie jednego typu dokumentów. Dla
		każdego typu można zdefiniować jeden plan domyślny (ważne w przypadku
		faktur wystawianych automatycznie, skrypty/demon muszą wiedzieć na jakiej
		numeracji mają być oparte nowo tworzone dokumenty).</para>
		<para>Do każdego planu należy przypisać także okres numeracyjny, czyli
		przedział czasowy w jakim zachowywana jest ciągłość numeracji. Przy
		przejściu do nowego okresu numeracja zostanie wyzerowana. Można zdefiniować
		numerację jednodniową, tygodniową (od poniedziałku do niedzieli), miesięczną, 
		kwartalną oraz roczną.</para>
		<para>Na liście planów numeracyjnych znajdują się wszystkie niezbędne 
		informacje o planach wraz z przykładowym numerem oraz liczbą dokumentów
		utworzonych przy ich użyciu. Poprzez link 'Dodaj plan' przechodzi się 
		do interfejsu dodawania planu. Edycji można dokonać klikając na wybrany 
		rekord na liście. Usunięcie planu numeracyjnego jest możliwe tylko
		wtedy gdy nie dotyczy on żadnego istniejącego dokumentu.</para>
		<para>Szablon numeru to dowolny ciąg znaków, który zawiera specjalne
		symbole (specyfikatory) znane z funkcji strftime. Szczegóły użycia oraz
		wykaz wszystkich symboli można znaleźć w <ulink 
		url="http://www.php.net/manual/pl/function.strftime.php">manualu PHP</ulink>.
		Podstawowym i jedynym wymaganym symbolem w szablonie jest symbol '%N', za
		który zostanie podstawiony numer wewnętrzny dokumentu. Pozostałe symbole
		wynikają z daty wystawienia dokumentu. A oto najczęściej używane z nich:
		<itemizedlist>
		    <listitem>
			<para>%N - liczba dziesiętna określająca numer dokumentu</para>
		    </listitem>
		    <listitem>
			<para>%[1-9]N - j.w. ale z zerami wiodącymi, np. '%4N' dla liczby 12 zwróci '0012'</para>
		    </listitem>
		    <listitem>
			<para>%I - dodatkowy numer (działa tylko z dokumentami kasowymi)</para>
		    </listitem>
		    <listitem>
			<para>%Y - rok jako liczba dziesiętna z wiekiem włącznie</para>
		    </listitem>
		    <listitem>
			<para>%y - rok jako liczba dziesiętna bez uwzględnienia wieku (00 do 99)</para>
		    </listitem>
		    <listitem>
			<para>%m - miesiąc jako liczba dziesiętna (01 do 12)</para>
		    </listitem>
		    <listitem>
			<para>%b - skrótowa nazwa miesiąca zgodnie z lokalizacją</para>
		    </listitem>
		</itemizedlist>
		</para>
		<para><note><para>Jeżeli w systemie nie zdefiniowano planów numeracyjnych
		dokumenty będą numerowane wg wzorca '%N/LMS/%Y' z okresem rocznym.</para></note></para>
	</sect2>
	<sect2 id="config-divisions">
		<title>Firmy (Oddziały)</title>
		<para>Firmy (Oddziały) służą do grupowania klientów. Powinieneś zdefiniować
		przynajmniej jedną firmę. Masz możliwość podania nazwy skróconej i pełnej
		firmy, jej adresu, konta bankowego (lub prefiksu konta płatności masowych) 
		oraz danych do fakturowania. Zablokowanie firmy uniemożliwia jej przypisanie
		do klienta. 
		</para>
	</sect2>
	<sect2 id="config-hosts">
		<title>Hosty</title>
		<para>Tutaj definiuje się hosty które będą współpracowały
		z LMSem, czyli komputery (routery, serwery) pobierające 
		konfigurację z bazy LMSa, na których będą uruchamiane
		skrypty lub demon <emphasis>lmsd</emphasis>.</para>
		<para>Nazwa każdego hosta musi być unikalna i zaleca się
		aby odpowiadała rzeczywistej nazwie maszyny, którą można
		uzyskać uruchamiając polecenie <prompt>hostname</prompt>
		na każdej z tych maszyn (zakładając, że są to komputery
		z u*ixem).</para>
	</sect2>
	<sect2 id="config-daemon">
		<title>Demon</title>
		<para>Po zdefiniowaniu hostów można rozpocząć konfigurację
		demona <emphasis>lmsd</emphasis>. Konfiguracja jest bardziej
		szczegółowo opisana w rozdziale dotyczącym demona.</para>
	</sect2>
	<sect2 id="config-sources">
		<title>Źródła importu</title>
		<para>Import płatności może odbywać się z wielu źródeł (banków).
		W tym miejscu definiuje się ich nazwy, co umożliwia późniejsze
		przeszukiwanie wpłat wg źródła. Źródło można ustawić również
                dla wpłat klientów poza importem. Dokonując importu płatności
		masz możliwość wyboru źródła. Możliwe jest automatyczne określenie
		źródła, w tym celu należy przypisać identyfikator źródła do
		wzorca w konfiguracji importu.
		</para>
	</sect2>
	<sect2 id="config-promotions">
		<title>Promocje</title>
		<para>W tym miejscu mamy możliwość definiowania schematów promocji.
		Schemat określa kwotę oraz sposób płatności abonamentu przez cały okres
		trwania promocji. Definiujemy tutaj jeden lub wiele okresów o dowolnej długości
		i mamy możliwość określenia kwoty abonamentu oraz sposobu naliczania.
		Po okresie promocyjnym abonament będzie naliczany w normalnej (określonej
		w taryfie) kwocie. Ponadto możemy określić kwotę opłaty aktywacyjnej oraz
		dodatkowej taryfy doliczanej do abonamentu po okresie promocyjnym.
		</para>
		<para>Zdefiniowane schematy/promocje będą widoczne na liście wyboru
		w formularzu nowego zobowiązania. Wybranie schematu i taryfy spowoduje
		utworzenie odpowiedniej liczby zobowiązań wynikającej ze zdefiniowanych
		w schemacie okresów.
		</para>
	</sect2>
    </sect1>
</chapter>
