Files
octopus/myproject/refresh_stock_reservations.py
Andrey Smakotin d8fec8b893 Add utility scripts for stock reservation management
- 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>
2025-11-08 11:08:23 +03:00

40 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Скрипт для пересчета quantity_reserved для всех Stock записей
Нужен после добавления сигналов для Reservation
"""
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
django.setup()
from django.db import connection
from inventory.models import Stock
# Устанавливаем схему для работы с tenant
with connection.cursor() as cursor:
cursor.execute('SET search_path TO grach')
print('[НАЧАЛО] Обновление quantity_reserved для всех Stock записей...')
# Получаем все Stock записи
stocks = Stock.objects.all()
total_count = stocks.count()
print(f'[INFO] Найдено Stock записей: {total_count}')
updated_count = 0
for stock in stocks:
try:
# Вызываем refresh_from_batches() который пересчитывает quantity_reserved
stock.refresh_from_batches()
updated_count += 1
if stock.quantity_reserved > 0:
print(f' [OK] Stock #{stock.id}: {stock.product.name} - зарезервировано: {stock.quantity_reserved}')
except Exception as e:
print(f' [ОШИБКА] Stock #{stock.id}: {str(e)}')
print(f'\n[ЗАВЕРШЕНО] Обновлено записей: {updated_count} из {total_count}')
print('[OK] Все резервы пересчитаны!')