# Changelog
## [1.0.28] - 2026-05-01
- **Wiele podmiotów i baz danych**: Dodano obsługę pracy na wielu podmiotach z oddzielnymi bazami danych. Przed logowaniem można wybrać podmiot, a system automatycznie wyszukuje dostępne bazy i pozwala szybko przełączyć się na właściwą. Tworzenie nowej bazy działa teraz w tej samej lokalizacji co aktualnie używana baza.
- **Ryczałt ewidencjonowany (PPE, wyszukiwanie i uzupełnianie stawek)**: Dodano funkcję szukania pozycji z dokumentów sprzedaży pobranych z KSeF, które nie mają przypisanej stawki podatku PPE. Przy wejściu w eksport JPK_EWP lub podglądzie ewidencji PPE system automatycznie uruchamia kontrolę, wyświetla banner z komunikatem o brakujących stawkach i otwiera dialog umożliwiający szybkie przypisanie stawek (pojedynczo lub masowo dla zaznaczonych pozycji). Obsługiwane są stawki ze słownika LumpSumRate. Po zatwierdzeniu stawki są zapisywane do `InvoiceItem.lump_sum_rate` i agregaty PPE są automatycznie przeliczane.
- **Deklaracje (JPK_EWP)**: Dodano obsługę eksportu JPK_EWP dla ryczałtu ewidencjonowanego wraz z walidacją danych przed eksportem, generowaniem pliku XML oraz weryfikacją zgodności ze schematem XSD. Mechanizm działa w oparciu o wbudowaną w aplikację wersję schemy, co zapewnia stabilne działanie niezależnie od dostępności zewnętrznych adresów.
- **Dialogi wyboru kontrahenta i Podmiotu 3 (sortowanie po kolumnach)**: Dodano możliwość sortowania po nazwie, NIP i mieście w dialogu wyboru kontrahenta dla faktury oraz w dialogu wyboru Podmiotu 3 z kartoteki. Kliknięcie na nagłówek kolumny sortuje rosnąco, ponowne kliknięcie zmienia kierunek na malejący. Dialog wyboru jednostek lokalnych z GUS także obsługuje sortowanie po wszystkich kolumnach (Status, Nazwa, Adres, Miasto, Kod, REGON14). Domyślne sortowanie ustawiono na kolumnę Nazwa (rosnąco), a klucz sortowania normalizuje znaki takie jak apostrofy i cudzysłowy, dzięki czemu nazwy są wyświetlane obok siebie.
- **Lista faktur (PPM, podmenu Operacje: XML/PDF/Drukuj)**: Uporządkowano menu pod prawym przyciskiem myszy przez dodanie podmenu `Operacje` z akcjami `Zapisz XML`, `Zapisz PDF` i `Drukuj`. Dla pojedynczego dokumentu `Zapisz XML` działa jak dotychczas (standardowy dialog wyboru ścieżki i nazwy pliku). Dla wielu zaznaczonych dokumentów `Zapisz XML` prosi o wybór katalogu docelowego i zapisuje oddzielne pliki XML z automatycznymi nazwami opartymi o numery faktur (z bezpieczną obsługą kolizji nazw). Akcje `Zapisz PDF` i `Drukuj` dla wielu zaznaczeń tworzą odpowiednio jeden łączony plik PDF lub jeden łączony wydruk.
- **Lista faktur (Sprzedaż/Zakup, wyszukiwanie dokumentów)**: Dodano szybkie filtrowanie listy faktur po `Numerze z programu`, `Numerze KSeF` oraz `Nazwie kontrahenta`, z trybem `Wszystkie` i filtrowaniem na żywo podczas wpisywania.
- **Lista faktur (PPM, nawigacja do Informatora)**: Dodano akcję `Informator kontrahenta` pod prawym przyciskiem myszy na wierszu faktury. Akcja otwiera Informator dla kontrahenta przypisanego do dokumentu (z bezpieczną obsługą faktur bez przypisanego kontrahenta).
- **Informator kontrahenta (filtrowanie list dokumentów)**: W zakładkach `Sprzedaż` i `Zakup` dodano pasek `Filtr` z wyborem pola (`Wszystko`, `Numer`, `Numer KSeF`) oraz bieżącym zawężaniem listy.
- **Informator kontrahenta (PPM, szybkie filtry)**: Rozszerzono menu kontekstowe tabel o akcje `Filtruj po tym numerze`, `Filtruj po tym numerze KSeF` oraz `Wyczyść filtr`.
- **Skróty klawiaturowe (Ctrl+F)**: Dodano obsługę `Ctrl+F` w liście faktur i w Informatorze kontrahenta. Skrót ustawia fokus na polu wyszukiwania/filtra aktywnego widoku i zaznacza aktualny tekst.
- **Podgląd faktury (format liczb, tylko wizualnie)**: W warstwie wizualizacji dokumentu (podgląd/druk/PDF) dodano prezentację liczb z separatorem dziesiętnym `,` zamiast `.`. Zmiana nie wpływa na dane źródłowe, obliczenia księgowe ani eksport XML/KSeF.
- **KSeF (wysyłka hurtowa, sekwencja wysyłka + UPO)**: Dodano możliwość zaznaczenia wielu dokumentów na liście faktur i uruchomienia zbiorczej wysyłki do KSeF z jednym potwierdzeniem (`Wyślij zaznaczone (X)`). Po akceptacji uruchamiana jest sekwencja dokument po dokumencie: wysyłka, a następnie automatyczna próba pobrania UPO; na końcu prezentowane jest podsumowanie wyników (`wysłane + UPO`, `wysłane bez UPO`, `błędy`). Dla pojedynczego dokumentu zachowano dotychczasowy tryb wysyłki.
- **KSeF (pobieranie faktur sprzedaży, konfiguracja i import)**: Dodano pełną obsługę pobierania dokumentów sprzedaży z KSeF sterowaną z Konfiguracja → KSeF (`Włącz pobieranie dokumentów sprzedaży`). Po włączeniu opcji w module sprzedaży pojawia się przycisk `Pobierz z KSeF`, a synchronizacja działa od ostatniej synchronizacji sprzedaży. Dodano opcje dodatkowe: `Dodawaj rozrachunki sprzedaży` oraz `Mapuj towary i modyfikuj stany na podstawie pobieranych faktur`. W tej sekcji dodano także niebieski przycisk `?` z dialogiem wyjaśniającym działanie synchronizacji i opcji oraz z uwagą, że dokumenty wystawiane przez inne programy powinny mieć inny schemat numeracji niż ustawiony w programie.
- **Konfiguracja (Baza Danych, przycisk pomocy)**: W zakładce `Baza Danych` dodano niebieski przycisk `?` z dialogiem objaśniającym dostępne operacje: tworzenie nowej bazy podmiotu, wykonanie kopii zapasowej, przywrócenie z kopii oraz reset bazy danych.
- **Numeracja faktur sprzedaży (elastyczne ręczne ustawienie)**: Umożliwiono ręczne ustawienie numeru sekwencji dla każdej nowej faktury (nie tylko dla pierwszej w okresie). Ta funkcja jest szczególnie przydatna po migracji dokumentów sprzedaży, gdy licznik źle policzył faktury — użytkownik może teraz łatwo skorygować numerację.
- **Lista dokumentów (kolumna Kontrahent, Podmiot 3)**: W kolumnie Kontrahent wyświetlana jest teraz informacja o Podmiocie 3 jako druga linia komórki w kolorze niebieskim (dostosowanym do aktywnego motywu), zapisana mniejszą czcionką w formacie `(rola nazwa)`. Wiersze z Podmiotem 3 automatycznie zwiększają swoją wysokość, aby pomieścić dodatkową linię, a wiersze bez Podmiotu 3 zachowują standardową wysokość. Wyszukiwarka w liście dokumentów uwzględnia teraz nazwę i rolę Podmiotu 3 przy przeszukiwaniu po kontrahencie. Funkcja działa dla faktur sprzedaży, korekt sprzedaży, faktur zakupu i korekt zakupu.
- **Lista faktur i podgląd (numeracja stron w wydruku/PDF)**: Dodano numerację stron (`Strona X z N`) w prawym dolnym rogu każdej strony wydruku i pliku PDF — zarówno dla pojedynczego dokumentu w oknie podglądu, jak i podczas zapisu/drukowania wielu dokumentów hurtowo z listy faktur. Numeracja jest teraz zawsze widoczna niezależnie od liczby stron.
- **Konfiguracja (Inne, opcje wydruku — adnotacje)**: W zakładce `Inne` dodano sekcję `Opcje wydruku` z opcją `Włącz adnotacje w wizualizacji dokumentów` (domyślnie włączona). Gdy opcja jest wyłączona, strona z adnotacjami (metoda kasowa, samofakturowanie, odwrotne obciążenie, MPP itp.) jest pomijana w podglądzie, wydruku i zapisie PDF.
- **Konfiguracja i podgląd/druk (opcje kolumn tabeli pozycji: Indeks i GTU)**: W sekcji `Inne -> Opcje wydruku` dodano przełączniki `Pokaż kolumnę Indeks (indeks towaru)` (domyślnie włączona) oraz `Pokaż kolumnę GTU` (domyślnie wyłączona). Podgląd, druk i PDF budują teraz nagłówek tabeli pozycji dynamicznie (`items_table_header`) i odpowiednio dostosowują szerokości kolumn oraz wiersze opisów pozycji, tak aby układ pozostał spójny przy każdej kombinacji ustawień.

## [1.0.27] - 2026-04-25
- **UI (lista faktur, kolumny R i Akcje — spójność między buildami)**: Ujednolicono renderowanie ikon w trybie ciemnym dla Windows, AppImage i Flatpak. Ikony statusu rozliczeń (`R`) oraz przycisków w kolumnie `Akcje` są teraz konsekwentnie tintowane kolorem tekstu z palety Qt, dzięki czemu nie pojawia się rozjazd jasne/ciemne między platformami.
- **Ustawienia VAT (aktualizacja z KSeF schema)**: Zablokowano ręczne dodawanie i edycję własnych stawek VAT oraz dodano akcję `Aktualizuj stawki z KSeF`. Mechanizm pobiera wartości `TStawkaPodatku` bezpośrednio ze schemy KSeF XSD, a w razie braku dostępu do schemy stosuje bezpieczny fallback hardcoded, aby zachować zgodność działania dla podglądu, wydruków i importowanych dokumentów.
- **JPK / Deklaracje (stawki 0%, spójność klasyfikacji)**: Ujednolicono normalizację etykiet VAT 0% (`ZW`, `OO`, `NP`, `NP I`, `NP II`, `0 KR`, `0 WDT`, `0 EX`) w logice JPK. Eksport JPK_FA (`P_12`) oraz agregacje do JPK_V7 korzystają teraz ze wspólnego mechanizmu klasyfikacji, co ogranicza rozjazdy między danymi faktury, raportami i deklaracjami.

## [1.0.26] - 2026-04-24
- **UI (lista faktur, kolumna R — ciemny motyw)**: Naprawiono nieczytelność ikon i tekstu w kolumnie `R` (rozliczenie) na ciemnym motywie systemowym. Ikony statusu są teraz tintowane kolorem tekstu z palety Qt, dzięki czemu pozostają widoczne zarówno na jasnym, jak i ciemnym tle.
- **UI (lista faktur, kolumna Akcje — ciemny motyw)**: Naprawiono nieczytelność ikon przycisków w kolumnie `Akcje` na ciemnym motywie. Ikony standardowe Qt są automatycznie tintowane jasnym kolorem dla ciemnego tła i ciemnym dla jasnego, a delegat preferuje teraz ikony tematyczne systemu (`document-print-preview`, `document-edit`, `document-send`) z zachowaniem pełnego fallbacku.
- **UI (lista faktur, kolor korekt — ciemny motyw)**: Kolor tekstu wierszy z korektami jest teraz dobierany względem aktywnego motywu: jasna pomarańcz (`#FF8C40`) w trybie ciemnym, ciemna rdza (`#E65100`) w trybie jasnym, zapewniając czytelność w obu przypadkach.
- **VAT 0% (NP, słowniki i migracja danych)**: Ujednolicono etykiety stawek `NP` do wariantów `NP I` i `NP II` (z zachowaniem obsługi legacy `NP`). Dodano migrację danych historycznych oraz aktualizację słowników/seedów i walidacji, aby zapis, podgląd, JPK i eksport KSeF używały spójnych oznaczeń.
- **VAT (brakujące stawki KSeF, migracja v19)**: Dodano brakujące stawki `22%`, `7%`, `4%`, `3%` oraz `0 KR` do słowników VAT i migracji wersjonowanej bazy. Eksport XML FA(3) mapuje teraz te stawki poprawnie do `P_12`.
- **VAT 0% (NP, uszczelnienie reguł biznesowych)**: Doprecyzowano walidację `NP II`: stawka jest dozwolona wyłącznie dla usług w sprzedaży UE (kraj nabywcy inny niż `PL`) przy aktywnym odwrotnym obciążeniu. W pozostałych przypadkach mechanizm eksportu KSeF stosuje bezpieczny fallback do `NP I`.
- **Faktury sprzedaży i korekty sprzedaży (zwolnienie VAT)**: Przy zaznaczonym `Zwolnienie z VAT (P_19)` pozycje dokumentu są automatycznie ustawiane na stawkę `ZW`, pole stawki VAT jest blokowane do edycji, a zapis dokumentu jest blokowany jeśli jakakolwiek pozycja ma inną stawkę.

## [1.0.25] - 2026-04-19
- **KSeF (import sprzedaży, kontrahent spoza UE)**: Naprawiono brak rozpoznawania kontrahenta zagranicznego identyfikowanego przez `NrID` (pole dla podmiotów spoza UE) podczas importu faktur sprzedaży z KSeF. Importer nie odczytywał tego identyfikatora, przez co nabywca spoza UE nie był tworzony w kartotece i `buyer_snapshot` nie zawierał NIP — co skutkowało błędem 450 przy próbie wysyłki korekty do takiej faktury.
- **KSeF XML (nabywca bez NIP — BrakID)**: Naprawiono błąd generowania XML FA(3) dla faktur wystawianych dla osób fizycznych lub podmiotów bez żadnego identyfikatora podatkowego. Teraz brak identyfikatora powoduje emisję znacznika `BrakID` zgodnie z wymaganiami schematu.
- **KSeF (import, kontrahent z BrakID)**: Podczas importu faktury z KSeF, gdy nabywca/sprzedawca nie posiada żadnego identyfikatora podatkowego (`BrakID`), program tworzy wpis w kartotece kontrahentów na podstawie nazwy (z flagą „osoba fizyczna"). Przy ponownym imporcie faktury dla tej samej osoby istniejący wpis jest wyszukiwany po nazwie i reużywany zamiast duplikowany.
- **KSeF (import zakupów, komentarze XML)**: Naprawiono błąd pobierania faktur zakupowych z KSeF pojawiający się dla dokumentów zawierających węzły komentarzy XML. Biblioteka lxml zwraca dla takich węzłów obiekt Cython zamiast stringa jako wartość atrybutu tag, co powodowało wyjątek przy próbie wywołania metody startswith. Dodano pomijanie węzłów niebędących elementami XML w obu miejscach iteracji po zawartości sekcji Fa.
- **Migracja bazy v17 (naprawa historycznych importów KSeF)**: Automatyczna jednorazowa naprawa faktur pobranych z KSeF: uzupełnienie poprawnej waluty i kursu oraz tworzenie brakujących wpisów kontrahentów dla dokumentów z identyfikatorami `NrID` (podmioty spoza UE) lub `BrakID` (osoby fizyczne bez NIP).

## [1.0.24] - 2026-04-16 
- **Szablony faktur sprzedaży (nowa funkcja)**: Dodano możliwość zapisywania i wczytywania szablonów formularza faktury. Szablon przechowuje: kontrahenta, walutę, typ ceny, pozycje (wraz z opisem, GTIN i powiązaniem z kartoteką), warunki płatności, adnotacje KSeF (OO, WDT, marża, kasowa, ZW + podstawa), Podmiot 3 oraz uwagi i miejsce wystawienia. Szablony są dostępne z poziomu okna edycji faktury (przyciski „Zapisz szablon" / „Wczytaj szablon") oraz w module Ustawienia → Szablony faktur (podgląd, usuwanie).
- **Szablony faktur (waluta obca)**: Wczytanie szablonu z walutą inną niż PLN poprawnie pokazuje pola „Kurs" i „Data kursu" oraz automatycznie pobiera aktualny kurs NBP na podstawie bieżącej daty sprzedaży – nie przywraca historycznych wartości z szablonu.
- **Szablony faktur (termin płatności)**: Przy wczytywaniu szablonu termin płatności jest wyznaczany inteligentnie: jeśli wybrany kontrahent ma skonfigurowany domyślny termin (`default_payment_days`) w kartotece, używane są jego ustawienia; w przeciwnym razie delta dni (różnica między datą sprzedaży a terminem z szablonu) jest przenoszona na bieżącą datę sprzedaży.
- **Numeracja faktur (błąd daty)**: Zmiana daty faktury na okres, dla którego nie można wyznaczyć kolejnego numeru, wywołuje teraz czytelny komunikat „Błąd numeracji".
- **KSeF XML (pusty AdresL1, kod 450)**: Naprawiono błąd weryfikacji semantycznej schematu FA(3). Gdy kontrahent nie miał uzupełnionych pól adresowych (ulica, miasto), generator emitował pusty element `<AdresL1></AdresL1>`, co naruszało ograniczenie `MinLength=1` schematu KSeF i skutkowało odrzuceniem faktury z kodem 450. Blok `<Adres>` jest teraz pomijany w całości, gdy nie ma czego tam wpisać; analogicznie zabezpieczono sekcję adresu Podmiotu 3.
- **Interfejs UI (tabela faktur)**: W widokach listy dokumentów sprzedaży oraz zakupu dodano nową kolumnę "Waluta", prezentującą walutę dokumentu po kolumnie kwoty brutto.
- **KSeF (import zakupów i migracja sprzedaży)**: Poprawiono logikę wbudowanych parserów XML pracujących w tle (wątki Qt). Importery potrafią teraz bezawaryjnie wyliczać brakujące kwoty netto z kwot brutto na podstawie stawki VAT pozycji. Optymalizacja ta obejmuje dokumenty zakupu, korekty zakupu (również te ze zzerowanymi ilościami) oraz masową migrację dokumentów sprzedaży.
- **KSeF (import zakupów, warianty kwotowe)**: Rozszerzono parser faktur zakupowych KSeF o obsługę specyficznych dokumentów, w których brakuje ceny jednostkowej netto (`P_9A`) oraz wartości netto wiersza (`P_11`). Aplikacja potrafi teraz dynamicznie odbudowywać te kwoty metodą wyliczeń iteracyjnych wstecz ("w dół") wychodząc od dostępnej ceny jednostkowej brutto (`P_9B`) oraz wartości brutto pozycji (`P_11A`).
- **Migracja bazy v15 (weryfikacja i podłożenie netto na historycznych dokumentach)**: Zaimplementowano uaktualnienie sprawdzające odłożone i zapisane już wcześniej faktury w systemie. Zapobiega ono powstawianiu nieautoryzowanych, nadmiarowych wierszy typu "KOREKTA" na podglądach oraz domyka sumy do ewidencji VAT/JPK.

## [1.0.23] - 2026-04-14
- **Kontrahenci (Qt, typ Dostawca/Odbiorca)**: Naprawiono zapis i edycję typu kontrahenta. Zmiana typu na `Dostawca` nie jest już nadpisywana na `Odbiorca`; usunięto także fallbacki wymuszające `Odbiorca` i uodporniono mapowanie typu przy zapisie z dialogów.
- **Dokumenty podgląd (Faktury, korekty)**: W wizualizacji dokumentów dodano odstęp pomiędzy sekcją płątności a uwagami oraz rozdzielono delikatną pionową kresą obie sekcje.
- **Deklaracje (PIT, liniowy/skala)**: Uporządkowano logikę zestawienia dla form opodatkowania innych niż ryczałt. Zakładka zmienia teraz nazwę zgodnie z konfiguracją (`Podatek Liniowy` / `Skala Podatkowa`), a wyliczenie zaliczki PIT opiera się na uproszczonym dochodzie (`sprzedaż netto - zakupy netto`) zamiast samego przychodu.
- **Deklaracje (PIT, korekty i rozrachunki)**: Dla akcji `Dodaj zaliczkę PIT` dodano dymek informacyjny oraz dialog korekty (szacunek, korekta ręczna, odliczenie ZUS). Zatwierdzona kwota jest zapisywana jako „wyrocznia” miesięczna i wpływa na wyliczenia kolejnych miesięcy.
- **Deklaracje (Ewidencja VAT, korekty i rozrachunki)**: Rozszerzono tabelę VAT o kolumnę `VAT do Rozrach. (wyrocznia)` oraz akcję `Dodaj VAT` z dialogiem korekty. Skorygowana kwota VAT jest zapisywana jako miesięczna „wyrocznia” i jest używana jako punkt odniesienia w dalszych wyliczeniach narastających.
- **Deklaracje (limity zwolnienia VAT)**: Dodano banner statusu progów dla podmiotów korzystających ze zwolnienia podmiotowego z VAT (próg ostrzegawczy / przekroczenie limitu), zgodnie z wartościami z konfiguracji firmy.
- **Ewidencja VAT (korekty zakupowe)**: Uszczelniono wyliczenia dla korekt zakupowych bez `parent_id` (tzw. korekty osierocone) przez fallback powiązania po numerach referencyjnych, co eliminuje ryzyko podwójnego naliczenia wartości w rejestrze.
- **Deklaracje (kopiowanie danych z tabel)**: Dodano menu kontekstowe kopiowania dla zestawień PIT i VAT: `Kopiuj zaznaczony miesiąc/kwartał` oraz `Kopiuj całe zestawienie`. Dane są kopiowane do schowka w formacie TSV (tabulacje + nowe linie), gotowym do wklejenia np. do Excela lub LibreOffice Calc.
- **Faktury (zwolnienie VAT, podstawa prawna)**: W polu podstawy zwolnienia VAT dodano autouzupełnianie z historii wpisów (osobno dla `USTAWA` / `DYREKTYWA` / `INNE`) oraz przycisk usuwania błędnej pozycji z historii. Historia jest zapamiętywana per podmiot (NIP), a przy wymuszonej podstawie z konfiguracji podmiotu mechanizm podpowiedzi i edycji historii pozostaje wyłączony.
- **KSeF (kontrahenci spoza UE, kody krajów)**: Poprawiono błąd mapowania zagranicznych kodów literowych. Wpisanie kodu państwa spoza UE (np. `NO`) nie wymusza już błędnej nazwy "Zagranica", ale prawidłowo przypisuje kraj (np. "Norwegia") ze słownika ISO. Rozwiązuje to problem, przez który KSeF całkowicie odrzucał faktury wystawiane dla podmiotów spoza Unii Europejskiej z powodu błędów weryfikacji semantycznej (niezgodność wzorca literowego kraju).
- **UI (zgłaszanie błędów, kontakt)**: Usunięto zewnętrzne przekierowania przeglądarki na formularze webowe i zaimplementowano je sprzętowo bezpośrednio z okna programu (pod przyciskiem "Zgłoś błąd" w błędach komunikacji KSeF). Autouzupełniają one pola od razu z profilu bieżącego użytkownika lub nazwy firmy. Dodano zaawansowaną interpretację komunikatów błędów KSeF, usuwającą surowe treści JSON z głównych okienek na rzecz skróconych, bardziej czytelnych opisywań błędu.

## [1.0.22] - 2026-04-12
- **KSeF (import zakupów/migrator, waluty obce)**: Poprawiono import faktur zakupowych w walucie innej niż `PLN` w module Qt. Importer zapisuje teraz `KodWaluty` oraz `KursWaluty` (z fallbackiem na wyliczenie kursu z pól `P_14_x/P_14_xW`), dzięki czemu faktury z KSeF zachowują poprawną walutę i kurs.

## [1.0.21] - 2026-04-12
- **Faktury (walidacja OO, kontrahenci UE)**: Usunięto zbyt restrykcyjne ograniczenie wymagające wyłącznie stawki `OO` po zaznaczeniu opcji odwrotnego obciążenia.
- **KSeF (zgodność ze schematem P_12)**: Dopuszczono również warianty `NP` (`NP`, `NP I`, `NP II`) dla pozycji na fakturze przy aktywnym odwrotnym obciążeniu, zgodnie z dozwolonymi wartościami pola `P_12`.
- **UI (lista faktur sprzedaży i zakupu, kolumna R)**: Po kliknięciu prawym przyciskiem myszy na kolumnie `R` wyświetlane jest dedykowane menu rozrachunków: `Pokaż dane do przelewu`, `Rozlicz`, `Rozlicz zbiorczo`, `Pokaż wpłaty`. Akcje wykorzystują istniejące mechanizmy modułu rozrachunków (bez duplikowania logiki) oraz poprawnie mapują operacje dla całego łańcucha korekt.
- **Rozrachunki (łańcuch korekt, saldo i status)**: Naprawiono przekłamanie statusu częściowego rozliczenia dla faktury bazowej z korektami. Bilans i oznaczenie kolumny `R` są liczone względem ostatniego dokumentu wątku (z uwzględnieniem sumy wpłat całej rodziny), co eliminuje przypadki typu `80 -> korekta 70` z błędnym „brakuje 10”.
- **Kontrahenci (Informator, PPM)**: Dodano opcję `Informator` pod prawym przyciskiem myszy na kontrahencie. Okno zawiera zakładki `Sprzedaż` i `Zakup` z listą dokumentów (`Data`, `Numer`, `Numer KSeF`, `Kwota netto`, `Kwota brutto`) oraz podsumowaniem kwot na dole.
- **Kontrahenci (Informator, podgląd i kopiowanie)**: W tabelach Informatora podgląd faktury otwiera się po `PPM -> Podgląd faktury`, podwójnym kliknięciu oraz klawiszu `Enter`. Dodano także kopiowanie: `Kopiuj zaznaczony wiersz` i `Kopiuj całą listę`.
- **Towary i usługi (Informator, PPM)**: Dodano opcję `Informator` pod prawym przyciskiem myszy na pozycji kartoteki. Okno zawiera zakładki `Zakup` i `Sprzedaż` z listą dokumentów (`Kontrahent`, `Numer faktury`, `Numer faktury KSeF`, `Data`, `Cena netto`, `Cena brutto`) oraz podsumowaniem na dole.
- **Towary i usługi (Informator, ilość/podgląd/kopiowanie)**: Kolumna i suma `Ilość` są pokazywane tylko przy włączonej kontroli stanów magazynowych. W tabelach Informatora podgląd faktury działa po `PPM -> Podgląd faktury`, podwójnym kliknięciu i klawiszu `Enter`; dodano też `Kopiuj zaznaczony wiersz` oraz `Kopiuj całą listę`.
- **Towary i usługi (Informator, sortowanie i układ kolumn)**: W zakładkach `Zakup` i `Sprzedaż` kolumna `Data` została przeniesiona na początek tabeli. Dodano sortowanie po nagłówkach z trwałym zapisem i odtwarzaniem ustawień (kolumna + kierunek) po ponownym uruchomieniu aplikacji.


## [1.0.20] - 2026-04-09
- **Podgląd faktury (tabela VAT)**: Ujednolicono klasyfikację stawek VAT między pozycjami a tabelą podsumowania, dzięki czemu etykiety `ZW` / `OO` / `NP` / `0% WDT` są prezentowane spójnie i bez zamian.
- **KSeF (zwolnienie z VAT, eksport XML)**: Poprawiono logikę `P_19` / `P_19A` / `P_19B` / `P_19C` / `P_19N`. System emituje właściwy wariant podstawy prawnej zwolnienia oraz ustawia `P_19` także dla dokumentów mieszanych zawierających pozycje `ZW`.
- **KSeF (zwolnienie z VAT, zapis i walidacja)**: Uporządkowano zapis typu podstawy zwolnienia jako kodu logicznego (zamiast tekstu UI), poprawiono odczyt przy edycji dokumentu oraz dodano walidację wymagającą podstawy prawnej dla faktur z pozycjami `ZW`.
- **KSeF (import XML, round-trip)**: Rozszerzono import o pełne odtwarzanie danych zwolnienia z pól `P_19A/B/C` (typ i treść podstawy), aby ponowna edycja i eksport zachowywały komplet informacji.
- **UI (Konfiguracja firmy i Edycja faktury)**: Dodano przyciski pomocy `?` oraz okna objaśniające wybór podstawy zwolnienia (`P_19A/B/C`) wraz z przypomnieniem o konieczności podania konkretnego przepisu.
- **Adnotacje KSeF (podgląd faktury)**: Naprawiono mapowanie wskaźników adnotacji. Znacznik „Brak wystąpienia procedur marży” jest liczony na podstawie rzeczywistego `margin_procedure_type` (zamiast typu dokumentu), co usuwa rozjazdy między formularzem, podglądem i XML.
- **KSeF (P_23, faktura uproszczona)**: Uporządkowano przepływ danych dla `P_23` / `is_simplified` w obie strony. Import XML zapisuje flagę uproszczenia, a generator XML i podgląd wykorzystują ją konsekwentnie.
- **Adresy (podgląd faktury + KSeF XML)**: Ujednolicono eksport XML do wariantu zgodnego z walidatorem schematu: `Adres/KodKraju + AdresL1 (+ opcjonalnie AdresL2)` dla podmiotów krajowych i zagranicznych. `AdresL1` zawiera linię ulicy, a `AdresL2` linię `Kod + Poczta`. W podglądzie przy różnicy `Miasto/Poczta` format linii ulicy to `Ulica, Miasto`.
- **Adresy (Poczta vs Miasto, eksport PL)**: W wariancie krajowym `AdresL2` stosuje `Kod + Poczta` (z fallbackiem do `Miasto`). Dodatkowo parser importu odczytuje `AdresL2` w formacie `NN-NNN MIEJSCOWOSC` i mapuje go do pól `postal_code`/`city`.
- **Adresy (import fallback, zgodność międzynarodowa)**: Rozszerzono fallback importu dla przypadków, gdy nadawca zapisze cały adres w `AdresL1` (bez `AdresL2`) oraz dodano bardziej elastyczne rozpoznawanie kodów/miejscowości dla formatów zagranicznych.
- **Numeracja faktur sprzedaży (ręczna sekwencja przy starcie okresu)**: W generatorze numeru dodano możliwość podania ręcznego numeru sekwencyjnego wyłącznie wtedy, gdy dla bieżącej daty kolejnym numerem jest `1` (pierwsza faktura w roku dla numeracji rocznej lub pierwsza faktura w miesiącu dla numeracji miesięcznej). Jeśli po ustawieniu ręcznej sekwencji data zostanie zmieniona na inny okres numeracyjny, system automatycznie przywraca numerację domyślną dla nowej daty i wyświetla komunikat informacyjny.
- **Numeracja faktur sprzedaży (zmiana numeru startowego)**: Dla pierwszego dokumentu w okresie numeracyjnym można ustawić własny numer startowy sekwencji (zamiast domyślnego `1`), co pozwala kontynuować numerację z innego systemu przy starcie nowego roku/miesiąca.
- **Lista faktur (filtr dat, sprzedaż i zakup)**: Usunięto górną blokadę daty do dnia bieżącego. Presety `Pokaż z` działają teraz jako filtr `od daty` (limit wstecz pozostaje), dzięki czemu dokumenty z datą przyszłą są widoczne na liście.
- **Migracja sprzedaży z KSeF (osobny mechanizm)**: Dodano dedykowany przycisk `Importuj sprzedaż z KSeF` dostępny tylko dla pustego modułu sprzedaży. Mechanizm jest rozdzielony od bieżącej synchronizacji zakupów i uruchamia własny przepływ importu dokumentów sprzedażowych (`Subject1`, w tym korekt). W trybie migracji mapowane są także pola `sequence_number` / `sequence_year` / `sequence_month` na podstawie numeru dokumentu i aktywnego wzorca numeracji (z fallbackiem best-effort).
- **Migracja sprzedaży z KSeF (wybór okresu)**: Po uruchomieniu importu sprzedaży pojawia się dialog wyboru zakresu: `bieżący miesiąc` lub `bieżący rok`. Domyślna opcja jest ustawiana automatycznie na podstawie konfiguracji numeracji sprzedaży (miesięczna/roczna).
- **Migracja sprzedaży z KSeF (opcje importu)**: W dialogu migracji dodano konfigurację: `Dodaj towary/usługi do kartoteki` (mapowanie po GTIN lub Index/SKU z aktualizacją danych istniejących rekordów) oraz `Dodaj rozrachunki` (tworzenie danych planowanych płatności: metoda, kwota, termin; z uwagą, że KSeF nie udostępnia historii realnych spłat).
- **KSeF (parowanie korekt z dokumentem nadrzędnym, sprzedaż i zakup)**: Ujednolicono mechanizm wiązania po `DaneFaKorygowanej/NrKSeFFaKorygowanej` (z fallbackiem do `NrFaKorygowanej`) dla całego łańcucha korekt. Dodano także obligatoryjny backfill `parent_id` po każdym imporcie, dzięki czemu korekty odebrane wcześniej jako osierocone są automatycznie podpinane po późniejszym pobraniu dokumentu nadrzędnego.
- **Migracja sprzedaży z KSeF (towar vs usługa w kartotece)**: Uszczelniono klasyfikację pozycji przy imporcie kartoteki. Jeśli pozycja ma `GTIN` lub `Index/SKU`, jest traktowana jako towar (`is_service = False`) zarówno przy tworzeniu nowego rekordu, jak i przy aktualizacji istniejącego.
- **Migracja sprzedaży z KSeF (odporność na limity API)**: Uszczelniono ścieżkę pobierania XML per-faktura (fallback po paczce): dodano bezpieczny throttling zgodny z limitem KSeF oraz retry dla `429 Too Many Requests` z odczytem czasu oczekiwania z komunikatu API.
- **Faktury uproszczone (zakup, logika kwot)**: Dla dokumentów oznaczonych jako uproszczone dodano dedykowane zasady prezentacji i sumowania: wyrocznią pozostaje końcowa kwota brutto dokumentu, z bezpiecznym wyrównaniem różnic zaokrągleń.
- **Faktury uproszczone (stawki VAT na pozycjach)**: Rozszerzono obsługę pozycji o wariant mieszany: jeśli na pozycji uproszczonej podano liczbową stawkę VAT, system rozbija kwotę brutto pozycji na netto/VAT; dla stawek nienumerycznych utrzymuje tryb uproszczony bez rozbicia.
- **Podgląd faktur zakupowych z importu KSeF**: Naprawiono przypadki zaniżonego/pustego netto i zawyżonego VAT (czasem VAT = brutto) dla części dokumentów uproszczonych i korekt. Poprawka dotyczy wyłącznie warstwy podglądu.
- **Podgląd korekt (Przed/Po, import KSeF)**: Uszczelniono renderowanie pozycji korekt dla układów mieszanych (`StanPrzed` + `Po`) i scenariuszy ręcznych, tak aby podgląd nie gubił sekcji `Po`.
- **Ewidencja VAT i JPK (łańcuch korekt)**: Doprecyzowano wyliczanie delty korekt także przy brakującym `parent_id` (fallback po `related_ksef_number` / `related_invoice_number`), co eliminuje ryzyko dublowania wartości w łańcuchu dokumentów.
- **Import kontrahenta zagranicznego (TIN/NIP)**: Poprawiono mapowanie identyfikatora podatkowego przy imporcie z KSeF: prefiks kraju (np. `DE`) jest zapisywany w `country_code`, a w `nip` pozostaje część numerowa.
- **JPK (NrKontrahenta / NrDostawcy)**: Ujednolicono eksport TIN: `KodKrajuNadaniaTIN` jest emitowany osobno, a pola numeru kontrahenta/dostawcy są normalizowane bez prefiksu kraju.
- **Migracja bazy v11 (normalizacja TIN)**: Dodano migrację porządkującą historyczne dane kontrahentów i snapshotów (`DE123...` -> `123...` przy `country_code=DE`).
- **Podgląd dokumentów (lokalizacja nazw krajów)**: Nazwy państw kontrahenta są teraz tłumaczone zgodnie z wybraną wersją językową podglądu (`PL` / `EN` / `DE`).
- **Stabilność i zgodność ścieżek**: Zachowano pełną kompatybilność wsteczną dla faktur nieuproszczonych (`is_simplified = False`) — dotychczasowa logika VAT i podglądu działa bez zmian.

## [1.0.19] - 2026-04-07
- **Magazyn (sprzedaż usług z kartoteki)**: Poprawiono walidację stanów magazynowych przy zapisie pozycji faktury. Pozycje oznaczone jako `usługa` (także wybrane z katalogu) nie są blokowane stanem magazynowym `0`; kontrola ilości dotyczy wyłącznie towarów.
- **UI (okno edycji faktury, Podmiot 3)**: Uszczelniono zachowanie zakładki `KSeF / Opcje` po rozwinięciu sekcji Podmiot 3. Zawartość zakładki jest przewijana (scroll), dzięki czemu okno nie rozszerza się pionowo poza pulpit i przyciski `Zapisz` / `Anuluj` pozostają dostępne.
- **UI (lista faktur sprzedaży i zakupu)**: Dodano sortowanie po kliknięciu nagłówków kolumn na listach faktur (wspólny widok dla modułów sprzedaż/zakup), z obsługą sortowania rosnąco/malejąco dla kluczowych kolumn.
- **KSeF (Podmiot 3, role odbiorcze)**: Rozszerzono zasady identyfikacji dla roli `ODBIORCA` do modelu jak dla JST/GV: można użyć `ID-Wew`, a gdy `ID-Wew` jest puste, wymagany jest `NIP`.
- **KSeF (Podmiot 3 + WDT)**: Dla faktur sprzedaży z aktywnym `WDT` i rolą `ODBIORCA` ukryto pole `ID-Wew` oraz wymuszono `NIP`; w eksporcie XML identyfikator jest emitowany jako `NIP`/`NrVatUE` (z `KodUE`) zamiast `IDWew`.
- **Podgląd faktury (Podmiot 3, identyfikator)**: Jeśli dla Podmiotu 3 zdefiniowano `ID-Wew`, podgląd pokazuje `ID-Wew` zamiast `NIP`.
- **Podgląd i edycja (Podmiot 3, dane adresowe opcjonalne)**: Uszczelniono logikę widoczności danych adresowych, aby sam domyślny `country_code=PL` nie włączał sekcji adresowej i nie wyświetlał kraju bez realnych danych adresowych.
- **KSeF XML Generator (stabilność)**: Naprawiono błąd `UnboundLocalError` (`cannot access local variable 'EU_COUNTRIES'`) wynikający z lokalnego cieniowania stałej w metodzie generowania XML.
- **Kartoteka kontrahentów (dane bankowe)**: Dodano pola `Numer konta`, `SWIFT/BIC` i `Nazwa banku` (opcjonalne, zgodne wstecz). Numer konta ma formatowanie i walidację `26 cyfr` jak w danych podmiotu.
- **Podmiot 3 (rola Faktor/Płatnik) – sprzedaż i zakup**: Dodano dedykowane pola bankowe (`Nr konta`, `SWIFT/BIC`, `Nazwa banku`) z auto-uzupełnianiem z kartoteki, walidacją konta (`26 cyfr`), synchronizacją z sekcją płatności dla zakupów oraz blokadą ręcznej edycji pól płatności przy aktywnej roli Faktor/Płatnik (edycja z sekcji Podmiot 3).
- **KSeF XML i podgląd (sekcja płatności, Faktor/Płatnik)**: `Platnosc/RachunekBankowy` i podgląd dokumentu korzystają z danych podmiotu 3 (konto/SWIFT/nazwa banku) dla ról Faktor i Płatnik zamiast danych podmiotu. Dla faktur i korekt zakupu priorytetem odczytu jest sekcja płatności XML (`Platnosc/RachunekBankowy`), także przy pierwszym otwarciu podglądu.
- **KSeF (FA(3) 1-0E, Podmiot 2)**: Uporządkowano generowanie sekcji `Podmiot2` do pełnej zgodności ze schematem. Znaczniki `JST` i `GV` są teraz emitowane zawsze (wartość `1` albo `2`), co eliminuje błędy walidacji typu „Podmiot2 has incomplete content”.
- **KSeF (import/eksport, round-trip JST/GV)**: Przy imporcie faktur z KSeF flagi `JST`/`GV` z `Podmiot2` są zapisywane także do `buyer_snapshot`, dzięki czemu ponowny eksport zachowuje te dane bez utraty.
- **Podmiot 3 (role JST/GV odbiorcy)**: Doprecyzowano logikę krzyżowych znaczników. Dla ról odbiorczych Podmiotu 3 znaczniki odnoszą się do Odbiorcy (`Podmiot2`) i są odpowiednio mapowane do XML.
- **UI (Podmiot 3, opisy i podpowiedzi)**: Ujednoznaczniono komunikaty przy checkboxach JST/GV i w podpowiedziach, aby jasno wskazywały, że znaczniki dotyczą `Podmiot2`.
- **Walidacja (Podmiot 3, Faktor/Płatnik)**: Dla ról `Faktor` i `Płatnik` wymagane są teraz jednocześnie: `NIP` oraz numer konta (`26 cyfr`).
- **Walidacja (Podmiot 3, zmiana roli)**: Przy przełączeniu na role, które nie obsługują `ID-Wew`, pole `ID-Wew` jest automatycznie czyszczone, aby nie wpływało na walidację i wybór identyfikatora w XML.
- **UI (Podmiot 3, pola bankowe)**: Naprawiono edycję pól `SWIFT/BIC` i `Nazwa banku` dla Podmiotu 3. Można je teraz poprawnie wyczyścić do pustej wartości (bez odtwarzania ostatniej litery przez synchronizację).

## [1.0.18] - 2026-04-04
- **Adnotacje KSeF (UI)**: Ujednolicono logikę współzależności opcji (WDT, odwrotne obciążenie, marża, zwolnienie z VAT, metoda kasowa) oraz poprawiono domyślny dobór stawki VAT przy OO.
- **Procedura marży (formularz + model)**: Uporządkowano zapis i odczyt typu marży jako kodu logicznego (`TURYSTYKA`, `UZYWANE`, `DZIELA`, `ANTYKI`).
- **PMarzy (eksport/import XML)**: Dodano pełne mapowanie `PMarzy` w obie strony: poprawna emisja pól `P_PMarzy_*` w XML i odczyt tych pól do `margin_procedure_type` podczas importu.
- **KSeF (import korekt zakupu, rekoncyliacja)**: Dodano inteligentne podpinanie korekty z KSeF do istniejącej lokalnej korekty zakupu (fuzzy match numeru po normalizacji), z aktualizacją danych z dokumentu KSeF zamiast tworzenia duplikatu.
- **KSeF (stabilność rekoncyliacji pozycji i płatności)**: Poprawiono odtwarzanie pozycji i rozbić płatności przy rekoncyliacji, aby eliminować przypadki błędnego `INSERT` i konfliktu unikalności numeru faktury.
- **Faktury (duplikacja, termin płatności)**: Przy duplikacji zachowywana jest metoda płatności z dokumentu źródłowego, a termin płatności wyliczany jest ponownie z ustawień kontrahenta (`default_payment_days`) zamiast ustawiania daty bieżącej.
- **Lista faktur (filtr dat)**: Zastąpiono pola „Od/Do” jednym filtrem „Pokaż z” z presetami: Dzisiaj, 3 dni, 7 dni, 30 dni, bieżący miesiąc, kwartał, rok oraz „Bez ograniczeń”. Ustawienie jest zapamiętywane osobno dla listy sprzedaży i zakupu.
- **KSeF (dialog pobierania, zakres)**: Opcja zakresu pobierania (wg filtra listy / kontynuuj od ostatniej faktury) jest zapamiętywana i przywracana przy kolejnym otwarciu dialogu.
- **Deklaracje / JPK (stawki 0%)**: Dodano rozbicie stawek 0% na etykiety podatkowe (np. `ZW`, `0% WDT`, `NP`, `OO`) jeśli występują.
- **Deklaracje (raport wykluczonych dokumentów)**: Uproszczono układ raportu pod wysyłkę e-mail: orientacja pionowa A4, kolumny kluczowe dla księgowości (NIP, numer faktury, dostawca, kwoty), bez kolumny daty wykluczenia, wiersz w jednej lini.
- **KSeF (Podmiot 3)**: Dodane obsługę Podmiot 3 z wyborem ról i uwzględnieniem ID_Wew dla Grupy Vat i Jednostek samorządu terytorialnego.
- **KSeF (zakres importu Dla podmiot3)**: Doprecyzowano zakres automatycznego pobierania: obsługa ról `Subject1`/`Subject2` z importem danych `Podmiot3` jako kontekstu; przypadki „firma tylko jako `Podmiot3`” pozostają poza domyślną ścieżką.

## [1.0.17] - 2026-04-02
- **Faktury zakupu (wykluczenie z księgowości)**: Dodano możliwość oznaczania faktur zakupu i korekt zakupu jako nieautoryzowane z poziomu menu kontekstowego listy faktur. Wykluczony dokument jest ukrywany na liście, ale pozostaje w bazie, dzięki czemu ponowne pobranie z KSeF nie tworzy duplikatu.
- **Faktury zakupu (czyszczenie powiązań po wykluczeniu)**: Wykluczenie dokumentu automatycznie usuwa jego rozrachunek, odłącza kontrahenta, czyści powiązania pozycji z kartoteką towarów/usług oraz usuwa powiązane ruchy magazynowe.
- **Deklaracje (zestawienie wykluczonych dokumentów)**: Dodano nową zakładkę „Wykluczone z ewidencji” z listą dokumentów nieautoryzowanych oraz możliwością ich przywrócenia do ewidencji.
- **Deklaracje (raport wykluczonych dokumentów)**: Dodano druk i eksport PDF zestawienia dokumentów wykluczonych wraz z danymi podmiotu, kwotami netto/brutto oraz datą wykluczenia.
- **Deklaracje (filtr okresu dla wykluczonych)**: Dla zestawienia wykluczonych dokumentów dodano filtr miesięczny z domyślnym ustawieniem na bieżący miesiąc oraz automatyczny backfill daty wykluczenia dla starszych rekordów.
- **Księgowość / JPK / Ewidencje**: Dokumenty oznaczone jako nieautoryzowane zostały wykluczone z wyliczeń JPK_V7, JPK_FA, ewidencji VAT oraz zestawień przychodów i rozchodów na poziomie usług logiki biznesowej.
- **Podgląd faktury (stawki VAT na pozycjach)**: Poprawiono prezentację kolumny VAT w tabeli pozycji dokumentu. Dla stawek opisowych wykorzystywana jest teraz etykieta pozycji (np. `ZW`, `0% WDT`, `NP`, `OO`) zamiast wymuszonego `0%`.
- **Kartoteka towarów i usług (stawki VAT 0%)**: Naprawiono przenoszenie stawek VAT z kartoteki na fakturę. Dla pozycji o tej samej wartości liczbowej stawki (np. `ZW` i `0% WDT`) system zapamiętuje i odtwarza właściwą etykietę, zamiast wybierać pierwszą pasującą po samym `0.0`.
- **Podgląd dokumentów (język niemiecki)**: Uporządkowano niemieckie tłumaczenia dokumentów zgodnie z praktyką DE/A/CH, m.in. dla nagłówków faktur, reverse charge, kwoty do zapłaty, samofakturowania oraz opisów adnotacji podatkowych.
- **Podgląd dokumentów (samofakturowanie DE)**: Dla niemieckiego podglądu dokumentów z opcją samofakturowania nagłówek zmienia się teraz na `Gutschrift`.
- **Kody QR KSeF (środowisko produkcyjne/testowe)**: Naprawiono wybór domeny dla linków QR. Nowe dokumenty zapisują środowisko KSeF zgodne z aktywną konfiguracją firmy, a generatory QR w podglądzie faktury i rozrachunkach używają bezpiecznego fallbacku, dzięki czemu w trybie produkcyjnym nie pojawiają się już linki do `qr-demo.ksef.mf.gov.pl`.
- **KSeF (Podmiot 3, FA(3))**: Dodano obsługę opcjonalnego Podmiotu 3 w danych faktury i generatorze XML KSeF. Wspierane role biznesowe: `Odbiorca`, `Dodatkowy nabywca` oraz `JST - odbiorca`.
- **Edycja faktury (Podmiot 3, UX)**: Dodano sekcję Podmiotu 3 w zakładce „KSeF / Opcje” z walidacją roli i danych minimalnych, polem `Kraj` obok `Kod kraju`, akcjami „Kopiuj z nabywcy” i „Wybierz z kartoteki” (ta sama ścieżka wyboru co dla nabywcy), a także pytaniem o synchronizację Podmiotu 3 przy zmianie nabywcy.
- **Podgląd/PDF (Podmiot 3)**: Podgląd dokumentu i eksport PDF wyświetlają teraz sekcję Podmiotu 3 (rola + dane adresowe), gdy funkcja jest aktywna na fakturze.

## [1.0.16] - 2026-03-31
- **Faktury zakupu (walidacja zapisu)**: Poprawiono metodę odczytu czy podmiot dostarczający fakturę jest vatowcem.
- **GUS (parsowanie adresu)**: Poprawiono składanie adresu dla danych z BIR1. Usunięto przypadki dublowania numeru nieruchomości (np. `ul. Testowa 18 18`) oraz pomijane są placeholdery ulicy złożone z samych myślników.
- **GUS (jednostki lokalne REGON)**: Dodano pobieranie jednostek lokalnych przez AJAX `danePobierzPelnyRaport` i mapowanie różnych schematów pól raportów (`lokfiz_*`, `lokpr_*`, `fizpr_*`, `prawna_*`) wraz z obsługą `RegonLink`/REGON14.
- **GUS (wybór jednostki w UI)**: Przy wielu jednostkach lokalnych dodano wybór z poziomu tabeli (okno z kolumnami: status, nazwa, adres, miasto, kod, REGON14), z sortowaniem aktywnych jednostek na górze.
- **Faktury (dodawanie kontrahenta)**: Ujednolicono mechanizm wyszukiwania kontrahenta dodawanego z poziomu formularza faktury z mechanizmem z modułu kartoteki kontrahentów. Dodano etap GUS + wybór jednostki lokalnej oraz fallback nazwy do rekordu głównego GUS, gdy wybrana jednostka nie zawiera nazwy.
- **Kartoteka kontrahentów (GUS, aktualizacja danych)**: Na karcie kontrahenta dodano przycisk „Pobierz z GUS”, który dla podanego NIP pobiera i aktualizuje dane podmiotu (nazwa, adres, miasto, kod pocztowy) oraz uzupełnia telefon/e-mail, jeśli są dostępne w BIR1.
- **GUS (stabilność listy jednostek lokalnych)**: Usunięto przypadki pustych wierszy na liście jednostek lokalnych dla podmiotów bez oddziałów lokalnych; odfiltrowano raporty podmiotu głównego i puste rekordy fallbackowe.
- **Rozrachunki (Biała Lista VAT, weryfikacja rachunku)**: W oknie „Dane do przelewu” dodano przycisk „Weryfikuj konto (Biała Lista VAT)”. Aplikacja wysyła zapytanie do API MF z NIP i numerem rachunku oraz wyświetla wynik: „Konto potwierdzone” albo „Konto niepotwierdzone” (z ID zapytania).
- **Rozrachunki (dodanie wpłaty)**: Dodano utrzymywanie zaznaczenia lini dla której dodawana jest wpłata
- **Certyfikaty KSeF**: Naprawiono problem błędnego odczytu kluczy publicznych KSef w niektórych środowiskach.

## [1.0.15] - 29.03.2026
- **Faktury (Walidacja zapisu)**: Uniemożliwiono zapis faktury bez wybranego kontrahenta, bez co najmniej jednej pozycji dokumentu oraz z wartością brutto równą zero. Blokada wartości zerowej nie dotyczy faktur korygujących, które mogą wyzerować dokument pierwotny.
- **KSeF (Kontrola przy zamykaniu programu)**: Dodano ostrzeżenie przy próbie wyjścia z aplikacji, jeśli w bieżącym dniu istnieją dokumenty sprzedaży niewysłane do KSeF, z możliwością pozostania w programie.
- **KSeF (Faktury zakupu, monitoring)**: Dodano automatyczne sprawdzanie nowych faktur zakupowych po zalogowaniu, z opcjonalnym trybem cyklicznym, powiadomieniami systemowymi, znacznikiem przy przycisku „Pobierz z KSeF” oraz opcją automatycznego pobierania dokumentów.
- **Faktury (Stabilność wyliczeń pozycji)**: Usunięto zapętlenie sygnałów w edycji pozycji, które mogło prowadzić do błędu rekurencji podczas przeliczania wartości wierszy i sum dokumentu.
- **Faktury (Ikony GTIN/powiązania)**: Ujednolicono ikonę informacji na kolumnie SKU oraz doprecyzowano jej widoczność: przy wyłączonych stanach magazynowych oznaczenia są pokazywane wyłącznie dla GTIN.
- **Faktury zakupu (Tryb tylko do odczytu)**: Dla dokumentów z blokadą edycji dopracowano zapis kartoteki i powiązań: przycisk „Zapisz” jest aktywowany dopiero po zaznaczeniu opcji zapisu do kartoteki; zapis działa również bez modułu stanów magazynowych (bez ruchów stanów).
- **Faktury zakupu (Komunikaty po zapisie)**: Uproszczono podsumowanie zapisu. W trybie magazynowym komunikat pokazuje liczbę: nowych pozycji, pozycji istniejących w kartotece, dodanych i usuniętych powiązań; poza trybem magazynowym pokazuje liczbę zapisanych nowych pozycji i pozycji istniejących w kartotece.
- **Kartoteka Towary i usługi (UI)**: Dodano kolumnę ID oraz wyszukiwanie po: ID, Nazwa, SKU, GTIN z automatycznym przewinięciem i zaznaczeniem pierwszego wyniku (domyślnie wyszukiwanie po nazwie).
- **Kartoteka Kontrahenci (UI)**: Dodano wyszukiwanie po NIP i Nazwa z przyciskami „Szukaj”/„Wyczyść”, obsługą Enter oraz domyślnym trybem wyszukiwania po nazwie.
- **Faktury (GTIN)**: Dodano obsługę pola GTIN/EAN dla pobieranych dokumentów i wysyłanych, wartość można dodać z menu kontekstowego edycji pozycji faktury, a obecność wartości jest oznaczana ikonką etykiety w kolumnie index.
- **Faktury (Edycja)**: Dodano możliwość wiązania pozycji z dokumentów z towarami dla trybu kontroli stanów magazynowych. 
- **Stany Magazynowe**: Dodano funkcjonalność kontroli stanów magazynowych aktywowanej z poziomu konfiguracji podmiotu. Włączenie funkcjonalności implikuje uruchomienie zliczania stanów magazynowych towarów względem ilości oraz ceny zakupu(magazynowej) 
- **Raporty (renament)**: dodano funkcjonalności w module deklaracje generowania renamentów względem ilości oraz względem ilości z podziałem na ceny zakupu.
- **Towary (Ruchy towarowe)**:Dodano funkcjonalność sprawdzenia ruchów magazynowych oraz ręcznego definiowania stanów magazynowych w menu kontekstowym modułu kartoteki towarów.

## [1.0.14] - 2026-03-24
- **JPK (Słowniki US)**: Zaktualizowano słownik kodów urzędów skarbowych.
- **KSeF (Faktury zakupu)**: Dodano pobieranie faktur w paczkach zgodnie z nowym endpointem udostępnionym przez KSeF.
- **Podgląd dokumentów (Języki)**: Dodano niemiecką wersję podglądu dokumentów. W podglądzie można teraz wybrać wersję: Polski, Angielski lub Niemiecki, wraz z obsługą niemieckiej kwoty słownie i pakietem tłumaczeń szablonów.
- **UI (Czytelność kolorów)**: Poprawiono kontrast kolorów w wersji Qt dla kolumny „Typ” w rozrachunkach oraz niebieskich oznaczeń w sekcji Konfiguracja → KSeF, aby były czytelne zarówno w jasnym, jak i ciemnym motywie.
- **Rozrachunki (Kolumna Dni)**: Zmieniono sposób prezentowania dni do terminu: kolor zielony bez znaków +/-, dni po terminie: kolor czerwony z znakiem minus.

## [1.0.13] - 2026-03-23
- **KSeF (Import nowych faktur zakupowych)**: Uszczelniono mapowanie dat podczas importu, aby `date_sale` zawsze miało bezpieczny fallback na `date_issue` i nie zapisywało domyślnego znacznika czasu importu. Dla już pobranych faktur aktualizacja bazy danych automatycznie odczyta z xml prawidłową datę.
- **UI (Lista faktur, kolumna "R")**: Naprawiono logikę statusu rozliczenia dla faktur korygujących. Po domknięciu bilansu korekty znacznik w kolumnie "R" poprawnie przechodzi na stan "rozliczono", także gdy wpłata została zaksięgowana na dokumencie bazowym wątku.
- **UI (Rozrachunki, kolumna "Dni")**: Dla w pełni rozliczonych pozycji ukryto wartość liczby dni (+/-). Kolumna „Dni” pokazuje teraz odchylenie od terminu wyłącznie dla pozycji nierozliczonych.
- **Wzorce wydruku (zakup)**: Poprawiono mapowanie Stopki Dokumentu, dla których w zależności od modelu danych uwagi oraz stopka nie były poprawnie wczytywane.

## [1.0.12] - 2026-03-21
- **Build i dystrybucja (Windows/AppImage/Flatpak)**: Naprawiono pakowanie zasobów tłumaczeń podglądu poprzez dołączenie katalogu `locale` do konfiguracji buildów.
- **KSeF (Import faktur zakupowych i korekt)**: Rozszerzono mapowanie płatności z XML o obsługę metod mieszanych (`ZaplataCzesciowa`) i zapis rozbić płatności, z zachowaniem zgodności z logiką faktur sprzedażowych.

## [1.0.11] - 2026-03-20
- **UI (Lista faktur i Rozrachunki)**: Uporządkowano działanie statusów płatności dla faktur korygujących. System czytelniej rozróżnia teraz sytuacje: „Do zwrotu”, „Do zapłaty” oraz „Zapłacono”.
- **UI (Podpowiedzi statusu)**: Rozszerzono opisy statusów niezapłaconych dokumentów, aby szybciej ocenić termin płatności i opóźnienia.
- **KSeF (Walidacja biznesowa)**: Dodano zabezpieczenie, które blokuje wysyłkę korekty, jeśli faktura pierwotna nie została wcześniej wysłana do KSeF.
- **Kartoteka i pozycje faktury**: Dodano obsługę rozróżnienia pozycji jako towar lub usługa, wraz z zachowaniem zgodności dla istniejących danych.
- **Edycja faktury (UX)**: Rozszerzono formularz o opcjonalne pole „Typ” dla pozycji i dopracowano zachowanie tej opcji w praktycznych scenariuszach pracy.
- **Podgląd i tłumaczenia**: Poprawiono spójność podglądu korekt oraz uzupełniono tłumaczenia (EN) w kluczowych miejscach.
- **Stabilność aplikacji**: Wprowadzono serię poprawek porządkujących edycję i podgląd faktur oraz usunięto regresję wpływającą na wysyłkę dokumentów do KSeF.

## [1.0.10] - 2026-03-19
- **KSeF (Schemat XML FA 3)**: Gruntownie przebudowano logikę generowania pliku XML rozliczającego faktury międzynarodowe i transgraniczne:
  - Zaimplementowano prawidłowe mapowanie procedury "odwrotnego obciążenia" i stawki 0% na podstawie kodów krajów (geolokalizacji ISO i przynależności do EU). Zabezpiecza to precyzyjny zrzut kwot netto do autoryzowanych węzłów deklaracji: m.in. `<P_13_6_2>` (WDT), `<P_13_6_3>` (Eksport), `<P_13_8>` i `<P_13_9>` (dostawa poza kraj dla usług). Tym samym wyeliminowano błąd wrzucania wszystkich faktur walutowych do krajowego tagu `<P_13_10>`.
  - Dodano precyzyjną i prawidłową w standardach MF obsługę opcjonalnego węzła `<OkresFa>` wykorzystującego pola `<P_6_Od>` oraz `<P_6_Do>`. W momencie ustanowienia na fakturze ramowego okresu, XML poprawnie zgłosi przedział, zamiast twardo wbijać ujednoliconą sztywną datę do tagu `<P_6>`.
- **System ERP / Podgląd**: Ustabilizowano obsługę prefiksów numerycznych NIP-ów państw (np. błąd wyrzucający Niemcy jako "GE" zamiast poprawnego "DE"). Cały system rozróżnia już surową nazwę kraju od wyśrubowanego, natywnego dwuliterowego kodu z normy ISO.
- **KSeF (Pobieranie faktur)**: Rozwiązano problem przerywania pobierania wielu faktur z KSeF (błąd po ok. 16 sztukach). Wprowadzono automatyczną obsługę limitów zapytań (Rate Limiting) ustawionych przez serwery Ministerstwa Finansów. Aplikacja radzi sobie teraz z błędami "429 Too Many Requests" poprzez mechanizm automatycznego wstrzymywania i wznawiania (retry) zadań oraz mikropauzy (0.5s) pozwalające płynnie zsynchronizować bez limitów setki dokumentów.
- **Edycja Faktury (UX)**: Usunięto zbędny komunikat ostrzegawczy o wykryciu zagranicznego kontrahenta podczas samej edycji utworzonej wcześniej faktury. Ponadto, komunikat ten oraz automatyczne ustawienie flagi "Odwrotne obciążenie" aktywują się teraz wyłącznie dla zagranicznych kontrahentów należących do UE z poprawnie oznaczonym parametrem "Płatnik VAT-UE".
- **Podgląd / PDF (Wydruki zagraniczne)**:
  - Zaktualizowano styl wydruku danych bankowych (polski i angielski PDF). Jeżeli wydruk generuje się z kontem firmowym, rachunek prezentowany jest w międzynarodowym formacie `IBAN` z rozbiciem na spacje wraz z kodem kraju, a kod SWIFT wyświetlany jest z przedrostkiem `BIC/SWIFT:`.
  - Dla faktur zagranicznych numer identyfikacji podatkowej własnej firmy (wystawcy) i nabywcy jest teraz zawsze przymusowo formatowany do międzynarodowego standardu przedrostka z kodem państwa (np. wyświetla się `PL1234567890` na dokumentach trans-granicznych).
  - Wprowadzono obsługę pola "Okres od-do" (wydruki wszystkich faktur). Jeżeli jako punkt odniesienia podatkowego wskazano dany okres ramowy wykonywania zlecenia, na wydrukach pojawi się specjalna rubryka „Okres od-do” z jego zakresem, a „Data sprzedaży” pokaże datę pomyślnego zamknięcia okresu („do”), ściślej odzwierciedlając ramy rachunkowe na dokumencie eksportu.

## [1.0.9] - 2026-03-17
- **Księgowość (Rozrachunki)**: Wprowadzono narzędzie do "Rozliczeń Zbiorczych" (kompensat). Pozwala to rozliczać wiele należności (WN) i zobowiązań (MA) z danym kontrahentem naraz na zadeklarowaną łączną kwotę wpłaty. System automatycznie dystrybuuje środki na poczet najstarszych dokumentów i wyświetla obustronne bilanse.
- **KSeF (JPK_FA & JPK_V7M)**: Zaktualizowano mapowanie tagów dla list faktur i pozycji faktur z odwrotnym obciążeniem (K_11 dla zagranicznych, K_31 dla krajowych). Usługi objęte procedurami GTU_12 i GTU_13 są od teraz rzutowane celnie w K_12 raportu JPK.
- **Waluty i Kursy (NBP)**: Wprowadzono automatyczne dociąganie na żywo kursu waluty z odpowiednich tabel (Tabela A NBP) dla wybranego dnia sprzedaży na oknie faktury uwzględniające święta i weekendy (skok wstecz).
- **Deklaracje i Raportowanie (Księgowość)**: Naprawiono rozliczanie faktur walutowych - obecnie ewidencja VAT oraz moduł sumowań deklaracji w JPK prawidłowo aplikują kurs (wskaźnik `currency_rate`) celem przekonwertowania kwot netto/brutto w tabelach z EUR/USD na PLN stosownie do algorytmów Ministerstwa.
- **Księgowość (Rozrachunki)**: Pod prawym przyciskiem myszy dodano szybki podgląd ("Pokaż wpłaty") umożliwiający wgląd w historię księgowania należności dla danego dokumentu rozrachunkowego z opcją na cofnięcie / usunięcie wpłaty.
- **UI (Lista faktur)**: Dodano nową kolumnę "R" ze statusem zapłaty (ikona check / ostrzeżenie / X) oraz interaktywnym dymkiem informującym o kwocie pozostałej do zapłaty. Skorelowano to z systemem rozrachunków.
- **UI (Lista faktur)**: Dodano objaśniające dymki (tooltips) nad przyciskami akcji (Podgląd, Edycja, Wysyłka do KSeF) na liście faktur.
- **Baza Kontrahentów**: Umożliwiono dodawanie wielu oddziałów firmy z tym samym numerem NIP, ale różnymi adresami. Zmodyfikowano sprawdzanie duplikatów i usunięto blokadę unikalności NIP-u z bazy danych.
- **Podgląd Faktury**: Naprawiono błąd wyświetlania danych na podglądzie, PDF i wydrukach faktur zakupowych pobieranych z KSeF. Jako sprzedawca są teraz prawidłowo ujęte dane kontrahenta (zamiast dotychczasowego "Brak danych" oraz danych nabywcy w nieswoim miejscu).
- **Wysyłka KSEF**: Poprawiono moduł wyroczni szyfrowania dla metody autoryzacji w KSeF za pomocą tokenu dostępowego.
- **Podgląd Faktury**: Dodano dynamiczne tłumaczenie faktur na język angielski.

## [1.0.8] - 2026-03-05
- **System**: Dodano obsługę automatycznego wykrywania ciemnego motywu systemu (wsparcie dla Windows oraz Linux/Flatpak - XDG Portal).

## [1.0.7] - 2026-03-04

### Dodano / Zmieniono (KSeF & QR)
- **Kody QR (Offline)**: Naprawiono błąd "Link nieprawidłowy" w Aplikacji Podatnika KSeF.
    - Zmieniono algorytm podpisu cyfrowego na `RSA-SHA256` z paddingiem `PKCS#1 v1.5` (wymagany przez MF), zamiast PSS.
    - Wprowadzono kanonizację XML (Inclusive C14N) przed wyliczeniem skrótu SHA-256 dla kodu QR, co zapewnia zgodność sumy kontrolnej.
    - Naprawiono format daty w linku QR (standard ISO 8601).
- **Logika Wysyłki (Online)**: Zoptymalizowano proces wysyłki faktur. 
    - Aplikacja teraz wysyła do KSeF dokładnie ten sam "snapshot" XML, który został użyty do wygenerowania podglądu i kodu QR.
    - Eliminuje to rozbieżności w sumach kontrolnych (Hash) pomiędzy kodem QR a plikiem w KSeF.
- **UI**: Usunięto nadmiarowe (podwójne) okno potwierdzenia wysyłki w widoku listy faktur.
- **UI (Edycja Faktury)**: przeniesiono sekcję "Warunki Transakcji" (Zamówienie / Umowa) do zakładki "KSeF / Opcje".
- **UI (Lista faktur)**: Dodano możliwość zmiany szerokości kolumn oraz dodano kolumne z przyciskami akcji dla list faktur 
- **Logika**: naprawiono błąd wyświetlania pustych dat zamówienia/umowy na podglądzie faktury, gdy opcja była odznaczona.
- **Logika**: zoptymalizowano działanie opcji "Odwrotne obciążenie" (VAT). Po usunięciu wszystkich pozycji ze stawką "oo" opcja odznacza się automatycznie, przywracając możliwość edycji innych stawek.
- **Naprawy**: usunięto błędy (TypeError) związane z inicjalizacją okna dialogowego faktury i duplikacją metod.
- **Konfiguracja (certyfikat linku)**: dodano przycisk testu hasła do pliku klucza.
