72 lines
3.9 KiB
Python
72 lines
3.9 KiB
Python
"""_process_batch_v0.py — DOČASNÉ: dávka 2 faktur (T-Mobile osobní, Perlička ordinace)."""
|
|
import sys
|
|
from datetime import date
|
|
from pathlib import Path
|
|
sys.stdout.reconfigure(encoding="utf-8")
|
|
sys.path.insert(0, r"U:\ordinaceprojekt")
|
|
import dropbox, msal, requests
|
|
from Knihovny.telegram_notify import zeptej_se_telegram, posli_telegram
|
|
|
|
today = date.today(); ddmmyy = today.strftime("%d%m%y"); fdate = today.strftime("%Y-%m-%d")
|
|
|
|
payments = [
|
|
dict(name="T-Mobile", payer="2100046291", acct="19-2235210247", hal=60920,
|
|
vs="9953395180", bank="0100", ks="0000", ss="", av="faktura T-Mobile 20MAY-19JUN2026",
|
|
summary="T-Mobile 06-2026", mailbox="vladimir.buzalka@buzalka.cz",
|
|
msg_id="AAMkADY2MzQ0N2JkLWE4NjAtNDNjYS05OTVlLTQxYjhkYWVlZmY1NQBGAAAAAACkV0glv2dZRLb1sPnwFvdvBwAzGo7b-cvrRoXjMGfWnzDsAAAAAAEMAAAzGo7b-cvrRoXjMGfWnzDsAALtAR6DAAA="),
|
|
dict(name="Perlicka", payer="2800046620", acct="2603293964", hal=322000,
|
|
vs="2026474", bank="2010", ks="0000", ss="", av="Perlicka fa 2026474",
|
|
summary="Perlička fa 2026474", mailbox="ordinace@buzalka.cz",
|
|
msg_id="AQMkADYxOTE5ZTYwLTg2MWItNDNmOC04MWE5LTczZjM0NmJmMTRlYwBGAAADlMSYEfdwGUe6ACarqZh2ygcAszvBQpZaWUKlscfbC8_jxwAAAgEMAAAAszvBQpZaWUKlscfbC8_jxwABaPXXzgAAAA=="),
|
|
]
|
|
|
|
def build(p):
|
|
ssfield = p["ss"] if p["ss"] else " "
|
|
item = f"{p['acct']} {str(p['hal']).zfill(12)} {p['vs']} {p['bank']}{p['ks']} {ssfield} AV:{p['av']}"
|
|
lines = ["UHL1"+ddmmyy+" "*20+"0"*28, "1 1501 000000 2010",
|
|
f"2 000000-{p['payer']} {str(p['hal']).zfill(14)} {ddmmyy}", item, "3 +", "5 +"]
|
|
return ("\r\n".join(lines)+"\r\n").encode("ascii")
|
|
|
|
for p in payments:
|
|
p["data"] = build(p)
|
|
p["fname"] = f"{fdate} KPC k platbě [{p['summary']}].kpc"
|
|
print(f"=== {p['fname']} ({len(p['data'])} B) ===")
|
|
print(p["data"].decode("ascii").replace("\r\n","\\r\\n\n"), end="")
|
|
print()
|
|
|
|
msg = (
|
|
"💳 Návrh plateb (KPC agent) — 2 faktury\n\n"
|
|
"1) T-Mobile 609,20 Kč → 19-2235210247/0100, VS 9953395180 (z osobního)\n"
|
|
"2) Perlička 3 220,00 Kč → 2603293964/2010, VS 2026474 (z ordinace)\n\n"
|
|
"FIO: obojí nezaplaceno ✅ (Perlička = nový dodavatel)\n\n"
|
|
"Vytvořit oba KPC a nahrát do Dropboxu? Odpověz: ano / ne"
|
|
)
|
|
print(">> Potvrzeno v chatu (ano) — pokračuji bez Telegram dotazu.")
|
|
|
|
# Dropbox + Graph
|
|
env = {}
|
|
for line in Path(r"U:\PythonProject\Janssen\EmailsImport\.env").read_text(encoding="utf-8").splitlines():
|
|
line=line.strip()
|
|
if "=" in line and not line.startswith("#"):
|
|
k,v=line.split("=",1); env[k.strip()]=v.strip()
|
|
dbx = dropbox.Dropbox(app_key=env["DROPBOX_APP_KEY"], app_secret=env["DROPBOX_APP_SECRET"],
|
|
oauth2_refresh_token=env["DROPBOX_APP_REFRESH_TOKEN"])
|
|
TENANT="7d269944-37a4-43a1-8140-c7517dc426e9"; CID="4b222bfd-78c9-4239-a53f-43006b3ed07f"
|
|
SECRET="Txg8Q~MjhocuopxsJyJBhPmDfMxZ2r5WpTFj1dfk"
|
|
app=msal.ConfidentialClientApplication(CID,authority=f"https://login.microsoftonline.com/{TENANT}",client_credential=SECRET)
|
|
tok=app.acquire_token_for_client(scopes=["https://graph.microsoft.com/.default"])
|
|
H={"Authorization":f"Bearer {tok['access_token']}","Content-Type":"application/json"}
|
|
out_dir = Path(__file__).parent/"output"; out_dir.mkdir(exist_ok=True)
|
|
|
|
for p in payments:
|
|
(out_dir/p["fname"]).write_bytes(p["data"])
|
|
res = dbx.files_upload(p["data"], f"/!!!Days/Downloads Z230/{p['fname']}",
|
|
mode=dropbox.files.WriteMode.add, autorename=True)
|
|
print(f"NAHRÁNO → {res.path_display}")
|
|
rp = requests.patch(f"https://graph.microsoft.com/v1.0/users/{p['mailbox']}/messages/{p['msg_id']}",
|
|
headers=H, json={"categories":["KPCzpracovánoClaudem"]}, timeout=30)
|
|
print(f"PATCH {p['name']} ({p['mailbox']}): {rp.status_code}", "" if rp.ok else rp.text[:200])
|
|
|
|
posli_telegram("✅ KPC vytvořeno a nahráno (2):\n• T-Mobile 609,20 Kč (osobní)\n• Perlička 3 220 Kč (ordinace)\nV bankingu stačí podepsat.")
|
|
print(">> HOTOVO.")
|