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.pybackend/service_multi-repricer/app/services/package_sftp.pybackend/service_multi-repricer/app/services/package_assignment.pybackend/service_multi-repricer/app/tests/test_spapi_fee_estimate.pybackend/service_multi-repricer/app/tests/test_package_mappings_csv.pybackend/service_multi-repricer/app/api/v1/endpoints/fbm_articles.pybackend/service_multi-repricer/app/api/v1/endpoints/fba_articles.pybackend/service_multi-repricer/app/api/v1/endpoints/repricer_articles.pybackend/service_multi-repricer/app/api/v1/endpoints/package_mappings.pybackend/service_multi-repricer/app/schemas/package_sftp.pybackend/service_multi-repricer/app/tests/test_recalculate_channels.pybackend/service_multi-repricer/app/tests/test_force_recalc_resolution.pyfrontend/src/pages/MultiRepricer/Tabs/BaseArticles/PackageMappings.jsxdocs/docs/services/service_multi_repricer/user_guide.mddocs/docs/services/service_multi_repricer/endpoints/fbm_articles.mddocs/docs/services/service_multi_repricer/endpoints/fba_articles.mddocs/docs/services/service_multi_repricer/endpoints/repricer_articles.mddocs/docs/services/service_multi_repricer/endpoints/package_mappings.mddocs/docs/patchnotes/1.10/1.10.4.mdβ this file