Wyszukiwanie faktur
Użyj auth.invoices, gdy potrzebujesz metadanych faktur poza sesją wysyłki.
Zapytania o metadane są oparte o filtry i paginowane przez KSeF.
Zbuduj filtr
Dział zatytułowany „Zbuduj filtr”Filtry powinny być wąskie. Zakres dat, rola i typ faktury ograniczają pracę po stronie KSeF i liczbę stron wyników.
from datetime import datetime, timedelta, timezone
from ksef2.domain.models import InvoicesFilter
filters = InvoicesFilter( role="seller", date_type="issue_date", date_from=datetime.now(tz=timezone.utc) - timedelta(days=7), date_to=datetime.now(tz=timezone.utc), amount_type="brutto", invoicing_mode="online", invoice_types=["vat"],)Jedna strona albo wszystkie strony
Dział zatytułowany „Jedna strona albo wszystkie strony”from ksef2.domain.models import InvoiceMetadataParams
page = auth.invoices.query_metadata( filters=filters, params=InvoiceMetadataParams(sort_order="asc"),)
for invoice in page.invoices: print(invoice.ksef_number, invoice.invoice_number)for page in auth.invoices.query_metadata_pages(filters=filters): print(len(page.invoices), page.has_more)for invoice in auth.invoices.all_metadata(filters=filters): print(invoice.ksef_number, invoice.invoice_number)Poczekaj na nową fakturę
Dział zatytułowany „Poczekaj na nową fakturę”Przetwarzanie w KSeF jest asynchroniczne. Po wysyłce odpytuj metadane, jeśli następny krok zależy od widoczności faktury w API pobierania.
result = auth.invoices.wait_for_invoices( filters=filters, timeout=120.0, poll_interval=2.0,)
for invoice in result.invoices: print(invoice.ksef_number)Zalecany przepływ
Dział zatytułowany „Zalecany przepływ”-
Wybierz rolę podmiotu, jako który wyszukujesz.
-
Zbuduj wąski
InvoicesFilter. -
Pobierz jedną stronę dla ekranów interaktywnych albo iteruj po stronach w zadaniach w tle.
-
Zapisz numery KSeF potrzebne do późniejszego pobrania.