System Faktur (Invoice System)
Ten dokument opisuje działanie systemu faktur dla klientów i pracowników, w tym funkcjonalność „Zastosuj dla wszystkich uczestników”.
Instrukcja dla Użytkownika (User Manual)
Zarządzanie ustawieniami faktur w profilu
Klienci mogą ustawić swoje preferencje dotyczące faktur w profilu użytkownika. System oferuje dwa rodzaje faktur:
- Faktura VAT (na firmę): Wymaga podania NIP, nazwy firmy i danych adresowych.
- Faktura Imienna (nominalna): Wymaga podania danych osobowych i adresu.
Zastosuj dla wszystkich uczestników
Podczas edycji danych do faktury (w profilu lub przy edycji uczestnika), dostępna jest opcja „Zastosuj dla wszystkich uczestników”.
- Co to robi?: Powoduje, że te same dane do faktury zostaną przypisane do wszystkich uczestników (dzieci/podopiecznych) przypisanych do Twojego konta e-mail.
- Pamięć ustawienia: Po zapisaniu zmian z zaznaczoną tą opcją, przy kolejnym otwarciu okna znacznik pozostanie widoczny, jeśli wszystkie profile uczestników nadal mają te same dane.
- Rezygnacja: Aby przestać otrzymywać faktury dla wszystkich, należy odznaczyć oba rodzaje faktur, upewnić się, że opcja „Zastosuj dla wszystkich uczestników” jest zaznaczona i kliknąć „Zapisz”.
Wyświetlanie preferencji faktury przy rozliczaniu rezerwacji przez pracownika
Podczas rozliczania rezerwacji w oknie „Rozliczenie rezerwacji” / „Rozliczenie zajęć”, system automatycznie weryfikuje, czy klient lub przypisany do rezerwacji uczestnik ma zdefiniowane preferencje dotyczące otrzymywania faktur.
- Wygoda i pewność: Personel nie musi wchodzić w profil klienta, aby sprawdzić preferencje fakturowania. Odpowiednie informacje (rodzaj faktury, nazwa firmy, NIP lub dane osobowe) są wyświetlane w czytelnym i widocznym panelu informacyjnym bezpośrednio nad kwotą płatności.
- Automatyzacja wydruku paragonu: Jeśli system wykryje, że klient poprosił o fakturę VAT na firmę, opcja „Drukuj paragon” zostanie automatycznie domyślnie odznaczona, co pozwala uniknąć pomyłkowego wydrukowania paragonu fiskalnego na kasie.
Automatyczne wypełnianie przy zapisach na półkolonie
System automatycznie pobiera Twoje preferencje z profilu podczas zapisów na półkolonie. Jeśli masz ustawioną chęć otrzymywania faktur w profilu, odpowiednie pola zostaną wypełnione automatycznie w formularzu zapisu.
Dokumentacja Techniczna (Technical Documentation)
Architektura
Dane do faktur są przechowywane w tabeli invoice, powiązanej z tabelą player poprzez player_id. Każdy rekord zawiera również owner_email, co pozwala na grupowanie uczestników należących do jednego opiekuna/klienta.
Kluczowe Funkcje (Server Actions)
fetchPlayerInvoiceDataInternal: Pobiera dane faktury na podstawieplayer_idbez konieczności weryfikacji tożsamości zalogowanego klienta (używane przez pracowników w panelu administracyjnym).fetchUserInvoiceData: Pobiera dane do faktury dla aktualnie zalogowanego użytkownika (głównego profilu). Zwraca również flagęisAppliedToAll, która jest obliczana poprzez porównanie ustawień wszystkich graczy powiązanych z tym samym adresem e-mail.upsertInvoicesForUserClient: Masowa aktualizacja danych do faktur dla wszystkich graczy przypisanych do e-maila klienta.applyInvoiceDataToAllPlayersByPlayerId: Funkcja administracyjna/sztabowa, która pozwala na skopiowanie danych jednego gracza na wszystkich pozostałych graczy tego samego właściciela.
Logika synchronizacji UI
- W komponentach
InvoiceFormModernorazInvoiceFormForPlayer, stan checkboxa „Apply to all” jest synchronizowany z bazą danych przy każdym ładowaniu. Dzięki temu użytkownik widzi, czy jego ustawienia są obecnie spójne dla wszystkich uczestników. - W komponencie
ReservationSettleDialog, po otwarciu okna oraz przy każdej zmianie wybranego uczestnika (activePlayerId), asynchronicznie wywoływana jest funkcjafetchPlayerInvoiceDataInternalw celu pobrania aktualnych preferencji faktury. - Jeżeli pobrane dane wskazują na potrzebę wystawienia faktury VAT na firmę (
invoiceRequested === trueoraznominalInvoice === false), stan checkboxaprintReceiptjest automatycznie ustawiany nafalse, co zapobiega wydrukowaniu niechcianego paragonu fiskalnego.
Model Danych
Tabela invoice w SQLite:
classic_invoice(BOOLEAN): Czy żądana faktura VAT.nominal_invoice(BOOLEAN): Czy żądana faktura imienna.- Pozostałe pola:
tax_id,company_name,city,streetitp.