-- ============================================================
-- 1.0.210.sql
-- S5-PURCHASE-RECEIPT-MDP-PIPELINE-1
--
-- 业务目标：
--   1) 新建 S5 采购收货单标准层表 mdp_std_purchase_receipt（只读数据中台，方案1：
--      S5 直读源表 PurOrdRctDetail/PurOrdRctMaster + 4 张维表，自建标准层，
--      不读/不改 S3 mdp_stg_receipt、不读/不改 S4 ado_s4_receipt）。
--   2) 将「采购收货单」菜单（Id=1329015020002，仓储管理目录 1322000000016 下）
--      的 Component 由 placeholder 重指到真实页面 /aidop/s5/warehouse/purchaseReceiptList。
--
-- 安全保证：
--   - DDL 仅 CREATE TABLE IF NOT EXISTS，幂等；不 DROP / TRUNCATE。
--   - 菜单仅 UPDATE 该单条 Component / Remark / UpdateTime；不改 Path/Name/Pid/Title/Type/OrderNo；
--     不 INSERT/DELETE；不动 SysTenantMenu / SysRoleMenu（该菜单已分配）；不动其它菜单。
--   - 不动源单据表（PurOrdRctMaster/PurOrdRctDetail/PurOrdDetail 等），不动 S3/S4 资产。
-- ============================================================

CREATE TABLE IF NOT EXISTS mdp_std_purchase_receipt (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    tenant_id BIGINT NOT NULL DEFAULT 0,
    factory_id BIGINT NULL DEFAULT 1,
    source_system VARCHAR(50) NOT NULL DEFAULT 'AIDOP',
    domain VARCHAR(24) NOT NULL COMMENT '工厂/域 PurOrdRctDetail.Domain',
    receiver VARCHAR(24) NOT NULL COMMENT '收货单号 PurOrdRctDetail.Receiver',
    line SMALLINT NOT NULL DEFAULT 0 COMMENT '收货明细行号 PurOrdRctDetail.Line',
    rct_date DATETIME NULL COMMENT '收货日期 PurOrdRctMaster.RctDate',
    supp VARCHAR(20) NULL COMMENT '供应商编码 PurOrdRctDetail.Supp',
    sort_name VARCHAR(255) NULL COMMENT '供应商名称 rtrim(Supp+SuppMaster.SortName)',
    item_num VARCHAR(60) NULL COMMENT '物料编码 PurOrdRctDetail.ItemNum',
    item_name VARCHAR(200) NULL COMMENT '物料名称 ItemMaster.Descr',
    item_spec VARCHAR(200) NULL COMMENT '物料规格 ItemMaster.Descr1',
    um VARCHAR(8) NULL COMMENT '单位 PurOrdRctDetail.UM',
    qty_ordered DECIMAL(18,6) NULL DEFAULT 0 COMMENT '订单数量 PurOrdRctDetail.QtyOrded',
    qty_received DECIMAL(18,6) NULL DEFAULT 0 COMMENT '收货数量 PurOrdRctDetail.QtyReceived',
    lot_serial VARCHAR(120) NULL COMMENT '批次号 PurOrdRctDetail.LotSerial',
    location VARCHAR(8) NULL COMMENT '库位 PurOrdRctDetail.Location',
    ord_nbr VARCHAR(24) NULL COMMENT '来源单号 PurOrdRctDetail.OrdNbr',
    ord_line SMALLINT NULL COMMENT '来源行号 PurOrdRctDetail.OrdLine',
    blanket_line INT NULL COMMENT '一揽子行 PurOrdDetail.BlanketLine',
    pur_ord VARCHAR(24) NULL COMMENT '采购单号 PurOrdDetail.PurOrd',
    pur_line SMALLINT NULL COMMENT '采购单行 PurOrdDetail.Line',
    sales_job VARCHAR(200) NULL COMMENT '销售工单 PurOrdDetail.SalesJob',
    address1 VARCHAR(200) NULL COMMENT '收货地址 ConsigneeAddressMaster.Address1',
    req VARCHAR(20) NULL COMMENT '请购单号（非DO时=PurOrdDetail.Req）',
    req_line INT NULL COMMENT '请购行号 PurOrdDetail.ReqLine',
    dop_req VARCHAR(255) NULL COMMENT 'DOP请购号（DO时=Req，否则=srm_pr_main.pr_billno）',
    source_biz_key VARCHAR(200) NULL COMMENT 'domain#receiver#line',
    sync_batch_id VARCHAR(100) NOT NULL,
    sync_time DATETIME NOT NULL,
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY uk_mdp_std_pur_rct (tenant_id, domain, receiver, line),
    KEY idx_mdp_std_pur_rct_date (tenant_id, rct_date),
    KEY idx_mdp_std_pur_rct_item (tenant_id, item_num),
    KEY idx_mdp_std_pur_rct_supp (tenant_id, supp),
    KEY idx_mdp_std_pur_rct_purord (tenant_id, pur_ord),
    KEY idx_mdp_std_pur_rct_salesjob (tenant_id, sales_job),
    KEY idx_mdp_std_pur_rct_req (tenant_id, req),
    KEY idx_mdp_std_pur_rct_dopreq (tenant_id, dop_req)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S5采购收货单标准层';

UPDATE SysMenu
SET Component  = '/aidop/s5/warehouse/purchaseReceiptList',
    Remark     = 'S5 采购收货单（只读列表，数据中台标准层 mdp_std_purchase_receipt）',
    UpdateTime = NOW()
WHERE Id = 1329015020002;
