src/low-stock-evaluator.tsTypeScript
@@ -0,0 +1,29 @@
1+
export interface InventoryItem {2+
sku: string;3+
enabled: boolean;4+
onHand: number;5+
reserved: number;6+
reorderPoint: number;7+
lowAlertOpen: boolean;8+
}9+
10+
export interface LowStockAlerts {11+
open(sku: string): Promise<void>;12+
close(sku: string): Promise<void>;13+
}14+
15+
export async function evaluateLowStock(16+
item: InventoryItem,17+
alerts: LowStockAlerts,18+
): Promise<void> {19+
if (item.onHand < item.reorderPoint) {20+
if (!item.lowAlertOpen) {21+
await alerts.open(item.sku);22+
}23+
return;24+
}25+
26+
if (item.lowAlertOpen) {27+
await alerts.close(item.sku);28+
}29+
}