ERP_tables.sql 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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 DATE, -- 最后推送时间
  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. */
  47. -- 入库单头加字段
  48. ALTER TABLE PRODINOUT ADD (
  49. PI_GW_BOND_INVTNO VARCHAR2(100), -- 保税核注清单号
  50. PI_GW_IE_FLAG VARCHAR2(2), -- 进出口标志 I/E
  51. PI_GW_SEND_STATUS VARCHAR2(2) DEFAULT '0', -- 0待发送 1成功 2失败
  52. PI_GW_SEND_TIME DATE,
  53. PI_GW_SEND_MSG_ID VARCHAR2(100),
  54. PI_GW_SEND_REMARK VARCHAR2(500)
  55. );
  56. COMMENT ON COLUMN PRODINOUT.PI_GW_BOND_INVTNO IS '保税核注清单号';
  57. COMMENT ON COLUMN PRODINOUT.PI_GW_IE_FLAG IS '进出口标志 I进口 E出口';
  58. COMMENT ON COLUMN PRODINOUT.PI_GW_SEND_STATUS IS 'WO102发送状态 0待发 1成功 2失败';