판매관리 그리드 V1 컬럼 8개 보강 + cu01_cnt 실데이터 + wace 1:1 검증 문서·자동 검증 SQL
- 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>
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
-- ============================================================
|
||||
-- 판매관리 자동 검증 SQL (BEGIN/ROLLBACK 시나리오)
|
||||
-- 메인 테이블: project_mgmt + sales_registration + contract_mgmt
|
||||
-- ============================================================
|
||||
|
||||
\echo ''
|
||||
\echo '================== Sale 검증 시작 =================='
|
||||
|
||||
-- ─────────────────────────────────────────────────────────
|
||||
-- [0] 사전 카운트
|
||||
-- ─────────────────────────────────────────────────────────
|
||||
\echo ''
|
||||
\echo '[0] 사전 카운트 ============================'
|
||||
SELECT 'project_mgmt' AS tbl, COUNT(*) FROM project_mgmt
|
||||
UNION ALL SELECT 'sales_registration', COUNT(*) FROM sales_registration
|
||||
UNION ALL SELECT 'project_mgmt matched by SR.project_no LIKE',
|
||||
COUNT(DISTINCT T.project_no)
|
||||
FROM project_mgmt T JOIN sales_registration SR ON SR.project_no LIKE T.project_no || '%';
|
||||
|
||||
-- ─────────────────────────────────────────────────────────
|
||||
-- [1] 그리드 V1 신규 8개 컬럼 정합성 검증
|
||||
-- ─────────────────────────────────────────────────────────
|
||||
\echo ''
|
||||
\echo '[1] 그리드 V1 신규 컬럼 (제품구분/국내해외/접수일/고객사요청사항/주문서첨부/출하방법/담당자/인도조건) =========================='
|
||||
SELECT
|
||||
T.project_no,
|
||||
CC_PRD.code_name AS product_type_name,
|
||||
CC_AREA.code_name AS nation_name,
|
||||
CM.receipt_date,
|
||||
COALESCE(NULLIF(CM.customer_request, ''), '-') AS customer_request,
|
||||
COALESCE(AF.cu01_cnt, 0) AS cu01_cnt,
|
||||
SR.shipping_method,
|
||||
U_MGR.user_name AS manager_name,
|
||||
SR.incoterms
|
||||
FROM project_mgmt T
|
||||
LEFT JOIN contract_mgmt CM ON CM.objid = T.contract_objid
|
||||
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_AREA ON CC_AREA.code_id = T.area_cd AND CC_AREA.status='active'
|
||||
LEFT JOIN comm_code CC_PRD ON CC_PRD.code_id = T.product AND CC_PRD.status='active'
|
||||
LEFT JOIN (
|
||||
SELECT target_objid,
|
||||
COUNT(*) FILTER (WHERE doc_type IN ('FTC_ORDER','ORDER')) AS cu01_cnt
|
||||
FROM attach_file_info WHERE UPPER(status)='ACTIVE'
|
||||
GROUP BY target_objid
|
||||
) AF ON AF.target_objid = T.contract_objid
|
||||
ORDER BY T.regdate DESC NULLS LAST, T.project_no DESC
|
||||
LIMIT 10;
|
||||
|
||||
-- ─────────────────────────────────────────────────────────
|
||||
-- [2] 판매상태 wace 로직 검증 (미판매/완판/분할판매)
|
||||
-- ─────────────────────────────────────────────────────────
|
||||
\echo ''
|
||||
\echo '[2] 판매상태 wace 로직 (미판매/완판/분할판매) =========================='
|
||||
SELECT
|
||||
T.project_no,
|
||||
T.quantity AS order_qty,
|
||||
COALESCE(SR_AGG.sales_qty_sum, 0) AS sales_qty_sum,
|
||||
CASE
|
||||
WHEN COALESCE(SR_AGG.sales_qty_sum, 0) = 0 THEN '미판매'
|
||||
WHEN COALESCE(SR_AGG.sales_qty_sum, 0) >= COALESCE(CAST(NULLIF(REPLACE(T.quantity, ',', ''), '') AS NUMERIC), 0) THEN '완판'
|
||||
WHEN COALESCE(SR_AGG.sales_qty_sum, 0) > 0 THEN '분할판매'
|
||||
ELSE ''
|
||||
END AS sales_status
|
||||
FROM project_mgmt T
|
||||
LEFT JOIN (
|
||||
SELECT SR2.project_no, SUM(SR2.sales_quantity) AS sales_qty_sum
|
||||
FROM sales_registration SR2
|
||||
GROUP BY SR2.project_no
|
||||
) SR_AGG ON SR_AGG.project_no LIKE T.project_no || '%'
|
||||
ORDER BY T.regdate DESC NULLS LAST
|
||||
LIMIT 10;
|
||||
|
||||
|
||||
\echo ''
|
||||
\echo '================== Sale 검증 끝 =================='
|
||||
Reference in New Issue
Block a user