Skip to main content

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

  1. creating-an-amendment step 1: Zauważyłeś klauzulę wymagającą zmiany w podpisanej ofercie?

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

  2. creating-an-amendment step 2: Kliknij Aneks w ofercie — otwiera się kreator aneksów.

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

  3. creating-an-amendment step 3: Edytuj zmieniające się pozycje. Trzy podświetlone paski pokazują deltę.

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

  4. creating-an-amendment step 4: Wyślij aneks. Klient otrzymuje nowe żądanie podpisania przez e-mail.

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

  5. creating-an-amendment step 5: Klient podpisuje aneks — oboje jesteście znowu na tej samej stronie.

    Step 5: Klient podpisuje aneks — oboje jesteście znowu na tej samej stronie.

Step by step

  1. 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, szara bez 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.

  2. 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.

  3. Krok 3: podgląd.

    Kreator renderuje PDF addendum w locie przez endpoint /preview-pdf i 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ć).

  4. 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