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 readiness — Send 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 fromeval/{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/sendreturns400with missing manual platforms or report files. - Preview:
GET /buchhaltung/previewincludesmanual_platform_invoices,missing_manual_platforms, combinedready.
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¶
- Rebuild / restart
service-invoice(entrypoint chownsinvoices,reports,eval). - Rebuild frontend.
- Ensure Docker volumes
reportsandevalexist and are mounted (Portainer compose). - Rebuild docs if you publish patchnotes from the repo.
✅ Verify¶
- Manual upload: Select year/month → upload Tesla PDF → green check, file under
invoices/tesla/{year}/{month}/. - ZIP includes manual: Refresh available ZIPs → platform file count includes uploaded manual invoice.
- Buchhaltung locked: With missing manual platforms → Send accounting email disabled.
- Buchhaltung unlocked: After all 5 manual uploads → button enabled; dialog opens.
- Send blocked: With reports/eval missing → Open Ionos & send disabled; preview lists missing items.
- Send success: All files present + n8n webhook configured →
200 triggered. - 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, statusapp/services/buchhaltung.py— reports/eval paths, manual platform gate, English hintsapp/api/v1/endpoints/download.py— manual platform + report upload routes, send validationapp/tests/services/test_manual_platform_invoices.pyapp/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 copysrc/services/api/invoice/download.js— manual platform + report upload API helpers
docker
docker-compose-portainer.yml,docker-compose.yml,hetzner-deployment/docker-compose.https.yml—reports,evalvolumesdocker/invoice/entrypoint.sh— volume permissions
docs
docs/docs/patchnotes/1.8/1.8.15.md— this filedocs/docs/services/service_invoice/services/manual_platform_invoices.mddocs/docs/services/service_invoice/services/buchhaltung.mddocs/docs/services/service_invoice/endpoints/download.mddocs/docs/services/service_invoice/index.md