DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSTPLPOP

Source


1 PACKAGE BODY CSTPLPOP AS
2 /* $Header: CSTLPOPB.pls 120.2 2010/11/29 05:07:44 pbasrani ship $ */
3   FUNCTION po_price(l_org_id NUMBER, l_item_id NUMBER) RETURN NUMBER IS
4     po_price_tmp NUMBER ;
5     max_transaction_date_tmp DATE;
6     transaction_id_tmp       NUMBER;
7 
8     BEGIN
9       --Added hint for performance Bug # 6819625
10       --Removed INDEX_JOIN hint and added U2 index in Exists for bug 10300541
11       SELECT /*+ INDEX (mmt3 MTL_MATERIAL_TRANSACTIONS_N1) */
12       Max(Trunc(transaction_date)) transaction_date
13       INTO
14       max_transaction_date_tmp
15       FROM
16       mtl_material_transactions mmt3
17       WHERE
18       mmt3.organization_id = l_org_id AND
19       mmt3.inventory_item_id = l_item_id AND
20       EXISTS(SELECT /*+ INDEX(mmt MTL_MATERIAL_TRANSACTIONS_U2)*/1 FROM Mtl_material_transactions mmt WHERE
21       mmt.transaction_source_type_id = 1 AND
22       --Added for Bug # 6819625 for MTL_MATERIAL_TRANSACTIONS_N15 index usage
23       mmt.transaction_action_id = 27 AND
24       mmt.transaction_type_id = 18
25       AND mmt.transaction_id=mmt3.transaction_id);
26 
27 
28       if (max_transaction_date_tmp is null) then
29 	return 0;
30       end if;
31 
32       --Added hint for performance Bug # 6819625
33       SELECT /*+ INDEX_JOIN (mmt2 MTL_MATERIAL_TRANSACTIONS_N1 MTL_MATERIAL_TRANSACTIONS_N15) */
34       To_number(Substr(MAX(To_char(mmt2.creation_date,
35       'YYYY-MM-DD-HH24-MI-SS:') ||
36       To_char(mmt2.transaction_id)), 21))
37       INTO
38       transaction_id_tmp
39       FROM
40       mtl_material_transactions mmt2
41       WHERE
42       mmt2.organization_id = l_org_id AND
43       mmt2.inventory_item_id = l_item_id AND
44       mmt2.transaction_type_id = 18 AND
45       --Added for Bug # 6819625 for MTL_MATERIAL_TRANSACTIONS_N15 index usage
46       mmt2.transaction_action_id = 27 AND
47       mmt2.transaction_source_type_id = 1 AND
48       mmt2.transaction_date BETWEEN max_transaction_date_tmp
49       AND max_transaction_date_tmp + 1;
50 
51       SELECT
52       mmt.transaction_cost
53       INTO
54       po_price_tmp
55       FROM
56       mtl_material_transactions mmt
57       WHERE
58       mmt.transaction_id = transaction_id_tmp;
59 
60       RETURN po_price_tmp;
61     END;
62 END CSTPLPOP;
63