Vowerole

How it works

One ledger, and everything else hanging off it

This page is the design rather than the feature list. If the first section makes sense, the rest of the product follows from it.

The ledger

Everything that moves metal writes an entry

A balance is the sum of the entries that produced it. There is no editable quantity column anywhere, which is why a difference at a stock take can be taken apart instead of absorbed.

PurchaseGoods received from a supplier
Old goldMetal bought over the counter
Finished goodsBack from the bench

The movement ledger

One append-only entry per movement, stamped with the weight, the purity and the document that caused it.

balance = Σ entries

Not a stored figure kept in step by hand. There is nothing to drift.

SaleBilled and handed over
TransferBranch to branch
Issue to karigarInto someone’s custody

The weights

Five figures per piece, and one constraint that keeps them honest

Gross as it sits on the scale. Stone for diamonds and stones, converted to grams. Other for thread, lac, wax and enamel. Net for the metal alone. Fine for the pure metal content. All five on the item, on every movement and on every document line.

Gross must be at least net plus stone plus other, to a milligram of tolerance for scale rounding. That is a database check constraint, so it holds at every door — the form, the bulk import, the API and the offline sync. A larger difference is a real discrepancy and has to be entered as a weight adjustment, which leaves a document behind rather than a silently corrected row.

Fine weight is net weight times the purity fraction, computed in one place and stamped on the document. Nothing recomputes it later and prints a different answer.

Every piece, five weights

Gross
as it sits on the scale
Stone
stones and diamonds, in grams
Other
thread, lac, wax, enamel

Net = Gross − Stone − Other

Fine = Net × purity

enforced in the database

A gross weight below net plus stone plus other is refused at every door — the form, the import, the API and the offline sync. One constraint, not four validations that can disagree.

22K18K916SilverPlatinum

In practice

From nothing to a printed bill

Five steps, in the order a shop actually does them.

  1. 01

    Set up the shop

    Your firm, your branches and warehouses, your staff and what each of them may do. Metals and the purities you deal in, with the karat whose rate you publish. The setup checklist ends at the point where the shop can actually trade — not at a percentage.

  2. 02

    Publish the day’s rate

    One rate per metal and purity, entered once. Everything priced anywhere reads it from there, and what a document stamps is what it reprints.

  3. 03

    Bring the stock in

    Opening stock, or a goods receipt against a purchase order. Either way it posts a movement into the ledger with the five weights and the purity on it, and the balance follows.

  4. 04

    Trade

    Estimates and bills at the counter, old gold taken in against a sale, transfers between branches, metal out to a karigar and finished goods back. Every one of them a document, every one of them an entry.

  5. 05

    Close and read

    Day close settles cash and metal so a period has an edge on it. The registers, the ledgers and the analytics all read the same documents, so they cannot disagree.

Offline

The counter does not depend on the line

Offline-first, not offline-tolerant — the distinction is the whole design.

Reads come from the local database

Not from the network with a cache as a fallback. The counter is instant whether the line is up or not.

Writes go local, then to an outbox

The network is a background detail. The only visible difference offline is a badge and a queue count.

The same maths, locally

Prices are computed by the same compiled packages the server uses, so the figures are identical by construction.

See it against your own stock

Start on the free trial, or book a walkthrough and we will set the first branch up with you.