diff --git a/README.md b/README.md new file mode 100644 index 0000000..0adc95c --- /dev/null +++ b/README.md @@ -0,0 +1,140 @@ +## 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 세트 코드 검증 + +- **구성 확인**: 세트 코드 내 제품 구성 확인 +- **수량 검증**: 세트 수량과 실제 수량 비교 +- **매핑 검증**: 출하지시서와 패킹 정보 매핑 확인 \ No newline at end of file