/**
 * 수주 샘플 데이터 생성기
 *
 * 수주는 대부분 견적에서 전환되므로,
 * 견적 선택 후 자동 채움되는 필드 외의 추가 정보만 생성
 */

import {
  randomPick,
  randomPhone,
  dateAfterDays,
  randomRemark,
} from './index';
import type { OrderFormData } from '@/components/orders/OrderRegistration';

// 배송방식
const DELIVERY_METHODS = ['direct', 'pickup', 'courier'];

// 운임비용
const SHIPPING_COSTS = ['free', 'prepaid', 'collect', 'negotiable'];

/**
 * 수주 추가 정보 생성 (견적 전환 후 채울 필드들)
 */
export interface GenerateOrderDataOptions {
  // 견적에서 가져온 기본 정보 (이미 채워진 상태)
  baseData?: Partial<OrderFormData>;
}

export function generateOrderData(options: GenerateOrderDataOptions = {}): Partial<OrderFormData> {
  const { baseData = {} } = options;

  // 견적에서 전환된 경우 이미 채워진 필드들은 그대로 유지
  // 추가로 채워야 할 필드들만 생성

  return {
    ...baseData,

    // 배송 정보
    expectedShipDate: dateAfterDays(14), // 2주 후
    expectedShipDateUndecided: false,
    deliveryRequestDate: dateAfterDays(21), // 3주 후
    deliveryRequestDateUndecided: false,
    deliveryMethod: randomPick(DELIVERY_METHODS),
    shippingCost: randomPick(SHIPPING_COSTS),

    // 수신자 정보 (견적의 담당자 정보와 다를 수 있음)
    receiver: baseData.manager || randomPick(['김수신', '이수신', '박수신']),
    receiverContact: baseData.contact || randomPhone(),

    // 주소 (테스트용 기본값)
    zipCode: '06234',
    address: '서울특별시 강남구 테헤란로 123',
    addressDetail: '삼성빌딩 10층',

    // 비고
    remarks: randomRemark(),
  };
}

/**
 * 견적 없이 수주 직접 생성 시 사용
 */
export function generateOrderDataFull(): OrderFormData {
  return {
    // 기본 정보
    clientId: '',
    clientName: '테스트 거래처',
    siteName: '테스트 현장',
    manager: randomPick(['김담당', '이담당', '박담당']),
    contact: randomPhone(),

    // 배송 정보
    expectedShipDate: dateAfterDays(14),
    expectedShipDateUndecided: false,
    deliveryRequestDate: dateAfterDays(21),
    deliveryRequestDateUndecided: false,
    deliveryMethod: randomPick(DELIVERY_METHODS),
    shippingCost: randomPick(SHIPPING_COSTS),
    receiver: randomPick(['김수신', '이수신', '박수신']),
    receiverContact: randomPhone(),

    // 주소
    zipCode: '06234',
    address: '서울특별시 강남구 테헤란로 123',
    addressDetail: '삼성빌딩 10층',

    // 비고
    remarks: randomRemark(),

    // 품목 (빈 배열 - 견적 선택 또는 수동 추가 필요)
    items: [],

    // 금액
    subtotal: 0,
    discountRate: 0,
    totalAmount: 0,
  };
}