INV:物料現有量,可保留量,可處理提取方法

      在INV模塊,用戶查看物料數量最多的三個欄位現用量可保留量可處理量。下面的procedure是漢得技術顧問在公司上線時候提供的。

CREATE OR REPLACE PROCEDURE get_inv_quantity(p_organization_id    IN NUMBER
                           , p_inventory_item_id  IN NUMBER
                           , p_lot_number         IN VARCHAR2
                           , p_subinventory_code  IN VARCHAR2
                           , p_locator_id         IN NUMBER
                           , x_onhand_qty         OUT NUMBER
                           , x_reservable_qty     OUT NUMBER
                           , x_transactable_qty   OUT NUMBER) IS

    l_return_status VARCHAR2(1) ;
    l_msg_count NUMBER;
    l_msg_data VARCHAR2(2000);
    l_is_revision_control BOOLEAN := TRUE ;
    l_is_lot_control      BOOLEAN := TRUE ;
    l_is_serial_control   BOOLEAN := FALSE ;
    p_revision            VARCHAR2(100);
    l_qoh                 NUMBER;
    l_rqoh                NUMBER;
    l_qr                  NUMBER;
    l_qs                  NUMBER;
    l_att                 NUMBER;
    l_atr                 NUMBER;
    p_lpn_id              NUMBER;
  BEGIN
    IF p_lot_number IS NULL THEN
      l_is_lot_control := FALSE ;
    END IF;
    IF p_locator_id IS NULL THEN
      l_is_lot_control := FALSE ;
    END IF;
    inv_quantity_tree_pub.query_quantities
      (  p_api_version_number    =>   1.0
       , p_init_msg_lst          =>   'F'
       , x_return_status         =>   l_return_status
       , x_msg_count             =>   l_msg_count
       , x_msg_data              =>   l_msg_data
       , p_organization_id       =>   p_organization_id
       , p_inventory_item_id     =>   p_inventory_item_id
       , p_tree_mode             =>   1
       , p_is_revision_control   =>   FALSE -- No Revision Control
       , p_is_lot_control        =>   l_is_lot_control
       , p_is_serial_control     =>   l_is_serial_control
       , p_demand_source_type_id =>   2
       , p_revision              =>   NULL
       , p_lot_number            =>   p_lot_number
       , p_lot_expiration_date   =>   sysdate
       , p_subinventory_code     =>   p_subinventory_code
       , p_locator_id            =>   p_locator_id
       , p_onhand_source         =>   3
       , x_qoh                   =>   l_qoh
       , x_rqoh                  =>   l_rqoh
       , x_qr                    =>   l_qr
       , x_qs                    =>   l_qs
       , x_att                   =>   l_att
       , x_atr                   =>   l_atr
       , p_lpn_id                =>   NULL);

       IF (l_return_status = 'S') THEN
          x_onhand_qty := l_qoh;
          x_reservable_qty := l_atr;
        ELSE
          l_return_status :='F';
          RETURN ;
        END IF ;

    inv_quantity_tree_pub.query_quantities
        ( p_api_version_number    =>   1.0
         , p_init_msg_lst          =>   'F'
         , x_return_status         =>   l_return_status
         , x_msg_count             =>   l_msg_count
         , x_msg_data              =>   l_msg_data
         , p_organization_id       =>   p_organization_id
         , p_inventory_item_id     =>   p_inventory_item_id
         , p_tree_mode             =>   2
         , p_is_revision_control   =>   FALSE -- No Revision Control
         , p_is_lot_control        =>   l_is_lot_control
         , p_is_serial_control     =>   l_is_serial_control
         , p_demand_source_type_id =>   2
         , p_revision              =>   NULL
         , p_lot_number            =>   p_lot_number
         , p_lot_expiration_date   =>   sysdate
         , p_subinventory_code     =>   p_subinventory_code
         , p_locator_id            =>   p_locator_id
         , p_onhand_source         =>   3
         , x_qoh                   =>   l_qoh
         , x_rqoh                  =>   l_rqoh
         , x_qr                    =>   l_qr
         , x_qs                    =>   l_qs
         , x_att                   =>   l_att
         , x_atr                   =>   l_atr
         , p_lpn_id                =>   NULL);
    IF (l_return_status = 'S') THEN
      x_onhand_qty := l_qoh;
      x_transactable_qty := l_att;
    ELSE
      l_return_status :='F';
      RETURN;
    END IF ;
  END get_inv_quantity ;
 
create or replace function get_reservable_qty(p_organization_id number,p_inventory_item_id number,p_sub varchar2) return number is
      l_onhand_qty       number;
      l_reservable_qty number;
      l_transactable_qty number;
begin
   --p_sub可以爲空,爲空時,所有庫別的可保留數量
       get_inv_quantity(p_organization_id   => p_organization_id,
            p_inventory_item_id => p_inventory_item_id,
            p_lot_number        => null,
            p_subinventory_code => p_sub,
            p_locator_id        => null,
            x_onhand_qty        => l_onhand_qty,
            x_reservable_qty    => l_reservable_qty,
            x_transactable_qty  => l_transactable_qty);
 return l_reservable_qty;
end get_reservable_qty;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章