## 1. 프로그램 개요 | 항목 | 내용 | | --- | --- | | **프로그램 명** | PackingInvoiceMapper | | **실행 파일 명** | State_Comparision_Ver_1.0.0.exe | | **설치 위치** | 4층 포장 구역 오른쪽 컴퓨터 | | **용도** | 출하 지시서 등록 전 포장 제품과 송장번호 연결 처리 | ## 2. 프로그램 UI | 출하내용 확인 | 데이터 맵핑 | 대량 맵핑 | | --- | --- |--- | | ![출하내용 확인(/docs/state.png)]| | | ### 2.1 UI 구성요소 - 코드 번호 입력 필드 - 출하 지시서 정보 표시 - 패킹 정보 표시 - 제품 리스트 동적 생성 영역 ### 2.2 상단 설정 옵션 | 구분 | 버튼 ID | 설명 | | --- | --- | --- | | **API 설정** | `ckbAPIUse` | API 사용 여부 | | | `ckbPostgre` | Direct DB 접근 | | **기능 설정** | `rdbState` | 출하내용 확인 | | | `rdbMap` | 데이터 맵핑 | | | `rdbMass` | 대량 맵핑 | | **사용 설정** | `ckbBarcode` | 바코드 사용 | | | `ckbAuto` | 자동 측정 | | **맵핑 설정** | `rdbStatePack` | 전표+패킹+송장 | | | `rdbStateInv` | 전표+송장 | ## 3. 기능 요약 ### 3.1 출하내용 확인 (rdbState) - **목적**: 전표번호를 입력받아 출하 상태/연결 상태/제품 정보 확인 - **처리 방식**: - 패킹 코드 (길이 12자리): 패킹 정보 기반 조회 - ERP/MES 코드: API 호출 및 JSON 파싱 ### 3.2 데이터 맵핑 (rdbMap) - **목적**: 출하지시서와 패킹 정보를 매핑하여 송장번호 연결 - **처리 방식**: - 전표+송장: 송장번호 유효성 검사 - 패킹 처리: 패킹 정보 조회 후 매핑 - MES 처리: API 데이터 조회 후 매핑 ### 3.3 대량 맵핑 (rdbMass) - **목적**: 대량 출하지시서 처리 - **처리 방식**: - 세트 코드 검증 - 패킹-출하지시서 매핑 검증 - 대량 저장 처리 ## 4. 데이터베이스 테이블 ### 4.1 주요 테이블 | 테이블명 | 변수명 | 실제 DB 경로 | 주요 컬럼 | 용도 | | --- | --- | --- | --- | --- | | **주문 테이블** | `mainOrderDB` / `testOrderDB` | `jomtOrderDB.jomtOrderTbl` | Order_Code, Packing_Code, Invoice_Number | 주문-패킹-송장 매핑 | | **매출 테이블** | `mainSalesDB` / `testSalesDB` | `jomtTesterDB.jomtSalesPackingTbl` | PackingCode, Main_Product_SN, Pro_Face_Serial | 패킹 정보 및 시리얼 번호 | | **제품 테이블** | `mainProdDB` / `testProdDB` | `jomtTesterDB.jomtProductTbl` | ProductCode, ProductName, Specifications | 제품 기본 정보 | | **카트리지 테이블** | `mainCartDB` / `testCartDB` | `jomtTesterDB.jomtCartridgeTbl` | CartridgeCode, CartridgeName, Type | 카트리지 정보 | | **제품 리스트** | `mainPlistDB` / `testPlistDB` | `jomtTesterDB.jomtProdList` | ItemCode, ItemName, FaceShot, EyeShot | 제품 정보 | | **소모품 테이블** | `mainClistDB` / `testClistDB` | `jomtTesterDB.jomtComponentTbl` | ItemCode, ItemName | 소모품 정보 | | **Non-TD 테이블** | `MainNonTDDB` / `TestNonTDDB` | `jomtTesterDB.jomtNonTDTbl` | NonTDCode, NonTDName | Non-TD 제품 정보 | | **세트 코드** | `mainPKCodeDB` | `jomtTesterDB.jomtPKCodeTbl` | PKCode, ProdCode, ProdCount | 세트 구성 정보 | ### 4.2 데이터베이스 환경별 설정 ### 운영 환경 (Main) - **Database**: `jomtOrderDB`, `jomtTesterDB` - **서버**: 운영 서버 - **용도**: 실제 운영 데이터 처리 ### 테스트 환경 (Test) - **Database**: `jomtTesterServerDB` - **서버**: 테스트 서버 - **용도**: 개발 및 테스트용 데이터 처리 ### 4.3 외부 연동 - **MES API**: `apiItemOutURL` 통해 주문/제품/고객 정보 수신 - **PostgreSQL**: Direct DB 접근 시 사용 (`ckbPostgre` 체크 시) ## 5. 사용자 조작 흐름 ### 5.1 검색 모드 (btnSearch.Text ≠ "등록") | 순서 | 패킹 코드 검색 (길이 12자리) | ERP/MES 코드 검색 | | --- | --- | --- | | 1 | 패킹 코드 입력 | 코드 입력 (ERP/MES 형식) | | 2 | 패킹 정보 존재 여부 확인 | 코드에서 날짜 추출 | | 3 | 연결된 주문 코드 조회 | MES API 호출 | | 4 | 주문자 정보 조회 | JSON 응답 파싱 | | 5 | 시리얼 번호 및 소모품 조회 | 제품 이미지 정보 조회 | | 6 | 결과를 UI에 표시 | 결과를 UI에 표시 | ### 5.2 등록 모드 (btnSearch.Text = "등록") | 순서 | 데이터 맵핑 등록 | 대량 맵핑 등록 | | --- | --- | --- | | 1 | 출하지시서 코드 입력 | 출하지시서 스캔 | | 2 | 패킹 코드 입력 | 세트 코드 검증 | | 3 | 송장번호 입력 | 패킹 코드 스캔 | | 4 | 데이터 매핑 검증 | 매핑 검증 | | 5 | 최종 저장 처리 | 대량 저장 처리 | ## 6. 주요 검증 로직 ### 6.1 송장번호 검증 - **길이 검증**: 최소 길이 확인 - **택배사 검증**: 첫 자리 숫자로 택배사 판별 - 3: CJ 대한통운 - 4: 한진택배 - 5: 한진택배 (2) - 6: CJ 대한통운 (2) ### 6.2 패킹 데이터 검증 - **중복 검사**: 이미 등록된 패킹 코드인지 확인 - **연결 확인**: 출하지시서와 패킹 정보 일치 확인 - **시리얼 검증**: 제품 시리얼 번호 유효성 검사 ### 6.3 세트 코드 검증 - **구성 확인**: 세트 코드 내 제품 구성 확인 - **수량 검증**: 세트 수량과 실제 수량 비교 - **매핑 검증**: 출하지시서와 패킹 정보 매핑 확인