lms-ksef-netlink-18042026
NETLink 18.04.2026:
  Plugin KSeFSubmit: fix n1ebieski v1.x (status->code, UPO download URL)
  bin/lms-ksef.php: PostgreSQL kompatybilnosc (GROUP BY subquery, UPDATE bez JOIN)
  Bazuje na REPO MASTER 17.04.2026
Chilek 17.04.2026 (SOFTWARE_REVISION: 2026-04-16T15:46:23):
  KSeF.php: poprawka obliczania salda Rozliczenie (beforeBalance = balance + total)
            caly blok warunkowany przez ksefshowbalancesummary
  LMSTcpdfInvoice.php: format_ten(false) zamiast $export dla NIPu nabywcy i sprzedawcy
  LMSEzpdfInvoice.php: ta sama poprawka format_ten
  customerbalancetransfer.php: bugfix old_customername/old_customerid
NETLink P1: setlocale(LC_NUMERIC, C) w getInvoiceXml()
NETLink: ksefallconsumers -> ksefconfig
NETLink: tryb manualny ksef.manual_send=1
NETLink / cocoban78
fix1 (17.04.2026):
  plugins/KSeFSubmit/lib/KSeFApiService.php: close() po openAndSend() - fix pluginu (nie mielil)
  plugins/KSeFSubmit/handlers/KSeFSubmitHandler.php: global DB/LMS na poczatku, invoiceId wczesnie
fix2 (17.04.2026):
  bin/lms-ksef.php: FAZA 1/4 - subquery zamiast GROUP BY bs.id (PostgreSQL compatibility)
fix2b (17.04.2026):
  bin/lms-ksef.php: FAZA 1/4 - UPDATE JOIN -> subquery WHERE docid=(SELECT...) (PostgreSQL)
fix3 (17.04.2026):
  plugins/KSeFSubmit/lib/KSeFApiService.php: poprawka pollingu - statusData->status->code
    zamiast statusData->processingCode (n1ebieski v1.x zmienil strukture odpowiedzi)
    UPO pobierane z statusData->upo->pages download URL, nie przez sessions()->invoices()->ksefUpo()
fix4 (18.04.2026):
  plugins/KSeFSubmit/handlers/KSeFSubmitHandler.php: global $DB,$LMS na poczatku metody
    cnote lookup: Chilka nie ustawia cnote['id'] -> szukamy SELECT id FROM documents
    WHERE number=? AND cdate=? AND type=DOC_CNOTE (faktura korygujaca szla do KSeF)
  plugins/KSeFSubmit/lib/KSeFApiService.php: GetInvoiceContent nie zwraca 'type'
    -> pobierz SELECT type FROM documents (KSeF.php generowal zwykla fakture zamiast korekty)
  bin/lms-ksef.php: GetInvoiceContent nie zwraca 'type' -> uzupelnij z inv['doctype']
    (FAZA 3 bulk tez generowal zwykla fakture zamiast korekty)
fix5 (18.04.2026):
  bin/lms-ksef.php: --from-date=YYYY-MM-DD (domyslnie 60 dni wstecz, min: boundary_date)
    zapobiega skanowaniu wszystkich faktur od poczatku KSeF na wieki
fix6 (18.04.2026):
  lms-ksef.php + KSeFSubmitHandler.php: Latarnia TOTAL_FAILURE blokuje wysylke
    (wczesniej tylko Planned_Maintenance/Unavailable/Error blokowaly)
fix7 (18.04.2026):
  lms-ksef.php: usunieto mylacy log "Znaleziono X faktur do przetworzenia"
    zamiast tego: "Faktur do wysłania: X" (po filtracji B2B/B2C)
    lub "Brak faktur do wysłania (wszystkie B2C bez zgody)"
