Skip to content

1.5.11

⚙️ Patch 1.5.11 — Skip penner items in recalculations (FBA, FBM, Otto, Kaufland, Shopify)

🚀 Summary

  • Small maintenance release ensuring articles marked as article_type: penner are treated as manual/no-min-max for all recalculation flows. Min/max price bounds will not be changed for these items, while profit and margin recalculations still run.

✨ Improvements

  • Recalculation flows now respect article_type = penner across marketplaces. When an article's article_type is penner the system will:
  • Skip updating min_price / max_price (treat as manual/no-min-max behavior).
  • Still recalculate expected_profit, margin_rule_id and fee/profit fields so reporting stays accurate.

  • Centralized changes were applied to the endpoint recalculation codepaths for FBA, FBM, Otto, Kaufland and Shopify to ensure consistent behavior.

  • Frontend: removed the display of the FBA and Penner Management tabs from the main Dashboard layout navigation. The pages remain accessible by direct route but are hidden from the primary navigation to reduce clutter.

  • Frontend: show Article Type in the main Base Articles table, add an Article Type filter dropdown (All | Penner | Renner | Neutral), and display color-coded badges for quick recognition (Penner = red, Renner = green, Neutral = grey). The expanded article details view also exposes price_adaptation_dates and ratios for easier inspection.
  • Frontend: removed legacy FBA and Penner Management code and navigation entries to reduce maintenance overhead. The Penner Management UI (page/tab) and older FBA navigation have been removed from the primary navigation and deprecated; remaining APIs and services for Penner flows are retained where used.

🐛 Bug Fixes

  • Fixed inconsistent behavior where some recalculation flows could overwrite manual pricing for penner articles.

📁 Files changed

  • backend/service_multi-repricer/app/api/v1/endpoints/fba_articles.py — Respect ArticleType.PENNER when deciding whether to update bounds; import ArticleType.
  • backend/service_multi-repricer/app/api/v1/endpoints/fbm_articles.py — Respect ArticleType.PENNER when deciding whether to update bounds; import ArticleType.
  • backend/service_multi-repricer/app/api/v1/endpoints/otto_articles.py — Respect ArticleType.PENNER when deciding whether to update bounds; import ArticleType.
  • backend/service_multi-repricer/app/api/v1/endpoints/kaufland_articles.py — Respect ArticleType.PENNER when deciding whether to update bounds; import ArticleType.
  • backend/service_multi-repricer/app/api/v1/endpoints/shopify_articles.py — Respect ArticleType.PENNER when deciding whether to update bounds; import ArticleType.
  • backend/service_multi-repricer/app/models/repricer_articles.py — Normalize incoming article_type values (accepts capitalized or mixed-case) via a field_validator so the API will accept Penner, penner, PENNER, etc. without raising Pydantic enum validation errors.
  • frontend/src/pages/MultiRepricer/Tabs/BaseArticles/BaseArticles.jsx — Add Article Type column, search filter, and color-coded badges; expose price_adaptation_dates and ratios in the expanded quick view.
  • frontend: Removed legacy Penner Management page and cleaned up FBA navigation and related legacy UI code (frontend menu and deprecated page sources removed or commented out).

🔧 Database & SQL

  • Run the SQL migration docker/postgres/updates/add_penner_to_repricer_articles.sql to add article_type, price_adaptation_dates and ratios columns to the repricer_articles table.
  • Migration file: docker/postgres/updates/add_penner_to_repricer_articles.sql
  • For reference, the previous migration that added last_inbound_date is:
  • docker/postgres/updates/add_last_inbound_date_to_repricer_articles.sql

Usage notes

  • penner articles will now behave like manual-priced SKUs during exports and marketplace updates: the repricer will not alter min/max bounds but will still report fresh profit values.

  • Frontend: you can now filter the Base Articles list by Article Type. The frontend sends the selected type as a lowercase filter value; the backend model now normalizes input (case-insensitive) to avoid validation errors when users type or paste capitalized values (e.g. Penner). This fixes earlier HTTP 500s caused by Pydantic enum validation when mixed-case values were sent.

Affected flows

  • Recalculation (background): endpoints triggered by /recalculate/{sku} for FBA/FBM/Otto/Kaufland/Shopify.
  • Export flows: payload formation now avoids sending min/max updates for penner articles.