notebookvb
This commit is contained in:
@@ -0,0 +1,135 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import sys as _sys
|
||||||
|
_sys.stdout.reconfigure(encoding="utf-8", errors="replace")
|
||||||
|
_sys.stderr.reconfigure(encoding="utf-8", errors="replace")
|
||||||
|
"""
|
||||||
|
07_doplnit_zahajeni.py
|
||||||
|
======================
|
||||||
|
Pro nové pacienty (první dávka po 31.12.2024) kteří jsou již ukončeni
|
||||||
|
a nemají záznam v vzp_registrace_lekari pro naše ICP=09305001,
|
||||||
|
dotáže se VZP k datu jejich první dávky — tehdy tam ještě byli
|
||||||
|
a odpověď obsahuje datumZahajeni registrace u nás.
|
||||||
|
|
||||||
|
Výsledek uloží do vzp_registrace_lekari (stejná tabulka jako kdojelekar).
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
from datetime import date
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "Knihovny"))
|
||||||
|
from mysql_db import connect_mysql
|
||||||
|
from vzpb2b_client import VZPB2BClient
|
||||||
|
|
||||||
|
PFX_PATH = str(Path(__file__).resolve().parents[1] / "Certificates" / "picka.pfx")
|
||||||
|
PFX_PASSWORD = "Vlado7309208104+"
|
||||||
|
ICZ = "09305000"
|
||||||
|
NASA_ICP = "09305001"
|
||||||
|
API_PAUSE = 2
|
||||||
|
|
||||||
|
PRVNI_DAVKA = date(2024, 12, 1)
|
||||||
|
|
||||||
|
# ── Načtení kandidátů ─────────────────────────────────────────────────────────
|
||||||
|
conn = connect_mysql()
|
||||||
|
cur = conn.cursor()
|
||||||
|
|
||||||
|
# Noví pacienti (prvni_davka > 31.12.2024) bez záznamu v registrace pro naše ICP
|
||||||
|
cur.execute("""
|
||||||
|
SELECT
|
||||||
|
s.cip,
|
||||||
|
MIN(s.prijmeni) AS prijmeni,
|
||||||
|
MIN(s.jmeno) AS jmeno,
|
||||||
|
MIN(DATE(CONCAT(s.davka_rok,'-',LPAD(s.davka_mesic,2,'0'),'-',LPAD(s.davka_den,2,'0')))) AS prvni_davka
|
||||||
|
FROM seznam_pojistencu_davky s
|
||||||
|
WHERE s.pojistovna = '111'
|
||||||
|
GROUP BY s.cip
|
||||||
|
HAVING prvni_davka > %s
|
||||||
|
""", (PRVNI_DAVKA,))
|
||||||
|
vsichni_novi = {r[0]: (r[1], r[2], r[3]) for r in cur.fetchall()}
|
||||||
|
|
||||||
|
# Kteří z nich už mají záznam v registrace pro naše ICP
|
||||||
|
cur.execute("""
|
||||||
|
SELECT DISTINCT rc FROM vzp_registrace_lekari
|
||||||
|
WHERE ICP = %s AND kod_odbornosti = '001' AND ma_lekare = 1
|
||||||
|
""", (NASA_ICP,))
|
||||||
|
uz_maji = {r[0] for r in cur.fetchall()}
|
||||||
|
|
||||||
|
kandidati = {
|
||||||
|
cip: info
|
||||||
|
for cip, info in vsichni_novi.items()
|
||||||
|
if cip not in uz_maji
|
||||||
|
}
|
||||||
|
|
||||||
|
print(f"Noví pacienti celkem: {len(vsichni_novi)}")
|
||||||
|
print(f"Již mají datum zahájení: {len(uz_maji & vsichni_novi.keys())}")
|
||||||
|
print(f"Ke doplnění: {len(kandidati)}")
|
||||||
|
|
||||||
|
if not kandidati:
|
||||||
|
print("Vše je kompletní.")
|
||||||
|
cur.close(); conn.close(); sys.exit(0)
|
||||||
|
|
||||||
|
vzp = VZPB2BClient("prod", PFX_PATH, PFX_PASSWORD, icz=ICZ)
|
||||||
|
|
||||||
|
print()
|
||||||
|
sirka = max(len(f"{p} {j}") for p, j, _ in kandidati.values()) + 2
|
||||||
|
|
||||||
|
for i, (cip, (prijmeni, jmeno, prvni_davka)) in enumerate(kandidati.items(), 1):
|
||||||
|
print(f"[{i:>2}/{len(kandidati)}] {prijmeni+' '+jmeno:<{sirka}} ({cip}) k {prvni_davka}", end=" ", flush=True)
|
||||||
|
|
||||||
|
try:
|
||||||
|
xml = vzp.registrace_lekare(cip, prvni_davka.isoformat(), odbornosti=["001"])
|
||||||
|
time.sleep(API_PAUSE)
|
||||||
|
zaznamy = vzp.parse_registrace_lekare(xml)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"CHYBA: {e}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
nas_zaznam = next(
|
||||||
|
(z for z in zaznamy
|
||||||
|
if z.get("ma_lekare") and z.get("ICP") == NASA_ICP and z.get("kod_odbornosti") == "001"),
|
||||||
|
None
|
||||||
|
)
|
||||||
|
|
||||||
|
if not nas_zaznam:
|
||||||
|
print("→ nenalezen k tomuto datu")
|
||||||
|
continue
|
||||||
|
|
||||||
|
def to_date(s):
|
||||||
|
try:
|
||||||
|
return date.fromisoformat(s) if s else None
|
||||||
|
except ValueError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
poj_el = nas_zaznam
|
||||||
|
cur.execute("""
|
||||||
|
INSERT INTO vzp_registrace_lekari
|
||||||
|
(rc, prijmeni, jmeno, k_datu, kod_odbornosti, ma_lekare,
|
||||||
|
ICZ, ICP, nazev_lekare, nazev_zzz,
|
||||||
|
poj_kod, poj_zkratka,
|
||||||
|
datum_registrace, datum_zahajeni, datum_ukonceni, stav_vyrizeni)
|
||||||
|
VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
|
||||||
|
ON DUPLICATE KEY UPDATE
|
||||||
|
datum_zahajeni = VALUES(datum_zahajeni),
|
||||||
|
datum_ukonceni = VALUES(datum_ukonceni),
|
||||||
|
nazev_lekare = VALUES(nazev_lekare),
|
||||||
|
nazev_zzz = VALUES(nazev_zzz)
|
||||||
|
""", (
|
||||||
|
cip, prijmeni, jmeno, prvni_davka, "001", 1,
|
||||||
|
nas_zaznam.get("ICZ"), nas_zaznam.get("ICP"),
|
||||||
|
nas_zaznam.get("nazev_lekare"), nas_zaznam.get("nazev_zzz"),
|
||||||
|
nas_zaznam.get("poj_kod"), nas_zaznam.get("poj_zkratka"),
|
||||||
|
to_date(nas_zaznam.get("datum_registrace")),
|
||||||
|
to_date(nas_zaznam.get("datum_zahajeni")),
|
||||||
|
to_date(nas_zaznam.get("datum_ukonceni")),
|
||||||
|
nas_zaznam.get("stav_vyrizeni"),
|
||||||
|
))
|
||||||
|
|
||||||
|
dz = nas_zaznam.get("datum_zahajeni") or "?"
|
||||||
|
du = nas_zaznam.get("datum_ukonceni") or "?"
|
||||||
|
print(f"→ zahájení: {dz} ukončení: {du}")
|
||||||
|
|
||||||
|
cur.close()
|
||||||
|
conn.close()
|
||||||
|
print(f"\nHotovo.")
|
||||||
@@ -92,8 +92,8 @@ cur.execute("""
|
|||||||
cip,
|
cip,
|
||||||
MIN(prijmeni) AS prijmeni,
|
MIN(prijmeni) AS prijmeni,
|
||||||
MIN(jmeno) AS jmeno,
|
MIN(jmeno) AS jmeno,
|
||||||
MIN(DATE(CONCAT(davka_rok,'-',LPAD(davka_mesic,2,'0'),'-01'))) AS prvni_davka,
|
MIN(DATE(CONCAT(davka_rok,'-',LPAD(davka_mesic,2,'0'),'-',LPAD(davka_den,2,'0')))) AS prvni_davka,
|
||||||
MAX(DATE(CONCAT(davka_rok,'-',LPAD(davka_mesic,2,'0'),'-01'))) AS posledni_davka,
|
MAX(DATE(CONCAT(davka_rok,'-',LPAD(davka_mesic,2,'0'),'-',LPAD(davka_den,2,'0')))) AS posledni_davka,
|
||||||
COUNT(DISTINCT CONCAT(davka_rok,davka_mesic)) AS pocet_davek
|
COUNT(DISTINCT CONCAT(davka_rok,davka_mesic)) AS pocet_davek
|
||||||
FROM seznam_pojistencu_davky
|
FROM seznam_pojistencu_davky
|
||||||
WHERE pojistovna='111'
|
WHERE pojistovna='111'
|
||||||
@@ -105,7 +105,7 @@ seznam = {r[0]: {"prijmeni": r[1], "jmeno": r[2],
|
|||||||
|
|
||||||
# Nejnovější datum dávky (pro sloupec "v aktuální dávce")
|
# Nejnovější datum dávky (pro sloupec "v aktuální dávce")
|
||||||
cur.execute("""
|
cur.execute("""
|
||||||
SELECT MAX(DATE(CONCAT(davka_rok,'-',LPAD(davka_mesic,2,'0'),'-01')))
|
SELECT MAX(DATE(CONCAT(davka_rok,'-',LPAD(davka_mesic,2,'0'),'-',LPAD(davka_den,2,'0'))))
|
||||||
FROM seznam_pojistencu_davky WHERE pojistovna='111'
|
FROM seznam_pojistencu_davky WHERE pojistovna='111'
|
||||||
""")
|
""")
|
||||||
nejnovejsi_davka = cur.fetchone()[0]
|
nejnovejsi_davka = cur.fetchone()[0]
|
||||||
@@ -113,8 +113,8 @@ nejnovejsi_davka = cur.fetchone()[0]
|
|||||||
cur.execute("""
|
cur.execute("""
|
||||||
SELECT DISTINCT cip FROM seznam_pojistencu_davky
|
SELECT DISTINCT cip FROM seznam_pojistencu_davky
|
||||||
WHERE pojistovna='111'
|
WHERE pojistovna='111'
|
||||||
AND CONCAT(davka_rok,LPAD(davka_mesic,2,'0')) = (
|
AND CONCAT(davka_rok,LPAD(davka_mesic,2,'0'),LPAD(davka_den,2,'0')) = (
|
||||||
SELECT MAX(CONCAT(davka_rok,LPAD(davka_mesic,2,'0')))
|
SELECT MAX(CONCAT(davka_rok,LPAD(davka_mesic,2,'0'),LPAD(davka_den,2,'0')))
|
||||||
FROM seznam_pojistencu_davky WHERE pojistovna='111'
|
FROM seznam_pojistencu_davky WHERE pojistovna='111'
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
@@ -214,15 +214,25 @@ for cip, s in seznam.items():
|
|||||||
"datum_prehl": datum_prehl,
|
"datum_prehl": datum_prehl,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
DATUM_REGISTRACE_OD = date(2025, 1, 1)
|
||||||
|
|
||||||
radky.sort(key=lambda r: (r["prijmeni"], r["jmeno"]))
|
radky.sort(key=lambda r: (r["prijmeni"], r["jmeno"]))
|
||||||
|
|
||||||
aktivni = [r for r in radky if r["stav"] == "aktivní"]
|
aktivni = [r for r in radky if r["stav"] == "aktivní"]
|
||||||
ukonceni = sorted([r for r in radky if r["stav"] == "ukončen"],
|
ukonceni = sorted([r for r in radky if r["stav"] == "ukončen"],
|
||||||
key=lambda r: r["ukonceni"] or date.min)
|
key=lambda r: r["ukonceni"] or date.min)
|
||||||
nenalezeni = [r for r in radky if r["stav"] == "nenalezen"]
|
nenalezeni = [r for r in radky if r["stav"] == "nenalezen"]
|
||||||
|
# Noví: datum_zahajeni registrace u nás >= 01.01.2025, řazeno chronologicky
|
||||||
|
novi = sorted(
|
||||||
|
[r for r in radky
|
||||||
|
if registrace.get(r["cip"], {}).get("zahajeni") is not None
|
||||||
|
and registrace[r["cip"]]["zahajeni"] >= DATUM_REGISTRACE_OD],
|
||||||
|
key=lambda r: (registrace[r["cip"]]["zahajeni"], r["prijmeni"], r["jmeno"])
|
||||||
|
)
|
||||||
|
|
||||||
print(f" Aktivní: {len(aktivni)}")
|
print(f" Aktivní: {len(aktivni)}")
|
||||||
print(f" Ukončení: {len(ukonceni)}")
|
print(f" Ukončení: {len(ukonceni)}")
|
||||||
|
print(f" Noví: {len(novi)}")
|
||||||
print(f" Nenalezeni: {len(nenalezeni)}")
|
print(f" Nenalezeni: {len(nenalezeni)}")
|
||||||
|
|
||||||
# ── Excel ─────────────────────────────────────────────────────────────────────
|
# ── Excel ─────────────────────────────────────────────────────────────────────
|
||||||
@@ -270,6 +280,48 @@ def zapsat_list(ws, nadpis, bg_title, seznam_radku, stav_bg):
|
|||||||
cell(ws, ri, 11, r.get("novy_lekar", ""), bg)
|
cell(ws, ri, 11, r.get("novy_lekar", ""), bg)
|
||||||
cell(ws, ri, 12, r.get("datum_prehl"), bg, align="center", fmt=DATE_FMT)
|
cell(ws, ri, 12, r.get("datum_prehl"), bg, align="center", fmt=DATE_FMT)
|
||||||
|
|
||||||
|
C_REGISTRACE = "DAEEF3" # světle modrá
|
||||||
|
C_TITLE_REG = "17375E"
|
||||||
|
|
||||||
|
SLOUPCE_REG = ["Příjmení", "Jméno", "ČIP", "Zahájení\nregistrace",
|
||||||
|
"Ukončení\nregistrace", "Počet\ndávek", "V aktuální\ndávce",
|
||||||
|
"Stav", "Po ukončení", "Nový lékař / poznámka", "Datum\npřehlášení"]
|
||||||
|
WIDTHS_REG = [24, 18, 13, 16, 14, 9, 10, 10, 13, 40, 13]
|
||||||
|
|
||||||
|
PO_CLR_REG = {"prehlasil": "375623", "nenalezen": "C55A11",
|
||||||
|
"bez_lekare": "7F6000", "": "000000"}
|
||||||
|
PO_TXT_REG = {"prehlasil": "přehlásil se", "nenalezen": "nenalezen",
|
||||||
|
"bez_lekare": "bez lékaře", "": ""}
|
||||||
|
|
||||||
|
def zapsat_registrace(ws, nadpis, seznam_radku):
|
||||||
|
ncols = len(SLOUPCE_REG)
|
||||||
|
ws.freeze_panes = "A3"
|
||||||
|
title_row(ws, 1, nadpis, ncols, C_TITLE_REG)
|
||||||
|
ws.row_dimensions[2].height = 30
|
||||||
|
for col, h in enumerate(SLOUPCE_REG, 1):
|
||||||
|
hdr(ws.cell(2, col), h, bg=C_TITLE_REG)
|
||||||
|
autofit(ws, WIDTHS_REG)
|
||||||
|
|
||||||
|
for ri, r in enumerate(seznam_radku, 3):
|
||||||
|
bg = C_REGISTRACE if ri % 2 == 0 else None
|
||||||
|
cell(ws, ri, 1, r["prijmeni"], bg)
|
||||||
|
cell(ws, ri, 2, r["jmeno"], bg)
|
||||||
|
cell(ws, ri, 3, r["cip"], bg, align="center")
|
||||||
|
zahajeni = registrace.get(r["cip"], {}).get("zahajeni")
|
||||||
|
cell(ws, ri, 4, zahajeni, bg, align="center", fmt=DATE_FMT)
|
||||||
|
cell(ws, ri, 5, r["ukonceni"], bg, align="center", fmt=DATE_FMT)
|
||||||
|
cell(ws, ri, 6, r["pocet_davek"],bg, align="right")
|
||||||
|
akt_txt = "✓" if r["v_aktualni"] else "–"
|
||||||
|
akt_clr = "375623" if r["v_aktualni"] else "C55A11"
|
||||||
|
cell(ws, ri, 7, akt_txt, bg, bold=True, align="center", color=akt_clr)
|
||||||
|
cell(ws, ri, 8, r["stav"], bg, align="center", bold=True,
|
||||||
|
color=("375623" if r["stav"] == "aktivní" else "C55A11"))
|
||||||
|
po = r.get("po_ukonceni", "")
|
||||||
|
cell(ws, ri, 9, PO_TXT_REG.get(po, po), bg, align="center", bold=bool(po),
|
||||||
|
color=PO_CLR_REG.get(po, "000000"))
|
||||||
|
cell(ws, ri, 10, r.get("novy_lekar", ""), bg)
|
||||||
|
cell(ws, ri, 11, r.get("datum_prehl"), bg, align="center", fmt=DATE_FMT)
|
||||||
|
|
||||||
wb = openpyxl.Workbook()
|
wb = openpyxl.Workbook()
|
||||||
|
|
||||||
# List 1 – Všichni
|
# List 1 – Všichni
|
||||||
@@ -292,10 +344,16 @@ zapsat_list(ws3,
|
|||||||
f"Ukončená registrace — celkem: {len(ukonceni)}",
|
f"Ukončená registrace — celkem: {len(ukonceni)}",
|
||||||
C_TITLE_UKO, ukonceni, C_UKONCEN)
|
C_TITLE_UKO, ukonceni, C_UKONCEN)
|
||||||
|
|
||||||
# List 4 – Nenalezeni
|
# List 4 – Registrace (noví po 31.12.2024)
|
||||||
|
ws4 = wb.create_sheet("Registrace")
|
||||||
|
zapsat_registrace(ws4,
|
||||||
|
f"Noví pojištěnci — datum zahájení registrace od 1.1.2025 — celkem: {len(novi)}",
|
||||||
|
novi)
|
||||||
|
|
||||||
|
# List 5 – Nenalezeni
|
||||||
if nenalezeni:
|
if nenalezeni:
|
||||||
ws4 = wb.create_sheet("Nenalezeni")
|
ws5 = wb.create_sheet("Nenalezeni")
|
||||||
zapsat_list(ws4,
|
zapsat_list(ws5,
|
||||||
f"Bez dostatečných dat — celkem: {len(nenalezeni)}",
|
f"Bez dostatečných dat — celkem: {len(nenalezeni)}",
|
||||||
C_TITLE_NEN, nenalezeni, C_NENALEZEN)
|
C_TITLE_NEN, nenalezeni, C_NENALEZEN)
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,135 @@
|
|||||||
|
"""
|
||||||
|
Stahování seznamu registrovaných pojištěnců ČPZP.
|
||||||
|
|
||||||
|
Použij po 01_prihlaseni.py (ten uloží cpzp_cookies.json).
|
||||||
|
|
||||||
|
Co dělá:
|
||||||
|
- Načte cookies z cpzp_cookies.json
|
||||||
|
- Otevře prohlížeč jednou, projde všechny zadané měsíce
|
||||||
|
- Pro každý měsíc vyplní formulář, klikne Hledat, stáhne soubor
|
||||||
|
- Přeskočí měsíce kde soubor v cílovém adresáři už existuje
|
||||||
|
- Uloží jako: YYYY-MM-DD f205MMRR.123
|
||||||
|
|
||||||
|
NASTAVENÍ:
|
||||||
|
OD_MESIC / OD_ROK — první měsíc rozsahu
|
||||||
|
DO_MESIC / DO_ROK — poslední měsíc rozsahu (včetně)
|
||||||
|
"""
|
||||||
|
|
||||||
|
import glob
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
from datetime import date
|
||||||
|
|
||||||
|
from playwright.sync_api import sync_playwright
|
||||||
|
|
||||||
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
|
||||||
|
from Knihovny.najdi_dropbox import get_dropbox_root
|
||||||
|
|
||||||
|
OD_MESIC = 12
|
||||||
|
OD_ROK = 2024
|
||||||
|
DO_MESIC = 3
|
||||||
|
DO_ROK = 2026
|
||||||
|
|
||||||
|
BASE_URL = "https://portal.cpzp.cz"
|
||||||
|
COOKIES_FILE = os.path.join(os.path.dirname(__file__), "..", "..", "StahováníZpráv", "205 ČPZP", "cpzp_cookies.json")
|
||||||
|
DEST_DIR = os.path.join(
|
||||||
|
get_dropbox_root(),
|
||||||
|
"Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "205 ČPZP",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def mesice_v_rozsahu(od_m, od_r, do_m, do_r):
|
||||||
|
"""Generuje (mesic, rok) od od_m/od_r do do_m/do_r včetně."""
|
||||||
|
m, r = od_m, od_r
|
||||||
|
while (r, m) <= (do_r, do_m):
|
||||||
|
yield m, r
|
||||||
|
m += 1
|
||||||
|
if m > 12:
|
||||||
|
m = 1
|
||||||
|
r += 1
|
||||||
|
|
||||||
|
|
||||||
|
def uz_stazeno(mesic: int, rok: int) -> bool:
|
||||||
|
"""Vrátí True pokud soubor pro daný měsíc/rok už existuje v DEST_DIR."""
|
||||||
|
mm = f"{mesic:02d}"
|
||||||
|
rr = str(rok)[-2:]
|
||||||
|
pattern = os.path.join(DEST_DIR, f"* f205{mm}{rr}.*")
|
||||||
|
return bool(glob.glob(pattern))
|
||||||
|
|
||||||
|
|
||||||
|
def stahni_mesic(page, mesic: int, rok: int) -> bool:
|
||||||
|
"""Stáhne soubor pro jeden měsíc. Vrátí True pokud staženo."""
|
||||||
|
today = date.today().strftime("%Y-%m-%d")
|
||||||
|
|
||||||
|
if uz_stazeno(mesic, rok):
|
||||||
|
print(f" [{mesic:02d}/{rok}] přeskočeno — soubor už existuje")
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Vyplň formulář
|
||||||
|
inputs = page.query_selector_all("input[type=text]")
|
||||||
|
if len(inputs) < 2:
|
||||||
|
print(f" [{mesic:02d}/{rok}] CHYBA — inputy nenalezeny")
|
||||||
|
return False
|
||||||
|
|
||||||
|
inputs[0].fill(str(mesic))
|
||||||
|
inputs[1].fill(str(rok))
|
||||||
|
|
||||||
|
page.get_by_text("Hledat", exact=True).click()
|
||||||
|
page.wait_for_load_state("networkidle")
|
||||||
|
|
||||||
|
dl_selector = "a:has-text('Seznam registrovaných pojištěnců')"
|
||||||
|
if not page.query_selector(dl_selector):
|
||||||
|
print(f" [{mesic:02d}/{rok}] CHYBA — download odkaz nenalezen")
|
||||||
|
return False
|
||||||
|
|
||||||
|
with page.expect_download() as dl_info:
|
||||||
|
page.click(dl_selector)
|
||||||
|
download = dl_info.value
|
||||||
|
|
||||||
|
original_name = download.suggested_filename
|
||||||
|
dest_path = os.path.join(DEST_DIR, f"{today} {original_name}")
|
||||||
|
download.save_as(dest_path)
|
||||||
|
print(f" [{mesic:02d}/{rok}] OK — {os.path.basename(dest_path)}")
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def hlavni() -> None:
|
||||||
|
if not os.path.exists(COOKIES_FILE):
|
||||||
|
raise SystemExit(f"Soubor s cookies nenalezen: {COOKIES_FILE}\nNejdřív spusť 01_prihlaseni.py")
|
||||||
|
|
||||||
|
with open(COOKIES_FILE, encoding="utf-8") as f:
|
||||||
|
cookies = json.load(f)
|
||||||
|
|
||||||
|
os.makedirs(DEST_DIR, exist_ok=True)
|
||||||
|
|
||||||
|
mesice = list(mesice_v_rozsahu(OD_MESIC, OD_ROK, DO_MESIC, DO_ROK))
|
||||||
|
print(f"Celkem měsíců: {len(mesice)} ({OD_MESIC:02d}/{OD_ROK} – {DO_MESIC:02d}/{DO_ROK})")
|
||||||
|
|
||||||
|
with sync_playwright() as p:
|
||||||
|
browser = p.chromium.launch(headless=False)
|
||||||
|
context = browser.new_context()
|
||||||
|
context.add_cookies(cookies)
|
||||||
|
page = context.new_page()
|
||||||
|
|
||||||
|
print("Otevírám stránku klientely...")
|
||||||
|
page.goto(f"{BASE_URL}/app/prohlizeni-klientely/")
|
||||||
|
page.wait_for_load_state("networkidle")
|
||||||
|
|
||||||
|
if "frmPrihlasCert" in page.content():
|
||||||
|
raise SystemExit("Cookies expirovala — nejdřív spusť 01_prihlaseni.py")
|
||||||
|
|
||||||
|
stazeno = 0
|
||||||
|
for mesic, rok in mesice:
|
||||||
|
if stahni_mesic(page, mesic, rok):
|
||||||
|
stazeno += 1
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
browser.close()
|
||||||
|
|
||||||
|
print(f"\nHotovo: {stazeno} staženo, {len(mesice) - stazeno} přeskočeno.")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
hlavni()
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
@@ -0,0 +1,756 @@
|
|||||||
|
<!DOCTYPE html><html lang="cs"><head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="pragma" content="no-cache">
|
||||||
|
<meta http-equiv="cache-control" content="no-cache">
|
||||||
|
<title>
|
||||||
|
Prohlížení klientely - E-přepážka ČPZP
|
||||||
|
</title>
|
||||||
|
|
||||||
|
<!-- Libraries -->
|
||||||
|
<script>
|
||||||
|
CPZP = {
|
||||||
|
settings : {
|
||||||
|
certificateLoginKey : 'Prohlášení:'+ String.fromCharCode(13, 10) + 'Tímto se přihlašuji k Portálu ČPZP'+ String.fromCharCode(13, 10) + ''+ String.fromCharCode(13, 10) + 'Okamžik vygenerování tohoto prohlášení: 03.05.2026 10:37:40',
|
||||||
|
maxHeightSelectDropDown : null
|
||||||
|
},
|
||||||
|
runtimeConfig: {
|
||||||
|
logged : '1',
|
||||||
|
loggedUser: 'Michaela Buzalková',
|
||||||
|
useCertificate : true },
|
||||||
|
signerIsLoaded : false
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="/app/js/util.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/SimpleEventBroker.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/json3.min.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/lib/jquery/jquery-3.7.1.min.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/lib/jquery/jquery-migrate-3.4.1.min.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/lib/jquery/jquery-ui-1.13.2.min.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/jquery.ui.datepicker-cs.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/jquery.nicefileinput.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/jquery.loadmask.min.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/jquery.timer.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/jquery.cookie.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/lib_java_sign.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/lib_signer_utf8.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/browser.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/menu.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/help.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/form.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/generate-js/analytics.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/toastr.min.js?v=1v2.162.0"></script>
|
||||||
|
<script type="text/javascript" src="/app/js/prohlizeniklientely/list.js?v=1v2.162.0"></script>
|
||||||
|
<link rel="stylesheet" href="/app/css/style.css?v=v2.162.0" type="text/css">
|
||||||
|
<link rel="stylesheet" href="/app/css/style-print.css?v=v2.162.0" type="text/css" media="print">
|
||||||
|
<link rel="stylesheet" href="/app/extcss/jquery-ui-1.13.2.min.css?v=v2.162.0" type="text/css">
|
||||||
|
<link rel="stylesheet" href="/app/css/all.css?v=v2.162.0" type="text/css">
|
||||||
|
<link rel="stylesheet" href="/app/css/solid.css?v=v2.162.0" type="text/css">
|
||||||
|
<link rel="stylesheet" href="/app/extcss/toastr.min.css?v=v2.162.0" type="text/css">
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico?v=v2.162.0">
|
||||||
|
<script>
|
||||||
|
/* (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||||
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||||
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||||
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||||
|
ga('create', 'UA-46493716-1', 'cpzp.cz');
|
||||||
|
ga('send', 'pageview'); */
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="main">
|
||||||
|
<div class="header">
|
||||||
|
<div class="logo-info">
|
||||||
|
<div class="logo">
|
||||||
|
<a href="/" class="logo" alt="Česká průmyslová zdravotní pojištovna" title="Úvodní stránka"></a>
|
||||||
|
<div class="code">
|
||||||
|
<div class="text">kód pojišťovny: </div>
|
||||||
|
<div class="number">205</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="info-panel">
|
||||||
|
<div><span>Uživatel:</span>Michaela Buzalková</div>
|
||||||
|
<div class="message-state"><span>Nepřečtených zpráv:</span><a href="/app/schranka/">0</a></div>
|
||||||
|
<div class="current-date" style="display: none"><span>Datum:</span>3.5.2026 10:40:30</div>
|
||||||
|
<div class="logout">
|
||||||
|
<a href="/app/logout/?new=1" onclick="sessionStorage.clear();">Odhlásit</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="search-box">
|
||||||
|
<div class="head-line">Elektronická přepážka ČPZP</div>
|
||||||
|
<div class="message">Právě se nacházíte v Portálu ČPZP. Kliknutím zvolíte Portál:</div>
|
||||||
|
<div class="zone-href">
|
||||||
|
<a href="/app/redirect/?destination=ozp">OZP</a> | <a href="/app/redirect/?destination=rbp">RBP</a> | <a href="/app/redirect/?destination=vozp">VoZP ČR</a> | <a href="/app/redirect/?destination=zpskoda">ZPŠ</a> | <a href="/app/redirect/?destination=spol">Společná zóna</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearboth"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearboth"></div>
|
||||||
|
<div class="menu" role="navigation" aria-label="hlavní menu">
|
||||||
|
<ul class="navigation">
|
||||||
|
<li class="menu-main-?vod" id="menu1">
|
||||||
|
<a href="/app/" class="level1">úvod</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-poji?t?nci" id="menu2">
|
||||||
|
<a href="/app/pojistenci-rozcestnik/" class="level1"><span>pojištěnci</span></a>
|
||||||
|
<ul>
|
||||||
|
<li class="menu-main-osobn?nastaven?">
|
||||||
|
<a href="/app/osobni-nastaveni-rozcestnik/" class="level2">Osobní nastavení<img src="/app/img/dot-white.png" style="float:right;margin:3px 0 0 0"></a>
|
||||||
|
<ul class="submenu2">
|
||||||
|
<li class="menu-main-zm?naadresyakontaktn?ch?daj?">
|
||||||
|
<a href="/app/zmena-adresy-a-kontaktnich-udaju/pojistenec/">Změna adresy a kontaktních údajů</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-bankovn???ty">
|
||||||
|
<a href="/app/bankovni-ucty/">Bankovní účty</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-mojeopr?vn?n?">
|
||||||
|
<a href="/app/prehled-opravneni/pojistenec/">Moje oprávnění</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-preventivn?programy">
|
||||||
|
<a href="/app/preventivni-programy-rozcestnik/" class="level2">Preventivní programy<img src="/app/img/dot-white.png" style="float:right;margin:3px 0 0 0"></a>
|
||||||
|
<ul class="submenu2">
|
||||||
|
<li class="sub-disabled menu-main-registracedobonus+">
|
||||||
|
<a href="/app/bonus-plus-registrace/">Registrace do Bonus +</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-v?piskontabonus+">
|
||||||
|
<a href="/app/bonus-plus-vypis/">Výpis konta Bonus +</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-propl?cen?preventivn?chprogram?">
|
||||||
|
<a href="/app/proplaceni-preventivnich-programu/">Proplácení preventivních programů</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-informaceopreventivn?chprogramech">
|
||||||
|
<a href="https://www.cpzp.cz/programy/" target="_self">Informace o preventivních programech</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-preventivn?prohl?dky">
|
||||||
|
<a href="/app/preventivni-prohlidky-rozcestnik/" class="level2">Preventivní prohlídky<img src="/app/img/dot-white.png" style="float:right;margin:3px 0 0 0"></a>
|
||||||
|
<ul class="submenu2">
|
||||||
|
<li class="sub-disabled menu-main-p?ehledpreventivn?chprohl?dek">
|
||||||
|
<a href="/app/preventivni-prohlidky/">Přehled preventivních prohlídek</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-zas?l?n?preventivn?chsms">
|
||||||
|
<a href="/app/prevence-v-mobilu/">Zasílání preventivních SMS</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-??dostopr?kazpoji?t?nce">
|
||||||
|
<a href="/app/prukaz-pojistence/" class="level2">Žádost o průkaz pojištěnce</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-osobn???etzdravotn?p??e">
|
||||||
|
<a href="/app/osobni-ucet-pojistence/" class="level2">Osobní účet zdravotní péče</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-z?znamodlouhodob?mpobytuvcizin?">
|
||||||
|
<a href="/app/zaznam-o-dlouhodobem-pobytu-v-cizine/" class="level2">Záznam o dlouhodobém pobytu v cizině</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-pojistn?">
|
||||||
|
<a href="/app/pojistne-rozcestnik/" class="level2">Pojistné<img src="/app/img/dot-white.png" style="float:right;margin:3px 0 0 0"></a>
|
||||||
|
<ul class="submenu2">
|
||||||
|
<li class="sub-disabled menu-main-stavpojistn?ho">
|
||||||
|
<a href="/app/stav-pojistneho/">Stav pojistného<img src="/app/img/dot-white.png" style="float:right;margin:3px 0 0 0"></a>
|
||||||
|
<ul>
|
||||||
|
<li class="menu-main-??dostovr?cen?p?eplatk?">
|
||||||
|
<a href="/app/stav-pojistneho/preplatek">Žádost o vrácení přeplatků</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-??dostop?e??tov?n?platby">
|
||||||
|
<a href="/app/stav-pojistneho/platba">Žádost o přeúčtování platby</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-??dostopotvrzen?obezdlu?nosti">
|
||||||
|
<a href="/app/stav-pojistneho/bezdluznost">Žádost o potvrzení o bezdlužnosti</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-??dostov?pispohled?vekaz?vazk?">
|
||||||
|
<a href="/app/stav-pojistneho/vypis">Žádost o výpis pohledávek a závazků</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-pl?tcipojistn?ho">
|
||||||
|
<a href="/app/zadost-o-prehled-platcu-pojistneho/">Plátci pojistného</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-osv?-pod?n?p?ehleduzarok">
|
||||||
|
<a href="/app/prehled-osvc/2025/">OSVČ - podání přehledu za rok</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-osv?-p?ehledp?ijat?chplateb">
|
||||||
|
<a href="/app/prehled-plateb-osvc/">OSVČ - přehled přijatých plateb</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-osv?-??dostosn??en?z?loh">
|
||||||
|
<a href="/app/snizeni-zaloh-osvc/">OSVČ - žádost o snížení záloh</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="disabled menu-main-zam?stnavatel?" id="menu3">
|
||||||
|
<a href="/app/zamestnavatele-rozcestnik/" class="level1">zaměstnavatelé</a>
|
||||||
|
<ul>
|
||||||
|
<li class="sub-disabled menu-main-hromadn?ozn?men?zam?stnavatele">
|
||||||
|
<a href="/app/hromadne-oznameni-zamestnavatele/" class="level2">Hromadné oznámení zaměstnavatele</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-p?ehledoplatb?pojistn?ho">
|
||||||
|
<a href="/app/prehled-o-platbe-pojistneho/" class="level2">Přehled o platbě pojistného</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-??dostoseznamzam?stnanc?">
|
||||||
|
<a href="/app/zadost-o-seznam-zamestnancu/" class="level2">Žádost o seznam zaměstnanců</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-zm?naadresyakontaktn?ch?daj?">
|
||||||
|
<a href="/app/zmena-adresy-a-kontaktnich-udaju/zamestnavatel/" class="level2">Změna adresy a kontaktních údajů</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-stavpojistn?ho">
|
||||||
|
<a href="/app/zamestnavatele-stav-pojistneho/" class="level2">Stav pojistného</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-mojeopr?vn?n?">
|
||||||
|
<a href="/app/prehled-opravneni/zamestnavatel/" class="level2">Moje oprávnění</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="active menu-main-poskytovatel?zdrslu?eb" id="menu4">
|
||||||
|
<a href="/app/pzs-rozcestnik/" class="level1"><span>poskytovatelé zdr. služeb</span></a>
|
||||||
|
<ul>
|
||||||
|
<li class="sub-disabled menu-main-?pzppro">
|
||||||
|
<a href="/app/cpzp-pro/" class="level2">ČPZP PRO</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-schr?nkapzs">
|
||||||
|
<a href="/app/schranka-pzs/" class="level2">Schránka PZS</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-profilpzs">
|
||||||
|
<a href="/app/profil-pzs/" class="level2">Profil PZS</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-odesl?n?vy??tov?n?">
|
||||||
|
<a href="/app/odeslani-vyuctovani/" class="level2">Odeslání vyúčtování</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-odeslanivy??tov?n?antigenn?chtest?">
|
||||||
|
<a href="/app/odeslani-vyuctovani/antigenni-testy/" class="level2">Odeslani vyúčtování antigenních testů</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-odesl?n?registra?n?chl?stk?">
|
||||||
|
<a href="/app/registracni-listky/" class="level2">Odeslání registračních lístků</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-odesl?n?hromadn?sn??en?cen">
|
||||||
|
<a href="/app/hromadne-snizeni-cen/" class="level2">Odeslání hromadné snížení cen</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-odesl?n?l?ze?sk?chn?vrh?">
|
||||||
|
<a href="/app/lazenske-navrhy/" class="level2">Odeslání lázeňských návrhů</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-ov??en?poji?t?nce">
|
||||||
|
<a href="https://www.cpzp.cz/ehic/" target="_blank" class="level2">Ověření pojištěnce</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-ov??en?registruj?c?hopzs">
|
||||||
|
<a href="/app/overeni-registrujiciho-pzs/" class="level2">Ověření registrujícího PZS</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-prohl??en?/stornofaktur">
|
||||||
|
<a href="/app/prohlizeni-faktur/" class="level2">Prohlížení / Storno faktur</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-prohl??en?plateb">
|
||||||
|
<a href="/app/prohlizeni-plateb/" class="level2">Prohlížení plateb</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-prohl??en?vy??tov?n?zaobdob?">
|
||||||
|
<a href="/app/prohlizeni-vyuctovani/" class="level2">Prohlížení vyúčtování za období</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-prohl??en?zulp">
|
||||||
|
<a href="/app/prohlizeni-zulp/" class="level2">Prohlížení ZULP</a>
|
||||||
|
</li>
|
||||||
|
<li class="active menu-main-prohl??en?klientely">
|
||||||
|
<a href="/app/prohlizeni-klientely/" class="level2">Prohlížení klientely</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-pzs-osobn???etpoji?t?nce">
|
||||||
|
<a href="/app/pzs-osobni-ucet-pojistence/" class="level2">PZS - osobní účet pojištěnce</a>
|
||||||
|
</li>
|
||||||
|
<li class="sub-disabled menu-main-statistiky-n?kladyzdrslu?eb">
|
||||||
|
<a href="/app/dikap/statistika/" class="level2">Statistiky - náklady zdr. služeb</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-parametrydohodyocen?">
|
||||||
|
<a href="/app/dikap/dohody/" class="level2">Parametry dohody o ceně</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-mojeopr?vn?n?">
|
||||||
|
<a href="/app/prehled-opravneni/pzs/" class="level2">Moje oprávnění</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-servis" id="menu5">
|
||||||
|
<a href="/app/servis-rozcestnik/" class="level1"><span>servis</span></a>
|
||||||
|
<ul>
|
||||||
|
<li class="menu-main-schr?nkaklienta">
|
||||||
|
<a href="/app/schranka/" class="level2">Schránka klienta</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-elektronick?podatelna">
|
||||||
|
<a href="/app/elektronicka-podatelna/" class="level2">Elektronická podatelna</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-p?ehledopr?vn?n?">
|
||||||
|
<a href="/app/prehled-opravneni/vse/" class="level2">Přehled oprávnění</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-p?ehledsouhlas?">
|
||||||
|
<a href="/app/prehled-souhlasu/" class="level2">Přehled souhlasů</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-aktiva?n?k?d(opr?vn?n?)">
|
||||||
|
<a href="/app/aktivacni-kod/" class="level2">Aktivační kód (oprávnění)</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-historiepod?n?">
|
||||||
|
<a href="/app/historie-podani/" class="level2">Historie podání</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-prohl??en?certifik?t?">
|
||||||
|
<a href="/app/prohlizeni-certifikatu/" class="level2">Prohlížení certifikátů</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-p?id?n?certifik?tu">
|
||||||
|
<a href="/app/pridani-certifikatu/" class="level2">Přidání certifikátu</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-zm?nakontaktn?ch?daj?">
|
||||||
|
<a href="/app/zmena-osobnich-udaju/" class="level2">Změna kontaktních údajů</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-zm?nasmsp?ihla?ov?n?">
|
||||||
|
<a href="/app/zmena-sms-konta/" class="level2">Změna SMS přihlašování</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-potvrzen?emailov?adresy">
|
||||||
|
<a href="/app/potvrzeni-emailu/" class="level2">Potvrzení emailové adresy</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-informace" id="menu6">
|
||||||
|
<a href="/app/informace-rozcestnik/" class="level1"><span>informace</span></a>
|
||||||
|
<ul>
|
||||||
|
<li class="menu-main-aktuality">
|
||||||
|
<a href="/app/aktuality/" class="level2">aktuality</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-registracedoe-p?ep??ky">
|
||||||
|
<a href="/app/registrace-klienta/" class="level2">registrace do e-přepážky</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-jaksep?ihl?sit">
|
||||||
|
<a href="/app/clanek/jak-se-prihlasit/" class="level2">jak se přihlásit</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-?astokladen?ot?zky(faq)">
|
||||||
|
<a href="/app/clanek/casto-kladene-otazky/" class="level2">často kladené otázky (FAQ)</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-certifika?n?autority">
|
||||||
|
<a href="/app/clanek/certifikacni-autority/" class="level2">certifikační autority</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-ochranaosobn?ch?daj?">
|
||||||
|
<a href="/app/clanek/ochrana-osobnich-udaju/" class="level2">ochrana osobních údajů</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-e-podatelna?pzp">
|
||||||
|
<a href="/app/clanek/elektronicka-podatelna-cpzp/" class="level2">e-podatelna ČPZP</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-smlouvysposkytovatelizdravotn?chslu?eb">
|
||||||
|
<a href="/app/smlouvy-s-pzs/" class="level2">Smlouvy s poskytovateli zdravotních služeb</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-n?pov?da" id="menu7">
|
||||||
|
<a href="/app/napoveda/" class="level1">nápověda</a>
|
||||||
|
</li>
|
||||||
|
<li class="menu-main-web?pzp" id="menu8">
|
||||||
|
<a href="http://www.cpzp.cz" class="level1">web ČPZP</a>
|
||||||
|
</li>
|
||||||
|
</ul> </div>
|
||||||
|
<div class="clearboth"></div>
|
||||||
|
<div class="content">
|
||||||
|
<div>
|
||||||
|
<div class="breadcrumb">
|
||||||
|
<a href="/app/">úvod</a><span class="separator"></span><a href="/app/pzs-rozcestnik/">poskytovatelé zdr. služeb</a><span class="separator"></span>Prohlížení klientely </div>
|
||||||
|
<div class="spacer" style="height: 20px;"></div>
|
||||||
|
<h1>Prohlížení klientely</h1>
|
||||||
|
|
||||||
|
<p>Aktuální klientela je zobrazována vždy až po interní uzávěrce pro Kapitační centrum, tzn. s cca měsíčním zpožděním oproti aktuálnímu datu.</p>
|
||||||
|
<form action="" method="post" name="prohlizeni-klientely" id="prohlizeni-klientely"><input type="hidden" name="csrf" value="8029b24e0b7c3607ed34303c892ff308" style=""><script>
|
||||||
|
CPZP.icpSort = '';
|
||||||
|
</script>
|
||||||
|
<fieldset>
|
||||||
|
<h3>Filtrování</h3>
|
||||||
|
<div class="field top">
|
||||||
|
<div class="label" style="width: 70px;">IČZ:</div>
|
||||||
|
<div class="input w600">
|
||||||
|
<select name="icz" id="icz"><option value="09305000">09305000 - MUDr. Michaela Buzalková</option></select> </div>
|
||||||
|
</div>
|
||||||
|
<div class="clearboth"></div>
|
||||||
|
<p></p>
|
||||||
|
<div class="field top" style="float: left; width: 46%">
|
||||||
|
<div class="label" style="width: 70px;">Měsíc:</div>
|
||||||
|
<div class="input w100">
|
||||||
|
<input name="mesic" type="text" id="mesic" value="3" style=""> </div>
|
||||||
|
<div class="clearboth"></div>
|
||||||
|
</div>
|
||||||
|
<div class="field top" style="float: left; width: 50%">
|
||||||
|
<div class="label" style="width: 70px;">Rok:</div>
|
||||||
|
<div class="input w200">
|
||||||
|
<input name="rok" type="text" id="rok" value="2026" style=""> </div>
|
||||||
|
<div class="clearboth"></div>
|
||||||
|
</div>
|
||||||
|
<div class="clearboth"></div>
|
||||||
|
<div class="field top" style="float: left; width: 46%">
|
||||||
|
<div class="label" style="width: 70px;">IČP:</div>
|
||||||
|
<div class="input w300">
|
||||||
|
<select name="icp" id="icp" class=""><option value="">---</option><option value="null"> - </option></select> </div>
|
||||||
|
</div>
|
||||||
|
<div class="field top" style="float: left; width: 50%">
|
||||||
|
<div class="label" style="width: 70px;">Řadit dle:</div>
|
||||||
|
<div class="input w200">
|
||||||
|
<select name="sortBy" id="sortBy"><option value="ICP_RC" selected="selected">IČP</option>
|
||||||
|
<option value="RC">Číslo pojištěnce</option>
|
||||||
|
<option value="PRIJMENI_JMENO">Příjmení a jméno</option></select> </div>
|
||||||
|
</div>
|
||||||
|
<div class="clearboth"></div>
|
||||||
|
<div class="top">
|
||||||
|
<div class="center">
|
||||||
|
<div class="red-btn">
|
||||||
|
<div class="wrap"><input name="submitbutton" type="submit" id="submitbutton" value="Hledat" class="" style=""></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearboth"></div>
|
||||||
|
</fieldset>
|
||||||
|
</form><p></p>
|
||||||
|
<div class="action-panel navigation">
|
||||||
|
|
||||||
|
<a href="javascript:;" id="print-to-html" class="print-to-html-no-text x-href-btn" style="width: 47px;">tisknout sestavu</a>
|
||||||
|
<form action="" method="post" target="_blank" id="export-form" name="export-form">
|
||||||
|
<input type="hidden" name="icz" id="export-icz" style="">
|
||||||
|
<input type="hidden" name="icp" id="export-icp" style="">
|
||||||
|
<input type="hidden" name="mesic" id="export-mesic" style="">
|
||||||
|
<input type="hidden" name="rok" id="export-rok" style="">
|
||||||
|
<input type="hidden" name="sortBy" id="export-sortBy" style="">
|
||||||
|
<input type="hidden" name="csrf" value="8029b24e0b7c3607ed34303c892ff308" style=""> </form>
|
||||||
|
<a href="#" class="export-to-csv-no-text x-href-btn" style="width: 205px;" id="export-to-vzp">Seznam registrovaných pojištěnců ve formátu podle datového rozhraní VZP</a>
|
||||||
|
<div class="navigation">
|
||||||
|
Celkem 15 záznamů </div>
|
||||||
|
<div class="clearboth"></div>
|
||||||
|
</div>
|
||||||
|
<p></p>
|
||||||
|
<table class="list">
|
||||||
|
<thead>
|
||||||
|
<tr class="odd">
|
||||||
|
<th class="center">IČP</th>
|
||||||
|
<th class="right">Odbornost</th>
|
||||||
|
<th class="right">Číslo pojištěnce</th>
|
||||||
|
<th class="left">Příjmení</th>
|
||||||
|
<th class="left">Jméno</th>
|
||||||
|
<th class="center">Registrace od</th>
|
||||||
|
<th class="center">Registrace do</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="even">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">0105072528</td>
|
||||||
|
<td class="left">Vinický</td>
|
||||||
|
<td class="left">Ondřej</td>
|
||||||
|
<td class="center">01.03.2026</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">0301214925</td>
|
||||||
|
<td class="left">Štefanský</td>
|
||||||
|
<td class="left">Daniel</td>
|
||||||
|
<td class="center">01.05.2025</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">0657650510</td>
|
||||||
|
<td class="left">Krehul</td>
|
||||||
|
<td class="left">Valeriia</td>
|
||||||
|
<td class="center">01.02.2026</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">435614435</td>
|
||||||
|
<td class="left">Strnadová</td>
|
||||||
|
<td class="left">Vítězslava</td>
|
||||||
|
<td class="center">01.07.2025</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">446228471</td>
|
||||||
|
<td class="left">Feoktistova</td>
|
||||||
|
<td class="left">Natalia</td>
|
||||||
|
<td class="center">01.09.2018</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">6504141149</td>
|
||||||
|
<td class="left">Bečica</td>
|
||||||
|
<td class="left">Josef</td>
|
||||||
|
<td class="center">01.05.2010</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">6510130792</td>
|
||||||
|
<td class="left">Šuhaj</td>
|
||||||
|
<td class="left">Petr</td>
|
||||||
|
<td class="center">01.06.2013</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">6758120446</td>
|
||||||
|
<td class="left">Bečicová</td>
|
||||||
|
<td class="left">Markéta</td>
|
||||||
|
<td class="center">01.05.2010</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">6861010288</td>
|
||||||
|
<td class="left">Štefanská</td>
|
||||||
|
<td class="left">Renáta</td>
|
||||||
|
<td class="center">01.03.2025</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">7909054780</td>
|
||||||
|
<td class="left">Babáček</td>
|
||||||
|
<td class="left">Marek</td>
|
||||||
|
<td class="center">01.02.2017</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">8509170802</td>
|
||||||
|
<td class="left">Neumann</td>
|
||||||
|
<td class="left">Jakub</td>
|
||||||
|
<td class="center">01.09.2015</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">8554125360</td>
|
||||||
|
<td class="left">Grygarová</td>
|
||||||
|
<td class="left">Jana</td>
|
||||||
|
<td class="center">01.04.2011</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">9355042466</td>
|
||||||
|
<td class="left">Bečicová</td>
|
||||||
|
<td class="left">Tereza</td>
|
||||||
|
<td class="center">01.03.2012</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">9355071297</td>
|
||||||
|
<td class="left">Dobrohrušková</td>
|
||||||
|
<td class="left">Lucie</td>
|
||||||
|
<td class="center">01.11.2014</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td class="center">09305001</td>
|
||||||
|
<td class="right">001</td>
|
||||||
|
<td class="right">9651301253</td>
|
||||||
|
<td class="left">Kut Citores</td>
|
||||||
|
<td class="left">Markéta</td>
|
||||||
|
<td class="center">01.11.2021</td>
|
||||||
|
<td class="center"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p></p>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
analyticsPzs($('#icz').val(), 'PZS_PROHLIZENI_KLIENTELY');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
<div class="clearboth"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<p class="copy">© ČPZP | Infocentrum: 810 800 000 | <a href="http://www.cpzp.cz/pobocky/">Pobočky ČPZP</a> | <a href="#" class="show-cookies">Cookies</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<section class="cookie-policy">
|
||||||
|
<article class="base cookie-container">
|
||||||
|
<div>
|
||||||
|
<h2>Povolení cookies</h2>
|
||||||
|
<p>V ČPZP používáme cookies a jiné technologie za účelem poskytování našich služeb, vylepšení
|
||||||
|
vašeho uživatelského zážitku, analýzy používání
|
||||||
|
našich stránek a při cílení reklamy. </p>
|
||||||
|
</div>
|
||||||
|
<div class="cookie-buttons">
|
||||||
|
<div class="red-btn disabled cookie-setup"><div class="wrap"><a style="color: rgb(19, 35, 57)" href="#">Nastavit cookies</a></div></div>
|
||||||
|
<div class="red-btn disabled cookie-deny"><div class="wrap"><a style="color: rgb(19, 35, 57)" href="#">Odmítnout vše kromě nutných</a></div></div>
|
||||||
|
<div class="red-btn cookie-accept"><div class="wrap"><a href="#">Přijmout vše</a></div></div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<article class="detail cookie-container none">
|
||||||
|
<div class="cookie-detail">
|
||||||
|
<h2 style="grid-area: h">Nastavení cookies</h2>
|
||||||
|
<p style="grid-area: p1">V ČPZP používáme cookies a jiné technologie za účelem poskytování našich služeb, vylepšení
|
||||||
|
vašeho uživatelského zážitku, analýzy používání
|
||||||
|
našich stránek a při cílení reklamy. </p>
|
||||||
|
<p style="grid-area: p2">Vyberte vámi preferované povolení cookie, přičemž <b>základní jsou nezbytné pro fungování</b>, jiné můžeme používat jen s vaším souhlasem.
|
||||||
|
<br>
|
||||||
|
Vaše osobní údaje budou zpracovány a informace z vašeho zařízení (soubory cookie,
|
||||||
|
jidinečné identifikátory a další údaje zařízená) mohou být uchovávány.
|
||||||
|
<br>
|
||||||
|
Vaše preference můžete kdykoliv <b>změnit v dolní části naší webové stránky
|
||||||
|
s názvem Cookies</b>. Pro více informací o používání cookies prosím naštivte
|
||||||
|
<a href="/app/clanek/ochrana-osobnich-udaju/" target="__blank">Zásady ochrany osobních údajů</a>
|
||||||
|
.</p>
|
||||||
|
<div style="grid-area: b1; justify-self: center;" class="red-btn disabled cookie-deny"><div class="wrap"><a style="color: rgb(19, 35, 57)" href="#">Odmítnout vše kromě nutných</a></div></div>
|
||||||
|
<div style="grid-area: b2; justify-self: center;" class="red-btn cookie-accept-selected"><div class="wrap"><a href="#">Souhlasím a uložit nastavení</a></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="cookie-options">
|
||||||
|
<label for="zakladni"><input type="checkbox" id="zakladni" value="1" checked="" disabled="" style="">Základní <span>Nezbytné pro správné fungování webu.</span></label>
|
||||||
|
<label for="analyticke"><input type="checkbox" id="analyticke" value="2" style="">Analytické <span>Umožňují měření výkonu webu a reklamních kampaní.</span></label>
|
||||||
|
<label for="preferencni"><input type="checkbox" id="preferencni" value="4" style="">Preferenční <span>Slouží k přizpůsobení potřeb a zájmů</span></label>
|
||||||
|
<label for="reklamni"><input type="checkbox" id="reklamni" value="8" style="">Reklamní <span>Slouží k zobrazení vhodného obsahu nebo reklamy, jak
|
||||||
|
na našich stránkách, tak na stránkách třetích subjektů.</span></label>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
<div id="ie-warning-dialog" style="display: none;">
|
||||||
|
<p>
|
||||||
|
Používáte zastaralý prohlížeč Microsoft Internet Explorer. Z bezpečnostních a výkonových důvodů Vám důrazně doporučujeme přechod na modernější prohlížeč - např. Google Chrome, Microsoft Edge či Mozilla Firefox. Jedním z důvodů je i skutečnost, že společnost Microsoft již avizovala, že k 15.6.2022 ukončuje podporu Microsoft Internet Exploreru.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
const dialog = $("#ie-warning-dialog");
|
||||||
|
// MSIE for IE version <=10, trident/ for IE 11
|
||||||
|
if ((navigator.userAgent.indexOf('MSIE') > -1 || navigator.appVersion.indexOf('Trident/') > -1) && !sessionStorage.visited) {
|
||||||
|
dialog.dialog({
|
||||||
|
modal: true,
|
||||||
|
title: 'Upozornění na zastaralý prohlížeč',
|
||||||
|
show: {
|
||||||
|
effect: 'fold',
|
||||||
|
duration: 400
|
||||||
|
},
|
||||||
|
hide: {
|
||||||
|
effect: 'fold',
|
||||||
|
duration: 200
|
||||||
|
},
|
||||||
|
width: '50%',
|
||||||
|
buttons: {
|
||||||
|
'Zavřít': function () {
|
||||||
|
dialog.dialog('close');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
sessionStorage.visited = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
const CONSENT_KEY = 'cookieConsent';
|
||||||
|
function getCookie(cKey) {
|
||||||
|
const key = cKey + "=";
|
||||||
|
const decoded = decodeURIComponent(document.cookie);
|
||||||
|
const allCookies = decoded .split('; ');
|
||||||
|
let res;
|
||||||
|
allCookies.forEach(function (val) {
|
||||||
|
if (val.indexOf(key) === 0) res = val.substring(key.length);
|
||||||
|
})
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
function setCookie(cKey, value, duration) {
|
||||||
|
let date = new Date();
|
||||||
|
date.setTime(date.getTime() + (30 * 24 * 60 * 60 * 1000)); // days * hours * minutes * seconds * milliseconds
|
||||||
|
const expires = "expires=" + date.toUTCString();
|
||||||
|
document.cookie = cKey + "=" + value + "; " + expires + "; path=/";
|
||||||
|
}
|
||||||
|
function hideCookieConsent() {
|
||||||
|
if (!$('.cookie-policy .base').hasClass('none')) {
|
||||||
|
$('.cookie-policy .base').addClass('none');
|
||||||
|
}
|
||||||
|
if (!$('.cookie-policy > .detail').hasClass('none')) {
|
||||||
|
$('.cookie-policy > .detail').addClass('none');
|
||||||
|
}
|
||||||
|
if (!$('.cookie-policy').hasClass('none')) {
|
||||||
|
$('.cookie-policy').addClass('none');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function setConsentCheckboxes() {
|
||||||
|
const cookieConsent = parseInt(getCookie(CONSENT_KEY));
|
||||||
|
const binConsent = cookieConsent.toString(2);
|
||||||
|
if (binConsent.charAt(binConsent.length - 2) === '1') {
|
||||||
|
$("#analyticke").prop('checked', true);
|
||||||
|
}else {
|
||||||
|
$("#analyticke").prop('checked', false);
|
||||||
|
}
|
||||||
|
if (binConsent.charAt(binConsent.length - 3) === '1') {
|
||||||
|
$("#preferencni").prop('checked', true);
|
||||||
|
}else {
|
||||||
|
$("#preferencni").prop('checked', false);
|
||||||
|
}
|
||||||
|
if (binConsent.charAt(binConsent.length - 4) === '1') {
|
||||||
|
$("#reklamni").prop('checked', true);
|
||||||
|
}else {
|
||||||
|
$("#reklamni").prop('checked', false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$(document).ready(function() {
|
||||||
|
const cookieConsent = getCookie(CONSENT_KEY);
|
||||||
|
if (!cookieConsent) {
|
||||||
|
$('.cookie-policy .base').removeClass('none');
|
||||||
|
$('.cookie-policy').removeClass('none');
|
||||||
|
}else {
|
||||||
|
const val = parseInt(cookieConsent);
|
||||||
|
const bin = val.toString(2);
|
||||||
|
|
||||||
|
if (bin.charAt(bin.length - 2) === '1') {
|
||||||
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||||
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||||
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||||
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||||
|
ga('create', 'UA-46493716-1', 'cpzp.cz');
|
||||||
|
ga('send', 'pageview');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$(document).on('click', '.show-cookies', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
$('.cookie-policy .base').removeClass('none');
|
||||||
|
$('.cookie-policy').removeClass('none');
|
||||||
|
});
|
||||||
|
$(document).on('click', '.cookie-setup', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
setConsentCheckboxes();
|
||||||
|
$('.cookie-policy .base').addClass('none');
|
||||||
|
$('.cookie-policy > .detail').removeClass('none');
|
||||||
|
});
|
||||||
|
$(document).on('click', '.cookie-accept', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
setCookie(CONSENT_KEY, '15');
|
||||||
|
hideCookieConsent();
|
||||||
|
});
|
||||||
|
$(document).on('click', '.cookie-deny', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
setCookie(CONSENT_KEY, '1');
|
||||||
|
hideCookieConsent();
|
||||||
|
});
|
||||||
|
$(document).on('click', '.cookie-accept-selected', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
let consentValue = 1;
|
||||||
|
consentValue += $('#analyticke').is(":checked") ? parseInt($('#analyticke').val()) : 0;
|
||||||
|
consentValue += $('#preferencni').is(":checked") ? parseInt($('#preferencni').val()) : 0;
|
||||||
|
consentValue += $('#reklamni').is(":checked") ? parseInt($('#reklamni').val()) : 0;
|
||||||
|
|
||||||
|
setCookie(CONSENT_KEY, consentValue.toString());
|
||||||
|
hideCookieConsent();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="x-portal-0" class="help-box" style="right: 10px;"><div class="help-box-wrap"><span>NÁPOVĚDA</span></div></div><div id="x-portal-1" class="help-tooltip" style="right: 10px;"><a hre="javascript:;"></a><div class="help-tooltip-content">Pokud si nevíte s touto funkcí rady, zkuste se podívat na naši nápovědu</div><div class="arrow bottom center"></div></div></body></html>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
@@ -1,7 +1,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "PHPSESSID",
|
"name": "PHPSESSID",
|
||||||
"value": "fdn1rc7eoss5u58vo9bmf7njr3",
|
"value": "jue2dfk7t4k34du7ngg4j706q1",
|
||||||
"domain": ".portal.cpzp.cz",
|
"domain": ".portal.cpzp.cz",
|
||||||
"path": "/",
|
"path": "/",
|
||||||
"expires": -1,
|
"expires": -1,
|
||||||
|
|||||||
@@ -39,7 +39,21 @@ def _load_env():
|
|||||||
|
|
||||||
_load_env()
|
_load_env()
|
||||||
|
|
||||||
POPPLER_PATH = r"C:/Poppler/Library/bin"
|
def _find_poppler() -> str | None:
|
||||||
|
candidates = [
|
||||||
|
r"C:/Poppler/Library/bin",
|
||||||
|
str(Path.home() / r"scoop\apps\poppler\current\Library\bin"),
|
||||||
|
str(Path.home() / r"scoop\apps\poppler\current\bin"),
|
||||||
|
]
|
||||||
|
for p in candidates:
|
||||||
|
if Path(p).exists():
|
||||||
|
return p
|
||||||
|
pdfinfo = shutil.which("pdfinfo")
|
||||||
|
if pdfinfo:
|
||||||
|
return str(Path(pdfinfo).parent)
|
||||||
|
return None
|
||||||
|
|
||||||
|
POPPLER_PATH = _find_poppler()
|
||||||
CORRECTIONS = True # True = corrections.json se načítá a ukládá; False = ignorovat
|
CORRECTIONS = True # True = corrections.json se načítá a ukládá; False = ignorovat
|
||||||
|
|
||||||
_DROPBOX = Path(get_dropbox_root())
|
_DROPBOX = Path(get_dropbox_root())
|
||||||
@@ -292,7 +306,10 @@ def extract_info(pdf_path: Path) -> dict:
|
|||||||
|
|
||||||
def open_preview(pdf_path: Path) -> tuple[subprocess.Popen, Path]:
|
def open_preview(pdf_path: Path) -> tuple[subprocess.Popen, Path]:
|
||||||
geom_file = Path(tempfile.mktemp(suffix=".json"))
|
geom_file = Path(tempfile.mktemp(suffix=".json"))
|
||||||
proc = subprocess.Popen([sys.executable, str(VIEWER), str(pdf_path), f"--write-geometry={geom_file}"])
|
proc = subprocess.Popen(
|
||||||
|
[sys.executable, str(VIEWER), str(pdf_path), f"--write-geometry={geom_file}"],
|
||||||
|
stderr=subprocess.PIPE,
|
||||||
|
)
|
||||||
return proc, geom_file
|
return proc, geom_file
|
||||||
|
|
||||||
|
|
||||||
@@ -318,6 +335,8 @@ def run_rename_dialog(nazev: str, info_lines: list, below_y: int = None) -> str
|
|||||||
env = {**os.environ, "PYTHONIOENCODING": "utf-8"}
|
env = {**os.environ, "PYTHONIOENCODING": "utf-8"}
|
||||||
proc = subprocess.run(args, capture_output=True, text=True, encoding="utf-8", env=env)
|
proc = subprocess.run(args, capture_output=True, text=True, encoding="utf-8", env=env)
|
||||||
tmp.unlink(missing_ok=True)
|
tmp.unlink(missing_ok=True)
|
||||||
|
if proc.stderr.strip():
|
||||||
|
print(f" [rename_dialog] CHYBA:\n{proc.stderr.strip()}")
|
||||||
out = proc.stdout.strip()
|
out = proc.stdout.strip()
|
||||||
return json.loads(out).get("value") if out else None
|
return json.loads(out).get("value") if out else None
|
||||||
|
|
||||||
@@ -390,6 +409,9 @@ def process_file(pdf_path: Path):
|
|||||||
final_name = run_rename_dialog(nazev, info_lines, below_y=below_y)
|
final_name = run_rename_dialog(nazev, info_lines, below_y=below_y)
|
||||||
|
|
||||||
preview.terminate()
|
preview.terminate()
|
||||||
|
stderr_out = preview.stderr.read().decode("utf-8", errors="replace").strip() if preview.stderr else ""
|
||||||
|
if stderr_out:
|
||||||
|
print(f" [preview] CHYBA: {stderr_out}")
|
||||||
|
|
||||||
if not final_name:
|
if not final_name:
|
||||||
print(" Přeskočeno.")
|
print(" Přeskočeno.")
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ def main():
|
|||||||
try:
|
try:
|
||||||
from PIL import Image, ImageTk
|
from PIL import Image, ImageTk
|
||||||
import fitz
|
import fitz
|
||||||
except ImportError:
|
except ImportError as e:
|
||||||
|
print(f"[preview_viewer] Chybí knihovna: {e}", file=sys.stderr)
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
||||||
suffix = pdf_path.suffix.lower()
|
suffix = pdf_path.suffix.lower()
|
||||||
@@ -104,6 +105,9 @@ def main():
|
|||||||
geom_path.write_text(_json.dumps({"x": x, "y": 0, "w": w, "h": h}), encoding="utf-8")
|
geom_path.write_text(_json.dumps({"x": x, "y": 0, "w": w, "h": h}), encoding="utf-8")
|
||||||
break
|
break
|
||||||
|
|
||||||
|
root.lift()
|
||||||
|
root.focus_force()
|
||||||
|
root.after(100, lambda: root.focus_force())
|
||||||
root.mainloop()
|
root.mainloop()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -81,19 +81,32 @@ def main():
|
|||||||
root.update_idletasks()
|
root.update_idletasks()
|
||||||
sw = root.winfo_screenwidth()
|
sw = root.winfo_screenwidth()
|
||||||
w = root.winfo_width()
|
w = root.winfo_width()
|
||||||
|
h = root.winfo_height()
|
||||||
x = (sw - w) // 2
|
x = (sw - w) // 2
|
||||||
|
|
||||||
|
# Skutečná použitelná výška (bez taskbaru)
|
||||||
|
import ctypes, ctypes.wintypes
|
||||||
|
rect = ctypes.wintypes.RECT()
|
||||||
|
ctypes.windll.user32.SystemParametersInfoW(48, 0, ctypes.byref(rect), 0)
|
||||||
|
work_bottom = rect.bottom # spodní hrana work area
|
||||||
|
|
||||||
# Pozice pod preview oknem pokud byl předán argument --below-y=N
|
# Pozice pod preview oknem pokud byl předán argument --below-y=N
|
||||||
below_y = None
|
below_y = None
|
||||||
for arg in sys.argv:
|
for arg in sys.argv:
|
||||||
if arg.startswith("--below-y="):
|
if arg.startswith("--below-y="):
|
||||||
below_y = int(arg.split("=", 1)[1])
|
below_y = int(arg.split("=", 1)[1])
|
||||||
break
|
break
|
||||||
y = below_y if below_y is not None else (root.winfo_screenheight() - root.winfo_height() - 60)
|
|
||||||
|
if below_y is not None and below_y + h + 10 <= work_bottom:
|
||||||
|
y = below_y # vejde se pod preview
|
||||||
|
else:
|
||||||
|
y = max(0, work_bottom - h - 10) # přilepit těsně nad taskbar
|
||||||
root.geometry(f"+{x}+{y}")
|
root.geometry(f"+{x}+{y}")
|
||||||
|
|
||||||
root.lift()
|
root.lift()
|
||||||
root.focus_force()
|
root.focus_force()
|
||||||
|
root.after(100, lambda: root.focus_force())
|
||||||
|
root.after(200, lambda: root.attributes("-topmost", True))
|
||||||
root.mainloop()
|
root.mainloop()
|
||||||
|
|
||||||
print(json.dumps({"value": result["value"]}, ensure_ascii=False))
|
print(json.dumps({"value": result["value"]}, ensure_ascii=False))
|
||||||
|
|||||||
@@ -133,6 +133,10 @@ def main():
|
|||||||
root.bind("<Escape>", lambda e: preskocit())
|
root.bind("<Escape>", lambda e: preskocit())
|
||||||
|
|
||||||
show(0)
|
show(0)
|
||||||
|
root.lift()
|
||||||
|
root.focus_force()
|
||||||
|
root.after(100, lambda: root.focus_force())
|
||||||
|
root.after(200, lambda: root.attributes("-topmost", True))
|
||||||
root.mainloop()
|
root.mainloop()
|
||||||
|
|
||||||
for d in docs:
|
for d in docs:
|
||||||
|
|||||||
Reference in New Issue
Block a user