Procure-to-pay · Retail

Forty stores. One legal entity.

A store hierarchy built on your locations, not your company structure. Every size of a product, each with a validated barcode. And an inter-store transfer booked as the two stock movements it really is.

Districts and stores under one entity Variants with a checked GTIN A transfer is two movements Per-store figures with their coverage Add-on · US$10,000 a year per country
Why general tools fall short

Three choices that decide whether a chain fits at all.

In each one, the obvious design is the wrong one. And getting it wrong means a migration, not a setting.

A shop is not a legal entity

Atlas already has a company hierarchy for legal entities. Each unit carries a region, a currency and a tax rate. Every order stores the tax rate of the unit that raised it. Put forty stores there and you must invent thirty-nine companies. Or force real ones to share a node. So stores hang off locations, and keep the legal entity that owns them.

A transfer is not a new kind of movement

It is a consumption at the source and a receipt at the destination. That is what physically happens. Atlas writes both at once and links them. Total stock on hand stays the same, and every figure from the ledger keeps working. A fifth movement type would mean rebuilding the ledger that holds every past movement.

A per-store figure is only as good as the ledger under it

Movements have not always recorded a location. So a store balance can be right and incomplete at once. Atlas shows the figure with how much of the ledger it could see. A blank helps nobody. A confident wrong number is worse than either.

The store hierarchy

Districts hold stores. Stores hold stockrooms.

Locations nest, so a chain reads as a chain, not a flat list of forty names. The company structure is separate. So a location can sit in a district and in a legal entity at once. That is how a chain really works.

Variants & GTIN

One product, every size, each with its own barcode.

A variant is a stock item in its own right. It is received, counted and transferred like any other. It also knows which product it belongs to. And its barcode is checked, not just stored.

  • One level, on purpose. A variant of a variant is a hierarchy nobody asked for, so it is refused.
  • A GTIN is digits only: eight, twelve, thirteen or fourteen of them. Anything else is refused, showing the count it had. Better than finding out at a till.
  • The same barcode on two products is refused. The message names the product that already has it. A barcode identifies one thing.
.../inventory
Variants of one product with their own codes and barcodes, above the transfer history
VariantsCode, size and barcode. One level, and each barcode used once.
Inter-store transfer

Booked as what it is. Nothing downstream needs telling.

Stock leaves one store and arrives at another. Atlas writes both movements together and links them. The pair still reads as one act. And the ledger keeps the shape every other figure is built on.

  • Total on hand does not change with a transfer. The test suite checks this directly, because everything else depends on it.
  • The batch travels with the stock. A recall does not lose sight of a lot when it moves between stores.
  • A transfer is not demand. Reorder levels are derived per item from the stock ledger. Stock moved between stores is left out of the usage they are based on.
  • A transfer to where the stock already is, is refused. Same source and destination is not a movement.
  • Both ends must be named. A transfer with no known destination is a write-off in disguise.
  • Atlas will not claim the source has the stock. Where location records are thin, it says so and lets a person decide. It will not block an honest transfer, or claim a balance it cannot stand behind.
.../inventory
A transfer between two stores with the note explaining it is recorded as a consumption and a receipt
Two movements, one actAtlas explains the choice on the screen where it matters.
When it stops you

What this pack refuses, and what to do about it.

Atlas refuses a lot here, on purpose, and every refusal carries its reason on the screen. These are the ones this industry meets, in the words the screen actually uses — so that meeting one is a thirty-second fix rather than a support call.

What Atlas will not do
What the screen says
What to do
A per-store figure presented as certain
Atlas shows the number and what it could not place: “this is what is known to be here, not necessarily what is here.” Location has only been recorded since it became a field on the movement form.
Record a location on every movement. The figure and its caveat both improve as you do.
A transfer refused because the source looks empty
It is not refused. A ledger that never recorded locations shows zero everywhere, and blocking on that would stop every honest transfer on every existing workspace.
Read the coverage line and decide. Atlas reports both figures rather than asserting a balance it cannot stand behind.
A loop in the store hierarchy
Refused. “A hierarchy with a loop in it makes every report that walks the tree run for ever.”
Choose a different parent. A location cannot sit inside itself, or inside anything already below it.
A variant of a variant
Refused. Variants are one level deep: “a product has sizes and colours, and a size does not have sizes of its own.”
File it under the parent product, not under another variant.
A barcode that could never be scanned
Refused. Digits only, and 8, 12, 13 or 14 of them: “A wrong one is worse than none, because a scanner will simply never match it.”
Enter the GTIN as printed. One already on another item is refused too: a scan that could mean either tells you nothing.
A transfer with one end missing
Refused. “One with no destination is a write-off wearing a movement's clothes.”
Name both ends, or record it as the write-off it actually is.
Retiring a location that still has stores under it
Refused. Taking it out of use would not remove them — it would hide them, because the tree is walked through locations that are in use.
Move them somewhere else first.
Underneath all of it
Shared by every pack that converts or imports anything
What to do
A conversion that was never declared
Refused, and Atlas never returns the quantity unchanged. “Until it is declared, the two quantities are not comparable and Atlas will say so rather than return a figure that looks right.”
Declare the factor for that item. A factor is per item — a case of paper and a case of wine hold different numbers of things — so it is never guessed from a unit's name.
A blank unit read as “each”
It is not. Blank is nobody having said, and it refuses.
State the unit the stock is counted in. Nothing existing is re-expressed when you do: every quantity already recorded means exactly what it meant yesterday.
Spreading import costs with no basis chosen
Refused; there is no default. By value, by weight and by quantity give three different unit costs from one invoice: “all three look equally right on the screen.”
Choose the basis the consignment was actually costed on. A house default would be Atlas deciding which of your products looks profitable.
One line with no weight, on a by-weight split
Refuses the whole split, not just that line. “That would overstate every one of them and understate these to nothing, and the total would still foot exactly.”
Record the missing figures, or choose a basis every line can carry. A figure that foots is the most convincing kind of wrong.
A charge in another currency
Refused, not converted — a customs entry settled months ago at one rate is not today's fact: “What was paid is an amount in a currency, not a rate.”
Record it in the shipment's currency, or cost the shipment in the currency the charges were settled in.

Every one of these is also written into the guidance drawer on the screen it happens on, and into the process guides your own workspace generates — so a person who meets it at four o’clock on a Friday does not need us, or you.

Said plainly

What this pack is not, and why.

Retail was built last, on purpose. Its biggest expected piece is a programme of work, not a module. That should be decided on its own evidence. It is not here, and this page will not imply it is.

Not in this pack
What is true today
EDI
Not built, and not one standard. 850 / 855 / 856 / 810 are ANSI X12, used in North America. The EU, the UK, the GCC and Australia trade the same documents as EDIFACT. The invoice leg in the EU and Australia is Peppol BIS, which Atlas already speaks. In the UAE it is PINT AE, which Atlas reads. Calling all this "EDI" hides the real size. It is at least two integrations, plus maps per partner and a VAN. It is a programme, and should be decided on its own evidence. It should not arrive as a line item inside the word "retail".
Open-to-buy budgets
Budgets in Atlas are keyed by fiscal year, cost centre and account. Open-to-buy also needs department and season. Adding them means rebuilding a table that holds live financial commitments. And a season does not exist anywhere in the product. Inventing one just to key a budget on would be the tail wagging the dog.
Markdown and promotional pricing
These are selling prices. Atlas is a buying system. It has no idea what anything sells for. Adding that inside a sector pack would hide a new product inside an old one.
A store-level view that pretends to be complete
Some movements were recorded without a location. So a per-store figure cannot be exact. Atlas always shows the figure and the coverage behind it together. That is less flattering than a single number. It is also the only version you can act on.
See it on your own estate

Bring your store list. We'll build the hierarchy.

A short demo on your own stores and SKUs. Districts and stores under one entity. A product in every size, with its barcodes checked. Stock moved between two shops. The retail pack is an optional add-on at US$10,000 a year per country. The rest of Atlas is included in the licence.

Book a demo