Reports

Corrections and losses

Every write-off and every correction, who did it and why. This is what an auditor and an insurer both ask for, and it did not exist three days ago. A correction shows no approver because the person is recorded as the one who DID it — db/095 keeps "who did this" and "who answers for it" apart on purpose.

WhenWhatProductUnits WhyWho

How long goods have been sitting

By merchant, in buckets rather than an average — an average of forty days hides half the stock at three days and half at eighty, which is two conversations and only one is urgent. Age here is days since the position last moved, not the age of the oldest carton: true cohort ageing needs lot layers this ledger deliberately does not keep.

Merchant0–7 days8–30 31–9090+Units

Nothing has touched it

The rows behind that last bucket. Space being paid for with nothing moving through it — what a merchant should be told to clear and what shelf you get back.

days
MerchantProductWhere UnitsStill for

Merchant statement — last month

What we took in, sent out, wrote off and adjusted for each merchant, for the month that is finished. This is the document a third-party warehouse sends its customers, and it is also the one that answers "why is my count different from yours".

MerchantReceivedShipped ReturnedWritten off Adjusted

Shelves the book keeps getting wrong

Counted differences over six months, by shelf. Swing is not net: a shelf that goes +30 then −30 nets to nothing and has been wrong twice. A shelf near the top is a label in the wrong place, a picker guessing, or two products that look alike.

ShelfCountsSwing Last counted

Who did what, fourteen days

Per person, per kind of act. Read out of a view nothing has ever read — warehouse_activity was built in db/095 and is named by its own migration and by no other file in the repository.

PersonDoing whatActs UnitsDays Acts per day