获取 Transaction Source

报表上要获取物料事务处理表上的的Source(来源)字段,非数据库项。

 

/* ==================================================
    Procedure Name:
        get_txn_source
    Description:
        This procedure is used to calculate transaction
        source name of one specified material transaction.
    Arguments
        p_transaction_id  IN  *material transaction id
        x_txn_source      OUT *transaction source name                  
    History:
.00  2012-03-01  ech0-silence  Creation
  ==================================================
*/
   procedure get_txn_source(
              p_transaction_id  in  number
            , x_txn_source     out nocopy  varchar2
            )
   is
    PO                   CONSTANT  NUMBER  : =  1;
    Sales_Order          CONSTANT  NUMBER  : =  2;
    Account              CONSTANT  NUMBER  : =  3;
    Move_Order           CONSTANT  NUMBER  : =  4;
    WIP_Job_or_Schedule  CONSTANT  NUMBER  : =  5;
    Account_Alias        CONSTANT  NUMBER  : =  6;
    Requisition          CONSTANT  NUMBER  : =  7;
    Internal_Order       CONSTANT  NUMBER  : =  8;
    Cycle_count          CONSTANT  NUMBER  : =  9;
    Physical_inventory   CONSTANT  NUMBER  : =  10;
    Cost_update          CONSTANT  NUMBER  : =  11;
    RMA                  CONSTANT  NUMBER  : =  12;
    Inventory            CONSTANT  NUMBER  : =  13;
     -- Layer_cost_update    CONSTANT NUMBER  := 15;
    PrjContracts         CONSTANT  NUMBER  : =  16;
    
    v_process_phase       varchar2( 30);
    n_organization_id     number;
    n_txn_source_type_id  number;
    n_txn_source_id       number;
    v_txn_source_name    MTL_MATERIAL_TRANSACTIONS.TRANSACTION_SOURCE_NAME %TYPE;
   begin
    v_process_phase : =  ' Fetch txn infomation ';
     --  get transaction information
     SELECT MMT.ORGANIZATION_ID,
           MMT.TRANSACTION_SOURCE_TYPE_ID,
           MMT.TRANSACTION_SOURCE_ID,
           MMT.TRANSACTION_SOURCE_NAME
       INTO n_organization_id,
           n_txn_source_type_id,
           n_txn_source_id,
           v_txn_source_name
       FROM MTL_MATERIAL_TRANSACTIONS MMT
      WHERE MMT.TRANSACTION_ID  = p_transaction_id
    ;
  
     if n_txn_source_type_id  = Cost_update  then
      v_process_phase : =  ' Cost Update ';
       SELECT DESCRIPTION  INTO x_txn_source
         FROM CST_COST_UPDATES
        WHERE COST_UPDATE_ID  = n_txn_source_id
      ;
    elsif n_txn_source_type_id  = Cycle_count  then
      v_process_phase : =  ' Cycle Count ';
       SELECT CYCLE_COUNT_HEADER_NAME
         INTO x_txn_source
         FROM MTL_CYCLE_COUNT_HEADERS
        WHERE CYCLE_COUNT_HEADER_ID  = n_txn_source_id
          AND organization_id  = n_organization_id
      ;
    elsif (n_txn_source_type_id  = Inventory  or n_txn_source_type_id  >=  100then
      v_process_phase : =  ' Inventory ';
      x_txn_source : = v_txn_source_name;
    elsif  n_txn_source_type_id  = Physical_inventory  then
      v_process_phase : =  ' Physical Inventory ';
       SELECT PHYSICAL_INVENTORY_NAME 
         INTO x_txn_source
         FROM MTL_PHYSICAL_INVENTORIES
        WHERE PHYSICAL_INVENTORY_ID  = n_txn_source_id
          AND organization_id  = n_organization_id
      ;
    elsif n_txn_source_type_id  = PO  then
      v_process_phase : =  ' PO ';
       select nvl(CLM_DOCUMENT_NUMBER, POH.SEGMENT1)
         INTO x_txn_source
         from po_headers_all poh
        where poh.po_header_id  = n_txn_source_id
      ;
    elsif n_txn_source_type_id  = PrjContracts  then
      v_process_phase : =  ' PrjContracts ';
       SELECT contract_number 
         INTO x_txn_source
         FROM okc_k_headers_b
        WHERE id  = n_txn_source_id
      ;
    elsif n_txn_source_type_id  = Requisition  then
      v_process_phase : =  ' Requisition ';
       SELECT SEGMENT1 
         INTO x_txn_source
         FROM PO_REQUISITION_HEADERS_ALL
        WHERE REQUISITION_HEADER_ID  = n_txn_source_id
      ;
    elsif n_txn_source_type_id  = WIP_Job_or_Schedule  then
      v_process_phase : =  ' WIP Job or Schedule ';
       SELECT WIP_ENTITY_NAME 
         INTO x_txn_source 
         FROM WIP_ENTITIES
        WHERE WIP_ENTITY_ID  = n_txn_source_id
          AND organization_id  = n_organization_id
      ;
    elsif n_txn_source_type_id  = Move_Order  then
      v_process_phase : =  ' Move Order ';
       SELECT REQUEST_NUMBER 
         INTO x_txn_source 
         FROM MTL_TXN_REQUEST_HEADERS
        WHERE HEADER_ID  = n_txn_source_id
          AND organization_id  = n_organization_id
      ;
    elsif ( (n_txn_source_type_id  = Sales_Order)  OR 
            (n_txn_source_type_id  = Internal_Order)  OR 
            (n_txn_source_type_id  = RMA) )  then
      v_process_phase : =  ' Sales Order ';
       select concatenated_segments
         into x_txn_source
         from MTL_SALES_ORDERS_KFV
        where SALES_ORDER_ID  = n_txn_source_id
      ;
    elsif n_txn_source_type_id  = Account_Alias  then
      v_process_phase : =  ' Account Alias ';
       select concatenated_segments
         into x_txn_source
         from MTL_GENERIC_DISPOSITIONS_KFV
        where disposition_id  = n_txn_source_id
      ;
    elsif n_txn_source_type_id  = Account  then
      v_process_phase : =  ' Account ';
       select concatenated_segments
         into x_txn_source
         from GL_CODE_COMBINATIONS_KFV
        where CODE_COMBINATION_ID  = n_txn_source_id
      ;         
     else
       --  We do not need display txn source for other types.
       --  including Layer_cost_update
      v_process_phase : =  ' Others ';
      x_txn_source : =  null;
     end  if;
  
  EXCEPTION
     WHEN NO_DATA_FOUND  OR TOO_MANY_ROWS  THEN
       if g_debug_mode  =  ' Y '  then
        dbms_output.put_line( ' GET_TXN_SOURCE:  '  || SQLERRM);
        dbms_output.put_line( ' Process phase :  '  || v_process_phase);
       end  if;
      x_txn_source : =  null;
   end;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值