Skip to content

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_otto and 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_price threshold (highest threshold ≤ buy price), avoiding accidental matches to broad default rules.
  • minimum_price is computed to satisfy both the configured minimum margin (%) and the absolute minimum profit (€) (floor = max of both constraints).
  • maximum_price is computed from the configured maximum margin settings and absolute profit target (ceiling = max of both constraints) and is stored on the article.
  • maximum_price is rounded to end with .90 (e.g. 55.93 → 55.90, 55.02 → 55.90) to match pricing conventions.
  • expected_profit is 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