From 8f61cf04daf84befbd2adee6b3bd4a8b1ec4dd33 Mon Sep 17 00:00:00 2001 From: Vladimir Buzalka Date: Mon, 30 Mar 2026 20:12:15 +0200 Subject: [PATCH] =?UTF-8?q?Klikac=C3=AD=20hyperlinky=20na=20soubory=20v=20?= =?UTF-8?q?ED=5FPODANI=5FDATA=20bez=20modr=C3=A9ho=20podtr=C5=BEen=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Při generování reportu se vytvoří složka SOUBORY_PRO_FAKTURY_REPORT - KDAVKA → .txt, REQUEST → .xml, SERVERRESPONSE → .xml, PROTOCOL → .html - Buňky s obsahem jsou klikací (otevřou soubor v Notepadu/prohlížeči) - Font normální (černý, bez podtržení) – hyperlink funguje bez vizuální změny - Při každém spuštění se složka smaže a vygeneruje znovu čerstvá Co-Authored-By: Claude Sonnet 4.6 --- MedicusWithClaudeFaktury/faktury_report.py | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/MedicusWithClaudeFaktury/faktury_report.py b/MedicusWithClaudeFaktury/faktury_report.py index 0c22a18..982f98a 100644 --- a/MedicusWithClaudeFaktury/faktury_report.py +++ b/MedicusWithClaudeFaktury/faktury_report.py @@ -19,6 +19,13 @@ now = datetime.now() filename = now.strftime('%Y-%m-%d_%H-%M-%S') + '_faktury.xlsx' output_path = os.path.join(output_dir, filename) +# --- Složka pro soubory (KDAVKA, REQUEST atd.) --- +files_dir = os.path.join(output_dir, 'SOUBORY_PRO_FAKTURY_REPORT') +import shutil +if os.path.exists(files_dir): + shutil.rmtree(files_dir) +os.makedirs(files_dir) + # --- Smazání předchozích verzí --- for f in os.listdir(output_dir): if f.endswith('_faktury.xlsx'): @@ -33,6 +40,7 @@ wb = openpyxl.Workbook() HEADER_FILL = PatternFill('solid', fgColor='2F5496') HEADER_FONT = Font(bold=True, color='FFFFFF') LINK_FONT = Font(color='0563C1', underline='single') +PLAIN_FONT = Font(color='000000') # normální font bez modrého podtržení ZEBRA_FILL = PatternFill('solid', fgColor='DCE6F1') def style_header(ws): @@ -432,6 +440,37 @@ for i, row in enumerate(ed_data_rows, start=2): serverresp_txt = decode_latin_blob(serverresp, 'iso-8859-2') protocol_txt = decode_latin_blob(protocol, 'iso-8859-2') + # Ulož soubory pro klikací hyperlinky + rel_prefix = 'SOUBORY_PRO_FAKTURY_REPORT' + kdavka_link = '' + request_link = '' + serverresp_link = '' + protocol_link = '' + + if kdavka_txt: + fname = f'KDAVKA_{eid}.txt' + with open(os.path.join(files_dir, fname), 'w', encoding='utf-8') as f: + f.write(kdavka_txt) + kdavka_link = f'{rel_prefix}/{fname}' + + if request_txt: + fname = f'REQUEST_{eid}.xml' + with open(os.path.join(files_dir, fname), 'w', encoding='utf-8') as f: + f.write(request_txt) + request_link = f'{rel_prefix}/{fname}' + + if serverresp_txt: + fname = f'SERVERRESPONSE_{eid}.xml' + with open(os.path.join(files_dir, fname), 'w', encoding='utf-8') as f: + f.write(serverresp_txt) + serverresp_link = f'{rel_prefix}/{fname}' + + if protocol_txt: + fname = f'PROTOCOL_{eid}.html' + with open(os.path.join(files_dir, fname), 'w', encoding='utf-8') as f: + f.write(protocol_txt) + protocol_link = f'{rel_prefix}/{fname}' + out = [ eid, f"{hiccode} {HICCODE_MAP.get(str(hiccode), '')}" if hiccode else '', @@ -451,6 +490,14 @@ for i, row in enumerate(ed_data_rows, start=2): cell.alignment = WRAP ws6.row_dimensions[i].height = 80 + # Hyperlinky na soubory – F=KDAVKA, G=REQUEST, H=SERVERRESPONSE, I=PROTOCOL + for col_idx, link in [(6, kdavka_link), (7, request_link), + (8, serverresp_link), (9, protocol_link)]: + if link: + cell = ws6.cell(row=i, column=col_idx) + cell.hyperlink = link + cell.font = PLAIN_FONT # bez modrého podtržení + style_header(ws6) ws6.freeze_panes = 'A2'