[Home] [Help]
PACKAGE BODY: APPS.RCV_PROJECT_PVT
Source
1 PACKAGE BODY RCV_Project_PVT AS
2 /* $Header: RCVVPRJB.pls 115.3 2004/05/11 14:53:16 usethura noship $ */
3
4 -- Read the profile option that enables/disables the debug log
5 g_fnd_debug CONSTANT VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
6 g_debug_stmt CONSTANT BOOLEAN := PO_DEBUG.is_debug_stmt_on;
7 g_module_prefix CONSTANT VARCHAR2(50) := 'po.plsql.' || g_pkg_name || '.';
8
9 /**
10 * Private Procedure: set_project_task_numbers
11 * Modifies: API message list
12 * Effects: Retrieves task and project numbers. Appends to API
13 * message list on error.
14 */
15 PROCEDURE set_project_task_numbers
16 (p_api_version IN NUMBER,
17 p_init_msg_list IN VARCHAR2,
18 p_transaction_id IN NUMBER)
19 IS
20
21 l_api_name CONSTANT VARCHAR2(30) := 'set_project_task_numbers';
22 l_api_version CONSTANT NUMBER := 1.0;
23 l_line_location_id NUMBER;
24 l_distribution_id NUMBER;
25 l_project_id NUMBER;
26 l_task_id NUMBER;
27
28 BEGIN
29 -- Start standard API initialization
30 IF FND_API.to_boolean(p_init_msg_list) THEN
31 FND_MSG_PUB.initialize;
32 END IF;
33
34 IF NOT FND_API.compatible_api_call(l_api_version, p_api_version,
35 l_api_name, g_pkg_name)
36 THEN
37 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
38 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
39 '.invoked', 'Api version Incompatible');
40 END IF;
41 g_transaction_id := null;
42 g_project_number := null;
43 g_task_number := null;
44 END IF;
45 -- End standard API initialization
46
47 IF (g_fnd_debug = 'Y') THEN
48 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
49 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
50 '.invoked', 'Transaction Id: ' || NVL(TO_CHAR(p_transaction_id),'null'));
51 END IF;
52 END IF;
53
54 g_transaction_id := p_transaction_id;
55
56 IF g_transaction_id IS NOT NULL THEN
57 BEGIN
58
59 SELECT
60 PO_LINE_LOCATION_ID,
61 PO_DISTRIBUTION_ID
62 INTO
63 l_line_location_id,
64 l_distribution_id
65 FROM
66 RCV_TRANSACTIONS
67 WHERE
68 TRANSACTION_ID = p_transaction_id;
69
70 EXCEPTION
71 WHEN NO_DATA_FOUND THEN
72 IF (g_fnd_debug = 'Y') THEN
73 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
74 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
75 '.invoked', 'Invalid Transaction Id.');
76 END IF;
77 END IF;
78 g_project_number := null;
79 g_task_number := null;
80 g_transaction_id := null;
81 return;
82 END;
83
84 IF l_distribution_id IS NOT NULL THEN
85 BEGIN
86 BEGIN
87 IF (g_fnd_debug = 'Y') THEN
88 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
89 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
90 '.invoked', 'Distribution Id:' || l_distribution_id);
91 END IF;
92 END IF;
93
94 SELECT
95 pde.SEGMENT1
96 INTO
97 g_project_number
98 FROM
99 PO_DISTRIBUTIONS_ALL pd,
100 PA_PROJECTS_ALL pde
101 WHERE
102 pd.PO_DISTRIBUTION_ID = l_distribution_id
103 AND pde.PROJECT_ID = pd.PROJECT_ID;
104
105 EXCEPTION
106 WHEN NO_DATA_FOUND THEN
107 g_project_number := null;
108 END;
109 BEGIN
110 SELECT
111 pte.TASK_NUMBER
112 INTO
113 g_task_number
114 FROM
115 PO_DISTRIBUTIONS_ALL pd,
116 PA_TASKS pte
117 WHERE
118 pd.PO_DISTRIBUTION_ID = l_distribution_id
119 AND pte.TASK_ID = pd.TASK_ID;
120
121 EXCEPTION
122 WHEN NO_DATA_FOUND THEN
123 g_task_number := null;
124 END;
125 END;
126 ELSIF l_line_location_id IS NOT NULL THEN
127 BEGIN
128 BEGIN
129 IF (g_fnd_debug = 'Y') THEN
130 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
131 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
132 '.invoked', 'Line Location Id:' || l_line_location_id);
133 END IF;
134 END IF;
135
136 SELECT
137 DISTINCT(pde.SEGMENT1)
138 INTO
139 g_project_number
140 FROM
141 PO_DISTRIBUTIONS_ALL pd,
142 PA_PROJECTS_ALL pde
143 WHERE
144 pd.LINE_LOCATION_ID = l_line_location_id
145 AND pde.PROJECT_ID = pd.PROJECT_ID;
146
147 EXCEPTION
148 WHEN TOO_MANY_ROWS THEN
149 FND_MESSAGE.set_name('PO', 'PO_MULTI_DEST_INFO');
150 g_project_number := FND_MESSAGE.get;
151 WHEN NO_DATA_FOUND THEN
152 g_project_number := null;
153 END;
154 BEGIN
155 SELECT
156 DISTINCT(pte.TASK_NUMBER)
157 INTO
158 g_task_number
159 FROM
160 PO_DISTRIBUTIONS_ALL pd,
161 PA_TASKS pte
162 WHERE
163 pd.LINE_LOCATION_ID = l_line_location_id
164 AND pte.TASK_ID = pd.TASK_ID;
165
166 EXCEPTION
167 WHEN TOO_MANY_ROWS THEN
168 FND_MESSAGE.set_name('PO', 'PO_MULTI_DEST_INFO');
169 g_task_number := FND_MESSAGE.get;
170 WHEN NO_DATA_FOUND THEN
171 g_task_number := null;
172 END;
173 END;
174 ELSE
175 /* Certain cases like unordered receipts will not have both
176 line_location_id and distributions_id */
177 g_project_number := null;
178 g_task_number := null;
179 g_transaction_id := p_transaction_id;
180 END IF;
181 ELSE
182 IF (g_fnd_debug = 'Y') THEN
183 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
184 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
185 '.invoked', 'ERROR : transaction_id is NULL');
186 END IF;
187 END IF;
188 g_project_number := null;
189 g_task_number := null;
190 g_transaction_id := p_transaction_id;
191 END IF;
192 EXCEPTION
193 WHEN OTHERS THEN
194 g_project_number := null;
195 g_task_number := null;
196 g_transaction_id := p_transaction_id;
197 END set_project_task_numbers;
198 END RCV_Project_PVT;