DBA Data[Home] [Help]

PACKAGE BODY: APPS.AHL_FMP_MR_ACTION_PVT

Source


1 PACKAGE BODY AHL_FMP_MR_ACTION_PVT AS
2 /* $Header: AHLVMRAB.pls 115.19 2003/10/20 19:36:45 sikumar noship $ */
3 G_PKG_NAME  VARCHAR2(30):= 'AHL_FMP_MR_ACTION_PVT';
4 G_PM_INSTALL            VARCHAR2(30):=ahl_util_pkg.is_pm_installed;
5 --G_DEBUG 		 VARCHAR2(1):=FND_PROFILE.VALUE('AHL_API_FILE_DEBUG_ON');
6 G_DEBUG                VARCHAR2(1)   := AHL_DEBUG_PUB.is_log_enabled;
7 
8 PROCEDURE DEFAULT_MISSING_ATTRIBS(p_x_mr_action_tbl IN OUT NOCOPY AHL_FMP_MR_ACTION_PVT.MR_ACTION_TBL)
9 AS
10  CURSOR CurAction(C_MR_ACTION_ID NUMBER)
11  IS
12  SELECT * FROM AHL_MR_ACTIONS_V
13         WHERE MR_ACTION_ID=C_MR_ACTION_ID;
14 
15  l_action_rec    CurAction%rowtype;
16 BEGIN
17         IF G_DEBUG='Y' THEN
18 		  AHL_DEBUG_PUB.enable_debug;
19 	END IF;
20         IF P_X_MR_ACTION_TBL.COUNT >0
21         THEN
22         FOR i IN  P_X_MR_ACTION_TBL.FIRST.. P_X_MR_ACTION_TBL.LAST
23         LOOP
24         IF p_x_mr_action_TBL(i).DML_OPERATION<>'D'
25         THEN
26 
27                 OPEN CurAction (p_x_mr_action_TBL(i).MR_ACTION_ID);
28                         fetch CurAction into l_action_rec;
29                 CLOSE CurAction;
30 
31                 IF p_x_mr_action_TBL(I).MR_HEADER_ID= FND_API.G_MISS_NUM
32                 THEN
33                         p_x_mr_action_TBL(I).MR_HEADER_ID:=NULL;
34                 ELSIF p_x_mr_action_TBL(I).MR_HEADER_ID IS NULL
35                 THEN
36                         p_x_mr_action_TBL(I).MR_HEADER_ID:=l_action_rec.MR_HEADER_ID;
37                 END IF;
38 
39                 IF p_x_mr_action_TBL(I).MR_ACTION_CODE= FND_API.G_MISS_CHAR
40                 THEN
41                         p_x_mr_action_TBL(I).MR_ACTION_CODE:=NULL;
42                 ELSIF p_x_mr_action_TBL(I).MR_ACTION_CODE IS NULL
43                 THEN
44                         p_x_mr_action_TBL(I).MR_ACTION_CODE:=l_action_rec.MR_ACTION_CODE;
45                 END IF;
46 
47                 IF p_x_mr_action_TBL(I).MR_ACTION= FND_API.G_MISS_CHAR
48                 THEN
49                         p_x_mr_action_TBL(I).MR_ACTION:=NULL;
50                 ELSIF p_x_mr_action_TBL(I).MR_ACTION IS NULL
51                 THEN
52                         p_x_mr_action_TBL(I).MR_ACTION:=l_action_rec.MR_ACTION;
53                 END IF;
54 
55                 IF p_x_mr_action_TBL(I).MR_ACTION_ID= FND_API.G_MISS_NUM
56                 THEN
57                         p_x_mr_action_TBL(I).MR_ACTION_ID:=NULL;
58                 END IF;
59 
60                 IF p_x_mr_action_TBL(I).OBJECT_VERSION_NUMBER= FND_API.G_MISS_NUM
61                 THEN
62                     p_x_mr_action_TBL(I).OBJECT_VERSION_NUMBER:=null;
63                 ELSIF p_x_mr_action_TBL(I).OBJECT_VERSION_NUMBER IS NULL
64                 THEN
65                     p_x_mr_action_TBL(I).OBJECT_VERSION_NUMBER:=l_action_rec.OBJECT_VERSION_NUMBER;
66                 END IF;
67 
68                 IF p_x_mr_action_TBL(I).PLAN= FND_API.G_MISS_CHAR
69                 THEN
70                         p_x_mr_action_TBL(I).PLAN:=NULL;
71                 ELSIF p_x_mr_action_TBL(I).PLAN IS NULL
72                 THEN
73                         p_x_mr_action_TBL(I).PLAN:=l_action_rec.PLAN_name;
74                 END IF;
75 
76 
77                 IF p_x_mr_action_TBL(I).PLAN_ID= FND_API.G_MISS_NUM
78                 THEN
79                         p_x_mr_action_TBL(I).PLAN_ID:=NULL;
80                 ELSIF p_x_mr_action_TBL(I).PLAN_ID IS NULL
81                 THEN
82                         p_x_mr_action_TBL(I).PLAN_ID:=l_action_rec.PLAN_ID;
83                 END IF;
84 
85                 IF p_x_mr_action_TBL(I).PLAN= FND_API.G_MISS_CHAR
86                 THEN
87                         p_x_mr_action_TBL(I).PLAN:=NULL;
88                 ELSIF p_x_mr_action_TBL(I).PLAN IS NULL
89                 THEN
90                         p_x_mr_action_TBL(I).PLAN:=l_action_rec.PLAN_NAME;
91                 END IF;
92 
93                 IF p_x_mr_action_TBL(I).DESCRIPTION= FND_API.G_MISS_CHAR
94                 THEN
95                         p_x_mr_action_TBL(I).DESCRIPTION:=NULL;
96                 ELSIF p_x_mr_action_TBL(I).DESCRIPTION IS NULL
97                 THEN
98                         p_x_mr_action_TBL(I).DESCRIPTION:=l_action_rec.DESCRIPTION;
99                 END IF;
100 
101                 IF p_x_mr_action_TBL(I).ATTRIBUTE_CATEGORY= FND_API.G_MISS_CHAR
102                 THEN
103                         p_x_mr_action_TBL(I).ATTRIBUTE_CATEGORY:=NULL;
104                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE_CATEGORY IS NULL
105                 THEN
106                         p_x_mr_action_TBL(I).ATTRIBUTE_CATEGORY:=l_action_rec.ATTRIBUTE_CATEGORY;
107                 END IF;
108 
109                 IF p_x_mr_action_TBL(I).ATTRIBUTE1= FND_API.G_MISS_CHAR
110                 THEN
111                         p_x_mr_action_TBL(I).ATTRIBUTE1:=NULL;
112                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE1 IS NULL
113                 THEN
114                         p_x_mr_action_TBL(I).ATTRIBUTE1:=l_action_rec.ATTRIBUTE1;
115                 END IF;
116 
117                 IF p_x_mr_action_TBL(I).ATTRIBUTE2= FND_API.G_MISS_CHAR
118                 THEN
119                         p_x_mr_action_TBL(I).ATTRIBUTE2:=NULL;
120                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE2 IS NULL
121                 THEN
122                         p_x_mr_action_TBL(I).ATTRIBUTE2:=l_action_rec.ATTRIBUTE2;
123                 END IF;
124 
125                 IF p_x_mr_action_TBL(I).ATTRIBUTE3= FND_API.G_MISS_CHAR
126                 THEN
127                         p_x_mr_action_TBL(I).ATTRIBUTE3:=NULL;
128                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE3 IS NULL
129                 THEN
130                         p_x_mr_action_TBL(I).ATTRIBUTE3:=l_action_rec.ATTRIBUTE3;
131                 END IF;
132 
133                 IF p_x_mr_action_TBL(I).ATTRIBUTE4= FND_API.G_MISS_CHAR
134                 THEN
135                         p_x_mr_action_TBL(I).ATTRIBUTE4:=NULL;
136                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE4 IS NULL
137                 THEN
138                         p_x_mr_action_TBL(I).ATTRIBUTE4:=l_action_rec.ATTRIBUTE4;
139                 END IF;
140 
141                 IF p_x_mr_action_TBL(I).ATTRIBUTE5= FND_API.G_MISS_CHAR
142                 THEN
143                         p_x_mr_action_TBL(I).ATTRIBUTE5:=NULL;
144                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE5 IS NULL
145                 THEN
146                         p_x_mr_action_TBL(I).ATTRIBUTE5:=l_action_rec.ATTRIBUTE5;
147                 END IF;
148 
149                 IF p_x_mr_action_TBL(I).ATTRIBUTE6= FND_API.G_MISS_CHAR
150                 THEN
151                         p_x_mr_action_TBL(I).ATTRIBUTE6:=NULL;
152                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE6 IS NULL
153                 THEN
154                         p_x_mr_action_TBL(I).ATTRIBUTE6:=l_action_rec.ATTRIBUTE6;
155                 END IF;
156 
157                 IF p_x_mr_action_TBL(I).ATTRIBUTE7= FND_API.G_MISS_CHAR
158                 THEN
159                         p_x_mr_action_TBL(I).ATTRIBUTE7:=NULL;
160                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE7 IS NULL
161                 THEN
162                         p_x_mr_action_TBL(I).ATTRIBUTE7:=l_action_rec.ATTRIBUTE7;
163                 END IF;
164 
165                 IF p_x_mr_action_TBL(I).ATTRIBUTE8= FND_API.G_MISS_CHAR
166                 THEN
167                         p_x_mr_action_TBL(I).ATTRIBUTE8:=NULL;
168                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE8 IS NULL
169                 THEN
170                         p_x_mr_action_TBL(I).ATTRIBUTE8:=l_action_rec.ATTRIBUTE8;
171                 END IF;
172 
173                 IF p_x_mr_action_TBL(I).ATTRIBUTE9= FND_API.G_MISS_CHAR
174                 THEN
175                         p_x_mr_action_TBL(I).ATTRIBUTE9:=NULL;
176                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE9 IS NULL
177                 THEN
178                         p_x_mr_action_TBL(I).ATTRIBUTE9:=l_action_rec.ATTRIBUTE9;
179                 END IF;
180 
181                 IF p_x_mr_action_TBL(I).ATTRIBUTE10= FND_API.G_MISS_CHAR
182                 THEN
183                         p_x_mr_action_TBL(I).ATTRIBUTE10:=NULL;
184                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE10 IS NULL
185                 THEN
186                         p_x_mr_action_TBL(I).ATTRIBUTE10:=l_action_rec.ATTRIBUTE10;
187                 END IF;
188 
189                 IF p_x_mr_action_TBL(I).ATTRIBUTE11= FND_API.G_MISS_CHAR
190                 THEN
191                         p_x_mr_action_TBL(I).ATTRIBUTE11:=NULL;
192                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE11 IS NULL
193                 THEN
194                         p_x_mr_action_TBL(I).ATTRIBUTE11:=l_action_rec.ATTRIBUTE11;
195                 END IF;
196 
197                 IF p_x_mr_action_TBL(I).ATTRIBUTE12= FND_API.G_MISS_CHAR
198                 THEN
199                         p_x_mr_action_TBL(I).ATTRIBUTE12:=NULL;
200                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE12 IS NULL
201                 THEN
202                         p_x_mr_action_TBL(I).ATTRIBUTE12:=l_action_rec.ATTRIBUTE12;
203                 END IF;
204 
205                 IF p_x_mr_action_TBL(I).ATTRIBUTE13= FND_API.G_MISS_CHAR
206                 THEN
207                         p_x_mr_action_TBL(I).ATTRIBUTE13:=NULL;
208                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE13 IS NULL
209                 THEN
210                         p_x_mr_action_TBL(I).ATTRIBUTE13:=l_action_rec.ATTRIBUTE13;
211                 END IF;
212 
213                 IF p_x_mr_action_TBL(I).ATTRIBUTE14= FND_API.G_MISS_CHAR
214                 THEN
215                         p_x_mr_action_TBL(I).ATTRIBUTE14:=NULL;
216                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE14 IS NULL
217                 THEN
218                         p_x_mr_action_TBL(I).ATTRIBUTE14:=l_action_rec.ATTRIBUTE14;
219                 END IF;
220 
221                 IF p_x_mr_action_TBL(I).ATTRIBUTE15= FND_API.G_MISS_CHAR
222                 THEN
223                         p_x_mr_action_TBL(I).ATTRIBUTE15:=NULL;
224                 ELSIF p_x_mr_action_TBL(I).ATTRIBUTE15 IS NULL
225                 THEN
226                         p_x_mr_action_TBL(I).ATTRIBUTE15:=l_action_rec.ATTRIBUTE15;
227                 END IF;
228         END IF;
229         END LOOP;
230         END IF;
231 END;
232 
233 --Tranlate Value to id.
234 
235 PROCEDURE TRANS_VALUE_ID
236  (
237  x_return_status                OUT NOCOPY     VARCHAR2,
238  p_x_mr_action_rec              IN OUT  NOCOPY MR_ACTION_REC
239  )
240 as
241 CURSOR get_lookup_meaning_to_code(c_lookup_type VARCHAR2,c_meaning  VARCHAR2)
242  IS
243 SELECT lookup_code
244    FROM FND_LOOKUP_VALUES_VL
245    WHERE lookup_type= c_lookup_type
246    AND upper(meaning)=upper(c_meaning)
247    AND sysdate between start_date_active
248    AND nvl(end_date_active,sysdate);
249 
250 CURSOR get_planid_frm_name(c_plan_name  VARCHAR2)
251  IS
252 SELECT plan_id
253    FROM QA_PLANS
254    WHERE upper(name)=upper(c_plan_name)
255    AND sysdate between EFFECTIVE_FROM
256    AND nvl(EFFECTIVE_TO,sysdate);
257 BEGIN
258 
259         x_return_status:=FND_API.G_RET_STS_SUCCESS;
260 
261         IF G_DEBUG='Y' THEN
262 		  AHL_DEBUG_PUB.enable_debug;
263 	END IF;
264 
265         IF p_x_mr_action_rec.mr_action is  null  OR p_x_mr_action_rec.mr_action=FND_API.G_MISS_CHAR
266         THEN
267                      FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_ACTION_CODE_NULL');
268                      FND_MSG_PUB.ADD;
269         ELSE
270                  OPEN  get_lookup_meaning_to_code('AHL_FMP_MR_ACTION',p_x_mr_action_rec.MR_ACTION);
271                  FETCH get_lookup_meaning_to_code INTO p_x_mr_action_rec.MR_ACTION_CODE;
272 
273                  IF get_lookup_meaning_to_code%NOTFOUND
274                  THEN
275                      FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_ACTION_CODE_INVALID');
276                      FND_MESSAGE.SET_TOKEN('FIELD',p_x_mr_action_rec.MR_ACTION,false);
277                      FND_MESSAGE.SET_TOKEN('RECORD',nvl(p_x_mr_action_rec.MR_ACTION,'')||'-'||NVL(p_x_mr_action_rec.description,'')||'-'||NVL(p_x_mr_action_rec.plan,''),false);
278                      FND_MSG_PUB.ADD;
279                  END IF;
280                  CLOSE get_lookup_meaning_to_code;
281         END IF;
282 
283         IF (p_x_mr_action_rec.plan is null  OR p_x_mr_action_rec.plan=FND_API.G_MISS_CHAR)
284         THEN
285                  p_x_mr_action_rec.PLAN:=FND_API.G_MISS_CHAR;
286                  p_x_mr_action_rec.PLAN_ID:=FND_API.G_MISS_NUM;
287         ELSE
288                  OPEN  get_planid_frm_name(p_x_mr_action_rec.PLAN);
289                  FETCH get_planid_frm_name INTO p_x_mr_action_rec.PLAN_ID;
290                  IF get_planid_frm_name%NOTFOUND
291                  THEN
292                      FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_PLAN_ID_INVALID');
293                      FND_MESSAGE.SET_TOKEN('FIELD',p_x_mr_action_rec.MR_ACTION,false);
294                      FND_MESSAGE.SET_TOKEN('RECORD',NVL(p_x_mr_action_rec.MR_ACTION,'')||'-'||NVL(p_x_mr_action_rec.description,'')||'-'||NVL(p_x_mr_action_rec.plan,''),false);
295                      FND_MSG_PUB.ADD;
296                  END IF;
297                  CLOSE get_planid_frm_name;
298 
299         END IF;
300         IF G_DEBUG='Y' THEN
301 		  AHL_DEBUG_PUB.disable_debug;
302 	END IF;
303  END;
304 
305 PROCEDURE VALIDATE_MR_ACTION
306  (
307  x_return_status                OUT NOCOPY VARCHAR2,
308  p_mr_action_rec                IN  MR_ACTION_REC
309  )
310 as
311 CURSOR get_ACTION_id(c_mr_action_id  NUMBER)
312  IS
313 SELECT MR_ACTION_ID
314    FROM AHL_MR_ACTIONS_B
315    WHERE MR_ACTION_ID=c_mr_action_id;
316 
317  CURSOR GetMrDet(c_mr_header_id  NUMBER )
318  IS
319  SELECT MR_STATUS_CODE,nvl(TYPE_CODE,'X') TYPE_CODE
320    FROM AHL_MR_HEADERS_B
321    WHERE MR_HEADER_ID=c_mr_header_id
322    and MR_STATUS_CODE IN('DRAFT','APPROVAL_REJECTED');
323 
324  l_mr_rec                GetMrDet%rowtype;
325 
326  CURSOR CHECK_DUP_ACTION_CODE(c_mr_action_code VARCHAR2,c_mr_header_id  NUMBER)
327  IS
328  SELECT *
329    FROM AHL_MR_ACTIONS_B
330    WHERE MR_HEADER_ID=c_mr_header_id
331    and   MR_ACTION_CODE=c_MR_ACTION_CODE;
332 
333  l_act_rec               CHECK_DUP_ACTION_CODE%ROWTYPE;
334  l_mr_action_id          NUMBER:=0;
335  BEGIN
336 
337 	IF G_DEBUG='Y' THEN
338 		  AHL_DEBUG_PUB.enable_debug;
339 	END IF;
340 
341      x_return_status:=FND_API.G_RET_STS_SUCCESS;
342 
343      IF p_mr_action_rec.dml_operation<>'C'
344      THEN
345              IF (p_mr_action_rec.MR_ACTION_ID IS NULL OR p_mr_action_rec.MR_ACTION_ID=FND_API.G_MISS_NUM)
346              THEN
347                  FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_ACTION_ID_NULL');
348                  FND_MESSAGE.SET_TOKEN('RECORD',NVL(p_mr_action_rec.MR_ACTION,'')||'-'||NVL(p_mr_action_rec.description,'')||'-'||NVL(p_mr_action_rec.plan,''),false);
349                  FND_MSG_PUB.ADD;
350              END IF;
351      END IF;
352 
353      IF (p_mr_action_rec.MR_ACTION_ID IS NOT NULL OR p_mr_action_rec.MR_ACTION_ID<>FND_API.G_MISS_NUM) AND p_mr_action_rec.dml_operation<>'C'
354      THEN
355          OPEN  get_ACTION_id(p_mr_action_rec.mr_action_id) ;
356          FETCH get_ACTION_id INTO l_mr_action_id;
357 
358          IF GET_ACTION_ID%NOTFOUND
359          THEN
360                 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_RECORD_CHANGED');
361                  FND_MESSAGE.SET_TOKEN('RECORD',NVL(p_mr_action_rec.MR_ACTION,'')||'-'||NVL(p_mr_action_rec.description,'')||'-'||NVL(p_mr_action_rec.plan,''),false);
362                 FND_MSG_PUB.ADD;
363          END IF;
364          CLOSE get_ACTION_id;
365      END IF;
366 
367      IF (p_mr_action_rec.OBJECT_VERSION_NUMBER IS NULL OR p_mr_action_rec.OBJECT_vERSION_NUMBER=FND_API.G_MISS_num)
368      THEN
369                 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MRA_OBJ_VERSION_NULL');
370                 FND_MESSAGE.SET_TOKEN('RECORD',NVL(p_mr_action_rec.MR_ACTION,'')||'-'||NVL(p_mr_action_rec.description,'')||'-'||NVL(p_mr_action_rec.plan,''),false);
371                 FND_MSG_PUB.ADD;
372      END IF;
373 
374      IF p_mr_action_rec.dml_operation<>'D'
375      THEN
376 
377              IF p_mr_action_rec.MR_HEADER_ID IS NULL OR p_mr_action_rec.MR_HEADER_ID=FND_API.G_MISS_NUM
378              THEN
379                 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_HEADER_ID_NULL');
380                 FND_MSG_PUB.ADD;
381              ELSE
382                 OPEN GetMrDet(p_mr_action_rec.MR_HEADER_ID);
383 
384                 FETCH GetMrDet  into l_mr_rec;
385 
386                 IF GetMrDet%NOTFOUND
387                 THEN
388                     FND_MESSAGE.SET_NAME('AHL','AHL_FMP_EDIT_STATUS_INVALID');
389                     FND_MSG_PUB.ADD;
390                 ELSE
391                      IF G_PM_INSTALL='Y'
392                      THEN
393                         IF l_mr_rec.TYPE_CODE='PROGRAM'
394                         THEN
395                                 FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_TYPE_CODE_PROGRAM');
396                                 FND_MSG_PUB.ADD;
397                         END IF;
398                      END IF;
399                 END IF;
400                 CLOSE GetMrDet;
401              END IF;
402 
403              OPEN CHECK_DUP_ACTION_CODE(p_mr_action_rec.MR_ACTION_CODE,p_mr_action_rec.MR_HEADER_ID);
404              FETCH CHECK_DUP_ACTION_CODE  into l_act_Rec;
405 
406              IF  CHECK_DUP_ACTION_CODE%FOUND
407              THEN
408                      IF  p_mr_action_rec.dml_operation='C'
409                      THEN
410                           FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_ACTION_CODE_DUP');
411                           FND_MESSAGE.SET_TOKEN('RECORD',NVL(p_mr_action_rec.MR_ACTION,'')||'-'||NVL(p_mr_action_rec.description,'')||'-'||NVL(p_mr_action_rec.plan,''),false);
412                           FND_MSG_PUB.ADD;
413                      ELSIF  p_mr_action_rec.dml_operation='U'
414                             and l_act_Rec.mr_action_id<>p_mr_action_rec.MR_ACTION_ID
415                      THEN
416                           FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_ACTION_CODE_DUP');
417                           FND_MESSAGE.SET_TOKEN('ACTION',p_mr_action_rec.MR_ACTION,false);
418                           FND_MSG_PUB.ADD;
419                      END IF;
420              END IF;
421              CLOSE CHECK_DUP_ACTION_CODE;
422         END IF;
423 END;
424 
425 PROCEDURE PROCESS_MR_ACTION
426  (
427  p_api_version               IN     		NUMBER   := 1.0,
428  p_init_msg_list             IN     		VARCHAR2 := FND_API.G_TRUE,
429  p_commit                    IN     		VARCHAR2 := FND_API.G_FALSE,
430  p_validation_level          IN     		NUMBER   := FND_API.G_VALID_LEVEL_FULL,
431  p_default                   IN     		VARCHAR2 := FND_API.G_FALSE,
432  p_module_type               IN    		VARCHAR2 := NULL,
433  x_return_status             OUT NOCOPY                VARCHAR2,
434  x_msg_count                 OUT NOCOPY                NUMBER,
435  x_msg_data                  OUT NOCOPY                VARCHAR2,
436  p_x_mr_ACTION_TBL           IN OUT NOCOPY 	MR_ACTION_TBL
437  )
438 as
439  l_api_name     CONSTANT VARCHAR2(30):= 'PROCESS_MR_ACTION';
440  l_api_version  CONSTANT NUMBER:= 1.0;
441  l_num_rec               NUMBER;
442  l_msg_count             NUMBER;
443  l_msg_data              VARCHAR2(2000);
444  l_return_status         VARCHAR2(1);
445  l_init_msg_list         VARCHAR2(10):=FND_API.G_TRUE;
446  l_commit                VARCHAR2(1):= FND_API.G_FALSE;
447  l_rowid                 VARCHAR2(30):=fnd_api.g_miss_char;
448  l_MR_ACTION_ID          NUMBER:=0;
449  l_mr_action_rec         MR_ACTION_REC;
450  BEGIN
451         SAVEPOINT PROCESS_MR_ACTION;
452 
453    --   Standard call to check for call compatibility.
454 
455         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
456                                          p_api_version,
457                                          l_api_name,G_PKG_NAME)  THEN
458                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
459         END IF;
460 
461    --   Initialize message list if p_init_msg_list is set to TRUE.
462 
463         IF FND_API.to_boolean(l_init_msg_list) THEN
464                 FND_MSG_PUB.initialize;
465         END IF;
466 
467    --   Initialize API return status to success
468 
469         x_return_status:=FND_API.G_RET_STS_SUCCESS;
470 
471    --   Enable Debug
472 
473         IF G_DEBUG='Y' THEN
474 		  AHL_DEBUG_PUB.enable_debug;
475 		  AHL_DEBUG_PUB.debug( 'Enter PROCESS_MR_ACTION','+FMP_ACTION+');
476 	END IF;
477 
478         IF p_module_type = 'JSP'
479         THEN
480                 FOR i IN  P_X_MR_ACTION_TBL.FIRST.. P_X_MR_ACTION_TBL.LAST
481                 LOOP
482                         p_x_mr_ACTION_TBL(i).mr_action_code:=FND_API.G_MISS_CHAR;
483                         p_x_mr_ACTION_TBL(i).plan_id:=FND_API.G_MISS_NUM;
484                         if p_x_mr_ACTION_TBL(i).dml_operation='C'
485                         then
486                                 p_x_mr_ACTION_TBL(i).OBJECT_VERSION_NUMBER:=1;
487                         end if;
488                 END LOOP;
489         END IF;
490 
491         -- No need to translate meaning to id if dml operation is delete.
492         FOR i IN  P_X_MR_ACTION_TBL.FIRST.. P_X_MR_ACTION_TBL.LAST
493         LOOP
494 
495         IF p_x_mr_ACTION_TBL(i).DML_OPERATION<>'D'
496         THEN
497                 l_mr_action_rec:=p_x_mr_ACTION_TBL(i);
498 
499                  TRANS_VALUE_ID
500                  (
501                  x_return_status             =>x_return_Status,
502                  p_x_mr_action_rec           =>l_mr_action_rec);
503 
504                  p_x_mr_ACTION_TBL(i).mr_Action_code:=l_mr_action_rec.mr_Action_code;
505                  p_x_mr_ACTION_TBL(i).plan_id:=l_mr_action_rec.plan_id;
506          END IF;
507 
508 
509         END LOOP;
510 
511         l_msg_count := FND_MSG_PUB.count_msg;
512         IF l_msg_count > 0 THEN
513            X_msg_count := l_msg_count;
514            X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
515            RAISE FND_API.G_EXC_ERROR;
516         END IF;
517 
518 
519         IF FND_API.to_boolean(p_default)
520         THEN
521          DEFAULT_MISSING_ATTRIBS
522          (
523          p_x_mr_action_tbl             =>p_x_mr_action_tbl
524          );
525         END IF;
526 
527 
528    --Start of API Body
529 
530         FOR i IN  P_X_MR_ACTION_TBL.FIRST.. P_X_MR_ACTION_TBL.LAST
531         LOOP
532 
533          x_return_status:=FND_API.G_RET_STS_SUCCESS;
534 
535          IF l_mr_action_rec.dml_operation<>'D'
536          THEN
537 
538          IF (p_validation_level = FND_API.G_VALID_LEVEL_FULL )
539          THEN
540 
541                  VALIDATE_MR_ACTION
542                  (
543                  x_return_status             =>x_return_Status,
544                  p_mr_action_rec             =>P_X_MR_ACTION_TBL(I));
545 
546          END IF;
547 
548          END IF;
549 
550         l_msg_count := FND_MSG_PUB.count_msg;
551         IF l_msg_count > 0 THEN
552            X_msg_count := l_msg_count;
553            X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
554         END IF;
555 
556              IF p_x_mr_ACTION_TBL(i).DML_OPERATION='D' then
557 
558                   delete from AHL_MR_ACTIONS_TL
559                   where MR_ACTION_ID = p_x_mr_ACTION_TBL(i).MR_ACTION_ID;
560 
561                   if (sql%ROWCOUNT=0)
562                   then
563                       FND_MESSAGE.SET_NAME('AHL','AHL_COM_RECORD_CHANGED');
564                       FND_MSG_PUB.ADD;
565                    else
566                      delete from AHL_MR_ACTIONS_B
567                      where MR_ACTION_ID = p_x_mr_ACTION_TBL(i).MR_ACTION_ID
568                      AND OBJECT_VERSION_NUMBER=p_x_mr_ACTION_TBL(i).OBJECT_VERSION_NUMBER;
569 
570                           if (sql%ROWCOUNT=0) then
571                                      FND_MESSAGE.SET_NAME('AHL','AHL_COM_RECORD_CHANGED');
572                                      FND_MSG_PUB.ADD;
573                           end if;
574                   end if;
575              ELSIF p_x_mr_ACTION_TBL(i).DML_operation='U' then
576 
577              IF x_return_status=FND_API.G_RET_STS_SUCCESS
578              THEN
579                 AHL_MR_ACTIONS_PKG.UPDATE_ROW (
580                           X_MR_ACTION_ID                        =>p_x_mr_ACTION_TBL(i).MR_ACTION_ID,
581                           X_OBJECT_VERSION_NUMBER               =>p_x_mr_ACTION_TBL(i).OBJECT_VERSION_NUMBER,
582                           X_MR_HEADER_ID                        =>p_x_mr_ACTION_TBL(i).MR_HEADER_ID,
583                           X_MR_ACTION_CODE                      =>p_x_mr_ACTION_TBL(i).MR_ACTION_CODE,
584                           X_PLAN_ID                             =>p_x_mr_ACTION_TBL(i).PLAN_ID,
585                           X_DESCRIPTION                         =>p_x_mr_ACTION_TBL(i).DESCRIPTION,
586                           X_ATTRIBUTE_CATEGORY                  =>p_x_mr_ACTION_TBL(i).ATTRIBUTE_CATEGORY,
587                           X_ATTRIBUTE1                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE1,
588                           X_ATTRIBUTE2                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE2,
589                           X_ATTRIBUTE3                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE3,
590                           X_ATTRIBUTE4                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE4,
591                           X_ATTRIBUTE5                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE5,
592                           X_ATTRIBUTE6                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE6,
593                           X_ATTRIBUTE7                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE7,
594                           X_ATTRIBUTE8                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE8,
595                           X_ATTRIBUTE9                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE9,
596                           X_ATTRIBUTE10                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE10,
597                           X_ATTRIBUTE11                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE11,
598                           X_ATTRIBUTE12                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE12,
599                           X_ATTRIBUTE13                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE13,
600                           X_ATTRIBUTE14                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE14,
601                           X_ATTRIBUTE15                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE15,
602                           X_LAST_UPDATE_DATE                    =>sysdate,
603                           X_LAST_UPDATED_BY                     =>fnd_global.user_id,
604                           X_LAST_UPDATE_LOGIN                   =>fnd_global.user_id);
605                         END IF;
606              ELSIF p_x_mr_ACTION_TBL(i).DML_operation='C' then
607 
608              SELECT AHL_MR_ACTIONS_B_S.NEXTVAL
609                     INTO  l_MR_ACTION_ID
610                     FROM DUAL;
611              IF x_return_status=FND_API.G_RET_STS_SUCCESS
612              THEN
613              AHL_MR_ACTIONS_PKG.INSERT_ROW (
614                           X_ROWID                               =>l_ROWID,
615                           X_MR_ACTION_ID                        =>l_MR_ACTION_ID,
616                           X_OBJECT_VERSION_NUMBER               =>1,
617                           X_MR_HEADER_ID                        =>p_x_mr_ACTION_TBL(i).MR_HEADER_ID,
618                           X_MR_ACTION_CODE                      =>p_x_mr_ACTION_TBL(i).MR_ACTION_CODE,
619                           X_PLAN_ID                             =>p_x_mr_ACTION_TBL(i).PLAN_ID,
620                           X_DESCRIPTION                         =>p_x_mr_ACTION_TBL(i).DESCRIPTION,
621                           X_ATTRIBUTE_CATEGORY                  =>p_x_mr_ACTION_TBL(i).ATTRIBUTE_CATEGORY,
622                           X_ATTRIBUTE1                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE1,
623                           X_ATTRIBUTE2                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE2,
624                           X_ATTRIBUTE3                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE3,
625                           X_ATTRIBUTE4                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE4,
626                           X_ATTRIBUTE5                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE5,
627                           X_ATTRIBUTE6                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE6,
628                           X_ATTRIBUTE7                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE7,
629                           X_ATTRIBUTE8                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE8,
630                           X_ATTRIBUTE9                          =>p_x_mr_ACTION_TBL(i).ATTRIBUTE9,
631                           X_ATTRIBUTE10                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE10,
632                           X_ATTRIBUTE11                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE11,
633                           X_ATTRIBUTE12                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE12,
634                           X_ATTRIBUTE13                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE13,
635                           X_ATTRIBUTE14                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE14,
636                           X_ATTRIBUTE15                         =>p_x_mr_ACTION_TBL(i).ATTRIBUTE15,
637                           X_CREATION_DATE                       =>sysdate,
638                           X_CREATED_BY                          =>fnd_global.user_id,
639                           X_LAST_UPDATE_DATE                    =>sysdate,
640                           X_LAST_UPDATED_BY                     =>fnd_global.user_id,
641                           X_LAST_UPDATE_LOGIN                   =>fnd_global.user_id);
642                 END IF;
643                END IF;
644         END LOOP;
645 
646         l_msg_count := FND_MSG_PUB.count_msg;
647         IF l_msg_count > 0 THEN
648            X_msg_count := l_msg_count;
649            X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
650            RAISE FND_API.G_EXC_ERROR;
651         END IF;
652 
653 
654         IF FND_API.TO_BOOLEAN(p_commit) THEN
655             COMMIT;
656         END IF;
657 
658     -- Debug info
659 
660         IF G_DEBUG='Y' THEN
661 		  AHL_DEBUG_PUB.debug( 'End of Private api '||l_api_name,'+debug+');
662 	END IF;
663 
664         IF G_DEBUG='Y' THEN
665 		  AHL_DEBUG_PUB.disable_debug;
666 	END IF;
667 
668 EXCEPTION
669  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
670     ROLLBACK TO PROCESS_MR_ACTION;
671     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
672     FND_MSG_PUB.count_and_get( p_encoded =>FND_API.G_FALSE,
673                                p_count => x_msg_count,
674                                p_data  => x_msg_data);
675 
676  WHEN FND_API.G_EXC_ERROR THEN
677     ROLLBACK TO PROCESS_MR_ACTION;
678     X_return_status := FND_API.G_RET_STS_ERROR;
679     FND_MSG_PUB.count_and_get( p_encoded =>FND_API.G_FALSE,
680                                p_count => x_msg_count,
681                                p_data  => X_msg_data);
682  WHEN OTHERS THEN
683     ROLLBACK TO PROCESS_MR_ACTION;
684     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
685     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
686     THEN
687     fnd_msg_pub.add_exc_msg(p_pkg_name        =>G_PKG_NAME,
688                             p_procedure_name  =>l_api_name,
689                             p_error_text      =>SUBSTR(SQLERRM,1,240)
690                             );
691     END IF;
692     FND_MSG_PUB.count_and_get( p_encoded =>FND_API.G_FALSE,
693                                p_count => x_msg_count,
694                                p_data  => X_msg_data);
695 END;
696 END AHL_FMP_MR_ACTION_PVT;