02_erp_item_alter.sql 2.6 KB

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