Vendventory Documentation
v1.0.0 Changelog

Products Module

The Products module remains the core inventory master-data layer of Vendventory, but it now sits inside a broader governance model. Products still define what the organization buys, stores, values, and issues, while the surrounding workflow now determines whether that stock is released, blocked, at risk, or in need of follow-up.

Important scope note: the live product form currently focuses on practical inventory fields: identity, category, unit, supplier, pricing, stock, expiry, status, image, and archive-aware lifecycle. Governance-heavy execution such as release, recall, rescue, and compliance is handled in the report and operations surfaces instead of overloading the base product CRUD.

Role of the Products module in the current app

Why products still matter after the governance expansion
  • Every purchase, stock out, valuation, and adjustment still starts from a product record.
  • Expiry tracking at the product level determines whether downstream batch and risk logic becomes relevant.
  • Archive-aware product lifecycle keeps historical analytics intact while protecting operational selectors from stale records.
  • Product pricing and reorder fields continue to feed planning, variance, and valuation logic.

Index and browsing model

The product index is intentionally not a flat list. It is organized category-first so teams can browse inventory as a grouped catalog instead of scanning one long table. This becomes more useful as archived products, low-stock items, and expiry-sensitive items accumulate.

What the current product index emphasizes
  • Category-driven grouping for faster browsing.
  • Summary counts such as total, active, inactive, archived, low-stock, near-expiry, and expired products.
  • Quick actions such as edit, status change, lifecycle controls, and product history access.
  • Visibility into expiry and stock pressure without leaving the module.

Create and edit form structure

The current product form uses the modern admin form system and focuses on the fields most operators need every day. It does not try to push all governance configuration into one overloaded screen.

Fields currently present in the live form
  • SKU: unique stock identifier.
  • Name: main product label used across the app.
  • Slug: normalized identifier where required.
  • Category: selected through the shared custom select pattern.
  • Unit: selected through the shared custom select pattern.
  • Supplier: optional commercial linkage to a supplier record.
  • Description: descriptive notes for internal reference.
  • Cost Price: cost-side valuation baseline.
  • Selling Price: selling-side commercial reference.
  • Current Stock: starting or maintained stock quantity where allowed.
  • Reorder Level: low-stock planning threshold.
  • Image: product image using the shared .ui-file upload pattern.
  • Status: active or inactive via the shared status control.
  • Track Expiry: toggle that controls expiry-specific behavior.
  • Expiry Date: current product-level expiry date when expiry tracking is enabled.

Shared UI conventions used by the product CRUD

Current UI patterns used on create and edit
  • Category, unit, and supplier selectors use the shared custom select system.
  • Expiry date uses the shared datepicker pattern.
  • File upload uses the shared .ui-file styling contract.
  • Status and expiry toggles follow the same admin interaction style used by the modernized forms elsewhere in the app.

Lifecycle, status, and archive behavior

Product lifecycle is one of the most important improvements in the current codebase. The module is no longer documented as a simple create, edit, delete table. It now uses an archive-aware approach so historical integrity is preserved.

Current lifecycle expectations
  • Active: usable in operational selectors and current workflows.
  • Inactive: visible in history and admin review, but not intended for normal ongoing use.
  • Archived: preserved for history when transactional data exists and destructive deletion would break context.
  • Delete: should be treated cautiously because historically used products may be archived instead of removed.

Downstream impact of product data

Transaction impact
  • Purchases use products as the inbound stock identity.
  • Stock outs use products as the outbound issue identity.
  • Stock adjustments reconcile product-level quantity variances.
  • Reports and dashboard use product linkage for valuation, risk, and watchlists.
Why this matters in the governance build
  • Even though batch governance lives in downstream workflows, the product is still the root record behind those workflows.
  • Expiry-enabled products are more likely to appear in risk, rescue, and governance analysis.
  • Archived products must remain visible in historical analytics and audit trails.

What changed in the current product documentation

Documentation changes reflected here
  • The page now explicitly reflects archive-aware lifecycle instead of pretending products are always hard-deleted.
  • The documented form fields now match the live create and edit blades.
  • The narrative now places product CRUD inside the broader governance stack rather than describing it as a standalone inventory table.
  • The page now explains which responsibilities remain on the product form and which belong to reports or governance workspaces.

Product media placeholders

Suggested captures for the product lifecycle
Image Placeholder
Product index with grouped catalog and lifecycle badges
Show the grouped catalog, status mix, low-stock, near-expiry, and archived context so the module reads as more than a plain table.
Image Placeholder
Product create or edit with governance fields visible
Show barcode value, expiry controls, pricing, unit, supplier, category, and lifecycle fields together to explain the role of the product form.

Screen-by-Screen Product Breakdown

What each product screen does
  • Product index: browse, search, filter, and inspect the current catalog with lifecycle, stock, expiry, and governance context.
  • Create product: define master identity, pricing, stock settings, barcode, supplier, category, unit, lifecycle, and governance rules in one form.
  • Edit product: adjust operational or governance settings for an existing item when business rules change.
  • Barcode capture area: this is where a browser scanner or camera scan can store the product barcode directly into the product record.
  • Governance fields: batch, expiry, FEFO, cold-chain, recall class, shelf life, storage conditions, and related controls turn an ordinary item into a governed item.
  • Why it matters: product data is the bridge between catalog management and everything else in the app, including receiving, release, reports, recall logic, and POS.