SnotraSheets 1.0 — user manual

SnotraSheets turns a stock count into a file based on the documented inventory import format, together with a variance report you can keep. It works with:

Everything happens in your browser, on your computer. Nothing is uploaded.

The pictures in this manual are screenshots of SnotraSheets 1.0 in Google Chrome, using the example files in the examples folder.


Before you start

  1. Unzip the download. Open SnotraSheets.html in Chrome, Edge, Firefox or Safari (double-click it). No installation, account or internet connection is needed.
  2. Square: a USB or Bluetooth barcode scanner that types like a keyboard works with the scanning station. You can also use a phone scanner app that exports CSV or text, or type counts by hand.
  3. Shopify: decide which location you are counting. One session counts one location. Run another session for another location.
  4. Export from your POS right before you start counting. This is the "first export".

Step 1 — Load your POS export

Choose Choose export file… (or drop the file on the box). SnotraSheets recognises the file by its column names. It shows the file name, the number of rows and a SHA-256 fingerprint, which the printed summary repeats. Pick the location you are counting.

Step 1 after loading a Square item library export with two locations

If a file is not supported, SnotraSheets says why and what to export instead. For example, the Shopify "Available" format puts each location in its own column. It is refused, and you are asked for the All states format:

A refused Shopify

For Shopify, load the optional products export in the box that appears. SnotraSheets reads only the Handle, option values, Variant SKU and Variant Barcode columns, and reports how many rows received a barcode.

Step 2 — Count

Counts go into count lists, for example one per zone ("Front shelves", "Back room") or one per person. Lists can be switched off and on later without deleting them.

Scanning station. Choose New list…, click the scan field and scan. A keyboard-wedge scanner types the code and presses Enter. Each scan adds the Quantity (normally 1). To count a closed case of 12, type 12 in Quantity, then scan once; it goes back to 1 afterwards. To correct a mistake, use Undo last scan or scan with a negative quantity. The box under the field shows what the code matched and the running total for that item in this list. A code that is not in the export is kept and flagged for step 3.

Scanning station after scanning: the matched item and list total

Count files. Import count files… accepts:

Each file becomes one list. If you import the same file twice, SnotraSheets refuses it, because importing it twice would double the count (the files are compared by SHA-256). Each list can be exported again as CSV, for example to move counts from a laptop to the office computer.

Codes are matched in this order:

  1. exact SKU;
  2. barcode. UPC-A, EAN-13 and GTIN-14 renderings of the same number match each other (012345678905 = 0012345678905);
  3. SKU ignoring upper/lower case. This is shown as a note on the row;
  4. numeric SKU ignoring leading zeros. This catches 451 after a spreadsheet stripped the zeros from 000451, and is shown as a note.

Codes damaged by a spreadsheet, such as 8.51234E+11, are never guessed.

Step 3 — Review

Review: totals, codes to resolve and the rows that will change

Rows nobody counted.

Rows without stock tracking (blank quantity in Square, "not stocked" in Shopify) are never set to 0. If such a row was counted, it is listed and written only if you tick Also write counted rows whose stock tracking is off.

Codes to resolve.

Assignments and ignored codes are remembered and recorded in the reports. Undo reverses them.

Rows. The filter buttons show rows that will change (the default), have a variance, were not counted, or are flagged with a note. Search finds an item, SKU or barcode. The Calculation and notes column explains every number.

Step 4 — Fresh export and movement check

Pause stock movement before taking the baseline export and keep it paused through counting and import. Load a fresh export after the count to check for changed rows. If a row's stock changed between exports, SnotraSheets blocks the import: two snapshots cannot tell whether the sale or delivery occurred before or after that row was physically counted. Take a new baseline while movement is paused and recount the affected row before preparing a new import.

Fresh export in use
Changed rows blocked in review

Rows missing from the fresh export, or whose tracking was switched off, are blocked too.

Step 5 — Download

Download step with warnings and import instructions

Text in the reports that starts with =, +, - or @ is prefixed with an apostrophe. A spreadsheet then cannot run it as a formula. Import files are never altered this way.

The Shopify review after loading barcodes and a fresh export:

Shopify review with all rows shown

Session, backup and other computers

Count lists, assignments and settings are saved automatically in this browser, so a reload or crash during a long count loses nothing. Back up session (.json) saves them to a file. Restore session… loads them on another computer, together with the same export. Clear all counts deletes everything stored in this browser.

Troubleshooting

MessageWhat to do
"Not recognised…"Export again from Square (Export library) or Shopify (Inventory → Export → All states). Do not open and re-save the file in another program first.
"Old Excel .xls files are not supported"Export as .xlsx or .csv.
Many unknown codes in ShopifyLoad the products export in step 1, so barcodes can be matched.
A code shows as damaged (…E+11)A spreadsheet changed it. Count that item again, or fix the count file and import it.
Shopify rejected rows after importStock changed after the export you based the file on. Pause movement, take a new baseline and recount affected rows, then prepare a new import.
The count looks doubledCheck the count lists: switch off or delete a list that was imported twice under another name.

Limits of version 1.0