Skip to content

Handling Time and the Shipping Promise

The Challenge

Every marketplace promises the buyer when an order will leave the warehouse – the handling time. Whoever ships later collects late shipments, and marketplaces suspend seller accounts for them: Amazon from a late shipment rate of 4 %.

But the goods come from different sources that are not equally fast. Your own warehouse ships today, one supplier on the same day, another only after two or three working days. A single quantity that adds everything up promises the fastest handling time for every unit – and the slow units ship late.

The Principle

Every unit reported must be shippable within the promise.

For this, merchantCENTRAL keeps a list of sources: your own stock and every vendor, each with its quantity and its handling time in working days. Quantity and promise come from this one list.

The List of Sources

Source Quantity Handling time
Own stock Available inventory by the inventory calculation method and locations Own Stock Handling Time from the setup
Vendor (one row per vendor) Quantity from the supplier offers Handling Time (Days) on the vendor, otherwise the Default Supplier Handling Time

Which supplier offers count – on every marketplace, with or without handling time:

  • only offers of suppliers that are switched on,
  • no offers with the status Error,
  • if a Max. Supplier Offer Age is set in the setup, no offers that no import has confirmed for longer,
  • if more than one supplier connector reports the same vendor (for example its own connector and an aggregator like ITscope), the largest report counts, not the sum – both describe the same shelf.

The stock source of the marketplace item still applies: Own Stock Only lists no vendor, Supplier Only no own stock.

Master Data

On the vendor

On the vendor card, section merchantCENTRAL:

Field Description
Handling Time (Days) Working days from the vendor receiving the order to the shipment to the end customer. 0 = same working day. If the vendor delivers through your own warehouse, include your own processing time.
Handling Time Specified Set as soon as you enter a handling time – including 0. Clear it to use the default handling time again.
Order Cut-off Time Until this time the vendor handles an order on the same working day. Empty = same as your own cut-off time.

A vendor without a maintained handling time is treated as slow: it gets the default handling time from the setup (3 by default). That is why merchantCENTRAL tells "0 entered" apart from "nothing entered".

Not the lead time

The standard Lead Time Calculation of the vendor describes when goods arrive in your warehouse. The handling time describes when the parcel is on its way to the end customer. merchantCENTRAL does not use the standard field for it.

In the setup

Field Description
Own Stock Handling Time (Days) Working days from receiving an order to the shipment from your own warehouse. 1 by default.
Own Stock Order Cut-off Time Until this time an order is handled on the same working day.
Default Supplier Handling Time (Days) For vendors without a handling time of their own. 3 by default.
Max. Supplier Offer Age (Days) Older supplier offers do not count. Empty = no maximum age.

Order cut-off time

The promise to the marketplace is given for your order cut-off time. A vendor that stops taking orders earlier than you handles an order arriving in between only on the next working day. It therefore gets one working day more – the effective handling time. Without a cut-off time of its own it takes yours; if both are empty, nothing is corrected.

Example: your cut-off time is 15:00, the vendor's 12:00, its handling time 1 day → effective 2 days.

Calendar

Working days come from the base calendar of the company (Company Information → Base Calendar Code) through the standard calendar management of Business Central: weekends and holidays that are non-working there do not count. Without a base calendar, Monday to Friday are working days.

The Rule per Marketplace

On the Marketplace Card, section Handling Time:

Field Description
Use Handling Time Off by default, so running channels do not change.
Max. Handling Time (Days) Longest promise. Slower sources do not count. Empty = no maximum.
Min. Quantity for Promise Quantity N the fastest sources must hold together. 1 when switched on.

Switched on:

  1. The sources are sorted by effective handling time, fastest first; sources above the maximum are left out.
  2. The promise D is the smallest handling time at which the accumulated quantity reaches at least N.
  3. The quantity of all sources with a handling time up to D is reported.
  4. If N is never reached, all allowed sources count, and D is the handling time of the slowest one.
  5. Cross-channel deduction, safety stock, bundle, percentage and maximum quantity then apply to this quantity as usual – see Inventory Calculation.

Minimum quantity and safety stock

The rule decides before the safety stock is deducted. If the safety stock is larger than what the fast sources hold, nothing is left after the deduction, even if a slower source would have enough. Then set the minimum quantity to at least the safety stock plus the quantity you want to show. For bundles, the minimum quantity counts single units, not bundles.

Switched off: the quantity is the sum as before (with the offer filters above). The promise is calculated anyway – as the handling time of the slowest source that contributes to the quantity. A connector can therefore send it safely.

Example

Own stock 2 units (0 days), vendor A 50 units (1 day), vendor B 200 units (3 days):

Setting Quantity reported Promise
On, N = 1 2 0 days – own stock is enough
On, N = 10 52 1 day – own stock and vendor A
On, N = 100 252 3 days – all three sources
On, N = 100, max. 2 days 52 1 day – vendor B is too slow, N is not reached
Off 252 3 days – the slowest contributing source

Special cases

  • Quantity fixed: the fixed quantity stays. The promise is the handling time of the slowest allowed source – the fixed quantity may come from any of them.
  • Quantity taken over by a connector (event OnCalculateAvailableInventory, e.g. Amazon FBA): likewise the slowest allowed source.
  • Overdrawn own stock (open orders exceed the inventory): the negative stock is always deducted – those orders will be served from the other sources – and does not set the promise.

Override per sales channel

The card of the sales channel (sub-account) has the same three fields. Default in Use Handling Time takes the setting of the marketplace, Yes or No applies to the channel only; an empty maximum or minimum quantity takes the value of the marketplace.

On the Marketplace Item

Field Description
Handling Time (Days) The calculated promise that goes with the quantity. Choosing it shows the inventory sources – each source with quantity, handling time, cut-off adjustment, effective handling time and whether it counts towards the quantity.
Last Published Handling Time (Days) The promise the marketplace last accepted.

When the calculated promise differs from the last published one, the item is flagged for a quantity update, because both are sent together. When the connector confirms the quantity update, the promise sent counts as published.

Which marketplaces send the promise is up to their connector.

Ship Deadlines

The latest ship date the marketplace sets is written by the order import to the sales order and to the marketplace order, and so is the shipping priority when the marketplace sends one. The tiles Shipments Due Today and Shipments Overdue show the orders that have to leave today or should have left already – see Activities.

For Connector Developers

Public interface in ALN MC Inventory Calc:

procedure CalcAvailableInventory(var MarketplaceItem: Record "ALN MC Marketplace Item"; var HandlingDays: Integer): Decimal
procedure GetAvailableInventory(MarketplaceCode: Code[20]; SubAccountCode: Code[50]; ItemNo: Code[20]; VariantCode: Code[20]; var HandlingDays: Integer): Decimal
procedure GetAvailableInventoryForLocation(MarketplaceCode: Code[20]; SubAccountCode: Code[50]; ItemNo: Code[20]; VariantCode: Code[20]; LocationCode: Code[10]; var HandlingDays: Integer): Decimal
procedure GetInventorySources(var MarketplaceItem: Record "ALN MC Marketplace Item"; var TempInventorySource: Record "ALN MC Inventory Source" temporary)

CalcAvailableInventory takes the promise over into the item and sets Update Quantity when it changed; the caller saves the item. After sending, call MarkQuantityUpdated() or SetQuantityUpdated() on the item. The existing signatures without HandlingDays stay unchanged.

Earliest ship date of a source for a given order moment (ALN MC Handling Time Mgt.):

procedure GetEarliestShipDate(InventorySource: Record "ALN MC Inventory Source"; OrderDateTime: DateTime): Date

Events in ALN MC Inventory Source Mgt.: OnAfterBuildInventorySources (change the list of sources) and OnAfterCalcHandlingTime (adjust quantity and promise).