Skip to main content

Proposals & Invoices · Article 5.9

Dlaczego podpisany aneks generuje dwa nowe dokumenty (Storno + nowa faktura)

Każdy podpisany aneks dotykający strony finansowej umowy generuje co najmniej dwa nowe dokumenty: Stornorechnung (faktura anulująca) dla starej faktury końcowej i nową aktywną FinalInvoice ze zmienionymi kwotami. Wymaga tego GoBD §147 AO oraz analogiczne przepisy unijne — to nie jest dowolna decyzja Clozo.

Prawo fakturowania UE traktuje wystawione faktury jako dokumenty prawne, których nie można edytować ani usuwać — można je jedynie anulować (za pomocą Stornorechnung) i zastąpić (nową fakturą). Egzekwowane jest to na mocy GoBD §147 AO w Niemczech (10-letnia retencja z niezmiennością), z analogicznymi przepisami w całej UE: BTW Art. 35a (Holandia), CGI Art. 289 (Francja), Art. 6 Reglamento de Facturación (Hiszpania), Ustawa VAT Art. 106 (Polska). Gdy aneks zmienia zakres finansowy, Clozo automatycznie tworzy właściwą ścieżkę dokumentacyjną — warto jednak wiedzieć, co jest tworzone i dlaczego, bo Twój księgowy to zobaczy.

Step by step

  1. Zdarzenie podpisania uruchamia potok.

    Klient klika Podpisz na stronie aneksu; backend rejestruje stos dowodów eIDAS i uruchamia process_amendment_signed w tej samej transakcji DB.

  2. Dokumenty pojawiają się w liście w ciągu ~30 sekund.

    Generowanie PDF jest asynchroniczne przez Celery, ale wiersze są utrwalane natychmiast. Odśwież stronę oferty, jeśli nie widzisz dokumentów — Gotenberg może być wolny.

  3. Stary wiersz INV otrzymuje plakietkę „Unieważniony".

    Lista rozwijana Dokumenty pokazuje starą fakturę końcową z etykietą „Unieważniona przez INV-NNNN-v2" i linkiem do Stornorechnung.

  4. Nowa INV staje się aktywna.

    Zawiera przyrostek v2 w display_number jeśli jest to druga iteracja. Aktywny wiersz pojawia się na banerze oferty („Oczekuje płatności INV-NNNN-v2: X zł").

  5. Gałęzie Δ_REFUND wyświetlają oś czasu zwrotu.

    Pojawia się nowy baner „Zwrot w toku" z numerem noty kredytowej, szacowanym terminem i przyciskiem „Sprawdź status" (artykuł 8.7).

Lista rozwijana Dokumenty reorganizuje się, wyraźnie pokazując nową aktywną fakturę i starą jako unieważnioną. Sekcja Aneksy otrzymuje nowy wpis. W przypadku Δ_REFUND baner oferty przełącza się z „Opłacone" na „Zwrot w toku" do momentu rozliczenia operacji gotówkowej.

Why this works this way

Potok post-podpisania (process_amendment_signed w backend/apps/proposals/amendment_postsign.py) wykonuje się w ramach pojedynczej transakcji DB w chwili, gdy klient podpisuje:

1. Storno poprzedniej aktywnej FinalInvoice. Jeśli faktura końcowa była już wystawiona (Okno B), jej status zmienia się na status=superseded, superseded_by wskazuje na nową fakturę, void_reason zapisuje „Anulowana przez aneks {numer_aneksu}", a wiersz StornoInvoice jest tworzony z typem dokumentu właściwym dla języka (Stornorechnung po niemiecku, Annulation po francusku, Rectificativa po hiszpańsku, Creditfactuur po niderlandzku, Korekta po polsku, Cancellation po angielsku).

2. Aktywacja nowej FinalInvoice. Faktura podglądowa utworzona przez kreatora (w stanie status=cancelled podczas szkicu) jest przeliczana według najnowszych wartości aneksu i zmienia status na status=active. Otrzymuje nowy numer sekwencyjny z licznika roku (INV-2026-NNNN) i przyrostek wersji w display_number (np. INV-2026-0042-v2). Oba numery pozostają w dzienniku audytu na zawsze.

3. Tylko Δ_REFUND — DepositInvoiceCorrection (Berichtigung). W gałęziach Δ_REFUND tworzony jest trzeci dokument formalnie korygujący oryginalną fakturę zaliczkową (Anzahlungsrechnung). Typ to partial_refund, jeśli nowa suma jest dodatnia, ale mniejsza niż deposit_paid; full_cancellation, jeśli nowa suma wynosi zero. Dokument ten jest mechanizmem prawnym wymaganym przez §17 UStG (Niemcy), Art. 90 Dyrektywy VAT UE (ogólnie) i krajowe odpowiedniki — bez niego linia VAT faktury zaliczkowej pozostaje w Twoich księgach na pierwotną kwotę i urząd skarbowy nie zaakceptuje zwrotu.

4. Tylko Δ_REFUND — CreditNote (Gutschrift / factura d'avoir / nota de crédito). Czwarty dokument, właściwa nota kredytowa, którą klient otrzymuje z informacją o zwrocie. Odwołuje się do numeru oryginalnej faktury zaliczkowej (DEP-2026-NNNN) i daty tej faktury zgodnie z Art. 219 Dyrektywy VAT UE (wzajemne odwołania między korektami a oryginałami są obowiązkowe).

5. Uruchomienie zwrotu przez Stripe. Jeśli oryginalna zaliczka została zapłacona przez Stripe (Direct Charge na podłączonym koncie freelancera), wywoływane jest _trigger_stripe_refund z kwotą brutto noty kredytowej. Nota kredytowa przechodzi do statusu refund_status=requested. Potwierdzenie przez webhook zmienia go na succeeded (lub failed); szczegóły cyklu życia zwrotu opisano w Sekcji 8.

Artefakty prawne są utrwalane przed uruchomieniem operacji gotówkowej. Jeśli Stripe jest niedostępny, dokumenty są nadal poprawne — tylko płatność jest wstrzymana i możesz ponowić próbę z poziomu wiersza noty kredytowej (artykuł 8.8).

Troubleshooting

Keep reading

Dlaczego podpisany aneks generuje dwa nowe dokumenty (Storno + nowa faktura) · Help · Clozo