--- title: Test DB emoji: 🧾 colorFrom: indigo colorTo: blue sdk: docker pinned: false --- # 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).