• UOM物料单位转换(同类型才能转换)


    apps.mtl_units_of_measure   -- 物料單位表

    image

    apps.mtl_uom_conversions   -- 物料單位進率轉換表

    image

    CREATE OR REPLACE FUNCTION mtl_uom_conversion_func (p_from_uom IN VARCHAR2, -- 要被轉換的 UOM
                                                                                                   p_to_uom IN VARCHAR2,     -- 將要轉換成的 UOM
                                                                                                   p_unit IN number                      -- 要被轉換的數量
    )
       RETURN NUMBER
    AS
       fr_base_uom   VARCHAR2 (10);
       to_base_uom   VARCHAR2 (10);
       conv1         NUMBER;
       conv2         NUMBER;
       result        NUMBER;
    BEGIN

       -- 判斷 被轉的UOM 與 將要轉成的UOM 是否一樣,若一樣的話,將原值返回
       IF UPPER (TRIM (p_from_uom)) = UPPER (TRIM (p_to_uom)) THEN     

              RETURN p_unit;
       END IF;

       -- 判斷 被轉的UOM 是什麼類型
       SELECT UPPER (uom_code)
       INTO fr_base_uom
       FROM apps.mtl_units_of_measure
       WHERE base_uom_flag = 'Y'
             AND uom_class = (SELECT uom_class
                              FROM apps.mtl_units_of_measure
                              WHERE UPPER (uom_code) = UPPER (TRIM (p_from_uom)));

       -- 判斷 將要轉的UOM 是什麼類型
       SELECT UPPER (uom_code)
       INTO to_base_uom
       FROM apps.mtl_units_of_measure
       WHERE base_uom_flag = 'Y'
             AND uom_class = (SELECT uom_class
                              FROM apps.mtl_units_of_measure
                              WHERE UPPER (uom_code) = UPPER (TRIM (p_to_uom)));


      -- 判斷 將要被轉UOM  與 被轉的UOM 類型是否一致
      if (fr_base_uom <> to_base_uom) then
        return -1;  -- -1表示類型不同,而不能進行單位轉換
      end if;          

               

       -- 判斷 被轉的UOM  轉換率
       SELECT conversion_rate
       INTO conv1
       FROM apps.mtl_uom_conversions
       WHERE UPPER (uom_code) = UPPER (TRIM (p_from_uom));

       -- 判斷 將要轉成的UOM  轉換率
       SELECT conversion_rate
       INTO conv2
       FROM apps.mtl_uom_conversions
       WHERE UPPER (uom_code) = UPPER (TRIM (p_to_uom));

       -- 依據 兩個單位之間的進率進行公式轉換
       result   := (p_unit * conv1) / conv2;

       RETURN result;
    EXCEPTION
       WHEN OTHERS
       THEN
          RETURN -1;
    END;

  • 相关阅读:
    VS提示“项目文件" "已被重命名或已不在解决方案中”的解决办法 .
    微信公众平台教程和SDK收集
    “SQLServerAgent当前未运行”问题解决
    $(document).click() 在苹果手机上不能正常运行
    友盟iOS推送配置(从真机调试到推送)
    Ubuntu安装VMware Tools的方法
    TortoiseSVN客户端如何更改新的URL
    Windows Server 2008系统如何取消登录时要按Ctrl+Alt+Delete组合键
    Windows Server 2008 显示桌面图标
    用WinRAR进行安装包的制作
  • 原文地址:https://www.cnblogs.com/quanweiru/p/2741481.html
Copyright © 2020-2023  润新知