-- CSV "종량제_개발목록_20260127(전체 메뉴 - 1차정리).csv" 기반으로
-- site 타입(menu_type.mt_code='site')의 1차/2차 메뉴를 초기 시드하는 SQL 뼈대입니다.
--
-- 1행: 1차 메뉴명 리스트
-- 2행 이후: 각 열이 해당 1차 메뉴의 2차 메뉴명에 해당.
--
-- 실제 운영 시에는 CSV를 파싱해서 INSERT를 생성하는 스크립트를 사용하는 편이 낫고,
-- 아래 SQL은 구조 이해 및 수동 시드를 위한 참고용입니다.

-- 1) site용 mt_idx 조회 (예: @mt_site)
SET @mt_site := (SELECT mt_idx FROM menu_type WHERE mt_code = 'site' LIMIT 1);


-- 3) 2차 메뉴 예시
-- CSV의 2행 이후를 바탕으로, 각 1차 메뉴 아래에 2차 메뉴를 추가하는 방식의 예시입니다.
-- 아래 예시는 구조를 보여주기 위한 샘플이며, 실제 라우트(mm_link)는 구현 후에 맞게 수정해야 합니다.

-- 예: "기본정보관리" 하위 2차 메뉴들 (PWB-030100~ 등)
SET @parent_basic := (
  SELECT mm_idx FROM menu
  WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '기본정보관리'
  LIMIT 1
);

INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name,
  CASE t.mm_name
    WHEN '기본 코드 관리' THEN 'bag/code-kinds'
    WHEN '단가 관리' THEN 'bag/bag-prices'
    WHEN '포장 단위 관리' THEN 'bag/packaging-units/manage'
    WHEN '판매 대행소 관리' THEN 'bag/sales-agencies'
    WHEN '담당자 관리' THEN 'bag/managers'
    WHEN '업체 관리' THEN 'bag/companies'
    WHEN '무료용 대상자 관리' THEN 'bag/free-recipients'
    WHEN '지정 판매소 관리' THEN 'bag/designated-shops'
    WHEN '지정 판매소 조회' THEN 'bag/designated-shops/browse'
    WHEN '지정 판매소 신규/취소 현황' THEN 'bag/designated-shops/district-new-cancel'
    WHEN '지정판매소 바코드 출력' THEN 'bag/designated-shops/barcode'
    WHEN 'PASSWORD 변경' THEN 'bag/password-change'
    WHEN '환경 설정' THEN 'dashboard'
    WHEN '지정 판매소 현황' THEN 'bag/designated-shops/district-new-cancel'
    ELSE ''
  END,
  @parent_basic, 1, t.mm_num, 0, '', 'Y'
FROM (
  SELECT 0 AS mm_num, '기본 코드 관리'       AS mm_name UNION ALL
  SELECT 1,           '단가 관리'                     UNION ALL
  SELECT 2,           '포장 단위 관리'               UNION ALL
  SELECT 3,           '판매 대행소 관리'             UNION ALL
  SELECT 4,           '담당자 관리'                   UNION ALL
  SELECT 5,           '업체 관리'                     UNION ALL
  SELECT 6,           '무료용 대상자 관리'           UNION ALL
  SELECT 7,           '지정 판매소 관리'             UNION ALL
  SELECT 8,           '지정 판매소 조회'             UNION ALL
  SELECT 9,           '지정 판매소 신규/취소 현황'   UNION ALL
  SELECT 10,          '지정판매소 바코드 출력'       UNION ALL
  SELECT 11,          'PC -> PDA로 자료 전송'        UNION ALL
  SELECT 12,          'PDA -> PC로 자료 전송'        UNION ALL
  SELECT 13,          '올린 자료 처리'               UNION ALL
  SELECT 14,          '시찰 처리'                     UNION ALL
  SELECT 15,          'PASSWORD 변경'                UNION ALL
  SELECT 16,          '환경 설정'                     UNION ALL
  SELECT 17,          '지정 판매소 현황'
) AS t
WHERE @parent_basic IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM menu m
    WHERE m.mt_idx = @mt_site
      AND m.lg_idx = 1
      AND m.mm_pidx = @parent_basic
      AND m.mm_name = t.mm_name
  );

-- 2) 1차: 발주 입고 관리 하위 메뉴
SET @parent_order := (
  SELECT mm_idx FROM menu
  WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '발주 입고 관리'
  LIMIT 1
);

INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name,
  CASE t.mm_name
    WHEN '발주 등록' THEN 'bag/order/create'
    WHEN '발주 변경' THEN 'bag/bag-orders'
    WHEN '발주 현황' THEN 'bag/bag-orders'
    WHEN '발주 입고[스캐너]' THEN 'bag/receiving/create'
    WHEN '입고 현황' THEN 'bag/bag-receivings'
    ELSE ''
  END,
  @parent_order, 1, t.mm_num, 0, '', 'Y'
FROM (
  SELECT 0 AS mm_num, '발주 등록'          AS mm_name UNION ALL
  SELECT 1,           '발주 변경'                   UNION ALL
  SELECT 2,           'LOT-No 디스켓 불출'         UNION ALL
  SELECT 3,           '발주 현황'                   UNION ALL
  SELECT 4,           '발주 입고[스캐너]'          UNION ALL
  SELECT 5,           '일괄입고'                   UNION ALL
  SELECT 6,           '입고 현황'
) AS t
WHERE @parent_order IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM menu m
    WHERE m.mt_idx = @mt_site
      AND m.lg_idx = 1
      AND m.mm_pidx = @parent_order
      AND m.mm_name = t.mm_name
  );

-- 3) 1차: 불출 관리 하위 메뉴
SET @parent_issue := (
  SELECT mm_idx FROM menu
  WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '불출 관리'
  LIMIT 1
);

INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name,
  CASE t.mm_name
    WHEN '무료 불출 현황' THEN 'bag/bag-issues'
    WHEN '무료용 불출 처리' THEN 'bag/issue/create'
    WHEN '무료용 불출 취소' THEN 'bag/issue'
    ELSE ''
  END,
  @parent_issue, 1, t.mm_num, 0, '', 'Y'
FROM (
  SELECT 0 AS mm_num, '무료 불출 현황'   AS mm_name UNION ALL
  SELECT 1,           '무료용 불출 처리'          UNION ALL
  SELECT 2,           '무료용 불출 취소'
) AS t
WHERE @parent_issue IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM menu m
    WHERE m.mt_idx = @mt_site
      AND m.lg_idx = 1
      AND m.mm_pidx = @parent_issue
      AND m.mm_name = t.mm_name
  );

-- 4) 1차: 재고 관리 하위 메뉴
SET @parent_inventory := (
  SELECT mm_idx FROM menu
  WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '재고 관리'
  LIMIT 1
);

INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name,
  CASE t.mm_name
    WHEN '재고 현황' THEN 'bag/inventory'
    WHEN '실사 관리' THEN 'bag/inventory/adjust'
    ELSE ''
  END,
  @parent_inventory, 1, t.mm_num, 0, '', 'Y'
FROM (
  SELECT 0 AS mm_num, '재고 현황'     AS mm_name UNION ALL
  SELECT 1,           '실사 관리'               UNION ALL
  SELECT 2,           '실사 선별'               UNION ALL
  SELECT 3,           '실사 선별 조회'         UNION ALL
  SELECT 4,           '실사 등록'               UNION ALL
  SELECT 5,           '실사 재고 조회'         UNION ALL
  SELECT 6,           '실사 오류 조회'         UNION ALL
  SELECT 7,           '실사 선별 취소'         UNION ALL
  SELECT 8,           '실사 등록 취소'
) AS t
WHERE @parent_inventory IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM menu m
    WHERE m.mt_idx = @mt_site
      AND m.lg_idx = 1
      AND m.mm_pidx = @parent_inventory
      AND m.mm_name = t.mm_name
  );

-- 5) 1차: 판매 관리 하위 메뉴
SET @parent_sales := (
  SELECT mm_idx FROM menu
  WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '판매 관리'
  LIMIT 1
);

INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name,
  CASE t.mm_name
    WHEN '전화 접수' THEN 'bag/shop-orders'
    WHEN '전화 접수 관리' THEN 'bag/shop-orders'
    WHEN '지정 판매소 판매' THEN 'bag/sale/create'
    WHEN '지정 판매소 반품' THEN 'bag/bag-sales'
    WHEN '지정 판매소 판매 취소' THEN 'bag/bag-sales'
    WHEN '지정 판매소 반품 취소' THEN 'bag/bag-sales'
    ELSE ''
  END,
  @parent_sales, 1, t.mm_num, 0, '', 'Y'
FROM (
  SELECT 0 AS mm_num, '전화 접수'         AS mm_name UNION ALL
  SELECT 1,           '전화 접수 관리'             UNION ALL
  SELECT 2,           '지정 판매소 판매'           UNION ALL
  SELECT 3,           '지정 판매소 반품'           UNION ALL
  SELECT 4,           '지정 판매소 판매 취소'      UNION ALL
  SELECT 5,           '지정 판매소 반품 취소'
) AS t
WHERE @parent_sales IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM menu m
    WHERE m.mt_idx = @mt_site
      AND m.lg_idx = 1
      AND m.mm_pidx = @parent_sales
      AND m.mm_name = t.mm_name
  );

-- 6) 1차: 판매 현황 하위 메뉴
SET @parent_sales_stats := (
  SELECT mm_idx FROM menu
  WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '판매 현황'
  LIMIT 1
);

INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name,
  CASE t.mm_name
    WHEN '지정 판매소 일 판매대장' THEN 'bag/reports/sales-ledger'
    WHEN '지정 판매소 기간별 판매대장' THEN 'bag/reports/sales-ledger'
    WHEN '일계표' THEN 'bag/reports/daily-summary'
    WHEN '기간별 판매현황[일집계]' THEN 'bag/reports/period-sales'
    WHEN '기간별 판매현황[기간집계]' THEN 'bag/reports/period-sales'
    WHEN '년 판매 현황' THEN 'bag/reports/yearly-sales'
    WHEN '지정 판매소 별 판매현황(수량)' THEN 'bag/reports/shop-sales'
    WHEN '지정 판매소 별 판매현황(금액)' THEN 'bag/reports/shop-sales'
    WHEN '지정판매소별 거래현황' THEN 'bag/reports/shop-sales'
    WHEN '홈텍스 처리' THEN 'bag/reports/hometax-export'
    ELSE ''
  END,
  @parent_sales_stats, 1, t.mm_num, 0, '', 'Y'
FROM (
  SELECT 0 AS mm_num, '지정 판매소 일 판매대장'          AS mm_name UNION ALL
  SELECT 1,           '지정 판매소 기간별 판매대장'               UNION ALL
  SELECT 2,           '일계표'                                   UNION ALL
  SELECT 3,           '기간별 판매현황[일집계]'                  UNION ALL
  SELECT 4,           '기간별 판매현황[기간집계]'                UNION ALL
  SELECT 5,           '년 판매 현황'                             UNION ALL
  SELECT 6,           '지정 판매소 별 판매현황(수량)'            UNION ALL
  SELECT 7,           '지정 판매소 별 판매현황(금액)'            UNION ALL
  SELECT 8,           '지정판매소별 거래현황'                    UNION ALL
  SELECT 9,           '홈텍스 처리'
) AS t
WHERE @parent_sales_stats IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM menu m
    WHERE m.mt_idx = @mt_site
      AND m.lg_idx = 1
      AND m.mm_pidx = @parent_sales_stats
      AND m.mm_name = t.mm_name
  );

-- 7) 1차: 봉투 수불 관리 하위 메뉴
SET @parent_flow := (
  SELECT mm_idx FROM menu
  WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '봉투 수불 관리'
  LIMIT 1
);

INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name,
  CASE t.mm_name
    WHEN '기타 입출고' THEN 'bag/reports/misc-flow'
    WHEN '기간별 봉투 수불 현황' THEN 'bag/flow'
    WHEN '일일 봉투 수불 현황' THEN 'bag/waste-suibal-enterprise'
    WHEN '반품/파기 현황' THEN 'bag/reports/returns'
    WHEN '쓰레기 봉투 수급 계획' THEN 'bag/reports/supply-demand'
    WHEN 'LOT 수불 조회' THEN 'bag/reports/lot-flow'
    ELSE ''
  END,
  @parent_flow, 1, t.mm_num, 0, '', 'Y'
FROM (
  SELECT 0 AS mm_num, '기타 입출고'            AS mm_name UNION ALL
  SELECT 1,           '기간별 봉투 수불 현황'          UNION ALL
  SELECT 2,           '일일 봉투 수불 현황'            UNION ALL
  SELECT 3,           '반품/파기 현황'                 UNION ALL
  SELECT 4,           '쓰레기 봉투 수급 계획'          UNION ALL
  SELECT 5,           'LOT 수불 조회'
) AS t
WHERE @parent_flow IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM menu m
    WHERE m.mt_idx = @mt_site
      AND m.lg_idx = 1
      AND m.mm_pidx = @parent_flow
      AND m.mm_name = t.mm_name
  );

-- 8) 1차: 통계 분석 관리 하위 메뉴
SET @parent_analytics := (
  SELECT mm_idx FROM menu
  WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '통계 분석 관리'
  LIMIT 1
);

INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name,
  CASE t.mm_name
    WHEN '전년 대비 판매 분석' THEN 'bag/analytics'
    WHEN '월별 판매 추이 분석' THEN 'bag/analytics'
    WHEN '계절별 판매 추이 분석' THEN 'bag/analytics'
    ELSE ''
  END,
  @parent_analytics, 1, t.mm_num, 0, '', 'Y'
FROM (
  SELECT 0 AS mm_num, '전년 대비 판매 분석'     AS mm_name UNION ALL
  SELECT 1,           '월별 판매 추이 분석'              UNION ALL
  SELECT 2,           '계절별 판매 추이 분석'
) AS t
WHERE @parent_analytics IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM menu m
    WHERE m.mt_idx = @mt_site
      AND m.lg_idx = 1
      AND m.mm_pidx = @parent_analytics
      AND m.mm_name = t.mm_name
  );

-- 9) 1차: 창 하위 메뉴
SET @parent_window := (
  SELECT mm_idx FROM menu
  WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '창'
  LIMIT 1
);

INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name, 'bag/window', @parent_window, 1, t.mm_num, 0, '', 'Y'
FROM (
  SELECT 0 AS mm_num, 'PDA 수정'       AS mm_name UNION ALL
  SELECT 1,           '바둑판식 배열'           UNION ALL
  SELECT 2,           '계단식 배열'             UNION ALL
  SELECT 3,           '계층식 배열'
) AS t
WHERE @parent_window IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM menu m
    WHERE m.mt_idx = @mt_site
      AND m.lg_idx = 1
      AND m.mm_pidx = @parent_window
      AND m.mm_name = t.mm_name
  );

-- 10) 1차: 도움말 하위 메뉴
SET @parent_help := (
  SELECT mm_idx FROM menu
  WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '도움말'
  LIMIT 1
);

INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name,
  CASE t.mm_name
    WHEN '도움말 항목' THEN 'bag/help'
    WHEN '원격 요청' THEN 'bag/help'
    WHEN 'pda 리셋' THEN 'bag/help'
    WHEN '번호알기' THEN 'bag/help'
    WHEN 'Data Backup' THEN 'bag/help'
    WHEN '컴포트 설정' THEN 'bag/help'
    WHEN 'Version 정보' THEN 'bag/help'
    WHEN '종료' THEN 'bag/help'
    WHEN '1GBMS' THEN 'bag/help'
    ELSE ''
  END,
  @parent_help, 1, t.mm_num, 0, '', 'Y'
FROM (
  SELECT 0 AS mm_num, '도움말 항목'   AS mm_name UNION ALL
  SELECT 1,           '원격 요청'               UNION ALL
  SELECT 2,           'pda 리셋'                UNION ALL
  SELECT 3,           '번호알기'                UNION ALL
  SELECT 4,           'Data Backup'            UNION ALL
  SELECT 5,           '컴포트 설정'             UNION ALL
  SELECT 6,           'Version 정보'           UNION ALL
  SELECT 7,           '종료'                   UNION ALL
  SELECT 8,           '1GBMS'
) AS t
WHERE @parent_help IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM menu m
    WHERE m.mt_idx = @mt_site
      AND m.lg_idx = 1
      AND m.mm_pidx = @parent_help
      AND m.mm_name = t.mm_name
  );

