51 lines
1.7 KiB
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'
|
|
)
|
|
);
|
|
*/
|