Reorder Rules

Automatic low-stock alerts and replenishment rules. Define reorder points, quantities, and preferred suppliers for each product to keep inventory healthy.

Reorder Rule Model

class ReorderRule {
  id: string;                    // Unique UUID identifier
  productId: string;             // Product this rule applies to
  reorderPoint: number;          // Stock level that triggers an alert
  reorderQuantity: number;       // How many units to reorder
  preferredSupplierId: string | null; // Optional preferred supplier
  isActive: boolean;             // Active status (default: true)
}

class ReorderAlert {
  id: string;                    // Unique UUID identifier
  ruleId: string;                // Associated reorder rule
  productId: string;             // Product that is low
  currentStock: number;          // Current stock level
  reorderPoint: number;          // Threshold that was breached
  reorderQuantity: number;       // Suggested quantity to order
  preferredSupplierId: string | null;
  createdAt: Date;               // When the alert was generated
}

Code Examples

Create a reorder rule:

import { createServices } from "commercio";

const { reorderService } = createServices();

// Create a rule: reorder 100 units when stock drops below 20
const rule = await reorderService.createRule({
  productId: product.id,
  reorderPoint: 20,
  reorderQuantity: 100,
  preferredSupplierId: supplier.id,
});

console.log(rule.id);                  // UUID
console.log(rule.reorderPoint);        // 20
console.log(rule.reorderQuantity);     // 100
console.log(rule.preferredSupplierId); // supplier UUID

Check for alerts:

// Check all products against their reorder rules
const alerts = await reorderService.checkAlerts();

alerts.forEach(alert => {
  console.log(
    `Product ${alert.productId}: stock is ${alert.currentStock}, ` +
    `reorder ${alert.reorderQuantity} units`
  );
  if (alert.preferredSupplierId) {
    console.log(`  Preferred supplier: ${alert.preferredSupplierId}`);
  }
});

Manage rules:

// Update a reorder rule
const updated = await reorderService.updateRule(rule.id, {
  reorderPoint: 30,
  reorderQuantity: 150,
});

console.log(updated.reorderPoint);    // 30
console.log(updated.reorderQuantity); // 150

// Get all rules for a product
const rules = await reorderService.getRulesByProduct(product.id);

// Deactivate a rule
await reorderService.deactivateRule(rule.id);