Skip to content

1.11.0

βš™οΈ Patch 1.11.0 β€” Wholesalers CRM, package NO-BOX fix, Plenty shopping_table stock

πŸš€ 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