docs: add project docs and test updates
This commit is contained in:
351
writable/database/after_company_feature_tables.sql
Normal file
351
writable/database/after_company_feature_tables.sql
Normal file
@@ -0,0 +1,351 @@
|
||||
-- =============================================================================
|
||||
-- 업체(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_va_number` 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_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_designated_at` DATE NULL DEFAULT NULL COMMENT '지정일자',
|
||||
`ds_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=정상, 2=폐업, 3=직권해지',
|
||||
`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;
|
||||
59
writable/database/code_detail_source_lg_add.sql
Normal file
59
writable/database/code_detail_source_lg_add.sql
Normal file
@@ -0,0 +1,59 @@
|
||||
-- code_detail: 플랫폼 공통 vs 지자체 전용 (cd_source, cd_lg_idx)
|
||||
-- 여러 번 실행해도 이미 있으면 스킵 (MySQL / MariaDB)
|
||||
--
|
||||
-- 적용 예:
|
||||
-- mysql -h 127.0.0.1 -u USER -p DBNAME < writable/database/code_detail_source_lg_add.sql
|
||||
|
||||
SET @schema = DATABASE();
|
||||
|
||||
-- cd_source
|
||||
SET @col := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 'code_detail' AND COLUMN_NAME = 'cd_source'
|
||||
);
|
||||
SET @sql := IF(@col = 0,
|
||||
'ALTER TABLE `code_detail` ADD COLUMN `cd_source` ENUM(''platform'', ''local'') NOT NULL DEFAULT ''platform'' COMMENT ''platform=CSV/시드 등 전역, local=지자체 관리자 등록'' AFTER `cd_ck_idx`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- cd_lg_idx
|
||||
SET @col := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 'code_detail' AND COLUMN_NAME = 'cd_lg_idx'
|
||||
);
|
||||
SET @sql := IF(@col = 0,
|
||||
'ALTER TABLE `code_detail` ADD COLUMN `cd_lg_idx` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT ''0=전 지자체 공통, >0=해당 지자체 전용'' AFTER `cd_source`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 보조 인덱스
|
||||
SET @idx := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 'code_detail' AND INDEX_NAME = 'idx_cd_lg_idx'
|
||||
);
|
||||
SET @sql := IF(@idx = 0,
|
||||
'ALTER TABLE `code_detail` ADD KEY `idx_cd_lg_idx` (`cd_lg_idx`)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 테넌트별 코드 유일
|
||||
SET @idx := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 'code_detail' AND INDEX_NAME = 'uk_cd_tenant'
|
||||
);
|
||||
SET @sql := IF(@idx = 0,
|
||||
'ALTER TABLE `code_detail` ADD UNIQUE KEY `uk_cd_tenant` (`cd_ck_idx`, `cd_code`, `cd_lg_idx`)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
28
writable/database/free_recipient_test_seed.sql
Normal file
28
writable/database/free_recipient_test_seed.sql
Normal file
@@ -0,0 +1,28 @@
|
||||
-- 무료용 대상자 테스트 데이터 (/bag/free-recipients 목록 확인용)
|
||||
-- 전제: free_recipient 테이블 존재, code_master_init_daegu.sql 로 H(무상지급) 코드 적용됨
|
||||
--
|
||||
-- 넣는 지자체 (둘 다 있으면 각각에 삽입, UNION 으로 중복 lg_idx 제거):
|
||||
-- 1) lg_state=1 인 지자체 중 가장 작은 lg_idx (tester_local mb_lg_idx=1·메뉴 기본값과 맞추기)
|
||||
-- 2) lg_code = '110204' 대구 남구
|
||||
--
|
||||
-- 목록이 비면: Super Admin 은 상단에서 지자체 선택, 지자체관리자는 member.mb_lg_idx 와 일치하는지 확인.
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
INSERT INTO `free_recipient` (`fr_lg_idx`, `fr_type_code`, `fr_name`, `fr_phone`, `fr_addr`, `fr_dong_code`, `fr_note`, `fr_end_date`, `fr_state`, `fr_regdate`)
|
||||
SELECT t.lg_idx, v.tp, v.nm, v.ph, v.ad, '', v.nt, v.ed, 1, NOW()
|
||||
FROM (
|
||||
(SELECT lg_idx FROM local_government WHERE lg_state = 1 ORDER BY lg_idx ASC LIMIT 1)
|
||||
UNION
|
||||
(SELECT lg_idx FROM local_government WHERE lg_code = '110204' LIMIT 1)
|
||||
) t
|
||||
CROSS JOIN (
|
||||
SELECT '10' AS tp, '테스트생보_홍길동' AS nm, '010-9001-0001' AS ph, '대구 남구 대명로 1 (테스트)' AS ad, '개발/테스트 시드' AS nt, NULL AS ed
|
||||
UNION ALL SELECT '4', '테스트복지관_남구', '053-900-0002', '대구 남구 봉덕로 100 (테스트)', '시설 테스트용', NULL
|
||||
UNION ALL SELECT '3', '테스트무공수훈_김국가', '010-9001-0003', '대구 남구 이천로 50 (테스트)', '무공수훈자 테스트', '2027-12-31'
|
||||
) v
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `free_recipient` f WHERE f.fr_lg_idx = t.lg_idx AND f.fr_name = v.nm
|
||||
);
|
||||
|
||||
-- fr_type_code: H 종류 — 1 시설보호, 10 생보자, 3 무공수훈자, 4 사회복지시설
|
||||
51
writable/database/import_kr_address_jongryangje_dev.sh
Executable file
51
writable/database/import_kr_address_jongryangje_dev.sh
Executable file
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env bash
|
||||
# Downloads/sql 의 jibun_rnaddrkor_*.sql 를 jongryangje_dev.kr_address 에 넣을 때 사용
|
||||
# UTF-8 한글 깨짐 방지: mysql 에 --default-character-set=utf8mb4 필수
|
||||
#
|
||||
# 사용 예:
|
||||
# export MYSQL_PWD='...'
|
||||
# DB=jongryangje_dev USER=jongryangje HOST=127.0.0.1 PORT=3306
|
||||
# DOWNLOADS_SQL="$HOME/Downloads/sql"
|
||||
# ./writable/database/import_kr_address_jongryangje_dev.sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
MYSQL_BIN="${MYSQL_BIN:-mysql}"
|
||||
HOST="${HOST:-127.0.0.1}"
|
||||
PORT="${PORT:-3306}"
|
||||
USER="${USER:-jongryangje}"
|
||||
DB="${DB:-jongryangje_dev}"
|
||||
DOWNLOADS_SQL="${DOWNLOADS_SQL:-$HOME/Downloads/sql}"
|
||||
|
||||
MYSQL_BASE_OPTS=( -h"$HOST" -P"$PORT" -u"$USER" --default-character-set=utf8mb4 )
|
||||
if [[ -n "${MYSQL_PWD:-}" ]]; then
|
||||
MYSQL_BASE_OPTS+=( -p"$MYSQL_PWD" )
|
||||
else
|
||||
MYSQL_BASE_OPTS+=( -p )
|
||||
fi
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||
INIT_SQL="$ROOT/writable/database/kr_address_init_jongryangje_dev.sql"
|
||||
ALTER_SQL="$ROOT/writable/database/kr_address_alter_widen.sql"
|
||||
|
||||
echo "=== TRUNCATE kr_address ==="
|
||||
printf 'TRUNCATE TABLE `kr_address`;\n' | "$MYSQL_BIN" "${MYSQL_BASE_OPTS[@]}" "$DB"
|
||||
|
||||
echo "=== CREATE (if needed) + widen columns ==="
|
||||
"$MYSQL_BIN" "${MYSQL_BASE_OPTS[@]}" "$DB" < "$INIT_SQL"
|
||||
"$MYSQL_BIN" "${MYSQL_BASE_OPTS[@]}" "$DB" < "$ALTER_SQL"
|
||||
|
||||
shopt -s nullglob
|
||||
files=( "$DOWNLOADS_SQL"/jibun_rnaddrkor_*.sql )
|
||||
if [[ ${#files[@]} -eq 0 ]]; then
|
||||
echo "No jibun_rnaddrkor_*.sql in $DOWNLOADS_SQL" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for f in "${files[@]}"; do
|
||||
echo "=== $(basename "$f") ==="
|
||||
tail -n +3 "$f" | "$MYSQL_BIN" "${MYSQL_BASE_OPTS[@]}" "$DB"
|
||||
done
|
||||
|
||||
echo "OK. Row count:"
|
||||
"$MYSQL_BIN" "${MYSQL_BASE_OPTS[@]}" "$DB" -e "SELECT COUNT(*) AS cnt FROM kr_address;"
|
||||
7
writable/database/kr_address_alter_widen.sql
Normal file
7
writable/database/kr_address_alter_widen.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
-- 기존 kr_address 테이블 컬럼 확장 (특별자치도 등 긴 명칭 대응)
|
||||
ALTER TABLE `kr_address`
|
||||
MODIFY `address_code` VARCHAR(40) DEFAULT NULL COMMENT '주소코드',
|
||||
MODIFY `admin_code` VARCHAR(30) DEFAULT NULL COMMENT '행정구역코드',
|
||||
MODIFY `sido` VARCHAR(50) DEFAULT NULL COMMENT '시도',
|
||||
MODIFY `sigungu` VARCHAR(80) DEFAULT NULL COMMENT '시군구',
|
||||
MODIFY `eupmyeondong` VARCHAR(120) DEFAULT NULL COMMENT '읍면동';
|
||||
20
writable/database/kr_address_init_jongryangje_dev.sql
Normal file
20
writable/database/kr_address_init_jongryangje_dev.sql
Normal file
@@ -0,0 +1,20 @@
|
||||
-- kr_address: 도로명/지번 연계 주소 참조 테이블 (jongryangje_dev 내 생성)
|
||||
-- Downloads/sql 의 00_init_table.sql 대신 사용 — 별도 DB(kr_address_db) 미사용
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `kr_address` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`address_code` VARCHAR(40) DEFAULT NULL COMMENT '주소코드',
|
||||
`admin_code` VARCHAR(30) DEFAULT NULL COMMENT '행정구역코드',
|
||||
`sido` VARCHAR(50) DEFAULT NULL COMMENT '시도',
|
||||
`sigungu` VARCHAR(80) DEFAULT NULL COMMENT '시군구',
|
||||
`eupmyeondong` VARCHAR(120) DEFAULT NULL COMMENT '읍면동',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_sido` (`sido`),
|
||||
KEY `idx_sigungu` (`sigungu`),
|
||||
KEY `idx_address_code` (`address_code`)
|
||||
) ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='대한민국 도로명주소(참조)';
|
||||
8
writable/database/member_pii_column_widen.sql
Normal file
8
writable/database/member_pii_column_widen.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
-- PII 암호화(ENC:base64...) 저장 시 mb_email/mb_phone 길이 부족으로 잘림 → 복호화 실패 방지
|
||||
-- 실행 예: mysql -h 127.0.0.1 -P 3306 -u jongryangje -p jongryangje_dev < writable/database/member_pii_column_widen.sql
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
ALTER TABLE `member`
|
||||
MODIFY COLUMN `mb_email` VARCHAR(512) NOT NULL DEFAULT '' COMMENT '이메일(암호화 시 pii_encrypt, ENC: 접두)',
|
||||
MODIFY COLUMN `mb_phone` VARCHAR(256) NOT NULL DEFAULT '' COMMENT '연락처(암호화 시 pii_encrypt, ENC: 접두)';
|
||||
@@ -0,0 +1,79 @@
|
||||
-- site 메뉴 2차 항목 중 mm_link가 비어 있을 때, 앱에 존재하는 경로로 채웁니다.
|
||||
-- (이미 링크가 있는 행은 WHERE 조건에서 제외됩니다.)
|
||||
--
|
||||
-- 반드시 UTF-8로 실행하세요 (한글 메뉴명 매칭):
|
||||
-- mysql --default-character-set=utf8mb4 -u ... -p DBNAME < writable/database/menu_site_fill_empty_second_level_links.sql
|
||||
|
||||
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
SET CHARACTER_SET_CLIENT = utf8mb4;
|
||||
|
||||
UPDATE `menu` m
|
||||
INNER JOIN `menu_type` t ON t.mt_idx = m.mt_idx AND t.mt_code = 'site'
|
||||
SET m.mm_link = CASE m.mm_name
|
||||
WHEN '기본 코드 관리' THEN 'bag/code-kinds'
|
||||
WHEN '기본코드관리' THEN 'bag/code-kinds'
|
||||
WHEN '단가 관리' THEN 'bag/bag-prices'
|
||||
WHEN '포장 단위 관리' THEN 'bag/packaging-units/manage'
|
||||
WHEN '판매 대행소 관리' THEN 'bag/sales-agencies'
|
||||
WHEN '담당자 관리' THEN 'bag/managers'
|
||||
WHEN '업체 관리' THEN 'bag/companies'
|
||||
WHEN '무료용 대상자 관리' THEN 'bag/free-recipients'
|
||||
WHEN '지정 판매소 관리' THEN 'bag/designated-shops'
|
||||
WHEN '지정 판매소 조회' THEN 'bag/designated-shops'
|
||||
WHEN '지정 판매소 신규/취소 현황' THEN 'bag/designated-shops/status'
|
||||
WHEN '지정판매소 바코드 출력' THEN 'bag/designated-shops'
|
||||
WHEN 'PASSWORD 변경' THEN 'bag/password-change'
|
||||
WHEN '환경 설정' THEN 'dashboard'
|
||||
WHEN '지정 판매소 현황' THEN 'bag/designated-shops/status'
|
||||
WHEN '발주 등록' THEN 'bag/order/create'
|
||||
WHEN '발주 변경' THEN 'bag/bag-orders'
|
||||
WHEN '발주 현황' THEN 'bag/bag-orders'
|
||||
WHEN '발주 입고[스캐너]' THEN 'bag/receiving/create'
|
||||
WHEN '입고 현황' THEN 'bag/bag-receivings'
|
||||
WHEN '무료 불출 현황' THEN 'bag/bag-issues'
|
||||
WHEN '무료용 불출 처리' THEN 'bag/issue/create'
|
||||
WHEN '무료용 불출 취소' THEN 'bag/issue'
|
||||
WHEN '재고 현황' THEN 'bag/inventory'
|
||||
WHEN '실사 관리' THEN 'bag/inventory/adjust'
|
||||
WHEN '전화 접수' THEN 'bag/shop-orders'
|
||||
WHEN '전화 접수 관리' THEN 'bag/shop-orders'
|
||||
WHEN '지정 판매소 판매' THEN 'bag/sale/create'
|
||||
WHEN '지정 판매소 반품' THEN 'bag/bag-sales'
|
||||
WHEN '지정 판매소 판매 취소' THEN 'bag/bag-sales'
|
||||
WHEN '지정 판매소 반품 취소' THEN 'bag/bag-sales'
|
||||
WHEN '지정 판매소 일 판매대장' THEN 'bag/reports/sales-ledger'
|
||||
WHEN '지정 판매소 기간별 판매대장' THEN 'bag/reports/sales-ledger'
|
||||
WHEN '일계표' THEN 'bag/reports/daily-summary'
|
||||
WHEN '기간별 판매현황[일집계]' THEN 'bag/reports/period-sales'
|
||||
WHEN '기간별 판매현황[기간집계]' THEN 'bag/reports/period-sales'
|
||||
WHEN '년 판매 현황' THEN 'bag/reports/yearly-sales'
|
||||
WHEN '지정 판매소 별 판매현황(수량)' THEN 'bag/reports/shop-sales'
|
||||
WHEN '지정 판매소 별 판매현황(금액)' THEN 'bag/reports/shop-sales'
|
||||
WHEN '지정판매소별 거래현황' THEN 'bag/reports/shop-sales'
|
||||
WHEN '홈텍스 처리' THEN 'bag/reports/hometax-export'
|
||||
WHEN '기타 입출고' THEN 'bag/reports/misc-flow'
|
||||
WHEN '기간별 봉투 수불 현황' THEN 'bag/flow'
|
||||
WHEN '일일 봉투 수불 현황' THEN 'bag/waste-suibal-enterprise'
|
||||
WHEN '반품/파기 현황' THEN 'bag/reports/returns'
|
||||
WHEN '쓰레기 봉투 수급 계획' THEN 'bag/reports/supply-demand'
|
||||
WHEN 'LOT 수불 조회' THEN 'bag/reports/lot-flow'
|
||||
WHEN '전년 대비 판매 분석' THEN 'bag/analytics'
|
||||
WHEN '월별 판매 추이 분석' THEN 'bag/analytics'
|
||||
WHEN '계절별 판매 추이 분석' THEN 'bag/analytics'
|
||||
WHEN '도움말 항목' THEN 'bag/help'
|
||||
WHEN '원격 요청' THEN 'bag/help'
|
||||
WHEN 'pda 리셋' THEN 'bag/help'
|
||||
WHEN '번호알기' THEN 'bag/help'
|
||||
WHEN 'Data Backup' THEN 'bag/help'
|
||||
WHEN '컴포트 설정' THEN 'bag/help'
|
||||
WHEN 'Version 정보' THEN 'bag/help'
|
||||
WHEN '종료' THEN 'bag/help'
|
||||
WHEN '1GBMS' THEN 'bag/help'
|
||||
WHEN 'PDA 수정' THEN 'bag/window'
|
||||
WHEN '바둑판식 배열' THEN 'bag/window'
|
||||
WHEN '계단식 배열' THEN 'bag/window'
|
||||
WHEN '계층식 배열' THEN 'bag/window'
|
||||
ELSE m.mm_link
|
||||
END
|
||||
WHERE m.mm_dep >= 1
|
||||
AND TRIM(COALESCE(m.mm_link, '')) = '';
|
||||
26
writable/database/menu_site_mm_link_admin_to_bag.sql
Normal file
26
writable/database/menu_site_mm_link_admin_to_bag.sql
Normal file
@@ -0,0 +1,26 @@
|
||||
-- 기존 DB: 메뉴(mm_link)의 admin/* 업무 URL 을 bag/* 로 일괄 변경
|
||||
-- site·admin 타입 모두 대상. 실행 전 백업 권장.
|
||||
-- 포장 단위 CRUD 는 bag/packaging-units/manage 로 통일.
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
UPDATE `menu` m
|
||||
INNER JOIN `menu_type` mt ON m.mt_idx = mt.mt_idx AND mt.mt_code = 'site'
|
||||
SET m.mm_link = CASE
|
||||
WHEN m.mm_link LIKE 'admin/packaging-units%' THEN REPLACE(m.mm_link, 'admin/packaging-units', 'bag/packaging-units/manage')
|
||||
WHEN m.mm_link LIKE 'admin/%' THEN REPLACE(m.mm_link, 'admin/', 'bag/')
|
||||
ELSE m.mm_link
|
||||
END
|
||||
WHERE m.mm_link LIKE 'admin/%';
|
||||
|
||||
-- 관리자 상단 메뉴: 순수 관리(회원·역할 등)는 유지하고, 업무 모듈 링크만 bag 으로 이동
|
||||
UPDATE `menu` m
|
||||
INNER JOIN `menu_type` mt ON m.mt_idx = mt.mt_idx AND mt.mt_code = 'admin'
|
||||
SET m.mm_link = CASE
|
||||
WHEN m.mm_link LIKE 'admin/packaging-units%' THEN REPLACE(m.mm_link, 'admin/packaging-units', 'bag/packaging-units/manage')
|
||||
WHEN m.mm_link REGEXP '^admin/(managers|sales-agencies|companies|free-recipients|designated-shops|bag-prices|bag-orders|bag-receivings|bag-inventory|shop-orders|bag-sales|bag-issues|reports|password-change)(/|$)'
|
||||
THEN REPLACE(m.mm_link, 'admin/', 'bag/')
|
||||
ELSE m.mm_link
|
||||
END
|
||||
WHERE m.mm_link LIKE 'admin/packaging-units%'
|
||||
OR m.mm_link REGEXP '^admin/(managers|sales-agencies|companies|free-recipients|designated-shops|bag-prices|bag-orders|bag-receivings|bag-inventory|shop-orders|bag-sales|bag-issues|reports|password-change)(/|$)';
|
||||
@@ -23,7 +23,25 @@ SET @parent_basic := (
|
||||
);
|
||||
|
||||
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_basic, 1, t.mm_num, 0, '', 'Y'
|
||||
SELECT @mt_site, 1, t.mm_name,
|
||||
CASE t.mm_name
|
||||
WHEN '기본 코드 관리' THEN 'bag/code-kinds'
|
||||
WHEN '단가 관리' THEN 'bag/bag-prices'
|
||||
WHEN '포장 단위 관리' THEN 'bag/packaging-units/manage'
|
||||
WHEN '판매 대행소 관리' THEN 'bag/sales-agencies'
|
||||
WHEN '담당자 관리' THEN 'bag/managers'
|
||||
WHEN '업체 관리' THEN 'bag/companies'
|
||||
WHEN '무료용 대상자 관리' THEN 'bag/free-recipients'
|
||||
WHEN '지정 판매소 관리' THEN 'bag/designated-shops'
|
||||
WHEN '지정 판매소 조회' THEN 'bag/designated-shops'
|
||||
WHEN '지정 판매소 신규/취소 현황' THEN 'bag/designated-shops/status'
|
||||
WHEN '지정판매소 바코드 출력' THEN 'bag/designated-shops'
|
||||
WHEN 'PASSWORD 변경' THEN 'bag/password-change'
|
||||
WHEN '환경 설정' THEN 'dashboard'
|
||||
WHEN '지정 판매소 현황' THEN 'bag/designated-shops/status'
|
||||
ELSE ''
|
||||
END,
|
||||
@parent_basic, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '기본 코드 관리' AS mm_name UNION ALL
|
||||
SELECT 1, '단가 관리' UNION ALL
|
||||
@@ -61,7 +79,16 @@ SET @parent_order := (
|
||||
);
|
||||
|
||||
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_order, 1, t.mm_num, 0, '', 'Y'
|
||||
SELECT @mt_site, 1, t.mm_name,
|
||||
CASE t.mm_name
|
||||
WHEN '발주 등록' THEN 'bag/order/create'
|
||||
WHEN '발주 변경' THEN 'bag/bag-orders'
|
||||
WHEN '발주 현황' THEN 'bag/bag-orders'
|
||||
WHEN '발주 입고[스캐너]' THEN 'bag/receiving/create'
|
||||
WHEN '입고 현황' THEN 'bag/bag-receivings'
|
||||
ELSE ''
|
||||
END,
|
||||
@parent_order, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '발주 등록' AS mm_name UNION ALL
|
||||
SELECT 1, '발주 변경' UNION ALL
|
||||
@@ -88,7 +115,14 @@ SET @parent_issue := (
|
||||
);
|
||||
|
||||
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_issue, 1, t.mm_num, 0, '', 'Y'
|
||||
SELECT @mt_site, 1, t.mm_name,
|
||||
CASE t.mm_name
|
||||
WHEN '무료 불출 현황' THEN 'bag/bag-issues'
|
||||
WHEN '무료용 불출 처리' THEN 'bag/issue/create'
|
||||
WHEN '무료용 불출 취소' THEN 'bag/issue'
|
||||
ELSE ''
|
||||
END,
|
||||
@parent_issue, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '무료 불출 현황' AS mm_name UNION ALL
|
||||
SELECT 1, '무료용 불출 처리' UNION ALL
|
||||
@@ -111,7 +145,13 @@ SET @parent_inventory := (
|
||||
);
|
||||
|
||||
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_inventory, 1, t.mm_num, 0, '', 'Y'
|
||||
SELECT @mt_site, 1, t.mm_name,
|
||||
CASE t.mm_name
|
||||
WHEN '재고 현황' THEN 'bag/inventory'
|
||||
WHEN '실사 관리' THEN 'bag/inventory/adjust'
|
||||
ELSE ''
|
||||
END,
|
||||
@parent_inventory, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '재고 현황' AS mm_name UNION ALL
|
||||
SELECT 1, '실사 관리' UNION ALL
|
||||
@@ -140,7 +180,17 @@ SET @parent_sales := (
|
||||
);
|
||||
|
||||
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_sales, 1, t.mm_num, 0, '', 'Y'
|
||||
SELECT @mt_site, 1, t.mm_name,
|
||||
CASE t.mm_name
|
||||
WHEN '전화 접수' THEN 'bag/shop-orders'
|
||||
WHEN '전화 접수 관리' THEN 'bag/shop-orders'
|
||||
WHEN '지정 판매소 판매' THEN 'bag/sale/create'
|
||||
WHEN '지정 판매소 반품' THEN 'bag/bag-sales'
|
||||
WHEN '지정 판매소 판매 취소' THEN 'bag/bag-sales'
|
||||
WHEN '지정 판매소 반품 취소' THEN 'bag/bag-sales'
|
||||
ELSE ''
|
||||
END,
|
||||
@parent_sales, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '전화 접수' AS mm_name UNION ALL
|
||||
SELECT 1, '전화 접수 관리' UNION ALL
|
||||
@@ -166,7 +216,21 @@ SET @parent_sales_stats := (
|
||||
);
|
||||
|
||||
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_sales_stats, 1, t.mm_num, 0, '', 'Y'
|
||||
SELECT @mt_site, 1, t.mm_name,
|
||||
CASE t.mm_name
|
||||
WHEN '지정 판매소 일 판매대장' THEN 'bag/reports/sales-ledger'
|
||||
WHEN '지정 판매소 기간별 판매대장' THEN 'bag/reports/sales-ledger'
|
||||
WHEN '일계표' THEN 'bag/reports/daily-summary'
|
||||
WHEN '기간별 판매현황[일집계]' THEN 'bag/reports/period-sales'
|
||||
WHEN '기간별 판매현황[기간집계]' THEN 'bag/reports/period-sales'
|
||||
WHEN '년 판매 현황' THEN 'bag/reports/yearly-sales'
|
||||
WHEN '지정 판매소 별 판매현황(수량)' THEN 'bag/reports/shop-sales'
|
||||
WHEN '지정 판매소 별 판매현황(금액)' THEN 'bag/reports/shop-sales'
|
||||
WHEN '지정판매소별 거래현황' THEN 'bag/reports/shop-sales'
|
||||
WHEN '홈텍스 처리' THEN 'bag/reports/hometax-export'
|
||||
ELSE ''
|
||||
END,
|
||||
@parent_sales_stats, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '지정 판매소 일 판매대장' AS mm_name UNION ALL
|
||||
SELECT 1, '지정 판매소 기간별 판매대장' UNION ALL
|
||||
@@ -196,7 +260,17 @@ SET @parent_flow := (
|
||||
);
|
||||
|
||||
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_flow, 1, t.mm_num, 0, '', 'Y'
|
||||
SELECT @mt_site, 1, t.mm_name,
|
||||
CASE t.mm_name
|
||||
WHEN '기타 입출고' THEN 'bag/reports/misc-flow'
|
||||
WHEN '기간별 봉투 수불 현황' THEN 'bag/flow'
|
||||
WHEN '일일 봉투 수불 현황' THEN 'bag/waste-suibal-enterprise'
|
||||
WHEN '반품/파기 현황' THEN 'bag/reports/returns'
|
||||
WHEN '쓰레기 봉투 수급 계획' THEN 'bag/reports/supply-demand'
|
||||
WHEN 'LOT 수불 조회' THEN 'bag/reports/lot-flow'
|
||||
ELSE ''
|
||||
END,
|
||||
@parent_flow, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '기타 입출고' AS mm_name UNION ALL
|
||||
SELECT 1, '기간별 봉투 수불 현황' UNION ALL
|
||||
@@ -222,7 +296,14 @@ SET @parent_analytics := (
|
||||
);
|
||||
|
||||
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_analytics, 1, t.mm_num, 0, '', 'Y'
|
||||
SELECT @mt_site, 1, t.mm_name,
|
||||
CASE t.mm_name
|
||||
WHEN '전년 대비 판매 분석' THEN 'bag/analytics'
|
||||
WHEN '월별 판매 추이 분석' THEN 'bag/analytics'
|
||||
WHEN '계절별 판매 추이 분석' THEN 'bag/analytics'
|
||||
ELSE ''
|
||||
END,
|
||||
@parent_analytics, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '전년 대비 판매 분석' AS mm_name UNION ALL
|
||||
SELECT 1, '월별 판매 추이 분석' UNION ALL
|
||||
@@ -245,7 +326,7 @@ SET @parent_window := (
|
||||
);
|
||||
|
||||
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_window, 1, t.mm_num, 0, '', 'Y'
|
||||
SELECT @mt_site, 1, t.mm_name, 'bag/window', @parent_window, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, 'PDA 수정' AS mm_name UNION ALL
|
||||
SELECT 1, '바둑판식 배열' UNION ALL
|
||||
@@ -269,7 +350,20 @@ SET @parent_help := (
|
||||
);
|
||||
|
||||
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_help, 1, t.mm_num, 0, '', 'Y'
|
||||
SELECT @mt_site, 1, t.mm_name,
|
||||
CASE t.mm_name
|
||||
WHEN '도움말 항목' THEN 'bag/help'
|
||||
WHEN '원격 요청' THEN 'bag/help'
|
||||
WHEN 'pda 리셋' THEN 'bag/help'
|
||||
WHEN '번호알기' THEN 'bag/help'
|
||||
WHEN 'Data Backup' THEN 'bag/help'
|
||||
WHEN '컴포트 설정' THEN 'bag/help'
|
||||
WHEN 'Version 정보' THEN 'bag/help'
|
||||
WHEN '종료' THEN 'bag/help'
|
||||
WHEN '1GBMS' THEN 'bag/help'
|
||||
ELSE ''
|
||||
END,
|
||||
@parent_help, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '도움말 항목' AS mm_name UNION ALL
|
||||
SELECT 1, '원격 요청' UNION ALL
|
||||
|
||||
39
writable/database/sales_agency_migrate_to_kind_code_name.sql
Normal file
39
writable/database/sales_agency_migrate_to_kind_code_name.sql
Normal file
@@ -0,0 +1,39 @@
|
||||
-- 기존 sales_agency(사업자번호·대표자 등) → 구분·코드·명 스키마로 변경
|
||||
-- (이미 신규 스키마면 건너뛰거나 에러 날 수 있음 — 실행 전 백업 권장)
|
||||
|
||||
-- 1) 신규 컬럼
|
||||
ALTER TABLE `sales_agency`
|
||||
ADD COLUMN `sa_kind` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대행소 구분' AFTER `sa_lg_idx`,
|
||||
ADD COLUMN `sa_code` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대행소 코드' AFTER `sa_kind`;
|
||||
|
||||
-- 2) 코드·구분 채우기 (사업자번호 → 코드, 없으면 SA+번호)
|
||||
UPDATE `sales_agency`
|
||||
SET `sa_code` = CASE
|
||||
WHEN `sa_biz_no` IS NOT NULL AND TRIM(`sa_biz_no`) <> '' THEN LEFT(TRIM(`sa_biz_no`), 50)
|
||||
ELSE CONCAT('SA', `sa_idx`)
|
||||
END
|
||||
WHERE `sa_code` = '';
|
||||
|
||||
UPDATE `sales_agency` SET `sa_kind` = '기타' WHERE `sa_kind` = '' OR `sa_kind` IS NULL;
|
||||
|
||||
-- 3) 동일 지자체 내 코드 중복 제거 (있으면 두 번째부터 접미사)
|
||||
-- (간단 처리: sa_idx 붙이기)
|
||||
UPDATE `sales_agency` s1
|
||||
INNER JOIN (
|
||||
SELECT `sa_lg_idx`, `sa_code`, MIN(`sa_idx`) AS keep_idx, COUNT(*) AS cnt
|
||||
FROM `sales_agency`
|
||||
GROUP BY `sa_lg_idx`, `sa_code`
|
||||
HAVING cnt > 1
|
||||
) d ON d.sa_lg_idx = s1.sa_lg_idx AND d.sa_code = s1.sa_code AND s1.sa_idx > d.keep_idx
|
||||
SET s1.sa_code = LEFT(CONCAT(s1.sa_code, '_', s1.sa_idx), 50);
|
||||
|
||||
-- 4) 불필요 컬럼 제거
|
||||
ALTER TABLE `sales_agency`
|
||||
DROP COLUMN `sa_biz_no`,
|
||||
DROP COLUMN `sa_rep_name`,
|
||||
DROP COLUMN `sa_tel`,
|
||||
DROP COLUMN `sa_addr`,
|
||||
DROP COLUMN `sa_state`;
|
||||
|
||||
-- 5) 유니크 인덱스
|
||||
ALTER TABLE `sales_agency` ADD UNIQUE KEY `uk_sa_lg_code` (`sa_lg_idx`, `sa_code`);
|
||||
Reference in New Issue
Block a user