Inventory

Stock and warehouses

MarketplaceOperationsVersion 0.1.0manifest

What it is for ​

Describe warehouses and locations, record stock levels and log stock moves. Quantities are entered by people, so it works as a ledger of what was counted and moved rather than an automatic stock engine.

What the package does and does not do ​

Warehouses, stock locations, stock levels and stock moves. Quantities are entered and validated by people; they are not updated automatically by moves.

Models ​

inventory_warehouse ​

A building or site where stock is kept

Read group: inventory.user. Write group: inventory.manager.

FieldKindData classPersonal dataGroupAgents seeDescription
nametextnonenoinventory.userin clearWarehouse name
codetextnonenoinventory.userin clearShort code printed on documents, for example WH1
addresslongtextnonenoinventory.userin clearPostal address of the site
activeboolnonenoinventory.userin clearWhether the warehouse is in use

inventory_location ​

A place inside a warehouse where stock can sit

Read group: inventory.user. Write group: inventory.manager.

FieldKindData classPersonal dataGroupAgents seeDescription
nametextnonenoinventory.userin clearLocation name, for example Shelf A3
warehouse_idref → inventory_warehousenonenoinventory.userin clearThe warehouse the location belongs to
kindselect (internal, receiving, shipping, transit, scrap)nonenoinventory.userin clearWhat the location is used for: internal, receiving, shipping, transit, scrap
activeboolnonenoinventory.userin clearWhether the location is in use

inventory_item ​

The quantity of one product held at one location

Read group: inventory.user. Write group: inventory.manager.

FieldKindData classPersonal dataGroupAgents seeDescription
product_idref → productnonenoinventory.userin clearThe product held
location_idref → inventory_locationnonenoinventory.userin clearWhere it is held
quantitynumbernonenoinventory.userin clearUnits on hand
reorder_levelnumbernonenoinventory.userin clearQuantity at or below which the product should be replenished
lottextnonenoinventory.userin clearLot or batch number, if tracked

inventory_move ​

A movement of a product between locations, or into or out of the business

Read group: inventory.user. Write group: inventory.user.

FieldKindData classPersonal dataGroupAgents seeDescription
referencetextnonenoinventory.userin clearReference of the move, for example a delivery or receipt number
product_idref → productnonenoinventory.userin clearThe product moved
from_location_idref → inventory_locationnonenoinventory.userin clearWhere it leaves; empty for a receipt from a supplier
to_location_idref → inventory_locationnonenoinventory.userin clearWhere it arrives; empty for a delivery to a customer
quantitynumbernonenoinventory.userin clearUnits moved
scheduled_ondatenonenoinventory.userin clearDate the move is planned for (YYYY-MM-DD)
stateselect (draft, done, cancelled)nonenoinventory.userin clearMove status: draft, done, cancelled

Workflows ​

inventory_move ​

ActionMovesWho may run itApproval
inventory_move.validatestate: draft → doneinventory.useryes
inventory_move.cancelstate: draft → cancelledinventory.userno

Permission groups ​

Groups used by this app:

  • inventory.manager
  • inventory.user

Approval steps ​

Steps an agent can only propose:

  • inventory_move.validate

What agents can and cannot do ​

An agent can read, search, create and update records of this app, and run the actions that need no approval, within the permission groups of its token.

It can only propose these steps, and a person must approve them: inventory_move.validate, inventory_warehouse.delete, inventory_location.delete, inventory_item.delete, inventory_move.delete.

Dependencies ​

  • product

Install ​

Install it from the Customize app (Marketplace), or from the command line:

bash
obop modules install-from inventory

Needs a database and administrator rights.

Build your own ​

The module guide shows how apps like this one are written