Skip to content

Safety Gates

Five limits decide whether a run may order. A run that fails a gate does not order — depending on the gate it stops or waits for approval. The reason is always recorded on the run.

Every gate is switched off with 0.


Overview

Gate Field Result on breach Effect
Minimum margin Minimum Margin % Margin Too Low stops
Offer age Max. Offer Age (Hours) Offer Too Old stops
Order value Max. Order Value (LCY) Pending Approval waits
Price deviation Max. Price Deviation % Price Deviation waits
Daily limit Max. Value per Vendor and Day (LCY) Limit Exceeded waits

Stops means: the run ends, no purchase order is created. Waits means: the run lands in the approval worklist and can be released by hand.


Minimum margin

The margin an order must leave after the supplier's total landed cost.

Margin % = (Sales Amount − Landed Cost) ÷ Sales Amount × 100

The calculation uses the landed cost, not the goods value: freight and insurance are part of the margin. A vendor offering cheaper goods and charging more freight does not win here.

Below the limit the run stops with Margin Too Low instead of ordering at a loss.

The first gate you should set

The minimum margin catches the most common data error: a supplier price with a misplaced decimal. A cost of 900 against a sales value of 100 gives a margin of −800 % and is rejected before anyone looks.


Offer age

How old a supplier's offer data may be for an automatic order. Measured against the oldest offer used here, not the average.

Set it above the longest import interval

If your supplier imports twice a day, 24 hours is plenty. If it imports once a week and you set 24 hours, every run stops with Offer Too Old. The value has to exceed the longest interval between two imports.

If the timestamp is missing entirely, the gate does not apply — a blank date is not read as infinitely old.


Order value

The purchase value above which a single order needs approval instead of going out automatically.

This gate does not kill the run, it parks it: a large order is not a wrong order, it is one somebody should look at.


Price deviation

How far the supplier price may move between the offer Trading calculated with and the price at transmission time.

This gate does not apply at decision time but immediately before sending. It catches the case that would otherwise go unnoticed: an order sits in the approval worklist for two days, the supplier raises the price in the meantime, and the order goes out at the old one.

The run then ends with Price Deviation and names both prices.


Daily limit per vendor

How much Trading may order from one vendor in one day before further orders need approval.

The backstop

This is the only gate that helps against a runaway loop. Every other gate checks a single order; this one checks the total. An import error that makes a hundred orders look plausible passes every other gate — but not this one.

Set it even if you trust the rest. A value matching your usual daily volume with that supplier, plus some headroom, costs you nothing in normal operation.

Counted is the landed-cost value of every order transmitted to this vendor today.


Order of evaluation

The gates are checked in a fixed order, and the first breach is reported:

  1. Minimum margin
  2. Offer age
  3. Order value
  4. Daily limit per vendor

Margin comes first because "not worth ordering" is a harder no than "large enough to check": approving it would still leave a bad deal.

Price deviation sits outside this sequence — it is checked immediately before transmission.


Where you see the breaches

  • "Blocked Today" cue — how many runs a gate stopped today; click opens the list
  • Approval worklist — what was parked, with the reason next to it
  • Sourcing log — every run with Result Details: which gate, and by how much