Czego się nauczysz?
- Pracy z danymi finansowymi (kwoty, walidacja)
- Filtrowania danych po zakresie dat
- Generowania prostych raportów i podsumowań
- Formatowania kwot i dat w PHP
Stworzysz Rejestr faktur - uproszczoną aplikację księgową do ewidencjonowania faktur. Każda faktura zawiera numer, kwotę, datę wystawienia i kontrahenta. Aplikacja pozwala przeglądać faktury, filtrować je po datach i generować proste raporty miesięczne.
Czego się nauczysz?
W prawdziwej pracy...
Systemy księgowe i fakturowe to fundament każdej firmy. Nawet jeśli nie będziesz programistą systemów ERP, zrozumienie jak działają rejestry dokumentów finansowych pomoże Ci w wielu projektach - od sklepów internetowych po aplikacje dla freelancerów.
Dodawanie faktury Formularz pozwala wprowadzić numer faktury, kwotę (brutto), datę wystawienia i nazwę kontrahenta. Dane są walidowane i zapisywane.
Lista faktur Wszystkie faktury wyświetlane są w tabeli z możliwością przeglądania. Widoczne są wszystkie kluczowe informacje.
Filtrowanie i raporty Użytkownik może filtrować faktury po dacie lub miesiącu i zobaczyć podsumowanie (suma kwot).
Przykładowa struktura pliku JSON:
{ "invoices": [ { "id": 1, "number": "FV/2026/02/001", "amount": 1230.00, "date": "2026-02-13", "contractor": "Firma ABC Sp. z o.o.", "created_at": "2026-02-13 10:30:00" }, { "id": 2, "number": "FV/2026/02/002", "amount": 560.50, "date": "2026-02-15", "contractor": "Jan Kowalski", "created_at": "2026-02-15 14:20:00" } ]}Wymagane funkcje:
Przykładowy scenariusz:
Ocena: 3.0Księgowa otwiera aplikację i dodaje nową fakturę: “FV/2026/02/001” na kwotę 1230 zł od “Firma ABC”. Faktura pojawia się na liście. Na dole widzi sumę wszystkich wprowadzonych faktur.
Wszystko z wariantu A, plus:
Przykładowy scenariusz:
Ocena: 4.0-5.0Właściciel firmy chcę zobaczyć faktury z lutego 2026. Wybiera miesiąc z listy i widzi tylko faktury z tego okresu. Suma pokazuje łączną wartość faktur w wybranym miesiącu: 4 350,50 zł.
Wszystko z wariantu B, plus:
Przykładowy scenariusz:
Ocena: 5.0-6.0Na koniec miesiąca księgowa generuje raport. Widzi: “Luty 2026: 15 faktur, suma 23 450,00 zł, średnia 1 563,33 zł”. Eksportuje raport do CSV i wysyła do biura rachunkowego. Zauważa błąd w jednej fakturze - edytuje kwotę.
Walidacja i formatowanie kwoty:
<?php$amount = $_POST['amount'] ?? 0;
// Zamień przecinek na kropkę (polskie formatowanie)$amount = str_replace(',', '.', $amount);$amount = floatval($amount);
if ($amount <= 0) { $errors[] = 'Kwota musi być większa od 0';}
// Formatowanie do wyświetleniaecho number_format($amount, 2, ',', ' ') . ' zł';?>Filtrowanie po miesiącu:
<?php$month = $_GET['month'] ?? ''; // format: "2026-02"$invoices = json_decode(file_get_contents('invoices.json'), true)['invoices'];
if (!empty($month)) { $invoices = array_filter($invoices, function($inv) use ($month) { return substr($inv['date'], 0, 7) === $month; });}
// Oblicz sumę$total = array_sum(array_column($invoices, 'amount'));?>Generowanie raportu miesięcznego:
<?php$report = [ 'month' => $month, 'count' => count($invoices), 'total' => array_sum(array_column($invoices, 'amount')), 'average' => count($invoices) > 0 ? array_sum(array_column($invoices, 'amount')) / count($invoices) : 0];
echo "Liczba faktur: {$report['count']}<br>";echo "Suma: " . number_format($report['total'], 2, ',', ' ') . " zł<br>";echo "Średnia: " . number_format($report['average'], 2, ',', ' ') . " zł";?>Walidacja numeru faktury:
<?php$invoiceNumber = $_POST['number'] ?? '';
// Format: FV/RRRR/MM/NNNif (!preg_match('/^FV\/\d{4}\/\d{2}\/\d{3}$/', $invoiceNumber)) { $errors[] = 'Nieprawidłowy format numeru faktury (wymagany: FV/RRRR/MM/NNN)';}?>Wykorzystaj lekcje!
Cotygodniowe spotkania podczas lekcji to idealny moment, by:
Pracuj iteracyjnie - lepiej mieć działający wariant A niż niedokończony C!