DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSI_EXT_CONTACTS_PKG

Source


1 PACKAGE BODY CSI_Ext_Contacts_PKG AS
2 /*$Header: CSIEXCTB.pls 120.1 2005/06/28 15:42:13 rmamidip noship $*/
3 -- Defining Global Parameters.
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'CSI_EXT_CONTACTS_PKG';
5  FUNCTION Get_Txn_Type
6  RETURN NUMBER IS
7  l_Txn_Type_Id NUMBER;
8  CURSOR Txn_Cur IS
9  SELECT Transaction_Type_Id
10  FROM   CSI_Txn_Types
11  WHERE  Source_Transaction_Type = 'IB_UI';
12  BEGIN
13  OPEN Txn_Cur;
14  FETCH Txn_Cur INTO l_Txn_Type_Id;
15  IF NOT Txn_Cur%FOUND THEN
16  l_Txn_Type_Id := NULL;
17  END IF;
18  CLOSE Txn_Cur;
19  RETURN l_Txn_Type_Id;
20  END Get_Txn_Type;
21 -- Procedure to convert Contacts parameters to RecordType
22 PROCEDURE Convert_Contact_Param_To_Rec(
23 	P_customer_product_id		IN NUMBER	:= FND_API.G_MISS_NUM,
24         P_CS_CONTACT_ID                 IN NUMBER	:= FND_API.G_MISS_NUM,
25 	P_contact_category		IN VARCHAR2	:= FND_API.G_MISS_CHAR,
26 	P_contact_type			IN VARCHAR2	:= FND_API.G_MISS_CHAR,
27 	P_contact_id			IN NUMBER	:= FND_API.G_MISS_NUM,
28 	P_primary_flag			IN VARCHAR2 := FND_API.G_MISS_CHAR,
29 	P_preferred_flag		IN VARCHAR2 := FND_API.G_MISS_CHAR,
30 	P_svc_provider_flag		IN VARCHAR2 := FND_API.G_MISS_CHAR,
31 	P_start_date_active		IN DATE	:= FND_API.G_MISS_DATE,
32 	P_end_date_active		IN DATE	:= FND_API.G_MISS_DATE,
33 	P_context			IN VARCHAR2 := FND_API.G_MISS_CHAR,
34 	P_attribute1			IN VARCHAR2 := FND_API.G_MISS_CHAR,
35 	P_attribute2			IN VARCHAR2 := FND_API.G_MISS_CHAR,
36 	P_attribute3			IN VARCHAR2 := FND_API.G_MISS_CHAR,
37 	P_attribute4			IN VARCHAR2 := FND_API.G_MISS_CHAR,
38 	P_attribute5			IN VARCHAR2 := FND_API.G_MISS_CHAR,
39 	P_attribute6			IN VARCHAR2 := FND_API.G_MISS_CHAR,
40 	P_attribute7			IN VARCHAR2 := FND_API.G_MISS_CHAR,
41 	P_attribute8			IN VARCHAR2 := FND_API.G_MISS_CHAR,
42 	P_attribute9			IN VARCHAR2 := FND_API.G_MISS_CHAR,
43 	P_attribute10			IN VARCHAR2 := FND_API.G_MISS_CHAR,
44 	P_attribute11			IN VARCHAR2 := FND_API.G_MISS_CHAR,
45 	P_attribute12			IN VARCHAR2 := FND_API.G_MISS_CHAR,
46 	P_attribute13			IN VARCHAR2 := FND_API.G_MISS_CHAR,
47 	P_attribute14			IN VARCHAR2 := FND_API.G_MISS_CHAR,
48 	P_attribute15			IN VARCHAR2 := FND_API.G_MISS_CHAR,
49     X_party_tbl             OUT NOCOPY csi_datastructures_pub.party_tbl) IS
50     CURSOR CONTACT_IP(P_INSTANCE_ID NUMBER ) IS
51      select instance_party_id
52      from csi_i_parties
53      where instance_id=P_INSTANCE_ID
54      and relationship_type_code='OWNER' ;
55 
56 BEGIN
57      FOR contact_ip_rec IN contact_ip(p_customer_product_id)
58      LOOP
59      x_party_tbl(1).contact_ip_id:=contact_ip_rec.instance_party_id;
60      END LOOP;
61 
62      X_party_tbl(1).instance_id      := NVL(P_customer_product_Id,FND_API.G_MISS_NUM);
63      X_party_tbl(1).party_source_table := NVL(P_Contact_Category,FND_API.G_MISS_CHAR);
64      X_party_tbl(1).party_id         := NVL(P_Contact_Id,FND_API.G_MISS_NUM);
65      X_party_tbl(1).relationship_type_code := NVL(P_Contact_Type,FND_API.G_MISS_CHAR);
66      X_party_tbl(1).contact_flag    := 'Y';
67      X_party_tbl(1).Instance_Party_Id := NVL(P_cs_Contact_Id,FND_API.G_MISS_NUM);
68      X_party_tbl(1).active_start_date  :=NVL(P_Start_Date_Active,FND_API.G_MISS_DATE);
69      X_Party_tbl(1).primary_flag := NVL(P_primary_flag,FND_API.G_MISS_CHAR);
70      X_Party_tbl(1).preferred_flag := NVL(P_preferred_flag,FND_API.G_MISS_CHAR);
71      X_Party_tbl(1).context  := NVL(P_context,FND_API.G_MISS_CHAR);
72      X_Party_tbl(1).Attribute1  := NVL(P_Attribute1,FND_API.G_MISS_CHAR);
73      X_Party_tbl(1).Attribute2  := NVL(P_Attribute2,FND_API.G_MISS_CHAR);
74      X_Party_tbl(1).Attribute3  := NVL(P_Attribute3,FND_API.G_MISS_CHAR);
75      X_Party_tbl(1).Attribute4  := NVL(P_Attribute4,FND_API.G_MISS_CHAR);
76      X_Party_tbl(1).Attribute5  := NVL(P_Attribute5,FND_API.G_MISS_CHAR);
77      X_Party_tbl(1).Attribute6  := NVL(P_Attribute6,FND_API.G_MISS_CHAR);
78      X_Party_tbl(1).Attribute7  := NVL(P_Attribute7,FND_API.G_MISS_CHAR);
79      X_Party_tbl(1).Attribute8  := NVL(P_Attribute8,FND_API.G_MISS_CHAR);
80      X_Party_tbl(1).Attribute9  := NVL(P_Attribute9,FND_API.G_MISS_CHAR);
81      X_Party_tbl(1).Attribute10  := NVL(P_Attribute10,FND_API.G_MISS_CHAR);
82      X_Party_tbl(1).Attribute11  := NVL(P_Attribute11,FND_API.G_MISS_CHAR);
83      X_Party_tbl(1).Attribute12  := NVL(P_Attribute12,FND_API.G_MISS_CHAR);
84      X_Party_tbl(1).Attribute13  := NVL(P_Attribute13,FND_API.G_MISS_CHAR);
85      X_Party_tbl(1).Attribute14  := NVL(P_Attribute14,FND_API.G_MISS_CHAR);
86      X_Party_tbl(1).Attribute15  := NVL(P_Attribute15,FND_API.G_MISS_CHAR);
87 END Convert_Contact_Param_To_Rec;
88 
89 PROCEDURE Insert_Row(
90 	p_customer_product_id		IN NUMBER,
91 	p_contact_category              IN VARCHAR2,
92 	p_contact_type			IN VARCHAR2,
93 	p_contact_id			IN NUMBER,
94 	p_primary_flag			IN VARCHAR2,
95 	p_preferred_flag		IN VARCHAR2,
96 	p_svc_provider_flag		IN VARCHAR2,
97 	p_start_date_active		IN DATE,
98 	p_end_date_active		IN DATE,
99 	p_context			IN VARCHAR2,
100 	p_attribute1			IN VARCHAR2,
101 	p_attribute2			IN VARCHAR2,
102 	p_attribute3			IN VARCHAR2,
103 	p_attribute4			IN VARCHAR2,
104 	p_attribute5			IN VARCHAR2,
105 	p_attribute6			IN VARCHAR2,
106 	p_attribute7			IN VARCHAR2,
107 	p_attribute8			IN VARCHAR2,
108 	p_attribute9			IN VARCHAR2,
109 	p_attribute10			IN VARCHAR2,
110 	p_attribute11			IN VARCHAR2,
111 	p_attribute12			IN VARCHAR2,
112 	p_attribute13			IN VARCHAR2,
113 	p_attribute14			IN VARCHAR2,
114 	p_attribute15			IN VARCHAR2,
115 	x_cs_contact_id		        OUT NOCOPY NUMBER,
116 	x_return_status		        OUT NOCOPY VARCHAR,
117 	x_msg_count		 OUT NOCOPY NUMBER,
118 	x_msg_data		 OUT NOCOPY VARCHAR,
119 	x_object_version_number	        OUT NOCOPY NUMBER
120 	)
121 IS
122       l_Party_Tbl  CSI_DATASTRUCTURES_PUB.Party_Tbl;
123       l_Party_Account_Tbl CSI_DATASTRUCTURES_PUB.Party_Account_Tbl;
124       l_Txn_Rec CSI_DATASTRUCTURES_PUB.Transaction_Rec;
125       l_Api_Version NUMBER DEFAULT 1;
126       l_api_name	CONSTANT	VARCHAR2(30)	:= 'Insert_Row';
127       l_Commit VARCHAR2(1) := FND_API.G_FALSE;
128       l_Init_Msg_List VARCHAR2(1) := FND_API.G_FALSE;
129       l_Validation_Level NUMBER := FND_API.G_VALID_LEVEL_FULL;
130       l_Return_Status VARCHAR2(1);
131       l_Msg_Index  NUMBER;
132 
133       -- added as part of fix for Bug 2733128
134       l_chg_instance_rec          csi_datastructures_pub.instance_rec;
135       l_chg_pricing_attribs_tbl   csi_datastructures_pub.pricing_attribs_tbl;
136       l_chg_ext_attrib_val_tbl    csi_datastructures_pub.extend_attrib_values_tbl;
137       l_chg_org_units_tbl         csi_datastructures_pub.organization_units_tbl;
138       l_chg_inst_asset_tbl        csi_datastructures_pub.instance_asset_tbl;
139       l_chg_inst_id_lst           csi_datastructures_pub.id_tbl;
140 
141 BEGIN
142     Convert_Contact_Param_To_Rec(
143 	P_customer_product_id		,
144 	NULL                            ,
145 	P_contact_category		,
146 	P_contact_type			,
147 	P_contact_id			,
148 	P_primary_flag			,
149 	P_preferred_flag		,
150 	P_svc_provider_flag		,
151 	P_start_date_active		,
152 	P_end_date_active		,
153 	P_context				,
154 	P_attribute1			,
155 	P_attribute2			,
156 	P_attribute3			,
157 	P_attribute4			,
158 	P_attribute5			,
159 	P_attribute6			,
160 	P_attribute7			,
161 	P_attribute8			,
162 	P_attribute9			,
163 	P_attribute10			,
164 	P_attribute11			,
165 	P_attribute12			,
166 	P_attribute13			,
167 	P_attribute14			,
168 	P_attribute15			,
169     l_party_tbl            );
170     l_Party_Tbl(1).object_version_number:= 1;
171      l_Txn_Rec.TRANSACTION_DATE := SYSDATE;
172      l_Txn_Rec.SOURCE_TRANSACTION_DATE:= SYSDATE;
173      l_Txn_Rec.TRANSACTION_TYPE_ID  := Get_Txn_Type;
174      l_Txn_Rec.Object_Version_Number := 1;
175 
176 /*
177      CSI_PARTY_RELATIONSHIPS_PUB.Create_Inst_Party_Relationship
178      (P_API_Version => l_Api_Version,
179       P_Commit             => l_Commit,
180       P_Init_Msg_List      => l_Init_Msg_List,
181       P_Validation_Level   => l_Validation_Level,
182       P_Party_Tbl          => l_Party_Tbl,
183       P_Party_Account_Tbl  => l_Party_Account_Tbl,
184       P_Txn_Rec            => l_Txn_Rec,
185       X_Return_Status      => x_Return_Status,
186       X_Msg_Count          => x_Msg_Count,
187       X_Msg_Data           => x_Msg_Data);
188 */
189 
190    csi_item_instance_pub.update_item_instance(
191       p_api_version           => 1.0,
192       p_commit                => fnd_api.g_false,
193       p_init_msg_list         => fnd_api.g_true,
194       p_validation_level      => fnd_api.g_valid_level_full,
195       p_instance_rec          => l_chg_instance_rec,
196       p_ext_attrib_values_tbl => l_chg_ext_attrib_val_tbl,
197       p_party_tbl             => l_Party_Tbl,
198       p_account_tbl           => l_Party_Account_Tbl,
199       p_pricing_attrib_tbl    => l_chg_pricing_attribs_tbl,
200       p_org_assignments_tbl   => l_chg_org_units_tbl,
201       p_txn_rec               => l_Txn_Rec,
202       p_asset_assignment_tbl  => l_chg_inst_asset_tbl,
203       x_instance_id_lst       => l_chg_inst_id_lst,
204       x_return_status         => x_Return_Status,
205       x_msg_count             => x_Msg_Count,
206       x_msg_data              => x_Msg_Data);
207 
208 IF NOT x_Return_Status = FND_API.G_Ret_Sts_Success
209    THEN
210  	l_msg_index := 1;
211 	 WHILE x_msg_count > 0
212          LOOP
213 		x_Msg_Data:= x_Msg_Data||FND_MSG_PUB.GET(l_msg_index,
214 			     		                   FND_API.G_FALSE);
215 		l_msg_index := l_msg_index + 1;
216          x_Msg_Count := x_Msg_Count - 1;
217   	 END LOOP;
218    RAISE fnd_api.g_Exc_Error;
219   END IF;
220   x_Cs_Contact_Id := l_Party_Tbl(1).Instance_Party_Id;
221 EXCEPTION
222 	WHEN FND_API.G_EXC_ERROR THEN
223 		x_return_status := FND_API.G_RET_STS_ERROR ;
224 		FND_MSG_PUB.Count_And_Get
225 			(p_count => x_msg_count ,
226 			 p_data => x_msg_data
227 			);
228 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
229 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
230 		FND_MSG_PUB.Count_And_Get
231 		(p_count => x_msg_count ,
232 		 p_data => x_msg_data
233 		);
234 	WHEN OTHERS THEN
235 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
236 		IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
237 			FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME ,l_api_name);
238 		END IF;
239 		FND_MSG_PUB.Count_And_Get
240 			(p_count => x_msg_count ,
241 			 p_data => x_msg_data
242 			);
243 
244 END Insert_Row;
245 
246 PROCEDURE Delete_Row(
247 	x_return_status OUT NOCOPY 	VARCHAR,
248 	x_msg_count	 OUT NOCOPY NUMBER,
249 	x_msg_data	 OUT NOCOPY VARCHAR,
250 	p_cs_contact_id 	IN	NUMBER,
251         P_Object_Version_Number IN      NUMBER)
252 IS
253       l_Party_Tbl  CSI_DATASTRUCTURES_PUB.Party_Tbl;
254       l_Party_Account_Tbl CSI_DATASTRUCTURES_PUB.Party_Account_Tbl;
255       l_Txn_Rec CSI_DATASTRUCTURES_PUB.Transaction_Rec;
256       l_Api_Version NUMBER DEFAULT 1;
257       l_Api_Name VARCHAR2(30) := 'Delete_Row';
258       l_Commit VARCHAR2(1) := FND_API.G_FALSE;
259       l_Init_Msg_List VARCHAR2(1) := FND_API.G_FALSE;
260       l_Validation_Level NUMBER := FND_API.G_VALID_LEVEL_FULL;
261       l_Msg_Index  NUMBER;
262 begin
263      l_Party_Tbl(1).Instance_Party_Id  := p_CS_Contact_ID;
264      l_Party_Tbl(1).Object_Version_Number  := p_Object_Version_Number;
265      l_Txn_Rec.TRANSACTION_DATE := SYSDATE;
266      l_Txn_Rec.SOURCE_TRANSACTION_DATE:= SYSDATE;
267      l_Txn_Rec.TRANSACTION_TYPE_ID  := Get_Txn_Type;
268 
269 CSI_PARTY_RELATIONSHIPS_PUB.expire_inst_party_relationship
270  (    p_api_version                 =>     l_Api_Version,
271       p_commit                      =>     l_Commit,
272       p_init_msg_list               =>     l_Init_Msg_List,
273       p_validation_level            =>     l_Validation_Level,
274       p_instance_party_tbl          =>     l_party_tbl,
275       p_txn_rec                     =>     l_txn_rec,
276       x_return_status               =>     x_Return_Status,
277       x_msg_count                   =>     x_Msg_Count,
278       x_msg_data                    =>     x_Msg_Data );
279 
280    IF NOT x_Return_Status = FND_API.G_Ret_Sts_Success
281    THEN
282  	l_msg_index := 1;
283 	 WHILE x_msg_count > 0
284          LOOP
285 		x_Msg_Data := x_Msg_Data||FND_MSG_PUB.GET(l_msg_index,
286 			     		                   FND_API.G_FALSE);
287 		l_msg_index := l_msg_index + 1;
288          x_Msg_Count := x_Msg_Count - 1;
289   	 END LOOP;
290    RAISE fnd_api.g_Exc_Error;
291   END IF;
292 
293 EXCEPTION
294 	WHEN FND_API.G_EXC_ERROR THEN
295 		x_return_status := FND_API.G_RET_STS_ERROR ;
296 		FND_MSG_PUB.Count_And_Get
297 			(p_count => x_msg_count ,
298 			 p_data => x_msg_data
299 			);
300 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
301 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
302 		FND_MSG_PUB.Count_And_Get
303 		(p_count => x_msg_count ,
304 		 p_data => x_msg_data
305 		);
306 	WHEN OTHERS THEN
307 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
308 		IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
309 			FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME ,l_api_name);
310 		END IF;
311 		FND_MSG_PUB.Count_And_Get
312 			(p_count => x_msg_count ,
313 			 p_data => x_msg_data
314 			);
315  END DELETE_ROW;
316 PROCEDURE Lock_Row(
317 	p_cs_contact_id		IN NUMBER,
318 	p_customer_product_id	IN NUMBER,
319 	p_customer_id	         IN NUMBER,
320 	p_contact_category       IN VARCHAR2,
321 	p_contact_type			IN VARCHAR2,
322 	p_contact_id			IN NUMBER,
323 	p_primary_flag			IN VARCHAR2,
324 	p_preferred_flag		IN VARCHAR2,
325 	p_svc_provider_flag		IN VARCHAR2,
326 	p_start_date_active		IN DATE,
327 	p_end_date_active		IN DATE,
328 	p_context			IN VARCHAR2,
329 	p_attribute1			IN VARCHAR2,
330 	p_attribute2			IN VARCHAR2,
331 	p_attribute3			IN VARCHAR2,
332 	p_attribute4			IN VARCHAR2,
333 	p_attribute5			IN VARCHAR2,
334 	p_attribute6			IN VARCHAR2,
335 	p_attribute7			IN VARCHAR2,
336 	p_attribute8			IN VARCHAR2,
337 	p_attribute9			IN VARCHAR2,
338 	p_attribute10			IN VARCHAR2,
339 	p_attribute11			IN VARCHAR2,
340 	p_attribute12			IN VARCHAR2,
341 	p_attribute13			IN VARCHAR2,
342 	p_attribute14			IN VARCHAR2,
343 	p_attribute15			IN VARCHAR2,
344 	p_object_version_number	IN NUMBER
345 	)
346 IS
347 	CURSOR C IS
348 		SELECT *
349 		FROM csi_i_parties
350 		WHERE instance_party_id  = p_cs_contact_id
351 		FOR UPDATE of instance_party_id NOWAIT;
352 
353 	FetchC	C%ROWTYPE;
354 BEGIN
355 	open C;
356 	FETCH C into FetchC;
357 	If (C%NOTFOUND) then
358 		CLOSE C;
359 		FND_MESSAGE.SET_NAME('CSI','FORM_RECORD_DELETED');
360 	End If;
361 	close C;
362 
363 	If (
364 			(FetchC.Instance_party_id = p_cs_contact_id	)
365 		AND	(
366 				(FetchC.Instance_id = p_customer_product_id)
367 			OR	((FetchC.Instance_id is NULL) AND
368 				(p_customer_product_id is NULL)))
369 		AND	(
370 				(FetchC.Relationship_type_code = p_contact_type)
371 			OR	((FetchC.Relationship_type_code is NULL) AND
372 				(p_contact_type is NULL)))
373 		AND	(
374 				(FetchC.Party_id = p_contact_id)
375 			OR	((FetchC.Party_id is NULL) AND
376 				(p_contact_id is NULL)))
377 		AND	(
378 				(FetchC.primary_flag = p_primary_flag)
379 			OR	((FetchC.primary_flag is NULL) AND
380 				(p_primary_flag is NULL)))
381 		AND	(
382 				(FetchC.preferred_flag = p_preferred_flag)
383 			OR	((FetchC.preferred_flag is NULL) AND
384 				(p_preferred_flag is NULL)))
385 		AND	(
386 				(FetchC.Party_Source_Table = p_Contact_category)
387 			OR	((FetchC.Party_Source_Table is NULL) AND
388 				(p_Contact_category is NULL)))
389 		AND	(
390 				(FetchC.Active_start_date = p_start_date_active)
391 			OR	((FetchC.Active_start_date is NULL) AND
392 				(p_start_date_active is NULL)))
393 		AND	(
394 				(FetchC.Active_end_date = p_end_date_active)
395 			OR	((FetchC.Active_end_date is NULL) AND
396 				(p_end_date_active is NULL)))
397 		AND	(
398 				(FetchC.attribute1 = p_attribute1)
399 			OR	((FetchC.attribute1 is NULL) AND
400 				(p_attribute1 is NULL)))
401 		AND	(
402 				(FetchC.attribute2 = p_attribute2)
403 			OR	((FetchC.attribute2 is NULL) AND
404 				(p_attribute2 is NULL)))
405 		AND	(
406 				(FetchC.attribute3 = p_attribute3)
407 			OR	((FetchC.attribute3 is NULL) AND
408 				(p_attribute3 is NULL)))
409 		AND	(
410 				(FetchC.attribute4 = p_attribute4)
411 			OR	((FetchC.attribute4 is NULL) AND
412 				(p_attribute4 is NULL)))
413 		AND	(
414 				(FetchC.attribute5 = p_attribute5)
415 			OR	((FetchC.attribute5 is NULL) AND
416 				(p_attribute5 is NULL)))
417 		AND	(
418 				(FetchC.attribute6 = p_attribute6)
419 			OR	((FetchC.attribute6 is NULL) AND
420 				(p_attribute6 is NULL)))
421 		AND	(
422 				(FetchC.attribute7 = p_attribute7)
423 			OR	((FetchC.attribute7 is NULL) AND
424 				(p_attribute7 is NULL)))
425 		AND	(
426 				(FetchC.attribute8 = p_attribute8)
427 			OR	((FetchC.attribute8 is NULL) AND
428 				(p_attribute8 is NULL)))
429 		AND	(
430 				(FetchC.attribute9 = p_attribute9)
431 			OR	((FetchC.attribute9 is NULL) AND
432 				(p_attribute9 is NULL)))
433 		AND	(
434 				(FetchC.attribute10 = p_attribute10)
435 			OR	((FetchC.attribute10 is NULL) AND
436 				(p_attribute10 is NULL)))
437 		AND	(
438 				(FetchC.attribute11 = p_attribute11)
439 			OR	((FetchC.attribute11 is NULL) AND
440 				(p_attribute11 is NULL)))
441 		AND	(
442 				(FetchC.attribute12 = p_attribute12)
443 			OR	((FetchC.attribute12 is NULL) AND
444 				(p_attribute12 is NULL)))
445 		AND	(
446 				(FetchC.attribute13 = p_attribute13)
447 			OR	((FetchC.attribute13 is NULL) AND
448 				(p_attribute13 is NULL)))
449 		AND	(
450 				(FetchC.attribute14 = p_attribute14)
451 			OR	((FetchC.attribute14 is NULL) AND
452 				(p_attribute14 is NULL)))
453 		AND	(
454 				(FetchC.attribute15 = p_attribute15)
455 			OR	((FetchC.attribute15 is NULL) AND
456 				(p_attribute15 is NULL)))
457 		AND	(
458 				(FetchC.context = p_context)
459 			OR	((FetchC.context is NULL) AND
460 				(p_context is NULL)))
461 		AND	(
462 				(FetchC.object_version_number = p_object_version_number)
463 			OR	((FetchC.object_version_number is NULL) AND
464 				(p_object_version_number is NULL)))
465 	  ) then
466              RETURN;
467 	else
468 		FND_MESSAGE.SET_NAME('FND','Form_Record_Changed');
469 	end if;
470 END Lock_Row;
471 
472 PROCEDURE Update_Row(
473 	p_cs_contact_id		IN NUMBER,
474 	p_customer_product_id		IN NUMBER,
475 	p_contact_category  	IN VARCHAR2,
476 	p_contact_type			IN VARCHAR2,
477 	p_contact_id			IN NUMBER,
478 	p_primary_flag			IN VARCHAR2,
479 	p_preferred_flag		IN VARCHAR2,
480 	p_svc_provider_flag		IN VARCHAR2,
481 	p_start_date_active		IN DATE,
482 	p_end_date_active		IN DATE,
483 	p_context			IN VARCHAR2,
484 	p_attribute1			IN VARCHAR2,
485 	p_attribute2			IN VARCHAR2,
486 	p_attribute3			IN VARCHAR2,
487 	p_attribute4			IN VARCHAR2,
488 	p_attribute5			IN VARCHAR2,
489 	p_attribute6			IN VARCHAR2,
490 	p_attribute7			IN VARCHAR2,
491 	p_attribute8			IN VARCHAR2,
492 	p_attribute9			IN VARCHAR2,
493 	p_attribute10			IN VARCHAR2,
494 	p_attribute11			IN VARCHAR2,
495 	p_attribute12			IN VARCHAR2,
496 	p_attribute13			IN VARCHAR2,
497 	p_attribute14			IN VARCHAR2,
498 	p_attribute15			IN VARCHAR2,
499 	p_object_version_number	IN NUMBER,
500 	x_return_status	 OUT NOCOPY VARCHAR,
501 	x_msg_count		 OUT NOCOPY NUMBER,
502 	x_msg_data		 OUT NOCOPY VARCHAR,
503 	x_object_version_number OUT NOCOPY NUMBER
504 	)
505 IS
506 	l_api_name	CONSTANT		VARCHAR2(30)	:= 'Update_Contact';
507 	l_api_version	CONSTANT		NUMBER		:= 1.0;
508     l_Commit VARCHAR2(1) := FND_API.G_FALSE;
509     l_Init_Msg_List VARCHAR2(1) := FND_API.G_FALSE;
510     l_Validation_Level NUMBER := FND_API.G_VALID_LEVEL_FULL;
511     l_Msg_Index     NUMBER;
512     l_Party_Tbl     csi_datastructures_pub.party_tbl;
513     l_Account_Tbl   csi_datastructures_pub.party_account_tbl;
514     l_Txn_Rec       csi_datastructures_pub.Transaction_Rec;
515 
516     -- added as part of fix for Bug 2733128
517     l_chg_instance_rec          csi_datastructures_pub.instance_rec;
518     l_chg_pricing_attribs_tbl   csi_datastructures_pub.pricing_attribs_tbl;
519     l_chg_ext_attrib_val_tbl    csi_datastructures_pub.extend_attrib_values_tbl;
520     l_chg_org_units_tbl         csi_datastructures_pub.organization_units_tbl;
521     l_chg_inst_asset_tbl        csi_datastructures_pub.instance_asset_tbl;
522     l_chg_inst_id_lst           csi_datastructures_pub.id_tbl;
523 BEGIN
524 -- Converting Single Column Attributes to Record Type.
525 	Convert_Contact_Param_To_Rec(
526 	P_cs_Contact_id	                => p_cs_contact_id,
527 	P_contact_category		=> p_contact_category,
528 	P_customer_product_id		=> p_customer_product_id,
529 	P_contact_id			=> p_contact_id,
530 	P_contact_type			=> p_contact_type,
531 	P_primary_flag			=> p_primary_flag,
532 	P_preferred_flag		=> p_preferred_flag,
533 	P_svc_provider_flag		=> p_svc_provider_flag,
534 	P_start_date_active		=> p_start_date_active,
535 	P_end_date_active		=> p_end_date_active,
536 	P_context			=> p_context,
537 	P_attribute1			=> p_attribute1,
538 	P_attribute2			=> p_attribute2,
539 	P_attribute3			=> p_attribute3,
540 	P_attribute4			=> p_attribute4,
541 	P_attribute5			=> p_attribute5,
542 	P_attribute6			=> p_attribute6,
543 	P_attribute7			=> p_attribute7,
544 	P_attribute8			=> p_attribute8,
545 	P_attribute9			=> p_attribute9,
546 	P_attribute10			=> p_attribute10,
547 	P_attribute11			=> p_attribute11,
548 	P_attribute12			=> p_attribute12,
549 	P_attribute13			=> p_attribute13,
550 	P_attribute14			=> p_attribute14,
551 	P_attribute15			=> p_attribute15,
552     X_party_tbl             => l_party_tbl
553     );
554  l_Party_Tbl(1).Instance_Party_Id := P_CS_CONTACT_ID;
555  l_Party_Tbl(1).Active_Start_Date := NULL;
556  l_Party_Tbl(1).Object_Version_Number := P_Object_Version_Number;
557  l_Txn_Rec.Transaction_Type_Id := Get_Txn_Type;
558  l_Txn_Rec.Transaction_Date := SYSDATE;
559  l_Txn_Rec.Source_Transaction_Date := SYSDATE;
560  l_Txn_Rec.Object_Version_Number := 1;
561 
562 /*
563 CSI_PARTY_RELATIONSHIPS_PUB.update_inst_party_relationship
564  (    p_api_version                 =>     l_Api_Version,
565       p_commit                      =>     l_Commit,
566       p_init_msg_list               =>     l_Init_Msg_List,
567       p_validation_level            =>     l_Validation_Level,
568       p_Party_Tbl                   =>     l_party_tbl,
569       p_party_account_tbl           =>     l_account_tbl,
570       p_txn_rec                     =>     l_txn_rec,
571       x_return_status               =>     x_Return_Status,
572       x_msg_count                   =>     x_Msg_Count,
573       x_msg_data                    =>     x_Msg_Data );
574 */
575 
576     csi_item_instance_pub.update_item_instance(
577       p_api_version           => 1.0,
578       p_commit                => fnd_api.g_false,
579       p_init_msg_list         => fnd_api.g_true,
580       p_validation_level      => fnd_api.g_valid_level_full,
581       p_instance_rec          => l_chg_instance_rec,
582       p_ext_attrib_values_tbl => l_chg_ext_attrib_val_tbl,
583       p_party_tbl             => l_party_tbl,
584       p_account_tbl           => l_account_tbl,
585       p_pricing_attrib_tbl    => l_chg_pricing_attribs_tbl,
586       p_org_assignments_tbl   => l_chg_org_units_tbl,
587       p_txn_rec               => l_txn_rec,
588       p_asset_assignment_tbl  => l_chg_inst_asset_tbl,
589       x_instance_id_lst       => l_chg_inst_id_lst,
590       x_return_status         => x_return_status,
591       x_msg_count             => x_msg_count,
592       x_msg_data              => x_msg_data);
593 
594    IF NOT x_Return_Status = FND_API.G_Ret_Sts_Success
595    THEN
596  	l_msg_index := 1;
597 	 WHILE x_msg_count > 0
598          LOOP
599 		x_Msg_Data := x_Msg_Data||FND_MSG_PUB.GET(l_msg_index,
600 			     		                   FND_API.G_FALSE);
601 		l_msg_index := l_msg_index + 1;
602          x_Msg_Count := x_Msg_Count - 1;
603   	 END LOOP;
604    RAISE fnd_api.g_Exc_Error;
605   END IF;
606 
607 EXCEPTION
608 	WHEN FND_API.G_EXC_ERROR THEN
609 		x_return_status := FND_API.G_RET_STS_ERROR ;
610 		FND_MSG_PUB.Count_And_Get
611 			(p_count => x_msg_count ,
612 			 p_data => x_msg_data
613 			);
614 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
615 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
616 		FND_MSG_PUB.Count_And_Get
617 		(p_count => x_msg_count ,
618 		 p_data => x_msg_data
619 		);
620 	WHEN OTHERS THEN
621 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
622 		IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
623 			FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME ,l_api_name);
624 		END IF;
625 		FND_MSG_PUB.Count_And_Get
626 			(p_count => x_msg_count ,
627 			 p_data => x_msg_data
628 			);
629 END Update_Row;
630 end csi_ext_contacts_pkg;