// ========== V2 TYPES FOR GOODS SUPPLY ORDERS ==========
// Типы для V2 системы товарных поставок

// V2 Организация
export interface OrganizationV2 {
  id: string
  name?: string
  fullName?: string
  inn?: string
  address?: string
  phones?: Array<{ value: string; isPrimary?: boolean }>
  emails?: Array<{ value: string; isPrimary?: boolean }>
}

// V2 Пользователь
export interface UserV2 {
  id: string
  firstName: string
  lastName: string
  position?: string
  department?: string
}

// V2 Товар
export interface ProductV2 {
  id: string
  name: string
  article?: string
  description?: string
  imageUrl?: string
  unit?: string
  price?: number
  category?: {
    id: string
    name: string
  }
  sizes?: Array<{
    id: string
    name: string
    quantity: number
  }>
}

// V2 Расходный материал
export interface MaterialV2 {
  id: string
  name: string
  description?: string
  unit: string
  price: number
  currentStock?: number
  category?: string
}

// V2 Услуга
export interface ServiceV2 {
  id: string
  name: string
  description?: string
  price: number
  unit: string
  organizationId?: string
}

// V2 Компонент рецептуры
export interface RecipeComponentV2 {
  id: string
  materialId: string
  material: MaterialV2
  quantity: number
  unit: string
  cost: number
}

// V2 Услуга в рецептуре
export interface RecipeServiceV2 {
  id: string
  serviceId: string
  service: ServiceV2
  quantity: number
  price: number
  totalPrice: number
}

// V2 Рецептура товара
export interface ProductRecipeV2 {
  id: string
  productId: string
  totalCost: number
  components: RecipeComponentV2[]
  services: RecipeServiceV2[]
  createdAt: string
  updatedAt: string
}

// V2 Элемент товарной поставки
export interface GoodsSupplyOrderItemV2 {
  id: string
  productId: string
  product: ProductV2
  quantity: number
  price?: number // Не видят FULFILLMENT и LOGIST
  totalPrice?: number // Не видят FULFILLMENT и LOGIST
  recipe?: ProductRecipeV2 // Не видят WHOLESALE
  receivedQuantity?: number
  damagedQuantity?: number
  acceptanceNotes?: string
}

// V2 Запрос на услугу фулфилмента
export interface FulfillmentServiceRequestV2 {
  id: string
  serviceId: string
  service: ServiceV2
  quantity: number
  price?: number // Не видят WHOLESALE и LOGIST
  totalPrice?: number // Не видят WHOLESALE и LOGISTS
  status: ServiceRequestStatus
  completedAt?: string
  completedBy?: UserV2
}

// V2 Основная товарная поставка
export interface GoodsSupplyOrderV2 {
  id: string
  status: GoodsSupplyOrderStatus
  
  // Участники
  sellerId: string
  seller: OrganizationV2
  fulfillmentCenterId: string
  fulfillmentCenter: OrganizationV2
  supplierId?: string
  supplier?: OrganizationV2
  logisticsPartnerId?: string
  logisticsPartner?: OrganizationV2
  
  // Даты
  requestedDeliveryDate: string
  createdAt: string
  updatedAt?: string
  supplierApprovedAt?: string
  shippedAt?: string
  receivedAt?: string
  estimatedDeliveryDate?: string
  
  // Товары и услуги
  items: GoodsSupplyOrderItemV2[]
  requestedServices?: FulfillmentServiceRequestV2[]
  
  // Итоги
  totalAmount?: number // Не видят FULFILLMENT и LOGIST
  totalItems: number
  
  // Логистика
  routeId?: string
  logisticsCost?: number // Не видят WHOLESALE
  trackingNumber?: string
  packagesCount?: number
  estimatedVolume?: number
  
  // Статусы и заметки
  receivedBy?: UserV2
  notes?: string
}

// V2 Статусы товарных поставок
export type GoodsSupplyOrderStatus = 
  | 'PENDING'              // Ожидает поставщика
  | 'SUPPLIER_APPROVED'    // Одобрена поставщиком  
  | 'LOGISTICS_CONFIRMED'  // Логистика подтверждена
  | 'SHIPPED'              // Отгружена
  | 'IN_TRANSIT'           // В пути
  | 'RECEIVED'             // Принята
  | 'PROCESSING'           // Обрабатывается
  | 'COMPLETED'            // Завершена
  | 'CANCELLED'            // Отменена

// V2 Статусы услуг
export type ServiceRequestStatus = 
  | 'PENDING'              // Ожидает выполнения
  | 'IN_PROGRESS'          // Выполняется
  | 'COMPLETED'            // Выполнена
  | 'CANCELLED'            // Отменена

// Props для V2 компонента таблицы
export interface MultiLevelSuppliesTableV2Props {
  supplies?: GoodsSupplyOrderV2[]
  loading?: boolean
  userRole?: 'SELLER' | 'WHOLESALE' | 'FULFILLMENT' | 'LOGIST'
  activeTab?: string
  onSupplyAction?: (supplyId: string, action: string) => void
  onVolumeChange?: (supplyId: string, volume: number | null) => void
  onPackagesChange?: (supplyId: string, packagesCount: number | null) => void
  onUpdateComplete?: (supplyId: string, field: 'volume' | 'packages') => void
}

// Props для V2 строки поставки
export interface SupplyRowV2BlockProps {
  supply: GoodsSupplyOrderV2
  index: number
  userRole: 'SELLER' | 'WHOLESALE' | 'FULFILLMENT' | 'LOGIST'
  isExpanded: boolean
  inputValues: {
    volume: string
    packages: string
  }
  pendingUpdates: Set<string>
  onToggleExpansion: (supplyId: string) => void
  onVolumeChange: (value: string) => void
  onPackagesChange: (value: string) => void
  onVolumeBlur: () => void
  onPackagesBlur: () => void
  onSupplyAction?: (supplyId: string, action: string) => void
  onRightClick: (e: React.MouseEvent, supplyId: string) => void
}

// Props для V2 строки товара
export interface ProductRowV2BlockProps {
  item: GoodsSupplyOrderItemV2
  supplyIndex: number
  itemIndex: number
  userRole: 'SELLER' | 'WHOLESALE' | 'FULFILLMENT' | 'LOGIST'
  isExpanded: boolean
  onToggleExpansion: (productId: string) => void
}

// Props для V2 блока рецептуры
export interface RecipeBlockV2Props {
  recipe: ProductRecipeV2
  supplyIndex: number
  userRole: 'SELLER' | 'WHOLESALE' | 'FULFILLMENT' | 'LOGIST'
}

// Props для V2 блока услуг фулфилмента
export interface ServiceRequestBlockV2Props {
  serviceRequest: FulfillmentServiceRequestV2
  supplyIndex: number
  userRole: 'SELLER' | 'WHOLESALE' | 'FULFILLMENT' | 'LOGIST'
}