2.9. Dokumenty

LMS umożliwia generowanie oraz przechowywanie przeróżnych dokumentów tj. faktur, dowodów wpłat oraz dokumentów nie-finansowych np. umów, protokołów. Dokumenty mogą być numerowane wg wzorców (planów) numeracyjnych zdefiniowanych przy pomocy menu Konfiguracja - Plany numeracyjne.

2.9.1. Sposób wyliczania podatku VAT

Poniżej przedstawiono sposób w jaki wyliczany jest podatek w LMS. Wartości wszystkich działań są zaokrąglane do dwóch miejsc po przecinku.

W bazie LMS cena jednostkowa pozycji fakturowej jest przechowywana jako wartość brutto (z podatkiem).

2.9.2. Faktury

LMS umożliwia wystawianie faktur automatycznie i ręcznie. Ręczne wystawienie faktury jest możliwe z menu 'Nowa faktura' w panelu 'Finanse'. Automatyczne wystawianie faktur wymaga włączenia tej opcji podczas przypisywania taryf użytkownikom. W takim wypadku zapisem faktur do bazy zajmuje się skrypt lms-payments lub demon lmsd

Do poprawnego działania i tworzenia wydruków wymagane jest ustawienie podstawowych parametrów faktury takich jak nagłówek, stopka, domyślny wystawca, miejsce wystawienia oraz konto bankowe w definicji firmy. Ponadto mamy do dyspozycji opcje sekcji [invoices] konfiguracji:

Wygenerowane faktury można obejrzeć w dwojaki sposób: albo poprzez ikonkę drukarki na wykazie bilansu finansowego (ogólnego bądź pojedynczego użytkownika), albo poprzez 'Lista faktur' z menu 'Finanse'. W przypadku listy faktur, możliwe jest także filtrowanie faktur do wydruku.

Podczas wydruku faktury domyślnie wyświetlany jest oryginał i kopia, można to zmienić:

2.9.2.1. HTML

Przy domyślnych ustawieniach faktury wyświetlane są w formacie html wg domyślnego szablonu. W sekcji [invoices] masz do dyspozycji jeszcze następujące opcje:

  • template_file

    Szablon faktury, który powinien znajdować się w katalogu templates. Domyślnie: invoice.html.

    Przykład: template_file = invoice-mynet.html

  • content_type

    Content-type dla faktury. Jeżeli wpiszesz tutaj 'application/octet-stream' to przeglądarka zechce wysłać plik do zapisania na dysku, zamiast go wyświetlić. Przydatne jeśli używasz własnego szablonu, który wygeneruje np.rtf'a lub xls'a. Domyślnie: 'text/html'

    Przykład: content_type = application/octet-stream

  • attachment_name

    Można podać nazwę pliku, jako który ma zostać zapisany gotowy wydruk. Domyślnie: pusta.

    Przykład: attachment_name = faktura.xls

Wynikowy dokument HTML zawiera oryginały i kopie, które są oddzielone znacznikami podziału strony poprzez CSS. Tak więc każda nowoczesna przeglądarka zgodna z CSS powinna bezproblemowo drukować faktury ładnie podzielone na strony. Funkcja ta była testowana na przeglądarkach Microsoft Internet Explorer 6.0, Opera 7.02 oraz Mozilla 1.3.

Notatka

Praktycznie każda przeglądarka internetowa ma możliwość konfiguracji wydruku, gdzie można wyłączyć funkcje takie jak drukowanie stopki i nagłówka, czy też adresu na wydruku.

2.9.2.2. PDF

Możliwe jest także tworzenie faktur jako pliki pdf. Przypisanie opcji type z sekcji [invoices] wartości 'pdf' spowoduje, że faktury zamiast w html'u będą tworzone jako pliki "portable data format". Opcja template_file spełnia podobną rolę jak dla faktur html'owych, z tym, że posiada predefiniowane wartości: 'standard' - faktura podstawowa (odpowiednik invoice.html) i 'FT-0100' - faktura przystosowana do drukowania na drukach FT-0100 zawierających druk polecenia przelewu. W opcji template_file można także wstawić nazwę pliku php, jednak ta możliwość jest przeznaczona dla zaawansowanych użytkowników, gdyż wymaga utworzenia pliku php, a nie tak jak w przypadku faktur html'owych szablonu Smarty.

2.9.2.3. Korekty

Faktury korygujące korzystają z ustawień dotyczących pozostałych faktur z sekcji [invoices]. Domyślny szablon faktury uwzględnia faktury korygujące. Jednak udostępniono opcję pozwalającą na zdefiniowanie osobnego szablonu dla korekt (pozostałe opcje są wspólne dla faktur i dla korekt):

  • cnote_template_file

    Szablon faktury korygującej, który powinien znajdować się w katalogu templates. Domyślnie: invoice.html.

    Przykład: cnote_template_file = invoice-mynet.html

2.9.2.4. Automatyczne generowanie numeru konta bankowego

LMS umożliwia automatyczne generowanie numeru konta bankowego w standardzie IBAN zawierającego ID klienta. Funkcja ta może być używana do masowej identyfikacji płatności która jako usługa znajduje się w ofercie większości banków. Aby masowa identyfikacja była możliwa, należy podpisać umowę z bankiem z której potrzebne nam będą:

  • Numer rozliczeniowy banku

    zawsze stały dla każdego banku, złożony z 8 cyfr

  • Identyfikator rachunku

    identyfikator naszego wirtualnego rachunku, złożony z 4 cyfr

Gdy mamy potrzebne dane, definiujemy konto bankowe w konfiguracji firmy (oddziału). System sam rozpozna (na podstawie długości), czy wprowadzono cały numer rachunku firmy czy prefiks do płatności masowych. Prefix powinien składać się z 8 do 20 cyfr bez spacji i innych znaków.

Od tej pory jeśli używamy faktur PDF z szablonem FT-0100, lub drukujemy bloczki przelewu/wpłaty z menu Finanse -> Wydruki -> Faktury -> Drukuj polecenia przelewu/wpłaty, każdy wydruk będzie zawierał unikalny numer konta z zawartym ID naszego klienta. ID klienta zostanie dodane na końcu, oraz poprzedzone odpowiednia ilością zer. Suma kontrolna będzie wyliczana automatycznie. Więcej o IBAN w Wikipedii

2.9.3. Polecenia przelewu/wpłaty

Dane do druków polecenia przelewu brane są z danych firmy do której przypisany jest dany klient. Tytuł płatności można ustawić przy użyciu opcji 'pay_title' w sekcji [finances]. Dotyczy to zarówno wydruków poleceń przelewu dostępnych w Finanse -> Wydruki jak i wydruków faktur typu FT-0100.

2.9.4. Dokumenty kasowe (KP/KW)

Dokumenty kasowe, ze względu na swoją specyfikę, posiadają podobne opcje konfiguracyjne jak faktury.

2.9.4.1. HTML

Przy domyślnych ustawieniach dokumenty kasowe wyświetlane są w formacie html wg domyślnego szablonu. Dla dowodów wpłaty oraz wypłaty przewidziano wspólny szablon wydruku. W sekcji [receipts] masz do dyspozycji jeszcze następujące opcje:

  • template_file

    Szablon dowodu wpłaty/wypłaty, który powinien znajdować się w katalogu templates. Domyślnie: receipt.html.

    Przykład: template_file = mytempl/receipt.html

  • content_type

    Content-type dla druku. Jeżeli wpiszesz tutaj 'application/octet-stream' to przeglądarka zechce wysłać plik do zapisania na dysku, zamiast go wyświetlić. Przydatne jeśli używasz własnego szablonu, który wygeneruje np.rtf'a lub xls'a. Domyślnie: 'text/html'

    Przykład: content_type = application/octet-stream

  • attachment_name

    Można podać nazwę pliku, jako który ma zostać zapisany gotowy wydruk. Domyślnie: pusta.

    Przykład: attachment_name = receipt.xls

2.9.4.2. PDF

Możliwe jest także tworzenie dokumentów kasowych jako plików pdf. Przypisanie opcji type z sekcji [receipts] wartości 'pdf' spowoduje, że dowody zamiast w html'u będą tworzone jako pliki "portable data format". Opcja template_file spełnia podobną rolę jak dla wydruków html'owych z tym, że posiada predefiniowaną wartość: 'standard' - wydruk podstawowy (odpowiednik receipt.html). W opcji template_file można także wstawić nazwę pliku php, jednak ta możliwość jest przeznaczona dla zaawansowanych użytkowników, gdyż wymaga utworzenia pliku php, a nie tak jak w przypadku html'a szablonu Smarty.

2.9.5. Noty obciążeniowe

2.9.5.1. HTML

Przy domyślnych ustawieniach noty wyświetlane są w formacie html wg domyślnego szablonu. W sekcji [notes] masz do dyspozycji następujące opcje:

  • template_file

    Szablon noty, który powinien znajdować się w katalogu templates. Domyślnie: note.html.

    Przykład: template_file = mytempl/note.html

  • content_type

    Content-type dla druku. Jeżeli wpiszesz tutaj 'application/octet-stream' to przeglądarka zechce wysłać plik do zapisania na dysku, zamiast go wyświetlić. Przydatne jeśli używasz własnego szablonu, który wygeneruje np.rtf'a lub xls'a. Domyślnie: 'text/html'

    Przykład: content_type = application/octet-stream

  • attachment_name

    Można podać nazwę pliku, jako który ma zostać zapisany gotowy wydruk. Domyślnie: pusta.

    Przykład: attachment_name = receipt.xls

2.9.6. Dokumenty pozostałe

Oprócz dokumentów finansowych w LMSie można przechowywać dokumenty takie jak umowy, protokoły, aneksy i inne. Każemu klientowi można przypisać dowolną liczbę dokumentów na zakładce 'Dokumenty klienta' w panelu 'Informacje o kliencie' lub poprzez menu 'Dokumenty'. Pliki z dokumentami przechowywane są poza bazą danych (o czym należy pamiętać robiąc backupy) w katalogu określonym zmienną 'doc_dir' w sekcji [directories] pliku konfiguracyjnego.

Dokumenty mogą być importowane do systemu jako gotowe pliki, ale także tworzone według szablonów przy użyciu zdefiniowanych kreatorów. Tutaj system daje duże możliwości konfiguracji. W katalogu documents/templates/default znajduje się domyślny kreator dokumentu (szablon i silnik). Użytkownik może utworzyć dowolną liczbę własnych kreatorów dokumentów, które należy umieścić w katalogu documents/templates/.

Każdy kreator powinien zawierać plik info.php o określonej strukturze:

<?php
$engine = array(
	'name' => 'default', 	// nazwa (katalogu) kreatora, małe litery i cyfry
	'engine' => 'default', 	// katalog z silnikiem (engine.php)
				// można używać silników z innych kreatorów
	'template' => 'template.html', 		// plik szablonu (w katalogu 'name')
	'title' => trans('Default document'), 	// opis, który będzie wyświetlany w LMS-UI
	'content_type' => 'text/html', 		// typ pliku wynikowego
	'output' => 'default.html', 		// nazwa pliku wynikowego
	'plugin' => 'plugin',			// nazwa pliku pluginu (w katalogu 'name')
	'post-action' => 'post-action',         // plik PHP wykonywany po dodaniu dokumentu (w transakcji)
);
?>
Plik info.php opisuje kreatora i jest jedynym wymaganym plikiem. Do utworzenia dokumentu potrzebny jest silnik (plik o nazwie engine.php). Można utworzyć własny silnik lub skorzystać z innego, ustawiając zmienną 'engine' na nazwę kreatora, którego silnik chcemy wykorzystać. Nie ma zatem wymogu tworzenia własnego silnika dla każdego nowego kreatora, wystarczy utworzyć szablon 'template' i plik info.php.

Zmienna plugin określa nazwę pliku php odpowiedzialnego za wyświetlenie dodatkowych pól w formularzu tworzenia nowego dokumentu. Plugin może ponadto zawierać obsługę błędów dla tych pól. Po dodaniu dokumentu wykonywany jest skrypt PHP określony w zmiennej post-action. Prosty przykład pluginu i post-akcji przedstawiono w przykładowym domyślnym dokumencie.