"use client";

import React from "react";
import { ModalRepeaterTableComponent } from "@/lib/registry/components/modal-repeater-table";
import type {
  RepeaterColumnConfig,
  CalculationRule,
} from "@/lib/registry/components/modal-repeater-table";

/**
 * 수주 등록 전용 품목 반복 테이블 컴포넌트
 * 
 * 이 컴포넌트는 수주 등록 화면 전용이며, 설정이 고정되어 있습니다.
 * 범용 ModalRepeaterTable과 달리 item_info 테이블만 조회하며,
 * 수주 등록에 필요한 컬럼과 계산 공식이 미리 설정되어 있습니다.
 */

interface OrderItemRepeaterTableProps {
  /** 현재 선택된 품목 목록 */
  value: any[];
  /** 품목 목록 변경 시 콜백 */
  onChange: (items: any[]) => void;
  /** 비활성화 여부 */
  disabled?: boolean;
}

// 수주 등록 전용 컬럼 설정 (고정)
const ORDER_COLUMNS: RepeaterColumnConfig[] = [
  {
    field: "item_number",
    label: "품번",
    editable: false,
    width: "120px",
  },
  {
    field: "item_name",
    label: "품명",
    editable: false,
    width: "180px",
  },
  {
    field: "specification",
    label: "규격",
    editable: false,
    width: "150px",
  },
  {
    field: "material",
    label: "재질",
    editable: false,
    width: "120px",
  },
  {
    field: "quantity",
    label: "수량",
    type: "number",
    editable: true,
    required: true,
    defaultValue: 1,
    width: "100px",
  },
  {
    field: "selling_price",
    label: "단가",
    type: "number",
    editable: true,
    required: true,
    width: "120px",
  },
  {
    field: "amount",
    label: "금액",
    type: "number",
    editable: false,
    calculated: true,
    width: "120px",
  },
  {
    field: "order_date",
    label: "수주일",
    type: "date",
    editable: true,
    width: "130px",
  },
  {
    field: "delivery_date",
    label: "납기일",
    type: "date",
    editable: true,
    width: "130px",
  },
];

// 수주 등록 전용 계산 공식 (고정)
const ORDER_CALCULATION_RULES: CalculationRule[] = [
  {
    result: "amount",
    formula: "quantity * selling_price",
    dependencies: ["quantity", "selling_price"],
  },
];

export function OrderItemRepeaterTable({
  value,
  onChange,
  disabled = false,
}: OrderItemRepeaterTableProps) {
  return (
    <ModalRepeaterTableComponent
      // 고정 설정 (수주 등록 전용)
      sourceTable="item_info"
      sourceColumns={[
        "item_number",
        "item_name",
        "specification",
        "material",
        "unit",
        "selling_price",
      ]}
      sourceSearchFields={["item_name", "item_number", "specification"]}
      modalTitle="품목 검색 및 선택"
      modalButtonText="품목 검색"
      multiSelect={true}
      columns={ORDER_COLUMNS}
      calculationRules={ORDER_CALCULATION_RULES}
      uniqueField="item_number"
      
      // 외부에서 제어 가능한 prop
      value={value}
      onChange={onChange}
      disabled={disabled}
    />
  );
}

