Skip to content

1.10.4

βš™οΈ Patch 1.10.4 β€” Nightly FBM/FBA SP-API, buy-price force, FeesEstimate (2), packages

πŸš€ Summary

Rules-on FBM/FBA get a full SP-API min/max recalculation every nightly base cron (and on manual recalc), so empty shells and margin-rule prices stay fresh.

Buy-price force now also includes penner/renner: shopping-table EK changes clear article_type and run force_min_max on all channels β€” including FBM/FBA SP-API β€” so wave bounds are rewritten for the new buy price. UVP stays excluded and profit-only.

Nightly main pass uses force_min_max=False so unchanged wave targets are not wiped every night; only the buy-price / package second pass forces wave rewrites.

FBM fee estimate for SKUs with parentheses (e.g. MontaleArabiansTonkaEdP100ml(2)): SP-API calls no longer use force_safe_sku=True, which percent-encoded () into the request Identifier so Amazon returned β€œNo ASIN found” for active Seller Central offers (ASIN still exists β€” the lookup SKU was wrong).

Package mappings SFTP: when the remote directory has multiple files, download the .csv whose filename contains JTL (case-insensitive).

1:1 bundles share one package assignment: CSV by any peer EAN first, else weight using the max peer weight, else default S β€” applied to parent and alias together (POST /assign, base sync, bundle sync).

✨ Details

Area Behavior
FBM/FBA Β· rules-on Always full SP-API (nightly + manual)
FBM/FBA Β· wave Profit-only unless force_min_max (buy-price / package)
FBM/FBA Β· UVP Always profit-only (UVP-pinned bounds)
Buy-price force SKUs Includes penner/renner; excludes UVP only; clears article_type
Base cron main pass FBM/FBA without force_min_max (wave safe)
Base cron second pass force_recalc_channels_for_buy_price_change for EK/package deltas
SP-API Β· FeesEstimate force_safe_sku=False so SKU(2) is not sent as SKU%282%29
Package SFTP Prefer .csv with JTL in the name; fallback to sole CSV if no JTL match
Package Β· 1:1 peers Shared assignment: CSV (any peer EAN) β†’ max peer weight β†’ default S

πŸ“Œ Notes

  • Redeploy multi-repricer (and refresh frontend for Package Mappings SFTP copy).
  • After an EK change on a penner/renner SKU, expect full channel force recalc + cleared article type until n8n re-tags the wave.
  • UVP SKUs still skip force (buy price still syncs).
  • Re-run Assign packages (or base sync) so existing 1:1 pairs pick up shared packages.
  • Step-by-step cron scenarios: user guide β€” Cron walkthrough examples.

πŸ“ Files

  • backend/service_multi-repricer/app/services/amazon/spapi_client.py
  • backend/service_multi-repricer/app/services/package_sftp.py
  • backend/service_multi-repricer/app/services/package_assignment.py
  • backend/service_multi-repricer/app/tests/test_spapi_fee_estimate.py
  • backend/service_multi-repricer/app/tests/test_package_mappings_csv.py
  • backend/service_multi-repricer/app/api/v1/endpoints/fbm_articles.py
  • backend/service_multi-repricer/app/api/v1/endpoints/fba_articles.py
  • backend/service_multi-repricer/app/api/v1/endpoints/repricer_articles.py
  • backend/service_multi-repricer/app/api/v1/endpoints/package_mappings.py
  • backend/service_multi-repricer/app/schemas/package_sftp.py
  • backend/service_multi-repricer/app/tests/test_recalculate_channels.py
  • backend/service_multi-repricer/app/tests/test_force_recalc_resolution.py
  • frontend/src/pages/MultiRepricer/Tabs/BaseArticles/PackageMappings.jsx
  • docs/docs/services/service_multi_repricer/user_guide.md
  • docs/docs/services/service_multi_repricer/endpoints/fbm_articles.md
  • docs/docs/services/service_multi_repricer/endpoints/fba_articles.md
  • docs/docs/services/service_multi_repricer/endpoints/repricer_articles.md
  • docs/docs/services/service_multi_repricer/endpoints/package_mappings.md
  • docs/docs/patchnotes/1.10/1.10.4.md β€” this file