11  Book stock

For the owner and approvers

  • What “the books” are, and why a count can be checked against them.
  • How to load them, and what the plan before loading tells you.
  • What a count loaded with the books finds out about each tag.

11.1 The idea

Most jewellers’ billing software keeps its own list of every tagged piece in stock: the books. When a piece is billed, it drops off that list. Jholok’s ledger should agree, but a sale billed and not entered in Jholok, or a piece sent out and not recorded, makes them differ.

A count can be loaded with the books: you give Jholok the billing system’s list of tags in stock, and the time it was taken from. For the tagged products in the count, Jholok then expects what the books say, not what its own ledger says. Products with no tags keep Jholok’s own ledger. The count checks the stock against the system that bills the customers.

Because each tag names one piece, the books also make a count precise. When every piece of a product had its tag read, Jholok can name the exact tags the books have and the count didn’t find.

The file

The billing system’s export, saved as a CSV file, with:

  • a tag column (also “Tag No”, “tag code” or “barcode tag”),
  • a SKU column (also “Item Code”, “design” or “design code”),
  • and optionally a status column (also “location” or “state”), saying where each piece is.

A blank status means the piece is on the shelf. Jholok knows the usual words for the other places: “jangad” or “approval”, “karigar” or “artisan”, “order” or “booked”, and “sold”. A word it doesn’t know, it asks the owner about, once, and remembers.

11.2 In the app

Load the books

On the counting screen, tap Load book stock. An approver or the owner signs in, then chooses the file.

Set As of to the time the file was taken from the billing system. Jholok suggests the time the file was saved.

Before anything changes, the sheet shows a plan:

  • how many tags the file has;
  • for the count’s types, the new tags it will link;
  • the pieces it will mark sold;
  • the pieces off the shelf, and where;
  • customers’ pieces;
  • products with no tags, which keep Jholok’s ledger. Rows it can’t use are listed under Skipped, with the reason.
What loading the books will do: tag counts only, never any product's stock.

If the file uses a status word Jholok doesn’t know, the plan asks: “This file says”rep” for 14 rows. What does it mean?” The owner chooses one of On the shelf, Sold, Jangad, Karigar, Order or Customer’s piece, and taps Use this meaning. Jholok remembers the answer for every later file. The owner can change answers in Settings → Book stock words.

Tap Load. The counting screen then shows when the books are from.

The count after loading the books, with the time they are as of.

From the ⋯ beside it, Load newer book stock loads a later file, and Undo book load takes the latest load back while the count is open.

When the owner is needed

Three things need the owner, even when an approver is loading:

  • Saying what a new status word means. Load stays off until every word has an answer.
  • Marking pieces sold. A tag Jholok had in stock that isn’t in the file is marked sold, which takes it out of stock.
  • A file that doesn’t look like the stock. The plan says so if loading would leave more than a tenth of the count’s tagged products with none. It also says so if more than one row in twenty matches nothing in the catalogue. Only the owner can Load anyway.

Before Review

If counting went on more than half an hour after the time the books are from, opening Review warns: “The books are older than the counting.” Pieces sold in between would look missing. Load newer books, or give a reason and Review anyway.

11.3 Why it works this way

  • The books are the shop’s own record. Checking the stock against the billing system finds sales that never reached Jholok, and pieces that left the shop without a bill.
  • The “as of” time matters. A piece sold after the file was taken isn’t missing; Jholok needs the time to tell the difference.
  • Nobody counting sees a quantity. The plan shows tags and row counts, never a product’s stock, so loading the books doesn’t spoil a blind count.
  • Marking sold, and odd files, need the owner, because both can take a lot of stock off Jholok’s ledger at once.
  • Customers’ pieces are never stock. A piece in for repair may sit in the same tray; the books mark it, and Jholok never counts it.

11.4 How it works

Loading is one change, saved at once:

  • For each tagged product in the count, and each place, Jholok records a Book stock movement: the books minus its own stock at the “as of” time. Stock is still a sum of movements, and now matches the books.
  • Tags in the file that Jholok didn’t know are linked to their products by SKU. A tag Jholok already knows keeps its product.
  • Each tag’s state is set: on the shelf, sold, or out at its place.
  • The load is kept with a fingerprint of the file (its SHA-256), and logged.

The count’s first load sets the starting point. A later load during the count can show pieces sold during the count: on the shelf in the first file, gone from the later one.

What the count finds about each tag

When the count is completed, Jholok freezes what it found for each product, and Result, the report and the CSV list:

  • Tags not found: in the books, not read in the count. These are named only for products where every counted piece had its tag read, so a missing tag really is missing. A product counted by hand says its tags weren’t checked.
  • Sold during the count: dropped by a later load.
  • Found, not in the books: read in the count, but the books don’t have them in stock.
  • Out of the shop: read in the count, but recorded as out, on jangad, say.

11.5 Try it

This is the demo’s billing file, made from the demo’s tag list for the strongroom count’s types, Earrings and Sets. It starts like this:

Table 11.1: The first rows of the demo billing file, as its columns are named.
Tag No Item Code Status
TJ-000201 EAR-0001
TJ-000202 EAR-0001
TJ-000203 EAR-0001

Most rows are tags on the shelf. Jholok doesn’t know the words “Appro” or “Rep”, so it asks the owner about each first. The table shows what happens after the owner answers Jangad and Customer’s piece:

Table 11.2: The rows that aren’t simply on the shelf.
Tag No Item Code Status What Jholok does
TJ-000214 EAR-0003 Karigar Off the shelf, with the karigar
TJ-000222 EAR-0004 Appro Off the shelf, on jangad (approval)
TJ-990001 JH-22-114 Skipped: a design not in the catalogue
RP-0091 Rep A customer's piece: never stock
RP-0093 Rep A customer's piece: never stock

One tag Jholok has, TJ-000211 (EAR-0002), isn’t in the file at all. It has been billed, so loading marks it sold, which needs the owner. In the app’s plan above, that’s “Marked sold 1”, “Off the shelf 2 · jangad 1, karigar 1”, “Customers’ pieces 2, never stock”, and 1 row skipped for an unknown SKU.

Question. The books are from 10:00. Counting went on until 11:40, and Review warns that the books are older. What could go wrong if you review anyway?

A piece sold between 10:00 and 11:40 is still in the 10:00 books, but wasn’t on the shelf to be counted, so it would look missing. Load newer books from the billing system, or, if nothing was sold in that time, give that as the reason and review anyway.

  • The books are the billing system’s list of tags in stock, as of a time.
  • Loading them makes the count’s expected stock the books, for products that have tags. Nothing is changed until you’ve seen the plan.
  • Marking pieces sold, and a file that doesn’t look like the stock, need the owner.
  • With every tag read, the count names exactly which tags are missing.