1.11.0
π Summary
- Wholesalers (GroΓhΓ€ndler) β New dashboard page (
/wholesalers) plus omni API/DB for supplier master data, price-list sources, terms, brands, and history.
- Package assignment β JTL CSV
NO-BOX no longer clears packages; weight fallback (then default S) applies. Otto recalc auto-assigns when package_type is missing.
- Plenty purchase history β Import now reads Postgres
shopping_table (cleaned shopping Sheet clone) instead of stock Google Sheets. Stock Sheet Settings UI/API removed.
- UI β Plenty Article Management Business Intelligence filters use theme tokens (dark mode).
β¨ Details
Wholesalers CRM
| Area |
Behavior |
| Statuses |
active Β· requested Β· dormant |
| List sources |
Email on request / automatic, Website login, API / Interface, FTP feed, WhatsApp, Sales rep |
| Source details |
JSON fields depend on selected list source |
| UI |
Summary strip, segmented status filters, brand tags, source dots, price pills, detail drawer |
| API |
/api/v1/omni/wholesalers β list, summary, CRUD, history |
Package mappings (NO-BOX)
| Before (1.8.20) |
After (1.11.0) |
CSV NO-BOX only β clear package/cost |
NO-BOX ignored β weight floor-match β default S |
| Otto recalc used existing cost only |
Missing package_type triggers assign_packages for SKU |
1:1 aliases share the resolved package (any peer EAN for real BOX codes; else max peer weight).
Plenty stock / purchase history
| Before |
After |
POST /stock/import-from-sheets (stock GSheets multi-config) |
POST /stock/import-from-shopping-table (+ deprecated sheets alias) |
| Populate articles imported from stock sheets |
Populate imports from shopping_table |
| Plenty β Stock β Sheet Settings tab |
Removed; Management + Sellerboard Reports remain |
/sheets/multi-spreadsheets*, type=stock |
Removed |
Mapping: datum β purchase date, einheiten β units, preis_pro_einheit_n (else brutto) β buy price; asin_sku supports ASIN \| SKU and comma lists.
π Notes
- Wholesalers DDL (or
create_all):
docker/postgres/updates/wholesalers.sql
- also
docker/postgres/tables/wholesalers.sql / backend/service_omni/sql/wholesalers.sql
- Optional seed:
backend/service_omni/sql/wholesalers_seed.sql
- Keep omni shopping-table cron populated before Plenty purchase-history import / article populate.
- Redeploy service-omni, service-plenty, service-multi-repricer, frontend.
- After deploy: Assign packages (or Otto recalc) for SKUs stuck without a package due to CSV
NO-BOX.
π Docs
π Files
frontend/src/pages/Wholesalers/ Β· frontend/src/services/api/omni/wholesalers.js
backend/service_omni/app/{schemas,models,crud,api}/β¦/wholesaler*
backend/service_multi-repricer/app/services/package_assignment.py
backend/service_multi-repricer/app/api/v1/endpoints/otto_articles.py
backend/service_plenty/app/api/v1/endpoints/plenty_stock.py
backend/service_plenty/app/api/v1/endpoints/sheets.py
frontend/src/pages/Plenty/Tabs/SellerboardTab.jsx
frontend/src/pages/Plenty/Tabs/SubTabs/{StockManagementSubTab,ArticlesManagementSubTab}.jsx
docs/docs/patchnotes/1.11/1.11.0.md β this file