Eigene Kennungen ausblenden, Win95-Menüs, verschiebbares Hauptfenster bei offenem Dialog u. a.
Windows-Build / windows-exe (push) Canceled after 53m28s
Windows-Build / windows-exe (push) Canceled after 53m28s
Neu: - Eigene Kennungen (eigene Filiale) ausblenden: nicht angezeigt, nicht mitgerechnet, nicht exportiert; per Rechtsklick, Händler-Menü oder Import-Bericht; Händler-Zuordnung hat Vorrang - Menüs im Win95-Stil: wechseln beim Überfahren der Menüleiste, Tastatur, Kontextmenü gleich - Dialoge sperren nur den Inhalt: Hauptfenster bleibt verschiebbar/maximierbar; Dialoge haben eigenen Taskleisten-Eintrag; Klick auf gesperrten Inhalt holt den Dialog nach vorn (blinkt) - Trennlinie zwischen Händler- und Positionsliste sichtbar und ziehbar, Position wird gemerkt - Strg+Rücktaste / Strg+Entf löschen ganze Wörter in allen Eingabefeldern Behoben: - Gedrückte Knöpfe zeigten keine Beschriftung (activeForeground gehört in Tk zur Klasse Background) - Tipp des Tages: Text lief aus dem sichtbaren Bereich - Größenänderung: breiterer Griffbereich mit Ecken, Zeiger wird zuverlässig zurückgesetzt, flüssiger; Verschieben über Windows selbst (inkl. Andocken), Minimieren über Windows - Zeichen, die MS Sans Serif nicht hat (…, ▸, →, •), durch Win95-übliche ersetzt - Menü/Tooltip/Dialog: Größe+Position zusammen setzen (Tk ignoriert sonst die Position) - Suche reagiert erst nach kurzer Tipp-Pause (flüssigeres Tippen) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
69c2a108a9
commit
807a38622c
15 files changed
+1217
-187
No files matched your search
+27
-2
@@ -45,6 +45,14 @@ CREATE TABLE IF NOT EXISTS regel (
|
||||
UNIQUE (haendler_id, provisionsart)
|
||||
);
|
||||
|
||||
-- Eigene Kennungen (eigene Filiale): diese Positionen werden ausgeblendet und nicht verprovisioniert.
|
||||
CREATE TABLE IF NOT EXISTS eigen (
|
||||
id INTEGER PRIMARY KEY,
|
||||
anbieter TEXT NOT NULL,
|
||||
wert TEXT NOT NULL,
|
||||
UNIQUE (anbieter, wert)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS abrechnung (
|
||||
id INTEGER PRIMARY KEY,
|
||||
titel TEXT NOT NULL,
|
||||
@@ -82,6 +90,7 @@ CREATE INDEX IF NOT EXISTS ix_position_abr ON position(abrechnung_id);
|
||||
"""
|
||||
|
||||
UNZUGEORDNET = 0 # Pseudo-Händler-ID für Positionen ohne bekannte Kennung
|
||||
EIGEN = -2 # Pseudo-Händler-ID für Positionen eigener Kennungen (ausgeblendet)
|
||||
|
||||
# Sonder-Kennung: Vodafone-Positionen, deren Kundenname komplett in GROSSBUCHSTABEN steht
|
||||
# (so erfasst ein Unterhändler seine Kunden). Hat Vorrang vor der VO-Nr.
|
||||
@@ -206,15 +215,31 @@ class Datenbank:
|
||||
kmap = self.kennung_map()
|
||||
caps = kmap.get((CAPS_ANBIETER, CAPS_WERT))
|
||||
aktive = {h.id for h in self.haendler_liste(nur_aktive=True)}
|
||||
eigene = set(self.eigene_kennungen())
|
||||
|
||||
def finde(anbieter: str, kennung: str, name: str | None = None, fest: int | None = None) -> int:
|
||||
if fest is not None:
|
||||
return fest if (fest == UNZUGEORDNET or fest in aktive) else UNZUGEORDNET
|
||||
if caps and anbieter == "vodafone" and ist_grossgeschrieben(name):
|
||||
return caps
|
||||
return kmap.get((anbieter, kennung), UNZUGEORDNET)
|
||||
hid = kmap.get((anbieter, kennung), UNZUGEORDNET)
|
||||
if hid == UNZUGEORDNET and (anbieter, kennung) in eigene:
|
||||
return EIGEN
|
||||
return hid
|
||||
return finde
|
||||
|
||||
# ------------------------------------------------------------------ eigene Kennungen
|
||||
def eigene_kennungen(self) -> list[tuple[str, str]]:
|
||||
return [(r[0], r[1]) for r in self.con.execute("SELECT anbieter, wert FROM eigen ORDER BY anbieter, wert")]
|
||||
|
||||
def eigene_setzen(self, anbieter: str, wert: str, eigen: bool = True) -> None:
|
||||
wert = (wert or "").strip()
|
||||
with self.con:
|
||||
if eigen:
|
||||
self.con.execute("INSERT OR IGNORE INTO eigen (anbieter, wert) VALUES (?,?)", (anbieter, wert))
|
||||
else:
|
||||
self.con.execute("DELETE FROM eigen WHERE anbieter=? AND wert=?", (anbieter, wert))
|
||||
|
||||
# ------------------------------------------------------------------ Regeln
|
||||
def regeln(self, hid: int) -> dict[str, float]:
|
||||
return {r[0]: r[1] for r in self.con.execute(
|
||||
@@ -230,7 +255,7 @@ class Datenbank:
|
||||
(hid, provisionsart, prozent))
|
||||
|
||||
def prozent_fuer(self, hid: int, provisionsart: str) -> float:
|
||||
if hid == UNZUGEORDNET:
|
||||
if hid <= 0: # nicht zugeordnet / eigene Filiale
|
||||
return 100.0
|
||||
r = self.con.execute("SELECT prozent FROM regel WHERE haendler_id=? AND provisionsart=?",
|
||||
(hid, provisionsart)).fetchone()
|
||||
|
||||
Reference in new issue
Block a user