Oracle EBS:SQL 失效一攬子PO協議

Oracle EBS:SQL 失效一攬子PO協議

來源:http://www.dezai.cn/Blog/article.asp?id=351

1.查詢一攬子PO:

這裏要注意的是:不同的付款條件,幣種,稅率,都會可能產生一張新的一攬子PO協議


select pla.PO_LINE_ID,
       pla.PO_HEADER_ID,
       pla.ITEM_ID,
       msib.SEGMENT1 ITEM_CODE,
        pla.UNIT_PRICE,
       pla.ITEM_DESCRIPTION,
       pla.START_DATE,
       pla.EXPIRATION_DATE,
       pla.CANCEL_FLAG,
       pla.CLOSED_CODE,
       pha.PO_HEADER_ID,
       pha.VENDOR_ID,
       pha.VENDOR_SITE_ID,
       pha.TERMS_ID,
       pla.TAX_CODE_ID
  from PO_LINES_ALL pla, PO_HEADERS_ALL pha,MTL_SYSTEM_ITEMS_B msib
where nvl(pla.closed_code, 'OPEN') != 'FINALLY CLOSED'
   and nvl(pla.CANCEL_FLAG, 'N') = 'N'
   and pla.PO_HEADER_ID=pha.PO_HEADER_ID
   and nvl(pha.closed_code, 'OPEN') != 'FINALLY CLOSED'
   and nvl(pha.CANCEL_FLAG,'N')='N'
   and pha.ENABLED_FLAG='Y'
   and pha.TYPE_LOOKUP_CODE = 'BLANKET'
   and msib.INVENTORY_ITEM_ID=pla.ITEM_ID



2.通過查找對應的ID,失效對應的價格,我這裏好像少了付款條件跟幣種,稅率這幾個條件,


procedure SetPriceExpireDate(P_ITEM_CODE        IN VARCHAR2,
                               P_VENDOR_CODE      IN VARCHAR2,
                               P_VENDOR_SITE_CODE IN VARCHAR2,
                               P_ORG_ID           IN VARCHAR2,
                               v_retval           out number) is
  begin
    Update PO_LINES_ALL pla
       set pla.EXPIRATION_DATE = sysdate
     where pla.ITEM_ID = GetItemID(P_ITEM_CODE, P_ORG_ID)
       and pla.ORG_ID = P_ORG_ID
       and nvl(pla.cancel_flag, 'N') = 'N'
       and nvl(closed_code, 'OPEN') != 'FINALLY CLOSED'
       and exists
     (select *
              from PO_HEADERS_ALL pha
             where pha.PO_HEADER_ID = pla.PO_HEADER_ID
               and pha.TYPE_LOOKUP_CODE = 'BLANKET'
               and pha.VENDOR_ID = GetVendorID(P_VENDOR_CODE)
               and pha.VENDOR_SITE_ID =
                   GetVendorSiteID(P_VENDOR_SITE_CODE, P_ORG_ID));
  
    v_retval := 1;
    COMMIT;
  
  EXCEPTION
    WHEN OTHERS THEN
      v_retval := 0;
    
  end SetPriceExpireDate;



3.輔助的幾個函數


Function GetVendorID(P_Vendor_Code IN VARCHAR2) RETURN NUMBER as
    v_vendor_id number;
  
  begin
  
    select pv.VENDOR_ID
      into v_vendor_id
      from po_vendors pv
    
     where pv.SEGMENT1 = P_Vendor_Code;
  
    return v_vendor_id;
  
  end;

  Function GetVendorSiteID(P_Vendor_SITE_CODE IN VARCHAR2,
                           P_ORG_ID           IN NUMBER) RETURN NUMBER as
    v_vendor_site_id number;
  begin
    select pvsa.VENDOR_SITE_ID
      into v_vendor_site_id
      from PO_VENDOR_SITES_ALL pvsa
     where pvsa.VENDOR_SITE_CODE = P_Vendor_SITE_CODE
       and pvsa.ORG_ID = P_ORG_ID;
  
    return v_vendor_site_id;
  
  end;

  FUNCTION GetItemID(P_ITEM_CODE IN VARCHAR2, P_ORG_ID IN NUMBER)
    RETURN NUMBER as
  
    v_item_id number;
  
  begin
    select msib.INVENTORY_ITEM_ID
      into v_item_id
      from MTL_SYSTEM_ITEMS_B msib
    
     where msib.SEGMENT1 = P_ITEM_CODE
       AND msib.ORGANIZATION_ID = P_ORG_ID;
  
    return v_item_id;
  
  end;

http://www.dezai.cn/Blog/article.asp?id=351

我這裏只對料件裏的到期日進行了控制處理。

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