DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEX_CASE_UTL_PUB

Source


1 PACKAGE BODY  IEX_CASE_UTL_PUB as
2 /* $Header: iexucasb.pls 120.3.12010000.3 2008/08/20 10:51:05 snuthala ship $ */
3 -- Start of Comments
4 -- Package name     : IEX_CASE_UTL_PUB
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 G_PKG_NAME      CONSTANT    VARCHAR2(100):=  'IEX_CASE_UTL_PUB';
11 G_FILE_NAME     CONSTANT    VARCHAR2(12) := 'iexucasb.pls';
12 
13 
14 /**Name   AddInvalidArgMsg
15   **Appends to a message  the api name, parameter name and parameter Value
16  */
17 
18 --PG_DEBUG NUMBER(2) := TO_NUMBER(NVL(FND_PROFILE.value('IEX_DEBUG_LEVEL'), '20'));
19 PG_DEBUG NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
20 
21 PROCEDURE AddInvalidArgMsg
22   ( p_api_name	    IN	VARCHAR2,
23     p_param_value	IN	VARCHAR2,
24     p_param_name	IN	VARCHAR2 ) IS
25 BEGIN
26    IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_error) THEN
27       fnd_message.set_name('IEX', 'IEX_API_ALL_INVALID_ARGUMENT');
28       fnd_message.set_token('API_NAME', p_api_name);
29       fnd_message.set_token('VALUE', p_param_value);
30       fnd_message.set_token('PARAMETER', p_param_name);
31       fnd_msg_pub.add;
32    END IF;
33 
34 
35 END AddInvalidArgMsg;
36 
37 /**Name   AddMissingArgMsg
38   **Appends to a message  the api name, parameter name and parameter Value
39  */
40 
41 PROCEDURE AddMissingArgMsg
42   ( p_api_name	    IN	VARCHAR2,
43     p_param_name	IN	VARCHAR2 )IS
44 BEGIN
45         IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_error) THEN
46             fnd_message.set_name('IEX', 'IEX_API_ALL_MISSING_PARAM');
47             fnd_message.set_token('API_NAME', p_api_name);
48             fnd_message.set_token('MISSING_PARAM', p_param_name);
49             fnd_msg_pub.add;
50         END IF;
51 END AddMissingArgMsg;
52 
53 /**Name   AddNullArgMsg
54 **Appends to a message  the api name, parameter name and parameter Value
55 */
56 
57 PROCEDURE AddNullArgMsg
58   ( p_api_name	    IN	VARCHAR2,
59     p_param_name	IN	VARCHAR2 )IS
60 BEGIN
61    IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_error) THEN
62       fnd_message.set_name('IEX', 'IEX_API_ALL_NULL_PARAMETER');
63       fnd_message.set_token('API_NAME', p_api_name);
64       fnd_message.set_token('NULL_PARAM', p_param_name);
65       fnd_msg_pub.add;
66    END IF;
67 
68 
69 END AddNullArgMsg;
70 
71 /**Name   AddFailMsg
72   **Appends to a message  the name of the object anf the operation (insert, update ,delete)
73 */
74 PROCEDURE AddfailMsg
75   ( p_object	    IN	VARCHAR2,
76     p_operation 	IN	VARCHAR2 ) IS
77 
78 BEGIN
79       fnd_message.set_name('IEX', 'IEX_FAILED_OPERATION');
80       fnd_message.set_token('OBJECT',    p_object);
81       fnd_message.set_token('OPERATION', p_operation);
82       fnd_msg_pub.add;
83 
84 END    AddfailMsg;
85 
86 /**Name   Converts Case record type from public to PVT **/
87 Procedure  Convert_case_Record (
88                     p_cas_rec IN iex_case_utl_pub.cas_Rec_Type,
89                     x_cas_rec OUT NOCOPY iex_cases_pvt.cas_Rec_Type) IS
90 Begin
91 --     IF PG_DEBUG < 10  THEN
92      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
93         iex_debug_pub.LogMessage('Convert_case_Record: ' || '*********Start of Convert Case record *********');
94      END IF;
95           x_cas_rec.CAS_ID                 := p_cas_rec.CAS_ID;
96           x_cas_rec.CASE_NUMBER            := p_cas_rec.CASE_NUMBER;
97           x_cas_rec.ACTIVE_FLAG            := p_cas_rec.ACTIVE_FLAG ;
98           x_cas_rec.PARTY_ID               := p_cas_rec.party_id;
99           x_cas_rec.ORIG_CAS_ID            := p_cas_rec.orig_cas_id;
100           x_cas_rec.CASE_STATE             := p_cas_rec.CASE_STATE;
101           x_cas_rec.STATUS_CODE            := p_cas_rec.STATUS_CODE;
102           x_cas_rec.OBJECT_VERSION_NUMBER  := p_cas_rec.OBJECT_VERSION_NUMBER;
103           x_cas_rec.CASE_ESTABLISHED_DATE  := p_cas_rec.CASE_ESTABLISHED_DATE;
104           x_cas_rec.CASE_CLOSING_DATE      := p_cas_rec.CASE_CLOSING_DATE;
105           x_cas_rec.OWNER_RESOURCE_ID      := p_cas_rec.OWNER_RESOURCE_ID;
106           x_cas_rec.ACCESS_RESOURCE_ID     := p_cas_rec.ACCESS_RESOURCE_ID;
107           x_cas_rec.COMMENTS               :=P_CAS_REC.COMMENTS;
108           x_cas_rec.REQUEST_ID             := p_cas_rec.REQUEST_ID;
109           x_cas_rec.PROGRAM_APPLICATION_ID := p_cas_rec.PROGRAM_APPLICATION_ID;
110           x_cas_rec.PROGRAM_ID             := p_cas_rec.PROGRAM_ID;
111           x_cas_rec.PROGRAM_UPDATE_DATE    := p_cas_rec.PROGRAM_UPDATE_DATE;
112           x_cas_rec.ATTRIBUTE_CATEGORY     := p_cas_rec.ATTRIBUTE_CATEGORY;
113           x_cas_rec.ATTRIBUTE1             := p_cas_rec.ATTRIBUTE1;
114           x_cas_rec.ATTRIBUTE2             := p_cas_rec.ATTRIBUTE2;
115           x_cas_rec.ATTRIBUTE3             := p_cas_rec.ATTRIBUTE3;
116           x_cas_rec.ATTRIBUTE4             := p_cas_rec.ATTRIBUTE4;
117           x_cas_rec.ATTRIBUTE5             := p_cas_rec.ATTRIBUTE5;
118           x_cas_rec.ATTRIBUTE6             := p_cas_rec.ATTRIBUTE6;
119           x_cas_rec.ATTRIBUTE7             := p_cas_rec.ATTRIBUTE7;
120           x_cas_rec.ATTRIBUTE8             := p_cas_rec.ATTRIBUTE8;
121           x_cas_rec.ATTRIBUTE9             := p_cas_rec.ATTRIBUTE9;
122           x_cas_rec.ATTRIBUTE10            := p_cas_rec.ATTRIBUTE10;
123           x_cas_rec.ATTRIBUTE11            := p_cas_rec.ATTRIBUTE11;
124           x_cas_rec.ATTRIBUTE12            := p_cas_rec.ATTRIBUTE12;
125           x_cas_rec.ATTRIBUTE13            := p_cas_rec.ATTRIBUTE13;
126           x_cas_rec.ATTRIBUTE14            := p_cas_rec.ATTRIBUTE14;
127           x_cas_rec.ATTRIBUTE15            := p_cas_rec.ATTRIBUTE15;
128           x_cas_rec.CREATED_BY             := p_cas_rec.CREATED_BY ;
129           x_cas_rec.CREATION_DATE             := p_cas_rec.CREATION_DATE;
130           x_cas_rec.LAST_UPDATED_BY           := p_cas_rec.LAST_UPDATED_BY ;
131           x_cas_rec.LAST_UPDATE_DATE          :=  p_cas_rec.LAST_UPDATE_DATE;
132           x_cas_rec.LAST_UPDATE_LOGIN         := p_cas_rec.LAST_UPDATE_LOGIN;
133           x_cas_rec.PREDICTED_RECOVERY_AMOUNT := p_cas_rec.PREDICTED_RECOVERY_AMOUNT;
134           x_cas_rec.PREDICTED_CHANCE          := p_cas_rec.PREDICTED_CHANCE;
135 --         IF PG_DEBUG < 10  THEN
136          IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
137             iex_debug_pub.LogMessage('Convert_case_Record: ' || '*********End of Convert Case record *********');
138          END IF;
139 
140 end  Convert_case_Record;
141 
142 
143 /**Name   Converts Case record type from public to PVT **/
144 Procedure  Convert_case_object_Record (
145                     p_attribute_rec IN iex_case_utl_pub.cas_Rec_Type,
146                     x_case_object_rec OUT NOCOPY iex_case_objects_pvt.case_object_Rec_Type)IS
147 Begin
148 --      IF PG_DEBUG < 10  THEN
149       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
150          iex_debug_pub.LogMessage('Convert_case_object_Record: ' || '*********End of Convert case object Record record *********');
151       END IF;
152           x_case_object_rec.ACTIVE_FLAG            := p_attribute_rec.ACTIVE_FLAG ;
153           x_case_object_rec.REQUEST_ID             := p_attribute_rec.REQUEST_ID;
154           x_case_object_rec.PROGRAM_APPLICATION_ID := p_attribute_rec.PROGRAM_APPLICATION_ID;
155           x_case_object_rec.PROGRAM_ID             := p_attribute_rec.PROGRAM_ID;
156           x_case_object_rec.PROGRAM_UPDATE_DATE    := p_attribute_rec.PROGRAM_UPDATE_DATE;
157           x_case_object_rec.ATTRIBUTE_CATEGORY     := p_attribute_rec.ATTRIBUTE_CATEGORY;
158           x_case_object_rec.ATTRIBUTE1             := p_attribute_rec.ATTRIBUTE1;
159           x_case_object_rec.ATTRIBUTE2             := p_attribute_rec.ATTRIBUTE2;
160           x_case_object_rec.ATTRIBUTE3             := p_attribute_rec.ATTRIBUTE3;
161           x_case_object_rec.ATTRIBUTE4             := p_attribute_rec.ATTRIBUTE4;
162           x_case_object_rec.ATTRIBUTE5             := p_attribute_rec.ATTRIBUTE5;
163           x_case_object_rec.ATTRIBUTE6             := p_attribute_rec.ATTRIBUTE6;
164           x_case_object_rec.ATTRIBUTE7             := p_attribute_rec.ATTRIBUTE7;
165           x_case_object_rec.ATTRIBUTE8             := p_attribute_rec.ATTRIBUTE8;
166           x_case_object_rec.ATTRIBUTE9             := p_attribute_rec.ATTRIBUTE9;
167           x_case_object_rec.ATTRIBUTE10            := p_attribute_rec.ATTRIBUTE10;
168           x_case_object_rec.ATTRIBUTE11            := p_attribute_rec.ATTRIBUTE11;
169           x_case_object_rec.ATTRIBUTE12            := p_attribute_rec.ATTRIBUTE12;
170           x_case_object_rec.ATTRIBUTE13            := p_attribute_rec.ATTRIBUTE13;
171           x_case_object_rec.ATTRIBUTE14            := p_attribute_rec.ATTRIBUTE14;
172           x_case_object_rec.ATTRIBUTE15            := p_attribute_rec.ATTRIBUTE15;
173           x_case_object_rec.CREATED_BY             := p_attribute_rec.CREATED_BY ;
174           x_case_object_rec.CREATION_DATE          := p_attribute_rec.CREATION_DATE;
175           x_case_object_rec.LAST_UPDATED_BY        := p_attribute_rec.LAST_UPDATED_BY ;
176           x_case_object_rec.LAST_UPDATE_DATE       := p_attribute_rec.LAST_UPDATE_DATE;
177           x_case_object_rec.LAST_UPDATE_LOGIN      := p_attribute_rec.LAST_UPDATE_LOGIN;
178 
179 --      IF PG_DEBUG < 10  THEN
180       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
181          iex_debug_pub.LogMessage('Convert_case_object_Record: ' || '*********Start of Convert case object Record record *********');
182       END IF;
183 end  Convert_case_object_Record;
184 
185 /**Name   Converts Case def record type from public to PVT **/
186 Procedure  Convert_case_def_Record (
187                     p_attribute_rec  IN iex_case_utl_pub.cas_Rec_Type,
188                     x_case_def_rec   OUT NOCOPY iex_case_definitions_pvt.CASE_DEFINITION_Rec_Type) IS
189 Begin
190 --      IF PG_DEBUG < 10  THEN
191       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
192          iex_debug_pub.LogMessage('Convert_case_def_Record: ' || '*********End of Convert case def Record record *********');
193       END IF;
194           x_case_def_rec.ACTIVE_FLAG            := p_attribute_rec.ACTIVE_FLAG ;
195           x_case_def_rec.REQUEST_ID             := p_attribute_rec.REQUEST_ID;
196           x_case_def_rec.PROGRAM_APPLICATION_ID := p_attribute_rec.PROGRAM_APPLICATION_ID;
197           x_case_def_rec.PROGRAM_ID             := p_attribute_rec.PROGRAM_ID;
198           x_case_def_rec.PROGRAM_UPDATE_DATE    := p_attribute_rec.PROGRAM_UPDATE_DATE;
199           x_case_def_rec.ATTRIBUTE_CATEGORY     := p_attribute_rec.ATTRIBUTE_CATEGORY;
200           x_case_def_rec.ATTRIBUTE1             := p_attribute_rec.ATTRIBUTE1;
201           x_case_def_rec.ATTRIBUTE2             := p_attribute_rec.ATTRIBUTE2;
202           x_case_def_rec.ATTRIBUTE3             := p_attribute_rec.ATTRIBUTE3;
203           x_case_def_rec.ATTRIBUTE4             := p_attribute_rec.ATTRIBUTE4;
204           x_case_def_rec.ATTRIBUTE5             := p_attribute_rec.ATTRIBUTE5;
205           x_case_def_rec.ATTRIBUTE6             := p_attribute_rec.ATTRIBUTE6;
206           x_case_def_rec.ATTRIBUTE7             := p_attribute_rec.ATTRIBUTE7;
207           x_case_def_rec.ATTRIBUTE8             := p_attribute_rec.ATTRIBUTE8;
208           x_case_def_rec.ATTRIBUTE9             := p_attribute_rec.ATTRIBUTE9;
209           x_case_def_rec.ATTRIBUTE10            := p_attribute_rec.ATTRIBUTE10;
210           x_case_def_rec.ATTRIBUTE11            := p_attribute_rec.ATTRIBUTE11;
211           x_case_def_rec.ATTRIBUTE12            := p_attribute_rec.ATTRIBUTE12;
212           x_case_def_rec.ATTRIBUTE13            := p_attribute_rec.ATTRIBUTE13;
213           x_case_def_rec.ATTRIBUTE14            := p_attribute_rec.ATTRIBUTE14;
214           x_case_def_rec.ATTRIBUTE15            := p_attribute_rec.ATTRIBUTE15;
215           x_case_def_rec.CREATED_BY             := p_attribute_rec.CREATED_BY ;
216           x_case_def_rec.CREATION_DATE          := p_attribute_rec.CREATION_DATE;
217           x_case_def_rec.LAST_UPDATED_BY        := p_attribute_rec.LAST_UPDATED_BY ;
218           x_case_def_rec.LAST_UPDATE_DATE       := p_attribute_rec.LAST_UPDATE_DATE;
219           x_case_def_rec.LAST_UPDATE_LOGIN      := p_attribute_rec.LAST_UPDATE_LOGIN;
220 
221 --      IF PG_DEBUG < 10  THEN
222       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
223          iex_debug_pub.LogMessage('Convert_case_def_Record: ' || '*********Start of Convert case def Record record *********');
224       END IF;
225 end  Convert_case_def_Record;
226 
227 
228 /* Name   PopulateCaseDefTbl
229 ** Populates  case definition for the given cas_id
230 */
231 Procedure PopulateCaseDefTbl
232          ( p_cas_id                     IN  NUMBER,
233            X_case_definition_tbl        OUT NOCOPY CASE_DEFINITION_TBL_TYPE
234          ) IS
235 
236 Cursor get_case_def is
237        Select column_name,column_value,table_name
238        From   iex_case_definitions
239        where  cas_id =p_cas_id
240          	    and active_flag ='Y';
241  tbl_ctr NUMBER ;
242 BEGIN
243 --   IF PG_DEBUG < 10  THEN
244    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
245       IEX_DEBUG_PUB.LogMessage ('*********Start of Procedure =>PopulateCaseDefTbl ********* ');
246    END IF;
247     tbl_ctr := 1;
248   	FOR get_case_def_rec IN get_case_def LOOP
249         x_case_definition_tbl(tbl_ctr).column_name :=get_case_def_rec.column_name ;
250         x_case_definition_tbl(tbl_ctr).column_value:=get_case_def_rec.column_value ;
251         x_case_definition_tbl(tbl_ctr).table_name  :=get_case_def_rec.table_name ;
252         tbl_ctr := tbl_ctr +1;
253      END LOOP;
254 --     IF PG_DEBUG < 10  THEN
255      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
256         IEX_DEBUG_PUB.LogMessage ('*********End of Procedure =>PopulateCaseDefTbl ********* ');
257      END IF;
258  END PopulateCaseDefTbl;
259 
260 /** Populate Case Record **/
261 PROCEDURE PopCaseRec(p_cas_id     IN NUMBER,
262                      x_cas_rec    OUT NOCOPY iex_cases_pvt.cas_rec_type) IS
263 Cursor Case_rec_cur (p_cas_id in number)is
264        select * from iex_cases_all_b
265        where  cas_id =p_cas_id
266          	    and active_flag ='Y';
267 
268 Cursor Case_comments_cur (p_cas_id in number)is
269        select comments from iex_cases_tl
270        where  cas_id =p_cas_id and
271        userenv('LANG') in (LANGUAGE, SOURCE_LANG)
272        and active_flag ='Y';
273 
274 BEGIN
275 --      IF PG_DEBUG < 10  THEN
276       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
277          IEX_DEBUG_PUB.LogMessage ('*********Start of Procedure =>PopCaseRec ********* ');
278       END IF;
279       FOR get_cas_rec in Case_rec_cur(p_cas_id)  LOOP
280 
281           x_cas_rec.ORIG_CAS_ID  := p_cas_id ;
282           x_cas_rec.CASE_STATE   := 'OPEN' ;
283           x_cas_rec.STATUS_CODE  := 'CURRENT' ;
284           x_cas_rec.ACTIVE_FLAG  :='Y';
285 
286           x_cas_rec.PARTY_ID             := get_cas_rec.PARTY_ID ;
287           x_cas_rec.CASE_NUMBER             := get_cas_rec.CASE_NUMBER ;
288           x_cas_rec.CASE_ESTABLISHED_DATE   := get_cas_rec.CASE_ESTABLISHED_DATE ;
289           x_cas_rec.OWNER_RESOURCE_ID       := get_cas_rec.OWNER_RESOURCE_ID;
290           x_cas_rec.ACCESS_RESOURCE_ID      := get_cas_rec.ACCESS_RESOURCE_ID;
291           x_cas_rec.REQUEST_ID              := get_cas_rec.REQUEST_ID;
292           x_cas_rec.PROGRAM_APPLICATION_ID  := get_cas_rec.PROGRAM_APPLICATION_ID;
293           x_cas_rec.PROGRAM_ID              := get_cas_rec.PROGRAM_ID;
294           x_cas_rec.PROGRAM_UPDATE_DATE     := get_cas_rec.PROGRAM_UPDATE_DATE;
295           x_cas_rec.ATTRIBUTE_CATEGORY      := get_cas_rec.ATTRIBUTE_CATEGORY;
296           x_cas_rec.ATTRIBUTE1              := get_cas_rec.ATTRIBUTE1;
297           x_cas_rec.ATTRIBUTE2              := get_cas_rec.ATTRIBUTE2;
298           x_cas_rec.ATTRIBUTE3              := get_cas_rec.ATTRIBUTE3;
299           x_cas_rec.ATTRIBUTE4              := get_cas_rec.ATTRIBUTE4;
300           x_cas_rec.ATTRIBUTE5              := get_cas_rec.ATTRIBUTE5;
301           x_cas_rec.ATTRIBUTE6              := get_cas_rec.ATTRIBUTE6;
302           x_cas_rec.ATTRIBUTE7              := get_cas_rec.ATTRIBUTE7;
303           x_cas_rec.ATTRIBUTE8                := get_cas_rec.ATTRIBUTE8;
304           x_cas_rec.ATTRIBUTE9                := get_cas_rec.ATTRIBUTE9;
305           x_cas_rec.ATTRIBUTE10               := get_cas_rec.ATTRIBUTE10;
306           x_cas_rec.ATTRIBUTE11               := get_cas_rec.ATTRIBUTE11;
307           x_cas_rec.ATTRIBUTE12               := get_cas_rec.ATTRIBUTE12;
308           x_cas_rec.ATTRIBUTE13               := get_cas_rec.ATTRIBUTE13;
309           x_cas_rec.ATTRIBUTE14               := get_cas_rec.ATTRIBUTE14;
310           x_cas_rec.ATTRIBUTE15               := get_cas_rec.ATTRIBUTE15;
311           x_cas_rec.CLOSE_REASON              := get_cas_rec.CLOSE_REASON;
312           x_cas_rec.org_id                    :=get_cas_rec.org_id;
313           x_cas_rec.PREDICTED_RECOVERY_AMOUNT := get_cas_rec.PREDICTED_RECOVERY_AMOUNT;
314           x_cas_rec.PREDICTED_CHANCE          := get_cas_rec.PREDICTED_CHANCE;
315 
316       END LOOP;
317       --get comments
318 --      IF PG_DEBUG < 10  THEN
319       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
320          IEX_DEBUG_PUB.LogMessage ('PopCaseRec: ' || 'Get comments for the case');
321       END IF;
322       For Case_comments_rec in Case_comments_cur (p_cas_id)
323       LOOP
324           x_cas_rec.COMMENTS               :=Case_comments_rec.COMMENTS;
325       END LOOP;
326 
327 --     IF PG_DEBUG < 10  THEN
328      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
329         IEX_DEBUG_PUB.LogMessage ('*********End of Procedure =>PopCaseRec *********');
330      END IF;
331 END PopCaseRec;
332 
333 /** Populate Case Definition Record **/
334 PROCEDURE PopulateCaseDefRec(p_table_name     IN  VARCHAR2,
335                              p_column_name    IN  VARCHAR2,
336                              p_column_value   IN  VARCHAR2,
337                              p_cas_id         IN  NUMBER,
338                              p_attribute_rec  IN  CAS_Rec_Type  := G_MISS_CAS_REC,
339                              x_case_def_rec    OUT NOCOPY
340                                   iex_case_definitions_pvt.case_definition_rec_type) IS
341 BEGIN
342 --      IF PG_DEBUG < 10  THEN
343       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
344          IEX_DEBUG_PUB.LogMessage ('*********Start of Procedure =>PopulateCaseDefRec*********');
345       END IF;
346       --to populate attributes 1-15 and concurrent programs
347       convert_case_def_record(p_attribute_rec,
348                               x_case_def_rec);
349       x_case_def_rec.table_name     := p_table_name;
350       x_case_def_rec.column_name    := p_column_name;
351       x_case_def_rec.column_value   := p_column_value;
352       x_case_def_rec.cas_id         := p_cas_id;
353 --      IF PG_DEBUG < 10  THEN
354       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
355          IEX_DEBUG_PUB.LogMessage ('*********End of Procedure =>PopulateCaseDefRec*********');
356       END IF;
357 END  PopulateCaseDefRec;
358 
359 /** Populate Case Record **/
360 PROCEDURE PopulateCaseRec(p_case_number           IN VARCHAR2 ,
361                           p_comments              IN VARCHAR2 ,
362                           p_org_id                IN NUMBER   ,
363                           p_case_established_date IN DATE     ,
364                           p_attribute_rec         IN  CAS_Rec_Type  := G_MISS_CAS_REC,
365                           x_cas_rec               OUT NOCOPY iex_cases_pvt.cas_rec_type) IS
366 BEGIN
367 --      IF PG_DEBUG < 10  THEN
368       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
369          IEX_DEBUG_PUB.LogMessage ('*********Start of Procedure =>PopulateCaseRec ********* ');
370       END IF;
371       --to populate attributes 1-15 and concurrent programs
372       convert_case_record(p_attribute_rec,x_cas_rec);
373       x_cas_rec.CASE_NUMBER            :=p_case_number;
374       x_cas_rec.org_id                 :=p_org_id;
375       x_cas_rec.COMMENTS               :=p_comments;
376       x_cas_rec.case_established_date  :=p_case_established_date;
377 
378 --      IF PG_DEBUG < 10  THEN
379       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
380          IEX_DEBUG_PUB.LogMessage ('*********End of Procedure =>PopulateCaseRec *********');
381       END IF;
382 END PopulateCaseRec;
383 
384 /** Populate Case Objects Record **/
385 PROCEDURE PopulateCaseObjectRec(p_object_code     IN  VARCHAR2,
386                                 p_object_id       IN  NUMBER,
387                                 p_cas_id          IN  NUMBER,
388                                 p_attribute_rec   IN  CAS_Rec_Type  := G_MISS_CAS_REC,
389                                 x_case_object_rec OUT NOCOPY
390                                            iex_case_objects_pvt.case_object_rec_type)IS
391 
392 BEGIN
393 --      IF PG_DEBUG < 10  THEN
394       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
395          IEX_DEBUG_PUB.LogMessage ('*********Start of Procedure =>PopulateCaseObjectRec*********');
396       END IF;
397       --to populate attributes 1-15 and concurrent programs
398       convert_case_object_record(p_attribute_rec,x_case_object_rec);
399 
400        x_case_object_rec.object_code         :=p_object_code;
401        x_case_object_rec.object_id           :=p_object_id;
402        x_case_object_rec.cas_id              :=p_cas_id ;
403 --       IF PG_DEBUG < 10  THEN
404        IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
405           IEX_DEBUG_PUB.LogMessage ('*********End of Procedure =>PopulateCaseObjectRec *********');
406        END IF;
407 
408 END  PopulateCaseObjectRec;
409 
410 /* Name   CheckAdvanceDelinquencies
411 ** Used by the OKL wrapper to decide whether to call createCaseObjects or
412 ** reassign Case when Bill_to_address or any case attribute is changed
413 */
414 Function CheckAdvanceDelinquencies
415           (P_CaseID       IN NUMBER,
416            x_del_id       OUT NOCOPY NUMBER
417           )Return BOOLEAN IS
418 
419 
420 cursor c_writeoffs is
421     Select del.delinquency_id
422     from iex_delinquencies del,
423          iex_writeoffs wrioff
424     where del.case_id           = p_caseid
425     and   wrioff.delinquency_id = del.delinquency_id
426 
427 --Start of BUG 4408860
428 -- For Bug 4408860
429 --jsanju 06/05/05
430 -- we shpudl npot be looking for status ='CLOSE'
431 --since from iex.h, we do not have case delinquencies and
432 -- and the old delinquencies with case id has been update to status ='CLOSE'
433     --and   del.status            <> 'CURRENT';
434     and   del.status           NOT IN ('CURRENT','CLOSE');
435 --End of bug 4408860
436 
437 
438 cursor c_bankruptcies is
439     Select del.delinquency_id
440     from iex_delinquencies del,
441          iex_bankruptcies bank
442     where del.case_id           = p_caseid
443     and   bank.delinquency_id   = del.delinquency_id
444 --Start of BUG 4408860
445 -- For Bug 4408860
446 --jsanju 06/05/05
447 -- we shpudl npot be looking for status ='CLOSE'
448 --since from iex.h, we do not have case delinquencies and
449 -- and the old delinquencies with case id has been update to status ='CLOSE'
450     --and   del.status            <> 'CURRENT';
451     and   del.status           NOT IN ('CURRENT','CLOSE');
452 --End of bug 4408860
453 
454 cursor c_repossessions is
455     Select del.delinquency_id
456     from iex_delinquencies del,
457          iex_repossessions repo
458     where del.case_id           = p_caseid
459     and   repo.delinquency_id   = del.delinquency_id
460 --Start of BUG 4408860
461 -- For Bug 4408860
462 --jsanju 06/05/05
463 -- we shpudl npot be looking for status ='CLOSE'
464 --since from iex.h, we do not have case delinquencies and
465 -- and the old delinquencies with case id has been update to status ='CLOSE'
466     --and   del.status            <> 'CURRENT';
467     and   del.status           NOT IN ('CURRENT','CLOSE');
468 --End of bug 4408860
469 
470 cursor c_litigations is
471     Select del.delinquency_id
472     from iex_delinquencies del,
473          iex_litigations litg
474     where del.case_id           = p_caseid
475     and   litg.delinquency_id   = del.delinquency_id
476 --Start of BUG 4408860
477 -- For Bug 4408860
478 --jsanju 06/05/05
479 -- we shpudl npot be looking for status ='CLOSE'
480 --since from iex.h, we do not have case delinquencies and
481 -- and the old delinquencies with case id has been update to status ='CLOSE'
482     --and   del.status            <> 'CURRENT';
483     and   del.status           NOT IN ('CURRENT','CLOSE');
484 --End of bug 4408860
485 
486 
487 Begin
488 
489      OPEN c_writeoffs;
490      FETCH c_writeoffs INTO x_del_id;
491      CLOSE c_writeoffs;
492 
493      If x_del_id IS NOT NULL THEN
494         return TRUE;
495 
496      END IF;
497 
498      OPEN c_litigations;
499      FETCH c_litigations INTO x_del_id;
500      CLOSE c_litigations;
501 
502      If x_del_id IS NOT NULL THEN
503         return TRUE;
504 
505      END IF;
506 
507      OPEN c_repossessions;
508      FETCH c_repossessions INTO x_del_id;
509      CLOSE c_repossessions;
510 
511      If x_del_id IS NOT NULL THEN
512         return TRUE;
513 
514      END IF;
515 
516      OPEN c_bankruptcies;
517      FETCH c_bankruptcies INTO x_del_id;
518      CLOSE c_bankruptcies;
519 
520      If x_del_id IS NOT NULL THEN
521         return TRUE;
522      END IF;
523 
524     x_del_id := NULL;
525     return FALSE;
526 
527 
528 EXCEPTION WHEN OTHERS THEN
529      x_del_id := NULL;
530      Return FALSE;
531 
532 End CheckAdvanceDelinquencies;
533 
534 /** Send notification to the agent who case has
535  ** been reassigned
536   */
537   Procedure send_notification
538    ( p_OldCaseID      IN NUMBER,
539      p_NewCaseID      IN NUMBER,
540      p_ContractNumber IN VARCHAR2,
541      p_CaseAgent      IN VARCHAR2,
542      x_return_status  OUT NOCOPY VARCHAR2) IS
543 
544   l_result        VARCHAR2(100);
545   itemkey         VARCHAR2(1000);
546   l_return_status VARCHAR2(100);
547 
548 
549   BEGIN
550 
551            select iex_cases_all_b_s.nextval
552            into itemkey
553            from dual;
554 
555 --           IF PG_DEBUG < 10  THEN
556            IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
557               iex_debug_pub.logmessage ('send_notification: ' || 'item Key in send notification of iex_cas_utl_pub '
558                                      || itemkey );
559            END IF;
560 
561             wf_engine.createprocess(itemtype => 'IEXCASNF',
562                                     itemkey  =>  itemkey,
563                                     process => 'IEXCASNF');
564 
565             wf_engine.setitemattrnumber(itemtype => 'IEXCASNF',
566                                         itemkey  =>  itemkey,
567                                         aname    =>  'CASE_ID',
568                                         avalue   =>  p_OldCaseID);
569 
570             wf_engine.setitemattrnumber(itemtype => 'IEXCASNF',
571                                         itemkey  =>  itemkey,
572                                         aname    =>  'NEW_CASE_ID',
573                                         avalue   =>  p_NewCaseID);
574 
575             wf_engine.setitemattrtext(itemtype => 'IEXCASNF',
576                                         itemkey  =>  itemkey,
577                                         aname    =>  'CONTRACT_NUMBER',
578                                         avalue   =>  p_ContractNumber);
579 
580             wf_engine.setitemattrtext(itemtype => 'IEXCASNF',
581                                       itemkey  =>  itemkey,
582                                       aname    =>  'CASE_AGENT',
583                                       avalue   =>  p_CaseAgent);
584 
585            wf_engine.startprocess(itemtype => 'IEXCASNF',
586                                   itemkey  =>  itemkey);
587 
588            wf_engine.ItemStatus(itemtype => 'IEXCASNF',
589                                 itemkey  =>  itemkey,
590                                 status   =>   l_return_status,
591                                 result   =>   l_result);
592 
593 
594           if (l_return_status in ('COMPLETE', 'ACTIVE')) THEN
595                x_return_status := 'S';
596           else
597               x_return_status := 'F';
598           end if;
599 --          IF PG_DEBUG < 10  THEN
600           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
601              iex_debug_PUB.logmessage ('send_notification: ' || 'send notification status ' || x_return_status);
602           END IF;
603 EXCEPTION
604 WHEN OTHERS THEN
605     x_return_status := 'F';
606 
607 END  send_notification;
608 
609 --******************Public routines****************************
610 /* Name   CheckCaseDef
611 ** It Checks if all the elements of the case which defines a case are valid
612 ** Values
613 */
614 Function CheckCaseDef
615           (P_case_definition_tbl       IN   CASE_DEFINITION_TBL_TYPE
616 
617           )Return BOOLEAN IS
618 
619   x_sql          VARCHAR2(32767);
620   x_count        NUMBER;
621 
622   -- clchang updated for sql bind var 05/07/2003
623   vstr1          VARCHAR2(100) := 'SELECT COUNT(*) FROM ' ;
624   vstr2          VARCHAR2(100) := ' WHERE ' ;
625   vstr3          VARCHAR2(100) := ' = ';
626 
627 BEGIN
628 --     IF PG_DEBUG < 10  THEN
629      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
630         IEX_DEBUG_PUB.LogMessage ('********* Start of Function =>CheckCaseDef ******** ');
631      END IF;
632 --     IF PG_DEBUG < 10  THEN
633      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
634         iex_debug_pub.logmessage ('CheckCaseDef: ' || 'table count'||   P_case_definition_tbl.COUNT );
635      END IF;
636 
637 
638 
639    	 FOR i IN 1..P_case_definition_tbl.COUNT LOOP
640      /* If Column value or column name is Null return False */
641 
642 
643         IF  ((P_case_definition_tbl(i).column_name  IS NOT NULL) and
644              (P_case_definition_tbl(i).column_value IS NOT NULL)) THEN
645 
646 --        IF PG_DEBUG < 10  THEN
647         IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
648            iex_debug_pub.logmessage ('CheckCaseDef: ' ||  'inside loop' ||P_case_definition_tbl(i).column_name||
649                                      P_case_definition_tbl(i).column_value);
650         END IF;
651 
652               If P_case_definition_tbl(i).table_name IS NOT NULL THEN
653 
654                    -- clchang updated for sql bind var 05/07/2003
655                    --x_sql := 'SELECT COUNT(*) FROM ' || P_case_definition_tbl(i).table_name ;
656                    --x_sql := x_sql || ' WHERE '      || P_case_definition_tbl(i).column_name|| ' = ';
657                    x_sql := vstr1 || P_case_definition_tbl(i).table_name ;
658                    x_sql := x_sql || vstr2  || P_case_definition_tbl(i).column_name|| vstr3;
659                    -- end updated
660 
661                    IF P_case_definition_tbl(i).data_type = g_varchar2 THEN
662                       x_sql := x_sql || '''' || P_case_definition_tbl(i).column_value || '''';
663                    ELSE
664                       x_sql := x_sql || P_case_definition_tbl(i).column_value;
665                    END IF;
666 --                   IF PG_DEBUG < 10  THEN
667                    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
668                       IEX_DEBUG_PUB.LogMessage ('CheckCaseDef: ' || 'SQL  =>'|| x_sql);
669                    END IF;
670                    BEGIN
671                         EXECUTE IMMEDIATE x_sql INTO x_count;
672                         If x_count =0 THEN
673 --                           IF PG_DEBUG < 10  THEN
674                            IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
675                               IEX_DEBUG_PUB.LogMessage ('CheckCaseDef: ' || 'Invalid Case defintion');
676                            END IF;
677                            return FALSE;
678                         End if;
679                    EXCEPTION WHEN OTHERS THEN
680 --                       IF PG_DEBUG < 10  THEN
681                        IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
682                           IEX_DEBUG_PUB.LogMessage ('CheckCaseDef: ' || 'In Exception When Others =>'||SQLERRM);
683                        END IF;
684                        return FALSE;
685                    END ;
686                END IF; --if table name is not null
687            ELSE -- else if column name or column value is null
688 --                IF PG_DEBUG < 10  THEN
689                 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
690                    IEX_DEBUG_PUB.LogMessage ('CheckCaseDef: ' || 'Column Name or column value is Null');
691                 END IF;
692                 return FALSE;
693            END IF;  --if column name or column value is null
694         END LOOP;
695         Return TRUE;
696 --    IF PG_DEBUG < 10  THEN
697     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
698        IEX_DEBUG_PUB.LogMessage ('*************End of iex =>CheckCaseDef ******** ');
699     END IF;
700  END CheckCaseDef;
701 
702 /* Name   GetCaseID
703 ** Return matching case id for the given case definition
704 */
705 Procedure GetCaseID
706           (P_case_definition_tbl        IN   CASE_DEFINITION_TBL_TYPE
707                                             ,
708            x_cas_id                     OUT NOCOPY NUMBER    ) IS
709 
710 
711  l_column_name   VARCHAR2(1000) :=P_case_definition_tbl(1).column_name;
712  l_column_value  VARCHAR2(1000) :=P_case_definition_tbl(1).column_value;
713  l_table_name    VARCHAR2(1000) :=P_case_definition_tbl(1).table_name;
714  l_case_sql VARCHAR2(2000):= ' and exists (select null from iex_cases_all_b ICAS where ICAS.cas_id = a.cas_id'||
715                              ' and ICAS.case_state='||'''OPEN''' ||
716                              ' and ICAS.active_flag='||'''Y''' ||' ) ';
717 
718  -- clchang updated for sql bind var 05/07/2003
719  vstr1           VARCHAR2 (2000):= ' select a.cas_id  from ';
720  vstr2           VARCHAR2 (2000):= ' iex_case_definitions a ';
721  vstr3           VARCHAR2 (2000):= ' where a.column_name = ' ;
722  vstr4           VARCHAR2 (2000):= '''';
723  vstr5           VARCHAR2 (2000):= ' and  a.column_value = ';
724  vstr6           VARCHAR2 (2000):= ' and a.active_flag= ''Y'' ';
725  l_first_sql     VARCHAR2 (2000);
726  vstr7           VARCHAR2 (100) := ' and table_name=' ;
727  l_table_clause  VARCHAR2 (100);
728  /*
729  l_first_sql VARCHAR2 (2000):=' select a.cas_id  from '||
730                               ' iex_case_definitions a '||
731                               ' where a.column_name ='   ||''''|| l_column_name  || ''''||
732                               ' and  a.column_value ='    ||''''|| l_column_value || ''''||
733                               ' and a.active_flag='||'''Y''';
734   l_table_clause    VARCHAR2(100) := ' and table_name='  ||''''|| l_table_name   || '''' ;
735  */
736 
737   -- for l_sql
738   v_sql_str1     VARCHAR2(100) := ' and exists ( select null from ';
739   v_sql_str2     VARCHAR2(100) := ' iex_case_definitions ';
740   v_sql_str3     VARCHAR2(100) := ' where column_name = ';
741   v_sql_str4     VARCHAR2(100) := ' and column_value = ' ;
742   v_sql_str5     VARCHAR2(100) := ' and ';
743   v_sql_str6     VARCHAR2(100) := '.cas_id= a.cas_id ' ;
744   v_sql_str7     VARCHAR2(100) := '.active_flag= ''Y'' ' ;
745 
746   v_sql_str8     VARCHAR2(100) := ' and table_name= ';
747 
748 
749  --
750 
751 l_no_table_clause VARCHAR2(100) :=   ' and table_name IS NULL ';
752 l_end             VARCHAR2(10)  := ' )';
753 l_table_alias     VARCHAR2(100);
754 l_sql             VARCHAR2(32767);
755 
756 -- if multiple rows are returned pick the first one
757 --since the dynamic sql may return more than 1 row
758 l_multiple_rows  VARCHAR2(32767) :='and rownum <2 ';
759 
760 BEGIN
761 --   IF PG_DEBUG < 10  THEN
762    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
763       IEX_DEBUG_PUB.LogMessage ('*********Start of Procedure =>GetCaseID ********* ');
764    END IF;
765 
766    -- clchang updated for sql bind var 05/07/2003
767    l_first_sql := vstr1 || vstr2 ||
768                   vstr3 || vstr4 || l_column_name || vstr4 ||
769                   vstr5 || vstr4 || l_column_value || vstr4 ||
770                   vstr6;
771 
772    l_table_clause := vstr7 || vstr4 || l_table_name || vstr4;
773 
774 --   IF PG_DEBUG < 10  THEN
775    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
776       IEX_DEBUG_PUB.LogMessage ('l_first_sql='|| l_first_sql);
777       IEX_DEBUG_PUB.LogMessage ('l_table_clause='|| l_table_clause);
778    END IF;
779    -- end
780 
781     x_cas_id := NULL;
782     l_sql := l_first_sql ;
783 
784     /* check if table name passed is null  */
785     if l_table_name is NOT NULL THEN
786        l_sql :=l_sql ||l_table_clause;
787     else
788         l_sql :=l_sql ||l_no_table_clause;
789     end if;
790 --    IF PG_DEBUG < 10  THEN
791     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
792        iex_debug_pub.logMessage('GetCaseID: ' || 'First Sql Stmt =>'||l_sql);
793     END IF;
794 
795   	FOR i IN 2..P_case_definition_tbl.COUNT LOOP
796 
797          l_table_alias :='ICDF'||i;
798          l_column_name   :=P_case_definition_tbl(i).column_name;
799          l_column_value  :=P_case_definition_tbl(i).column_value;
800          l_table_name    :=P_case_definition_tbl(i).table_name;
801 
802          -- clchang updated for sql bind var 05/07/2003
803          l_sql := l_sql || v_sql_str1 ||
804                            v_sql_str2 || l_table_alias ||
805                            v_sql_str3 || vstr4 || l_column_name ||  vstr4 ||
806                            v_sql_str4 || vstr4 || l_column_value || vstr4 ||
807                            v_sql_str5 || l_table_alias || v_sql_str6 ||
808                            v_sql_str5 || l_table_alias || v_sql_str7 ;
809         /*
810          l_sql := l_sql  ||   ' and exists ( select null from '||
811                               ' iex_case_definitions ' || l_table_alias  ||
812                               ' where column_name ='   ||''''|| l_column_name  || ''''||
813                               ' and column_value ='    ||''''|| l_column_value || ''''||
814                               ' and '||l_table_alias   ||'.cas_id= ' ||'a.cas_id'||
815                               ' and '||l_table_alias   ||'.active_flag='||'''Y''' ;
816         */
817 
818 --        IF PG_DEBUG < 10  THEN
819         IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
820            IEX_DEBUG_PUB.LogMessage ('l_sql='|| l_sql);
821         END IF;
822         -- end updated
823 
824          /* check if table name passed is null  */
825             if l_table_name is NOT NULL THEN
826                -- clchang updated for sql bind var 05/07/2003
827                l_sql := l_sql || v_sql_str8 || vstr4 ||
828                                  l_table_name || vstr4 || l_end;
829                /*
830                l_sql :=l_sql || ' and table_name='   ||''''||
831                                  l_table_name || ''''||l_end;
832                */
833 --               IF PG_DEBUG < 10  THEN
834                IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
835                   IEX_DEBUG_PUB.LogMessage ('l_sql='|| l_sql);
836                END IF;
837                -- end updated
838             else
839                l_sql :=l_sql ||l_no_table_clause||l_end;
840             end if;
841 --            IF PG_DEBUG < 10  THEN
842             IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
843                iex_debug_pub.logMessage('GetCaseID: ' || '                        ');
844             END IF;
845 --            IF PG_DEBUG < 10  THEN
846             IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
847                iex_debug_pub.logMessage('GetCaseID: ' || 'Sql Stmt =>'||l_sql);
848             END IF;
849     END LOOP;
850     l_sql := l_sql ||l_case_sql;
851 
852     l_sql := l_sql ||l_multiple_rows ;
853 --    IF PG_DEBUG < 10  THEN
854     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
855        iex_debug_pub.logMessage('GetCaseID: ' || '                        ');
856     END IF;
857 --    IF PG_DEBUG < 10  THEN
858     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
859        iex_debug_pub.logMessage('GetCaseID: ' || 'Final Sql  Stmt =>'||l_sql);
860     END IF;
861     BEGIN
862         EXECUTE IMMEDIATE l_sql INTO x_cas_id;
863     EXCEPTION
864     WHEN OTHERS THEN
865 --          IF PG_DEBUG < 10  THEN
866           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
867              IEX_DEBUG_PUB.LogMessage ('GetCaseID: ' || '*********IN WHEN OTHERS => '||SQLERRM ||' ********* ');
868           END IF;
869           x_cas_id := NULL;
870     END;
871 --    IF PG_DEBUG < 10  THEN
872     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
873        IEX_DEBUG_PUB.LogMessage ('*********End of Procedure =>GetCaseID ********* ');
874     END IF;
875  END GetCaseID;
876 
877 
878 /* Name   CloseCase
879 **  api  : Current version 2.0
880 ** Updates the status of a case. Also create a new case and updates the case objects to the new case
881 **  if specified ( the p_copy_objects parameter should be equal to 'Y')
882 ** Required Parameters are
883 ** a) p_Cas_id     --> Cas Id
884 ** Optional Parameters
885 ** a) p_copy_objects   --> default is 'N'. If 'Y' then create new case and copy all the case objects to
886 **                         the new case. If Value is 'N',then do not copy the case objects.
887 ** p_close_date      -->Closing date of the case.
888 */
889 PROCEDURE CloseCase(
890           P_Api_Version_Number         IN  NUMBER,
891           P_Init_Msg_List              IN  VARCHAR2   ,
892           P_Commit                     IN  VARCHAR2  ,
893           P_validation_level           IN  NUMBER     ,
894           P_cas_id                     IN NUMBER,
895           p_close_date                 IN DATE,
896           p_copy_objects               IN VARCHAR2,
897           p_cas_Rec                    IN cas_Rec_Type,
898           X_Return_Status              OUT NOCOPY  VARCHAR2,
899           X_Msg_Count                  OUT NOCOPY  NUMBER,
900           X_Msg_Data                   OUT NOCOPY  VARCHAR2
901           ) IS
902 
903 
904 l_api_name                CONSTANT VARCHAR2(30) := 'CloseCase';
905 l_api_name_full	          CONSTANT VARCHAR2(61) := g_pkg_name || '.' || l_api_name;
906 l_api_version_number      CONSTANT NUMBER   := 2.0;
907 l_cas_new_id              NUMBER;
908 l_cas_id                  NUMBER :=p_cas_id;
909 l_closing_date            DATE :=p_close_Date;
910 l_case_comments           VARCHAR2(240);
911 l_object_version_number   NUMBER;
912 l_return_status           VARCHAR2(1);
913 l_msg_count               NUMBER;
914 l_msg_data                VARCHAR2(32767);
915 l_case_object_id          NUMBER;
916 l_case_definition_id      NUMBER;
917 l_cas_rec                 iex_cases_pvt.cas_rec_type
918                                          := iex_cases_pvt.g_miss_cas_rec;
919 l_case_definition_rec            iex_case_definitions_pvt.case_definition_rec_type
920                                          := iex_case_definitions_pvt.g_miss_case_definition_rec;
921 l_case_object_rec         iex_case_objects_pvt.case_object_rec_type
922                                          := iex_case_objects_pvt.g_miss_case_object_rec;
923 l_case_definition_tbl     CASE_DEFINITION_TBL_TYPE
924                                        DEFAULT G_MISS_CASE_DEF_TBL;
925 
926 l_resource_tab iex_utilities.resource_tab_type;  -- added by ehuh Aug 1 2003
927 l_resource_id NUMBER   :=  nvl(fnd_profile.value('IEX_STRY_DEFAULT_RESOURCE'),0);
928 
929 Cursor get_case_objects_obj_ver_num (p_cas_id in number) is
930        select object_version_number,
931                case_object_id
932        from iex_case_objects
933        where  cas_id =p_cas_id
934 	  and active_flag ='Y';
935 
936  BEGIN
937 --     IF PG_DEBUG < 10  THEN
938      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
939         iex_debug_pub.logMessage('CloseCase: ' || '---------------------------------');
940      END IF;
941 --     IF PG_DEBUG < 10  THEN
942      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
943         IEX_DEBUG_PUB.LogMessage ('CloseCase: ' || '*********Start of Procedure => '||l_api_name||' *********');
944      END IF;
945       -- Standard Start of API savepoint
946       SAVEPOINT CLOSECASE_PUB;
947 
948       -- Standard call to check for call compatibility.
949       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
950                            	               p_api_version_number,
951                                            l_api_name,
952                                            G_PKG_NAME)
953       THEN
954           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
955       END IF;
956 
957 
958       -- Initialize message list if p_init_msg_list is set to TRUE.
959       IF FND_API.to_Boolean( p_init_msg_list )
960       THEN
961           FND_MSG_PUB.initialize;
962       END IF;
963 
964 --     IF PG_DEBUG < 10  THEN
965      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
966         iex_debug_pub.logMessage('CloseCase: ' || 'After Api compatability Check');
967      END IF;
968 
969       -- Initialize API return status to SUCCESS
970       x_return_status := FND_API.G_RET_STS_SUCCESS;
971       --
972       -- API body
973       --
974       -- ******************************************************************
975       -- Validate Environment
976       -- ******************************************************************
977       IF FND_GLOBAL.User_Id IS NULL
978       THEN
979           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
980           THEN
981               FND_MESSAGE.Set_Name('IEX', 'IEX_CANNOT_GET_PROFILE_VALUE');
982               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
983               FND_MSG_PUB.ADD;
984           END IF;
985           RAISE FND_API.G_EXC_ERROR;
986       END IF;
987 --      IF PG_DEBUG < 10  THEN
988       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
989          iex_debug_pub.logMessage('CloseCase: ' || 'After FND_GLOBAL_USER Check');
990       END IF;
991 
992       -- Item level validation
993       IF (p_validation_level > fnd_api.g_valid_level_none) THEN
994 
995          -- Check for valid cas_id
996          BEGIN
997               IF (l_cas_id IS NOT NULL) AND (l_cas_id <> FND_API.G_MISS_NUM) THEN
998                  --May have to check for status_code too.
999                   SELECT cas_id,object_version_number
1000                   INTO l_cas_id,l_object_version_number
1001                   FROM iex_cases_all_b
1002                   WHERE cas_id      = p_cas_id
1003                   AND   case_state  = 'OPEN'
1004 	             and active_flag ='Y';
1005                ELSE
1006                    AddMissingArgMsg(
1007                           p_api_name    =>  l_api_name_full,
1008                           p_param_name  =>  'p_object_id' );
1009                     RAISE FND_API.G_EXC_ERROR;
1010                END IF;
1011          EXCEPTION
1012          WHEN NO_DATA_FOUND THEN
1013                     AddInvalidArgMsg(
1014                           p_api_name    =>  l_api_name_full,
1015                           p_param_name  =>  'p_cas_id' ,
1016                           p_param_value => p_cas_id);
1017                     RAISE FND_API.G_EXC_ERROR;
1018                    fnd_msg_pub.add;
1019                    RAISE FND_API.G_EXC_ERROR;
1020           WHEN OTHERS THEN
1021                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1022           END;
1023 
1024    END IF; --end of item level validation
1025 --   IF PG_DEBUG < 10  THEN
1026    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1027       iex_debug_pub.logMessage('CloseCase: ' || 'After Item validation ');
1028    END IF;
1029    -- Call update Case PVT to update the case_state to 'CLOSE';
1030    l_cas_rec.cas_id                :=l_cas_id;
1031    l_cas_rec.object_version_number :=l_object_version_number;
1032    l_cas_rec.case_state            :='CLOSE';
1033    l_cas_rec.case_closing_date          :=p_close_date;
1034 
1035 --   IF PG_DEBUG < 10  THEN
1036    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1037       iex_debug_pub.logMessage('CloseCase: ' || 'Before Calling  Update  PVT');
1038    END IF;
1039    iex_cases_pvt.update_cas
1040                         (P_Api_Version_Number         =>l_api_version_number,
1041                          P_Init_Msg_List              =>FND_API.G_FALSE,
1042                          P_Commit                     =>FND_API.G_FALSE,
1043                          p_validation_level           =>P_validation_level,
1044                          P_cas_Rec                    =>l_cas_Rec,
1045                          X_Return_Status              =>l_return_status,
1046                          X_Msg_Count                  =>l_msg_count,
1047                          X_Msg_Data                   =>l_msg_data,
1048                          xo_object_version_number     =>l_object_version_number);
1049 --    IF PG_DEBUG < 10  THEN
1050     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1051        iex_debug_pub.logMessage('CloseCase: ' || 'After Calling update case  PVT and Status =>'||l_return_status);
1052     END IF;
1053 
1054     IF l_return_status = FND_API.G_RET_STS_ERROR then
1055      AddFailMsg( p_object     =>  'CASE',
1056                  p_operation  =>  'UPDATE' );
1057        raise FND_API.G_EXC_ERROR;
1058     elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1059        raise FND_API.G_EXC_UNEXPECTED_ERROR;
1060     END IF;
1061    -- Update of case is successful and if Copy object ='Y'
1062    --Create a new case with the same case definition (copy case definition and
1063    -- create case definitions for the new case id)
1064    --Update case object with the new case ID.
1065    IF p_copy_objects =g_yes THEN
1066 --      IF PG_DEBUG < 10  THEN
1067       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1068          iex_debug_pub.logMessage('CloseCase: ' || 'Before Calling Create Case  PVT');
1069       END IF;
1070       PopCaseRec(p_cas_id      =>l_cas_id,
1071                  x_cas_rec     =>l_cas_rec);
1072 
1073       -- added by ehuh Aug 10 2003
1074 
1075       begin
1076 
1077       --Begin bug#5373412 schekuri 10-Jul-2006
1078       --Call new consolidated procedure get_assigned_collector
1079         /*iex_utilities.get_case_resources(p_api_version      => 1.0,
1080                                          p_init_msg_list    => FND_API.G_TRUE,
1081                                          p_commit           => FND_API.G_FALSE,
1082                                          p_validation_level => p_validation_level,
1083                                          x_msg_count        => l_msg_count,
1084                                          x_msg_data         => l_msg_data,
1085                                          x_return_status    => l_return_status,
1086                                          p_party_id         => l_cas_rec.party_id,
1087                                          x_resource_tab     => l_resource_tab);*/
1088 
1089 	iex_utilities.get_assigned_collector(p_api_version => 1.0,
1090 	  				     p_init_msg_list     => FND_API.G_TRUE,
1091 					     p_commit            => FND_API.G_FALSE,
1092 					     p_validation_level  => p_validation_level,
1093 					     p_level             => 'CASE',
1094 					     p_level_id          => l_cas_rec.party_id,
1095 					     x_msg_count         => l_msg_count,
1096 					     x_msg_data          => l_msg_data,
1097 					     x_return_status     => l_return_status,
1098 					     x_resource_tab      => l_resource_tab);
1099       --End bug#5373412 schekuri 10-Jul-2006
1100 
1101       if l_resource_tab.COUNT >0 THEN
1102           l_cas_rec.owner_resource_id := l_resource_tab(1).resource_id;
1103       else
1104          l_cas_rec.owner_resource_id := l_resource_id;
1105      end if;
1106 
1107 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1108       iex_debug_pub.logMessage('Get_assign_resource(C) : ' || 'After Calling Get_assign_resource and Status =>'||l_return_status);
1109       iex_debug_pub.logMessage('Resource ID : ' || l_cas_rec.owner_resource_id );
1110 END IF;
1111 
1112       exception
1113          when others then
1114               null;
1115       end;
1116       -- ended by ehuh Aug 10 2003
1117 
1118       iex_cases_pvt.Create_CAS(
1119                     P_Api_Version_Number         =>l_api_version_number,
1120                     P_Init_Msg_List              =>FND_API.G_FALSE,
1121                     P_Commit                     =>FND_API.G_FALSE,
1122                     p_validation_level           =>P_validation_level,
1123                     P_cas_Rec                    =>l_cas_Rec,
1124                     x_case_id                    =>l_cas_new_id,
1125                     X_Return_Status              =>l_return_status,
1126                     X_Msg_Count                  =>l_msg_count,
1127                     X_Msg_Data                   =>l_msg_data);
1128 --        IF PG_DEBUG < 10  THEN
1129         IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1130            iex_debug_pub.logMessage('CloseCase: ' || 'After Calling Create Case  PVT and Status =>'||l_return_status);
1131         END IF;
1132         IF l_return_status = FND_API.G_RET_STS_ERROR then
1133              AddFailMsg( p_object     =>  'CASE',
1134                          p_operation  =>  'INSERT' );
1135             raise FND_API.G_EXC_ERROR;
1136         elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1137              raise FND_API.G_EXC_UNEXPECTED_ERROR;
1138         END IF;
1139 
1140         --Get case Case definition for the old case (l_cas_id)
1141            PopulateCaseDefTbl( p_cas_id             =>l_cas_id,
1142                                X_case_definition_tbl=>l_case_definition_tbl);
1143          --Call iex_case_definition_pvt to create case_def
1144     	   FOR i IN 1..l_case_definition_tbl.COUNT
1145            LOOP
1146                --Populate Case Definition record
1147                PopulateCaseDefRec
1148                                  (p_column_name    =>l_case_definition_tbl(i).column_name,
1149                                   p_column_value   =>l_case_definition_tbl(i).column_value,
1150                                   p_table_name     =>l_case_definition_tbl(i).table_name,
1151                                   p_cas_id         =>l_cas_new_id,
1152                                   p_attribute_rec  =>p_cas_rec,
1153                                   x_case_def_rec   =>l_case_definition_Rec);
1154 --               IF PG_DEBUG < 10  THEN
1155                IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1156                   iex_debug_pub.logMessage('CloseCase: ' || 'Before Calling Create Case Definition  PVT');
1157                END IF;
1158                iex_case_definitions_pvt.create_case_definitions(
1159                              P_Api_Version_Number         =>l_api_version_number,
1160                              P_Init_Msg_List              =>FND_API.G_FALSE,
1161                              P_Commit                     =>FND_API.G_FALSE,
1162                              p_validation_level           =>P_validation_level,
1163                              p_case_definition_rec        =>l_case_definition_Rec,
1164                              x_case_definition_id         =>l_case_definition_id,
1165                              X_Return_Status              =>l_return_status,
1166                              X_Msg_Count                  =>l_msg_count,
1167                              X_Msg_Data                   =>l_msg_data);
1168 --                 IF PG_DEBUG < 10  THEN
1169                  IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1170                     iex_debug_pub.logMessage('CloseCase: ' || 'After Calling Create Case Definition PVT and Status =>'||l_return_status);
1171                  END IF;
1172                  IF l_return_status = FND_API.G_RET_STS_ERROR then
1173                     AddFailMsg( p_object     =>  'CASE DEFINITION',
1174                                 p_operation  =>  'INSERT' );
1175                      raise FND_API.G_EXC_ERROR;
1176                  elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1177                       raise FND_API.G_EXC_UNEXPECTED_ERROR;
1178                  END IF;
1179              END LOOP;
1180 --             IF PG_DEBUG < 10  THEN
1181              IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1182                 iex_debug_pub.logMessage('CloseCase: ' || 'End of Case Definition' );
1183              END IF;
1184              --Populate Case object record for one CASE
1185              For cas_obj_rec in get_case_objects_obj_ver_num(l_cas_id) LOOP
1186 --                   IF PG_DEBUG < 10  THEN
1187                    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1188                       IEX_DEBUG_PUB.LogMessage ('CloseCase: ' || ' the case object ID updated is =>'
1189                                              ||cas_obj_rec.case_object_id ||' and  new cas ID is '||
1190                                                l_cas_new_id||' and old case id is => '||l_cas_id );
1191                    END IF;
1192 
1193                    l_case_object_Rec.cas_id         :=l_cas_new_id;
1194                    l_case_object_Rec.case_object_id :=cas_obj_rec.case_object_id;
1195                    l_case_object_Rec.object_version_number
1196                                                    :=cas_obj_rec.object_version_number;
1197 
1198                     --Call update_case_object_pvt to update Case object_id
1199 --                    IF PG_DEBUG < 10  THEN
1200                     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1201                        iex_debug_pub.logMessage('CloseCase: ' || 'Before Calling update Case Object PVT');
1202                     END IF;
1203                     iex_case_objects_pvt.update_case_objects(
1204                              P_Api_Version_Number         =>l_api_version_number,
1205                              P_Init_Msg_List              =>FND_API.G_FALSE,
1206                              P_Commit                     =>FND_API.G_FALSE,
1207                              p_validation_level           =>P_validation_level,
1208                              P_case_object_Rec            =>l_case_object_Rec,
1209                              X_Return_Status              =>l_return_status,
1210                              X_Msg_Count                  =>l_msg_count,
1211                              X_Msg_Data                   =>l_msg_data,
1212                              xo_object_version_number     =>l_object_version_number);
1213 --                    IF PG_DEBUG < 10  THEN
1214                     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1215                        iex_debug_pub.logMessage('CloseCase: ' || 'After Calling update Case Object PVT and Status =>'||l_return_status);
1216                     END IF;
1217                  -- Check return status from the above procedure call
1218                      IF l_return_status = FND_API.G_RET_STS_ERROR then
1219                          AddFailMsg( p_object     =>  'CASE OBJECTS',
1220                                      p_operation  =>  'INSERT' );
1221 
1222                         raise FND_API.G_EXC_ERROR;
1223                     elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1224                         raise FND_API.G_EXC_UNEXPECTED_ERROR;
1225                      END IF;
1226              END LOOP;
1227     END IF; -- p_copy_objects =g_yes
1228 
1229       --
1230       -- End of API body.
1231       --
1232 
1233       -- Standard check for p_commit
1234       IF FND_API.to_Boolean( p_commit )
1235       THEN
1236           COMMIT WORK;
1237       END IF;
1238 
1239 --     IF PG_DEBUG < 10  THEN
1240      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1241         IEX_DEBUG_PUB.LogMessage ('CloseCase: ' || '*********End of Procedure => '||l_api_name||' *********');
1242      END IF;
1243  -- Debug Message
1244  -- Standard call to get message count and if count is 1, get message info.
1245       FND_MSG_PUB.Count_And_Get
1246       (  p_count          =>   x_msg_count,
1247          p_data           =>   x_msg_data
1248       );
1249 
1250       EXCEPTION
1251           WHEN FND_API.G_EXC_ERROR THEN
1252               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1253                    P_API_NAME => L_API_NAME
1254                   ,P_PKG_NAME => G_PKG_NAME
1255                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1256                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
1257                   ,X_MSG_COUNT => X_MSG_COUNT
1258                   ,X_MSG_DATA => X_MSG_DATA
1259                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1260 
1261           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1262               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1263                    P_API_NAME => L_API_NAME
1264                   ,P_PKG_NAME => G_PKG_NAME
1265                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1266                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
1267                   ,X_MSG_COUNT => X_MSG_COUNT
1268                   ,X_MSG_DATA => X_MSG_DATA
1269                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1270 
1271           WHEN OTHERS THEN
1272               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1273                    P_API_NAME => L_API_NAME
1274                   ,P_PKG_NAME => G_PKG_NAME
1275                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
1276                   ,P_SQLCODE => SQLCODE
1277                   ,P_SQLERRM => SQLERRM
1278                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
1279                   ,X_MSG_COUNT => X_MSG_COUNT
1280                   ,X_MSG_DATA => X_MSG_DATA
1281                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1282    END CloseCase;
1283 
1284 
1285 /* Name   CreateCaseObjects
1286 **  api  : Current version 2.0
1287 ** Purpose To create case object. It first checks if a case exists, else creates
1288 ** a new case with the given case definition. Also checks if the case definition
1289 ** elements passed are valid or not.The logic is as follows
1290 ** 1. Checks validity of Case Definition
1291 ** 2.Gets Case Id for the given Valid Case Definition
1292 ** 3.Create Case if case does not exists with the valid case definition
1293 ** 4.Creates Case Object
1294 Optional Parameters
1295 ** p_cas_rec --> populate other attributes of a case, like attributes 1-15, concurrent program fields
1296 **
1297 */
1298 PROCEDURE CreateCaseObjects(
1299           P_Api_Version_Number         IN   NUMBER,
1300           P_Init_Msg_List              IN   VARCHAR2    ,
1301           P_Commit                     IN   VARCHAR2    ,
1302           P_validation_level           IN   NUMBER   ,
1303           P_case_definition_tbl        IN   CASE_DEFINITION_TBL_TYPE
1304                                                     ,
1305           P_cas_id                     IN NUMBER        ,
1306           P_case_number                IN VARCHAR2      ,
1307           P_case_comments              IN VARCHAR2      ,
1308           P_case_established_date      IN DATE          ,
1309           P_org_id                     IN NUMBER        ,
1310           P_object_code                IN VARCHAR2      ,
1311           P_party_id                   IN NUMBER,
1312           P_object_id                  IN NUMBER,
1313           p_cas_rec                    IN    CAS_Rec_Type ,
1314           X_case_object_id             OUT  NOCOPY  NUMBER,
1315           X_Return_Status              OUT  NOCOPY  VARCHAR2,
1316           X_Msg_Count                  OUT  NOCOPY  NUMBER,
1317           X_Msg_Data                   OUT  NOCOPY  VARCHAR2
1318           ) IS
1319 
1320 l_api_name                CONSTANT VARCHAR2(30) := 'CreateCaseObjects';
1321 l_api_name_full	          CONSTANT VARCHAR2(61) := g_pkg_name || '.' || l_api_name;
1322 l_api_version_number      CONSTANT NUMBER   := 2.0;
1323 l_org_id			      NUMBER            :=p_org_id;
1324 l_cas_id		          NUMBER            :=p_cas_id;
1325 l_object_code             VARCHAR2(30)      :=p_object_code;
1326 l_case_established_date   DATE              :=p_case_established_date;
1327 l_return_status           VARCHAR2(1);
1328 l_msg_count               NUMBER;
1329 l_msg_data                VARCHAR2(32767);
1330 l_case_object_id          NUMBER;
1331 l_case_definition_id      NUMBER;
1332 l_cas_rec                 iex_cases_pvt.cas_rec_type
1333                                          := iex_cases_pvt.g_miss_cas_rec;
1334 l_case_definition_rec            iex_case_definitions_pvt.case_definition_rec_type
1335                                          := iex_case_definitions_pvt.g_miss_case_definition_rec;
1336 l_case_object_rec         iex_case_objects_pvt.case_object_rec_type
1337                                           := iex_case_objects_pvt.g_miss_case_object_rec;
1338 
1339 l_resource_tab iex_utilities.resource_tab_type;  -- added by ehuh Aug 1 2003
1340 l_resource_id NUMBER   :=  nvl(fnd_profile.value('IEX_STRY_DEFAULT_RESOURCE'),0);
1341 
1342 --Begin Bug#6962575 barathsr 29-Jul-2008
1343 --While creating cases in bulk skip finding the resource and assign default resource
1344 l_orig_system_source OKC_K_HEADERS_B.ORIG_SYSTEM_SOURCE_CODE%type;
1345 
1346 cursor c_orig_system_source(p_contract_id number) is
1347 select ORIG_SYSTEM_SOURCE_CODE
1348 from OKC_K_HEADERS_B
1349 where id=p_contract_id;
1350 --End Bug#6962575 barathsr 29-Jul-2008
1351 
1352 
1353  BEGIN
1354 --     IF PG_DEBUG < 10  THEN
1355      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1356         IEX_DEBUG_PUB.LogMessage ('CreateCaseObjects: ' || '*********Start of Procedure => '||l_api_name||' *********');
1357      END IF;
1358       -- Standard Start of API savepoint
1359       SAVEPOINT CREATECASEOBJECTS_PUB;
1360 
1361       -- Standard call to check for call compatibility.
1362       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1363                            	               p_api_version_number,
1364                                            l_api_name,
1365                                            G_PKG_NAME)
1366       THEN
1367           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1368       END IF;
1369 
1370 
1371       -- Initialize message list if p_init_msg_list is set to TRUE.
1372       IF FND_API.to_Boolean( p_init_msg_list )
1373       THEN
1374           FND_MSG_PUB.initialize;
1375       END IF;
1376 
1377 --     IF PG_DEBUG < 10  THEN
1378      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1379         iex_debug_pub.logMessage('CreateCaseObjects: ' || 'After Api compatability Check');
1380      END IF;
1381 
1382       -- Initialize API return status to SUCCESS
1383       x_return_status := FND_API.G_RET_STS_SUCCESS;
1384       --
1385       -- API body
1386       --
1387       -- ******************************************************************
1388       -- Validate Environment
1389       -- ******************************************************************
1390       IF FND_GLOBAL.User_Id IS NULL
1391       THEN
1392           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1393           THEN
1394               FND_MESSAGE.Set_Name('IEX', 'IEX_CANNOT_GET_PROFILE_VALUE');
1395               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
1396               FND_MSG_PUB.ADD;
1397           END IF;
1398           RAISE FND_API.G_EXC_ERROR;
1399       END IF;
1400 
1401 --      IF PG_DEBUG < 10  THEN
1402       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1403          iex_debug_pub.logMessage('CreateCaseObjects: ' || 'After FND_GLOBAL_USER Check');
1404       END IF;
1405 
1406       -- Item level validation
1407       --IF (p_validation_level > fnd_api.g_valid_level_none) THEN
1408 
1409           -- Get org_id if not present
1410           IF (p_org_id IS NULL) OR
1411                       (p_org_id = FND_API.G_MISS_NUM) THEN
1412 		 --Bug#4679639 schekuri 20-OCT-2005
1413                  --Used mo_global.get_current_org_id to get ORG_ID
1414           	 --l_org_id := fnd_profile.value('ORG_ID');
1415 		 l_org_id := mo_global.get_current_org_id;
1416           END IF;
1417 --          IF PG_DEBUG < 10  THEN
1418           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1419              IEX_DEBUG_PUB.LogMessage('CreateCaseObjects: ' || 'After ORG ID Check and Org_id is => '||l_org_id);
1420           END IF;
1421 
1422          --Default Case_established_date to sysdate if null
1423          IF (p_Case_established_date IS NULL)OR
1424                      (p_Case_established_date = FND_API.G_MISS_DATE) THEN
1425               l_Case_established_date := sysdate;
1426          END IF;
1427 --         IF PG_DEBUG < 10  THEN
1428          IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1429             IEX_DEBUG_PUB.LogMessage('CreateCaseObjects: ' || 'After Case ESTABLISHED Date Check and case_established is => '||l_case_ESTABLISHED_DATE);
1430          END IF;
1431 
1432            -- Get object_code if not present
1433           IF (p_object_code IS NULL) OR
1434                    (p_object_code =  FND_API.G_MISS_CHAR) THEN
1435           	 l_object_code := 'CONTRACTS';
1436           END IF;
1437 --         IF PG_DEBUG < 10  THEN
1438          IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1439             IEX_DEBUG_PUB.LogMessage('CreateCaseObjects: ' || 'After Object Code Check and object is => '||l_object_code);
1440          END IF;
1441 
1442           -- Check for required parameter object_id
1443          IF (p_object_id IS NULL) OR (p_object_id = FND_API.G_MISS_NUM) THEN
1444 --             IF PG_DEBUG < 10  THEN
1445              IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1446                 IEX_DEBUG_PUB.LogMessage('CreateCaseObjects: ' || 'Required Parameter p_object_id is invalid');
1447              END IF;
1448               AddMissingArgMsg(
1449                       p_api_name    =>  l_api_name_full,
1450                       p_param_name  =>  'p_object_id' );
1451               RAISE FND_API.G_EXC_ERROR;
1452           END IF;
1453 
1454           -- Check for required parameter party_id
1455          IF (p_party_id IS NULL) OR (p_party_id = FND_API.G_MISS_NUM) THEN
1456 --             IF PG_DEBUG < 10  THEN
1457              IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1458                 IEX_DEBUG_PUB.LogMessage('CreateCaseObjects: ' || 'Required Parameter p_party_id is invalid');
1459              END IF;
1460               AddMissingArgMsg(
1461                       p_api_name    =>  l_api_name_full,
1462                       p_param_name  =>  'p_party_id' );
1463               RAISE FND_API.G_EXC_ERROR;
1464           END IF;
1465 
1466          -- Check for valid cas_id or Case Definition has to be passed
1467          BEGIN
1468               IF (l_cas_id IS NOT NULL) AND (l_cas_id <> FND_API.G_MISS_NUM) THEN
1469                   SELECT cas_id INTO l_cas_id
1470                   FROM iex_cases_all_b
1471                   WHERE cas_id      = p_cas_id
1472                   AND   case_state = 'OPEN'
1473  	              and active_flag ='Y';
1474 
1475                ELSIF ( P_case_definition_tbl.COUNT = 0 )   THEN
1476 --                     IF PG_DEBUG < 10  THEN
1477                      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1478                         IEX_DEBUG_PUB.LogMessage('CreateCaseObjects: ' || 'Required Parameter P_case_definition_tbl is EMPTY');
1479                      END IF;
1480                       AddMissingArgMsg(
1481                            p_api_name    =>  l_api_name_full,
1482                            p_param_name  =>  'p_cas_id' );
1483                       RAISE FND_API.G_EXC_ERROR;
1484                END IF;
1485          EXCEPTION
1486          WHEN NO_DATA_FOUND THEN
1487 --              IF PG_DEBUG < 10  THEN
1488               IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1489                  IEX_DEBUG_PUB.LogMessage('CreateCaseObjects: ' || 'Required Parameter p_cas_id is invalid');
1490               END IF;
1491               AddInvalidArgMsg(
1492                    p_api_name    =>  l_api_name_full,
1493                    p_param_value =>  p_cas_id,
1494                    p_param_name  =>  'p_cas_id' );
1495                RAISE FND_API.G_EXC_ERROR;
1496         WHEN OTHERS THEN
1497           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1498       END;
1499 
1500 
1501    --END IF; --end of item level validation
1502 --   IF PG_DEBUG < 10  THEN
1503    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1504       iex_debug_pub.logMessage('CreateCaseObjects: ' || 'After Item validation ');
1505    END IF;
1506 
1507  --- Check Case Definition
1508  --  If case Id exists, call case_object_pvt with the given case_id
1509  -- To create the case objects
1510  -- otherwise, check case def, retrieve case number and then
1511  -- call case_object_pvt. If case does not exist, create case defintiton and
1512  -- and create case and then finally create case object.
1513 
1514    IF (l_cas_id IS NOT NULL) AND (l_cas_id <> FND_API.G_MISS_NUM) THEN
1515 --       IF PG_DEBUG < 10  THEN
1516        IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1517           iex_debug_pub.logMessage('CreateCaseObjects: ' || 'case Id is passed '||l_cas_id);
1518        END IF;
1519        --Populate Case object record
1520          PopulateCaseObjectRec(p_object_code           =>l_object_code,
1521                                p_object_id             =>p_object_id,
1522                                p_cas_id                =>l_cas_id,
1523                                p_attribute_rec         =>p_cas_rec,
1524                                x_case_object_rec       =>l_case_object_Rec);
1525        --Call create_case_object_pvt to create Case object_id
1526 --       IF PG_DEBUG < 10  THEN
1527        IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1528           iex_debug_pub.logMessage('CreateCaseObjects: ' || '---------------------------------');
1529        END IF;
1530        iex_case_objects_pvt.Create_case_objects(
1531           P_Api_Version_Number         =>l_api_version_number,
1532           P_Init_Msg_List              =>FND_API.G_FALSE,
1533           P_Commit                     =>FND_API.G_FALSE,
1534           p_validation_level           =>P_validation_level,
1535           P_case_object_Rec            =>l_case_object_Rec,
1536           x_case_object_id             =>l_case_object_id,
1537           X_Return_Status              =>l_return_status,
1538           X_Msg_Count                  =>l_msg_count,
1539           X_Msg_Data                   =>l_msg_data);
1540 
1541 --         IF PG_DEBUG < 10  THEN
1542          IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1543             iex_debug_pub.logMessage('CreateCaseObjects: ' || 'Status of Create Case object PVT => '||l_return_status);
1544          END IF;
1545            -- Check return status from the above procedure call
1546           IF l_return_status = FND_API.G_RET_STS_ERROR then
1547   		    FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_CREATE_CO');
1548 		    FND_MSG_PUB.Add;
1549             raise FND_API.G_EXC_ERROR;
1550           elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1551              raise FND_API.G_EXC_UNEXPECTED_ERROR;
1552           else
1553               x_case_object_id :=l_case_object_id;
1554 --              IF PG_DEBUG < 10  THEN
1555               IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1556                  iex_debug_pub.logMessage('CreateCaseObjects: ' || 'Value of x_case_object_id =>' ||x_case_object_id);
1557               END IF;
1558           END IF;
1559 
1560     ELSE  -- Check if case definition is valid and
1561           --get case id for the given case definition
1562 --          IF PG_DEBUG < 10  THEN
1563           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1564              iex_debug_pub.logMessage('CreateCaseObjects: ' || 'case Id is not passed ');
1565           END IF;
1566 --          IF PG_DEBUG < 10  THEN
1567           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1568              iex_debug_pub.logMessage('CreateCaseObjects: ' || '---------------------------------');
1569           END IF;
1570            If CheckCaseDef(P_case_definition_tbl) THEN
1571 --               IF PG_DEBUG < 10  THEN
1572                IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1573                   iex_debug_pub.logMessage('CreateCaseObjects: ' || 'case Defintion is Valid ');
1574                END IF;
1575                --Get case Id for the given Case definition
1576 --               IF PG_DEBUG < 10  THEN
1577                IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1578                   iex_debug_pub.logMessage('CreateCaseObjects: ' || '---------------------------------');
1579                END IF;
1580                GetCaseId(
1581                            P_case_definition_tbl=>P_case_definition_tbl,
1582                            x_cas_id             =>l_cas_id);
1583                --Case definition is valid and if a matching case is found
1584 --               IF PG_DEBUG < 10  THEN
1585                IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1586                   iex_debug_pub.logMessage('CreateCaseObjects: ' || '---------------------------------');
1587                END IF;
1588                if l_cas_id  is NOT NULL THEN
1589 --                   IF PG_DEBUG < 10  THEN
1590                    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1591                       iex_debug_pub.logMessage('CreateCaseObjects: ' || 'Matching case is found and CAS ID is => '||l_Cas_id);
1592                    END IF;
1593                    --Populate Case object record
1594                      PopulateCaseObjectRec(p_object_code           =>l_object_code,
1595                                            p_object_id             =>p_object_id,
1596                                            p_cas_id                =>l_cas_id,
1597                                            p_attribute_rec         =>p_cas_rec,
1598                                            x_case_object_rec       =>l_case_object_Rec);
1599                       --Call create_case_object_pvt to create Case object_id
1600 --                         IF PG_DEBUG < 10  THEN
1601                          IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1602                             iex_debug_pub.logMessage('CreateCaseObjects: ' || 'Before Calling Create Case Object PVT');
1603                          END IF;
1604 --                          IF PG_DEBUG < 10  THEN
1605                           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1606                              iex_debug_pub.logMessage('CreateCaseObjects: ' || '---------------------------------');
1607                           END IF;
1608                           iex_case_objects_pvt.Create_case_objects(
1609                              P_Api_Version_Number         =>l_api_version_number,
1610                              P_Init_Msg_List              =>FND_API.G_FALSE,
1611                              P_Commit                     =>FND_API.G_FALSE,
1612                              p_validation_level           =>P_validation_level,
1613                              P_case_object_Rec            =>l_case_object_Rec,
1614                              x_case_object_id             =>l_case_object_id,
1615                              X_Return_Status              =>l_return_status,
1616                              X_Msg_Count                  =>l_msg_count,
1617                              X_Msg_Data                   =>l_msg_data);
1618 --                    IF PG_DEBUG < 10  THEN
1619                     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1620                        iex_debug_pub.logMessage('CreateCaseObjects: ' || 'After Calling Create Case Object PVT and Status =>'||l_return_status);
1621                     END IF;
1622                  -- Check return status from the above procedure call
1623                      IF l_return_status = FND_API.G_RET_STS_ERROR then
1624                          AddFailMsg( p_object     =>  'CASE OBJECTS',
1625                                      p_operation  =>  'INSERT' );
1626                         raise FND_API.G_EXC_ERROR;
1627                     elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1628                         raise FND_API.G_EXC_UNEXPECTED_ERROR;
1629                     else
1630                         x_case_object_id :=l_case_object_id;
1631 --                        IF PG_DEBUG < 10  THEN
1632                         IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1633                            iex_debug_pub.logMessage('CreateCaseObjects: ' || 'Value of x_case_object_id =>' ||x_case_object_id);
1634                         END IF;
1635 
1636                      END IF;
1637                Else
1638                  --If Case Definition is valid , but no matching Case,then create
1639                  -- Case , Create case defintion and then create case object
1640                  -- Populate Case Record
1641 --                    IF PG_DEBUG < 10  THEN
1642                     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1643                        iex_debug_pub.logMessage('CreateCaseObjects: ' || 'Case Definition is Valid , no case found');
1644                     END IF;
1645                     PopulateCaseRec(p_case_number           =>p_case_number,
1646                                     p_comments              =>p_case_comments,
1647                                     p_org_id                =>l_org_id,
1648                                     p_case_established_date =>l_case_established_date,
1649                                     p_attribute_rec         =>p_cas_rec,
1650                                     x_cas_rec               =>l_cas_rec);
1651 
1652                     l_cas_rec.party_id :=p_party_id;
1653 
1654                     -- added by ehuh Aug 10 2003
1655                     begin
1656                     --Begin bug#5373412 schekuri 10-Jul-2006
1657 		    --Call new consolidated procedure get_assigned_collector
1658                     /*iex_utilities.get_case_resources(p_api_version      => 1.0,
1659                                                        p_init_msg_list    => FND_API.G_TRUE,
1660                                                        p_commit           => FND_API.G_FALSE,
1661                                                        p_validation_level => p_validation_level,
1662                                                        x_msg_count        => l_msg_count,
1663                                                        x_msg_data         => l_msg_data,
1664                                                        x_return_status    => l_return_status,
1665                                                        p_party_id         => l_cas_rec.party_id,
1666                                                        x_resource_tab     => l_resource_tab);*/
1667 
1668 		     --Begin Bug#6962575 barathsr 29-Jul-2008
1669 		     --While creating cases in bulk skip finding the resource and assign default resource
1670                      open c_orig_system_source(p_object_id);
1671 		     fetch c_orig_system_source into l_orig_system_source;
1672 		     close c_orig_system_source;
1673 		     if l_orig_system_source<>'OKL_IMPORT' then
1674 
1675 		     iex_utilities.get_assigned_collector(p_api_version => 1.0,
1676 	  				     p_init_msg_list     => FND_API.G_TRUE,
1677 					     p_commit            => FND_API.G_FALSE,
1678 					     p_validation_level  => p_validation_level,
1679 					     p_level             => 'CASE',
1680 					     p_level_id          => l_cas_rec.party_id,
1681 					     x_msg_count         => l_msg_count,
1682 					     x_msg_data          => l_msg_data,
1683 					     x_return_status     => l_return_status,
1684 					     x_resource_tab      => l_resource_tab);
1685                     --End bug#5373412 schekuri 10-Jul-2006
1686                    end if;
1687                    --End Bug#6962575 barathsr 29-Jul-2008
1688                    if l_resource_tab.COUNT >0 THEN
1689                       l_cas_rec.owner_resource_id := l_resource_tab(1).resource_id;
1690                    else
1691                        l_cas_rec.owner_resource_id := l_resource_id;
1692                    end if;
1693 
1694 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1695                     iex_debug_pub.logMessage('Get_assign_resource(O) : ' || 'After Calling Get_assign_resource and Status =>'||l_return_status);
1696                     iex_debug_pub.logMessage('Resource ID : ' || l_cas_rec.owner_resource_id );
1697 END IF;
1698 
1699                     exception
1700                       when others then
1701                            null;
1702                     end;
1703                     -- ended by ehuh Aug 10 2003
1704 
1705                     --Call iex_cases_pvt to create a case
1706 --                    IF PG_DEBUG < 10  THEN
1707                     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1708                        iex_debug_pub.logMessage('CreateCaseObjects: ' || 'Before Calling Create Case  PVT');
1709                     END IF;
1710 
1711 --                    IF PG_DEBUG < 10  THEN
1712                     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1713                        iex_debug_pub.logMessage('CreateCaseObjects: ' || '---------------------------------');
1714                     END IF;
1715 
1716                     iex_cases_pvt.Create_CAS(
1717                              P_Api_Version_Number         =>l_api_version_number,
1718                              P_Init_Msg_List              =>FND_API.G_FALSE,
1719                              P_Commit                     =>FND_API.G_FALSE,
1720                              p_validation_level           =>P_validation_level,
1721                              P_cas_Rec                    =>l_cas_Rec,
1722                              x_case_id                    =>l_cas_id,
1723                              X_Return_Status              =>l_return_status,
1724                              X_Msg_Count                  =>l_msg_count,
1725                              X_Msg_Data                   =>l_msg_data);
1726 --                     IF PG_DEBUG < 10  THEN
1727                      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1728                         iex_debug_pub.logMessage('CreateCaseObjects: ' || 'After Calling Create Case  PVT and Status =>'||l_return_status);
1729                      END IF;
1730                       IF l_return_status = FND_API.G_RET_STS_ERROR then
1731                          AddFailMsg( p_object     =>  'CASE',
1732                                      p_operation  =>  'INSERT' );
1733                         raise FND_API.G_EXC_ERROR;
1734                     elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1735                         raise FND_API.G_EXC_UNEXPECTED_ERROR;
1736                      END IF;
1737                   --Call iex_case_definition_pvt to create case_def
1738                		FOR i IN 1..P_case_definition_tbl.COUNT LOOP
1739                         --Populate Case Definition record
1740                          PopulateCaseDefRec(p_column_name    =>p_case_definition_tbl(i).column_name,
1741                                             p_column_value   =>p_case_definition_tbl(i).column_value,
1742                                             p_table_name     =>p_case_definition_tbl(i).table_name,
1743                                             p_cas_id         =>l_cas_id,
1744                                             p_attribute_rec  =>p_cas_rec,
1745                                             x_case_def_rec   =>l_case_definition_Rec);
1746 --                        IF PG_DEBUG < 10  THEN
1747                         IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1748                            iex_debug_pub.logMessage('CreateCaseObjects: ' || 'Before Calling Create Case Definition  PVT');
1749                         END IF;
1750 --                        IF PG_DEBUG < 10  THEN
1751                         IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1752                            iex_debug_pub.logMessage('CreateCaseObjects: ' || '---------------------------------');
1753                         END IF;
1754                         iex_case_definitions_pvt.create_case_definitions(
1755                              P_Api_Version_Number         =>l_api_version_number,
1756                              P_Init_Msg_List              =>FND_API.G_FALSE,
1757                              P_Commit                     =>FND_API.G_FALSE,
1758                              p_validation_level           =>P_validation_level,
1759                              p_case_definition_rec        =>l_case_definition_Rec,
1760                              x_case_definition_id         =>l_case_definition_id,
1761                              X_Return_Status              =>l_return_status,
1762                              X_Msg_Count                  =>l_msg_count,
1763                              X_Msg_Data                   =>l_msg_data);
1764 --                      IF PG_DEBUG < 10  THEN
1765                       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1766                          iex_debug_pub.logMessage('CreateCaseObjects: ' || 'After Calling Create Case Definition PVT and Status =>'||l_return_status);
1767                       END IF;
1768                       IF l_return_status = FND_API.G_RET_STS_ERROR then
1769                         AddFailMsg( p_object      =>  'CASE DEFINITIONS',
1770                                      p_operation  =>  'INSERT' );
1771                         raise FND_API.G_EXC_ERROR;
1772                     elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1773                         raise FND_API.G_EXC_UNEXPECTED_ERROR;
1774                      END IF;
1775                   END LOOP;
1776                      --Populate Case object record
1777                      PopulateCaseObjectRec(p_object_code           =>l_object_code,
1778                                            p_object_id             =>p_object_id,
1779                                            p_cas_id                =>l_cas_id,
1780                                            p_attribute_rec         =>p_cas_rec,
1781                                            x_case_object_rec       =>l_case_object_Rec);
1782                       --Call create_case_object_pvt to create Case object_id
1783 --                      IF PG_DEBUG < 10  THEN
1784                       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1785                          iex_debug_pub.logMessage('CreateCaseObjects: ' || 'Before Calling Create Case Object PVT');
1786                       END IF;
1787 --                      IF PG_DEBUG < 10  THEN
1788                       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1789                          iex_debug_pub.logMessage('CreateCaseObjects: ' || '---------------------------------');
1790                       END IF;
1791                       iex_case_objects_pvt.Create_case_objects(
1792                              P_Api_Version_Number         =>l_api_version_number,
1793                              P_Init_Msg_List              =>FND_API.G_FALSE,
1794                              P_Commit                     =>FND_API.G_FALSE,
1795                              p_validation_level           =>P_validation_level,
1796                              P_case_object_Rec            =>l_case_object_Rec,
1797                              x_case_object_id             =>l_case_object_id,
1798                              X_Return_Status              =>l_return_status,
1799                              X_Msg_Count                  =>l_msg_count,
1800                              X_Msg_Data                   =>l_msg_data);
1801 --                     IF PG_DEBUG < 10  THEN
1802                      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1803                         iex_debug_pub.logMessage('CreateCaseObjects: ' || 'After Calling Create Case Object PVT and Status =>'||l_return_status);
1804                      END IF;
1805                  -- Check return status from the above procedure call
1806                      IF l_return_status = FND_API.G_RET_STS_ERROR then
1807                             AddFailMsg( p_object     =>  'CASE OBJECTS',
1808                                         p_operation  =>  'INSERT' );
1809                         raise FND_API.G_EXC_ERROR;
1810                     elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1811                         raise FND_API.G_EXC_UNEXPECTED_ERROR;
1812                     else
1813                        x_case_object_id :=l_case_object_id;
1814 --                       IF PG_DEBUG < 10  THEN
1815                        IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1816                           iex_debug_pub.logMessage('CreateCaseObjects: ' || 'Value of x_case_object_id =>' ||x_case_object_id);
1817                        END IF;
1818                      END IF;
1819 
1820                END IF; -- end of if G_match_Case_id  is NOT NULL
1821         ELSE -- if case Definition is invalid then error out.
1822              --How to assign value of parameter,since it is table?
1823 --               IF PG_DEBUG < 10  THEN
1824                IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1825                   iex_debug_pub.logMessage('CreateCaseObjects: ' || 'Case Definition is invalid');
1826                END IF;
1827                AddInvalidArgMsg(
1828                       p_api_name    =>  l_api_name_full,
1829                       p_param_value =>  'P_case_definition_tbl',
1830                       p_param_name  =>  'P_case_definition_tbl' );
1831                RAISE FND_API.G_EXC_ERROR;
1832 
1833         END IF; --If CheckCaseDef(P_case_definition_tbl)
1834     END IF; -- (l_cas_id IS NOT NULL) OR (l_cas_id <> FND_API.G_MISS_NUM)
1835 
1836       --
1837       -- End of API body.
1838       --
1839 
1840       -- Standard check for p_commit
1841       IF FND_API.to_Boolean( p_commit )
1842       THEN
1843           COMMIT WORK;
1844       END IF;
1845 
1846 
1847       -- Standard call to get message count and if count is 1, get message info.
1848       FND_MSG_PUB.Count_And_Get
1849       (  p_count          =>   x_msg_count,
1850          p_data           =>   x_msg_data
1851       );
1852 --     IF PG_DEBUG < 10  THEN
1853      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1854         IEX_DEBUG_PUB.LogMessage ('CreateCaseObjects: ' || '*********End of Procedure => '||l_api_name||' *********');
1855      END IF;
1856       EXCEPTION
1857           WHEN FND_API.G_EXC_ERROR THEN
1858               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1859                    P_API_NAME => L_API_NAME
1860                   ,P_PKG_NAME => G_PKG_NAME
1861                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1862                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
1863                   ,X_MSG_COUNT => X_MSG_COUNT
1864                   ,X_MSG_DATA => X_MSG_DATA
1865                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1866 
1867           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1868               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1869                    P_API_NAME => L_API_NAME
1870                   ,P_PKG_NAME => G_PKG_NAME
1871                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1872                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
1873                   ,X_MSG_COUNT => X_MSG_COUNT
1874                   ,X_MSG_DATA => X_MSG_DATA
1875                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1876 
1877           WHEN OTHERS THEN
1878               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1879                    P_API_NAME => L_API_NAME
1880                   ,P_PKG_NAME => G_PKG_NAME
1881                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
1882                   ,P_SQLCODE => SQLCODE
1883                   ,P_SQLERRM => SQLERRM
1884                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
1885                   ,X_MSG_COUNT => X_MSG_COUNT
1886                   ,X_MSG_DATA => X_MSG_DATA
1887                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1888    END CreateCaseObjects;
1889 
1890 
1891 /* Name   ReassignCaseObjects
1892 **  api  : Current version 2.0
1893 ** Purpose To Reassign case object.
1894 ** Delete the contracts from iex_case_objects
1895 ** It first checks if a case exists, else creates
1896 ** a new case with the given case definition. Also checks if the case definition
1897 ** elements passed are valid or not.The logic is as follows
1898 ** 1. Checks validity of Case Definition
1899 ** 2.Gets Case Id for the given Valid Case Definition
1900 ** 3.Create Case if case does not exists with the valid case definition
1901 ** 4.Creates Case Object
1902 ** Rescore both the cases and creates/updates the delinquencies.
1903 Optional Parameters
1904 ** p_cas_rec --> populate other attributes of a case, like attributes 1-15, concurrent program fields
1905 **
1906 */
1907 PROCEDURE ReassignCaseObjects(
1908           P_Api_Version_Number         IN   NUMBER,
1909           P_Init_Msg_List              IN   VARCHAR2    ,
1910           P_Commit                     IN   VARCHAR2    ,
1911           P_validation_level           IN   NUMBER     ,
1912           P_case_definition_tbl        IN   CASE_DEFINITION_TBL_TYPE
1913                                                        ,
1914           P_cas_id                     IN NUMBER        ,
1915           P_case_number                IN VARCHAR2      ,
1916           P_case_comments              IN VARCHAR2      ,
1917           P_case_established_date      IN DATE          ,
1918           P_org_id                     IN NUMBER        ,
1919           P_object_code                IN VARCHAR2      ,
1920           P_party_id                   IN NUMBER,
1921           P_object_id                  IN NUMBER,
1922           p_cas_rec                    IN    CAS_Rec_Type  ,
1923           X_case_object_id             OUT  NOCOPY  NUMBER,
1924           X_Return_Status              OUT  NOCOPY  VARCHAR2,
1925           X_Msg_Count                  OUT  NOCOPY  NUMBER,
1926           X_Msg_Data                   OUT  NOCOPY  VARCHAR2
1927 
1928           ) IS
1929 
1930 l_api_name                CONSTANT VARCHAR2(30) := 'ReassignCaseObjects';
1931 l_api_name_full	          CONSTANT VARCHAR2(61) := g_pkg_name || '.' || l_api_name;
1932 l_api_version_number      CONSTANT NUMBER   := 2.0;
1933 l_org_id			      NUMBER            :=p_org_id;
1934 l_cas_id		          NUMBER            :=p_cas_id;
1935 l_object_code             VARCHAR2(30)      :=p_object_code;
1936 l_case_established_date   DATE              :=p_case_established_date;
1937 l_return_status           VARCHAR2(1);
1938 l_msg_count               NUMBER;
1939 l_msg_data                VARCHAR2(32767);
1940 l_case_object_id          NUMBER;
1941 l_case_definition_id      NUMBER;
1942 l_cas_rec                 iex_cases_pvt.cas_rec_type
1943                                          := iex_cases_pvt.g_miss_cas_rec;
1944 l_case_definition_rec            iex_case_definitions_pvt.case_definition_rec_type
1945                                          := iex_case_definitions_pvt.g_miss_case_definition_rec;
1946 l_case_object_rec         iex_case_objects_pvt.case_object_rec_type
1947                                           := iex_case_objects_pvt.g_miss_case_object_rec;
1948 
1949 l_old_case_id      NUMBER;
1950 l_new_case_id      NUMBER;
1951 x_del_id           NUMBER;
1952 
1953 l_case_agent       VARCHAR2(120);
1954 l_contract_number  VARCHAR2(120);
1955 
1956 l_resource_tab iex_utilities.resource_tab_type;  -- added by ehuh Aug 1 2003
1957 l_resource_id NUMBER   :=  nvl(fnd_profile.value('IEX_STRY_DEFAULT_RESOURCE'),0);
1958 
1959 
1960 cursor c_getname(p_old_case_id IN NUMBER) is
1961 Select user_name
1962 from jtf_rs_resource_extns a,
1963      iex_Cases_all_b b
1964 where b.cas_id =p_old_case_id
1965       and a.resource_id =  nvl(b.access_resource_id,
1966          fnd_profile.value('IEX_DEFAULT_CASE_AGENT'));
1967 
1968 
1969 cursor c_contract (p_contract_id IN NUMBER) is
1970 Select contract_number
1971 from   okc_k_headers_b
1972 where id =p_contract_id;
1973 l_del_id NUMBER;
1974 
1975  BEGIN
1976 
1977 --     IF PG_DEBUG < 10  THEN
1978      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1979         IEX_DEBUG_PUB.LogMessage ('ReassignCaseObjects: ' || '*********Start of Procedure => '||l_api_name||' *********');
1980      END IF;
1981       -- Standard Start of API savepoint
1982       SAVEPOINT REASSIGNCASEOBJECTS_PUB;
1983 
1984       -- Standard call to check for call compatibility.
1985       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1986                            	               p_api_version_number,
1987                                            l_api_name,
1988                                            G_PKG_NAME)
1989       THEN
1990           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1991       END IF;
1992 
1993 
1994       -- Initialize message list if p_init_msg_list is set to TRUE.
1995       IF FND_API.to_Boolean( p_init_msg_list )
1996       THEN
1997           FND_MSG_PUB.initialize;
1998       END IF;
1999 
2000 --     IF PG_DEBUG < 10  THEN
2001      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2002         iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'After Api compatability Check');
2003      END IF;
2004 
2005       -- Initialize API return status to SUCCESS
2006       x_return_status := FND_API.G_RET_STS_SUCCESS;
2007       l_return_status := FND_API.G_RET_STS_SUCCESS;
2008 
2009       --
2010       -- API body
2011       --
2012       -- ******************************************************************
2013       -- Validate Environment
2014       -- ******************************************************************
2015       IF FND_GLOBAL.User_Id IS NULL
2016       THEN
2017           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2018           THEN
2019               FND_MESSAGE.Set_Name('IEX', 'IEX_CANNOT_GET_PROFILE_VALUE');
2020               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
2021               FND_MSG_PUB.ADD;
2022           END IF;
2023           RAISE FND_API.G_EXC_ERROR;
2024       END IF;
2025 
2026 --      IF PG_DEBUG < 10  THEN
2027       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2028          iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'After FND_GLOBAL_USER Check');
2029       END IF;
2030 
2031       -- Item level validation
2032       --IF (p_validation_level > fnd_api.g_valid_level_none) THEN
2033 
2034           -- Get org_id if not present
2035           IF (p_org_id IS NULL) OR
2036                       (p_org_id = FND_API.G_MISS_NUM) THEN
2037 
2038 		 --Bug#4679639 schekuri 20-OCT-2005
2039                  --Used mo_global.get_current_org_id to get ORG_ID
2040           	 --l_org_id := fnd_profile.value('ORG_ID');
2041 		 l_org_id := mo_global.get_current_org_id;
2042           END IF;
2043 --          IF PG_DEBUG < 10  THEN
2044           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2045              IEX_DEBUG_PUB.LogMessage('ReassignCaseObjects: ' || 'After ORG ID Check and Org_id is => '||l_org_id);
2046           END IF;
2047 
2048          --Default Case_established_date to sysdate if null
2049          IF (p_Case_established_date IS NULL)OR
2050                      (p_Case_established_date = FND_API.G_MISS_DATE) THEN
2051               l_Case_established_date := sysdate;
2052          END IF;
2053 --         IF PG_DEBUG < 10  THEN
2054          IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2055             IEX_DEBUG_PUB.LogMessage('ReassignCaseObjects: ' || 'After Case ESTABLISHED Date Check and case_established is => '||l_case_ESTABLISHED_DATE);
2056          END IF;
2057 
2058            -- Get object_code if not present
2059           IF (p_object_code IS NULL) OR
2060                    (p_object_code =  FND_API.G_MISS_CHAR) THEN
2061           	 l_object_code := 'CONTRACTS';
2062           END IF;
2063 --         IF PG_DEBUG < 10  THEN
2064          IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2065             IEX_DEBUG_PUB.LogMessage('ReassignCaseObjects: ' || 'After Object Code Check and object is => '||l_object_code);
2066          END IF;
2067 
2068           -- Check for required parameter object_id
2069          IF (p_object_id IS NULL) OR (p_object_id = FND_API.G_MISS_NUM) THEN
2070 --             IF PG_DEBUG < 10  THEN
2071              IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2072                 IEX_DEBUG_PUB.LogMessage('ReassignCaseObjects: ' || 'Required Parameter p_object_id is invalid');
2073              END IF;
2074               AddMissingArgMsg(
2075                       p_api_name    =>  l_api_name_full,
2076                       p_param_name  =>  'p_object_id' );
2077               RAISE FND_API.G_EXC_ERROR;
2078           END IF;
2079 
2080           -- Check for required parameter party_id
2081          IF (p_party_id IS NULL) OR (p_party_id = FND_API.G_MISS_NUM) THEN
2082 --             IF PG_DEBUG < 10  THEN
2083              IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2084                 IEX_DEBUG_PUB.LogMessage('ReassignCaseObjects: ' || 'Required Parameter p_party_id is invalid');
2085              END IF;
2086               AddMissingArgMsg(
2087                       p_api_name    =>  l_api_name_full,
2088                       p_param_name  =>  'p_party_id' );
2089               RAISE FND_API.G_EXC_ERROR;
2090           END IF;
2091 
2092          -- Check for valid cas_id or Case Definition has to be passed
2093          BEGIN
2094               IF (l_cas_id IS NOT NULL) AND (l_cas_id <> FND_API.G_MISS_NUM) THEN
2095                   SELECT cas_id INTO l_cas_id
2096                   FROM iex_cases_all_b
2097                   WHERE cas_id      = p_cas_id
2098                   AND   case_state = 'OPEN'
2099  	              and active_flag ='Y';
2100 
2101                ELSIF ( P_case_definition_tbl.COUNT = 0 )   THEN
2102 --                     IF PG_DEBUG < 10  THEN
2103                      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2104                         IEX_DEBUG_PUB.LogMessage('ReassignCaseObjects: ' || 'Required Parameter P_case_definition_tbl is EMPTY');
2105                      END IF;
2106                       AddMissingArgMsg(
2107                            p_api_name    =>  l_api_name_full,
2108                            p_param_name  =>  'p_cas_id' );
2109                       RAISE FND_API.G_EXC_ERROR;
2110                END IF;
2111          EXCEPTION
2112          WHEN NO_DATA_FOUND THEN
2113 --              IF PG_DEBUG < 10  THEN
2114               IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2115                  IEX_DEBUG_PUB.LogMessage('ReassignCaseObjects: ' || 'Required Parameter p_cas_id is invalid');
2116               END IF;
2117               AddInvalidArgMsg(
2118                    p_api_name    =>  l_api_name_full,
2119                    p_param_value =>  p_cas_id,
2120                    p_param_name  =>  'p_cas_id' );
2121                RAISE FND_API.G_EXC_ERROR;
2122         WHEN OTHERS THEN
2123           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2124       END;
2125 
2126     -- Store the old case Id , will be used for re-score
2127        BEGIN
2128             select a.cas_id ,b.contract_number
2129             into l_old_case_id,l_contract_number
2130             from iex_case_objects a, okc_k_headers_b b
2131             where a.object_id =p_object_id
2132             and b.id =a.object_id;
2133 
2134 --            IF PG_DEBUG < 10  THEN
2135             IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2136                iex_debug_pub.logmessage ('ReassignCaseObjects: ' || 'old case Id ' || l_old_case_id);
2137             END IF;
2138 --            IF PG_DEBUG < 10  THEN
2139             IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2140                iex_debug_pub.logmessage ('ReassignCaseObjects: ' || 'Contract Number ' || l_contract_number);
2141             END IF;
2142 
2143        EXCEPTION WHEN OTHERS THEN
2144           NULL;
2145        END;
2146 
2147    -- Check if the case has any later stage delinquencies
2148    --if there is do not re assign, exit out.
2149       IF CheckAdvanceDelinquencies(l_old_case_id,x_del_id) THEN
2150 --          IF PG_DEBUG < 10  THEN
2151           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2152              iex_debug_pub.logmessage ('ReassignCaseObjects: ' || l_old_case_id  || ' has later stage of delinquencies');
2153           END IF;
2154           fnd_message.set_name('IEX', 'IEX_ADVANCE_DEL_EXISTS');
2155           fnd_message.set_token('DEL_ID', x_del_id);
2156           fnd_message.set_token('CASE_ID',l_old_case_id);
2157           fnd_message.set_token('CON_NUM',l_contract_number);
2158           fnd_msg_pub.add;
2159           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2160 
2161        END IF;
2162 
2163      --Delete the contract/object from case objects table
2164       select case_object_id into l_case_object_id
2165       from iex_case_objects
2166       where object_id =p_object_id;
2167 
2168        iex_case_objects_pvt.delete_case_objects(
2169           P_Api_Version_Number         =>l_api_version_number,
2170           P_Init_Msg_List              =>FND_API.G_TRUE,
2171           P_Commit                     =>FND_API.G_FALSE,
2172           p_validation_level           =>P_validation_level,
2173           P_case_object_ID             =>l_case_object_id,
2174           X_Return_Status              =>l_return_status,
2175           X_Msg_Count                  =>l_msg_count,
2176           X_Msg_Data                   =>l_msg_data);
2177 
2178          IF l_return_status <> FND_API.G_RET_STS_SUCCESS then
2179              AddFailMsg( p_object     =>  'CASE OBJECTS',
2180                          p_operation  =>  'DELETE' );
2181              raise FND_API.G_EXC_ERROR;
2182          ELSE
2183 --              IF PG_DEBUG < 10  THEN
2184               IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2185                  iex_debug_pub.logmessage ('ReassignCaseObjects: ' ||  'deletion of ' || p_object_id
2186                                          ||' successfull');
2187               END IF;
2188          END IF;
2189 
2190 
2191 
2192    --END IF; --end of item level validation
2193 --   IF PG_DEBUG < 10  THEN
2194    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2195       iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'After Item validation ');
2196    END IF;
2197 
2198  --- Check Case Definition
2199  --  If case Id exists, call case_object_pvt with the given case_id
2200  -- To create the case objects
2201  -- otherwise, check case def, retrieve case number and then
2202  -- call case_object_pvt. If case does not exist, create case defintiton and
2203  -- and create case and then finally create case object.
2204 
2205    IF (l_cas_id IS NOT NULL) AND (l_cas_id <> FND_API.G_MISS_NUM) THEN
2206 --       IF PG_DEBUG < 10  THEN
2207        IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2208           iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'case Id is passed '||l_cas_id);
2209        END IF;
2210        --Populate Case object record
2211          PopulateCaseObjectRec(p_object_code           =>l_object_code,
2212                                p_object_id             =>p_object_id,
2213                                p_cas_id                =>l_cas_id,
2214                                p_attribute_rec         =>p_cas_rec,
2215                                x_case_object_rec       =>l_case_object_Rec);
2216        --Call create_case_object_pvt to create Case object_id
2217 --       IF PG_DEBUG < 10  THEN
2218        IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2219           iex_debug_pub.logMessage('ReassignCaseObjects: ' || '---------------------------------');
2220        END IF;
2221        iex_case_objects_pvt.Create_case_objects(
2222           P_Api_Version_Number         =>l_api_version_number,
2223           P_Init_Msg_List              =>FND_API.G_FALSE,
2224           P_Commit                     =>FND_API.G_FALSE,
2225           p_validation_level           =>P_validation_level,
2226           P_case_object_Rec            =>l_case_object_Rec,
2227           x_case_object_id             =>l_case_object_id,
2228           X_Return_Status              =>l_return_status,
2229           X_Msg_Count                  =>l_msg_count,
2230           X_Msg_Data                   =>l_msg_data);
2231 
2232 --         IF PG_DEBUG < 10  THEN
2233          IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2234             iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'Status of Create Case object PVT => '||l_return_status);
2235          END IF;
2236            -- Check return status from the above procedure call
2237           IF l_return_status = FND_API.G_RET_STS_ERROR then
2238   		    FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_CREATE_CO');
2239 		    FND_MSG_PUB.Add;
2240             raise FND_API.G_EXC_ERROR;
2241           elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
2242              raise FND_API.G_EXC_UNEXPECTED_ERROR;
2243           else
2244               x_case_object_id :=l_case_object_id;
2245 --              IF PG_DEBUG < 10  THEN
2246               IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2247                  iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'Value of x_case_object_id =>' ||x_case_object_id);
2248               END IF;
2249           END IF;
2250 
2251     ELSE  -- Check if case definition is valid and
2252           --get case id for the given case definition
2253 --          IF PG_DEBUG < 10  THEN
2254           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2255              iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'case Id is not passed ');
2256           END IF;
2257 --          IF PG_DEBUG < 10  THEN
2258           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2259              iex_debug_pub.logMessage('ReassignCaseObjects: ' || '---------------------------------');
2260           END IF;
2261            If CheckCaseDef(P_case_definition_tbl) THEN
2262 --               IF PG_DEBUG < 10  THEN
2263                IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2264                   iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'case Defintion is Valid ');
2265                END IF;
2266                --Get case Id for the given Case definition
2267 --               IF PG_DEBUG < 10  THEN
2268                IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2269                   iex_debug_pub.logMessage('ReassignCaseObjects: ' || '---------------------------------');
2270                END IF;
2271                GetCaseId(
2272                            P_case_definition_tbl=>P_case_definition_tbl,
2273                            x_cas_id             =>l_cas_id);
2274                --Case definition is valid and if a matching case is found
2275 --               IF PG_DEBUG < 10  THEN
2276                IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2277                   iex_debug_pub.logMessage('ReassignCaseObjects: ' || '---------------------------------');
2278                END IF;
2279                if l_cas_id  is NOT NULL THEN
2280 --                   IF PG_DEBUG < 10  THEN
2281                    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2282                       iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'Matching case is found and CAS ID is => '||l_Cas_id);
2283                    END IF;
2284                    --Populate Case object record
2285                      PopulateCaseObjectRec(p_object_code           =>l_object_code,
2286                                            p_object_id             =>p_object_id,
2287                                            p_cas_id                =>l_cas_id,
2288                                            p_attribute_rec         =>p_cas_rec,
2289                                            x_case_object_rec       =>l_case_object_Rec);
2290                       --Call create_case_object_pvt to create Case object_id
2291 --                         IF PG_DEBUG < 10  THEN
2292                          IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2293                             iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'Before Calling Create Case Object PVT');
2294                          END IF;
2295 --                          IF PG_DEBUG < 10  THEN
2296                           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2297                              iex_debug_pub.logMessage('ReassignCaseObjects: ' || '---------------------------------');
2298                           END IF;
2299                           iex_case_objects_pvt.Create_case_objects(
2300                              P_Api_Version_Number         =>l_api_version_number,
2301                              P_Init_Msg_List              =>FND_API.G_FALSE,
2302                              P_Commit                     =>FND_API.G_FALSE,
2303                              p_validation_level           =>P_validation_level,
2304                              P_case_object_Rec            =>l_case_object_Rec,
2305                              x_case_object_id             =>l_case_object_id,
2306                              X_Return_Status              =>l_return_status,
2307                              X_Msg_Count                  =>l_msg_count,
2308                              X_Msg_Data                   =>l_msg_data);
2309 --                    IF PG_DEBUG < 10  THEN
2310                     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2311                        iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'After Calling Create Case Object PVT and Status =>'||l_return_status);
2312                     END IF;
2313                  -- Check return status from the above procedure call
2314                      IF l_return_status = FND_API.G_RET_STS_ERROR then
2315                          AddFailMsg( p_object     =>  'CASE OBJECTS',
2316                                      p_operation  =>  'INSERT' );
2317                         raise FND_API.G_EXC_ERROR;
2318                     elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
2319                         raise FND_API.G_EXC_UNEXPECTED_ERROR;
2320                     else
2321                         x_case_object_id :=l_case_object_id;
2322 --                        IF PG_DEBUG < 10  THEN
2323                         IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2324                            iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'Value of x_case_object_id =>' ||x_case_object_id);
2325                         END IF;
2326 
2327                      END IF;
2328                Else
2329                  --If Case Definition is valid , but no matching Case,then create
2330                  -- Case , Create case defintion and then create case object
2331                  -- Populate Case Record
2332 --                    IF PG_DEBUG < 10  THEN
2333                     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2334                        iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'Case Definition  is Valid , no case found');
2335                     END IF;
2336                     PopulateCaseRec(p_case_number           =>p_case_number,
2337                                     p_comments              =>p_case_comments,
2338                                     p_org_id                =>l_org_id,
2339                                     p_case_established_date =>l_case_established_date,
2340                                     p_attribute_rec         =>p_cas_rec,
2341                                     x_cas_rec               =>l_cas_rec);
2342 				 l_cas_rec.party_id :=p_party_id;
2343                     --Call iex_cases_pvt to create a case
2344 
2345 --                    IF PG_DEBUG < 10  THEN
2346                     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2347                        iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'Before Calling Create Case  PVT');
2348                     END IF;
2349 --                    IF PG_DEBUG < 10  THEN
2350                     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2351                        iex_debug_pub.logMessage('ReassignCaseObjects: ' || '---------------------------------');
2352                     END IF;
2353 
2354                     -- added by ehuh Aug 10 2003
2355 
2356                     begin
2357 
2358 		    --Begin bug#5373412 schekuri 10-Jul-2006
2359 		    --Call new consolidated procedure get_assigned_collector
2360                     /*iex_utilities.get_case_resources(p_api_version      => 1.0,
2361                                                        p_init_msg_list    => FND_API.G_TRUE,
2362                                                        p_commit           => FND_API.G_FALSE,
2363                                                        p_validation_level => p_validation_level,
2364                                                        x_msg_count        => l_msg_count,
2365                                                        x_msg_data         => l_msg_data,
2366                                                        x_return_status    => l_return_status,
2367                                                        p_party_id         => l_cas_rec.party_id,
2368                                                        x_resource_tab     => l_resource_tab);*/
2369 
2370 		    iex_utilities.get_assigned_collector(p_api_version => 1.0,
2371 	  				     p_init_msg_list     => FND_API.G_TRUE,
2372 					     p_commit            => FND_API.G_FALSE,
2373 					     p_validation_level  => p_validation_level,
2374 					     p_level             => 'CASE',
2375 					     p_level_id          => l_cas_rec.party_id,
2376 					     x_msg_count         => l_msg_count,
2377 					     x_msg_data          => l_msg_data,
2378 					     x_return_status     => l_return_status,
2379 					     x_resource_tab      => l_resource_tab);
2380 
2381                     --End bug#5373412 schekuri 10-Jul-2006
2382 
2383                   if l_resource_tab.COUNT >0 THEN
2384                      l_cas_rec.owner_resource_id := l_resource_tab(1).resource_id;
2385                   else
2386                      l_cas_rec.owner_resource_id := l_resource_id;
2387                   end if;
2388 
2389 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2390                     iex_debug_pub.logMessage('Get_assign_resource(R) : ' || 'After Calling Get_assign_resource and Status =>'||l_return_status);
2391                     iex_debug_pub.logMessage('Resource ID : ' || l_cas_rec.owner_resource_id );
2392 END IF;
2393 
2394                     exception
2395                       when others then
2396                            null;
2397 
2398                     end;
2399 
2400                     -- ended by ehuh Aug 10 2003
2401 
2402                     iex_cases_pvt.Create_CAS(
2403                              P_Api_Version_Number         =>l_api_version_number,
2404                              P_Init_Msg_List              =>FND_API.G_FALSE,
2405                              P_Commit                     =>FND_API.G_FALSE,
2406                              p_validation_level           =>P_validation_level,
2407                              P_cas_Rec                    =>l_cas_Rec,
2408                              x_case_id                    =>l_cas_id,
2409                              X_Return_Status              =>l_return_status,
2410                              X_Msg_Count                  =>l_msg_count,
2411                              X_Msg_Data                   =>l_msg_data);
2412 --                     IF PG_DEBUG < 10  THEN
2413                      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2414                         iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'After Calling Create Case  PVT and Status =>'||l_return_status);
2415                      END IF;
2416                       IF l_return_status = FND_API.G_RET_STS_ERROR then
2417                          AddFailMsg( p_object     =>  'CASE',
2418                                      p_operation  =>  'INSERT' );
2419                         raise FND_API.G_EXC_ERROR;
2420                     elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
2421                         raise FND_API.G_EXC_UNEXPECTED_ERROR;
2422                      END IF;
2423                   --Call iex_case_definition_pvt to create case_def
2424                		FOR i IN 1..P_case_definition_tbl.COUNT LOOP
2425                         --Populate Case Definition record
2426                          PopulateCaseDefRec(p_column_name    =>p_case_definition_tbl(i).column_name,
2427                                             p_column_value   =>p_case_definition_tbl(i).column_value,
2428                                             p_table_name     =>p_case_definition_tbl(i).table_name,
2429                                             p_cas_id         =>l_cas_id,
2430                                             p_attribute_rec  =>p_cas_rec,
2431                                             x_case_def_rec   =>l_case_definition_Rec);
2432 --                        IF PG_DEBUG < 10  THEN
2433                         IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2434                            iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'Before Calling Create Case Definition  PVT');
2435                         END IF;
2436 --                        IF PG_DEBUG < 10  THEN
2437                         IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2438                            iex_debug_pub.logMessage('ReassignCaseObjects: ' || '---------------------------------');
2439                         END IF;
2440                         iex_case_definitions_pvt.create_case_definitions(
2441                              P_Api_Version_Number         =>l_api_version_number,
2442                              P_Init_Msg_List              =>FND_API.G_FALSE,
2443                              P_Commit                     =>FND_API.G_FALSE,
2444                              p_validation_level           =>P_validation_level,
2445                              p_case_definition_rec        =>l_case_definition_Rec,
2446                              x_case_definition_id         =>l_case_definition_id,
2447                              X_Return_Status              =>l_return_status,
2448                              X_Msg_Count                  =>l_msg_count,
2449                              X_Msg_Data                   =>l_msg_data);
2450 --                      IF PG_DEBUG < 10  THEN
2451                       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2452                          iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'After Calling Create Case Definition PVT and Status =>'||l_return_status);
2453                       END IF;
2454                       IF l_return_status = FND_API.G_RET_STS_ERROR then
2455                         AddFailMsg( p_object      =>  'CASE DEFINITIONS',
2456                                      p_operation  =>  'INSERT' );
2457                         raise FND_API.G_EXC_ERROR;
2458                     elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
2459                         raise FND_API.G_EXC_UNEXPECTED_ERROR;
2460                      END IF;
2461                   END LOOP;
2462                      --Populate Case object record
2463                      PopulateCaseObjectRec(p_object_code           =>l_object_code,
2464                                            p_object_id             =>p_object_id,
2465                                            p_cas_id                =>l_cas_id,
2466                                            p_attribute_rec         =>p_cas_rec,
2467                                            x_case_object_rec       =>l_case_object_Rec);
2468                       --Call create_case_object_pvt to create Case object_id
2469 --                      IF PG_DEBUG < 10  THEN
2470                       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2471                          iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'Before Calling Create Case Object PVT');
2472                       END IF;
2473 --                      IF PG_DEBUG < 10  THEN
2474                       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2475                          iex_debug_pub.logMessage('ReassignCaseObjects: ' || '---------------------------------');
2476                       END IF;
2477                       iex_case_objects_pvt.Create_case_objects(
2478                              P_Api_Version_Number         =>l_api_version_number,
2479                              P_Init_Msg_List              =>FND_API.G_FALSE,
2480                              P_Commit                     =>FND_API.G_FALSE,
2481                              p_validation_level           =>P_validation_level,
2482                              P_case_object_Rec            =>l_case_object_Rec,
2483                              x_case_object_id             =>l_case_object_id,
2484                              X_Return_Status              =>l_return_status,
2485                              X_Msg_Count                  =>l_msg_count,
2486                              X_Msg_Data                   =>l_msg_data);
2487 --                     IF PG_DEBUG < 10  THEN
2488                      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2489                         iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'After Calling Create Case Object PVT and Status =>'||l_return_status);
2490                      END IF;
2491                  -- Check return status from the above procedure call
2492                      IF l_return_status = FND_API.G_RET_STS_ERROR then
2493                             AddFailMsg( p_object     =>  'CASE OBJECTS',
2494                                         p_operation  =>  'INSERT' );
2495                         raise FND_API.G_EXC_ERROR;
2496                     elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
2497                         raise FND_API.G_EXC_UNEXPECTED_ERROR;
2498                     else
2499                        x_case_object_id :=l_case_object_id;
2500 --                       IF PG_DEBUG < 10  THEN
2501                        IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2502                           iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'Value of x_case_object_id =>' ||x_case_object_id);
2503                        END IF;
2504                      END IF;
2505 
2506                END IF; -- end of if G_match_Case_id  is NOT NULL
2507         ELSE -- if case Definition is invalid then error out.
2508              --How to assign value of parameter,since it is table?
2509 --               IF PG_DEBUG < 10  THEN
2510                IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2511                   iex_debug_pub.logMessage('ReassignCaseObjects: ' || 'Case Definition is invalid');
2512                END IF;
2513                AddInvalidArgMsg(
2514                       p_api_name    =>  l_api_name_full,
2515                       p_param_value =>  'P_case_definition_tbl',
2516                       p_param_name  =>  'P_case_definition_tbl' );
2517                RAISE FND_API.G_EXC_ERROR;
2518 
2519         END IF; --If CheckCaseDef(P_case_definition_tbl)
2520     END IF; -- (l_cas_id IS NOT NULL) OR (l_cas_id <> FND_API.G_MISS_NUM)
2521 
2522 --    IF PG_DEBUG < 10  THEN
2523     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2524        iex_debug_pub.logmessage ('ReassignCaseObjects: ' ||  'Case creation over, ready for notification');
2525     END IF;
2526 
2527 
2528      OPEN c_contract(p_object_id);
2529      FETCH c_contract INTO l_contract_number;
2530      CLOSE c_contract;
2531 --     IF PG_DEBUG < 10  THEN
2532      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2533         iex_debug_pub.logmessage ('ReassignCaseObjects: ' || 'contract Number'||l_contract_number);
2534      END IF;
2535 
2536 
2537      OPEN c_getname(l_old_case_id);
2538      FETCH c_getname INTO l_case_agent;
2539      CLOSE c_getname;
2540 --     IF PG_DEBUG < 10  THEN
2541      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2542         iex_debug_pub.logmessage ('ReassignCaseObjects: ' || 'case agent'||l_case_Agent);
2543      END IF;
2544 
2545      --l_case_agent :='KWALKER';
2546 
2547      if l_case_agent is not null THEN
2548         send_notification
2549           ( p_OldCaseID      => l_old_case_id,
2550             p_NewCaseID      => l_cas_id,
2551             p_ContractNumber =>l_contract_number,
2552             p_CaseAgent      =>l_case_agent,
2553             x_return_status  =>l_return_status);
2554      else
2555 --          IF PG_DEBUG < 10  THEN
2556           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2557              iex_debug_pub.logmessage ('ReassignCaseObjects: ' || 'Could not send notification');
2558           END IF;
2559           l_return_status :='F';
2560      end if;
2561 
2562 
2563 
2564       --
2565       -- End of API body.
2566       --
2567 
2568       -- Standard check for p_commit
2569       IF FND_API.to_Boolean( p_commit )
2570       THEN
2571           COMMIT WORK;
2572       END IF;
2573 
2574      -- we still want to commit the changes , but send the message indicating notification did
2575      --not happen
2576 
2577      if l_return_status <> 'S' THEN
2578 
2579           FND_MSG_PUB.initialize;
2580          fnd_message.set_name('IEX', 'IEX_CASE_NOTIFICATION');
2581           fnd_message.set_token('OLD_CASE',l_old_case_id);
2582           fnd_message.set_token('NEW_CASE',l_cas_id);
2583           fnd_message.set_token('CON_NUM',l_contract_number);
2584           fnd_msg_pub.add;
2585           x_return_status := 'N';
2586      End if;
2587 
2588 
2589       -- Standard call to get message count and if count is 1, get message info.
2590       FND_MSG_PUB.Count_And_Get
2591       (  p_count          =>   x_msg_count,
2592          p_data           =>   x_msg_data
2593       );
2594 --     IF PG_DEBUG < 10  THEN
2595      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2596         IEX_DEBUG_PUB.LogMessage ('ReassignCaseObjects: ' || '*********End of Procedure => '||l_api_name||' *********');
2597      END IF;
2598      EXCEPTION
2599           WHEN FND_API.G_EXC_ERROR THEN
2600                 ROLLBACK TO REASSIGNCASEOBJECTS_PUB;
2601                 x_return_status := FND_API.G_RET_STS_ERROR ;
2602                 x_msg_count := l_msg_count ;
2603                 x_msg_data  := l_msg_data ;
2604                 FND_MSG_PUB.Count_And_Get( p_count       =>      x_msg_count,
2605                                            p_data        =>      x_msg_data);
2606            WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2607                 ROLLBACK TO REASSIGNCASEOBJECTS_PUB;
2608                 x_return_status :=  FND_API.G_RET_STS_UNEXP_ERROR ;
2609                 x_msg_count := l_msg_count ;
2610                 x_msg_data  := l_msg_data ;
2611                 FND_MSG_PUB.Count_And_Get( p_count       =>      x_msg_count,
2612                                            p_data        =>      x_msg_data);
2613 
2614           WHEN OTHERS THEN
2615                 ROLLBACK TO REASSIGNCASEOBJECTS_PUB;
2616                 x_return_status :=  FND_API.G_RET_STS_UNEXP_ERROR ;
2617                 x_msg_count := l_msg_count ;
2618                 x_msg_data  := l_msg_data ;
2619                 FND_MSG_PUB.ADD_EXC_MSG(G_PKG_NAME,l_api_name);
2620                 FND_MSG_PUB.Count_And_Get( p_count       =>      x_msg_count,
2621                                            p_data        =>      x_msg_data);
2622   END ReassignCaseObjects;
2623 
2624 
2625 /* Name   UpdateCase
2626 **  api  : Current version 2.0
2627 ** Purpose To update a case. Change the status from delinquent to current when the case
2628 ** comes out NOCOPY of delinquency
2629 **
2630 */
2631 PROCEDURE UpdateCase(
2632           P_Api_Version_Number         IN   NUMBER,
2633           P_Init_Msg_List              IN   VARCHAR2     ,
2634           P_Commit                     IN   VARCHAR2    ,
2635           P_validation_level           IN   NUMBER       ,
2636           p_cas_rec                    IN    CAS_Rec_Type  ,
2637           X_Return_Status              OUT NOCOPY  VARCHAR2,
2638           X_Msg_Count                  OUT NOCOPY  NUMBER,
2639           X_Msg_Data                   OUT NOCOPY  VARCHAR2
2640           ) IS
2641 
2642 l_api_name                CONSTANT VARCHAR2(30) := 'UpdateCase';
2643 l_api_name_full           CONSTANT VARCHAR2(61) := g_pkg_name || '.' || l_api_name;
2644 l_api_version_number      CONSTANT NUMBER   := 2.0;
2645 l_cas_id		           NUMBER            ;
2646 l_return_status           VARCHAR2(1);
2647 l_msg_count               NUMBER;
2648 l_msg_data                VARCHAR2(32767);
2649 l_case_object_id          NUMBER;
2650 l_case_definition_id      NUMBER;
2651 l_cas_rec                 iex_cases_pvt.cas_rec_type
2652                                          := iex_cases_pvt.g_miss_cas_rec;
2653 l_object_version_number   NUMBER;
2654  BEGIN
2655 --     IF PG_DEBUG < 10  THEN
2656      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2657         IEX_DEBUG_PUB.LogMessage ('UpdateCase: ' || '*********Start of Procedure => '||l_api_name||' *********');
2658      END IF;
2659       -- Standard Start of API savepoint
2660       SAVEPOINT UPDATECASE_PUB;
2661 
2662       -- Standard call to check for call compatibility.
2663       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2664                            	               p_api_version_number,
2665                                            l_api_name,
2666                                            G_PKG_NAME)
2667       THEN
2668           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2669       END IF;
2670 
2671 
2672       -- Initialize message list if p_init_msg_list is set to TRUE.
2673       IF FND_API.to_Boolean( p_init_msg_list )
2674       THEN
2675           FND_MSG_PUB.initialize;
2676       END IF;
2677 
2678 --     IF PG_DEBUG < 10  THEN
2679      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2680         iex_debug_pub.logMessage('UpdateCase: ' || 'After Api compatability Check');
2681      END IF;
2682 
2683       -- Initialize API return status to SUCCESS
2684       x_return_status := FND_API.G_RET_STS_SUCCESS;
2685       --
2686       -- API body
2687       --
2688       -- ******************************************************************
2689       -- Validate Environment
2690       -- ******************************************************************
2691       IF FND_GLOBAL.User_Id IS NULL
2692       THEN
2693           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2694           THEN
2695               FND_MESSAGE.Set_Name('IEX', 'IEX_CANNOT_GET_PROFILE_VALUE');
2696               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
2697               FND_MSG_PUB.ADD;
2698           END IF;
2699           RAISE FND_API.G_EXC_ERROR;
2700       END IF;
2701 
2702 --      IF PG_DEBUG < 10  THEN
2703       IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2704          iex_debug_pub.logMessage('UpdateCase: ' || 'After FND_GLOBAL_USER Check');
2705       END IF;
2706 
2707           -- Item level validation
2708       IF (p_validation_level > fnd_api.g_valid_level_none) THEN
2709 
2710          -- Check for valid cas_id
2711          BEGIN
2712               IF (p_cas_rec.cas_id IS NOT NULL) AND (p_cas_rec.cas_id <> FND_API.G_MISS_NUM) THEN
2713                  --May have to check for status_code too.
2714                   SELECT cas_id,object_version_number
2715                   INTO l_cas_id,l_object_version_number
2716                   FROM iex_cases_all_b
2717                   WHERE cas_id = p_cas_rec.cas_id
2718 			   and active_flag ='Y';
2719 
2720                ELSE
2721                    AddMissingArgMsg(
2722                           p_api_name    =>  l_api_name_full,
2723                           p_param_name  =>  'p_cas_rec.cas_id' );
2724                     RAISE FND_API.G_EXC_ERROR;
2725                END IF;
2726          EXCEPTION
2727          WHEN NO_DATA_FOUND THEN
2728                     AddInvalidArgMsg(
2729                           p_api_name    =>  l_api_name_full,
2730                           p_param_name  =>  'p_cas_rec.cas_id' ,
2731                           p_param_value =>  p_cas_rec.cas_id);
2732                     RAISE FND_API.G_EXC_ERROR;
2733                    fnd_msg_pub.add;
2734                    RAISE FND_API.G_EXC_ERROR;
2735           WHEN OTHERS THEN
2736                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2737           END;
2738 
2739    END IF; --end of item level validation
2740 --   IF PG_DEBUG < 10  THEN
2741    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2742       iex_debug_pub.logMessage('UpdateCase: ' || 'After Item validation ');
2743    END IF;
2744 
2745    -- Call update Case PVT to update
2746         PopulateCaseRec(p_attribute_rec         =>p_cas_rec,
2747                        p_comments            => fnd_api.g_miss_char,
2748                        p_org_id               =>  fnd_api.g_miss_num,
2749                        p_case_established_date => fnd_api.g_miss_date,
2750                        x_cas_rec               =>l_cas_rec,
2751                        p_case_number           => fnd_api.g_miss_char);
2752 
2753        l_cas_rec.cas_id                :=l_cas_id;
2754        l_cas_rec.object_version_number :=l_object_version_number;
2755 
2756 
2757 --   IF PG_DEBUG < 10  THEN
2758    IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2759       iex_debug_pub.logMessage('UpdateCase: ' || 'Before Calling  Update  PVT');
2760    END IF;
2761    iex_cases_pvt.update_cas
2762                         (P_Api_Version_Number         =>l_api_version_number,
2763                          P_Init_Msg_List              =>FND_API.G_FALSE,
2764                          P_Commit                     =>FND_API.G_FALSE,
2765                          p_validation_level           =>P_validation_level,
2766                          P_cas_Rec                    =>l_cas_Rec,
2767                          X_Return_Status              =>l_return_status,
2768                          X_Msg_Count                  =>l_msg_count,
2769                          X_Msg_Data                   =>l_msg_data,
2770                          xo_object_version_number     =>l_object_version_number);
2771 --    IF PG_DEBUG < 10  THEN
2772     IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2773        iex_debug_pub.logMessage('UpdateCase: ' || 'After Calling update case  PVT and Status =>'||l_return_status);
2774     END IF;
2775 
2776     IF l_return_status = FND_API.G_RET_STS_ERROR then
2777         AddFailMsg( p_object     =>  'CASE ',
2778                     p_operation  =>  'UPDATE' );
2779        raise FND_API.G_EXC_ERROR;
2780     elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
2781        raise FND_API.G_EXC_UNEXPECTED_ERROR;
2782     END IF;
2783 
2784       --
2785       -- End of API body.
2786       --
2787 
2788       -- Standard check for p_commit
2789       IF FND_API.to_Boolean( p_commit )
2790       THEN
2791           COMMIT WORK;
2792       END IF;
2793 
2794 
2795       -- Standard call to get message count and if count is 1, get message info.
2796       FND_MSG_PUB.Count_And_Get
2797       (  p_count          =>   x_msg_count,
2798          p_data           =>   x_msg_data
2799       );
2800 --     IF PG_DEBUG < 10  THEN
2801      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2802         IEX_DEBUG_PUB.LogMessage ('UpdateCase: ' || '*********End of Procedure => '||l_api_name||' *********');
2803      END IF;
2804       EXCEPTION
2805           WHEN FND_API.G_EXC_ERROR THEN
2806               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
2807                    P_API_NAME => L_API_NAME
2808                   ,P_PKG_NAME => G_PKG_NAME
2809                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
2810                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
2811                   ,X_MSG_COUNT => X_MSG_COUNT
2812                   ,X_MSG_DATA => X_MSG_DATA
2813                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2814 
2815           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2816               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
2817                    P_API_NAME => L_API_NAME
2818                   ,P_PKG_NAME => G_PKG_NAME
2819                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
2820                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
2821                   ,X_MSG_COUNT => X_MSG_COUNT
2822                   ,X_MSG_DATA => X_MSG_DATA
2823                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2824 
2825           WHEN OTHERS THEN
2826               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
2827                    P_API_NAME => L_API_NAME
2828                   ,P_PKG_NAME => G_PKG_NAME
2829                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
2830                   ,P_SQLCODE => SQLCODE
2831                   ,P_SQLERRM => SQLERRM
2832                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
2833                   ,X_MSG_COUNT => X_MSG_COUNT
2834                   ,X_MSG_DATA => X_MSG_DATA
2835                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2836    END UpdateCase;
2837 
2838 /* Name   CreateCaseContacts
2839 **  api  : Current version 2.0
2840 ** Purpose: To create case Contacts. A table of contacts along with
2841 ** the table of roles is passed.
2842 ** For a case. There could only be 1 primary contact per case
2843 ** the address id and phone for a contact are optional, if it is not passed
2844 ** the procedure picks the default address and phone id based on the contact id.
2845 ** The contact id in the contact_tbl and roles_tbl are party id's with party type of
2846 ** 'party_Relationship'
2847 ** 11/20/01******
2848 ** since a contact could have multiple roles,the primary flag has been moved over
2849 ** to contact roles from contacts table.
2850 ** 01/07/02
2851 **  The contact roles has been descoped, so primary flag has been moved to
2852 **  contacts table and the contact roles table is obsolete.
2853 
2854 */
2855 PROCEDURE CreateCasecontacts(
2856           P_Api_Version_Number         IN   NUMBER,
2857           P_Init_Msg_List              IN   VARCHAR2     ,
2858           P_Commit                     IN   VARCHAR2     ,
2859           P_validation_level           IN   NUMBER       ,
2860           P_case_contact_tbl           IN   CASE_CONTACT_TBL_TYPE ,
2861           P_cas_id                     IN NUMBER        ,
2862           X_Return_Status              OUT NOCOPY  VARCHAR2,
2863           X_Msg_Count                  OUT NOCOPY  NUMBER,
2864           X_Msg_Data                   OUT NOCOPY  VARCHAR2)
2865           IS
2866 l_api_name                CONSTANT VARCHAR2(30) := 'CREATECASECONTACTS';
2867 l_api_name_full	          CONSTANT VARCHAR2(61) := g_pkg_name || '.' || l_api_name;
2868 l_api_version_number      CONSTANT NUMBER   := 2.0;
2869 l_cas_id		          NUMBER            :=p_cas_id;
2870 l_return_status           VARCHAR2(1);
2871 l_msg_count               NUMBER;
2872 l_msg_data                VARCHAR2(32767);
2873 l_case_object_id          NUMBER;
2874 l_case_contact_id         NUMBER;
2875 l_case_contact_role_id    NUMBER;
2876 l_case_contact_rec                iex_case_contacts_pvt.case_contact_rec_type
2877                                     := iex_case_contacts_pvt.g_miss_case_contact_rec;
2878 --l_case_contact_role_rec          iex_case_contact_roles_pvt.case_contact_role_rec_type
2879 --                                  := iex_case_contact_roles_pvt.g_miss_case_contact_role_rec;
2880 l_assign                  BOOLEAN  DEFAULT FALSE;
2881 BEGIN
2882 --     IF PG_DEBUG < 10  THEN
2883      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2884         IEX_DEBUG_PUB.LogMessage ('CreateCasecontacts: ' || '*********Start of Procedure => '||l_api_name||' *********');
2885      END IF;
2886       -- Standard Start of API savepoint
2887       SAVEPOINT CREATECASECONTACTS_PUB;
2888 
2889       -- Standard call to check for call compatibility.
2890       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2891                            	               p_api_version_number,
2892                                            l_api_name,
2893                                            G_PKG_NAME)
2894       THEN
2895           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2896       END IF;
2897 
2898 
2899       -- Initialize message list if p_init_msg_list is set to TRUE.
2900       IF FND_API.to_Boolean( p_init_msg_list )
2901       THEN
2902           FND_MSG_PUB.initialize;
2903       END IF;
2904 
2905 --     IF PG_DEBUG < 10  THEN
2906      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2907         iex_debug_pub.logMessage('CreateCasecontacts: ' || 'After Api compatability Check');
2908      END IF;
2909 
2910       -- Initialize API return status to SUCCESS
2911       x_return_status := FND_API.G_RET_STS_SUCCESS;
2912       --
2913       -- API body
2914       --
2915       -- ******************************************************************
2916       -- Validate Environment
2917       -- ******************************************************************
2918       IF FND_GLOBAL.User_Id IS NULL
2919       THEN
2920           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2921           THEN
2922               FND_MESSAGE.Set_Name('IEX', 'IEX_CANNOT_GET_PROFILE_VALUE');
2923               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
2924               FND_MSG_PUB.ADD;
2925           END IF;
2926           RAISE FND_API.G_EXC_ERROR;
2927       END IF;
2928 --     IF PG_DEBUG < 10  THEN
2929      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2930         iex_debug_pub.logMessage('CreateCasecontacts: ' || 'After FND_GLOBAL_USER Check');
2931      END IF;
2932       -- Check for required parameter cas_id
2933          IF (p_cas_id IS NULL) OR (p_cas_id = FND_API.G_MISS_NUM) THEN
2934 --             IF PG_DEBUG < 10  THEN
2935              IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2936                 IEX_DEBUG_PUB.LogMessage('CreateCasecontacts: ' || 'Required Parameter p_cas_id is invalid');
2937              END IF;
2938               AddMissingArgMsg(
2939                       p_api_name    =>  l_api_name_full,
2940                       p_param_name  =>  'p_cas_id' );
2941               RAISE FND_API.G_EXC_ERROR;
2942           END IF;
2943           --Call iex_case_contacts_pvt to create contacts
2944         	FOR i IN 1..P_case_contact_tbl.COUNT LOOP
2945                 l_case_contact_Rec.cas_id           :=P_cas_id;
2946                 l_case_contact_Rec.contact_party_id :=P_case_contact_tbl(i).contact_party_id;
2947                 l_case_contact_Rec.address_id       :=P_case_contact_tbl(i).address_id;
2948                 l_case_contact_Rec.phone_id         :=P_case_contact_tbl(i).phone_id;
2949                 l_case_contact_Rec.primary_flag     :=P_case_contact_tbl(i).primary_flag;
2950 --                IF PG_DEBUG < 10  THEN
2951                 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2952                    iex_debug_pub.logMessage('CreateCasecontacts: ' || 'Before Calling Create Case Contacts  PVT');
2953                 END IF;
2954 --                IF PG_DEBUG < 10  THEN
2955                 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2956                    iex_debug_pub.logMessage('CreateCasecontacts: ' || '---------------------------------');
2957                 END IF;
2958                 iex_case_contacts_pvt.create_case_contact(
2959                              P_Api_Version_Number         =>l_api_version_number,
2960                              P_Init_Msg_List              =>FND_API.G_FALSE,
2961                              P_Commit                     =>FND_API.G_FALSE,
2962                              p_validation_level           =>P_validation_level,
2963                              p_case_contact_rec           =>l_case_contact_Rec,
2964                              x_cas_contact_id             =>l_case_contact_id,
2965                              X_Return_Status              =>l_return_status,
2966                              X_Msg_Count                  =>l_msg_count,
2967                              X_Msg_Data                   =>l_msg_data);
2968 --                IF PG_DEBUG < 10  THEN
2969                 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2970                    iex_debug_pub.logMessage('CreateCasecontacts: ' || 'After Calling Create Case'||
2971                             'contacts PVT and Status =>'||l_return_status);
2972                 END IF;
2973                 IF l_return_status = FND_API.G_RET_STS_ERROR then
2974                          AddFailMsg( p_object     =>  'CASE CONTACTS',
2975                                      p_operation  =>  'INSERT' );
2976                     raise FND_API.G_EXC_ERROR;
2977                 elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
2978                     raise FND_API.G_EXC_UNEXPECTED_ERROR;
2979                  /*
2980                  ELSE -- if case contact insert = success
2981                      --if it is a primary contact
2982                      if P_case_contact_tbl(i).primary_flag = 'Y' THEN
2983                         l_assign := TRUE;
2984                      END IF;
2985 
2986                      FOR j IN 1..P_case_contact_roles_tbl.COUNT LOOP
2987 --                         IF PG_DEBUG < 10  THEN
2988                          IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2989                             iex_debug_pub.LogMessage ('CreateCasecontacts: ' || 'Roles for contact Party_id = '||
2990                                                     P_case_contact_roles_tbl(j).contact_party_id||
2991                                                    'P_case_contact_tbl(i).contact_party_id ='||
2992                                                     P_case_contact_tbl(i).contact_party_id);
2993                          END IF;
2994                          If P_case_contact_roles_tbl(j).contact_party_id =
2995                                   P_case_contact_tbl(i).contact_party_id   THEN
2996 
2997                                -- if the contact is primary , assign the first role as the primary
2998                               If P_case_contact_tbl(i).primary_flag = 'Y' and l_assign THEN
2999                                  l_case_contact_role_Rec.primary_role_flag  := 'Y';
3000                                  l_assign := FALSE;
3001                               else
3002                                  l_case_contact_role_Rec.primary_role_flag  := 'N';
3003                               End if;
3004 
3005                               l_case_contact_role_rec.cas_contact_id        :=l_case_contact_id;
3006                               l_case_contact_role_rec.cas_contact_role_code :=P_case_contact_roles_tbl(j).CONTACT_ROLE;
3007 
3008 
3009 --                              IF PG_DEBUG < 10  THEN
3010                               IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
3011                                  iex_debug_pub.logMessage('CreateCasecontacts: ' || 'Before Calling Create Case Contact roles  PVT');
3012                               END IF;
3013 --                              IF PG_DEBUG < 10  THEN
3014                               IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
3015                                  iex_debug_pub.logMessage('CreateCasecontacts: ' || '---------------------------------');
3016                               END IF;
3017                               iex_case_contact_roles_pvt.create_case_contact_roles(
3018                                   P_Api_Version_Number         =>l_api_version_number,
3019                                   P_Init_Msg_List              =>FND_API.G_FALSE,
3020                                   P_Commit                     =>FND_API.G_FALSE,
3021                                   p_validation_level           =>P_validation_level,
3022                                   p_case_contact_role_rec      =>l_case_contact_role_Rec,
3023                                   x_cas_contact_role_id       =>l_case_contact_role_id,
3024                                   X_Return_Status              =>l_return_status,
3025                                   X_Msg_Count                  =>l_msg_count,
3026                                   X_Msg_Data                   =>l_msg_data);
3027 --                              IF PG_DEBUG < 10  THEN
3028                               IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
3029                                  iex_debug_pub.logMessage('CreateCasecontacts: ' || 'After Calling Create Case'||
3030                                        'contacts roles PVT and Status =>'||l_return_status);
3031                               END IF;
3032                               IF l_return_status = FND_API.G_RET_STS_ERROR then
3033                        	             AddFailMsg( p_object     =>  'CASE CONTACT ROLES',
3034                                                  p_operation  =>  'INSERT' );
3035                                  raise FND_API.G_EXC_ERROR;
3036                               elsif l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
3037                                  raise FND_API.G_EXC_UNEXPECTED_ERROR;
3038                               END IF;
3039                          END IF; --contact party id are similar
3040                      END LOOP; --contact roles table loop
3041 --                     IF PG_DEBUG < 10  THEN
3042                      IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
3043                         iex_debug_pub.logMessage('CreateCasecontacts: ' || 'After creation of Case'||
3044                                   'contacts roles for cas_contact_id '||l_case_contact_id);
3045                      END IF;
3046                  */
3047                  END IF; --checking return status of case contact insert
3048            END LOOP;
3049 --          IF PG_DEBUG < 10  THEN
3050           IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
3051              IEX_DEBUG_PUB.LogMessage ('CreateCasecontacts: ' || '*********End of Procedure => '||l_api_name||' *********');
3052           END IF;
3053 
3054  -- Debug Message
3055  -- Standard call to get message count and if count is 1, get message info.
3056       FND_MSG_PUB.Count_And_Get
3057       (  p_count          =>   x_msg_count,
3058          p_data           =>   x_msg_data
3059       );
3060 
3061       EXCEPTION
3062           WHEN FND_API.G_EXC_ERROR THEN
3063               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
3064                    P_API_NAME => L_API_NAME
3065                   ,P_PKG_NAME => G_PKG_NAME
3066                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
3067                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
3068                   ,X_MSG_COUNT => X_MSG_COUNT
3069                   ,X_MSG_DATA => X_MSG_DATA
3070                   ,X_RETURN_STATUS => X_RETURN_STATUS);
3071 
3072           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3073               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
3074                    P_API_NAME => L_API_NAME
3075                   ,P_PKG_NAME => G_PKG_NAME
3076                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
3077                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
3078                   ,X_MSG_COUNT => X_MSG_COUNT
3079                   ,X_MSG_DATA => X_MSG_DATA
3080                   ,X_RETURN_STATUS => X_RETURN_STATUS);
3081 
3082           WHEN OTHERS THEN
3083               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
3084                    P_API_NAME => L_API_NAME
3085                   ,P_PKG_NAME => G_PKG_NAME
3086                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
3087                   ,P_SQLCODE => SQLCODE
3088                   ,P_SQLERRM => SQLERRM
3089                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PUB
3090                   ,X_MSG_COUNT => X_MSG_COUNT
3091                   ,X_MSG_DATA => X_MSG_DATA
3092                   ,X_RETURN_STATUS => X_RETURN_STATUS);
3093 
3094 END CreateCasecontacts;
3095 
3096 /* Name   CheckContract
3097 ** Used by the OKL wrapper to decide whether to call createCaseObjects or
3098 ** reassign Case when Bill_to_address or any case attribute is changed
3099 */
3100 Function CheckContract
3101           (P_ObjectID   IN NUMBER
3102           )Return BOOLEAN IS
3103 x_ObjectID iex_case_Objects.object_id%TYPE;
3104 Begin
3105       Select object_id  INTO x_ObjectID
3106       from iex_case_objects
3107       where object_id =P_ObjectID;
3108       return TRUE;
3109 EXCEPTION WHEN OTHERS THEN
3110      Return FALSE;
3111 
3112 End CheckContract;
3113 
3114 
3115 END IEX_CASE_UTL_PUB;
3116 
3117