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

const prisma = new PrismaClient()

async function fixSupplyTypes() {
  try {
    console.log('🔧 ИСПРАВЛЯЕМ ТИПЫ SUPPLY ЗАПИСЕЙ...')
    
    // Найдем проблемную Supply запись "Тестовый Пакет"
    const problemSupply = await prisma.supply.findFirst({
      where: {
        name: 'Тестовый Пакет',
        article: 'ТП1755161624282',
        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(`   Текущий тип: ${problemSupply.type}`)
    console.log(`   Остаток: ${problemSupply.currentStock}`)

    // Найдем заказы селлеров с этим товаром
    const sellerOrders = await prisma.supplyOrder.findMany({
      where: {
        consumableType: 'SELLER_CONSUMABLES',
        items: {
          some: {
            product: {
              article: 'ТП1755161624282'
            }
          }
        }
      },
      include: {
        organization: {
          select: {
            id: true,
            name: true,
            type: true
          }
        }
      }
    })

    if (sellerOrders.length > 0) {
      // Это товар из заказов селлеров, нужно исправить
      const firstSellerOrder = sellerOrders[0]
      
      console.log(`\n🔧 ИСПРАВЛЯЕМ SUPPLY ЗАПИСЬ:`)
      console.log(`   Причина: Товар из заказов селлера "${firstSellerOrder.organization?.name}"`)
      console.log(`   БЫЛО: type = FULFILLMENT_CONSUMABLES, sellerOwnerId = null`)
      console.log(`   СТАЛО: type = SELLER_CONSUMABLES, sellerOwnerId = ${firstSellerOrder.organization?.id}`)

      await prisma.supply.update({
        where: { id: problemSupply.id },
        data: {
          type: 'SELLER_CONSUMABLES',
          sellerOwnerId: firstSellerOrder.organization?.id
        }
      })

      console.log('✅ Supply запись успешно исправлена!')
      
      // Проверяем результат
      const updatedSupply = await prisma.supply.findUnique({
        where: { id: problemSupply.id },
        include: {
          sellerOwner: {
            select: {
              name: true,
              type: true
            }
          }
        }
      })

      console.log('\n📋 РЕЗУЛЬТАТ ИСПРАВЛЕНИЯ:')
      console.log(`   Тип: ${updatedSupply?.type}`)
      console.log(`   Владелец-селлер: ${updatedSupply?.sellerOwner?.name}`)
      console.log(`   Остаток: ${updatedSupply?.currentStock}`)

      console.log('\n🎯 ОЖИДАЕМЫЙ РЕЗУЛЬТАТ В UI:')
      console.log('   📊 Карточка "Расходники селлеров": 10 штук')
      console.log('   📊 Карточка "Расходники фулфилмента": 0 штук')
      console.log('   📋 Столбец "Расходники селлеров" в таблице: 10 штук')
      console.log('   📋 Столбец "Расходники фулфилмента" в таблице: 0 штук')

    } else {
      console.log('❌ Не найдены связанные заказы селлеров')
    }

  } catch (error) {
    console.error('❌ Ошибка при исправлении Supply:', error.message)
  } finally {
    await prisma.$disconnect()
  }
}

fixSupplyTypes()