Skip to content

1.11.16

⚙️ Patch 1.11.16 — FBM UVP wins over wave; Base Articles FBM display

🚀 Summary

Setting UVP on FBM no longer gets overwritten by penner/renner wave heal on the next recalc. UVP also creates missing min_bound / max_bound (e.g. DE with null bounds). Base Articles expand now reads FBM as an array and shows DE prices from international_pricing.

✨ Details

Area Behavior
UVP vs wave FBM/FBA profit-only recalc pins UVP targets and skips wave history heal when min_uvp / max_uvp are set
Null bounds set_uvp and UVP recalc create min_bound / max_bound when they were null (or empty pricing → DE), so UVP can be applied without a prior SP-API run
All FBM rows set_uvp updates every FBM detail for the article (get_multi_fbm_details), not only the first
Base Articles UI Expanded FBM block uses primary FBM from the array and DE min_bound / max_bound target_price (Price / Min / Max / Expected Profit / Status)

Example that motivated the fix (RitualsYozakuraGeschenkSetL2025, renner, UVP 79.90 / 94.90): after set UVP, background recalc had rewritten DE to wave prices (~65.90 / 74.90). With this patch UVP stays.

📌 Notes

  • Redeploy service-multi-repricer and frontend.
  • Re-run Set UVP (with FBM checked) on affected SKUs so DE bounds are rewritten correctly.
  • Multi-component bundles / (2) variants still do not inherit UVP automatically (1:1 peers only) — set UVP on those SKUs separately if needed.

✅ Verify

  1. On a renner article with FBM + wave history (e.g. RitualsYozakuraGeschenkSetL2025), set UVP min/max for DE with FBM enabled.
  2. After background recalc, FBM DE min_bound / max_bound match UVP (not wave history).
  3. An FBM row with min_bound / max_bound = null gets bounds created and pinned to UVP.
  4. Base Articles → expand article → FBM shows Price / Min / Max / Expected Profit / Status (not dashes) when fbm[] data is present.

📁 Files

  • backend/service_multi-repricer/app/services/wave_pricing.py — pin_uvp_targets_to_international_pricing
  • backend/service_multi-repricer/app/api/v1/endpoints/fbm_articles.py — UVP pin + skip wave when UVP
  • backend/service_multi-repricer/app/api/v1/endpoints/fba_articles.py — same for FBA
  • backend/service_multi-repricer/app/api/v1/endpoints/repricer_articles.py — set_uvp all FBM rows + create null bounds
  • backend/service_multi-repricer/app/tests/test_wave_pricing.py, test_uvp.py, test_recalculate_channels.py
  • frontend/src/pages/MultiRepricer/Tabs/BaseArticles/BaseArticles.jsx — FBM array + DE bounds display
  • docs/docs/patchnotes/1.11/1.11.16.md — this file