[Home] [Help]
PACKAGE BODY: APPS.JTF_IH_PUB
Source
1 PACKAGE BODY JTF_IH_PUB AS
2 /* $Header: JTFIHPBB.pls 120.4.12010000.2 2008/11/25 10:00:00 ppillai ship $ */
3 G_PKG_NAME CONSTANT VARCHAR2(30) := 'JTF_IH_PUB';
4
5
6 -- 08/26/03 mpetrosi B3102306
7 -- added cross check of source_code, source_code_id
8 PROCEDURE Validate_Source_Code(p_api_name IN VARCHAR2
9 ,x_source_code_id IN OUT NOCOPY NUMBER
10 ,x_source_code IN OUT NOCOPY VARCHAR2
11 ,x_return_status IN OUT NOCOPY VARCHAR2);
12
13 PROCEDURE Validate_Source_Code(p_api_name IN VARCHAR2
14 ,x_source_code_id IN OUT NOCOPY NUMBER
15 ,x_source_code IN OUT NOCOPY VARCHAR2
16 ,x_return_status IN OUT NOCOPY VARCHAR2) IS
17 BEGIN
18
19 IF ((x_source_code_id IS NOT NULL) AND
20 (x_source_code_id <> fnd_api.g_miss_num)) AND
21 ((x_source_code IS NULL) OR
22 (x_source_code = fnd_api.g_miss_char)) THEN
23 BEGIN
24 SELECT source_code into x_source_code
25 FROM ams_source_codes
26 WHERE source_code_id = x_source_code_id;
27 IF (SQL%NOTFOUND) THEN
28 x_return_status := fnd_api.g_ret_sts_error;
29 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(x_source_code_id), 'SOUREC_CODE');
30 RETURN ;
31 END IF;
32 END;
33 END IF;
34
35 IF ((x_source_code IS NOT NULL) AND
36 (x_source_code <> fnd_api.g_miss_char)) AND
37 ((x_source_code_id IS NULL) OR
38 (x_source_code_id = fnd_api.g_miss_num)) THEN
39 BEGIN
40 SELECT source_code_id into x_source_code_id
41 FROM ams_source_codes
42 WHERE source_code = x_source_code;
43 IF (SQL%NOTFOUND) THEN
44 x_return_status := fnd_api.g_ret_sts_error;
45 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, x_source_code, 'SOURCE_CODE');
46 RETURN;
47 END IF;
48 END;
49 END IF;
50
51 END Validate_Source_Code;
52
53
54 -- Jean Zhu add Utility Validate_StartEnd_Date
55 PROCEDURE Validate_StartEnd_Date
56 ( p_api_name IN VARCHAR2,
57 p_start_date_time IN DATE,
58 p_end_date_time IN DATE,
59 x_return_status IN OUT NOCOPY VARCHAR2
60 );
61
62 -- End Utilities Declaration
63 -- Begin Utilities Definition
64 --
65 -- HISTORY
66 --
67 -- AUTHOR DATE MODIFICATION DESCRIPTION
68 -- ------ ---- --------------------------
69 --
70 -- Jean Zhu 11-JAN-2000 INITIAL VERSION
71 -- James Baldo Jr. 03-MAY-2000 Fix for bugdb 1286036
72 -- Enh# 2999069 - time portion not included in start and end date time
73 -- error messages
74
75 PROCEDURE Validate_StartEnd_Date
76 ( p_api_name IN VARCHAR2,
77 p_start_date_time IN DATE,
78 p_end_date_time IN DATE,
79 x_return_status IN OUT NOCOPY VARCHAR2
80 )
81 IS
82 BEGIN
83 -- DBMS_OUTPUT.PUT_LINE('end_date =' || to_char(p_end_date_time, 'DD-MON-YYYY') || ' start_date =' || to_char(p_start_date_time, 'DD-MON-YYYY'));
84 IF((p_start_date_time IS NOT NULL) AND (p_end_date_time IS NOT NULL) AND
85 (p_start_date_time <> fnd_api.g_miss_date) AND
86 (p_end_date_time <> fnd_api.g_miss_date) AND
87 -- (p_end_date_time - p_start_date_time < 0) )THEN
88 (p_end_date_time < p_start_date_time) )THEN
89 -- DBMS_OUTPUT.PUT_LINE('end_date is less than start_date in JTF_IH_PUB.Validate_StartEnd_Date');
90 x_return_status := fnd_api.g_ret_sts_error;
91 -- jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_end_date_time, 'DD-MON-YYYY'),
92 -- 'end_date_time');
93 -- Enh# 2999069
94 --jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_end_date_time, 'DD-MON-RRRR HH:MI:SS'),'end_date_time');
95 FND_MESSAGE.SET_NAME('JTF','JTF_IH_API_INVALID_END_DATE');
96 FND_MESSAGE.SET_TOKEN('END_DATE', to_char(p_end_date_time, 'DD-MON-RRRR HH:MI:SS'));
97 FND_MESSAGE.SET_TOKEN('START_DATE', to_char(p_start_date_time, 'DD-MON-RRRR HH:MI:SS'));
98 FND_MSG_PUB.Add;
99 END IF;
100 END Validate_StartEnd_Date;
101
102
103 PROCEDURE Validate_Interaction_Record
104 ( p_api_name IN VARCHAR2,
105 p_int_val_rec IN OUT NOCOPY interaction_rec_type,
106 p_resp_appl_id IN NUMBER := NULL,
107 p_resp_id IN NUMBER := NULL,
108 x_return_status IN OUT NOCOPY VARCHAR2
109 );
110
111 -- HISTORY
112 --
113 -- AUTHOR DATE MODIFICATION DESCRIPTION
114 -- ------ ---- --------------------------
115 -- Prashanth Pillai 20-MAY-2008 FIX 7028381
116 --
117 FUNCTION Is_ContactPartyEmployeeOfOrg(p_Party_id IN NUMBER
118 )RETURN BOOLEAN AS
119 s_Employee_Number VARCHAR2(30) := NULL;
120 BEGIN
121 SELECT DISTINCT PERSON_ID INTO s_Employee_Number FROM PER_WORKFORCE_CURRENT_X WHERE PARTY_ID = p_Party_id;
122 RETURN TRUE;
123 EXCEPTION
124 WHEN NO_DATA_FOUND THEN
125 RETURN FALSE;
126 END;
127
128 --
129 -- HISTORY
130 --
131 -- AUTHOR DATE MODIFICATION DESCRIPTION
132 -- ------ ---- --------------------------
133 -- Igor Aleshin 17-JUN-2003 Created based on Enh# 1846960
134 --
135 FUNCTION Get_Party_Type( p_Party_Id IN NUMBER
136 ) RETURN VARCHAR2 AS
137 s_Party_Type VARCHAR2(30) := NULL;
138 BEGIN
139 SELECT PARTY_TYPE INTO s_Party_Type FROM HZ_PARTIES WHERE PARTY_ID = p_Party_Id;
140 RETURN s_Party_Type;
141 EXCEPTION
142 WHEN NO_DATA_FOUND THEN
143 RETURN NULL;
144 END;
145
146 --
147 -- HISTORY
148 --
149 -- AUTHOR DATE MODIFICATION DESCRIPTION
150 -- ------ ---- --------------------------
151 -- Igor Aleshin 17-JUN-2003 Created based on Enh# 1846960
152 --
153
154 PROCEDURE Get_Relationship(p_Party_ID IN NUMBER,
155 p_Subject_ID OUT NOCOPY NUMBER,
156 p_Subject_Type OUT NOCOPY VARCHAR2,
157 p_Object_ID OUT NOCOPY NUMBER,
158 p_Object_Type OUT NOCOPY VARCHAR2,
159 x_return_status IN OUT NOCOPY VARCHAR2
160 ) AS
161
162 l_direction_flag_perf VARCHAR2(1); -- Perf fix for literal Usage
163 BEGIN
164
165 -- Get a Party relationship ids: Subject_ID and Subject_Type and
166 -- Object_Id and Object_Type
167 --
168 -- Perf fix for literal Usage
169 l_direction_flag_perf := 'F';
170
171 SELECT
172 SUBJECT_ID,
173 SUBJECT_TYPE,
174 OBJECT_ID,
175 OBJECT_TYPE
176 INTO
177 p_Subject_ID,
178 p_Subject_Type,
179 p_Object_ID,
180 p_Object_Type
181 FROM HZ_RELATIONSHIPS WHERE PARTY_ID = p_Party_ID AND
182 DIRECTIONAL_FLAG = l_direction_flag_perf;
183 x_return_status := fnd_api.g_ret_sts_success;
184 RETURN;
185 EXCEPTION
186 WHEN NO_DATA_FOUND THEN
187 x_return_status := fnd_api.g_ret_sts_error;
188 FND_MESSAGE.SET_NAME('JTF','JTF_IH_NO_PARTY_RELATIONSHIP');
189 FND_MESSAGE.SET_TOKEN('PARTY', p_Party_ID);
190 FND_MSG_PUB.Add;
191 RETURN;
192 END;
193
194 --
195 -- HISTORY
196 --
197 -- AUTHOR DATE MODIFICATION DESCRIPTION
198 -- ------ ---- --------------------------
199 -- Igor Aleshin 17-JUN-2003 Created based on Enh# 1846960
200 --
201 PROCEDURE Validate_SinglePartyID(
202 p_int_val_rec IN OUT NOCOPY interaction_rec_type,
203 x_return_status IN OUT NOCOPY VARCHAR2
204 ) AS
205 s_Party_Type VARCHAR2(30);
206 n_Subject_Id NUMBER;
207 s_Subject_Type VARCHAR2(30);
208 n_Object_ID NUMBER;
209 s_Object_Type VARCHAR2(30);
210
211 BEGIN
212 -- Get Party Type
213 --
214 s_Party_Type := Get_Party_Type(p_int_val_rec.party_id);
215
216 -- Party Type based on required Party Id. If Party Type is null then
217 -- return an error.
218 --
219 IF s_Party_Type IS NULL THEN
220 x_return_status := fnd_api.g_ret_sts_error;
221 FND_MESSAGE.SET_NAME('JTF','JTF_IH_NO_PARTY');
222 FND_MESSAGE.SET_TOKEN('PARTY', p_int_val_rec.party_id);
223 FND_MSG_PUB.Add;
224 RETURN;
225 END IF;
226
227 -- Case# 1 - Person as customer - Same person Contac
228 --
229 IF s_Party_Type = 'PERSON' THEN
230 p_int_val_rec.primary_party_id := p_int_val_rec.party_id;
231 p_int_val_rec.contact_rel_party_id := NULL;
232 p_int_val_rec.contact_party_id := p_int_val_rec.party_id;
233 x_return_status := fnd_api.g_ret_sts_success;
234 RETURN;
235 -- Case# 3 - Org as Customer. No Contact
236 --
237 ELSIF s_Party_Type = 'ORGANIZATION' THEN
238 p_int_val_rec.primary_party_id := p_int_val_rec.party_id;
239 p_int_val_rec.contact_rel_party_id := NULL;
240 p_int_val_rec.contact_party_id := NULL;
241 x_return_status := fnd_api.g_ret_sts_success;
242 RETURN;
243 ELSIF s_Party_Type = 'PARTY_RELATIONSHIP' THEN
244 -- Check valid relationship
245 --
246 Get_Relationship(p_int_val_rec.party_id,n_Subject_Id,s_Subject_Type,
247 n_Object_Id,s_Object_Type, x_return_status);
248 IF x_return_status = fnd_api.g_ret_sts_error THEN
249 RETURN;
250 ELSE
251 -- Case# 2 Person as customer - Other Person Contact
252 --
253 IF(s_Object_Type = 'PERSON') and (s_Subject_Type = 'PERSON') THEN
254 p_int_val_rec.primary_party_id := p_int_val_rec.party_id;
255 p_int_val_rec.contact_rel_party_id := p_int_val_rec.party_id;
256 p_int_val_rec.contact_party_id := NULL;
257 -- Case# 4 Org. as Customer - Person Contact
258 --
259 ELSIF(s_Object_Type = 'ORGANIZATION') and (s_Subject_Type = 'PERSON') THEN
260 p_int_val_rec.primary_party_id := n_Object_Id;
261 p_int_val_rec.contact_rel_party_id := p_int_val_rec.party_id;
262 p_int_val_rec.contact_party_id := n_Subject_Id;
263 ELSIF (s_Subject_Type = 'ORGANIZATION') and (s_Object_Type = 'PERSON') THEN
264 p_int_val_rec.primary_party_id := n_Subject_Id;
265 p_int_val_rec.contact_rel_party_id := p_int_val_rec.party_id;
266 p_int_val_rec.contact_party_id := n_Object_Id;
267 ELSIF (s_Subject_Type = 'ORGANIZATION') and (s_Object_Type = 'ORGANIZATION') THEN
268 p_int_val_rec.primary_party_id := p_int_val_rec.party_id;
269 p_int_val_rec.contact_rel_party_id := NULL;
270 p_int_val_rec.contact_party_id := NULL;
271 ELSE
272 x_return_status := fnd_api.g_ret_sts_error;
273 FND_MESSAGE.SET_NAME('JTF','JTF_IH_WRONG_PARTY_REL');
274 FND_MESSAGE.SET_TOKEN('PARTY_ID', p_int_val_rec.party_id);
275 FND_MSG_PUB.Add;
276 RETURN;
277 END IF;
278 END IF;
279 END IF;
280 x_return_status := fnd_api.g_ret_sts_success;
281 RETURN;
282 END;
283
284 --
285 -- HISTORY
286 --
287 -- AUTHOR DATE MODIFICATION DESCRIPTION
288 -- ------ ---- --------------------------
289 -- Igor Aleshin 17-JUN-2003 Created based on Enh# 1846960
290 --
291 PROCEDURE Validate_MultiPartyID(
292 p_int_val_rec IN interaction_rec_type,
293 x_return_status IN OUT NOCOPY VARCHAR2
294 ) AS
295 s_Party_Type VARCHAR2(30);
296 n_Subject_Id NUMBER;
297 s_Subject_Type VARCHAR2(30);
298 n_Object_ID NUMBER;
299 s_Object_Type VARCHAR2(30);
300 BEGIN
301 -- Reject invalid combinations
302 --
303 IF p_int_val_rec.primary_party_id IS NULL THEN
304 x_return_status := fnd_api.g_ret_sts_error;
305 FND_MESSAGE.SET_NAME('JTF','JTF_IH_REQ_ITEM_MSG');
306 FND_MESSAGE.SET_TOKEN('FIELDNAME', 'Primary_Party_ID');
307 FND_MSG_PUB.Add;
308 RETURN;
309 END IF;
310
311 -- Check valid combination for Contact_Party_ID and Primary_Party_Id and Contact_Rel_Party_ID
312 --
313 IF p_int_val_rec.Contact_Party_ID IS NULL AND
314 p_int_val_rec.Primary_Party_Id IS NOT NULL
315 AND p_int_val_rec.Contact_Rel_Party_ID IS NOT NULL THEN
316 x_return_status := fnd_api.g_ret_sts_error;
317 FND_MESSAGE.SET_NAME('JTF','JTF_IH_INVALID_PARTY_COMB');
318 FND_MSG_PUB.Add;
319 RETURN;
320 END IF;
321
322 -- If the Party_Id is not equals to one of the other party id values them it must be validated separately - Case #5 and #6
323 --
324 IF (p_int_val_rec.party_id <> p_int_val_rec.primary_party_id) AND
325 (p_int_val_rec.party_id <> nvl(p_int_val_rec.contact_rel_party_id,-1)) AND
326 (p_int_val_rec.party_id <> nvl(p_int_val_rec.contact_party_id,-1)) THEN
327 s_Party_Type := Get_Party_Type(p_int_val_rec.party_id);
328
329 IF s_Party_Type IS NULL THEN
330 x_return_status := fnd_api.g_ret_sts_error;
331 FND_MESSAGE.SET_NAME('JTF','JTF_IH_NO_PARTY');
332 FND_MESSAGE.SET_TOKEN('PARTY', p_int_val_rec.party_id);
333 FND_MSG_PUB.Add;
334 RETURN;
335 END IF;
336
337 IF s_Party_Type <> 'ORGANIZATION' THEN
338 x_return_status := fnd_api.g_ret_sts_error;
339 FND_MESSAGE.SET_NAME('JTF','JTF_IH_PARTIES_NOT_EQUAL');
340 FND_MESSAGE.SET_TOKEN('PARTY_ID', p_int_val_rec.party_id);
341 FND_MSG_PUB.Add;
342 RETURN;
343 END IF;
344 END IF;
345 -- Validate cases no contact_rel_party_id is passed Case#1, Case#3, Case#5
346 IF (p_int_val_rec.contact_rel_party_id IS NULL) THEN
347 IF ((p_int_val_rec.contact_party_id IS NOT NULL) AND (p_int_val_rec.primary_party_id IS NOT NULL)) THEN
348 IF((Is_ContactPartyEmployeeOfOrg(p_int_val_rec.contact_party_id) = FALSE)
349 AND (p_int_val_rec.primary_party_id <> p_int_val_rec.contact_party_id)) THEN
350 x_return_status := fnd_api.g_ret_sts_error;
351 FND_MESSAGE.SET_NAME('JTF','JTF_IH_INVALID_PERSON_PARTY');
352 FND_MESSAGE.SET_TOKEN('P_PARTY_ID', p_int_val_rec.party_id);
353 FND_MESSAGE.SET_TOKEN('C_PARTY_ID', p_int_val_rec.contact_party_id);
354 FND_MSG_PUB.Add;
355 RETURN;
356 END IF;
357
358 -- Get Contact Party Type
359 --
360 s_Party_Type := Get_Party_Type(p_int_val_rec.contact_party_id);
361 IF s_Party_Type IS NULL THEN
362 x_return_status := fnd_api.g_ret_sts_error;
363 FND_MESSAGE.SET_NAME('JTF','JTF_IH_NO_PARTY');
364 FND_MESSAGE.SET_TOKEN('PARTY', p_int_val_rec.contact_party_id);
365 FND_MSG_PUB.Add;
366 RETURN;
367 END IF;
368 IF s_Party_Type <> 'PERSON' THEN
369 x_return_status := fnd_api.g_ret_sts_error;
370 FND_MESSAGE.SET_NAME('JTF','JTF_IH_NON_PERSON_CONTACT');
371 FND_MESSAGE.SET_TOKEN('C_PARTY_ID', p_int_val_rec.contact_party_id);
372 FND_MSG_PUB.Add;
373 RETURN;
374 END IF;
375 x_return_status := fnd_api.g_ret_sts_success;
376 RETURN;
377 END IF;
378
379 IF p_int_val_rec.contact_party_id IS NULL THEN -- Case# 3, 5
380 s_Party_Type := Get_Party_Type(p_int_val_rec.primary_party_id);
381 IF s_Party_Type IS NULL THEN
382 x_return_status := fnd_api.g_ret_sts_error;
383 FND_MESSAGE.SET_NAME('JTF','JTF_IH_NO_PARTY');
384 FND_MESSAGE.SET_TOKEN('PARTY', p_int_val_rec.primary_party_id);
385 FND_MSG_PUB.Add;
386 RETURN;
387 END IF;
388 IF s_Party_Type <> 'ORGANIZATION' THEN
389 x_return_status := fnd_api.g_ret_sts_error;
390 FND_MESSAGE.SET_NAME('JTF','JTF_IH_INVALID_PERSON_PARTY');
391 FND_MESSAGE.SET_TOKEN('P_PARTY_ID', p_int_val_rec.primary_party_id);
392 FND_MESSAGE.SET_TOKEN('C_PARTY_ID', p_int_val_rec.contact_party_id);
393 FND_MSG_PUB.Add;
394 RETURN;
395 END IF;
396 x_return_status := fnd_api.g_ret_sts_success;
397 RETURN;
398 END IF;
399 END IF;
400
401 -- Check and get valid relationship for Contact_Party_Id
402 --
403 Get_Relationship(p_int_val_rec.contact_rel_party_id,
404 n_Subject_ID,
405 s_Subject_Type,
406 n_Object_ID,
407 s_Object_Type,
408 x_return_status);
409
410 IF x_return_status = fnd_api.g_ret_sts_error THEN
411 RETURN;
412 END IF;
413
414 -- First validate the contact id to make sure is is part of the relationsip and is of type person
415 -- Is the contact the object?
416 --
417 IF p_int_val_rec.contact_party_id = n_Object_ID THEN
418 -- The Contact is the object in the relationship
419 IF s_Object_Type <> 'PERSON' THEN
420 x_return_status := fnd_api.g_ret_sts_error;
421 FND_MESSAGE.SET_NAME('JTF','JTF_IH_NON_PERSON_CONTACT');
422 FND_MESSAGE.SET_TOKEN('C_PARTY_ID', p_int_val_rec.contact_party_id);
423 FND_MSG_PUB.Add;
424 RETURN;
425 END IF;
426
427 -- Validate the primary
428 --
429 IF p_int_val_rec.primary_party_id = n_Subject_Id THEN
430 IF s_Subject_Type IN ('PERSON','ORGANIZATION') THEN
431 x_return_status := fnd_api.g_ret_sts_success;
432 RETURN;
433 ELSE
434 -- The primary is not a PERSON or an ORGANIZATION
435 x_return_status := fnd_api.g_ret_sts_error;
436 FND_MESSAGE.SET_NAME('JTF','JTF_IH_INVALID_PRIMARY_ID');
437 FND_MESSAGE.SET_TOKEN('P_PARTY_ID', p_int_val_rec.primary_party_id);
438 FND_MSG_PUB.Add;
439 RETURN;
440 END IF;
441 ELSE
442 -- The primary_Id is not part of the relationship
443 x_return_status := fnd_api.g_ret_sts_error;
444 FND_MESSAGE.SET_NAME('JTF','JTF_IH_PRIMARY_IS_NOT_REL');
445 FND_MESSAGE.SET_TOKEN('P_PARTY_ID', p_int_val_rec.primary_party_id);
446 FND_MESSAGE.SET_TOKEN('R_PARTY_ID', p_int_val_rec.contact_rel_party_id);
447 FND_MSG_PUB.Add;
448 RETURN;
449 END IF;
450 ELSE
451 -- Is contact_party_id the subject?
452 IF p_int_val_rec.contact_party_id = n_Subject_Id THEN
453 -- The contact_party_id is subject in the relationship
454 IF s_Subject_Type <> 'PERSON' THEN
455 -- The contact is not a Person
456 x_return_status := fnd_api.g_ret_sts_error;
457 FND_MESSAGE.SET_NAME('JTF','JTF_IH_NON_PERSON_CONTACT');
458 FND_MESSAGE.SET_TOKEN('C_PARTY_ID', p_int_val_rec.contact_party_id);
459 FND_MSG_PUB.Add;
460 RETURN;
461 END IF;
462 IF p_int_val_rec.primary_party_id = n_Object_id THEN
463 IF s_Object_Type IN ('PERSON','ORGANIZATION') THEN
464 x_return_status := fnd_api.g_ret_sts_success;
465 RETURN;
466 ELSE
467 -- The Primary is not part of the relatioship
468 x_return_status := fnd_api.g_ret_sts_error;
469 FND_MESSAGE.SET_NAME('JTF','JTF_IH_INVALID_PRIMARY_ID');
470 FND_MESSAGE.SET_TOKEN('P_PARTY_ID', p_int_val_rec.primary_party_id);
471 FND_MSG_PUB.Add;
472 RETURN;
473 END IF;
474 ELSE
475 -- The Primary is not part of the relatioship
476 x_return_status := fnd_api.g_ret_sts_error;
477 FND_MESSAGE.SET_NAME('JTF','JTF_IH_PRIMARY_IS_NOT_REL');
478 FND_MESSAGE.SET_TOKEN('P_PARTY_ID', p_int_val_rec.primary_party_id);
479 FND_MESSAGE.SET_TOKEN('R_PARTY_ID', p_int_val_rec.contact_rel_party_id);
480 FND_MSG_PUB.Add;
481 RETURN;
482 END IF;
483 ELSE
484 -- The Contact is not part of the relationship
485 x_return_status := fnd_api.g_ret_sts_error;
486 FND_MESSAGE.SET_NAME('JTF','JTF_IH_CONTACT_IS_NOT_REL');
487 FND_MESSAGE.SET_TOKEN('C_PARTY_ID', p_int_val_rec.contact_party_id);
488 FND_MESSAGE.SET_TOKEN('R_PARTY_ID', p_int_val_rec.contact_rel_party_id);
489 FND_MSG_PUB.Add;
490 RETURN;
491 END IF;
492 END IF;
493 x_return_status := fnd_api.g_ret_sts_success;
494 RETURN;
495 END;
496
497 -- End Utilities Declaration
498 -- Begin Utilities Definition
499
500
501 --
502 -- HISTORY
503 --
504 -- AUTHOR DATE MODIFICATION DESCRIPTION
505 -- ------ ---- --------------------------
506 --
507 -- Jean Zhu 11-JAN-2000 INITIAL VERSION
508 -- James Baldo Jr. 02-MAY-2000 Modified to validate AMS campaigns
509 -- James Baldo Jr. 11-FEB-2001 Implementation fix for bugdb # 1637335 Bind Variable party_id
510 -- Igor Aleshin 20-MAY-2002 Added check for Touchpoint1_type and Touchpoint2_type
511 -- Igor Aleshin 08-NOV-2002 Added hint NOCOPY to IN/OUT, OUT parameters
512 -- Igor Aleshin 18-JUN-2003 Enh# 1846960 - REQUIRE CONTACT NAME OF ORGANISATION IN INTERACTION HISTORY
513 --
514
515 PROCEDURE Validate_Interaction_Record
516 ( p_api_name IN VARCHAR2,
517 p_int_val_rec IN OUT NOCOPY interaction_rec_type,
518 p_resp_appl_id IN NUMBER := NULL,
519 p_resp_id IN NUMBER := NULL,
520 x_return_status IN OUT NOCOPY VARCHAR2
521 )
522 IS
523 l_count NUMBER := 0;
524 v_party_id NUMBER;
525 BEGIN
526 -- local variable initialization to remove GSCC warnings
527 v_party_id := p_int_val_rec.party_id;
528
529 -- Initialize API return status to success
530 x_return_status := fnd_api.g_ret_sts_success;
531
532 --Enh# 1846960
533 --
534 -- Party_ID is required parameter for Interaction.
535 -- Check, that Party_Id in the Interaction_Res has passed values.
536 --
537 IF p_int_val_rec.party_id IS NULL THEN
538 x_return_status := fnd_api.g_ret_sts_error;
539 FND_MESSAGE.SET_NAME('JTF','JTF_IH_NO_PARTY');
540 FND_MESSAGE.SET_TOKEN('PARTY', p_int_val_rec.party_id);
541 FND_MSG_PUB.Add;
542 RETURN;
543 ELSE
544
545 IF( p_int_val_rec.primary_party_id = fnd_api.g_miss_num) THEN
546 p_int_val_rec.primary_party_id := NULL;
547 END IF;
548 IF( p_int_val_rec.contact_rel_party_id = fnd_api.g_miss_num) THEN
549 p_int_val_rec.contact_rel_party_id := NULL;
550 END IF;
551 IF( p_int_val_rec.contact_party_id = fnd_api.g_miss_num) THEN
552 p_int_val_rec.contact_party_id := NULL;
553 END IF;
554
555 --fix for bug 5006885 restoring touchpoint1_type EMPLOYEE
556 IF (p_int_val_rec.touchpoint1_type = 'PARTY') then
557 IF ((p_int_val_rec.primary_party_id IS NULL)
558 AND (p_int_val_rec.contact_rel_party_id IS NULL)
559 AND (p_int_val_rec.contact_party_id IS NULL)) THEN
560 Validate_SinglePartyID(p_int_val_rec, x_return_status);
561
562 ELSE
563 Validate_MultiPartyID(p_int_val_rec, x_return_status);
564 END IF;
565 ELSE
566 BEGIN
567 SELECT count(resource_id) into l_count
568 FROM jtf_rs_resource_extns
569 WHERE resource_id = p_int_val_rec.party_id;
570 IF (l_count <= 0) THEN
571 x_return_status := fnd_api.g_ret_sts_error;
572 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.resource_id),
573 'resource_id touchpoint1_type');
574 RETURN;
575 END IF;
576 END;
577 END IF;
578
579 -- If we have any errors in the Single or Multiple Party ID procedures,
580 -- then cancel procedure's process.
581 IF x_return_status = fnd_api.g_ret_sts_error THEN
582 RETURN;
583 END IF;
584 END IF;
585
586
587 IF ((p_int_val_rec.handler_id IS NOT NULL) AND (p_int_val_rec.handler_id <> fnd_api.g_miss_num)) THEN
588 BEGIN
589 SELECT count(application_id) into l_count
590 FROM fnd_application
591 WHERE application_id = p_int_val_rec.handler_id;
592 IF (l_count <= 0) THEN
593 x_return_status := fnd_api.g_ret_sts_error;
594 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.handler_id),
595 'Handler_id');
596 RETURN;
597 END IF;
598 END;
599 ELSE
600 x_return_status := fnd_api.g_ret_sts_error;
601 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.handler_id),
602 'handler_id');
603 RETURN;
604 END IF;
605 -- DBMS_OUTPUT.PUT_LINE('PAST Validate handler_id in JTF_IH_PUB.Validate_Interaction_Record');
606
607 l_count := 0;
608 IF ((p_int_val_rec.resource_id IS NOT NULL) AND (p_int_val_rec.resource_id <> fnd_api.g_miss_num)) THEN
609 IF ((p_int_val_rec.touchpoint2_type <> 'PARTY') AND (p_int_val_rec.touchpoint2_type IS NOT NULL)) then
610 BEGIN
611 SELECT count(resource_id) into l_count
612 FROM jtf_rs_resource_extns
613 WHERE resource_id = p_int_val_rec.resource_id;
614 IF (l_count <= 0) THEN
615 x_return_status := fnd_api.g_ret_sts_error;
616 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.resource_id),
617 'resource_id touchpoint2_type');
618 RETURN;
619 END IF;
620 END;
621 ELSE
622 BEGIN
623 SELECT count(party_id) into l_count
624 FROM hz_parties
625 WHERE party_id = p_int_val_rec.resource_id;
626 IF (l_count <= 0) THEN
627 x_return_status := fnd_api.g_ret_sts_error;
628 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.resource_id),
629 'party_id touchpoint2_type');
630 RETURN;
631 END IF;
632 END;
633 END IF;
634 ELSE
635 x_return_status := fnd_api.g_ret_sts_error;
636 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.resource_id),
637 'resource_id');
638 RETURN;
639 END IF;
640 -- DBMS_OUTPUT.PUT_LINE('PAST Validate resource_id in JTF_IH_PUB.Validate_Interaction_Record');
641
642 l_count := 0;
643 IF ((p_int_val_rec.outcome_id IS NOT NULL) AND (p_int_val_rec.outcome_id <> fnd_api.g_miss_num)) THEN
644 BEGIN
645 SELECT count(outcome_id) into l_count
646 FROM jtf_ih_outcomes_B
647 WHERE outcome_id = p_int_val_rec.outcome_id;
648 IF (l_count <= 0) THEN
649 x_return_status := fnd_api.g_ret_sts_error;
650 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.outcome_id),
651 'outcome_id');
652 RETURN;
653 END IF;
654 END;
655 END IF;
656 -- DBMS_OUTPUT.PUT_LINE('PAST Validate outcome_id in JTF_IH_PUB.Validate_Interaction_Record');
657
658 l_count := 0;
659 IF ((p_int_val_rec.result_id IS NOT NULL) AND (p_int_val_rec.result_id <> fnd_api.g_miss_num)) THEN
660 BEGIN
661 SELECT count(result_id) into l_count
662 FROM jtf_ih_results_B
663 WHERE result_id = p_int_val_rec.result_id;
664 IF (l_count <= 0) THEN
665 x_return_status := fnd_api.g_ret_sts_error;
666 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.result_id),
667 'result_id');
668 RETURN;
669 END IF;
670
671 END;
672 END IF;
673 -- DBMS_OUTPUT.PUT_LINE('PAST Validate result_id in JTF_IH_PUB.Validate_Interaction_Record');
674
675 l_count := 0;
676 IF ((p_int_val_rec.reason_id IS NOT NULL) AND (p_int_val_rec.reason_id <> fnd_api.g_miss_num)) THEN
677 BEGIN
678 SELECT count(reason_id) into l_count
679 FROM jtf_ih_reasons_B
680 WHERE reason_id = p_int_val_rec.reason_id;
681 IF (l_count <= 0) THEN
682 x_return_status := fnd_api.g_ret_sts_error;
683 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.reason_id),
684 'reason_id');
685 RETURN;
686 END IF;
687 END;
688 END IF;
689 -- DBMS_OUTPUT.PUT_LINE('PAST Validate reason_id in JTF_IH_PUB.Validate_Interaction_Record');
690
691 l_count := 0;
692 IF ((p_int_val_rec.script_id IS NOT NULL) AND (p_int_val_rec.script_id <> fnd_api.g_miss_num)) THEN
693 BEGIN
694 SELECT count(script_id) into l_count
695 FROM jtf_ih_scripts
696 WHERE script_id = p_int_val_rec.script_id;
697 IF (l_count <= 0) THEN
698 x_return_status := fnd_api.g_ret_sts_error;
699 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.script_id),
700 'Script_id');
701 RETURN;
702 END IF;
703 END;
704 END IF;
705 -- DBMS_OUTPUT.PUT_LINE('PAST Validate script_id in JTF_IH_PUB.Validate_Interaction_Record');
706
707 -- Add by Jean Zhu to validate the source_code_id
708 -- Validate AMS_Source_Code table primary key source_code_id for the following permutation:
709 -- source_code_id does have a value
710 -- source_code does not have a value
711 --
712 l_count := 0;
713 IF ((p_int_val_rec.source_code_id IS NOT NULL) AND
714 (p_int_val_rec.source_code_id <> fnd_api.g_miss_num)) AND
715 ((p_int_val_rec.source_code IS NULL) OR
716 (p_int_val_rec.source_code = fnd_api.g_miss_char)) THEN
717 BEGIN
718 SELECT
719 count(source_code_id) into l_count
720 FROM
721 ams_source_codes
722 WHERE
723 source_code_id = p_int_val_rec.source_code_id;
724 IF (l_count <= 0) THEN
725 x_return_status := fnd_api.g_ret_sts_error;
726 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.source_code_id), 'SOURCE_CODE_ID');
727 RETURN;
728 END IF;
729 END;
730 END IF;
731
732
733 -- Validate AMS_Source_Code table primary key source_code_id for the following permutation:
734 -- source_code_id does not have a value
735 -- source_code does have a value
736 --
737 l_count := 0;
738 IF ((p_int_val_rec.source_code IS NOT NULL) AND
739 (p_int_val_rec.source_code <> fnd_api.g_miss_char)) AND
740 ((p_int_val_rec.source_code_id IS NULL) OR
741 (p_int_val_rec.source_code_id = fnd_api.g_miss_num)) THEN
742 BEGIN
743 SELECT
744 count(source_code_id) into l_count
745 FROM
746 ams_source_codes
747 WHERE
748 source_code = p_int_val_rec.source_code;
749 IF (l_count <= 0) THEN
750 x_return_status := fnd_api.g_ret_sts_error;
751 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, p_int_val_rec.source_code, 'SOURCE_CODE');
752 RETURN;
753 END IF;
754 END;
755 END IF;
756
757 -- Validate AMS_Source_Code table primary key source_code_id for the following permutation:
758 -- source_code_id does have a value
759 -- source_code does have a value
760 --
761 l_count := 0;
762 IF ((p_int_val_rec.source_code IS NOT NULL) AND
763 (p_int_val_rec.source_code <> fnd_api.g_miss_char)) AND
764 ((p_int_val_rec.source_code_id IS NOT NULL) AND
765 (p_int_val_rec.source_code_id <> fnd_api.g_miss_num)) THEN
766 BEGIN
767 SELECT
768 count(source_code_id) into l_count
769 FROM
770 ams_source_codes
771 WHERE
772 source_code = p_int_val_rec.source_code AND
773 source_code_id = p_int_val_rec.source_code_id;
774 IF (l_count <= 0) THEN
775 x_return_status := fnd_api.g_ret_sts_error;
776 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, p_int_val_rec.source_code || ' ' || to_char(p_int_val_rec.source_code_id),
777 'SOURCE_CODE, SOURCE_CODE_ID');
778 RETURN;
779 END IF;
780 END;
781 END IF;
782
783 -- DBMS_OUTPUT.PUT_LINE('PAST Validate source_code_id in JTF_IH_PUB.Validate_Interaction_Record');
784
785 l_count := 0;
786 IF ((p_int_val_rec.parent_id IS NOT NULL) AND (p_int_val_rec.parent_id <> fnd_api.g_miss_num)) THEN
787 BEGIN
788 SELECT count(interaction_id) into l_count
789 FROM jtf_ih_interactions
790 WHERE interaction_id = p_int_val_rec.parent_id;
791 IF (l_count <= 0) THEN
792 x_return_status := fnd_api.g_ret_sts_error;
793 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_int_val_rec.parent_id),
794 'interaction_id');
795 RETURN;
796 END IF;
797 END;
798 END IF;
799 -- DBMS_OUTPUT.PUT_LINE('PAST Validate parent_id in JTF_IH_PUB.Validate_Interaction_Record');
800 /*
801 -- Validate descriptive flexfield values
802 ----------------------------------------
803 IF ((p_int_val_rec.attribute1 <> fnd_api.g_miss_char) OR
804 (p_int_val_rec.attribute2 <> fnd_api.g_miss_char) OR
805 (p_int_val_rec.attribute3 <> fnd_api.g_miss_char) OR
806 (p_int_val_rec.attribute4 <> fnd_api.g_miss_char) OR
807 (p_int_val_rec.attribute5 <> fnd_api.g_miss_char) OR
808 (p_int_val_rec.attribute6 <> fnd_api.g_miss_char) OR
809 (p_int_val_rec.attribute7 <> fnd_api.g_miss_char) OR
810 (p_int_val_rec.attribute8 <> fnd_api.g_miss_char) OR
811 (p_int_val_rec.attribute9 <> fnd_api.g_miss_char) OR
812 (p_int_val_rec.attribute10 <> fnd_api.g_miss_char) OR
813 (p_int_val_rec.attribute11 <> fnd_api.g_miss_char) OR
814 (p_int_val_rec.attribute12 <> fnd_api.g_miss_char) OR
815 (p_int_val_rec.attribute13 <> fnd_api.g_miss_char) OR
816 (p_int_val_rec.attribute14 <> fnd_api.g_miss_char) OR
817 (p_int_val_rec.attribute15 <> fnd_api.g_miss_char) OR
818 (p_int_val_rec.attribute_category <> fnd_api.g_miss_char)) THEN
819 jtf_ih_core_util_pvt.validate_desc_flex
820 ( p_api_name => p_api_name,
821 p_desc_flex_name => 'JTF_IH',
822 p_column_name1 => 'ATTRIBUTE1',
823 p_column_name2 => 'ATTRIBUTE2',
824 p_column_name3 => 'ATTRIBUTE3',
825 p_column_name4 => 'ATTRIBUTE4',
826 p_column_name5 => 'ATTRIBUTE5',
827 p_column_name6 => 'ATTRIBUTE6',
828 p_column_name7 => 'ATTRIBUTE7',
829 p_column_name8 => 'ATTRIBUTE8',
830 p_column_name9 => 'ATTRIBUTE9',
831 p_column_name10 => 'ATTRIBUTE10',
832 p_column_name11 => 'ATTRIBUTE11',
833 p_column_name12 => 'ATTRIBUTE12',
834 p_column_name13 => 'ATTRIBUTE13',
835 p_column_name14 => 'ATTRIBUTE14',
836 p_column_name15 => 'ATTRIBUTE15',
837 p_column_value1 => p_int_val_rec.attribute1,
838 p_column_value2 => p_int_val_rec.attribute2,
839 p_column_value3 => p_int_val_rec.attribute3,
840 p_column_value4 => p_int_val_rec.attribute4,
841 p_column_value5 => p_int_val_rec.attribute5,
842 p_column_value6 => p_int_val_rec.attribute6,
843 p_column_value7 => p_int_val_rec.attribute7,
844 p_column_value8 => p_int_val_rec.attribute8,
845 p_column_value9 => p_int_val_rec.attribute9,
846 p_column_value10 => p_int_val_rec.attribute10,
847 p_column_value11 => p_int_val_rec.attribute11,
848 p_column_value12 => p_int_val_rec.attribute12,
849 p_column_value13 => p_int_val_rec.attribute13,
850 p_column_value14 => p_int_val_rec.attribute14,
851 p_column_value15 => p_int_val_rec.attribute15,
852 p_context_value => p_int_val_rec.attribute_category,
853 p_resp_appl_id => p_resp_appl_id,
854 p_resp_id => p_resp_id,
855 x_return_status => x_return_status);
856 IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
857 RETURN;
858 END IF;
859 END IF;*/
860 -- DBMS_OUTPUT.PUT_LINE('PAST Validate flexfields in JTF_IH_PUB.Validate_Interaction_Record');
861 END Validate_Interaction_Record;
862
863
864 PROCEDURE Default_Interaction_Record (x_interaction IN OUT NOCOPY interaction_rec_type);
865
866 -- End Utilities Declaration
867 -- Begin Utilities Definition
868 PROCEDURE Default_Interaction_Record (x_interaction IN OUT NOCOPY interaction_rec_type)
869 IS
870 BEGIN
871 if (x_interaction.handler_id = fnd_api.g_miss_num)then
872 x_interaction.handler_id :=0;
873 end if;
874 if (x_interaction.script_id = fnd_api.g_miss_num)then
875 x_interaction.script_id :=0;
876 end if;
877
878 if (x_interaction.result_id = fnd_api.g_miss_num)then
879 x_interaction.result_id :=0;
880 end if;
881
882 if (x_interaction.reason_id = fnd_api.g_miss_num)then
883 x_interaction.reason_id :=0;
884 end if;
885
886 if (x_interaction.resource_id = fnd_api.g_miss_num)then
887 x_interaction.resource_id :=0;
888 end if;
889
890 if (x_interaction.party_id = fnd_api.g_miss_num)then
891 x_interaction.party_id :=0;
892 end if;
893
894 if (x_interaction.object_id = fnd_api.g_miss_num)then
895 x_interaction.object_id :=0;
896 end if;
897 if (x_interaction.source_code_id = fnd_api.g_miss_num)then
898 x_interaction.source_code_id :=0;
899 end if;
900 END;
901
902 PROCEDURE Default_activity_table (x_activities IN OUT NOCOPY activity_tbl_type);
903
904 -- End Utilities Declaration
905 -- Begin Utilities Definition
906 PROCEDURE Default_activity_table (x_activities IN OUT NOCOPY activity_tbl_type)
907 IS
908 BEGIN
909
910 for idx in 1 .. x_activities.count loop
911 if (x_activities(idx).task_id = fnd_api.g_miss_num)then
912 x_activities(idx).task_id :=0;
913 end if;
914 if (x_activities(idx).doc_id = fnd_api.g_miss_num)then
915 x_activities(idx).doc_id :=0;
916 end if;
917
918 if (x_activities(idx).action_item_id = fnd_api.g_miss_num)then
919 x_activities(idx).action_item_id :=0;
920 end if;
921
922 if (x_activities(idx).outcome_id = fnd_api.g_miss_num) then
923 x_activities(idx).outcome_id :=0;
924 end if;
925
926 if (x_activities(idx).result_id = fnd_api.g_miss_num)then
927 x_activities(idx).result_id :=0;
928 end if;
929 if (x_activities(idx).reason_id = fnd_api.g_miss_num)then
930 x_activities(idx).reason_id :=0;
931 end if;
932 if (x_activities(idx).object_id = fnd_api.g_miss_num)then
933 x_activities(idx).object_id :=0;
934 end if;
935 if (x_activities(idx).source_code_id = fnd_api.g_miss_num)then
936 x_activities(idx).source_code_id:=0;
937 end if;
938 end loop;
939 END;
940
941 --
942 -- HISTORY
943 --
944 -- AUTHOR DATE MODIFICATION DESCRIPTION
945 -- ------ ---- --------------------------
946 --
947 -- Jean Zhu 11-JAN-2000 INITIAL VERSION
948 -- James Baldo Jr. 06-MAR-2000 Implementation fix for Cust_Account_ID Bug
949 -- James Baldo Jr. 02-MAY-2000 Modified to validate AMS campaigns
950 -- James Baldo Jr. 27-JUL-2000 Implemenation fix for bugdb # 1340768
951 -- Igor Aleshin 03-JAN-2002 Implemenation fix for bugdb # 2167904
952 --
953
954 PROCEDURE Validate_Activity_Record
955 ( p_api_name IN VARCHAR2,
956 p_act_val_rec IN activity_rec_type,
957 p_resp_appl_id IN NUMBER := NULL,
958 p_resp_id IN NUMBER := NULL,
959 x_return_status IN OUT NOCOPY VARCHAR2
960 );
961
962 -- End Utilities Declaration
963 -- Begin Utilities Definition
964
965 PROCEDURE Validate_Activity_Record
966 ( p_api_name IN VARCHAR2,
967 p_act_val_rec IN activity_rec_type,
968 p_resp_appl_id IN NUMBER := NULL,
969 p_resp_id IN NUMBER := NULL,
970 x_return_status IN OUT NOCOPY VARCHAR2
971 )
972 IS
973 l_count NUMBER := 0;
974 BEGIN
975 -- Initialize API return status to success
976 x_return_status := fnd_api.g_ret_sts_success;
977
978 IF ((p_act_val_rec.interaction_id IS NOT NULL) AND (p_act_val_rec.interaction_id <> fnd_api.g_miss_num)) THEN
979 BEGIN
980 SELECT count(interaction_id) into l_count
981 FROM jtf_ih_interactions
982 WHERE interaction_id = p_act_val_rec.interaction_id;
983 IF (l_count <= 0) THEN
984 x_return_status := fnd_api.g_ret_sts_error;
985 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_act_val_rec.interaction_id),
986 'interaction_id');
987 RETURN;
988 END IF;
989 END;
990 ELSE
991 x_return_status := fnd_api.g_ret_sts_error;
992 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_act_val_rec.interaction_id),
993 'interaction_id');
994 RETURN;
995 END IF;
996 -- DBMS_OUTPUT.PUT_LINE('PAST Validate interaction_id in JTF_IH_PUB.Validate_Activity_Record');
997
998 l_count := 0;
999 IF ((p_act_val_rec.action_item_id IS NOT NULL) AND (p_act_val_rec.action_item_id <> fnd_api.g_miss_num)) THEN
1000 BEGIN
1001 SELECT count(action_item_id) into l_count
1002 FROM jtf_ih_action_items_b
1003 WHERE action_item_id = p_act_val_rec.action_item_id;
1004 IF (l_count <= 0) THEN
1005 x_return_status := fnd_api.g_ret_sts_error;
1006 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_act_val_rec.action_item_id),
1007 'action_item_id');
1008 RETURN;
1009 END IF;
1010 END;
1011 END IF;
1012 -- DBMS_OUTPUT.PUT_LINE('PAST Validate action_item_id in JTF_IH_PUB.Validate_Activity_Record');
1013
1014 l_count := 0;
1015 IF ((p_act_val_rec.outcome_id IS NOT NULL) AND (p_act_val_rec.outcome_id <> fnd_api.g_miss_num)) THEN
1016 BEGIN
1017 SELECT count(outcome_id) into l_count
1018 FROM jtf_ih_outcomes_B
1019 WHERE outcome_id = p_act_val_rec.outcome_id;
1020 IF (l_count <= 0) THEN
1021 x_return_status := fnd_api.g_ret_sts_error;
1022 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_act_val_rec.outcome_id),
1023 'outcome_id');
1024 RETURN;
1025 END IF;
1026
1027 END;
1028 END IF;
1029 -- DBMS_OUTPUT.PUT_LINE('PAST Validate outcome_id in JTF_IH_PUB.Validate_Activity_Record');
1030
1031
1032 l_count := 0;
1033 IF ((p_act_val_rec.action_id IS NOT NULL) AND (p_act_val_rec.action_id <> fnd_api.g_miss_num)) THEN
1034 BEGIN
1035 SELECT count(action_id) into l_count
1036 FROM jtf_ih_actions_b
1037 WHERE action_id = p_act_val_rec.action_id;
1038 IF (l_count <= 0) THEN
1039 x_return_status := fnd_api.g_ret_sts_error;
1040 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_act_val_rec.action_id),
1041 'action_id');
1042 RETURN;
1043 END IF;
1044 END;
1045 END IF;
1046 -- DBMS_OUTPUT.PUT_LINE('PAST Validate action_id in JTF_IH_PUB.Validate_Activity_Record');
1047 l_count := 0;
1048 IF ((p_act_val_rec.result_id IS NOT NULL) AND (p_act_val_rec.result_id <> fnd_api.g_miss_num)) THEN
1049 BEGIN
1050 SELECT count(result_id) into l_count
1051 FROM jtf_ih_results_B
1052 WHERE result_id = p_act_val_rec.result_id;
1053 IF (l_count <= 0) THEN
1054 x_return_status := fnd_api.g_ret_sts_error;
1055 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_act_val_rec.result_id),
1056 'result_id');
1057 RETURN;
1058 END IF;
1059
1060 END;
1061 END IF;
1062 -- DBMS_OUTPUT.PUT_LINE('PAST Validate result_id in JTF_IH_PUB.Validate_Activity_Record');
1063
1064 l_count := 0;
1065 IF ((p_act_val_rec.reason_id IS NOT NULL) AND (p_act_val_rec.reason_id <> fnd_api.g_miss_num)) THEN
1066 BEGIN
1067 SELECT count(reason_id) into l_count
1068 FROM jtf_ih_reasons_B
1069 WHERE reason_id = p_act_val_rec.reason_id;
1070 IF (l_count <= 0) THEN
1071 x_return_status := fnd_api.g_ret_sts_error;
1072 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_act_val_rec.reason_id),
1073 'reason_id');
1074 RETURN;
1075 END IF;
1076 END;
1077 END IF;
1078 -- DBMS_OUTPUT.PUT_LINE('PAST Validate reason_id in JTF_IH_PUB.Validate_Activity_Record');
1079
1080
1081
1082 -- Validate AMS_Source_Code table primary key source_code_id for the following permutation:
1083 -- source_code_id does have a value
1084 -- source_code does not have a value
1085 --
1086 l_count := 0;
1087 IF ((p_act_val_rec.source_code_id IS NOT NULL) AND
1088 (p_act_val_rec.source_code_id <> fnd_api.g_miss_num)) AND
1089 ((p_act_val_rec.source_code IS NULL) OR
1090 (p_act_val_rec.source_code = fnd_api.g_miss_char)) THEN
1091 BEGIN
1092 SELECT
1093 count(source_code_id) into l_count
1094 FROM
1095 ams_source_codes
1096 WHERE
1097 source_code_id = p_act_val_rec.source_code_id;
1098 IF (l_count <= 0) THEN
1099 x_return_status := fnd_api.g_ret_sts_error;
1100 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_act_val_rec.source_code_id), 'SOURCE_CODE_ID');
1101 RETURN;
1102 END IF;
1103 END;
1104 END IF;
1105
1106
1107 -- Validate AMS_Source_Code table primary key source_code_id for the following permutation:
1108 -- source_code_id does not have a value
1109 -- source_code does have a value
1110 --
1111 l_count := 0;
1112 IF ((p_act_val_rec.source_code IS NOT NULL) AND
1113 (p_act_val_rec.source_code <> fnd_api.g_miss_char)) AND
1114 ((p_act_val_rec.source_code_id IS NULL) OR
1115 (p_act_val_rec.source_code_id = fnd_api.g_miss_num)) THEN
1116 BEGIN
1117 SELECT
1118 count(source_code_id) into l_count
1119 FROM
1120 ams_source_codes
1121 WHERE
1122 source_code = p_act_val_rec.source_code;
1123 IF (l_count <= 0) THEN
1124 x_return_status := fnd_api.g_ret_sts_error;
1125 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, p_act_val_rec.source_code, 'SOURCE_CODE');
1126 RETURN;
1127 END IF;
1128 END;
1129 END IF;
1130
1131 -- Validate AMS_Source_Code table primary key source_code_id for the following permutation:
1132 -- source_code_id does have a value
1133 -- source_code does have a value
1134 --
1135 l_count := 0;
1136 IF ((p_act_val_rec.source_code IS NOT NULL) AND
1137 (p_act_val_rec.source_code <> fnd_api.g_miss_char)) AND
1138 ((p_act_val_rec.source_code_id IS NOT NULL) AND
1139 (p_act_val_rec.source_code_id <> fnd_api.g_miss_num)) THEN
1140 BEGIN
1141 SELECT
1142 count(source_code_id) into l_count
1143 FROM
1144 ams_source_codes
1145 WHERE
1146 source_code = p_act_val_rec.source_code AND
1147 source_code_id = p_act_val_rec.source_code_id;
1148 IF (l_count <= 0) THEN
1149 x_return_status := fnd_api.g_ret_sts_error;
1150 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, p_act_val_rec.source_code || ' ' || to_char(p_act_val_rec.source_code_id), 'SOURCE_CODE, SOURCE_CODE_ID');
1151 RETURN;
1152 END IF;
1153 END;
1154 END IF;
1155
1156
1157 -- DBMS_OUTPUT.PUT_LINE('PAST Validate source_code_id in JTF_IH_PUB.Validate_Activity_Record');
1158
1159 l_count := 0;
1160 IF ((p_act_val_rec.cust_account_id IS NOT NULL) AND (p_act_val_rec.cust_account_id <> fnd_api.g_miss_num)) THEN
1161 BEGIN
1162 SELECT count(cust_account_id) into l_count
1163 FROM hz_cust_accounts
1164 WHERE cust_account_id = p_act_val_rec.cust_account_id;
1165 IF (l_count <= 0) THEN
1166 x_return_status := fnd_api.g_ret_sts_error;
1167 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_act_val_rec.cust_account_id),
1168 'cust_account_id');
1169 RETURN;
1170 END IF;
1171 END;
1172 END IF;
1173 -- DBMS_OUTPUT.PUT_LINE('PAST Validate cust_account_id in JTF_IH_PUB.Validate_Activity_Record');
1174
1175 l_count := 0;
1176 IF ((p_act_val_rec.media_id IS NOT NULL) AND (p_act_val_rec.media_id <> fnd_api.g_miss_num)) THEN
1177 BEGIN
1178 SELECT count(media_id) into l_count
1179 FROM jtf_ih_media_items
1180 WHERE media_id = p_act_val_rec.media_id;
1181 IF (l_count <= 0) THEN
1182 x_return_status := fnd_api.g_ret_sts_error;
1183 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_act_val_rec.media_id),
1184 'media_id');
1185 RETURN;
1186 END IF;
1187 END;
1188 END IF;
1189 -- DBMS_OUTPUT.PUT_LINE('PAST Validate media_id in JTF_IH_PUB.Validate_Activity_Record');
1190
1191 END Validate_Activity_Record;
1192
1193
1194 PROCEDURE Validate_Activity_table
1195 ( p_api_name IN VARCHAR2,
1196 p_int_val_tbl IN activity_tbl_type,
1197 p_resp_appl_id IN NUMBER := NULL,
1198 p_resp_id IN NUMBER := NULL,
1199 x_return_status IN OUT NOCOPY VARCHAR2
1200 );
1201
1202 -- End Utilities Declaration
1203 -- Begin Utilities Definition
1204 PROCEDURE Validate_Activity_table
1205 ( p_api_name IN VARCHAR2,
1206 p_int_val_tbl IN activity_tbl_type,
1207 p_resp_appl_id IN NUMBER := NULL,
1208 p_resp_id IN NUMBER := NULL,
1209 x_return_status IN OUT NOCOPY VARCHAR2
1210 )
1211
1212 IS
1213 l_count NUMBER := 0;
1214
1215 BEGIN
1216 -- Initialize API return status to success
1217 x_return_status := fnd_api.g_ret_sts_success;
1218
1219 -- Modified to call Validate_Activity_Record
1220 for idx in 1 .. p_int_val_tbl.count loop
1221 Validate_Activity_Record(p_api_name, p_int_val_tbl(idx),p_resp_appl_id,p_resp_id,x_return_status);
1222 IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
1223 ---- DBMS_OUTPUT.PUT_LINE('Unsuccessful validation of a activity record in jtf_ih_pub.Validate_Activity_table');
1224 RETURN;
1225 END IF;
1226 END loop;
1227 END Validate_Activity_table;
1228 PROCEDURE Validate_Media_Item
1229 ( p_api_name IN VARCHAR2,
1230 p_media_item_val IN media_rec_type,
1231 p_resp_appl_id IN NUMBER := NULL,
1232 p_resp_id IN NUMBER := NULL,
1233 x_return_status IN OUT NOCOPY VARCHAR2
1234 );
1235
1236 --
1237 -- HISTORY
1238 --
1239 -- AUTHOR DATE MODIFICATION DESCRIPTION
1240 -- ------ ---- --------------------------
1241 --
1242 -- James Baldo 11-JAN-2000 INITIAL VERSION
1243 -- James Baldo Jr. 06-MAR-2000 Fix for Source_ID Bugdb 1317098 and 1316836
1244 --
1245 PROCEDURE Validate_Media_Item
1246 ( p_api_name IN VARCHAR2,
1247 p_media_item_val IN media_rec_type,
1248 p_resp_appl_id IN NUMBER := NULL,
1249 p_resp_id IN NUMBER := NULL,
1250 x_return_status IN OUT NOCOPY VARCHAR2
1251 )
1252
1253 IS
1254 l_count NUMBER := 0;
1255 BEGIN
1256 -- Initialize API return status to success
1257 x_return_status := fnd_api.g_ret_sts_success;
1258
1259
1260 -- IF ((p_media_item_val.source_id IS NOT NULL) AND (p_media_item_val.source_id <> fnd_api.g_miss_num)) THEN
1261 -- SELECT count(*) into l_count
1262 -- FROM jtf_ih_sources
1263 -- WHERE source_id = p_media_item_val.source_id;
1264 -- IF (l_count <= 0) THEN
1265 -- x_return_status := fnd_api.g_ret_sts_error;
1266 -- jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_media_item_val.source_id),
1267 -- 'Source_id');
1268 -- RETURN;
1269 -- END IF;
1270 -- ELSE
1271 -- x_return_status := fnd_api.g_ret_sts_error;
1272 -- jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_media_item_val.source_id),
1273 -- 'Source_id');
1274 -- RETURN;
1275 -- END IF;
1276
1277 IF ((p_media_item_val.media_item_type IS NULL) OR (p_media_item_val.media_item_type = fnd_api.g_miss_char)) THEN
1278 x_return_status := fnd_api.g_ret_sts_error;
1279 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, p_media_item_val.media_item_type,
1280 'media_item_type');
1281 RETURN;
1282 END IF;
1283
1284 IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
1285 RETURN;
1286 END IF;
1287 END Validate_Media_Item;
1288
1289 PROCEDURE Default_Media_Item_Record (x_media IN OUT NOCOPY media_rec_type);
1290
1291 -- End Utilities Declaration
1292 -- Begin Utilities Definition
1293 PROCEDURE Default_Media_Item_Record (x_media IN OUT NOCOPY media_rec_type)
1294 IS
1295 BEGIN
1296 if (x_media.source_id = fnd_api.g_miss_num)then
1297 x_media.source_id :=0;
1298 end if;
1299 if (x_media.source_item_id = fnd_api.g_miss_num)then
1300 x_media.source_item_id :=0;
1301 end if;
1302 END Default_Media_Item_Record;
1303
1304 -- Jean Zhu add Utility Validate_Mlcs_Record
1305 PROCEDURE Validate_Mlcs_Record
1306 ( p_api_name IN VARCHAR2,
1307 p_media_lc_rec IN media_lc_rec_type,
1308 p_resp_appl_id IN NUMBER := NULL,
1309 p_resp_id IN NUMBER := NULL,
1310 x_return_status IN OUT NOCOPY VARCHAR2
1311 );
1312
1313 -- End Utilities Declaration
1314 -- Begin Utilities Definition
1315 --
1316 -- HISTORY
1317 --
1318 -- AUTHOR DATE MODIFICATION DESCRIPTION
1319 -- ------ ---- --------------------------
1320 --
1321 -- James Baldo Jr. 11-JAN-2000 INITIAL VERSION
1322 -- James Baldo Jr. 01-JUN-2000 Fix for bugdb 1314786 - optional parameter for passing either
1323 -- milcs_type_id or milcs_code
1324 -- James Baldo Jr. 26-JUL-2000 Fix for bugdb 1314821 and 1342156
1325 --
1326 PROCEDURE Validate_Mlcs_Record
1327 ( p_api_name IN VARCHAR2,
1328 p_media_lc_rec IN media_lc_rec_type,
1329 p_resp_appl_id IN NUMBER := NULL,
1330 p_resp_id IN NUMBER := NULL,
1331 x_return_status IN OUT NOCOPY VARCHAR2
1332 )
1333
1334 IS
1335 l_count NUMBER := 0;
1336
1337 BEGIN
1338 -- Initialize API return status to success
1339 x_return_status := fnd_api.g_ret_sts_success;
1340 l_count := 0;
1341 -- DBMS_OUTPUT.PUT_LINE('Beginning validation of a media_lc record in jtf_ih_pub.Validate_Mlcs_Record');
1342
1343 IF (((p_media_lc_rec.milcs_type_id IS NULL) OR (p_media_lc_rec.milcs_type_id = fnd_api.g_miss_num))
1344 AND
1345 ((p_media_lc_rec.milcs_code IS NULL) OR (p_media_lc_rec.milcs_code = fnd_api.g_miss_char))) THEN
1346 x_return_status := fnd_api.g_ret_sts_error;
1347 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, 'NULL or Missing',
1348 'milcs_code');
1349 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, 'Null or Missing',
1350 'milcs_type_id');
1351 RETURN;
1352 END IF;
1353 IF ((p_media_lc_rec.milcs_type_id IS NOT NULL) AND (p_media_lc_rec.milcs_type_id <> fnd_api.g_miss_num)
1354 AND
1355 (p_media_lc_rec.milcs_code IS NOT NULL) AND (p_media_lc_rec.milcs_code <> fnd_api.g_miss_char)) THEN
1356 SELECT count(milcs_type_id) into l_count
1357 FROM jtf_ih_media_itm_lc_seg_tys
1358 WHERE milcs_type_id = p_media_lc_rec.milcs_type_id;
1359 IF (l_count <= 0) THEN
1360 x_return_status := fnd_api.g_ret_sts_error;
1361 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, p_media_lc_rec.milcs_type_id,
1362 'milcs_type_id');
1363 END IF;
1364 SELECT count(milcs_type_id) into l_count
1365 FROM jtf_ih_media_itm_lc_seg_tys
1366 WHERE milcs_code = p_media_lc_rec.milcs_code;
1367 IF (l_count <= 0) THEN
1368 x_return_status := fnd_api.g_ret_sts_error;
1369 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, p_media_lc_rec.milcs_code,
1370 'milcs_code');
1371 END IF;
1372 IF x_return_status = fnd_api.g_ret_sts_error THEN
1373 RETURN;
1374 END IF;
1375 END IF;
1376 IF (((p_media_lc_rec.milcs_type_id IS NOT NULL) AND (p_media_lc_rec.milcs_type_id <> fnd_api.g_miss_num)) AND
1377 ((p_media_lc_rec.milcs_code IS NULL) OR (p_media_lc_rec.milcs_code = fnd_api.g_miss_char))) THEN
1378 SELECT count(milcs_type_id) into l_count
1379 FROM jtf_ih_media_itm_lc_seg_tys
1380 WHERE milcs_type_id = p_media_lc_rec.milcs_type_id;
1381 IF (l_count <= 0) THEN
1382 x_return_status := fnd_api.g_ret_sts_error;
1383 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, p_media_lc_rec.milcs_type_id,
1384 'milcs_type_id');
1385 RETURN;
1386 END IF;
1387 END IF;
1388 IF ((p_media_lc_rec.milcs_code IS NOT NULL) AND (p_media_lc_rec.milcs_code <> fnd_api.g_miss_char)) THEN
1389 SELECT count(milcs_type_id) into l_count
1390 FROM jtf_ih_media_itm_lc_seg_tys
1391 WHERE milcs_code = p_media_lc_rec.milcs_code;
1392 IF (l_count <= 0) THEN
1393 x_return_status := fnd_api.g_ret_sts_error;
1394 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, p_media_lc_rec.milcs_code,
1395 'milcs_code');
1396 RETURN;
1397 END IF;
1398 END IF;
1399 l_count := 0;
1400 IF ((p_media_lc_rec.handler_id IS NOT NULL) AND (p_media_lc_rec.handler_id <> fnd_api.g_miss_num)) THEN
1401 SELECT count(application_id) into l_count
1402 FROM fnd_application
1403 WHERE application_id = p_media_lc_rec.handler_id;
1404 IF (l_count <= 0) THEN
1405 x_return_status := fnd_api.g_ret_sts_error;
1406 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, p_media_lc_rec.handler_id,
1407 'handler_id');
1408 RETURN;
1409 END IF;
1410 ELSE
1411 x_return_status := fnd_api.g_ret_sts_error;
1412 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_media_lc_rec.handler_id),
1413 'handler_id');
1414 RETURN;
1415 END IF;
1416 l_count := 0;
1417 IF ((p_media_lc_rec.media_id IS NOT NULL) AND (p_media_lc_rec.media_id <> fnd_api.g_miss_num)) THEN
1418 SELECT count(media_id) into l_count
1419 FROM jtf_ih_media_items
1420 WHERE media_id = p_media_lc_rec.media_id;
1421 IF (l_count <= 0) THEN
1422 x_return_status := fnd_api.g_ret_sts_error;
1423 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_media_lc_rec.media_id),
1424 'media_id');
1425 RETURN;
1426 END IF;
1427 /* ELSE
1428 x_return_status := fnd_api.g_ret_sts_error;
1429 jtf_ih_core_util_pvt.add_invalid_argument_msg(p_api_name, to_char(p_media_lc_rec.handler_id),
1430 'handler_id');
1431 RETURN;*/
1432 END IF;
1433 IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
1434 RETURN;
1435 END IF;
1436 END Validate_Mlcs_Record;
1437
1438 PROCEDURE Validate_Mlcs_table
1439 ( p_api_name IN VARCHAR2,
1440 p_mlcs_val_tab IN mlcs_tbl_type,
1441 p_resp_appl_id IN NUMBER := NULL,
1442 p_resp_id IN NUMBER := NULL,
1443 x_return_status IN OUT NOCOPY VARCHAR2
1444 );
1445
1446 -- End Utilities Declaration
1447 -- Begin Utilities Definition
1448 PROCEDURE Validate_Mlcs_table
1449 ( p_api_name IN VARCHAR2,
1450 p_mlcs_val_tab IN mlcs_tbl_type,
1451 p_resp_appl_id IN NUMBER := NULL,
1452 p_resp_id IN NUMBER := NULL,
1453 x_return_status IN OUT NOCOPY VARCHAR2
1454 )
1455
1456 IS
1457 l_count NUMBER := 0;
1458 BEGIN
1459 -- Initialize API return status to success
1460 x_return_status := fnd_api.g_ret_sts_success;
1461 l_count := 0;
1462
1463 for idx in 1 .. p_mlcs_val_tab.count loop
1464 Validate_Mlcs_Record ( p_api_name, p_mlcs_val_tab(idx), p_resp_appl_id, p_resp_id, x_return_status);
1465 END loop;
1466
1467 IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
1468 -- DBMS_OUTPUT.PUT_LINE('Unsuccessful validation of a media_lc record in jtf_ih_pub.Validate_Mlcs_table');
1469 RETURN;
1470 END IF;
1471 END Validate_Mlcs_table;
1472
1473 PROCEDURE Default_Mlcs_table (x_mlcs IN OUT NOCOPY mlcs_tbl_type);
1474
1475 -- End Utilities Declaration
1476 -- Begin Utilities Definition
1477 PROCEDURE Default_Mlcs_table (x_mlcs IN OUT NOCOPY mlcs_tbl_type)
1478 IS
1479 BEGIN
1480 for idx in 1 .. x_mlcs.count loop
1481 if (x_mlcs(idx).type_id = fnd_api.g_miss_num)then
1482 x_mlcs(idx).type_id :=0;
1483 end if;
1484 if (x_mlcs(idx).handler_id = fnd_api.g_miss_num)then
1485 x_mlcs(idx).handler_id :=0;
1486 end if;
1487 end loop;
1488 END Default_Mlcs_table;
1489
1490
1491 -- Bug# 2817083
1492 -- HISTORY
1493 --
1494 -- AUTHOR DATE MODIFICATION DESCRIPTION
1495 -- ------ ---- --------------------------
1496 -- Igor Aleshin 02/24/2003 Created
1497 --
1498 FUNCTION Get_Activity_ID(n_activity_id NUMBER) RETURN NUMBER
1499 IS
1500 n_Return NUMBER;
1501 n_Dummy NUMBER;
1502 BEGIN
1503 -- if b_Ignore_Pass is 'Y' then always generate a new ID
1504 IF (n_activity_id IS NOT NULL) AND (n_activity_id <> fnd_api.g_miss_num) THEN
1505 -- Check activity value in the JTF_IH_ACTIVITIES table.
1506 BEGIN
1507 SELECT activity_id INTO n_Return FROM jtf_ih_activities WHERE activity_id = n_activity_id;
1508 -- If value is presend then return an error (invalid activity_id)
1509 IF n_Return IS NOT NULL THEN
1510 FND_MESSAGE.SET_NAME('JTF','JTF_IH_API_INVALID_ACTIV_ID');
1511 fnd_message.set_token('VALUE', n_activity_id);
1512 FND_MSG_PUB.Add;
1513 RETURN -1;
1514 END IF;
1515 EXCEPTION
1516 -- If value is not presend then use it for currect activity.
1517 WHEN NO_DATA_FOUND THEN
1518 RETURN n_activity_id;
1519 END;
1520 ELSIF ((n_activity_id IS NULL) OR (n_activity_id = fnd_api.g_miss_num)) THEN
1521 LOOP
1522 SELECT jtf_ih_activities_s1.NEXTVAL INTO n_Return FROM dual;
1523 BEGIN
1524 SELECT activity_id INTO n_Dummy FROM jtf_ih_activities WHERE activity_id = n_Return;
1525 EXCEPTION
1526 WHEN NO_DATA_FOUND THEN
1527 EXIT;
1528 END;
1529 END LOOP;
1530 RETURN n_Return;
1531 -- If value is not present then accept it for current record.
1532 END IF;
1533 END;
1534
1535
1536 -- HISTORY
1537 --
1538 -- AUTHOR DATE MODIFICATION DESCRIPTION
1539 -- ------ ---- --------------------------
1540 -- Igor Aleshin 02/24/2003 Created
1541 --
1542 FUNCTION Get_Interaction_ID(n_interaction_id NUMBER) RETURN NUMBER
1543 IS
1544 n_Return NUMBER;
1545 n_Dummy NUMBER;
1546 BEGIN
1547 IF (n_interaction_id IS NOT NULL) AND (n_interaction_id <> fnd_api.g_miss_num) THEN
1548 -- Check activity value in the JTF_IH_ACTIVITIES table.
1549 BEGIN
1550 SELECT interaction_id INTO n_Return FROM jtf_ih_interactions WHERE interaction_id = n_interaction_id;
1551 -- If value is presend then return an error (invalid activity_id)
1552 IF n_Return IS NOT NULL THEN
1553 FND_MESSAGE.SET_NAME('JTF','JTF_IH_API_INVALID_INTER_ID');
1554 FND_MESSAGE.SET_TOKEN('VALUE', n_interaction_id);
1555 FND_MSG_PUB.Add;
1556 RETURN -1;
1557 END IF;
1558 EXCEPTION
1559 -- If value is not presend then use it for currect activity.
1560 WHEN NO_DATA_FOUND THEN
1561 RETURN n_interaction_id;
1562 END;
1563 ELSIF ((n_interaction_id IS NULL) OR (n_interaction_id = fnd_api.g_miss_num)) THEN
1564 LOOP
1565 SELECT jtf_ih_interactions_s1.NEXTVAL INTO n_Return FROM dual;
1566 BEGIN
1567 SELECT interaction_id INTO n_Dummy FROM jtf_ih_interactions WHERE interaction_id = n_Return;
1568 EXCEPTION
1569 WHEN NO_DATA_FOUND THEN
1570 EXIT;
1571 END;
1572 END LOOP;
1573 RETURN n_Return;
1574 -- If value is not present then accept it for current record.
1575 END IF;
1576 END;
1577
1578 -- HISTORY
1579 --
1580 -- AUTHOR DATE MODIFICATION DESCRIPTION
1581 -- ------ ---- --------------------------
1582 -- Igor Aleshin 02/24/2003 Created
1583 --
1584 FUNCTION Get_Media_ID(n_media_id NUMBER) RETURN NUMBER
1585 IS
1586 n_Return NUMBER;
1587 n_Dummy NUMBER;
1588 BEGIN
1589 IF (n_media_id IS NOT NULL) AND (n_media_id <> fnd_api.g_miss_num) THEN
1590 -- Check activity value in the JTF_IH_ACTIVITIES table.
1591 BEGIN
1592 SELECT media_id INTO n_Return FROM jtf_ih_media_items WHERE media_id = n_media_id;
1593 -- If value is presend then return an error (invalid activity_id)
1594 IF n_Return IS NOT NULL THEN
1595 FND_MESSAGE.SET_NAME('JTF','JTF_IH_API_INVALID_MEDIA_ID');
1596 FND_MESSAGE.SET_TOKEN('VALUE', n_media_id);
1597 FND_MSG_PUB.Add;
1598 RETURN -1;
1599 END IF;
1600 EXCEPTION
1601 -- If value is not presend then use it for currect activity.
1602 WHEN NO_DATA_FOUND THEN
1603 RETURN n_media_id;
1604 END;
1605 ELSIF ((n_media_id IS NULL) OR (n_media_id = fnd_api.g_miss_num)) THEN
1606 LOOP
1607 SELECT jtf_ih_media_items_s1.NEXTVAL INTO n_Return FROM dual;
1608 BEGIN
1609 SELECT n_media_id INTO n_Dummy FROM jtf_ih_media_items WHERE media_id = n_Return;
1610 EXCEPTION
1611 WHEN NO_DATA_FOUND THEN
1612 EXIT;
1613 END;
1614 END LOOP;
1615 RETURN n_Return;
1616 -- If value is not present then accept it for current record.
1617 END IF;
1618 END;
1619
1620
1621 -- HISTORY
1622 --
1623 -- AUTHOR DATE MODIFICATION DESCRIPTION
1624 -- ------ ---- --------------------------
1625 -- Igor Aleshin 02/24/2003 Created
1626 --
1627 FUNCTION GET_MILCS_ID(n_milcs_id NUMBER) RETURN NUMBER
1628 IS
1629 n_Return NUMBER;
1630 n_Dummy NUMBER;
1631 BEGIN
1632 IF (n_milcs_id IS NOT NULL) AND (n_milcs_id <> fnd_api.g_miss_num) THEN
1633 -- Check activity value in the JTF_IH_ACTIVITIES table.
1634 BEGIN
1635 SELECT milcs_id INTO n_Return FROM jtf_ih_media_item_lc_segs WHERE milcs_id = n_milcs_id;
1636 -- If value is presend then return an error (invalid activity_id)
1637 IF n_Return IS NOT NULL THEN
1638 FND_MESSAGE.SET_NAME('JTF','JTF_IH_API_INVALID_MILCS_ID');
1639 FND_MESSAGE.SET_TOKEN('VALUE', n_milcs_id);
1640 FND_MSG_PUB.Add;
1641 RETURN -1;
1642 END IF;
1643 EXCEPTION
1644 -- If value is not presend then use it for currect activity.
1645 WHEN NO_DATA_FOUND THEN
1646 RETURN n_milcs_id;
1647 END;
1648 ELSIF ((n_milcs_id IS NULL) OR (n_milcs_id = fnd_api.g_miss_num)) THEN
1649 LOOP
1650 SELECT jtf_ih_media_item_lc_seg_s1.NEXTVAL INTO n_Return FROM dual;
1651 BEGIN
1652 SELECT n_milcs_id INTO n_Dummy FROM jtf_ih_media_item_lc_segs WHERE milcs_id = n_Return;
1653 EXCEPTION
1654 WHEN NO_DATA_FOUND THEN
1655 EXIT;
1656 END;
1657 END LOOP;
1658 RETURN n_Return;
1659 -- If value is not present then accept it for current record.
1660 END IF;
1661 END;
1662
1663 --
1664 -- old version
1665 --
1666 --
1667 -- HISTORY
1668 --
1669 -- AUTHOR DATE MODIFICATION DESCRIPTION
1670 -- ------ ---- --------------------------
1671 --
1672 -- INITIAL VERSION
1673 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
1674 -- James Baldo Jr. 09-JUN-2000 Modified by for bug# 1326022
1675 -- Igor Aleshin 18-APR-2001 Fix for bugdb 2323210 - 1157.6RI:API
1676 -- ERR:JTF_IH_PUB.CLOSE_INTERACTION:WHEN DISAGREE WITH OKC IN IBE
1677 -- Igor Aleshin 20-MAY-2002 Changed piece of code for duration logic
1678 -- Igor Aleshin 24-FEB-2003 Fixed bug# 2817083 - Error loggin interactions
1679 -- Igor Aleshin 29-MAY-2003 Enh# 2940473 - IH Bulk API Changes
1680 -- Igor Aleshin 18-JUN-2003 Enh# 1846960 - REQUIRE CONTACT NAME OF
1681 -- ORGANISATION IN INTERACTION HISTORY
1682 -- Igor Aleshin 01-JUL-2003 Added to missed columns to insert statments
1683 -- Igor Aleshin 03-JUL-2003 Enh# 3022511 - Add a column to the
1684 -- jtf_ih_media_items table
1685 -- vekrishn 27-JUL-2004 Perf Fix for literal Usage
1686 --
1687
1688 PROCEDURE Create_MediaItem
1689 (
1690 p_api_version IN NUMBER,
1691 p_init_msg_list IN VARCHAR2, --DEFAULT FND_API.G_FALSE,
1692 p_commit IN VARCHAR2, --DEFAULT FND_API.G_FALSE,
1693 p_resp_appl_id IN NUMBER DEFAULT NULL,
1694 p_resp_id IN NUMBER DEFAULT NULL,
1695 p_user_id IN NUMBER,
1696 p_login_id IN NUMBER DEFAULT NULL,
1697 x_return_status OUT NOCOPY VARCHAR2,
1698 x_msg_count OUT NOCOPY NUMBER,
1699 x_msg_data OUT NOCOPY VARCHAR2,
1700 p_media IN media_rec_type,
1701 p_mlcs IN mlcs_tbl_type
1702 ) AS
1703 l_api_name CONSTANT VARCHAR2(30) := 'Create_MediaItem';
1704 l_api_version CONSTANT NUMBER := 1.0;
1705 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
1706 l_return_status VARCHAR2(1);
1707 l_int_val_rec media_rec_type;
1708 l_milcs_id NUMBER;
1709 l_mlcs mlcs_tbl_type;
1710
1711 --Bug# 2323210
1712 l_start_date_time DATE;
1713 l_end_date_time DATE;
1714 l_duration NUMBER;
1715
1716 -- Perf fix for literal Usage
1717 l_duration_perf NUMBER;
1718 l_active_perf VARCHAR2(1);
1719 l_ao_update_pending_perf VARCHAR2(1);
1720 l_soft_closed_perf VARCHAR2(1);
1721
1722 BEGIN
1723
1724 -- local variables initialization to remove GSCC warnings
1725 l_int_val_rec := p_media;
1726 l_mlcs := p_mlcs;
1727
1728 -- Perf variables
1729 l_duration_perf := 0;
1730 l_active_perf := 'N';
1731 l_ao_update_pending_perf := 'N';
1732 l_soft_closed_perf := 'N';
1733
1734 -- Standard start of API savepoint
1735 SAVEPOINT create_media_pub;
1736
1737 -- Standard call to check for call compatibility
1738 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
1739 l_api_name, g_pkg_name) THEN
1740 RAISE fnd_api.g_exc_unexpected_error;
1741 END IF;
1742
1743 -- Initialize message list if p_init_msg_list is set to TRUE
1744 IF fnd_api.to_boolean(p_init_msg_list) THEN
1745 fnd_msg_pub.initialize;
1746 END IF;
1747
1748 -- Initialize API return status to success
1749 x_return_status := fnd_api.g_ret_sts_success;
1750
1751 --
1752 -- Validate user and login session IDs
1753 --
1754 IF (p_user_id IS NULL) THEN
1755 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
1756 RAISE fnd_api.g_exc_error;
1757 ELSE
1758 jtf_ih_core_util_pvt.validate_who_info
1759 ( p_api_name => l_api_name_full,
1760 p_parameter_name_usr => 'p_user_id',
1761 p_parameter_name_log => 'p_login_id',
1762 p_user_id => p_user_id,
1763 p_login_id => p_login_id,
1764 x_return_status => l_return_status );
1765 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1766 RAISE fnd_api.g_exc_error;
1767 END IF;
1768 END IF;
1769
1770 Validate_Media_Item
1771 ( p_api_name => l_api_name_full,
1772 p_media_item_val => p_media,
1773 p_resp_appl_id => p_resp_appl_id,
1774 p_resp_id => p_resp_id,
1775 x_return_status => l_return_status
1776 );
1777 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1778 RAISE fnd_api.g_exc_error;
1779 END IF;
1780 Default_Media_Item_Record(l_int_val_rec);
1781
1782 IF (p_media.end_date_time <> fnd_api.g_miss_date) AND
1783 (p_media.end_date_time IS NOT NULL) THEN
1784 l_int_val_rec.end_date_time := p_media.end_date_time;
1785 ELSE
1786 l_int_val_rec.end_date_time := SYSDATE;
1787 END IF;
1788
1789 IF (p_media.start_date_time <> fnd_api.g_miss_date) AND
1790 (p_media.start_date_time IS NOT NULL) THEN
1791 l_int_val_rec.start_date_time := p_media.start_date_time;
1792 ELSE
1793 l_int_val_rec.start_date_time := SYSDATE;
1794 END IF;
1795
1796 Validate_StartEnd_Date( p_api_name => l_api_name_full,
1797 p_start_date_time => l_int_val_rec.start_date_time,
1798 p_end_date_time => l_int_val_rec.end_date_time,
1799 x_return_status => l_return_status);
1800 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1801 RAISE fnd_api.g_exc_error;
1802 END IF;
1803
1804 IF (p_media.source_item_create_date_time <> fnd_api.g_miss_date) AND
1805 (p_media.source_item_create_date_time IS NOT NULL) THEN
1806 l_int_val_rec.source_item_create_date_time := p_media.source_item_create_date_time;
1807 ELSE
1808 l_int_val_rec.source_item_create_date_time := NULL;
1809 END IF;
1810
1811 IF (p_media.duration <> fnd_api.g_miss_num) AND
1812 (p_media.duration IS NOT NULL) then
1813 l_int_val_rec.duration := p_media.duration;
1814 ELSE
1815 l_int_val_rec.duration := ROUND((l_int_val_rec.end_date_time - l_int_val_rec.start_date_time)*24*60*60);
1816 END IF;
1817
1818 IF p_media.address = fnd_api.g_miss_char THEN
1819 IF l_int_val_rec.direction = 'INBOUND' AND l_int_val_rec.media_item_type like 'TELE%' THEN
1820 l_int_val_rec.address := l_int_val_rec.ani;
1821 ELSE
1822 l_int_val_rec.address := NULL;
1823 END IF;
1824 ELSE
1825 l_int_val_rec.address := p_media.address;
1826 END IF;
1827
1828 --IF ((p_media.media_id IS NULL) OR (p_media.media_id = fnd_api.g_miss_num)) THEN
1829 -- SELECT jtf_ih_media_items_s1.NEXTVAL INTO l_int_val_rec.media_id FROM dual;
1830 --END IF;
1831 -- Bug# 2817083
1832 l_int_val_rec.media_id := Get_Media_Id(p_media.media_id);
1833 IF l_int_val_rec.media_id = -1 THEN
1834 RAISE fnd_api.g_exc_error;
1835 END IF;
1836
1837 -- Perf fix for literal Usage
1838 insert into jtf_ih_Media_Items
1839 (
1840 DURATION,
1841 DIRECTION,
1842 END_DATE_TIME,
1843 SOURCE_ITEM_CREATE_DATE_TIME,
1844 INTERACTION_PERFORMED,
1845 SOURCE_ITEM_ID,
1846 START_DATE_TIME,
1847 MEDIA_ID,
1848 SOURCE_ID,
1849 MEDIA_ITEM_TYPE,
1850 CREATED_BY,
1851 CREATION_DATE,
1852 LAST_UPDATED_BY,
1853 LAST_UPDATE_DATE,
1854 LAST_UPDATE_LOGIN,
1855 MEDIA_ITEM_REF,
1856 MEDIA_DATA,
1857 ACTIVE,
1858 SERVER_GROUP_ID,
1859 DNIS,
1860 ANI,
1861 CLASSIFICATION,
1862 BULK_WRITER_CODE,
1863 BULK_BATCH_TYPE,
1864 BULK_BATCH_ID,
1865 BULK_INTERACTION_ID,
1866 media_abandon_flag,
1867 media_transferred_flag,
1868 address,
1869 ao_update_pending,
1870 soft_closed
1871 ) values (
1872 decode( l_int_val_rec.duration, fnd_api.g_miss_num, l_duration_perf, l_int_val_rec.duration),
1873 decode( l_int_val_rec.direction, fnd_api.g_miss_char, null, l_int_val_rec.direction),
1874 l_int_val_rec.end_date_time,
1875 l_int_val_rec.source_item_create_date_time,
1876 decode( l_int_val_rec.interaction_performed, fnd_api.g_miss_char, null, l_int_val_rec.interaction_performed),
1877 decode( l_int_val_rec.source_item_id, fnd_api.g_miss_num, null, l_int_val_rec.source_item_id),
1878 -- Bug # 2184405
1879 l_int_val_rec.start_date_time,
1880 l_int_val_rec.media_id,
1881 decode( l_int_val_rec.source_id, fnd_api.g_miss_num, null, l_int_val_rec.source_id),
1882 decode( l_int_val_rec.media_item_type, fnd_api.g_miss_char, null, l_int_val_rec.media_item_type),
1883 p_user_id,
1884 SysDate,
1885 p_user_id,
1886 SysDate,
1887 p_login_id,
1888 decode( l_int_val_rec.media_item_ref, fnd_api.g_miss_char, null, l_int_val_rec.media_item_ref),
1889 decode( l_int_val_rec.media_data, fnd_api.g_miss_char, null, l_int_val_rec.media_data),
1890 l_active_perf,
1891 decode( l_int_val_rec.server_group_id, fnd_api.g_miss_num, null, l_int_val_rec.server_group_id),
1892 decode( l_int_val_rec.dnis, fnd_api.g_miss_char, null, l_int_val_rec.dnis),
1893 decode( l_int_val_rec.ani, fnd_api.g_miss_char, null, l_int_val_rec.ani),
1894 decode( l_int_val_rec.classification, fnd_api.g_miss_char, null, l_int_val_rec.classification),
1895 decode( l_int_val_rec.bulk_writer_code, fnd_api.g_miss_char, null, l_int_val_rec.bulk_writer_code),
1896 decode( l_int_val_rec.bulk_batch_type, fnd_api.g_miss_char, null, l_int_val_rec.bulk_batch_type),
1897 decode( l_int_val_rec.bulk_batch_id, fnd_api.g_miss_num, null, l_int_val_rec.bulk_batch_id),
1898 decode( l_int_val_rec.bulk_interaction_id, fnd_api.g_miss_num, null, l_int_val_rec.bulk_interaction_id),
1899 decode( l_int_val_rec.media_abandon_flag, fnd_api.g_miss_char, null, l_int_val_rec.media_abandon_flag),
1900 decode( l_int_val_rec.media_transferred_flag, fnd_api.g_miss_char, null, l_int_val_rec.media_transferred_flag),
1901 decode( l_int_val_rec.address, fnd_api.g_miss_char, null, l_int_val_rec.address),
1902 l_ao_update_pending_perf,
1903 l_soft_closed_perf
1904 );
1905
1906 -- Added by IAleshin 20-MAY-2002
1907 -- Fill new Media_ID for child MediaLifeCycle
1908 for idx in 1 .. l_mlcs.count loop
1909 l_mlcs(idx).media_id := l_int_val_rec.media_id;
1910 end loop;
1911
1912 Validate_Mlcs_table
1913 ( p_api_name => l_api_name_full,
1914 p_mlcs_val_tab => l_mlcs,
1915 p_resp_appl_id => p_resp_appl_id,
1916 p_resp_id => p_resp_id,
1917 x_return_status => l_return_status
1918 );
1919 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1920 RAISE fnd_api.g_exc_error;
1921 END IF;
1922
1923 Default_Mlcs_table(l_mlcs);
1924
1925 for idx in 1 .. p_mlcs.count loop
1926 IF (p_mlcs(idx).end_date_time <> fnd_api.g_miss_date) AND
1927 (p_mlcs(idx).end_date_time IS NOT NULL) THEN
1928 l_mlcs(idx).end_date_time := p_mlcs(idx).end_date_time;
1929 ELSE
1930 l_mlcs(idx).end_date_time := SYSDATE;
1931 END IF;
1932
1933 IF (p_mlcs(idx).start_date_time <> fnd_api.g_miss_date) AND
1934 (p_mlcs(idx).start_date_time IS NOT NULL) THEN
1935 l_mlcs(idx).start_date_time := p_mlcs(idx).start_date_time;
1936 ELSE
1937 l_mlcs(idx).start_date_time := SYSDATE;
1938 END IF;
1939
1940 Validate_StartEnd_Date( p_api_name => l_api_name_full,
1941 p_start_date_time => l_mlcs(idx).start_date_time,
1942 p_end_date_time => l_mlcs(idx).end_date_time,
1943 x_return_status => l_return_status
1944 );
1945 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1946 RAISE fnd_api.g_exc_error;
1947 END IF;
1948
1949 IF (p_mlcs(idx).duration <> fnd_api.g_miss_num) AND
1950 (p_mlcs(idx).duration IS NOT NULL) THEN
1951 l_mlcs(idx).duration := p_mlcs(idx).duration;
1952 ELSE
1953 l_mlcs(idx).duration := ROUND((l_mlcs(idx).end_date_time - l_mlcs(idx).start_date_time)*24*60*60);
1954 END IF;
1955
1956 --IF ((p_mlcs(idx).milcs_id IS NULL) OR (p_mlcs(idx).milcs_id = fnd_api.g_miss_num)) THEN
1957 -- SELECT jtf_ih_media_item_lc_seg_s1.NEXTVAL INTO l_mlcs(idx).milcs_id FROM dual;
1958 --END IF;
1959
1960 -- Bug# 2817083
1961 l_mlcs(idx).milcs_id := Get_milcs_id(p_mlcs(idx).milcs_id);
1962 IF l_mlcs(idx).milcs_id = -1 THEN
1963 RAISE fnd_api.g_exc_error;
1964 END IF;
1965
1966 -- Perf fix for literal Usage
1967 insert into jtf_ih_media_item_lc_segs
1968 (
1969 START_DATE_TIME,
1970 TYPE_TYPE,
1971 TYPE_ID,
1972 DURATION,
1973 END_DATE_TIME,
1974 MILCS_ID,
1975 MILCS_TYPE_ID,
1976 MEDIA_ID,
1977 HANDLER_ID,
1978 CREATED_BY,
1979 CREATION_DATE,
1980 LAST_UPDATED_BY,
1981 LAST_UPDATE_DATE,
1982 LAST_UPDATE_LOGIN,
1983 ACTIVE,
1984 BULK_WRITER_CODE,
1985 BULK_BATCH_TYPE,
1986 BULK_BATCH_ID,
1987 BULK_INTERACTION_ID,
1988 RESOURCE_ID
1989 )
1990 values
1991 (
1992 l_mlcs(idx).start_date_time,
1993 decode( l_mlcs(idx).type_type, fnd_api.g_miss_char, null, l_mlcs(idx).type_type),
1994 decode( l_mlcs(idx).type_id, fnd_api.g_miss_num, null, l_mlcs(idx).type_id),
1995 decode( l_mlcs(idx).duration, fnd_api.g_miss_num, l_duration_perf, l_mlcs(idx).duration),
1996 l_mlcs(idx).end_date_time,
1997 l_mlcs(idx).milcs_id,
1998 decode( l_mlcs(idx).milcs_type_id, fnd_api.g_miss_num, null, l_mlcs(idx).milcs_type_id),
1999 l_int_val_rec.media_id,
2000 l_mlcs(idx).handler_id,
2001 p_user_id,
2002 Sysdate,
2003 p_user_id,
2004 Sysdate,
2005 p_login_id,
2006 l_active_perf,
2007 decode( l_mlcs(idx).bulk_writer_code, fnd_api.g_miss_char, null, l_mlcs(idx).bulk_writer_code),
2008 decode( l_mlcs(idx).bulk_batch_type, fnd_api.g_miss_char, null, l_mlcs(idx).bulk_batch_type),
2009 decode( l_mlcs(idx).bulk_batch_id, fnd_api.g_miss_num, null, l_mlcs(idx).bulk_batch_id),
2010 decode( l_mlcs(idx).bulk_interaction_id, fnd_api.g_miss_num, null, l_mlcs(idx).bulk_interaction_id),
2011 decode( l_mlcs(idx).resource_id, fnd_api.g_miss_num, null, l_mlcs(idx).resource_id)
2012 );
2013 END loop;
2014
2015
2016 -- Standard check of p_commit
2017 IF fnd_api.to_boolean(p_commit) THEN
2018 COMMIT WORK;
2019 END IF;
2020
2021 -- Standard call to get message count and if count is 1, get message info
2022 fnd_msg_pub.count_and_get
2023 ( p_count => x_msg_count,
2024 p_data => x_msg_data );
2025 EXCEPTION
2026 WHEN fnd_api.g_exc_error THEN
2027 ROLLBACK TO create_media_pub;
2028 x_return_status := fnd_api.g_ret_sts_error;
2029 fnd_msg_pub.count_and_get
2030 ( p_count => x_msg_count,
2031 p_data => x_msg_data );
2032 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
2033
2034 WHEN fnd_api.g_exc_unexpected_error THEN
2035 ROLLBACK TO create_media_pub;
2036 x_return_status := fnd_api.g_ret_sts_unexp_error;
2037 fnd_msg_pub.count_and_get
2038 ( p_count => x_msg_count,
2039 p_data => x_msg_data );
2040 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
2041
2042 WHEN OTHERS THEN
2043 ROLLBACK TO create_media_pub;
2044 x_return_status := fnd_api.g_ret_sts_unexp_error;
2045 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2046 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
2047 END IF;
2048 fnd_msg_pub.count_and_get
2049 ( p_count => x_msg_count,
2050 p_data => x_msg_data );
2051 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
2052
2053 END Create_MediaItem;
2054
2055 --
2056 -- HISTORY
2057 --
2058 -- AUTHOR DATE MODIFICATION DESCRIPTION
2059 -- ------ ---- --------------------------
2060 --
2061 -- INITIAL VERSION
2062 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
2063 -- James Baldo Jr. 09-JUN-2000 Modified by for bug# 1326022
2064 -- James Baldo Jr. 30-NOV-2000 Logic for two new columns, Media_Abandon_Flag and Media_Transferred_Flag.
2065 -- Enhancement Bugdb # 1501325
2066
2067 --
2068 -- Jean Zhu split old version PROCEDURE Create_MediaItem() to
2069 -- two PROCEDUREs Create_MediaItem() and Create_MediaLifecycle()
2070 -- Igor Aleshin 18-APR-2001 Fix for bugdb 2323210 - 1157.6RI:API
2071 -- ERR:JTF_IH_PUB.CLOSE_INTERACTION:WHEN DISAGREE WITH OKC IN IBE
2072 -- Igor Aleshin 24-FEB-2003 Fixed bug# 2817083 - Error loggin interactions
2073 -- Igor Aleshin 29-MAY-2003 Enh# 2940473 - IH Bulk API Changes
2074 -- Igor Aleshin 03-JUL-2003 Enh# 3022511 - Add a column to the jtf_ih_media_items table
2075 -- vekrishn 27-JUL-2004 Perf Fix for literal Usage
2076 --
2077 --
2078
2079
2080 PROCEDURE Create_MediaItem
2081 (
2082 p_api_version IN NUMBER,
2083 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
2084 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
2085 p_resp_appl_id IN NUMBER DEFAULT NULL,
2086 p_resp_id IN NUMBER DEFAULT NULL,
2087 p_user_id IN NUMBER,
2088 p_login_id IN NUMBER DEFAULT NULL,
2089 x_return_status OUT NOCOPY VARCHAR2,
2090 x_msg_count OUT NOCOPY NUMBER,
2091 x_msg_data OUT NOCOPY VARCHAR2,
2092 p_media_rec IN media_rec_type,
2093 x_media_id OUT NOCOPY NUMBER
2094 )AS
2095
2096 l_api_name CONSTANT VARCHAR2(30) := 'Create_MediaItem';
2097 l_api_version CONSTANT NUMBER := 1.0;
2098 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
2099 l_return_status VARCHAR2(1);
2100 --l_media_id NUMBER := NULL;
2101 l_return_code VARCHAR2(1);
2102 l_data VARCHAR2(2000);
2103 l_count NUMBER;
2104 l_media_rec MEDIA_REC_TYPE;
2105
2106 --Bug# 2323210
2107 --l_start_date_time DATE;
2108 --l_end_date_time DATE;
2109 --l_duration NUMBER;
2110 --l_source_item_create_date_time DATE;
2111 --l_address VARCHAR2(2000);
2112
2113 -- Perf fix for literal Usage
2114 l_duration_perf NUMBER;
2115 l_active_perf VARCHAR2(1);
2116 l_ao_update_pending_perf VARCHAR2(1);
2117 l_soft_closed_perf VARCHAR2(1);
2118
2119 BEGIN
2120 -- Standard start of API savepoint
2121 SAVEPOINT create_media_pub;
2122
2123 -- Perf variables
2124 l_duration_perf := 0;
2125 l_active_perf := 'N';
2126 l_ao_update_pending_perf := 'N';
2127 l_soft_closed_perf := 'N';
2128
2129 -- Preprocessing Call
2130 l_media_rec := p_media_rec;
2131 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_MEDIAITEM', 'B', 'C') THEN
2132 JTF_IH_PUB_CUHK.create_mediaitem_pre(
2133 p_media_rec=>l_media_rec,
2134 x_data=>l_data,
2135 x_count=>l_count,
2136 x_return_code=>l_return_code);
2137 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
2138 RAISE FND_API.G_EXC_ERROR;
2139 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2140 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2141 END IF;
2142 END IF;
2143
2144 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_MEDIAITEM', 'B', 'V') THEN
2145 JTF_IH_PUB_VUHK.create_mediaitem_pre(
2146 p_media_rec=>l_media_rec,
2147 x_data=>l_data,
2148 x_count=>l_count,
2149 x_return_code=>l_return_code);
2150 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
2151 RAISE FND_API.G_EXC_ERROR;
2152 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2153 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2154 END IF;
2155 END IF;
2156
2157 -- Standard call to check for call compatibility
2158 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
2159 l_api_name, g_pkg_name) THEN
2160 RAISE fnd_api.g_exc_unexpected_error;
2161 END IF;
2162 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Create_MediaItem');
2163
2164 -- Initialize message list if p_init_msg_list is set to TRUE
2165 IF fnd_api.to_boolean(p_init_msg_list) THEN
2166 fnd_msg_pub.initialize;
2167 END IF;
2168
2169 -- Initialize API return status to success
2170 x_return_status := fnd_api.g_ret_sts_success;
2171
2172 --
2173 -- Validate user and login session IDs
2174 --
2175 IF (p_user_id IS NULL) THEN
2176 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
2177 RAISE fnd_api.g_exc_error;
2178 ELSE
2179 jtf_ih_core_util_pvt.validate_who_info
2180 ( p_api_name => l_api_name_full,
2181 p_parameter_name_usr => 'p_user_id',
2182 p_parameter_name_log => 'p_login_id',
2183 p_user_id => p_user_id,
2184 p_login_id => p_login_id,
2185 x_return_status => l_return_status );
2186 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
2187 RAISE fnd_api.g_exc_error;
2188 END IF;
2189 END IF;
2190 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Create_MediaItem');
2191
2192 Validate_Media_Item
2193 ( p_api_name => l_api_name_full,
2194 p_media_item_val => p_media_rec,
2195 p_resp_appl_id => p_resp_appl_id,
2196 p_resp_id => p_resp_id,
2197 x_return_status => l_return_status
2198 );
2199 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
2200 RAISE fnd_api.g_exc_error;
2201 END IF;
2202
2203 -- DBMS_OUTPUT.PUT_LINE('PAST Validate_Media_Item in JTF_IH_PUB.Create_MediaItem');
2204
2205 -- Added by IAleshin 21-MAY-2002
2206 IF (p_media_rec.end_date_time <> fnd_api.g_miss_date) AND (p_media_rec.end_date_time IS NOT NULL) THEN
2207 --l_end_date_time := p_media_rec.end_date_time;
2208 l_media_rec.end_date_time := p_media_rec.end_date_time;
2209 ELSE
2210 --l_end_date_time := SYSDATE;
2211 l_media_rec.end_date_time := SYSDATE;
2212 END IF;
2213
2214 IF (p_media_rec.start_date_time <> fnd_api.g_miss_date) AND (p_media_rec.start_date_time IS NOT NULL) THEN
2215 --l_start_date_time := p_media_rec.start_date_time;
2216 l_media_rec.start_date_time := p_media_rec.start_date_time;
2217 ELSE
2218 --l_start_date_time := SYSDATE;
2219 l_media_rec.start_date_time := SYSDATE;
2220 END IF;
2221
2222 Validate_StartEnd_Date( p_api_name => l_api_name_full,
2223 --p_start_date_time => l_start_date_time,
2224 p_start_date_time => l_media_rec.start_date_time,
2225 --p_end_date_time => l_end_date_time,
2226 p_end_date_time => l_media_rec.end_date_time,
2227 x_return_status => l_return_status);
2228 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
2229 RAISE fnd_api.g_exc_error;
2230 END IF;
2231
2232 IF (p_media_rec.source_item_create_date_time <> fnd_api.g_miss_date) AND (p_media_rec.source_item_create_date_time IS NOT NULL) THEN
2233 --l_source_item_create_date_time := p_media_rec.source_item_create_date_time;
2234 l_media_rec.source_item_create_date_time := p_media_rec.source_item_create_date_time;
2235 ELSE
2236 --l_source_item_create_date_time := NULL;
2237 l_media_rec.source_item_create_date_time := NULL;
2238 END IF;
2239
2240 IF (p_media_rec.duration <> fnd_api.g_miss_num ) AND (p_media_rec.duration IS NOT NULL) THEN
2241 --l_duration := p_media_rec.duration;
2242 l_media_rec.duration := p_media_rec.duration;
2243 ELSE
2244 --l_duration := ROUND((l_end_date_time - l_start_date_time)*24*60*60);
2245 l_media_rec.duration := ROUND((l_media_rec.end_date_time - l_media_rec.start_date_time)*24*60*60);
2246 END IF;
2247
2248 IF p_media_rec.address = fnd_api.g_miss_char THEN
2249 IF p_media_rec.direction = 'INBOUND'
2250 AND p_media_rec.media_item_type LIKE 'TELE%'
2251 AND p_media_rec.ani <> fnd_api.g_miss_char THEN
2252 --l_address := p_media_rec.ani;
2253 l_media_rec.address := p_media_rec.ani;
2254 ELSE
2255 --l_address := NULL;
2256 l_media_rec.address := NULL;
2257 END IF;
2258 ELSE
2259 --l_address := p_media_rec.address;
2260 l_media_rec.address := p_media_rec.address;
2261 END IF;
2262
2263
2264 --SELECT jtf_ih_media_items_s1.NEXTVAL INTO l_media_id FROM dual;
2265 --l_media_id := Get_Media_Id(NULL);
2266 l_media_rec.media_id := Get_Media_Id(NULL);
2267
2268 -- DBMS_OUTPUT.PUT_LINE('PAST generate PK in JTF_IH_PUB.Create_MediaItem');
2269 insert into jtf_ih_Media_Items
2270 (
2271 DURATION,
2272 DIRECTION,
2273 END_DATE_TIME,
2274 SOURCE_ITEM_CREATE_DATE_TIME,
2275 INTERACTION_PERFORMED,
2276 SOURCE_ITEM_ID,
2277 START_DATE_TIME,
2278 MEDIA_ID,
2279 SOURCE_ID,
2280 MEDIA_ITEM_TYPE,
2281 CREATED_BY,
2282 CREATION_DATE,
2283 LAST_UPDATED_BY,
2284 LAST_UPDATE_DATE,
2285 LAST_UPDATE_LOGIN,
2286 MEDIA_ITEM_REF,
2287 MEDIA_DATA,
2288 MEDIA_ABANDON_FLAG,
2289 MEDIA_TRANSFERRED_FLAG,
2290 ACTIVE,
2291 SERVER_GROUP_ID,
2292 DNIS,
2293 ANI,
2294 CLASSIFICATION,
2295 BULK_WRITER_CODE,
2296 BULK_BATCH_TYPE,
2297 BULK_BATCH_ID,
2298 BULK_INTERACTION_ID,
2299 ADDRESS,
2300 AO_UPDATE_PENDING,
2301 SOFT_CLOSED
2302
2303 ) values (
2304 --decode(l_duration,fnd_api.g_miss_num, l_duration_perf, l_duration),
2305 decode(l_media_rec.duration,fnd_api.g_miss_num, 0, l_media_rec.duration),
2306 decode( p_media_rec.direction, fnd_api.g_miss_char, null, p_media_rec.direction),
2307 --l_end_date_time,
2308 l_media_rec.end_date_time,
2309 --l_source_item_create_date_time,
2310 l_media_rec.source_item_create_date_time,
2311 decode( p_media_rec.interaction_performed, fnd_api.g_miss_char, null, p_media_rec.interaction_performed),
2312 decode( p_media_rec.source_item_id, fnd_api.g_miss_num, null, p_media_rec.source_item_id),
2313 --l_start_date_time,
2314 l_media_rec.start_date_time,
2315 --l_media_id,
2316 l_media_rec.media_id,
2317 decode( p_media_rec.source_id, fnd_api.g_miss_num, null, p_media_rec.source_id),
2318 -- Bug# 2309710
2319 decode( p_media_rec.media_item_type, fnd_api.g_miss_char, null, p_media_rec.media_item_type),
2320 p_user_id,
2321 SysDate,
2322 p_user_id,
2323 SysDate,
2324 p_login_id,
2325 decode( p_media_rec.media_item_ref, fnd_api.g_miss_char, null,p_media_rec.media_item_ref),
2326 decode( p_media_rec.media_data, fnd_api.g_miss_char, null,p_media_rec.media_data),
2327 decode( p_media_rec.media_abandon_flag, fnd_api.g_miss_char, null,p_media_rec.media_abandon_flag),
2328 decode( p_media_rec.media_transferred_flag, fnd_api.g_miss_char, null,p_media_rec.media_transferred_flag),
2329 l_active_perf,
2330 decode( p_media_rec.server_group_id, fnd_api.g_miss_num, null,p_media_rec.server_group_id),
2331 decode( p_media_rec.dnis, fnd_api.g_miss_char, null,p_media_rec.dnis),
2332 decode( p_media_rec.ani, fnd_api.g_miss_char, null,p_media_rec.ani),
2333 decode( p_media_rec.classification, fnd_api.g_miss_char, null, p_media_rec.classification),
2334 decode( p_media_rec.bulk_writer_code, fnd_api.g_miss_char, null, p_media_rec.bulk_writer_code),
2335 decode( p_media_rec.bulk_batch_type, fnd_api.g_miss_char, null, p_media_rec.bulk_batch_type),
2336 decode( p_media_rec.bulk_batch_id, fnd_api.g_miss_num, null, p_media_rec.bulk_batch_id),
2337 decode( p_media_rec.bulk_interaction_id, fnd_api.g_miss_num, null, p_media_rec.bulk_interaction_id),
2338 --decode( l_address, fnd_api.g_miss_char, null, l_address),
2339 decode( l_media_rec.address, fnd_api.g_miss_char, null, l_media_rec.address),
2340 l_ao_update_pending_perf,
2341 l_soft_closed_perf
2342 );
2343 -- DBMS_OUTPUT.PUT_LINE('PAST Insert data in JTF_IH_PUB.Create_MediaItem');
2344
2345 --
2346 -- Output
2347 -- --
2348 --x_media_id := l_media_id;
2349 x_media_id := l_media_rec.media_id;
2350
2351 -- Post processing Call
2352
2353 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_MEDIAITEM', 'A', 'V') THEN
2354 JTF_IH_PUB_VUHK.create_mediaitem_post(
2355 p_media_rec=>l_media_rec,
2356 x_data=>l_data,
2357 x_count=>l_count,
2358 x_return_code=>l_return_code);
2359 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
2360 RAISE FND_API.G_EXC_ERROR;
2361 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2362 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2363 END IF;
2364 END IF;
2365
2366 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_MEDIAITEM', 'A', 'C') THEN
2367 JTF_IH_PUB_CUHK.create_mediaitem_post(
2368 p_media_rec=>l_media_rec,
2369 x_data=>l_data,
2370 x_count=>l_count,
2371 x_return_code=>l_return_code);
2372 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
2373 RAISE FND_API.G_EXC_ERROR;
2374 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2375 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2376 END IF;
2377 END IF;
2378
2379 -- Standard check of p_commit
2380 IF fnd_api.to_boolean(p_commit) THEN
2381 COMMIT WORK;
2382 END IF;
2383
2384 -- Standard call to get message count and if count is 1, get message info
2385 fnd_msg_pub.count_and_get
2386 ( p_count => x_msg_count,
2387 p_data => x_msg_data );
2388 EXCEPTION
2389 WHEN fnd_api.g_exc_error THEN
2390 ROLLBACK TO create_media_pub;
2391 x_return_status := fnd_api.g_ret_sts_error;
2392 fnd_msg_pub.count_and_get
2393 ( p_count => x_msg_count,
2394 p_data => x_msg_data );
2395 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
2396 WHEN fnd_api.g_exc_unexpected_error THEN
2397 ROLLBACK TO create_media_pub;
2398 x_return_status := fnd_api.g_ret_sts_unexp_error;
2399 fnd_msg_pub.count_and_get
2400 ( p_count => x_msg_count,
2401 p_data => x_msg_data );
2402 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
2403 WHEN OTHERS THEN
2404 ROLLBACK TO create_media_pub;
2405 x_return_status := fnd_api.g_ret_sts_unexp_error;
2406 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2407 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
2408 END IF;
2409 fnd_msg_pub.count_and_get
2410 ( p_count => x_msg_count,
2411 p_data => x_msg_data );
2412 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
2413 END Create_MediaItem;
2414
2415
2416 --
2417 -- HISTORY
2418 --
2419 -- AUTHOR DATE MODIFICATION DESCRIPTION
2420 -- ------ ---- --------------------------
2421 --
2422 -- INITIAL VERSION
2423 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
2424 -- James Baldo Jr. 26-JUL-2000 Fix for bugdb # 1314821 and 1342156
2425 --
2426 -- Jean Zhu split old version PROCEDURE Create_MediaItem() to
2427 -- two PROCEDUREs Create_MediaItem() and Create_MediaLifecycle()
2428 -- Igor Aleshin 20-MAY-2002 Modified duration calculation
2429 -- Igor Aleshin 29-MAY-2003 Enh# 2940473 - IH Bulk API Changes
2430 -- vekrishn 27-JUL-2004 Perf Fix for literal Usage
2431 --
2432 --
2433 procedure Create_MediaLifecycle
2434 (
2435 p_api_version IN NUMBER,
2436 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
2437 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
2438 p_resp_appl_id IN NUMBER DEFAULT NULL,
2439 p_resp_id IN NUMBER DEFAULT NULL,
2440 p_user_id IN NUMBER,
2441 p_login_id IN NUMBER DEFAULT NULL,
2442 x_return_status OUT NOCOPY VARCHAR2,
2443 x_msg_count OUT NOCOPY NUMBER,
2444 x_msg_data OUT NOCOPY VARCHAR2,
2445 p_media_lc_rec IN media_lc_rec_type
2446 )AS
2447
2448 l_api_name CONSTANT VARCHAR2(30) := 'Create_MediaLifecycle';
2449 l_api_version CONSTANT NUMBER := 1.0;
2450 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
2451 l_return_status VARCHAR2(1);
2452 --l_milcs_id NUMBER := NULL;
2453 l_return_code VARCHAR2(1);
2454 l_data VARCHAR2(2000);
2455 l_count NUMBER;
2456 l_media_lc_rec MEDIA_LC_REC_TYPE;
2457 --l_milcs_type_id NUMBER := NULL;
2458 --l_start_date_time DATE;
2459 --l_end_date_time DATE;
2460 --l_duration NUMBER := NULL;
2461
2462 -- Perf fix for literal Usage
2463 l_duration_perf NUMBER;
2464 l_active_perf VARCHAR2(1);
2465
2466 BEGIN
2467 -- Standard start of API savepoint
2468 SAVEPOINT create_media_lc_pub;
2469
2470 -- Perf variables
2471 l_duration_perf := 0;
2472 l_active_perf := 'N';
2473
2474 -- Preprocessing Call
2475 l_media_lc_rec := p_media_lc_rec;
2476 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_MEDIALIFEYCYCLE', 'B', 'C') THEN
2477 JTF_IH_PUB_CUHK.create_medialifecycle_pre(
2478 p_media_lc_rec=>l_media_lc_rec,
2479 x_data=>l_data,
2480 x_count=>l_count,
2481 x_return_code=>l_return_code);
2482 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
2483 RAISE FND_API.G_EXC_ERROR;
2484 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2485 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2486 END IF;
2487 END IF;
2488
2489 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_MEDIALIFECYCLE', 'B', 'V') THEN
2490 JTF_IH_PUB_VUHK.create_medialifecycle_pre(
2491 p_media_lc_rec=>l_media_lc_rec,
2492 x_data=>l_data,
2493 x_count=>l_count,
2494 x_return_code=>l_return_code);
2495 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
2496 RAISE FND_API.G_EXC_ERROR;
2497 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2498 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2499 END IF;
2500 END IF;
2501
2502
2503 -- Standard call to check for call compatibility
2504 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
2505 l_api_name, g_pkg_name) THEN
2506 RAISE fnd_api.g_exc_unexpected_error;
2507 END IF;
2508 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Create_MediaLifecycle');
2509 -- Initialize message list if p_init_msg_list is set to TRUE
2510 IF fnd_api.to_boolean(p_init_msg_list) THEN
2511 fnd_msg_pub.initialize;
2512 END IF;
2513
2514 -- Initialize API return status to success
2515 x_return_status := fnd_api.g_ret_sts_success;
2516
2517 --
2518 -- Validate user and login session IDs
2519 --
2520 IF (p_user_id IS NULL) THEN
2521 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
2522 RAISE fnd_api.g_exc_error;
2523 ELSE
2524 jtf_ih_core_util_pvt.validate_who_info
2525 ( p_api_name => l_api_name_full,
2526 p_parameter_name_usr => 'p_user_id',
2527 p_parameter_name_log => 'p_login_id',
2528 p_user_id => p_user_id,
2529 p_login_id => p_login_id,
2530 x_return_status => l_return_status );
2531 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
2532 RAISE fnd_api.g_exc_error;
2533 END IF;
2534 END IF;
2535 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Create_MediaLifecycle' || p_user_id);
2536 -- DBMS_OUTPUT.PUT_LINE('milcs_type_id:= ' || p_media_lc_rec.milcs_type_id);
2537 -- DBMS_OUTPUT.PUT_LINE('milcs_type_code:= ' || p_media_lc_rec.milcs_code);
2538 Validate_Mlcs_Record
2539 ( p_api_name => l_api_name_full,
2540 p_media_lc_rec => p_media_lc_rec,
2541 p_resp_appl_id => p_resp_appl_id,
2542 p_resp_id => p_resp_id,
2543 x_return_status => l_return_status
2544 );
2545 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
2546 RAISE fnd_api.g_exc_error;
2547 END IF;
2548 -- DBMS_OUTPUT.PUT_LINE('PAST Validate_Mlcs_Record in JTF_IH_PUB.Create_MediaLifecycle');
2549 -- assign the start_date_time
2550
2551 IF(p_media_lc_rec.start_date_time IS NOT NULL) AND (p_media_lc_rec.start_date_time <> fnd_api.g_miss_date) THEN
2552 --l_start_date_time := p_media_lc_rec.start_date_time;
2553 l_media_lc_rec.start_date_time := p_media_lc_rec.start_date_time;
2554 ELSE
2555 --l_start_date_time := SYSDATE;
2556 l_media_lc_rec.start_date_time := SYSDATE;
2557 END IF;
2558
2559 IF(p_media_lc_rec.end_date_time <> fnd_api.g_miss_date) AND (p_media_lc_rec.end_date_time IS NOT NULL) THEN
2560 --l_end_date_time := p_media_lc_rec.end_date_time;
2561 l_media_lc_rec.end_date_time := p_media_lc_rec.end_date_time;
2562 ELSE
2563 --l_end_date_time := SYSDATE;
2564 l_media_lc_rec.end_date_time := SYSDATE;
2565 END IF;
2566
2567 Validate_StartEnd_Date
2568 ( p_api_name => l_api_name_full,
2569 --p_start_date_time => l_start_date_time,
2570 p_start_date_time => l_media_lc_rec.start_date_time,
2571 --p_end_date_time => l_end_date_time,
2572 p_end_date_time => l_media_lc_rec.end_date_time,
2573 x_return_status => l_return_status
2574 );
2575 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
2576 RAISE fnd_api.g_exc_error;
2577 END IF;
2578
2579 -- assign the duration
2580 IF (p_media_lc_rec.duration <> fnd_api.g_miss_num) AND (p_media_lc_rec.duration IS NOT NULL) THEN
2581 --l_duration := p_media_lc_rec.duration;
2582 l_media_lc_rec.duration := p_media_lc_rec.duration;
2583 ELSE
2584 --l_duration := ROUND((l_end_date_time - l_start_date_time)*24*60*60);
2585 l_media_lc_rec.duration := ROUND((l_media_lc_rec.end_date_time - l_media_lc_rec.start_date_time)*24*60*60);
2586 END IF;
2587
2588 --l_milcs_type_id := p_media_lc_rec.milcs_type_id;
2589 l_media_lc_rec.milcs_type_id := p_media_lc_rec.milcs_type_id;
2590 IF ((p_media_lc_rec.milcs_type_id IS NULL) OR (p_media_lc_rec.milcs_type_id = FND_API.G_MISS_NUM)) THEN
2591 --select milcs_type_id into l_milcs_type_id
2592 select milcs_type_id into l_media_lc_rec.milcs_type_id
2593 from jtf_ih_media_itm_lc_seg_tys
2594 where milcs_code = p_media_lc_rec.milcs_code;
2595 END IF;
2596
2597 -- Bug# 2817083
2598 --SELECT jtf_ih_media_item_lc_seg_s1.NEXTVAL INTO l_milcs_id FROM dual;
2599 -- DBMS_OUTPUT.PUT_LINE('PAST generate PK in JTF_IH_PUB.Create_MediaLifecycle '|| l_milcs_id);
2600 --l_milcs_id := Get_milcs_id(NULL);
2601 l_media_lc_rec.milcs_id := Get_milcs_id(NULL);
2602
2603 -- Perf fix for literal Usage
2604 insert into jtf_ih_media_item_lc_segs
2605 (
2606 START_DATE_TIME,
2607 TYPE_TYPE,
2608 TYPE_ID,
2609 DURATION,
2610 END_DATE_TIME,
2611 MILCS_ID,
2612 MILCS_TYPE_ID,
2613 MEDIA_ID,
2614 HANDLER_ID,
2615 RESOURCE_ID,
2616 CREATED_BY,
2617 CREATION_DATE,
2618 LAST_UPDATED_BY,
2619 LAST_UPDATE_DATE,
2620 LAST_UPDATE_LOGIN,
2621 ACTIVE,
2622 BULK_WRITER_CODE,
2623 BULK_BATCH_TYPE,
2624 BULK_BATCH_ID,
2625 BULK_INTERACTION_ID
2626 )
2627 values
2628 (
2629 --l_start_date_time,
2630 l_media_lc_rec.start_date_time,
2631 decode( p_media_lc_rec.type_type, fnd_api.g_miss_char, null,p_media_lc_rec.type_type),
2632 decode( p_media_lc_rec.type_id, fnd_api.g_miss_num, null, p_media_lc_rec.type_id),
2633 --decode( l_duration, fnd_api.g_miss_num, l_duration_perf, l_duration ),
2634 decode(l_media_lc_rec.duration, fnd_api.g_miss_num, 0, l_media_lc_rec.duration ),
2635 --l_end_date_time,
2636 l_media_lc_rec.end_date_time,
2637 --l_milcs_id,
2638 l_media_lc_rec.milcs_id,
2639 --decode( l_milcs_type_id, fnd_api.g_miss_num, null, l_milcs_type_id),
2640 decode(l_media_lc_rec.milcs_type_id, fnd_api.g_miss_num, null, l_media_lc_rec.milcs_type_id),
2641 p_media_lc_rec.media_id,
2642 p_media_lc_rec.handler_id,
2643 decode( p_media_lc_rec.resource_id, fnd_api.g_miss_num, null, p_media_lc_rec.resource_id),
2644 p_user_id,
2645 Sysdate,
2646 p_user_id,
2647 Sysdate,
2648 p_login_id,
2649 l_active_perf,
2650 decode( p_media_lc_rec.bulk_writer_code, fnd_api.g_miss_char, null, p_media_lc_rec.bulk_writer_code),
2651 decode( p_media_lc_rec.bulk_batch_type, fnd_api.g_miss_char, null, p_media_lc_rec.bulk_batch_type),
2652 decode( p_media_lc_rec.bulk_batch_id, fnd_api.g_miss_num, null, p_media_lc_rec.bulk_batch_id),
2653 decode( p_media_lc_rec.bulk_interaction_id, fnd_api.g_miss_num, null, p_media_lc_rec.bulk_interaction_id)
2654 );
2655 -- DBMS_OUTPUT.PUT_LINE('PAST insert data in JTF_IH_PUB.Create_MediaLifecycle');
2656
2657 -- Post processing Call
2658
2659 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_MEDIALIFECYCLE', 'A', 'V') THEN
2660 JTF_IH_PUB_VUHK.create_medialifecycle_post(
2661 p_media_lc_rec=>l_media_lc_rec,
2662 x_data=>l_data,
2663 x_count=>l_count,
2664 x_return_code=>l_return_code);
2665 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
2666 RAISE FND_API.G_EXC_ERROR;
2667 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2668 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2669 END IF;
2670 END IF;
2671
2672 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_MEDIALIFECYCLE', 'A', 'C') THEN
2673 JTF_IH_PUB_CUHK.create_medialifecycle_post(
2674 p_media_lc_rec=>l_media_lc_rec,
2675 x_data=>l_data,
2676 x_count=>l_count,
2677 x_return_code=>l_return_code);
2678 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
2679 RAISE FND_API.G_EXC_ERROR;
2680 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2681 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2682 END IF;
2683 END IF;
2684
2685
2686 -- Standard check of p_commit
2687 IF fnd_api.to_boolean(p_commit) THEN
2688 COMMIT WORK;
2689 END IF;
2690
2691 -- Standard call to get message count and if count is 1, get message info
2692 fnd_msg_pub.count_and_get
2693 ( p_count => x_msg_count,
2694 p_data => x_msg_data );
2695 EXCEPTION
2696 WHEN fnd_api.g_exc_error THEN
2697 ROLLBACK TO create_media_lc_pub;
2698 x_return_status := fnd_api.g_ret_sts_error;
2699 fnd_msg_pub.count_and_get
2700 ( p_encoded => FND_API.g_false,
2701 p_count => x_msg_count,
2702 p_data => x_msg_data );
2703 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
2704 WHEN fnd_api.g_exc_unexpected_error THEN
2705 ROLLBACK TO create_media_lc_pub;
2706 x_return_status := fnd_api.g_ret_sts_unexp_error;
2707 fnd_msg_pub.count_and_get
2708 ( p_encoded => FND_API.g_false,
2709 p_count => x_msg_count,
2710 p_data => x_msg_data );
2711 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
2712 WHEN OTHERS THEN
2713 ROLLBACK TO create_media_lc_pub;
2714 x_return_status := fnd_api.g_ret_sts_unexp_error;
2715 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2716 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
2717 END IF;
2718 fnd_msg_pub.count_and_get
2719 ( p_encoded => FND_API.g_false,
2720 p_count => x_msg_count,
2721 p_data => x_msg_data );
2722 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
2723 END Create_MediaLifecycle;
2724
2725 --
2726 -- HISTORY
2727 --
2728 -- AUTHOR DATE MODIFICATION DESCRIPTION
2729 -- ------ ---- --------------------------
2730 --
2731 -- INITIAL VERSION
2732 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
2733 -- Igor Aleshin 22-MAY-2001 - Fixed the bug# 1791550 unable to Create
2734 -- Activity by Call Create_Interaction API
2735 -- Igor Aleshin 21-DEC-2001 Fix for bugdb - 2153913 - PREVENT G_MISS_DATE VALUE FROM BEING
2736 -- WRITTEN TO THE END_DATE_TIME VALUE.
2737 -- Igor Aleshin 21-FEB-2002 Fix for bugdb - 2235155 - JTF_IH_PUB.CREATE_INTERACTION DOESN'T
2738 -- INSERT ALL VALUES TO JTF_IH_ACTIVITIES
2739 -- Igor Aleshin 04-MAR-2002 Added Attributes to Activity_Rec.
2740 -- Igor Aleshin 18-APR-2001 Fix for bugdb 2323210 - 1157.6RI:API
2741 -- ERR:JTF_IH_PUB.CLOSE_INTERACTION:WHEN DISAGREE WITH OKC IN IBE
2742 -- Igor Aleshin 10-MAY-2002 ENH# 2079963 - NEED INTERACTION HISTORY RECORD TO SUPPORT MULTIPLE AGENTS
2743 -- Igor Aleshin 05-JUN-2002 Removed from statemements Resource_ID for Activity_Rec_Type
2744 -- Igor Aleshin 24-FEB-2003 Fixed bug# 2817083 - Error loggin interactions
2745 -- Igor Aleshin 29-MAY-2003 Enh# 2940473 - IH Bulk API Changes
2746 -- Igor Aleshin 18-JUN-2003 Enh# 1846960 - REQUIRE CONTACT NAME OF ORGANISATION IN INTERACTION HISTORY
2747 -- vekrishn 27-JUL-2004 Perf Fix for literal Usage
2748 --
2749 --
2750
2751 PROCEDURE Create_Interaction(
2752 p_api_version IN NUMBER,
2753 p_init_msg_list IN VARCHAR2, --DEFAULT FND_API.G_FALSE,
2754 p_commit IN VARCHAR2, --DEFAULT FND_API.G_FALSE,
2755 p_resp_appl_id IN NUMBER DEFAULT NULL,
2756 p_resp_id IN NUMBER DEFAULT NULL,
2757 p_user_id IN NUMBER,
2758 p_login_id IN NUMBER DEFAULT NULL,
2759 x_return_status OUT NOCOPY VARCHAR2,
2760 x_msg_count OUT NOCOPY NUMBER,
2761 x_msg_data OUT NOCOPY VARCHAR2,
2762 p_interaction_rec IN interaction_rec_type,
2763 p_activities IN activity_tbl_type
2764 ) IS
2765 l_api_name CONSTANT VARCHAR2(30) := 'Create_Interaction';
2766 l_api_version CONSTANT NUMBER := 1.0;
2767 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
2768 l_return_status VARCHAR2(1);
2769 l_int_val_rec interaction_rec_type;
2770 l_interaction_id NUMBER;
2771 l_activity_id NUMBER;
2772 l_activities activity_tbl_type;
2773 l_return_code VARCHAR2(1);
2774 l_data VARCHAR2(2000);
2775 l_count NUMBER;
2776 l_interaction_rec INTERACTION_REC_TYPE;
2777 --l_activities_hk activity_tbl_type;
2778
2779 -- Perf fix for literal Usage
2780 l_duration_perf NUMBER;
2781 l_active_perf VARCHAR2(1);
2782
2783 BEGIN
2784
2785 -- local variables initialization to remove GSCC warning
2786 l_int_val_rec := p_interaction_rec;
2787 l_activities := p_activities;
2788
2789
2790 -- Perf variables
2791 l_duration_perf := 0;
2792 l_active_perf := 'N';
2793
2794 -- Standard start of API savepoint
2795 SAVEPOINT create_interaction_pub;
2796
2797 -- Preprocessing Call
2798 --l_interaction_rec := p_interaction_rec;
2799 --l_activities_hk := p_activities;
2800
2801 IF l_activities.count = 0 THEN
2802 FND_MESSAGE.SET_NAME('JTF','JTF_IH_NO_ACTIVITY');
2803 FND_MSG_PUB.Add;
2804 RAISE FND_API.G_EXC_ERROR;
2805 END IF;
2806
2807 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_INTERACTION', 'B', 'C') THEN
2808 JTF_IH_PUB_CUHK.create_interaction_pre(
2809 --p_interaction_rec=>l_interaction_rec,
2810 p_interaction_rec=>l_int_val_rec,
2811 --p_activities=>l_activities_hk,
2812 p_activities=>l_activities,
2813 x_data=>l_data,
2814 x_count=>l_count,
2815 x_return_code=>l_return_code);
2816 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
2817 RAISE FND_API.G_EXC_ERROR;
2818 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2819 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2820 END IF;
2821 END IF;
2822
2823 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_INTERACTION', 'B', 'V') THEN
2824 JTF_IH_PUB_VUHK.create_interaction_pre(
2825 --p_interaction_rec=>l_interaction_rec,
2826 p_interaction_rec=>l_int_val_rec,
2827 --p_activities=>l_activities_hk,
2828 p_activities=>l_activities,
2829 x_data=>l_data,
2830 x_count=>l_count,
2831 x_return_code=>l_return_code);
2832 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
2833 RAISE FND_API.G_EXC_ERROR;
2834 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2835 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2836 END IF;
2837 END IF;
2838
2839
2840 -- Standard call to check for call compatibility
2841 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
2842 l_api_name, g_pkg_name) THEN
2843 RAISE fnd_api.g_exc_unexpected_error;
2844 END IF;
2845 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Create_Interaction');
2846
2847 -- Initialize message list if p_init_msg_list is set to TRUE
2848 IF fnd_api.to_boolean(p_init_msg_list) THEN
2849 fnd_msg_pub.initialize;
2850 END IF;
2851
2852 -- Initialize API return status to success
2853 x_return_status := fnd_api.g_ret_sts_success;
2854
2855 --
2856 -- Apply business-rule validation to all required and passed parameters
2857 --
2858 -- Validate user and login session IDs
2859 --
2860 IF (p_user_id IS NULL) THEN
2861 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
2862 RAISE fnd_api.g_exc_error;
2863 ELSE
2864 jtf_ih_core_util_pvt.validate_who_info
2865 ( p_api_name => l_api_name_full,
2866 p_parameter_name_usr => 'p_user_id',
2867 p_parameter_name_log => 'p_login_id',
2868 p_user_id => p_user_id,
2869 p_login_id => p_login_id,
2870 x_return_status => l_return_status );
2871 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
2872 RAISE fnd_api.g_exc_error;
2873 END IF;
2874 END IF;
2875 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Create_Interaction');
2876
2877 --
2878 -- Validate all non-missing attributes by calling the utility procedure.
2879 --
2880 Validate_Interaction_Record
2881 ( p_api_name => l_api_name_full,
2882 --p_int_val_rec => p_interaction_rec,
2883 p_int_val_rec => l_int_val_rec,
2884 p_resp_appl_id => p_resp_appl_id,
2885 p_resp_id => p_resp_id,
2886 x_return_status => l_return_status
2887 );
2888 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
2889 RAISE fnd_api.g_exc_error;
2890 END IF;
2891
2892 --DBMS_OUTPUT.PUT_LINE('PAST Validate_Interaction_Record in JTF_IH_PUB.Create_Interaction');
2893 -- mpetrosi 9/1/03 - should not default with zeroes
2894 -- Default_Interaction_Record(l_int_val_rec);
2895
2896 -- Changed by IAleshin - 20-MAY-2002
2897 IF (p_interaction_rec.end_date_time <> fnd_api.g_miss_date) AND (p_interaction_rec.end_date_time IS NOT NULL) THEN
2898 l_int_val_rec.end_date_time := p_interaction_rec.end_date_time;
2899 ELSE
2900 l_int_val_rec.end_date_time := SYSDATE;
2901 END IF;
2902
2903 IF (p_interaction_rec.start_date_time <> fnd_api.g_miss_date) AND (p_interaction_rec.start_date_time IS NOT NULL) THEN
2904 l_int_val_rec.start_date_time := p_interaction_rec.start_date_time;
2905 ELSE
2906 l_int_val_rec.start_date_time := SYSDATE;
2907 END IF;
2908
2909 Validate_StartEnd_Date( p_api_name => l_api_name_full,
2910 p_start_date_time => l_int_val_rec.start_date_time,
2911 p_end_date_time => l_int_val_rec.end_date_time,
2912 x_return_status => l_return_status);
2913 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
2914 RAISE fnd_api.g_exc_error;
2915 END IF;
2916
2917 IF (p_interaction_rec.duration IS NOT NULL) AND (p_interaction_rec.duration <> fnd_api.g_miss_num) THEN
2918 l_int_val_rec.duration := l_interaction_rec.duration;
2919 ELSE
2920 l_int_val_rec.duration := ROUND((l_int_val_rec.end_date_time - l_int_val_rec.start_date_time)*24*60*60);
2921 END IF;
2922
2923 -- Bug# 2817083
2924 --IF ((p_interaction_rec.interaction_id IS NULL) OR (p_interaction_rec.interaction_id = fnd_api.g_miss_num)) THEN
2925 -- SELECT jtf_ih_interactions_s1.NEXTVAL INTO l_int_val_rec.interaction_id FROM dual;
2926 --END IF;
2927 l_int_val_rec.interaction_id := Get_Interaction_ID(p_interaction_rec.interaction_id);
2928 IF l_int_val_rec.interaction_id = -1 THEN
2929 RAISE fnd_api.g_exc_error;
2930 END IF;
2931
2932 Validate_Source_Code(l_api_name_full,l_int_val_rec.source_code_id,l_int_val_rec.source_code, x_return_status);
2933 IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
2934 RAISE fnd_api.g_exc_error;
2935 END IF;
2936
2937 -- Perf fix for literal Usage
2938 INSERT INTO jtf_ih_Interactions
2939 (
2940 CREATED_BY,
2941 REFERENCE_FORM,
2942 CREATION_DATE,
2943 LAST_UPDATED_BY,
2944 DURATION,
2945 LAST_UPDATE_DATE,
2946 LAST_UPDATE_LOGIN,
2947 END_DATE_TIME,
2948 FOLLOW_UP_ACTION,
2949 NON_PRODUCTIVE_TIME_AMOUNT,
2950 RESULT_ID,
2951 REASON_ID,
2952 START_DATE_TIME,
2953 OUTCOME_ID,
2954 PREVIEW_TIME_AMOUNT,
2955 PRODUCTIVE_TIME_AMOUNT,
2956 HANDLER_ID,
2957 INTER_INTERACTION_DURATION,
2958 INTERACTION_ID,
2959 WRAP_UP_TIME_AMOUNT,
2960 SCRIPT_ID,
2961 PARTY_ID,
2962 RESOURCE_ID,
2963 OBJECT_ID,
2964 OBJECT_TYPE,
2965 SOURCE_CODE_ID,
2966 SOURCE_CODE,
2967 ATTRIBUTE1,
2968 ATTRIBUTE2,
2969 ATTRIBUTE3,
2970 ATTRIBUTE4,
2971 ATTRIBUTE5,
2972 ATTRIBUTE6,
2973 ATTRIBUTE7,
2974 ATTRIBUTE8,
2975 ATTRIBUTE9,
2976 ATTRIBUTE10,
2977 ATTRIBUTE11,
2978 ATTRIBUTE12,
2979 ATTRIBUTE13,
2980 ATTRIBUTE14,
2981 ATTRIBUTE15,
2982 ATTRIBUTE_CATEGORY,
2983 ACTIVE,
2984 TOUCHPOINT1_TYPE,
2985 TOUCHPOINT2_TYPE,
2986 METHOD_CODE,
2987 BULK_WRITER_CODE,
2988 BULK_BATCH_TYPE,
2989 BULK_BATCH_ID,
2990 BULK_INTERACTION_ID,
2991 PRIMARY_PARTY_ID,
2992 CONTACT_REL_PARTY_ID,
2993 CONTACT_PARTY_ID
2994 )
2995 VALUES
2996 (
2997 p_user_id,
2998 decode( l_int_val_rec.reference_form, fnd_api.g_miss_char, null, l_int_val_rec.reference_form),
2999 Sysdate,
3000 p_user_id,
3001 decode( l_int_val_rec.duration, fnd_api.g_miss_num, l_duration_perf, l_int_val_rec.duration),
3002 Sysdate,
3003 p_login_id,
3004 l_int_val_rec.end_date_time,
3005 decode( l_int_val_rec.follow_up_action, fnd_api.g_miss_char, null, l_int_val_rec.follow_up_action),
3006 decode( l_int_val_rec.non_productive_time_amount, fnd_api.g_miss_num, null, l_int_val_rec.non_productive_time_amount),
3007 decode( l_int_val_rec.result_id, fnd_api.g_miss_num, null, l_int_val_rec.result_id),
3008 decode( l_int_val_rec.reason_id, fnd_api.g_miss_num, null, l_int_val_rec.reason_id),
3009 l_int_val_rec.start_date_time,
3010 decode( l_int_val_rec.outcome_id, fnd_api.g_miss_num, null, l_int_val_rec.outcome_id),
3011 decode( l_int_val_rec.preview_time_amount, fnd_api.g_miss_num, null, l_int_val_rec.preview_time_amount),
3012 decode( l_int_val_rec.productive_time_amount, fnd_api.g_miss_num, null, l_int_val_rec.productive_time_amount),
3013 l_int_val_rec.handler_id,
3014 decode( l_int_val_rec.inter_interaction_duration, fnd_api.g_miss_num, null, l_int_val_rec.inter_interaction_duration),
3015 l_int_val_rec.interaction_id,
3016 decode( l_int_val_rec.wrapup_time_amount, fnd_api.g_miss_num, null, l_int_val_rec.wrapup_time_amount),
3017 decode( l_int_val_rec.script_id, fnd_api.g_miss_num, null, l_int_val_rec.script_id),
3018 l_int_val_rec.party_id,
3019 l_int_val_rec.resource_id,
3020 decode( l_int_val_rec.object_id, fnd_api.g_miss_num, null, l_int_val_rec.object_id),
3021 decode( l_int_val_rec.object_type, fnd_api.g_miss_char, null, l_int_val_rec.object_type),
3022 decode( l_int_val_rec.source_code_id, fnd_api.g_miss_num, null, l_int_val_rec.source_code_id),
3023 decode( l_int_val_rec.source_code, fnd_api.g_miss_char, null, l_int_val_rec.source_code),
3024 decode( l_int_val_rec.attribute1, fnd_api.g_miss_char, null, l_int_val_rec.attribute1),
3025 decode( l_int_val_rec.attribute2, fnd_api.g_miss_char, null, l_int_val_rec.attribute2),
3026 decode( l_int_val_rec.attribute3, fnd_api.g_miss_char, null, l_int_val_rec.attribute3),
3027 decode( l_int_val_rec.attribute4, fnd_api.g_miss_char, null, l_int_val_rec.attribute4),
3028 decode( l_int_val_rec.attribute5, fnd_api.g_miss_char, null, l_int_val_rec.attribute5),
3029 decode( l_int_val_rec.attribute6, fnd_api.g_miss_char, null, l_int_val_rec.attribute6),
3030 decode( l_int_val_rec.attribute7, fnd_api.g_miss_char, null, l_int_val_rec.attribute7),
3031 decode( l_int_val_rec.attribute8, fnd_api.g_miss_char, null, l_int_val_rec.attribute8),
3032 decode( l_int_val_rec.attribute9, fnd_api.g_miss_char, null, l_int_val_rec.attribute9),
3033 decode( l_int_val_rec.attribute10, fnd_api.g_miss_char, null, l_int_val_rec.attribute10),
3034 decode( l_int_val_rec.attribute11, fnd_api.g_miss_char, null, l_int_val_rec.attribute11),
3035 decode( l_int_val_rec.attribute12, fnd_api.g_miss_char, null, l_int_val_rec.attribute12),
3036 decode( l_int_val_rec.attribute13, fnd_api.g_miss_char, null, l_int_val_rec.attribute13),
3037 decode( l_int_val_rec.attribute14, fnd_api.g_miss_char, null, l_int_val_rec.attribute14),
3038 decode( l_int_val_rec.attribute15, fnd_api.g_miss_char, null, l_int_val_rec.attribute15),
3039 decode( l_int_val_rec.attribute_category, fnd_api.g_miss_char, null, l_int_val_rec.attribute_category),
3040 l_active_perf,
3041 decode( l_int_val_rec.touchpoint1_type, fnd_api.g_miss_char, null, l_int_val_rec.touchpoint1_type),
3042 decode( l_int_val_rec.touchpoint2_type, fnd_api.g_miss_char, null, l_int_val_rec.touchpoint2_type),
3043 decode( l_int_val_rec.method_code, fnd_api.g_miss_char, null, l_int_val_rec.method_code),
3044 decode( l_int_val_rec.bulk_writer_code, fnd_api.g_miss_char, null, l_int_val_rec.bulk_writer_code),
3045 decode( l_int_val_rec.bulk_batch_type, fnd_api.g_miss_char, null, l_int_val_rec.bulk_batch_type),
3046 decode( l_int_val_rec.bulk_batch_id, fnd_api.g_miss_num, null, l_int_val_rec.bulk_batch_id),
3047 decode( l_int_val_rec.bulk_interaction_id, fnd_api.g_miss_num, null, l_int_val_rec.bulk_interaction_id),
3048 decode( l_int_val_rec.primary_party_id, fnd_api.g_miss_num, null, l_int_val_rec.primary_party_id),
3049 decode( l_int_val_rec.contact_rel_party_id, fnd_api.g_miss_num, null, l_int_val_rec.contact_rel_party_id),
3050 decode( l_int_val_rec.contact_party_id, fnd_api.g_miss_num, null, l_int_val_rec.contact_party_id)
3051 );
3052
3053 -- DBMS_OUTPUT.PUT_LINE('PAST INSERT INTO jtf_ih_Interactions in JTF_IH_PUB.Create_Interaction');
3054 --1791550
3055 --
3056 for idx in 1 .. l_activities.count loop
3057 l_activities(idx).interaction_id := l_int_val_rec.interaction_id;
3058 end loop;
3059
3060 Validate_Activity_table
3061 (
3062 p_api_name => l_api_name_full,
3063 --p_int_val_tbl => p_activities,
3064 p_int_val_tbl => l_activities,
3065 p_resp_appl_id => p_resp_appl_id,
3066 p_resp_id => p_resp_id,
3067 x_return_status => l_return_status
3068 );
3069 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
3070 RAISE fnd_api.g_exc_error;
3071 END IF;
3072
3073 -- mpetrosi 9/01/03 - should not default with zeroes
3074 -- Default_activity_table(l_activities);
3075
3076 for idx in 1 .. p_activities.count loop
3077 --Bug# 2817083
3078 --IF ((p_activities(idx).activity_id IS NULL) OR (p_activities(idx).activity_id = fnd_api.g_miss_num)) THEN
3079 -- SELECT jtf_ih_activities_s1.NEXTVAL INTO l_activities(idx).activity_id FROM dual;
3080 --END IF;
3081
3082 -- Bug# 2323210
3083 if(p_activities(idx).start_date_time <> fnd_api.g_miss_date) AND (p_activities(idx).start_date_time IS NOT NULL) then
3084 l_activities(idx).start_date_time := p_activities(idx).start_date_time;
3085 else
3086 l_activities(idx).start_date_time := SYSDATE;
3087 end if;
3088
3089 if(p_activities(idx).end_date_time <> fnd_api.g_miss_date) AND (p_activities(idx).end_date_time IS NOT NULL) then
3090 l_activities(idx).end_date_time := p_activities(idx).end_date_time;
3091 else
3092 l_activities(idx).end_date_time := SYSDATE;
3093 end if;
3094
3095 if (p_activities(idx).duration <> fnd_api.g_miss_num) and (p_activities(idx).duration is not null) then
3096 l_activities(idx).duration := p_activities(idx).duration;
3097 else
3098 l_activities(idx).duration := ROUND((l_activities(idx).end_date_time - l_activities(idx).start_date_time)*24*60*60);
3099 end if;
3100
3101 -- Bug 2817083
3102 l_activities(idx).activity_id := Get_Activity_ID(l_activities(idx).activity_id);
3103 IF l_activities(idx).activity_id = -1 THEN
3104 RAISE fnd_api.g_exc_error;
3105 END IF;
3106
3107
3108 -- Removed by IAleshin 06/04/2002
3109 -- Enh# 2079963
3110 /* IF( p_activities(idx).resource_id IS NOT NULL) AND (p_activities(idx).resource_id <> fnd_api.g_miss_num) THEN
3111 SELECT count(resource_id) into l_count
3112 FROM jtf_rs_resource_extns
3113 WHERE resource_id = p_activities(idx).resource_id;
3114 IF (l_count <= 0) THEN
3115 x_return_status := fnd_api.g_ret_sts_error;
3116 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(p_activities(idx).resource_id),'resource_id');
3117 RETURN;
3118 END IF;
3119 l_activities(idx).resource_id := p_activities(idx).resource_id;
3120 ELSE
3121 -- If resource_id is null or g_miss_num, then get value from parent interaction
3122 l_activities(idx).resource_id := l_int_val_rec.resource_id;
3123 END IF;*/
3124
3125 -- 08/29/03 mpetrosi B3102306
3126 -- added cross check of source_code, source_code_id
3127 Validate_Source_Code(l_api_name_full,l_activities(idx).source_code_id,l_activities(idx).source_code, x_return_status);
3128 IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
3129 RAISE fnd_api.g_exc_error;
3130 END IF;
3131
3132 -- DBMS_OUTPUT.PUT_LINE('PAST activity id validation');
3133 insert into jtf_ih_Activities
3134 (
3135 OBJECT_ID,
3136 OBJECT_TYPE,
3137 SOURCE_CODE_ID,
3138 SOURCE_CODE,
3139 DURATION,
3140 DESCRIPTION,
3141 DOC_ID,
3142 END_DATE_TIME,
3143 ACTIVITY_ID,
3144 RESULT_ID,
3145 REASON_ID,
3146 START_DATE_TIME,
3147 INTERACTION_ACTION_TYPE,
3148 MEDIA_ID,
3149 OUTCOME_ID,
3150 ACTION_ITEM_ID,
3151 INTERACTION_ID,
3152 TASK_ID,
3153 CREATION_DATE,
3154 CREATED_BY,
3155 LAST_UPDATED_BY,
3156 LAST_UPDATE_DATE,
3157 LAST_UPDATE_LOGIN,
3158 ACTION_ID,
3159 ATTRIBUTE1,
3160 ATTRIBUTE2,
3161 ATTRIBUTE3,
3162 ATTRIBUTE4,
3163 ATTRIBUTE5,
3164 ATTRIBUTE6,
3165 ATTRIBUTE7,
3166 ATTRIBUTE8,
3167 ATTRIBUTE9,
3168 ATTRIBUTE10,
3169 ATTRIBUTE11,
3170 ATTRIBUTE12,
3171 ATTRIBUTE13,
3172 ATTRIBUTE14,
3173 ATTRIBUTE15,
3174 ATTRIBUTE_CATEGORY,
3175 ACTIVE,
3176 SCRIPT_TRANS_ID,
3177 ROLE,
3178 DOC_SOURCE_OBJECT_NAME,
3179 --, RESOURCE_ID
3180 -- Added missed columns 09/10/2002
3181 CUST_ACCOUNT_ID,
3182 CUST_ORG_ID,
3183 DOC_REF,
3184 BULK_WRITER_CODE,
3185 BULK_BATCH_TYPE,
3186 BULK_BATCH_ID,
3187 BULK_INTERACTION_ID
3188 )
3189 values
3190 (
3191 decode( l_activities(idx).object_id, fnd_api.g_miss_num, null, l_activities(idx).object_id),
3192 decode( l_activities(idx).object_type, fnd_api.g_miss_char, null, l_activities(idx).object_type),
3193 decode( l_activities(idx).source_code_id, fnd_api.g_miss_num, null, l_activities(idx).source_code_id),
3194 decode( l_activities(idx).source_code, fnd_api.g_miss_char, null, l_activities(idx).source_code),
3195 decode( l_activities(idx).duration, fnd_api.g_miss_num, l_duration_perf, l_activities(idx).duration),
3196 decode( l_activities(idx).description, fnd_api.g_miss_char, null, l_activities(idx).description),
3197 decode( l_activities(idx).doc_id, fnd_api.g_miss_num, null, l_activities(idx).doc_id),
3198 l_activities(idx).end_date_time,
3199 l_activities(idx).activity_id,
3200 decode( l_activities(idx).result_id, fnd_api.g_miss_num, null, l_activities(idx).result_id),
3201 decode( l_activities(idx).reason_id, fnd_api.g_miss_num, null, l_activities(idx).reason_id),
3202 l_activities(idx).start_date_time,
3203 decode( l_activities(idx).interaction_action_type, fnd_api.g_miss_char, null, l_activities(idx).interaction_action_type),
3204 decode( l_activities(idx).media_id, fnd_api.g_miss_num, null, l_activities(idx).media_id),
3205 decode( l_activities(idx).outcome_id, fnd_api.g_miss_num, null, l_activities(idx).outcome_id),
3206 decode( l_activities(idx).action_item_id, fnd_api.g_miss_num, null, l_activities(idx).action_item_id),
3207 l_int_val_rec.interaction_id,
3208 decode( l_activities(idx).task_id, fnd_api.g_miss_num, null, l_activities(idx).task_id),
3209 Sysdate,
3210 p_user_id,
3211 p_user_id,
3212 Sysdate,
3213 p_login_id,
3214 decode( l_activities(idx).action_id, fnd_api.g_miss_num, null, l_activities(idx).action_id),
3215 decode( l_activities(idx).attribute1, fnd_api.g_miss_char, null, l_activities(idx).attribute1),
3216 decode( l_activities(idx).attribute2, fnd_api.g_miss_char, null, l_activities(idx).attribute2),
3217 decode( l_activities(idx).attribute3, fnd_api.g_miss_char, null, l_activities(idx).attribute3),
3218 decode( l_activities(idx).attribute4, fnd_api.g_miss_char, null, l_activities(idx).attribute4),
3219 decode( l_activities(idx).attribute5, fnd_api.g_miss_char, null, l_activities(idx).attribute5),
3220 decode( l_activities(idx).attribute6, fnd_api.g_miss_char, null, l_activities(idx).attribute6),
3221 decode( l_activities(idx).attribute7, fnd_api.g_miss_char, null, l_activities(idx).attribute7),
3222 decode( l_activities(idx).attribute8, fnd_api.g_miss_char, null, l_activities(idx).attribute8),
3223 decode( l_activities(idx).attribute9, fnd_api.g_miss_char, null, l_activities(idx).attribute9),
3224 decode( l_activities(idx).attribute10, fnd_api.g_miss_char, null, l_activities(idx).attribute10),
3225 decode( l_activities(idx).attribute11, fnd_api.g_miss_char, null, l_activities(idx).attribute11),
3226 decode( l_activities(idx).attribute12, fnd_api.g_miss_char, null, l_activities(idx).attribute12),
3227 decode( l_activities(idx).attribute13, fnd_api.g_miss_char, null, l_activities(idx).attribute13),
3228 decode( l_activities(idx).attribute14, fnd_api.g_miss_char, null, l_activities(idx).attribute14),
3229 decode( l_activities(idx).attribute15, fnd_api.g_miss_char, null, l_activities(idx).attribute15),
3230 decode( l_activities(idx).attribute_category, fnd_api.g_miss_char, null, l_activities(idx).attribute_category),
3231 l_active_perf,
3232 decode( l_activities(idx).script_trans_id, fnd_api.g_miss_num, null, l_activities(idx).script_trans_id),
3233 decode( l_activities(idx).role, fnd_api.g_miss_char, null, l_activities(idx).role),
3234 decode( l_activities(idx).doc_source_object_name, fnd_api.g_miss_char, null,l_activities(idx).doc_source_object_name),
3235 --, l_activities(idx).resource_id
3236 -- Added missed columns 09/10/2002
3237 decode( l_activities(idx).cust_account_id, fnd_api.g_miss_num, null, l_activities(idx).cust_account_id),
3238 decode( l_activities(idx).cust_org_id, fnd_api.g_miss_num, null, l_activities(idx).cust_org_id),
3239 decode( l_activities(idx).doc_ref, fnd_api.g_miss_char, null, l_activities(idx).doc_ref),
3240 decode( l_activities(idx).bulk_writer_code, fnd_api.g_miss_char, null, l_activities(idx).bulk_writer_code),
3241 decode( l_activities(idx).bulk_batch_type, fnd_api.g_miss_char, null, l_activities(idx).bulk_batch_type),
3242 decode( l_activities(idx).bulk_batch_id, fnd_api.g_miss_num, null, l_activities(idx).bulk_batch_id),
3243 decode( l_activities(idx).bulk_interaction_id, fnd_api.g_miss_num, null, l_activities(idx).bulk_interaction_id)
3244 );
3245 END loop;
3246
3247 -- DBMS_OUTPUT.PUT_LINE('PAST insert into activities');
3248 IF ((l_int_val_rec.parent_id IS NOT NULL) AND (l_int_val_rec.parent_id <> fnd_api.g_miss_num)) THEN
3249 insert into jtf_ih_interaction_inters
3250 (
3251 INTERACT_INTERACTION_ID,
3252 INTERACT_INTERACTION_IDRELATES,
3253 CREATED_BY,
3254 CREATION_DATE,
3255 LAST_UPDATED_BY,
3256 LAST_UPDATE_DATE,
3257 LAST_UPDATE_LOGIN
3258 )
3259 values
3260 (
3261 l_int_val_rec.interaction_id,
3262 l_int_val_rec.parent_id,
3263 p_user_id,
3264 Sysdate,
3265 p_user_id,
3266 Sysdate,
3267 p_user_id
3268 );
3269 END IF;
3270
3271 --
3272 -- Set OUT value
3273 --
3274 --x_interaction_id := l_int_val_rec.interaction_id;
3275
3276 -- Post processing Call
3277
3278 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_INTERACTION', 'A', 'V') THEN
3279 JTF_IH_PUB_VUHK.create_interaction_post(
3280 --p_interaction_rec=>l_interaction_rec,
3281 p_interaction_rec=>l_int_val_rec,
3282 --p_activities=>l_activities_hk,
3283 p_activities=>l_activities,
3284 x_data=>l_data,
3285 x_count=>l_count,
3286 x_return_code=>l_return_code);
3287 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
3288 RAISE FND_API.G_EXC_ERROR;
3289 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3290 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3291 END IF;
3292 END IF;
3293
3294 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CREATE_INTERACTION', 'A', 'C') THEN
3295 JTF_IH_PUB_CUHK.create_interaction_post(
3296 --p_interaction_rec=>l_interaction_rec,
3297 p_interaction_rec=>l_int_val_rec,
3298 --p_activities=>l_activities_hk,
3299 p_activities=>l_activities,
3300 x_data=>l_data,
3301 x_count=>l_count,
3302 x_return_code=>l_return_code);
3303 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
3304 RAISE FND_API.G_EXC_ERROR;
3305 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3306 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3307 END IF;
3308 END IF;
3309
3310
3311 -- Standard check of p_commit
3312 IF fnd_api.to_boolean(p_commit) THEN
3313 COMMIT WORK;
3314 END IF;
3315
3316 -- Standard call to get message count and if count is 1, get message info
3317 fnd_msg_pub.count_and_get
3318 ( p_count => x_msg_count,
3319 p_data => x_msg_data );
3320
3321 EXCEPTION
3322 WHEN fnd_api.g_exc_error THEN
3323 ROLLBACK TO create_interaction_pub;
3324 x_return_status := fnd_api.g_ret_sts_error;
3325 fnd_msg_pub.count_and_get
3326 ( p_count => x_msg_count,
3327 p_data => x_msg_data );
3328 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
3329
3330 WHEN fnd_api.g_exc_unexpected_error THEN
3331 ROLLBACK TO create_interaction_pub;
3332 x_return_status := fnd_api.g_ret_sts_unexp_error;
3333 fnd_msg_pub.count_and_get
3334 ( p_count => x_msg_count,
3335 p_data => x_msg_data );
3336 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
3337
3338 WHEN OTHERS THEN
3339 ROLLBACK TO create_interaction_pub;
3340 x_return_status := fnd_api.g_ret_sts_unexp_error;
3341 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
3342 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
3343 END IF;
3344 fnd_msg_pub.count_and_get
3345 ( p_count => x_msg_count,
3346 p_data => x_msg_data );
3347 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
3348 END Create_Interaction;
3349
3350
3351 --
3352 -- HISTORY
3353 --
3354 -- AUTHOR DATE MODIFICATION DESCRIPTION
3355 -- ------ ---- --------------------------
3356 --
3357 -- INITIAL VERSION
3358 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
3359 -- James Baldo Jr. 31-JUL-2000 Implementation fix for bugdb # 1340799
3360 --
3361
3362 PROCEDURE Get_InteractionActivityCount
3363 (
3364 p_api_version IN NUMBER,
3365 p_init_msg_list IN VARCHAR2, --DEFAULT FND_API.G_FALSE,
3366 p_resp_appl_id IN NUMBER DEFAULT NULL,
3367 p_resp_id IN NUMBER DEFAULT NULL,
3368 p_user_id IN NUMBER,
3369 p_login_id IN NUMBER DEFAULT NULL,
3370 x_return_status OUT NOCOPY VARCHAR2,
3371 x_msg_count OUT NOCOPY NUMBER,
3372 x_msg_data OUT NOCOPY VARCHAR2,
3373 p_outcome_id IN NUMBER,
3374 p_result_id IN NUMBER,
3375 p_reason_id IN NUMBER,
3376 p_script_id IN NUMBER,
3377 p_media_id IN NUMBER,
3378 x_activity_count OUT NOCOPY NUMBER
3379 ) AS
3380 l_api_name CONSTANT VARCHAR2(30) := 'Get_InteractionActivityCount';
3381 l_api_version CONSTANT NUMBER := 1.0;
3382 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
3383 l_return_status VARCHAR2(1);
3384 actionCount NUMBER;
3385 l_return_code VARCHAR2(1);
3386 l_data VARCHAR2(2000);
3387 l_count NUMBER;
3388 l_outcome_id NUMBER;
3389 l_result_id NUMBER;
3390 l_reason_id NUMBER;
3391 l_script_id NUMBER;
3392 l_media_id NUMBER;
3393
3394 BEGIN
3395 -- Preprocessing Call
3396 l_outcome_id := p_outcome_id;
3397 l_result_id := p_result_id;
3398 l_reason_id := p_reason_id;
3399 l_script_id := p_script_id;
3400 l_media_id := p_media_id;
3401 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'GET_INTERACTIONACTIVITYCOUNT', 'B', 'C') THEN
3402 JTF_IH_PUB_CUHK.get_interactionactcnt_pre(
3403 p_outcome_id=>l_outcome_id,
3404 p_result_id=>l_result_id,
3405 p_reason_id=>l_reason_id,
3406 p_script_id=>l_script_id,
3407 p_media_id=>l_media_id,
3408 x_data=>l_data,
3409 x_count=>l_count,
3410 x_return_code=>l_return_code);
3411 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
3412 RAISE FND_API.G_EXC_ERROR;
3413 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3414 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3415 END IF;
3416 END IF;
3417
3418 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'GET_INTERACTIONACTIVITYCOUNT', 'B', 'V') THEN
3419 JTF_IH_PUB_VUHK.get_interactionactcnt_pre(
3420 p_outcome_id=>l_outcome_id,
3421 p_result_id=>l_result_id,
3422 p_reason_id=>l_reason_id,
3423 p_script_id=>l_script_id,
3424 p_media_id=>l_media_id,
3425 x_data=>l_data,
3426 x_count=>l_count,
3427 x_return_code=>l_return_code);
3428 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
3429 RAISE FND_API.G_EXC_ERROR;
3430 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3431 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3432 END IF;
3433 END IF;
3434
3435 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
3436 l_api_name, g_pkg_name) THEN
3437 RAISE fnd_api.g_exc_unexpected_error;
3438 END IF;
3439
3440 -- Initialize message list if p_init_msg_list is set to TRUE
3441 IF fnd_api.to_boolean(p_init_msg_list) THEN
3442 fnd_msg_pub.initialize;
3443 END IF;
3444
3445 -- Initialize API return status to success
3446 x_return_status := fnd_api.g_ret_sts_success;
3447
3448 --
3449 -- Apply business-rule validation to all required and passed parameters
3450 --
3451 -- Validate user and login session IDs
3452 --
3453 IF (p_user_id IS NULL) THEN
3454 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
3455 RAISE fnd_api.g_exc_error;
3456 ELSE
3457 jtf_ih_core_util_pvt.validate_who_info
3458 ( p_api_name => l_api_name_full,
3459 p_parameter_name_usr => 'p_user_id',
3460 p_parameter_name_log => 'p_login_id',
3461 p_user_id => p_user_id,
3462 p_login_id => p_login_id,
3463 x_return_status => l_return_status );
3464 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
3465 RAISE fnd_api.g_exc_error;
3466 END IF;
3467 END IF;
3468 --
3469 -- There are 2**4 combinations for this search
3470 --
3471 -- Case one all parameters valid
3472 --
3473 IF (((p_outcome_id IS NOT NULL) OR (p_outcome_id <> fnd_api.g_miss_num)) AND
3474 ((p_result_id IS NOT NULL) OR (p_result_id <> fnd_api.g_miss_num)) AND
3475 ((p_reason_id IS NOT NULL) OR (p_reason_id <> fnd_api.g_miss_num)) AND
3476 ((p_media_id IS NOT NULL) OR (p_media_id <> fnd_api.g_miss_num))) THEN
3477
3478 SELECT count(activity_id) into actionCount
3479 FROM jtf_ih_Activities
3480 where outcome_id = p_outcome_id
3481 and result_id = p_result_id
3482 and reason_id = p_reason_id
3483 and media_id = p_media_id
3484 ;
3485 x_activity_count := actionCount;
3486 ELSIF (((p_outcome_id IS NOT NULL) OR (p_outcome_id <> fnd_api.g_miss_num)) AND
3487 ((p_result_id IS NOT NULL) OR (p_result_id <> fnd_api.g_miss_num)) AND
3488 ((p_reason_id IS NOT NULL) OR (p_reason_id <> fnd_api.g_miss_num)) AND
3489 ((p_media_id IS NULL) OR (p_media_id = fnd_api.g_miss_num))) THEN
3490
3491 SELECT count(activity_id) into actionCount
3492 FROM jtf_ih_Activities
3493 where outcome_id = p_outcome_id
3494 and result_id = p_result_id
3495 and reason_id = p_reason_id
3496 ;
3497 x_activity_count := actionCount;
3498 ELSIF (((p_outcome_id IS NOT NULL) OR (p_outcome_id <> fnd_api.g_miss_num)) AND
3499 ((p_result_id IS NOT NULL) OR (p_result_id <> fnd_api.g_miss_num)) AND
3500 ((p_reason_id IS NULL) OR (p_reason_id = fnd_api.g_miss_num)) AND
3501 ((p_media_id IS NOT NULL) OR (p_media_id <> fnd_api.g_miss_num))) THEN
3502
3503 SELECT count(activity_id) into actionCount
3504 FROM jtf_ih_Activities
3505 where outcome_id = p_outcome_id
3506 and result_id = p_result_id
3507 and media_id = p_media_id
3508 ;
3509 x_activity_count := actionCount;
3510 ELSIF (((p_outcome_id IS NOT NULL) OR (p_outcome_id <> fnd_api.g_miss_num)) AND
3511 ((p_result_id IS NOT NULL) OR (p_result_id <> fnd_api.g_miss_num)) AND
3512 ((p_reason_id IS NULL) OR (p_reason_id = fnd_api.g_miss_num)) AND
3513 ((p_media_id IS NULL) OR (p_media_id = fnd_api.g_miss_num))) THEN
3514
3515 SELECT count(*) into actionCount
3516 FROM jtf_ih_Activities
3517 where outcome_id = p_outcome_id
3518 and result_id = p_result_id
3519 ;
3520 x_activity_count := actionCount;
3521 ELSIF (((p_outcome_id IS NOT NULL) OR (p_outcome_id <> fnd_api.g_miss_num)) AND
3522 ((p_result_id IS NULL) OR (p_result_id = fnd_api.g_miss_num)) AND
3523 ((p_reason_id IS NOT NULL) OR (p_reason_id <> fnd_api.g_miss_num)) AND
3524 ((p_media_id IS NOT NULL) OR (p_media_id <> fnd_api.g_miss_num))) THEN
3525
3526 SELECT count(*) into actionCount
3527 FROM jtf_ih_Activities
3528 where outcome_id = p_outcome_id
3529 and reason_id = p_reason_id
3530 and media_id = p_media_id
3531 ;
3532 x_activity_count := actionCount;
3533 ELSIF (((p_outcome_id IS NOT NULL) OR (p_outcome_id <> fnd_api.g_miss_num)) AND
3534 ((p_result_id IS NULL) OR (p_result_id = fnd_api.g_miss_num)) AND
3535 ((p_reason_id IS NOT NULL) OR (p_reason_id <> fnd_api.g_miss_num)) AND
3536 ((p_media_id IS NULL) OR (p_media_id = fnd_api.g_miss_num))) THEN
3537
3538 SELECT count(*) into actionCount
3539 FROM jtf_ih_Activities
3540 where outcome_id = p_outcome_id
3541 and reason_id = p_reason_id
3542 ;
3543 x_activity_count := actionCount;
3544 ELSIF (((p_outcome_id IS NOT NULL) OR (p_outcome_id <> fnd_api.g_miss_num)) AND
3545 ((p_result_id IS NULL) OR (p_result_id = fnd_api.g_miss_num)) AND
3546 ((p_reason_id IS NULL) OR (p_reason_id = fnd_api.g_miss_num)) AND
3547 ((p_media_id IS NOT NULL) OR (p_media_id <> fnd_api.g_miss_num))) THEN
3548
3549 SELECT count(*) into actionCount
3550 FROM jtf_ih_Activities
3551 where outcome_id = p_outcome_id
3552 and media_id = p_media_id
3553 ;
3554 x_activity_count := actionCount;
3555 ELSIF (((p_outcome_id IS NOT NULL) OR (p_outcome_id <> fnd_api.g_miss_num)) AND
3556 ((p_result_id IS NULL) OR (p_result_id = fnd_api.g_miss_num)) AND
3557 ((p_reason_id IS NULL) OR (p_reason_id = fnd_api.g_miss_num)) AND
3558 ((p_media_id IS NULL) OR (p_media_id = fnd_api.g_miss_num))) THEN
3559
3560 SELECT count(*) into actionCount
3561 FROM jtf_ih_Activities
3562 where outcome_id = p_outcome_id
3563 ;
3564 x_activity_count := actionCount;
3565 ELSIF (((p_outcome_id IS NULL) OR (p_outcome_id = fnd_api.g_miss_num)) AND
3566 ((p_result_id IS NOT NULL) OR (p_result_id <> fnd_api.g_miss_num)) AND
3567 ((p_reason_id IS NOT NULL) OR (p_reason_id <> fnd_api.g_miss_num)) AND
3568 ((p_media_id IS NOT NULL) OR (p_media_id <> fnd_api.g_miss_num))) THEN
3569
3570 SELECT count(*) into actionCount
3571 FROM jtf_ih_Activities
3572 where outcome_id = p_outcome_id
3573 and result_id = p_result_id
3574 and reason_id = p_reason_id
3575 and media_id = p_media_id
3576 ;
3577 x_activity_count := actionCount;
3578 ELSIF (((p_outcome_id IS NULL) OR (p_outcome_id = fnd_api.g_miss_num)) AND
3579 ((p_result_id IS NOT NULL) OR (p_result_id <> fnd_api.g_miss_num)) AND
3580 ((p_reason_id IS NOT NULL) OR (p_reason_id <> fnd_api.g_miss_num)) AND
3581 ((p_media_id IS NULL) OR (p_media_id = fnd_api.g_miss_num))) THEN
3582
3583 SELECT count(*) into actionCount
3584 FROM jtf_ih_Activities
3585 where outcome_id = p_outcome_id
3586 and result_id = p_result_id
3587 and reason_id = p_reason_id
3588 ;
3589 x_activity_count := actionCount;
3590 ELSIF (((p_outcome_id IS NULL) OR (p_outcome_id = fnd_api.g_miss_num)) AND
3591 ((p_result_id IS NOT NULL) OR (p_result_id <> fnd_api.g_miss_num)) AND
3592 ((p_reason_id IS NULL) OR (p_reason_id = fnd_api.g_miss_num)) AND
3593 ((p_media_id IS NOT NULL) OR (p_media_id <> fnd_api.g_miss_num))) THEN
3594
3595 SELECT count(*) into actionCount
3596 FROM jtf_ih_Activities
3597 where outcome_id = p_outcome_id
3598 and result_id = p_result_id
3599 and media_id = p_media_id
3600 ;
3601 x_activity_count := actionCount;
3602 ELSIF (((p_outcome_id IS NULL) OR (p_outcome_id = fnd_api.g_miss_num)) AND
3603 ((p_result_id IS NOT NULL) OR (p_result_id <> fnd_api.g_miss_num)) AND
3604 ((p_reason_id IS NULL) OR (p_reason_id = fnd_api.g_miss_num)) AND
3605 ((p_media_id IS NULL) OR (p_media_id = fnd_api.g_miss_num))) THEN
3606
3607 SELECT count(*) into actionCount
3608 FROM jtf_ih_Activities
3609 where outcome_id = p_outcome_id
3610 and result_id = p_result_id
3611 ;
3612 x_activity_count := actionCount;
3613 ELSIF (((p_outcome_id IS NULL) OR (p_outcome_id = fnd_api.g_miss_num)) AND
3614 ((p_result_id IS NULL) OR (p_result_id = fnd_api.g_miss_num)) AND
3615 ((p_reason_id IS NOT NULL) OR (p_reason_id <> fnd_api.g_miss_num)) AND
3616 ((p_media_id IS NOT NULL) OR (p_media_id <> fnd_api.g_miss_num))) THEN
3617
3618 SELECT count(*) into actionCount
3619 FROM jtf_ih_Activities
3620 where outcome_id = p_outcome_id
3621 and reason_id = p_reason_id
3622 and media_id = p_media_id
3623 ;
3624 x_activity_count := actionCount;
3625 ELSIF (((p_outcome_id IS NULL) OR (p_outcome_id = fnd_api.g_miss_num)) AND
3626 ((p_result_id IS NULL) OR (p_result_id = fnd_api.g_miss_num)) AND
3627 ((p_reason_id IS NOT NULL) OR (p_reason_id <> fnd_api.g_miss_num)) AND
3628 ((p_media_id IS NULL) OR (p_media_id = fnd_api.g_miss_num))) THEN
3629
3630 SELECT count(*) into actionCount
3631 FROM jtf_ih_Activities
3632 where outcome_id = p_outcome_id
3633 and reason_id = p_reason_id
3634 ;
3635 x_activity_count := actionCount;
3636 ELSIF (((p_outcome_id IS NULL) OR (p_outcome_id = fnd_api.g_miss_num)) AND
3637 ((p_result_id IS NULL) OR (p_result_id = fnd_api.g_miss_num)) AND
3638 ((p_reason_id IS NULL) OR (p_reason_id = fnd_api.g_miss_num)) AND
3639 ((p_media_id IS NOT NULL) OR (p_media_id <> fnd_api.g_miss_num))) THEN
3640
3641 SELECT count(*) into actionCount
3642 FROM jtf_ih_Activities
3643 where outcome_id = p_outcome_id
3644 and media_id = p_media_id
3645 ;
3646 x_activity_count := actionCount;
3647 ELSIF (((p_outcome_id IS NULL) OR (p_outcome_id = fnd_api.g_miss_num)) AND
3648 ((p_result_id IS NULL) OR (p_result_id = fnd_api.g_miss_num)) AND
3649 ((p_reason_id IS NULL) OR (p_reason_id = fnd_api.g_miss_num)) AND
3650 ((p_media_id IS NULL) OR (p_media_id = fnd_api.g_miss_num))) THEN
3651
3652 SELECT count(*) into actionCount
3653 FROM jtf_ih_Activities
3654 where outcome_id = p_outcome_id
3655 ;
3656 x_activity_count := actionCount;
3657 END IF;
3658
3659
3660 -- Post processing Call
3661 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'GET_INTERACTIONACTIVITYCOUNT', 'B', 'V') THEN
3662 JTF_IH_PUB_VUHK.get_interactionactcnt_post(
3663 p_outcome_id=>l_outcome_id,
3664 p_result_id=>l_result_id,
3665 p_reason_id=>l_reason_id,
3666 p_script_id=>l_script_id,
3667 p_media_id=>l_media_id,
3668 x_data=>l_data,
3669 x_count=>l_count,
3670 x_return_code=>l_return_code);
3671 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
3672 RAISE FND_API.G_EXC_ERROR;
3673 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3674 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3675 END IF;
3676 END IF;
3677
3678 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'GET_INTERACTIONACTIVITYCOUNT', 'B', 'C') THEN
3679 JTF_IH_PUB_CUHK.get_interactionactcnt_post(
3680 p_outcome_id=>l_outcome_id,
3681 p_result_id=>l_result_id,
3682 p_reason_id=>l_reason_id,
3683 p_script_id=>l_script_id,
3684 p_media_id=>l_media_id,
3685 x_data=>l_data,
3686 x_count=>l_count,
3687 x_return_code=>l_return_code);
3688 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
3689 RAISE FND_API.G_EXC_ERROR;
3690 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3691 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3692 END IF;
3693 END IF;
3694
3695 -- Standard call to get message count and if count is 1, get message info
3696 fnd_msg_pub.count_and_get
3697 ( p_count => x_msg_count,
3698 p_data => x_msg_data );
3699 EXCEPTION
3700 WHEN fnd_api.g_exc_error THEN
3701 x_return_status := fnd_api.g_ret_sts_error;
3702 fnd_msg_pub.count_and_get
3703 ( p_count => x_msg_count,
3704 p_data => x_msg_data );
3705 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
3706 WHEN fnd_api.g_exc_unexpected_error THEN
3707 x_return_status := fnd_api.g_ret_sts_unexp_error;
3708 fnd_msg_pub.count_and_get
3709 ( p_count => x_msg_count,
3710 p_data => x_msg_data );
3711 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
3712 WHEN OTHERS THEN
3713 x_return_status := fnd_api.g_ret_sts_unexp_error;
3714 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
3715 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
3716 END IF;
3717 fnd_msg_pub.count_and_get
3718 ( p_count => x_msg_count,
3719 p_data => x_msg_data );
3720 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
3721 END Get_InteractionActivityCount;
3722
3723 --
3724 -- HISTORY
3725 --
3726 -- AUTHOR DATE MODIFICATION DESCRIPTION
3727 -- ------ ---- --------------------------
3728 --
3729 -- INITIAL VERSION
3730 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
3731 --
3732 PROCEDURE Get_InteractionCount
3733 (
3734 p_api_version IN NUMBER,
3735 p_init_msg_list IN VARCHAR2, --DEFAULT FND_API.G_FALSE,
3736 p_resp_appl_id IN NUMBER DEFAULT NULL,
3737 p_resp_id IN NUMBER DEFAULT NULL,
3738 p_user_id IN NUMBER,
3739 p_login_id IN NUMBER DEFAULT NULL,
3740 x_return_status OUT NOCOPY VARCHAR2,
3741 x_msg_count OUT NOCOPY NUMBER,
3742 x_msg_data OUT NOCOPY VARCHAR2,
3743 p_outcome_id IN NUMBER,
3744 p_result_id IN NUMBER,
3745 p_reason_id IN NUMBER,
3746 p_attribute1 IN VARCHAR2 DEFAULT NULL,
3747 p_attribute2 IN VARCHAR2 DEFAULT NULL,
3748 p_attribute3 IN VARCHAR2 DEFAULT NULL,
3749 p_attribute4 IN VARCHAR2 DEFAULT NULL,
3750 p_attribute5 IN VARCHAR2 DEFAULT NULL,
3751 p_attribute6 IN VARCHAR2 DEFAULT NULL,
3752 p_attribute7 IN VARCHAR2 DEFAULT NULL,
3753 p_attribute8 IN VARCHAR2 DEFAULT NULL,
3754 p_attribute9 IN VARCHAR2 DEFAULT NULL,
3755 p_attribute10 IN VARCHAR2 DEFAULT NULL,
3756 p_attribute11 IN VARCHAR2 DEFAULT NULL,
3757 p_attribute12 IN VARCHAR2 DEFAULT NULL,
3758 p_attribute13 IN VARCHAR2 DEFAULT NULL,
3759 p_attribute14 IN VARCHAR2 DEFAULT NULL,
3760 p_attribute15 IN VARCHAR2 DEFAULT NULL,
3761 p_attribute_category IN VARCHAR2 DEFAULT NULL,
3762 x_interaction_count OUT NOCOPY NUMBER
3763 ) AS
3764 l_api_name CONSTANT VARCHAR2(30) := 'Get_InteractionCount';
3765 l_api_version CONSTANT NUMBER := 1.1;
3766 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
3767 l_return_status VARCHAR2(1);
3768 interactionCount NUMBER;
3769 l_return_code VARCHAR2(1);
3770 l_data VARCHAR2(2000);
3771 l_count NUMBER;
3772 l_outcome_id NUMBER;
3773 l_result_id NUMBER;
3774 l_reason_id NUMBER;
3775
3776 BEGIN
3777 -- Preprocessing Call
3778 l_outcome_id := p_outcome_id;
3779 l_result_id := p_result_id;
3780 l_reason_id := p_reason_id;
3781 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'GET_INTERACTIONCOUNT', 'B', 'C') THEN
3782 JTF_IH_PUB_CUHK.get_interactioncount_pre(
3783 p_outcome_id=>l_outcome_id,
3784 p_result_id=>l_result_id,
3785 p_reason_id=>l_reason_id,
3786 x_data=>l_data,
3787 x_count=>l_count,
3788 x_return_code=>l_return_code);
3789 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
3790 RAISE FND_API.G_EXC_ERROR;
3791 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3792 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3793 END IF;
3794 END IF;
3795
3796 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'GET_INTERACTIONCOUNT', 'B', 'V') THEN
3797 JTF_IH_PUB_VUHK.get_interactioncount_pre(
3798 p_outcome_id=>l_outcome_id,
3799 p_result_id=>l_result_id,
3800 p_reason_id=>l_reason_id,
3801 x_data=>l_data,
3802 x_count=>l_count,
3803 x_return_code=>l_return_code);
3804 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
3805 RAISE FND_API.G_EXC_ERROR;
3806 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3807 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3808 END IF;
3809 END IF;
3810
3811 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
3812 l_api_name, g_pkg_name) THEN
3813 RAISE fnd_api.g_exc_unexpected_error;
3814 END IF;
3815
3816 -- Initialize message list if p_init_msg_list is set to TRUE
3817 IF fnd_api.to_boolean(p_init_msg_list) THEN
3818 fnd_msg_pub.initialize;
3819 END IF;
3820
3821 -- Initialize API return status to success
3822 x_return_status := fnd_api.g_ret_sts_success;
3823
3824 --
3825 -- Apply business-rule validation to all required and passed parameters
3826 --
3827 -- Validate user and login session IDs
3828 --
3829 IF (p_user_id IS NULL) THEN
3830 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
3831 RAISE fnd_api.g_exc_error;
3832 ELSE
3833 jtf_ih_core_util_pvt.validate_who_info
3834 ( p_api_name => l_api_name_full,
3835 p_parameter_name_usr => 'p_user_id',
3836 p_parameter_name_log => 'p_login_id',
3837 p_user_id => p_user_id,
3838 p_login_id => p_login_id,
3839 x_return_status => l_return_status );
3840 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
3841 RAISE fnd_api.g_exc_error;
3842 END IF;
3843 END IF;
3844
3845 SELECT count(*) into interactionCount
3846 FROM jtf_ih_Interactions
3847 where outcome_id = p_outcome_id
3848 and result_id = p_result_id
3849 and reason_id = p_reason_id
3850 -- and (attribute1 = p_attribute1) -- or (p_attribute1 is NULL and attribute1 is NULL))
3851 -- and (attribute2 = p_attribute2) -- or (p_attribute2 is NULL and attribute2 is NULL))
3852 -- and (attribute3 = p_attribute3) -- or (p_attribute3 is NULL and attribute3 is NULL))
3853 -- and (attribute4 = p_attribute4) -- or (p_attribute4 is NULL and attribute4 is NULL))
3854 -- and (attribute5 = p_attribute5) -- or (p_attribute5 is NULL and attribute5 is NULL))
3855 -- and (attribute6 = p_attribute6) -- or (p_attribute6 is NULL and attribute6 is NULL))
3856 -- and (attribute7 = p_attribute7) -- or (p_attribute7 is NULL and attribute7 is NULL))
3857 -- and (attribute8 = p_attribute8) -- or (p_attribute8 is NULL and attribute8 is NULL))
3858 -- and (attribute9 = p_attribute9) -- or (p_attribute9 is NULL and attribute9 is NULL))
3859 -- and (attribute10 = p_attribute10) -- or (p_attribute10 is NULL and attribute10 is NULL))
3860 -- and (attribute11 = p_attribute11) -- or (p_attribute11 is NULL and attribute11 is NULL))
3861 -- and (attribute12 = p_attribute12) -- or (p_attribute12 is NULL and attribute12 is NULL))
3862 -- and (attribute13 = p_attribute13) -- or (p_attribute13 is NULL and attribute13 is NULL))
3863 -- and (attribute14 = p_attribute14) -- or (p_attribute14 is NULL and attribute14 is NULL))
3864 -- and (attribute15 = p_attribute15) -- or (p_attribute15 is NULL and attribute15 is NULL))
3865 -- and (p_attribute_category = p_attribute_category) -- or (p_attribute_category is NULL and p_attribute_category is NULL))
3866 ;
3867 x_interaction_count := interactionCount;
3868 -- Post processing Call
3869 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'GET_INTERACTIONCOUNT', 'B', 'V') THEN
3870 JTF_IH_PUB_VUHK.get_interactioncount_post(
3871 p_outcome_id=>l_outcome_id,
3872 p_result_id=>l_result_id,
3873 p_reason_id=>l_reason_id,
3874 x_data=>l_data,
3875 x_count=>l_count,
3876 x_return_code=>l_return_code);
3877 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
3878 RAISE FND_API.G_EXC_ERROR;
3879 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3880 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3881 END IF;
3882 END IF;
3883
3884 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'GET_INTERACTIONCOUNT', 'B', 'C') THEN
3885 JTF_IH_PUB_CUHK.get_interactioncount_post(
3886 p_outcome_id=>l_outcome_id,
3887 p_result_id=>l_result_id,
3888 p_reason_id=>l_reason_id,
3889 x_data=>l_data,
3890 x_count=>l_count,
3891 x_return_code=>l_return_code);
3892 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
3893 RAISE FND_API.G_EXC_ERROR;
3894 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3895 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3896 END IF;
3897 END IF;
3898
3899 -- Standard call to get message count and if count is 1, get message info
3900 fnd_msg_pub.count_and_get
3901 ( p_count => x_msg_count,
3902 p_data => x_msg_data );
3903 EXCEPTION
3904 WHEN fnd_api.g_exc_error THEN
3905 x_return_status := fnd_api.g_ret_sts_error;
3906 fnd_msg_pub.count_and_get
3907 ( p_count => x_msg_count,
3908 p_data => x_msg_data );
3909 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
3910 WHEN fnd_api.g_exc_unexpected_error THEN
3911 x_return_status := fnd_api.g_ret_sts_unexp_error;
3912 fnd_msg_pub.count_and_get
3913 ( p_count => x_msg_count,
3914 p_data => x_msg_data );
3915 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
3916 WHEN OTHERS THEN
3917 x_return_status := fnd_api.g_ret_sts_unexp_error;
3918 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
3919 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
3920 END IF;
3921 fnd_msg_pub.count_and_get
3922 ( p_count => x_msg_count,
3923 p_data => x_msg_data );
3924 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
3925 END Get_InteractionCount;
3926 --
3927 -- HISTORY
3928 --
3929 -- AUTHOR DATE MODIFICATION DESCRIPTION
3930 -- ------ ---- --------------------------
3931 --
3932 -- Jean Zhu 11-JAN-2000 INITIAL VERSION
3933 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
3934 -- James Baldo Jr. 02-MAY-2000 Fix for Start_Date_Time and End_Date_Time bugdb # 1286036
3935 -- James Baldo Jr. 27-JUL-2000 Fix for Start_Date_Time initialization when G_MISS_DATE
3936 -- for bugdb # 1339916.
3937 -- Igor Aleshin 12-MAY-2001 Added request for the column Script_Trans_ID in the JTF_IH_ACTIVITIES.
3938 -- Igor Aleshin 21-DEC-2001 Fix for bugdb - 2153913 - PREVENT G_MISS_DATE VALUE FROM BEING
3939 -- WRITTEN TO THE END_DATE_TIME VALUE.
3940 -- Igor Aleshin 18-APR-2001 Fix for bugdb 2323210 - 1157.6RI:API
3941 -- ERR:JTF_IH_PUB.CLOSE_INTERACTION:WHEN DISAGREE WITH OKC IN IBE
3942 -- Igor Aleshin 24-FEB-2003 Fixed bug# 2817083 - Error loggin interactions
3943 -- Igor Aleshin 18-JUN-2003 Enh# 1846960 - REQUIRE CONTACT NAME OF ORGANISATION IN INTERACTION HISTORY
3944 --
3945 --
3946
3947 PROCEDURE Open_Interaction
3948 (
3949 p_api_version IN NUMBER,
3950 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
3951 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
3952 p_resp_appl_id IN NUMBER DEFAULT NULL,
3953 p_resp_id IN NUMBER DEFAULT NULL,
3954 p_user_id IN NUMBER,
3955 p_login_id IN NUMBER DEFAULT NULL,
3956 x_return_status OUT NOCOPY VARCHAR2,
3957 x_msg_count OUT NOCOPY NUMBER,
3958 x_msg_data OUT NOCOPY VARCHAR2,
3959 p_interaction_rec IN INTERACTION_REC_TYPE,
3960 x_interaction_id OUT NOCOPY NUMBER
3961 )
3962 AS
3963 l_api_name CONSTANT VARCHAR2(30) := 'Open_Interaction';
3964 l_api_version CONSTANT NUMBER := 1.0;
3965 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
3966 l_return_status VARCHAR2(1);
3967 --l_interaction_id NUMBER;
3968 --l_start_date_time DATE;
3969 -- 20153913
3970 --l_end_date_time DATE;
3971 l_active VARCHAR2(1);
3972 --l_duration NUMBER := NULL;
3973 --l_productive_time_amount NUMBER := NULL;
3974 l_test_msg VARCHAR2(1996);
3975 l_return_code VARCHAR2(1);
3976 l_data VARCHAR2(2000);
3977 l_count NUMBER;
3978 l_interaction_rec INTERACTION_REC_TYPE;
3979 BEGIN
3980 -- local variables initialization to remove GSCC warnings
3981 l_active := 'Y';
3982
3983 -- Standard start of API savepoint
3984 SAVEPOINT open_interaction_pub;
3985
3986 -- Preprocessing Call
3987 l_interaction_rec := p_interaction_rec;
3988 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'OPEN_INTERACTION', 'B', 'C') THEN
3989 JTF_IH_PUB_CUHK.open_interaction_pre(p_interaction_rec=>l_interaction_rec,
3990 x_data=>l_data,
3991 x_count=>l_count,
3992 x_return_code=>l_return_code);
3993 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
3994 RAISE FND_API.G_EXC_ERROR;
3995 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3996 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3997 END IF;
3998 END IF;
3999
4000 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'OPEN_INTERACTION', 'B', 'V') THEN
4001 JTF_IH_PUB_VUHK.open_interaction_pre(p_interaction_rec=>l_interaction_rec,
4002 x_data=>l_data,
4003 x_count=>l_count,
4004 x_return_code=>l_return_code);
4005 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
4006 RAISE FND_API.G_EXC_ERROR;
4007 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4008 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4009 END IF;
4010 END IF;
4011
4012
4013 -- Standard call to check for call compatibility
4014 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
4015 l_api_name, g_pkg_name) THEN
4016 x_return_status := fnd_api.g_ret_sts_error;
4017 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full,
4018 to_char(p_interaction_rec.interaction_id),'fnd_api.compatible_api_call');
4019
4020 RAISE fnd_api.g_exc_unexpected_error;
4021 END IF;
4022 --l_test_msg := '1';
4023 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Open_Interaction');
4024
4025 -- Initialize message list if p_init_msg_list is set to TRUE
4026 IF fnd_api.to_boolean(p_init_msg_list) THEN
4027 fnd_msg_pub.initialize;
4028 END IF;
4029
4030 -- Initialize API return status to success
4031 x_return_status := fnd_api.g_ret_sts_success;
4032
4033 --
4034 -- Apply business-rule validation to all required and passed parameters
4035 --
4036 -- Validate user and login session IDs
4037 --
4038 IF (p_user_id IS NULL) THEN
4039 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
4040 RAISE fnd_api.g_exc_error;
4041 ELSE
4042 jtf_ih_core_util_pvt.validate_who_info
4043 ( p_api_name => l_api_name_full,
4044 p_parameter_name_usr => 'p_user_id',
4045 p_parameter_name_log => 'p_login_id',
4046 p_user_id => p_user_id,
4047 p_login_id => p_login_id,
4048 x_return_status => l_return_status );
4049 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
4050 RAISE fnd_api.g_exc_error;
4051 END IF;
4052 END IF;
4053
4054 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Open_Interaction');
4055
4056 --
4057 -- Validate all non-missing attributes by calling the utility procedure.
4058 --
4059 Validate_Interaction_Record
4060 ( p_api_name => l_api_name_full,
4061 --p_int_val_rec => p_interaction_rec,
4062 p_int_val_rec => l_interaction_rec,
4063 p_resp_appl_id => p_resp_appl_id,
4064 p_resp_id => p_resp_id,
4065 x_return_status => l_return_status
4066 );
4067
4068 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
4069 RAISE fnd_api.g_exc_error;
4070 END IF;
4071
4072 -- DBMS_OUTPUT.PUT_LINE('PAST Validate_Interaction_Record in JTF_IH_PUB.Open_Interaction');
4073 -- assign the end_date_time
4074 IF (p_interaction_rec.end_date_time <> fnd_api.g_miss_date) AND (p_interaction_rec.end_date_time IS NOT NULL) THEN
4075 --l_end_date_time := p_interaction_rec.end_date_time;
4076 l_interaction_rec.end_date_time := p_interaction_rec.end_date_time;
4077 ELSE
4078 --l_end_date_time := NULL;
4079 l_interaction_rec.end_date_time := NULL;
4080 END IF;
4081
4082 -- assign the start_date_time
4083 IF((p_interaction_rec.start_date_time IS NOT NULL) AND (p_interaction_rec.start_date_time <> fnd_api.g_miss_date))THEN
4084 --l_start_date_time := p_interaction_rec.start_date_time;
4085 l_interaction_rec.start_date_time := p_interaction_rec.start_date_time;
4086 ELSE
4087 --l_start_date_time := SYSDATE;
4088 l_interaction_rec.start_date_time := SYSDATE;
4089 END IF;
4090
4091 Validate_StartEnd_Date
4092 ( p_api_name => l_api_name_full,
4093 --p_start_date_time => l_start_date_time,
4094 p_start_date_time => l_interaction_rec.start_date_time,
4095 --p_end_date_time => l_end_date_time,
4096 p_end_date_time => l_interaction_rec.end_date_time,
4097 x_return_status => l_return_status
4098 );
4099 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
4100 RAISE fnd_api.g_exc_error;
4101 END IF;
4102
4103 IF (p_interaction_rec.duration <> fnd_api.g_miss_num) AND (p_interaction_rec.duration IS NOT NULL) THEN
4104 --l_duration := p_interaction_rec.duration;
4105 l_interaction_rec.duration := p_interaction_rec.duration;
4106 ELSIF l_interaction_rec.end_date_time IS NULL THEN
4107 --l_duration := 0;
4108 l_interaction_rec.duration := 0;
4109 ELSE
4110 --l_duration := ROUND((l_end_date_time - l_start_date_time)*24*60*60);
4111 l_interaction_rec.duration := ROUND((l_interaction_rec.end_date_time - l_interaction_rec.start_date_time)*24*60*60);
4112 END IF;
4113
4114 -- assign the productive_time_amount
4115 IF(p_interaction_rec.productive_time_amount IS NOT NULL)
4116 AND (p_interaction_rec.productive_time_amount <> fnd_api.g_miss_num) THEN
4117 --l_productive_time_amount := p_interaction_rec.productive_time_amount;
4118 l_interaction_rec.productive_time_amount := p_interaction_rec.productive_time_amount;
4119 ELSIF(l_interaction_rec.duration IS NOT NULL) THEN
4120 IF(p_interaction_rec.non_productive_time_amount IS NOT NULL)
4121 -- Bug# 2153913
4122 AND (p_interaction_rec.non_productive_time_amount <> fnd_api.g_miss_num) THEN
4123 --l_productive_time_amount := l_duration - p_interaction_rec.non_productive_time_amount;
4124 l_interaction_rec.productive_time_amount := l_interaction_rec.duration - p_interaction_rec.non_productive_time_amount;
4125 IF(l_interaction_rec.productive_time_amount < 0) THEN
4126 x_return_status := fnd_api.g_ret_sts_error;
4127 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full,
4128 to_char(p_interaction_rec.non_productive_time_amount),'non_productive_time_amount');
4129 -- # 1937894
4130 fnd_msg_pub.count_and_get
4131 ( p_count => x_msg_count,
4132 p_data => x_msg_data );
4133 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
4134 RETURN;
4135 END IF;
4136 ELSE
4137 --l_productive_time_amount := l_duration;
4138 l_interaction_rec.productive_time_amount := l_interaction_rec.duration;
4139 END IF;
4140 END IF;
4141 --l_test_msg := '5';
4142
4143 --SELECT JTF_IH_INTERACTIONS_S1.NextVal into l_interaction_id FROM dual;
4144 --l_test_msg := '6';
4145
4146 -- Bug# 2817083
4147 --l_interaction_id := Get_Interaction_ID(NULL);
4148 l_interaction_rec.interaction_id := Get_Interaction_ID(NULL);
4149
4150 -- 08/26/03 mpetrosi B3102306
4151 -- added cross check of source_code, source_code_id
4152 validate_source_code(l_api_name_full, l_interaction_rec.source_code_id,
4153 l_interaction_rec.source_code, x_return_status);
4154 IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
4155 RAISE fnd_api.g_exc_error;
4156 END IF;
4157
4158 INSERT INTO jtf_ih_interactions
4159 (
4160 CREATED_BY,
4161 REFERENCE_FORM,
4162 CREATION_DATE,
4163 LAST_UPDATED_BY,
4164 DURATION,
4165 LAST_UPDATE_DATE,
4166 LAST_UPDATE_LOGIN,
4167 END_DATE_TIME,
4168 FOLLOW_UP_ACTION,
4169 NON_PRODUCTIVE_TIME_AMOUNT,
4170 RESULT_ID,
4171 REASON_ID,
4172 START_DATE_TIME,
4173 OUTCOME_ID,
4174 PREVIEW_TIME_AMOUNT,
4175 PRODUCTIVE_TIME_AMOUNT,
4176 HANDLER_ID,
4177 INTER_INTERACTION_DURATION,
4178 INTERACTION_ID,
4179 WRAP_UP_TIME_AMOUNT,
4180 SCRIPT_ID,
4181 PARTY_ID,
4182 RESOURCE_ID,
4183 OBJECT_ID,
4184 OBJECT_TYPE,
4185 SOURCE_CODE_ID,
4186 SOURCE_CODE,
4187 ATTRIBUTE1,
4188 ATTRIBUTE2,
4189 ATTRIBUTE3,
4190 ATTRIBUTE4,
4191 ATTRIBUTE5,
4192 ATTRIBUTE6,
4193 ATTRIBUTE7,
4194 ATTRIBUTE8,
4195 ATTRIBUTE9,
4196 ATTRIBUTE10,
4197 ATTRIBUTE11,
4198 ATTRIBUTE12,
4199 ATTRIBUTE13,
4200 ATTRIBUTE14,
4201 ATTRIBUTE15,
4202 ATTRIBUTE_CATEGORY,
4203 ACTIVE,
4204 TOUCHPOINT1_TYPE,
4205 TOUCHPOINT2_TYPE,
4206 METHOD_CODE,
4207 PRIMARY_PARTY_ID,
4208 CONTACT_REL_PARTY_ID,
4209 CONTACT_PARTY_ID
4210 )
4211 VALUES
4212 (
4213 p_user_id,
4214 decode(p_interaction_rec.reference_form, fnd_api.g_miss_char, null, p_interaction_rec.reference_form),
4215 Sysdate,
4216 p_user_id,
4217 --l_duration,
4218 l_interaction_rec.duration,
4219 Sysdate,
4220 p_login_id,
4221 --l_end_date_time,
4222 l_interaction_rec.end_date_time,
4223 decode( p_interaction_rec.follow_up_action, fnd_api.g_miss_char, null, p_interaction_rec.follow_up_action),
4224 decode( p_interaction_rec.non_productive_time_amount, fnd_api.g_miss_num, null, p_interaction_rec.non_productive_time_amount),
4225 decode( p_interaction_rec.result_id, fnd_api.g_miss_num, null, p_interaction_rec.result_id),
4226 decode( p_interaction_rec.reason_id, fnd_api.g_miss_num, null, p_interaction_rec.reason_id),
4227 --l_start_date_time,
4228 l_interaction_rec.start_date_time,
4229 decode( p_interaction_rec.outcome_id, fnd_api.g_miss_num, null, p_interaction_rec.outcome_id),
4230 decode( p_interaction_rec.preview_time_amount, fnd_api.g_miss_num, null, p_interaction_rec.preview_time_amount),
4231 --decode(l_productive_time_amount, fnd_api.g_miss_num, null, l_productive_time_amount),
4232 decode(l_interaction_rec.productive_time_amount, fnd_api.g_miss_num, null, l_interaction_rec.productive_time_amount),
4233 p_interaction_rec.handler_id,
4234 decode( p_interaction_rec.inter_interaction_duration, fnd_api.g_miss_num, null, p_interaction_rec.inter_interaction_duration),
4235 --l_interaction_id,
4236 l_interaction_rec.interaction_id,
4237 decode( p_interaction_rec.wrapup_time_amount, fnd_api.g_miss_num, null, p_interaction_rec.wrapup_time_amount),
4238 decode( p_interaction_rec.script_id, fnd_api.g_miss_num, null, p_interaction_rec.script_id),
4239 p_interaction_rec.party_id,
4240 p_interaction_rec.resource_id,
4241 decode( p_interaction_rec.object_id, fnd_api.g_miss_num, null, p_interaction_rec.object_id),
4242 decode( p_interaction_rec.object_type, fnd_api.g_miss_char, null, p_interaction_rec.object_type),
4243 decode( l_interaction_rec.source_code_id, fnd_api.g_miss_num, null, l_interaction_rec.source_code_id),
4244 decode( l_interaction_rec.source_code, fnd_api.g_miss_char, null, l_interaction_rec.source_code),
4245 decode( p_interaction_rec.attribute1, fnd_api.g_miss_char, null, p_interaction_rec.attribute1),
4246 decode( p_interaction_rec.attribute2, fnd_api.g_miss_char, null, p_interaction_rec.attribute2),
4247 decode( p_interaction_rec.attribute3, fnd_api.g_miss_char, null, p_interaction_rec.attribute3),
4248 decode( p_interaction_rec.attribute4, fnd_api.g_miss_char, null, p_interaction_rec.attribute4),
4249 decode( p_interaction_rec.attribute5, fnd_api.g_miss_char, null, p_interaction_rec.attribute5),
4250 decode( p_interaction_rec.attribute6, fnd_api.g_miss_char, null, p_interaction_rec.attribute6),
4251 decode( p_interaction_rec.attribute7, fnd_api.g_miss_char, null, p_interaction_rec.attribute7),
4252 decode( p_interaction_rec.attribute8, fnd_api.g_miss_char, null, p_interaction_rec.attribute8),
4253 decode( p_interaction_rec.attribute9, fnd_api.g_miss_char, null, p_interaction_rec.attribute9),
4254 decode( p_interaction_rec.attribute10, fnd_api.g_miss_char, null, p_interaction_rec.attribute10),
4255 decode( p_interaction_rec.attribute11, fnd_api.g_miss_char, null, p_interaction_rec.attribute11),
4256 decode( p_interaction_rec.attribute12, fnd_api.g_miss_char, null, p_interaction_rec.attribute12),
4257 decode( p_interaction_rec.attribute13, fnd_api.g_miss_char, null, p_interaction_rec.attribute13),
4258 decode( p_interaction_rec.attribute14, fnd_api.g_miss_char, null, p_interaction_rec.attribute14),
4259 decode( p_interaction_rec.attribute15, fnd_api.g_miss_char, null, p_interaction_rec.attribute15),
4260 decode( p_interaction_rec.attribute_category, fnd_api.g_miss_char, null, p_interaction_rec.attribute_category),
4261 l_active,
4262 decode( p_interaction_rec.touchpoint1_type, fnd_api.g_miss_char, null, p_interaction_rec.touchpoint1_type),
4263 decode( p_interaction_rec.touchpoint2_type, fnd_api.g_miss_char, null, p_interaction_rec.touchpoint2_type),
4264 decode( p_interaction_rec.method_code, fnd_api.g_miss_char, null, p_interaction_rec.method_code),
4265 decode( l_interaction_rec.primary_party_id, fnd_api.g_miss_num, null, l_interaction_rec.primary_party_id),
4266 decode( l_interaction_rec.contact_rel_party_id, fnd_api.g_miss_num, null, l_interaction_rec.contact_rel_party_id),
4267 decode( l_interaction_rec.contact_party_id, fnd_api.g_miss_num, null, l_interaction_rec.contact_party_id)
4268 );
4269 --l_test_msg := '7';
4270 -- DBMS_OUTPUT.PUT_LINE('PAST INSERT INTO jtf_ih_Interactions in JTF_IH_PUB.Open_Interaction');
4271
4272
4273 IF ((p_interaction_rec.parent_id IS NOT NULL) AND (p_interaction_rec.parent_id <> fnd_api.g_miss_num)) THEN
4274 INSERT INTO jtf_ih_interaction_inters
4275 (
4276 INTERACT_INTERACTION_ID,
4277 INTERACT_INTERACTION_IDRELATES,
4278 CREATED_BY,
4279 CREATION_DATE,
4280 LAST_UPDATED_BY,
4281 LAST_UPDATE_DATE,
4282 LAST_UPDATE_LOGIN
4283 )
4284 VALUES
4285 (
4286 --l_interaction_id,
4287 l_interaction_rec.interaction_id,
4288 p_interaction_rec.parent_id,
4289 p_user_id,
4290 Sysdate,
4291 p_user_id,
4292 Sysdate,
4293 p_user_id
4294 );
4295 END IF;
4296 --l_test_msg := '8';
4297 -- DBMS_OUTPUT.PUT_LINE('PAST INSERT INTO jtf_ih_Interaction_inters in JTF_IH_PUB.Open_Interaction');
4298 --
4299 -- Set OUT value
4300 --
4301 --x_interaction_id := l_interaction_id;
4302 x_interaction_id := l_interaction_rec.interaction_id;
4303
4304 -- Post processing Call
4305
4306 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'OPEN_INTERACTION', 'A', 'V') THEN
4307 JTF_IH_PUB_VUHK.open_interaction_post(p_interaction_rec=>l_interaction_rec,
4308 x_data=>l_data,
4309 x_count=>l_count,
4310 x_return_code=>l_return_code);
4311 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
4312 RAISE FND_API.G_EXC_ERROR;
4313 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4314 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4315 END IF;
4316 END IF;
4317
4318 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'OPEN_INTERACTION', 'A', 'C') THEN
4319 JTF_IH_PUB_CUHK.open_interaction_post(p_interaction_rec=>l_interaction_rec,
4320 x_data=>l_data,
4321 x_count=>l_count,
4322 x_return_code=>l_return_code);
4323 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
4324 RAISE FND_API.G_EXC_ERROR;
4325 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4326 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4327 END IF;
4328 END IF;
4329
4330 -- Standard check of p_commit
4331 IF fnd_api.to_boolean(p_commit) THEN
4332 COMMIT WORK;
4333 END IF;
4334
4335 -- Standard call to get message count and if count is 1, get message info
4336 fnd_msg_pub.count_and_get( p_count => x_msg_count, p_data => x_msg_data );
4337 EXCEPTION
4338 WHEN fnd_api.g_exc_error THEN
4339 ROLLBACK TO open_interaction_pub;
4340 x_return_status := fnd_api.g_ret_sts_error;
4341 fnd_msg_pub.count_and_get
4342 ( p_count => x_msg_count,
4343 p_data => x_msg_data );
4344 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
4345 WHEN fnd_api.g_exc_unexpected_error THEN
4346 ROLLBACK TO open_interaction_pub;
4347 x_return_status := fnd_api.g_ret_sts_unexp_error;
4348 fnd_msg_pub.count_and_get
4349 ( p_count => x_msg_count,
4350 p_data => x_msg_data );
4351 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
4352 WHEN OTHERS THEN
4353 ROLLBACK TO open_interaction_pub;
4354 x_return_status := fnd_api.g_ret_sts_unexp_error;
4355 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
4356 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
4357 END IF;
4358 fnd_msg_pub.count_and_get
4359 ( p_count => x_msg_count,
4360 p_data => x_msg_data );
4361 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
4362 END Open_Interaction;
4363
4364 --
4365 --
4366 -- History
4367 -- -------
4368 -- Author Date Description
4369 -- ------ ---- -----------
4370 -- Jean Zhu 01/11/2000 Initial build
4371 -- James Baldo Jr. 04/11/2000 Fix bug for updating parameters based on G_MISS types
4372 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
4373 -- James Baldo Jr. 03-MAY-2000 Fix for bugdb 1286036
4374 -- James Baldo Jr. 05-MAY-2000 Fix start_date_time = sysdate and end_date_time = null bug
4375 -- James Baldo Jr. 06-MAR-2001 Fix touchpoint2_type update issue. Based on bugdb # 1674610
4376 -- James Baldo Jr. 08-MAR-2001 Fix performance issue for multiple updates. Based on bugdb # 1676866
4377 -- and Mike Petrosino
4378 -- Igor Aleshin 18-DEC-2001 Fix for bugdb 2153913
4379 -- Igor Aleshin 20-DEC-2001 Fix for bugdb 2012159 - JTF_IH_PUB.UPDATE_INTERACTION MISSING
4380 -- CODE FOR OBJECT_VERSION_NUMBER PARAMETER.
4381 -- Igor Aleshin 20-MAY-2002 Modyfied duration calculation
4382 -- Igor Aleshin 06-17-2002 Fix for bugdb 2418028 - Close Interaction gives incorrect error
4383 -- Igor Aleshin 06-17-2002 Fix for bugdb 2418345 - Update_Interaction incorrectly
4384 -- handling updates for parent-child interactions
4385 -- Igor Aleshin 11-SEP-2002 Fixed duration overwrite issue
4386 -- Igor Aleshin 18-JUN-2003 Enh# 1846960 - REQUIRE CONTACT NAME OF ORGANISATION IN INTERACTION HISTORY
4387 -- Igor Aleshin 29-AUG-2003 Bug#3117798 - BR1159: UPDATING SOURCE CODE IN INTERACTIONS GIVES API ERROR.
4388 --
4389
4390 PROCEDURE Update_Interaction
4391 (
4392 p_api_version IN NUMBER,
4393 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
4394 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
4395 p_resp_appl_id IN NUMBER DEFAULT NULL,
4396 p_resp_id IN NUMBER DEFAULT NULL,
4397 p_user_id IN NUMBER,
4398 p_login_id IN NUMBER DEFAULT NULL,
4399 x_return_status OUT NOCOPY VARCHAR2,
4400 x_msg_count OUT NOCOPY NUMBER,
4401 x_msg_data OUT NOCOPY VARCHAR2,
4402 p_interaction_rec IN interaction_rec_type,
4403 -- Bug# 2012159
4404 p_object_version IN NUMBER DEFAULT NULL
4405 )
4406 AS
4407 l_api_name CONSTANT VARCHAR2(30) := 'Update_Interaction';
4408 l_api_version CONSTANT NUMBER := 1.1;
4409 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
4410 l_return_status VARCHAR2(1);
4411 l_count NUMBER;
4412 l_int_rec interaction_rec_type;
4413 l_return_code VARCHAR2(1);
4414 l_data VARCHAR2(2000);
4415 l_count_hk NUMBER;
4416 --l_interaction_rec_hk INTERACTION_REC_TYPE;
4417 l_touchpoint1_type VARCHAR2(30);
4418 l_touchpoint2_type VARCHAR2(30);
4419 l_inter_interaction_duration NUMBER;
4420 l_reference_form VARCHAR2(1000);
4421 l_follow_up_action VARCHAR2(80);
4422 l_non_productive_time_amount NUMBER;
4423 l_wrapUp_time_amount NUMBER;
4424 l_script_id NUMBER;
4425 l_result_id NUMBER;
4426 l_reason_id NUMBER;
4427 l_object_id NUMBER;
4428 l_object_type VARCHAR2(30);
4429 l_source_code_id NUMBER;
4430 l_source_code VARCHAR2(100);
4431 l_parent_id NUMBER;
4432 l_attribute1 VARCHAR2(150);
4433 l_attribute2 VARCHAR2(150);
4434 l_attribute3 VARCHAR2(150);
4435 l_attribute4 VARCHAR2(150);
4436 l_attribute5 VARCHAR2(150);
4437 l_attribute6 VARCHAR2(150);
4438 l_attribute7 VARCHAR2(150);
4439 l_attribute8 VARCHAR2(150);
4440 l_attribute9 VARCHAR2(150);
4441 l_attribute10 VARCHAR2(150);
4442 l_attribute11 VARCHAR2(150);
4443 l_attribute12 VARCHAR2(150);
4444 l_attribute13 VARCHAR2(150);
4445 l_attribute14 VARCHAR2(150);
4446 l_attribute15 VARCHAR2(150);
4447 l_attribute_category VARCHAR2(30);
4448 l_method_code VARCHAR2(30);
4449 l_object_version NUMBER;
4450 l_recalc_duration BOOLEAN;
4451 l_primary_party_id NUMBER;
4452 l_contact_rel_party_id NUMBER;
4453 l_contact_party_id NUMBER;
4454 l_profile_id VARCHAR2(20); --profile option id check to update closed interaction
4455 CURSOR c_Interaction_csr IS
4456 SELECT *
4457 FROM JTF_IH_INTERACTIONS
4458 WHERE interaction_id = p_interaction_rec.interaction_id
4459 FOR UPDATE;
4460 l_Interaction_rec c_Interaction_csr%ROWTYPE;
4461
4462 BEGIN
4463 -- local variables initialization to remove GSCC warning
4464 l_int_rec := p_interaction_rec;
4465
4466 -- Standard start of API savepoint
4467 SAVEPOINT update_interaction_pub;
4468
4469 -- Preprocessing Call
4470 --l_interaction_rec_hk := p_interaction_rec;
4471 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_INTERACTION', 'B', 'C') THEN
4472 JTF_IH_PUB_CUHK.update_interaction_pre(
4473 --p_interaction_rec=>l_interaction_rec_hk,
4474 p_interaction_rec=>l_int_rec,
4475 x_data=>l_data,
4476 x_count=>l_count_hk,
4477 x_return_code=>l_return_code);
4478 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
4479 RAISE FND_API.G_EXC_ERROR;
4480 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4481 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4482 END IF;
4483 END IF;
4484
4485 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_INTERACTION', 'B', 'V') THEN
4486 JTF_IH_PUB_VUHK.update_interaction_pre(
4487 --p_interaction_rec=>l_interaction_rec_hk,
4488 p_interaction_rec=>l_int_rec,
4489 x_data=>l_data,
4490 x_count=>l_count_hk,
4491 x_return_code=>l_return_code);
4492 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
4493 RAISE FND_API.G_EXC_ERROR;
4494 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4495 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4496 END IF;
4497 END IF;
4498
4499 -- Standard call to check for call compatibility
4500 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
4501 l_api_name, g_pkg_name) THEN
4502 RAISE fnd_api.g_exc_unexpected_error;
4503 END IF;
4504 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Update_Interaction');
4505
4506 -- Initialize message list if p_init_msg_list is set to TRUE
4507 IF fnd_api.to_boolean(p_init_msg_list) THEN
4508 fnd_msg_pub.initialize;
4509 END IF;
4510
4511 -- Initialize API return status to success
4512 x_return_status := fnd_api.g_ret_sts_success;
4513
4514 --
4515 -- Apply business-rule validation to all required and passed parameters
4516 --
4517 -- Validate user and login session IDs
4518 --
4519 IF (p_user_id IS NULL) THEN
4520 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
4521 RAISE fnd_api.g_exc_error;
4522 ELSE
4523 jtf_ih_core_util_pvt.validate_who_info
4524 ( p_api_name => l_api_name_full,
4525 p_parameter_name_usr => 'p_user_id',
4526 p_parameter_name_log => 'p_login_id',
4527 p_user_id => p_user_id,
4528 p_login_id => p_login_id,
4529 x_return_status => l_return_status );
4530 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
4531 RAISE fnd_api.g_exc_error;
4532 END IF;
4533 END IF;
4534 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Update_Interaction');
4535
4536 --
4537 -- Restore existing column values if manadatory paramaters passed are
4538 -- NULL or of FND_API.G_MISS types
4539 --
4540
4541 --
4542 -- Retrieve necessary parameters via DB Query
4543 -- N.B., l_count is used after validation
4544 --
4545
4546 -- DBMS_OUTPUT.PUT_LINE('party_id: ' || p_interaction_rec.party_id);
4547 -- DBMS_OUTPUT.PUT_LINE('resource_id: ' || p_interaction_rec.resource_id);
4548 -- DBMS_OUTPUT.PUT_LINE('handler_id: ' || p_interaction_rec.handler_id);
4549 -- DBMS_OUTPUT.PUT_LINE('outcome_id: ' || p_interaction_rec.outcome_id);
4550 -- DBMS_OUTPUT.PUT_LINE('non_productive_time_amount: ' || p_interaction_rec.non_productive_time_amount);
4551 l_count := 0;
4552
4553 OPEN c_Interaction_csr;
4554 FETCH c_Interaction_csr INTO l_Interaction_rec;
4555 IF (c_Interaction_csr%notfound) THEN
4556 x_return_status := fnd_api.g_ret_sts_error;
4557 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name, to_char(p_Interaction_rec.interaction_id),
4558 'Interaction_id');
4559 -- # 1937894
4560 fnd_msg_pub.count_and_get
4561 ( p_count => x_msg_count,
4562 p_data => x_msg_data );
4563 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
4564 RETURN;
4565 END IF;
4566
4567 --
4568 -- Check if Object_Version_Number was passed
4569 -- Bug# 2012159
4570 --
4571 --IF(p_object_version is null) THEN
4572 -- jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name, to_char(l_object_version),'The Object_Version_Number set to NULL for interaction');
4573 --RAISE fnd_api.g_exc_error;
4574 --END IF;
4575
4576 --
4577 -- Check if Active is set to 'N'
4578 --
4579 IF (l_Interaction_rec.active = 'N') then
4580 -- Bug# 4477761 check if profile option is turned on
4581 -- If yes then allow update on closed interaction
4582 fnd_profile.get('JTF_IH_ALLOW_INT_UPDATE_AFTER_CLOSE',l_profile_id);
4583 IF nvl(l_profile_id,'N') <> 'Y' THEN
4584 --x_return_status := fnd_api.g_ret_sts_error;
4585 --jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name, to_char(p_Interaction_rec.interaction_id),'Active set to N for interaction');
4586 --Bug# 4477761 new error msg
4587 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_error) THEN
4588 fnd_message.set_name('JTF', 'JTF_IH_INT_UPDATE_NOT_ALLOW');
4589 fnd_message.set_token('INT_ID', to_char(p_Interaction_rec.interaction_id));
4590 fnd_msg_pub.add;
4591 END IF;
4592 RAISE fnd_api.g_exc_error;
4593 END IF;
4594 END IF;
4595 --
4596 -- Check mandatory parameters to determine if their update paramater
4597 -- is null or of a FND_API.G_MISS type then set to existing DB record
4598 -- column value if needed.
4599 --
4600
4601 --
4602 -- Check if party_id requies updating
4603 --
4604
4605 IF (p_interaction_rec.party_id = fnd_api.g_miss_num) OR (p_interaction_rec.party_id IS NULL) then
4606 l_int_rec.party_id := l_interaction_rec.party_id;
4607 ELSE
4608 l_int_rec.party_id := p_interaction_rec.party_id;
4609 END IF;
4610
4611
4612 --
4613 -- Check if resource_id requies updating
4614 --
4615
4616 IF (p_interaction_rec.resource_id = fnd_api.g_miss_num) OR (p_interaction_rec.resource_id IS NULL) then
4617 l_int_rec.resource_id := l_interaction_rec.resource_id;
4618 ELSE
4619 l_int_rec.resource_id := p_interaction_rec.resource_id;
4620 END IF;
4621
4622 --
4623 -- Check if handler_id requies updating
4624 --
4625
4626 IF (p_interaction_rec.handler_id = fnd_api.g_miss_num) OR (p_interaction_rec.handler_id IS NULL) then
4627 l_int_rec.handler_id := l_interaction_rec.handler_id;
4628 ELSE
4629 l_int_rec.handler_id := p_interaction_rec.handler_id;
4630 END IF;
4631
4632 --
4633 -- Check if outcome_id requies updating
4634 --
4635
4636 --IF (p_interaction_rec.outcome_id = fnd_api.g_miss_num) OR (p_interaction_rec.outcome_id IS NULL) then
4637 IF (p_interaction_rec.outcome_id = fnd_api.g_miss_num) then
4638 l_int_rec.outcome_id := l_interaction_rec.outcome_id;
4639 ELSE
4640 l_int_rec.outcome_id := p_interaction_rec.outcome_id;
4641 END IF;
4642
4643 --
4644 -- Check if touchpoint1_type requies updating
4645 --
4646
4647 --IF (p_interaction_rec.touchpoint1_type = fnd_api.g_miss_char) OR (p_interaction_rec.touchpoint1_type IS NULL) then
4648 IF (p_interaction_rec.touchpoint1_type = fnd_api.g_miss_char) then
4649 l_int_rec.touchpoint1_type := l_interaction_rec.touchpoint1_type;
4650 ELSE
4651 l_int_rec.touchpoint1_type := p_interaction_rec.touchpoint1_type;
4652 END IF;
4653
4654 --
4655 -- Check if touchpoint2_type requies updating
4656 --
4657
4658 --IF (p_interaction_rec.touchpoint2_type = fnd_api.g_miss_char) OR (p_interaction_rec.touchpoint2_type IS NULL) then
4659 IF (p_interaction_rec.touchpoint2_type = fnd_api.g_miss_char) then
4660 l_int_rec.touchpoint2_type := l_interaction_rec.touchpoint2_type;
4661 ELSE
4662 l_int_rec.touchpoint2_type := p_interaction_rec.touchpoint2_type;
4663 END IF;
4664
4665 --
4666 -- Check if reference_form requies updating
4667 --
4668
4669 --IF (p_interaction_rec.reference_form = fnd_api.g_miss_char) OR (p_interaction_rec.reference_form IS NULL) then
4670 IF (p_interaction_rec.reference_form = fnd_api.g_miss_char) then
4671 l_int_rec.reference_form := l_interaction_rec.reference_form;
4672 ELSE
4673 l_int_rec.reference_form := p_interaction_rec.reference_form;
4674 END IF;
4675
4676 --
4677 -- Check if follow_up_action requies updating
4678 --
4679
4680 --IF (p_interaction_rec.follow_up_action = fnd_api.g_miss_char) OR (p_interaction_rec.follow_up_action IS NULL) then
4681 IF (p_interaction_rec.follow_up_action = fnd_api.g_miss_char) then
4682 l_int_rec.follow_up_action := l_interaction_rec.follow_up_action;
4683 ELSE
4684 l_int_rec.follow_up_action := p_interaction_rec.follow_up_action;
4685 END IF;
4686
4687 --
4688 -- Check if previw_time_amount requies updating
4689 --
4690
4691 --IF (p_interaction_rec.preview_time_amount = fnd_api.g_miss_num) OR (p_interaction_rec.preview_time_amount IS NULL) then
4692 IF (p_interaction_rec.preview_time_amount = fnd_api.g_miss_num) then
4693 l_int_rec.preview_time_amount := l_interaction_rec.preview_time_amount;
4694 ELSE
4695 l_int_rec.preview_time_amount := p_interaction_rec.preview_time_amount;
4696 END IF;
4697
4698 -- Added by IALeshin 20-MAY-2002
4699 l_recalc_duration := FALSE;
4700 IF ((p_interaction_rec.end_date_time <> fnd_api.g_miss_date) AND (p_interaction_rec.end_date_time IS NOT NULL)) then
4701 l_int_rec.end_date_time := p_interaction_rec.end_date_time;
4702 -- duration may need to be recalculated based on the new value - RDD
4703 l_recalc_duration := TRUE;
4704 ELSE
4705 l_int_rec.end_date_time := l_interaction_rec.end_date_time;
4706 END IF;
4707
4708 -- Added by IALeshin 20-MAY-2002
4709 --
4710 -- Check if start_date_time requies updating
4711 --
4712 IF ((p_interaction_rec.start_date_time = fnd_api.g_miss_date) OR (p_interaction_rec.start_date_time IS NULL)) then
4713 l_int_rec.start_date_time := l_interaction_rec.start_date_time;
4714 ELSE
4715 l_int_rec.start_date_time := p_interaction_rec.start_date_time;
4716 -- duration may need to be recalculated based on the new value - RDD
4717 l_recalc_duration := TRUE;
4718 END IF;
4719
4720 Validate_StartEnd_Date
4721 ( p_api_name => l_api_name_full,
4722 p_start_date_time => l_int_rec.start_date_time,
4723 p_end_date_time => l_int_rec.end_date_time,
4724 x_return_status => l_return_status
4725 );
4726 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
4727 RAISE fnd_api.g_exc_error;
4728 END IF;
4729
4730 -- Determine if duration recalc can be done. We require start and end date. - RDD
4731 IF l_recalc_duration = TRUE THEN
4732 IF l_int_rec.end_date_time IS NULL THEN
4733 l_recalc_duration := FALSE;
4734 END IF;
4735 END IF;
4736
4737
4738 IF p_interaction_rec.duration <> fnd_api.g_miss_num AND p_interaction_rec.duration IS NOT NULL THEN
4739 l_int_rec.duration := p_interaction_rec.duration;
4740 ELSIF l_recalc_duration = TRUE THEN
4741 l_int_rec.duration := ROUND((l_int_rec.end_date_time - l_int_rec.start_date_time)*24*60*60);
4742 ELSE
4743 l_int_rec.duration := l_interaction_rec.duration;
4744 END IF;
4745 --
4746
4747 --
4748 -- Check if inter_interaction_duration requies updating
4749 --
4750
4751 --IF (p_interaction_rec.inter_interaction_duration = fnd_api.g_miss_num) OR (p_interaction_rec.inter_interaction_duration IS NULL) then
4752 IF (p_interaction_rec.inter_interaction_duration = fnd_api.g_miss_num) then
4753 l_int_rec.inter_interaction_duration := l_interaction_rec.inter_interaction_duration;
4754 ELSE
4755 l_int_rec.inter_interaction_duration := p_interaction_rec.inter_interaction_duration;
4756 END IF;
4757
4758
4759
4760 --
4761 -- Check if non_productive_time_amount requies updating
4762 --
4763 --IF (p_interaction_rec.non_productive_time_amount = fnd_api.g_miss_num) OR (p_interaction_rec.non_productive_time_amount IS NULL) then
4764 IF (p_interaction_rec.non_productive_time_amount = fnd_api.g_miss_num) then
4765 l_int_rec.non_productive_time_amount := l_interaction_rec.non_productive_time_amount;
4766 ELSE
4767 l_int_rec.non_productive_time_amount := p_interaction_rec.non_productive_time_amount;
4768 END IF;
4769
4770 --
4771 -- Check if productive_time_amount requies updating
4772 --
4773 -- IF (p_interaction_rec.productive_time_amount = fnd_api.g_miss_num) OR (p_interaction_rec.productive_time_amount IS NULL) then
4774 IF (p_interaction_rec.productive_time_amount = fnd_api.g_miss_num) then
4775 l_int_rec.productive_time_amount := l_interaction_rec.productive_time_amount;
4776 ELSE
4777 l_int_rec.productive_time_amount := p_interaction_rec.productive_time_amount;
4778 END IF;
4779
4780 --
4781 -- Check if wrapUp_time_amount requies updating
4782 --
4783
4784 --IF (p_interaction_rec.wrapUp_time_amount = fnd_api.g_miss_num) OR (p_interaction_rec.wrapUp_time_amount IS NULL) then
4785 IF (p_interaction_rec.wrapUp_time_amount = fnd_api.g_miss_num) then
4786 l_int_rec.wrapUp_time_amount := l_interaction_rec.wrap_Up_time_amount;
4787 ELSE
4788 l_int_rec.wrapUp_time_amount := p_interaction_rec.wrapUp_time_amount;
4789 END IF;
4790
4791 --
4792 -- Check if script_id requies updating
4793 --
4794 --IF (p_interaction_rec.script_id = fnd_api.g_miss_num) OR (p_interaction_rec.script_id IS NULL) then
4795 IF (p_interaction_rec.script_id = fnd_api.g_miss_num) then
4796 l_int_rec.script_id := l_interaction_rec.script_id;
4797 ELSE
4798 l_int_rec.script_id := p_interaction_rec.script_id;
4799 END IF;
4800
4801 --
4802 -- Check if result_id requies updating
4803 --
4804 --IF (p_interaction_rec.result_id = fnd_api.g_miss_num) OR (p_interaction_rec.result_id IS NULL) then
4805 IF (p_interaction_rec.result_id = fnd_api.g_miss_num) then
4806 l_int_rec.result_id := l_interaction_rec.result_id;
4807 ELSE
4808 l_int_rec.result_id := p_interaction_rec.result_id;
4809 END IF;
4810
4811 --
4812 -- Check if reason_id requies updating
4813 --
4814 --IF (p_interaction_rec.reason_id = fnd_api.g_miss_num) OR (p_interaction_rec.reason_id IS NULL) then
4815 IF (p_interaction_rec.reason_id = fnd_api.g_miss_num) then
4816 l_int_rec.reason_id := l_interaction_rec.reason_id;
4817 ELSE
4818 l_int_rec.reason_id := p_interaction_rec.reason_id;
4819 END IF;
4820
4821 --
4822 -- Check if object_id requies updating
4823 --
4824 -- IF (p_interaction_rec.object_id = fnd_api.g_miss_num) OR (p_interaction_rec.object_id IS NULL) then
4825 IF (p_interaction_rec.object_id = fnd_api.g_miss_num) then
4826 l_int_rec.object_id := l_interaction_rec.object_id;
4827 ELSE
4828 l_int_rec.object_id := p_interaction_rec.object_id;
4829 END IF;
4830
4831 --
4832 -- Check if object_type requies updating
4833 --
4834 -- IF (p_interaction_rec.object_type = fnd_api.g_miss_char) OR (p_interaction_rec.object_type IS NULL) then
4835 IF (p_interaction_rec.object_type = fnd_api.g_miss_char) then
4836 l_int_rec.object_type := l_interaction_rec.object_type;
4837 ELSE
4838 l_int_rec.object_type := p_interaction_rec.object_type;
4839 END IF;
4840
4841 --
4842 -- Check if source_code_id and source_code requies updating
4843 --
4844
4845 IF(p_interaction_rec.source_code_id = fnd_api.g_miss_num)
4846 AND (p_interaction_rec.source_code = fnd_api.g_miss_char) THEN
4847 l_int_rec.source_code_id := l_interaction_rec.source_code_id;
4848 l_int_rec.source_code := l_interaction_rec.source_code;
4849 ELSE
4850 l_int_rec.source_code_id := p_interaction_rec.source_code_id;
4851 l_int_rec.source_code := p_interaction_rec.source_code;
4852 END IF;
4853 --
4854 -- Check if parent_id requies updating
4855 --
4856 IF ((p_interaction_rec.parent_id IS NOT NULL) AND (p_interaction_rec.parent_id <> fnd_api.g_miss_num)) THEN
4857 l_count := 0;
4858 SELECT count(*) into l_count
4859 FROM jtf_ih_interaction_inters
4860 WHERE interact_interaction_id = p_interaction_rec.interaction_id;
4861
4862 -- Bug# 2418345
4863 -- WHERE interact_interaction_id = p_interaction_rec.interaction_id and
4864 -- interact_interaction_idrelates = p_interaction_rec.parent_id;
4865
4866 IF (l_count = 0) THEN
4867 INSERT INTO jtf_ih_interaction_inters
4868 (
4869 INTERACT_INTERACTION_IDRELATES,
4870 INTERACT_INTERACTION_ID,
4871 CREATED_BY,
4872 CREATION_DATE,
4873 LAST_UPDATED_BY,
4874 LAST_UPDATE_DATE,
4875 LAST_UPDATE_LOGIN
4876 )
4877 VALUES
4878 (
4879 p_interaction_rec.parent_id,
4880 p_interaction_rec.interaction_id,
4881 p_user_id,
4882 Sysdate,
4883 p_user_id,
4884 Sysdate,
4885 p_user_id
4886 );
4887 l_int_rec.parent_id := p_interaction_rec.parent_id;
4888 -- Bug# 2418345
4889 ELSE
4890 UPDATE jtf_ih_interaction_inters SET
4891 INTERACT_INTERACTION_IDRELATES = p_interaction_rec.parent_id,
4892 LAST_UPDATED_BY = p_user_id ,
4893 LAST_UPDATE_DATE = SYSDATE,
4894 LAST_UPDATE_LOGIN = p_user_id
4895 WHERE interact_interaction_id = p_interaction_rec.interaction_id;
4896 END IF;
4897 END IF;
4898
4899 --
4900 -- Check if attribute1 requies updating
4901 --
4902 --IF (p_interaction_rec.attribute1 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute1 IS NULL) then
4903 IF (p_interaction_rec.attribute1 = fnd_api.g_miss_char) then
4904 l_int_rec.attribute1 := l_interaction_rec.attribute1;
4905 ELSE
4906 l_int_rec.attribute1 := p_interaction_rec.attribute1;
4907 END IF;
4908
4909 --
4910 -- Check if attribute2 requies updating
4911 --
4912
4913 --IF (p_interaction_rec.attribute2 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute2 IS NULL) then
4914 IF (p_interaction_rec.attribute2 = fnd_api.g_miss_char) then
4915 l_int_rec.attribute2 := l_interaction_rec.attribute2;
4916 ELSE
4917 l_int_rec.attribute2 := p_interaction_rec.attribute2;
4918 END IF;
4919
4920 --
4921 -- Check if attribute3 requies updating
4922 --
4923
4924 --IF (p_interaction_rec.attribute3 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute3 IS NULL) then
4925 IF (p_interaction_rec.attribute3 = fnd_api.g_miss_char) then
4926 l_int_rec.attribute3 := l_interaction_rec.attribute3;
4927 ELSE
4928 l_int_rec.attribute3 := p_interaction_rec.attribute3;
4929 END IF;
4930
4931 --
4932 -- Check if attribute4 requies updating
4933 --
4934
4935 -- IF (p_interaction_rec.attribute4 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute4 IS NULL) then
4936 IF (p_interaction_rec.attribute4 = fnd_api.g_miss_char) then
4937 l_int_rec.attribute4 := l_interaction_rec.attribute4;
4938 ELSE
4939 l_int_rec.attribute4 := p_interaction_rec.attribute4;
4940 END IF;
4941
4942 --
4943 -- Check if attribute5 requies updating
4944 --
4945 --IF (p_interaction_rec.attribute5 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute5 IS NULL) then
4946 IF (p_interaction_rec.attribute5 = fnd_api.g_miss_char) then
4947 l_int_rec.attribute5 := l_interaction_rec.attribute5;
4948 ELSE
4949 l_int_rec.attribute5 := p_interaction_rec.attribute5;
4950 END IF;
4951
4952 --
4953 -- Check if attribute6 requies updating
4954 --
4955
4956 --IF (p_interaction_rec.attribute6 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute6 IS NULL) then
4957 IF (p_interaction_rec.attribute6 = fnd_api.g_miss_char) then
4958 l_int_rec.attribute6 := l_interaction_rec.attribute6;
4959 ELSE
4960 l_int_rec.attribute6 := p_interaction_rec.attribute6;
4961 END IF;
4962
4963 --
4964 -- Check if attribute7 requies updating
4965 --
4966
4967 --IF (p_interaction_rec.attribute7 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute7 IS NULL) then
4968 IF (p_interaction_rec.attribute7 = fnd_api.g_miss_char) then
4969 l_int_rec.attribute7 := l_interaction_rec.attribute7;
4970 --l_int_rec.attribute7 := l_interaction_rec.attribute7;
4971 ELSE
4972 l_int_rec.attribute7 := p_interaction_rec.attribute7;
4973 END IF;
4974
4975 --
4976 -- Check if attribute8 requies updating
4977 --
4978
4979 --IF (p_interaction_rec.attribute8 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute8 IS NULL) then
4980 IF (p_interaction_rec.attribute8 = fnd_api.g_miss_char) then
4981 l_int_rec.attribute8 := l_interaction_rec.attribute8;
4982 --l_int_rec.attribute8 := l_interaction_rec.attribute8;
4983 ELSE
4984 l_int_rec.attribute8 := p_interaction_rec.attribute8;
4985 END IF;
4986
4987 --
4988 -- Check if attribute9 requies updating
4989 --
4990
4991 --IF (p_interaction_rec.attribute9 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute9 IS NULL) then
4992 IF (p_interaction_rec.attribute9 = fnd_api.g_miss_char) then
4993 l_int_rec.attribute9 := l_interaction_rec.attribute1;
4994 --l_int_rec.attribute9 := l_interaction_rec.attribute9;
4995 ELSE
4996 l_int_rec.attribute9 := p_interaction_rec.attribute9;
4997 END IF;
4998
4999 --
5000 -- Check if attribute10 requies updating
5001 --
5002
5003 --IF (p_interaction_rec.attribute10 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute10 IS NULL) then
5004 IF (p_interaction_rec.attribute10 = fnd_api.g_miss_char) then
5005 l_int_rec.attribute10 := l_interaction_rec.attribute10;
5006 --l_int_rec.attribute10 := l_interaction_rec.attribute10;
5007 ELSE
5008 l_int_rec.attribute10 := p_interaction_rec.attribute10;
5009 END IF;
5010
5011 --
5012 -- Check if attribute11 requies updating
5013 --
5014
5015 --IF (p_interaction_rec.attribute11 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute11 IS NULL) then
5016 IF (p_interaction_rec.attribute11 = fnd_api.g_miss_char) then
5017 l_int_rec.attribute11 := l_interaction_rec.attribute11;
5018 --l_int_rec.attribute11 := l_interaction_rec.attribute11;
5019 ELSE
5020 l_int_rec.attribute11 := p_interaction_rec.attribute11;
5021 END IF;
5022
5023 --
5024 -- Check if attribute12 requies updating
5025 --
5026
5027 --IF (p_interaction_rec.attribute12 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute12 IS NULL) then
5028 IF (p_interaction_rec.attribute12 = fnd_api.g_miss_char) then
5029 l_int_rec.attribute12 := l_interaction_rec.attribute12;
5030 --l_int_rec.attribute12 := l_interaction_rec.attribute12;
5031 ELSE
5032 l_int_rec.attribute12 := p_interaction_rec.attribute12;
5033 END IF;
5034
5035 --
5036 -- Check if attribute13 requies updating
5037 --
5038 --IF (p_interaction_rec.attribute13 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute13 IS NULL) then
5039 IF (p_interaction_rec.attribute13 = fnd_api.g_miss_char) then
5040 l_int_rec.attribute13 := l_interaction_rec.attribute13;
5041 --l_int_rec.attribute13 := l_interaction_rec.attribute13;
5042 ELSE
5043 l_int_rec.attribute13 := p_interaction_rec.attribute13;
5044 END IF;
5045
5046 --
5047 -- Check if attribute14 requies updating
5048 --
5049
5050 --IF (p_interaction_rec.attribute14 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute14 IS NULL) then
5051 IF (p_interaction_rec.attribute14 = fnd_api.g_miss_char) then
5052 l_int_rec.attribute14 := l_interaction_rec.attribute14;
5053 --l_int_rec.attribute14 := l_interaction_rec.attribute14;
5054 ELSE
5055 l_int_rec.attribute14 := p_interaction_rec.attribute14;
5056 END IF;
5057
5058 --
5059 -- Check if attribute15 requies updating
5060 --
5061 --IF (p_interaction_rec.attribute15 = fnd_api.g_miss_char) OR (p_interaction_rec.attribute15 IS NULL) then
5062 IF (p_interaction_rec.attribute15 = fnd_api.g_miss_char) then
5063 l_int_rec.attribute15 := l_interaction_rec.attribute15;
5064 --l_int_rec.attribute15 := l_interaction_rec.attribute15;
5065 ELSE
5066 l_int_rec.attribute15 := p_interaction_rec.attribute15;
5067 END IF;
5068
5069 --
5070 -- Check if attribute_category requies updating
5071 --
5072 --IF (p_interaction_rec.attribute_category = fnd_api.g_miss_char) OR (p_interaction_rec.attribute_category IS NULL) then
5073 IF (p_interaction_rec.attribute_category = fnd_api.g_miss_char) then
5074 l_int_rec.attribute_category := l_interaction_rec.attribute_category;
5075 --l_int_rec.attribute_category := l_interaction_rec.attribute_category;
5076 ELSE
5077 l_int_rec.attribute_category := p_interaction_rec.attribute_category;
5078 END IF;
5079
5080 IF (p_interaction_rec.method_code = fnd_api.g_miss_char) then
5081 l_int_rec.method_code := l_interaction_rec.method_code;
5082 ELSE
5083 l_int_rec.method_code := p_interaction_rec.method_code;
5084 END IF;
5085 IF p_api_version = 1.0 THEN
5086 l_int_rec.primary_party_id := NULL;
5087 l_int_rec.contact_rel_party_id := NULL;
5088 l_int_rec.contact_party_id := NULL;
5089 ELSE
5090 IF (p_interaction_rec.primary_party_id = fnd_api.g_miss_num) then
5091 l_int_rec.primary_party_id := l_interaction_rec.primary_party_id;
5092 ELSE
5093 l_int_rec.primary_party_id := p_interaction_rec.primary_party_id;
5094 END IF;
5095
5096 IF (p_interaction_rec.contact_rel_party_id = fnd_api.g_miss_num) then
5097 l_int_rec.contact_rel_party_id := l_interaction_rec.contact_rel_party_id;
5098 ELSE
5099 l_int_rec.contact_rel_party_id := p_interaction_rec.contact_rel_party_id;
5100 END IF;
5101 IF (p_interaction_rec.contact_party_id = fnd_api.g_miss_num) then
5102 l_int_rec.contact_party_id := l_interaction_rec.contact_party_id;
5103 ELSE
5104 l_int_rec.contact_party_id := p_interaction_rec.contact_party_id;
5105 END IF;
5106 END IF;
5107
5108 -- DBMS_OUTPUT.PUT_LINE('party_id: ' || l_interaction_rec.party_id);
5109 -- DBMS_OUTPUT.PUT_LINE('resource_id: ' || l_interaction_rec.resource_id);
5110 -- DBMS_OUTPUT.PUT_LINE('handler_id: ' || l_interaction_rec.handler_id);
5111 -- DBMS_OUTPUT.PUT_LINE('outcome_id: ' || l_interaction_rec.outcome_id);
5112 -- DBMS_OUTPUT.PUT_LINE('non_productive_time_amount: ' || l_interaction_rec.non_productive_time_amount);
5113
5114 --
5115 -- Validate all non-missing attributes by calling the utility procedure.
5116 --
5117
5118 Validate_Interaction_Record
5119 ( p_api_name => l_api_name_full,
5120 p_int_val_rec => l_int_rec,
5121 p_resp_appl_id => p_resp_appl_id,
5122 p_resp_id => p_resp_id,
5123 x_return_status => l_return_status
5124 );
5125 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
5126 RAISE fnd_api.g_exc_error;
5127 END IF;
5128 -- DBMS_OUTPUT.PUT_LINE('PAST Validate_Interaction_Record in JTF_IH_PUB.Update_Interaction');
5129
5130 -- 08/26/03 mpetrosi B3102306
5131 -- added cross check of source_code, source_code_id
5132 validate_source_code(l_api_name_full,l_int_rec.source_code_id, l_int_rec.source_code, l_return_status);
5133 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
5134 RAISE fnd_api.g_exc_error;
5135 END IF;
5136
5137 --
5138 -- Update table JTF_IH_INTERACTIONS
5139 --
5140 IF (p_interaction_rec.interaction_id IS NULL) THEN
5141 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'interaction_id');
5142 RAISE fnd_api.g_exc_error;
5143 ELSE
5144 l_count := 0;
5145 SELECT count(*) into l_count
5146 FROM jtf_ih_interactions
5147 WHERE interaction_id = p_interaction_rec.interaction_id;
5148 IF(l_count <> 1) THEN
5149 x_return_status := fnd_api.g_ret_sts_error;
5150 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(p_interaction_rec.interaction_id),
5151 'interaction_id');
5152 -- # 1937894
5153 fnd_msg_pub.count_and_get
5154 ( p_count => x_msg_count,
5155 p_data => x_msg_data );
5156 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5157 RETURN;
5158 ELSE
5159 UPDATE JTF_IH_INTERACTIONS
5160 SET
5161 REFERENCE_FORM = l_int_rec.reference_form,
5162 LAST_UPDATED_BY = p_user_id,
5163 DURATION = l_int_rec.duration,
5164 LAST_UPDATE_DATE = sysdate,
5165 LAST_UPDATE_LOGIN = p_login_id,
5166 END_DATE_TIME = l_int_rec.end_date_time,
5167 FOLLOW_UP_ACTION = l_int_rec.follow_up_action,
5168 NON_PRODUCTIVE_TIME_AMOUNT = l_int_rec.non_productive_time_amount,
5169 RESULT_ID = l_int_rec.result_id,
5170 REASON_ID = l_int_rec.reason_id,
5171 START_DATE_TIME = l_int_rec.start_date_time,
5172 OUTCOME_ID = decode( l_int_rec.outcome_id, fnd_api.g_miss_num, null, l_int_rec.outcome_id),
5173 PREVIEW_TIME_AMOUNT = l_int_rec.preview_time_amount,
5174 PRODUCTIVE_TIME_AMOUNT = l_int_rec.productive_time_amount,
5175 HANDLER_ID = l_int_rec.handler_id,
5176 INTER_INTERACTION_DURATION = l_int_rec.inter_interaction_duration,
5177 WRAP_UP_TIME_AMOUNT = l_int_rec.wrapUp_time_amount,
5178 SCRIPT_ID = l_int_rec.script_id,
5179 PARTY_ID = l_int_rec.party_id,
5180 RESOURCE_ID = l_int_rec.resource_id,
5181 OBJECT_ID = l_int_rec.object_id,
5182 OBJECT_TYPE = l_int_rec.object_type,
5183 SOURCE_CODE_ID = decode(l_int_rec.source_code_id,fnd_api.g_miss_num,NULL,l_int_rec.source_code_id),
5184 SOURCE_CODE = decode(l_int_rec.source_code,fnd_api.g_miss_char,NULL,l_int_rec.source_code),
5185 ATTRIBUTE1 = l_int_rec.attribute1,
5186 ATTRIBUTE2 = l_int_rec.attribute2,
5187 ATTRIBUTE3 = l_int_rec.attribute3,
5188 ATTRIBUTE4 = l_int_rec.attribute4,
5189 ATTRIBUTE5 = l_int_rec.attribute5,
5190 ATTRIBUTE6 = l_int_rec.attribute6,
5191 ATTRIBUTE7 = l_int_rec.attribute7,
5192 ATTRIBUTE8 = l_int_rec.attribute8,
5193 ATTRIBUTE9 = l_int_rec.attribute9,
5194 ATTRIBUTE10 = l_int_rec.attribute10,
5195 ATTRIBUTE11 = l_int_rec.attribute11,
5196 ATTRIBUTE12 = l_int_rec.attribute12,
5197 ATTRIBUTE13 = l_int_rec.attribute13,
5198 ATTRIBUTE14 = l_int_rec.attribute14,
5199 ATTRIBUTE_CATEGORY = l_int_rec.attribute_category,
5200 TOUCHPOINT1_TYPE = l_int_rec.touchpoint1_type,
5201 TOUCHPOINT2_TYPE = l_int_rec.touchpoint2_type,
5202 METHOD_CODE = l_int_rec.method_code,
5203 primary_party_id = l_int_rec.primary_party_id,
5204 contact_rel_party_id = l_int_rec.contact_rel_party_id,
5205 contact_party_id = l_int_rec.contact_party_id
5206 WHERE CURRENT OF c_Interaction_csr;
5207 --
5208 -- Close Cursor
5209 --
5210 Close c_Interaction_csr;
5211 --
5212 END IF;
5213 END IF;
5214 -- DBMS_OUTPUT.PUT_LINE('PAST update table jtf_ih_interactions in JTF_IH_PUB.Update_Interaction');
5215
5216 -- DBMS_OUTPUT.PUT_LINE('PAST INSERT INTO jtf_ih_Interaction_inters in JTF_IH_PUB.Update_Interaction');
5217
5218 -- Post processing Call
5219
5220 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_INTERACTION', 'A', 'V') THEN
5221 JTF_IH_PUB_VUHK.update_interaction_post(
5222 --p_interaction_rec=>l_interaction_rec_hk,
5223 p_interaction_rec=>l_int_rec,
5224 x_data=>l_data,
5225 x_count=>l_count_hk,
5226 x_return_code=>l_return_code);
5227 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
5228 RAISE FND_API.G_EXC_ERROR;
5229 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5230 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5231 END IF;
5232 END IF;
5233
5234 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_INTERACTION', 'A', 'C') THEN
5235 JTF_IH_PUB_CUHK.update_interaction_post(
5236 --p_interaction_rec=>l_interaction_rec_hk,
5237 p_interaction_rec=>l_int_rec,
5238 x_data=>l_data,
5239 x_count=>l_count_hk,
5240 x_return_code=>l_return_code);
5241 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
5242 RAISE FND_API.G_EXC_ERROR;
5243 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5244 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5245 END IF;
5246 END IF;
5247
5248
5249 -- Standard check of p_commit
5250 IF fnd_api.to_boolean(p_commit) THEN
5251 COMMIT WORK;
5252 END IF;
5253
5254 -- Standard call to get message count and if count is 1, get message info
5255 fnd_msg_pub.count_and_get( p_count => x_msg_count, p_data => x_msg_data );
5256
5257 EXCEPTION
5258 WHEN fnd_api.g_exc_error THEN
5259 ROLLBACK TO update_interaction_pub;
5260 x_return_status := fnd_api.g_ret_sts_error;
5261 fnd_msg_pub.count_and_get
5262 ( p_count => x_msg_count,
5263 p_data => x_msg_data );
5264 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5265 WHEN fnd_api.g_exc_unexpected_error THEN
5266 ROLLBACK TO update_interaction_pub;
5267 x_return_status := fnd_api.g_ret_sts_unexp_error;
5268 fnd_msg_pub.count_and_get
5269 ( p_count => x_msg_count,
5270 p_data => x_msg_data );
5271 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5272 WHEN OTHERS THEN
5273 ROLLBACK TO update_interaction_pub;
5274 x_return_status := fnd_api.g_ret_sts_unexp_error;
5275 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
5276 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
5277 END IF;
5278 fnd_msg_pub.count_and_get
5279 ( p_count => x_msg_count,
5280 p_data => x_msg_data );
5281 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5282 END Update_Interaction;
5283
5284 --
5285 --
5286 -- History
5287 -- -------
5288 -- Author Date Description
5289 -- ------ ---- -----------
5290 -- Jean Zhu 01/11/2000 Initial build
5291 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
5292 -- James Baldo Jr. 03-MAY-2000 Fix for bugdb 1286036 and 1288344
5293 -- James Baldo Jr. 24-MAY-2000 Fix for bugdb 1311442 - closing interaction without outcome set
5294 -- James Baldo Jr. 27-JUL-2000 Fix for bugdb 1314647 - calculation for duration
5295 -- Igor Aleshin 04-JAN-2002 Fix for bugdb 2167904 - g_miss values issue
5296 -- Igor Aleshin 25-MAR-2002 Fix for bugdb 2281489 - null message data with 'E' status
5297 -- Igor Aleshin 01-APR-2002 Fix for bugdb 1937894 - interaction history apis are raising
5298 -- exceptions without error message
5299 -- Igor Aleshin 06-17-2002 Fix for bugdb 2418028 - Close Interaction gives incorrect error
5300 -- Igor Aleshin 11-SEP-2002 Fixed bug# 2560551 - TST1158.8: FUNC: DEBUG - ALL INTERACTIONS
5301 -- DISPLAYS INTERACTION DURATION AS 0
5302 -- vekrishn 27-JUL-2004 Perf Fix for literal Usage
5303 --
5304 --
5305
5306 PROCEDURE Close_Interaction
5307 (
5308 p_api_version IN NUMBER,
5309 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
5310 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
5311 p_resp_appl_id IN NUMBER DEFAULT NULL,
5312 p_resp_id IN NUMBER DEFAULT NULL,
5313 p_user_id IN NUMBER,
5314 p_login_id IN NUMBER DEFAULT NULL,
5315 x_return_status OUT NOCOPY VARCHAR2,
5316 x_msg_count OUT NOCOPY NUMBER,
5317 x_msg_data OUT NOCOPY VARCHAR2,
5318 p_interaction_rec IN interaction_rec_type,
5319 p_object_version IN NUMBER DEFAULT NULL
5320 )
5321 AS
5322 l_api_name CONSTANT VARCHAR2(30) := 'Close_Interaction';
5323 l_api_version CONSTANT NUMBER := 1.1;
5324 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
5325 l_return_status VARCHAR2(1);
5326 --l_outcome_id NUMBER := NULL;
5327 --l_end_date_time DATE := NULL;
5328 --l_start_date_time DATE := NULL;
5329 --l_duration NUMBER := 0;
5330 l_action_item_id NUMBER := NULL;
5331 l_count NUMBER := 0;
5332 l_return_code VARCHAR2(1);
5333 l_data VARCHAR2(2000);
5334 l_count_hk NUMBER;
5335 l_interaction_rec INTERACTION_REC_TYPE;
5336
5337 -- Bug# 2560511
5338 la_outcome_id NUMBER := NULL;
5339 la_end_date_time DATE := NULL;
5340 la_start_date_time DATE := NULL;
5341 la_duration NUMBER := 0;
5342
5343 -- Bug# 3779487
5344 msg_code VARCHAR2(50);
5345 la_out_act_list jtf_ih_core_util_pvt.param_tbl_type;
5346
5347 -- Perf fix for literal Usage
5348 l_active_perf VARCHAR2(1);
5349
5350 CURSOR l_activity_id_c IS
5351 SELECT activity_id FROM jtf_ih_activities
5352 WHERE interaction_id = p_interaction_rec.interaction_id;
5353 BEGIN
5354 SAVEPOINT close_interaction_pub1;
5355
5356 -- Perf variables
5357 l_active_perf := 'N';
5358
5359 -- Preprocessing Call
5360 l_interaction_rec := p_interaction_rec;
5361
5362 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_INTERACTION', 'B', 'C') THEN
5363 JTF_IH_PUB_CUHK.close_interaction_pre(p_interaction_rec=>l_interaction_rec,
5364 x_data=>l_data,
5365 x_count=>l_count_hk,
5366 x_return_code=>l_return_code);
5367 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
5368 RAISE FND_API.G_EXC_ERROR;
5369 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5370 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5371 END IF;
5372 END IF;
5373
5374 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_INTERACTION', 'B', 'V') THEN
5375 JTF_IH_PUB_VUHK.close_interaction_pre(p_interaction_rec=>l_interaction_rec,
5376 x_data=>l_data,
5377 x_count=>l_count_hk,
5378 x_return_code=>l_return_code);
5379 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
5380 RAISE FND_API.G_EXC_ERROR;
5381 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5382 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5383 END IF;
5384 END IF;
5385
5386 -- Standard call to check for call compatibility
5387 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
5388 l_api_name, g_pkg_name) THEN
5389 RAISE fnd_api.g_exc_unexpected_error;
5390 END IF;
5391 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Close_Interaction');
5392
5393 -- Initialize message list if p_init_msg_list is set to TRUE
5394 IF fnd_api.to_boolean(p_init_msg_list) THEN
5395 fnd_msg_pub.initialize;
5396 END IF;
5397
5398 -- Initialize API return status to success
5399 x_return_status := fnd_api.g_ret_sts_success;
5400
5401 --
5402 -- Apply business-rule validation to all required and passed parameters
5403 --
5404 -- Validate user and login session IDs
5405 --
5406 IF (p_user_id IS NULL) THEN
5407 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
5408 RAISE fnd_api.g_exc_error;
5409 ELSE
5410 jtf_ih_core_util_pvt.validate_who_info
5411 ( p_api_name => l_api_name_full,
5412 p_parameter_name_usr => 'p_user_id',
5413 p_parameter_name_log => 'p_login_id',
5414 p_user_id => p_user_id,
5415 p_login_id => p_login_id,
5416 x_return_status => l_return_status );
5417 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
5418 RAISE fnd_api.g_exc_error;
5419 END IF;
5420 END IF;
5421 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Close_Interaction');
5422 SELECT count(*) into l_count
5423 FROM jtf_ih_activities
5424 WHERE interaction_id = p_interaction_rec.interaction_id;
5425 -- DBMS_OUTPUT.PUT_LINE('lcount = ' || l_count);
5426 IF (l_count <= 0) THEN
5427 x_return_status := fnd_api.g_ret_sts_error;
5428 -- DBMS_OUTPUT.PUT_LINE('x_return_status = ' || x_return_status);
5429 -- Bug# 1937894
5430 -- jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name, to_char(p_interaction_rec.interaction_id),
5431 -- 'activity_id');
5432 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_success) THEN
5433 fnd_message.set_name('JTF', 'JTF_IH_NO_ACTIVITY');
5434 fnd_message.set_token('API_NAME', l_api_name);
5435 fnd_msg_pub.add;
5436 END IF;
5437
5438 -- DBMS_OUTPUT.PUT_LINE('Yes');
5439 fnd_msg_pub.count_and_get
5440 ( p_count => x_msg_count,
5441 p_data => x_msg_data );
5442 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5443
5444 RETURN;
5445 END IF;
5446
5447 --
5448 --
5449 -- Update interaction
5450 --
5451 Update_Interaction
5452 ( p_api_version,
5453 p_init_msg_list,
5454 --p_commit,
5455 -- Bug# 2418028
5456 FND_API.G_FALSE,
5457 p_resp_appl_id,
5458 p_resp_id,
5459 p_user_id,
5460 p_login_id,
5461 x_return_status,
5462 x_msg_count,
5463 x_msg_data,
5464 p_interaction_rec,
5465 p_object_version);
5466 IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
5467 RAISE fnd_api.g_exc_error;
5468 END IF;
5469 -- DBMS_OUTPUT.PUT_LINE('PAST Update_Interaction in JTF_IH_PUB.Close_Interaction');
5470
5471 -- DBMS_OUTPUT.PUT_LINE('PAST validate at least one Activity per Interaction in JTF_IH_PUB.Close_Interaction');
5472 --SELECT outcome_id into l_outcome_id
5473 SELECT outcome_id into l_interaction_rec.outcome_id
5474 FROM jtf_ih_interactions
5475 WHERE interaction_id = p_interaction_rec.interaction_id;
5476 IF (l_interaction_rec.outcome_id IS NULL) or (l_interaction_rec.outcome_id = fnd_api.g_miss_num) THEN
5477 x_return_status := fnd_api.g_ret_sts_error;
5478 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(p_interaction_rec.outcome_id),
5479 'outcome_id');
5480 -- # 1937894
5481 --
5482 fnd_msg_pub.count_and_get
5483 ( p_count => x_msg_count,
5484 p_data => x_msg_data );
5485 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5486 RETURN;
5487 END IF;
5488
5489 SELECT end_date_time, start_date_time, duration
5490 --into l_end_date_time, l_start_date_time, l_duration
5491 into l_interaction_rec.end_date_time,
5492 l_interaction_rec.start_date_time,
5493 l_interaction_rec.duration
5494 FROM jtf_ih_interactions
5495 WHERE interaction_id = p_interaction_rec.interaction_id;
5496
5497 -- Added by IAleshin 21-MAY-2002
5498 --
5499 IF ((p_interaction_rec.start_date_time IS NOT NULL)AND (p_interaction_rec.start_date_time <> fnd_api.g_miss_date)) THEN
5500 --l_start_date_time := p_interaction_rec.start_date_time;
5501 l_interaction_rec.start_date_time := p_interaction_rec.start_date_time;
5502 END IF;
5503
5504 IF ((p_interaction_rec.end_date_time IS NOT NULL) AND (p_interaction_rec.end_date_time <> fnd_api.g_miss_date)) THEN
5505 --l_end_date_time := p_interaction_rec.end_date_time;
5506 l_interaction_rec.end_date_time := p_interaction_rec.end_date_time;
5507 END IF;
5508
5509 IF l_interaction_rec.end_date_time IS NULL THEN
5510 --l_end_date_time := SYSDATE;
5511 l_interaction_rec.end_date_time := SYSDATE;
5512 END IF;
5513
5514 Validate_StartEnd_Date
5515 ( p_api_name => l_api_name_full,
5516 --p_start_date_time => l_start_date_time,
5517 p_start_date_time => l_interaction_rec.start_date_time,
5518 --p_end_date_time => l_end_date_time,
5519 p_end_date_time => l_interaction_rec.end_date_time,
5520 x_return_status => l_return_status
5521 );
5522 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
5523 RAISE fnd_api.g_exc_error;
5524 END IF;
5525
5526 IF((p_interaction_rec.duration <> fnd_api.g_miss_num) AND (p_interaction_rec.duration IS NOT NULL)) THEN
5527 --l_duration := p_interaction_rec.duration;
5528 l_interaction_rec.duration := p_interaction_rec.duration;
5529 ELSE
5530 -- 09/11/2002 - IAleshin
5531 -- If we have a value for duration then leave it, else recalculate duration for current Interaction
5532 --
5533 IF (l_interaction_rec.duration IS NULL) OR (l_interaction_rec.duration = 0) THEN
5534 --l_duration := ROUND((l_end_date_time - l_start_date_time)*24*60*60);
5535 l_interaction_rec.duration := ROUND((l_interaction_rec.end_date_time - l_interaction_rec.start_date_time)*24*60*60);
5536 END IF;
5537 END IF;
5538
5539 FOR v_activity_id_c IN l_activity_id_c LOOP
5540
5541 -- Added by IAleshin 21-MAY-2002
5542 --
5543 SELECT outcome_id, action_item_id, start_date_time, end_date_time, duration
5544 INTO la_outcome_id, l_action_item_id, la_start_date_time, la_end_date_time, la_duration
5545 FROM jtf_ih_activities
5546 WHERE activity_id = v_activity_id_c.activity_id;
5547
5548
5549 IF (la_outcome_id IS NULL) OR (la_outcome_id = fnd_api.g_miss_num) THEN
5550 x_return_status := fnd_api.g_ret_sts_error;
5551 -- Bug# 3779487 added by nchouras 4-AUG-2004
5552 la_out_act_list(1).token_name := 'API_NAME';
5553 la_out_act_list(1).token_value := l_api_name_full;
5554 la_out_act_list(2).token_name := 'VALUE1';
5555 la_out_act_list(2).token_value := la_outcome_id;
5556 la_out_act_list(3).token_name := 'PARAMETER1';
5557 la_out_act_list(3).token_value := 'outcome_id';
5558 la_out_act_list(4).token_name := 'PARAMETER2';
5559 la_out_act_list(4).token_value := 'activity';
5560 la_out_act_list(5).token_name := 'PARAMETER3';
5561 la_out_act_list(5).token_value := 'activity_id';
5562 la_out_act_list(6).token_name := 'VALUE2';
5563 la_out_act_list(6).token_value := v_activity_id_c.activity_id;
5564 msg_code := 'JTF_API_ALL_INVALID_OUTCOME';
5565 --end Bug# 3779487
5566
5567 -- Bug# 3779487 changed l_outcome_id to la_outcome_id
5568 -- jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(la_outcome_id),
5569 -- 'outcome_id');
5570 -- Bug# 3779487 added by nchouras 4-AUG-2004
5571 jtf_ih_core_util_pvt.add_invalid_argument_msg_gen( msg_code,
5572 la_out_act_list);
5573
5574 fnd_msg_pub.count_and_get
5575 ( p_count => x_msg_count,
5576 p_data => x_msg_data );
5577 RETURN;
5578 END IF;
5579
5580 IF (l_action_item_id IS NULL) OR (l_action_item_id = fnd_api.g_miss_num) THEN
5581 x_return_status := fnd_api.g_ret_sts_error;
5582 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(l_action_item_id),
5583 'action_item_id');
5584 RETURN;
5585 END IF;
5586
5587 IF la_end_date_time IS NULL THEN
5588 la_end_date_time := SYSDATE;
5589 END IF;
5590 Validate_StartEnd_Date
5591 ( p_api_name => l_api_name_full,
5592 p_start_date_time => la_start_date_time,
5593 p_end_date_time => la_end_date_time,
5594 x_return_status => l_return_status
5595 );
5596 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
5597 RAISE fnd_api.g_exc_error;
5598 END IF;
5599
5600 -- 09/11/2002 - IAleshin
5601 -- If we have a value for duration then leave it, else recalculate duration for current Activity.
5602 --
5603 IF (la_duration IS NULL) OR (la_duration = 0) THEN
5604 la_duration := ROUND((la_end_date_time - la_start_date_time)*24*60*60);
5605 END IF;
5606 -- Perf fix for literal Usage
5607 UPDATE jtf_ih_activities SET ACTIVE = l_active_perf,
5608 END_DATE_TIME = la_end_date_time, DURATION = la_duration
5609 WHERE ACTIVITY_ID = v_activity_id_c.activity_id;
5610
5611 /* --Commented by IAleshin 21-MAY-2002
5612 ----
5613 l_outcome_id := NULL;
5614 SELECT outcome_id
5615 into l_outcome_id
5616 FROM jtf_ih_activities
5617 WHERE activity_id = v_activity_id_c.activity_id;
5618 IF (l_outcome_id IS NULL) THEN
5619 x_return_status := fnd_api.g_ret_sts_error;
5620 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(l_outcome_id),
5621 'outcome_id');
5622 -- # 1937894
5623 --
5624 fnd_msg_pub.count_and_get
5625 ( p_count => x_msg_count,
5626 p_data => x_msg_data );
5627 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5628 RETURN;
5629 END IF;
5630
5631 IF (l_action_item_id IS NULL) THEN
5632 x_return_status := fnd_api.g_ret_sts_error;
5633 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(l_action_item_id),
5634 'action_item_id');
5635 -- # 2281489
5636 fnd_msg_pub.count_and_get
5637 ( p_count => x_msg_count,
5638 p_data => x_msg_data );
5639 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5640 RETURN;
5641 END IF;
5642
5643 SELECT end_date_time, outcome_id
5644 into l_end_date_time, l_outcome_id
5645 FROM jtf_ih_activities
5646 WHERE activity_id = v_activity_id_c.activity_id;
5647 IF (l_outcome_id IS NULL) or (l_outcome_id = fnd_api.g_miss_num) THEN
5648 x_return_status := fnd_api.g_ret_sts_error;
5649 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(p_interaction_rec.outcome_id),
5650 'outcome_id');
5651 -- Bug# 1937894
5652 --
5653 fnd_msg_pub.count_and_get
5654 ( p_count => x_msg_count,
5655 p_data => x_msg_data );
5656 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5657 RETURN;
5658 END IF;
5659
5660 IF(l_end_date_time IS NULL) or (l_end_date_time = fnd_api.g_miss_date) THEN
5661 l_end_date_time := SYSDATE;
5662 END IF;
5663 UPDATE jtf_ih_activities SET ACTIVE = 'N',end_date_time = l_end_date_time
5664 WHERE activity_id = v_activity_id_c.activity_id;*/
5665 END LOOP;
5666 -- DBMS_OUTPUT.PUT_LINE('PAST Update ACTIVE in JTF_IH_PUB.Close_Interaction');
5667
5668 -- Changed location by IAleshin
5669 -- Bug# 2418028
5670 -- Set active to 'N' for jtf_ih_interactions and related jtf_ih_activities
5671 --
5672 -- Check if end_date_time is currently 'null' or 'fnd_api.g_miss_date'
5673 -- If either of the above is true, then set end_date_time to sysdate
5674 --
5675
5676 -- Perf fix for literal Usage
5677 UPDATE jtf_ih_interactions
5678 SET ACTIVE = l_active_perf,
5679 START_DATE_TIME = l_interaction_rec.start_date_time,
5680 end_date_time = l_interaction_rec.end_date_time,
5681 duration = l_interaction_rec.duration
5682 WHERE interaction_id = p_interaction_rec.interaction_id;
5683
5684 -- Post processing Call
5685
5686 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_INTERACTION', 'A', 'V') THEN
5687 JTF_IH_PUB_VUHK.close_interaction_post(p_interaction_rec=>l_interaction_rec,
5688 x_data=>l_data,
5689 x_count=>l_count_hk,
5690 x_return_code=>l_return_code);
5691 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
5692 RAISE FND_API.G_EXC_ERROR;
5693 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5694 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5695 END IF;
5696 END IF;
5697
5698 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_INTERACTION', 'A', 'C') THEN
5699 JTF_IH_PUB_CUHK.close_interaction_post(p_interaction_rec=>l_interaction_rec,
5700 x_data=>l_data,
5701 x_count=>l_count_hk,
5702 x_return_code=>l_return_code);
5703 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
5704 RAISE FND_API.G_EXC_ERROR;
5705 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5706 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5707 END IF;
5708 END IF;
5709
5710
5711 -- Standard check of p_commit
5712 IF fnd_api.to_boolean(p_commit) THEN
5713 COMMIT WORK;
5714 END IF;
5715 -- Standard call to get message count and if count is 1, get message info
5716 fnd_msg_pub.count_and_get( p_count => x_msg_count, p_data => x_msg_data );
5717 EXCEPTION
5718 WHEN fnd_api.g_exc_error THEN
5719 ROLLBACK TO close_interaction_pub1;
5720 x_return_status := fnd_api.g_ret_sts_error;
5721 fnd_msg_pub.count_and_get
5722 ( p_count => x_msg_count,
5723 p_data => x_msg_data );
5724 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5725 WHEN fnd_api.g_exc_unexpected_error THEN
5726 ROLLBACK TO close_interaction_pub1;
5727 x_return_status := fnd_api.g_ret_sts_unexp_error;
5728 fnd_msg_pub.count_and_get
5729 ( p_count => x_msg_count,
5730 p_data => x_msg_data );
5731 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5732 WHEN OTHERS THEN
5733 ROLLBACK TO close_interaction_pub1;
5734 x_return_status := fnd_api.g_ret_sts_unexp_error;
5735 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
5736 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
5737 END IF;
5738 fnd_msg_pub.count_and_get
5739 ( p_count => x_msg_count,
5740 p_data => x_msg_data );
5741 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
5742
5743 END Close_Interaction;
5744
5745 --
5746 --
5747 -- History
5748 -- -------
5749 -- Author Date Description
5750 -- ------ ---- -----------
5751 -- Jean Zhu 01/11/2000 Initial Version
5752 -- James Baldo Jr. 03/06/2000 to fix bug: write cust_account_id column
5753 -- James Baldo Jr. 04/20/2000 to fix bugdb 1275539: write doc_source_object_name
5754 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
5755 -- Igor Aleshin 18-DEC-2001 Fix bug# 2153913
5756 -- Igor Aleshin 21-DEC-2001 Fix for bugdb - 2153913 - PREVENT G_MISS_DATE VALUE FROM BEING
5757 -- WRITTEN TO THE END_DATE_TIME VALUE.
5758 -- Igor Aleshin 04-MAR-2002 Added Attributes to Activitiy_Rec
5759 -- Igor Aleshin 10-MAY-2002 ENH# 2079963 - NEED INTERACTION HISTORY
5760 -- RECORD TO SUPPORT MULTIPLE AGENTS
5761 -- Igor Aleshin 20-MAY-2002 Changed the logic in Duration piece of code.
5762 -- Igor Aleshin 05-JUN-2002 Removed from statemements Resource_ID for Activity_Rec_Type
5763 -- Igor Aleshin 24-FEB-2003 Fixed bug# 2817083 - Error loggin interactions
5764 --
5765
5766 PROCEDURE Add_Activity
5767 (
5768 p_api_version IN NUMBER,
5769 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
5770 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
5771 p_resp_appl_id IN NUMBER DEFAULT NULL,
5772 p_resp_id IN NUMBER DEFAULT NULL,
5773 p_user_id IN NUMBER,
5774 p_login_id IN NUMBER DEFAULT NULL,
5775 x_return_status OUT NOCOPY VARCHAR2,
5776 x_msg_count OUT NOCOPY NUMBER,
5777 x_msg_data OUT NOCOPY VARCHAR2,
5778 p_activity_rec IN activity_rec_type,
5779 x_activity_id OUT NOCOPY NUMBER
5780 )
5781 AS
5782 l_api_name CONSTANT VARCHAR2(30) := 'Add_Activity';
5783 l_api_version CONSTANT NUMBER := 1.0;
5784 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
5785 l_return_status VARCHAR2(1);
5786 --l_activity_id NUMBER;
5787 --l_duration NUMBER := NULL;
5788 --l_start_date_time DATE;
5789 -- Bug# 2153913
5790 --l_end_date_time DATE;
5791 l_active VARCHAR2(1);
5792 l_return_code VARCHAR2(1);
5793 l_data VARCHAR2(2000);
5794 l_count NUMBER;
5795 l_activity_rec ACTIVITY_REC_TYPE;
5796 -- Bug# 2817083
5797 l_inter_active VARCHAR2(1) ; -- Bug# 4477761
5798 DuplicateID exception;
5799 BEGIN
5800 -- local variables initialization to remove GSCC warning
5801 -- l_active := 'Y';
5802
5803 -- Standard start of API savepoint
5804 SAVEPOINT add_activity_pub;
5805 -- Preprocessing Call
5806 l_activity_rec := p_activity_rec;
5807 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'ADD_ACTIVITY', 'B', 'C') THEN
5808 JTF_IH_PUB_CUHK.add_activity_pre(p_activity_rec=>l_activity_rec,
5809 x_data=>l_data,
5810 x_count=>l_count,
5811 x_return_code=>l_return_code);
5812 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
5813 RAISE FND_API.G_EXC_ERROR;
5814 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5815 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5816 END IF;
5817 END IF;
5818
5819 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'ADD_ACTIVITY', 'B', 'V') THEN
5820 JTF_IH_PUB_VUHK.add_activity_pre(p_activity_rec=>l_activity_rec,
5821 x_data=>l_data,
5822 x_count=>l_count,
5823 x_return_code=>l_return_code);
5824 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
5825 RAISE FND_API.G_EXC_ERROR;
5826 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5827 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5828 END IF;
5829 END IF;
5830
5831
5832 -- Standard call to check for call compatibility
5833 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
5834 l_api_name, g_pkg_name) THEN
5835 RAISE fnd_api.g_exc_unexpected_error;
5836 END IF;
5837 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Add_Activity');
5838
5839 -- Initialize message list if p_init_msg_list is set to TRUE
5840 IF fnd_api.to_boolean(p_init_msg_list) THEN
5841 fnd_msg_pub.initialize;
5842 END IF;
5843
5844 -- Initialize API return status to success
5845 x_return_status := fnd_api.g_ret_sts_success;
5846
5847 --
5848 -- Apply business-rule validation to all required and passed parameters
5849 --
5850 -- Validate user and login session IDs
5851 --
5852 IF (p_user_id IS NULL) THEN
5853 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
5854 RAISE fnd_api.g_exc_error;
5855 ELSE
5856 jtf_ih_core_util_pvt.validate_who_info
5857 ( p_api_name => l_api_name_full,
5858 p_parameter_name_usr => 'p_user_id',
5859 p_parameter_name_log => 'p_login_id',
5860 p_user_id => p_user_id,
5861 p_login_id => p_login_id,
5862 x_return_status => l_return_status );
5863 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
5864 RAISE fnd_api.g_exc_error;
5865 END IF;
5866 END IF;
5867 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Add_Activity');
5868
5869 --
5870 -- Validate all non-missing attributes by calling the utility procedure.
5871 --
5872 Validate_Activity_Record
5873 ( p_api_name => l_api_name_full,
5874 p_act_val_rec => p_activity_rec,
5875 p_resp_appl_id => p_resp_appl_id,
5876 p_resp_id => p_resp_id,
5877 x_return_status => l_return_status
5878 );
5879 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
5880 RAISE fnd_api.g_exc_error;
5881 END IF;
5882 -- DBMS_OUTPUT.PUT_LINE('PAST Validate_Activity_Record in JTF_IH_PUB.Add_Activity');
5883
5884 -- Bug# 4477761
5885 -- Setting the Active status of the activity rec
5886 -- based on the fact whether the Interaction it is
5887 -- associated with is closed or open
5888 -- If Activity added to closed interaction active status = 'N'
5889
5890 SELECT active
5891 INTO l_inter_active
5892 FROM JTF_IH_INTERACTIONS
5893 WHERE interaction_id = p_activity_rec.interaction_id;
5894
5895 IF l_inter_active = 'Y' THEN
5896 l_active := 'Y';
5897 ELSE
5898 l_active := 'N';
5899 END IF;
5900
5901 --End Bug# 4477761
5902
5903 -- Changed by IAleshin 20-MAY-2002
5904 IF (p_activity_rec.end_date_time <> fnd_api.g_miss_DATE) AND (p_activity_rec.end_date_time IS NOT NULL) THEN
5905 --l_end_date_time := p_activity_rec.end_date_time;
5906 l_activity_rec.end_date_time := p_activity_rec.end_date_time;
5907 ELSIF l_active = 'N' THEN --Bug# 4477761 add activity to closed interaction
5908 --l_end_date_time := SYSDATE;
5909 l_activity_rec.end_date_time := SYSDATE;
5910 ELSE
5911 --l_end_date_time := null;
5912 l_activity_rec.end_date_time := null;
5913 END IF;
5914
5915 IF ((p_activity_rec.start_date_time <> fnd_api.g_miss_date) AND (p_activity_rec.start_date_time IS NOT NULL)) THEN
5916 --l_start_date_time := p_activity_rec.start_date_time;
5917 l_activity_rec.start_date_time := p_activity_rec.start_date_time;
5918 ELSE
5919 --l_start_date_time := SYSDATE;
5920 l_activity_rec.start_date_time := SYSDATE;
5921 END IF;
5922
5923 Validate_StartEnd_Date( p_api_name => l_api_name_full,
5924 --p_start_date_time => l_start_date_time,
5925 p_start_date_time => l_activity_rec.start_date_time,
5926 --p_end_date_time => l_end_date_time,
5927 p_end_date_time => l_activity_rec.end_date_time,
5928 x_return_status => l_return_status);
5929 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
5930 RAISE fnd_api.g_exc_error;
5931 END IF;
5932
5933 IF ((p_activity_rec.duration IS NOT NULL) AND (p_activity_rec.duration <> fnd_api.g_miss_num))THEN
5934 --l_duration := p_activity_rec.duration;
5935 l_activity_rec.duration := p_activity_rec.duration;
5936 ELSIF(l_activity_rec.end_date_time IS NOT NULL) THEN
5937 --l_duration := ROUND((l_end_date_time - l_start_date_time)*24*60*60);
5938 l_activity_rec.duration := ROUND((l_activity_rec.end_date_time - l_activity_rec.start_date_time)*24*60*60);
5939 END IF;
5940
5941 -- Removed by IAleshin 06/04/2002
5942 -- Enh# 2079963
5943 /*IF( p_activity_rec.resource_id IS NOT NULL) AND (p_activity_rec.resource_id <> fnd_api.g_miss_num) THEN
5944 SELECT count(resource_id) into l_count
5945 FROM jtf_rs_resource_extns
5946 WHERE resource_id = p_activity_rec.resource_id;
5947 IF (l_count <= 0) THEN
5948 x_return_status := fnd_api.g_ret_sts_error;
5949 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(p_activity_rec.resource_id),'resource_id');
5950 RETURN;
5951 END IF;
5952 l_activity_rec.resource_id := p_activity_rec.resource_id;
5953 ELSE
5954 -- If resource_id is null or g_miss_num, then get value from parent interaction
5955 SELECT resource_id INTO l_activity_rec.resource_id
5956 FROM jtf_ih_interactions WHERE interaction_id = p_activity_rec.interaction_id;
5957 END IF;*/
5958
5959 -- Bug 2817083
5960 --l_activity_id := Get_Activity_ID(NULL);
5961 l_activity_rec.activity_id := Get_Activity_ID(NULL);
5962 --SELECT JTF_IH_ACTIVITIES_S1.NextVal into l_activity_id FROM dual;
5963
5964 validate_source_code(l_api_name_full, l_activity_rec.source_code_id, l_activity_rec.source_code, x_return_status);
5965 IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
5966 RAISE fnd_api.g_exc_error;
5967 END IF;
5968
5969 INSERT INTO jtf_ih_Activities
5970 (
5971 ACTIVITY_ID,
5972 OBJECT_ID,
5973 OBJECT_TYPE,
5974 SOURCE_CODE_ID,
5975 SOURCE_CODE,
5976 DURATION,
5977 DESCRIPTION,
5978 DOC_ID,
5979 DOC_REF,
5980 DOC_SOURCE_OBJECT_NAME,
5981 END_DATE_TIME,
5982 RESULT_ID,
5983 REASON_ID,
5984 START_DATE_TIME,
5985 ACTION_ID,
5986 INTERACTION_ACTION_TYPE,
5987 MEDIA_ID,
5988 OUTCOME_ID,
5989 ACTION_ITEM_ID,
5990 INTERACTION_ID,
5991 TASK_ID,
5992 CREATION_DATE,
5993 CREATED_BY,
5994 LAST_UPDATED_BY,
5995 LAST_UPDATE_DATE,
5996 LAST_UPDATE_LOGIN,
5997 CUST_ACCOUNT_ID,
5998 ATTRIBUTE1,
5999 ATTRIBUTE2,
6000 ATTRIBUTE3,
6001 ATTRIBUTE4,
6002 ATTRIBUTE5,
6003 ATTRIBUTE6,
6004 ATTRIBUTE7,
6005 ATTRIBUTE8,
6006 ATTRIBUTE9,
6007 ATTRIBUTE10,
6008 ATTRIBUTE11,
6009 ATTRIBUTE12,
6010 ATTRIBUTE13,
6011 ATTRIBUTE14,
6012 ATTRIBUTE15,
6013 ATTRIBUTE_CATEGORY,
6014 ACTIVE,
6015 SCRIPT_TRANS_ID,
6016 ROLE
6017 -- ,RESOURCE_ID
6018 )
6019 VALUES
6020 (
6021 --l_activity_id,
6022 l_activity_rec.activity_id,
6023 decode( p_activity_rec.object_id, fnd_api.g_miss_num, null, p_activity_rec.object_id),
6024 decode( p_activity_rec.object_type, fnd_api.g_miss_char, null, p_activity_rec.object_type),
6025 decode( l_activity_rec.source_code_id, fnd_api.g_miss_num, null, l_activity_rec.source_code_id),
6026 decode( l_activity_rec.source_code, fnd_api.g_miss_char, null, l_activity_rec.source_code),
6027 --l_duration,
6028 l_activity_rec.duration,
6029 decode( p_activity_rec.description, fnd_api.g_miss_char, null, p_activity_rec.description),
6030 decode( p_activity_rec.doc_id, fnd_api.g_miss_num, null, p_activity_rec.doc_id),
6031 decode( p_activity_rec.doc_ref, fnd_api.g_miss_char, null, p_activity_rec.doc_ref),
6032 decode( p_activity_rec.doc_source_object_name, fnd_api.g_miss_char, null, p_activity_rec.doc_source_object_name),
6033 --l_end_date_time,
6034 l_activity_rec.end_date_time,
6035 decode( p_activity_rec.result_id, fnd_api.g_miss_num, null, p_activity_rec.result_id),
6036 decode( p_activity_rec.reason_id, fnd_api.g_miss_num, null, p_activity_rec.reason_id),
6037 --l_start_date_time,
6038 l_activity_rec.start_date_time,
6039 decode( p_activity_rec.action_id, fnd_api.g_miss_num, null, p_activity_rec.action_id),
6040 decode( p_activity_rec.interaction_action_type, fnd_api.g_miss_char, null, p_activity_rec.interaction_action_type),
6041 decode( p_activity_rec.media_id, fnd_api.g_miss_num, null, p_activity_rec.media_id),
6042 decode( p_activity_rec.outcome_id, fnd_api.g_miss_num, null, p_activity_rec.outcome_id),
6043 decode( p_activity_rec.action_item_id, fnd_api.g_miss_num, null, p_activity_rec.action_item_id),
6044 p_activity_rec.interaction_id,
6045 decode( p_activity_rec.task_id, fnd_api.g_miss_num, null, p_activity_rec.task_id),
6046 Sysdate,
6047 p_user_id,
6048 p_user_id,
6049 Sysdate,
6050 p_login_id,
6051 decode( p_activity_rec.cust_account_id, fnd_api.g_miss_num, null, p_activity_rec.cust_account_id),
6052 decode( p_activity_rec.attribute1, fnd_api.g_miss_char, null, p_activity_rec.attribute1),
6053 decode( p_activity_rec.attribute2, fnd_api.g_miss_char, null, p_activity_rec.attribute2),
6054 decode( p_activity_rec.attribute3, fnd_api.g_miss_char, null, p_activity_rec.attribute3),
6055 decode( p_activity_rec.attribute4, fnd_api.g_miss_char, null, p_activity_rec.attribute4),
6056 decode( p_activity_rec.attribute5, fnd_api.g_miss_char, null, p_activity_rec.attribute5),
6057 decode( p_activity_rec.attribute6, fnd_api.g_miss_char, null, p_activity_rec.attribute6),
6058 decode( p_activity_rec.attribute7, fnd_api.g_miss_char, null, p_activity_rec.attribute7),
6059 decode( p_activity_rec.attribute8, fnd_api.g_miss_char, null, p_activity_rec.attribute8),
6060 decode( p_activity_rec.attribute9, fnd_api.g_miss_char, null, p_activity_rec.attribute9),
6061 decode( p_activity_rec.attribute10, fnd_api.g_miss_char, null, p_activity_rec.attribute10),
6062 decode( p_activity_rec.attribute11, fnd_api.g_miss_char, null, p_activity_rec.attribute11),
6063 decode( p_activity_rec.attribute12, fnd_api.g_miss_char, null, p_activity_rec.attribute12),
6064 decode( p_activity_rec.attribute13, fnd_api.g_miss_char, null, p_activity_rec.attribute13),
6065 decode( p_activity_rec.attribute14, fnd_api.g_miss_char, null, p_activity_rec.attribute14),
6066 decode( p_activity_rec.attribute15, fnd_api.g_miss_char, null, p_activity_rec.attribute15),
6067 decode( p_activity_rec.attribute_category, fnd_api.g_miss_char, null, p_activity_rec.attribute_category),
6068 l_active,
6069 decode( p_activity_rec.script_trans_id, fnd_api.g_miss_num, null, p_activity_rec.script_trans_id),
6070 decode( p_activity_rec.role, fnd_api.g_miss_char, null, p_activity_rec.role)
6071 -- ,l_activity_rec.resource_id
6072 );
6073 -- DBMS_OUTPUT.PUT_LINE('PAST INSERT INTO jtf_ih_activities in JTF_IH_PUB.Add_Activity');
6074
6075 --
6076 -- Set OUT value
6077 --
6078 --x_activity_id := l_activity_id;
6079 x_activity_id := l_activity_rec.activity_id;
6080
6081 -- Post processing Call
6082
6083 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'ADD_ACTIVITY', 'A', 'V') THEN
6084 JTF_IH_PUB_VUHK.add_activity_post(p_activity_rec=>l_activity_rec,
6085 x_data=>l_data,
6086 x_count=>l_count,
6087 x_return_code=>l_return_code);
6088 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
6089 RAISE FND_API.G_EXC_ERROR;
6090 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6091 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6092 END IF;
6093 END IF;
6094
6095 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'ADD_ACTIVITY', 'A', 'C') THEN
6096 JTF_IH_PUB_CUHK.add_activity_post(p_activity_rec=>l_activity_rec,
6097 x_data=>l_data,
6098 x_count=>l_count,
6099 x_return_code=>l_return_code);
6100 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
6101 RAISE FND_API.G_EXC_ERROR;
6102 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6103 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6104 END IF;
6105 END IF;
6106
6107
6108
6109
6110 -- Standard check of p_commit
6111 IF fnd_api.to_boolean(p_commit) THEN
6112 COMMIT WORK;
6113 END IF;
6114
6115 -- Standard call to get message count and if count is 1, get message info
6116 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data );
6117 EXCEPTION
6118 WHEN fnd_api.g_exc_error THEN
6119 ROLLBACK TO add_activity_pub;
6120 x_return_status := fnd_api.g_ret_sts_error;
6121 fnd_msg_pub.count_and_get
6122 ( p_count => x_msg_count,
6123 p_data => x_msg_data );
6124 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
6125 WHEN fnd_api.g_exc_unexpected_error THEN
6126 ROLLBACK TO add_activity_pub;
6127 x_return_status := fnd_api.g_ret_sts_unexp_error;
6128 fnd_msg_pub.count_and_get
6129 ( p_count => x_msg_count,
6130 p_data => x_msg_data );
6131 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
6132 WHEN OTHERS THEN
6133 ROLLBACK TO add_activity_pub;
6134 x_return_status := fnd_api.g_ret_sts_unexp_error;
6135 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
6136 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
6137 END IF;
6138 fnd_msg_pub.count_and_get
6139 ( p_count => x_msg_count,
6140 p_data => x_msg_data );
6141 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
6142 END Add_Activity;
6143
6144
6145 --
6146 --
6147 -- History
6148 -- -------
6149 -- Author Date Description
6150 -- ------ ---- -----------
6151 -- Jean Zhu 01/11/2000 Initial Version
6152 -- James Baldo Jr. 03/06/2000 to fix bug: write cust_account_id column
6153 -- James Baldo Jr. 04/20/2000 to fix bugdb 1275539: write doc_source_object_name
6154 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
6155 -- James Baldo Jr. 05-MAY-2000 Fix for updateing start_date_time bug
6156 -- Igor Aleshin 28-SEP-2001 Fix performance issue for multiple updates. Based on bugdb # 2029051
6157 -- Igor Aleshin 18-DEC-2001 Fix bug# 2153913
6158 -- Igor Aleshin 04-MAR-2002 Added Attributes to Activity_Rec
6159 -- Igor Aleshin 10-MAY-2002 ENH# 2079963 - NEED INTERACTION HISTORY RECORD TO
6160 -- SUPPORT MULTIPLE AGENTS
6161 -- Igor Aleshin 21-MAY-2002 Modified duration calculation
6162 -- Igor Aleshin 05-JUN-2002 Removed from statemements Resource_ID for Activity_Rec_Type
6163 -- Igor Aleshin 11-SEP-2002 Fixed duration overwrite issue
6164 -- Igor Aleshin 19-FEB-2003 Fixed bug# 2804696 - TRANSACTION_ID IS NOT GETTING LOGGED IN INTERACTION TABLES
6165 -- Igor Aleshin 29-AUG-2003 Fixed bug#3117798 - BR1159: UPDATING SOURCE CODE IN INTERACTIONS GIVES API ERROR.
6166 --
6167
6168 PROCEDURE Update_Activity
6169 (
6170 p_api_version IN NUMBER,
6171 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
6172 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
6173 p_resp_appl_id IN NUMBER DEFAULT NULL,
6174 p_resp_id IN NUMBER DEFAULT NULL,
6175 p_user_id IN NUMBER,
6176 p_login_id IN NUMBER DEFAULT NULL,
6177 x_return_status OUT NOCOPY VARCHAR2,
6178 x_msg_count OUT NOCOPY NUMBER,
6179 x_msg_data OUT NOCOPY VARCHAR2,
6180 p_activity_rec IN activity_rec_type,
6181 -- Bug# 2012159
6182 p_object_version IN NUMBER DEFAULT NULL
6183 )
6184 AS
6185 l_api_name CONSTANT VARCHAR2(30) := 'Update_Activity';
6186 l_api_version CONSTANT NUMBER := 1.0;
6187 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
6188 l_return_status VARCHAR2(1);
6189 --l_start_date_time DATE;
6190 --l_end_date_time DATE;
6191 --l_duration NUMBER := NULL;
6192 l_count NUMBER := 0;
6193 l_active VARCHAR2(1) := NULL;
6194 l_return_code VARCHAR2(1);
6195 l_data VARCHAR2(2000);
6196 l_count_hk NUMBER;
6197 l_activity_rec ACTIVITY_REC_TYPE;
6198 -- Added by Igor
6199 -- 2012459
6200 --
6201 l_activity_id NUMBER;
6202 --l_cust_account_id NUMBER;
6203 --l_cust_org_id NUMBER;
6204 --l_role VARCHAR2(240);
6205 --l_task_id NUMBER;
6206 --l_doc_id NUMBER;
6207 --l_doc_ref VARCHAR2(30);
6208 --l_doc_source_object_name VARCHAR2(80);
6209 --l_media_id NUMBER;
6210 --l_action_item_id NUMBER;
6211 --l_interaction_id NUMBER;
6212 --l_outcome_id NUMBER;
6213 --l_result_id NUMBER;
6214 --l_reason_id NUMBER;
6215 --l_description VARCHAR2(1000);
6216 --l_action_id NUMBER;
6217 --l_interaction_action_type VARCHAR2(240);
6218 --l_object_id NUMBER;
6219 --l_object_type VARCHAR2(30);
6220 --l_source_code_id NUMBER;
6221 --l_source_code VARCHAR2(100);
6222 --l_script_trans_id NUMBER;
6223 l_object_version NUMBER;
6224 --l_attribute1 VARCHAR2(150);
6225 --l_attribute2 VARCHAR2(150);
6226 --l_attribute3 VARCHAR2(150);
6227 --l_attribute4 VARCHAR2(150);
6228 --l_attribute5 VARCHAR2(150);
6229 --l_attribute6 VARCHAR2(150);
6230 --l_attribute7 VARCHAR2(150);
6231 --l_attribute8 VARCHAR2(150);
6232 --l_attribute9 VARCHAR2(150);
6233 --l_attribute10 VARCHAR2(150);
6234 --l_attribute11 VARCHAR2(150);
6235 --l_attribute12 VARCHAR2(150);
6236 --l_attribute13 VARCHAR2(150);
6237 --l_attribute14 VARCHAR2(150);
6238 --l_attribute15 VARCHAR2(150);
6239 --l_attribute_category VARCHAR2(150);
6240 -- Removed by IAleshin 06/05/2002
6241 --l_resource_id NUMBER;
6242 l_recalc_duration BOOLEAN;
6243
6244 l_profile_id VARCHAR2(20); --profile option id check to update closed interaction
6245
6246 CURSOR c_Activity_crs IS SELECT * FROM JTF_IH_ACTIVITIES
6247 WHERE Activity_ID = p_activity_rec.activity_id;
6248 rc_Activity c_Activity_crs%ROWTYPE;
6249
6250 BEGIN
6251 -- Stand!rd start of API savepoint
6252 SAVEPOINT update_activity_pub;
6253
6254 -- Preprocessing Call
6255 l_activity_rec := p_activity_rec;
6256 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_ACTIVITY', 'B', 'C') THEN
6257 JTF_IH_PUB_CUHK.update_activity_pre(p_activity_rec=>l_activity_rec,
6258 x_data=>l_data,
6259 x_count=>l_count_hk,
6260 x_return_code=>l_return_code);
6261 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
6262 RAISE FND_API.G_EXC_ERROR;
6263 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6264 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6265 END IF;
6266 END IF;
6267
6268 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_ACTIVITY', 'B', 'V') THEN
6269 JTF_IH_PUB_VUHK.update_activity_pre(p_activity_rec=>l_activity_rec,
6270 x_data=>l_data,
6271 x_count=>l_count,
6272 x_return_code=>l_return_code);
6273 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
6274 RAISE FND_API.G_EXC_ERROR;
6275 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6276 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6277 END IF;
6278 END IF;
6279
6280 -- Standard call to check for call compatibility
6281 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
6282 l_api_name, g_pkg_name) THEN
6283 RAISE fnd_api.g_exc_unexpected_error;
6284 END IF;
6285 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Update_Activity');
6286
6287 -- Initialize message list if p_init_msg_list is set to TRUE
6288 IF fnd_api.to_boolean(p_init_msg_list) THEN
6289 fnd_msg_pub.initialize;
6290 END IF;
6291
6292 -- Initialize API return status to success
6293 x_return_status := fnd_api.g_ret_sts_success;
6294
6295 --
6296 -- Apply business-rule validation to all required and passed parameters
6297 --
6298 -- Validate user and login session IDs
6299 --
6300 IF (p_user_id IS NULL) THEN
6301 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
6302 RAISE fnd_api.g_exc_error;
6303 ELSE
6304 jtf_ih_core_util_pvt.validate_who_info
6305 ( p_api_name => l_api_name_full,
6306 p_parameter_name_usr => 'p_user_id',
6307 p_parameter_name_log => 'p_login_id',
6308 p_user_id => p_user_id,
6309 p_login_id => p_login_id,
6310 x_return_status => l_return_status );
6311 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
6312 RAISE fnd_api.g_exc_error;
6313 END IF;
6314 END IF;
6315 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Update_Activity');
6316
6317 --
6318 -- Validate all non-missing attributes by calling the utility procedure.
6319 --
6320 Validate_Activity_Record
6321 ( p_api_name => l_api_name_full,
6322 p_act_val_rec => p_activity_rec,
6323 p_resp_appl_id => p_resp_appl_id,
6324 p_resp_id => p_resp_id,
6325 x_return_status => l_return_status
6326 );
6327 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
6328 RAISE fnd_api.g_exc_error;
6329 END IF;
6330 -- DBMS_OUTPUT.PUT_LINE('PAST Validate_Activity_Record in JTF_IH_PUB.Update_Activity');
6331
6332 --
6333 -- Update table JTF_IH_INTERACTIONS
6334 --
6335 IF (p_activity_rec.activity_id IS NULL) THEN
6336 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'activity_id');
6337 RAISE fnd_api.g_exc_error;
6338 ELSE
6339 l_count := 0;
6340 SELECT count(*) into l_count
6341 FROM jtf_ih_activities
6342 WHERE activity_id = p_activity_rec.activity_id;
6343 IF (l_count <> 1) THEN
6344 x_return_status := fnd_api.g_ret_sts_error;
6345 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(p_activity_rec.activity_id),
6346 'activity_id');
6347 RETURN;
6348 ELSE
6349
6350 OPEN c_Activity_crs;
6351 FETCH c_Activity_crs INTO rc_Activity;
6352 IF (c_Activity_crs%notfound) THEN
6353 x_return_status := fnd_api.g_ret_sts_error;
6354 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name, to_char(p_activity_rec.activity_id),
6355 'Activity_id');
6356 RETURN;
6357 END IF;
6358 l_active := rc_Activity.Active;
6359
6360 -- Bug# 4477761 check if profile option is turned on
6361 -- If yes then allow update on closed activity
6362 fnd_profile.get('JTF_IH_ALLOW_INT_UPDATE_AFTER_CLOSE',l_profile_id);
6363 IF(l_active <> 'N') OR (l_active = 'N' AND l_profile_id = 'Y') THEN
6364 l_recalc_duration := FALSE;
6365 IF (p_activity_rec.start_date_time <> fnd_api.g_miss_date) AND (p_activity_rec.start_date_time IS NOT NULL) THEN
6366 --l_start_date_time := p_activity_rec.start_date_time;
6367 l_activity_rec.start_date_time := p_activity_rec.start_date_time;
6368 -- duration may need to be recalculated based on the new value - RDD
6369 l_recalc_duration := TRUE;
6370 ELSE
6371 --l_start_date_time := rc_Activity.Start_Date_Time;
6372 l_activity_rec.start_date_time := rc_Activity.Start_Date_Time;
6373 END IF;
6374
6375 IF ((p_activity_rec.end_date_time IS NOT NULL) AND (p_activity_rec.end_date_time <> fnd_api.g_miss_date)) THEN
6376 --l_end_date_time := p_activity_rec.end_date_time;
6377 l_activity_rec.end_date_time := rc_Activity.End_Date_Time;
6378 -- duration may need to be recalculated based on the new value - RDD
6379 l_recalc_duration := TRUE;
6380 ELSE
6381 --l_end_date_time := rc_Activity.End_Date_Time;
6382 l_activity_rec.end_date_time := rc_Activity.End_Date_Time;
6383 END IF;
6384
6385 Validate_StartEnd_Date
6386 ( p_api_name => l_api_name_full,
6387 --p_start_date_time => l_start_date_time,
6388 p_start_date_time => l_activity_rec.start_date_time,
6389 --p_end_date_time => l_end_date_time,
6390 p_end_date_time => l_activity_rec.end_date_time,
6391 x_return_status => l_return_status
6392 );
6393 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
6394 RAISE fnd_api.g_exc_error;
6395 END IF;
6396
6397 -- Determine if duration recalc can be done. We require start and end date. - RDD
6398 IF l_recalc_duration = TRUE THEN
6399 IF l_activity_rec.end_date_time IS NULL THEN
6400 l_recalc_duration := FALSE;
6401 END IF;
6402 END IF;
6403
6404 -- Added expression based on the bug# 2560551
6405 IF(p_activity_rec.duration <> fnd_api.g_miss_num) AND (p_activity_rec.duration IS NOT NULL) THEN
6406 --l_duration := p_activity_rec.duration;
6407 l_activity_rec.duration := p_activity_rec.duration;
6408 ELSE
6409 IF l_recalc_duration = TRUE THEN
6410 --l_duration := ROUND((l_end_date_time - l_start_date_time)*24*60*60);
6411 l_activity_rec.duration := ROUND((l_activity_rec.end_date_time - l_activity_rec.start_date_time)*24*60*60);
6412 ELSE
6413 --l_duration := rc_Activity.duration;
6414 l_activity_rec.duration := rc_Activity.duration;
6415 END IF;
6416 END IF;
6417
6418 --IF(p_activity_rec.cust_account_id = fnd_api.g_miss_num) OR (p_activity_rec.cust_account_id IS NULL) THEN
6419 IF(p_activity_rec.cust_account_id = fnd_api.g_miss_num) THEN
6420 --l_cust_account_id := rc_Activity.cust_account_id;
6421 l_activity_rec.cust_account_id := rc_Activity.cust_account_id;
6422 ELSE
6423 --l_cust_account_id := p_activity_rec.cust_account_id;
6424 l_activity_rec.cust_account_id := p_activity_rec.cust_account_id;
6425 END IF;
6426
6427 --IF(p_activity_rec.cust_org_id = fnd_api.g_miss_num) OR (p_activity_rec.cust_org_id IS NULL) THEN
6428 IF(p_activity_rec.cust_org_id = fnd_api.g_miss_num) THEN
6429 --l_cust_org_id := rc_Activity.cust_org_id;
6430 l_activity_rec.cust_org_id := rc_Activity.cust_org_id;
6431 ELSE
6432 --l_cust_org_id := p_activity_rec.cust_org_id;
6433 l_activity_rec.cust_org_id := p_activity_rec.cust_org_id;
6434 END IF;
6435
6436 --IF(p_activity_rec.role = fnd_api.g_miss_char) OR (p_activity_rec.role IS NULL) THEN
6437 IF(p_activity_rec.role = fnd_api.g_miss_char) THEN
6438 --l_role := rc_Activity.role;
6439 l_activity_rec.role := rc_Activity.role;
6440 ELSE
6441 --l_role := p_activity_rec.role;
6442 l_activity_rec.role := p_activity_rec.role;
6443 END IF;
6444
6445 --IF(p_activity_rec.outcome_id = fnd_api.g_miss_num) OR (p_activity_rec.outcome_id IS NULL) THEN
6446 IF(p_activity_rec.outcome_id = fnd_api.g_miss_num) THEN
6447 --l_outcome_id := rc_Activity.outcome_id;
6448 l_activity_rec.outcome_id := rc_Activity.outcome_id;
6449 ELSE
6450 --l_outcome_id := p_activity_rec.outcome_id;
6451 l_activity_rec.outcome_id := p_activity_rec.outcome_id;
6452 END IF;
6453
6454 --IF(p_activity_rec.result_id = fnd_api.g_miss_num) OR (p_activity_rec.result_id IS NULL) THEN
6455 IF(p_activity_rec.result_id = fnd_api.g_miss_num) THEN
6456 --l_result_id := rc_Activity.result_id;
6457 l_activity_rec.result_id := rc_Activity.result_id;
6458 ELSE
6459 --l_result_id := p_activity_rec.result_id;
6460 l_activity_rec.result_id := p_activity_rec.result_id;
6461 END IF;
6462
6463 --IF(p_activity_rec.reason_id = fnd_api.g_miss_num) OR (p_activity_rec.reason_id IS NULL) THEN
6464 IF(p_activity_rec.reason_id = fnd_api.g_miss_num) THEN
6465 --l_reason_id := rc_Activity.reason_id;
6466 l_activity_rec.reason_id := rc_Activity.reason_id;
6467 ELSE
6468 --l_reason_id := p_activity_rec.reason_id;
6469 l_activity_rec.reason_id := p_activity_rec.reason_id;
6470 END IF;
6471
6472 --IF(p_activity_rec.task_id = fnd_api.g_miss_num) OR (p_activity_rec.task_id IS NULL) THEN
6473 IF(p_activity_rec.task_id = fnd_api.g_miss_num) THEN
6474 --l_task_id := rc_Activity.task_id;
6475 l_activity_rec.task_id := rc_Activity.task_id;
6476 ELSE
6477 --l_task_id := p_activity_rec.task_id;
6478 l_activity_rec.task_id := p_activity_rec.task_id;
6479 END IF;
6480
6481 --IF(p_activity_rec.object_id = fnd_api.g_miss_num) OR (p_activity_rec.object_id IS NULL) THEN
6482 IF(p_activity_rec.object_id = fnd_api.g_miss_num) THEN
6483 --l_object_id := rc_Activity.object_id;
6484 l_activity_rec.object_id := rc_Activity.object_id;
6485 ELSE
6486 --l_object_id := p_activity_rec.object_id;
6487 l_activity_rec.object_id := p_activity_rec.object_id;
6488 END IF;
6489
6490 --IF(p_activity_rec.object_type = fnd_api.g_miss_char) OR (p_activity_rec.object_type IS NULL) THEN
6491 IF(p_activity_rec.object_type = fnd_api.g_miss_char) THEN
6492 --l_object_type := rc_Activity.object_type;
6493 l_activity_rec.object_type := rc_Activity.object_type;
6494 ELSE
6495 --l_object_type := p_activity_rec.object_type;
6496 l_activity_rec.object_type := p_activity_rec.object_type;
6497 END IF;
6498
6499 IF(p_activity_rec.source_code_id = fnd_api.g_miss_num)
6500 AND (p_activity_rec.source_code = fnd_api.g_miss_char) THEN
6501 --l_source_code_id := rc_Activity.source_code_id;
6502 l_activity_rec.source_code_id := rc_Activity.source_code_id;
6503 --l_source_code := rc_Activity.source_code;
6504 l_activity_rec.source_code := rc_Activity.source_code;
6505 ELSE
6506 --l_source_code_id := p_activity_rec.source_code_id;
6507 l_activity_rec.source_code_id := p_activity_rec.source_code_id;
6508 --l_source_code := p_activity_rec.source_code;
6509 l_activity_rec.source_code := p_activity_rec.source_code;
6510 END IF;
6511
6512
6513
6514 --IF(p_activity_rec.doc_id = fnd_api.g_miss_num) OR (p_activity_rec.doc_id IS NULL) THEN
6515 IF(p_activity_rec.doc_id = fnd_api.g_miss_num) THEN
6516 --l_doc_id := rc_Activity.doc_id;
6517 l_activity_rec.doc_id := rc_Activity.doc_id;
6518 ELSE
6519 --l_doc_id := p_activity_rec.doc_id;
6520 l_activity_rec.doc_id := p_activity_rec.doc_id;
6521 END IF;
6522
6523 --IF(p_activity_rec.doc_ref = fnd_api.g_miss_char) OR (p_activity_rec.doc_ref IS NULL) THEN
6524 IF(p_activity_rec.doc_ref = fnd_api.g_miss_char) THEN
6525 --l_doc_ref := rc_Activity.doc_ref;
6526 l_activity_rec.doc_ref := rc_Activity.doc_ref;
6527 ELSE
6528 --l_doc_ref := p_activity_rec.doc_ref;
6529 l_activity_rec.doc_ref := p_activity_rec.doc_ref;
6530 END IF;
6531
6532 --IF(p_activity_rec.doc_source_object_name = fnd_api.g_miss_char) OR (p_activity_rec.doc_source_object_name IS NULL) THEN
6533 IF(p_activity_rec.doc_source_object_name = fnd_api.g_miss_char) THEN
6534 --l_doc_source_object_name := rc_Activity.doc_source_object_name;
6535 l_activity_rec.doc_source_object_name := rc_Activity.doc_source_object_name;
6536 ELSE
6537 --l_doc_source_object_name := p_activity_rec.doc_source_object_name;
6538 l_activity_rec.doc_source_object_name := p_activity_rec.doc_source_object_name;
6539 END IF;
6540
6541 --IF(p_activity_rec.media_id = fnd_api.g_miss_num) OR (p_activity_rec.media_id IS NULL) THEN
6542 IF(p_activity_rec.media_id = fnd_api.g_miss_num) THEN
6543 --l_media_id := rc_Activity.media_id;
6544 l_activity_rec.media_id := rc_Activity.media_id;
6545 ELSE
6546 --l_media_id := p_activity_rec.media_id;
6547 l_activity_rec.media_id := p_activity_rec.media_id;
6548 END IF;
6549
6550 --IF(p_activity_rec.action_item_id = fnd_api.g_miss_num) OR (p_activity_rec.action_item_id IS NULL) THEN
6551 IF(p_activity_rec.action_item_id = fnd_api.g_miss_num) THEN
6552 --l_action_item_id := rc_Activity.action_item_id;
6553 l_activity_rec.action_item_id := rc_Activity.action_item_id;
6554 ELSE
6555 --l_action_item_id := p_activity_rec.action_item_id;
6556 l_activity_rec.action_item_id := p_activity_rec.action_item_id;
6557 END IF;
6558
6559 --IF(p_activity_rec.interaction_id = fnd_api.g_miss_num) OR (p_activity_rec.interaction_id IS NULL) THEN
6560 IF(p_activity_rec.interaction_id = fnd_api.g_miss_num) THEN
6561 --l_interaction_id := rc_Activity.interaction_id;
6562 l_activity_rec.interaction_id := rc_Activity.interaction_id;
6563 ELSE
6564 --l_interaction_id := p_activity_rec.interaction_id;
6565 l_activity_rec.interaction_id := p_activity_rec.interaction_id;
6566 END IF;
6567
6568 --IF(p_activity_rec.description = fnd_api.g_miss_char) OR (p_activity_rec.description IS NULL) THEN
6569 IF(p_activity_rec.description = fnd_api.g_miss_char) THEN
6570 --l_description := rc_Activity.description;
6571 l_activity_rec.description := rc_Activity.description;
6572 ELSE
6573 --l_description := p_activity_rec.description;
6574 l_activity_rec.description := p_activity_rec.description;
6575 END IF;
6576
6577 --IF(p_activity_rec.action_id = fnd_api.g_miss_num) OR (p_activity_rec.action_id IS NULL) THEN
6578 IF(p_activity_rec.action_id = fnd_api.g_miss_num) THEN
6579 --l_action_id := rc_Activity.action_id;
6580 l_activity_rec.action_id := rc_Activity.action_id;
6581 ELSE
6582 --l_action_id := p_activity_rec.action_id;
6583 l_activity_rec.action_id := p_activity_rec.action_id;
6584 END IF;
6585
6586 --IF(p_activity_rec.interaction_action_type = fnd_api.g_miss_char) OR (p_activity_rec.interaction_action_type IS NULL) THEN
6587 IF(p_activity_rec.interaction_action_type = fnd_api.g_miss_char) THEN
6588 --l_interaction_action_type := rc_Activity.interaction_action_type;
6589 l_activity_rec.interaction_action_type := rc_Activity.interaction_action_type;
6590 ELSE
6591 --l_interaction_action_type := p_activity_rec.interaction_action_type;
6592 l_activity_rec.interaction_action_type := p_activity_rec.interaction_action_type;
6593 END IF;
6594
6595 --
6596 -- Check if object_version_number requires updating
6597 --
6598 IF (p_object_version IS NULL) then
6599 l_object_version := rc_Activity.object_version_number;
6600 ELSE
6601 l_object_version := p_object_version;
6602 END IF;
6603
6604 --
6605 -- Check Attributes requires updating
6606 --
6607 IF(p_activity_rec.attribute1 = fnd_api.g_miss_char) THEN
6608 --l_attribute1 := rc_Activity.attribute1;
6609 l_activity_rec.attribute1 := rc_Activity.attribute1;
6610 ELSE
6611 --l_attribute1 := p_activity_rec.attribute1;
6612 l_activity_rec.attribute1 := p_activity_rec.attribute1;
6613 END IF;
6614
6615 IF(p_activity_rec.attribute2 = fnd_api.g_miss_char) THEN
6616 --l_attribute2 := rc_Activity.attribute1;
6617 l_activity_rec.attribute2 := rc_Activity.attribute1;
6618 ELSE
6619 --l_attribute2 := p_activity_rec.attribute2;
6620 l_activity_rec.attribute2 := p_activity_rec.attribute2;
6621 END IF;
6622
6623 IF(p_activity_rec.attribute3 = fnd_api.g_miss_char) THEN
6624 --l_attribute3 := rc_Activity.attribute3;
6625 l_activity_rec.attribute3 := rc_Activity.attribute3;
6626 ELSE
6627 --l_attribute3 := p_activity_rec.attribute3;
6628 l_activity_rec.attribute3 := p_activity_rec.attribute3;
6629 END IF;
6630
6631 IF(p_activity_rec.attribute4 = fnd_api.g_miss_char) THEN
6632 --l_attribute4 := rc_Activity.attribute4;
6633 l_activity_rec.attribute4 := rc_Activity.attribute4;
6634 ELSE
6635 --l_attribute4 := p_activity_rec.attribute4;
6636 l_activity_rec.attribute4 := p_activity_rec.attribute4;
6637 END IF;
6638
6639 IF(p_activity_rec.attribute5 = fnd_api.g_miss_char) THEN
6640 --l_attribute5 := rc_Activity.attribute5;
6641 l_activity_rec.attribute5 := rc_Activity.attribute5;
6642 ELSE
6643 --l_attribute5 := p_activity_rec.attribute5;
6644 l_activity_rec.attribute5 := p_activity_rec.attribute5;
6645 END IF;
6646
6647 IF(p_activity_rec.attribute6 = fnd_api.g_miss_char) THEN
6648 --l_attribute6 := rc_Activity.attribute6;
6649 l_activity_rec.attribute6 := rc_Activity.attribute6;
6650 ELSE
6651 --l_attribute6 := p_activity_rec.attribute6;
6652 l_activity_rec.attribute6 := p_activity_rec.attribute6;
6653 END IF;
6654
6655 IF(p_activity_rec.attribute7 = fnd_api.g_miss_char) THEN
6656 --l_attribute7 := rc_Activity.attribute7;
6657 l_activity_rec.attribute7 := rc_Activity.attribute7;
6658 ELSE
6659 --l_attribute7 := p_activity_rec.attribute7;
6660 l_activity_rec.attribute7 := p_activity_rec.attribute7;
6661 END IF;
6662
6663 IF(p_activity_rec.attribute8 = fnd_api.g_miss_char) THEN
6664 --l_attribute8 := rc_Activity.attribute8;
6665 l_activity_rec.attribute8 := rc_Activity.attribute8;
6666 ELSE
6667 --l_attribute8 := p_activity_rec.attribute8;
6668 l_activity_rec.attribute8 := p_activity_rec.attribute8;
6669 END IF;
6670
6671 IF(p_activity_rec.attribute9 = fnd_api.g_miss_char) THEN
6672 --l_attribute9 := rc_Activity.attribute9;
6673 l_activity_rec.attribute9 := rc_Activity.attribute9;
6674 ELSE
6675 --l_attribute9 := p_activity_rec.attribute9;
6676 l_activity_rec.attribute9 := p_activity_rec.attribute9;
6677 END IF;
6678
6679 IF(p_activity_rec.attribute10 = fnd_api.g_miss_char) THEN
6680 --l_attribute10 := rc_Activity.attribute10;
6681 l_activity_rec.attribute10 := rc_Activity.attribute10;
6682 ELSE
6683 --l_attribute10 := p_activity_rec.attribute10;
6684 l_activity_rec.attribute10 := p_activity_rec.attribute10;
6685 END IF;
6686
6687 IF(p_activity_rec.attribute11 = fnd_api.g_miss_char) THEN
6688 --l_attribute11 := rc_Activity.attribute11;
6689 l_activity_rec.attribute11 := rc_Activity.attribute11;
6690 ELSE
6691 --l_attribute11 := p_activity_rec.attribute11;
6692 l_activity_rec.attribute11 := p_activity_rec.attribute11;
6693 END IF;
6694
6695 IF(p_activity_rec.attribute12 = fnd_api.g_miss_char) THEN
6696 --l_attribute12 := rc_Activity.attribute12;
6697 l_activity_rec.attribute12 := rc_Activity.attribute12;
6698 ELSE
6699 --l_attribute12 := p_activity_rec.attribute12;
6700 l_activity_rec.attribute12 := p_activity_rec.attribute12;
6701 END IF;
6702
6703 IF(p_activity_rec.attribute13 = fnd_api.g_miss_char) THEN
6704 --l_attribute13 := rc_Activity.attribute13;
6705 l_activity_rec.attribute13 := rc_Activity.attribute13;
6706 ELSE
6707 --l_attribute13 := p_activity_rec.attribute13;
6708 l_activity_rec.attribute13 := p_activity_rec.attribute13;
6709 END IF;
6710
6711 IF(p_activity_rec.attribute14 = fnd_api.g_miss_char) THEN
6712 --l_attribute14 := rc_Activity.attribute14;
6713 l_activity_rec.attribute14 := rc_Activity.attribute14;
6714 ELSE
6715 --l_attribute14 := p_activity_rec.attribute14;
6716 l_activity_rec.attribute14 := p_activity_rec.attribute14;
6717 END IF;
6718
6719 IF(p_activity_rec.attribute15 = fnd_api.g_miss_char) THEN
6720 --l_attribute15 := rc_Activity.attribute15;
6721 l_activity_rec.attribute15 := rc_Activity.attribute15;
6722 ELSE
6723 --l_attribute15 := p_activity_rec.attribute15;
6724 l_activity_rec.attribute15 := p_activity_rec.attribute15;
6725 END IF;
6726
6727 IF(p_activity_rec.attribute_category = fnd_api.g_miss_char) THEN
6728 --l_attribute_category := rc_Activity.attribute_category;
6729 l_activity_rec.attribute_category := rc_Activity.attribute_category;
6730 ELSE
6731 --l_attribute_category := p_activity_rec.attribute_category;
6732 l_activity_rec.attribute_category := p_activity_rec.attribute_category;
6733 END IF;
6734
6735 -- Bug# 2804696
6736 IF(p_activity_rec.script_trans_id = fnd_api.g_miss_num) THEN
6737 --l_script_trans_id := rc_Activity.script_trans_id;
6738 l_activity_rec.script_trans_id := rc_Activity.script_trans_id;
6739 ELSE
6740 --l_script_trans_id := p_activity_rec.script_trans_id;
6741 l_activity_rec.script_trans_id := p_activity_rec.script_trans_id;
6742 END IF;
6743
6744
6745 -- Removed by IAleshin - 06/05/2002
6746 /*
6747 IF(p_activity_rec.resource_id = fnd_api.g_miss_num) THEN
6748 l_resource_id := rc_Activity.resource_id;
6749 ELSE
6750 SELECT count(resource_id) into l_count
6751 FROM jtf_rs_resource_extns
6752 WHERE resource_id = p_activity_rec.resource_id;
6753 IF (l_count <= 0) THEN
6754 x_return_status := fnd_api.g_ret_sts_error;
6755 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(p_activity_rec.resource_id),'resource_id');
6756 RETURN;
6757 END IF;
6758 l_resource_id := p_activity_rec.resource_id;
6759 END IF;*/
6760
6761 -- 08/26/03 mpetrosi B3102306
6762 -- added cross check of source_code, source_code_id
6763 validate_source_code(l_api_name, l_activity_rec.source_code_id,
6764 l_activity_rec.source_code, l_return_status);
6765 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
6766 RAISE fnd_api.g_exc_error;
6767 END IF;
6768
6769 UPDATE jtf_ih_activities SET
6770 cust_account_id = l_activity_rec.cust_account_id,
6771 cust_org_id = l_activity_rec.cust_org_id,
6772 role = l_activity_rec.role,
6773 LAST_UPDATED_BY = p_user_id,
6774 LAST_UPDATE_DATE = sysdate,
6775 end_date_time = l_activity_rec.end_date_time,
6776 start_date_time = l_activity_rec.start_date_time,
6777 duration = l_activity_rec.duration,
6778 task_id = l_activity_rec.task_id,
6779 doc_id = l_activity_rec.doc_id,
6780 doc_ref = l_activity_rec.doc_ref,
6781 doc_source_object_name = l_activity_rec.doc_source_object_name,
6782 media_id = l_activity_rec.media_id,
6783 action_item_id = l_activity_rec.action_item_id,
6784 outcome_id = l_activity_rec.outcome_id,
6785 result_id = l_activity_rec.result_id,
6786 reason_id = l_activity_rec.reason_id,
6787 description = l_activity_rec.description,
6788 action_id = l_activity_rec.action_id,
6789 interaction_action_type = l_activity_rec.interaction_action_type,
6790 object_id = l_activity_rec.object_id,
6791 object_type = l_activity_rec.object_type,
6792 source_code_id = decode( l_activity_rec.source_code_id, fnd_api.g_miss_num, NULL, l_activity_rec.source_code_id),
6793 source_code = decode( l_activity_rec.source_code, fnd_api.g_miss_char, NULL, l_activity_rec.source_code),
6794 script_trans_id = l_activity_rec.script_trans_id,
6795 object_version_number = l_object_version,
6796 attribute1 = l_activity_rec.attribute1,
6797 attribute2 = l_activity_rec.attribute2,
6798 attribute3 = l_activity_rec.attribute3,
6799 attribute4 = l_activity_rec.attribute4,
6800 attribute5 = l_activity_rec.attribute5,
6801 attribute6 = l_activity_rec.attribute6,
6802 attribute7 = l_activity_rec.attribute7,
6803 attribute8 = l_activity_rec.attribute8,
6804 attribute9 = l_activity_rec.attribute9,
6805 attribute10 = l_activity_rec.attribute10,
6806 attribute11 = l_activity_rec.attribute11,
6807 attribute12 = l_activity_rec.attribute12,
6808 attribute13 = l_activity_rec.attribute13,
6809 attribute14 = l_activity_rec.attribute14,
6810 attribute15 = l_activity_rec.attribute15,
6811 attribute_category = l_activity_rec.attribute_category
6812 -- resource_id = l_resource_id
6813 WHERE Activity_id = p_activity_rec.activity_id;
6814 CLOSE c_Activity_crs;
6815 ELSE
6816 --jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(p_activity_rec.activity_id),
6817 -- 'activity is currently set to N');
6818 --Bug# 4477761 new error msg
6819 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_error) THEN
6820 fnd_message.set_name('JTF', 'JTF_IH_ACT_UPDATE_NOT_ALLOW');
6821 fnd_message.set_token('ACT_ID', to_char(p_activity_rec.activity_id));
6822 fnd_msg_pub.add;
6823 END IF;
6824 RAISE fnd_api.g_exc_error ;
6825 END IF;
6826 END IF;
6827 END IF;
6828 -- DBMS_OUTPUT.PUT_LINE('PAST update table jtf_ih_activities in JTF_IH_PUB.Update_Activity');
6829
6830 -- Post processing Call
6831
6832 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_ACTIVITY', 'A', 'V') THEN
6833 JTF_IH_PUB_VUHK.update_activity_post(p_activity_rec=>l_activity_rec,
6834 x_data=>l_data,
6835 x_count=>l_count_hk,
6836 x_return_code=>l_return_code);
6837 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
6838 RAISE FND_API.G_EXC_ERROR;
6839 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6840 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6841 END IF;
6842 END IF;
6843
6844 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_ACTIVITY', 'A', 'C') THEN
6845 JTF_IH_PUB_CUHK.update_activity_post(p_activity_rec=>l_activity_rec,
6846 x_data=>l_data,
6847 x_count=>l_count_hk,
6848 x_return_code=>l_return_code);
6849 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
6850 RAISE FND_API.G_EXC_ERROR;
6851 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6852 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6853 END IF;
6854 END IF;
6855
6856
6857 -- Standard check of p_commit
6858 IF fnd_api.to_boolean(p_commit) THEN
6859 COMMIT WORK;
6860 END IF;
6861
6862 -- Standard call to get message count and if count is 1, get message info
6863 fnd_msg_pub.count_and_get( p_count => x_msg_count, p_data => x_msg_data );
6864 EXCEPTION
6865 WHEN fnd_api.g_exc_error THEN
6866 ROLLBACK TO update_activity_pub;
6867 x_return_status := fnd_api.g_ret_sts_error;
6868 fnd_msg_pub.count_and_get
6869 ( p_count => x_msg_count,
6870 p_data => x_msg_data );
6871 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
6872 WHEN fnd_api.g_exc_unexpected_error THEN
6873 ROLLBACK TO update_activity_pub;
6874 x_return_status := fnd_api.g_ret_sts_unexp_error;
6875 fnd_msg_pub.count_and_get
6876 ( p_count => x_msg_count,
6877 p_data => x_msg_data );
6878 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
6879 WHEN OTHERS THEN
6880 ROLLBACK TO update_activity_pub;
6881 x_return_status := fnd_api.g_ret_sts_unexp_error;
6882 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
6883 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
6884 END IF;
6885 fnd_msg_pub.count_and_get
6886 ( p_count => x_msg_count,
6887 p_data => x_msg_data );
6888 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
6889 END Update_Activity;
6890
6891 --
6892 --
6893 -- History
6894 -- -------
6895 -- Author Date Description
6896 -- ------ ---- -----------
6897 -- Jean Zhu 01/11/2000 Initial build
6898 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
6899 -- James Baldo Jr. 24-MAY-2000 Implementation fix for bugdb 1311491 - duration not being calculated
6900 -- James Baldo Jr. 27-JUL-2000 Implementation fix for bugdb 1339925 - start_date_time > end_date_time
6901 -- Igor Aleshin 21-MAY-2002 Modified duration calculation for Activities
6902 -- Igor Aleshin 11-SEP-2002 Fixed bug# 2560551 - TST1158.8: FUNC: DEBUG - ALL INTERACTIONS
6903 -- DISPLAYS INTERACTION DURATION AS 0
6904 -- vekrishn 27-JUL-2004 Perf Fix for literal Usage
6905 --
6906 --
6907
6908 PROCEDURE Close_Interaction
6909 (
6910 p_api_version IN NUMBER,
6911 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
6912 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
6913 p_resp_appl_id IN NUMBER DEFAULT NULL,
6914 p_resp_id IN NUMBER DEFAULT NULL,
6915 p_user_id IN NUMBER,
6916 p_login_id IN NUMBER DEFAULT NULL,
6917 x_return_status OUT NOCOPY VARCHAR2,
6918 x_msg_count OUT NOCOPY NUMBER,
6919 x_msg_data OUT NOCOPY VARCHAR2,
6920 p_interaction_id IN NUMBER
6921 )
6922 AS
6923 l_api_name CONSTANT VARCHAR2(30) := 'Close_Interaction';
6924 l_api_version CONSTANT NUMBER := 1.0;
6925 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
6926 l_return_status VARCHAR2(1);
6927 l_outcome_id NUMBER := NULL;
6928 l_end_date_time DATE := NULL;
6929 l_start_date_time DATE := NULL;
6930 l_duration NUMBER := NULL;
6931 l_action_item_id NUMBER := NULL;
6932 l_return_code VARCHAR2(1);
6933 l_data VARCHAR2(2000);
6934 l_count_hk NUMBER;
6935 l_interaction_id NUMBER;
6936
6937 -- Bug# 2560551
6938 la_outcome_id NUMBER := NULL;
6939 la_end_date_time DATE := NULL;
6940 la_start_date_time DATE := NULL;
6941 la_duration NUMBER := NULL;
6942 -- Bug# 3779487
6943 msg_code VARCHAR2(50);
6944 la_out_act_list jtf_ih_core_util_pvt.param_tbl_type;
6945
6946 -- Perf fix for literal Usage
6947 l_duration_perf NUMBER;
6948 l_active_perf VARCHAR2(1);
6949
6950 CURSOR l_activity_id_c IS
6951 SELECT activity_id FROM jtf_ih_activities
6952 WHERE interaction_id = p_interaction_id;
6953 BEGIN
6954 SAVEPOINT close_interaction_pub2;
6955
6956 -- Perf variables
6957 l_duration_perf := 0;
6958 l_active_perf := 'N';
6959
6960 -- Preprocessing Call
6961 l_interaction_id := p_interaction_id;
6962 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_INTERACTION', 'B', 'C') THEN
6963 JTF_IH_PUB_CUHK.close_interaction_pre(p_interaction_id=>l_interaction_id,
6964 x_data=>l_data,
6965 x_count=>l_count_hk,
6966 x_return_code=>l_return_code);
6967 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
6968 RAISE FND_API.G_EXC_ERROR;
6969 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6970 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6971 END IF;
6972 END IF;
6973
6974 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_INTERACTION', 'B', 'V') THEN
6975 JTF_IH_PUB_VUHK.close_interaction_pre(p_interaction_id=>l_interaction_id,
6976 x_data=>l_data,
6977 x_count=>l_count_hk,
6978 x_return_code=>l_return_code);
6979 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
6980 RAISE FND_API.G_EXC_ERROR;
6981 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6982 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6983 END IF;
6984 END IF;
6985
6986 -- Standard call to check for call compatibility
6987 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
6988 l_api_name, g_pkg_name) THEN
6989 RAISE fnd_api.g_exc_unexpected_error;
6990 END IF;
6991 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Close_Interaction_2');
6992
6993 -- Initialize message list if p_init_msg_list is set to TRUE
6994 IF fnd_api.to_boolean(p_init_msg_list) THEN
6995 fnd_msg_pub.initialize;
6996 END IF;
6997
6998 -- Initialize API return status to success
6999 x_return_status := fnd_api.g_ret_sts_success;
7000
7001 --
7002 -- Apply business-rule validation to all required and passed parameters
7003 --
7004 -- Validate user and login session IDs
7005 --
7006 IF (p_user_id IS NULL) THEN
7007 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
7008 RAISE fnd_api.g_exc_error;
7009 ELSE
7010 jtf_ih_core_util_pvt.validate_who_info
7011 ( p_api_name => l_api_name_full,
7012 p_parameter_name_usr => 'p_user_id',
7013 p_parameter_name_log => 'p_login_id',
7014 p_user_id => p_user_id,
7015 p_login_id => p_login_id,
7016 x_return_status => l_return_status );
7017 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
7018 RAISE fnd_api.g_exc_error;
7019 END IF;
7020 END IF;
7021 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Close_Interaction_2');
7022
7023 SELECT outcome_id, end_date_time, start_date_time, duration
7024 INTO l_outcome_id, l_end_date_time, l_start_date_time, l_duration
7025 FROM jtf_ih_interactions
7026 WHERE interaction_id = p_interaction_id;
7027 IF ((l_outcome_id IS NULL) OR (l_outcome_id = fnd_api.g_miss_num)) THEN
7028 x_return_status := fnd_api.g_ret_sts_error;
7029 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(l_outcome_id),
7030 'outcome_id');
7031 RETURN;
7032 END IF;
7033
7034 -- SELECT end_date_time, start_date_time into l_end_date_time, l_start_date_time
7035 -- FROM jtf_ih_interactions
7036 -- WHERE interaction_id = p_interaction_id;
7037
7038 IF ((l_end_date_time IS NULL) OR (l_end_date_time = FND_API.G_MISS_DATE)) THEN
7039 l_end_date_time := SYSDATE;
7040 END IF;
7041 Validate_StartEnd_Date
7042 ( p_api_name => l_api_name_full,
7043 p_start_date_time => l_start_date_time,
7044 p_end_date_time => l_end_date_time,
7045 x_return_status => l_return_status
7046 );
7047 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
7048 RAISE fnd_api.g_exc_error;
7049 END IF;
7050
7051 IF (l_duration = 0) OR (l_duration IS NULL) THEN
7052 l_duration := ROUND(( l_end_date_time - l_start_date_time)*24*60*60);
7053 END IF;
7054
7055 FOR v_activity_id_c IN l_activity_id_c LOOP
7056 --
7057 -- Added by IAleshin 21-MAY-2002
7058 --
7059 SELECT outcome_id, action_item_id, start_date_time, end_date_time, duration
7060 INTO la_outcome_id, l_action_item_id, la_start_date_time, la_end_date_time, la_duration
7061 FROM jtf_ih_activities
7062 WHERE activity_id = v_activity_id_c.activity_id;
7063
7064
7065 IF (l_outcome_id IS NULL) OR (l_outcome_id = fnd_api.g_miss_num) THEN
7066 x_return_status := fnd_api.g_ret_sts_error;
7067
7068 -- Bug# 3779487 added by nchouras 4-AUG-2004
7069 la_out_act_list(1).token_name := 'API_NAME';
7070 la_out_act_list(1).token_value := l_api_name_full;
7071 la_out_act_list(2).token_name := 'VALUE1';
7072 la_out_act_list(2).token_value := la_outcome_id;
7073 la_out_act_list(3).token_name := 'PARAMETER1';
7074 la_out_act_list(3).token_value := 'outcome_id';
7075 la_out_act_list(4).token_name := 'PARAMETER2';
7076 la_out_act_list(4).token_value := 'activity';
7077 la_out_act_list(5).token_name := 'PARAMETER3';
7078 la_out_act_list(5).token_value := 'activity_id';
7079 la_out_act_list(6).token_name := 'VALUE2';
7080 la_out_act_list(6).token_value := v_activity_id_c.activity_id;
7081 msg_code := 'JTF_API_ALL_INVALID_OUTCOME';
7082 --end Bug# 3779487
7083
7084 -- jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(l_outcome_id),
7085 -- 'outcome_id');
7086 jtf_ih_core_util_pvt.add_invalid_argument_msg_gen( msg_code,
7087 la_out_act_list);
7088 fnd_msg_pub.count_and_get
7089 ( p_count => x_msg_count,
7090 p_data => x_msg_data );
7091 RETURN;
7092 END IF;
7093
7094 IF (l_action_item_id IS NULL) OR (l_action_item_id = fnd_api.g_miss_num) THEN
7095 x_return_status := fnd_api.g_ret_sts_error;
7096 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(l_action_item_id),
7097 'action_item_id');
7098 RETURN;
7099 END IF;
7100
7101 -- Bug# 2560551
7102 IF (la_end_date_time IS NULL) OR (la_end_date_time = fnd_api.g_miss_date) THEN
7103 -- IF (l_end_date_time IS NULL) THEN
7104 la_end_date_time := SYSDATE;
7105 END IF;
7106
7107 Validate_StartEnd_Date
7108 ( p_api_name => l_api_name_full,
7109 p_start_date_time => la_start_date_time,
7110 p_end_date_time => la_end_date_time,
7111 x_return_status => l_return_status
7112 );
7113
7114 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
7115 RAISE fnd_api.g_exc_error;
7116 END IF;
7117 IF (la_duration = 0) OR (la_duration IS NULL) THEN
7118 la_duration := ROUND((la_end_date_time - la_start_date_time)*24*60*60);
7119 END IF;
7120 UPDATE jtf_ih_activities SET ACTIVE = l_active_perf,END_DATE_TIME = la_end_date_time, DURATION = la_duration
7121 WHERE ACTIVITY_ID = v_activity_id_c.activity_id;
7122 /*l_outcome_id := NULL;
7123 SELECT outcome_id into l_outcome_id
7124 FROM jtf_ih_activities
7125 WHERE activity_id = v_activity_id_c.activity_id;
7126 IF (l_outcome_id IS NULL) THEN
7127 x_return_status := fnd_api.g_ret_sts_error;
7128 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(l_outcome_id),
7129 'outcome_id');
7130 RETURN;
7131 END IF;
7132
7133 l_action_item_id := NULL;
7134 SELECT action_item_id into l_action_item_id
7135 FROM jtf_ih_activities
7136 WHERE activity_id = v_activity_id_c.activity_id;
7137 IF (l_action_item_id IS NULL) THEN
7138 x_return_status := fnd_api.g_ret_sts_error;
7139 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name_full, to_char(l_action_item_id),
7140 'action_item_id');
7141 RETURN;
7142 END IF;
7143
7144 l_duration := NULL;
7145 SELECT end_date_time, start_date_time into l_end_date_time, l_start_date_time
7146 FROM jtf_ih_activities
7147 WHERE activity_id = v_activity_id_c.activity_id;
7148 IF ((l_end_date_time IS NULL) OR (l_end_date_time = FND_API.G_MISS_DATE)) THEN
7149 l_end_date_time := SYSDATE;
7150 END IF;
7151 l_duration := ROUND((l_end_date_time - l_start_date_time) * 24 * 60);
7152
7153
7154 IF l_duration = FND_API.G_MISS_NUM
7155 THEN l_duration:= NULL;
7156 END IF;
7157
7158 UPDATE jtf_ih_activities SET ACTIVE = 'N',end_date_time = l_end_date_time, duration = l_duration
7159 WHERE interaction_id = p_interaction_id;*/
7160 END LOOP;
7161 -- DBMS_OUTPUT.PUT_LINE('PAST Update ACTIVE in JTF_IH_PUB.Close_Interaction_2');
7162
7163 -- Bug# 2418345
7164 --
7165 -- Set active to 'N' for jtf_ih_interactions and related jtf_ih_activities
7166 --
7167 -- Perf fix for literal Usage
7168 UPDATE jtf_ih_interactions SET ACTIVE = l_active_perf,end_date_time =l_end_date_time,
7169 duration = decode(l_duration, fnd_api.g_miss_num, l_duration_perf, l_duration)
7170 WHERE interaction_id = p_interaction_id;
7171
7172 -- Post processing Call
7173
7174 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_INTERACTION', 'A', 'V') THEN
7175 JTF_IH_PUB_VUHK.close_interaction_post(p_interaction_id=>l_interaction_id,
7176 x_data=>l_data,
7177 x_count=>l_count_hk,
7178 x_return_code=>l_return_code);
7179 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7180 RAISE FND_API.G_EXC_ERROR;
7181 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7182 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7183 END IF;
7184 END IF;
7185
7186 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_INTERACTION', 'A', 'C') THEN
7187 JTF_IH_PUB_CUHK.close_interaction_post(p_interaction_id=>l_interaction_id,
7188 x_data=>l_data,
7189 x_count=>l_count_hk,
7190 x_return_code=>l_return_code);
7191 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7192 RAISE FND_API.G_EXC_ERROR;
7193 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7194 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7195 END IF;
7196 END IF;
7197
7198
7199
7200 -- Standard check of p_commit
7201 IF fnd_api.to_boolean(p_commit) THEN
7202 COMMIT WORK;
7203 END IF;
7204
7205 -- Standard call to get message count and if count is 1, get message info
7206 fnd_msg_pub.count_and_get( p_count => x_msg_count, p_data => x_msg_data );
7207 EXCEPTION
7208 WHEN fnd_api.g_exc_error THEN
7209 ROLLBACK TO close_interaction_pub2;
7210 x_return_status := fnd_api.g_ret_sts_error;
7211 fnd_msg_pub.count_and_get
7212 ( p_count => x_msg_count,
7213 p_data => x_msg_data );
7214 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
7215 WHEN fnd_api.g_exc_unexpected_error THEN
7216 ROLLBACK TO close_interaction_pub2;
7217 x_return_status := fnd_api.g_ret_sts_unexp_error;
7218 fnd_msg_pub.count_and_get
7219 ( p_count => x_msg_count,
7220 p_data => x_msg_data );
7221 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
7222 WHEN OTHERS THEN
7223 ROLLBACK TO close_interaction_pub2;
7224 x_return_status := fnd_api.g_ret_sts_unexp_error;
7225 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
7226 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
7227 END IF;
7228 fnd_msg_pub.count_and_get
7229 ( p_count => x_msg_count,
7230 p_data => x_msg_data );
7231 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
7232 END Close_Interaction;
7233
7234
7235 --
7236 -- HISTORY
7237 --
7238 -- AUTHOR DATE MODIFICATION DESCRIPTION
7239 -- ------ ---- --------------------------
7240 --
7241 -- Jean Zhu 11-JAN-2000 INITIAL VERSION
7242 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
7243 -- James Baldo Jr. 31-JUL-2000 Implementation fix for bugdb # 1341094 to correct
7244 -- updates on activities that have ACTIVE = N
7245 -- Igor Aleshin 5-NOV-2002 Fixed bug# 2656975 - IH-API: UPDATE_ACTIVITITYDURATION
7246 -- NOT CALCULATING THE DURATION CORRECTLY.
7247 -- Rick Day 19-NOV-2002 Corrected issues with coding of 2656975 and general proc. structure
7248 PROCEDURE Update_ActivityDuration
7249 (
7250 p_api_version IN NUMBER,
7251 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
7252 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
7253 p_resp_appl_id IN NUMBER DEFAULT NULL,
7254 p_resp_id IN NUMBER DEFAULT NULL,
7255 p_user_id IN NUMBER,
7256 p_login_id IN NUMBER DEFAULT NULL,
7257 x_return_status OUT NOCOPY VARCHAR2,
7258 x_msg_count OUT NOCOPY NUMBER,
7259 x_msg_data OUT NOCOPY VARCHAR2,
7260 p_activity_id IN NUMBER,
7261 p_end_date_time IN DATE,
7262 p_duration IN NUMBER,
7263 -- Bug# 2012159
7264 p_object_version IN NUMBER DEFAULT NULL
7265
7266 )
7267 AS
7268 l_api_name CONSTANT VARCHAR2(30) := 'Update_ActivityDuration';
7269 l_api_version CONSTANT NUMBER := 1.0;
7270 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
7271 l_return_status VARCHAR2(1);
7272 l_start_date_time DATE;
7273 l_return_code VARCHAR2(1);
7274 l_data VARCHAR2(2000);
7275 l_count NUMBER;
7276 l_activity_id NUMBER;
7277 l_end_date_time DATE;
7278 l_duration NUMBER;
7279 l_active VARCHAR2(1) := NULL;
7280 l_recalc_duration BOOLEAN := TRUE;
7281 BEGIN
7282
7283 -- Standard start of API savepoint
7284 SAVEPOINT update_activityDuration;
7285
7286 -- No Activity ID - No Update possible
7287 IF (p_activity_id IS NULL) THEN
7288 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'activity_id');
7289 RAISE fnd_api.g_exc_error;
7290 END IF;
7291
7292 -- If duration and end_date are null or have g_miss values then raise an exception
7293 -- "Not specified required End_Date_Time and Duration"
7294 -- Bug# 2656975
7295 IF ((p_duration IS NULL) OR (p_duration = fnd_api.g_miss_num)) AND
7296 ((p_end_date_time IS NULL) OR (p_end_date_time = fnd_api.g_miss_date )) THEN
7297 FND_MESSAGE.SET_NAME('JTF','JTF_IH_NO_DURATION_END_DATE');
7298 FND_MSG_PUB.Add;
7299 RAISE fnd_api.g_exc_error;
7300 END IF;
7301
7302 -- set the local variables
7303 l_activity_id := p_activity_id;
7304 l_end_date_time := p_end_date_time;
7305 l_duration := p_duration;
7306
7307
7308 -- Preprocessing Call
7309 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_ACTIVITYDURATION', 'B', 'C') THEN
7310 JTF_IH_PUB_CUHK.update_actduration_pre(
7311 p_activity_id=>l_activity_id,
7312 p_end_date_time=>l_end_date_time,
7313 p_duration=>l_duration,
7314 x_data=>l_data,
7315 x_count=>l_count,
7316 x_return_code=>l_return_code);
7317 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7318 RAISE FND_API.G_EXC_ERROR;
7319 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7320 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7321 END IF;
7322 END IF;
7323
7324 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_ACTIVITYDURATION', 'B', 'V') THEN
7325 JTF_IH_PUB_VUHK.update_actduration_pre(
7326 p_activity_id=>l_activity_id,
7327 p_end_date_time=>l_end_date_time,
7328 p_duration=>l_duration,
7329 x_data=>l_data,
7330 x_count=>l_count,
7331 x_return_code=>l_return_code);
7332 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7333 RAISE FND_API.G_EXC_ERROR;
7334 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7335 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7336 END IF;
7337 END IF;
7338
7339
7340 -- Standard call to check for call compatibility
7341 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
7342 l_api_name, g_pkg_name) THEN
7343 RAISE fnd_api.g_exc_unexpected_error;
7344 END IF;
7345 --DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Update_ActivityDuration');
7346
7347 -- Initialize message list if p_init_msg_list is set to TRUE
7348 IF fnd_api.to_boolean(p_init_msg_list) THEN
7349 fnd_msg_pub.initialize;
7350 END IF;
7351
7352 -- Initialize API return status to success
7353 x_return_status := fnd_api.g_ret_sts_success;
7354
7355 --
7356 -- Apply business-rule validation to all required and passed parameters
7357 --
7358 -- Validate user and login session IDs
7359 --
7360 IF (p_user_id IS NULL) THEN
7361 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
7362 RAISE fnd_api.g_exc_error;
7363 ELSE
7364 jtf_ih_core_util_pvt.validate_who_info
7365 ( p_api_name => l_api_name_full,
7366 p_parameter_name_usr => 'p_user_id',
7367 p_parameter_name_log => 'p_login_id',
7368 p_user_id => p_user_id,
7369 p_login_id => p_login_id,
7370 x_return_status => l_return_status );
7371 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
7372 RAISE fnd_api.g_exc_error;
7373 END IF;
7374 END IF;
7375 --DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Update_ActivityDuration');
7376
7377 --
7378 -- Get the current activity values
7379 --
7380
7381 SELECT start_date_time, end_date_time, duration, active into
7382 l_start_date_time, l_end_date_time, l_duration, l_active
7383 FROM jtf_ih_activities
7384 WHERE activity_id = p_activity_id;
7385 --
7386 -- If the activity is not active, then refuse the update.
7387 --
7388 If l_active = 'N' then
7389 x_return_status := fnd_api.g_ret_sts_error;
7390 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name, l_active,
7391 'ACTIVE');
7392 RAISE fnd_api.g_exc_error;
7393 END IF;
7394
7395 -- Bug# 2656975 Determine if the end_date needs updating - RDD
7396 IF (p_end_date_time <> fnd_api.g_miss_date ) THEN
7397
7398 -- set the date from what is passed.
7399 l_end_date_time := p_end_date_time;
7400
7401 -- validate it with the start date time if not nulling the value
7402 IF (p_end_date_time IS NOT NULL) THEN
7403 Validate_StartEnd_Date
7404 ( p_api_name => l_api_name_full,
7405 p_start_date_time => l_start_date_time,
7406 p_end_date_time => l_end_date_time,
7407 x_return_status => l_return_status
7408 );
7409 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
7410 RAISE fnd_api.g_exc_error;
7411 END IF;
7412 -- DBMS_OUTPUT.PUT_LINE('PAST Validate_StartEnd_Date in JTF_IH_PUB.Update_ActivityDuration');
7413 END IF;
7414 END IF;
7415
7416 -- Bug# 2656975 Determine how the duration is to be updated - RDD
7417 -- If the duration is not passed, then calculate it.
7418 -- else Make sure negative durations are not allowed.
7419 -- else use the passed value
7420 IF (p_duration IS NULL) OR (p_duration = fnd_api.g_miss_num) THEN
7421 l_duration := ROUND((l_end_date_time - l_start_date_time)*24*60*60);
7422 ELSIF p_duration < 0 THEN
7423 l_duration := 0;
7424 ELSE
7425 l_duration := p_duration;
7426 END IF;
7427
7428 -- Update the activity
7429 UPDATE jtf_ih_activities SET END_DATE_TIME = l_end_date_time,
7430 DURATION = l_duration,
7431 OBJECT_VERSION_NUMBER = p_object_version
7432 WHERE activity_id = p_activity_id;
7433 -- DBMS_OUTPUT.PUT_LINE('PAST update end_date_time and duration in JTF_IH_PUB.Update_ActivityDuration');
7434
7435 -- Post processing Call
7436
7437 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_ACTIVITYDURATION', 'A', 'V') THEN
7438 JTF_IH_PUB_VUHK.update_actduration_post(
7439 p_activity_id=>l_activity_id,
7440 p_end_date_time=>l_end_date_time,
7441 p_duration=>l_duration,
7442 x_data=>l_data,
7443 x_count=>l_count,
7444 x_return_code=>l_return_code);
7445 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7446 RAISE FND_API.G_EXC_ERROR;
7447 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7448 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7449 END IF;
7450 END IF;
7451
7452 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_ACTIVITYDURATION', 'A', 'C') THEN
7453 JTF_IH_PUB_CUHK.update_actduration_post(
7454 p_activity_id=>l_activity_id,
7455 p_end_date_time=>l_end_date_time,
7456 p_duration=>l_duration,
7457 x_data=>l_data,
7458 x_count=>l_count,
7459 x_return_code=>l_return_code);
7460 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7461 RAISE FND_API.G_EXC_ERROR;
7462 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7463 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7464 END IF;
7465 END IF;
7466
7467 -- Standard check of p_commit
7468 IF fnd_api.to_boolean(p_commit) THEN
7469 COMMIT WORK;
7470 END IF;
7471
7472 -- Standard call to get message count and if count is 1, get message info
7473 fnd_msg_pub.count_and_get( p_count => x_msg_count, p_data => x_msg_data );
7474 EXCEPTION
7475 WHEN fnd_api.g_exc_error THEN
7476 ROLLBACK TO update_activityDuration;
7477 x_return_status := fnd_api.g_ret_sts_error;
7478 fnd_msg_pub.count_and_get
7479 ( p_count => x_msg_count,
7480 p_data => x_msg_data );
7481 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
7482 WHEN fnd_api.g_exc_unexpected_error THEN
7483 ROLLBACK TO update_activityDuration;
7484 x_return_status := fnd_api.g_ret_sts_unexp_error;
7485 fnd_msg_pub.count_and_get
7486 ( p_count => x_msg_count,
7487 p_data => x_msg_data );
7488 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
7489 WHEN OTHERS THEN
7490 ROLLBACK TO update_activityDuration;
7491 x_return_status := fnd_api.g_ret_sts_unexp_error;
7492 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
7493 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
7494 END IF;
7495 fnd_msg_pub.count_and_get
7496 ( p_count => x_msg_count,
7497 p_data => x_msg_data );
7498 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
7499 END Update_ActivityDuration;
7500
7501
7502 --
7503 --
7504 -- HISTORY
7505 --
7506 -- AUTHOR DATE MODIFICATION DESCRIPTION
7507 -- ------ ---- --------------------------
7508 --
7509 -- James Baldo Jr. 15-MAR-2000 Initial Version after losing file
7510 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
7511 -- James Baldo Jr. 30-NOV-2000 Logic for two new columns, Media_Abandon_Flag and Media_Transferred_Flag.
7512 -- Enhancement Bugdb # 1501325
7513 -- Igor Aleshin 18-DEC-2001 Bug# 2153913 - PREVENT G_MISS_DATE VALUE FROM BEING WRITTEN TO
7514 -- THE END_DATE_TIME VALUE.
7515 -- Igor Aleshin 21-MAY-2002 Removed decode function from Source_Item_Create_Date_Time in Insert
7516 -- statement
7517 -- Igor Aleshin 24-FEB-2003 Fixed bug# 2817083 - Error loggin interactions
7518 -- Igor Aleshin 03-JUL-2003 Enh# 3022511 - Add a column to the jtf_ih_media_items table
7519 -- vekrishn 27-JUL-2004 Perf Fix for literal Usage
7520 --
7521 --
7522
7523 PROCEDURE Open_MediaItem
7524 (
7525 p_api_version IN NUMBER,
7526 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
7527 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
7528 p_resp_appl_id IN NUMBER DEFAULT NULL,
7529 p_resp_id IN NUMBER DEFAULT NULL,
7530 p_user_id IN NUMBER,
7531 p_login_id IN NUMBER DEFAULT NULL,
7532 x_return_status OUT NOCOPY VARCHAR2,
7533 x_msg_count OUT NOCOPY NUMBER,
7534 x_msg_data OUT NOCOPY VARCHAR2,
7535 p_media_rec IN media_rec_type,
7536 x_media_id OUT NOCOPY NUMBER
7537 ) AS
7538 l_api_name CONSTANT VARCHAR2(30) := 'Open_MediaItem';
7539 l_api_version CONSTANT NUMBER := 1.0;
7540 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
7541 l_return_status VARCHAR2(1);
7542 --l_media_id NUMBER;
7543 --l_start_date_time DATE;
7544 -- Bug# 2153913
7545 --l_end_date_time DATE;
7546 l_active VARCHAR2(1);
7547 --l_duration NUMBER := NULL;
7548 l_return_code VARCHAR2(1);
7549 l_data VARCHAR2(2000);
7550 l_count NUMBER;
7551 l_media_rec MEDIA_REC_TYPE;
7552 --l_source_item_create_date_time DATE;
7553 --l_address VARCHAR2(2000);
7554
7555 -- Perf fix for literal Usage
7556 l_ao_update_pending_perf VARCHAR2(1);
7557 l_soft_closed_perf VARCHAR2(1);
7558 BEGIN
7559 -- local variables initialization to remove GSCC warning
7560 l_active := 'Y';
7561
7562 -- Perf variables
7563 l_ao_update_pending_perf := 'N';
7564 l_soft_closed_perf := 'N';
7565
7566 -- Standard start of API savepoint
7567 SAVEPOINT open_mediaitem_pub;
7568
7569 -- Preprocessing Call
7570 l_media_rec := p_media_rec;
7571 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'OPEN_MEDIAITEM', 'B', 'C') THEN
7572 JTF_IH_PUB_CUHK.open_mediaitem_pre(p_media_rec=>l_media_rec,
7573 x_data=>l_data,
7574 x_count=>l_count,
7575 x_return_code=>l_return_code);
7576 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7577 RAISE FND_API.G_EXC_ERROR;
7578 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7579 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7580 END IF;
7581 END IF;
7582
7583 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'OPEN_MEDIAITEM', 'B', 'V') THEN
7584 JTF_IH_PUB_VUHK.open_mediaitem_pre(p_media_rec=>l_media_rec,
7585 x_data=>l_data,
7586 x_count=>l_count,
7587 x_return_code=>l_return_code);
7588 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7589 RAISE FND_API.G_EXC_ERROR;
7590 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7591 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7592 END IF;
7593 END IF;
7594
7595
7596 -- Standard call to check for call compatibility
7597 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
7598 l_api_name, g_pkg_name) THEN
7599 RAISE fnd_api.g_exc_unexpected_error;
7600 END IF;
7601 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Open_MediaItem');
7602
7603 -- Initialize message list if p_init_msg_list is set to TRUE
7604 IF fnd_api.to_boolean(p_init_msg_list) THEN
7605 fnd_msg_pub.initialize;
7606 END IF;
7607
7608 -- Initialize API return status to success
7609 x_return_status := fnd_api.g_ret_sts_success;
7610
7611 --
7612 -- Apply business-rule validation to all required and passed parameters
7613 --
7614 -- Validate user and login session IDs
7615 --
7616 IF (p_user_id IS NULL) THEN
7617 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
7618 RAISE fnd_api.g_exc_error;
7619 ELSE
7620 jtf_ih_core_util_pvt.validate_who_info
7621 ( p_api_name => l_api_name_full,
7622 p_parameter_name_usr => 'p_user_id',
7623 p_parameter_name_log => 'p_login_id',
7624 p_user_id => p_user_id,
7625 p_login_id => p_login_id,
7626 x_return_status => l_return_status );
7627 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
7628 RAISE fnd_api.g_exc_error;
7629 END IF;
7630 END IF;
7631 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Open_MediaItem');
7632
7633 --
7634 -- Validate all non-missing attributes by calling the utility procedure.
7635 --
7636 Validate_Media_Item
7637 ( p_api_name => l_api_name_full,
7638 p_media_item_val => p_media_rec,
7639 p_resp_appl_id => p_resp_appl_id,
7640 p_resp_id => p_resp_id,
7641 x_return_status => l_return_status
7642 );
7643 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
7644 RAISE fnd_api.g_exc_error;
7645 END IF;
7646 -- DBMS_OUTPUT.PUT_LINE('PAST Validate_MediaItem_Record in JTF_IH_PUB.Open_MediaItem');
7647
7648 -- Bug# 2153913
7649 -- Assign the end_date_time
7650 IF (p_media_rec.end_date_time <> fnd_api.g_miss_date) THEN
7651 --l_end_date_time := p_media_rec.end_date_time;
7652 l_media_rec.end_date_time := p_media_rec.end_date_time;
7653 ELSE
7654 --l_end_date_time := NULL;
7655 l_media_rec.end_date_time := NULL;
7656 END IF;
7657
7658 -- Assign the start_date_time
7659 --IF ((p_media_rec.start_date_time IS NOT NULL) AND (p_media_rec.start_date_time <> fnd_api.g_miss_date)) THEN
7660 IF (p_media_rec.start_date_time <> fnd_api.g_miss_date) THEN
7661 --l_start_date_time := p_media_rec.start_date_time;
7662 l_media_rec.start_date_time := p_media_rec.start_date_time;
7663 ELSE
7664 --l_start_date_time := SYSDATE;
7665 l_media_rec.start_date_time := SYSDATE;
7666 END IF;
7667
7668 -- Changed by IAleshin 21-MAY-2002
7669 Validate_StartEnd_Date
7670 ( p_api_name => l_api_name_full,
7671 --p_start_date_time => l_start_date_time,
7672 p_start_date_time => l_media_rec.start_date_time,
7673 --p_end_date_time => l_end_date_time,
7674 p_end_date_time => l_media_rec.end_date_time,
7675 x_return_status => l_return_status
7676 );
7677 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
7678 RAISE fnd_api.g_exc_error;
7679 END IF;
7680
7681 IF (p_media_rec.duration <> fnd_api.g_miss_num) AND (p_media_rec.duration IS NOT NULL) THEN
7682 --l_duration := p_media_rec.duration;
7683 l_media_rec.duration := p_media_rec.duration;
7684 ELSE
7685 --l_duration := ROUND((l_end_date_time - l_start_date_time)*24*60*60);
7686 l_media_rec.duration := ROUND((l_media_rec.end_date_time - l_media_rec.start_date_time)*24*60*60);
7687 END IF;
7688
7689 IF(p_media_rec.source_item_create_date_time <> fnd_api.g_miss_date) AND (p_media_rec.source_item_create_date_time IS NOT NULL) THEN
7690 --l_source_item_create_date_time := p_media_rec.source_item_create_date_time;
7691 l_media_rec.source_item_create_date_time := p_media_rec.source_item_create_date_time;
7692 ELSE
7693 --l_source_item_create_date_time := NULL;
7694 l_media_rec.source_item_create_date_time := NULL;
7695 END IF;
7696
7697 IF (p_media_rec.address = fnd_api.g_miss_char) THEN
7698 IF p_media_rec.direction = 'INBOUND'
7699 AND p_media_rec.media_item_type LIKE 'TELE%'
7700 AND p_media_rec.ani <> fnd_api.g_miss_char THEN
7701 --l_address := p_media_rec.ani;
7702 l_media_rec.address := p_media_rec.ani;
7703 END IF;
7704 ELSE
7705 --l_address := p_media_rec.address;
7706 l_media_rec.address := p_media_rec.address;
7707 END IF;
7708
7709 -- Bug# 2817083
7710 --SELECT JTF_IH_MEDIA_ITEMS_S1.NextVal into l_media_id FROM dual;
7711 --l_media_id := Get_Media_Id(NULL);
7712 l_media_rec.media_id := Get_Media_Id(NULL);
7713
7714 INSERT INTO jtf_ih_media_items
7715 (
7716 CREATED_BY,
7717 CREATION_DATE,
7718 LAST_UPDATED_BY,
7719 LAST_UPDATE_DATE,
7720 LAST_UPDATE_LOGIN,
7721 MEDIA_ID,
7722 DURATION,
7723 DIRECTION,
7724 END_DATE_TIME,
7725 SOURCE_ITEM_CREATE_DATE_TIME,
7726 SOURCE_ITEM_ID,
7727 START_DATE_TIME,
7728 SOURCE_ID,
7729 MEDIA_ITEM_TYPE,
7730 MEDIA_ITEM_REF,
7731 MEDIA_DATA,
7732 MEDIA_ABANDON_FLAG,
7733 MEDIA_TRANSFERRED_FLAG,
7734 ACTIVE,
7735 SERVER_GROUP_ID,
7736 DNIS,
7737 ANI,
7738 CLASSIFICATION,
7739 ADDRESS,
7740 AO_UPDATE_PENDING,
7741 SOFT_CLOSED
7742 )
7743 VALUES
7744 (
7745 p_user_id,
7746 Sysdate,
7747 p_user_id,
7748 Sysdate,
7749 p_login_id,
7750 --l_media_id,
7751 l_media_rec.media_id,
7752 --l_duration,
7753 l_media_rec.duration,
7754 decode( p_media_rec.direction, fnd_api.g_miss_char, null, p_media_rec.direction),
7755 --l_end_date_time,
7756 l_media_rec.end_date_time,
7757 -- Added by IAleshin 21-MAY-2002
7758 --l_source_item_create_date_time,
7759 l_media_rec.source_item_create_date_time,
7760 decode( p_media_rec.source_item_id, fnd_api.g_miss_num, null, p_media_rec.source_item_id),
7761 --l_start_date_time,
7762 l_media_rec.start_date_time,
7763 decode( p_media_rec.source_id, fnd_api.g_miss_num, null, p_media_rec.source_id),
7764 decode( p_media_rec.media_item_type, fnd_api.g_miss_char, null, p_media_rec.media_item_type),
7765 decode( p_media_rec.media_item_ref, fnd_api.g_miss_char, null, p_media_rec.media_item_ref),
7766 decode( p_media_rec.media_data, fnd_api.g_miss_char, null, p_media_rec.media_data),
7767 decode( p_media_rec.media_abandon_flag, fnd_api.g_miss_char, null, p_media_rec.media_abandon_flag),
7768 decode( p_media_rec.media_transferred_flag, fnd_api.g_miss_char, null, p_media_rec.media_transferred_flag),
7769 l_active,
7770 decode( p_media_rec.server_group_id, fnd_api.g_miss_num, null, p_media_rec.server_group_id),
7771 decode( p_media_rec.dnis, fnd_api.g_miss_char, null, p_media_rec.dnis),
7772 decode( p_media_rec.ani, fnd_api.g_miss_char, null, p_media_rec.ani),
7773 decode( p_media_rec.classification, fnd_api.g_miss_char, null, p_media_rec.classification),
7774 --decode( l_address, fnd_api.g_miss_char, null, l_address),
7775 decode( l_media_rec.address, fnd_api.g_miss_char, null, l_media_rec.address),
7776 l_ao_update_pending_perf,
7777 l_soft_closed_perf
7778 );
7779 -- DBMS_OUTPUT.PUT_LINE('PAST INSERT INTO jtf_ih_media_items in JTF_IH_PUB.Open_MediaItem');
7780
7781
7782 --
7783 -- Set OUT value
7784 --
7785 --x_media_id := l_media_id;
7786 x_media_id := l_media_rec.media_id;
7787
7788 -- Post processing Call
7789
7790 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'OPEN_MEDIAITEM', 'A', 'V') THEN
7791 JTF_IH_PUB_VUHK.open_mediaitem_post(p_media_rec=>l_media_rec,
7792 x_data=>l_data,
7793 x_count=>l_count,
7794 x_return_code=>l_return_code);
7795 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7796 RAISE FND_API.G_EXC_ERROR;
7797 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7798 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7799 END IF;
7800 END IF;
7801
7802 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'OPEN_MEDIAITEM', 'A', 'C') THEN
7803 JTF_IH_PUB_CUHK.open_mediaitem_post(p_media_rec=>l_media_rec,
7804 x_data=>l_data,
7805 x_count=>l_count,
7806 x_return_code=>l_return_code);
7807 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7808 RAISE FND_API.G_EXC_ERROR;
7809 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7810 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7811 END IF;
7812 END IF;
7813
7814 -- Standard check of p_commit
7815 IF fnd_api.to_boolean(p_commit) THEN
7816 COMMIT WORK;
7817 END IF;
7818
7819 -- Standard call to get message count and if count is 1, get message info
7820 fnd_msg_pub.count_and_get( p_count => x_msg_count, p_data => x_msg_data );
7821 EXCEPTION
7822 WHEN fnd_api.g_exc_error THEN
7823 ROLLBACK TO open_mediaitem_pub;
7824 x_return_status := fnd_api.g_ret_sts_error;
7825 fnd_msg_pub.count_and_get
7826 ( p_count => x_msg_count,
7827 p_data => x_msg_data );
7828 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
7829 WHEN fnd_api.g_exc_unexpected_error THEN
7830 ROLLBACK TO open_mediaitem_pub;
7831 x_return_status := fnd_api.g_ret_sts_unexp_error;
7832 fnd_msg_pub.count_and_get
7833 ( p_count => x_msg_count,
7834 p_data => x_msg_data );
7835 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
7836 WHEN OTHERS THEN
7837 ROLLBACK TO open_mediaitem_pub;
7838 x_return_status := fnd_api.g_ret_sts_unexp_error;
7839 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
7840 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
7841 END IF;
7842 fnd_msg_pub.count_and_get
7843 ( p_count => x_msg_count,
7844 p_data => x_msg_data );
7845 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
7846 END Open_MediaItem;
7847
7848
7849 --
7850 -- HISTORY
7851 --
7852 -- AUTHOR DATE MODIFICATION DESCRIPTION
7853 -- ------ ---- --------------------------
7854 --
7855 -- James Baldo Jr. 15-MAR-2000 Initial Version after losing file
7856 -- James Baldo Jr. 21-APR-2000 Active setting defect based on bugdb# 127726
7857 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
7858 -- James Baldo Jr. 30-NOV-2000 Logic for two new columns, Media_Abandon_Flag and Media_Transferred_Flag.
7859 -- Enhancement Bugdb # 1501325
7860 -- Igor Aleshin 18-DEC-2001 Bug# 2153913 - PREVENT G_MISS_DATE VALUE FROM BEING WRITTEN TO
7861 -- THE END_DATE_TIME VALUE.
7862 -- Igor Aleshin 07-MAY-2002 Bug# 2338832 - 1156-1157: IH API G_MISS CLEAN-UP REPLACEMENT PATCH
7863 -- Igor Aleshin 09-MAY-2002 Bug# 2363404 - IH API: ITEM NOT ALLOWING NULLS
7864 -- Igor Aleshin 20-MAY-2002 Modified duration Calculation
7865 -- Igor Aleshin 29-MAY-2003 Enh# 2940473 - IH Bulk API Changes
7866 -- Igor Aleshin 03-JUL-2003 Enh# 3022511 - Add a column to the jtf_ih_media_items table
7867 -- Igor Aleshin 15-MAR-2004 Enh# 3491849 - JTH.R: IH CHANGES TO SUPPORT FTC ABANDONMENT REGULATIONS
7868 --
7869
7870 PROCEDURE Update_MediaItem
7871 (
7872 p_api_version IN NUMBER,
7873 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
7874 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
7875 p_resp_appl_id IN NUMBER DEFAULT NULL,
7876 p_resp_id IN NUMBER DEFAULT NULL,
7877 p_user_id IN NUMBER,
7878 p_login_id IN NUMBER DEFAULT NULL,
7879 x_return_status OUT NOCOPY VARCHAR2,
7880 x_msg_count OUT NOCOPY NUMBER,
7881 x_msg_data OUT NOCOPY VARCHAR2,
7882 p_media_rec IN media_rec_type,
7883 -- Bug# 2012159
7884 p_object_version IN NUMBER DEFAULT NULL
7885 ) AS
7886 l_api_name CONSTANT VARCHAR2(30) := 'Update_MediaItem';
7887 l_api_version CONSTANT NUMBER := 1.0;
7888 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
7889 l_return_status VARCHAR2(1);
7890 l_media_id NUMBER;
7891 -- Commented by IAleshin 20-MAY-2002
7892 /* l_source_id NUMBER :=fnd_api.g_miss_num;
7893 l_direction VARCHAR2(240) :=fnd_api.g_miss_char;
7894 l_duration NUMBER :=fnd_api.g_miss_num;
7895 l_end_date_time DATE :=fnd_api.g_miss_date;
7896 l_interaction_performed VARCHAR2(240) :=fnd_api.g_miss_char;
7897 l_start_date_time DATE :=fnd_api.g_miss_date;
7898 l_media_data VARCHAR2(80) :=fnd_api.g_miss_char;
7899 l_source_item_create_date_time DATE :=fnd_api.g_miss_date;
7900 l_source_item_id NUMBER :=fnd_api.g_miss_num;
7901 l_media_item_type VARCHAR2(80) :=fnd_api.g_miss_char;
7902 l_media_item_ref VARCHAR2(240) :=fnd_api.g_miss_char;
7903 l_media_abandon_flag VARCHAR2(1) :=fnd_api.g_miss_char;
7904 l_media_transferred_flag VARCHAR2(1) :=fnd_api.g_miss_char;*/
7905 l_media_rec media_rec_type;
7906 l_return_code VARCHAR2(1);
7907 l_data VARCHAR2(2000);
7908 l_count NUMBER;
7909 --l_media_rec_hk MEDIA_REC_TYPE;
7910 l_object_version NUMBER;
7911 l_address VARCHAR2(2000);
7912 b_Duration BOOLEAN := FALSE;
7913
7914 CURSOR c_MediaItem_csr IS
7915 SELECT *
7916 FROM JTF_IH_MEDIA_ITEMS
7917 WHERE media_id = p_media_rec.media_id
7918 FOR UPDATE;
7919 l_MediaItem_rec c_MediaItem_csr%ROWTYPE;
7920
7921 BEGIN
7922
7923 -- local variables initialization to remove GSCC warnings
7924 l_media_rec := p_media_rec;
7925
7926 -- Standard start of API savepoint
7927 SAVEPOINT update_mediaitem_pub;
7928
7929 -- Preprocessing Call
7930 --l_media_rec_hk := p_media_rec;
7931 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_MEDIAITEM', 'B', 'C') THEN
7932 JTF_IH_PUB_CUHK.update_mediaitem_pre(
7933 --p_media_rec=>l_media_rec_hk,
7934 p_media_rec=>l_media_rec,
7935 x_data=>l_data,
7936 x_count=>l_count,
7937 x_return_code=>l_return_code);
7938 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7939 RAISE FND_API.G_EXC_ERROR;
7940 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7941 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7942 END IF;
7943 END IF;
7944
7945 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_MEDIAITEM', 'B', 'V') THEN
7946 JTF_IH_PUB_VUHK.update_mediaitem_pre(
7947 --p_media_rec=>l_media_rec_hk,
7948 p_media_rec=>l_media_rec,
7949 x_data=>l_data,
7950 x_count=>l_count,
7951 x_return_code=>l_return_code);
7952 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
7953 RAISE FND_API.G_EXC_ERROR;
7954 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7955 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7956 END IF;
7957 END IF;
7958
7959
7960
7961 -- Standard call to check for call compatibility
7962 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
7963 l_api_name, g_pkg_name) THEN
7964 RAISE fnd_api.g_exc_unexpected_error;
7965 END IF;
7966 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Update_MediaItem');
7967
7968 -- Initialize message list if p_init_msg_list is set to TRUE
7969 IF fnd_api.to_boolean(p_init_msg_list) THEN
7970 fnd_msg_pub.initialize;
7971 END IF;
7972
7973 -- Initialize API return status to success
7974 x_return_status := fnd_api.g_ret_sts_success;
7975
7976 --
7977 -- Apply business-rule validation to all required and passed parameters
7978 --
7979 -- Validate user and login session IDs
7980 --
7981 IF (p_user_id IS NULL) THEN
7982 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
7983 RAISE fnd_api.g_exc_error;
7984 ELSE
7985 jtf_ih_core_util_pvt.validate_who_info
7986 ( p_api_name => l_api_name_full,
7987 p_parameter_name_usr => 'p_user_id',
7988 p_parameter_name_log => 'p_login_id',
7989 p_user_id => p_user_id,
7990 p_login_id => p_login_id,
7991 x_return_status => l_return_status );
7992 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
7993 RAISE fnd_api.g_exc_error;
7994 END IF;
7995 END IF;
7996 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Update_MediaItem');
7997
7998
7999 OPEN c_MediaItem_csr;
8000 FETCH c_MediaItem_csr INTO l_MediaItem_rec;
8001 IF (c_MediaItem_csr%notfound) THEN
8002 x_return_status := fnd_api.g_ret_sts_error;
8003 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name, to_char(p_media_rec.media_id),
8004 'media_id');
8005 RETURN;
8006 END IF;
8007 --
8008 -- Check if Active is set to 'N'
8009 --
8010 IF (l_MediaItem_rec.active = 'N') then
8011 --x_return_status := fnd_api.g_ret_sts_error;
8012 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name, to_char(p_media_rec.media_id),'Active set to N for mediaitem');
8013 RAISE fnd_api.g_exc_error;
8014 END IF;
8015 --
8016 -- Check if source_id requies updating
8017 --
8018 IF (p_media_rec.source_id = fnd_api.g_miss_num) then
8019 --l_source_id := l_MediaItem_rec.source_id;
8020 l_media_rec.source_id := l_MediaItem_rec.source_id;
8021 ELSE
8022 l_media_rec.source_id := p_media_rec.source_id;
8023 END IF;
8024 --
8025 -- Check if direction requires updating
8026 --
8027 IF (p_media_rec.direction = fnd_api.g_miss_char) then
8028 -- l_direction := l_MediaItem_rec.direction;
8029 l_media_rec.direction := l_MediaItem_rec.direction;
8030 ELSE
8031 l_media_rec.direction := p_media_rec.direction;
8032 END IF;
8033 --
8034 -- Check if end_date_time requires updating
8035 --
8036 IF (p_media_rec.start_date_time = fnd_api.g_miss_date) OR (p_media_rec.start_date_time is NULL ) then
8037 l_media_rec.start_date_time := l_MediaItem_rec.start_date_time;
8038 ELSE
8039 l_media_rec.start_date_time := p_media_rec.start_date_time;
8040 b_Duration := TRUE;
8041 END IF;
8042
8043 --
8044 -- Check if end_date_time requires updating
8045 --
8046 IF (p_media_rec.end_date_time = fnd_api.g_miss_date) then
8047 --l_end_date_time := l_MediaItem_rec.end_date_time;
8048 l_media_rec.end_date_time := l_MediaItem_rec.end_date_time;
8049 ELSE
8050 l_media_rec.end_date_time := p_media_rec.end_date_time;
8051 b_Duration := TRUE;
8052 END IF;
8053
8054 Validate_StartEnd_Date( p_api_name => l_api_name_full,
8055 p_start_date_time => l_media_rec.start_date_time,
8056 p_end_date_time => l_media_rec.end_date_time,
8057 x_return_status => l_return_status
8058 );
8059 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
8060 RAISE fnd_api.g_exc_error;
8061 END IF;
8062
8063 --
8064 -- Check if duration requires updating
8065 --
8066 IF (p_media_rec.duration = fnd_api.g_miss_num) then
8067 --l_duration := l_MediaItem_rec.duration;
8068 l_media_rec.duration := l_MediaItem_rec.duration;
8069 ELSE
8070 l_media_rec.duration := p_media_rec.duration;
8071 b_Duration := FALSE;
8072 END IF;
8073
8074 IF (l_media_rec.duration = fnd_api.g_miss_num)
8075 OR (l_media_rec.duration IS NULL) OR (l_media_rec.duration = 0) OR b_Duration THEN
8076 l_media_rec.duration := ROUND((l_media_rec.end_date_time - l_media_rec.start_date_time)*24*60*60);
8077 END IF;
8078
8079 --
8080 -- Check if interaction_performed requires updating
8081 --
8082 IF (p_media_rec.interaction_performed = fnd_api.g_miss_char) then
8083 --l_interaction_performed := l_MediaItem_rec.interaction_performed;
8084 l_media_rec.interaction_performed := l_MediaItem_rec.interaction_performed;
8085 ELSE
8086 l_media_rec.interaction_performed := p_media_rec.interaction_performed;
8087 END IF;
8088 --
8089 -- Check if media_data requires updating
8090 --
8091 IF (p_media_rec.media_data = fnd_api.g_miss_char) then
8092 --l_media_data := l_MediaItem_rec.media_data;
8093 l_media_rec.media_data := l_MediaItem_rec.media_data;
8094 ELSE
8095 l_media_rec.media_data := p_media_rec.media_data;
8096 END IF;
8097 --
8098 -- Check if source_item_create_date_time requires updating
8099 --
8100 IF (p_media_rec.source_item_create_date_time = fnd_api.g_miss_date) then
8101 --l_source_item_create_date_time := l_MediaItem_rec.source_item_create_date_time;
8102 l_media_rec.source_item_create_date_time := l_MediaItem_rec.source_item_create_date_time;
8103 ELSE
8104 l_media_rec.source_item_create_date_time := p_media_rec.source_item_create_date_time;
8105 END IF;
8106 --
8107 -- Check if source_item_id requires updating
8108 --
8109 IF (p_media_rec.source_item_id = fnd_api.g_miss_num) then
8110 --l_source_item_id := l_MediaItem_rec.source_item_id;
8111 l_media_rec.source_item_id := l_MediaItem_rec.source_item_id;
8112 ELSE
8113 l_media_rec.source_item_id := p_media_rec.source_item_id;
8114 END IF;
8115 --
8116 -- Check if media_item_type requires updating
8117 --
8118 IF (p_media_rec.media_item_type = fnd_api.g_miss_char) then
8119 --l_media_item_type := l_MediaItem_rec.media_item_type;
8120 l_media_rec.media_item_type:= l_MediaItem_rec.media_item_type;
8121 ELSE
8122 l_media_rec.media_item_type := p_media_rec.media_item_type;
8123 END IF;
8124 --
8125 -- Check if media_item_ref requires updating
8126 --
8127 IF (p_media_rec.media_item_ref = fnd_api.g_miss_char) then
8128 --l_media_item_ref := l_MediaItem_rec.media_item_ref;
8129 l_media_rec.media_item_ref := l_MediaItem_rec.media_item_ref;
8130 ELSE
8131 l_media_rec.media_item_ref := p_media_rec.media_item_ref;
8132 END IF;
8133 --
8134 -- Check if media_abandon_flag requires updating
8135 --
8136 IF (p_media_rec.media_abandon_flag = fnd_api.g_miss_char) then
8137 --l_media_abandon_flag := l_MediaItem_rec.media_abandon_flag;
8138 l_media_rec.media_abandon_flag := l_MediaItem_rec.media_abandon_flag;
8139 ELSE
8140 l_media_rec.media_abandon_flag := p_media_rec.media_abandon_flag;
8141 END IF;
8142 --
8143 -- Check if media_transferred_flag requires updating
8144 --
8145 IF (p_media_rec.media_transferred_flag = fnd_api.g_miss_char) then
8146 --l_media_transferred_flag := l_MediaItem_rec.media_transferred_flag;
8147 l_media_rec.media_transferred_flag := l_MediaItem_rec.media_transferred_flag;
8148 ELSE
8149 l_media_rec.media_transferred_flag := p_media_rec.media_transferred_flag;
8150 END IF;
8151 --
8152 -- Check if server_group_id requires updating
8153 --
8154 IF (p_media_rec.server_group_id = fnd_api.g_miss_num) then
8155 --l_server_group_id := l_MediaItem_rec.server_group_id;
8156 l_media_rec.server_group_id := l_MediaItem_rec.server_group_id;
8157 ELSE
8158 l_media_rec.server_group_id := p_media_rec.server_group_id;
8159 END IF;
8160 --
8161 -- Check if dnis requires updating
8162 --
8163 IF (p_media_rec.dnis = fnd_api.g_miss_char) then
8164 --l_dnis := l_MediaItem_rec.dnis;
8165 l_media_rec.dnis := l_MediaItem_rec.dnis;
8166 ELSE
8167 l_media_rec.dnis := p_media_rec.dnis;
8168 END IF;
8169 --
8170 -- Check if ani requires updating
8171 --
8172 IF (p_media_rec.ani = fnd_api.g_miss_char) then
8173 --l_ani := l_MediaItem_rec.ani;
8174 l_media_rec.ani := l_MediaItem_rec.ani;
8175 ELSE
8176 l_media_rec.ani := p_media_rec.ani;
8177 END IF;
8178 --
8179 -- Check if classification requires updating
8180 --
8181 IF (p_media_rec.classification = fnd_api.g_miss_char) then
8182 --l_classification := l_MediaItem_rec.classification;
8183 l_media_rec.classification := l_MediaItem_rec.classification;
8184 ELSE
8185 l_media_rec.classification := p_media_rec.classification;
8186 END IF;
8187
8188 --
8189 -- Check if object_version_number requies updating
8190 --
8191 IF (p_object_version = fnd_api.g_miss_num) then
8192 l_object_version := l_MediaItem_rec.object_version_number;
8193 ELSE
8194 l_object_version := p_object_version;
8195 END IF;
8196
8197 --
8198 -- Check if bulk_writer_code requires updating
8199 --
8200 IF (p_media_rec.bulk_writer_code = fnd_api.g_miss_char) then
8201 l_media_rec.bulk_writer_code := l_MediaItem_rec.bulk_writer_code;
8202 ELSE
8203 l_media_rec.bulk_writer_code := p_media_rec.bulk_writer_code;
8204 END IF;
8205
8206 --
8207 -- Check if bulk_batch_type requires updating
8208 --
8209 IF (p_media_rec.bulk_batch_type = fnd_api.g_miss_char) then
8210 l_media_rec.bulk_batch_type := l_MediaItem_rec.bulk_batch_type;
8211 ELSE
8212 l_media_rec.bulk_batch_type := p_media_rec.bulk_writer_code;
8213 END IF;
8214 --
8215 -- Check if bulk_batch_id requires updating
8216 --
8217 IF (p_media_rec.bulk_batch_id = fnd_api.g_miss_num) then
8218 l_media_rec.bulk_batch_id := l_MediaItem_rec.bulk_batch_id;
8219 ELSE
8220 l_media_rec.bulk_batch_id := p_media_rec.bulk_batch_id;
8221 END IF;
8222 --
8223 -- Check if bulk_interaction_id requires updating
8224 --
8225 IF (p_media_rec.bulk_interaction_id = fnd_api.g_miss_num) then
8226 l_media_rec.bulk_interaction_id := l_MediaItem_rec.bulk_interaction_id;
8227 ELSE
8228 l_media_rec.bulk_interaction_id := p_media_rec.bulk_interaction_id;
8229 END IF;
8230
8231 --
8232 -- Check if email_address requires updating
8233 --
8234
8235 IF (p_media_rec.address = fnd_api.g_miss_char) THEN
8236 IF p_media_rec.direction = 'INBOUND' AND p_media_rec.media_item_type LIKE 'TELE%' THEN
8237 IF p_media_rec.ani <> fnd_api.g_miss_char THEN
8238 l_media_rec.address := p_media_rec.ani;
8239 ELSE
8240 l_media_rec.address := NULL;
8241 END IF;
8242 ELSE
8243 l_media_rec.address := l_MediaItem_rec.address;
8244 END IF;
8245 ELSE
8246 l_media_rec.address := p_media_rec.address;
8247 END IF;
8248
8249 --
8250 --
8251 -- Validate all non-missing attributes by calling the utility procedure.
8252 --
8253 Validate_Media_Item
8254 ( p_api_name => l_api_name_full,
8255 p_media_item_val => l_media_rec,
8256 p_resp_appl_id => p_resp_appl_id,
8257 p_resp_id => p_resp_id,
8258 x_return_status => l_return_status
8259 );
8260 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
8261 RAISE fnd_api.g_exc_error;
8262 END IF;
8263 -- DBMS_OUTPUT.PUT_LINE('PAST Validate_MediaItem_Record in JTF_IH_PUB.Update_MediaItem');
8264
8265 UPDATE JTF_IH_MEDIA_ITEMS
8266 SET source_id = l_media_rec.source_id,
8267 direction = l_media_rec.direction,
8268 duration = l_media_rec.duration,
8269 end_date_time = l_media_rec.end_date_time,
8270 interaction_performed = l_media_rec.interaction_performed,
8271 start_date_time = l_media_rec.start_date_time,
8272 media_data = decode( l_media_rec.media_data, fnd_api.g_miss_char, null, l_media_rec.media_data),
8273 source_item_create_date_time = l_media_rec.source_item_create_date_time,
8274 source_item_id = l_media_rec.source_item_id,
8275 media_item_type = l_media_rec.media_item_type,
8276 media_item_ref = l_media_rec.media_item_ref,
8277 media_abandon_flag = l_media_rec.media_abandon_flag,
8278 media_transferred_flag = l_media_rec.media_transferred_flag,
8279 -- Bug# 2338832
8280 server_group_id = decode(l_media_rec.server_group_id,fnd_api.g_miss_num,null, l_media_rec.server_group_id),
8281 dnis = decode(l_media_rec.dnis, fnd_api.g_miss_char, null, l_media_rec.dnis),
8282 ani = decode(l_media_rec.ani, fnd_api.g_miss_char, null, l_media_rec.ani),
8283 classification = decode(l_media_rec.classification, fnd_api.g_miss_char, null, l_media_rec.classification),
8284 last_update_date = sysdate,
8285 last_updated_by = p_user_id,
8286 last_update_login = p_login_id,
8287 object_version_number = l_object_version,
8288 BULK_WRITER_CODE = l_media_rec.bulk_writer_code,
8289 BULK_BATCH_TYPE = l_media_rec.bulk_batch_type,
8290 BULK_BATCH_ID = l_media_rec.bulk_batch_id,
8291 BULK_INTERACTION_ID = l_media_rec.bulk_interaction_id,
8292 ADDRESS = decode(l_media_rec.address,fnd_api.g_miss_char, null, l_media_rec.address)
8293 WHERE CURRENT OF c_MediaItem_csr;
8294 --
8295 -- Close Cursor
8296 --
8297 Close c_MediaItem_csr;
8298 --
8299
8300 -- Post processing Call
8301
8302 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_MEDIAITEM', 'A', 'V') THEN
8303 JTF_IH_PUB_VUHK.update_mediaitem_post(
8304 --p_media_rec=>l_media_rec_hk,
8305 p_media_rec=>l_media_rec,
8306 x_data=>l_data,
8307 x_count=>l_count,
8308 x_return_code=>l_return_code);
8309 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
8310 RAISE FND_API.G_EXC_ERROR;
8311 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8312 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8313 END IF;
8314 END IF;
8315
8316 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_MEDIAITEM', 'A', 'C') THEN
8317 JTF_IH_PUB_CUHK.update_mediaitem_post(
8318 --p_media_rec=>l_media_rec_hk,
8319 p_media_rec=>l_media_rec,
8320 x_data=>l_data,
8321 x_count=>l_count,
8322 x_return_code=>l_return_code);
8323 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
8324 RAISE FND_API.G_EXC_ERROR;
8325 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8326 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8327 END IF;
8328 END IF;
8329
8330
8331 -- Standard check of p_commit
8332 --
8333 IF fnd_api.to_boolean(p_commit) THEN
8334 COMMIT WORK;
8335 END IF;
8336 --
8337 -- Standard call to get message count and if count is 1, get message info
8338 --
8339 fnd_msg_pub.count_and_get( p_count => x_msg_count, p_data => x_msg_data );
8340 EXCEPTION
8341 WHEN fnd_api.g_exc_error THEN
8342 ROLLBACK TO Update_mediaitem_pub;
8343 x_return_status := fnd_api.g_ret_sts_error;
8344 fnd_msg_pub.count_and_get
8345 ( p_count => x_msg_count,
8346 p_data => x_msg_data );
8347 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
8348 WHEN fnd_api.g_exc_unexpected_error THEN
8349 ROLLBACK TO Update_mediaitem_pub;
8350 x_return_status := fnd_api.g_ret_sts_unexp_error;
8351 fnd_msg_pub.count_and_get
8352 ( p_count => x_msg_count,
8353 p_data => x_msg_data );
8354 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
8355 WHEN OTHERS THEN
8356 ROLLBACK TO Update_mediaitem_pub;
8357 x_return_status := fnd_api.g_ret_sts_unexp_error;
8358 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
8359 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
8360 END IF;
8361 fnd_msg_pub.count_and_get
8362 ( p_count => x_msg_count,
8363 p_data => x_msg_data );
8364 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
8365 END Update_MediaItem;
8366
8367
8368 --
8369 -- HISTORY
8370 --
8371 -- AUTHOR DATE MODIFICATION DESCRIPTION
8372 -- ------ ---- --------------------------
8373 --
8374 -- James Baldo Jr. 15-MAR-2000 Initial Version after losing file
8375 -- James Baldo Jr. 21-APR-2000 Active setting defect based on bugdb# 127726
8376 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
8377 -- James Baldo Jr. 28-JUL-2000 Fix for bugdb # 1340013 for initializing end_date_time
8378 -- when not set by client.
8379 -- James Baldo Jr. 30-NOV-2000 Logic for two new columns, Media_Abandon_Flag and Media_Transferred_Flag.
8380 -- Enhancement Bugdb # 1501325
8381 -- Igor Aleshin 18-DEC-2001 Bug# 2153913 - PREVENT G_MISS_DATE VALUE FROM BEING WRITTEN TO
8382 -- THE END_DATE_TIME VALUE.
8383 -- Igor Aleshin 21-MAY-2002 Changed setup procedure for End_Date_Time.
8384 -- Igor Aleshin 29-MAY-2003 Enh# 2940473 - IH Bulk API Changes
8385 -- Igor Aleshin 16-JUL-2003 Enh# 3045626 - Clean-Up Close_MediaItem Update Logic
8386 -- Igor Aleshin 08-Mar-2004 Enh# 3491849 - JTH.R: IH CHANGES TO SUPPORT FTC ABANDONMENT REGULATIONS
8387 -- vekrishn 27-JUL-2004 Perf Fix for literal Usage
8388 --
8389 --
8390
8391 PROCEDURE Close_MediaItem
8392 (
8393 p_api_version IN NUMBER,
8394 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
8395 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
8396 p_resp_appl_id IN NUMBER DEFAULT NULL,
8397 p_resp_id IN NUMBER DEFAULT NULL,
8398 p_user_id IN NUMBER,
8399 p_login_id IN NUMBER DEFAULT NULL,
8400 x_return_status OUT NOCOPY VARCHAR2,
8401 x_msg_count OUT NOCOPY NUMBER,
8402 x_msg_data OUT NOCOPY VARCHAR2,
8403 p_media_rec IN media_rec_type,
8404 p_object_version IN NUMBER DEFAULT NULL
8405 ) AS
8406 l_api_name CONSTANT VARCHAR2(30) := 'Close_MediaItem';
8407 l_api_version CONSTANT NUMBER := 1.0;
8408 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
8409 l_return_status VARCHAR2(1);
8410 l_source_id NUMBER(15);
8411 l_count NUMBER := 0;
8412 l_media_data VARCHAR2(80);
8413 l_end_date_time DATE := NULL;
8414 -- Added by IAleshin 21-MAY-2002
8415 --l_start_date_time DATE := NULL;
8416 --l_duration NUMBER;
8417 --
8418 l_media_lc_rec media_lc_rec_type;
8419 l_return_code VARCHAR2(1);
8420 l_data VARCHAR2(2000);
8421 l_count_hk NUMBER;
8422 l_media_rec MEDIA_REC_TYPE;
8423
8424 l_ao_update_pending VARCHAR2(1);
8425 l_soft_closed VARCHAR2(1);
8426 l_direction VARCHAR2(256);
8427 l_media_item_type VARCHAR2(256);
8428
8429 -- Perf fix for literal Usage
8430 l_active_perf VARCHAR2(1);
8431 l_soft_closed_perf VARCHAR2(1);
8432
8433 CURSOR c_media_item_lc_segs IS
8434 SELECT *
8435 FROM jtf_ih_media_item_lc_segs
8436 WHERE media_id = p_media_rec.media_id;
8437 BEGIN
8438 -- Standard start of API savepoint
8439 SAVEPOINT close_mediaitem_pub1;
8440
8441 -- Perf variables
8442 l_active_perf := 'N';
8443 l_soft_closed_perf := 'Y';
8444
8445 -- Preprocessing Call
8446 l_media_rec := p_media_rec;
8447 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_MEDIAITEM', 'B', 'C') THEN
8448 JTF_IH_PUB_CUHK.close_mediaitem_pre(
8449 p_media_rec=>l_media_rec,
8450 x_data=>l_data,
8451 x_count=>l_count_hk,
8452 x_return_code=>l_return_code);
8453 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
8454 RAISE FND_API.G_EXC_ERROR;
8455 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8456 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8457 END IF;
8458 END IF;
8459
8460 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_MEDIAITEM', 'B', 'V') THEN
8461 JTF_IH_PUB_VUHK.close_mediaitem_pre(
8462 p_media_rec=>l_media_rec,
8463 x_data=>l_data,
8464 x_count=>l_count_hk,
8465 x_return_code=>l_return_code);
8466 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
8467 RAISE FND_API.G_EXC_ERROR;
8468 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8469 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8470 END IF;
8471 END IF;
8472
8473
8474 -- Standard call to check for call compatibility
8475 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
8476 l_api_name, g_pkg_name) THEN
8477 RAISE fnd_api.g_exc_unexpected_error;
8478 END IF;
8479 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Close_MediaItem');
8480
8481 -- Initialize message list if p_init_msg_list is set to TRUE
8482 IF fnd_api.to_boolean(p_init_msg_list) THEN
8483 fnd_msg_pub.initialize;
8484 END IF;
8485
8486 -- Initialize API return status to success
8487 x_return_status := fnd_api.g_ret_sts_success;
8488
8489 --
8490 -- Apply business-rule validation to all required and passed parameters
8491 --
8492 -- Validate user and login session IDs
8493 --
8494 IF (p_user_id IS NULL) THEN
8495 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
8496 RAISE fnd_api.g_exc_error;
8497 ELSE
8498 jtf_ih_core_util_pvt.validate_who_info(
8499 p_api_name => l_api_name_full,
8500 p_parameter_name_usr => 'p_user_id',
8501 p_parameter_name_log => 'p_login_id',
8502 p_user_id => p_user_id,
8503 p_login_id => p_login_id,
8504 x_return_status => l_return_status );
8505 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
8506 RAISE fnd_api.g_exc_error;
8507 END IF;
8508 END IF;
8509
8510
8511 -- Enh# 3491849
8512 --
8513 -- Get current values for ao_update_pending and soft_closed columns and end_date_time
8514 --
8515 SELECT ao_update_pending, direction, media_item_type, end_date_time
8516 INTO l_ao_update_pending, l_direction, l_media_item_type, l_end_date_time
8517 FROM JTF_IH_MEDIA_ITEMS WHERE Media_Id = p_media_rec.media_id;
8518
8519 -- Check end_date_time parameter.
8520 --
8521 IF p_media_rec.end_date_time <> fnd_api.g_miss_date AND p_media_rec.end_date_time IS NOT NULL THEN
8522 l_media_rec.end_date_time := p_media_rec.end_date_time;
8523 ELSE
8524 IF l_end_date_time IS NOT NULL AND l_end_date_time <> fnd_api.g_miss_date THEN
8525 l_media_rec.end_date_time := l_end_date_time;
8526 ELSE
8527 l_media_rec.end_date_time := SYSDATE;
8528 END IF;
8529 END IF;
8530 --
8531 --Update MediaItem
8532 --
8533 Update_MediaItem(
8534 p_api_version,
8535 p_init_msg_list,
8536 'F', -- No Commit.
8537 p_resp_appl_id,
8538 p_resp_id,
8539 p_user_id,
8540 p_login_id,
8541 x_return_status,
8542 x_msg_count,
8543 x_msg_data,
8544 l_media_rec,
8545 p_object_version);
8546 IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
8547 RAISE fnd_api.g_exc_error;
8548 END IF;
8549 -- DBMS_OUTPUT.PUT_LINE('PAST Update_MediaItem in JTF_IH_PUB.Close_MediaItem');
8550 --
8551 -- Enh# 3491849
8552 --
8553 IF l_direction = 'OUTBOUND' AND l_media_item_type = 'TELEPHONE' THEN
8554 IF l_ao_update_pending = 'Y' THEN
8555 -- Soft close the MI
8556 UPDATE JTF_IH_MEDIA_ITEMS
8557 SET SOFT_CLOSED = l_soft_closed_perf
8558 WHERE MEDIA_ID = p_media_rec.media_id;
8559 ELSE
8560 -- hard close the MI
8561 UPDATE JTF_IH_MEDIA_ITEMS
8562 SET ACTIVE = l_active_perf
8563 WHERE MEDIA_ID = p_media_rec.media_id;
8564 END IF;
8565 ELSE
8566 -- hard close the MI
8567 UPDATE JTF_IH_MEDIA_ITEMS
8568 set ACTIVE = l_active_perf
8569 WHERE MEDIA_ID = p_media_rec.media_id;
8570 END IF;
8571
8572 -- Close all related Media_Item_LCs
8573 --
8574 FOR cur_Milcs IN (SELECT milcs_id, start_date_time, end_date_time, duration
8575 FROM jtf_ih_media_item_lc_segs WHERE Media_Id = p_media_rec.media_id) LOOP
8576 IF (cur_Milcs.end_date_time IS NULL) OR (cur_Milcs.end_date_time = fnd_api.g_miss_date) THEN
8577 cur_Milcs.end_date_time := l_end_date_time;
8578 Validate_StartEnd_Date
8579 ( p_api_name => l_api_name_full,
8580 p_start_date_time => cur_Milcs.start_date_time,
8581 p_end_date_time => cur_Milcs.end_date_time,
8582 x_return_status => l_return_status);
8583 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
8584 RAISE fnd_api.g_exc_error;
8585 END IF;
8586 -- If we already have duration then pass previouse value without modification
8587 -- else calculate new duration value
8588 IF (cur_Milcs.duration IS NULL) OR (cur_Milcs.duration = 0) THEN
8589 cur_Milcs.duration := ROUND((cur_Milcs.end_date_time - cur_Milcs.start_date_time)*24*60*60);
8590 END IF;
8591 END IF;
8592
8593 UPDATE JTF_IH_MEDIA_ITEM_LC_SEGS SET
8594 End_Date_Time = cur_Milcs.end_date_time,
8595 Start_Date_time = cur_Milcs.start_date_time,
8596 Duration = cur_Milcs.duration,
8597 Active = l_active_perf
8598 WHERE milcs_id = cur_Milcs.milcs_id;
8599 END LOOP;
8600 -- Post processing Call
8601
8602 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_MEDIAITEM', 'A', 'V') THEN
8603 JTF_IH_PUB_VUHK.close_mediaitem_post(p_media_rec=>l_media_rec,
8604 x_data=>l_data,
8605 x_count=>l_count_hk,
8606 x_return_code=>l_return_code);
8607 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
8608 RAISE FND_API.G_EXC_ERROR;
8609 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8610 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8611 END IF;
8612 END IF;
8613
8614 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'CLOSE_MEDIAITEM', 'A', 'C') THEN
8615 JTF_IH_PUB_CUHK.close_mediaitem_post(p_media_rec=>l_media_rec,
8616 x_data=>l_data,
8617 x_count=>l_count_hk,
8618 x_return_code=>l_return_code);
8619 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
8620 RAISE FND_API.G_EXC_ERROR;
8621 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8622 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8623 END IF;
8624 END IF;
8625
8626
8627 -- Standard check of p_commit
8628 IF fnd_api.to_boolean(p_commit) THEN
8629 COMMIT WORK;
8630 END IF;
8631 --
8632 -- Standard check of p_commit
8633 --
8634 IF fnd_api.to_boolean(p_commit) THEN
8635 COMMIT WORK;
8636 END IF;
8637 --
8638 -- Standard call to get message count and if count is 1, get message info
8639 --
8640 fnd_msg_pub.count_and_get( p_count => x_msg_count, p_data => x_msg_data );
8641 EXCEPTION
8642 WHEN fnd_api.g_exc_error THEN
8643 ROLLBACK TO close_mediaitem_pub1;
8644 x_return_status := fnd_api.g_ret_sts_error;
8645 fnd_msg_pub.count_and_get
8646 ( p_count => x_msg_count,
8647 p_data => x_msg_data );
8648 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
8649 WHEN fnd_api.g_exc_unexpected_error THEN
8650 ROLLBACK TO close_mediaitem_pub1;
8651 x_return_status := fnd_api.g_ret_sts_unexp_error;
8652 fnd_msg_pub.count_and_get
8653 ( p_count => x_msg_count,
8654 p_data => x_msg_data );
8655 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
8656 WHEN OTHERS THEN
8657 ROLLBACK TO close_mediaitem_pub1;
8658 x_return_status := fnd_api.g_ret_sts_unexp_error;
8659 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
8660 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
8661 END IF;
8662 fnd_msg_pub.count_and_get
8663 ( p_count => x_msg_count,
8664 p_data => x_msg_data );
8665 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
8666 END Close_MediaItem;
8667
8668 --
8669 -- HISTORY
8670 --
8671 -- AUTHOR DATE MODIFICATION DESCRIPTION
8672 -- ------ ---- --------------------------
8673 --
8674 -- James Baldo Jr. 15-MAR-2000 Initial Version after losing file
8675 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
8676 -- Igor Aleshin 18-DEC-2001 Bug# 2153913 - PREVENT G_MISS_DATE VALUE FROM BEING WRITTEN TO
8677 -- THE END_DATE_TIME VALUE.
8678 -- Igor Aleshin 20-MAY-2002 Changed duration calculation
8679 -- Igor Aleshin 24-FEB-2003 Fixed bug# 2817083 - Error loggin interactions
8680
8681 --
8682
8683 PROCEDURE Add_MediaLifecycle
8684 (
8685 p_api_version IN NUMBER,
8686 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
8687 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
8688 p_resp_appl_id IN NUMBER DEFAULT NULL,
8689 p_resp_id IN NUMBER DEFAULT NULL,
8690 p_user_id IN NUMBER,
8691 p_login_id IN NUMBER DEFAULT NULL,
8692 x_return_status OUT NOCOPY VARCHAR2,
8693 x_msg_count OUT NOCOPY NUMBER,
8694 x_msg_data OUT NOCOPY VARCHAR2,
8695 p_media_lc_rec IN media_lc_rec_type,
8696 x_milcs_id OUT NOCOPY NUMBER
8697 ) AS
8698 l_api_name CONSTANT VARCHAR2(30) := 'Open_MediaLifeCycle';
8699 l_api_version CONSTANT NUMBER := 1.0;
8700 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
8701 l_return_status VARCHAR2(1);
8702 --l_milcs_id NUMBER;
8703 --l_start_date_time DATE;
8704 -- Bug# 2153913
8705 --l_end_date_time DATE;
8706 l_active VARCHAR2(1);
8707 --l_duration NUMBER := NULL;
8708 l_media_lc_rec media_lc_rec_type;
8709 --l_media_lc_rec_hk media_lc_rec_type;
8710 l_return_code VARCHAR2(1);
8711 l_data VARCHAR2(2000);
8712 l_count NUMBER;
8713 --l_milcs_type_id NUMBER := NULL;
8714
8715 BEGIN
8716 -- local variables initialization to remove GSCC warning
8717 l_active := 'Y';
8718 l_media_lc_rec := p_media_lc_rec;
8719
8720 --
8721 -- Standard start of API savepoint
8722 --
8723 SAVEPOINT open_medialifecycle_pub;
8724
8725 -- Preprocessing Call
8726 --l_media_lc_rec_hk := p_media_lc_rec;
8727 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'ADD_MEDIALIFECYCLE', 'B', 'C') THEN
8728 JTF_IH_PUB_CUHK.add_medialifecycle_pre(
8729 --p_media_lc_rec=>l_media_lc_rec_hk,
8730 p_media_lc_rec=>l_media_lc_rec,
8731 x_data=>l_data,
8732 x_count=>l_count,
8733 x_return_code=>l_return_code);
8734 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
8735 RAISE FND_API.G_EXC_ERROR;
8736 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8737 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8738 END IF;
8739 END IF;
8740
8741 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'ADD_MEDIALIFECYCLE', 'B', 'V') THEN
8742 JTF_IH_PUB_VUHK.add_medialifecycle_pre(
8743 --p_media_lc_rec=>l_media_lc_rec_hk,
8744 p_media_lc_rec=>l_media_lc_rec,
8745 x_data=>l_data,
8746 x_count=>l_count,
8747 x_return_code=>l_return_code);
8748 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
8749 RAISE FND_API.G_EXC_ERROR;
8750 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8751 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8752 END IF;
8753 END IF;
8754
8755 --
8756 -- Standard call to check for call compatibility
8757 --
8758 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
8759 l_api_name, g_pkg_name) THEN
8760 RAISE fnd_api.g_exc_unexpected_error;
8761 END IF;
8762 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Add_MediaLifeCycle');
8763 --
8764 -- Initialize message list if p_init_msg_list is set to TRUE
8765 --
8766 IF fnd_api.to_boolean(p_init_msg_list) THEN
8767 fnd_msg_pub.initialize;
8768 END IF;
8769 --
8770 -- Initialize API return status to success
8771 --
8772 x_return_status := fnd_api.g_ret_sts_success;
8773
8774 --
8775 -- Apply business-rule validation to all required and passed parameters
8776 --
8777 -- Validate user and login session IDs
8778 --
8779 IF (p_user_id IS NULL) THEN
8780 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
8781 RAISE fnd_api.g_exc_error;
8782 ELSE
8783 jtf_ih_core_util_pvt.validate_who_info
8784 ( p_api_name => l_api_name_full,
8785 p_parameter_name_usr => 'p_user_id',
8786 p_parameter_name_log => 'p_login_id',
8787 p_user_id => p_user_id,
8788 p_login_id => p_login_id,
8789 x_return_status => l_return_status );
8790 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
8791 RAISE fnd_api.g_exc_error;
8792 END IF;
8793 END IF;
8794 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Add_MediaLifeCycle');
8795
8796 --
8797 -- Validate all non-missing attributes by calling the utility procedure.
8798 --
8799 Validate_Mlcs_Record
8800 ( p_api_name => l_api_name_full,
8801 p_media_lc_rec => p_media_lc_rec,
8802 p_resp_appl_id => p_resp_appl_id,
8803 p_resp_id => p_resp_id,
8804 x_return_status => l_return_status
8805 );
8806 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
8807 RAISE fnd_api.g_exc_error;
8808 END IF;
8809 -- DBMS_OUTPUT.PUT_LINE('PAST Validate_Media_LC_Record in JTF_IH_PUB.Add_MediaLifeCycle');
8810 -- assign milcs_type_id if not supplied
8811 -- since milcs_code has been validate previously no checking is required.
8812 IF ((p_media_lc_rec.milcs_type_id IS NULL) OR (p_media_lc_rec.milcs_type_id = fnd_api.g_miss_num)) THEN
8813 select milcs_type_id
8814 --INTO l_milcs_type_id
8815 INTO l_media_lc_rec.milcs_type_id
8816 from JTF_IH_MEDIA_ITM_LC_SEG_TYS
8817 where milcs_code = p_media_lc_rec.milcs_code;
8818 ELSE
8819 --l_milcs_type_id := p_media_lc_rec.milcs_type_id;
8820 l_media_lc_rec.milcs_type_id := p_media_lc_rec.milcs_type_id;
8821 END IF;
8822
8823 -- Modified by IAleshin 20-MAY-2002
8824 -- assign the end_date_time
8825 IF(p_media_lc_rec.end_date_time IS NOT NULL) AND (p_media_lc_rec.end_date_time <> fnd_api.g_miss_date) THEN
8826 --l_end_date_time := p_media_lc_rec.end_date_time;
8827 l_media_lc_rec.end_date_time := p_media_lc_rec.end_date_time;
8828 ELSE
8829 --l_end_date_time := NULL;
8830 l_media_lc_rec.end_date_time := NULL;
8831 --l_duration := NULL;
8832 l_media_lc_rec.duration := NULL;
8833 END IF;
8834
8835 -- assign the start_date_time
8836 IF(p_media_lc_rec.start_date_time IS NOT NULL) AND (p_media_lc_rec.start_date_time <> fnd_api.g_miss_date) THEN
8837 --l_start_date_time := p_media_lc_rec.start_date_time;
8838 l_media_lc_rec.start_date_time := p_media_lc_rec.start_date_time;
8839 ELSE
8840 --l_start_date_time := SYSDATE;
8841 l_media_lc_rec.start_date_time := SYSDATE;
8842 END IF;
8843
8844 Validate_StartEnd_Date
8845 ( p_api_name => l_api_name_full,
8846 --p_start_date_time => l_start_date_time,
8847 p_start_date_time => l_media_lc_rec.start_date_time,
8848 --p_end_date_time => l_end_date_time,
8849 p_end_date_time => l_media_lc_rec.end_date_time,
8850 x_return_status => l_return_status
8851 );
8852 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
8853 RAISE fnd_api.g_exc_error;
8854 END IF;
8855
8856 -- assign the duration
8857 IF(p_media_lc_rec.duration IS NOT NULL) AND (p_media_lc_rec.duration <> fnd_api.g_miss_num) THEN
8858 --l_duration := p_media_lc_rec.duration;
8859 l_media_lc_rec.duration := p_media_lc_rec.duration;
8860 ELSIF (l_media_lc_rec.end_date_time IS NULL) THEN
8861 --l_duration := 0;
8862 l_media_lc_rec.duration := 0;
8863 ELSE
8864 --l_duration := ROUND((l_end_date_time - l_start_date_time)*24*60*60);
8865 l_media_lc_rec.duration := ROUND((l_media_lc_rec.end_date_time - l_media_lc_rec.start_date_time)*24*60*60);
8866 END IF;
8867
8868 -- DBMS_OUTPUT.PUT_LINE('PAST assign the duration in JTF_IH_PUB.Add_MediaLifeCycle');
8869
8870 -- Bug# 2817083
8871 --SELECT JTF_IH_MEDIA_ITEM_LC_SEG_S1.NextVal into l_milcs_id FROM dual;
8872 -- DBMS_OUTPUT.PUT_LINE('PAST generated sequence JTF_IH_PUB.Add_MediaLifeCycle milcs := ' || l_milcs_id);
8873 --l_milcs_id := Get_milcs_id(NULL);
8874 l_media_lc_rec.milcs_id := Get_milcs_id(NULL);
8875
8876 INSERT INTO jtf_ih_media_item_lc_segs
8877 (
8878 CREATED_BY,
8879 CREATION_DATE,
8880 LAST_UPDATED_BY,
8881 LAST_UPDATE_DATE,
8882 LAST_UPDATE_LOGIN,
8883 MILCS_ID,
8884 START_DATE_TIME,
8885 TYPE_TYPE,
8886 TYPE_ID,
8887 DURATION,
8888 END_DATE_TIME,
8889 MILCS_TYPE_ID,
8890 MEDIA_ID,
8891 HANDLER_ID,
8892 RESOURCE_ID,
8893 ACTIVE
8894 )
8895 VALUES
8896 (
8897 p_user_id,
8898 Sysdate,
8899 p_user_id,
8900 Sysdate,
8901 p_login_id,
8902 --l_milcs_id,
8903 l_media_lc_rec.milcs_id,
8904 --l_start_date_time,
8905 l_media_lc_rec.start_date_time,
8906 decode(p_media_lc_rec.type_type,fnd_api.g_miss_char, null, p_media_lc_rec.type_type),
8907 decode(p_media_lc_rec.type_id,fnd_api.g_miss_num, null, p_media_lc_rec.type_id),
8908 --l_duration,
8909 l_media_lc_rec.duration,
8910 --l_end_date_time,
8911 l_media_lc_rec.end_date_time,
8912 --l_milcs_type_id,
8913 l_media_lc_rec.milcs_type_id,
8914 l_media_lc_rec.media_id,
8915 l_media_lc_rec.handler_id,
8916 decode(l_media_lc_rec.resource_id,fnd_api.g_miss_num, null, l_media_lc_rec.resource_id),
8917 l_active
8918 );
8919 -- DBMS_OUTPUT.PUT_LINE('PAST INSERT INTO Validate_Media_LC_Record in JTF_IH_PUB.Add_MediaLifeCycle');
8920
8921 --
8922 -- Set OUT value
8923 --
8924 --x_milcs_id := l_milcs_id;
8925 x_milcs_id := l_media_lc_rec.milcs_id;
8926
8927 -- Post processing Call
8928
8929 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'ADD_MEDIALIFECYCLE', 'A', 'V') THEN
8930 JTF_IH_PUB_VUHK.add_medialifecycle_post(
8931 --p_media_lc_rec=>l_media_lc_rec_hk,
8932 p_media_lc_rec=>l_media_lc_rec,
8933 x_data=>l_data,
8934 x_count=>l_count,
8935 x_return_code=>l_return_code);
8936 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
8937 RAISE FND_API.G_EXC_ERROR;
8938 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8939 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8940 END IF;
8941 END IF;
8942
8943 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'ADD_MEDIALIFECYCLE', 'A', 'C') THEN
8944 JTF_IH_PUB_CUHK.add_medialifecycle_post(
8945 --p_media_lc_rec=>l_media_lc_rec_hk,
8946 p_media_lc_rec=>l_media_lc_rec,
8947 x_data=>l_data,
8948 x_count=>l_count,
8949 x_return_code=>l_return_code);
8950 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
8951 RAISE FND_API.G_EXC_ERROR;
8952 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8953 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8954 END IF;
8955 END IF;
8956
8957
8958
8959 -- Standard check of p_commit
8960 IF fnd_api.to_boolean(p_commit) THEN
8961 COMMIT WORK;
8962 END IF;
8963
8964 -- Standard call to get message count and if count is 1, get message info
8965 fnd_msg_pub.count_and_get( p_count => x_msg_count, p_data => x_msg_data );
8966 EXCEPTION
8967 WHEN fnd_api.g_exc_error THEN
8968 ROLLBACK TO open_medialifecycle_pub;
8969 x_return_status := fnd_api.g_ret_sts_error;
8970 fnd_msg_pub.count_and_get
8971 ( p_count => x_msg_count,
8972 p_data => x_msg_data );
8973 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
8974 WHEN fnd_api.g_exc_unexpected_error THEN
8975 ROLLBACK TO open_medialifecycle_pub;
8976 x_return_status := fnd_api.g_ret_sts_unexp_error;
8977 fnd_msg_pub.count_and_get
8978 ( p_count => x_msg_count,
8979 p_data => x_msg_data );
8980 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
8981 WHEN OTHERS THEN
8982 ROLLBACK TO open_medialifecycle_pub;
8983 x_return_status := fnd_api.g_ret_sts_unexp_error;
8984 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
8985 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
8986 END IF;
8987 fnd_msg_pub.count_and_get
8988 ( p_count => x_msg_count,
8989 p_data => x_msg_data );
8990 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
8991 END Add_MediaLifecycle;
8992
8993 --
8994 -- HISTORY
8995 --
8996 -- AUTHOR DATE MODIFICATION DESCRIPTION
8997 -- ------ ---- --------------------------
8998 --
8999 -- James Baldo Jr. 15-MAR-2000 Initial Version after losing file
9000 -- James Baldo Jr. 21-APR-2000 For Active setting defect based on bugdb# 1277244
9001 -- James Baldo Jr. 25-APR-2000 User Hooks Customer and Vertical Industry
9002 -- Igor Aleshin 29-MAY-2003 Enh# 2940473 - IH Bulk API Changes
9003 --
9004 --
9005
9006 PROCEDURE Update_MediaLifecycle
9007 (
9008 p_api_version IN NUMBER,
9009 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
9010 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
9011 p_resp_appl_id IN NUMBER DEFAULT NULL,
9012 p_resp_id IN NUMBER DEFAULT NULL,
9013 p_user_id IN NUMBER,
9014 p_login_id IN NUMBER DEFAULT NULL,
9015 x_return_status OUT NOCOPY VARCHAR2,
9016 x_msg_count OUT NOCOPY NUMBER,
9017 x_msg_data OUT NOCOPY VARCHAR2,
9018 p_media_lc_rec IN media_lc_rec_type,
9019 -- Bug# 2012159
9020 p_object_version IN NUMBER DEFAULT NULL
9021 ) AS
9022 l_api_name CONSTANT VARCHAR2(30) := 'Update_MediaLifecycle';
9023 l_api_version CONSTANT NUMBER := 1.0;
9024 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
9025 l_return_status VARCHAR2(1);
9026 l_milcs_id NUMBER;
9027 l_media_id NUMBER;
9028 --l_type_id NUMBER;
9029 --l_duration NUMBER;
9030 --l_end_date_time DATE;
9031 --l_start_date_time DATE;
9032 --l_milcs_type_id NUMBER;
9033 l_type_type VARCHAR2(80);
9034 l_handler_id NUMBER;
9035 l_resource_id NUMBER;
9036 l_active VARCHAR2(1);
9037 l_media_lc_rec media_lc_rec_type;
9038 --l_media_lc_rec_hk media_lc_rec_type;
9039 l_return_code VARCHAR2(1);
9040 l_data VARCHAR2(2000);
9041 l_count NUMBER;
9042 l_object_version NUMBER;
9043 l_bulk_writer_code VARCHAR2(240);
9044 l_bulk_batch_type VARCHAR2(240);
9045 l_bulk_batch_id NUMBER;
9046 l_bulk_interaction_id NUMBER;
9047
9048 CURSOR c_Update_MediaLifecycle_csr IS
9049 SELECT *
9050 FROM JTF_IH_MEDIA_ITEM_LC_SEGS
9051 WHERE milcs_id = p_media_lc_rec.milcs_id
9052 FOR UPDATE;
9053 v_Update_MediaLifecycle_rec c_Update_MediaLifecycle_csr%ROWTYPE;
9054
9055 BEGIN
9056 -- local variables initialization to remove GSCC warnings
9057 --l_type_id :=fnd_api.g_miss_num;
9058 --l_duration :=fnd_api.g_miss_num;
9059 --l_end_date_time :=fnd_api.g_miss_date;
9060 --l_start_date_time :=fnd_api.g_miss_date;
9061 --l_milcs_type_id :=fnd_api.g_miss_num;
9062 l_type_type :=fnd_api.g_miss_char;
9063 l_handler_id :=fnd_api.g_miss_num;
9064 l_resource_id :=fnd_api.g_miss_num;
9065 l_active :=NULL;
9066 l_media_lc_rec :=p_media_lc_rec;
9067
9068 -- Standard start of API savepoint
9069 SAVEPOINT update_medialifecycle_pub;
9070
9071 -- Preprocessing Call
9072 --l_media_lc_rec_hk := p_media_lc_rec;
9073 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_MEDIALIFECYCLE', 'B', 'C') THEN
9074 JTF_IH_PUB_CUHK.update_medialifecycle_pre(
9075 --p_media_lc_rec=>l_media_lc_rec_hk,
9076 p_media_lc_rec=>l_media_lc_rec,
9077 x_data=>l_data,
9078 x_count=>l_count,
9079 x_return_code=>l_return_code);
9080 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
9081 RAISE FND_API.G_EXC_ERROR;
9082 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9083 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9084 END IF;
9085 END IF;
9086
9087 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_MEDIALIFECYCLE', 'B', 'V') THEN
9088 JTF_IH_PUB_VUHK.update_medialifecycle_pre(
9089 --p_media_lc_rec=>l_media_lc_rec_hk,
9090 p_media_lc_rec=>l_media_lc_rec,
9091 x_data=>l_data,
9092 x_count=>l_count,
9093 x_return_code=>l_return_code);
9094 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
9095 RAISE FND_API.G_EXC_ERROR;
9096 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9097 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9098 END IF;
9099 END IF;
9100
9101 -- Standard call to check for call compatibility
9102 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
9103 l_api_name, g_pkg_name) THEN
9104 RAISE fnd_api.g_exc_unexpected_error;
9105 END IF;
9106 -- DBMS_OUTPUT.PUT_LINE('PAST fnd_api.compatible_api_call in JTF_IH_PUB.Update_MediaLifecycle');
9107
9108 -- Initialize message list if p_init_msg_list is set to TRUE
9109 IF fnd_api.to_boolean(p_init_msg_list) THEN
9110 fnd_msg_pub.initialize;
9111 END IF;
9112
9113 -- Initialize API return status to success
9114 x_return_status := fnd_api.g_ret_sts_success;
9115
9116 --
9117 -- Apply business-rule validation to all required and passed parameters
9118 --
9119 -- Validate user and login session IDs
9120 --
9121 IF (p_user_id IS NULL) THEN
9122 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'p_user_id');
9123 RAISE fnd_api.g_exc_error;
9124 ELSE
9125 jtf_ih_core_util_pvt.validate_who_info
9126 ( p_api_name => l_api_name_full,
9127 p_parameter_name_usr => 'p_user_id',
9128 p_parameter_name_log => 'p_login_id',
9129 p_user_id => p_user_id,
9130 p_login_id => p_login_id,
9131 x_return_status => l_return_status );
9132 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
9133 RAISE fnd_api.g_exc_error;
9134 END IF;
9135 END IF;
9136 -- DBMS_OUTPUT.PUT_LINE('PAST jtf_ih_core_util_pvt.validate_who_info in JTF_IH_PUB.Update_MediaLifecycle');
9137
9138 IF (p_media_lc_rec.milcs_id IS NULL) THEN
9139 jtf_ih_core_util_pvt.add_null_parameter_msg(l_api_name_full, 'milcs_id');
9140 RAISE fnd_api.g_exc_error;
9141 ELSE
9142
9143 OPEN c_Update_MediaLifecycle_csr;
9144 FETCH c_Update_MediaLifecycle_csr INTO v_Update_MediaLifecycle_rec;
9145 IF (c_Update_MediaLifecycle_csr%notfound) THEN
9146 x_return_status := fnd_api.g_ret_sts_error;
9147 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name, to_char(p_media_lc_rec.milcs_id),
9148 'media_id');
9149 RETURN;
9150 END IF;
9151 -- DBMS_OUTPUT.PUT_LINE('PAST OPEN c_Update_MediaLifecycle_csr in JTF_IH_PUB.Update_MediaLifecycle');
9152
9153 IF(v_Update_MediaLifecycle_rec.active <> 'N') THEN
9154 --
9155 -- Check if start_date_time requires updating
9156 --
9157 IF ((p_media_lc_rec.start_date_time IS NULL) OR (p_media_lc_rec.start_date_time = fnd_api.g_miss_date)) then
9158 --l_start_date_time := v_Update_MediaLifecycle_rec.start_date_time;
9159 l_media_lc_rec.start_date_time := v_Update_MediaLifecycle_rec.start_date_time;
9160 ELSE
9161 --l_start_date_time := p_media_lc_rec.start_date_time;
9162 l_media_lc_rec.start_date_time := p_media_lc_rec.start_date_time;
9163 END IF;
9164 --
9165 -- Check if end_date_time requires updating
9166 --
9167 IF ((p_media_lc_rec.end_date_time IS NULL) OR (p_media_lc_rec.end_date_time = fnd_api.g_miss_date)) THEN
9168 IF ((v_Update_MediaLifecycle_rec.end_date_time IS NULL) OR (v_Update_MediaLifecycle_rec.end_date_time = fnd_api.g_miss_date)) THEN
9169 --l_end_date_time := sysdate;
9170 l_media_lc_rec.end_date_time := sysdate;
9171 ELSE
9172 --l_end_date_time := v_Update_MediaLifecycle_rec.end_date_time;
9173 l_media_lc_rec.end_date_time := v_Update_MediaLifecycle_rec.end_date_time;
9174 END IF;
9175 ELSE
9176 --l_end_date_time := p_media_lc_rec.end_date_time;
9177 l_media_lc_rec.end_date_time := p_media_lc_rec.end_date_time;
9178 END IF;
9179
9180 Validate_StartEnd_Date
9181 ( p_api_name => l_api_name_full,
9182 --p_start_date_time => l_start_date_time,
9183 p_start_date_time => l_media_lc_rec.start_date_time,
9184 --p_end_date_time => l_end_date_time,
9185 p_end_date_time => l_media_lc_rec.end_date_time,
9186 x_return_status => l_return_status
9187 );
9188 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
9189 --DBMS_OUTPUT.PUT_LINE('Error in Validate_StartEnd_Date of JTF_IH_PUB.Update_MediaLifecycle');
9190 RAISE fnd_api.g_exc_error;
9191 END IF;
9192 --
9193 -- Check if duration requires updating
9194 --
9195 IF ((p_media_lc_rec.duration IS NULL) OR (p_media_lc_rec.duration = fnd_api.g_miss_num)) THEN
9196 --l_duration := v_Update_MediaLifecycle_rec.duration;
9197 l_media_lc_rec.duration := v_Update_MediaLifecycle_rec.duration;
9198 ELSE
9199 --l_duration := ROUND((l_end_date_time - l_start_date_time)*24*60*60);
9200 l_media_lc_rec.duration := ROUND((l_media_lc_rec.end_date_time - l_media_lc_rec.start_date_time)*24*60*60);
9201 END IF;
9202
9203 --
9204 -- Validate start_date_time and end_date_time by calling the utility procedure.
9205 --
9206 --DBMS_OUTPUT.PUT_LINE('PAST Validate_StartEnd_Date in JTF_IH_PUB.Update_MediaLifecycle');
9207 ELSE
9208 -- DBMS_OUTPUT.PUT_LINE('hello active error in JTF_IH_PUB.Update_MediaLifecycle');
9209 jtf_ih_core_util_pvt.add_invalid_argument_msg(l_api_name, to_char(p_media_lc_rec.milcs_id),'Active set to N for medialifecycle');
9210 RAISE fnd_api.g_exc_error;
9211 END IF;
9212 --
9213 -- Check if type_type requies updating
9214 --
9215 -- DBMS_OUTPUT.PUT_LINE('l_type_type1 p_media_lc_rec.type_type := ' || p_media_lc_rec.type_type);
9216 -- DBMS_OUTPUT.PUT_LINE('l_type_type1 v_Update_MediaLifecycle_rec.type_type := ' || v_Update_MediaLifecycle_rec.type_type);
9217 IF (p_media_lc_rec.type_type = fnd_api.g_miss_char) then
9218 -- DBMS_OUTPUT.PUT_LINE('l_type_type2 := ');
9219 -- DBMS_OUTPUT.PUT_LINE('l_type_type2 := ' || v_Update_MediaLifecycle_rec.type_type);
9220 --l_type_type := v_Update_MediaLifecycle_rec.type_type;
9221 l_media_lc_rec.type_type := v_Update_MediaLifecycle_rec.type_type;
9222 ELSE
9223 -- DBMS_OUTPUT.PUT_LINE('l_type_type3' || p_media_lc_rec.type_type);
9224 --l_type_type := p_media_lc_rec.type_type;
9225 l_media_lc_rec.type_type := p_media_lc_rec.type_type;
9226 END IF;
9227 --
9228 -- Check if type_id requires updating
9229 --
9230 -- DBMS_OUTPUT.PUT_LINE('l_type_id');
9231 IF (p_media_lc_rec.type_id = fnd_api.g_miss_num) then
9232 --l_type_id := v_Update_MediaLifecycle_rec.type_id;
9233 l_media_lc_rec.type_id := v_Update_MediaLifecycle_rec.type_id;
9234 ELSE
9235 --l_type_id := p_media_lc_rec.type_id;
9236 l_media_lc_rec.type_id := p_media_lc_rec.type_id;
9237 END IF;
9238 --
9239 -- Check if milcs_type_id requires updating
9240 --
9241 -- DBMS_OUTPUT.PUT_LINE('l_milcs_type_id');
9242 IF (p_media_lc_rec.milcs_type_id = fnd_api.g_miss_num) then
9243 --l_milcs_type_id := v_Update_MediaLifecycle_rec.milcs_type_id;
9244 l_media_lc_rec.milcs_type_id := v_Update_MediaLifecycle_rec.milcs_type_id;
9245
9246 ELSE
9247 --l_milcs_type_id := p_media_lc_rec.milcs_type_id;
9248 l_media_lc_rec.milcs_type_id := p_media_lc_rec.milcs_type_id;
9249 END IF;
9250 --
9251 -- Check if handler_id requires updating
9252 --
9253 -- DBMS_OUTPUT.PUT_LINE('l_handler_id');
9254 IF (p_media_lc_rec.handler_id = fnd_api.g_miss_num) then
9255 --l_handler_id := v_Update_MediaLifecycle_rec.handler_id;
9256 l_media_lc_rec.handler_id := v_Update_MediaLifecycle_rec.handler_id;
9257
9258 ELSE
9259 l_handler_id := p_media_lc_rec.handler_id;
9260 l_media_lc_rec.handler_id := p_media_lc_rec.handler_id;
9261 END IF;
9262 --
9263 -- Check if resource_id requires updating
9264 --
9265 -- DBMS_OUTPUT.PUT_LINE('l_resource_id');
9266 IF (p_media_lc_rec.resource_id = fnd_api.g_miss_num) then
9267 --l_resource_id := v_Update_MediaLifecycle_rec.resource_id;
9268 l_media_lc_rec.resource_id := v_Update_MediaLifecycle_rec.resource_id;
9269
9270 ELSE
9271 --l_resource_id := p_media_lc_rec.resource_id;
9272 l_media_lc_rec.resource_id := p_media_lc_rec.resource_id;
9273 END IF;
9274 -- DBMS_OUTPUT.PUT_LINE('Before UPDATE JTF_IH_MEDIA_ITEM_LC_SEGS in JTF_IH_PUB.Update_MediaLifecycle');
9275 --
9276 -- Check if object_version_number requies updating
9277 --
9278 IF (p_object_version IS NULL) then
9279 l_object_version := v_Update_MediaLifecycle_rec.object_version_number;
9280 ELSE
9281 l_object_version := p_object_version;
9282 END IF;
9283
9284
9285 --
9286 -- Check if bulk_writer_code requies updating
9287 --
9288 IF (p_media_lc_rec.bulk_writer_code IS NULL) then
9289 l_bulk_writer_code := v_Update_MediaLifecycle_rec.bulk_writer_code;
9290 ELSE
9291 l_bulk_writer_code := p_media_lc_rec.bulk_writer_code;
9292 END IF;
9293 --
9294 -- Check if bulk_writer_code requies updating
9295 --
9296 IF (p_media_lc_rec.bulk_batch_type IS NULL) then
9297 l_bulk_batch_type := v_Update_MediaLifecycle_rec.bulk_batch_type;
9298 ELSE
9299 l_bulk_batch_type := p_media_lc_rec.bulk_batch_type;
9300 END IF;
9301
9302 --
9303 -- Check if bulk_batch_id requies updating
9304 --
9305 IF (p_media_lc_rec.bulk_batch_id IS NULL) then
9306 l_bulk_batch_id := v_Update_MediaLifecycle_rec.bulk_batch_id;
9307 ELSE
9308 l_bulk_batch_id := p_media_lc_rec.bulk_batch_id;
9309 END IF;
9310 --
9311 -- Check if bulk_interaction_id requies updating
9312 --
9313 IF (p_media_lc_rec.bulk_interaction_id IS NULL) then
9314 l_bulk_interaction_id := v_Update_MediaLifecycle_rec.bulk_writer_code;
9315 ELSE
9316 l_bulk_interaction_id := p_media_lc_rec.bulk_interaction_id;
9317 END IF;
9318 --
9319 -- Validate all non-missing attributes by calling the utility procedure.
9320 --
9321 Validate_Mlcs_Record
9322 ( p_api_name => l_api_name_full,
9323 p_media_lc_rec => l_media_lc_rec,
9324 p_resp_appl_id => p_resp_appl_id,
9325 p_resp_id => p_resp_id,
9326 x_return_status => l_return_status
9327 );
9328 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
9329 RAISE fnd_api.g_exc_error;
9330 END IF;
9331 -- DBMS_OUTPUT.PUT_LINE('PAST Validate_MediaItem_Record in JTF_IH_PUB.Update_MediaLifecycle');
9332
9333
9334 UPDATE JTF_IH_MEDIA_ITEM_LC_SEGS
9335 SET
9336 handler_id = l_media_lc_rec.handler_id,
9337 resource_id = l_media_lc_rec.resource_id,
9338 duration = decode( l_media_lc_rec.duration, fnd_api.g_miss_num, 0,l_media_lc_rec.duration),
9339 end_date_time = l_media_lc_rec.end_date_time,
9340 start_date_time = l_media_lc_rec.start_date_time,
9341 type_type = decode( l_media_lc_rec.type_type, fnd_api.g_miss_char, null,l_media_lc_rec.type_type),
9342 type_id = decode( l_media_lc_rec.type_id, fnd_api.g_miss_num, null,l_media_lc_rec.type_id),
9343 milcs_type_id = decode( l_media_lc_rec.milcs_type_id, fnd_api.g_miss_num, null,l_media_lc_rec.milcs_type_id),
9344 last_update_date = sysdate,
9345 last_updated_by = p_user_id,
9346 last_update_login = p_login_id,
9347 object_version_number = l_object_version,
9348 bulk_writer_code = decode( l_bulk_writer_code, fnd_api.g_miss_char, null, l_bulk_writer_code),
9349 bulk_batch_type = decode( l_bulk_batch_type, fnd_api.g_miss_char, null, l_bulk_batch_type),
9350 bulk_batch_id = decode( l_bulk_batch_id, fnd_api.g_miss_num, null, l_bulk_batch_id),
9351 bulk_interaction_id = decode( l_bulk_interaction_id, fnd_api.g_miss_num, null, l_bulk_interaction_id)
9352 WHERE CURRENT OF c_Update_MediaLifecycle_csr;
9353 END IF;
9354
9355 -- Post processing Call
9356
9357 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_MEDIALIFECYCLE', 'A', 'V') THEN
9358 JTF_IH_PUB_VUHK.update_medialifecycle_post(
9359 --p_media_lc_rec=>l_media_lc_rec_hk,
9360 p_media_lc_rec=>l_media_lc_rec,
9361 x_data=>l_data,
9362 x_count=>l_count,
9363 x_return_code=>l_return_code);
9364 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
9365 RAISE FND_API.G_EXC_ERROR;
9366 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9367 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9368 END IF;
9369 END IF;
9370
9371 IF JTF_USR_HKS.Ok_TO_EXECUTE('JTF_IH_PUB', 'UPDATE_MEDIALIFECYCLE', 'A', 'C') THEN
9372 JTF_IH_PUB_CUHK.update_medialifecycle_post(
9373 --p_media_lc_rec=>l_media_lc_rec_hk,
9374 p_media_lc_rec=>l_media_lc_rec,
9375 x_data=>l_data,
9376 x_count=>l_count,
9377 x_return_code=>l_return_code);
9378 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
9379 RAISE FND_API.G_EXC_ERROR;
9380 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9381 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9382 END IF;
9383 END IF;
9384
9385
9386
9387 -- Standard check of p_commit
9388 IF fnd_api.to_boolean(p_commit) THEN
9389 COMMIT WORK;
9390 END IF;
9391
9392 -- Standard call to get message count and if count is 1, get message info
9393 fnd_msg_pub.count_and_get( p_count => x_msg_count, p_data => x_msg_data );
9394 EXCEPTION
9395 WHEN fnd_api.g_exc_error THEN
9396 ROLLBACK TO update_medialifecycle_pub;
9397 x_return_status := fnd_api.g_ret_sts_error;
9398 fnd_msg_pub.count_and_get
9399 ( p_count => x_msg_count,
9400 p_data => x_msg_data );
9401 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
9402 WHEN fnd_api.g_exc_unexpected_error THEN
9403 ROLLBACK TO update_medialifecycle_pub;
9404 x_return_status := fnd_api.g_ret_sts_unexp_error;
9405 fnd_msg_pub.count_and_get
9406 ( p_count => x_msg_count,
9407 p_data => x_msg_data );
9408 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
9409 WHEN OTHERS THEN
9410 ROLLBACK TO update_medialifecycle_pub;
9411 x_return_status := fnd_api.g_ret_sts_unexp_error;
9412 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
9413 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
9414 END IF;
9415 fnd_msg_pub.count_and_get
9416 ( p_count => x_msg_count,
9417 p_data => x_msg_data );
9418 x_msg_data := FND_MSG_PUB.Get(p_msg_index => x_msg_count, p_encoded=>'F');
9419 END Update_MediaLifecycle;
9420
9421
9422
9423 FUNCTION INIT_INTERACTION_REC RETURN interaction_rec_type
9424 AS
9425
9426 l_interaction_rec_type interaction_rec_type;
9427
9428 BEGIN
9429
9430 return l_interaction_rec_type;
9431
9432 END INIT_INTERACTION_REC;
9433
9434 FUNCTION INIT_ACTIVITY_REC RETURN activity_rec_type
9435 AS
9436
9437 l_activity_rec_type activity_rec_type;
9438
9439 BEGIN
9440
9441 return l_activity_rec_type;
9442
9443 END INIT_ACTIVITY_REC;
9444
9445 END JTF_IH_PUB;
9446