• 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;

  • 相关阅读:
    2012年8月20日 我单身了!
    IE8与VS2008 添加变量 脚本错误的解决方案
    感染导入表方法附源码(转载)
    获取远程网卡MAC地址(VC++)
    [转]VC 中 TreeView 全面解析
    利用INF安装服务启动
    IOCP编程之基本原理
    LIMIT 用法
    SQL Server 触发器的删除操作
    CLRviaCsharp学习笔记
  • 原文地址:https://www.cnblogs.com/quanweiru/p/2741481.html
Copyright © 2020-2023  润新知