Добавлен SQL скрипт для очистки витринных комплектов без резервов
This commit is contained in:
50
myproject/cleanup_orphaned_kits.sql
Normal file
50
myproject/cleanup_orphaned_kits.sql
Normal file
@@ -0,0 +1,50 @@
|
||||
-- Скрипт для очистки витринных комплектов без резервов
|
||||
-- Используется для схемы 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'
|
||||
)
|
||||
);
|
||||
*/
|
||||
Reference in New Issue
Block a user