Pokaż spis treści

Sprzedaż

Faktury cykliczne

Moduł faktur cyklicznych zamienia stałe rozliczenia abonamentowe i powtarzalne usługi w kontrolowane reguły. System nie tworzy od razu dokumentu przyjętego przez KSeF: najpierw buduje zwykłą fakturę sprzedażową, generuje XML, waliduje go i oddaje dokument do standardowej ścieżki wysyłki.

Definicja zamiast kopiowania faktur

Faktura cykliczna jest wzorcem sprzedaży, a nie fakturą wysłaną do KSeF. Operator opisuje regułę: nabywcę, formę płatności, termin płatności, walutę, datę pierwszego wykonania, interwał, warunek zakończenia oraz pozycje dokumentu. Dopiero scheduler tworzy z tej reguły normalną fakturę sprzedażową.

To rozwiązuje typowy problem stałych usług. Nie trzeba co miesiąc kopiować dokumentu, pilnować dat i przepisywać tych samych pozycji. Jednocześnie system nie omija kontroli sprzedaży: wygenerowany dokument trafia do obszaru faktur wychodzących, gdzie podlega temu samemu procesowi walidacji, wysyłki do KSeF, odświeżania statusu i rozliczania płatności.

Co widzi operator

  • Tabela pokazuje nabywcę, NIP, następną datę wykonania, interwał, warunek zakończenia, liczbę wykonań i aktywność definicji.

  • Aktywne definicje z terminem przypadającym dzisiaj lub wcześniej są wyróżnione datą na czerwono.

  • Nieaktywne definicje są wyszarzone, więc od razu widać, które cykle już nie będą wykonywane.

  • Kliknięcie wiersza rozwija historię wygenerowanych faktur z numerem wykonania, datą, kwotą, numerem dokumentu, referencją i następnym terminem.

Dodawanie reguły dla jednego lub wielu nabywców

Dodawanie faktury cyklicznej jest zrobione pod realną pracę biura. Jeżeli ten sam abonament lub pakiet usług ma trafić do kilku kontrahentów, operator wybiera wielu nabywców w jednym formularzu. Zapis tworzy osobną definicję dla każdego z nich, dzięki czemu późniejsza historia i harmonogram są prowadzone niezależnie.

Formularz korzysta ze słownika kontrahentów i słownika pozycji. Po stronie nabywcy wybierane są istniejące dane kontrahenta. Po stronie pozycji faktury operator wskazuje towary lub usługi z katalogu, ustawia ilość i cenę netto, a system pilnuje stawek VAT oraz podsumowań netto, VAT i brutto.

Najważniejsze pola formularza

  • Forma płatności obejmuje między innymi gotówkę, kartę, bon, czek, kredyt, przelew i płatność mobilną.

  • Termin płatności jest liczbą dni dodawaną do daty wystawienia wygenerowanej faktury.

  • Waluta może być wybrana z dostępnych kodów, między innymi PLN, EUR, USD, GBP i CHF.

  • Harmonogram określa datę pierwszej faktury, interwał w minutach testowych, dniach, tygodniach lub miesiącach oraz warunek zakończenia.

  • Pozycje faktury są zapisywane z ilością, ceną netto i powiązaniem z pozycją katalogową.

Przepływ faktury cyklicznej

%%{init: {"themeVariables": {"fontSize": "12px"}}}%%
flowchart TD
  A[Operator tworzy definicję] --> B[Wybiera nabywców i pozycje ze słownika]
  B --> C[Ustawia harmonogram i warunek zakończenia]
  C --> D[Definicja czeka na termin wykonania]
  D --> E[Scheduler RecurringOutgoingInvoiceExecution]
  E --> F[Tworzenie draftu faktury VAT]
  F --> G[Generowanie i walidacja XML]
  G --> H[Faktura gotowa do wysyłki]
  H --> I[Standardowy proces sprzedaży i KSeF]
  E --> J[Historia wykonania]
  J --> K[Następna data albo dezaktywacja]

Scheduler tworzy dokument, ale nie wysyła go w ciemno

Za automatyczne wykonanie odpowiada zadanie RecurringOutgoingInvoiceExecution. Scheduler wybiera aktywne definicje, których data wykonania już nadeszła, a następnie dla każdej tworzy fakturę VAT z datą wystawienia i sprzedaży równą dniu wykonania. Termin płatności jest obliczany na podstawie liczby dni zapisanej w definicji.

Wykonanie nie kończy się na prostym wstawieniu rekordu. System pobiera aktualnego kontrahenta, sprawdza pozycje katalogowe, normalizuje stawki VAT, liczy netto, VAT i brutto, tworzy draft, generuje XML i waliduje dokument. Dopiero poprawna faktura przechodzi do statusu gotowego do wysyłki, a sama wysyłka do KSeF pozostaje osobnym zadaniem.

To jest ważna granica odpowiedzialności. Automatyzacja przygotowuje dokument, ale nie miesza generowania faktury z komunikacją KSeF. Dzięki temu błąd w jednym cyklu nie oznacza niekontrolowanej wysyłki, a operator nadal widzi dokument w standardowej kolejce sprzedaży.

Edycja, ceny katalogowe i historia wykonań

Definicję można edytować tylko przed pierwszym wykonaniem. Po wygenerowaniu pierwszej faktury aplikacja blokuje zwykłą edycję i proponuje akcję Na podstawie. To świadome zabezpieczenie: historia wykonanych dokumentów pozostaje spójna, a zmiana warunków rozliczenia tworzy nową regułę zamiast przepisywać przeszłość.

Przy otwarciu definicji do edycji system porównuje zapisane ceny netto z aktualnymi cenami pozycji katalogowych. Jeżeli ceny się różnią, pokazuje dialog różnic. Operator może zachować dotychczasowe ceny zapisane w definicji albo zaktualizować je do aktualnego katalogu.

Historia wykonań jest dostępna bez przechodzenia do osobnego raportu. Rozwinięcie wiersza pokazuje numer wykonania, datę, kwotę brutto, walutę, numer wygenerowanej faktury, referencję dokumentu i następną zaplanowaną datę. To pozwala szybko odpowiedzieć na pytanie, co cykl już wystawił i kiedy wystawi kolejną fakturę.

Kontrola uprawnień i obsługa błędów

Dostęp do strony jest rozdzielony na przeglądanie i zarządzanie. Rola z prawem podglądu może wejść na listę i analizować definicje, ale przycisk dodawania oraz akcje edycji i usuwania zależą od uprawnienia zarządzania cyklicznymi fakturami sprzedażowymi.

Po stronie wykonania błędy nie giną w tle. Use case zbiera błędy per definicja, zapisuje je do logu aplikacyjnego, a job schedulera zwraca podsumowanie: ile faktur wystawiono, ile definicji dezaktywowano i ile błędów wystąpiło. Konfiguracja zadania pozwala wysłać raport e-mail lub SMS tylko wtedy, gdy faktycznie coś się wydarzyło albo wystąpił błąd.

Takie podejście pokazuje różnicę między prostą automatyzacją formularza a procesem nadającym się do utrzymania. Jest harmonogram, walidacja domenowa, historia, raport błędów, rozdzielenie od wysyłki do KSeF i uprawnienia w UI.

Najważniejsze pytania

Czy faktura cykliczna jest od razu wysyłana do KSeF?

Nie. Scheduler tworzy fakturę sprzedażową, generuje i waliduje XML oraz doprowadza dokument do statusu gotowego do wysyłki. Sama wysyłka do KSeF jest osobnym procesem.

Dlaczego po pierwszym wykonaniu nie można edytować definicji?

Bo definicja ma już historię wygenerowanych dokumentów. Zmiany po pierwszym wykonaniu mogłyby utrudnić odtworzenie, na jakich warunkach powstały wcześniejsze faktury. Do zmian służy akcja Na podstawie, która tworzy nową definicję.

Co się stanie, gdy pozycja katalogowa zostanie usunięta?

Wykonanie definicji wymaga istniejących pozycji katalogowych. Jeżeli przypisana pozycja nie istnieje, wykonanie tej definicji zakończy się błędem i zostanie wykazane w raporcie przebiegu.

Czy jedna definicja może dotyczyć wielu nabywców?

Formularz dodawania pozwala wybrać wielu nabywców, ale zapis tworzy osobną definicję dla każdego kontrahenta. Dzięki temu każdy cykl ma własną historię, datę następnego wykonania i stan aktywności.