const { PrismaClient } = require('@prisma/client')

const prisma = new PrismaClient()

async function fixSupplyQuantity() {
  try {
    console.log('🔧 ИСПРАВЛЯЕМ НЕПРАВИЛЬНОЕ КОЛИЧЕСТВО В SUPPLY ЗАПИСИ')
    console.log('=' .repeat(60))
    
    // Находим проблемную Supply запись
    const problemSupply = await prisma.supply.findFirst({
      where: {
        article: 'SF-C-285405-970',
        type: 'FULFILLMENT_CONSUMABLES'
      }
    })

    if (!problemSupply) {
      console.log('❌ Supply запись не найдена')
      return
    }

    console.log('📦 НАЙДЕНА ПРОБЛЕМНАЯ SUPPLY ЗАПИСЬ:')
    console.log(`   ID: ${problemSupply.id}`)
    console.log(`   Название: ${problemSupply.name}`)
    console.log(`   Артикул: ${problemSupply.article}`)
    console.log(`   НЕПРАВИЛЬНОЕ quantity: ${problemSupply.quantity}`)
    console.log(`   Текущий остаток: ${problemSupply.currentStock}`)
    console.log('')

    // Находим связанный заказ поставки чтобы узнать ПРАВИЛЬНОЕ количество
    const relatedOrder = await prisma.supplyOrder.findFirst({
      where: {
        status: 'DELIVERED',
        items: {
          some: {
            product: {
              article: 'SF-C-285405-970'
            }
          }
        }
      },
      include: {
        items: {
          include: {
            product: true
          }
        }
      }
    })

    if (!relatedOrder) {
      console.log('❌ Связанный заказ поставки не найден')
      return
    }

    const orderItem = relatedOrder.items.find(item => item.product.article === 'SF-C-285405-970')
    
    if (!orderItem) {
      console.log('❌ Товар в заказе не найден')
      return
    }

    const correctQuantity = orderItem.quantity
    
    console.log('📋 СВЯЗАННЫЙ ЗАКАЗ ПОСТАВКИ:')
    console.log(`   ID заказа: ${relatedOrder.id}`)
    console.log(`   ПРАВИЛЬНОЕ quantity: ${correctQuantity}`)
    console.log('')

    if (problemSupply.quantity === correctQuantity) {
      console.log('✅ Количество уже корректно, исправление не требуется')
      return
    }

    console.log('🔧 ИСПРАВЛЯЕМ SUPPLY ЗАПИСЬ:')
    console.log(`   БЫЛО: quantity = ${problemSupply.quantity}`)
    console.log(`   СТАЛО: quantity = ${correctQuantity}`)
    console.log('')

    // Исправляем quantity
    const updatedSupply = await prisma.supply.update({
      where: { id: problemSupply.id },
      data: {
        quantity: correctQuantity, // Правильное количество из заказа
      }
    })

    console.log('✅ SUPPLY ЗАПИСЬ ИСПРАВЛЕНА!')
    console.log(`   ID: ${updatedSupply.id}`)
    console.log(`   Quantity: ${updatedSupply.quantity} (исправлено)`)
    console.log(`   CurrentStock: ${updatedSupply.currentStock} (остался без изменений)`)
    console.log('')

    console.log('🎯 ОЖИДАЕМЫЙ РЕЗУЛЬТАТ В UI:')
    console.log(`   Заказано: ${correctQuantity} шт`)
    console.log(`   Поставлено: ${correctQuantity} шт`) 
    console.log(`   Остаток: ${updatedSupply.currentStock} шт`)
    console.log(`   Отправлено: 0 шт`)

    console.log('')
    console.log('=' .repeat(60))
    console.log('✅ ИСПРАВЛЕНИЕ ЗАВЕРШЕНО')

  } catch (error) {
    console.error('❌ ОШИБКА при исправлении:', error)
    console.error('   Детали:', error.message)
  } finally {
    await prisma.$disconnect()
  }
}

fixSupplyQuantity()