- Add amazon_api.py with Reconciliation + Document API client - OAuth flow with manual code exchange for local installations - Dual mode: API (recommended) or Browser automation (fallback) - New settings: amazon_app_id, amazon_client_id, amazon_client_secret, amazon_refresh_token - Platform UI with mode switcher, API credential fields, OAuth button - Scheduler supports both API and browser modes - README with full Amazon API setup guide - httpx added for async HTTP requests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| app | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| README.md | ||
| docker-compose.yml | ||
| requirements.txt | ||
README.md
Belegimport
Automatischer Import von Belegen (Rechnungen, Gutschriften) aus verschiedenen Quellen und Weiterleitung per SMTP an Buchhaltungssoftware (z.B. Buchhaltungsbutler).
Features
- Scan-Upload: PDF hochladen, automatische Trennung per QR-Code-Trennseiten
- IMAP: Automatischer Abruf von Belegen aus Email-Postfachern
- SMB/Netzlaufwerk: Automatischer Abruf von Belegen aus Netzwerkordnern
- Amazon Business: Automatischer Abruf von Amazon-Rechnungen per API
- Eingangs-/Ausgangsbelege: Getrennte Import-Adressen fur Einkauf und Verkauf
- Scheduler: Automatischer Abruf in konfigurierbaren Intervallen
- Verarbeitungslog: Ubersicht aller importierten Belege mit Status
Technologie
- Python 3.12, FastAPI, Jinja2, SQLite (aiosqlite)
- Docker / docker-compose
- Playwright (optional, fur Amazon Browser-Automation als Fallback)
Installation
Docker (empfohlen)
git clone <repository-url>
cd lex-office-belegimport-mail
sudo docker-compose up --build -d
Die Webanwendung ist erreichbar unter: http://localhost:8081
Konfiguration
Alle Einstellungen werden uber die Weboberflache vorgenommen:
- Einstellungen (
/settings): SMTP-Server, IMAP, SMB, Import-Emailadressen - Plattformen (
/platforms): Amazon Business API-Zugangsdaten - Scan-Upload (
/): Manueller PDF-Upload mit Belegart-Auswahl
Amazon Business API Einrichtung
Die Amazon-Integration nutzt die offizielle Amazon Business API (Reconciliation + Document API) um Rechnungen automatisch abzurufen. Kein Browser-Login, keine CAPTCHAs, vollautomatisch.
Voraussetzungen
- Amazon Business Konto (mit Business Prime)
- Zugang zum Amazon Solution Provider Portal
Schritt 1: Als Entwickler registrieren
- Offne das Solution Provider Portal
- Wahle "Private seller applications" (fur eigene Integrationen)
- Wahle "Erstellen Sie Anwendungen, die SP-APIs verwenden"
- Fulle die Unternehmensdaten aus (Name, Handelsregisternummer, Adresse)
- Verifiziere per SMS
Schritt 2: Rollen auswahlen
Wahle folgende Rollen:
- Abgleichen von Business-Einkaufen (Reconciliation API)
- Amazon Business-Bestellung (Business Orders API)
Schritt 3: Sicherheitskontrollen
Beantworte alle Sicherheitsfragen mit "Ja".
Bei den Textfeldern:
- Externe Parteien:
Keine. Die Daten werden ausschliesslich intern fur die eigene Buchhaltung verwendet. - Externe Quellen:
Keine.
Schritt 4: App registrieren
Nach der Freischaltung (kann einige Tage dauern):
-
Im Developer Central: "+ Neuen App-Client hinzufugen"
-
Einstellungen:
- App-Name:
Beleg import(oder eigener Name) - API-Typ:
SP-API - App-Typ:
Produktion - Amazon Business: angehakt
- Verkaufer: nicht angehakt
- Rollen: Abgleichen von Business-Einkaufen + Amazon Business-Bestellung
- RDT: Nein
- OAuth-Anmeldungs-URI:
https://ihre-domain.de/api/amazon-oauth-callback - OAuth-Umleitungs-URI:
https://ihre-domain.de/api/amazon-oauth-callback
- App-Name:
-
Nach dem Speichern: "Anmeldedaten fur Login mit Amazon" -> "Anzeigen"
- Notiere Client-ID (
amzn1.application-oa2-client.xxxxx) - Notiere Client-Sicherheitsschluessel (
amzn1.oa2-cs.v1.xxxxx)
- Notiere Client-ID (
-
Die App-ID (
amzn1.sp.solution.xxxxx) steht in der App-Ubersicht unter dem App-Namen
Hinweis: Die OAuth-Umleitungs-URI muss eine echte Domain mit Top-Level-Domain sein.
localhostund.localDomains werden von Amazon nicht akzeptiert. Die URI muss nicht offentlich erreichbar sein - Amazon leitet nur den Browser des Benutzers dorthin weiter.
Fehler SPSA0404: Falls beim Autorisieren der Fehler "Keine unterstuetzte Geschaeftseinheit" erscheint, muss die Autorisierung uber den OAuth-Flow (Website) statt uber Self-Authorization erfolgen. Der Belegimport unterstutzt dies automatisch.
Schritt 5: Im Belegimport konfigurieren
- Offne die Plattformen-Seite im Belegimport
- Setze Abruf-Modus auf "API (empfohlen)"
- Trage ein:
- App-ID:
amzn1.sp.solution.xxxxx - Client-ID:
amzn1.application-oa2-client.xxxxx - Client-Sicherheitsschluessel: Der Secret-Wert
- App-ID:
- Einstellungen speichern
- Klicke "Bei Amazon autorisieren"
- Melde dich bei Amazon an und erlaube den Zugriff
- Kopiere den
spapi_oauth_code(oder die ganze URL) aus der Browser-Adressleiste - Trage den Code im Belegimport ein und klicke "Token tauschen"
- Status sollte auf "API autorisiert" wechseln
Schritt 6: Rechnungen abrufen
- Manuell: Klicke "Jetzt Rechnungen abrufen"
- Automatisch: Aktiviere den Scheduler unter Einstellungen (z.B. alle 60 Minuten)
Die Rechnungen werden als PDF per SMTP an die konfigurierte Eingangsbeleg-Adresse gesendet. Bereits abgerufene Rechnungen werden automatisch ubersprungen.
OAuth Redirect URI (lokale Installation)
Da Amazon keine localhost-URIs akzeptiert, gibt es zwei Optionen:
Option A: Eigene Domain verwenden (empfohlen)
Trage eine echte Domain ein (z.B. https://ihre-domain.de/api/amazon-oauth-callback).
Nach der Amazon-Autorisierung leitet der Browser dorthin weiter - die Seite ladt nicht,
aber der Auth-Code steht in der URL-Leiste. Diesen Code im Belegimport eintragen.
Option B: /etc/hosts Eintrag
Falls der Server lokal erreichbar sein soll:
# In /etc/hosts eintragen:
127.0.0.1 app.belegimport.de
Dann in der Amazon App als Redirect URI eintragen:
https://app.belegimport.de/api/amazon-oauth-callback
Achtung: Amazon pruft ob die Domain eine Top-Level-Domain hat.
.localfunktioniert nicht, aber.deschon.
Umgebungsvariablen
In docker-compose.yml:
environment:
- OAUTH_REDIRECT_BASE=https://ihre-domain.de # Muss zur Amazon App passen
Eingangs- und Ausgangsbelege
Der Belegimport unterscheidet zwischen:
- Eingangsbelege (Einkauf): Rechnungen die Sie von Lieferanten erhalten
- Ausgangsbelege (Verkauf/Gutschrift): Rechnungen die Sie an Kunden senden
Fur beide Typen konnen separate Import-Emailadressen konfiguriert werden (z.B. fur Buchhaltungsbutler). Amazon-Rechnungen werden automatisch als Eingangsbelege klassifiziert.
Bei IMAP und SMB konnen jeweils getrennte Quell- und Verarbeitungsordner fur Eingangs- und Ausgangsbelege konfiguriert werden.
Beim Scan-Upload kann die Belegart per Radio-Button ausgewahlt werden.
Verarbeitungslog
Unter /log werden alle verarbeiteten Belege angezeigt mit:
- Zeitpunkt, Betreff, Absender
- Belegart (Eingang/Ausgang)
- Anzahl Anhange
- Status (OK/Fehler)
- Fehlermeldung (falls vorhanden)
- SMTP-Protokoll (anzeigbar)
Lizenz
Privates Projekt.