13b4efd2fe
- 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>
5.5 KiB
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 기반 그리드. 메뉴 단위 사이클 동일 패턴으로 진행.