Przejdź do głównej zawartości

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.

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"],
)
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)

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)
  1. Wybierz rolę podmiotu, jako który wyszukujesz.

  2. Zbuduj wąski InvoicesFilter.

  3. Pobierz jedną stronę dla ekranów interaktywnych albo iteruj po stronach w zadaniach w tle.

  4. Zapisz numery KSeF potrzebne do późniejszego pobrania.