Appearance
Item Categories
| Backlog field | Value |
|---|---|
| Story ID | INV-DASH-004 |
| Epic | Inventory |
| Story type | Dashboard |
| Review status | Draft - business analyst and business owner review required |
| Source evidence | Inventory MFE route/form, Inventory.Apis controller, application command/query handlers, validators, domain entities, and posting services |
| Last source review | 2026-07-10 |
Purpose
Organize items in a hierarchy and provide inheritable classification and unit behavior.
User stories
- As a catalog administrator, I want to add categories beneath a parent so that the catalog is easy to navigate and report.
- As a catalog user, I want to edit/view category properties and applicable units so that items inherit valid defaults.
- As a manager, I want category-based reporting so that inventory can be analyzed by product family.
Acceptance criteria
- The feature displays a navigable category tree.
- A category has a unique required identity within its applicable parent/scope.
- A category cannot be its own ancestor and the hierarchy cannot contain a cycle.
- Moving or deleting a category cannot orphan child categories or assigned items.
- Category units and other defaults are validated before save.
- Add, view, edit, delete, activate, and export actions follow permissions.
Required and conditional data
- Arabic name is required and limited to 50 characters; English name is optional in the current add validator but, when supplied, is limited to 50.
- Duplicate Arabic or English names are checked within the same parent for detailed categories and among top-level categories for main categories.
Is Detaileddetermines whether the category can directly classify items.- Parent category and Category Type are required for a detailed category.
- A non-detailed category cannot receive Purchase or COGS accounts in the current validator.
- Purchase, COGS, item revenue, item expense, and item cost-center values are optional configuration for eligible categories.
Inheritance and fallback
Items must select an active category whose Category Type matches Item Type. Category accounts/cost center are fallbacks only where the specific transaction resolver uses them. Confirmed examples include Landed Cost service expense and cost center after item-level values; other modules may use purchase/revenue/return fields before settings.
Delete/deactivate
A category cannot be deleted if it has children, items, account usage, or transaction history. Deactivation prevents new selection but keeps hierarchy and historical descriptions available.