-- ================================
-- 发货单据（独立于出入库/WMS 单据）
-- 目标：用于“订单管理 -> 发货/发货单据”记录发货信息（发货单名称/收货单位/负责人/物流等）
-- 说明：
-- 1) 一张表存储发货单据主信息；与订单通过 order_id 关联
-- 2) 发货单号 shipping_no 后端自动生成（也可手填/改造）
-- 3) 逻辑删除使用 del_flag（0存在 2删除）
-- ================================

DROP TABLE IF EXISTS gear_shipping_order;
CREATE TABLE gear_shipping_order (
  shipping_id        bigint(20)      NOT NULL                  COMMENT '发货单据ID',
  shipping_no        varchar(64)     NOT NULL                  COMMENT '发货单号（唯一）',
  shipping_name      varchar(128)    DEFAULT ''                COMMENT '发货单名称（展示用）',
  plan_id            bigint(20)      DEFAULT NULL              COMMENT '发货计划ID gear_shipping_plan.plan_id',
  order_id           bigint(20)      NOT NULL                  COMMENT '关联订单ID gear_order.order_id',
  order_code         varchar(64)     DEFAULT ''                COMMENT '订单编号快照',
  receiver_company   varchar(128)    DEFAULT ''                COMMENT '收货单位',
  receiver_customer_id bigint(20)    DEFAULT NULL              COMMENT '收货客户ID gear_customer.customer_id',
  ship_time          datetime                                  COMMENT '发货时间',
  responsible_name   varchar(64)     DEFAULT ''                COMMENT '负责人',
  logistics_company  varchar(64)     DEFAULT ''                COMMENT '物流公司',
  logistics_no       varchar(64)     DEFAULT ''                COMMENT '运单号',
  receiver_name      varchar(64)     DEFAULT ''                COMMENT '收货人',
  receiver_phone     varchar(32)     DEFAULT ''                COMMENT '收货电话',
  receiver_address   varchar(255)    DEFAULT ''                COMMENT '收货地址',
  status             char(1)         NOT NULL DEFAULT '0'      COMMENT '完成状态（0未发货 1已打印 2已发货 3已完成）',
  remark             varchar(500)    DEFAULT NULL              COMMENT '备注',
  del_flag           char(1)         NOT NULL DEFAULT '0'      COMMENT '删除标志（0存在 2删除）',
  create_by          varchar(64)     DEFAULT ''                COMMENT '创建者',
  create_time        datetime                                  COMMENT '创建时间',
  update_by          varchar(64)     DEFAULT ''                COMMENT '更新者',
  update_time        datetime                                  COMMENT '更新时间',
  PRIMARY KEY (shipping_id),
  UNIQUE KEY uk_shipping_no (shipping_no),
  KEY idx_plan_id (plan_id),
  KEY idx_order_id (order_id),
  KEY idx_shipping_name (shipping_name),
  KEY idx_receiver_company (receiver_company),
  KEY idx_receiver_customer_id (receiver_customer_id),
  KEY idx_logistics_no (logistics_no),
  KEY idx_ship_time (ship_time)
) ENGINE=InnoDB COMMENT='发货单据表';

-- ================================
-- 发货计划（独立表）
-- 目标：用于“发货单据”左侧计划列表，计划下可关联多张发货单据（gear_shipping_order.plan_id）
-- 说明：
-- 1) 一张表存储计划主信息（计划名称/计划日期/状态）
-- 2) 逻辑删除使用 del_flag（0存在 2删除）
-- ================================

DROP TABLE IF EXISTS gear_shipping_plan;
CREATE TABLE gear_shipping_plan (
  plan_id            bigint(20)      NOT NULL                  COMMENT '发货计划ID',
  plan_name          varchar(128)    NOT NULL                  COMMENT '计划名称',
  plan_date          date            NOT NULL                  COMMENT '计划日期',
  status             char(1)         NOT NULL DEFAULT '0'      COMMENT '状态（0未完成 1已完成）',
  remark             varchar(500)    DEFAULT NULL              COMMENT '备注',
  del_flag           char(1)         NOT NULL DEFAULT '0'      COMMENT '删除标志（0存在 2删除）',
  create_by          varchar(64)     DEFAULT ''                COMMENT '创建者',
  create_time        datetime                                  COMMENT '创建时间',
  update_by          varchar(64)     DEFAULT ''                COMMENT '更新者',
  update_time        datetime                                  COMMENT '更新时间',
  PRIMARY KEY (plan_id),
  KEY idx_plan_date (plan_date),
  KEY idx_plan_name (plan_name)
) ENGINE=InnoDB COMMENT='发货计划表';
