File size: 3,546 Bytes
0f283ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Generator faktur

Repozytorium zawiera dwa sposoby wystawiania faktur:

1. prosta aplikacje CLI,
2. rozbudowany frontend/ backend, ktory generuje faktury w PDF.

## 1. Aplikacja CLI

Niewielkie narzedzie w Pythonie, ktore pomaga zebrac podstawowe dane i wystawic fakture z pojedyncza pozycja (usluga lub towar). Dane firmy zapisywane sa lokalnie w `invoice_data.json`, a kazda wygenerowana faktura trafia do katalogu `invoices/`.

## Wymagania

- Python 3.8 lub nowszy

## Pierwsze uruchomienie

```powershell
python invoice_app.py
```

1. Podaj dane firmy (nazwa, adres, NIP, numer konta).
2. Ustaw haslo, ktore bedzie wymagane przy kolejnych uruchomieniach.

Po zakonczeniu konfiguracji uruchom aplikacje ponownie, aby sie zalogowac i wystawic pierwsza fakture.

## Wystawianie faktury

```powershell
python invoice_app.py
```

1. Zaloguj sie haslem ustawionym wczesniej.
2. Podaj opis uslugi/towaru, ilosc oraz cene jednostkowa.
3. Opcjonalnie wpisz dane klienta.

Aplikacja automatycznie policzy kwote netto i zapisze fakture w katalogu `invoices/` jako plik tekstowy (np. `invoices/FV-20240101-120000.txt`). Dane faktury sa rowniez dopisywane do pliku `invoice_data.json`, dzieki czemu latwo przechowywac historie.

## 2. Aplikacja webowa (frontend + backend)

Interfejs przegladarkowy z serwerem REST (Flask), ktory przechowuje dane firmy oraz historie faktur w pliku `web_invoice_store.json`.

### Wymagania

- Python 3.8+
- Zainstalowany pakiet `Flask`

```powershell
python -m pip install -r requirements.txt
```

### Uruchomienie

1. Start serwera API oraz statycznego frontendu:

   ```powershell
   python server.py
   ```

2. W przegladarce odwiedz `http://localhost:5000/`.

### Funkcje webowego generatora

- Pierwsze uruchomienie:
  - konfiguracja danych sprzedawcy (nazwa, adres, kod pocztowy, miejscowosc, NIP, numer konta, haslo),
  - dane przechowywane lokalnie na serwerze w `web_invoice_store.json`.
- Logowanie chronione haslem (token przechowywany w `sessionStorage` przegladarki).
- Panel po zalogowaniu:
  - wyswietlenie danych sprzedawcy oraz mozliwosc edycji bezpośrednio z poziomu UI,
  - formularz danych nabywcy z rozszerzonym adresem (ulica, kod pocztowy, miejscowosc, NIP),
  - pole daty sprzedazy/wykonania uslugi (niezalezne od daty wystawienia),
  - pozycje faktury z dynamiczna tabela: wprowadzamy cene brutto, wybieramy stawke VAT (23/8/5/0/ZW/NP), aplikacja automatycznie liczy cene netto, wartosc netto, VAT i brutto,
  - obsluga pozycji zwolnionych (ZW) wraz z polem na podstawe prawna zwolnienia (wyswietlana na fakturze),
  - podsumowanie stawek (np. 23% – X netto / VAT – Y, ZW – Z netto / VAT – 0) zamiast pojedynczej sumy netto,
  - generowanie podgladu faktury oraz eksport do PDF w formacie A4 (NABYWCA po lewej, SPRZEDAWCA po prawej, tabela zgodna z nazewnictwem ustawy: „Cena jedn. netto”, „Wartosc netto (pozycja)”, „Stawka VAT”, „Kwota VAT (pozycja)”, „Wartosc brutto”).
- Historia faktur zapisywana jest po stronie serwera (ostatnie 200 dokumentow).

> **Uwaga:** do wygenerowania pliku PDF wykorzystywana jest biblioteka [jsPDF](https://cdnjs.com/libraries/jspdf) ladowana z CDN. Przegladarka musi miec dostep do internetu, aby pobrac skrypt.

### Reset danych webowych

Usun plik `web_invoice_store.json`, aby uruchomic konfiguracje od nowa (spowoduje to utrate historii faktur).

## Reset danych CLI

Jezeli chcesz rozpoczac konfiguracje od nowa, usun pliki `invoice_data.json` i katalog `invoices/` (uwaga: spowoduje to utrate historii wystawionych faktur).