DBA Data[Home] [Help]

PACKAGE BODY: APPS.AHL_DI_DOC_REVISION_PVT

Source


1 PACKAGE BODY AHL_DI_DOC_REVISION_PVT AS
2 /* $Header: AHLVDORB.pls 120.0 2005/05/26 01:44:41 appldev noship $ */
3 --
4 G_PKG_NAME  VARCHAR2(30)  := 'AHL_DI_DOC_REVISION_PVT';
5 --
6 /*---------------------------------------------------------*/
7 /* procedure name: validate_revision(private procedure)    */
8 /* description :  Validation checks for before inserting   */
9 /*                new record as well before modification   */
10 /*                takes place                              */
11 /*---------------------------------------------------------*/
12 
13 G_DEBUG 		 VARCHAR2(1):=AHL_DEBUG_PUB.is_log_enabled;
14 PROCEDURE VALIDATE_REVISION
15 (
16  P_DOC_REVISION_ID        IN    NUMBER    ,
17  P_DOCUMENT_ID            IN    NUMBER    ,
18  P_REVISION_NO            IN    VARCHAR2  ,
19  P_REVISION_TYPE_CODE     IN    VARCHAR2  ,
20  P_REVISION_STATUS_CODE   IN    VARCHAR2  ,
21  P_REVISION_DATE          IN    DATE      ,
22  P_APPROVED_BY_PARTY_ID   IN    NUMBER    ,
23  P_APPROVED_DATE          IN    DATE      ,
24  P_EFFECTIVE_DATE         IN    DATE      ,
25  P_OBSOLETE_DATE          IN    DATE      ,
26  P_ISSUE_DATE             IN    DATE      ,
27  P_RECEIVED_DATE          IN    DATE      ,
28  P_MEDIA_TYPE_CODE        IN    VARCHAR2  ,
29  P_ISSUE_NUMBER           IN    NUMBER    ,
30  P_DELETE_FLAG            IN    VARCHAR2  := 'N' )
31 IS
32 
33 --Cursor to retrieve the revision type code
34 CURSOR get_revision_type_code(c_revision_type_code VARCHAR2)
35  IS
36 SELECT lookup_code
37   FROM FND_LOOKUP_VALUES_VL
38  WHERE lookup_code = c_revision_type_code
39    AND lookup_type = 'AHL_REVISION_TYPE'
40    AND sysdate between start_date_active
41    AND nvl(end_date_active,sysdate);
42 
43 --Cursor to retrieve revision status code
44 CURSOR get_revision_status_code(c_revision_status_code VARCHAR2)
45  IS
46 SELECT lookup_code
47   FROM FND_LOOKUP_VALUES_VL
48  WHERE lookup_code = c_revision_status_code
49    AND lookup_type = 'AHL_REVISION_STATUS_TYPE'
50    AND sysdate between start_date_active
51    AND nvl(end_date_active,sysdate);
52 
53 --Cursor to retrieve media type code
54 CURSOR get_media_type_code(c_media_type_code VARCHAR2)
55  IS
56 SELECT lookup_code
57   FROM FND_LOOKUP_VALUES_VL
58  WHERE lookup_code = c_media_type_code
59    AND lookup_type = 'AHL_MEDIA_TYPE'
60    AND sysdate between start_date_active
61    AND nvl(end_date_active,sysdate);
62 
63  -- Used to validate the document id
64 CURSOR check_doc_info(c_document_id  NUMBER)
65  IS
66 SELECT 'X'
67   FROM AHL_DOCUMENTS_B
68  WHERE document_id  = c_document_id;
69 
70 -- Retrieves doc revision record
71 CURSOR get_doc_revision_rec_info (c_doc_revision_id NUMBER)
72  IS
73 SELECT document_id,
74        revision_no,
75        revision_type_code,
76        revision_status_code,
77        revision_date,
78        approved_by_party_id,
79        approved_date,
80        effective_date,
81        obsolete_date,
82        issue_date,
83        received_date,
84        media_type_code,
85        issue_number
86   FROM AHL_DOC_REVISIONS_B
87  WHERE doc_revision_id = c_doc_revision_id;
88 
89 -- Check for Duplicate Record
90 CURSOR dup_rec(c_document_id  NUMBER,
91                c_revision_no VARCHAR2)
92  IS
93 SELECT 'X'
94   FROM AHL_DOC_REVISIONS_B
95 WHERE document_id = c_document_id
96   AND revision_no = c_revision_no;
97 
98 --Modified pjha 25-Jun-2002 for restricting Media Type to Electronic File
99 --if there is a file uploaded for the document : Begin
100 --Cursor to check if record exist in IBC_CITEM_LIVE_V
101 CURSOR get_record_from_AHL(c_doc_revision_id VARCHAR2)
102 IS
103 SELECT '1'
104 FROM AHL_DOC_FILE_ASSOC_V
105 WHERE revision_id = c_doc_revision_id;
106 --Modified pjha 25-Jun-2002 for restricting Media Type to Electronic File
107 --if there is a file uploaded for the document : End
108  --
109  l_api_name        CONSTANT VARCHAR2(30) := 'VALIDATE_REVISION';
110  l_api_version     CONSTANT NUMBER       := 1.0;
111  l_dummy                    VARCHAR2(2000);
112  l_doc_revision_id          NUMBER;
113  l_revision_no              VARCHAR2(30);
114  l_document_id              NUMBER;
115  l_revision_type_code       VARCHAR2(30);
116  l_revision_status_code     VARCHAR2(30);
117  l_revision_date            DATE;
118  l_approved_by_party_id     NUMBER;
119  l_approved_date            DATE;
120  l_effective_date           DATE;
121  l_obsolete_date            DATE;
122  l_issue_date               DATE;
123  l_received_date            DATE;
124  l_media_type_code          VARCHAR2(30);
125  l_media_type_meaning       VARCHAR2(80);
126  l_issue_number             NUMBER;
127 
128  BEGIN
129    --When the delete flag is 'YES' means either insert or update
130    IF NVL(p_delete_flag,'N')  <> 'Y'
131    THEN
132     IF p_doc_revision_id IS NOT NULL
133     THEN
134        OPEN get_doc_revision_rec_info(p_doc_revision_id);
135        FETCH get_doc_revision_rec_info INTO l_document_id,
136                                             l_revision_no,
137                                             l_revision_type_code,
138                                             l_revision_status_code,
139                                             l_revision_date,
140                                             l_approved_by_party_id,
141                                             l_approved_date,
142                                             l_effective_date,
143                                             l_obsolete_date,
144                                             l_issue_date,
145                                             l_received_date,
146                                             l_media_type_code,
147                                             l_issue_number;
148        CLOSE get_doc_revision_rec_info;
149     END IF;
150     --
151     IF p_document_id IS NOT NULL
152     THEN
153         l_document_id := p_document_id;
154     END IF;
155     --
156     IF p_revision_no IS NOT NULL
157     THEN
158         l_revision_no := p_revision_no;
159     END IF;
160     --
161     IF p_revision_type_code IS NOT NULL
162     THEN
163         l_revision_type_code := p_revision_type_code;
164     END IF;
165     --
166     IF p_revision_status_code IS NOT NULL
167     THEN
168         l_revision_status_code := p_revision_status_code;
169     END IF;
170     --
171     IF p_revision_date IS NOT NULL
172     THEN
173         l_revision_date := p_revision_date;
174     END IF;
175     --
176     IF p_approved_by_party_id IS NOT NULL
177     THEN
178         l_approved_by_party_id := p_approved_by_party_id;
179     END IF;
180     --
181     IF p_approved_date IS NOT NULL
182     THEN
183         l_approved_date := p_approved_date;
184     END IF;
185     --
186     IF p_effective_date IS NOT NULL
187     THEN
188         l_effective_date := p_effective_date;
189     END IF;
190     --
191     IF p_obsolete_date IS NOT NULL
192     THEN
193         l_obsolete_date := p_obsolete_date;
194     END IF;
195     --
196     IF p_media_type_code IS NOT NULL
197     THEN
198         l_media_type_code := p_media_type_code;
199     END IF;
200     --
201     IF p_issue_number IS NOT NULL
202     THEN
203         l_issue_number := p_issue_number;
204     END IF;
205        l_doc_revision_id := p_doc_revision_id;
206     -- This condition checks Document Id, when the action is insert or update
207      IF ((p_doc_revision_id IS NULL AND
208          p_document_id IS NULL)
209         OR
210 
211         (p_doc_revision_id IS NOT NULL
212         AND l_document_id IS NULL))
213 
214      THEN
215         FND_MESSAGE.SET_NAME('AHL','AHL_DI_DOCUMENT_ID_NULL');
216         FND_MSG_PUB.ADD;
217      END IF;
218      --This condition checks fro Revision Number, when the action is insert or update
219      IF ((p_doc_revision_id IS NULL AND
220         p_revision_no IS NULL)
221         OR
222 
223         (p_doc_revision_id IS NOT NULL
224         AND l_revision_no IS NULL))
225      THEN
226         FND_MESSAGE.SET_NAME('AHL','AHL_DI_REVISION_NO_NULL');
227         FND_MSG_PUB.ADD;
228      END IF;
229      --This condition checks for Revision Type Code
230      IF ((p_doc_revision_id IS NULL AND
231         p_revision_type_code IS NULL)
232         OR
233 
234         (p_doc_revision_id IS NOT NULL
235         AND l_revision_type_code IS NULL))
236      THEN
237         FND_MESSAGE.SET_NAME('AHL','AHL_DI_REV_TYPE_CODE_NULL');
238         FND_MSG_PUB.ADD;
239      END IF;
240      --This condition checks for Revision Status Code
241      IF ((p_doc_revision_id IS NULL AND
242         p_revision_status_code IS NULL)
243         OR
244 
245         (p_doc_revision_id IS NOT NULL
246         AND l_revision_status_code IS NULL))
247 
248      THEN
249         FND_MESSAGE.SET_NAME('AHL','AHL_DI_REV_STATUS_CODE_NULL');
250         FND_MSG_PUB.ADD;
251      END IF;
252      -- Checks for existence of Revision type code in fnd lookups
253     IF p_revision_type_code IS NOT NULL
254     THEN
255        OPEN get_revision_type_code(p_revision_type_code);
256        FETCH get_revision_type_code INTO l_dummy;
257        IF get_revision_type_code%NOTFOUND
258        THEN
259           FND_MESSAGE.SET_NAME('AHL','AHL_DI_REV_TYPE_CODE_NOT_EXIST');
260           FND_MSG_PUB.ADD;
261         END IF;
262         CLOSE get_revision_type_code;
263      END IF;
264      --Checks for existence of Revision Status Code in fnd lookups
265     IF p_revision_status_code IS NOT NULL
266     THEN
267        OPEN get_revision_status_code(p_revision_status_code);
268        FETCH get_revision_status_code INTO l_dummy;
269        IF get_revision_status_code%NOTFOUND
270        THEN
271           FND_MESSAGE.SET_NAME('AHL','AHL_DI_REV_STAT_CODE_NOT_EXIST');
272           FND_MSG_PUB.ADD;
273         END IF;
274         CLOSE get_revision_status_code;
275      END IF;
276     -- Checks for existence of Media Type Code in fnd lookups
277     IF p_media_type_code IS NOT NULL
278     THEN
279        OPEN get_media_type_code(p_media_type_code);
280        FETCH get_media_type_code INTO l_dummy;
281        IF get_media_type_code%NOTFOUND
282        THEN
283           FND_MESSAGE.SET_NAME('AHL','AHL_DI_MEDTYP_CODE_NOT_EXISTS');
284           FND_MSG_PUB.ADD;
285         END IF;
286         CLOSE get_media_type_code;
287      END IF;
288 
289      --Modified pjha 25-Jun-2002 for restricting Media Type to Electronic File
290      --if there is a file uploaded for the document : Begin
291      IF (p_media_type_code IS NULL OR p_media_type_code <> 'E-FILE')
292      THEN
293         OPEN get_record_from_AHL(l_doc_revision_id);
294         FETCH get_record_from_AHL into l_dummy;
295         IF get_record_from_AHL%FOUND THEN
296           --{{adharia to add a token to the message
297           SELECT MEANING into l_media_type_meaning
298           FROM FND_LOOKUP_VALUES_VL
299           WHERE LOOKUP_TYPE='AHL_MEDIA_TYPE' AND LOOKUP_CODE='E-FILE';
300 
301           FND_MESSAGE.SET_NAME('AHL','AHL_DI_MEDTYP_NOT_EFILE');
302           FND_MESSAGE.SET_TOKEN('EFILE',l_media_type_meaning);
303           FND_MSG_PUB.ADD;
304         END IF;
305         CLOSE get_record_from_AHL;
306      END IF;
307      --Modified pjha 25-Jun-2002 for restricting Media Type to Electronic File
308      --if there is a file uploaded for the document : End
309 
310     -- Validates for existence of document id in ahl documents table
311     IF p_document_id IS NOT NULL
312     THEN
313        OPEN Check_doc_info(p_document_id);
314        FETCH Check_doc_info INTO l_dummy;
315        IF Check_doc_info%NOTFOUND
316        THEN
317           FND_MESSAGE.SET_NAME('AHL','AHL_DI_DOCUMENT_ID_NOT_EXISTS');
318           FND_MSG_PUB.ADD;
319         END IF;
320         CLOSE Check_doc_info;
321       END IF;
322 
323    -- Validates the Issue Number
324    IF p_issue_number IS NOT NULL
325       OR
326       l_issue_number IS NOT NULL
327    THEN
328      IF(p_issue_number <= 0 or l_issue_number <= 0)
329      THEN
330        FND_MESSAGE.SET_NAME('AHL','AHL_DI_ISSUE_NUM_INVALID');
331        FND_MSG_PUB.ADD;
332      END IF;
333    END IF;
334   --Validations for Duplicate Record
335   IF p_doc_revision_id IS NULL
336   THEN
337      OPEN dup_rec(l_document_id, l_revision_no);
338      FETCH dup_rec INTO l_dummy;
339         IF dup_rec%FOUND THEN
340          FND_MESSAGE.SET_NAME('AHL','AHL_DI_REVISION_DUP_RECORD');
341          FND_MSG_PUB.ADD;
342         END IF;
343      CLOSE dup_rec;
344   END IF;
345 
346 END IF;
347 END VALIDATE_REVISION;
348 
349 /*------------------------------------------------------*/
350 /* procedure name: create_revision                      */
351 /* description :  Creates new revision record           */
352 /*                for an associated document            */
353 /*                                                      */
354 /*------------------------------------------------------*/
355 PROCEDURE CREATE_REVISION
356 (
357  p_api_version               IN     NUMBER    :=  1.0                ,
358  p_init_msg_list             IN     VARCHAR2  := FND_API.G_TRUE      ,
359  p_commit                    IN     VARCHAR2  := FND_API.G_FALSE     ,
360  p_validate_only             IN     VARCHAR2  := FND_API.G_TRUE      ,
361  p_validation_level          IN     NUMBER    := FND_API.G_VALID_LEVEL_FULL,
362  p_x_revision_tbl            IN OUT NOCOPY revision_tbl              ,
363  x_return_status                OUT NOCOPY VARCHAR2                         ,
364  x_msg_count                    OUT NOCOPY NUMBER                           ,
365  x_msg_data                     OUT NOCOPY VARCHAR2
366  )
367 IS
368 --
369  l_api_name     CONSTANT VARCHAR2(30) := 'CREATE_REVISION';
370  l_api_version  CONSTANT NUMBER       := 1.0;
371  l_msg_count             NUMBER;
372  l_rowid                 ROWID;
373  l_doc_revision_id       NUMBER;
374  l_revision_info         revision_rec;
375  --Added for storing local variables to pass to Table Handler- Prakash 26-Dec-2001
376  l_row_id                   VARCHAR2(30);
377  --End of addition: Prakash 26-dec-2001
378 BEGIN
379    -- Standard Start of API savepoint
380    SAVEPOINT create_revision;
381    -- Check if API is called in debug mode. If yes, enable debug.
382    IF G_DEBUG='Y' THEN
383 		  AHL_DEBUG_PUB.enable_debug;
384 
385 	END IF;
386    -- Debug info.
387    IF G_DEBUG='Y' THEN
388        IF G_DEBUG='Y' THEN
389 		  AHL_DEBUG_PUB.debug( 'enter ahl_di_doc_revision_pvt.Create Revision','+REV+');
390 
391 	END IF;
392     END IF;
393    -- Standard call to check for call compatibility.
394    IF FND_API.to_boolean(p_init_msg_list)
395    THEN
396      FND_MSG_PUB.initialize;
397    END IF;
398     --  Initialize API return status to success
399     x_return_status := 'S';
400    -- Initialize message list if p_init_msg_list is set to TRUE.
401    IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
402                                       p_api_version,
403                                       l_api_name,G_PKG_NAME)
404    THEN
405        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
406    END IF;
407    --Start of API Body
408     IF p_x_revision_tbl.COUNT > 0
409     THEN
410      FOR i IN p_x_revision_tbl.FIRST..p_x_revision_tbl.LAST
411      LOOP
412         -- Calling for Validation
413         VALIDATE_REVISION
414            (
415              p_doc_revision_id        => p_x_revision_tbl(i).doc_revision_id,
416              p_document_id            => p_x_revision_tbl(i).document_id,
417              p_revision_no            => p_x_revision_tbl(i).revision_no,
418              p_revision_type_code     => p_x_revision_tbl(i).revision_type_code,
422              p_approved_date          => p_x_revision_tbl(i).approved_date,
419              p_revision_status_code   => p_x_revision_tbl(i).revision_status_code,
420              p_revision_date          => p_x_revision_tbl(i).revision_date,
421              p_approved_by_party_id   => p_x_revision_tbl(i).approved_by_party_id,
423              p_effective_date         => p_x_revision_tbl(i).effective_date,
424              p_obsolete_date          => p_x_revision_tbl(i).obsolete_date,
425              p_issue_date             => p_x_revision_tbl(i).issue_date,
426              p_received_date          => p_x_revision_tbl(i).received_date,
427              p_media_type_code        => p_x_revision_tbl(i).media_type_code,
428              p_issue_number           => p_x_revision_tbl(i).issue_number,
429              p_delete_flag            => p_x_revision_tbl(i).delete_flag
430            );
431       END LOOP;
432    -- Standard call to get message count and if count is  get message info.
433    l_msg_count := FND_MSG_PUB.count_msg;
434 
435 
436    IF l_msg_count > 0 THEN
437       X_msg_count := l_msg_count;
438       X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
439       RAISE FND_API.G_EXC_ERROR;
440    END IF;
441    FOR i IN p_x_revision_tbl.FIRST..p_x_revision_tbl.LAST
442    LOOP
443       IF  p_x_revision_tbl(i).doc_revision_id IS NULL
444       THEN
445          -- The following conditions should be checked for Optional Fields
446              l_revision_info.approved_by_party_id := p_x_revision_tbl(i).approved_by_party_id;
447             l_revision_info.revision_date := p_x_revision_tbl(i).revision_date;
448             l_revision_info.approved_date := p_x_revision_tbl(i).approved_date;
449             l_revision_info.effective_date := p_x_revision_tbl(i).effective_date;
450             l_revision_info.obsolete_date := p_x_revision_tbl(i).obsolete_date;
451             l_revision_info.issue_date := p_x_revision_tbl(i).issue_date;
452             l_revision_info.received_date := p_x_revision_tbl(i).received_date;
453             l_revision_info.url := p_x_revision_tbl(i).url;
454             l_revision_info.media_type_code := p_x_revision_tbl(i).media_type_code;
455             l_revision_info.volume := p_x_revision_tbl(i).volume;
456             l_revision_info.issue := p_x_revision_tbl(i).issue;
457             l_revision_info.issue_number := p_x_revision_tbl(i).issue_number;
458             l_revision_info.comments := p_x_revision_tbl(i).comments;
459             l_revision_info.attribute_category := p_x_revision_tbl(i).attribute_category;
460             l_revision_info.attribute1 := p_x_revision_tbl(i).attribute1;
461             l_revision_info.attribute2 := p_x_revision_tbl(i).attribute2;
462             l_revision_info.attribute3 := p_x_revision_tbl(i).attribute3;
463             l_revision_info.attribute4 := p_x_revision_tbl(i).attribute4;
464             l_revision_info.attribute5 := p_x_revision_tbl(i).attribute5;
465             l_revision_info.attribute6 := p_x_revision_tbl(i).attribute6;
466             l_revision_info.attribute7 := p_x_revision_tbl(i).attribute7;
467             l_revision_info.attribute8 := p_x_revision_tbl(i).attribute8;
468             l_revision_info.attribute9 := p_x_revision_tbl(i).attribute9;
469             l_revision_info.attribute10 := p_x_revision_tbl(i).attribute10;
470             l_revision_info.attribute11 := p_x_revision_tbl(i).attribute11;
471             l_revision_info.attribute12 := p_x_revision_tbl(i).attribute12;
472             l_revision_info.attribute13 := p_x_revision_tbl(i).attribute13;
473             l_revision_info.attribute14 := p_x_revision_tbl(i).attribute14;
474             l_revision_info.attribute15 := p_x_revision_tbl(i).attribute15;
475          -- Gets the value from sequence
476         Select AHL_DOC_REVISIONS_B_S.Nextval Into l_doc_revision_id from dual;
477         --Insert the record into doc revisions table
478              AHL_DOC_REVISIONS_PKG.INSERT_ROW(X_ROWID => l_row_id,
479              				      X_DOC_REVISION_ID => l_doc_revision_id,
480              				      X_APPROVED_DATE => l_revision_info.approved_date,
481              				      X_EFFECTIVE_DATE => l_revision_info.effective_date,
482 					      X_OBSOLETE_DATE => l_revision_info.obsolete_date,
483 					      X_ISSUE_DATE => l_revision_info.issue_date,
484 					      X_RECEIVED_DATE => l_revision_info.received_date,
485 					      X_URL => l_revision_info.url,
486 					      X_MEDIA_TYPE_CODE => l_revision_info.media_type_code,
487 					      X_VOLUME => l_revision_info.volume,
488 					      X_ISSUE => l_revision_info.issue,
489 					      X_ISSUE_NUMBER => l_revision_info.issue_number,
490 					      X_ATTRIBUTE_CATEGORY => l_revision_info.attribute_category,
491 					      X_ATTRIBUTE1 => l_revision_info.attribute1,
492 					      X_ATTRIBUTE2 => l_revision_info.attribute2,
493 					      X_REVISION_DATE => l_revision_info.revision_date,
494 					      X_ATTRIBUTE15 => l_revision_info.attribute15,
495 					      X_ATTRIBUTE9 => l_revision_info.attribute9,
496 					      X_ATTRIBUTE10 => l_revision_info.attribute10,
497 					      X_ATTRIBUTE11 => l_revision_info.attribute11,
498 					      X_ATTRIBUTE12 => l_revision_info.attribute12,
499 					      X_ATTRIBUTE13 => l_revision_info.attribute13,
500 					      X_DOCUMENT_ID => p_x_revision_tbl(i).document_id,
501 					      X_REVISION_NO => p_x_revision_tbl(i).revision_no,
502 					      X_APPROVED_BY_PARTY_ID => l_revision_info.approved_by_party_id,
506 					      X_ATTRIBUTE3 => l_revision_info.attribute3,
503 					      X_REVISION_TYPE_CODE => p_x_revision_tbl(i).revision_type_code,
504 					      X_REVISION_STATUS_CODE => p_x_revision_tbl(i).revision_status_code,
505 					      X_OBJECT_VERSION_NUMBER => 1,
507 					      X_ATTRIBUTE4 => l_revision_info.attribute4,
508 					      X_ATTRIBUTE5 => l_revision_info.attribute5,
509 					      X_ATTRIBUTE6 => l_revision_info.attribute6,
510 					      X_ATTRIBUTE7 => l_revision_info.attribute7,
511 					      X_ATTRIBUTE8 => l_revision_info.attribute8,
512 					      X_ATTRIBUTE14 => l_revision_info.attribute14,
513 					      X_COMMENTS => l_revision_info.comments,
514 					      X_CREATION_DATE => sysdate,
515 					      X_CREATED_BY => fnd_global.user_id,
516 					      X_LAST_UPDATE_DATE => sysdate,
517 					      X_LAST_UPDATED_BY => fnd_global.user_id,
518                                               X_LAST_UPDATE_LOGIN => fnd_global.login_id);
519 
520              /*Following line have been moved, since table handler does not take care of
521              assignments: Prakash : 24-Dec-2001*/
522              --Assign doc revision id
523 	            p_x_revision_tbl(i).doc_revision_id := l_doc_revision_id;
524                     p_x_revision_tbl(i).object_version_number := 1;
525         l_msg_count := FND_MSG_PUB.count_msg;
526 
527    IF l_msg_count > 0 THEN
528       X_msg_count := l_msg_count;
529       X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
530       RAISE FND_API.G_EXC_ERROR;
531    END IF;
532   END IF;
533  END LOOP;
534 END IF;
535    -- Standard check of p_commit.
536    IF FND_API.TO_BOOLEAN(p_commit) THEN
537       COMMIT;
538    END IF;
539    -- Debug info
540    IF G_DEBUG='Y' THEN
541 		  AHL_DEBUG_PUB.debug( 'End of private api Create Revision','+REV+');
542 
543 	END IF;
544    -- Check if API is called in debug mode. If yes, disable debug.
545    IF G_DEBUG='Y' THEN
546 		  AHL_DEBUG_PUB.disable_debug;
547 
548 	END IF;
549 
550 EXCEPTION
551  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
552     ROLLBACK TO create_revision;
553     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
554     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
555                                p_count => x_msg_count,
556                                p_data  => x_msg_data);
557         --Debug Info
558         IF G_DEBUG='Y' THEN
559             AHL_DEBUG_PUB.log_app_messages (x_msg_count, x_msg_data, 'ERROR' );
560             AHL_DEBUG_PUB.debug( 'ahl_di_doc_revision_pvt.Create Revision','+REV+');
561 
562 
563         -- Check if API is called in debug mode. If yes, disable debug.
564             AHL_DEBUG_PUB.disable_debug;
565 
566 	END IF;
567 
568  WHEN FND_API.G_EXC_ERROR THEN
569     ROLLBACK TO create_revision;
570     X_return_status := FND_API.G_RET_STS_ERROR;
571     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
572                                p_count => x_msg_count,
573                                p_data  => X_msg_data);
574         -- Debug info.
575         IF G_DEBUG='Y' THEN
576             AHL_DEBUG_PUB.log_app_messages (x_msg_count, x_msg_data, 'UNEXPECTED ERROR' );
577             AHL_DEBUG_PUB.debug( 'ahl_di_doc_revision_pvt.Create Revision','+REV+');
578 
579 
580         -- Check if API is called in debug mode. If yes, disable debug.
581            AHL_DEBUG_PUB.disable_debug;
582 
583 	END IF;
584 
585  WHEN OTHERS THEN
586     ROLLBACK TO create_revision;
587     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
588     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
589     THEN
590     fnd_msg_pub.add_exc_msg(p_pkg_name        =>  'AHL_DI_DOC_REVISION_PVT',
591                             p_procedure_name  =>  'CREATE_REVISION',
592                             p_error_text      => SUBSTR(SQLERRM,1,240));
593     END IF;
594     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
595                                p_count => x_msg_count,
596                                p_data  => X_msg_data);
597         -- Debug info.
598         IF G_DEBUG='Y' THEN
599             AHL_DEBUG_PUB.log_app_messages (x_msg_count, x_msg_data, 'SQL ERROR' );
600             AHL_DEBUG_PUB.debug( 'ahl_di_doc_revision_pvt.Create Revision','+REV+');
601 
602         -- Check if API is called in debug mode. If yes, disable debug.
603             AHL_DEBUG_PUB.disable_debug;
604 
605 	END IF;
606 
607 END CREATE_REVISION;
608 /*------------------------------------------------------*/
609 /* procedure name: modify_revision                      */
610 /* description :  Update the existing revision record   */
611 /*                and removes the revision record       */
612 /*                for an associated document            */
613 /*                                                      */
614 /*------------------------------------------------------*/
615 PROCEDURE MODIFY_REVISION
616 (
617  p_api_version               IN     NUMBER    :=  1.0                ,
618  p_init_msg_list             IN     VARCHAR2  := FND_API.G_TRUE      ,
619  p_commit                    IN     VARCHAR2  := FND_API.G_FALSE     ,
620  p_validate_only             IN     VARCHAR2  := FND_API.G_TRUE      ,
621  p_validation_level          IN     NUMBER    := FND_API.G_VALID_LEVEL_FULL,
622  p_x_revision_tbl            IN     revision_tbl                     ,
626 )
623  x_return_status                OUT NOCOPY VARCHAR2                         ,
624  x_msg_count                    OUT NOCOPY NUMBER                           ,
625  x_msg_data                     OUT NOCOPY VARCHAR2
627 IS
628 -- Used to retrieve the existing record info
629 CURSOR get_doc_revisions_b_rec_info(c_doc_revision_id  NUMBER)
630  IS
631 SELECT ROWID,
632        document_id,
633        revision_no,
634        revision_type_code,
635        revision_status_code,
636        revision_date,
637        approved_by_party_id,
638        approved_date,
639        effective_date,
640        obsolete_date,
641        issue_date,
642        received_date,
643        url,
644        media_type_code,
645        volume,
646        issue,
647        issue_number,
648        object_version_number,
649        attribute_category,
650        attribute1,
651        attribute2,
652        attribute3,
653        attribute4,
654        attribute5,
655        attribute6,
656        attribute7,
657        attribute8,
658        attribute9,
659        attribute10,
660        attribute11,
661        attribute12,
662        attribute13,
663        attribute14,
664        attribute15
665   FROM AHL_DOC_REVISIONS_B
666  WHERE doc_revision_id = c_doc_revision_id
667    FOR UPDATE OF object_version_number NOWAIT;
668 --Used to retrieve the record from trans table
669 CURSOR get_doc_revisions_tl_rec_info(c_doc_revision_id NUMBER)
670  IS
671 SELECT comments
672   FROM AHL_DOC_REVISIONS_TL
673  WHERE doc_revision_id = c_doc_revision_id
674    FOR UPDATE OF doc_revision_id NOWAIT;
675 --
676  l_api_name       CONSTANT VARCHAR2(30) := 'MODIFY_REVISION';
677  l_api_version    CONSTANT NUMBER       := 1.0;
678  l_msg_count               NUMBER;
679  l_rowid                   ROWID;
680  l_doc_revision_id         NUMBER;
681  l_language                VARCHAR2(4);
682  l_source_lang             VARCHAR2(4);
683  l_comments                VARCHAR2(2000);
684  l_revision_info           get_doc_revisions_b_rec_info%ROWTYPE;
685  --
686  BEGIN
687     -- Standard Start of API savepoint
688     SAVEPOINT modify_revision;
689    -- Check if API is called in debug mode. If yes, enable debug.
690    IF G_DEBUG='Y' THEN
691 		  AHL_DEBUG_PUB.enable_debug;
692 
693 	END IF;
694    -- Debug info.
695    IF G_DEBUG='Y' THEN
696        IF G_DEBUG='Y' THEN
697 		  AHL_DEBUG_PUB.debug( 'enter ahl_di_doc_revision_pvt.Modify Revision','+REV+');
698 
699 	END IF;
700     END IF;
701     -- Standard call to check for call compatibility.
702    IF FND_API.to_boolean(p_init_msg_list)
703    THEN
704      FND_MSG_PUB.initialize;
705    END IF;
706     --  Initialize API return status to success
707     x_return_status := 'S';
708 
709    IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
710                                       p_api_version,
711                                       l_api_name,G_PKG_NAME)
712    THEN
713        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
714    END IF;
715    --Start of API Body
716    IF p_x_revision_tbl.COUNT > 0
717    THEN
718      FOR i IN p_x_revision_tbl.FIRST..p_x_revision_tbl.LAST
719      LOOP
720         --Calling for Validation
721         VALIDATE_REVISION
722          (
723           p_doc_revision_id        => p_x_revision_tbl(i).doc_revision_id,
724           p_document_id            => p_x_revision_tbl(i).document_id,
725           p_revision_no            => p_x_revision_tbl(i).revision_no,
726           p_revision_type_code     => p_x_revision_tbl(i).revision_type_code,
727           p_revision_status_code   => p_x_revision_tbl(i).revision_status_code,
728           p_revision_date          => p_x_revision_tbl(i).revision_date,
729           p_approved_by_party_id   => p_x_revision_tbl(i).approved_by_party_id,
730           p_approved_date          => p_x_revision_tbl(i).approved_date,
731           p_effective_date         => p_x_revision_tbl(i).effective_date,
732           p_obsolete_date          => p_x_revision_tbl(i).obsolete_date,
733           p_issue_date             => p_x_revision_tbl(i).obsolete_date,
734           p_received_date          => p_x_revision_tbl(i).obsolete_date,
735           p_media_type_code        => p_x_revision_tbl(i).media_type_code,
736           p_issue_number           => p_x_revision_tbl(i).issue_number,
737           p_delete_flag            => p_x_revision_tbl(i).delete_flag
738         );
739       END LOOP;
740    --End of Validations
741    -- Standard call to get message count
742    l_msg_count := FND_MSG_PUB.count_msg;
743    IF l_msg_count > 0 THEN
744       X_msg_count := l_msg_count;
745       X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
746       RAISE FND_API.G_EXC_ERROR;
747    END IF;
748    FOR i IN p_x_revision_tbl.FIRST..p_x_revision_tbl.LAST
749    LOOP
750       OPEN get_doc_revisions_b_rec_info(p_x_revision_tbl(i).doc_revision_id);
751       FETCH get_doc_revisions_b_rec_info INTO l_revision_info;
752       CLOSE get_doc_revisions_b_rec_info;
753       --
754       OPEN get_doc_revisions_tl_rec_info(p_x_revision_tbl(i).doc_revision_id);
755       FETCH get_doc_revisions_tl_rec_info INTO l_comments;
756       CLOSE get_doc_revisions_tl_rec_info;
757 
758     -- This  bug fix when concurrent users  update
759     -- updating same record...02/05/02
763         FND_MSG_PUB.ADD;
760     if (l_revision_info.object_version_number <>p_x_revision_tbl(i).object_version_number)
761     then
762         FND_MESSAGE.SET_NAME('AHL','AHL_COM_RECORD_CHANGED');
764         RAISE FND_API.G_EXC_ERROR;
765     end if;
766       -- The following conditions compare the new record value with old  record
767       -- value, if its different then assign the new value else continue
768       IF p_x_revision_tbl(i).doc_revision_id IS NOT NULL
769       THEN
770            l_revision_info.document_id := p_x_revision_tbl(i).document_id;
771           l_revision_info.revision_no := p_x_revision_tbl(i).revision_no;
772           l_revision_info.revision_type_code := p_x_revision_tbl(i).revision_type_code;
773           l_revision_info.revision_status_code := p_x_revision_tbl(i).revision_status_code;
774           l_revision_info.revision_date := p_x_revision_tbl(i).revision_date;
775           l_revision_info.approved_by_party_id := p_x_revision_tbl(i).approved_by_party_id;
776           l_revision_info.approved_date := p_x_revision_tbl(i).approved_date;
777           l_revision_info.effective_date := p_x_revision_tbl(i).effective_date;
778           l_revision_info.obsolete_date := p_x_revision_tbl(i).obsolete_date;
779           l_revision_info.issue_date := p_x_revision_tbl(i).issue_date;
780           l_revision_info.received_date := p_x_revision_tbl(i).received_date;
781           l_revision_info.url := p_x_revision_tbl(i).url;
782           l_revision_info.media_type_code := p_x_revision_tbl(i).media_type_code;
783           l_revision_info.volume := p_x_revision_tbl(i).volume;
784           l_revision_info.issue := p_x_revision_tbl(i).issue;
785           l_revision_info.issue_number := p_x_revision_tbl(i).issue_number;
786           l_comments := p_x_revision_tbl(i).comments;
787           l_revision_info.attribute_category := p_x_revision_tbl(i).attribute_category;
788           l_revision_info.attribute1 := p_x_revision_tbl(i).attribute1;
789           l_revision_info.attribute2 := p_x_revision_tbl(i).attribute2;
790           l_revision_info.attribute3 := p_x_revision_tbl(i).attribute3;
791           l_revision_info.attribute4 := p_x_revision_tbl(i).attribute4;
792           l_revision_info.attribute5 := p_x_revision_tbl(i).attribute5;
793           l_revision_info.attribute6 := p_x_revision_tbl(i).attribute6;
794           l_revision_info.attribute7 := p_x_revision_tbl(i).attribute7;
795           l_revision_info.attribute8 := p_x_revision_tbl(i).attribute8;
796           l_revision_info.attribute9 := p_x_revision_tbl(i).attribute9;
797           l_revision_info.attribute10 := p_x_revision_tbl(i).attribute10;
798           l_revision_info.attribute11 := p_x_revision_tbl(i).attribute11;
799           l_revision_info.attribute12 := p_x_revision_tbl(i).attribute12;
800           l_revision_info.attribute13 := p_x_revision_tbl(i).attribute13;
801           l_revision_info.attribute14 := p_x_revision_tbl(i).attribute14;
802           l_revision_info.attribute15 := p_x_revision_tbl(i).attribute15;
803 
804      /*Calling Table Handler: Prakash : 26-Dec-2001 */
805      AHL_DOC_REVISIONS_PKG.UPDATE_ROW(X_DOC_REVISION_ID => p_x_revision_tbl(i).doc_revision_id,
806                                       X_APPROVED_DATE => l_revision_info.approved_date,
807                                       X_EFFECTIVE_DATE => l_revision_info.effective_date,
808                                       X_OBSOLETE_DATE => l_revision_info.obsolete_date,
809                                       X_ISSUE_DATE => l_revision_info.issue_date,
810                                       X_RECEIVED_DATE => l_revision_info.received_date,
811                                       X_URL => l_revision_info.url,
812                                       X_MEDIA_TYPE_CODE => l_revision_info.media_type_code,
813                                       X_VOLUME => l_revision_info.volume,
814                                       X_ISSUE => l_revision_info.issue,
815                                       X_ISSUE_NUMBER => l_revision_info.issue_number,
816                                       X_ATTRIBUTE_CATEGORY => l_revision_info.attribute_category,
817                                       X_ATTRIBUTE1 => l_revision_info.attribute1,
818                                       X_ATTRIBUTE2 => l_revision_info.attribute2,
819                                       X_REVISION_DATE => l_revision_info.revision_date,
820                                       X_ATTRIBUTE15 => l_revision_info.attribute15,
821                                       X_ATTRIBUTE9 => l_revision_info.attribute9,
822                                       X_ATTRIBUTE10 => l_revision_info.attribute10,
823                                       X_ATTRIBUTE11 => l_revision_info.attribute11,
824                                       X_ATTRIBUTE12 => l_revision_info.attribute12,
825                                       X_ATTRIBUTE13 => l_revision_info.attribute13,
826                                       X_DOCUMENT_ID => l_revision_info.document_id,
827                                       X_REVISION_NO => l_revision_info.revision_no,
828                                       X_APPROVED_BY_PARTY_ID => l_revision_info.approved_by_party_id,
829                                       X_REVISION_TYPE_CODE => l_revision_info.revision_type_code,
830                                       X_REVISION_STATUS_CODE => l_revision_info.revision_status_code,
831                                       X_OBJECT_VERSION_NUMBER => l_revision_info.object_version_number+1,
832                                       X_ATTRIBUTE3 => l_revision_info.attribute3,
833                                       X_ATTRIBUTE4 => l_revision_info.attribute4,
837                                       X_ATTRIBUTE8 => l_revision_info.attribute8,
834                                       X_ATTRIBUTE5 => l_revision_info.attribute5,
835                                       X_ATTRIBUTE6 => l_revision_info.attribute6,
836                                       X_ATTRIBUTE7 => l_revision_info.attribute7,
838                                       X_ATTRIBUTE14 => l_revision_info.attribute14,
839                                       X_COMMENTS => l_comments,
840                                       X_LAST_UPDATE_DATE => sysdate,
841                                       X_LAST_UPDATED_BY => fnd_global.user_id,
842                                       X_LAST_UPDATE_LOGIN => fnd_global.login_id);
843   -- This will be called to delete revision record, not supported in this phase
844  ELSIF ((p_x_revision_tbl(i).doc_revision_id IS NOT NULL) AND
845        NVL(p_x_revision_tbl(i).delete_flag, 'N') = 'Y' )
846 
847     THEN
848        DELETE_REVISION
849         (p_api_version      => 1.0               ,
850          p_init_msg_list    => FND_API.G_TRUE      ,
851          p_commit           => FND_API.G_FALSE     ,
852          p_validate_only    => FND_API.G_TRUE      ,
853          p_validation_level => FND_API.G_VALID_LEVEL_FULL,
854          p_x_revision_tbl   =>  p_x_revision_tbl   ,
855          x_return_status    => x_return_status     ,
856          x_msg_count        => x_msg_count         ,
857          x_msg_data         => x_msg_data
858          );
859   END IF;
860  END LOOP;
861 END IF;
862     -- Standard check of p_commit.
863     IF FND_API.TO_BOOLEAN(p_commit) THEN
864         COMMIT;
865     END IF;
866    -- Debug info
867    IF G_DEBUG='Y' THEN
868 		  AHL_DEBUG_PUB.debug( 'End of private api Modify Revision','+REV+');
869 
870 	END IF;
871    -- Check if API is called in debug mode. If yes, disable debug.
872    IF G_DEBUG='Y' THEN
873 		  AHL_DEBUG_PUB.disable_debug;
874 
875 	END IF;
876 EXCEPTION
877  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
878     ROLLBACK TO modify_revision;
879     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
880     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
881                                p_count => x_msg_count,
882                                p_data  => x_msg_data);
883 
884         IF G_DEBUG='Y' THEN
885             AHL_DEBUG_PUB.log_app_messages (x_msg_count, x_msg_data, 'ERROR' );
886             AHL_DEBUG_PUB.debug( 'ahl_di_doc_revision_pvt.Modify Revision','+REV+');
887 
888 
889         -- Check if API is called in debug mode. If yes, disable debug.
890             AHL_DEBUG_PUB.disable_debug;
891 
892 	END IF;
893 
894  WHEN FND_API.G_EXC_ERROR THEN
895     ROLLBACK TO modify_revision;
896     X_return_status := FND_API.G_RET_STS_ERROR;
897     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
898                                p_count => x_msg_count,
899                                p_data  => X_msg_data);
900         -- Debug info.
901         IF G_DEBUG='Y' THEN
902             AHL_DEBUG_PUB.log_app_messages (x_msg_count, x_msg_data, 'UNEXPECTED ERROR' );
903             AHL_DEBUG_PUB.debug( 'ahl_di_doc_revision_pvt.Modify Revision','+REV+');
904 
905 
906         -- Check if API is called in debug mode. If yes, disable debug.
907             AHL_DEBUG_PUB.disable_debug;
908 
909 	END IF;
910 
911  WHEN OTHERS THEN
912     ROLLBACK TO modify_revision;
913     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
914     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
915     THEN
916     fnd_msg_pub.add_exc_msg(p_pkg_name        =>  'AHL_DI_DOC_REVISION_PVT',
917                             p_procedure_name  =>  'MODIFY_REVISION',
918                             p_error_text      => SUBSTR(SQLERRM,1,240));
919     END IF;
920     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
921                                p_count => x_msg_count,
922                                p_data  => X_msg_data);
923 
924         -- Debug info.
925         IF G_DEBUG='Y' THEN
926             AHL_DEBUG_PUB.log_app_messages (x_msg_count, x_msg_data, 'SQL ERROR' );
927             AHL_DEBUG_PUB.debug( 'ahl_di_doc_revision_pvt.Modify Revision','+REV+');
928 
929 
930         -- Check if API is called in debug mode. If yes, disable debug.
931             AHL_DEBUG_PUB.disable_debug;
932 
933 	END IF;
934 
935 END MODIFY_REVISION;
936 --
937 PROCEDURE DELETE_REVISION
938 (
939  p_api_version               IN     NUMBER    := 1.0               ,
940  p_init_msg_list             IN     VARCHAR2  := FND_API.G_TRUE      ,
941  p_commit                    IN     VARCHAR2  := FND_API.G_FALSE     ,
942  p_validate_only             IN     VARCHAR2  := FND_API.G_TRUE      ,
943  p_validation_level          IN     NUMBER    := FND_API.G_VALID_LEVEL_FULL,
944  p_x_revision_tbl            IN     revision_tbl                     ,
945  x_return_status                OUT NOCOPY VARCHAR2                         ,
946  x_msg_count                    OUT NOCOPY NUMBER                           ,
947  x_msg_data                     OUT NOCOPY VARCHAR2
948  )
949 IS
950 -- to get the revision rec
951 CURSOR get_revision_rec_b_info(c_doc_revision_id  NUMBER)
952  IS
953 SELECT ROWID,
957   FROM AHL_DOC_REVISIONS_B
954        effective_date,
955        obsolete_date,
956        object_version_number
958  WHERE doc_revision_id = c_doc_revision_id
959    FOR UPDATE OF object_version_number NOWAIT;
960 --
961 l_api_name         CONSTANT VARCHAR2(30) := 'DELETE_REVISION';
962 l_api_version      CONSTANT NUMBER       := 1.0;
963 l_rowid                     ROWID;
964 l_object_version_number     NUMBER;
965 l_effective_date            DATE;
966 l_obsolete_date             DATE;
967 BEGIN
968     -- Standard Start of API savepoint
969     SAVEPOINT delete_revision;
970     -- Standard call to check for call compatibility.
971    IF FND_API.to_boolean(p_init_msg_list)
972    THEN
973      FND_MSG_PUB.initialize;
974    END IF;
975     --  Initialize API return status to success
976     x_return_status := 'S';
977     -- Initialize message list if p_init_msg_list is set to TRUE.
978    IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
979                                       p_api_version,
980                                       l_api_name,G_PKG_NAME)
981    THEN
982        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
983    END IF;
984    --Start of API Body
985    IF p_x_revision_tbl.COUNT > 0
986    THEN
987       FOR i IN p_x_revision_tbl.FIRST..p_x_revision_tbl.LAST
988       LOOP
989         OPEN get_revision_rec_b_info(p_x_revision_tbl(i).doc_revision_id);
990         FETCH get_revision_rec_b_info INTO l_rowid,
991                                            l_effective_date,
992                                            l_obsolete_date,
993                                            l_object_version_number;
994         IF (get_revision_rec_b_info%NOTFOUND)
995         THEN
996            FND_MESSAGE.SET_NAME('AHL','AHL_DI_DOC_REVI_RECORD_INVALID');
997            FND_MSG_PUB.ADD;
998         END IF;
999         CLOSE get_revision_rec_b_info;
1000          -- Check for version number
1001         IF (l_object_version_number <> p_x_revision_tbl(i).object_version_number)
1002         THEN
1003            FND_MESSAGE.SET_NAME('AHL','AHL_DI_DOC_REVI_RECORD_CHANGED');
1004            FND_MSG_PUB.ADD;
1005         END IF;
1006         -- Validate with end date
1007        IF (l_obsolete_date IS NOT NULL AND l_obsolete_date <= SYSDATE)
1008        THEN
1009           FND_MESSAGE.SET_NAME('AHL','AHL_DI_DOC_REVI_RECORD_CLOSED');
1010           FND_MSG_PUB.ADD;
1011        END IF;
1012        IF (TRUNC(NVL(l_obsolete_date, SYSDATE)) >
1013           TRUNC(NVL(p_x_revision_tbl(i).obsolete_date,SYSDATE)))
1014        THEN
1015           FND_MESSAGE.SET_NAME('AHL','AHL_DI_OBSOLETE_DATE_INVALID');
1016           FND_MSG_PUB.ADD;
1017        END IF;
1018        -- Update the end date in subscriptions table
1019       UPDATE AHL_DOC_REVISIONS_B
1020          SET OBSOLETE_DATE = p_x_revision_tbl(i).obsolete_date
1021        WHERE ROWID = l_rowid;
1022   END LOOP;
1023 END IF;
1024     -- Standard check of p_commit.
1025     IF FND_API.TO_BOOLEAN(p_commit) THEN
1026         COMMIT;
1027     END IF;
1028 
1029 EXCEPTION
1030  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1031     ROLLBACK TO delete_revision;
1032     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1033     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
1034                                p_count => x_msg_count,
1035                                p_data  => x_msg_data);
1036 
1037  WHEN FND_API.G_EXC_ERROR THEN
1038     ROLLBACK TO delete_revision;
1039     X_return_status := FND_API.G_RET_STS_ERROR;
1040     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
1041                                p_count => x_msg_count,
1042                                p_data  => X_msg_data);
1043  WHEN OTHERS THEN
1044     ROLLBACK TO delete_revision;
1045     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1046     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1047     THEN
1048     fnd_msg_pub.add_exc_msg(p_pkg_name        =>  'AHL_DOC_REVISIONS_PVT',
1049                             p_procedure_name  =>  'DELETE_REVISION',
1050                             p_error_text      => SUBSTR(SQLERRM,1,240));
1051     END IF;
1052     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
1053                                p_count => x_msg_count,
1054                                p_data  => X_msg_data);
1055 
1056 END DELETE_REVISION;
1057 
1058 --
1059 END AHL_DI_DOC_REVISION_PVT;