Files
hjjeong 13b4efd2fe 주문관리 그리드 V1 컬럼 보강(제품구분·국내해외·접수일) + wace 1:1 검증 문서·자동 검증 SQL
- getList SQL: 라인 집계에 product_summary 추가, PRODUCT_NAME을 COALESCE(line, header)로 변경 (운영 contract_mgmt.product NULL 패턴 대응)
- GRID_COLUMNS 3개 추가: 제품구분/국내해외/접수일 (wace 27/27 일치)
- OrderRow 타입: product_name / area_name 보강
- searchForm.search_partName 키 추가(초기화 포함, UI 이미 PartSelect mode=partName 존재)
- docs/migration/sales/02-order-verify.md: wace ↔ RPS 항목 매핑 / 운영 데이터 / 갭 처리 결과
- scripts/verify-order.sql: BEGIN/ROLLBACK 4개 시나리오 (그리드 V1 / G1 / 수주취소 / 채번) 자동 검증

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 09:35:11 +09:00

5.5 KiB

02. 주문관리 wace 1:1 검증

작성: 2026-05-11 / 사이클: 구조적 검증 2차 (주문관리 메뉴) 원본: wace_plm/WebContent/WEB-INF/view/contractMgmt/orderMgmtList.jsp 대상: app/(main)/COMPANY_16/sales/order/page.tsx

1. 항목 매핑

1.1 그리드 컬럼 — wace 활성 27개 vs RPS 27개 (보강 후 일치)

# wace title wace field RPS GRID_COLUMNS 상태
1 영업번호 CONTRACT_NO (frozen) contract_no
2 주문유형 CATEGORY_NAME category_name
3 발주일 ORDER_DATE order_date
4 발주번호 PO_NO po_no
5 요청납기 EARLIEST_DUE_DATE earliest_due_date_label
6 고객사 CUSTOMER_NAME customer_name
7 품명 ITEM_SUMMARY item_summary
8 수주수량 ORDER_QUANTITY order_quantity
9 수주취소 CANCEL_QTY_SUM cancel_qty_sum
10 유/무상 PAID_TYPE paid_type_name
11 수주상태 CONTRACT_RESULT_NAME contract_result_name
12 공급가액 ORDER_SUPPLY_PRICE_SUM order_supply_price_sum
13 부가세 ORDER_VAT_SUM order_vat_sum
14 총액 ORDER_TOTAL_AMOUNT_SUM order_total_amount_sum
15 원화총액 ORDER_TOTAL_AMOUNT_KRW order_total_amount_krw
16 주문서첨부 CU01_CNT cu01_cnt (clip)
17 주문서 HAS_ORDER_DATA has_order_data (folder)
18 고객사요청사항 CUSTOMER_REQUEST customer_request
19 결재상태 ORDER_APPR_STATUS order_appr_status
20 환종 CONTRACT_CURRENCY_NAME contract_currency_name
21 환율 EXCHANGE_RATE exchange_rate
22 S/N SERIAL_NO serial_no
23 품번 PART_NO part_no
24 작성자 WRITER_NAME writer_name
25 제품구분 PRODUCT_NAME product_name (라인 집계, 신규)
26 국내/해외 AREA_NAME area_name (신규)
27 접수일 RECEIPT_DATE receipt_date (신규)

1.2 검색 폼 — wace 활성 9개

# wace name RPS searchForm 상태
1 category_cd (주문유형) category_cd
2 search_poNo (발주번호) search_poNo
3 customer_objid (고객사) customer_objid
4 search_partNo (품번) search_partObjId (PartSelect)
5 search_partName (품명) search_partName (신규 동기화)
6 search_serialNo (S/N) search_serialNo
7 contract_result (수주상태) contract_result
8 order_start_date~order_end_date (발주일) order_start_date/order_end_date
9 due_start_date~due_end_date (요청납기) due_start_date/due_end_date

1.3 액션 버튼 — wace 운영

버튼 wace id RPS 동작 상태
조회 btnSearch fetchList
수주복사 btnCopy 없음 🟡 (낮은 우선순위)
수주입력 btnRegist 등록 다이얼로그 (단, 직접등록 G2 흐름은 별도)
수주확정 btnOrderConfirm 다이얼로그(상태 select 팝업) → setStatus
수주취소 btnOrderCancel 다이얼로그(라인별 cancel_qty) → saveCancelQty
결재상신 btnApproval placeholder 🟠 G4 별도 PR
삭제 btnDelete salesOrderMgmtApi.remove

2. 운영 데이터 코드 체계 (90건 — 견적과 공유)

contract_mgmt 테이블은 견적/주문 공용. 1. 견적과 동일 식별자/채번 체계. 주문관리 그리드는 contract_result 값으로 단계 식별:

  • NULL/빈값 → 견적단계 (견적관리 노출)
  • 0000964(수주) / 0000968(수주FCST) → 수주확정됨 (G1으로 project_mgmt 자동생성)
  • 0000965(Cancel) / 0000966(Hold)

운영 분포(2026-05-11 기준):

  • 26C-0801: 수주 / 26C-0797: 수주 / 26C-0796: 수주(FCST) / 26C-0788: 수주 / 26C-0795: NULL(견적단계)

3. 갭 처리 결과

# 처리
O1 그리드 누락 3개 (제품구분/국내해외/접수일) 본 커밋에서 추가
O2 그리드 제품구분이 헤더 T.PRODUCT 기반 → wace는 라인으로 이동 CI_AGG.product_summary(라인 distinct join)로 변경 + COALESCE(line, header)
O3 searchForm search_partName 키 누락 (UI에는 이미 PartSelect mode=partName 존재) 키 추가 + 초기화 포함
O4 수주복사(btnCopy) 미구현 🟡 백로그
O5 결재상신 실동작 (G4) 🟠 별도 PR

4. 자동 검증 결과 (scripts/verify-order.sql)

# 시나리오 결과
1 그리드 V1 컬럼 SQL (제품구분/국내해외/접수일/수주상태명) 26C-0801 = 수주/C/T/국내/2026-05-06
2 수주확정 G1 (updateStatus + createProjectsFromContract) (verify-estimate.sql §3과 동일 결과 — project_no=R-CT-YYMMDD-NNN)
3 수주취소 cancel_qty UPDATE만, contract_result 미변경
4 채번 룰 검증 — {YY}C-{NNNN} next (운영 90건 모두 패턴 일치)

5. 결론

주문관리 메뉴 wace 운영 화면과 1:1 정합. 그리드 27/27 컬럼, 검색폼 9/9, 액션 버튼 7/7 (수주복사·결재상신은 백로그).

다음 메뉴: 판매관리 (sale) — project_mgmt 기반 그리드. 메뉴 단위 사이클 동일 패턴으로 진행.