const { PrismaClient } = require('@prisma/client') const prisma = new PrismaClient() async function showAllSupplyData() { try { console.log('📊 ВСЕ ДАННЫЕ О ПОСТАВКАХ В СИСТЕМЕ\n') console.log('=' .repeat(80)) // 1. SUPPLY ORDERS - Заказы поставок console.log('\n📦 1. SUPPLY ORDERS (Заказы поставок):') console.log('-' .repeat(80)) const supplyOrders = await prisma.supplyOrder.findMany({ include: { organization: { select: { id: true, name: true, fullName: true, type: true, inn: true } }, partner: { select: { id: true, name: true, fullName: true, type: true, inn: true } }, fulfillmentCenter: { select: { id: true, name: true, fullName: true, type: true } }, logisticsPartner: { select: { id: true, name: true, fullName: true, type: true } }, items: { include: { product: { select: { id: true, name: true, article: true, category: true } }, } } }, orderBy: { createdAt: 'desc' } }) console.log(`Найдено заказов: ${supplyOrders.length}`) supplyOrders.forEach((order, index) => { console.log(`\n${index + 1}. Заказ #${order.id.slice(-8)}:`) console.log(` 📅 Дата поставки: ${order.deliveryDate.toLocaleDateString('ru-RU')}`) console.log(` 📊 Статус: ${order.status}`) console.log(` 🏷️ Тип расходников: ${order.consumableType || 'НЕ УКАЗАН'}`) console.log(` 💰 Сумма: ${order.totalAmount} руб.`) console.log(` 📦 Позиций: ${order.totalItems}`) console.log(` 👤 Создатель (${order.organization?.type}): ${order.organization?.name || order.organization?.fullName} (ИНН: ${order.organization?.inn})`) console.log(` 🏭 Поставщик (${order.partner?.type}): ${order.partner?.name || order.partner?.fullName} (ИНН: ${order.partner?.inn})`) if (order.fulfillmentCenter) { console.log(` 🏢 Фулфилмент: ${order.fulfillmentCenter.name || order.fulfillmentCenter.fullName}`) } if (order.logisticsPartner) { console.log(` 🚚 Логистика: ${order.logisticsPartner.name || order.logisticsPartner.fullName}`) } console.log(` 📋 Товары (${order.items.length}):`) order.items.forEach((item, i) => { console.log(` ${i + 1}. ${item.product.name} (Арт: ${item.product.article})`) console.log(` Кол-во: ${item.quantity}, Цена: ${item.price} руб., Сумма: ${item.totalPrice} руб.`) if (item.services?.length > 0) { console.log(` 🔧 Услуги (ID): ${item.services.join(', ')}`) } if (item.fulfillmentConsumables?.length > 0) { console.log(` 📦 Расходники ФФ (ID): ${item.fulfillmentConsumables.join(', ')}`) } if (item.sellerConsumables?.length > 0) { console.log(` 🛍️ Расходники селлера (ID): ${item.sellerConsumables.join(', ')}`) } }) console.log(` 🕐 Создан: ${order.createdAt.toLocaleString('ru-RU')}`) }) // 2. SUPPLY SUPPLIERS - Поставщики расходников console.log('\n\n🏭 2. SUPPLY SUPPLIERS (Поставщики расходников):') console.log('-' .repeat(80)) const supplySuppliers = await prisma.supplySupplier.findMany({ include: { organization: { select: { id: true, name: true, type: true } } } }) console.log(`Найдено поставщиков: ${supplySuppliers.length}`) supplySuppliers.forEach((supplier, index) => { console.log(`\n${index + 1}. ${supplier.name}`) console.log(` 📞 Контакт: ${supplier.contactName}`) console.log(` ☎️ Телефон: ${supplier.phone}`) console.log(` 📍 Адрес: ${supplier.address}`) console.log(` 🏪 Рынок: ${supplier.market}`) console.log(` 🏢 Организация: ${supplier.organization?.name} (${supplier.organization?.type})`) }) // 3. PRODUCTS - Товары на складах console.log('\n\n📦 3. PRODUCTS (Товары на складах):') console.log('-' .repeat(80)) const products = await prisma.product.findMany({ include: { category: true, organization: { select: { id: true, name: true, type: true } } }, where: { organization: { type: { in: ['WHOLESALE', 'FULFILLMENT'] } } } }) console.log(`Найдено товаров: ${products.length}`) const productsByOrg = {} products.forEach(product => { const orgName = product.organization.name || 'Без названия' const orgType = product.organization.type const key = `${orgName} (${orgType})` if (!productsByOrg[key]) { productsByOrg[key] = [] } productsByOrg[key].push(product) }) Object.entries(productsByOrg).forEach(([orgKey, orgProducts]) => { console.log(`\n${orgKey}: ${orgProducts.length} товаров`) orgProducts.slice(0, 5).forEach((product, i) => { console.log(` ${i + 1}. ${product.name} (Арт: ${product.article})`) console.log(` Категория: ${product.category?.name || 'Без категории'}`) console.log(` Цена: ${product.price} руб., Остаток: ${product.quantity}`) }) if (orgProducts.length > 5) { console.log(` ... и еще ${orgProducts.length - 5} товаров`) } }) // 4. SUPPLIES - Все расходники в системе console.log('\n\n🔧 4. SUPPLIES (Все расходники в системе):') console.log('-' .repeat(80)) const supplies = await prisma.supply.findMany({ include: { organization: { select: { id: true, name: true, type: true } }, sellerOwner: { select: { id: true, name: true, type: true } } } }) console.log(`Найдено расходников: ${supplies.length}`) // Группируем по типам const suppliesByType = {} supplies.forEach(supply => { if (!suppliesByType[supply.type]) { suppliesByType[supply.type] = [] } suppliesByType[supply.type].push(supply) }) Object.entries(suppliesByType).forEach(([type, typeSupplies]) => { console.log(`\n${type}: ${typeSupplies.length} расходников`) typeSupplies.forEach((supply, index) => { console.log(` ${index + 1}. ${supply.name} (Арт: ${supply.article})`) console.log(` 💰 Цена: ${supply.price} руб. за ${supply.unit}`) console.log(` 📦 Остаток: ${supply.currentStock} из ${supply.minStock} мин.`) console.log(` 🏢 Организация: ${supply.organization?.name} (${supply.organization?.type})`) if (supply.sellerOwner) { console.log(` 👤 Владелец-селлер: ${supply.sellerOwner.name}`) } }) }) // 5. СТАТИСТИКА console.log('\n\n📊 5. СТАТИСТИКА:') console.log('-' .repeat(80)) // Статистика по статусам const statusStats = {} supplyOrders.forEach(order => { statusStats[order.status] = (statusStats[order.status] || 0) + 1 }) console.log('\nПо статусам:') Object.entries(statusStats).forEach(([status, count]) => { console.log(` ${status}: ${count} заказов`) }) // Статистика по типам расходников const typeStats = {} supplyOrders.forEach(order => { const type = order.consumableType || 'НЕ УКАЗАН' typeStats[type] = (typeStats[type] || 0) + 1 }) console.log('\nПо типам расходников:') Object.entries(typeStats).forEach(([type, count]) => { console.log(` ${type}: ${count} заказов`) }) // Статистика по организациям const orgStats = {} supplyOrders.forEach(order => { const orgType = order.organization?.type || 'UNKNOWN' orgStats[orgType] = (orgStats[orgType] || 0) + 1 }) console.log('\nПо типам организаций-создателей:') Object.entries(orgStats).forEach(([type, count]) => { console.log(` ${type}: ${count} заказов`) }) // Общая сумма const totalSum = supplyOrders.reduce((sum, order) => sum + (order.totalAmount || 0), 0) console.log(`\n💰 Общая сумма всех заказов: ${totalSum.toLocaleString('ru-RU')} руб.`) } catch (error) { console.error('❌ Ошибка:', error.message) console.error(error) } finally { await prisma.$disconnect() } } // Запуск showAllSupplyData()