Files
jongryangje/writable/database/after_company_feature_tables.sql

361 lines
20 KiB
MySQL
Raw Normal View History

-- =============================================================================
-- 업체(company) 이후 업무 메뉴용 테이블 일괄 생성
-- =============================================================================
-- 선행 조건: local_government, code_kind, code_detail, company
-- (및 회원/로그인 흐름이 있으면 login_tables.sql 로 member, member_log 등)
--
-- 이미 login_tables.sql 을 실행했다면 designated_shop 은 건너뜁니다(CREATE IF NOT EXISTS).
--
-- 실행 예:
-- mysql --default-character-set=utf8mb4 -h 127.0.0.1 -u USER -p DB_NAME < writable/database/after_company_feature_tables.sql
--
-- 원본 분할 스크립트(동일 정의): bag_price_tables.sql, packaging_unit_tables.sql,
-- sales_agency_tables.sql, manager_tables.sql, free_recipient_tables.sql,
-- order_tables.sql, sales_tables.sql, activity_log_tables.sql, bag_misc_flow_tables.sql,
-- login_tables.sql (designated_shop 부분만 아래에 포함)
-- =============================================================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------------------------------------------------------
-- 지정판매소 (주문/판매 메뉴 FK) — login_tables.sql 과 동일
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `designated_shop` (
`ds_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '지정판매소 PK',
`ds_lg_idx` INT UNSIGNED NOT NULL COMMENT '소속 지자체 FK',
`ds_mb_idx` INT UNSIGNED NULL DEFAULT NULL COMMENT '로그인 회원 FK(1:1)',
`ds_shop_no` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '판매소번호',
`ds_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '상호명',
`ds_biz_no` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '사업자번호',
`ds_rep_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대표자명',
`ds_biz_type` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '업태',
`ds_biz_kind` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '업종',
`ds_va_number` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '가상계좌(표시용 번호, 계좌번호와 동기화 가능)',
`ds_va_bank` VARCHAR(80) NOT NULL DEFAULT '' COMMENT '가상계좌(은행)',
`ds_va_account` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '계좌번호',
`ds_zip` VARCHAR(10) NOT NULL DEFAULT '' COMMENT '우편번호',
`ds_addr` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '도로명주소',
`ds_addr_jibun` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '지번주소',
`ds_addr_detail` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '상세주소(동·호 등)',
`ds_tel` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '일반전화',
`ds_rep_phone` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '개인전화',
`ds_email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '이메일',
`ds_gugun_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '구코드',
`ds_zone_code` VARCHAR(80) NOT NULL DEFAULT '' COMMENT '구역',
`ds_branch_no` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '종사업장번호',
`ds_designated_at` DATE NULL DEFAULT NULL COMMENT '지정일자',
`ds_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=정상, 2=폐업, 3=직권해지',
`ds_state_changed_at` DATE NULL DEFAULT NULL COMMENT '변경일자',
`ds_change_reason` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '변경사유',
`ds_regdate` DATETIME NOT NULL COMMENT '등록일시',
PRIMARY KEY (`ds_idx`),
KEY `idx_ds_lg_idx` (`ds_lg_idx`),
KEY `idx_ds_mb_idx` (`ds_mb_idx`),
UNIQUE KEY `uk_ds_shop_no` (`ds_shop_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='지정판매소';
-- ---------------------------------------------------------------------------
-- 판매 대행소 (sales_agency_tables.sql)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `sales_agency` (
`sa_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`sa_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
`sa_kind` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대행소 구분',
`sa_code` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대행소 코드',
`sa_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '대행소 명',
`sa_regdate` DATETIME NOT NULL,
PRIMARY KEY (`sa_idx`),
UNIQUE KEY `uk_sa_lg_code` (`sa_lg_idx`, `sa_code`),
KEY `idx_sa_lg_idx` (`sa_lg_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='판매 대행소';
-- ---------------------------------------------------------------------------
-- 담당자 (manager_tables.sql)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `manager` (
`mg_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`mg_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
`mg_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '담당자명',
`mg_dept_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '소속 code_detail(S)',
`mg_position_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '직위 code_detail(T)',
`mg_tel` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '전화번호',
`mg_phone` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '휴대전화',
`mg_email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '이메일',
`mg_state` TINYINT UNSIGNED NOT NULL DEFAULT 1,
`mg_regdate` DATETIME NOT NULL,
PRIMARY KEY (`mg_idx`),
KEY `idx_mg_lg_idx` (`mg_lg_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='담당자';
-- ---------------------------------------------------------------------------
-- 무료용 대상자 (free_recipient_tables.sql)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `free_recipient` (
`fr_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`fr_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
`fr_type_code` VARCHAR(20) NOT NULL COMMENT '무상지급구분 code_detail(H)',
`fr_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '대상자/기관명',
`fr_phone` VARCHAR(20) NOT NULL DEFAULT '',
`fr_addr` VARCHAR(255) NOT NULL DEFAULT '',
`fr_dong_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '동코드 code_detail(D)',
`fr_note` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '비고',
`fr_end_date` DATE NULL DEFAULT NULL COMMENT '종료일자',
`fr_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=정상, 0=삭제',
`fr_regdate` DATETIME NOT NULL,
PRIMARY KEY (`fr_idx`),
KEY `idx_fr_lg_idx` (`fr_lg_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='무료용 대상자';
-- ---------------------------------------------------------------------------
-- 봉투 단가 (bag_price_tables.sql)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `bag_price` (
`bp_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`bp_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
`bp_bag_code` VARCHAR(50) NOT NULL COMMENT '봉투코드(code_detail cd_code, ck=O)',
`bp_bag_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '봉투명(등록시점 스냅샷)',
`bp_order_price` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '발주단가',
`bp_wholesale` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '도매가',
`bp_consumer` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '소비자가',
`bp_start_date` DATE NOT NULL COMMENT '적용 시작일',
`bp_end_date` DATE NULL DEFAULT NULL COMMENT '적용 종료일(NULL=현재 적용중)',
`bp_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=사용, 0=미사용',
`bp_regdate` DATETIME NOT NULL,
`bp_moddate` DATETIME NULL DEFAULT NULL,
`bp_reg_mb_idx` INT UNSIGNED NULL COMMENT '등록자',
PRIMARY KEY (`bp_idx`),
KEY `idx_bp_lg_bag` (`bp_lg_idx`, `bp_bag_code`),
KEY `idx_bp_dates` (`bp_start_date`, `bp_end_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='지자체별 봉투 단가';
CREATE TABLE IF NOT EXISTS `bag_price_history` (
`bph_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`bph_bp_idx` INT UNSIGNED NOT NULL COMMENT 'bag_price FK',
`bph_field` VARCHAR(30) NOT NULL COMMENT '변경 필드명',
`bph_old_value` VARCHAR(100) NOT NULL DEFAULT '',
`bph_new_value` VARCHAR(100) NOT NULL DEFAULT '',
`bph_changed_at` DATETIME NOT NULL,
`bph_changed_by` INT UNSIGNED NULL COMMENT '변경자 mb_idx',
PRIMARY KEY (`bph_idx`),
KEY `idx_bph_bp_idx` (`bph_bp_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='봉투 단가 변경 이력';
-- ---------------------------------------------------------------------------
-- 포장 단위 (packaging_unit_tables.sql)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `packaging_unit` (
`pu_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`pu_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
`pu_bag_code` VARCHAR(50) NOT NULL COMMENT '봉투코드(code_detail cd_code, ck=O)',
`pu_bag_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '봉투명(스냅샷)',
`pu_box_per_pack` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '박스당 팩 수',
`pu_pack_per_sheet` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '팩당 낱장 수',
`pu_total_per_box` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '1박스당 총 낱장 수',
`pu_start_date` DATE NOT NULL,
`pu_end_date` DATE NULL DEFAULT NULL,
`pu_state` TINYINT UNSIGNED NOT NULL DEFAULT 1,
`pu_regdate` DATETIME NOT NULL,
`pu_moddate` DATETIME NULL DEFAULT NULL,
`pu_reg_mb_idx` INT UNSIGNED NULL,
PRIMARY KEY (`pu_idx`),
KEY `idx_pu_lg_bag` (`pu_lg_idx`, `pu_bag_code`),
KEY `idx_pu_dates` (`pu_start_date`, `pu_end_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='포장 단위';
CREATE TABLE IF NOT EXISTS `packaging_unit_history` (
`puh_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`puh_pu_idx` INT UNSIGNED NOT NULL,
`puh_field` VARCHAR(30) NOT NULL,
`puh_old_value` VARCHAR(100) NOT NULL DEFAULT '',
`puh_new_value` VARCHAR(100) NOT NULL DEFAULT '',
`puh_changed_at` DATETIME NOT NULL,
`puh_changed_by` INT UNSIGNED NULL,
PRIMARY KEY (`puh_idx`),
KEY `idx_puh_pu_idx` (`puh_pu_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='포장 단위 변경 이력';
-- ---------------------------------------------------------------------------
-- 발주 / 입고 / 재고 (order_tables.sql)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `bag_order` (
`bo_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`bo_uuid` CHAR(36) NOT NULL COMMENT 'UUID v4',
`bo_version` INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '발주 버전',
`bo_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
`bo_gugun_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '구/군 코드',
`bo_dong_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '동 코드',
`bo_company_idx` INT UNSIGNED NULL COMMENT '제작업체 FK (company)',
`bo_agency_idx` INT UNSIGNED NULL COMMENT '입고처(대행소) FK (sales_agency)',
`bo_fee_rate` DECIMAL(5,2) NOT NULL DEFAULT 0 COMMENT '수수료율(%)',
`bo_order_date` DATE NOT NULL COMMENT '발주일',
`bo_lot_no` VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'LOT 번호',
`bo_hash` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'SHA-256 해시',
`bo_status` VARCHAR(10) NOT NULL DEFAULT 'normal' COMMENT 'normal/cancelled/deleted',
`bo_orderer_idx` INT UNSIGNED NULL COMMENT '발주자 mb_idx',
`bo_regdate` DATETIME NOT NULL,
`bo_moddate` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`bo_idx`),
UNIQUE KEY `uk_bo_uuid_ver` (`bo_uuid`, `bo_version`),
KEY `idx_bo_lg_idx` (`bo_lg_idx`),
KEY `idx_bo_status` (`bo_status`),
KEY `idx_bo_order_date` (`bo_order_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='발주';
CREATE TABLE IF NOT EXISTS `bag_order_item` (
`boi_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`boi_bo_idx` INT UNSIGNED NOT NULL COMMENT 'bag_order FK',
`boi_bag_code` VARCHAR(50) NOT NULL COMMENT '봉투코드(code_detail O)',
`boi_bag_name` VARCHAR(100) NOT NULL DEFAULT '',
`boi_unit_price` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '발주 단가',
`boi_qty_box` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '발주 박스 수',
`boi_qty_sheet` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '낱장 환산 수량',
`boi_amount` DECIMAL(14,2) NOT NULL DEFAULT 0 COMMENT '금액(단가*낱장수)',
PRIMARY KEY (`boi_idx`),
KEY `idx_boi_bo_idx` (`boi_bo_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='발주 상세';
CREATE TABLE IF NOT EXISTS `bag_receiving` (
`br_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`br_bo_idx` INT UNSIGNED NOT NULL COMMENT 'bag_order FK',
`br_lg_idx` INT UNSIGNED NOT NULL,
`br_bag_code` VARCHAR(50) NOT NULL,
`br_bag_name` VARCHAR(100) NOT NULL DEFAULT '',
`br_qty_box` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '입고 박스 수',
`br_qty_sheet` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '입고 낱장 수',
`br_receive_date` DATE NOT NULL,
`br_receiver_idx` INT UNSIGNED NULL COMMENT '인수자 mb_idx',
`br_sender_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '인계자명',
`br_type` VARCHAR(20) NOT NULL DEFAULT 'scanner' COMMENT 'scanner/batch',
`br_regdate` DATETIME NOT NULL,
PRIMARY KEY (`br_idx`),
KEY `idx_br_bo_idx` (`br_bo_idx`),
KEY `idx_br_lg_idx` (`br_lg_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='발주 입고';
CREATE TABLE IF NOT EXISTS `bag_inventory` (
`bi_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`bi_lg_idx` INT UNSIGNED NOT NULL,
`bi_bag_code` VARCHAR(50) NOT NULL,
`bi_bag_name` VARCHAR(100) NOT NULL DEFAULT '',
`bi_qty` INT NOT NULL DEFAULT 0 COMMENT '현재 재고(낱장)',
`bi_updated_at` DATETIME NOT NULL,
PRIMARY KEY (`bi_idx`),
UNIQUE KEY `uk_bi_lg_bag` (`bi_lg_idx`, `bi_bag_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='봉투 재고';
-- ---------------------------------------------------------------------------
-- 주문 / 판매 / 불출 (sales_tables.sql)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `shop_order` (
`so_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`so_lg_idx` INT UNSIGNED NOT NULL,
`so_ds_idx` INT UNSIGNED NULL COMMENT '지정판매소 FK',
`so_ds_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '판매소명(스냅샷)',
`so_order_date` DATE NOT NULL COMMENT '접수일',
`so_delivery_date` DATE NULL COMMENT '배달일',
`so_payment_type` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '이체/가상계좌',
`so_paid` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '입금여부 1=예',
`so_received` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '수령여부 1=예',
`so_total_qty` INT UNSIGNED NOT NULL DEFAULT 0,
`so_total_amount` DECIMAL(14,2) NOT NULL DEFAULT 0,
`so_status` VARCHAR(10) NOT NULL DEFAULT 'normal' COMMENT 'normal/cancelled',
`so_orderer_idx` INT UNSIGNED NULL,
`so_regdate` DATETIME NOT NULL,
PRIMARY KEY (`so_idx`),
KEY `idx_so_lg_idx` (`so_lg_idx`),
KEY `idx_so_ds_idx` (`so_ds_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='주문 접수';
CREATE TABLE IF NOT EXISTS `shop_order_item` (
`soi_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`soi_so_idx` INT UNSIGNED NOT NULL,
`soi_bag_code` VARCHAR(50) NOT NULL,
`soi_bag_name` VARCHAR(100) NOT NULL DEFAULT '',
`soi_unit_price` DECIMAL(12,2) NOT NULL DEFAULT 0,
`soi_qty` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '접수량(낱장)',
`soi_amount` DECIMAL(14,2) NOT NULL DEFAULT 0,
`soi_box_count` INT UNSIGNED NOT NULL DEFAULT 0,
`soi_pack_count` INT UNSIGNED NOT NULL DEFAULT 0,
`soi_sheet_count` INT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`soi_idx`),
KEY `idx_soi_so_idx` (`soi_so_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='주문 상세';
CREATE TABLE IF NOT EXISTS `bag_sale` (
`bs_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`bs_lg_idx` INT UNSIGNED NOT NULL,
`bs_so_idx` INT UNSIGNED NULL COMMENT '주문 FK (NULL=직접판매)',
`bs_ds_idx` INT UNSIGNED NULL COMMENT '지정판매소 FK',
`bs_ds_name` VARCHAR(100) NOT NULL DEFAULT '',
`bs_sale_date` DATE NOT NULL,
`bs_bag_code` VARCHAR(50) NOT NULL,
`bs_bag_name` VARCHAR(100) NOT NULL DEFAULT '',
`bs_qty` INT NOT NULL DEFAULT 0 COMMENT '판매수량(낱장, 음수=반품)',
`bs_unit_price` DECIMAL(12,2) NOT NULL DEFAULT 0,
`bs_amount` DECIMAL(14,2) NOT NULL DEFAULT 0,
`bs_type` VARCHAR(20) NOT NULL DEFAULT 'sale' COMMENT 'sale/return/cancel',
`bs_regdate` DATETIME NOT NULL,
PRIMARY KEY (`bs_idx`),
KEY `idx_bs_lg_idx` (`bs_lg_idx`),
KEY `idx_bs_ds_idx` (`bs_ds_idx`),
KEY `idx_bs_sale_date` (`bs_sale_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='판매/반품';
CREATE TABLE IF NOT EXISTS `bag_issue` (
`bi2_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`bi2_lg_idx` INT UNSIGNED NOT NULL,
`bi2_year` YEAR NOT NULL,
`bi2_quarter` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '분기(1~4)',
`bi2_issue_type` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '무료용/공공용',
`bi2_issue_date` DATE NOT NULL,
`bi2_dest_type` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '불출처 구분(동사무소 등)',
`bi2_dest_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '불출처명',
`bi2_bag_code` VARCHAR(50) NOT NULL,
`bi2_bag_name` VARCHAR(100) NOT NULL DEFAULT '',
`bi2_qty` INT NOT NULL DEFAULT 0 COMMENT '불출수량(낱장, 음수=취소)',
`bi2_status` VARCHAR(10) NOT NULL DEFAULT 'normal' COMMENT 'normal/cancelled',
`bi2_regdate` DATETIME NOT NULL,
PRIMARY KEY (`bi2_idx`),
KEY `idx_bi2_lg_idx` (`bi2_lg_idx`),
KEY `idx_bi2_date` (`bi2_issue_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='무료용 불출';
-- ---------------------------------------------------------------------------
-- 감사 로그 (activity_log_tables.sql) — audit_helper.php
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `activity_log` (
`al_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`al_mb_idx` INT UNSIGNED DEFAULT NULL COMMENT '회원 PK',
`al_action` VARCHAR(20) NOT NULL COMMENT 'create/update/delete',
`al_table` VARCHAR(100) NOT NULL COMMENT '대상 테이블명',
`al_record_id` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '대상 레코드 PK',
`al_data_before` JSON DEFAULT NULL COMMENT '변경 전 데이터',
`al_data_after` JSON DEFAULT NULL COMMENT '변경 후 데이터',
`al_ip` VARCHAR(45) NOT NULL DEFAULT '' COMMENT 'IP 주소',
`al_regdate` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '기록일시',
PRIMARY KEY (`al_idx`),
KEY `idx_al_table_record` (`al_table`, `al_record_id`),
KEY `idx_al_mb` (`al_mb_idx`),
KEY `idx_al_regdate` (`al_regdate`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='CRUD 활동 로그';
-- ---------------------------------------------------------------------------
-- 기타 입출고 리포트 (bag_misc_flow_tables.sql)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `bag_misc_flow` (
`bmf_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`bmf_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 PK',
`bmf_type` ENUM('in','out') NOT NULL COMMENT '입고/출고',
`bmf_bag_code` VARCHAR(50) NOT NULL COMMENT '봉투 코드',
`bmf_bag_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '봉투명',
`bmf_qty` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '수량',
`bmf_date` DATE NOT NULL COMMENT '입출고 일자',
`bmf_reason` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '사유',
`bmf_regdate` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일',
PRIMARY KEY (`bmf_idx`),
KEY `idx_bmf_lg_date` (`bmf_lg_idx`, `bmf_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='기타 입출고';
SET FOREIGN_KEY_CHECKS = 1;