Skip to content

1.8.15

⚙️ Patch 1.8.15 — Manual platform invoices, Buchhaltung gates & English UI

🚀 Summary

  • Manual platform invoices — five platforms (Tesla, Vodafone, ChatGPT, Urban Sports, Google Workspace) that cannot be fetched via Gmail now have portal links and upload UI in Download Management; files land under invoices/{platform}/{year}/{month}/.
  • Buchhaltung readinessSend accounting email is blocked until all manual platform invoices are uploaded; send also requires Otto/Plenty/bank CSVs and Plenty eval inventur.
  • Dedicated volumes — report CSVs use reports/{year}/{month}/; inventur reads from eval/{year}/{month}/ (Plenty eval XLSX).
  • English UI — Download Management Buchhaltung and manual-invoice sections translated to English (email body to accountant remains German).

✨ Improvements

Manual platform invoices

Platform key Label Upload path example
tesla Tesla Invoice invoices/tesla/2026/07/*.pdf
vodafone Vodafone Invoice invoices/vodafone/2026/07/*.pdf
chatgpt ChatGPT invoices/chatgpt/2026/07/*.pdf
urbansports Urban Sports GmbH invoices/urbansports/2026/07/*.pdf
google_workspace Google Workspace invoices/google_workspace/2026/07/*
Route Purpose
GET /download/platform-invoices/manual Status per platform for a month
POST /download/platform-invoices/manual/upload Upload PDF/CSV/XLSX/image

Uploaded files are included in monthly ZIP downloads automatically.

Buchhaltung gates

Check Location
All 5 manual platform invoices present invoices/{platform}/{year}/{month}/
Otto revenue CSV reports/{year}/{month}/otto_umsatz.csv
Plenty revenue CSV reports/{year}/{month}/plenty_umsatz.csv
Bank statements CSV reports/{year}/{month}/kontoauszuege.csv
Inventur eval XLSX eval/{year}/{month}/eval_*.xlsx
  • UI: Send accounting email disabled until manual platforms are ready; Open Ionos & send disabled until full ready === true.
  • API: POST /buchhaltung/send returns 400 with missing manual platforms or report files.
  • Preview: GET /buchhaltung/preview includes manual_platform_invoices, missing_manual_platforms, combined ready.

Docker volumes

Volume service-invoice mount Purpose
reports /app/reports Otto/Plenty/bank CSV uploads
eval /app/eval Plenty eval XLSX for inventur
invoices /app/invoices Gmail downloads + manual platforms

Also mounted on n8n runners and file-manager where applicable (docker-compose-portainer.yml).

Frontend (DownloadSubTab.jsx)

  • ZIP Archive month selector: all 12 months selectable (upload before archive exists)
  • Manual platform invoices list with portal + upload actions
  • Accounting (Buchhaltung) section with lock/warning until manual invoices complete
  • Accounting dialog: English labels; German email body preview unchanged

🔧 Deploy

  1. Rebuild / restart service-invoice (entrypoint chowns invoices, reports, eval).
  2. Rebuild frontend.
  3. Ensure Docker volumes reports and eval exist and are mounted (Portainer compose).
  4. Rebuild docs if you publish patchnotes from the repo.

✅ Verify

  1. Manual upload: Select year/month → upload Tesla PDF → green check, file under invoices/tesla/{year}/{month}/.
  2. ZIP includes manual: Refresh available ZIPs → platform file count includes uploaded manual invoice.
  3. Buchhaltung locked: With missing manual platforms → Send accounting email disabled.
  4. Buchhaltung unlocked: After all 5 manual uploads → button enabled; dialog opens.
  5. Send blocked: With reports/eval missing → Open Ionos & send disabled; preview lists missing items.
  6. Send success: All files present + n8n webhook configured → 200 triggered.
  7. Tests: pytest backend/service_invoice/app/tests/services/test_manual_platform_invoices.py backend/service_invoice/app/tests/services/test_buchhaltung.py -k "manual or buchhaltung"

⚠️ Notes

  • Email subject/body to the accountant stays German; only dashboard UI is English.
  • ChatGPT portal link uses stable OpenAI billing URL (session URLs expire).
  • Legacy report path invoices/reports/ still supported as fallback.

Files touched

service-invoice

  • app/services/manual_platform_invoices.py — platform config, upload, status
  • app/services/buchhaltung.py — reports/eval paths, manual platform gate, English hints
  • app/api/v1/endpoints/download.py — manual platform + report upload routes, send validation
  • app/tests/services/test_manual_platform_invoices.py
  • app/tests/services/test_buchhaltung.py, app/tests/api/v1/test_download.py

frontend

  • src/pages/Invoices/Tabs/SubTabs/DownloadSubTab.jsx — manual invoices UI, Buchhaltung gates, English copy
  • src/services/api/invoice/download.js — manual platform + report upload API helpers

docker

  • docker-compose-portainer.yml, docker-compose.yml, hetzner-deployment/docker-compose.https.ymlreports, eval volumes
  • docker/invoice/entrypoint.sh — volume permissions

docs

  • docs/docs/patchnotes/1.8/1.8.15.md — this file
  • docs/docs/services/service_invoice/services/manual_platform_invoices.md
  • docs/docs/services/service_invoice/services/buchhaltung.md
  • docs/docs/services/service_invoice/endpoints/download.md
  • docs/docs/services/service_invoice/index.md