DBA Data[Home] [Help]

PACKAGE BODY: APPS.AHL_REPAIR_CATEGORIES_PVT

Source


1 PACKAGE BODY AHL_REPAIR_CATEGORIES_PVT AS
2 /* $Header: AHLVRCTB.pls 120.12 2006/08/22 07:45:38 priyan noship $ */
3 
4 G_USER_ID   CONSTANT    NUMBER      := TO_NUMBER(FND_GLOBAL.USER_ID);
5 G_LOGIN_ID  CONSTANT    NUMBER      := TO_NUMBER(FND_GLOBAL.LOGIN_ID);
6 G_SYSDATE   CONSTANT    DATE        := SYSDATE;
7 
8 l_dummy_varchar     VARCHAR2(1);
9 l_dummy_number      NUMBER;
10 
11 -------------------------------------
12 -- Validation procedure signatures --
13 -------------------------------------
14 PROCEDURE VALIDATE_REP_CAT_EXISTS
15 (
16     p_rep_cat_id in number,
17     p_object_ver_num in number
18 );
19 
20 PROCEDURE PROCESS_REPAIR_CATEGORIES
21 (
22     p_api_version               IN          NUMBER,
23     p_init_msg_list             IN          VARCHAR2    := FND_API.G_TRUE,
24     p_commit                    IN          VARCHAR2    := FND_API.G_TRUE,
25     p_validation_level          IN          NUMBER      := FND_API.G_VALID_LEVEL_FULL,
26     p_default                   IN          VARCHAR2    := FND_API.G_FALSE,
27     p_module_type               IN          VARCHAR2    := NULL,
28     x_return_status             OUT NOCOPY  VARCHAR2,
29     x_msg_count                 OUT NOCOPY  NUMBER,
30     x_msg_data                  OUT NOCOPY  VARCHAR2,
31     p_x_repair_category_tbl     IN OUT NOCOPY   Repair_Category_Tbl_Type
32 )
33 IS
34 
35     CURSOR check_srurg_exists
36     (
37         sru_id in number
38     )
39     IS
40     SELECT  name
41     FROM    cs_incident_urgencies_vl
42     WHERE   incident_urgency_id = sru_id AND
43             trunc(sysdate) >= trunc(nvl(start_date_active, sysdate)) AND
44             trunc(sysdate) < trunc(nvl(end_date_active, sysdate + 1));
45 
46     CURSOR get_srurg_id_from_name
47     (
48         sr_name in varchar2
49     )
50     IS
51     SELECT  incident_urgency_id
52     FROM    cs_incident_urgencies_vl
53     WHERE   name = sr_name AND
54             trunc(sysdate) >= trunc(nvl(start_date_active, sysdate)) AND
55             trunc(sysdate) < trunc(nvl(end_date_active, sysdate + 1));
56 
57     CURSOR check_repcat_exists
58     (
59         srurg_id in number
60     )
61     IS
62     SELECT  'x'
63     FROM    ahl_repair_categories
64     WHERE   sr_urgency_id = srurg_id;
65 
66     CURSOR check_reptime_exists
67     (
68         reptime in number,
69         repcat_id in number
70     )
71     IS
72     SELECT  'x'
73     FROM    ahl_repair_categories
74     WHERE   nvl(repair_time, -1) = nvl(reptime, -1) AND
75             (repcat_id is null or repcat_id <> repair_category_id);
76 
77     CURSOR check_repcat_assoc
78     (
79         rep_cat_id in number
80     )
81     IS
82     SELECT  'x'
83     FROM    ahl_mel_cdl_ata_sequences
84     WHERE   repair_category_id = rep_cat_id;
85 
86     CURSOR check_srurg_chg_for_upd
87     (
88         rep_cat_id in number,
89         sr_id in number
90     )
91     IS
92     SELECT  'x'
93     FROM    ahl_repair_categories
94     WHERE   repair_category_id = rep_cat_id AND
95             sr_urgency_id = sr_id;
96 
97     l_api_name      CONSTANT    VARCHAR2(30)    := 'PROCESS_REPAIR_CATEGORIES';
98     l_api_version   CONSTANT    NUMBER          := 1.0;
99     l_debug_module  CONSTANT    VARCHAR2(100)   := 'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name;
100 
101 BEGIN
102     -- Standard Start of API savepoint
103     SAVEPOINT process_repair_categories_sp;
104 
105      -- Standard call to check for call compatibility.
106     IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,p_api_version,l_api_name,G_PKG_NAME)
107     THEN
108         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
109     END IF;
110 
111     -- Initialize message list if p_init_msg_list is set to TRUE.
112     IF FND_API.to_boolean(p_init_msg_list)
113     THEN
114         FND_MSG_PUB.initialize;
115     END IF;
116 
117     --  Initialize API return status to success
118     x_return_status := FND_API.G_RET_STS_SUCCESS;
119 
120     IF p_x_repair_category_tbl.count > 0
121     THEN
122         -- The first loop will perform all common validations + delete the records
123         FOR i IN p_x_repair_category_tbl.FIRST..p_x_repair_category_tbl.LAST
124         LOOP
125             -- Verify DML operation flag is right...
126             IF (p_x_repair_category_tbl(i).dml_operation NOT IN ( 'C', 'D', 'U'))
127             THEN
128                 FND_MESSAGE.SET_NAME(G_APP_NAME, 'AHL_COM_INVALID_DML');
129                 FND_MESSAGE.SET_TOKEN('FIELD', p_x_repair_category_tbl(i).dml_operation);
130                 FND_MESSAGE.SET_TOKEN('RECORD', p_x_repair_category_tbl(i).incident_urgency_name||' - '||p_x_repair_category_tbl(i).repair_time);
131                 FND_MSG_PUB.ADD;
132                 RAISE FND_API.G_EXC_ERROR;
133             END IF;
134 
135             IF (p_x_repair_category_tbl(i).DML_OPERATION = 'D')
136             THEN
137                 -- Validate id + ovn combination...
138                 VALIDATE_REP_CAT_EXISTS
139                 (
140                     p_x_repair_category_tbl(i).repair_category_id,
141                     p_x_repair_category_tbl(i).object_version_number
142                 );
143 
144                 OPEN check_repcat_assoc (p_x_repair_category_tbl(i).repair_category_id);
145                 FETCH check_repcat_assoc INTO l_dummy_varchar;
146                 IF (check_repcat_assoc%NOTFOUND)
147                 THEN
148                     DELETE FROM ahl_repair_categories
149                     WHERE repair_category_id = p_x_repair_category_tbl(i).repair_category_id;
150                 ELSE
151                     SELECT  cssr.name
152                     INTO    p_x_repair_category_tbl(i).incident_urgency_name
153                     FROM    cs_incident_urgencies_vl cssr , ahl_repair_categories repcat
154                     WHERE   repcat.sr_urgency_id = cssr.incident_urgency_id AND
155                             repcat.repair_category_id = p_x_repair_category_tbl(i).repair_category_id;
156 
157                     FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_MEL_CDL_REPCAT_ATASEQ_DEL');
158                     FND_MESSAGE.SET_TOKEN('SRNAME', p_x_repair_category_tbl(i).incident_urgency_name);
159                     FND_MSG_PUB.ADD;
160                 END IF;
161                 CLOSE check_repcat_assoc;
162 
163                 -- Check error message stack
164                 x_msg_count := FND_MSG_PUB.count_msg;
165                 IF x_msg_count > 0
166                 THEN
167                     RAISE FND_API.G_EXC_ERROR;
168                 END IF;
169             END IF;
170         END LOOP;
171 
172         -- The second loop will update the records
173         FOR i IN p_x_repair_category_tbl.FIRST..p_x_repair_category_tbl.LAST
174         LOOP
175             IF (p_x_repair_category_tbl(i).dml_operation = 'U')
176             THEN
177                 -- Validate id + ovn combination...
178                 VALIDATE_REP_CAT_EXISTS
179                 (
180                     p_x_repair_category_tbl(i).repair_category_id,
181                     p_x_repair_category_tbl(i).object_version_number
182                 );
183 
184                 -- Resolve sr urgency name and id, perform mandatory validations
185                 IF (p_x_repair_category_tbl(i).incident_urgency_name IS NOT NULL AND p_x_repair_category_tbl(i).incident_urgency_name <> FND_API.G_MISS_CHAR)
186                 THEN
187                     OPEN get_srurg_id_from_name (p_x_repair_category_tbl(i).incident_urgency_name);
188                     FETCH get_srurg_id_from_name INTO p_x_repair_category_tbl(i).incident_urgency_id;
189                     IF (get_srurg_id_from_name%NOTFOUND)
190                     THEN
191                         FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_MEL_CDL_SRURG_INV');
192                         FND_MESSAGE.SET_TOKEN('SRNAME', p_x_repair_category_tbl(i).incident_urgency_name);
193                         FND_MSG_PUB.ADD;
194                     END IF;
195                     CLOSE get_srurg_id_from_name;
196                 ELSIF (p_x_repair_category_tbl(i).incident_urgency_id IS NOT NULL AND p_x_repair_category_tbl(i).incident_urgency_id <> FND_API.G_MISS_NUM)
197                 THEN
198                     OPEN check_srurg_exists (p_x_repair_category_tbl(i).incident_urgency_id);
199                     FETCH check_srurg_exists INTO p_x_repair_category_tbl(i).incident_urgency_name;
200                     IF (check_srurg_exists%NOTFOUND)
201                     THEN
202                         FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_MEL_CDL_SRURG_INV');
203                         FND_MESSAGE.SET_TOKEN('SRNAME', p_x_repair_category_tbl(i).incident_urgency_id);
204                         FND_MSG_PUB.ADD;
205                         RAISE FND_API.G_EXC_ERROR;
206                     END IF;
207                     CLOSE check_srurg_exists;
208                 ELSE
209                     FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_MEL_CDL_SRURG_MAND');
210                     FND_MSG_PUB.ADD;
211                 END IF;
212 
213 		-- Trim the urgency name passed in
214 		   p_x_repair_category_tbl(i).incident_urgency_name := LTRIM(RTRIM(p_x_repair_category_tbl(i).incident_urgency_name));
215 
216                 -- Validate sr urgency is not modified for update
217                 OPEN check_srurg_chg_for_upd (p_x_repair_category_tbl(i).repair_category_id, p_x_repair_category_tbl(i).incident_urgency_id);
218                 FETCH check_srurg_chg_for_upd INTO l_dummy_varchar;
219                 IF (check_srurg_chg_for_upd%NOTFOUND)
220                 THEN
221                     FND_MESSAGE.SET_NAME(G_APP_NAME, 'AHL_MEL_CDL_SRURG_UPD_NOCHG');
222                     FND_MESSAGE.SET_TOKEN('SRNAME', p_x_repair_category_tbl(i).incident_urgency_name);
223                     FND_MSG_PUB.ADD;
224                 END IF;
225                 CLOSE check_srurg_chg_for_upd;
226 
227                 -- Validate repair time is valid
228                 IF (p_x_repair_category_tbl(i).repair_time <= 0 )
229                 THEN
233                 END IF;
230                     FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_MEL_CDL_SRURG_TIME_INV');
231                     FND_MESSAGE.SET_TOKEN('SRNAME', p_x_repair_category_tbl(i).incident_urgency_name);
232                     FND_MSG_PUB.ADD;
234 
235                 -- Validate repair time already does not exist for another record
236                 OPEN check_reptime_exists(p_x_repair_category_tbl(i).repair_time, p_x_repair_category_tbl(i).repair_category_id);
237                 FETCH check_reptime_exists INTO l_dummy_varchar;
238                 IF (check_reptime_exists%FOUND)
239                 THEN
240                     FND_MESSAGE.SET_NAME(G_APP_NAME, 'AHL_MEL_CDL_SRURG_TIME_EXISTS');
241                     FND_MESSAGE.SET_TOKEN('TIME', p_x_repair_category_tbl(i).repair_time);
242                     FND_MSG_PUB.ADD;
243                 END IF;
244                 CLOSE check_reptime_exists;
245 
246                 -- Check error message stack
247                 x_msg_count := FND_MSG_PUB.count_msg;
248                 IF x_msg_count > 0
249                 THEN
250                     RAISE FND_API.G_EXC_ERROR;
251                 END IF;
252 
253                 -- Default values for update
254                 p_x_repair_category_tbl(i).object_version_number := p_x_repair_category_tbl(i).object_version_number + 1;
255 
256                 UPDATE  AHL_REPAIR_CATEGORIES
257                 SET     OBJECT_VERSION_NUMBER   = p_x_repair_category_tbl(i).object_version_number,
258                         LAST_UPDATE_DATE        = G_SYSDATE,
259                         LAST_UPDATED_BY         = G_USER_ID,
260                         LAST_UPDATE_LOGIN       = G_LOGIN_ID,
261                         REPAIR_TIME             = p_x_repair_category_tbl(i).repair_time,
262                         SR_URGENCY_ID           = p_x_repair_category_tbl(i).incident_urgency_id,
263                         ATTRIBUTE_CATEGORY      = p_x_repair_category_tbl(i).attribute_category,
264                         ATTRIBUTE1              = p_x_repair_category_tbl(i).attribute1,
265                         ATTRIBUTE2              = p_x_repair_category_tbl(i).attribute2,
266                         ATTRIBUTE3              = p_x_repair_category_tbl(i).attribute3,
267                         ATTRIBUTE4              = p_x_repair_category_tbl(i).attribute4,
268                         ATTRIBUTE5              = p_x_repair_category_tbl(i).attribute5,
269                         ATTRIBUTE6              = p_x_repair_category_tbl(i).attribute6,
270                         ATTRIBUTE7              = p_x_repair_category_tbl(i).attribute7,
271                         ATTRIBUTE8              = p_x_repair_category_tbl(i).attribute8,
272                         ATTRIBUTE9              = p_x_repair_category_tbl(i).attribute9,
273                         ATTRIBUTE10             = p_x_repair_category_tbl(i).attribute10,
274                         ATTRIBUTE11             = p_x_repair_category_tbl(i).attribute11,
275                         ATTRIBUTE12             = p_x_repair_category_tbl(i).attribute12,
276                         ATTRIBUTE13             = p_x_repair_category_tbl(i).attribute13,
277                         ATTRIBUTE14             = p_x_repair_category_tbl(i).attribute14,
278                         ATTRIBUTE15             = p_x_repair_category_tbl(i).attribute15
279                 WHERE   REPAIR_CATEGORY_ID = p_x_repair_category_tbl(i).repair_category_id;
280 
281                 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)
282                 THEN
283                     fnd_log.string
284                     (
285                         fnd_log.level_statement,
286                         l_debug_module,
287                         'Update repair category ' ||p_x_repair_category_tbl(i).repair_category_id
288                     );
289                 END IF;
290             END IF;
291         END LOOP;
292 
293         -- The second loop will create the records
294         FOR i IN p_x_repair_category_tbl.FIRST..p_x_repair_category_tbl.LAST
295         LOOP
296             IF (p_x_repair_category_tbl(i).dml_operation = 'C')
297             THEN
298 
299 	        -- Resolve sr urgency name and id, perform mandatory validations
300                 IF (p_x_repair_category_tbl(i).incident_urgency_name IS NOT NULL AND p_x_repair_category_tbl(i).incident_urgency_name <> FND_API.G_MISS_CHAR)
301                 THEN
302                     OPEN get_srurg_id_from_name (p_x_repair_category_tbl(i).incident_urgency_name);
303                     FETCH get_srurg_id_from_name INTO p_x_repair_category_tbl(i).incident_urgency_id;
304                     IF (get_srurg_id_from_name%NOTFOUND)
305                     THEN
306                         FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_MEL_CDL_SRURG_INV');
307                         FND_MESSAGE.SET_TOKEN('SRNAME', p_x_repair_category_tbl(i).incident_urgency_name);
308                         FND_MSG_PUB.ADD;
309                     END IF;
310                     CLOSE get_srurg_id_from_name;
311                 ELSIF (p_x_repair_category_tbl(i).incident_urgency_id IS NOT NULL AND p_x_repair_category_tbl(i).incident_urgency_id <> FND_API.G_MISS_NUM)
312                 THEN
313                     OPEN check_srurg_exists (p_x_repair_category_tbl(i).incident_urgency_id);
314                     FETCH check_srurg_exists INTO p_x_repair_category_tbl(i).incident_urgency_name;
315                     IF (check_srurg_exists%NOTFOUND)
316                     THEN
317                         FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_MEL_CDL_SRURG_INV');
318                         FND_MESSAGE.SET_TOKEN('SRNAME', p_x_repair_category_tbl(i).incident_urgency_id);
319                         FND_MSG_PUB.ADD;
320                         RAISE FND_API.G_EXC_ERROR;
321                     END IF;
322                     CLOSE check_srurg_exists;
323                 ELSE
324                     FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_MEL_CDL_SRURG_MAND');
325                     FND_MSG_PUB.ADD;
326                 END IF;
327 
331                 -- Validate sr urgency already does not exist for another record
328 		-- Trim the urgency name passed in
329 		   p_x_repair_category_tbl(i).incident_urgency_name := LTRIM(RTRIM(p_x_repair_category_tbl(i).incident_urgency_name));
330 
332                 OPEN check_repcat_exists(p_x_repair_category_tbl(i).incident_urgency_id);
333                 FETCH check_repcat_exists INTO l_dummy_varchar;
334                 IF (check_repcat_exists%FOUND)
335                 THEN
336                     FND_MESSAGE.SET_NAME(G_APP_NAME, 'AHL_MEL_CDL_SRURG_EXISTS');
337                     FND_MESSAGE.SET_TOKEN('SRNAME', p_x_repair_category_tbl(i).incident_urgency_name);
338                     FND_MSG_PUB.ADD;
339                 END IF;
340                 CLOSE check_repcat_exists;
341 
342                 -- Validate repair time is valid
343                 IF (p_x_repair_category_tbl(i).repair_time <= 0 )
344                 THEN
345                     FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_MEL_CDL_SRURG_TIME_INV');
346                     FND_MESSAGE.SET_TOKEN('SRNAME', p_x_repair_category_tbl(i).incident_urgency_name);
347                     FND_MSG_PUB.ADD;
348                 END IF;
349 
350                 -- Validate repair time already does not exist for another record
351                 OPEN check_reptime_exists(p_x_repair_category_tbl(i).repair_time, null);
352                 FETCH check_reptime_exists INTO l_dummy_varchar;
353                 IF (check_reptime_exists%FOUND)
354                 THEN
355                     FND_MESSAGE.SET_NAME(G_APP_NAME, 'AHL_MEL_CDL_SRURG_TIME_EXISTS');
356                     FND_MESSAGE.SET_TOKEN('TIME', p_x_repair_category_tbl(i).repair_time);
357                     FND_MSG_PUB.ADD;
358                 END IF;
359                 CLOSE check_reptime_exists;
360 
361                 -- Check error message stack
362                 x_msg_count := FND_MSG_PUB.count_msg;
363                 IF x_msg_count > 0
364                 THEN
365                     RAISE FND_API.G_EXC_ERROR;
366                 END IF;
367 
368                 -- Default values for create
369                 IF (p_x_repair_category_tbl(i).repair_category_id IS NULL OR p_x_repair_category_tbl(i).repair_category_id = FND_API.G_MISS_NUM)
370                 THEN
371                     select ahl_repair_categories_s.nextval into p_x_repair_category_tbl(i).repair_category_id from dual;
372                 END IF;
373                 p_x_repair_category_tbl(i).object_version_number := 1;
374 
375                 INSERT INTO AHL_REPAIR_CATEGORIES
376                 (
377                     REPAIR_CATEGORY_ID,
378                     OBJECT_VERSION_NUMBER,
379                     LAST_UPDATE_DATE,
380                     LAST_UPDATED_BY,
381                     CREATION_DATE,
382                     CREATED_BY,
383                     LAST_UPDATE_LOGIN,
384                     REPAIR_TIME,
385                     SR_URGENCY_ID,
386                     ATTRIBUTE_CATEGORY,
387                     ATTRIBUTE1,
388                     ATTRIBUTE2,
389                     ATTRIBUTE3,
390                     ATTRIBUTE4,
391                     ATTRIBUTE5,
392                     ATTRIBUTE6,
393                     ATTRIBUTE7,
394                     ATTRIBUTE8,
395                     ATTRIBUTE9,
396                     ATTRIBUTE10,
397                     ATTRIBUTE11,
398                     ATTRIBUTE12,
399                     ATTRIBUTE13,
400                     ATTRIBUTE14,
401                     ATTRIBUTE15
402                 )
403                 VALUES
404                 (
405                     p_x_repair_category_tbl(i).repair_category_id,
406                     p_x_repair_category_tbl(i).object_version_number,
407                     G_SYSDATE,
408                     G_USER_ID,
409                     G_SYSDATE,
410                     G_USER_ID,
411                     G_LOGIN_ID,
412                     p_x_repair_category_tbl(i).repair_time,
413                     p_x_repair_category_tbl(i).incident_urgency_id,
414                     p_x_repair_category_tbl(i).attribute_category,
415                     p_x_repair_category_tbl(i).attribute1,
416                     p_x_repair_category_tbl(i).attribute2,
417                     p_x_repair_category_tbl(i).attribute3,
418                     p_x_repair_category_tbl(i).attribute4,
419                     p_x_repair_category_tbl(i).attribute5,
420                     p_x_repair_category_tbl(i).attribute6,
421                     p_x_repair_category_tbl(i).attribute7,
422                     p_x_repair_category_tbl(i).attribute8,
423                     p_x_repair_category_tbl(i).attribute9,
424                     p_x_repair_category_tbl(i).attribute10,
425                     p_x_repair_category_tbl(i).attribute11,
426                     p_x_repair_category_tbl(i).attribute12,
427                     p_x_repair_category_tbl(i).attribute13,
428                     p_x_repair_category_tbl(i).attribute14,
429                     p_x_repair_category_tbl(i).attribute15
430                 );
431 
432                 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)
433                 THEN
434                     fnd_log.string
435                     (
436                         fnd_log.level_statement,
437                         l_debug_module,
438                         'Create repair category ' ||p_x_repair_category_tbl(i).repair_category_id
439                     );
440                 END IF;
441             END IF;
442         END LOOP;
443     END IF;
444 
445     -- Check error message stack at completing proc
446     x_msg_count := FND_MSG_PUB.count_msg;
447     IF x_msg_count > 0
448     THEN
449         RAISE FND_API.G_EXC_ERROR;
450     END IF;
451 
452     -- Commit if required to do so
456     END IF;
453     IF FND_API.TO_BOOLEAN (p_commit)
454     THEN
455         COMMIT WORK;
457 
458     -- Standard call to get message count and if count is 1, get message info
459     FND_MSG_PUB.count_and_get
460     (
461         p_count     => x_msg_count,
462         p_data      => x_msg_data,
463         p_encoded   => FND_API.G_FALSE
464     );
465 
466 EXCEPTION
467     WHEN FND_API.G_EXC_ERROR THEN
468         x_return_status := FND_API.G_RET_STS_ERROR;
469         Rollback to process_repair_categories_sp;
470         FND_MSG_PUB.count_and_get
471         (
472             p_count     => x_msg_count,
473             p_data      => x_msg_data,
474             p_encoded   => FND_API.G_FALSE
475         );
476 
477     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
478         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
479         Rollback to process_repair_categories_sp;
480         FND_MSG_PUB.count_and_get
481         (
482             p_count     => x_msg_count,
483             p_data      => x_msg_data,
484             p_encoded   => FND_API.G_FALSE
485         );
486 
487     WHEN OTHERS THEN
488         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
489         Rollback to process_repair_categories_sp;
490         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
491         THEN
492             FND_MSG_PUB.add_exc_msg
493             (
494                 p_pkg_name          => G_PKG_NAME,
495                 p_procedure_name    => l_api_name,
496                 p_error_text        => SUBSTR(SQLERRM,1,240)
497             );
498         END IF;
499         FND_MSG_PUB.count_and_get
500         (
501             p_count     => x_msg_count,
502             p_data      => x_msg_data,
503             p_encoded   => FND_API.G_FALSE
504         );
505 END PROCESS_REPAIR_CATEGORIES;
506 
507 ---------------------------
508 -- Validation procedures --
509 ---------------------------
510 PROCEDURE VALIDATE_REP_CAT_EXISTS
511 (
512     p_rep_cat_id in number,
513     p_object_ver_num in number
514 )
515 IS
516 
517     CURSOR check_rep_cat_exists
518     (
519         p_rep_cat_id in number
520     )
521     IS
522     SELECT  object_version_number
523     FROM    ahl_repair_categories
524     WHERE   repair_category_id = p_rep_cat_id;
525 
526 BEGIN
527 
528     OPEN check_rep_cat_exists (p_rep_cat_id);
529     FETCH check_rep_cat_exists INTO l_dummy_number;
530 
531     IF (check_rep_cat_exists%NOTFOUND)
532     THEN
533         CLOSE check_rep_cat_exists;
534         FND_MESSAGE.SET_NAME(G_APP_NAME, 'AHL_MEL_CDL_REPCAT_NOTFOUND');
535         FND_MSG_PUB.ADD;
536         RAISE FND_API.G_EXC_ERROR;
537     ELSIF (p_object_ver_num <> l_dummy_number)
538     THEN
539         CLOSE check_rep_cat_exists;
540         FND_MESSAGE.SET_NAME(G_APP_NAME, 'AHL_COM_RECORD_CHANGED');
541         FND_MSG_PUB.ADD;
542         RAISE FND_API.G_EXC_ERROR;
543     END IF;
544     CLOSE check_rep_cat_exists;
545 
546 END VALIDATE_REP_CAT_EXISTS;
547 
548 End AHL_REPAIR_CATEGORIES_PVT;