1 PACKAGE BODY AHL_FMP_MR_ROUTE_PVT AS
2 /* $Header: AHLVMRUB.pls 120.2.12020000.2 2012/12/13 05:08:56 shnatu ship $ */
3
4 G_PKG_NAME VARCHAR2(30) :='AHL_FMP_MR_ROUTE_PVT';
5 G_APPLN_USAGE VARCHAR2(30) :=FND_PROFILE.VALUE('AHL_APPLN_USAGE');
6 G_DEBUG VARCHAR2(1) :=AHL_DEBUG_PUB.is_log_enabled;
7 PROCEDURE DEFAULT_MISSING_ATTRIBS
8 (p_x_mr_route_tbl IN OUT NOCOPY AHL_FMP_MR_ROUTE_PVT.MR_ROUTE_tbl)
9 AS
10 Cursor CurGetRouteDet(C_MR_ROUTE_ID IN NUMBER)
11 is
12 SELECT
13 MR_ROUTE_ID,
14 OBJECT_VERSION_NUMBER,
15 MR_HEADER_ID,
16 ROUTE_ID,
17 ROUTE_NUMBER,
18 ROUTE_REVISION_NUMBER,
19 ROUTE_DESCRIPTION,
20 OPERATOR,
21 PRODUCT_TYPE,
22 STAGE,
23 --MANESING::VWP Enhancements, 21-Jan-2011, added stage type code column
24 STAGE_TYPE_CODE,
25 START_DATE_ACTIVE,
26 END_DATE_ACTIVE,
27 ATTRIBUTE_CATEGORY,
28 ATTRIBUTE1,
29 ATTRIBUTE2,
30 ATTRIBUTE3,
31 ATTRIBUTE4,
32 ATTRIBUTE5,
33 ATTRIBUTE6,
34 ATTRIBUTE7,
35 ATTRIBUTE8,
36 ATTRIBUTE9,
37 ATTRIBUTE10,
38 ATTRIBUTE11,
39 ATTRIBUTE12,
40 ATTRIBUTE13,
41 ATTRIBUTE14,
42 ATTRIBUTE15
43 FROM AHL_MR_ROUTES_V
44 WHERE MR_ROUTE_ID=C_MR_ROUTE_ID;
45 l_mr_route_rec CurGetRouteDet%rowtype;
46 BEGIN
47 IF P_X_MR_ROUTE_TBL.COUNT >0
48 THEN
49
50 FOR i IN P_X_MR_ROUTE_TBL.FIRST.. P_X_MR_ROUTE_TBL.LAST
51 LOOP
52
53 IF P_X_MR_ROUTE_TBL(I).DML_OPERATION<>'D'
54 THEN
55 open CurGetRouteDet(P_X_MR_ROUTE_TBL(I).MR_ROUTE_ID);
56 fetch CurGetRouteDet into l_mr_route_Rec;
57 close CurGetRouteDet;
58
59 IF P_X_MR_ROUTE_TBL(I).MR_ROUTE_ID= FND_API.G_MISS_NUM
60 THEN
61 P_X_MR_ROUTE_TBL(I).MR_ROUTE_ID:=NULL;
62 ELSIF P_X_MR_ROUTE_TBL(I).MR_ROUTE_ID IS NULL
63 THEN
64 P_X_MR_ROUTE_TBL(I).MR_ROUTE_ID:=l_mr_route_rec.MR_ROUTE_ID;
65 END IF;
66 IF P_X_MR_ROUTE_TBL(I).OBJECT_VERSION_NUMBER= FND_API.G_MISS_NUM
67 THEN
68 P_X_MR_ROUTE_TBL(I).OBJECT_VERSION_NUMBER:=NULL;
69 ELSIF P_X_MR_ROUTE_TBL(I).OBJECT_VERSION_NUMBER IS NULL
70 THEN
71 P_X_MR_ROUTE_TBL(I).OBJECT_VERSION_NUMBER:=l_mr_route_rec.OBJECT_VERSION_NUMBER;
72 END IF;
73 IF P_X_MR_ROUTE_TBL(I).MR_HEADER_ID= FND_API.G_MISS_NUM
74 THEN
75 P_X_MR_ROUTE_TBL(I).MR_HEADER_ID:=NULL;
76 ELSIF P_X_MR_ROUTE_TBL(I).MR_HEADER_ID IS NULL
77 THEN
78 P_X_MR_ROUTE_TBL(I).MR_HEADER_ID:=l_mr_route_rec.MR_HEADER_ID;
79 END IF;
80 IF P_X_MR_ROUTE_TBL(I).ROUTE_ID= FND_API.G_MISS_NUM
81 THEN
82 P_X_MR_ROUTE_TBL(I).ROUTE_ID:=NULL;
83 ELSIF P_X_MR_ROUTE_TBL(I).ROUTE_ID IS NULL
84 THEN
85 P_X_MR_ROUTE_TBL(I).ROUTE_ID:=l_mr_route_rec.ROUTE_ID;
86 END IF;
87 IF P_X_MR_ROUTE_TBL(I).ROUTE_NUMBER= FND_API.G_MISS_CHAR
88 THEN
89 P_X_MR_ROUTE_TBL(I).ROUTE_NUMBER:=NULL;
90 ELSIF P_X_MR_ROUTE_TBL(I).ROUTE_NUMBER IS NULL
91 THEN
92 P_X_MR_ROUTE_TBL(I).ROUTE_NUMBER:=l_mr_route_rec.ROUTE_NUMBER;
93 END IF;
94 /*
95 IF P_X_MR_ROUTE_TBL(I).ROUTE_REVISION_NUMBER= FND_API.G_MISS_NUM
96 THEN
97 P_X_MR_ROUTE_TBL(I).ROUTE_REVISION_NUMBER:=NULL;
98 ELSIF P_X_MR_ROUTE_TBL(I).ROUTE_REVISION_NUMBER IS NULL
99 THEN
100 P_X_MR_ROUTE_TBL(I).ROUTE_REVISION_NUMBER:=l_mr_route_rec.ROUTE_REVISION_NUMBER;
101 END IF;
102 */
103 IF P_X_MR_ROUTE_TBL(I).ROUTE_DESCRIPTION= FND_API.G_MISS_CHAR
104 THEN
105 P_X_MR_ROUTE_TBL(I).ROUTE_DESCRIPTION:=NULL;
106 ELSIF P_X_MR_ROUTE_TBL(I).ROUTE_DESCRIPTION IS NULL
107 THEN
108 P_X_MR_ROUTE_TBL(I).ROUTE_DESCRIPTION:=l_mr_route_rec.ROUTE_DESCRIPTION;
109 END IF;
110 IF P_X_MR_ROUTE_TBL(I).PRODUCT_TYPE= FND_API.G_MISS_CHAR
111 THEN
112 P_X_MR_ROUTE_TBL(I).PRODUCT_TYPE:=NULL;
113 ELSIF P_X_MR_ROUTE_TBL(I).PRODUCT_TYPE IS NULL
114 THEN
115 P_X_MR_ROUTE_TBL(I).PRODUCT_TYPE:=l_mr_route_rec.PRODUCT_TYPE;
116 END IF;
117 IF P_X_MR_ROUTE_TBL(I).OPERATOR= FND_API.G_MISS_CHAR
118 THEN
119 P_X_MR_ROUTE_TBL(I).OPERATOR:=NULL;
120 ELSIF P_X_MR_ROUTE_TBL(I).OPERATOR IS NULL
121 THEN
122 P_X_MR_ROUTE_TBL(I).OPERATOR:=l_mr_route_rec.OPERATOR;
123 END IF;
124
125 --MANESING::VWP Enhancements, 21-Jan-2011, included changes for stage type code column
126 IF P_X_MR_ROUTE_TBL(I).STAGE_TYPE_CODE = FND_API.G_MISS_CHAR THEN
127 P_X_MR_ROUTE_TBL(I).STAGE_TYPE_CODE := NULL;
128 ELSIF P_X_MR_ROUTE_TBL(I).STAGE_TYPE_CODE IS NULL THEN
129 P_X_MR_ROUTE_TBL(I).STAGE_TYPE_CODE := l_mr_route_rec.STAGE_TYPE_CODE;
130 END IF;
131
132 /* MANESING::VWP Enhancements, 26-May-2011,
133 * Going forward, functionality of Stage will be taken care by Stage Type.
134 * Stage column exists just for backward compatibility and can no longer be updated.
135 * So if Stage Type is not null, then Stage must be blanked out.
136 */
137 IF P_X_MR_ROUTE_TBL(I).STAGE_TYPE_CODE IS NOT NULL THEN
138 P_X_MR_ROUTE_TBL(I).STAGE := NULL;
139
140 ELSE
141 /*IF P_X_MR_ROUTE_TBL(I).STAGE= FND_API.G_MISS_NUM THEN
142 P_X_MR_ROUTE_TBL(I).STAGE:=NULL; -- code commented since Stage cannot be updated
143 */
144 IF P_X_MR_ROUTE_TBL(I).STAGE IS NULL THEN
145 P_X_MR_ROUTE_TBL(I).STAGE := l_mr_route_rec.STAGE;
146 END IF;
147 END IF;
148
149 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE_CATEGORY= FND_API.G_MISS_CHAR
150 THEN
151 P_X_MR_ROUTE_TBL(I).ATTRIBUTE_CATEGORY:=NULL;
152 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE_CATEGORY IS NULL
153 THEN
154 P_X_MR_ROUTE_TBL(I).ATTRIBUTE_CATEGORY:=l_mr_route_rec.ATTRIBUTE_CATEGORY;
155 END IF;
156 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE1= FND_API.G_MISS_CHAR
157 THEN
158 P_X_MR_ROUTE_TBL(I).ATTRIBUTE1:=NULL;
159 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE1 IS NULL
160 THEN
161 P_X_MR_ROUTE_TBL(I).ATTRIBUTE1:=l_mr_route_rec.ATTRIBUTE1;
162 END IF;
163 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE2= FND_API.G_MISS_CHAR
164 THEN
165 P_X_MR_ROUTE_TBL(I).ATTRIBUTE2:=NULL;
166 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE2 IS NULL
167 THEN
168 P_X_MR_ROUTE_TBL(I).ATTRIBUTE2:=l_mr_route_rec.ATTRIBUTE2;
169 END IF;
170 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE3= FND_API.G_MISS_CHAR
171 THEN
172 P_X_MR_ROUTE_TBL(I).ATTRIBUTE3:=NULL;
173 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE3 IS NULL
174 THEN
175 P_X_MR_ROUTE_TBL(I).ATTRIBUTE3:=l_mr_route_rec.ATTRIBUTE3;
176 END IF;
177 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE4= FND_API.G_MISS_CHAR
178 THEN
179 P_X_MR_ROUTE_TBL(I).ATTRIBUTE4:=NULL;
180 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE4 IS NULL
181 THEN
182 P_X_MR_ROUTE_TBL(I).ATTRIBUTE4:=l_mr_route_rec.ATTRIBUTE4;
183 END IF;
184 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE5= FND_API.G_MISS_CHAR
185 THEN
186 P_X_MR_ROUTE_TBL(I).ATTRIBUTE5:=NULL;
187 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE5 IS NULL
188 THEN
189 P_X_MR_ROUTE_TBL(I).ATTRIBUTE5:=l_mr_route_rec.ATTRIBUTE5;
190 END IF;
191 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE6= FND_API.G_MISS_CHAR
192 THEN
193 P_X_MR_ROUTE_TBL(I).ATTRIBUTE6:=NULL;
194 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE6 IS NULL
195 THEN
196 P_X_MR_ROUTE_TBL(I).ATTRIBUTE6:=l_mr_route_rec.ATTRIBUTE6;
197 END IF;
198 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE7= FND_API.G_MISS_CHAR
199 THEN
200 P_X_MR_ROUTE_TBL(I).ATTRIBUTE7:=NULL;
201 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE7 IS NULL
202 THEN
203 P_X_MR_ROUTE_TBL(I).ATTRIBUTE7:=l_mr_route_rec.ATTRIBUTE7;
204 END IF;
205 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE8= FND_API.G_MISS_CHAR
206 THEN
207 P_X_MR_ROUTE_TBL(I).ATTRIBUTE8:=NULL;
208 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE8 IS NULL
209 THEN
210 P_X_MR_ROUTE_TBL(I).ATTRIBUTE8:=l_mr_route_rec.ATTRIBUTE8;
211 END IF;
212 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE9= FND_API.G_MISS_CHAR
213 THEN
214 P_X_MR_ROUTE_TBL(I).ATTRIBUTE9:=NULL;
215 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE9 IS NULL
216 THEN
217 P_X_MR_ROUTE_TBL(I).ATTRIBUTE9:=l_mr_route_rec.ATTRIBUTE9;
218 END IF;
219 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE10= FND_API.G_MISS_CHAR
220 THEN
221 P_X_MR_ROUTE_TBL(I).ATTRIBUTE10:=NULL;
222 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE10 IS NULL
223 THEN
224 P_X_MR_ROUTE_TBL(I).ATTRIBUTE10:=l_mr_route_rec.ATTRIBUTE10;
225 END IF;
226 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE11= FND_API.G_MISS_CHAR
227 THEN
228 P_X_MR_ROUTE_TBL(I).ATTRIBUTE11:=NULL;
229 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE11 IS NULL
230 THEN
231 P_X_MR_ROUTE_TBL(I).ATTRIBUTE11:=l_mr_route_rec.ATTRIBUTE11;
232 END IF;
233 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE12= FND_API.G_MISS_CHAR
234 THEN
235 P_X_MR_ROUTE_TBL(I).ATTRIBUTE12:=NULL;
236 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE12 IS NULL
237 THEN
238 P_X_MR_ROUTE_TBL(I).ATTRIBUTE12:=l_mr_route_rec.ATTRIBUTE12;
239 END IF;
240 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE13= FND_API.G_MISS_CHAR
241 THEN
242 P_X_MR_ROUTE_TBL(I).ATTRIBUTE13:=NULL;
243 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE13 IS NULL
244 THEN
245 P_X_MR_ROUTE_TBL(I).ATTRIBUTE13:=l_mr_route_rec.ATTRIBUTE13;
246 END IF;
247 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE14= FND_API.G_MISS_CHAR
248 THEN
249 P_X_MR_ROUTE_TBL(I).ATTRIBUTE14:=NULL;
250 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE14 IS NULL
251 THEN
252 P_X_MR_ROUTE_TBL(I).ATTRIBUTE14:=l_mr_route_rec.ATTRIBUTE14;
253 END IF;
254
255 IF P_X_MR_ROUTE_TBL(I).ATTRIBUTE15= FND_API.G_MISS_CHAR
256 THEN
257 P_X_MR_ROUTE_TBL(I).ATTRIBUTE15:=NULL;
258 ELSIF P_X_MR_ROUTE_TBL(I).ATTRIBUTE15 IS NULL
259 THEN
260 P_X_MR_ROUTE_TBL(I).ATTRIBUTE15:=l_mr_route_rec.ATTRIBUTE15;
261 END IF;
262 END IF;
263 END LOOP;
264 END IF;
265 END;
266
267
268
269 PROCEDURE TRANS_VALUE_ID
270 (
271 x_return_status OUT NOCOPY VARCHAR2,
272 p_x_mr_route_rec IN OUT NOCOPY MR_ROUTE_REC
273 )
274 as
275 CURSOR get_route_frm(c_route_no VARCHAR2,c_revision_number NUMBER)
276 IS
277 --AMSRINIV : Bug 4913924 . Below commented query tuned.
278 SELECT
279 route_id,
280 revision_status_code
281 FROM
282 ahl_routes_b
283 WHERE
284 UPPER(route_no)=UPPER(c_route_no) AND
285 revision_number=NVL(c_revision_number,revision_number) AND
286 TRUNC(NVL(end_date_active,SYSDATE+1))>TRUNC(SYSDATE) AND
287 revision_status_code='COMPLETE' AND
288 application_usg_code = RTRIM(LTRIM(fnd_profile.value('AHL_APPLN_USAGE')));
289
290 /*select ROUTE_ID,REVISION_STATUS_CODE
291 from AHL_ROUTES_V
292 where UPPER(ROUTE_NO)=upper(C_ROUTE_NO)
293 and revision_number=nvl(C_REVISION_NUMBER,revision_number)
294 and TRUNC(NVL(END_DATE_ACTIVE,SYSDATE+1))>TRUNC(SYSDATE)
295 AND REVISION_STATUS_CODE='COMPLETE';*/
296
297 l_route_rec get_route_frm%rowtype;
298 BEGIN
299 x_return_status:=FND_API.G_RET_STS_SUCCESS;
300 IF G_DEBUG='Y' THEN
301 AHL_DEBUG_PUB.enable_debug;
302 AHL_DEBUG_PUB.debug( 'Route Revision number'||p_x_mr_route_rec.route_revision_number);
303 END IF;
304
305 IF (p_x_mr_route_rec.route_number IS NULL or
306 p_x_mr_route_rec.route_number=FND_API.G_MISS_CHAR) and
307 p_x_mr_route_rec.dml_operation<>'D'
308 THEN
309 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_ROUTE_NUMBR_NULL');
310 FND_MSG_PUB.ADD;
311 ELSE
312 OPEN get_route_frm(p_x_mr_route_rec.route_number,p_x_mr_route_rec.route_revision_number);
313 FETCH get_route_frm INTO l_route_rec;
314
315 IF get_route_frm%NOTFOUND
316 THEN
317 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_ROUTE_NUMBR_INVALID');
318 FND_MESSAGE.SET_TOKEN('FIELD',p_x_mr_route_rec.route_number,false);
319 FND_MSG_PUB.ADD;
320 ELSE
321 p_x_mr_route_rec.ROUTE_ID:=l_route_rec.route_id;
322 END IF;
323 CLOSE get_route_frm;
324 END IF;
325 IF G_DEBUG='Y' THEN
326 AHL_DEBUG_PUB.disable_debug;
327 END IF;
328 END;
329
330 --MANESING::VWP Enhancements, 21-Jan-2011, modified method signature to make p_mr_route_rec as IN OUT parameter
331 PROCEDURE VALIDATE_MR_ROUTE
332 (
333 x_return_status OUT NOCOPY VARCHAR2,
334 p_x_mr_route_rec IN OUT NOCOPY MR_ROUTE_REC
335 )
336 as
337 -- AHL_FMP_MR_SELCT_RT_FROM_LOV (ROUTE_NUMBER
338 CURSOR GetMrDet(c_mr_header_id NUMBER)
339 IS
340 SELECT MR_STATUS_CODE,TYPE_CODE
341 from AHL_MR_HEADERS_APP_V
342 where MR_HEADER_ID=c_mr_header_id
343 and MR_STATUS_CODE in('DRAFT','APPROVAL_REJECTED');
344
345 l_mr_rec GetMrDet%rowtype;
346
347 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_MR_ROUTE';
348 l_api_version CONSTANT NUMBER := 1.0;
349 l_msg_count NUMBER;
350 l_msg_data VARCHAR2(2000);
351 l_appln_code VARCHAR2(30);
352 l_counter NUMBER:=0;
353
354 -- Tamal [MEL/CDL] -- Begin changes
355 l_mr_prog_type varchar2(30);
356 l_route_type varchar2(30);
357 -- Tamal [MEL/CDL] -- End changes
358
359 l_curr_stage_number NUMBER;
360 l_passed_stage_number NUMBER;
361
362 BEGIN
363 x_return_status:=FND_API.G_RET_STS_SUCCESS;
364
365 IF G_APPLN_USAGE IS NULL
366 THEN
367 FND_MESSAGE.SET_NAME('AHL','AHL_COM_APP_PRFL_UNDEF');
368 FND_MSG_PUB.ADD;
369 RETURN;
370 END IF;
371
372 -- AHL_FMP_MR_SELCT_RT_FROM_LOV (ROUTE_NUMBER
373
374 IF (p_x_mr_route_rec.route_revision_number IS NULL OR p_x_mr_route_rec.route_revision_number=FND_API.G_MISS_NUM) AND p_x_mr_route_rec.dml_operation<>'D'
375 THEN
376 --AMSRINIV : Bug 4913924 . Below commented query tuned.
377 SELECT
378 COUNT(*) into l_counter
379 FROM
380 ahl_routes_b
381 WHERE
382 route_no=p_x_mr_route_rec.route_number AND
383 revision_status_code='COMPLETE' AND
384 NVL(end_date_active,SYSDATE+1)>SYSDATE AND
385 application_usg_code = RTRIM(LTRIM(fnd_profile.value('AHL_APPLN_USAGE')));
386
387
388 /*Select count(*) into l_counter
389 From ahl_routes_v
390 where route_no=p_x_mr_route_rec.route_number
391 and revision_status_code='COMPLETE'
392 and NVL(end_date_active,SYSDATE+1)>SYSDATE;*/
393 IF l_counter >1
394 THEN
395 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_SELCT_RT_FROM_LOV');
396 FND_MESSAGE.SET_TOKEN('ROUTE_NUMBER',p_x_mr_route_rec.route_number,false);
397 FND_MSG_PUB.ADD;
398 END IF;
399 END IF;
400
401
402 IF (p_x_mr_route_rec.MR_HEADER_ID IS NULL OR p_x_mr_route_rec.MR_HEADER_ID=FND_API.G_MISS_NUM) AND p_x_mr_route_rec.dml_operation<>'D'
403 THEN
404 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_HEADER_ID_NULL');
405 FND_MSG_PUB.ADD;
406 ELSE
407 OPEN GetMrDet(p_x_mr_route_rec.MR_HEADER_ID);
408
409 FETCH GetMrDet into l_mr_rec;
410
411 IF GetMrDet%NOTFOUND
412 THEN
413 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_EDIT_STATUS_INVALID');
414 FND_MSG_PUB.ADD;
415 ELSE
416 -- PM Code
417 IF G_APPLN_USAGE='PM'
418 THEN
419 IF l_mr_rec.TYPE_CODE='PROGRAM'
420 THEN
421 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_TYPE_CODE_PROGRAM');
422 FND_MSG_PUB.ADD;
423 END IF;
424 END IF;
425 END IF;
426 CLOSE GetMrDet;
427 END IF;
428
429 IF (p_x_mr_route_rec.OBJECT_VERSION_NUMBER IS NULL OR p_x_mr_route_rec.OBJECT_VERSION_NUMBER=FND_API.G_MISS_num) and p_x_mr_route_rec.dml_operation<>'C'
430 THEN
431 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MRR_OBJ_VERSION_NULL');
432 FND_MESSAGE.SET_TOKEN('RECORD',p_x_mr_route_rec.route_number,false);
433 FND_MSG_PUB.ADD;
434 END IF;
435
436 IF (p_x_mr_route_rec.MR_ROUTE_ID IS NULL OR p_x_mr_route_rec.MR_ROUTE_ID=FND_API.G_MISS_NUM) AND p_x_mr_route_rec.dml_operation<>'C'
437 THEN
438 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_ROUTE_ID_NULL');
439 FND_MESSAGE.SET_TOKEN('RECORD',p_x_mr_route_rec.ROUTE_NUMBER,false);
440 FND_MSG_PUB.ADD;
441 END IF;
442
443 -- Tamal [MEL/CDL] -- Begin changes
444 IF (p_x_mr_route_rec.dml_operation <> 'D')
445 THEN
446 SELECT program_type_code INTO l_mr_prog_type FROM ahl_mr_headers_app_v WHERE mr_header_id = p_x_mr_route_rec.mr_header_id;
447 SELECT route_type_code INTO l_route_type FROM ahl_routes_app_v WHERE route_id = p_x_mr_route_rec.route_id;
448
449 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)
450 THEN
451 fnd_log.string
452 (
453 fnd_log.level_statement,
454 'ahl.plsql.'||g_pkg_name||'.'||l_api_name,
455 'l_mr_prog_type='||l_mr_prog_type||' - l_route_type='||l_route_type
456 );
457 END IF;
458
459 IF (l_mr_prog_type = 'MO_PROC' AND nvl(l_route_type, 'X') NOT IN ('M_PROC','O_PROC'))
460 THEN
461 FND_MESSAGE.SET_NAME('AHL', 'AHL_FMP_MR_ROUTE_TYPE_INV');
462 -- Cannot associate route "" of non (M), (O) procedure type to maintenance requirement of (M) and (O) procedure program type.
463 FND_MESSAGE.SET_TOKEN('RECORD', p_x_mr_route_rec.ROUTE_NUMBER, false);
464 FND_MSG_PUB.ADD;
465 END IF;
466 END IF;
467 -- Tamal [MEL/CDL] -- End changes
468
469 --MANESING::VWP Enhancements, 21-Jan-2011, added validation for Stage Type Lookup
470 IF ( (p_x_mr_route_rec.stage_type_code IS NOT NULL AND
471 p_x_mr_route_rec.stage_type_code <> FND_API.G_MISS_CHAR) OR
472 (p_x_mr_route_rec.stage_type_meaning IS NOT NULL AND
473 p_x_mr_route_rec.stage_type_meaning <> FND_API.G_MISS_CHAR) ) THEN
474
475 AHL_FMP_COMMON_PVT.validate_lookup
476 (
477 x_return_status => x_return_status,
478 x_msg_data => l_msg_data,
479 p_lookup_type => 'AHL_VWP_STAGE_TYPE',
480 p_lookup_meaning => p_x_mr_route_rec.stage_type_meaning,
481 p_x_lookup_code => p_x_mr_route_rec.stage_type_code
482 );
483
484 IF ( NVL(x_return_status, 'X') <> FND_API.G_RET_STS_SUCCESS ) THEN
485 IF ( l_msg_data = 'AHL_COM_INVALID_LOOKUP' ) THEN
486 FND_MESSAGE.set_name( 'AHL', 'AHL_VWP_INVALID_STAGE_TYPE' );
487 ELSIF ( l_msg_data = 'AHL_COM_TOO_MANY_LOOKUPS' ) THEN
488 FND_MESSAGE.set_name( 'AHL', 'AHL_VWP_TOO_MANY_STAGE_TYPES' );
489 ELSE
490 FND_MESSAGE.set_name( 'AHL', l_msg_data );
491 END IF;
492
493 IF ( p_x_mr_route_rec.stage_type_meaning IS NULL OR
494 p_x_mr_route_rec.stage_type_meaning = FND_API.G_MISS_CHAR ) THEN
495 FND_MESSAGE.set_token( 'FIELD', p_x_mr_route_rec.stage_type_code );
496 ELSE
497 FND_MESSAGE.set_token( 'FIELD', p_x_mr_route_rec.stage_type_meaning );
498 END IF;
499
500 FND_MSG_PUB.add;
501 END IF;
502 END IF;
503
504 /* MANESING::VWP Enhancements, 26-May-2011
505 * Stage can no longer be updated since the required functionality is taken care by Stage Type.
506 * This validation is solely intended for Public APIs. From UI, Stage being read only can never be updated.
507 */
508 IF (p_x_mr_route_rec.dml_operation = 'U') THEN
509 SELECT NVL(stage, 0), NVL(p_x_mr_route_rec.stage, 0)
510 INTO l_curr_stage_number, l_passed_stage_number
511 FROM AHL_MR_ROUTES
512 WHERE mr_route_id = p_x_mr_route_rec.mr_route_id;
513 END IF;
514
515 IF ( (p_x_mr_route_rec.dml_operation = 'C' AND p_x_mr_route_rec.stage IS NOT NULL) OR
516 (p_x_mr_route_rec.dml_operation = 'U' AND p_x_mr_route_rec.stage_type_code IS NULL AND
517 l_curr_stage_number <> l_passed_stage_number) ) THEN
518 FND_MESSAGE.set_name('AHL', 'AHL_VWP_STAGE_NUM_NO_UPD');
519 FND_MSG_PUB.add;
520 END IF;
521 END;
522
523 PROCEDURE PROCESS_MR_ROUTE
524 (
525 p_api_version IN NUMBER := 1.0,
526 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
527 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
528 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
529 p_default IN VARCHAR2 := FND_API.G_FALSE,
530 p_module_type IN VARCHAR2 := NULL,
531 x_return_status OUT NOCOPY VARCHAR2,
532 x_msg_count OUT NOCOPY NUMBER,
533 x_msg_data OUT NOCOPY VARCHAR2,
534 p_x_MR_ROUTE_TBL IN OUT NOCOPY MR_ROUTE_TBL
535 )
536 As
537 l_api_name CONSTANT VARCHAR2(30) := 'PROCESS_MR_ROUTE';
538 l_api_version CONSTANT NUMBER := 1.0;
539 l_msg_count NUMBER;
540 l_mr_route_rec MR_ROUTE_REC;
541 l_max_route_num NUMBER := NVL(FND_PROFILE.VALUE('AHL_NUMBER_OF_STAGES'), 1);
542 l_dummy_varchar VARCHAR2(1);
543
544 CURSOR check_route_seq_exists
545 (
546 p_mr_route_id in number
547 )
548 IS
549 SELECT 'X'
550 FROM AHL_MR_ROUTE_SEQUENCES
551 WHERE mr_route_id = p_mr_route_id OR related_mr_route_id = p_mr_route_id;
552
553 BEGIN
554
555 SAVEPOINT PROCESS_MR_ROUTES_PVT;
556
557 -- Standard call to check for call compatibility.
558
559 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
560 p_api_version,
561 l_api_name,G_PKG_NAME) THEN
562 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
563 END IF;
564
565 -- Initialize message list if p_init_msg_list is set to TRUE.
566
567 IF FND_API.to_boolean(p_init_msg_list) THEN
568 FND_MSG_PUB.initialize;
569 END IF;
570
571 -- Enable Debug
572
573 IF G_DEBUG='Y' THEN
574 AHL_DEBUG_PUB.enable_debug;
575 AHL_DEBUG_PUB.debug( 'Begin..'||g_pkg_name,'+PROCESS_MR_ROUTES+');
576 END IF;
577
578
579
580 -- Initialize API return status to success
581
582 x_return_status := FND_API.G_RET_STS_SUCCESS;
583
584 IF FND_API.to_boolean(p_default)
585 THEN
586 DEFAULT_MISSING_ATTRIBS
587 (
588 p_x_mr_route_tbl =>p_x_mr_route_tbl
589 );
590 END IF;
591
592
593 FOR i IN P_X_MR_ROUTE_TBL.FIRST.. P_X_MR_ROUTE_TBL.LAST
594 LOOP
595
596 -- code for Value_To_ID conversion for parent MR.
597 IF (
598 p_x_mr_route_tbl(i).mr_header_id IS NULL OR
599 p_x_mr_route_tbl(i).mr_header_id = FND_API.G_MISS_NUM
600 )
601 THEN
602 -- Function to convert mr_title,mr_version_number to id
603 AHL_FMP_COMMON_PVT.mr_title_version_to_id(
604 p_mr_title => p_x_mr_route_tbl(i).mr_title,
605 p_mr_version_number => p_x_mr_route_tbl(i).mr_version_number,
606 x_mr_header_id => p_x_mr_route_tbl(i).mr_header_id,
607 x_return_status => x_return_status
608 );
609 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
610 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
611 fnd_log.string
612 (
613 fnd_log.level_statement,
614 'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
615 'Invalid MR Title, Version Number provided'
616 );
617 END IF;
618 RAISE FND_API.G_EXC_ERROR;
619 END IF;
620 END IF;
621
622 -- If The Module Type is JSP then Null out the IDs for the attributes based on LOVs.
623
624 IF p_module_type= 'JSP' THEN
625 p_x_MR_ROUTE_TBL(i).route_id:=null;
626 END IF;
627
628 IF P_X_MR_ROUTE_TBL(I).DML_OPERATION<>'D'
629 THEN
630
631 l_mr_route_rec:=p_x_MR_ROUTE_TBL(i);
632 IF (p_validation_level = FND_API.G_VALID_LEVEL_FULL )
633 THEN
634 IF P_X_MR_ROUTE_TBL(i).DML_OPERATION<>'D'
635 THEN
636
637 TRANS_VALUE_ID
638 (
639 x_return_status =>x_return_Status,
640 p_x_mr_route_rec =>l_mr_route_rec
641 );
642
643 p_x_MR_ROUTE_TBL(i).route_id:=l_mr_route_rec.route_id;
644 END IF;
645 END IF;
646 END IF;
647 END LOOP;
648
649 l_msg_count := FND_MSG_PUB.count_msg;
650 IF l_msg_count > 0 THEN
651 X_msg_count := l_msg_count;
652 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
653 RAISE FND_API.G_EXC_ERROR;
654 END IF;
655
656 FOR i IN P_X_MR_ROUTE_TBL.FIRST.. P_X_MR_ROUTE_TBL.LAST
657 LOOP
658 l_mr_route_rec:=p_x_MR_ROUTE_TBL(i);
659 IF (p_validation_level = FND_API.G_VALID_LEVEL_FULL )
660 THEN
661
662 VALIDATE_MR_ROUTE
663 (
664 x_return_status => x_return_Status,
665 p_x_mr_route_rec => l_mr_route_rec);
666
667 --MANESING::VWP Enhancements, 21-Jan-2011, assign updated stage type code to table record
668 p_x_MR_ROUTE_TBL(i).stage_type_code := l_mr_route_rec.stage_type_code;
669 END IF;
670
671
672 IF P_X_MR_ROUTE_TBL(i).DML_OPERATION='D' then
673 DELETE AHL_MR_ROUTE_SEQUENCES a
674 where (MR_ROUTE_ID =P_X_MR_ROUTE_TBL(i).MR_ROUTE_ID or RELATED_MR_ROUTE_ID=P_X_MR_ROUTE_TBL(i).MR_ROUTE_ID);
675
676
677 DELETE AHL_MR_ROUTES
678 where MR_ROUTE_ID =p_x_MR_ROUTE_TBL(i).MR_ROUTE_ID
679 and OBJECT_VERSION_NUMBER=p_x_MR_ROUTE_TBL(i).object_version_number;
680
681 IF sql%rowcount=0 then
682 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_RECORD_CHANGED');
683 FND_MESSAGE.SET_TOKEN('FIELD',p_x_mr_route_tbl(i).route_number,false);
684 FND_MSG_PUB.ADD;
685 END IF;
686
687 ELSIF P_X_MR_ROUTE_TBL(i).DML_operation='U' then
688
689 AHL_MR_ROUTES_PKG.UPDATE_ROW (
690 X_MR_ROUTE_ID =>P_X_MR_ROUTE_TBL(i).MR_ROUTE_ID,
691 X_OBJECT_VERSION_NUMBER =>p_x_MR_ROUTE_TBL(i).object_version_number,
692 X_MR_HEADER_ID =>P_X_MR_ROUTE_TBL(i).MR_HEADER_ID,
693 X_ROUTE_ID =>P_X_MR_ROUTE_TBL(i).ROUTE_ID,
694 X_STAGE =>P_X_MR_ROUTE_TBL(i).STAGE,
695 --MANESING::VWP Enhancements, 21-Jan-2011, added stage type code column
696 X_STAGE_TYPE_CODE =>P_X_MR_ROUTE_TBL(i).STAGE_TYPE_CODE,
697 X_ATTRIBUTE_CATEGORY =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE_CATEGORY,
698 X_ATTRIBUTE1 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE1,
699 X_ATTRIBUTE2 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE2,
700 X_ATTRIBUTE3 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE3,
701 X_ATTRIBUTE4 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE4,
702 X_ATTRIBUTE5 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE5,
703 X_ATTRIBUTE6 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE6,
704 X_ATTRIBUTE7 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE7,
705 X_ATTRIBUTE8 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE8,
706 X_ATTRIBUTE9 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE9,
707 X_ATTRIBUTE10 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE10,
708 X_ATTRIBUTE11 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE11,
709 X_ATTRIBUTE12 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE12,
710 X_ATTRIBUTE13 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE13,
711 X_ATTRIBUTE14 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE14,
712 X_ATTRIBUTE15 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE15,
713 X_LAST_UPDATE_DATE =>sysdate,
714 X_LAST_UPDATED_BY =>fnd_global.user_id,
715 X_LAST_UPDATE_LOGIN =>fnd_global.user_id);
716
717 ELSIF P_X_MR_ROUTE_TBL(i).DML_operation='C' then
718
719
720 AHL_MR_ROUTES_PKG.INSERT_ROW (
721 X_MR_ROUTE_ID =>P_X_MR_ROUTE_TBL(i).MR_ROUTE_ID,
722 X_OBJECT_VERSION_NUMBER =>1,
723 X_MR_HEADER_ID =>P_X_MR_ROUTE_TBL(i).MR_HEADER_ID,
724 X_ROUTE_ID =>P_X_MR_ROUTE_TBL(i).ROUTE_ID,
725 X_STAGE =>P_X_MR_ROUTE_TBL(i).STAGE,
726 --MANESING::VWP Enhancements, 21-Jan-2011, added stage type code column
727 X_STAGE_TYPE_CODE =>P_X_MR_ROUTE_TBL(i).STAGE_TYPE_CODE,
728 X_ATTRIBUTE_CATEGORY =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE_CATEGORY,
729 X_ATTRIBUTE1 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE1,
730 X_ATTRIBUTE2 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE2,
731 X_ATTRIBUTE3 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE3,
732 X_ATTRIBUTE4 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE4,
733 X_ATTRIBUTE5 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE5,
734 X_ATTRIBUTE6 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE6,
735 X_ATTRIBUTE7 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE7,
736 X_ATTRIBUTE8 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE8,
737 X_ATTRIBUTE9 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE9,
738 X_ATTRIBUTE10 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE10,
739 X_ATTRIBUTE11 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE11,
740 X_ATTRIBUTE12 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE12,
741 X_ATTRIBUTE13 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE13,
742 X_ATTRIBUTE14 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE14,
743 X_ATTRIBUTE15 =>P_X_MR_ROUTE_TBL(i).ATTRIBUTE15,
744 X_CREATION_DATE =>sysdate,
745 X_CREATED_BY =>fnd_global.user_id,
746 X_LAST_UPDATE_DATE =>sysdate,
747 X_LAST_UPDATED_BY =>fnd_global.user_id,
748 X_LAST_UPDATE_LOGIN =>fnd_global.user_id);
749
750 END IF;
751
752 END LOOP;
753
754 -- TAMAL
755 -- MANESING::VWP Enhancements, 26-May-2011, Stage will no longer be used, hence this validation is commented out.
756 /*
757 IF (P_X_MR_ROUTE_TBL.COUNT > 0)
758 THEN
759 FOR i IN P_X_MR_ROUTE_TBL.FIRST..P_X_MR_ROUTE_TBL.LAST
760 LOOP
761 IF (P_X_MR_ROUTE_TBL(i).DML_operation = 'U')
762 THEN
763 OPEN check_route_seq_exists(P_X_MR_ROUTE_TBL(i).MR_ROUTE_ID);
764 FETCH check_route_seq_exists INTO l_dummy_varchar;
765 IF (check_route_seq_exists%NOTFOUND)
766 THEN
767 IF (P_X_MR_ROUTE_TBL(i).stage < 1 OR P_X_MR_ROUTE_TBL(i).stage > l_max_route_num)
768 THEN
769 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_INV_STAGE_CRT');
770 FND_MESSAGE.SET_TOKEN('ROUTE',P_X_MR_ROUTE_TBL(i).route_number, false);
771 FND_MESSAGE.SET_TOKEN('MAX',l_max_route_num, false);
772 FND_MSG_PUB.ADD;
773 END IF;
774 ELSE
775 AHL_FMP_MR_ROUTE_SEQNCE_PVT.VALIDATE_ROUTE_STAGE_SEQ(P_X_MR_ROUTE_TBL(i).MR_ROUTE_ID, true);
776 END IF;
777 CLOSE check_route_seq_exists;
778 ELSIF (P_X_MR_ROUTE_TBL(i).dml_operation = 'C' AND (P_X_MR_ROUTE_TBL(i).stage < 1 OR P_X_MR_ROUTE_TBL(i).stage > l_max_route_num))
779 THEN
780 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_INV_STAGE_CRT');
781 FND_MESSAGE.SET_TOKEN('ROUTE',P_X_MR_ROUTE_TBL(i).route_number, false);
782 FND_MESSAGE.SET_TOKEN('MAX',l_max_route_num, false);
783 FND_MSG_PUB.ADD;
784 END IF;
785 END LOOP;
786 END IF;
787 */
788 -- TAMAL
789
790 l_msg_count := FND_MSG_PUB.count_msg;
791 IF l_msg_count > 0 THEN
792 X_msg_count := l_msg_count;
793 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
794 RAISE FND_API.G_EXC_ERROR;
795 END IF;
796
797
798 IF FND_API.TO_BOOLEAN(p_commit) THEN
799 COMMIT;
800 END IF;
801
802 IF G_DEBUG='Y' THEN
803 AHL_DEBUG_PUB.disable_debug;
804 END IF;
805
806 EXCEPTION
807 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
808 ROLLBACK TO PROCESS_MR_ROUTES_PVT;
809 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
810 FND_MSG_PUB.count_and_get( p_encoded =>FND_API.G_FALSE,
811 p_count => x_msg_count,
812 p_data => x_msg_data);
813 IF G_DEBUG='Y' THEN
814 AHL_DEBUG_PUB.disable_debug;
815 END IF;
816
817
818 WHEN FND_API.G_EXC_ERROR THEN
819 ROLLBACK TO PROCESS_MR_ROUTES_PVT;
820 X_return_status := FND_API.G_RET_STS_ERROR;
821 FND_MSG_PUB.count_and_get( p_encoded =>FND_API.G_FALSE,
822 p_count => x_msg_count,
823 p_data => X_msg_data);
824 IF G_DEBUG='Y' THEN
825 AHL_DEBUG_PUB.disable_debug;
826 END IF;
827
828 WHEN OTHERS THEN
829 ROLLBACK TO PROCESS_MR_ROUTES_PVT;
830 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
831 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
832 THEN
833 fnd_msg_pub.add_exc_msg(p_pkg_name => 'AHL_FMP_MR_ROUTE_PVT',
834 p_procedure_name => 'PROCESS_MR_ROUTE',
835 p_error_text => SUBSTR(SQLERRM,1,240));
836 END IF;
837 FND_MSG_PUB.count_and_get( p_encoded =>FND_API.G_FALSE,
838 p_count => x_msg_count,
839 p_data => X_msg_data);
840 IF G_DEBUG='Y' THEN
841 AHL_DEBUG_PUB.disable_debug;
842 END IF;
843
844 END;
845
846 END AHL_FMP_MR_ROUTE_PVT;