Skip to content
PokutsoftPokutsoft
GlobalInventory/Inventory
ABC/XYZ Inventory Classification icon

ABC/XYZ Inventory Classification

ABC/XYZ product classification by value and demand variability, with auto-recompute and stock-policy suggestions

Odoo 20.0Odoo 19.0Odoo 18.0
Compatible with Odoo 18.0 · 19.0 · 20.0
OPL-1 license · 35+ languages · Community & Enterprise
ABC/XYZ Inventory Classification for Odoo — preview banner

ABC/XYZ Inventory Classification

ABC/XYZ product classification by value and demand variability, with auto-recompute and stock-policy suggestions

ABC/XYZ Inventory Classification ranks every product on two independent axes and combines them into the classic 9-cell matrix: a configurable Pareto (80/15/5) split on value or quantity, crossed with a coefficient-of-variation split on periodic demand. Every classification run is kept as an auditable snapshot, and the resulting class, matrix cell, count-frequency and safety-stock suggestion are written straight onto the product as searchable, groupable fields.

Key Features

Configurable classification policies

Define one or more abc.xyz.config records that pick the value metric (revenue or quantity), the demand source (stock moves or sales order lines), the period length/count and the Pareto and CV cutoff thresholds.

One click or scheduled recompute

Trigger a classification run manually with Run Now, or let the monthly ir.cron job (cron_recompute_all) reclassify every configuration flagged for auto-recompute.

Auditable run history

Each run (abc.xyz.run) is a timestamped snapshot with its own state (Running/Done/Failed), error message on failure, and per-product result lines (abc.xyz.run.line) that can never be edited after the fact.

9-cell ABC/XYZ matrix engine

A pure-python engine computes Pareto value shares and demand coefficient of variation, combining them into matrix codes like AX or CZ, each mapped to a concrete cycle-count and safety-stock suggestion.

Classification fields on the product

ABC class, XYZ class, matrix cell, coefficient of variation, value share, suggested count frequency and stock policy suggestion are computed and stored directly on product.product and product.template for searching, filtering and grouping.

Full classification history per product

Every product shows its own history of past classification runs (abc_xyz_history_count with a one-click drill down to abc.xyz.run.line), so trend and reclassification drift can be reviewed over time.

Demand sourced from stock moves or sales lines

Build the periodic demand series from completed outgoing stock moves (using list price as the revenue estimate) or, when Sales is installed, from confirmed sales order lines for exact historical revenue.

Warehouse and product-domain scoping

Restrict a configuration to specific warehouses and to a custom product domain (default: sale_ok products) so different catalogs or locations can run independent classification policies.

Use Cases

✓Decide which SKUs deserve tight, formula-based reorder points versus which need a large safety buffer
✓Set cycle-count frequency per product automatically: monthly for A items, yearly for C items
✓Spot erratic-demand, high-value products (AZ cell) that need closer supplier collaboration or consignment stock
✓Feed a warehouse-specific or category-specific classification policy off a scheduled monthly recompute
✓Review how a product's ABC/XYZ classification has drifted over the last several classification runs
✓Flag long-tail, erratic products (CZ cell) as discontinuation candidates

Screenshots

ABC/XYZ Inventory Classification — 01 Matrix Dashboard Pivot in Odoo

01 Matrix Dashboard Pivot

ABC/XYZ Inventory Classification — 02 Classification History Li in Odoo

02 Classification History Li

ABC/XYZ Inventory Classification — 03 Run Form in Odoo

03 Run Form

ABC/XYZ Inventory Classification — 04 Config Form in Odoo

04 Config Form

Why Choose This Module

Instead of a one-off spreadsheet exercise, this module turns ABC/XYZ analysis into a living, auditable process inside Odoo: every recompute is versioned, every product carries its current classification as a plain searchable field, and the underlying Pareto/CV maths lives in an independently unit-tested engine so the numbers can be trusted.

Specifications

  • Compatible: Odoo 18.0 / 19.0 / 20.0
  • License: OPL-1
  • Languages: 35+
  • Author: Pokutsoft
  • Dependencies: stock, product
  • Support: support@pokutsoft.com
  • Update date: 2026-10-02

Related modules