DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_INTERACTION_PVT

Source


1 PACKAGE BODY CS_Interaction_PVT AS
2 /* $Header: csvcib.pls 115.0 99/07/16 09:05:08 porting s $ */
3 
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'CS_Interaction_PVT';
5 
6 ------------------------------------------------------------------------------
7 --  Procedure	: Create_Interaction
8 --  Type	: Private API
9 --  Usage	: Creates a customer interaction record in the table
10 --		  CS_INTERACTIONS
11 --  Pre-reqs	: None
12 ------------------------------------------------------------------------------
13 
14 PROCEDURE Create_Interaction
15   ( p_api_version		IN	NUMBER,
16     p_init_msg_list		IN	VARCHAR2 DEFAULT fnd_api.g_false,
17     p_commit			IN	VARCHAR2 DEFAULT fnd_api.g_false,
18     p_validation_level		IN	NUMBER   DEFAULT fnd_api.g_valid_level_full,
19     x_return_status		OUT	VARCHAR2,
20     x_msg_count			OUT	NUMBER,
21     x_msg_data			OUT	VARCHAR2,
22     p_resp_appl_id		IN	NUMBER   DEFAULT NULL,
23     p_resp_id			IN	NUMBER   DEFAULT NULL,
24     p_user_id			IN	NUMBER,
25     p_login_id			IN	NUMBER   DEFAULT NULL,
26     p_org_id			IN	NUMBER   DEFAULT NULL,
27     p_customer_id		IN	NUMBER,
28     p_contact_id		IN	NUMBER   DEFAULT NULL,
29     p_contact_lastname		IN	VARCHAR2 DEFAULT NULL,
30     p_contact_firstname		IN	VARCHAR2 DEFAULT NULL,
31     p_phone_area_code		IN	VARCHAR2 DEFAULT NULL,
32     p_phone_number		IN	VARCHAR2 DEFAULT NULL,
33     p_phone_extension		IN	VARCHAR2 DEFAULT NULL,
34     p_fax_area_code		IN	VARCHAR2 DEFAULT NULL,
35     p_fax_number		IN	VARCHAR2 DEFAULT NULL,
36     p_email_address		IN	VARCHAR2 DEFAULT NULL,
37     p_interaction_type_code	IN	VARCHAR2,
38     p_interaction_category_code	IN	VARCHAR2,
39     p_interaction_method_code	IN	VARCHAR2,
40     p_interaction_date		IN	DATE,
41     p_interaction_document_code	IN	VARCHAR2 DEFAULT NULL,
42     p_source_document_id	IN	NUMBER   DEFAULT NULL,
43     p_source_document_name	IN	VARCHAR2 DEFAULT NULL,
44     p_reference_form		IN	VARCHAR2 DEFAULT NULL,
45     p_source_document_status	IN	VARCHAR2 DEFAULT NULL,
46     p_employee_id		IN	NUMBER   DEFAULT NULL,
47     p_public_flag		IN	VARCHAR2 DEFAULT NULL,
48     p_follow_up_action		IN	VARCHAR2 DEFAULT NULL,
49     p_notes			IN	VARCHAR2 DEFAULT NULL,
50     p_parent_interaction_id	IN	NUMBER   DEFAULT NULL,
51     p_attribute1		IN	VARCHAR2 DEFAULT NULL,
52     p_attribute2		IN	VARCHAR2 DEFAULT NULL,
53     p_attribute3		IN	VARCHAR2 DEFAULT NULL,
54     p_attribute4		IN	VARCHAR2 DEFAULT NULL,
55     p_attribute5		IN	VARCHAR2 DEFAULT NULL,
56     p_attribute6		IN	VARCHAR2 DEFAULT NULL,
57     p_attribute7		IN	VARCHAR2 DEFAULT NULL,
58     p_attribute8		IN	VARCHAR2 DEFAULT NULL,
59     p_attribute9		IN	VARCHAR2 DEFAULT NULL,
60     p_attribute10		IN	VARCHAR2 DEFAULT NULL,
61     p_attribute11		IN	VARCHAR2 DEFAULT NULL,
62     p_attribute12		IN	VARCHAR2 DEFAULT NULL,
63     p_attribute13		IN	VARCHAR2 DEFAULT NULL,
64     p_attribute14		IN	VARCHAR2 DEFAULT NULL,
65     p_attribute15		IN	VARCHAR2 DEFAULT NULL,
66     p_attribute_category	IN	VARCHAR2 DEFAULT NULL,
67     x_interaction_id		OUT	NUMBER )
68   IS
69      l_api_name		CONSTANT VARCHAR2(30) := 'Create_Interaction';
70      l_api_version	CONSTANT NUMBER       := 1.0;
71      l_api_name_full	CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
72      l_return_status	VARCHAR2(1);
73 
74      l_org_id			NUMBER   := p_org_id;
75      l_phone_area_code		VARCHAR2(10);
76      l_phone_number		VARCHAR2(25);
77      l_phone_extension		VARCHAR2(20);
78      l_fax_area_code		VARCHAR2(10);
79      l_fax_number		VARCHAR2(25);
80      l_email_address		VARCHAR2(240);
81      l_source_document_id	NUMBER   := p_source_document_id;
82      l_source_document_name	VARCHAR2(80);
83      l_reference_form		VARCHAR2(2000);
84      l_source_document_status	VARCHAR2(80);
85      l_follow_up_action		VARCHAR2(80);
86      l_notes			VARCHAR2(2000);
87      l_interaction_id		NUMBER;
88      l_parent_id		NUMBER   := p_parent_interaction_id;
89 BEGIN
90    -- Standard start of API savepoint
91    SAVEPOINT create_interaction_pvt;
92 
93    -- Standard call to check for call compatibility
94    IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
95 				      l_api_name, g_pkg_name) THEN
96       RAISE fnd_api.g_exc_unexpected_error;
97    END IF;
98 
99    -- Initialize message list if p_init_msg_list is set to TRUE
100    IF fnd_api.to_boolean(p_init_msg_list) THEN
101       fnd_msg_pub.initialize;
102    END IF;
103 
104    -- Initialize API return status to success
105    x_return_status := fnd_api.g_ret_sts_success;
106 
107    -------------------------------------------------------------------------
108    -- Apply business-rule validation to all required and passed parameters
109    -- if validation level is set to FULL. Skip business-rule validation to
110    -- all non-Service parameters if validation level is set to INT.
111    -------------------------------------------------------------------------
112    IF (p_validation_level > fnd_api.g_valid_level_none) THEN
113 
114       IF (p_validation_level > g_valid_level_int) THEN
115 
116 	 -- Validate user and login session IDs
117 	 --------------------------------------
118 	 IF (p_user_id IS NULL) THEN
119 	    cs_core_util.add_null_parameter_msg(l_api_name_full, 'p_user_id');
120 	    RAISE fnd_api.g_exc_error;
121 	  ELSE
122 	    cs_core_util.validate_who_info
123 	      ( p_api_name		=> l_api_name_full,
124 		p_parameter_name_usr	=> 'p_user_id',
125 		p_parameter_name_log	=> 'p_login_id',
126 		p_user_id		=> p_user_id,
127 		p_login_id		=> p_login_id,
128 		x_return_status		=> l_return_status );
129 	    IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
130 	       RAISE fnd_api.g_exc_error;
131 	    END IF;
132 	 END IF;
133 
134 	 -- Validate operating unit ID
135 	 -----------------------------
136 	 IF cs_core_util.is_multiorg_enabled THEN
137 	    IF (p_org_id IS NULL) THEN
138 	       cs_core_util.add_null_parameter_msg(l_api_name_full,
139 						   'p_org_id');
140 	       RAISE fnd_api.g_exc_error;
141 	     ELSE
142 	       cs_core_util.validate_operating_unit
143 		 ( p_api_name		=> l_api_name_full,
144 		   p_parameter_name	=> 'p_org_id',
145 		   p_org_id		=> p_org_id,
146 		   x_return_status	=> l_return_status );
147 	       IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
148 		  RAISE fnd_api.g_exc_error;
149 	       END IF;
150 	    END IF;
151 	  ELSE
152 	    IF (p_org_id IS NOT NULL) THEN
153 	       cs_core_util.add_param_ignored_msg(l_api_name_full, 'p_org_id');
154 	       l_org_id := NULL;
155 	    END IF;
156 	 END IF;
157 
158 	 -- Validate customer ID
159 	 -----------------------
160 	 IF (p_customer_id IS NULL) THEN
161 	    cs_core_util.add_null_parameter_msg(l_api_name_full,
162 						'p_customer_id');
163 	    RAISE fnd_api.g_exc_error;
164 	  ELSE
165 	    cs_core_util.validate_customer
166 	      ( p_api_name		=> l_api_name_full,
167 		p_parameter_name	=> 'p_customer_id',
168 		p_customer_id	=> p_customer_id,
169 		x_return_status	=> l_return_status );
170 	    IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
171 	       RAISE fnd_api.g_exc_error;
172 	    END IF;
173 	 END IF;
174 
175 	 -- Validate contact ID
176 	 ----------------------
177 	 IF (p_contact_id IS NOT NULL) THEN
178 	    cs_core_util.validate_customer_contact
179 	      ( p_api_name		=> l_api_name_full,
180 		p_parameter_name	=> 'p_contact_id',
181 		p_customer_contact_id	=> p_contact_id,
182 		p_customer_id		=> p_customer_id,
183 		p_org_id		=> l_org_id,
184 		x_return_status		=> l_return_status );
185 	    IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
186 	       RAISE fnd_api.g_exc_error;
187 	    END IF;
188 	 END IF;
189 
190 	 -- Validate employee ID
191 	 -----------------------
192 	 IF (p_employee_id IS NOT NULL) THEN
193 	    cs_core_util.validate_person
194 	      ( p_api_name		=> l_api_name_full,
195 		p_parameter_name	=> 'p_employee_id',
196 		p_person_id		=> p_employee_id,
197 		x_return_status		=> l_return_status );
198 	    IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
199 	       RAISE fnd_api.g_exc_error;
200 	    END IF;
201 	 END IF;
202 
203       END IF;	/* p_validation_level > g_valid_level_int */
204 
205       -- Validate interaction type code
206       ---------------------------------
207       IF (p_interaction_type_code IS NULL) THEN
208 	 cs_core_util.add_null_parameter_msg(l_api_name_full,
209 					     'p_interaction_type_code');
210 	 RAISE fnd_api.g_exc_error;
211        ELSE
212 	 cs_core_util.validate_lookup_code
213 	   ( p_api_name		=> l_api_name_full,
214 	     p_parameter_name	=> 'p_interaction_type_code',
215 	     p_lookup_code	=> p_interaction_type_code,
216 	     p_lookup_type	=> 'INTERACTION_TYPE',
217 	     x_return_status	=> l_return_status );
218 	 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
219 	    RAISE fnd_api.g_exc_error;
220 	 END IF;
221       END IF;
222 
223       -- Validate interaction category code
224       -------------------------------------
225       IF (p_interaction_category_code IS NULL) THEN
226 	 cs_core_util.add_null_parameter_msg(l_api_name_full,
227 					     'p_interaction_category_code');
228 	 RAISE fnd_api.g_exc_error;
229        ELSE
230 	 cs_core_util.validate_lookup_code
231 	   ( p_api_name		=> l_api_name_full,
232 	     p_parameter_name	=> 'p_interaction_category_code',
233 	     p_lookup_code	=> p_interaction_category_code,
234 	     p_lookup_type	=> 'INTERACTION_CATEGORY',
235 	     x_return_status	=> l_return_status );
236 	 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
237 	    RAISE fnd_api.g_exc_error;
238 	 END IF;
239       END IF;
240 
241       -- Validate interaction method code
242       -----------------------------------
243       IF (p_interaction_method_code IS NULL) THEN
244 	 cs_core_util.add_null_parameter_msg(l_api_name_full,
245 					     'p_interaction_method_code');
246 	 RAISE fnd_api.g_exc_error;
247        ELSE
248 	 cs_core_util.validate_lookup_code
249 	   ( p_api_name		=> l_api_name_full,
250 	     p_parameter_name	=> 'p_interaction_method_code',
251 	     p_lookup_code	=> p_interaction_method_code,
252 	     p_lookup_type	=> 'INTERACTION_METHOD',
253 	     x_return_status	=> l_return_status );
254 	 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
255 	    RAISE fnd_api.g_exc_error;
256 	 END IF;
257       END IF;
258 
259       -- Validate interaction date
260       ----------------------------
261       IF (p_interaction_date IS NULL) THEN
262 	 cs_core_util.add_null_parameter_msg(l_api_name_full,
263 					     'p_interaction_date');
264 	 RAISE fnd_api.g_exc_error;
265       END IF;
266 
267       -- Validate interaction document code
268       -------------------------------------
269       IF (p_interaction_document_code IS NOT NULL) THEN
270 	 cs_core_util.validate_lookup_code
271 	   ( p_api_name		=> l_api_name_full,
272 	     p_parameter_name	=> 'p_interaction_document_code',
273 	     p_lookup_code	=> p_interaction_document_code,
274 	     p_lookup_type	=> 'INTERACTION_DOCUMENT',
275 	     x_return_status	=> l_return_status );
276 	 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
277 	    RAISE fnd_api.g_exc_error;
278 	 END IF;
279 	 --
280 	 -- Validate document number when document type is not null
281 	 --
282 	 IF (p_source_document_name IS NOT NULL) then
283 	    cs_core_util.trunc_string_length(l_api_name_full, 'p_source_document_name',
284 				p_source_document_name, 80,
285 				l_source_document_name);
286 	    --
287 	    -- Validate document form and status when document number is not
288 	    -- null
289 	    --
290 	    IF (p_reference_form IS NOT NULL) then
291 	       cs_core_util.trunc_string_length(l_api_name_full, 'p_reference_form',
292 				   p_reference_form, 2000, l_reference_form);
293 	    END IF;
294 	    IF (p_source_document_status IS NOT NULL) then
295 	       cs_core_util.trunc_string_length(l_api_name_full, 'p_source_document_status',
296 				   p_source_document_status, 80,
297 				   l_source_document_status);
298 	    END IF;
299 	  ELSE
300 	    --
301 	    -- Ignore document form and status when document number is null
302 	    --
303 	    IF (p_reference_form IS NOT NULL) then
304 	       cs_core_util.add_param_ignored_msg(l_api_name_full,
305 						  'p_reference_form');
306 	    END IF;
307 	    IF (p_source_document_status IS NOT NULL) then
308 	       cs_core_util.add_param_ignored_msg(l_api_name_full,
309 						  'p_source_document_status');
310 	    END IF;
311 	 END IF;
312        ELSE
313 	 --
314 	 -- Ignore document ID, number, form and status when document type is
315 	 -- null
316 	 --
317 	 IF (p_source_document_id IS NOT NULL) THEN
318 	    cs_core_util.add_param_ignored_msg(l_api_name_full,
319 					       'p_source_document_id');
320 	    l_source_document_id := NULL;
321 	 END IF;
322 	 IF (p_source_document_name IS NOT NULL) THEN
323 	    cs_core_util.add_param_ignored_msg(l_api_name_full,
324 					       'p_source_document_name');
325 	 END IF;
326 	 IF (p_reference_form IS NOT NULL) then
327 	    cs_core_util.add_param_ignored_msg(l_api_name_full,
328 					       'p_reference_form');
329 	 END IF;
330 	 IF (p_source_document_status IS NOT NULL) then
331 	    cs_core_util.add_param_ignored_msg(l_api_name_full,
332 					       'p_source_document_status');
333 	 END IF;
334       END IF;	/* p_interaction_document_code IS NOT NULL */
335 
336       -- Validate public flag
337       -----------------------
338       IF (p_public_flag <> 'Y') AND (p_public_flag <> 'N') THEN
339 	 cs_core_util.add_invalid_argument_msg(l_api_name_full, p_public_flag,
340 					       'p_public_flag');
341 	 RAISE fnd_api.g_exc_error;
342       END IF;
343 
344       -- Validate parent interaction ID
345       ---------------------------------
346       IF (p_parent_interaction_id IS NOT NULL) THEN
347 	 cs_interaction_utl.validate_parent_interaction
348 	   ( p_api_name			=> l_api_name_full,
349 	     p_parameter_name		=> 'p_parent_interaction_id',
350 	     p_parent_interaction_id	=> p_parent_interaction_id,
351 	     p_org_id			=> l_org_id,
352 	     x_return_status		=> l_return_status );
353 	 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
354 	    RAISE fnd_api.g_exc_error;
355 	 END IF;
356       END IF;
357 
358       -- Validate descriptive flexfield values
359       ----------------------------------------
360       IF ((p_attribute1 || p_attribute2 || p_attribute3 || p_attribute4 ||
361 	   p_attribute5 || p_attribute6 || p_attribute7 || p_attribute8 ||
362 	   p_attribute9 || p_attribute10 || p_attribute11 || p_attribute12 ||
363 	   p_attribute13 || p_attribute14 || p_attribute15 ||
364 	   p_attribute_category) IS NOT NULL) THEN
365 	 cs_core_util.validate_desc_flex
366 	   ( p_api_name		=> l_api_name_full,
367 	     p_desc_flex_name	=> 'CS_INTERACTIONS',
368 	     p_column_name1	=> 'ATTRIBUTE1',
369 	     p_column_name2	=> 'ATTRIBUTE2',
370 	     p_column_name3	=> 'ATTRIBUTE3',
371 	     p_column_name4	=> 'ATTRIBUTE4',
372 	     p_column_name5	=> 'ATTRIBUTE5',
373 	     p_column_name6	=> 'ATTRIBUTE6',
374 	     p_column_name7	=> 'ATTRIBUTE7',
375 	     p_column_name8	=> 'ATTRIBUTE8',
376 	     p_column_name9	=> 'ATTRIBUTE9',
377 	     p_column_name10	=> 'ATTRIBUTE10',
378 	     p_column_name11	=> 'ATTRIBUTE11',
379 	     p_column_name12	=> 'ATTRIBUTE12',
380 	     p_column_name13	=> 'ATTRIBUTE13',
381 	     p_column_name14	=> 'ATTRIBUTE14',
382 	     p_column_name15	=> 'ATTRIBUTE15',
383 	     p_column_value1	=> p_attribute1,
384 	     p_column_value2	=> p_attribute2,
385 	     p_column_value3	=> p_attribute3,
386 	     p_column_value4	=> p_attribute4,
387 	     p_column_value5	=> p_attribute5,
388 	     p_column_value6	=> p_attribute6,
389 	     p_column_value7	=> p_attribute7,
390 	     p_column_value8	=> p_attribute8,
391 	     p_column_value9	=> p_attribute9,
392 	     p_column_value10	=> p_attribute10,
393 	     p_column_value11	=> p_attribute11,
394 	     p_column_value12	=> p_attribute12,
395 	     p_column_value13	=> p_attribute13,
396 	     p_column_value14	=> p_attribute14,
397 	     p_column_value15	=> p_attribute15,
398 	     p_context_value	=> p_attribute_category,
399 	     p_resp_appl_id	=> p_resp_appl_id,
400 	     p_resp_id		=> p_resp_id,
401 	     x_return_status	=> l_return_status);
402 	 IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
403 	    RAISE fnd_api.g_exc_error;
404 	 END IF;
405       END IF;
406 
407       -- Validate string lengths
408       --------------------------
409       IF (p_phone_area_code IS NOT NULL) then
410 	 cs_core_util.trunc_string_length(l_api_name_full, 'p_phone_area_code',
411 					  p_phone_area_code, 10,
412 					  l_phone_area_code);
413       END IF;
414       IF (p_phone_number IS NOT NULL) then
415 	 cs_core_util.trunc_string_length(l_api_name_full, 'p_phone_number',
416 					  p_phone_number, 25, l_phone_number);
417       END IF;
418       IF (p_phone_extension IS NOT NULL) then
419 	 cs_core_util.trunc_string_length(l_api_name_full, 'p_phone_extension',
420 					  p_phone_extension, 20,
421 					  l_phone_extension);
422       END IF;
423       IF (p_fax_area_code IS NOT NULL) then
424 	 cs_core_util.trunc_string_length(l_api_name_full, 'p_fax_area_code',
425 					  p_fax_area_code, 10,
426 					  l_fax_area_code);
427       END IF;
428       IF (p_fax_number IS NOT NULL) then
429 	 cs_core_util.trunc_string_length(l_api_name_full, 'p_fax_number',
430 					  p_fax_number, 25, l_fax_number);
431       END IF;
432       IF (p_email_address IS NOT NULL) then
433 	 cs_core_util.trunc_string_length(l_api_name_full, 'p_email_address',
434 					  p_email_address, 240,
435 					  l_email_address);
436       END IF;
437       IF (p_follow_up_action IS NOT NULL) then
438 	 cs_core_util.trunc_string_length(l_api_name_full,
439 					  'p_follow_up_action',
440 					  p_follow_up_action, 80,
441 					  l_follow_up_action);
442       END IF;
443       IF (p_notes IS NOT NULL) then
444 	 cs_core_util.trunc_string_length(l_api_name_full, 'p_notes', p_notes,
445 					  2000, l_notes);
446       END IF;
447 
448     ELSE
449 
450       l_phone_area_code		:= p_phone_area_code;
451       l_phone_number		:= p_phone_number;
452       l_phone_extension		:= p_phone_extension;
453       l_fax_area_code		:= p_fax_area_code;
454       l_fax_number		:= p_fax_number;
455       l_email_address		:= p_email_address;
456       l_source_document_name	:= p_source_document_name;
457       l_reference_form		:= p_reference_form;
458       l_source_document_status	:= p_source_document_status;
459       l_follow_up_action	:= p_follow_up_action;
460       l_notes			:= p_notes;
461 
462    END IF;	/* p_validation_level > fnd_api.g_valid_level_none */
463 
464    -------------------------------------------------------------------------
465    -- Perform the database operation. Generate the interaction ID from the
466    -- sequence, then insert the sequence number and passed in attributes
467    -- into the CS_INTERACTIONS table.
468    -------------------------------------------------------------------------
469    SELECT cs_interactions_s.NEXTVAL INTO l_interaction_id FROM dual;
470 
471    --
472    -- Default parent interaction ID if missing
473    --
474    IF (p_parent_interaction_id IS NULL) THEN
475       l_parent_id := l_interaction_id;
476    END IF;
477 
478    INSERT INTO cs_interactions
479      ( interaction_id,
480        created_by,
481        creation_date,
482        last_updated_by,
483        last_update_date,
484        last_update_login,
485        org_id,
486        customer_id,
487        contact_id,
488        contact_lastname,
489        contact_firstname,
490        phone_area_code,
491        phone_number,
492        phone_extension,
493        fax_area_code,
494        fax_number,
495        email_address,
496        interaction_type_code,
497        interaction_category_code,
498        interaction_method_code,
499        interaction_date,
500        interaction_document_code,
501        source_document_id,
502        source_document_name,
503        reference_form,
504        source_document_status,
505        employee_id,
506        public_flag,
507        follow_up_action,
508        notes,
509        parent_interaction_id,
510        attribute1,
511        attribute2,
512        attribute3,
513        attribute4,
514        attribute5,
515        attribute6,
516        attribute7,
517        attribute8,
518        attribute9,
519        attribute10,
520        attribute11,
521        attribute12,
522        attribute13,
523        attribute14,
524        attribute15,
525        attribute_category )
526    VALUES
527      ( l_interaction_id,
528        p_user_id,
529        Sysdate,
530        p_user_id,
531        Sysdate,
532        p_login_id,
533        l_org_id,
534        p_customer_id,
535        p_contact_id,
536        p_contact_lastname,
537        p_contact_firstname,
538        l_phone_area_code,
539        l_phone_number,
540        l_phone_extension,
541        l_fax_area_code,
542        l_fax_number,
543        l_email_address,
544        p_interaction_type_code,
545        p_interaction_category_code,
546        p_interaction_method_code,
547        p_interaction_date,
548        p_interaction_document_code,
549        l_source_document_id,
550        l_source_document_name,
551        l_reference_form,
552        l_source_document_status,
553        p_employee_id,
554        p_public_flag,
555        l_follow_up_action,
556        l_notes,
557        l_parent_id,
558        p_attribute1,
559        p_attribute2,
560        p_attribute3,
561        p_attribute4,
562        p_attribute5,
563        p_attribute6,
564        p_attribute7,
565        p_attribute8,
566        p_attribute9,
567        p_attribute10,
568        p_attribute11,
569        p_attribute12,
570        p_attribute13,
571        p_attribute14,
572        p_attribute15,
573        p_attribute_category );
574 
575    --
576    -- Set OUT value
577    --
578    x_interaction_id := l_interaction_id;
579 
580    -- Standard check of p_commit
581    IF fnd_api.to_boolean(p_commit) THEN
582       COMMIT WORK;
583    END IF;
584 
585    -- Standard call to get message count and if count is 1, get message info
586    fnd_msg_pub.count_and_get
587      ( p_count	=> x_msg_count,
588        p_data	=> x_msg_data );
589 EXCEPTION
590    WHEN fnd_api.g_exc_error THEN
591       ROLLBACK TO create_interaction_pvt;
592       x_return_status := fnd_api.g_ret_sts_error ;
593       fnd_msg_pub.count_and_get
594 	( p_count	=> x_msg_count,
595 	  p_data	=> x_msg_data );
596    WHEN fnd_api.g_exc_unexpected_error THEN
597       ROLLBACK TO create_interaction_pvt;
598       x_return_status := fnd_api.g_ret_sts_unexp_error ;
599       fnd_msg_pub.count_and_get
600 	( p_count	=> x_msg_count,
601 	  p_data	=> x_msg_data );
602    WHEN OTHERS THEN
603       ROLLBACK TO create_interaction_pvt;
604       x_return_status := fnd_api.g_ret_sts_unexp_error ;
605       IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
606 	 fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
607       END IF;
608       fnd_msg_pub.count_and_get
609 	( p_count	=> x_msg_count,
610 	  p_data	=> x_msg_data );
611 END Create_Interaction;
612 
613 END CS_Interaction_PVT;