Overview

Inklura keeps your stock in a signed movement ledger that reflects what physically happens on your shelves, and uses it to prepare your supplier orders. Three mechanisms drive the whole system:

  • a ledger stock that only moves on a physical event (customer delivery, supplier reception, count, correction) and that can go negative;
  • a supplier-ordering engine that recalculates draft orders as soon as demand changes;
  • a three-step supplier email (stage → review → send) that guarantees the lines you review are the lines that go out.

This page is the map: the actors, the end-to-end flow, the stock model and the pages that detail each part.

The actors

Actor Role
Back office (the /manage screens) Where you create and edit orders, confirm deliveries and receptions, review supplier emails and correct stock
Your storefront (for example PrestaShop) Source of customer orders: they arrive in real time and are also caught up by a regular sync
The supplier-ordering engine Recalculates the draft orders of each affected supplier as soon as an event changes demand
Scheduled tasks Sync, fallback recalculation, morning email staging, reconciliation and automatic validation of forgotten events. See Daily timeline
Your suppliers Receive order emails and deliver; each one has its own ordering days and times

The system map

The nominal flow, from the customer order to the stock increase at reception:

flowchart TB
  PS["Customer order<br/>(storefront)"]
  PS -->|real time| ORD[("Order in Inklura")]
  PS -->|catch-up sync| ORD
  BO["Back office"] -->|create, edit, cancel| ORD
  ORD -->|every change| RECALC["Supplier-ordering<br/>engine"]
  RECALC --> SO["Draft supplier<br/>orders"]
  SO -->|"morning stage (nothing sent)"| MAIL["Email review queue"]
  MAIL -->|"send (manual or automatic)"| VEND["Suppliers"]
  VEND -->|delivery| RCPT["Confirmed reception"]
  RCPT -->|"increase (+)"| LEDGER[("Ledger stock")]
  BO -->|"confirmed customer delivery (−)"| LEDGER

Top to bottom:

  1. Demand comes in. A customer order is received in real time, and a regular sync catches any that were missed. Both paths end on the same order in Inklura, without duplicates.
  2. Reordering follows events. Every create, edit, cancellation or status change of a customer order (as well as a supplier-order cancellation, a reception, a manual stock correction or a product update) triggers a recalculation of the affected supplier's drafts, usually within tens of seconds. Recalculations for the same supplier run one after another, never in parallel. Detail: Supplier orders.
  3. The email goes through three steps. Every morning, Inklura renders each draft's email preview without sending anything. You review and adjust, then sending re-renders the email from the current lines and blocks if the lines changed since the preview. If you turn on Automatic sending (« Envoi automatique ») on a supplier's record (together with Sending allowed, « Envoi autorisé »), its orders go out on their own shortly after the slot time, unless the pre-send check reports a shortfall: the order is then held and you are notified by email.
  4. Stock only moves on a physical event. A customer delivery decreases it, a supplier reception increases it. Taking an order and the storefront sync never touch stock. Detail: Stock write paths.
Note

Two safety nets complement this flow. A periodic recalculation (every 30 minutes) catches an event that got lost. An automatic validation confirms, after a 12-hour grace period, planned receptions and deliveries that nobody confirmed. Confirming at the physical event remains the normal way. See Safety nets.

The two-column stock model

Every tracked product carries two stock values with distinct roles:

flowchart LR
  MV["Physical movement<br/>(reception, delivery,<br/>count, correction)"] --> SA["Ledger entry<br/>± quantity"]
  SA -->|same operation| L[("Ledger stock<br/>signed, may be negative")]
  L -->|"max(0, ledger stock)"| S[("Displayed stock<br/>never negative")]
  L -->|through guardrails| R["Supplier-ordering<br/>engine"]
  S --> UI["Back-office<br/>screens and lists"]
  • The ledger stock is the authority: opening stock + receptions − deliveries ± corrections. It may be negative: that means a customer delivery was recorded before the reception that covers it. The next reception nets out that gap instead of stacking on a counter stuck at 0, which makes "phantom stock" born from a clamped counter impossible.
  • The displayed stock is the mirror shown in screens and lists: it is always max(0, ledger stock).
  • Every physical movement (reception, delivery, count) writes a ledger entry and updates both values in the same operation. Every stock change leaves an entry in the journal, and a daily check flags any gap.
  • The supplier-ordering engine reads stock through guardrails: an untracked product counts as 0, so does a just-in-time product until you validate its stock, and negative stock is always read as 0. Detail: The stock ledger.

The movement journal has three states: planned (a projection, for example the expected increase from a sent supplier order), applied (counted in stock) and cancelled. Only applied movements count. Each entry also records its origin: manual correction, customer delivery, supplier reception, inventory count, and so on. A reception or delivery validated automatically keeps its origin and carries a note that identifies it.

The rhythm of the day

Cadence Task What it does
every 3 h Storefront order sync Imports and refreshes recent orders, without touching stock
every 3 h Storefront product sync Updates products and suppliers, without touching stock
every 30 min Fallback recalculation Catches missed supplier-order recalculations
every morning Email staging Renders previews for review, sends nothing
every 15 min Automatic sending Sends the orders of automatic-sending suppliers whose slot has just passed
once a day Health check Read-only: stock consistency indicators
once a day Reconciliation Recomputes the expected state of drafts and corrects drift
every 2 h Automatic validation Confirms receptions and deliveries planned more than 12 h ago and never confirmed

The hour-by-hour detail is on Daily timeline, and a full week on A typical week.

Pages in this section

Page What it covers
Explained simply How it works in everyday words, with worked numbers
The stock ledger Signed stock, displayed stock, the movement journal and read guardrails
Stock write paths Every action that changes stock and the common rule they follow
Supplier orders Event-driven recalculation, send slots, stage → review → send
Daily timeline The scheduled tasks and how they follow each other through the day
A typical week Supplier waves, delivery rounds, assumed receptions and counting windows
PrestaShop sync Orders and products coming from PrestaShop, and their effect on stock
Back office The /manage screens: stock grid, journal, counts, health
Configuration The settings that change stock and ordering behaviour
Safety nets Consistency checks and automatic catch-ups

Three guarantees

  1. The ledger stock follows physical reality. It only moves on delivery, reception, count or correction, never when an order is taken or during a sync. A negative value is information (an outflow recorded before the inflow that covers it), not an error.
  2. No ordering into the past. Demand is never attached to a supplier slot that has already passed; if no remaining slot can deliver in time, it is flagged so you can handle it directly.
  3. What you review is what goes out. Sending re-renders the email from the current lines and refuses to go out if they changed since the preview (lines, quantities or pack sizes). A cancelled order is never emailed, and neither is an email with no lines.

Where to start