- Add check_stock.py: script to view Stock records with reservations - Add refresh_stock_reservations.py: standalone script to recalculate quantity_reserved for all Stock records - Both scripts work with 'grach' tenant schema 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
"""
|
||
Проверка Stock с quantity_reserved
|
||
"""
|
||
import os
|
||
import django
|
||
|
||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
|
||
django.setup()
|
||
|
||
from django.db import connection
|
||
|
||
with connection.cursor() as cursor:
|
||
cursor.execute("SET search_path TO grach")
|
||
|
||
# Проверяем Stock с резервами
|
||
print("Stock с резервами:\n")
|
||
cursor.execute("""
|
||
SELECT
|
||
s.id,
|
||
p.name as product_name,
|
||
s.quantity_available,
|
||
s.quantity_reserved,
|
||
(s.quantity_available - s.quantity_reserved) as free_quantity
|
||
FROM grach.inventory_stock s
|
||
JOIN grach.products_product p ON p.id = s.product_id
|
||
ORDER BY s.quantity_reserved DESC
|
||
""")
|
||
|
||
print(f"{'ID':<5} {'Товар':<30} {'Всего':<10} {'Резерв':<10} {'Свободно':<10}")
|
||
print("=" * 75)
|
||
|
||
for row in cursor.fetchall():
|
||
stock_id, product_name, qty_available, qty_reserved, free_qty = row
|
||
print(f"{stock_id:<5} {product_name:<30} {qty_available:<10} {qty_reserved:<10} {free_qty:<10}")
|