const { PrismaClient } = require('@prisma/client') const prisma = new PrismaClient() async function clearFulfillmentSuppliesData() { try { console.log('🧹 Начинаем очистку данных склада и поставок фулфилмента...') // Находим все организации фулфилмента const fulfillmentOrgs = await prisma.organization.findMany({ where: { type: 'FULFILLMENT' }, select: { id: true, name: true } }) if (fulfillmentOrgs.length === 0) { console.log('❌ Организации фулфилмента не найдены') return } console.log('🏢 Найденные организации фулфилмента:') fulfillmentOrgs.forEach(org => console.log(` - ${org.name} (${org.id})`)) const fulfillmentOrgIds = fulfillmentOrgs.map(org => org.id) // Показываем что будет удалено const suppliesCount = await prisma.supply.count({ where: { OR: [ { organizationId: { in: fulfillmentOrgIds } }, { type: 'FULFILLMENT_CONSUMABLES' } ] } }) const supplyOrdersCount = await prisma.supplyOrder.count({ where: { OR: [ { fulfillmentCenterId: { in: fulfillmentOrgIds } }, { organizationId: { in: fulfillmentOrgIds } } ] } }) const supplyOrderItemsCount = await prisma.supplyOrderItem.count({ where: { supplyOrder: { OR: [ { fulfillmentCenterId: { in: fulfillmentOrgIds } }, { organizationId: { in: fulfillmentOrgIds } } ] } } }) console.log('\n📊 Данные для удаления:') console.log(` - Расходники (Supply): ${suppliesCount}`) console.log(` - Заказы поставок (SupplyOrder): ${supplyOrdersCount}`) console.log(` - Элементы заказов (SupplyOrderItem): ${supplyOrderItemsCount}`) if (suppliesCount === 0 && supplyOrdersCount === 0) { console.log('✅ Нет данных для удаления') return } // Подтверждение const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout }) const answer = await new Promise(resolve => { readline.question('\n⚠️ Вы уверены что хотите удалить эти данные? (да/нет): ', resolve) }) readline.close() if (answer.toLowerCase() !== 'да' && answer.toLowerCase() !== 'yes') { console.log('❌ Операция отменена') return } console.log('\n🗑️ Начинаем удаление...') // Удаляем в правильном порядке (с учетом foreign keys) // 1. Удаляем элементы заказов поставок const deletedItems = await prisma.supplyOrderItem.deleteMany({ where: { supplyOrder: { OR: [ { fulfillmentCenterId: { in: fulfillmentOrgIds } }, { organizationId: { in: fulfillmentOrgIds } } ] } } }) console.log(`✅ Удалено элементов заказов: ${deletedItems.count}`) // 2. Удаляем заказы поставок const deletedOrders = await prisma.supplyOrder.deleteMany({ where: { OR: [ { fulfillmentCenterId: { in: fulfillmentOrgIds } }, { organizationId: { in: fulfillmentOrgIds } } ] } }) console.log(`✅ Удалено заказов поставок: ${deletedOrders.count}`) // 3. Удаляем расходники const deletedSupplies = await prisma.supply.deleteMany({ where: { OR: [ { organizationId: { in: fulfillmentOrgIds } }, { type: 'FULFILLMENT_CONSUMABLES' } ] } }) console.log(`✅ Удалено расходников: ${deletedSupplies.count}`) console.log('\n🎉 Очистка данных склада и поставок фулфилмента завершена!') console.log('📝 Примечание: Сами организации фулфилмента и другие данные (сотрудники, услуги) НЕ удалены') } catch (error) { console.error('❌ Ошибка при очистке данных:', error) } finally { await prisma.$disconnect() } } // Запуск скрипта clearFulfillmentSuppliesData()