Skip to main content

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:

  1. Faktura VAT (na firmę): Wymaga podania NIP, nazwy firmy i danych adresowych.
  2. 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 podstawie player_id bez 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 InvoiceFormModern oraz InvoiceFormForPlayer, 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 funkcja fetchPlayerInvoiceDataInternal w celu pobrania aktualnych preferencji faktury.
  • Jeżeli pobrane dane wskazują na potrzebę wystawienia faktury VAT na firmę (invoiceRequested === true oraz nominalInvoice === false), stan checkboxa printReceipt jest automatycznie ustawiany na false, 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, street itp.