- 5130 레거시 시스템 분석 (00_OVERVIEW ~ 08_SAM_COMPARISON) - MES 프로젝트 문서 - API/프론트엔드 스펙 문서 - 가이드 및 레퍼런스 문서
11 KiB
11 KiB
출하 (Shipping/Output) 분석
개요
- 디렉토리:
/output/ - DB 테이블:
output(메인),output_extra(서브) - 주요 기능: 출하 관리, 배송 추적, 인정검사(ACI), 품질 서류
디렉토리 구조
/output/
├── _request.php # 요청 파라미터 (108개)
├── _row.php # 행 렌더링
├── _row_extra.php # 추가 행 렌더링
├── insert.php # 출하 저장 (342줄)
├── list.php # 출하 목록
├── list_*.php # 용도별 목록 (20개+)
│ ├── list_ACI.php # 인정검사 목록
│ ├── list_POD.php # 출고증 목록
│ ├── list_QCdoc.php # 품질서류 목록
│ ├── list_QCsales.php # 품질매출 목록
│ ├── list_account.php # 회계 목록
│ ├── list_bending.php # 벤딩 목록
│ ├── list_bending_mid.php # 벤딩 중간검사
│ ├── list_deliveryfee.php # 배송비 목록
│ ├── list_document.php # 서류 목록
│ ├── list_jointbar.php # 조인트바 목록
│ ├── list_order.php # 발주 목록
│ ├── list_output.php # 출력 목록
│ ├── list_requestACI.php # ACI 요청 목록
│ ├── list_screen.php # 스크린 목록
│ ├── list_screen_mid.php # 스크린 중간검사
│ ├── list_slat.php # 슬랫 목록
│ └── list_slat_mid.php # 슬랫 중간검사
├── write_form.php # 출하 등록 폼 (107KB)
├── write_form_script.php # 스크립트 (267KB)
├── view*.php # 각종 뷰 (30개+)
├── insert_*.php # 부분 저장
├── fetch_*.php # AJAX 데이터 조회
└── json/ # JSON 데이터 저장
DB 스키마
output 테이블 (메인)
CREATE TABLE output (
num INT AUTO_INCREMENT PRIMARY KEY,
-- 기본 정보
outdate DATE, -- 출하일
indate DATE, -- 등록일
orderman VARCHAR(50), -- 담당자
outworkplace VARCHAR(200), -- 현장명/거래처
outputplace VARCHAR(200), -- 출하장소
receiver VARCHAR(50), -- 수령자
phone VARCHAR(20), -- 연락처
delivery VARCHAR(100), -- 배송방법/업체
-- 분류 정보
root VARCHAR(50), -- 경로
steel VARCHAR(50), -- 강종
motor VARCHAR(100), -- 모터
-- 상태 정보
regist_state VARCHAR(20), -- 등록상태 (등록, 완료)
bend_state VARCHAR(20), -- 벤딩상태
motor_state VARCHAR(20), -- 모터상태 (준비완료 등)
-- 발주처 정보
con_num VARCHAR(50), -- 계약번호
secondord VARCHAR(100), -- 2차 발주처
secondordman VARCHAR(50), -- 2차 담당자
secondordmantel VARCHAR(20), -- 2차 연락처
secondordnum VARCHAR(50), -- 2차 발주번호
-- 스크린 정보
screen VARCHAR(100), -- 스크린 유형
screen_su INT, -- 스크린 수량
screen_m2 DECIMAL(10,2), -- 스크린 면적(m²)
screenlist TEXT, -- 스크린 리스트 (JSON)
-- 슬랫 정보
slat VARCHAR(100), -- 슬랫 유형
slat_su INT, -- 슬랫 수량
slat_m2 DECIMAL(10,2), -- 슬랫 면적(m²)
slatlist TEXT, -- 슬랫 리스트 (JSON)
-- 제품/LOT 정보
prodCode VARCHAR(50), -- 제품코드
warrantyNum VARCHAR(50), -- 보증번호
lotNum VARCHAR(50), -- LOT 번호
warranty VARCHAR(100), -- 보증정보
-- 인정검사(ACI) 정보
ACIregDate DATE, -- ACI 등록일
ACIaskDate DATE, -- ACI 신청일
ACIdoneDate DATE, -- ACI 완료일
ACImemo TEXT, -- ACI 메모
ACIcheck TINYINT, -- ACI 체크
ACIgroupCode VARCHAR(50), -- ACI 그룹코드
ACIgroupName VARCHAR(100), -- ACI 그룹명
-- 배송비 정보
deliveryfeeList TEXT, -- 배송비 리스트 (JSON)
-- 견적 연결
estimate_num INT, -- 연결된 견적번호
displayText TEXT, -- 표시 텍스트
-- 체크 플래그
slatcheck VARCHAR(10), -- 슬랫 체크
partscheck VARCHAR(10), -- 부품 체크
devMode VARCHAR(10), -- 개발자모드
-- 기타
comment TEXT, -- 비고
updatecomment TEXT, -- 수정 비고
orderdate DATE, -- 발주일
-- 시스템 필드
searchtag TEXT, -- 검색태그
update_log TEXT, -- 수정이력
is_deleted TINYINT DEFAULT 0, -- 삭제플래그
INDEX idx_outdate (outdate),
INDEX idx_outworkplace (outworkplace),
INDEX idx_prodCode (prodCode)
);
output_extra 테이블 (상세/견적)
CREATE TABLE output_extra (
id INT AUTO_INCREMENT PRIMARY KEY,
parent_num INT, -- output.num 참조
-- 견적 상세 JSON
detailJson TEXT, -- 상세 정보 JSON
estimateList TEXT, -- 견적 리스트 JSON
estimateSlatList TEXT, -- 슬랫 견적 리스트 JSON
estimateList_auto TEXT, -- 자동계산 리스트 JSON
estimateSlatList_auto TEXT, -- 슬랫 자동계산 JSON
-- 금액 정보
estimateTotal INT DEFAULT 0, -- 견적 총액
EstimateFirstSum INT DEFAULT 0, -- 최초 견적
EstimateUpdatetSum INT DEFAULT 0, -- 수정 견적
EstimateDiffer INT DEFAULT 0, -- 차액
estimateSurang INT DEFAULT 0, -- 수량
inspectionFee INT DEFAULT 50000, -- 인정검사비
EstimateDiscountRate DECIMAL(5,2), -- 할인율
EstimateDiscount INT DEFAULT 0, -- 할인금액
EstimateFinalSum INT DEFAULT 0, -- 최종금액
ET_unapproved INT DEFAULT 0, -- 비인정 금액
ET_total INT DEFAULT 0, -- 총 금액
-- 규격 정보
pjnum VARCHAR(50), -- 프로젝트 번호
major_category VARCHAR(50), -- 대분류
position VARCHAR(50), -- 위치
makeWidth INT, -- 제작 폭
makeHeight INT, -- 제작 높이
maguriWing VARCHAR(20), -- 마구리 윙
-- 작업/검사 리스트 (JSON)
screen_unapprovedList TEXT, -- 스크린 비인정 리스트
slat_unapprovedList TEXT, -- 슬랫 비인정 리스트
motorList TEXT, -- 모터 리스트
bendList TEXT, -- 벤딩 리스트
etcList TEXT, -- 기타 리스트
controllerList TEXT, -- 컨트롤러 리스트
-- 회계 정보
accountDate DATE, -- 회계일
accountList TEXT, -- 회계 리스트 (JSON)
FOREIGN KEY (parent_num) REFERENCES output(num),
INDEX idx_parent_num (parent_num)
);
JSON 데이터 구조
screenlist / slatlist
[
{
"seq": 1,
"item_code": "SCR001",
"width": 1200,
"height": 2400,
"quantity": 2,
"area": 5.76,
"note": "비고"
}
]
deliveryfeeList
[
{
"delivery_date": "2025-01-15",
"carrier": "한진택배",
"fee": 50000,
"paid_by": "발송인"
}
]
motorList / bendList
[
{
"model": "KD-M001",
"quantity": 1,
"status": "완료",
"note": ""
}
]
비즈니스 로직
출하 등록 프로세스
// insert.php
if ($mode == "insert") {
// 1. output 테이블 저장
$sql = "INSERT INTO $DB.output (outdate, indate, orderman, ...) VALUES (?, ?, ?, ...)";
$output_num = $pdo->lastInsertId();
// 2. output_extra 테이블 저장
$sql2 = "INSERT INTO $DB.output_extra (parent_num, detailJson, ...) VALUES (?, ?, ...)";
// 3. 첨부파일 연결 (timekey → num)
if ($timekey != '') {
$sql = "UPDATE $DB.picuploads SET parentnum=? WHERE parentnum=?";
}
}
상태 변경
// 완료 처리 시 모터 상태 자동 변경
if ($regist_state == '완료') {
$motor_state = "준비완료";
}
관련 뷰 파일
작업 뷰 (생산 작업지시서)
viewBendingWork.php- 벤딩 작업viewScreenWork.php- 스크린 작업viewSlatWork.php- 슬랫 작업
검사 뷰 (중간검사)
viewMidInspectBending.php- 벤딩 중간검사viewMidInspectScreen.php- 스크린 중간검사viewMidInspectSlat.php- 슬랫 중간검사
발주/출고 뷰
viewOrder.php- 발주서viewOutput.php- 출하서viewConfirm.php- 확인서
ACI 뷰
view_requestACI.php- ACI 요청view_requestACIgroup.php- ACI 그룹 요청view_QCcertificate.php- 품질인증서
SAM 마이그레이션 포인트
1. 출하 구조 개선
-- SAM: 출하 헤더
shipments (
id,
tenant_id,
shipment_number,
project_id,
customer_id,
ship_date,
status, -- draft, confirmed, shipped, delivered
delivery_address,
receiver_name,
receiver_phone,
carrier,
tracking_number
)
-- SAM: 출하 상세
shipment_items (
id,
shipment_id,
item_type, -- screen, slat, motor, etc.
item_code,
quantity,
lot_number,
note
)
2. 인정검사(ACI) 분리
-- SAM: 인정검사 관리
aci_inspections (
id,
shipment_id,
inspection_number,
request_date,
inspection_date,
result, -- pending, passed, failed
inspector,
certificate_number,
documents JSON -- 첨부문서
)
3. 배송비 관리
-- SAM: 배송비 이력
delivery_fees (
id,
shipment_id,
carrier,
fee_amount,
payment_type, -- prepaid, collect
paid_date,
receipt_number
)
4. 문서 관리
-- SAM: 출하 문서
shipment_documents (
id,
shipment_id,
document_type, -- work_order, inspection, certificate
document_number,
generated_at,
file_path
)
참고 파일
/output/insert.php- 저장 로직 (342줄)/output/_request.php- 108개 요청 변수/output/write_form.php- 대형 UI (107KB)/output/write_form_script.php- 스크립트 (267KB)