a0f6e0fa26
- getList SQL: attach_file_info LATERAL JOIN으로 cu01_cnt(주문서첨부) 실데이터 (contract_mgmt.objid 기반, doc_type IN FTC_ORDER/ORDER) - SaleListRow 타입: product_type_name/nation_name/receipt_date/customer_request/manager_name/payment_type_name/cu01_cnt 보강 - GRID_COLUMNS 8개 추가: 제품구분/국내해외/접수일/고객사요청사항/주문서첨부/출하방법/담당자/인도조건 (wace 36/36 일치) - docs/migration/sales/03-sale-verify.md: wace ↔ RPS 매핑 / 갭 처리 - scripts/verify-sale.sql: BEGIN/ROLLBACK 2개 시나리오 (그리드 V1 / 판매상태 wace 로직) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.2 KiB
4.2 KiB
03. 판매관리 wace 1:1 검증
작성: 2026-05-11 / 사이클: 구조적 검증 3차 (판매관리 메뉴) 원본:
wace_plm/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp대상:app/(main)/COMPANY_16/sales/sale/page.tsx메인 테이블:project_mgmt T LEFT JOIN contract_mgmt CM LEFT JOIN sales_registration SR
1. 그리드 컬럼 — wace 활성 36개 vs RPS 36개 (보강 후 일치)
| # | wace title | RPS GRID_COLUMNS key | 상태 |
|---|---|---|---|
| 1 | 프로젝트번호 (frozen) | project_no |
✅ |
| 2 | 주문유형 | order_type_name |
✅ |
| 3 | 발주일 | order_date |
✅ |
| 4 | 발주번호 | po_no |
✅ |
| 5 | 요청납기 | request_date |
✅ |
| 6 | 출하일 | shipping_date |
✅ |
| 7 | 고객사 | customer |
✅ |
| 8 | 품명 | product_name |
✅ |
| 9 | 수주수량 | order_quantity |
✅ |
| 10 | 판매수량 | sales_quantity |
✅ |
| 11 | 잔량 | remaining_quantity |
✅ |
| 12 | 판매단가 | sales_unit_price |
✅ |
| 13 | 판매공급가액 | sales_supply_price |
✅ |
| 14 | 부가세 | sales_vat |
✅ |
| 15 | 판매총액 | sales_total_amount |
✅ |
| 16 | 판매원화총액 | sales_total_amount_krw |
✅ |
| 17 | 잔량원화총액 | remaining_amount_krw |
✅ |
| 18 | 수주상태 | order_status_name |
✅ |
| 19 | 판매상태 | sales_status |
✅ (wace 로직: 미판매/완판/분할판매 동적) |
| 20 | 생산상태 | production_status |
✅ (placeholder) |
| 21 | 출하지시상태 | shipping_order_status |
✅ |
| 22 | 유/무상 | payment_type_name |
✅ |
| 23 | 환종 | sales_currency_name |
✅ |
| 24 | 환율 | sales_exchange_rate |
✅ |
| 25 | S/N | serial_no |
✅ |
| 26 | 분할S/N | split_serial_no |
✅ (placeholder) |
| 27 | 품번 | product_no |
✅ |
| 28 | 제품구분 | product_type_name |
✅ (신규) |
| 29 | 국내/해외 | nation_name |
✅ (신규) |
| 30 | 접수일 | receipt_date |
✅ (신규) |
| 31 | 고객사요청사항 | customer_request |
✅ (신규) |
| 32 | 주문서첨부 | cu01_cnt (clip) |
✅ (신규, attach_file_info LATERAL JOIN) |
| 33 | 출하방법 | shipping_method |
✅ (신규) |
| 34 | 담당자 | manager_name |
✅ (신규) |
| 35 | 인도조건 | incoterms |
✅ (신규) |
| 36 | 거래명세서 | has_transaction_statement |
✅ (placeholder) |
2. SQL 핵심 구조
FROM project_mgmt T
LEFT JOIN contract_mgmt CM ON CM.objid = T.contract_objid
LEFT JOIN contract_item CI ON CI.objid = T.contract_item_objid
LEFT JOIN customer_mng C ON C.customer_code = SUBSTRING(T.customer_objid, 3)
LEFT JOIN sales_registration SR ON SR.project_no = T.project_no
LEFT JOIN user_info U_MGR ON U_MGR.user_id = SR.manager_user_id
LEFT JOIN comm_code CC_* ON CC_*.code_id = T.* AND status='active' (CAT/AREA/PRD/RES/CUR/CUR_S)
LEFT JOIN SR_AGG ON SR_AGG.project_no LIKE T.project_no || '%' (판매수량 합계 — 분할판매 패턴)
LEFT JOIN CIS_AGG ON CIS_AGG.item_objid = T.contract_item_objid (S/N 집계)
LEFT JOIN AF ON AF.target_objid = T.contract_objid (주문서첨부 신규)
3. 갭 처리
| # | 갭 | 처리 |
|---|---|---|
| S1 | 그리드 8개 누락 (제품구분/국내해외/접수일/고객사요청사항/주문서첨부/출하방법/담당자/인도조건) | ✅ 본 커밋에서 추가 |
| S2 | cu01_cnt placeholder 0 → 실제 attach_file_info 카운트 |
✅ LATERAL JOIN 추가 |
| S3 | 분할S/N (split_serial_no) 실데이터 | 🟡 백로그 — sales_registration 분할 LIKE 패턴 활용 시 추후 |
| S4 | 거래명세서/생산상태 실데이터 | 🟡 백로그 |
4. 자동 검증 결과 (scripts/verify-sale.sql)
- 그리드 8개 신규 컬럼 SELECT 정상 (10 rows 샘플 모두 product_type_name/nation_name 표시)
cu01_cnt운영 데이터에서 모두 0 (현재 attach_file_info 추가견적/주문서 doc_type 없음)- 판매상태 wace 로직 (미판매/완판/분할판매) 정합
5. 결론
판매관리 메뉴 wace 운영 화면과 1:1 정합 (36/36 컬럼).
다음 메뉴: 매출관리 (revenue) — shipment_log 기반.