1.2.5
🚀 New Features¶
- Kaufland Repricer — Per-SKU Price Push: Add a new API endpoint and UI action to send min/max prices for a single SKU to Kaufland from the articles table (per-row button). This enables targeted price updates without sending prices for the entire catalog.
- Otto — Sync New Articles: Add
POST /otto/articles/sync_from_ottoand a "Sync from Otto" UI action to import product variations that are not yet tracked. The import skips existing SKUs and only adds variations with quantity > 0.
🔧 Improvements¶
- Plenty — Eval file & historical stock values: Allow recalculating stock values for a specific historical
snapshot_date(not only the latest snapshot). When recalculating past snapshots the service now regenerates the Plenty eval XLSX so the exported evaluation includes corrected stock values for that date. - Plenty UI: Add a date picker to the "Calculate Stock Values" action so users can select a historical date to recalculate.
- Kaufland Repricer — Margin rule logic & min/max prices: Rework margin-rule matching and price calculations:
- Rule selection now picks the most specific
buy_pricethreshold (highest threshold ≤ buy price), avoiding accidental matches to broad default rules. minimum_priceis computed to satisfy both the configured minimum margin (%) and the absolute minimum profit (€) (floor = max of both constraints).maximum_priceis computed from the configured maximum margin settings and absolute profit target (ceiling = max of both constraints) and is stored on the article.maximum_priceis rounded to end with.90(e.g. 55.93 → 55.90, 55.02 → 55.90) to match pricing conventions.expected_profitis calculated solely from the current kaufland price and is independent from the min/max repricer bounds.
🐛 Bug Fixes¶
-
service-invoice: Fix Rituals invoice download special case — follow the click-tracking redirect inside a headless browser using a residential proxy (Playwright + Webshare-style proxies) and download the PDF via proxy when Playwright indicates a direct-download response; fall back to the email attachment if all URL-based attempts fail.
-
Kaufland Repricer — Rule matching bug: Fix an incorrect fallback and indentation issue that could cause the wrong margin rule to be selected for some buy prices, which previously led to mismatched min/max prices and incorrect profit expectations.
-
PrepBusiness Simulator — Paste Full Row: The simulator now accepts pasting a complete spreadsheet row (tab/CSV row) to quickly populate a test product entry for simulations and testing.
SQL¶
- add_max_price_kaufland.sql