Skip to content Search Apps Documentation Source Content File Folder Download Copy Actions State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.

inventory state

Back to all declarations

RealmPath

untyped string

RealmPath is this realm's own path, used to build Render links.

Value

"/r/g1ut6uspuh73e02yauxpmyt8g3wwddaq8utagvm3/inventory"

InventoryCode

untyped string

The fixed chart. The codes follow r/books' convention, where an account's LEADING DIGIT fixes its kind: 1 asset, 2 liability, 3 equity, 4 revenue, 5 expense. A six-series code would be an invalid account under that convention, which is why cost of goods sold is 5000 and not the 6000 some charts use.

Value

"1300"

InventoryName

untyped string

The fixed chart. The codes follow r/books' convention, where an account's LEADING DIGIT fixes its kind: 1 asset, 2 liability, 3 equity, 4 revenue, 5 expense. A six-series code would be an invalid account under that convention, which is why cost of goods sold is 5000 and not the 6000 some charts use.

Value

"Inventory"

COGSCode

untyped string

The fixed chart. The codes follow r/books' convention, where an account's LEADING DIGIT fixes its kind: 1 asset, 2 liability, 3 equity, 4 revenue, 5 expense. A six-series code would be an invalid account under that convention, which is why cost of goods sold is 5000 and not the 6000 some charts use.

Value

"5000"

COGSName

untyped string

The fixed chart. The codes follow r/books' convention, where an account's LEADING DIGIT fixes its kind: 1 asset, 2 liability, 3 equity, 4 revenue, 5 expense. A six-series code would be an invalid account under that convention, which is why cost of goods sold is 5000 and not the 6000 some charts use.

Value

"Cost of goods sold"

ContribCode

untyped string

The fixed chart. The codes follow r/books' convention, where an account's LEADING DIGIT fixes its kind: 1 asset, 2 liability, 3 equity, 4 revenue, 5 expense. A six-series code would be an invalid account under that convention, which is why cost of goods sold is 5000 and not the 6000 some charts use.

Value

"3900"

ContribName

untyped string

The fixed chart. The codes follow r/books' convention, where an account's LEADING DIGIT fixes its kind: 1 asset, 2 liability, 3 equity, 4 revenue, 5 expense. A six-series code would be an invalid account under that convention, which is why cost of goods sold is 5000 and not the 6000 some charts use.

Value

"Inventory contributed"

MaxItemsPerRegister

untyped bigint

MaxItemsPerRegister caps one owner's SKU count. Every register-wide cross-foot walks every item's lots, and this bound is half of what keeps those reads affordable for everyone.

Value

(64 <untyped> bigint)

MaxLotsPerItem

untyped bigint

MaxLotsPerItem caps one item's LIVE lots, well below p/lots' MaxLotsLimit of 1024. It is the other half of the read bound: the worst case a register-wide walk must visit is MaxItemsPerRegister\*MaxLotsPerItem lots. Exhausted lots are dropped by p/lots, so this bounds concurrent lots and not the number of receipts an item may ever take. A WAVG item merges every receipt into one lot and so can never reach it — which means this is NOT the binding constraint for a WAVG item, and that item has a merge-overflow refusal of its own instead. See the package doc.

Value

(64 <untyped> bigint)

MaxEntriesPerRegister

untyped bigint

MaxEntriesPerRegister caps one owner's journal, far below journal's MaxEntriesLimit of 1000000 because Rederive is linear in the posting count and is a free read here. A register that fills refuses further receipts and shipments rather than dropping history. There is deliberately no Archive — it would destroy the record the invariants are checked against — so the remedy is a second register under a second address, which is a real limitation and not a hidden one.

Value

(8192 <untyped> bigint)

MaxSKULen

untyped bigint

MaxSKULen bounds a SKU, which is an avl key, a Render table cell and a Render path component all at once.

Value

(32 <untyped> bigint)

MaxItemNameLen

untyped bigint

MaxItemNameLen bounds an item's human name. Every name is a candidate for Render output.

Value

(64 <untyped> bigint)

RenderItemLimit

untyped bigint

RenderItemLimit caps how many items one register page tabulates.

Value

(25 <untyped> bigint)

RenderLotLimit

untyped bigint

RenderLotLimit caps how many lots one item page tabulates.

Value

(20 <untyped> bigint)

maxInt64

int64

maxInt64 is the largest int64. It is a precondition of the counter guards below, so it is pinned BY BEHAVIOUR in the suite rather than by a test that restates the literal: TestMaxInt64IsTheInt64Maximum proves it wraps when incremented.

Value

9223372036854775807

register

type

register is one owner's inventory sub-ledger and the book its postings go to. The book and every pool are POINTERS and none is ever returned by any exported function — p/journal consumer obligation 4 and the identical rule for p/lots: a \*Book is a mutable handle and a \*Pool is a mutable handle, and handing either across a realm boundary would hand out the right to post or to consume.

Value

inventory.register

item

type

item is one stock-keeping unit and its cost pool.

Value

inventory.item

regs

*v0.Tree

regs maps an owner's address string to that owner's \*register.

Open
OID
0399f7…936d:4
regs details

Inspect pointer

regCount

int

regCount is maintained alongside the tree so the index page never has to iterate it.

Value

0

refuseCoins

func()

refuseCoins panics if a user call arrives carrying coins. This realm has no withdrawal path, so accepted coins would be stranded permanently. The guard is on IsUserCall rather than IsUser deliberately: OriginSend is only meaningful for a direct MsgCall, and the MsgRun ephemeral can consume the envelope before forwarding control, so IsUser would be the wrong predicate. The IsCurrent() check is a separate concern and is not about coins: this is a non-crossing helper reading identity off a realm PARAMETER, which is the designation-forgery shape (security.md Class 2) whether or not a caller exercising it exists today. It is a no-op at every call site here, and that claim has one more hop in this realm than in its siblings: addItem is itself non-crossing and forwards the cur it was given, so the chain is AddFIFO/AddLIFO/AddWAVG -> addItem -> here. Every link forwards a crossing entrypoint's OWN first cur, which is runtime-current by construction and stays current through any number of non-crossing calls — so the guard still never fires, and the extra hop is exactly why having it at the point of USE rather than at the entrypoints is the right placement. It is kept because this realm is IMMUTABLE after addpkg. p/coinio guards the same shape in Receive, Payout and Sweep; this is that house precedent applied. No count of the call sites is written down, per CLAUDE.md § 4a.

Open
OID
0399f7…936d:7
refuseCoins details

Inspect func

mustOwnRegister

func() *inventory.register

mustOwnRegister returns the CALLER'S register, and there is no variant that returns anyone else's. Every mutating entrypoint goes through this, so ownership is implicit in the call. "Ownership is never a parameter" is what this comment used to conclude, and it is true of the SIGNATURE and was never true of the realm VALUE: the owner is derived from cur, so an uncurrent cur IS an ownership parameter. That is the same Class 2 shape refuseCoins carries above and the more consequential half of it, because this is the function that decides who owns the register rather than one that only refuses coins. The addItem hop described above applies here too. The guard is a no-op today for the same reason, kept for the same reason, and its call sites are likewise not counted here. See AUDIT.md.

Open
OID
0399f7…936d:9
mustOwnRegister details

Inspect func

reg

func(owner .uverse.address) (*inventory.register, bool)

reg looks an owner's register up. avl's Get returns a bare \`any\` and signals absence with nil, so the nil test IS the lookup result and not a defensive extra — every value this realm stores is a non-nil pointer.

Open
OID
0399f7…936d:10
reg details

Inspect func

mustReg

func(owner .uverse.address) *inventory.register
Open
OID
0399f7…936d:11
mustReg details

Inspect func

mustItem

func(r *inventory.register, sku string) *inventory.item
Open
OID
0399f7…936d:12
mustItem details

Inspect func

checkSKU

func(sku string)

checkSKU validates a SKU against a deliberately narrow charset: A-Z, a-z, 0-9, '.', '\_' and '-'. The restriction buys three things at once, which is why it is worth imposing on a caller. A SKU is an avl KEY, so its byte order is the Render table's row order. It is a Render PATH COMPONENT, so a '/' would forge a route and a '?' or '#' would truncate one. And it is a markdown TABLE CELL, so a '|' would forge a column. Escaping at each use site would be three chances to miss one; a charset is checked once, here, on the way in. Case is significant and "sku-1" and "SKU-1" are different items. That is a real sharp edge for a human operator and is the honest reading of a key: folding case would mean this realm, not the owner, decides which SKUs collide.

Open
OID
0399f7…936d:13
checkSKU details

Inspect func

checkItemName

func(name string)
Open
OID
0399f7…936d:14
checkItemName details

Inspect func

OpenRegister

func()

OpenRegister creates the caller's register and opens its three accounts. It panics if the caller already has one. The chart is opened HERE rather than on demand, and the book is created with a cap of exactly three accounts. Both facts are load-bearing: they are why this realm is its book's only writer and why the cross-foot identities are exact rather than approximate.

Open
OID
0399f7…936d:15
OpenRegister details

Inspect func

AddFIFO

func(sku string, name string)

AddFIFO adds an item whose shipments are costed oldest-lot-first.

Open
OID
0399f7…936d:16
AddFIFO details

Inspect func

AddLIFO

func(sku string, name string)

AddLIFO adds an item whose shipments are costed newest-lot-first.

Open
OID
0399f7…936d:17
AddLIFO details

Inspect func

AddWAVG

func(sku string, name string)

AddWAVG adds an item whose receipts are merged into a single re-anchored lot and whose shipments are costed at the blended unit cost. A WAVG item holds exactly one lot however many receipts it takes, so it can never reach MaxLotsPerItem. It can still refuse a receipt: the MERGE has an overflow precondition the other two methods never evaluate, and it is a property of the pool's accumulated history rather than of the receipt. See the package doc; the practical consequence is that [LotCapacity](#LotCapacity) is not the figure to watch for a WAVG item.

Open
OID
0399f7…936d:18
AddWAVG details

Inspect func

addItem

func(sku string, name string, m lots.Method)
Open
OID
0399f7…936d:19
addItem details

Inspect func

Receive

func(sku string, qty int64, cost int64) uint64

Receive takes qty units costing cost in total into the item's pool and posts debit 1300 / credit 3900, returning the entry id. A cost of ZERO is accepted — free goods — and posts nothing; the returned id is then 0, which is not a valid entry id and is the signal that no entry was made. See the package doc. Panics if the item does not exist, if qty is not positive, if cost is negative, if the pool's lot cap is reached, if a WAVG merge would breach the per-lot overflow precondition — a refusal that depends on the item's history and not on this receipt, see [AddWAVG](#AddWAVG) — or if the book is full. Every one of those aborts the whole transaction, which is what makes the pool-then-post order safe: an error return would NOT revert the pool update, a panic does.

Open
OID
0399f7…936d:20
Receive details

Inspect func

Ship

func(sku string, qty int64) int64

Ship consumes qty units from the item's pool and posts debit 5000 / credit 1300 for the cost it DERIVED, returning that cost. The cost is never a parameter. It is whatever the item's costing method charges against the lots on hand, which is the whole product. A derived cost of ZERO posts nothing — goods that cost nothing to acquire cost nothing to ship. The return value is then 0 and so is indistinguishable from "no entry made", deliberately: both facts are the same fact here. Panics if the item does not exist, if qty is not positive, if qty exceeds the quantity on hand (p/lots fails closed with ErrInsufficient and consumes nothing), or if the book is full.

Open
OID
0399f7…936d:21
Ship details

Inspect func

Rename

func(sku string, name string)

Rename changes an item's human name. The SKU, the costing method and every lot are immutable; a name is presentation only and nothing derives from it.

Open
OID
0399f7…936d:22
Rename details

Inspect func

HasRegister

func(owner .uverse.address) bool

HasRegister reports whether an address has opened a register.

Open
OID
0399f7…936d:23
HasRegister details

Inspect func

Registers

func() int

Registers is how many registers exist across the realm.

Open
OID
0399f7…936d:24
Registers details

Inspect func

OpenedAt

func(owner .uverse.address) int64

OpenedAt is the height an owner's register was opened at.

Open
OID
0399f7…936d:25
OpenedAt details

Inspect func

ItemCount

func(owner .uverse.address) int

ItemCount is how many items an owner's register holds.

Open
OID
0399f7…936d:26
ItemCount details

Inspect func

Height

func() int64

Height is the current chain height, so a reader can date every other figure on this page without a second query.

Open
OID
0399f7…936d:27
Height details

Inspect func

SKUs

func(owner .uverse.address, from string, limit int) []string

SKUs lists an owner's SKUs in key order, starting at or after from and returning at most limit of them. An empty from starts at the beginning. This enumerator exists because its absence is a known defect elsewhere in this portfolio: r/books exposes no account enumerator, so a third party cannot discover what to ask it about without already knowing. A sub-ledger whose invariants are per-item is useless to a verifier who cannot list the items, so the list is part of the product rather than an afterthought. A non-positive limit returns nothing rather than everything. The cap is the item cap, so a caller may always page the whole register.

Open
OID
0399f7…936d:28
SKUs details

Inspect func

HasItem

func(owner .uverse.address, sku string) bool

HasItem reports whether an owner's register holds a SKU.

Open
OID
0399f7…936d:29
HasItem details

Inspect func

ItemName

func(owner .uverse.address, sku string) string

ItemName is an item's human name.

Open
OID
0399f7…936d:30
ItemName details

Inspect func

Method

func(owner .uverse.address, sku string) string

Method is an item's costing method, as "fifo", "lifo" or "weighted-average".

Open
OID
0399f7…936d:31
Method details

Inspect func

AddedAt

func(owner .uverse.address, sku string) int64

AddedAt is the height an item was added at.

Open
OID
0399f7…936d:32
AddedAt details

Inspect func

OnHand

func(owner .uverse.address, sku string) int64

OnHand is the quantity of an item on hand, DERIVED by walking its live lots rather than read from a counter — which is what makes [ItemCrossFootQty](#ItemCrossFootQty) a comparison rather than a tautology.

Open
OID
0399f7…936d:33
OnHand details

Inspect func

CostOnHand

func(owner .uverse.address, sku string) int64

CostOnHand is the carrying value of an item's live lots: the figure this item contributes to the 1300 balance. Derived, for the same reason as [OnHand](#OnHand).

Open
OID
0399f7…936d:34
CostOnHand details

Inspect func

Received

func(owner .uverse.address, sku string) (qty int64, cost int64)

Received is an item's cumulative received quantity and cost.

Open
OID
0399f7…936d:35
Received details

Inspect func

Charged

func(owner .uverse.address, sku string) (qty int64, cost int64)

Charged is an item's cumulative shipped quantity and the cost charged out for it. The cost figure is derived: no caller has ever supplied it.

Open
OID
0399f7…936d:36
Charged details

Inspect func

Receipts

func(owner .uverse.address, sku string) int64

Receipts is how many receipts an item has taken, including those whose lots are exhausted and dropped. It is NOT the live lot count — see [LotCount](#LotCount).

Open
OID
0399f7…936d:37
Receipts details

Inspect func

LotCount

func(owner .uverse.address, sku string) int

LotCount is how many LIVE lots an item holds. Exhausted lots are dropped.

Open
OID
0399f7…936d:38
LotCount details

Inspect func

LotAt

func(owner .uverse.address, sku string, i int) (qty int64, cost int64, consumed int64, remaining int64, remainingCost int64, ok bool)

LotAt reports the i'th live lot of an item in receipt order, and whether i was in range. It returns primitives rather than a p/lots.Lot so that the figures are readable from vm/qeval without the caller knowing that type.

Open
OID
0399f7…936d:39
LotAt details

Inspect func

Capacity

func(owner .uverse.address) (itemsLeft int, entriesLeft int)

Capacity reports how much room an owner's register has left.

Open
OID
0399f7…936d:40
Capacity details

Inspect func

LotCapacity

func(owner .uverse.address, sku string) int

LotCapacity reports how many further live lots one item can hold. A WAVG item merges into one lot, so its figure is a bound it will never approach — and reading headroom off it for a WAVG item is therefore reading the wrong limit, because the refusal that CAN bind there is a merge overflow this figure knows nothing about. See [AddWAVG](#AddWAVG).

Open
OID
0399f7…936d:41
LotCapacity details

Inspect func

Balance

func(owner .uverse.address, code string) (int64, bool)

Balance returns an account's balance in its NORMAL direction and whether the code exists. All three of this realm's accounts are normal, so all three read non-negative.

Open
OID
0399f7…936d:42
Balance details

Inspect func

RawBalance

func(owner .uverse.address, code string) (int64, bool)

RawBalance returns debits minus credits regardless of kind. Summed over the three accounts it is exactly zero in a balanced book, which is what makes it the useful figure for a consistency check and the wrong one for a report.

Open
OID
0399f7…936d:43
RawBalance details

Inspect func

AccountKind

func(owner .uverse.address, code string) (string, bool)

AccountKind returns an account's kind as a word, and whether it exists.

Open
OID
0399f7…936d:44
AccountKind details

Inspect func

InventoryDebit

func(owner .uverse.address) int64

InventoryDebit is the 1300 balance: the value of goods on hand per the ledger.

Open
OID
0399f7…936d:45
InventoryDebit details

Inspect func

COGSDebit

func(owner .uverse.address) int64

COGSDebit is the 5000 balance: everything ever charged out as cost of goods sold.

Open
OID
0399f7…936d:46
COGSDebit details

Inspect func

ContributedCredit

func(owner .uverse.address) int64

ContributedCredit is the 3900 balance. Read it as "goods arrived from somewhere this ledger does not model" — see the package doc on why 3900 is a plug this realm is forced to pick.

Open
OID
0399f7…936d:47
ContributedCredit details

Inspect func

EntryCount

func(owner .uverse.address) int

EntryCount is how many entries an owner's book holds.

Open
OID
0399f7…936d:48
EntryCount details

Inspect func

Totals

func(owner .uverse.address) (debits int64, credits int64)

Totals are the book's total debits and credits.

Open
OID
0399f7…936d:49
Totals details

Inspect func

IsBalanced

func(owner .uverse.address) bool

IsBalanced reports whether total debits equal total credits.

Open
OID
0399f7…936d:50
IsBalanced details

Inspect func

Equation

func(owner .uverse.address) (debitNormal int64, creditNormal int64, offsets bool)

Equation reports the accounting equation: debit-normal against credit-normal, and whether they offset. For this realm that is 1300 + 5000 against 3900, which offsets at 0 = 0 on an empty register and after every posting. READ THE SIGN BEFORE PRESENTING EITHER FIGURE. journal partitions RAW DELTAS — debits minus credits — so creditNormal is NEGATIVE whenever 3900 carries a credit balance, and \`offsets\` means debitNormal + creditNormal == 0, not debitNormal == creditNormal. The textbook "assets = equity" has both sides positive; this does not. A caller rendering a balance sheet wants -creditNormal. The first test written against this function asserted the right magnitude with the wrong sign and was red for it, which is why this paragraph exists rather than a reader discovering it. What \`offsets\` does NOT prove is journal's obligation 7, inherited here verbatim: the two subtotals are a partition of the same addends, so reclassifying every account in the chart changes both and leaves \`offsets\` true. A Kind set wrongly at Open time is invisible to it. What pins this realm's chart is the PAIR — debitNormal == InventoryDebit + COGSDebit and creditNormal == -ContributedCredit — and the suite asserts exactly that. Sharper than that, because the partition is arithmetically inert: the two subtotals are added back together, so \`offsets\` reduces to Σ debits == Σ credits over the whole chart, which is the FIRST of the three conjuncts [IsBalanced](#IsBalanced) checks. A balanced book therefore always offsets, and \`offsets\` carries no fact [IsBalanced](#IsBalanced) has not already carried more strongly. The informative half of this function is the PAIR OF FIGURES, not the boolean — the figures move when a Kind changes and the boolean does not. (The two walks accumulate in different orders, so a mid-sum overflow could in principle separate them. At 8192 entries it would take amounts no register can reach, and it is not a second independent check.)

Open
OID
0399f7…936d:51
Equation details

Inspect func

Rederive

func(owner .uverse.address) (debits int64, credits int64, agrees bool)

Rederive re-walks every posting in the book and reports whether the account totals agree with the journal. It is a FREE read, unlike r/books' owner-only equivalent, for the reason given in the package doc. The cost is linear in the posting count, which is what MaxEntriesPerRegister bounds.

Open
OID
0399f7…936d:52
Rederive details

Inspect func

Invariant

func(owner .uverse.address, sku string) (posted int64, derived int64, agrees bool)

Invariant is the per-item derivation check, and it is this realm's central claim: postedCOGS == pool.ChargedCost() The left figure is what this realm posted to 5000 for the item; the right is what the pool says it charged. They are maintained by different code in different packages, so a false here means the realm posted an amount its own lots do not imply — which no code path in this realm can produce, and which is exactly why it is worth exporting. A claim is worth more checkable by a stranger than asserted in a comment. The receipt side is checked the same way by [InvariantReceipts](#InvariantReceipts).

Open
OID
0399f7…936d:53
Invariant details

Inspect func

InvariantReceipts

func(owner .uverse.address, sku string) (posted int64, derived int64, agrees bool)

InvariantReceipts is [Invariant](#Invariant) for the receipt side: postedRecv == pool.ReceivedCost()

Open
OID
0399f7…936d:54
InvariantReceipts details

Inspect func

ItemCrossFoot

func(owner .uverse.address, sku string) (received int64, charged int64, onHand int64, foots bool)

ItemCrossFoot is p/lots' own cost identity for one item: receivedCost == chargedCost + costOnHand Received and charged are counters; on-hand is a walk of the live lots. The identity therefore compares two independently maintained things, which is why p/lots keeps them apart.

Open
OID
0399f7…936d:55
ItemCrossFoot details

Inspect func

ItemCrossFootQty

func(owner .uverse.address, sku string) (received int64, consumed int64, onHand int64, foots bool)

ItemCrossFootQty is the quantity identity for one item: receivedQty == consumedQty + qtyOnHand It is not implied by [ItemCrossFoot](#ItemCrossFoot): costs and quantities can disagree independently, and a bug that moved cost without moving quantity would be invisible to the cost identity alone.

Open
OID
0399f7…936d:56
ItemCrossFootQty details

Inspect func

CrossFootInventory

func(owner .uverse.address) (sumOnHand int64, balance int64, agrees bool)

CrossFootInventory is the register-wide check on 1300: the sum of every item's carrying value against the ledger balance. The identity is EXACT, not approximate, and the reason is structural: this realm exposes no general posting entrypoint, so it is its book's only writer. Adding a general Post would destroy this check, which is the cost of adding one.

Open
OID
0399f7…936d:57
CrossFootInventory details

Inspect func

CrossFootCOGS

func(owner .uverse.address) (sumCharged int64, balance int64, agrees bool)

CrossFootCOGS is the register-wide check on 5000: the sum of every item's charged cost against the ledger balance.

Open
OID
0399f7…936d:58
CrossFootCOGS details

Inspect func

CrossFootContributed

func(owner .uverse.address) (sumReceived int64, balance int64, agrees bool)

CrossFootContributed is the register-wide check on 3900: the sum of every item's received cost against the ledger balance.

Open
OID
0399f7…936d:59
CrossFootContributed details

Inspect func

CrossFoot

func(owner .uverse.address) (inventoryAgrees bool, cogsAgrees bool, contributedAgrees bool, equationOffsets bool)

CrossFoot reports all four register-wide agreements as separate bools. They are returned SEPARATELY and there is deliberately no single aggregate bool: a one-word verdict over four checks is the shape that gets quoted without its coverage, and a reader who wants the figures behind any one of these has [CrossFootInventory](#CrossFootInventory), [CrossFootCOGS](#CrossFootCOGS), [CrossFootContributed](#CrossFootContributed) and [Equation](#Equation).

Open
OID
0399f7…936d:60
CrossFoot details

Inspect func

Render

func(path string) string

Render shows the realm index at "/", one owner's register at "/\<address>", and one item at "/\<address>/\<sku>".

Open
OID
0399f7…936d:61
Render details

Inspect func

renderRegister

func(owner .uverse.address) string
Open
OID
0399f7…936d:63
renderRegister details

Inspect func

renderItem

func(owner .uverse.address, sku string) string
Open
OID
0399f7…936d:64
renderItem details

Inspect func

cell

func(s string) string

cell renders a caller-supplied string into a table cell. A blank value would collapse the column, so it is shown as a dash.

Open
OID
0399f7…936d:65
cell details

Inspect func
RealmPath : untyped string ="/r/g1ut6uspuh73e02yauxpmyt8g3wwddaq8utagvm3/inventory"
InventoryCode : untyped string ="1300"
InventoryName : untyped string ="Inventory"
COGSCode : untyped string ="5000"
COGSName : untyped string ="Cost of goods sold"
ContribCode : untyped string ="3900"
ContribName : untyped string ="Inventory contributed"
MaxItemsPerRegister : untyped bigint =(64 <untyped> bigint)
MaxLotsPerItem : untyped bigint =(64 <untyped> bigint)
MaxEntriesPerRegister : untyped bigint =(8192 <untyped> bigint)
MaxSKULen : untyped bigint =(32 <untyped> bigint)
MaxItemNameLen : untyped bigint =(64 <untyped> bigint)
RenderItemLimit : untyped bigint =(25 <untyped> bigint)
RenderLotLimit : untyped bigint =(20 <untyped> bigint)
maxInt64 : int64 =9223372036854775807
register : type =inventory.register
item : type =inventory.item
regs : *v0.Tree Inspect
regCount : int =0
refuseCoins : func() Inspect
mustOwnRegister : func() *inventory.register Inspect
reg : func(owner .uverse.address) (*inventory.register, bool) Inspect
mustReg : func(owner .uverse.address) *inventory.register Inspect
mustItem : func(r *inventory.register, sku string) *inventory.item Inspect
checkSKU : func(sku string) Inspect
checkItemName : func(name string) Inspect
OpenRegister : func() Inspect
AddFIFO : func(sku string, name string) Inspect
AddLIFO : func(sku string, name string) Inspect
AddWAVG : func(sku string, name string) Inspect
addItem : func(sku string, name string, m lots.Method) Inspect
Receive : func(sku string, qty int64, cost int64) uint64 Inspect
Ship : func(sku string, qty int64) int64 Inspect
Rename : func(sku string, name string) Inspect
HasRegister : func(owner .uverse.address) bool Inspect
Registers : func() int Inspect
OpenedAt : func(owner .uverse.address) int64 Inspect
ItemCount : func(owner .uverse.address) int Inspect
Height : func() int64 Inspect
SKUs : func(owner .uverse.address, from string, limit int) []string Inspect
HasItem : func(owner .uverse.address, sku string) bool Inspect
ItemName : func(owner .uverse.address, sku string) string Inspect
Method : func(owner .uverse.address, sku string) string Inspect
AddedAt : func(owner .uverse.address, sku string) int64 Inspect
OnHand : func(owner .uverse.address, sku string) int64 Inspect
CostOnHand : func(owner .uverse.address, sku string) int64 Inspect
Received : func(owner .uverse.address, sku string) (qty int64, cost int64) Inspect
Charged : func(owner .uverse.address, sku string) (qty int64, cost int64) Inspect
Receipts : func(owner .uverse.address, sku string) int64 Inspect
LotCount : func(owner .uverse.address, sku string) int Inspect
LotAt : func(owner .uverse.address, sku string, i int) (qty int64, cost int64, consumed int64, remaining int64, remainingCost int64, ok bool) Inspect
Capacity : func(owner .uverse.address) (itemsLeft int, entriesLeft int) Inspect
LotCapacity : func(owner .uverse.address, sku string) int Inspect
Balance : func(owner .uverse.address, code string) (int64, bool) Inspect
RawBalance : func(owner .uverse.address, code string) (int64, bool) Inspect
AccountKind : func(owner .uverse.address, code string) (string, bool) Inspect
InventoryDebit : func(owner .uverse.address) int64 Inspect
COGSDebit : func(owner .uverse.address) int64 Inspect
ContributedCredit : func(owner .uverse.address) int64 Inspect
EntryCount : func(owner .uverse.address) int Inspect
Totals : func(owner .uverse.address) (debits int64, credits int64) Inspect
IsBalanced : func(owner .uverse.address) bool Inspect
Equation : func(owner .uverse.address) (debitNormal int64, creditNormal int64, offsets bool) Inspect
Rederive : func(owner .uverse.address) (debits int64, credits int64, agrees bool) Inspect
Invariant : func(owner .uverse.address, sku string) (posted int64, derived int64, agrees bool) Inspect
InvariantReceipts : func(owner .uverse.address, sku string) (posted int64, derived int64, agrees bool) Inspect
ItemCrossFoot : func(owner .uverse.address, sku string) (received int64, charged int64, onHand int64, foots bool) Inspect
ItemCrossFootQty : func(owner .uverse.address, sku string) (received int64, consumed int64, onHand int64, foots bool) Inspect
CrossFootInventory : func(owner .uverse.address) (sumOnHand int64, balance int64, agrees bool) Inspect
CrossFootCOGS : func(owner .uverse.address) (sumCharged int64, balance int64, agrees bool) Inspect
CrossFootContributed : func(owner .uverse.address) (sumReceived int64, balance int64, agrees bool) Inspect
CrossFoot : func(owner .uverse.address) (inventoryAgrees bool, cogsAgrees bool, contributedAgrees bool, equationOffsets bool) Inspect
Render : func(path string) string Inspect
renderIndex : func() string Inspect
renderRegister : func(owner .uverse.address) string Inspect
renderItem : func(owner .uverse.address, sku string) string Inspect
cell : func(s string) string Inspect
yesno : func(b bool) string Inspect