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: pennerare 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 = penneracross marketplaces. When an article'sarticle_typeispennerthe system will: - Skip updating
min_price/max_price(treat as manual/no-min-max behavior). -
Still recalculate
expected_profit,margin_rule_idand 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 Typein the main Base Articles table, add anArticle Typefilter 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 exposesprice_adaptation_datesandratiosfor 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
pennerarticles.
📁 Files changed¶
backend/service_multi-repricer/app/api/v1/endpoints/fba_articles.py— RespectArticleType.PENNERwhen deciding whether to update bounds; importArticleType.backend/service_multi-repricer/app/api/v1/endpoints/fbm_articles.py— RespectArticleType.PENNERwhen deciding whether to update bounds; importArticleType.backend/service_multi-repricer/app/api/v1/endpoints/otto_articles.py— RespectArticleType.PENNERwhen deciding whether to update bounds; importArticleType.backend/service_multi-repricer/app/api/v1/endpoints/kaufland_articles.py— RespectArticleType.PENNERwhen deciding whether to update bounds; importArticleType.backend/service_multi-repricer/app/api/v1/endpoints/shopify_articles.py— RespectArticleType.PENNERwhen deciding whether to update bounds; importArticleType.backend/service_multi-repricer/app/models/repricer_articles.py— Normalize incomingarticle_typevalues (accepts capitalized or mixed-case) via afield_validatorso the API will acceptPenner,penner,PENNER, etc. without raising Pydantic enum validation errors.frontend/src/pages/MultiRepricer/Tabs/BaseArticles/BaseArticles.jsx— AddArticle Typecolumn, search filter, and color-coded badges; exposeprice_adaptation_datesandratiosin 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.sqlto addarticle_type,price_adaptation_datesandratioscolumns to therepricer_articlestable. - Migration file:
docker/postgres/updates/add_penner_to_repricer_articles.sql - For reference, the previous migration that added
last_inbound_dateis: docker/postgres/updates/add_last_inbound_date_to_repricer_articles.sql
Usage notes¶
-
pennerarticles 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
pennerarticles.