# Noes Shop bedienen

## Start

Web-Anwendung öffnen oder Android-App installieren. Mit dem persönlichen Zugang
anmelden. In Einstellungen Absender ausfüllen und Erstpasswort ändern.
Die App ist eine native Flutter-Anwendung und benötigt für Buchungen Internet.

## Motive und Lager

Unter Motive einen Artikel anlegen. Artikelnummer eindeutig vergeben. Verkauf
standardmäßig 1200 Cent, Einkaufskosten einschließlich nicht abzugsfähiger Steuer
eintragen. Ein Euro entspricht 100 Cent.

Motivdatei, Druck-PDF und Rechtebelege hochladen. Der Status „freigegeben“ bedeutet,
dass Sie die Rechte geprüft haben. KI erzeugt keine automatische Markenfreigabe.
Physisch vorhandene Ware über Bestand buchen oder einen Druckauftrag erfassen
und nach Lieferung dessen Wareneingang bestätigen. Sollbestand standardmäßig zehn.

## Verkaufen

Bestellung mit Lieferadresse und Motiv erfassen. Verfügbare Ware wird reserviert.
Nach tatsächlichem Zahlungseingang „Zahlung bestätigen“. Alternativ für einen
Direktauftrag einen PayPal-Link erstellen und dem Käufer selbst weitergeben.
Nach Käuferfreigabe „PayPal prüfen & einziehen“ auslösen. Diese Aktion zieht Geld ein.

Etsy-Zugänge unter Anbindungen einrichten und Shop verbinden. Rückrufadresse:
https://noes-shop.c3po42.de/api/etsy/callback
Produkt-SKU oder Listing-ID vorher zuordnen. „Bestellungen abrufen“ importiert
neue bezahlte EUR-Aufträge. Hinweise zu fehlender Zuordnung, Adresse oder
abweichendem Gesamtbetrag bearbeiten. Etsy-Gebühren manuell nachtragen.
Bestände auf Etsy selbst aktuell halten; kein automatischer Kanalabgleich in 1.0.

## Versand

Porto bei Deutsche Post/DHL kaufen. Label unter Bestellung → Beleg / Label speichern.
Die Packliste der Web-Anwendung enthält den Empfänger und die Positionen.
Am Handy Label über Öffnen / Teilen an eine PDF- oder Druckanwendung geben.
Erst bei tatsächlicher Übergabe „Versand buchen“. Porto, Verpackung, Gebühren
und optionale Sendungsnummer eintragen. Das erzeugt den Lagerabgang.
Etsy-Versandmeldung mit Sendungsnummer separat auslösen.

## Retouren

Unbezahlte Aufträge können storniert werden. Bezahlte Aufträge beim Anbieter
erstatten, anschließend „Erstattung erfassen“. Teilbeträge werden unterstützt.
Zurückgesandte, verkaufsfähige Bilder mit „Rücknahme“ einlagern. Beschädigte Ware
nicht wieder verfügbar buchen. Vollständige Erstattung vor Versand löst die
Reservierung. Erstattung und Rücknahme sind verschiedene Vorgänge.

## Zahlen und Belege

Finanzen zeigt Umsatz nach Erstattungen, Deckungsbeitrag und zusätzliche
Betriebsausgaben. Nicht als steuerliche EÜR verwenden. Einkaufskosten verkaufter
Bilder, Porto und Gebühren werden bereits beim Auftrag berücksichtigt. Diese
nicht erneut als Betriebsausgabe erfassen. KI-Abos, Hosting und andere zusätzliche
Kosten gehören unter Betriebsausgaben.

Rechnungen als PDF oder XML im Original speichern. Fotos sind ebenfalls möglich;
die KI-Erkennung startet für Belege und Rechnungen automatisch nach dem Speichern. Belege einem Auftrag, Druckauftrag,
einer Ausgabe oder einem Motiv zuordnen. Originale bleiben unverändert.

### Automatische KI-Erkennung und Zuordnung

1. PDF, JPG oder PNG unter Belege speichern oder mit der App fotografieren.
2. Die KI liest das Bild automatisch. „KI liest“ zeigt den Fortschritt; die Ansicht aktualisiert sich selbst. Anschließend „Prüfen / zuordnen“ öffnen.
3. Betrag in Euro-Schreibweise (zum Beispiel 23,80), Währung, Datum, Aussteller
   und Belegnummer mit dem Original vergleichen. Erkannten Text bei Bedarf öffnen.
4. Passende Zuordnung auswählen. Die Vorschläge nennen ihren Grund, etwa die
   Bestellnummer oder einen passenden Betrag. Ein gleicher Betrag allein beweist
   keine Zugehörigkeit. „Ohne Zuordnung“ ist ebenfalls möglich.
5. Speichern. Belegdaten werden als geprüft markiert. Bereits geprüfte Werte
   bleiben bei erneuter OCR erhalten und können unter „Prüfen / zuordnen“ geändert werden.

„Neue zusätzliche Betriebsausgabe buchen“ legt nach Bestätigung eine Ausgabe
mit dem geprüften positiven EUR-Betrag und Datum an und verknüpft den Beleg.
Diese Option nur für zusätzliche Betriebsausgaben wie Hosting oder KI-Abos wählen.
Druckkosten, Porto und Bestellgebühren nicht doppelt als Ausgabe erfassen.
Die Zuordnung zu einer bestehenden Ausgabe oder Bestellung ändert deren Betrag nicht.
Gutschriften können als Belegdaten gespeichert werden, aber nicht als neue Ausgabe.

Bei unklaren Beträgen bleibt das Feld leer. Fremdwährungen werden nicht umgerechnet.
Belege vollständig und gerade bei gutem Licht aufnehmen. PDF-Dateien über sechs
Seiten vorher aufteilen; XML bleibt im Originalarchiv ohne OCR. Die Erkennung verwendet GPT-5.6 Luna über die vorhandene ChatGPT-Anmeldung der Codex-CLI auf dem VPS und verbraucht Abo-Kontingent. Die Belegbilder werden dabei von OpenAI verarbeitet. „Nur lokale OCR“ führt zusätzlich eine reine Server-OCR ohne Übertragung aus.

CSV-Exporte und ZIP-Sicherung unter Finanzen/Einstellungen herunterladen.
Dateien enthalten Geschäftsdaten und müssen geschützt aufbewahrt werden.

## Externe Zugänge

Etsy benötigt eine eigene Seller-App und Shop-ID. PayPal benötigt eine
Business-App mit Client-ID/Secret. Die Felder werden serverseitig verschlüsselt
gespeichert, nie an das Handy zurückgegeben. Sandbox dient nur der API-Erprobung.
Post/DHL läuft zunächst per Labelimport. WIRmachenDRUCK wird manuell bestellt.

Motive, Druckdateien und Rechtebelege sind beim jeweiligen Motiv abrufbar. Die Belegansicht zeigt nur Belege, Rechnungen und Versandlabels.

## Bedienprüfung 1.4.0

Beträge in Formularen in Euro eingeben, zum Beispiel 12,50. Intern bleiben alle
Beträge centgenau. Stückkosten sind die Kosten eines Drucks, nicht dessen Verkaufspreis.
Die Übersicht trennt Motivanzahl, physische Stückzahl, Reservierungen, Verkaufswert
ohne Versand und Lagerwert zu hinterlegten Stückkosten. Verkaufswert ist kein Umsatz.
Das kalkulierte Ergebnis verwendet bezahlte Aufträge abzüglich Erstattungen,
hinterlegter Warenkosten, Auftragskosten und zusätzlicher Betriebsausgaben.
Es ist weder Kontostand noch eine vollständige Zahlungsflussrechnung.

Beim Versand bleiben vorhandene Gebühren und ausdrücklich erfasste Nullbeträge
erhalten. Nur Uploads der Art Motiv ändern das Vorschaubild eines Produkts.
Der vollständige Prüfbericht einschließlich offener Funktionslücken steht in
USABILITY-PRUEFUNG.md.

## Korrekturen und Bestellungen ab 1.4.0

Unter Finanzen und Druck & Lager stehen Korrigieren und Stornieren zur Verfügung.
Eine Begründung ist erforderlich; vorheriger und neuer Stand bleiben im Journal.
Stornierte Ausgaben zählen nicht mehr zum Ergebnis, ihre Belege bleiben erhalten.
Noch nicht gelieferte Druckaufträge können geändert oder storniert werden.
Ein gebuchter Wareneingang kann durch Gegenbuchung korrigiert werden, solange keine
weiteren Lager-/Kostenänderungen oder betroffenen Reservierungen vorliegen.
Bei späteren Bewegungen ist die bestehende begründete Lagerkorrektur zu verwenden.

Bestellungen unterstützen mehrere Motive. Im Web Positionen hinzufügen; in der App
zuerst Motive und Mengen zusammenstellen, dann Lieferadresse und Versand eingeben.
Versand wird einmal berechnet. Die Reservierung erfolgt vollständig oder gar nicht.

PayPal trennt Sandbox und Live. Offene Live-Links verhindern einen unbeabsichtigten
Zugangswechsel. Während eines Einzugs und nach unklarer Anbieterantwort bleibt der
Auftrag für konkurrierende Änderungen gesperrt. Erneut PayPal prüfen liest zuerst
den Anbieterstatus und übernimmt einen bereits erfolgten Einzug ohne Doppelbuchung.

Etsy prüft den aktuellen Versandstatus und weist ungültige oder mehrdeutige Artikel
aus, während gültige Aufträge weiter importiert werden. Erstattungen auch älterer
importierter Aufträge werden abgefragt und am Auftrag zur Prüfung angezeigt.
Nach Abgleich mit Etsy übernimmt „Etsy-Erstattung prüfen“ den Gesamtbetrag unter
Berücksichtigung bereits erfasster Erstattungen. Es wird kein Geld ausgezahlt und
keine Retoure automatisch eingelagert.

Adaptertests verwenden simulierte Anbieterantworten. Eine echte PayPal-Zahlung
oder Etsy-Bestellung wurde für diese Veröffentlichung nicht ausgelöst.


### Rahmen und Material (1.4.0)

12 € Verkaufspreis enthalten einen A4-Rahmen; Versand kommt hinzu. Unter **Druck & Lager → Rahmen & Material** werden Rahmen gemeinsam für alle Motive geführt. Bestellungen reservieren Druck und Rahmen, Versand bucht beide ab. Die Startseite zeigt die lieferbaren vollständigen Sets und den Einkaufslagerwert einschließlich Material. Bei 0,40 € Druckkosten und 1,79 € Rahmenkosten sind die Warenkosten 2,19 € je Bild.

Gemischte Belege nur anteilig zuordnen: Beim Action-Beleg gehören 10 Rahmen mit 17,90 € zum Materialeinkauf. Getränke und Pfand bleiben außerhalb dieser Zuordnung; der Originalbeleg mit 19,28 € bleibt erhalten. Keine zusätzliche Betriebsausgabe für dieselben Rahmen buchen. Bei Retouren auswählen, ob der Rahmen verkaufsfähig zurückkommt; sonst bleibt sein Verbrauch in der Kalkulation. `materials.py` verwaltet Bestand, Beleganteile und die Materialkosten je Bestellposition.

Unter **Belege → Als Betriebsausgabe** lassen sich nicht zugeordnete Einkaufsbelege direkt übernehmen. Betrag, Datum, Händler und Kategorie prüfen und speichern: Der Beleg erhält die Zuordnung Betriebsausgabe, der Betrag erscheint in Finanzen. Bereits zugeordnete Materialeinkäufe werden nicht ein zweites Mal gebucht.


Version 1.4.1: Web und Android laden beim Bereichswechsel den aktuellen Datenstand. Die Web-Finanzansicht zeigt Betriebsausgaben als eigene Kennzahl neben Deckungsbeitrag und Ergebnis. Beim Zurueckkehren zum Browser-Tab erfolgt eine Aktualisierung, sofern kein Bearbeitungsdialog offen ist. Bestehende Buchungen werden nicht geaendert.


Version 1.5.0: Erfasste Ausgaben gesamt enthalten aktive Belegausgaben, Materialeinkäufe, gelieferte Druckaufträge sowie dokumentierte Auftragskosten. Der Einnahmen-Ausgaben-Saldo zieht diese einmal ab, ohne zusätzlichen Abzug der kalkulierten Warenkosten verkaufter Sets. Deckungsbeitrag und Lagerwert werden separat gezeigt. Die Übersicht belegt keinen bankseitigen Zahlungszeitpunkt. Alte API-Kennzahl result bleibt aus Kompatibilitätsgründen bestehen; aktuelle Oberflächen verwenden recorded_balance.


Version 1.6.0: Android prueft beim App-Start und alle sechs Stunden auf Updates, zusaetzlich unter Einstellungen > Nach Updates suchen. Die App laedt nach Zustimmung die APK, prueft SHA-256, Paketname und Versionscode und oeffnet den Android-Installer. Android verlangt gegebenenfalls einmal die Freigabe fuer Installationen aus Noes Shop; danach zurueckkehren und Update installieren tippen. Die erste Version mit Updater muss noch manuell installiert werden. Implementierung in app/lib/updater.dart und MainActivity.kt, ohne neue Flutter-Abhaengigkeiten.

## Vinted-Bot verbinden (ab 1.7.0)

1. **Anbindungen → Vinted-Bot → Google-Zugang:** Client-ID und Secret aus dem Google-Cloud-Projekt eintragen, dann **Mit Google verbinden** und mit dem Bot-Gmail-Konto anmelden. Der Hinweis „nicht bestätigte App“ ist erwartet.
2. **Vinted verbinden:** E-Mail oder Benutzername und Passwort eingeben. Der Bot meldet sich in den nächsten Sekunden an. Erscheint **Code eingeben**, den Code aus Mail oder SMS eintragen.
3. **Einstellungen:** Einstellpreis und E-Mail-Adressen für Hinweise festlegen. Die Untergrenze liegt automatisch 25 % darunter.
4. **Anhalten** stoppt den Bot sofort, **Fortsetzen** lässt ihn weiterlaufen.

Das Vinted-Konto muss mit E-Mail und Passwort angelegt sein, nicht über „Mit Google anmelden“.
