2025-07-08 16:49:34 +09:00

8.8 KiB

[생산] 패킹 삭제 프로그램

1. 프로그램 개요

항목 내용
프로그램 명 PackingDeleteProgram
실행 파일 명 PackingDeleteProgram.exe
설치 위치 4층 포장 구역 컴퓨터
용도 바코드(시리얼번호/패킹코드) 또는 전표코드 입력을 통한 패킹 조회 및 삭제 처리
DB에서 패킹 구성품 정보를 조회하여 필요시 패킹 데이터 및 전표 데이터 삭제
실제 DELETE가 아닌 논리적 삭제(UPDATE) 방식 사용

2. 프로그램 UI

메인 화면 구성품 조회 화면
메인 화면 구성품 조회

3. 기능 요약

기능 설명
바코드 자동 인식 조회 바코드 스캔 시 3초 대기 후 자동으로 DB 조회 실행, 입력 변화 감지를 통한 자동화 처리
패킹 정보 조회 입력된 패킹코드를 기준으로 2개 테이블 조인하여 패킹 구성품 및 주문 정보 조회
구성품 목록 표시 DataGridView에 구성품명, 수량, 시리얼번호를 표시하여 삭제 전 확인 가능
선택적 삭제 처리 체크박스 설정에 따라 전표 데이터만 삭제하거나 패킹+전표 데이터 함께 삭제 가능
삭제 로그 기록 삭제 시 시리얼번호를 note 필드에 기록하여 추적 가능하도록 처리

4. 사용자 조작 흐름

[사용자 입력]
   ↓ ① 바코드 스캔 또는 수동 입력 (PackingCode)
[txbPacking_TextChanged → SetInputCnt → timer_barcode]
   ↓ 3초 대기 후 자동 실행
[btnReadDB_Click]
   ↓
[db_select(serial) → SQL 조인 쿼리 실행]
   ↓
[item_out() → 구성품 정보 추출]
   ↓ ② 구성품 리스트 표시
[dgv_pack_item에 데이터 로드]
   ↓
[사용자 삭제 옵션 선택]
   ↓ ③ 삭제 버튼 클릭
[btn_delete_Click]
   ↓ 체크박스 상태에 따라 분기
   ├ 전표만 삭제 → state_delete()
   └ 패킹+전표 삭제 → pack_delete() + state_delete()
   ↓
[UPDATE 쿼리 실행 → 논리적 삭제 처리]

**데이터 흐름**
[바코드 입력] → [패킹 조회] → [구성품 확인] → [선택적 삭제] → [로그 기록]

5. 데이터베이스 구조

조회 대상 테이블 (로컬 DB)

테이블명 용도 주요 컬럼
jomtTesterDB.jomtSalesPackingTbl 패킹 구성품 정보 PackingCode, Data, Main_Product_SN, 각 구성품 수량 및 시리얼
jomtOrderDB.jomtOrderTbl 주문/전표 정보 Order_Code, Orderer_Name, Phone_Number, Invoice_Number, Packing_Code

삭제 처리 방식

삭제 유형 대상 테이블 처리 방법
패킹 데이터 삭제 jomtTesterDB.jomtSalesPackingTbl PackingCode를 'null_코드'로 변경, 시리얼 필드들 NULL 처리
전표 데이터 삭제 jomtOrderDB.jomtOrderTbl Invoice_Number, Packing_Code, Serial_Number 등 NULL 처리

6. 구성품 매핑 테이블

구성품 코드별 제품명 매핑

인덱스 구성품명 비고
0 DUALSONIC Pro 1Set (KR) / DUALSONIC Lux 1Set (KR) 시리얼 앞자리 "10" 여부로 분기
1 DUALSONIC Elixir MASK 5EA -
2 DUALSONIC Elixir MASK 10EA -
3 [사은품] 벨크로헤어밴드 -
4 DUALSONIC Blooming Moisture Gel -
5 DUALSONIC Blooming Moisture Gel(30ml * 5EA) -
6 DUALSONIC Skin Cell Elixir Ampoule -
7 DUALSONIC Skin Cell Elixir Cream -
8 [사은품] 우산 -
9 [사은품] 손풍기 -
10 충전기 Assy -
11 마이크로 충전 케이블 -
12 DUALSONIC Skin Elixir Toner -
13 DUALSONIC 가죽 케이스 세트 -
14 DUALSONIC DUST BAG 1BOX -
15 사용자 정의 품목 bag_type 값 사용
16 사용자 정의 품목 etc_name 값 사용
17 DUALSONIC Pro FACE CARTRIDGE -
18 DUALSONIC Pro Eye CARTRIDGE -
19 DUALSONIC Pro Body Cartridge 1Set Rev.0 (KR) -
20 DUALSONIC Lux FACE CARTRIDGE -
21 DUALSONIC Lux Eye CARTRIDGE -
22 DUALSONIC Lux Body Cartridge 1Set Rev.0 (KR) -
23 MAXIMUM FULL PACK (KR) -
24 Alpha Set (KR) -
25 Alpha FACE CARTRIDGE -
26 Alpha Eye CARTRIDGE -
27 Alpha Body CARTRIDGE -
28 Alto PACK (KR) -
29 Effect PACK (KR) -

7. 주요 SQL 쿼리

패킹 조회 쿼리

SELECT
    IFNULL(sale.PackingCode,'NULL') as PackingCode,
    IFNULL(sale.Data,'NULL') as PackingDate,
    IFNULL(sale.Main_Product_SN,'NULL') as MainProductSN,
    IFNULL(sale.Set_Cnt,'0') as SetCount,
    IFNULL(sale.Pro_Face_Serial,'NULL') as ProFaceSerial,
    IFNULL(sale.Pro_Eye_Serial,'NULL') as ProEyeSerial,
    IFNULL(otb.Order_Code,'NULL') as OrderCode,
    IFNULL(otb.Orderer_Name,'NULL') as OrdererName,
    IFNULL(otb.Phone_Number,'NULL') as PhoneNumber,
    IFNULL(otb.Invoice_Number,'NULL') as InvoiceNumber
FROM jomtTesterDB.jomtSalesPackingTbl AS sale
LEFT JOIN jomtOrderDB.jomtOrderTbl AS otb
    ON sale.PackingCode = otb.Packing_Code
WHERE sale.PackingCode = '입력된패킹코드'
GROUP BY sale.PackingCode

패킹 데이터 삭제 쿼리

UPDATE jomtTesterDB.jomtSalesPackingTbl
SET
    PackingCode = 'null_[기존패킹코드]',
    Main_Product_SN = NULL,
    Main_FACE_SN = NULL,
    Main_EYE_SN = NULL,
    Pro_Face_Serial = NULL,
    Pro_Eye_Serial = NULL,
    Pro_Body_Serial = NULL,
    note = '[삭제된시리얼번호들]'
WHERE PackingCode = '[패킹코드]'

전표 데이터 삭제 쿼리

UPDATE jomtOrderDB.jomtOrderTbl
SET
    Invoice_Number = NULL,
    Packing_Code = NULL,
    Serial_Number = NULL,
    Buy_Type = NULL,
    release_state = NULL,
    note = '[삭제된시리얼번호들]'
WHERE Order_Code = '[주문코드]'

8. 사용법

기본 조회 과정

  1. 바코드 스캔 모드 설정: ckb_barcode 체크박스 활성화
  2. 패킹코드 입력: txbPacking에 바코드 스캔 또는 수동 입력
  3. 자동 조회: 3초 대기 후 자동으로 DB 조회 실행
  4. 구성품 확인: dgv_pack_item에 표시된 구성품 목록 확인

삭제 처리 과정

  1. 삭제 옵션 선택:
    • ckb_state 체크: 전표 데이터만 삭제
    • ckb_state 해제: 패킹 + 전표 데이터 모두 삭제
  2. 삭제 실행: btn_delete 버튼 클릭
  3. 확인: 삭제 완료 메시지 확인

주의사항

  • 삭제는 실제 DELETE가 아닌 논리적 삭제(UPDATE) 방식
  • 삭제된 데이터는 note 필드에 시리얼번호 기록으로 추적 가능
  • 패킹코드는 null_[기존코드] 형태로 변경되어 무효화

📎 기타 참고 자료 (sequenceDiagram)

sequenceDiagram
    participant 사용자
    participant UI
    participant 시스템
    participant 패킹DB
    participant 주문DB

    사용자->>UI: ① 바코드 스캔/입력
    UI->>시스템: txbPacking_TextChanged()
    시스템->>시스템: SetInputCnt() → timer 시작
    
    Note over 시스템: 3초 대기
    
    시스템->>시스템: timer_barcode_Tick()
    시스템->>시스템: btnReadDB_Click()
    시스템->>시스템: db_select(PackingCode)
    
    시스템->>패킹DB: LEFT JOIN 쿼리 실행
    패킹DB->>주문DB: 패킹코드 기준 조인
    주문DB-->>시스템: 조합된 데이터 반환
    
    시스템->>시스템: item_out() 구성품 추출
    시스템->>UI: dgv_pack_item에 구성품 표시
    UI-->>사용자: ② 구성품 목록 출력
    
    사용자->>UI: ③ 삭제 옵션 선택
    사용자->>UI: 삭제 버튼 클릭
    UI->>시스템: btn_delete_Click()
    
    alt 전표만 삭제
        시스템->>주문DB: state_delete() UPDATE 쿼리
        주문DB-->>시스템: 전표 데이터 NULL 처리
    else 패킹+전표 삭제
        시스템->>패킹DB: pack_delete() UPDATE 쿼리
        패킹DB-->>시스템: 패킹 데이터 무효화
        시스템->>주문DB: state_delete() UPDATE 쿼리
        주문DB-->>시스템: 전표 데이터 NULL 처리
    end
    
    시스템->>UI: 삭제 완료 메시지
    UI-->>사용자: 처리 결과 표시