-- Database Update SQL
-- 다음 쿼리문을 데이터베이스 관리 도구(HeidiSQL, phpMyAdmin 등)에서 실행하여 "박스 바코드" 기능을 위한 테이블을 생성해주세요.

-- 1. 박스/다중 바코드 관리 테이블 생성
CREATE TABLE IF NOT EXISTS product_barcodes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    product_id INT NOT NULL,
    barcode VARCHAR(255) NOT NULL,
    quantity INT DEFAULT 1 COMMENT '스캔 시 입고될 수량 (예: 박스는 20)',
    description VARCHAR(50) NULL COMMENT '설명 (예: 박스, 번들)',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY unique_barcode (barcode),
    INDEX idx_product_id (product_id),
    FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 2. 검색 성능 향상을 위한 인덱스 추가 (이미 존재할 수 있음)
-- products 테이블에 barcode 컬럼이 있다면 인덱스 추가
-- ALTER TABLE products ADD INDEX idx_barcode (barcode);

-- 3. 매장 금고(Vault) 관리 테이블 생성 (2025-12-31)

-- 금고 입출금/교환/점검 로그 테이블
CREATE TABLE IF NOT EXISTS cash_safe_logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    type ENUM('deposit', 'withdrawal', 'exchange', 'count_check', 'adjustment') NOT NULL COMMENT '거래 유형',
    category VARCHAR(50) NOT NULL COMMENT '세부 카테고리 (pos_drop, bank_deposit, expense, pos_change, bank_exchange 등)',
    amount DECIMAL(15, 2) NOT NULL DEFAULT 0.00 COMMENT '거래 금액 (입금+, 출금-, 교환0)',
    balance_after DECIMAL(15, 2) NOT NULL DEFAULT 0.00 COMMENT '거래 후 잔액',
    user_id INT NOT NULL COMMENT '담당자 ID',
    notes TEXT NULL COMMENT '비고/메모',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_user_id (user_id),
    INDEX idx_created_at (created_at),
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 금고 시재 점검(Audit) 및 교환 상세 내역 (권종별)
CREATE TABLE IF NOT EXISTS cash_denominations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    log_id INT NOT NULL COMMENT '관련 로그 ID',
    count_50000 INT DEFAULT 0,
    count_10000 INT DEFAULT 0,
    count_5000 INT DEFAULT 0,
    count_1000 INT DEFAULT 0,
    count_500 INT DEFAULT 0,
    count_100 INT DEFAULT 0,
    count_50 INT DEFAULT 0,
    count_10 INT DEFAULT 0,
    total_amount DECIMAL(15, 2) NOT NULL DEFAULT 0.00 COMMENT '실물 총액',
    expected_amount DECIMAL(15, 2) DEFAULT 0.00 COMMENT '전산 예상 잔액 (점검 시 사용)',
    difference DECIMAL(15, 2) DEFAULT 0.00 COMMENT '차액 (실물 - 전산)',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (log_id) REFERENCES cash_safe_logs(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
