terça-feira, 20 de outubro de 2009

Querys Uteis - PO (Oracle Purchasing) - Parte 1

No primeiro arquivo irei falar sobre querys uteis para o Modulo PO (Oracle Purchasing).

Essas consultas são utei para novos Relatorios ou Customiozações a serem feitas no modulo de PO.

1 - Requisições Canceladas:

SELECT,prh.REQUISITION_HEADER_ID,prh.PREPARER_ID,prh.SEGMENT1 "REQ NUM",trunc(prh.CREATION_DATE),prh.DESCRIPTION,prh.NOTE_TO_AUTHORIZERFROM,apps.Po_Requisition_headers_all prh,apps.po_action_history pahWHEREaction_code='CANCEL' andpah.object_type_code='REQUISITION' andpah.object_id=prh.REQUISITION_HEADER_ID

2 - Requisições internas que não possui uma ordem de venda interna.

SELECT,RQH.SEGMENT1,RQL.LINE_NUM,RQL.REQUISITION_HEADER_ID,RQL.REQUISITION_LINE_ID,RQL.ITEM_ID,RQL.UNIT_MEAS_LOOKUP_CODE,RQL.UNIT_PRICE,RQL.QUANTITY,RQL.QUANTITY_CANCELLED,RQL.QUANTITY_DELIVERED,RQL.CANCEL_FLAG,RQL.SOURCE_TYPE_CODE,RQL.SOURCE_ORGANIZATION_ID,RQL.DESTINATION_ORGANIZATION_ID,RQH.TRANSFERRED_TO_OE_FLAGFROM,PO_REQUISITION_LINES_ALL RQL,PO_REQUISITION_HEADERS_ALL RQHWHERERQL.REQUISITION_HEADER_ID = RQH.REQUISITION_HEADER_ID andRQL.SOURCE_TYPE_CODE = 'INVENTORY' andRQL.SOURCE_ORGANIZATION_ID is not null and not exists(select 'existing internal order'from OE_ORDER_LINES_ALL LIN where LIN.SOURCE_DOCUMENT_LINE_ID = RQL.REQUISITION_LINE_ID and LIN.SOURCE_DOCUMENT_TYPE_ID = 10)ORDER BY RQH.REQUISITION_HEADER_ID, RQL.LINE_NUM

3 - Requisição relacionada com Ordem de Compra

SELECT,r.segment1 "Req Num",p.segment1 "PO Num"from,po_headers_all p,po_distributions_all d,po_req_distributions_all rd,po_requisition_lines_all rl,po_requisition_headers_all rWHEREp.po_header_id = d.po_header_id andd.req_distribution_id = rd.distribution_id andrd.requisition_line_id = rl.requisition_line_id andrl.requisition_header_id = r.requisition_header_id

4 - Requisição de compra sem uma ordem de compra

SELECT,prh.segment1 "PR NUM",trunc(prh.creation_date) "CREATED ON",trunc(prl.creation_date) "Line Creation Date",prl.line_num "Seq #",msi.segment1 "Item Num",prl.item_description "Description",prl.quantity "Qty",trunc(prl.need_by_date) "Required By",ppf1.full_name "REQUESTOR",ppf2.agent_name "BUYER"FROM,po.po_requisition_headers_all prh,po.po_requisition_lines_all prl,apps.per_people_f ppf1,(select distinct agent_id,agent_name from apps.po_agents_v ) ppf2,po.po_req_distributions_all prd,inv.mtl_system_items_b msi,po.po_line_locations_all pll,po.po_lines_all pl,po.po_headers_all phWHEREprh.requisition_header_id = prl.requisition_header_id andprl.requisition_line_id = prd.requisition_line_id andppf1.person_id = prh.preparer_id andprh.creation_date between ppf1.effective_start_date and ppf1.effective_end_date andppf2.agent_id(+) = msi.buyer_id andmsi.inventory_item_id = prl.item_id andmsi.organization_id = prl.destination_organization_id andpll.line_location_id(+) = prl.line_location_id andpll.po_header_id = ph.po_header_id(+) andpll.pl_line_id = pl.po_line_id(+) andprh.authorization_status = 'APPROVED' andpll.line_location_id is NULL andprl.closed_code is NULL andnvl(prl.cancel_flag,'N') <> 'Y'ORDER BY 1,2

Douglas - MadMax

5 comentários:

  1. bom dia.
    vc tem algum modelo de querie que retorna o status de uma id de ap_invoices_all? por ex, preciso saber neste status as segunites condicoes:
    cancelled,needs revalidation,never validated,validated
    vc pode me dar uma ajuda? abraço

    ResponderExcluir
  2. Olá Loiser...

    Seria isto que vc procura ..
    select decode(x.MATCH_STATUS_FLAG, 'A', 'Approved') from ap.ap_invoice_distributions_all x where
    x.invoice_distribution_id = b.invoice_distribution_id) "Invoice Approved

    Abs..

    ResponderExcluir
  3. Vou postar o Rlacionamento de PO com AP veja se te ajuda porque todas as informações de Ordem de compra e o Pagamento pode ser trabalhado nesta query.

    ResponderExcluir
  4. Boa tarde!
    ok, resolvi usando o seguinte:
    decode(nvl(x.match_status_flag,'N'),'N','Never Validated','A','Approved','T','Needs Reapproval') "Invoice Approved?"

    Como preciso do status da ultima linha, usei max(x.creation_date).

    Outra dúvida que tenho, é como pegar o login de quem iniciou a aprovação em ap_invoices_all. Se vc puder ajudar, agradeço muito.

    abs

    ResponderExcluir
  5. Olá Loiser

    Para você pegar o aprovador segue abaixo:

    --> Pega o Aprovador
    Begin
    select max(papf.last_name)
    Into w_aprov
    from apps.po_action_history pah,
    apps.po_requisition_headers_all prha,
    apps.per_all_people_f papf
    where
    pah.object_id = v_solicitacao.requisition
    and pah.employee_id = papf.person_id
    and prha.requisition_header_id = pah.object_id
    and pah.last_update_date = w_dt_aprov;

    Abs...

    ResponderExcluir