import 'inventory_counterparty.dart';
import 'inventory_transaction_reference.dart';
import 'inventory_warehouse.dart';

/// 재고 변동 이벤트 요약/상세 정보.
class InventoryEvent {
  const InventoryEvent({
    required this.eventId,
    required this.eventKind,
    required this.eventLabel,
    required this.deltaQuantity,
    required this.occurredAt,
    this.counterparty,
    this.warehouse,
    this.transaction,
    this.line,
  });

  /// 이벤트 식별자.
  final int eventId;

  /// 이벤트 종류(`receipt`, `issue`, `rental_out`, `rental_return`).
  final String eventKind;

  /// 현지화된 이벤트 라벨.
  final String eventLabel;

  /// 수량 증감.
  final int deltaQuantity;

  /// 발생 시각(UTC).
  final DateTime occurredAt;

  /// 거래처 정보.
  final InventoryCounterparty? counterparty;

  /// 이벤트가 발생한 창고 정보.
  final InventoryWarehouse? warehouse;

  /// 연결된 전표 정보.
  final InventoryTransactionReference? transaction;

  /// 연결된 라인 정보.
  final InventoryEventLineReference? line;
}
