const { PrismaClient } = require('@prisma/client') const prisma = new PrismaClient() async function checkUIFulfillmentStats() { try { console.log('📊 ПРОВЕРКА ДАННЫХ ДЛЯ UI "РАСХОДНИКИ ФУЛФИЛМЕНТ"') console.log('=' .repeat(60)) // Находим фулфилмент организацию const fulfillmentUser = await prisma.user.findFirst({ where: { phone: '79999999999' }, include: { organization: true } }) if (!fulfillmentUser?.organization) { console.log('❌ Фулфилмент организация не найдена') return } const orgId = fulfillmentUser.organization.id console.log(`🏢 Организация: ${fulfillmentUser.organization.name} (${orgId})`) console.log('') // === ДАННЫЕ КАК В UI КОМПОНЕНТЕ === // 1. ЗАКАЗАНО - из SupplyOrder (все заказы фулфилмента на расходники) const supplyOrders = await prisma.supplyOrder.findMany({ where: { organizationId: orgId, // Заказчик = фулфилмент consumableType: 'FULFILLMENT_CONSUMABLES' }, include: { items: { include: { product: true } } } }) const totalOrdered = supplyOrders.reduce((sum, order) => { return sum + order.items.reduce((itemSum, item) => itemSum + item.quantity, 0) }, 0) console.log('📋 1. ЗАКАЗАНО (всего в SupplyOrder):') console.log(` Всего заказов: ${supplyOrders.length}`) console.log(` Общее количество: ${totalOrdered} шт`) // Разбивка по статусам const ordersByStatus = {} supplyOrders.forEach(order => { if (!ordersByStatus[order.status]) { ordersByStatus[order.status] = { count: 0, quantity: 0 } } ordersByStatus[order.status].count++ ordersByStatus[order.status].quantity += order.items.reduce((sum, item) => sum + item.quantity, 0) }) Object.entries(ordersByStatus).forEach(([status, data]) => { console.log(` ${status}: ${data.count} заказов, ${data.quantity} шт`) }) console.log('') // 2. ПОСТАВЛЕНО - из SupplyOrder со статусом DELIVERED const deliveredOrders = supplyOrders.filter(order => order.status === 'DELIVERED') const totalDelivered = deliveredOrders.reduce((sum, order) => { return sum + order.items.reduce((itemSum, item) => itemSum + item.quantity, 0) }, 0) console.log('🚚 2. ПОСТАВЛЕНО (DELIVERED заказы):') console.log(` Доставленных заказов: ${deliveredOrders.length}`) console.log(` Общее количество: ${totalDelivered} шт`) if (deliveredOrders.length > 0) { console.log(' Детали доставленных заказов:') deliveredOrders.forEach((order, index) => { const orderQuantity = order.items.reduce((sum, item) => sum + item.quantity, 0) console.log(` ${index + 1}. Заказ ${order.id}: ${orderQuantity} шт`) order.items.forEach(item => { console.log(` - ${item.product.name} (${item.product.article}): ${item.quantity} шт`) }) }) } console.log('') // 3. ОСТАТОК - из Supply записей типа FULFILLMENT_CONSUMABLES const fulfillmentSupplies = await prisma.supply.findMany({ where: { organizationId: orgId, type: 'FULFILLMENT_CONSUMABLES' } }) const totalInStock = fulfillmentSupplies.reduce((sum, supply) => sum + supply.currentStock, 0) console.log('📦 3. ОСТАТОК (Supply записи):') console.log(` Записей на складе: ${fulfillmentSupplies.length}`) console.log(` Общий остаток: ${totalInStock} шт`) if (fulfillmentSupplies.length > 0) { console.log(' Детали по складу:') fulfillmentSupplies.forEach((supply, index) => { console.log(` ${index + 1}. "${supply.name}" (${supply.article}):`) console.log(` Количество: ${supply.quantity} шт`) console.log(` Текущий остаток: ${supply.currentStock} шт`) console.log(` Использовано: ${supply.usedStock} шт`) console.log(` Статус: ${supply.status}`) }) } console.log('') // === СВОДКА ДЛЯ UI === console.log('📊 ИТОГОВЫЕ ЦИФРЫ ДЛЯ UI:') console.log(` 📋 ЗАКАЗАНО: ${totalOrdered} шт`) console.log(` 🚚 ПОСТАВЛЕНО: ${totalDelivered} шт`) console.log(` 📦 ОСТАТОК: ${totalInStock} шт`) console.log('') // === ПРОВЕРКА ЛОГИКИ === console.log('🔍 ПРОВЕРКА ЛОГИКИ:') const expectedRemaining = totalDelivered - (fulfillmentSupplies.reduce((sum, s) => sum + s.usedStock, 0)) console.log(` Ожидаемый остаток: ${totalDelivered} поставлено - ${fulfillmentSupplies.reduce((sum, s) => sum + s.usedStock, 0)} использовано = ${expectedRemaining} шт`) console.log(` Фактический остаток: ${totalInStock} шт`) console.log(` ${expectedRemaining === totalInStock ? '✅' : '❌'} Соответствие: ${expectedRemaining === totalInStock ? 'КОРРЕКТНО' : 'ОШИБКА'}`) console.log('') console.log('=' .repeat(60)) console.log('✅ ПРОВЕРКА ЗАВЕРШЕНА') } catch (error) { console.error('❌ ОШИБКА при проверке:', error) } finally { await prisma.$disconnect() } } checkUIFulfillmentStats()