Inventory

Stock and warehouses

MarketplaceOperationsVersion 0.3.0AGPL-3.0-or-latermanifest

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. Validating a move takes the quantity out of the stock item at the source location and adds it to the item at the destination, in one step; an item that does not exist yet is created. There is one item per product, location and lot. Negative quantities are allowed, as for virtual locations such as suppliers.

Module details ​

  • Version: 0.3.0
  • Author: SpaceCorps
  • Licence: AGPL-3.0-or-later
  • Needs core: ^0.2 (core 0.2.0 is current)
  • Maturity: Beta
  • Categories: Supply chain

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; there is one item per product, location and lot
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
referencesequencenonenoinventory.userin clearNumber of the move such as MV-00042, assigned when the move is created
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.manageryes
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 ​

Each dependency states the versions it accepts. Built-in apps version with the core, so a requirement on one is checked against the core version.

Installing this app from the marketplace also installs the dependencies it is missing, in one plan that you confirm once.

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