-- ============================================================ -- ERP物料主数据表(PRODUCT) - 关务对接字段扩展 -- 字段前缀:PR_GW_ -- ============================================================ -- 在PRODUCT表上增加关务对接字段 ALTER TABLE PRODUCT ADD ( PR_GW_GDS_TYPE VARCHAR2(2), -- 保税物料类型:I料件 E成品 1半成品 2旧原料 3废件 4坏件 PR_GW_GDS_MTNO VARCHAR2(32), -- 海关备案料号(发报文用这个,不用ERP内部料号) PR_GW_RECORD_CNT NUMBER(5) DEFAULT 0, -- 备案次数:0=首次备案,>0=变更备案 PR_GW_SEND_STATUS VARCHAR2(2) DEFAULT '0', -- 发送状态:0待推送 1成功 2失败 3变更待推送 PR_GW_SEND_TIME TIMESTAMP, -- 最后推送时间 PR_GW_SEND_MSG_ID VARCHAR2(64), -- 最后推送报文ID PR_GW_SEND_REMARK VARCHAR2(1000) -- 推送备注/失败原因 ); COMMENT ON COLUMN PRODUCT.PR_GW_GDS_TYPE IS '保税物料类型:I料件 E成品 1半成品 2旧原料 3废件 4坏件'; COMMENT ON COLUMN PRODUCT.PR_GW_GDS_MTNO IS '海关备案料号(WO101报文中GdsMtno用此字段)'; COMMENT ON COLUMN PRODUCT.PR_GW_RECORD_CNT IS '备案次数:0=首次备案(ModfMarkcd=3),>0=变更备案(ModfMarkcd=1)'; COMMENT ON COLUMN PRODUCT.PR_GW_SEND_STATUS IS '关务发送状态:0待推送 1成功 2失败 3变更待推送'; COMMENT ON COLUMN PRODUCT.PR_GW_SEND_TIME IS '关务最后推送时间'; COMMENT ON COLUMN PRODUCT.PR_GW_SEND_MSG_ID IS '关务最后推送报文ID'; COMMENT ON COLUMN PRODUCT.PR_GW_SEND_REMARK IS '关务推送备注/失败原因'; -- 索引:查询待推送物料时使用 CREATE INDEX IDX_PRODUCT_PR_GW_STATUS ON PRODUCT(PR_GW_GDS_TYPE, PR_GW_SEND_STATUS); -- ============================================================ -- 物料审核通过时的触发器(可选) -- 当物料信息变更且已推送成功时,自动将发送状态改为3(变更待推送) -- ============================================================ /* CREATE OR REPLACE TRIGGER TRG_PRODUCT_PR_GW_STATUS BEFORE UPDATE ON PRODUCT FOR EACH ROW BEGIN -- 如果已推送成功(状态=1),且物料关键信息发生变更,自动标记为变更待推送(状态=3) IF :OLD.PR_GW_SEND_STATUS = '1' THEN IF :NEW.ITEM_NAME <> :OLD.ITEM_NAME OR :NEW.GDECD <> :OLD.GDECD OR :NEW.SPEC <> :OLD.SPEC OR :NEW.DCL_UNITCD <> :OLD.DCL_UNITCD OR :NEW.PR_GW_GDS_TYPE <> :OLD.PR_GW_GDS_TYPE OR :NEW.PR_GW_GDS_MTNO <> :OLD.PR_GW_GDS_MTNO THEN :NEW.PR_GW_SEND_STATUS := '3'; END IF; END IF; END; / */