LMS - LAN Management System 1.11-git
Poprzedni | Rozdział 2. Instalacja i konfiguracja | Następny

# 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).

- wartość podatku = (stawka podatku / 100) + 1

  Przykład: stawka podatku VAT to 22%

  wartość podatku = (22 / 100) + 1 = 1,22

- cena jednostkowa netto = cena jednostkowa brutto / wartość podatku

  Przykład: cena brutto metra kabla wynosi 2,56 zł, a stawka podatku VAT to 22%

  cena jednostkowa netto = 2,56 zł / 1,22 = 2,10 zł

- sumaryczna cena brutto = cena jednostkowa brutto * ilość sztuk

  Przykład: cena brutto metra kabla wynosi 2,56 zł, ilość metrów 1366, a stawka podatku VAT to 22%

  cena sumaryczna brutto = 2,56 zł * 1366 m = 3496,96 zł

- cena sumaryczna netto = cena sumaryczna brutto / wartość podatku

  Przykład: cena brutto metra kabla wynosi 2,56 zł, ilość metrów 1366, a stawka podatku VAT to 22%

  cena sumaryczna netto = (2,56 zł * 1366 m = 3496,96 zł) / 1,22 = 2866,36 zł

## 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:

- print_balance_history

  Określa czy na fakturze (html) drukować listę operacji finansowych na koncie klienta. Domyślnie: nie ustawiona.

  Przykład: `print_balance_history = true`

- print_balance_history_limit

  Liczba rekordów na liście operacji finansowych na fakturze. Domyślnie: 10.

  Przykład: `print_balance_history_limit = 20000`

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ć:

- default_printpage

  Lista oddzielonych przecinkiem nazw stron wydruku faktur. Można użyć zdefiniowane ciągi znaków "original", "copy" i "duplicate". Domyślnie: "original,copy".

  Przykład: `default_printpage = "original"`

### 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.

| 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.

Poprzedni | Spis treści | Następny
Upgrade | Początek rozdziału | Baza podziału terytorialnego (TERYT)