TESTVERSION (30 TAGE)
=====================
Diese Kontor-Testversion läuft 30 Tage ab dem ersten Start. Oben rechts
steht, wie viele Tage noch bleiben. Danach ist Kontor gesperrt; deine Daten
lassen sich am Kontor-Computer weiterhin als Sicherung herunterladen.
Kontor startet mit Beispieldaten – unter System > «Firma & Daten» kannst du
sie löschen und mit eigenen Daten beginnen.
Vollversion: 3D-Druck Geiger, kontor2026@gmx.net


KONTOR 2 – lokale Geschäftsanwendung für 3D-Druck
=================================================

Kontor läuft komplett auf deinem Computer – Mac oder Windows-PC. Alle Daten
liegen in einer SQLite-Datenbank im Ordner  daten/kontor.db  – nichts geht ins Internet.


INSTALLATIONSPROGRAMM (OHNE PYTHON-INSTALLATION)
------------------------------------------------
Kontor gibt es auch als fertiges Paket mit eigenem Python:
- Mac: Kontor-<Version>-Mac.zip öffnen, «Kontor» in den Ordner «Programme» ziehen
  und doppelklicken. Läuft auf Apple Silicon und Intel (ab macOS 11).
  Beim ersten Öffnen meldet macOS, der Entwickler sei nicht verifiziert:
  Systemeinstellungen › Datenschutz & Sicherheit › «Dennoch öffnen».
- Windows 10/11: Kontor-<Version>-Setup.exe doppelklicken. Erscheint «Der Computer
  wurde durch Windows geschützt»: «Weitere Informationen» › «Trotzdem ausführen».
  Installiert ohne Administratorrechte nach %LOCALAPPDATA%\Programs\Kontor,
  mit Verknüpfung auf dem Desktop, im Startmenü und Eintrag unter «Apps».
Die Daten der installierten Version liegen getrennt vom Programm und bleiben bei
Updates und beim Deinstallieren erhalten:
  Mac:     ~/Library/Application Support/Kontor/daten
  Windows: %LOCALAPPDATA%\Kontor\daten
Update: neue Version einfach darüber installieren (vorher Kontor beenden).
Bauen: python3 werkzeuge/installer_bauen.py [--testversion] (Windows-Teil braucht
den Cross-Compiler llvm-mingw, siehe Kopf der Datei).

INSTALLATION AUF DEM MAC (einmalig)
----------------------------------
1. Den Ordner «Kontor» in deinen Benutzerordner legen
   (Finder > Gehe zu > Benutzerordner, oder ⇧⌘H) – also z. B. /Users/dein-name/Kontor.
   WICHTIG: Nicht in Dokumente, Schreibtisch, Downloads oder iCloud Drive.
   Diese Ordner sperrt macOS für Apps («Operation not permitted»).
   Liegt der Ordner trotzdem dort, bietet die App «Kontor» an, ihn zu verschieben.
2. Prüfen, ob Python 3 vorhanden ist:
   Terminal öffnen (Programme > Dienstprogramme > Terminal) und eingeben:
       python3 --version
   Erscheint ein Fenster «Befehlszeilen-Entwicklerwerkzeuge installieren»,
   auf «Installieren» klicken und warten. Danach ist alles bereit.


WINDOWS (Windows 10 und 11)
---------------------------
1. ZIP-Datei vor dem Entpacken freigeben: Rechtsklick > Eigenschaften >
   unten «Zulassen» anhaken > OK. Sonst warnt Windows bei jedem Start.
2. Den Ordner «Kontor» in deinen Benutzerordner entpacken, also
   C:\Users\dein-name\Kontor. Nicht in OneDrive, Dropbox oder einen anderen
   synchronisierten Ordner: Die Datenbank verträgt das Synchronisieren nicht.
3. Doppelklick auf «Kontor einrichten (Windows).bat».
   - Fehlt Python, öffnet sich python.org. Python installieren und dabei unten
     das Häkchen «Add python.exe to PATH» setzen. Danach nochmals doppelklicken.
   - Erscheint «Der Computer wurde durch Windows geschützt»: «Weitere
     Informationen» > «Trotzdem ausführen».
   Das Einrichten legt die Verknüpfung «Kontor» auf dem Desktop und im
   Startmenü an und startet Kontor.
4. Fragt die Windows-Firewall nach «Python»: «Zugriff zulassen» für private
   Netzwerke. Dann ist Kontor auch auf Tablet und Handy im WLAN erreichbar.
Danach genügt ein Doppelklick auf «Kontor» auf dem Desktop (ohne schwarzes
Fenster). «Kontor starten (Windows).bat» startet Kontor mit sichtbarem Fenster –
praktisch, wenn etwas nicht klappt. Meldungen stehen in kontor.log.
Tastenkürzel unter Windows: Strg statt ⌘ (Strg+K Suche, Strg+S Speichern).

Daten vom Mac übernehmen: Kontor auf dem Mac beenden, den Ordner «daten» aus
dem Kontor-Ordner kopieren (z. B. per USB-Stick) und auf dem Windows-PC in den
Kontor-Ordner legen (vorhandenen Ordner «daten» ersetzen). Mit Bildern,
Sicherungen und Katalog. Nicht beide Computer gleichzeitig mit denselben
Daten arbeiten lassen – sonst gehen Änderungen verloren.


STARTEN (macOS)
---------------
Doppelklick auf die App «Kontor» (orangefarbenes K).
Kontor startet im Hintergrund und öffnet sich im Browser – ohne Terminal-Fenster.
Ist Kontor schon gestartet, öffnet ein weiterer Klick nur das Browserfenster.

Start-Knopf auf den Schreibtisch legen:
- Die App «Kontor» aus dem Kontor-Ordner mit gedrückter Wahl- und Befehlstaste
  (⌥⌘) auf den Schreibtisch ziehen. So entsteht eine Verknüpfung (Alias).
- Oder die App direkt auf den Schreibtisch oder ins Dock ziehen. Sie findet den
  Kontor-Ordner selbst; falls nicht, fragt sie einmal danach.

Beim allerersten Start meldet macOS, dass die App von einem nicht
verifizierten Entwickler stammt. Dann:
   Rechtsklick (oder Ctrl-Klick) auf «Kontor» > Öffnen > Öffnen.
Bei neueren macOS-Versionen stattdessen: Systemeinstellungen >
Datenschutz & Sicherheit > ganz unten bei «Kontor» auf «Trotzdem öffnen».
Das ist nur einmal nötig.

Alternativ geht der Start wie bisher mit «Kontor starten.command»
(mit Terminal-Fenster) oder im Terminal:
       cd ~/Kontor
       python3 server.py

Adresse im Browser:  http://localhost:8765


AUF IPAD UND IPHONE
-------------------
Kontor ist im eigenen WLAN auch auf iPad und iPhone erreichbar. Die Adresse
und einen QR-Code zum Scannen findest du unter «Firma & Daten» › «Auf iPad und
iPhone». In Safari «Teilen › Zum Home-Bildschirm» legt ein Symbol an.
- Der iMac muss eingeschaltet sein und Kontor laufen.
- Fragt macOS, ob «Python» eingehende Verbindungen annehmen darf: «Erlauben».
- Alle Geräte im gleichen WLAN können Kontor öffnen. Nur im eigenen,
  geschützten WLAN nutzen. Beenden lässt sich Kontor nur am iMac.
- Nur auf dem iMac erreichbar machen: im Terminal starten mit
      KONTOR_NUR_LOKAL=1 python3 server.py

BEENDEN
-------
Oben rechts in Kontor auf das Ein/Aus-Symbol klicken > «Beenden».
(Wurde Kontor mit «Kontor starten.command» gestartet, kann auch das
Terminal-Fenster geschlossen werden.)
Meldungen des Servers stehen in  kontor.log  im Kontor-Ordner.


DATEN & SICHERUNG
-----------------
- Datenbank:   daten/kontor.db
- Sicherungen: daten/sicherungen/  (automatisch bei jedem Start einmal pro Tag,
  zusätzlich über «Firma & Daten > Jetzt sichern». Die letzten 30 bleiben.)
- Für eine externe Sicherung einfach den Ordner  daten  kopieren
  (z. B. auf einen USB-Stick oder in iCloud Drive), am besten wenn Kontor beendet ist.
  Er enthält auch das Belegarchiv (daten/archiv) und die Dateien (daten/dateien).
- Vor einem Update mit neuer Datenbankstruktur legt Kontor automatisch eine
  Sicherung «…_vor-update.db» an.
- Wiederherstellen: Kontor beenden, gewünschte Sicherung nach  daten/kontor.db
  kopieren (alte Datei vorher umbenennen), Kontor starten.

Beim ersten Start sind Beispieldaten geladen. Unter «Firma & Daten» kannst du
sie löschen und deine Firmendaten (Name, Adresse, IBAN, MWST) eintragen.


BEDIENUNG IN KÜRZE
------------------
- ⌘K           globale Suche (Kunden, Belege, Aufträge, Material …)
- ⌘S           Datensatz speichern
- Listen: Spaltenkopf anklicken zum Sortieren, Filterfeld, CSV-Export für Excel
- Offerte > «In Rechnung umwandeln»
- Auftrag > Status «Fertig» bucht Filament, Material und Maschinenstunden
- Auftrag > «Rechnung erstellen» übernimmt Druckzeit und Material als Positionen
  (Preise aus den Artikeln der Kategorien «Druckzeit» und «Material»)
- Maschine > «Wartung erledigt» setzt den Wartungszähler zurück
- Spule > «Wiegen» / Material > «Lagerbuchung» für Zugang, Abgang, Inventur
- Rechnung/Offerte > «PDF» oder «Per E-Mail senden» (öffnet Apple Mail)
- Jede Änderung wird im Reiter «Verlauf» protokolliert

SPRACHEN (DEUTSCH, ENGLISCH, FRANZÖSISCH, UNGARISCH)
---------------------------------------------------
- Bildschirm: oben rechts auf das Sprachkürzel (DE/EN/FR/HU) klicken. Die Wahl gilt
  pro Benutzer (mit Anmeldung) bzw. für diesen Kontor (ohne Anmeldung).
- Belege und E-Mails: beim Kunden unter «Kontakt» › «Sprache» (bzw. beim
  Lieferanten für Bestellungen). «Standard der Firma» nimmt die «Sprache der Belege»
  aus «Firma & Daten» › «Land, Währung & Steuer».
  Offerten, Rechnungen, Gutschriften, Mahnungen, Lieferscheine, Auftrags-
  bestätigungen und die vorgeschlagenen E-Mail-Texte erscheinen dann in dieser
  Sprache. Der Schweizer QR-Zahlteil ist auf Deutsch, Französisch oder Englisch
  (für Ungarisch: Englisch), wie es der Standard vorschreibt.
- Eigene Texte (Positionen, Notizen, selbst geänderte Mahn- und Versandtexte)
  bleiben, wie du sie schreibst. Unverändert übernommene Standardtexte übersetzt
  Kontor automatisch.
- Bereits festgeschriebene Rechnungen bleiben im Archiv in der ursprünglichen
  Sprache (unveränderlich).
- Die Wörterbücher liegen in app/i18n/ (en.json, fr.json, hu.json).
- Anleitung in anderen Sprachen: README-EN.txt, LISEZMOI-FR.txt, OLVASSEL-HU.txt.


DRUCKER: GELADENES FILAMENT ABFRAGEN
-----------------------------------
Kontor fragt deine Drucker direkt im lokalen Netzwerk ab (ohne Cloud) und zeigt
pro Fach Werkstoff, Farbe, Hersteller und Restmenge – und welches Material aus
deinem Lager dazu passt.
Einrichten mit dem Assistenten: Maschinen > Maschine öffnen > Details >
«Drucker im Netzwerk» > «Drucker einrichten» (oder auf der Druckerkarte das
Zahnrad bzw. «Netzwerk einrichten»).
  1. Hersteller wählen: Bambu Lab, Prusa, Creality, Anycubic, Snapmaker,
     Elegoo, Qidi, Sovol, Voron/Klipper, OctoPrint oder «Anderer Hersteller».
  2. Modell wählen. Kontor zeigt, wie der Drucker angebunden wird und woher
     der Verbrauch nach dem Druck kommt.
  3. Verbindung: nur die Felder ausfüllen, die das Modell braucht – mit
     Hinweis, wo man den Wert am Drucker findet. «Verbindung testen» fragt den
     Drucker sofort ab, «Speichern» übernimmt Hersteller, Modell und Zugang.
Was je Hersteller nötig ist:
  Bambu Lab (X1, P1, P2S, A1, H2):  IP-Adresse, LAN-Zugangscode, Seriennummer.
      Bei aktueller Firmware am Drucker «LAN Only» und «Entwicklermodus»
      einschalten – der Drucker ist dann nicht mehr mit der Bambu-Cloud
      verbunden (Bambu Handy / Fernzugriff gehen in dieser Zeit nicht).
  Prusa (Core One, MK4/S, MK3.9, XL, MINI+):  PrusaLink. IP-Adresse und
      Passwort (am Drucker: Einstellungen > Netzwerk > PrusaLink), Benutzer
      meist «maker». MK3S+ mit Raspberry Pi: Benutzer leer lassen und
      den API-Schlüssel ins Passwortfeld.
  Creality (K2, K1, Creality OS):  nur IP-Adresse.
  Anycubic (Kobra S1, S1 Max, Kobra 3):  IP-Adresse, LAN-Modus am Drucker an.
  Snapmaker U1:  IP-Adresse, API-Schlüssel nur bei aktiver Anmeldung.
  Klipper/Moonraker (Elegoo Neptune 4, Qidi, Sovol, Voron, gerootete
      Creality):  IP-Adresse, Port 7125 wird automatisch verwendet.
  OctoPrint:  Adresse und API-Schlüssel (OctoPrint > Einstellungen > API).
Geheimnisse (Zugangscode, Passwort) bleiben nur in der lokalen Datenbank.
Drucker ohne Netzwerk-Schnittstelle wählt man mit «Keine Netzwerkabfrage» –
Drucke werden dann von Hand verbucht.
In der Maschinenliste fragt «Filament aller Drucker abfragen» alle auf einmal ab.
Gefundene Fächer werden deinen Spulen zugeordnet (gleicher Werkstoff, ähnliche
Farbe). Fehlt eine passende Spule: «Als Spule anlegen».
Die Protokolle der Drucker sind nicht offiziell dokumentiert. Klappt etwas nicht,
zeigt «Rohdaten» was der Drucker geschickt hat – diese Daten enthalten keine
Passwörter und helfen bei der Fehlersuche.

VERBRAUCH NACH DEM DRUCK (Drucke & Verbrauch)
---------------------------------------------
Kontor erkennt beendete Drucke und schlägt vor, wie viel Filament von welcher
Spule abgezogen wird. Gebucht wird erst, wenn du bestätigst.
- Funktioniert automatisch bei allen Druckern, die mit dem Assistenten
  eingerichtet sind (siehe oben).
- Ist ein Druck fertig, erscheint unten rechts «Druck beendet», in der
  Navigation bei «Drucke & Verbrauch» und auf der Druckerkarte ein Hinweis.
- «Verbrauch bestätigen» zeigt pro Spule das zugeordnete Material und die
  Menge in Gramm. Material und Menge lassen sich ändern, weitere Zeilen
  hinzufügen. «Verbuchen» zieht die Mengen vom Lager ab, «Verwerfen» nicht.
- Optional einem Auftrag zuordnen: Dann übernimmt der Auftrag die gemessene
  Menge und Druckzeit und bucht beim Abschliessen nicht nochmals ab.
- Die Druckzeit kann den Betriebsstunden der Maschine gutgeschrieben werden.
- Woher die Mengen stammen:
    Snapmaker U1: aus dem Druckverlauf und den Slicer-Angaben in der Druckdatei
      (Gramm pro Düse). Auch Drucke, die liefen, während Kontor beendet war.
    Creality K2:  aus dem Druckverlauf (falls der Drucker ihn anbietet), sonst
      aus der verbrauchten Filamentlänge. Kontor merkt sich dafür während des
      Drucks, aus welchem CFS-Fach gerade gedruckt wird – Kontor sollte dann
      während des Drucks laufen.
    Anycubic:     aus der verbrauchten Filamentlänge, pro ACE-Fach – Kontor
      sollte während des Drucks laufen.
    Bambu Lab:    aus der Druckdatei auf dem Drucker (Gramm pro Filament),
      pro AMS-Fach. Klappt das nicht, Menge von Hand eintragen.
    Klipper/Moonraker: wie beim Snapmaker aus Druckverlauf und Slicer-Angaben.
    Prusa / OctoPrint: aus den Slicer-Angaben bzw. der Filamentlänge der
      Druckdatei – Kontor sollte während des Drucks laufen.
    Abgebrochene Drucke werden anteilig gerechnet.
- Drucker ohne Netzwerk: Maschine öffnen > «Druck verbuchen»
  oder unter «Drucke & Verbrauch» > «Druck von Hand verbuchen».
- Ein- und ausschalten sowie das Prüfintervall: «Firma & Daten» > «Druckwächter».
- Beim allerersten Prüfen merkt sich Kontor nur den Stand. Ältere Drucke
  werden nicht nachträglich vorgeschlagen.

JAHRESABSCHLUSS
---------------
Navigation > Finanzen > «Jahresabschluss»: Einnahmen-Ausgaben-Rechnung mit
Vermögenslage für Einzelunternehmen unter CHF 500'000 Umsatz (Art. 957 OR).
- Jahr wählen und wie Einnahmen zählen: «nach Zahlungseingang» (Datum
  «Bezahlt am» der Rechnung) oder «nach Rechnungsdatum».
- Einnahmen nach Kategorie der Artikel, Ausgaben nach Kategorie, Abschreibungen,
  Gewinn oder Verlust, Verlauf pro Monat.
- Abschreibungen: bei der Maschine Anschaffungspreis, Inbetriebnahme, Methode
  (degressiv/linear) und Satz erfassen (üblich: 40 % degressiv bzw. 20 % linear
  für Maschinen zu Produktionszwecken). Den Kauf als Ausgabe mit Kategorie
  «Investitionen» erfassen – er zählt dann nicht als Aufwand, sondern läuft
  über die Abschreibungen.
- Vermögenslage per 31.12.: offene Rechnungen, Filamentlager und Buchwert der
  Maschinen rechnet Kontor; Bank/Kasse und offene Lieferantenrechnungen trägst
  du ein.
- MWST (falls pflichtig): Werte pro Quartal/Semester/Jahr mit den Ziffern des
  ESTV-Formulars (effektive Methode) oder mit Saldosteuersatz.
- «Jahresrechnung (PDF)» für die Steuererklärung (Erfolgsrechnung,
  Abschreibungen, Vermögenslage, MWST, Journal) und «Journal (CSV)» für Excel
  oder die Treuhand.
- «Als bezahlt markieren» setzt bei Rechnungen das Datum «Bezahlt am»; es
  lässt sich in der Rechnung ändern.
Kontor ersetzt keine Treuhand – im Zweifel beim Steueramt nachfragen.

RUNDMAIL
--------
Navigation > Verkauf > «Rundmail»: eine E-Mail an mehrere Kunden.
- Empfänger auswählen: Filter (nur aktive, mit offenen Rechnungen, aktiv in
  den letzten Monaten, Suche) und Häkchen pro Kunde. Kunden ohne gültige
  E-Mail-Adresse oder mit «Erhält Rundmails» = aus werden ausgelassen.
- Betreff und Text mit Platzhaltern: {anrede}, {name}, {firma}, {ort}.
  {anrede} = «Briefanrede» des Kunden, sonst «Guten Tag» + Ansprechperson.
- Optional ein Anhang (bis 10 MB) und ein Abmelde-Hinweis am Schluss.
- «Senden»: Kontor schickt jeder Person eine eigene Mail über dein Postfach.
  Einmalig einrichten unter «Firma & Daten» > «E-Mail-Versand» (Server, Port,
  Benutzer, Passwort – bei Gmail und iCloud ein App-Passwort), dann
  «Testmail senden». Das Passwort bleibt auf diesem Computer.
- Ohne Einrichtung: «Im Mailprogramm öffnen (BCC)» oder «Adressen kopieren».
- Unter «Versendete Rundmails» steht, an wen die Mail ging und welche
  Adressen der Mailserver abgelehnt hat. Beim Kunden steht sie im Verlauf.
Hinweis: Werbe-Mails nur an Kunden senden, die damit rechnen können, und
Abmeldungen beachten («Erhält Rundmails» beim Kunden ausschalten).

KALKULATION UND KUNDENRABATT
----------------------------
Auftrag öffnen > Reiter «Kalkulation» (oder Knopf «Kalkulation»).
- Kostenpunkte ein- und ausschalten: Material, Strom, Abnutzung, Arbeitszeit,
  Nachbearbeitung, Versand, dazu «Weitere Kosten» (Verpackung, Zubehör …).
- Gewinnmarge in Prozent; «Marge ausblenden» verteilt sie in Offerte und
  Rechnung auf die Positionen, sonst steht sie als eigene Position.
- Rabatt: Beim Kunden unter «Konditionen» einen Standardrabatt erfassen. Neue
  Aufträge übernehmen ihn, im Auftrag lässt er sich anpassen.
- Rechts stehen Selbstkosten, Marge, Rabatt, Versand, Preis netto, MWST,
  Total und der Preis pro Stück. «Offerte erstellen» / «Rechnung erstellen»
  übernehmen die Kalkulation als Positionen.
- Dafür nötig: Einstandspreis pro kg beim Material; bei der Maschine unter
  «Kalkulation» Leistungsaufnahme (W), Anschaffungspreis und Lebensdauer (h).
- Strompreis, Stundensätze, Standardmarge, Arbeitszeit und Versand:
  «Firma & Daten» > «Kalkulation».

WARTUNG
-------
Unter «Wartung» (Navigation) und im Reiter «Wartung» jeder Maschine.
- Wartungspläne der Hersteller übernehmen: Creality K2 / K2 Pro / K2 Plus,
  Anycubic Kobra S1 / S1 Max, Snapmaker U1 und ein allgemeiner FDM-Plan.
  Jede Aufgabe hat Intervalle nach Tagen, Druckstunden und/oder kg Filament –
  was zuerst erreicht wird, macht sie fällig. «Vorschlag» heisst: Der Hersteller
  nennt kein festes Intervall, Kontor schlägt eines vor.
- Beim Übernehmen wählen: «Heute» (Intervalle beginnen jetzt) oder
  «Unbekannt» (alles sofort fällig).
- «Wartung erfassen»: erledigte Arbeiten anhaken (fällige sind vorgewählt),
  weitere Arbeit, Datum, Notiz und Kosten eintragen. Alles landet im
  Wartungsprotokoll.
- Aufgaben lassen sich bearbeiten, pausieren, löschen oder selbst anlegen.
- Druckstunden zählen über die Betriebsstunden der Maschine, Filament über
  die verbuchten Drucke und Aufträge der Maschine.
- Fällige Wartungen erscheinen in der Navigation, auf der Druckerkarte und in
  der Übersicht unter «Handlungsbedarf».

BILDER FÜR MASCHINEN, SPULEN UND MATERIAL
-----------------------------------------
Maschine, Spule oder Material öffnen > Details > Bereich «Bild»:
- klicken und ein Foto wählen, ein Bild hineinziehen oder ein kopiertes Bild
  mit ⌘V einfügen (z. B. im Browser Rechtsklick auf ein Produktfoto >
  «Bild kopieren»).
- Kontor verkleinert das Bild auf höchstens 1000 Pixel und speichert es unter
  daten/bilder/. Wer den Ordner «daten» sichert, sichert die Bilder mit.
Maschinenfotos erscheinen auf den Druckerkarten und in «Drucker live»,
Spulenfotos in der Spulenliste und bei den geladenen Spulen eines Druckers.

FILAMENT-KATALOG
----------------
Unter Spulen > «Aus Katalog» findest du Filamente aus der offenen
Datenbank SpoolmanDB (MIT-Lizenz, github.com/Donkie/SpoolmanDB).
- Beim ersten Öffnen «Katalog jetzt herunterladen» klicken (braucht Internet).
  Der Katalog wird unter  daten/katalog/  gespeichert, die Suche funktioniert
  danach auch offline. «Katalog aktualisieren» holt den neuesten Stand.
- Suchen, z. B. «Bambu PETG HF Black», oder nach Hersteller, Werkstoff und
  Durchmesser filtern. Zeile anklicken übernimmt Bezeichnung, Hersteller,
  Werkstoff, Farbe mit Farbcode, Durchmesser, Spuleninhalt, Leerspule,
  Dichte und Temperaturen. Bereits erfasste Filamente sind markiert.
- Im Datensatz eines Materials füllt «Aus Katalog übernehmen» die Felder nach.
- Bestand, Mindestbestand, Preis und Lagerort trägst du selbst ein. Bei neuem
  Material wird der «Anfangsbestand» beim Speichern als Lagerbuchung erfasst.
- Lagerbuchung > «Inventur mit Waage»: Spulen wiegen, Gewicht und Anzahl
  eingeben – Kontor zieht das Gewicht der Leerspulen ab.

CSV-IMPORT
----------
Kunden, Artikel, Spulen, Maschinen und Ausgaben lassen sich aus CSV-Dateien
übernehmen: in der Liste auf «CSV-Import» klicken (oder unter «Firma & Daten»).
1. Datei wählen oder ins Fenster ziehen (Excel, Numbers, bexio usw.).
   Trennzeichen (; , Tab) und Zeichensatz werden automatisch erkannt.
2. Zuordnung der Spalten prüfen. Bekannte Spaltennamen werden automatisch
   zugeordnet, alles andere per Auswahlfeld.
3. «Prüfen» zeigt, wie viele Zeilen neu angelegt oder aktualisiert werden und
   welche Zeilen Fehler haben – es wird dabei noch nichts gespeichert.
4. «Importieren» speichert. Vorher wird automatisch eine Sicherung angelegt.
- Gibt es die Nummer (z. B. K-1001) schon, wird der Datensatz aktualisiert
  oder die Zeile übersprungen – je nach Einstellung. Leere Zellen überschreiben
  nichts. Ohne Nummer wird automatisch eine neue vergeben.
- Zahlen dürfen Schweizer Schreibweise haben (1'250.50, 12.-, CHF 9.90),
  Datumsangaben z. B. 31.08.2026 oder 2026-08-31, Ja/Nein-Felder ja/nein/1/0/x.
- Spulen: «Bestand (g)» wird als Lagerbuchung erfasst (Anfangsbestand bzw.
  Inventur), damit die Lagerbewegungen stimmen.
- Ausgaben: negative Beträge aus Bankauszügen werden als Ausgabe übernommen.
- «Vorlage» lädt eine leere CSV-Datei mit den passenden Spalten herunter.
- Eine mit «CSV-Export» erstellte Liste lässt sich wieder importieren.
Offerten, Rechnungen und Aufträge werden nicht per CSV importiert.

LAND, WÄHRUNG UND MEHRWERTSTEUER (CH, LI, AT, DE, FR, HU)
---------------------------------------------------------
System > «Firma & Daten» > «Land, Währung & Steuer»:
- Land: Schweiz, Liechtenstein, Österreich, Deutschland, Frankreich oder Ungarn. Beim Wechsel werden
  Währung, Standard-Steuersatz und Hinweistext passend vorgeschlagen.
- Währung: CHF, EUR oder HUF (Forint). Beträge werden nicht umgerechnet – die Umstellung ist
  für den Start mit Kontor gedacht, nicht für bestehende Buchhaltung.
- Steuersätze zur Auswahl: CH/LI 8.1 / 2.6 / 3.8 / 0 %, AT 20 / 10 / 13 / 0 %,
  DE 19 / 7 / 0 %, FR 20 / 10 / 5.5 / 2.1 / 0 %, HU 27 / 18 / 5 / 0 %. Der Standardsatz gilt für neue Belege; pro Offerte, Rechnung
  und Ausgabe lässt er sich ändern.
- «Hinweis bei 0 %» steht auf Belegen ohne Steuer, z. B. für Kleinunternehmer
  (DE: § 19 UStG, AT: § 6 Abs. 1 Z 27 UStG, FR: «TVA non applicable, art. 293 B
  du CGI», HU: «Alanyi adómentes» – vorausgefüllt).
- Darstellung: CH 1'234.50 CHF (Rundung auf 5 Rappen), AT/DE 1.234,50 €
  (Rundung auf den Cent), FR/HU 1 234,50 (HUF: Rundung auf den ganzen Forint).
  Auf Belegen heisst die Steuer je nach Sprache MWST, USt., MwSt., VAT, TVA oder ÁFA.
- Zahlung: CH/LI erhalten den QR-Einzahlungsschein (auch in EUR möglich).
  AT/DE erhalten in EUR einen QR-Code für SEPA-Überweisungen (GiroCode), den
  Banking-Apps einlesen. Dafür IBAN (und optional BIC) eintragen. FR in EUR ebenso;
  für HUF gibt es keinen Zahlungs-QR-Code (die Rechnung nennt IBAN und Zweck).
- AT/DE: Statt «Offerte» heisst es überall «Angebot» (Oberfläche, PDF, E-Mail),
  Texte auf Belegen mit ß (Grüße, gemäß).
- AT/DE/FR/HU: Rechnungen zeigen das Leistungsdatum (= Rechnungsdatum), im Fuss die
  USt-IdNr./UID und – falls erfasst – die Steuernummer (FR: SIRET, HU: Adószám).
- Jahresabschluss AT/DE: Umsatzsteuer pro Monat oder Quartal mit den Kennzahlen
  der Voranmeldung (DE UStVA 81/86/66, AT U30 022/029/006/060); FR/HU ohne Kennzahlen.
  Bankdatei (camt) und Shop-Import übernehmen nur Zahlungen in der eingestellten
  Währung. Angaben ohne Gewähr – im Zweifel die Steuerberatung fragen.

QR-EINZAHLUNGSSCHEIN
--------------------
Jede Rechnung erhält im PDF unten den Schweizer QR-Zahlteil mit Empfangsschein
(Swiss Payment Standards, Version 2.0). Voraussetzungen unter «Firma & Daten»:
- gültige Schweizer IBAN (CH…) oder QR-IBAN
- Firmenname, PLZ und Ort
Mit einer normalen IBAN wird eine RF-Referenz aus der Rechnungsnummer erzeugt,
mit einer QR-IBAN eine 27-stellige QR-Referenz. Fehlt die Kundenadresse,
bleibt «Zahlbar durch» leer zum Ausfüllen. Die Vorschau der Rechnung zeigt
den Zahlteil ebenfalls.
Tipp: Vor dem ersten Versand eine Rechnung mit der eigenen Banking-App
scannen und prüfen, ob alle Angaben stimmen.


ZUGANG & BENUTZER (Anmeldung im WLAN)
-------------------------------------
«Firma & Daten» > «Zugang & Benutzer»:
1. «Benutzer anlegen»: Benutzername, Passwort (mind. 8 Zeichen), Rolle.
   Inhaber = alles. Mitarbeiter = ohne Finanzen, Ausgaben, Auswertungen,
   Jahresabschluss und Einstellungen.
2. «Anmeldung verlangen» einschalten.
Danach braucht jeder Zugriff vom iPad, iPhone oder einem anderen Computer eine
Anmeldung. Am Kontor-Computer selbst geht es ohne, solange «Am Kontor-Computer
ohne Anmeldung» eingeschaltet ist. Nach 5 falschen Passwörtern wird die
Anmeldung von diesem Gerät kurz gesperrt. Oben rechts: Passwort ändern, Abmelden.
Passwort vergessen und am Kontor-Computer ist die Anmeldung auch nötig:
Kontor einmal so starten:  KONTOR_OHNE_LOGIN=1 python3 server.py
(Windows: set KONTOR_OHNE_LOGIN=1 & py server.py), dann unter «Zugang &
Benutzer» ein neues Passwort setzen und Kontor normal neu starten.

RECHNUNGEN: FESTSCHREIBEN, ARCHIV, GUTSCHRIFT, STORNO
----------------------------------------------------
Sobald eine Rechnung den Entwurf verlässt (Status «Offen», per E-Mail gesendet),
wird sie festgeschrieben: Inhalt und Positionen lassen sich nicht mehr ändern,
das PDF wird mit Prüfsumme im Ordner daten/archiv abgelegt und immer genau so
wieder ausgegeben (Aufbewahrungspflicht 10 Jahre, GeBüV).
- Fehler in einer offenen Rechnung: «Stornieren» – Kontor erstellt eine
  Storno-Gutschrift, die Rechnung bleibt im Archiv.
- Preisnachlass, Rücknahme, bereits bezahlte Rechnung: «Gutschrift» – die
  Gutschrift entsteht als Entwurf, Positionen anpassen, auf «Offen» setzen.
  Danach «Mit Rechnung verrechnen» oder nach der Rückzahlung «Als
  ausbezahlt markieren». Gutschriften mindern Umsatz und MWST im Abschluss.
- Bereits bestehende, gestellte Rechnungen gelten nach dem Update ebenfalls als
  festgeschrieben; ihr PDF wird beim ersten Abruf archiviert.
- System > «Änderungsprotokoll»: jede Änderung mit Zeit und Person. Die Einträge
  sind über Prüfsummen verkettet. «Unverändertheit prüfen» meldet nachträglich
  veränderte Einträge oder Archiv-PDF.

ZAHLUNGEN UND BANKDATEI (camt.054 / camt.053)
--------------------------------------------
Rechnung öffnen > «Zahlung erfassen» (auch Teilzahlungen). Reiter «Zahlungen &
Mahnungen» zeigt Zahlungen, Mahnungen, Gutschriften, Lieferscheine und Archiv.
Gesammelt: Rechnungen > «Bankdatei einlesen». Im E-Banking die Gutschrifts-
anzeige camt.054 (oder den Kontoauszug camt.053) als XML oder ZIP herunterladen
und hineinziehen. Kontor ordnet über die QR-/RF-Referenz, die Rechnungsnummer
im Zahlungstext oder den Betrag zu. Sichere Treffer sind vorgewählt, gebucht
wird erst mit «Ausgewählte verbuchen». Dieselbe Bankdatei zweimal einlesen
bucht nichts doppelt.

MAHNWESEN
---------
Verkauf > «Mahnwesen» listet überfällige Rechnungen mit der nächsten Stufe:
Zahlungserinnerung (10 Tage nach Fälligkeit, ohne Gebühr), 1. Mahnung
(+14 Tage, CHF 20), 2. Mahnung (+14 Tage, CHF 30). Stufen, Gebühren, Fristen
und Texte unter «Mahnstufen & Texte». Fällige sind vorgewählt.
«Mahnungen als PDF» erstellt ein Sammel-PDF zum Drucken, «Per E-Mail senden»
schickt jede Mahnung mit PDF über dein Postfach. Jede Mahnung enthält einen
QR-Einzahlungsschein (offener Betrag + Gebühr) mit derselben Referenz – die
Zahlung wird beim Einlesen der Bankdatei also wieder der Rechnung zugeordnet.
Kunde oder Rechnung lassen sich mit «Nicht mahnen» sperren.
Hinweis: Mahngebühren und Verzugszins nur verlangen, wenn sie vereinbart sind.

DATEIEN UND 3D-MODELLE
----------------------
Auftrag > Reiter «Dateien»: STL, 3MF, OBJ, G-Code, «.gcode.3mf» und beliebige
andere Dateien hineinziehen. Gleicher Dateiname = neue Version. Kontor zeigt
eine drehbare 3D-Vorschau (bei 3MF auch das Vorschaubild), Masse und Volumen.
Aus G-Code bzw. «.gcode.3mf» (Bambu Studio, OrcaSlicer, PrusaSlicer, Cura)
liest Kontor Gramm und Druckzeit des Slicers. «Werte übernehmen» setzt
Materialbedarf und Druckzeit im Auftrag. Dateien auch bei Artikeln, Modellen und
Ausgaben (Quittungen). Gespeichert im Ordner daten/dateien.

OFFERTE AUS 3D-DATEI
--------------------
Offerten (oder Aufträge) > «Aus 3D-Datei»: Kunde wählen, Datei hineinziehen,
Material, Drucker, Stückzahl, Infill, Wandstärke und Stützen einstellen. Kontor
schätzt Gramm und Druckzeit und zeigt sofort Preis und Selbstkosten aus deiner
Kalkulation. «Auftrag & Offerte erstellen» legt beides an.
Die Schätzung aus STL/3MF/OBJ liegt meist innerhalb ±30 %. Genau wird es mit
einer im Slicer erstellten «.gcode.3mf» oder G-Code-Datei. Die Druckzeit
richtet sich nach der «Druckleistung» des Druckers (Maschine > Betrieb &
Wartung, in mm³/s) – mit eigenen Werten nachjustieren.

NACHKALKULATION UND AUSWERTUNGEN
--------------------------------
Auftrag > Reiter «Nachkalkulation»: geplant (Soll) gegen tatsächlich (Ist) für
Material, Druckzeit und Selbstkosten, Umsatz und Deckungsbeitrag. Ist-Werte
kommen aus den verbuchten Drucken dieses Auftrags (inkl. Fehldrucke), die
effektive Arbeitszeit trägst du im Auftrag ein.
Finanzen > «Auswertungen»: alle abgeschlossenen Aufträge eines Jahres, Deckungs-
beitrag pro Kunde, Material und Drucker sowie die Ausschussauswertung.

FEHLDRUCKE UND AUSSCHUSS
------------------------
Beim Bestätigen des Verbrauchs «Fehldruck / Ausschuss» anhaken und den Grund
wählen (bei abgebrochenen Drucken ist es vorgewählt). Das Material wird vom
Lager abgezogen, die Kosten (Material, Strom, Abnutzung) berechnet. Auswertungen >
«Ausschuss» zeigt die Quote pro Drucker und Material und die häufigsten Gründe.

DRUCKPLANUNG
------------
Produktion > «Druckplanung»: Zeitleiste pro Drucker mit allen geplanten,
freigegebenen und laufenden Aufträgen, nacheinander ab jetzt. Ein laufender
Druck (Drucker live) wird berücksichtigt. Balken ziehen ändert Reihenfolge oder
Drucker, ein Klick öffnet den Auftrag. Rot = Termin wird nicht erreicht.
«Arbeitszeiten»: wann Drucke gestartet werden können, ob sie über Nacht laufen
dürfen und die Pause zwischen zwei Drucken.

SPULEN UND QR-ETIKETTEN
-----------------------
Produktion > «Spulen»: Jeder Eintrag ist eine einzelne Rolle Filament (bzw.
eine Flasche Harz) mit Nummer, Inhalt und Restmenge. Mehrere Rollen der gleichen
Sorte (Hersteller, Werkstoff/Typ, Farbe) sind mehrere Einträge; «Diese Sorte»
zeigt den Gesamtbestand. Der Mindestbestand gilt pro Sorte.
- «Spule erfassen» oder «Aus Katalog»; «Weitere Spulen» legt Kopien an.
- Verbrauch aus Drucken wird zuerst von der Spule abgezogen, die in diesem
  Drucker geladen ist. Reicht sie nicht, geht der Rest auf eine weitere Spule
  der gleichen Sorte; eine leere Spule wird automatisch entladen.
- «Wiegen»: Bruttogewicht eingeben, Kontor zieht die Leerspule ab.
  «Rest korrigieren», «In Drucker laden», «Aufgebraucht».
- Liste: «Ohne leere» blendet aufgebrauchte Spulen aus, «Nur knappe Sorten»
  zeigt, was nachbestellt werden sollte.
«Etiketten drucken»: A4-Bogen 3 × 8 (70 × 37 mm, z. B. Avery Zweckform 3475)
oder Endlos-Etikett 62 × 29 mm (Brother QL). Der QR-Code öffnet die Spule in
Kontor – mit der iPhone-Kamera im gleichen WLAN scannen, dann wiegen, laden oder
als leer markieren. Adresse im QR: «Firma & Daten» > «Kontor-Adresse für QR»
(leer = WLAN-Adresse dieses Computers).
Umstellung von Version 2.1: Die bisherigen Material-Einträge wurden beim ersten
Start zu Spulen (Nummern bleiben). Einträge mit mehr als einer Rolle Bestand
wurden in einzelne Spulen aufgeteilt. Vorher wurde automatisch die Sicherung
«…_vor-spulen.db» angelegt (Ordner daten/sicherungen).

MATERIAL (ZUKAUF: LEDS, MAGNETE, GEWINDEEINSÄTZE …)
--------------------------------------------------
Produktion > «Material»: alles, was ausser Filament in ein Produkt eingebaut
wird – z. B. LED-Streifen, LED-Module, Magnete, Schrauben, Gewindeeinsätze,
Verpackung. Pro Material: Kategorie, Einheit (Stk., m, g, Pack …), Bestand,
Mindestbestand, Einstandspreis, Lieferant, Bestellnummer, Lagerort, Bild.
- «Lagerbuchung» für Zugang, Abgang oder Inventur; Reiter «Bewegungen».
- Stückliste: Im Auftrag (Details, unten) und im Artikel Material hinzufügen
  und die Menge eintragen. Die Kosten erscheinen in der Kalkulation als
  «Material (Zukauf)». Beim Abschliessen des Auftrags (Fertig) wird das
  Material vom Lager abgebucht; danach ist die Stückliste gesperrt.
- «Nachproduzieren» übernimmt die Stückliste des Artikels × Stückzahl.
- Material unter Mindestbestand erscheint in der Übersicht und in den
  Bestellvorschlägen (Einkauf).


MODELLE UND LIZENZEN
--------------------
Stammdaten > «Modelle & Lizenzen»: Modelle mit Quelle (Printables, MakerWorld,
Thingiverse …), Designer, Lizenz und «Verkauf erlaubt». Die Lizenzliste nennt
für gängige Lizenzen, ob Drucke verkauft werden dürfen (z. B. CC BY ja,
CC BY-NC nein, Standard Digital File License nur mit Erlaubnis). Im Auftrag
oder Artikel das Modell wählen: Bei nicht freigegebenen Modellen warnt Kontor
und fragt vor dem Erstellen von Offerte oder Rechnung nach. Angaben ohne Gewähr –
massgebend sind die Bedingungen der Plattform bzw. des Designers.

LAGERARTIKEL (FERTIGE TEILE)
----------------------------
Artikel > «Lager & Produktion» > «Lagerartikel» einschalten, Mindestbestand,
Material und Druckzeit pro Stück eintragen. Der Bestand ändert sich durch:
- Rechnung festschreiben: Positionen mit diesem Artikel werden ausgebucht
  (Storno bucht zurück, Shop-Import bucht ebenfalls aus)
- «Nachproduzieren»: legt einen Auftrag ohne Kunden an; beim Abschliessen
  (Fertig) wird die Stückzahl eingebucht
- «Lagerbuchung» von Hand

EINKAUF
-------
Einkauf > Bestellvorschläge: Filament (pro Sorte), Material und Ersatzteile
unter dem Mindestbestand
(Bestand − reserviert + bereits bestellt), aufgefüllt auf das Doppelte.
«Bestellungen erstellen» legt pro Lieferant eine Bestellung an. In der
Bestellung: PDF, per E-Mail bestellen, «Wareneingang buchen» – Filament wird
als neue Spulen angelegt, Material und Ersatzteile werden eingebucht,
optional entsteht gleich die Ausgabe. Bei Spule bzw. Material «Lieferant», «Bestell-
nummer» und «Mindest-Bestellmenge» eintragen. Ersatzteile (Düsen, Platten,
Riemen …) lassen sich bei «Wartung erfassen» als verbraucht ausbuchen.

VERSAND UND SHOP-BESTELLUNGEN
-----------------------------
Rechnung > «Lieferschein» oder Verkauf > «Versand» > «Lieferschein erstellen».
In der Sendung: Versandart, Sendungsnummer, Lieferschein-PDF, Adressetikette
(A6 oder 62 mm) und «Kunde benachrichtigen» (Mail mit Sendungsverfolgung und
Lieferschein). Offerte > «Auftragsbestätigung» erstellt das PDF dazu.
Versandetiketten mit Post-Strichcode brauchen einen Geschäftskunden-Zugang der
Post – Kontor druckt die Adressetikette, die Frankatur kaufst du bei der Post.
Shop-Bestellungen: Rechnungen > «Shop-Bestellungen». CSV-Export aus Shopify
(Bestellungen > Exportieren), Etsy (Bestellte Artikel) oder WooCommerce
hineinziehen. Pro Bestellung entsteht eine bezahlte Rechnung (Shop-Preise inkl.
MWST), auf Wunsch zusätzlich ein Auftrag. Neue Kunden werden angelegt, SKU =
Artikelnummer bucht Lagerartikel aus. Bestellungen in anderen Währungen als CHF
werden übersprungen. Doppelte Bestellungen erkennt Kontor.

EXPORT FÜR DIE TREUHÄNDERIN / DEN TREUHÄNDER
--------------------------------------------
Finanzen > Jahresabschluss > ganz unten:
- «Paket (ZIP)»: Jahresrechnung (PDF), Buchungsjournal für Banana (TXT) und als
  CSV, alle archivierten Rechnungen, Gutschriften, Mahnungen und die an Ausgaben
  angehängten Belege, dazu eine Erklärung.
- «Banana (TXT)»: Banana > Aktionen > In Buchhaltung importieren > Buchungen >
  Textdatei mit Spaltenüberschriften.
- «Konten»: Kontennummern nach KMU-Kontenrahmen (Bank 1020, Debitoren 1100,
  Ertrag 3000, Material 4000 …) und MWST-Codes (V81, M81, I81) – mit dem
  Kontenplan der Treuhänderin abgleichen.

TECHNIK
-------
server.py       Webserver und Datenbanklogik (nur Python-Standardbibliothek)
kontor_pdf.py   PDF-Erzeugung für Offerten und Rechnungen
kontor_qr.py    QR-Code und Schweizer QR-Rechnung
kontor_katalog.py  Filament-Katalog (SpoolmanDB)
kontor_drucker.py  Abfrage der Drucker (Bambu Lab, Prusa, Creality, Anycubic, Klipper, OctoPrint)
kontor_wartung.py  Wartungspläne der Hersteller
kontor_mail.py     E-Mail-Versand (Rundmail)
kontor_abschluss.py  Jahresabschluss, MWST-Übersicht, Jahresrechnung (PDF)
kontor_auth.py     Anmeldung, Benutzer, Rollen
kontor_verkauf.py  Festschreiben, Archiv, Gutschriften, Zahlungen, Mahnwesen, Versand, Shop-Import
kontor_bank.py     Bankdateien camt.053/054
kontor_land.py     Land, Währung, Steuersätze (CH, LI, AT, DE, FR, HU)
kontor_i18n.py     Sprachen: Übersetzung für PDFs und E-Mails (Wörterbücher in app/i18n/)
kontor_produktion.py  Dateien, Nachkalkulation, Ausschuss, Planung, Spulen, Lizenzen
kontor_stl.py      STL/3MF/OBJ/G-Code auswerten
kontor_einkauf.py  Lieferanten, Bestellungen, Wareneingang
kontor_treuhand.py Export für die Treuhand (Banana, CSV, ZIP)
werkzeuge/testversion_bauen.py  Einstellungen der Testversion (Ordner-ZIP, älter)
werkzeuge/lizenz.py            Lizenzschlüssel ausstellen und prüfen
kontor_lizenz.py               Prüfung der Lizenzschlüssel (Ed25519)
werkzeuge/installer_bauen.py   Installationsprogramme Mac/Windows bauen
windows/installiert.py         Einrichten/Deinstallieren der installierten Windows-Version
app/index.html  Oberfläche
app/kontor2.js  Oberfläche: Erweiterungen
Kontor.pyw      Start unter Windows ohne Konsolenfenster
windows/        Einrichtung und Symbol für Windows
Port ändern:    KONTOR_PORT=9000 python3 server.py   (Windows: set KONTOR_PORT=9000 & py server.py)
