Proposals & Invoices · Article 5.3
Tworzenie aneksu (kreator 4-krokowy)
Kreator aneksów pod adresem `/proposals/{id}/amend` prowadzi przez pozycje, powód, podgląd i e-mail — w tej kolejności. Pięć minut na prostą zmianę, dziesięć minut na złożoną. Klient nic nie widzi do momentu kliknięcia Wyślij w Kroku 4.
Kreator otwiera się z bieżącym obowiązującym zakresem jako punktem wyjścia — są to oryginalne pozycje, jeśli wcześniej nie podpisano żadnego aneksu, lub pozycje z ostatniego podpisanego aneksu przy łączeniu (artykuł 7.6). Edytujesz, przekształcasz, dodajesz lub usuwasz pozycje w Kroku 1; wyjaśniasz dlaczego w Kroku 2; przeglądasz wygenerowane addendum w Kroku 3; i tworzysz e-mail w Kroku 4. Wszystko przed przyciskiem Wyślij w Kroku 4 jest prywatne dla Ciebie.
Quick visual tour

Step 1: Zauważyłeś klauzulę wymagającą zmiany w podpisanej ofercie?

Step 2: Kliknij Aneks w ofercie — otwiera się kreator aneksów.

Step 3: Edytuj zmieniające się pozycje. Trzy podświetlone paski pokazują deltę.

Step 4: Wyślij aneks. Klient otrzymuje nowe żądanie podpisania przez e-mail.

Step 5: Klient podpisuje aneks — oboje jesteście znowu na tej samej stronie.
Step by step
Krok 1: pozycje.
Oryginalne pozycje pojawiają się w górnej połowie, zablokowane i przyciemnione. Twoja edytowalna zmieniona lista pojawia się poniżej. Każdy wiersz otrzymuje kolorową etykietę — zielona
+ dodano, bursztynowa~ zmieniono, czerwona− usunięto, szarabez zmian— dzięki czemu Ty (i klient w widoku różnic) możecie na pierwszy rzut oka zobaczyć, co się zmieniło. Baner kontekstu zaliczki po prawej stronie pokazuje: % zaliczki z oryginalnej umowy, zebraną gotówkę zaliczki i nowąamount_due(lub zwrot, jeśli Δ_REFUND). Kreator przelicza po każdym naciśnięciu klawisza.Krok 2: powód.
Krótkie pole tekstowe. Minimum 10 znaków dla Δ+ / Δ=0, 30 znaków przy zmniejszaniu zakresu (Δ− / Δ_REFUND) — dłuższe minimum zachęca do zapisania uzasadnienia dla każdej redukcji, ponieważ to przypadek najbardziej narażony na późniejsze kwestionowanie. Powód pojawia się dosłownie w PDF addendum i w widoku różnic klienta.
Krok 3: podgląd.
Kreator renderuje PDF addendum w locie przez endpoint
/preview-pdfi osadza go w iframe. Przeczytaj go. Sprawdź, czy pozycje, sumy, podział VAT i powód wyglądają prawidłowo. Zaznacz pole wyboru zgody („Przejrzałem wygenerowany PDF i potwierdzam, że dokładnie odzwierciedla zmianę") — Wyślij jest wyłączone do czasu zaznaczenia. Każda edycja powoduje powrót do Kroku 1 i unieważnia zgodę (musisz ją ponownie zaznaczyć).Krok 4: kompozytor e-maila.
Wstępnie wypełniony temat i treść w języku oferty; oba edytowalne. Odbiorca domyślnie to e-mail klienta w aktach, ale można go zastąpić (np. dla alternatywnego sygnatariusza). Kliknij
Wyślij aneks do klienta, aby uruchomić e-mail i zablokować aneks przed dalszymi edycjami.
Kreator zajmuje pełny ekran z czterokrokowym paskiem postępu na górze. Baner kontekstu zaliczki pozostaje przyklejony w Kroku 1. Błędy (np. „Powód musi mieć ≥ 30 znaków" dla Δ−) pojawiają się w miejscu na górze właściwego kroku. Po wysłaniu jesteś przekierowywany do /proposals/{id}, gdzie aneks pojawia się w panelu „Oczekujący aneks" z odliczaniem, przyciskiem kopiowania linku i przyciskiem Anuluj.
Why this works this way
Kreator automatycznie tworzy (lub wznawia) wersję roboczą wiersza ProposalAmendment przy pierwszym przejściu poza Krok 1. Od tej pory każda nawigacja między krokami PATCH-uje wersję roboczą na serwerze z bieżącymi pozycjami i powodem. Oznacza to, że zamknięcie przeglądarki w trakcie pracy kreatora nigdy nie powoduje utraty pracy — otwórz ponownie /proposals/{id}/amend i wylądujemy tam, gdzie skończyłeś.
Subtelniejszy szczegół implementacyjny: kreator tworzy „podglądowy" wiersz FinalInvoice dołączony do wersji roboczej aneksu ze statusem status=cancelled (nie aktywny). Status zmienia się na active dopiero w momencie podpisania przez klienta, kiedy upsert_pending_invoice_for_amendment staje się process_amendment_signed. Dwie konsekwencje:
1. Twój licznik INV-2026-NNNN przesuwa się przy sporządzaniu wersji roboczej (numer jest zarezerwowany). Jeśli anulujesz wersję roboczą, numer pozostaje w Twojej księdze jako anulowany wiersz — to normalne i zgodne z oczekiwaniami niemieckich Steuerberater dotyczącymi numerowanych anulowań w dzienniku audytu.
2. Podgląd iframe w Kroku 3 jest renderowany względem tej faktury podglądowej — to dokładnie ten PDF, który klient otrzyma, więc to, co widzisz, jest tym, co otrzyma.
Jeśli oferta nadrzędna ma status in_work (depozyt opłacony, projekt trwa), Krok 1 wyświetla dodatkowy czerwony przycisk wywołania „Zwróć wszystko" obok edytora pozycji — kliknięcie go ustawia ilość każdej pozycji na 0, zmniejsza revised_total do 0, a po podpisaniu przez klienta kaskada w process_amendment_signed wystawia Storno + DepositInvoiceCorrection + CreditNote i uruchamia zwrot Stripe. Jest to jedyna legalna ścieżka zwrotu depozytu in_work; bezpośrednie DELETE oferty jest odrzucane z HTTP 409 in_work_requires_amendment (zgodnie z [D-125]).
Troubleshooting
Keep reading
Proposals & Invoices
When to use an amendment (vs a new proposal vs withdraw)
Three paths exist to change a deal: amend it, withdraw and resend, or start a new proposal. Pick the wrong one and you'll either break the audit trail or scare the client. Here's the decision tree.
Proposals & Invoices
The 4 delta branches: Δ+, Δ−, Δ=0, Δ_REFUND
Every signed amendment falls into one of four branches based on (a) the sign of the cost change and (b) whether the proposal was already paid. Each branch fires a different document chain. This is the central conceptual map for the entire amendment system.
Proposals & Invoices
Multi-amendment chains: one draft at a time, baseline = current effective
A proposal can have many amendments over its life — but only one open at any given moment, and each new amendment baselines on the most recent signed state, not the original proposal. Here's how the chain holds together.
Proposals & Invoices
What your client sees when an amendment lands
The client receives an email with a fresh PIN, lands on a PIN-gated page, sees a side-by-side diff of old vs new with totals and a reason, and signs (or declines) — exactly like the original proposal flow but with the diff baked in.