ITPub博客

首页 > 数据库 > Oracle > Auto Generate Item Number

Auto Generate Item Number

原创 Oracle 作者:pan_tian 时间:2014-07-03 11:52:58 0 删除 编辑

自动生成物料编码的客户化代码,觉得代码写的挺好的,留着备用吧

source:https://forums.oracle.com/thread/411343

代码需加入到CUSTOM.pll

------------------------------------------------------------------------------------------------------------------------------------
/*********************************************************************/
/* Begin Master Item Form */
/* 1. Make sure the Item Field on the Master Item Form */
/* is NOT editable by the END USER */
/* 2. Set the Item Field to be the next Item Number */
/* in a 7 digit sequence. */
/* HELPFUL INFO: */
/* MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR */
/* - Item Field on the main Master Item Form */
/* MTL_SYSTEM_ITEMS.INVENTORY_ITEM */
/* - Item Field on the folder tab of the Master Item Form */
BEGIN
  -- Item Master Form
  IF FORM_NAME = \'INVIDITM\' THEN
    -- MTL_SYSTEM_ITEMS Block
    IF BLOCK_NAME = \'MTL_SYSTEM_ITEMS\' THEN
      -- WHEN-NEW-ITEM-INSTANCE Event
      IF EVENT_NAME = \'WHEN-NEW-ITEM-INSTANCE\' THEN
        -- We don\'t want to mess with the Item if we\'re in a Query Mode
        IF NAME_IN(\'SYSTEM.MODE\') != \'ENTER-QUERY\' THEN
          -- The value of the INVENTORY_ITEM_MIR will be blank when we\'re creating a new Item Master Record
          -- and therefore that is when we want to DISABLE that item. If it\'s filled in, then we\'re
          -- dealing with an existing Item Master Record, in which case we still want the END USER to be able to
          -- highlight or select the item number that was generated by the system.
          IF NAME_IN(\'SYSTEM.CURRENT_ITEM\') = \'INVENTORY_ITEM_MIR\' AND
             NAME_IN(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR\') IS NULL THEN
            NEXT_ITEM; -- Move to the next item so the SYSTEM.CURRENT_ITEM isn\'t the Item Field Anymore(t
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR\',
                              REQUIRED,
                              PROPERTY_FALSE);
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR\',
                              INSERT_ALLOWED,
                              PROPERTY_FALSE);
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR\',
                              UPDATEABLE,
                              PROPERTY_FALSE);
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM\',
                              REQUIRED,
                              PROPERTY_FALSE);
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM\',
                              INSERT_ALLOWED,
                              PROPERTY_FALSE);
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM\',
                              UPDATEABLE,
                              PROPERTY_FALSE);
          ELSIF NAME_IN(\'SYSTEM.CURRENT_ITEM\') = \'INVENTORY_ITEM\' AND
                NAME_IN(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM\') IS NULL THEN
            NEXT_ITEM; -- Move to the next item so the SYSTEM.CURRENT_ITEM isn\'t the Item Field Anymore(t
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR\',
                              REQUIRED,
                              PROPERTY_FALSE);
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR\',
                              INSERT_ALLOWED,
                              PROPERTY_FALSE);
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR\',
                              UPDATEABLE,
                              PROPERTY_FALSE);
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM\',
                              REQUIRED,
                              PROPERTY_FALSE);
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM\',
                              INSERT_ALLOWED,
                              PROPERTY_FALSE);
            SET_ITEM_PROPERTY(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM\',
                              UPDATEABLE,
                              PROPERTY_FALSE);
          END IF; -- NAME_IN - INVENTORY_ITEM_MIR - INVENTORY_ITEM
        END IF; -- SYSTEM.MODE
      END IF; -- WHEN-NEW-ITEM-INSTANCE
      -- WHEN-VALIDATE-RECORD Event
      IF EVENT_NAME = \'WHEN-VALIDATE-RECORD\' THEN
        IF NAME_IN(\'MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR\') IS NULL THEN
          DECLARE
            NEXTITEMNUMBER VARCHAR2(10);
          BEGIN
            --FND_MESSAGE.SET_STRING(\'Setting the value of INVENTORY_ITEM to the next Item_Number\');
            --FND_MESSAGE.SHOW;
            -- Call our custom plsql to get the next item number from a sequence
            NEXTITEMNUMBER := XXSSI.XXSSI_ITEM_MAST_NUM_GEN.GET_NEXT_ITEM_NUMBER;
            COPY(NEXTITEMNUMBER, \'MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR\');
            COPY(NEXTITEMNUMBER, \'MTL_SYSTEM_ITEMS.SEGMENT1\');
          END;
        END IF; -- NAME_IN - INVENTORY_ITEM_MIR
      END IF; -- WHEN-VALIDATE-RECORD
    END IF; -- BLOCK \'MTL_SYSTEM_ITEMS\'
  END IF; -- FORM \'Master Item\'
END;
/* End Master Item Form */
/*********************************************************************/



<!-- Baidu Button BEGIN -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26687597/viewspace-1207561/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle Becomes 2nd Largest Software Company
下一篇: Oracle Data Security - Data Masking(数据屏蔽)
请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2012-02-18

最新文章