Files
octopus/myproject/cleanup_orphaned_kits.sql

51 lines
1.7 KiB
SQL

-- Скрипт для очистки витринных комплектов без резервов
-- Используется для схемы tenant: anatol
-- Переключаемся на схему anatol
SET search_path TO anatol;
-- 1. Проверяем проблемные комплекты (READ ONLY)
-- Витринные комплекты без зарезервированных компонентов
SELECT
pk.id,
pk.name,
s.name as showcase_name,
pk.status,
pk.is_temporary,
(SELECT COUNT(*) FROM inventory_reservation r
WHERE r.product_kit_id = pk.id
AND r.showcase_id = pk.showcase_id
AND r.status = 'reserved') as reserved_count
FROM products_productkit pk
INNER JOIN inventory_showcase s ON pk.showcase_id = s.id
WHERE pk.is_temporary = TRUE
AND pk.showcase_id IS NOT NULL
AND pk.status = 'active'
AND NOT EXISTS (
SELECT 1 FROM inventory_reservation r
WHERE r.product_kit_id = pk.id
AND r.showcase_id = pk.showcase_id
AND r.status = 'reserved'
);
-- 2. Удалить проблемные комплекты (ОПАСНО! Сначала проверьте результат выше)
-- Раскомментируйте следующие строки для удаления:
/*
DELETE FROM products_productkit
WHERE id IN (
SELECT pk.id
FROM products_productkit pk
WHERE pk.is_temporary = TRUE
AND pk.showcase_id IS NOT NULL
AND pk.status = 'active'
AND NOT EXISTS (
SELECT 1 FROM inventory_reservation r
WHERE r.product_kit_id = pk.id
AND r.showcase_id = pk.showcase_id
AND r.status = 'reserved'
)
);
*/