2025-07-09 15:44:16 +09:00

140 lines
5.3 KiB
Markdown

## 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 세트 코드 검증
- **구성 확인**: 세트 코드 내 제품 구성 확인
- **수량 검증**: 세트 수량과 실제 수량 비교
- **매핑 검증**: 출하지시서와 패킹 정보 매핑 확인