feat: add script to create inventory entries for products
Created script to populate inventory table for products that have 0 inventory. Issue: - Products had 0 available_inventory because inventory table was empty - available_inventory is calculated from inventory_entries relationship - Empty inventory table = 0 inventory for all products - Add to cart fails when inventory is 0 Solution: - Create inventory entries for all products - Each product gets 100 units in 'Main Warehouse' - Script can be run multiple times (only creates missing entries) Usage: python scripts/create_inventory.py 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
87
scripts/create_inventory.py
Executable file
87
scripts/create_inventory.py
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Create Inventory Entries for Products
|
||||
|
||||
This script creates inventory entries for all products that don't have inventory.
|
||||
Each product gets 100 units in stock.
|
||||
"""
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Add project root to path
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent))
|
||||
|
||||
import sqlite3
|
||||
from datetime import datetime, UTC
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Load environment variables
|
||||
load_dotenv()
|
||||
|
||||
# Get database URL
|
||||
database_url = os.getenv('DATABASE_URL', 'wizamart.db')
|
||||
db_path = database_url.replace('sqlite:///', '')
|
||||
|
||||
print(f"📦 Creating inventory entries in {db_path}...")
|
||||
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Get products without inventory
|
||||
cursor.execute("""
|
||||
SELECT p.id, p.vendor_id, p.product_id
|
||||
FROM products p
|
||||
LEFT JOIN inventory i ON p.id = i.product_id
|
||||
WHERE i.id IS NULL
|
||||
""")
|
||||
products_without_inventory = cursor.fetchall()
|
||||
|
||||
if not products_without_inventory:
|
||||
print("✅ All products already have inventory entries")
|
||||
conn.close()
|
||||
sys.exit(0)
|
||||
|
||||
print(f"📦 Creating inventory for {len(products_without_inventory)} products...")
|
||||
|
||||
# Create inventory entries
|
||||
for product_id, vendor_id, sku in products_without_inventory:
|
||||
cursor.execute("""
|
||||
INSERT INTO inventory (
|
||||
vendor_id,
|
||||
product_id,
|
||||
location,
|
||||
quantity,
|
||||
reserved_quantity,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
""", (
|
||||
vendor_id,
|
||||
product_id,
|
||||
'Main Warehouse',
|
||||
100, # Total quantity
|
||||
0, # Reserved quantity
|
||||
datetime.now(UTC),
|
||||
datetime.now(UTC)
|
||||
))
|
||||
|
||||
conn.commit()
|
||||
|
||||
print(f"✅ Created inventory entries for {len(products_without_inventory)} products")
|
||||
|
||||
# Show stats
|
||||
cursor.execute("SELECT COUNT(*) FROM inventory")
|
||||
total_count = cursor.fetchone()[0]
|
||||
print(f"\n📊 Total inventory entries: {total_count}")
|
||||
|
||||
cursor.execute("SELECT product_id, location, quantity, reserved_quantity FROM inventory LIMIT 5")
|
||||
print("\n📦 Sample inventory:")
|
||||
for row in cursor.fetchall():
|
||||
available = row[2] - row[3]
|
||||
print(f" Product ID {row[0]}: {available} available at {row[1]}")
|
||||
|
||||
conn.close()
|
||||
|
||||
print("\n✅ Done!")
|
||||
Reference in New Issue
Block a user