Skip to content

Changes

Started by timer
Started 8 hr 31 min ago
Took 1 min 6 sec on built-in

Summary

  1. quick-rma: reuse an orphaned marketplace RMA only when it covers every receipt line (details)
  2. quick-rma: create a fresh RMA next to a marketplace RMA that already authorizes a shipment line (details)
  3. Per-customer DHL/DPD accounts with shared three-tier account resolvers (details)
  4. Revert scanbot SDK files accidentally included in the previous commit (details)
  5. SIS listings: sortable product name, own sortable article-number column, narrower channel column, BOM tag directly after the name (details)
  6. SMS (Sales Management System): rename from SIS, purchase cost + marketplace fee + VAT pricing floor per listing (details)
  7. amazon-stocks: follow the /api/sales/sms route rename (details)
  8. SMS: shipping + packaging in the pricing floor (DHL/DPD contract rates incl. surcharges), column regroup, Buy Box removed (details)
  9. SMS: hover popovers (header info, BOM, min-price calculation) as teleported UPopover hover cards so the table overflow no longer clips them (details)
  10. SMS: DPD shipping in the pricing floor = contract price only (3,00 €); energy / fuel / toll / peak add-ons are opt-in env values defaulting to 0 (details)
  11. SMS: DPD shipping per the myDPD G300 price list — base 3,00 € plus Maut 0,35 €, Sicherheitsgebühr 0,15 €, Energiezuschlag Straße and Emergency Fuel Surcharge (env defaults 31 % / 4,08 %) (details)
Commit 3e576690747f146b8c04fea34ecdde0aa3a6aced by info
quick-rma: reuse an orphaned marketplace RMA only when it covers every receipt line

A completed Amazon-imported RMA on the shipment (e.g. 535011 / RMA 30595)
was reused for the mobile customer return even when it had no line for a
returned product; the receipt line then had neither M_RMALine_ID nor
C_OrderLine_ID and iDempiere rejected it with 'Fill mandatory fields:
Sales Order Line'. The line matching now lives in matchRmaLine and is
run as a pre-check: if any receipt line stays unmatched, a fresh RMA is
created instead of reusing the orphan.
The file was modifiedserver/api/inouts/quick-rma.post.ts (diff)
Commit 8de3a55c8e84c8912d1c0b80de1104909c99dff9 by info
quick-rma: create a fresh RMA next to a marketplace RMA that already authorizes a shipment line

Follow-up to 3e5766907. The fresh RMA for shipment 535011 was rejected
with 'Amount to be returned is greater than the amount shipped': the
Amazon RMA 30595 already authorizes both shipped HYDRO units, and
iDempiere's MRMALine.checkQty sums every completed/closed RMA line on a
shipment line (a completed RMA also takes no new lines).

quick-rma now collects the authorized qty per shipment line from CO/CL
RMAs and creates such an RMA line without M_InOutLine_ID (product + qty,
description notes the conflict); the receipt line still links to it via
M_RMALine_ID. useReturnedQty attributes receipt lines of unlinked RMA
lines to the shipment line by product (callers pass the shipment lines)
so the remaining qty stays correct.
The file was modifiedapp/pages/mobile/return.vue (diff)
The file was modifiedapp/pages/integrations/returns-desktop.vue (diff)
The file was modifiedapp/composables/useReturnedQty.ts (diff)
The file was modifiedserver/api/inouts/quick-rma.post.ts (diff)
Commit ae86f94c382a71f1c614b0307eddc715e812af80 by info
Per-customer DHL/DPD accounts with shared three-tier account resolvers

Labels, reprints, cancels, resets and tracking now pick the carrier account in
one place per carrier (server/utils/dhlAccountResolver.ts, dpdAccountResolver.ts):
order source with its own account → the org's business partner when
"customer uses own account" is on and credentials are filled → LogYou main.
Label creation is refused (422) for a flagged customer without credentials
anywhere, so a manual order can no longer be labelled on the LogYou account by
accident. Custom accounts get a Kleinpaket billing number; without it a
qualifying parcel ships as V01PAK instead of a V62KP on the wrong procedure.

Partner create/edit/view and order-source create/edit/view carry the new
fields with precedence explanations, tooltips and carrier icons (DE flag,
globe, DHL Kleinpaket badge, DPD card). Partner saves invalidate the shared
org-partner cache (orgPartnerCache.ts).

Also: the DHL cancel route no longer returns the account password to the
browser, and dhlCustomHelper no longer shares one token cookie across
different custom accounts.
The file was modifiedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd-threads.js (diff)
The file was modifiedapp/components/partners/PartnerForm.vue (diff)
The file was modifiedpublic/scanbot/bin/complete/ScanbotSDK.Core-simd.js (diff)
The file was modifiedserver/api/commission/parcels/dhl/manual.post.ts (diff)
The file was modified.claude/rules/partners/partner-edit-form.md (diff)
The file was addedserver/utils/dpdAccountResolver.ts
The file was addedserver/utils/orgPartnerCache.ts
The file was addedserver/utils/dhlAccountResolver.ts
The file was modifiedserver/api/commission/parcels/dpd/multi.post.ts (diff)
The file was modifiedapp/pages/settings/order-sources/[id]/edit.vue (diff)
The file was modifiedserver/api/inouts/[id]/reset-commission.post.ts (diff)
The file was modifiedapp/components/settings/OrderSourceForm.vue (diff)
The file was modifiedserver/api/commission/parcels/dhl/multi.post.ts (diff)
The file was modifiedserver/api/commission/trackings/tracking.get.ts (diff)
The file was modifiedserver/api/commission/parcels/dhl/index.post.ts (diff)
The file was modifiedserver/utils/dhlHelper.ts (diff)
The file was modifiedserver/api/commission/parcels/dhl/index.put.ts (diff)
The file was modifiedserver/api/partners/partners/store.post.ts (diff)
The file was modifiedpublic/scanbot/bin/document-scanner/ScanbotSDK.Core-simd-threads.js (diff)
The file was modifiedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd.js (diff)
The file was modifiedpublic/scanbot/ScanbotSDK.ui2.min.js (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedserver/api/commission/parcels/dpd/index.post.ts (diff)
The file was modifiedapp/pages/partners/partners/[id]/edit.vue (diff)
The file was modifiedserver/api/commission/parcels/dhl/index.get.ts (diff)
The file was modifiedpublic/scanbot/ScanbotSDK.min.js (diff)
The file was modifiedpublic/scanbot/bin/document-scanner/ScanbotSDK.Core.js (diff)
The file was modifiedapp/pages/settings/order-sources/[id]/view.vue (diff)
The file was modifiedapp/pages/partners/partners/[id]/view.vue (diff)
The file was modified.claude/rules/fulfillment/shippers.md (diff)
The file was modifiedapp/pages/partners/partners/create.vue (diff)
The file was modifiedserver/utils/dhlCustomHelper.ts (diff)
The file was modifiedpublic/scanbot/bin/complete/ScanbotSDK.Core-simd-threads.js (diff)
The file was modifiedserver/api/settings/order-sources/store.post.ts (diff)
The file was modifiedserver/api/partners/partners/update.put.ts (diff)
The file was modifiedserver/api/tracking/[number].get.ts (diff)
The file was modifiedserver/api/commission/parcels/dpd/manual.post.ts (diff)
The file was modifiedpublic/scanbot/bin/complete/ScanbotSDK.Core.js (diff)
The file was modifiedserver/api/settings/order-sources/update.put.ts (diff)
The file was modifiedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Core.js (diff)
The file was modifiedserver/utils/dhlMainCredential.ts (diff)
The file was modifiedapp/pages/settings/order-sources/create.vue (diff)
The file was modifiedpublic/scanbot/bin/document-scanner/ScanbotSDK.Core-simd.js (diff)
Commit eca31fc6c04dee48d4a8055e46ab9918ef08ec39 by info
Revert scanbot SDK files accidentally included in the previous commit
The file was modifiedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Core.js (diff)
The file was modifiedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd-threads.js (diff)
The file was modifiedpublic/scanbot/bin/complete/ScanbotSDK.Core.js (diff)
The file was modifiedpublic/scanbot/bin/document-scanner/ScanbotSDK.Core-simd-threads.js (diff)
The file was modifiedpublic/scanbot/ScanbotSDK.min.js (diff)
The file was modifiedpublic/scanbot/bin/document-scanner/ScanbotSDK.Core.js (diff)
The file was modifiedpublic/scanbot/bin/complete/ScanbotSDK.Core-simd.js (diff)
The file was modifiedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd.js (diff)
The file was modifiedpublic/scanbot/bin/complete/ScanbotSDK.Core-simd-threads.js (diff)
The file was modifiedpublic/scanbot/bin/document-scanner/ScanbotSDK.Core-simd.js (diff)
The file was modifiedpublic/scanbot/ScanbotSDK.ui2.min.js (diff)
Commit a0cd3c5c3644df8fd9b156bd04c162d698e23056 by info
SIS listings: sortable product name, own sortable article-number column, narrower channel column, BOM tag directly after the name

Also adds reference/test-scripts/ebay-listings-import-check.mts, a dry read of the eBay adapter import (one line per listing with its variant rows) used to confirm that variation listings are imported one row per SKU.
The file was addedreference/test-scripts/ebay-listings-import-check.mts
The file was modifiedapp/pages/sales/sis/index.vue (diff)
The file was modified.claude/rules/marketplaces/marketplace-listings.md (diff)
Commit bf887d9ffd75f0eaa83129cabbaf69679b861f2d by info
SMS (Sales Management System): rename from SIS, purchase cost + marketplace fee + VAT pricing floor per listing

- /sales/sis → /sales/sms (page, components SalesSms*, API /api/sales/sms/**, menu + lang labels; old URL = 301 stub)
- shared/utils/sisPricing.ts: fee models (band / marginal tiers, fixed per order, min fee, extra fixed), minimal gross
  price solver (margin 0 after VAT, fees and purchase cost) and margin at a given price — used by server and page
- server/utils/listings/feeModel.ts: eBay.de business fee schedule by top-level category (+0,35/0,45 € per order),
  Amazon.de referral fee by product type (apparel 5/10/15 % tiers, min 0,30 €) blended with a real fee estimate
- sisMatching: purchase price list per org (IsSOPriceList=N), net purchase price of products and BOM components
- listings GET: purchaseCost (BOM = Σ component price × QtyBOM), vatRate, feeModel, minPrice, marginAtTarget per row
- eBay import: primary category path per listing via one cached GetItem (fee schedule key)
- page: Purchase / Fees / Min. price columns (stacked cells, breakdown popover), current marketplace price under the
  Price input and internal qty under the Qty input (old marketplace-price / int-qty columns removed), two-line headers,
  sortable Source / Purchase / Fees / Price / Qty / Min. price, BOM tag right-aligned, SKU hidden when = article no.
The file was removedserver/api/sales/sis/listings/[id]/relist.post.ts
The file was addedserver/api/sales/sms/listings/index.get.ts
The file was removedserver/api/sales/sis/changes.get.ts
The file was addedserver/api/sales/sms/listings/[id]/relist.post.ts
The file was addedshared/utils/sisPricing.ts
The file was removedserver/api/sales/sis/changes/[id]/cancel.post.ts
The file was modifiedserver/utils/listings/adapters/ebay.ts (diff)
The file was addedserver/api/sales/sms/listings/import-preview.post.ts
The file was modified.claude/rules/marketplaces/marketplace-listings.md (diff)
The file was removedserver/api/sales/sis/listings/[id].put.ts
The file was addedserver/api/sales/sms/listings/import.post.ts
The file was removedserver/api/sales/sis/listings/import.post.ts
The file was addedserver/api/sales/sms/listings/[id]/link-product.put.ts
The file was addedserver/utils/listings/feeModel.ts
The file was addedserver/api/sales/sms/changes/[id]/cancel.post.ts
The file was removedserver/api/sales/sis/listings/[id]/delist.post.ts
The file was removedserver/api/sales/sis/listings/import-preview.post.ts
The file was addedserver/api/sales/sms/status.get.ts
The file was removedapp/components/sales/sis/ImportWizard.vue
The file was removedserver/api/sales/sis/listings/create.post.ts
The file was addedserver/api/sales/sms/listings/remote.get.ts
The file was removedserver/api/sales/sis/flush.post.ts
The file was addedserver/api/sales/sms/listings/[id]/delist.post.ts
The file was addedapp/components/sales/sms/ListProductsModal.vue
The file was modifiedserver/utils/sisMatching.ts (diff)
The file was addedserver/api/sales/sms/listings/[id].put.ts
The file was modifiedserver/utils/amazonSpApi.ts (diff)
The file was addedapp/components/sales/sms/ImportWizard.vue
The file was modifiedapp/components/MainNavigationMenu.vue (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was removedserver/api/sales/sis/listings/[id]/link-product.put.ts
The file was removedapp/components/sales/sis/ListProductsModal.vue
The file was removedserver/api/sales/sis/listings/index.get.ts
The file was addedapp/pages/sales/sms/index.vue
The file was removedserver/api/sales/sis/listings/remote.get.ts
The file was addedserver/api/sales/sms/listings/[id].delete.ts
The file was modifiedreference/test-scripts/listing-outbox-smoke.mts (diff)
The file was modifiedserver/api/amazon/stocks/sync.post.ts (diff)
The file was removedserver/api/sales/sis/offers.post.ts
The file was removedserver/api/sales/sis/listings/[id].delete.ts
The file was modifiedapp/pages/sales/sis/index.vue (diff)
The file was addedserver/api/sales/sms/products-defaults.get.ts
The file was removedapp/components/sales/sis/ChangeHistoryDrawer.vue
The file was addedapp/components/sales/sms/ChangeHistoryDrawer.vue
The file was modifiedserver/utils/listings/outbox.ts (diff)
The file was addedserver/api/sales/sms/flush.post.ts
The file was modifiedapp/composables/menu/admin/sales.ts (diff)
The file was removedapp/components/sales/sis/LinkProductModal.vue
The file was removedserver/api/sales/sis/order-sources.get.ts
The file was addedserver/api/sales/sms/listings/create.post.ts
The file was removedserver/api/sales/sis/status.get.ts
The file was addedserver/api/sales/sms/changes.get.ts
The file was addedserver/api/sales/sms/offers.post.ts
The file was addedapp/components/sales/sms/LinkProductModal.vue
The file was removedserver/api/sales/sis/products-defaults.get.ts
The file was addedserver/api/sales/sms/order-sources.get.ts
Commit 607d12b015bcbe3e04f81eabf1fbb045291e75e9 by info
amazon-stocks: follow the /api/sales/sms route rename
The file was modifiedapp/pages/fulfillment/amazon-stocks/index.vue (diff)
Commit bd07fa04f6e2e25ad8937f48263361a40d36a041 by info
SMS: shipping + packaging in the pricing floor (DHL/DPD contract rates incl. surcharges), column regroup, Buy Box removed

- listings GET: national DHL Paket ≤ 2 kg and DPD Classic from CUST_CarrierRate + fixed contract surcharges (toll/CO2),
  DHL peak (Nov–Dec) / peak-in-peak by date, monthly energy surcharges via env (SMS_DHL_ENERGY_PCT 4.75,
  SMS_DPD_ENERGY_PCT 31, SMS_DPD_EFS_PCT 4.08), packaging SMS_PACKAGING_COST 0.50; minPrice (DHL) + minPriceDpd per row
- page: column order Purchase → Shipping → Fees → Min. price (tinted group) → Price → Qty; margin at the typed price under
  the Price input; info icons with column descriptions instead of header sub-lines; Buy Box column/filter/stat removed
The file was modifiedserver/api/sales/sms/listings/index.get.ts (diff)
The file was modifiedapp/pages/sales/sms/index.vue (diff)
The file was modified.claude/rules/marketplaces/marketplace-listings.md (diff)
Commit 43b81bebfc89297cad74e7bab5069b3568b42af3 by info
SMS: hover popovers (header info, BOM, min-price calculation) as teleported UPopover hover cards so the table overflow no longer clips them
The file was modifiedapp/pages/sales/sms/index.vue (diff)
Commit 670f0df00d61ec4a40411ceec188f5885906342a by info
SMS: DPD shipping in the pricing floor = contract price only (3,00 €); energy / fuel / toll / peak add-ons are opt-in env values defaulting to 0
The file was modifiedserver/api/sales/sms/listings/index.get.ts (diff)
The file was modified.claude/rules/marketplaces/marketplace-listings.md (diff)
The file was modifiedapp/pages/sales/sms/index.vue (diff)
Commit 553300ed0ab8162ec41f0defd9721c7aa02fdab1 by info
SMS: DPD shipping per the myDPD G300 price list — base 3,00 € plus Maut 0,35 €, Sicherheitsgebühr 0,15 €, Energiezuschlag Straße and Emergency Fuel Surcharge (env defaults 31 % / 4,08 %)
The file was modifiedserver/api/sales/sms/listings/index.get.ts (diff)
The file was modifiedapp/pages/sales/sms/index.vue (diff)
The file was modified.claude/rules/marketplaces/marketplace-listings.md (diff)