docs: add project docs and test updates
This commit is contained in:
180
docs/기본 개발계획/테이블/02-물류_판매_테이블_DDL.md
Normal file
180
docs/기본 개발계획/테이블/02-물류_판매_테이블_DDL.md
Normal file
@@ -0,0 +1,180 @@
|
||||
# 물류·판매 테이블 DDL
|
||||
|
||||
> 품목·단가·포장단위·발주·입고·주문·수불. 노션 ERD(Product, InboundReceipt, SalesOrder, StockTransaction) 반영.
|
||||
|
||||
---
|
||||
|
||||
## 1. product (지자체별 취급 품목)
|
||||
|
||||
지자체별 봉투 규격·용량. 단가는 `product_price`에서 적용일자별 관리.
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS `product` (
|
||||
`pr_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '품목 PK',
|
||||
`pr_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
|
||||
`pr_code` VARCHAR(30) NOT NULL DEFAULT '' COMMENT '봉투/규격 코드',
|
||||
`pr_type` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '일반,음식물,재사용',
|
||||
`pr_capacity` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '3L,5L,10L 등',
|
||||
`pr_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '품목 명칭',
|
||||
`pr_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=사용, 0=미사용',
|
||||
`pr_regdate` DATETIME NOT NULL COMMENT '등록일시',
|
||||
PRIMARY KEY (`pr_idx`),
|
||||
KEY `idx_pr_lg_idx` (`pr_lg_idx`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='지자체별 취급 품목';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. product_price (적용일자별 단가)
|
||||
|
||||
F-MD-02: 발주 단가, 도매가, 소비자가. 시계열 이력(적용일자 변경 시 이전 구간 보존).
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS `product_price` (
|
||||
`pp_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '단가 PK',
|
||||
`pp_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
|
||||
`pp_pr_idx` INT UNSIGNED NOT NULL COMMENT 'product FK',
|
||||
`pp_apply_from` DATE NOT NULL COMMENT '적용 시작일',
|
||||
`pp_apply_to` DATE NULL DEFAULT NULL COMMENT '적용 종료일(NULL=현재 유효)',
|
||||
`pp_purchase` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '발주 단가',
|
||||
`pp_wholesale` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '도매가',
|
||||
`pp_retail` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '소비자가',
|
||||
`pp_regdate` DATETIME NOT NULL COMMENT '등록일시',
|
||||
PRIMARY KEY (`pp_idx`),
|
||||
KEY `idx_pp_lg_idx` (`pp_lg_idx`),
|
||||
KEY `idx_pp_pr_idx` (`pp_pr_idx`),
|
||||
KEY `idx_pp_apply` (`pp_apply_from`, `pp_apply_to`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='품목별 단가(적용일자)';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. packaging_unit (포장 단위)
|
||||
|
||||
F-MD-03: 박스당 팩 수, 팩당 낱장 수, 총 수량. 적용일자 이력 관리.
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS `packaging_unit` (
|
||||
`pu_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '포장단위 PK',
|
||||
`pu_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
|
||||
`pu_pr_idx` INT UNSIGNED NOT NULL COMMENT 'product FK',
|
||||
`pu_apply_from` DATE NOT NULL COMMENT '적용 시작일',
|
||||
`pu_apply_to` DATE NULL DEFAULT NULL COMMENT '적용 종료일',
|
||||
`pu_box_to_pack` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '박스당 팩 수',
|
||||
`pu_pack_to_sheet` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '팩당 낱장 수',
|
||||
`pu_total` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '총 수량(박스당 낱장)',
|
||||
`pu_regdate` DATETIME NOT NULL COMMENT '등록일시',
|
||||
PRIMARY KEY (`pu_idx`),
|
||||
KEY `idx_pu_lg_idx` (`pu_lg_idx`),
|
||||
KEY `idx_pu_pr_idx` (`pu_pr_idx`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='포장 단위';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. purchase_order (발주)
|
||||
|
||||
지자체 → 제작업체 발주. 구/군·동 코드, 제작업체, 봉투 종류, 수량, LOT·버전·상태.
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS `purchase_order` (
|
||||
`po_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '발주 PK',
|
||||
`po_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
|
||||
`po_uuid` CHAR(36) NOT NULL DEFAULT '' COMMENT '버전 관리용 UUID',
|
||||
`po_version` INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '버전(수정 시 +1 insert)',
|
||||
`po_gugun_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '구/군 코드',
|
||||
`po_dong_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '동 코드',
|
||||
`po_co_idx` INT UNSIGNED NULL DEFAULT NULL COMMENT '제작업체 company FK',
|
||||
`po_pr_idx` INT UNSIGNED NOT NULL COMMENT '품목 FK',
|
||||
`po_unit_price` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '발주 단가',
|
||||
`po_box_qty` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '발주 박스 수량',
|
||||
`po_order_date` DATE NOT NULL COMMENT '발주일',
|
||||
`po_mb_idx` INT UNSIGNED NULL DEFAULT NULL COMMENT '발주자 member FK',
|
||||
`po_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=정상, 2=취소, 0=삭제',
|
||||
`po_regdate` DATETIME NOT NULL COMMENT '등록일시',
|
||||
PRIMARY KEY (`po_idx`),
|
||||
KEY `idx_po_lg_idx` (`po_lg_idx`),
|
||||
KEY `idx_po_uuid_version` (`po_uuid`, `po_version`),
|
||||
KEY `idx_po_order_date` (`po_order_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='발주';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. inbound_receipt (입고 내역)
|
||||
|
||||
노션 ERD InboundReceipt. LOT 번호·PDF417 바코드 연동. 발주(purchase_order) 단위 입고.
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS `inbound_receipt` (
|
||||
`ir_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '입고 PK',
|
||||
`ir_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
|
||||
`ir_po_idx` INT UNSIGNED NOT NULL COMMENT '발주 FK(LOT 단위)',
|
||||
`ir_pr_idx` INT UNSIGNED NOT NULL COMMENT '품목 FK',
|
||||
`ir_lot_number` VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'LOT 번호(PDF417 연동)',
|
||||
`ir_quantity` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '입고 수량',
|
||||
`ir_unit` VARCHAR(10) NOT NULL DEFAULT 'BOX' COMMENT 'BOX,PACK,SHEET',
|
||||
`ir_receipt_date` DATETIME NOT NULL COMMENT '입고일시',
|
||||
`ir_mb_idx` INT UNSIGNED NULL DEFAULT NULL COMMENT '인수자 member FK',
|
||||
`ir_regdate` DATETIME NOT NULL COMMENT '등록일시',
|
||||
PRIMARY KEY (`ir_idx`),
|
||||
KEY `idx_ir_lg_idx` (`ir_lg_idx`),
|
||||
KEY `idx_ir_po_idx` (`ir_po_idx`),
|
||||
KEY `idx_ir_lot_number` (`ir_lot_number`),
|
||||
KEY `idx_ir_receipt_date` (`ir_receipt_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='입고 내역';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. sales_order (판매소 주문)
|
||||
|
||||
노션 ERD SalesOrder. 지정판매소 주문, 결제상태. `so_lg_idx` = 데이터 격리용.
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS `sales_order` (
|
||||
`so_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '주문 PK',
|
||||
`so_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK(데이터 격리)',
|
||||
`so_ds_idx` INT UNSIGNED NOT NULL COMMENT '지정판매소 FK',
|
||||
`so_order_no` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '접수/주문 번호',
|
||||
`so_order_date` DATETIME NOT NULL COMMENT '주문일시',
|
||||
`so_delivery_date` DATE NULL DEFAULT NULL COMMENT '배달일',
|
||||
`so_total_amount` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '총 금액',
|
||||
`so_payment_status` VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '입금대기,완료,취소',
|
||||
`so_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=정상, 0=취소',
|
||||
`so_regdate` DATETIME NOT NULL COMMENT '등록일시',
|
||||
PRIMARY KEY (`so_idx`),
|
||||
KEY `idx_so_lg_idx` (`so_lg_idx`),
|
||||
KEY `idx_so_ds_idx` (`so_ds_idx`),
|
||||
KEY `idx_so_order_date` (`so_order_date`),
|
||||
KEY `idx_so_payment_status` (`so_payment_status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='판매소 주문';
|
||||
```
|
||||
|
||||
- 주문 상세(품목·수량·금액)는 별도 `sales_order_item` 테이블로 확장 가능.
|
||||
|
||||
---
|
||||
|
||||
## 7. stock_transaction (수불)
|
||||
|
||||
노션 ERD StockTransaction. 입고(IN), 판매(OUT), 불출(FREE), 파기(DISCARD). reference로 주문/입고 연결.
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS `stock_transaction` (
|
||||
`st_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '수불 PK',
|
||||
`st_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
|
||||
`st_pr_idx` INT UNSIGNED NOT NULL COMMENT '품목 FK',
|
||||
`st_trans_type` VARCHAR(20) NOT NULL DEFAULT '' COMMENT 'IN,OUT,FREE,DISCARD',
|
||||
`st_quantity` INT NOT NULL DEFAULT 0 COMMENT '수량(+입고/-출고)',
|
||||
`st_ref_table` VARCHAR(30) NOT NULL DEFAULT '' COMMENT '참조 테이블: inbound_receipt,sales_order 등',
|
||||
`st_ref_id` INT UNSIGNED NULL DEFAULT NULL COMMENT '참조 PK',
|
||||
`st_trans_date` DATETIME NOT NULL COMMENT '수불 일시',
|
||||
`st_mb_idx` INT UNSIGNED NULL DEFAULT NULL COMMENT '처리자 member FK',
|
||||
`st_regdate` DATETIME NOT NULL COMMENT '등록일시',
|
||||
PRIMARY KEY (`st_idx`),
|
||||
KEY `idx_st_lg_idx` (`st_lg_idx`),
|
||||
KEY `idx_st_pr_idx` (`st_pr_idx`),
|
||||
KEY `idx_st_trans_type` (`st_trans_type`),
|
||||
KEY `idx_st_trans_date` (`st_trans_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='수불 내역';
|
||||
```
|
||||
Reference in New Issue
Block a user