[Home] [Help]
PACKAGE BODY: APPS.CSI_PARTY_RELATIONSHIPS_PVT
Source
1 PACKAGE BODY csi_party_relationships_pvt AS
2 /* $Header: csivipb.pls 120.17.12020000.3 2012/11/05 09:58:22 aabmishr ship $ */
3
4
5 g_pkg_name CONSTANT VARCHAR2(30) := 'CSI_PARTY_RELATIONSHIPS_PVT';
6 g_expire_party_flag VARCHAR2(1) := 'N';
7 --g_expire_account_flag VARCHAR2(1) := 'N'; -- Commented by sguthiva for bug 2307804
8 --g_force_expire_flag VARCHAR2(1) := 'N'; -- Commented by sguthiva for bug 2307804
9 --g_contract_event_type VARCHAR2(30) := NULL;-- Commented by sguthiva for bug 2307804
10
11
12 /*----------------------------------------------------------*/
13 /* Procedure name: Initialize_acct_rec_no_dump */
14 /* Description : This procudure gets the first record */
15 /* from the history */
16 /*----------------------------------------------------------*/
17
18 PROCEDURE Initialize_acct_rec_no_dump
19 (
20 x_party_account_rec IN OUT NOCOPY csi_datastructures_pub.party_account_header_rec,
21 p_ip_account_id IN NUMBER ,
22 x_first_no_dump IN OUT NOCOPY DATE
23 ) IS
24
25 CURSOR Int_first_no_dump(i_ip_acct_id IN NUMBER ) IS
26 SELECT
27 CREATION_DATE ,
28 NEW_RELATIONSHIP_TYPE_CODE ,
29 NEW_ACTIVE_START_DATE ,
30 NEW_ACTIVE_END_DATE ,
31 NEW_CONTEXT ,
32 NEW_ATTRIBUTE1 ,
33 NEW_ATTRIBUTE2 ,
34 NEW_ATTRIBUTE3 ,
35 NEW_ATTRIBUTE4 ,
36 NEW_ATTRIBUTE5 ,
37 NEW_ATTRIBUTE6 ,
38 NEW_ATTRIBUTE7 ,
39 NEW_ATTRIBUTE8 ,
40 NEW_ATTRIBUTE9 ,
41 NEW_ATTRIBUTE10 ,
42 NEW_ATTRIBUTE11 ,
43 NEW_ATTRIBUTE12 ,
44 NEW_ATTRIBUTE13 ,
45 NEW_ATTRIBUTE14 ,
46 NEW_ATTRIBUTE15 ,
47 NEW_BILL_TO_ADDRESS ,
48 NEW_SHIP_TO_ADDRESS
49 FROM CSI_IP_ACCOUNTS_H
50 WHERE ip_account_id = i_ip_acct_id
51 --and full_dump_flag = 'N'
52 --and creation_date < x_first_no_dump
53 order by creation_date;
54
55 BEGIN
56
57 FOR C1 IN Int_first_no_dump(p_ip_account_id ) LOOP
58 IF Int_first_no_dump%ROWCOUNT = 1 THEN
59 x_first_no_dump := C1.creation_date;
60 x_party_account_rec.RELATIONSHIP_TYPE_CODE := C1.NEW_RELATIONSHIP_TYPE_CODE;
61 x_party_account_rec.ACTIVE_START_DATE := C1.NEW_ACTIVE_START_DATE;
62 x_party_account_rec.ACTIVE_END_DATE := C1.NEW_ACTIVE_END_DATE;
63 x_party_account_rec.CONTEXT := C1.NEW_CONTEXT;
64 x_party_account_rec.ATTRIBUTE1 := C1.NEW_ATTRIBUTE1;
65 x_party_account_rec.ATTRIBUTE2 := C1.NEW_ATTRIBUTE2;
66 x_party_account_rec.ATTRIBUTE3 := C1.NEW_ATTRIBUTE3;
67 x_party_account_rec.ATTRIBUTE4 := C1.NEW_ATTRIBUTE4;
68 x_party_account_rec.ATTRIBUTE5 := C1.NEW_ATTRIBUTE5;
69 x_party_account_rec.ATTRIBUTE6 := C1.NEW_ATTRIBUTE6;
70 x_party_account_rec.ATTRIBUTE7 := C1.NEW_ATTRIBUTE7;
71 x_party_account_rec.ATTRIBUTE8 := C1.NEW_ATTRIBUTE8;
72 x_party_account_rec.ATTRIBUTE9 := C1.NEW_ATTRIBUTE9;
73 x_party_account_rec.ATTRIBUTE10 := C1.NEW_ATTRIBUTE10;
74 x_party_account_rec.ATTRIBUTE11 := C1.NEW_ATTRIBUTE11;
75 x_party_account_rec.ATTRIBUTE12 := C1.NEW_ATTRIBUTE12;
76 x_party_account_rec.ATTRIBUTE13 := C1.NEW_ATTRIBUTE13;
77 x_party_account_rec.ATTRIBUTE14 := C1.NEW_ATTRIBUTE14;
78 x_party_account_rec.ATTRIBUTE15 := C1.NEW_ATTRIBUTE15;
79 x_party_account_rec.BILL_TO_ADDRESS := C1.NEW_BILL_TO_ADDRESS;
80 x_party_account_rec.SHIP_TO_ADDRESS := C1.NEW_SHIP_TO_ADDRESS;
81 ELSE
82 EXIT;
83 END IF;
84
85 END LOOP;
86 END Initialize_acct_rec_no_dump;
87
88 /*----------------------------------------------------------*/
89 /* Procedure name: Initialize_acct_rec */
90 /* Description : This procudure recontructs the record */
91 /* from the history */
92 /*----------------------------------------------------------*/
93
94 PROCEDURE Initialize_acct_rec
95 (
96 x_party_account_rec IN OUT NOCOPY csi_datastructures_pub.party_account_header_rec,
97 p_ip_account_hist_id IN NUMBER ,
98 x_nearest_full_dump IN OUT NOCOPY DATE
99 ) IS
100
101 CURSOR Int_nearest_full_dump(p_ip_acct_hist_id IN NUMBER ) IS
102 SELECT
103 CREATION_DATE ,
104 NEW_RELATIONSHIP_TYPE_CODE ,
105 NEW_ACTIVE_START_DATE ,
106 NEW_ACTIVE_END_DATE ,
107 NEW_CONTEXT ,
108 NEW_ATTRIBUTE1 ,
109 NEW_ATTRIBUTE2 ,
110 NEW_ATTRIBUTE3 ,
111 NEW_ATTRIBUTE4 ,
112 NEW_ATTRIBUTE5 ,
113 NEW_ATTRIBUTE6 ,
114 NEW_ATTRIBUTE7 ,
115 NEW_ATTRIBUTE8 ,
116 NEW_ATTRIBUTE9 ,
117 NEW_ATTRIBUTE10 ,
118 NEW_ATTRIBUTE11 ,
119 NEW_ATTRIBUTE12 ,
120 NEW_ATTRIBUTE13 ,
121 NEW_ATTRIBUTE14 ,
122 NEW_ATTRIBUTE15 ,
123 NEW_BILL_TO_ADDRESS ,
124 NEW_SHIP_TO_ADDRESS
125 FROM CSI_IP_ACCOUNTS_H
126 WHERE ip_account_history_id = p_ip_acct_hist_id
127 and full_dump_flag = 'Y';
128
129 BEGIN
130
131 FOR C1 IN Int_nearest_full_dump(p_ip_account_hist_id ) LOOP
132 x_nearest_full_dump := C1.creation_date;
133 x_party_account_rec.RELATIONSHIP_TYPE_CODE := C1.NEW_RELATIONSHIP_TYPE_CODE;
134 x_party_account_rec.ACTIVE_START_DATE := C1.NEW_ACTIVE_START_DATE;
135 x_party_account_rec.ACTIVE_END_DATE := C1.NEW_ACTIVE_END_DATE;
136 x_party_account_rec.CONTEXT := C1.NEW_CONTEXT;
137 x_party_account_rec.ATTRIBUTE1 := C1.NEW_ATTRIBUTE1;
138 x_party_account_rec.ATTRIBUTE2 := C1.NEW_ATTRIBUTE2;
139 x_party_account_rec.ATTRIBUTE3 := C1.NEW_ATTRIBUTE3;
140 x_party_account_rec.ATTRIBUTE4 := C1.NEW_ATTRIBUTE4;
141 x_party_account_rec.ATTRIBUTE5 := C1.NEW_ATTRIBUTE5;
142 x_party_account_rec.ATTRIBUTE6 := C1.NEW_ATTRIBUTE6;
143 x_party_account_rec.ATTRIBUTE7 := C1.NEW_ATTRIBUTE7;
144 x_party_account_rec.ATTRIBUTE8 := C1.NEW_ATTRIBUTE8;
145 x_party_account_rec.ATTRIBUTE9 := C1.NEW_ATTRIBUTE9;
146 x_party_account_rec.ATTRIBUTE10 := C1.NEW_ATTRIBUTE10;
147 x_party_account_rec.ATTRIBUTE11 := C1.NEW_ATTRIBUTE11;
148 x_party_account_rec.ATTRIBUTE12 := C1.NEW_ATTRIBUTE12;
149 x_party_account_rec.ATTRIBUTE13 := C1.NEW_ATTRIBUTE13;
150 x_party_account_rec.ATTRIBUTE14 := C1.NEW_ATTRIBUTE14;
151 x_party_account_rec.ATTRIBUTE15 := C1.NEW_ATTRIBUTE15;
152 x_party_account_rec.BILL_TO_ADDRESS := C1.NEW_BILL_TO_ADDRESS;
153 x_party_account_rec.SHIP_TO_ADDRESS := C1.NEW_SHIP_TO_ADDRESS;
154
155 END LOOP;
156 END Initialize_acct_rec ;
157
158
159 /*----------------------------------------------------------*/
160 /* Procedure name: Construct_acct_from_hist */
161 /* Description : This procudure recontructs the record */
162 /* from the history */
163 /*----------------------------------------------------------*/
164
165 PROCEDURE Construct_acct_from_hist
166 (
167 x_party_account_tbl IN OUT NOCOPY csi_datastructures_pub.party_account_header_tbl,
168 p_time_stamp IN DATE
169 ) IS
170
171 l_nearest_full_dump DATE := sysdate;
172 l_ip_account_hist_id NUMBER;
173 l_party_account_tbl csi_datastructures_pub.party_account_header_tbl;
174 l_acct_count NUMBER := 0;
175 --
176 Process_next EXCEPTION;
177
178 CURSOR get_nearest_full_dump(p_ip_acct_id IN NUMBER ,p_time IN DATE) IS
179 SELECT
180 MAX(ip_account_history_id)
181 FROM CSI_IP_ACCOUNTS_H
182 WHERE creation_date <= p_time
183 and ip_account_id = p_ip_acct_id
184 and full_dump_flag = 'Y' ;
185
186
187 CURSOR get_ip_acct_hist (p_ip_account_id IN NUMBER ,
188 p_nearest_full_dump IN DATE,
189 p_time IN DATE ) IS
190 SELECT
191 OLD_PARTY_ACCOUNT_ID ,
192 NEW_PARTY_ACCOUNT_ID ,
193 OLD_RELATIONSHIP_TYPE_CODE ,
194 NEW_RELATIONSHIP_TYPE_CODE ,
195 OLD_ACTIVE_START_DATE ,
196 NEW_ACTIVE_START_DATE ,
197 OLD_ACTIVE_END_DATE ,
198 NEW_ACTIVE_END_DATE ,
199 OLD_CONTEXT ,
200 NEW_CONTEXT ,
201 OLD_ATTRIBUTE1 ,
202 NEW_ATTRIBUTE1 ,
203 OLD_ATTRIBUTE2 ,
204 NEW_ATTRIBUTE2 ,
205 OLD_ATTRIBUTE3 ,
206 NEW_ATTRIBUTE3 ,
207 OLD_ATTRIBUTE4 ,
208 NEW_ATTRIBUTE4 ,
209 OLD_ATTRIBUTE5 ,
210 NEW_ATTRIBUTE5 ,
211 OLD_ATTRIBUTE6 ,
212 NEW_ATTRIBUTE6 ,
213 OLD_ATTRIBUTE7 ,
214 NEW_ATTRIBUTE7 ,
215 OLD_ATTRIBUTE8 ,
216 NEW_ATTRIBUTE8 ,
217 OLD_ATTRIBUTE9 ,
218 NEW_ATTRIBUTE9 ,
219 OLD_ATTRIBUTE10 ,
220 NEW_ATTRIBUTE10 ,
221 OLD_ATTRIBUTE11 ,
222 NEW_ATTRIBUTE11 ,
223 OLD_ATTRIBUTE12 ,
224 NEW_ATTRIBUTE12 ,
225 OLD_ATTRIBUTE13 ,
226 NEW_ATTRIBUTE13 ,
227 OLD_ATTRIBUTE14 ,
228 NEW_ATTRIBUTE14 ,
229 OLD_ATTRIBUTE15 ,
230 NEW_ATTRIBUTE15 ,
231 OLD_BILL_TO_ADDRESS ,
232 NEW_BILL_TO_ADDRESS ,
233 OLD_SHIP_TO_ADDRESS ,
234 NEW_SHIP_TO_ADDRESS
235 FROM CSI_IP_ACCOUNTS_H
236 WHERE creation_date <= p_time
237 and creation_date >= p_nearest_full_dump
238 and ip_account_id = p_ip_account_id
239 ORDER BY creation_date;
240
241 l_time_stamp DATE := p_time_stamp;
242
243 BEGIN
244 l_party_account_tbl := x_party_account_tbl;
245 IF l_party_account_tbl.count > 0 THEN
246 FOR i IN l_party_account_tbl.FIRST..l_party_account_tbl.LAST LOOP
247 BEGIN
248 OPEN get_nearest_full_dump(l_party_account_tbl(i).ip_account_id,p_time_stamp);
249 FETCH get_nearest_full_dump INTO l_ip_account_hist_id;
250 CLOSE get_nearest_full_dump;
251
252 IF l_ip_account_hist_id IS NOT NULL THEN
253 Initialize_acct_rec( l_party_account_tbl(i), l_ip_account_hist_id ,l_nearest_full_dump);
254 ELSE
255 Initialize_acct_rec_no_dump(l_party_account_tbl(i), l_party_account_tbl(i).ip_account_id, l_time_stamp);
256 l_nearest_full_dump := l_time_stamp;
257 -- If the user chooses a date before the creation date of the instance
258 -- then raise an error
259 IF p_time_stamp < l_time_stamp THEN
260 -- Messages Commented for bug 2423342. Records that do not qualify should get deleted.
261 -- FND_MESSAGE.SET_NAME('CSI','CSI_H_DATE_BEFORE_CRE_DATE');
262 -- FND_MESSAGE.SET_TOKEN('CREATION_DATE',to_char(l_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
263 -- FND_MESSAGE.SET_TOKEN('USER_DATE',to_char(p_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
264 -- FND_MSG_PUB.Add;
265 -- RAISE FND_API.G_EXC_ERROR;
266 l_party_account_tbl.DELETE(i);
267 RAISE Process_next;
268 END IF;
269 END IF;
270
271
272 FOR C2 IN get_ip_acct_hist(l_party_account_tbl(i).ip_account_id ,l_nearest_full_dump,p_time_stamp ) LOOP
273
274 IF (C2.OLD_RELATIONSHIP_TYPE_CODE IS NULL AND C2.NEW_RELATIONSHIP_TYPE_CODE IS NOT NULL)
275 OR (C2.OLD_RELATIONSHIP_TYPE_CODE IS NOT NULL AND C2.NEW_RELATIONSHIP_TYPE_CODE IS NULL)
276 OR (C2.OLD_RELATIONSHIP_TYPE_CODE <> C2.NEW_RELATIONSHIP_TYPE_CODE) THEN
277 l_party_account_tbl(i).RELATIONSHIP_TYPE_CODE := C2.NEW_RELATIONSHIP_TYPE_CODE;
278 END IF;
279
280 IF (C2.OLD_PARTY_ACCOUNT_ID IS NULL AND C2.NEW_PARTY_ACCOUNT_ID IS NOT NULL)
281 OR (C2.OLD_PARTY_ACCOUNT_ID IS NOT NULL AND C2.NEW_PARTY_ACCOUNT_ID IS NULL)
282 OR (C2.OLD_PARTY_ACCOUNT_ID <> C2.NEW_PARTY_ACCOUNT_ID) THEN
283 l_party_account_tbl(i).PARTY_ACCOUNT_ID := C2.NEW_PARTY_ACCOUNT_ID;
284 END IF;
285
286
287 IF (C2.OLD_ACTIVE_START_DATE IS NULL AND C2.NEW_ACTIVE_START_DATE IS NOT NULL)
288 OR (C2.OLD_ACTIVE_START_DATE IS NOT NULL AND C2.NEW_ACTIVE_START_DATE IS NULL)
289 OR (C2.OLD_ACTIVE_START_DATE <> C2.NEW_ACTIVE_START_DATE) THEN
290 l_party_account_tbl(i).ACTIVE_START_DATE := C2.NEW_ACTIVE_START_DATE;
291 END IF;
292
293
294 IF (C2.OLD_ACTIVE_END_DATE IS NULL AND C2.NEW_ACTIVE_END_DATE IS NOT NULL)
295 OR (C2.OLD_ACTIVE_END_DATE IS NOT NULL AND C2.NEW_ACTIVE_END_DATE IS NULL)
296 OR (C2.OLD_ACTIVE_END_DATE <> C2.NEW_ACTIVE_END_DATE) THEN
297 l_party_account_tbl(i).ACTIVE_END_DATE := C2.NEW_ACTIVE_END_DATE;
298 END IF;
299
300
301 IF (C2.OLD_CONTEXT IS NULL AND C2.NEW_CONTEXT IS NOT NULL)
302 OR (C2.OLD_CONTEXT IS NOT NULL AND C2.NEW_CONTEXT IS NULL)
303 OR (C2.OLD_CONTEXT <> C2.NEW_CONTEXT) THEN
304 l_party_account_tbl(i).CONTEXT := C2.NEW_CONTEXT;
305 END IF;
306
307 IF (C2.OLD_ATTRIBUTE1 IS NULL AND C2.NEW_ATTRIBUTE1 IS NOT NULL)
308 OR (C2.OLD_ATTRIBUTE1 IS NOT NULL AND C2.NEW_ATTRIBUTE1 IS NULL)
309 OR (C2.OLD_ATTRIBUTE1 <> C2.NEW_ATTRIBUTE1) THEN
310 l_party_account_tbl(i).ATTRIBUTE1 := C2.NEW_ATTRIBUTE1;
311 END IF;
312
313 IF (C2.OLD_ATTRIBUTE2 IS NULL AND C2.NEW_ATTRIBUTE2 IS NOT NULL)
314 OR (C2.OLD_ATTRIBUTE2 IS NOT NULL AND C2.NEW_ATTRIBUTE2 IS NULL)
315 OR (C2.OLD_ATTRIBUTE2 <> C2.NEW_ATTRIBUTE2) THEN
316 l_party_account_tbl(i).ATTRIBUTE2 := C2.NEW_ATTRIBUTE2;
317 END IF;
318
319 IF (C2.OLD_ATTRIBUTE3 IS NULL AND C2.NEW_ATTRIBUTE3 IS NOT NULL)
320 OR (C2.OLD_ATTRIBUTE3 IS NOT NULL AND C2.NEW_ATTRIBUTE3 IS NULL)
321 OR (C2.OLD_ATTRIBUTE3 <> C2.NEW_ATTRIBUTE3) THEN
322 l_party_account_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
323 END IF;
324
325 IF (C2.OLD_ATTRIBUTE4 IS NULL AND C2.NEW_ATTRIBUTE4 IS NOT NULL)
326 OR (C2.OLD_ATTRIBUTE4 IS NOT NULL AND C2.NEW_ATTRIBUTE4 IS NULL)
327 OR (C2.OLD_ATTRIBUTE4 <> C2.NEW_ATTRIBUTE4) THEN
328 l_party_account_tbl(i).ATTRIBUTE4 := C2.NEW_ATTRIBUTE4;
329 END IF;
330
331
332 IF (C2.OLD_ATTRIBUTE5 IS NULL AND C2.NEW_ATTRIBUTE5 IS NOT NULL)
333 OR (C2.OLD_ATTRIBUTE5 IS NOT NULL AND C2.NEW_ATTRIBUTE5 IS NULL)
334 OR (C2.OLD_ATTRIBUTE5 <> C2.NEW_ATTRIBUTE5) THEN
335 l_party_account_tbl(i).ATTRIBUTE5 := C2.NEW_ATTRIBUTE5;
336 END IF;
337
338
339 IF (C2.OLD_ATTRIBUTE6 IS NULL AND C2.NEW_ATTRIBUTE6 IS NOT NULL)
340 OR (C2.OLD_ATTRIBUTE6 IS NOT NULL AND C2.NEW_ATTRIBUTE6 IS NULL)
341 OR (C2.OLD_ATTRIBUTE6 <> C2.NEW_ATTRIBUTE6) THEN
342 l_party_account_tbl(i).ATTRIBUTE6 := C2.NEW_ATTRIBUTE6;
343 END IF;
344
345 IF (C2.OLD_ATTRIBUTE7 IS NULL AND C2.NEW_ATTRIBUTE7 IS NOT NULL)
346 OR (C2.OLD_ATTRIBUTE7 IS NOT NULL AND C2.NEW_ATTRIBUTE7 IS NULL)
347 OR (C2.OLD_ATTRIBUTE7 <> C2.NEW_ATTRIBUTE7) THEN
348 l_party_account_tbl(i).ATTRIBUTE7 := C2.NEW_ATTRIBUTE7;
349 END IF;
350
351 IF (C2.OLD_ATTRIBUTE8 IS NULL AND C2.NEW_ATTRIBUTE8 IS NOT NULL)
352 OR (C2.OLD_ATTRIBUTE8 IS NOT NULL AND C2.NEW_ATTRIBUTE8 IS NULL)
353 OR (C2.OLD_ATTRIBUTE8 <> C2.NEW_ATTRIBUTE8) THEN
354 l_party_account_tbl(i).ATTRIBUTE8 := C2.NEW_ATTRIBUTE8;
355 END IF;
356
357 IF (C2.OLD_ATTRIBUTE9 IS NULL AND C2.NEW_ATTRIBUTE9 IS NOT NULL)
358 OR (C2.OLD_ATTRIBUTE9 IS NOT NULL AND C2.NEW_ATTRIBUTE9 IS NULL)
359 OR (C2.OLD_ATTRIBUTE9 <> C2.NEW_ATTRIBUTE9) THEN
360 l_party_account_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
361 END IF;
362
363
364 IF (C2.OLD_ATTRIBUTE10 IS NULL AND C2.NEW_ATTRIBUTE10 IS NOT NULL)
365 OR (C2.OLD_ATTRIBUTE10 IS NOT NULL AND C2.NEW_ATTRIBUTE10 IS NULL)
366 OR (C2.OLD_ATTRIBUTE10 <> C2.NEW_ATTRIBUTE10) THEN
367 l_party_account_tbl(i).ATTRIBUTE10 := C2.NEW_ATTRIBUTE10;
368 END IF;
369
370
371
372 IF (C2.OLD_ATTRIBUTE11 IS NULL AND C2.NEW_ATTRIBUTE11 IS NOT NULL)
373 OR (C2.OLD_ATTRIBUTE11 IS NOT NULL AND C2.NEW_ATTRIBUTE11 IS NULL)
374 OR (C2.OLD_ATTRIBUTE11 <> C2.NEW_ATTRIBUTE11) THEN
375 l_party_account_tbl(i).ATTRIBUTE11 := C2.NEW_ATTRIBUTE11;
376 END IF;
377
378 IF (C2.OLD_ATTRIBUTE12 IS NULL AND C2.NEW_ATTRIBUTE12 IS NOT NULL)
379 OR (C2.OLD_ATTRIBUTE12 IS NOT NULL AND C2.NEW_ATTRIBUTE12 IS NULL)
380 OR (C2.OLD_ATTRIBUTE12 <> C2.NEW_ATTRIBUTE12) THEN
381 l_party_account_tbl(i).ATTRIBUTE12 := C2.NEW_ATTRIBUTE12;
382 END IF;
383
384
385 IF (C2.OLD_ATTRIBUTE13 IS NULL AND C2.NEW_ATTRIBUTE13 IS NOT NULL)
386 OR (C2.OLD_ATTRIBUTE13 IS NOT NULL AND C2.NEW_ATTRIBUTE13 IS NULL)
387 OR (C2.OLD_ATTRIBUTE13 <> C2.NEW_ATTRIBUTE13) THEN
388 l_party_account_tbl(i).ATTRIBUTE13 := C2.NEW_ATTRIBUTE13;
389 END IF;
390
391
392 IF (C2.OLD_ATTRIBUTE14 IS NULL AND C2.NEW_ATTRIBUTE14 IS NOT NULL)
393 OR (C2.OLD_ATTRIBUTE14 IS NOT NULL AND C2.NEW_ATTRIBUTE14 IS NULL)
394 OR (C2.OLD_ATTRIBUTE14 <> C2.NEW_ATTRIBUTE14) THEN
395 l_party_account_tbl(i).ATTRIBUTE14 := C2.NEW_ATTRIBUTE14;
396 END IF;
397
398 IF (C2.OLD_ATTRIBUTE15 IS NULL AND C2.NEW_ATTRIBUTE15 IS NOT NULL)
399 OR (C2.OLD_ATTRIBUTE15 IS NOT NULL AND C2.NEW_ATTRIBUTE15 IS NULL)
400 OR (C2.OLD_ATTRIBUTE15 <> C2.NEW_ATTRIBUTE15) THEN
401 l_party_account_tbl(i).ATTRIBUTE15 := C2.NEW_ATTRIBUTE15;
402 END IF;
403
404 IF (C2.OLD_BILL_TO_ADDRESS IS NULL AND C2.NEW_BILL_TO_ADDRESS IS NOT NULL)
405 OR (C2.OLD_BILL_TO_ADDRESS IS NOT NULL AND C2.NEW_BILL_TO_ADDRESS IS NULL)
406 OR (C2.OLD_BILL_TO_ADDRESS <> C2.NEW_BILL_TO_ADDRESS) THEN
407 l_party_account_tbl(i).BILL_TO_ADDRESS := C2.NEW_BILL_TO_ADDRESS;
408 END IF;
409
410 IF (C2.OLD_SHIP_TO_ADDRESS IS NULL AND C2.NEW_SHIP_TO_ADDRESS IS NOT NULL)
411 OR (C2.OLD_SHIP_TO_ADDRESS IS NOT NULL AND C2.NEW_SHIP_TO_ADDRESS IS NULL)
412 OR (C2.OLD_SHIP_TO_ADDRESS <> C2.NEW_SHIP_TO_ADDRESS) THEN
413 l_party_account_tbl(i).SHIP_TO_ADDRESS := C2.NEW_SHIP_TO_ADDRESS;
414 END IF;
415
416 END LOOP;
417 EXCEPTION
418 WHEN Process_next THEN
419 NULL;
420 END;
421 END LOOP;
422 x_party_account_tbl.DELETE;
423 IF l_party_account_tbl.count > 0 THEN
424 FOR acct_row in l_party_account_tbl.FIRST .. l_party_account_tbl.LAST
425 LOOP
426 IF l_party_account_tbl.EXISTS(acct_row) THEN
427 l_acct_count := l_acct_count + 1;
428 x_party_account_tbl(l_acct_count) := l_party_account_tbl(acct_row);
429 END IF;
430 END LOOP;
431 END IF;
432 END IF;
433 END Construct_acct_from_hist;
434
435 /*----------------------------------------------------------*/
436 /* Procedure name: Resolve_id_columns */
437 /* Description : This procudure gets the descriptions for */
438 /* id columns */
439 /*----------------------------------------------------------*/
440
441 PROCEDURE Resolve_id_columns
442 (p_account_header_tbl IN OUT NOCOPY csi_datastructures_pub.party_account_header_tbl)
443
444 IS
445
446 BEGIN
447
448 FOR tab_row in p_account_header_tbl.FIRST..p_account_header_tbl.LAST
449 LOOP
450
451 BEGIN
452 SELECT account_number,
453 account_name
454 INTO p_account_header_tbl(tab_row).party_account_number,
455 p_account_header_tbl(tab_row).party_account_name
456 FROM hz_cust_accounts
457 WHERE cust_account_id = p_account_header_tbl(tab_row).party_account_id;
458 EXCEPTION
459 WHEN no_data_found THEN
460 NULL;
461 END;
462
463 -- Added for bug 2670371
464 BEGIN
465 SELECT hl.address1
466 ,hl.address2
467 ,hl.address3
468 ,hl.address4
469 ,hl.city
470 ,hl.state
471 ,hl.postal_code
472 ,hl.country
473 INTO p_account_header_tbl(tab_row).bill_to_address1
474 ,p_account_header_tbl(tab_row).bill_to_address2
475 ,p_account_header_tbl(tab_row).bill_to_address3
476 ,p_account_header_tbl(tab_row).bill_to_address4
477 ,p_account_header_tbl(tab_row).bill_to_city
478 ,p_account_header_tbl(tab_row).bill_to_state
479 ,p_account_header_tbl(tab_row).bill_to_postal_code
480 ,p_account_header_tbl(tab_row).bill_to_country
481 FROM hz_cust_site_uses_all hcs
482 ,hz_cust_acct_sites_all hca
483 ,hz_party_sites hps
484 ,hz_locations hl
485 WHERE hcs.cust_acct_site_id=hca.cust_acct_site_id
486 AND hca.party_site_id=hps.party_site_id
487 AND hps.location_id=hl.location_id
488 AND hcs.site_use_id=p_account_header_tbl(tab_row).bill_to_address
489 AND hcs.site_use_code = 'BILL_TO';
490 EXCEPTION
491 WHEN no_data_found THEN
492 NULL;
493 END;
494
495 BEGIN
496 SELECT hl.address1
497 ,hl.address2
498 ,hl.address3
499 ,hl.address4
500 ,hl.city
501 ,hl.state
502 ,hl.postal_code
503 ,hl.country
504 INTO p_account_header_tbl(tab_row).ship_to_address1
505 ,p_account_header_tbl(tab_row).ship_to_address2
506 ,p_account_header_tbl(tab_row).ship_to_address3
507 ,p_account_header_tbl(tab_row).ship_to_address4
508 ,p_account_header_tbl(tab_row).ship_to_city
509 ,p_account_header_tbl(tab_row).ship_to_state
510 ,p_account_header_tbl(tab_row).ship_to_postal_code
511 ,p_account_header_tbl(tab_row).ship_to_country
512 FROM hz_cust_site_uses_all hcs
513 ,hz_cust_acct_sites_all hca
514 ,hz_party_sites hps
515 ,hz_locations hl
516 WHERE hcs.cust_acct_site_id=hca.cust_acct_site_id
517 AND hca.party_site_id=hps.party_site_id
518 AND hps.location_id=hl.location_id
519 AND hcs.site_use_id=p_account_header_tbl(tab_row).ship_to_address
520 AND hcs.site_use_code = 'SHIP_TO';
521 EXCEPTION
522 WHEN no_data_found THEN
523 NULL;
524 END;
525
526 -- End addition for bug 2670371
527 /* Commented for bug 2670371
528 BEGIN
529 SELECT location
530 INTO p_account_header_tbl(tab_row).bill_to_location
531 FROM hz_cust_site_uses_all
532 WHERE site_use_id = p_account_header_tbl(tab_row).bill_to_address
533 AND site_use_code = 'BILL_TO';
534 EXCEPTION
535 WHEN no_data_found THEN
536 NULL;
537 END;
538
539 BEGIN
540 SELECT location
541 INTO p_account_header_tbl(tab_row).ship_to_location
542 FROM hz_cust_site_uses_all
543 WHERE site_use_id = p_account_header_tbl(tab_row).ship_to_address
544 AND site_use_code = 'SHIP_TO';
545 EXCEPTION
546 WHEN no_data_found THEN
547 NULL;
548 END;
549 */
550 -- End comment for bug 2670371
551 END LOOP;
552
553 END Resolve_id_columns;
554
555 /*----------------------------------------------------------*/
556 /* Procedure name: Get_acct_Column_Values */
557 /* Description : This procudure gets the column values */
558 /* for the Dynamic SQL */
559 /*----------------------------------------------------------*/
560
561 PROCEDURE Get_acct_Column_Values
562 (
563 p_get_acct_cursor_id IN NUMBER ,
564 x_pty_acct_query_rec OUT NOCOPY csi_datastructures_pub.party_account_header_rec
565 ) IS
566
567 BEGIN
568
569 dbms_sql.column_value(p_get_acct_cursor_id, 1, x_pty_acct_query_rec.ip_account_id);
570 dbms_sql.column_value(p_get_acct_cursor_id, 2, x_pty_acct_query_rec.instance_party_id);
571 dbms_sql.column_value(p_get_acct_cursor_id, 3, x_pty_acct_query_rec.party_account_id);
572 dbms_sql.column_value(p_get_acct_cursor_id, 4, x_pty_acct_query_rec.relationship_type_code );
573 dbms_sql.column_value(p_get_acct_cursor_id, 5, x_pty_acct_query_rec.active_start_date);
574 dbms_sql.column_value(p_get_acct_cursor_id, 6, x_pty_acct_query_rec.active_end_date);
575 dbms_sql.column_value(p_get_acct_cursor_id, 7, x_pty_acct_query_rec.context);
576 dbms_sql.column_value(p_get_acct_cursor_id, 8, x_pty_acct_query_rec.attribute1);
577 dbms_sql.column_value(p_get_acct_cursor_id, 9, x_pty_acct_query_rec.attribute2);
578 dbms_sql.column_value(p_get_acct_cursor_id, 10, x_pty_acct_query_rec.attribute3);
579 dbms_sql.column_value(p_get_acct_cursor_id, 11, x_pty_acct_query_rec.attribute4);
580 dbms_sql.column_value(p_get_acct_cursor_id, 12, x_pty_acct_query_rec.attribute5);
581 dbms_sql.column_value(p_get_acct_cursor_id, 13, x_pty_acct_query_rec.attribute6);
582 dbms_sql.column_value(p_get_acct_cursor_id, 14, x_pty_acct_query_rec.attribute7);
583 dbms_sql.column_value(p_get_acct_cursor_id, 15, x_pty_acct_query_rec.attribute8);
584 dbms_sql.column_value(p_get_acct_cursor_id, 16, x_pty_acct_query_rec.attribute9);
585 dbms_sql.column_value(p_get_acct_cursor_id, 17, x_pty_acct_query_rec.attribute10);
586 dbms_sql.column_value(p_get_acct_cursor_id, 18, x_pty_acct_query_rec.attribute11);
587 dbms_sql.column_value(p_get_acct_cursor_id, 19, x_pty_acct_query_rec.attribute12);
588 dbms_sql.column_value(p_get_acct_cursor_id, 20, x_pty_acct_query_rec.attribute13);
589 dbms_sql.column_value(p_get_acct_cursor_id, 21, x_pty_acct_query_rec.attribute14);
590 dbms_sql.column_value(p_get_acct_cursor_id, 22, x_pty_acct_query_rec.attribute15);
591 dbms_sql.column_value(p_get_acct_cursor_id, 23, x_pty_acct_query_rec.object_version_number);
592 dbms_sql.column_value(p_get_acct_cursor_id, 24, x_pty_acct_query_rec.bill_to_address);
593 dbms_sql.column_value(p_get_acct_cursor_id, 25, x_pty_acct_query_rec.ship_to_address);
594
595 END Get_acct_Column_Values;
596
597 /*----------------------------------------------------------*/
598 /* Procedure name: Define_Acct_Columns */
599 /* Description : This procudure defines the columns */
600 /* for the Dynamic SQL */
601 /*----------------------------------------------------------*/
602
603 PROCEDURE Define_Acct_Columns
604 (
605 p_get_acct_cursor_id IN NUMBER
606 ) IS
607 l_party_acct_rec csi_datastructures_pub.party_account_header_rec;
608 BEGIN
609
610 dbms_sql.define_column(p_get_acct_cursor_id, 1, l_party_acct_rec.ip_account_id);
611 dbms_sql.define_column(p_get_acct_cursor_id, 2, l_party_acct_rec.instance_party_id);
612 dbms_sql.define_column(p_get_acct_cursor_id, 3, l_party_acct_rec.party_account_id);
613 dbms_sql.define_column(p_get_acct_cursor_id, 4, l_party_acct_rec.relationship_type_code ,30);
614 dbms_sql.define_column(p_get_acct_cursor_id, 5, l_party_acct_rec.active_start_date);
615 dbms_sql.define_column(p_get_acct_cursor_id, 6, l_party_acct_rec.active_end_date);
616 dbms_sql.define_column(p_get_acct_cursor_id, 7, l_party_acct_rec.context,30);
617 dbms_sql.define_column(p_get_acct_cursor_id, 8, l_party_acct_rec.attribute1,150);
618 dbms_sql.define_column(p_get_acct_cursor_id, 9, l_party_acct_rec.attribute2,150);
619 dbms_sql.define_column(p_get_acct_cursor_id, 10, l_party_acct_rec.attribute3,150);
620 dbms_sql.define_column(p_get_acct_cursor_id, 11, l_party_acct_rec.attribute4,150);
621 dbms_sql.define_column(p_get_acct_cursor_id, 12, l_party_acct_rec.attribute5,150);
622 dbms_sql.define_column(p_get_acct_cursor_id, 13, l_party_acct_rec.attribute6,150);
623 dbms_sql.define_column(p_get_acct_cursor_id, 14, l_party_acct_rec.attribute7,150);
624 dbms_sql.define_column(p_get_acct_cursor_id, 15, l_party_acct_rec.attribute8,150);
625 dbms_sql.define_column(p_get_acct_cursor_id, 16, l_party_acct_rec.attribute9,150);
626 dbms_sql.define_column(p_get_acct_cursor_id, 17, l_party_acct_rec.attribute10,150);
627 dbms_sql.define_column(p_get_acct_cursor_id, 18, l_party_acct_rec.attribute11,150);
628 dbms_sql.define_column(p_get_acct_cursor_id, 19, l_party_acct_rec.attribute12,150);
629 dbms_sql.define_column(p_get_acct_cursor_id, 20, l_party_acct_rec.attribute13,150);
630 dbms_sql.define_column(p_get_acct_cursor_id, 21, l_party_acct_rec.attribute14,150);
631 dbms_sql.define_column(p_get_acct_cursor_id, 22, l_party_acct_rec.attribute15,150);
632 dbms_sql.define_column(p_get_acct_cursor_id, 23, l_party_acct_rec.object_version_number);
633 dbms_sql.define_column(p_get_acct_cursor_id, 24, l_party_acct_rec.bill_to_address);
634 dbms_sql.define_column(p_get_acct_cursor_id, 25, l_party_acct_rec.ship_to_address);
635
636 END Define_Acct_Columns;
637
638
639 /*----------------------------------------------------------*/
640 /* Procedure name: Bind_Acct_variable */
641 /* Description : Procedure used to generate the where */
642 /* cluase for Party relationship */
643 /*----------------------------------------------------------*/
644
645 PROCEDURE Bind_Acct_variable
646 (
647 p_pty_acct_query_rec IN csi_datastructures_pub.party_account_query_rec,
648 p_get_acct_cursor_id IN NUMBER
649 ) IS
650
651 BEGIN
652 IF( (p_pty_acct_query_rec.ip_account_id IS NOT NULL)
653 AND (p_pty_acct_query_rec.ip_account_id <> FND_API.G_MISS_NUM)) THEN
654 DBMS_SQL.BIND_VARIABLE(p_get_acct_cursor_id, ':ip_account_id', p_pty_acct_query_rec.ip_account_id);
655 END IF;
656
657 IF( (p_pty_acct_query_rec.instance_party_id IS NOT NULL)
658 AND (p_pty_acct_query_rec.instance_party_id <> FND_API.G_MISS_NUM)) THEN
659 DBMS_SQL.BIND_VARIABLE(p_get_acct_cursor_id, ':instance_party_id', p_pty_acct_query_rec.instance_party_id);
660 END IF;
661
662 IF( (p_pty_acct_query_rec.party_account_id IS NOT NULL)
663 AND (p_pty_acct_query_rec.party_account_id <> FND_API.G_MISS_NUM)) THEN
664 DBMS_SQL.BIND_VARIABLE(p_get_acct_cursor_id, ':party_account_id', p_pty_acct_query_rec.party_account_id);
665 END IF;
666
667 IF( (p_pty_acct_query_rec.relationship_type_code IS NOT NULL)
668 AND (p_pty_acct_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR)) THEN
669 DBMS_SQL.BIND_VARIABLE(p_get_acct_cursor_id, ':relationship_type_code', p_pty_acct_query_rec.relationship_type_code);
670 END IF;
671
672 END ;
673
674
675 /*----------------------------------------------------------*/
676 /* Procedure name: Gen_Acct_Where_Clause */
677 /* Description : Procedure used to generate the where */
678 /* cluase for Party relationship */
679 /*----------------------------------------------------------*/
680
681 PROCEDURE Gen_Acct_Where_Clause
682 (
683 p_pty_acct_query_rec IN csi_datastructures_pub.party_account_query_rec
684 ,x_where_clause OUT NOCOPY VARCHAR2
685 ) IS
686
687 BEGIN
688
689 -- Assign null at the start
690 x_where_clause := '';
691
692 IF (( p_pty_acct_query_rec.ip_account_id IS NOT NULL) AND
693 ( p_pty_acct_query_rec.ip_account_id <> FND_API.G_MISS_NUM)) THEN
694 x_where_clause := ' ip_account_id = :ip_account_id ';
695 ELSIF ( p_pty_acct_query_rec.ip_account_id IS NULL) THEN
696 x_where_clause := ' ip_account_id IS NULL ';
697 END IF;
698
699 IF ((p_pty_acct_query_rec.instance_party_id IS NOT NULL) AND
700 (p_pty_acct_query_rec.instance_party_id <> FND_API.G_MISS_NUM)) THEN
701 IF x_where_clause IS NULL THEN
702 x_where_clause := ' instance_party_id = :instance_party_id ';
703 ELSE
704 x_where_clause := x_where_clause||' AND '||' instance_party_id = :instance_party_id ';
705 END IF;
706 ELSIF (p_pty_acct_query_rec.instance_party_id IS NULL) THEN
707 IF x_where_clause IS NULL THEN
708 x_where_clause := ' instance_party_id IS NULL ';
709 ELSE
710 x_where_clause := x_where_clause||' AND '||' instance_party_id IS NULL ';
711 END IF;
712 END IF;
713
714 IF ((p_pty_acct_query_rec.party_account_id IS NOT NULL) AND
715 (p_pty_acct_query_rec.party_account_id <> FND_API.G_MISS_NUM)) THEN
716 IF x_where_clause IS NULL THEN
717 x_where_clause := ' party_account_id = :party_account_id ';
718 ELSE
719 x_where_clause := x_where_clause||' AND '||' party_account_id = :party_account_id ';
720 END IF;
721 ELSIF (p_pty_acct_query_rec.party_account_id IS NULL) THEN
722 IF x_where_clause IS NULL THEN
723 x_where_clause := ' party_account_id IS NULL';
724 ELSE
725 x_where_clause := x_where_clause||' AND '||' party_account_id IS NULL ';
726 END IF;
727 END IF ;
728
729 IF ((p_pty_acct_query_rec.relationship_type_code IS NOT NULL) AND
730 (p_pty_acct_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR)) THEN
731 IF x_where_clause IS NULL THEN
732 x_where_clause := ' relationship_type_code = :relationship_type_code ';
733 ELSE
734 x_where_clause := x_where_clause||' AND '||
735 ' relationship_type_code = :relationship_type_code ';
736 END IF;
737 ELSIF (p_pty_acct_query_rec.relationship_type_code IS NULL) THEN
738 IF x_where_clause IS NULL THEN
739 x_where_clause := ' relationship_type_code IS NULL ';
740 ELSE
741 x_where_clause := x_where_clause||' AND '||
742 ' relationship_type_code IS NULL ';
743 END IF;
744 END IF;
745
746 END Gen_Acct_Where_Clause;
747
748 /*----------------------------------------------------------*/
749 /* Procedure name: Initialize_pty_rec_no_dump */
750 /* Description : This procudure returns the first record */
751 /* from history */
752 /*----------------------------------------------------------*/
753
754 PROCEDURE Initialize_pty_rec_no_dump
755 (
756 x_party_rec IN OUT NOCOPY csi_datastructures_pub.party_header_rec,
757 p_inst_party_id IN NUMBER,
758 x_first_no_dump IN OUT NOCOPY DATE
759 ) IS
760
761
762 CURSOR Int_first_no_dump(p_inst_pty_id IN NUMBER ) IS
763 SELECT
764 CREATION_DATE ,
765 NEW_PARTY_SOURCE_TABLE ,
766 NEW_PARTY_ID ,
767 NEW_RELATIONSHIP_TYPE_CODE ,
768 NEW_CONTACT_FLAG ,
769 NEW_CONTACT_IP_ID ,
770 NEW_ACTIVE_START_DATE ,
771 NEW_ACTIVE_END_DATE ,
772 NEW_CONTEXT ,
773 NEW_ATTRIBUTE1 ,
774 NEW_ATTRIBUTE2 ,
775 NEW_ATTRIBUTE3 ,
776 NEW_ATTRIBUTE4 ,
777 NEW_ATTRIBUTE5 ,
778 NEW_ATTRIBUTE6 ,
779 NEW_ATTRIBUTE7 ,
780 NEW_ATTRIBUTE8 ,
781 NEW_ATTRIBUTE9 ,
782 NEW_ATTRIBUTE10 ,
783 NEW_ATTRIBUTE11 ,
784 NEW_ATTRIBUTE12 ,
785 NEW_ATTRIBUTE13 ,
786 NEW_ATTRIBUTE14 ,
787 NEW_ATTRIBUTE15 ,
788 NEW_PRIMARY_FLAG ,
789 NEW_PREFERRED_FLAG
790 FROM CSI_I_PARTIES_H
791 WHERE instance_party_id = p_inst_pty_id
792 -- and creation_date < x_first_no_dump
793 -- and full_dump_flag = 'N'
794 order by creation_date;
795
796 BEGIN
797
798 FOR C1 IN Int_first_no_dump(p_inst_party_id ) LOOP
799 IF Int_first_no_dump%ROWCOUNT = 1 THEN
800 x_first_no_dump := C1.creation_date;
801 x_party_rec.PARTY_SOURCE_TABLE := C1.NEW_PARTY_SOURCE_TABLE;
802 x_party_rec.PARTY_ID := C1.NEW_PARTY_ID;
803 x_party_rec.RELATIONSHIP_TYPE_CODE := C1.NEW_RELATIONSHIP_TYPE_CODE;
804 x_party_rec.CONTACT_FLAG := C1.NEW_CONTACT_FLAG;
805 x_party_rec.CONTACT_IP_ID := C1.NEW_CONTACT_IP_ID;
806 x_party_rec.ACTIVE_START_DATE := C1.NEW_ACTIVE_START_DATE;
807 x_party_rec.ACTIVE_END_DATE := C1.NEW_ACTIVE_END_DATE;
808 x_party_rec.CONTEXT := C1.NEW_CONTEXT;
809 x_party_rec.ATTRIBUTE1 := C1.NEW_ATTRIBUTE1;
810 x_party_rec.ATTRIBUTE2 := C1.NEW_ATTRIBUTE2;
811 x_party_rec.ATTRIBUTE3 := C1.NEW_ATTRIBUTE3;
812 x_party_rec.ATTRIBUTE4 := C1.NEW_ATTRIBUTE4;
813 x_party_rec.ATTRIBUTE5 := C1.NEW_ATTRIBUTE5;
814 x_party_rec.ATTRIBUTE6 := C1.NEW_ATTRIBUTE6;
815 x_party_rec.ATTRIBUTE7 := C1.NEW_ATTRIBUTE7;
816 x_party_rec.ATTRIBUTE8 := C1.NEW_ATTRIBUTE8;
817 x_party_rec.ATTRIBUTE9 := C1.NEW_ATTRIBUTE9;
818 x_party_rec.ATTRIBUTE10 := C1.NEW_ATTRIBUTE10;
819 x_party_rec.ATTRIBUTE11 := C1.NEW_ATTRIBUTE11;
820 x_party_rec.ATTRIBUTE12 := C1.NEW_ATTRIBUTE12;
821 x_party_rec.ATTRIBUTE13 := C1.NEW_ATTRIBUTE13;
822 x_party_rec.ATTRIBUTE14 := C1.NEW_ATTRIBUTE14;
823 x_party_rec.ATTRIBUTE15 := C1.NEW_ATTRIBUTE15;
824 x_party_rec.PRIMARY_FLAG := C1.NEW_PRIMARY_FLAG;
825 x_party_rec.PREFERRED_FLAG := C1.NEW_PREFERRED_FLAG;
826 ELSE
827 EXIT;
828 END IF;
829
830 END LOOP;
831 END Initialize_pty_rec_no_dump;
832
833
834 /*----------------------------------------------------------*/
835 /* Procedure name: Initialize_pty_rec */
836 /* Description : This procudure recontructs the record */
837 /* from the history */
838 /*----------------------------------------------------------*/
839
840 PROCEDURE Initialize_pty_rec
841 (
842 x_party_rec IN OUT NOCOPY csi_datastructures_pub.party_header_rec,
843 p_inst_party_hist_id IN NUMBER,
844 x_nearest_full_dump IN OUT NOCOPY DATE
845 ) IS
846
847
848 CURSOR Int_nearest_full_dump(p_inst_pty_hist_id IN NUMBER ) IS
849 SELECT
850 CREATION_DATE ,
851 NEW_PARTY_SOURCE_TABLE ,
852 NEW_PARTY_ID ,
853 NEW_RELATIONSHIP_TYPE_CODE ,
854 NEW_CONTACT_FLAG ,
855 NEW_CONTACT_IP_ID ,
856 NEW_ACTIVE_START_DATE ,
857 NEW_ACTIVE_END_DATE ,
858 NEW_CONTEXT ,
859 NEW_ATTRIBUTE1 ,
860 NEW_ATTRIBUTE2 ,
861 NEW_ATTRIBUTE3 ,
862 NEW_ATTRIBUTE4 ,
863 NEW_ATTRIBUTE5 ,
864 NEW_ATTRIBUTE6 ,
865 NEW_ATTRIBUTE7 ,
866 NEW_ATTRIBUTE8 ,
867 NEW_ATTRIBUTE9 ,
868 NEW_ATTRIBUTE10 ,
869 NEW_ATTRIBUTE11 ,
870 NEW_ATTRIBUTE12 ,
871 NEW_ATTRIBUTE13 ,
872 NEW_ATTRIBUTE14 ,
873 NEW_ATTRIBUTE15 ,
874 NEW_PRIMARY_FLAG ,
875 NEW_PREFERRED_FLAG
876 FROM CSI_I_PARTIES_H
877 WHERE instance_party_history_id = p_inst_pty_hist_id
878 and full_dump_flag = 'Y' ;
879
880 BEGIN
881
882 FOR C1 IN Int_nearest_full_dump(p_inst_party_hist_id ) LOOP
883 x_nearest_full_dump := C1.creation_date;
884 x_party_rec.PARTY_SOURCE_TABLE := C1.NEW_PARTY_SOURCE_TABLE;
885 x_party_rec.PARTY_ID := C1.NEW_PARTY_ID;
886 x_party_rec.RELATIONSHIP_TYPE_CODE := C1.NEW_RELATIONSHIP_TYPE_CODE;
887 x_party_rec.CONTACT_FLAG := C1.NEW_CONTACT_FLAG;
888 x_party_rec.CONTACT_IP_ID := C1.NEW_CONTACT_IP_ID;
889 x_party_rec.ACTIVE_START_DATE := C1.NEW_ACTIVE_START_DATE;
890 x_party_rec.ACTIVE_END_DATE := C1.NEW_ACTIVE_END_DATE;
891 x_party_rec.CONTEXT := C1.NEW_CONTEXT;
892 x_party_rec.ATTRIBUTE1 := C1.NEW_ATTRIBUTE1;
893 x_party_rec.ATTRIBUTE2 := C1.NEW_ATTRIBUTE2;
894 x_party_rec.ATTRIBUTE3 := C1.NEW_ATTRIBUTE3;
895 x_party_rec.ATTRIBUTE4 := C1.NEW_ATTRIBUTE4;
896 x_party_rec.ATTRIBUTE5 := C1.NEW_ATTRIBUTE5;
897 x_party_rec.ATTRIBUTE6 := C1.NEW_ATTRIBUTE6;
898 x_party_rec.ATTRIBUTE7 := C1.NEW_ATTRIBUTE7;
899 x_party_rec.ATTRIBUTE8 := C1.NEW_ATTRIBUTE8;
900 x_party_rec.ATTRIBUTE9 := C1.NEW_ATTRIBUTE9;
901 x_party_rec.ATTRIBUTE10 := C1.NEW_ATTRIBUTE10;
902 x_party_rec.ATTRIBUTE11 := C1.NEW_ATTRIBUTE11;
903 x_party_rec.ATTRIBUTE12 := C1.NEW_ATTRIBUTE12;
904 x_party_rec.ATTRIBUTE13 := C1.NEW_ATTRIBUTE13;
905 x_party_rec.ATTRIBUTE14 := C1.NEW_ATTRIBUTE14;
906 x_party_rec.ATTRIBUTE15 := C1.NEW_ATTRIBUTE15;
907 x_party_rec.PRIMARY_FLAG := C1.NEW_PRIMARY_FLAG;
908 x_party_rec.PREFERRED_FLAG := C1.NEW_PREFERRED_FLAG;
909
910 END LOOP;
911 END Initialize_pty_rec ;
912
913
914 /*----------------------------------------------------------*/
915 /* Procedure name: Construct_pty_from_hist */
916 /* Description : This procudure recontructs the record */
917 /* from the history */
918 /*----------------------------------------------------------*/
919
920 PROCEDURE Construct_pty_from_hist
921 (
922 x_party_tbl IN OUT NOCOPY csi_datastructures_pub.party_header_tbl,
923 p_time_stamp IN DATE
924 ) IS
925
926 l_nearest_full_dump DATE := sysdate;
927 l_inst_party_hist_id NUMBER;
928 l_party_tbl csi_datastructures_pub.party_header_tbl;
929 l_pty_count NUMBER := 0;
930 --
931 Process_next EXCEPTION;
932
933 CURSOR get_nearest_full_dump(p_inst_party_id IN NUMBER ,p_time IN DATE) IS
934 SELECT
935 MAX(instance_party_history_id)
936 FROM CSI_I_PARTIES_H
937 WHERE creation_date <= p_time
938 and instance_party_id = p_inst_party_id
939 and full_dump_flag = 'Y' ;
940
941 CURSOR get_inst_party_hist (p_inst_party_id IN NUMBER ,
942 p_nearest_full_dump IN DATE,
943 p_time IN DATE ) IS
944 SELECT
945 INSTANCE_PARTY_HISTORY_ID ,
946 OLD_PARTY_SOURCE_TABLE ,
947 NEW_PARTY_SOURCE_TABLE ,
948 OLD_PARTY_ID ,
949 NEW_PARTY_ID ,
950 OLD_RELATIONSHIP_TYPE_CODE ,
951 NEW_RELATIONSHIP_TYPE_CODE ,
952 OLD_CONTACT_FLAG ,
953 NEW_CONTACT_FLAG ,
954 OLD_CONTACT_IP_ID ,
955 NEW_CONTACT_IP_ID ,
956 OLD_ACTIVE_START_DATE ,
957 NEW_ACTIVE_START_DATE ,
958 OLD_ACTIVE_END_DATE ,
959 NEW_ACTIVE_END_DATE ,
960 OLD_CONTEXT ,
961 NEW_CONTEXT ,
962 OLD_ATTRIBUTE1 ,
963 NEW_ATTRIBUTE1 ,
964 OLD_ATTRIBUTE2 ,
965 NEW_ATTRIBUTE2 ,
966 OLD_ATTRIBUTE3 ,
967 NEW_ATTRIBUTE3 ,
968 OLD_ATTRIBUTE4 ,
969 NEW_ATTRIBUTE4 ,
970 OLD_ATTRIBUTE5 ,
971 NEW_ATTRIBUTE5 ,
972 OLD_ATTRIBUTE6 ,
973 NEW_ATTRIBUTE6 ,
974 OLD_ATTRIBUTE7 ,
975 NEW_ATTRIBUTE7 ,
976 OLD_ATTRIBUTE8 ,
977 NEW_ATTRIBUTE8 ,
978 OLD_ATTRIBUTE9 ,
979 NEW_ATTRIBUTE9 ,
980 OLD_ATTRIBUTE10 ,
981 NEW_ATTRIBUTE10 ,
982 OLD_ATTRIBUTE11 ,
983 NEW_ATTRIBUTE11 ,
984 OLD_ATTRIBUTE12 ,
985 NEW_ATTRIBUTE12 ,
986 OLD_ATTRIBUTE13 ,
987 NEW_ATTRIBUTE13 ,
988 OLD_ATTRIBUTE14 ,
989 NEW_ATTRIBUTE14 ,
990 OLD_ATTRIBUTE15 ,
991 NEW_ATTRIBUTE15 ,
992 OLD_PRIMARY_FLAG ,
993 NEW_PRIMARY_FLAG ,
994 OLD_PREFERRED_FLAG ,
995 NEW_PREFERRED_FLAG
996 FROM CSI_I_PARTIES_H
997 WHERE creation_date <= p_time
998 and creation_date >= p_nearest_full_dump
999 and instance_party_id = p_inst_party_id
1000 and full_dump_flag = 'N'
1001 ORDER BY creation_date;
1002
1003 l_time_stamp DATE := p_time_stamp;
1004
1005 BEGIN
1006 l_party_tbl := x_party_tbl;
1007 IF l_party_tbl.count > 0 THEN
1008 FOR i IN l_party_tbl.FIRST..l_party_tbl.LAST LOOP
1009 BEGIN
1010 OPEN get_nearest_full_dump(l_party_tbl(i).instance_party_id,p_time_stamp);
1011 FETCH get_nearest_full_dump INTO l_inst_party_hist_id;
1012 CLOSE get_nearest_full_dump;
1013
1014 IF l_inst_party_hist_id IS NOT NULL THEN
1015 Initialize_pty_rec( l_party_tbl(i), l_inst_party_hist_id ,l_nearest_full_dump);
1016 ELSE
1017
1018 Initialize_pty_rec_no_dump(l_party_tbl(i), l_party_tbl(i).instance_party_id, l_time_stamp);
1019 l_nearest_full_dump := l_time_stamp;
1020 -- If the user chooses a date before the creation date of the instance
1021 -- then raise an error
1022 IF p_time_stamp < l_time_stamp THEN
1023 -- Messages Commented for bug 2423342. Records that do not qualify should get deleted.
1024 -- FND_MESSAGE.SET_NAME('CSI','CSI_H_DATE_BEFORE_CRE_DATE');
1025 -- FND_MESSAGE.SET_TOKEN('CREATION_DATE',to_char(l_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
1026 -- FND_MESSAGE.SET_TOKEN('USER_DATE',to_char(p_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
1027 -- FND_MSG_PUB.Add;
1028 -- RAISE FND_API.G_EXC_ERROR;
1029 l_party_tbl.DELETE(i);
1030 RAISE Process_next;
1031 END IF;
1032
1033 END IF;
1034
1035 FOR C2 IN get_inst_party_hist(l_party_tbl(i).instance_party_id ,l_nearest_full_dump,p_time_stamp ) LOOP
1036
1037 IF (C2.OLD_PARTY_SOURCE_TABLE IS NULL AND C2.NEW_PARTY_SOURCE_TABLE IS NOT NULL)
1038 OR (C2.OLD_PARTY_SOURCE_TABLE IS NOT NULL AND C2.NEW_PARTY_SOURCE_TABLE IS NULL)
1039 OR (C2.OLD_PARTY_SOURCE_TABLE <> C2.NEW_PARTY_SOURCE_TABLE) THEN
1040 l_party_tbl(i).PARTY_SOURCE_TABLE := C2.NEW_PARTY_SOURCE_TABLE;
1041 END IF;
1042
1043 IF (C2.OLD_PARTY_ID IS NULL AND C2.NEW_PARTY_ID IS NOT NULL)
1044 OR (C2.OLD_PARTY_ID IS NOT NULL AND C2.NEW_PARTY_ID IS NULL)
1045 OR (C2.OLD_PARTY_ID <> C2.NEW_PARTY_ID) THEN
1046 l_party_tbl(i).PARTY_ID := C2.NEW_PARTY_ID;
1047 END IF;
1048
1049 IF (C2.OLD_RELATIONSHIP_TYPE_CODE IS NULL AND C2.NEW_RELATIONSHIP_TYPE_CODE IS NOT NULL)
1050 OR (C2.OLD_RELATIONSHIP_TYPE_CODE IS NOT NULL AND C2.NEW_RELATIONSHIP_TYPE_CODE IS NULL)
1051 OR (C2.OLD_RELATIONSHIP_TYPE_CODE <> C2.NEW_RELATIONSHIP_TYPE_CODE) THEN
1052 l_party_tbl(i).RELATIONSHIP_TYPE_CODE := C2.NEW_RELATIONSHIP_TYPE_CODE;
1053 END IF;
1054
1055 IF (C2.OLD_CONTACT_FLAG IS NULL AND C2.NEW_CONTACT_FLAG IS NOT NULL)
1056 OR (C2.OLD_CONTACT_FLAG IS NOT NULL AND C2.NEW_CONTACT_FLAG IS NULL)
1057 OR (C2.OLD_CONTACT_FLAG <> C2.NEW_CONTACT_FLAG) THEN
1058 l_party_tbl(i).CONTACT_FLAG := C2.NEW_CONTACT_FLAG;
1059 END IF;
1060
1061 IF (C2.OLD_CONTACT_IP_ID IS NULL AND C2.NEW_CONTACT_IP_ID IS NOT NULL)
1062 OR (C2.OLD_CONTACT_IP_ID IS NOT NULL AND C2.NEW_CONTACT_IP_ID IS NULL)
1063 OR (C2.OLD_CONTACT_IP_ID <> C2.NEW_CONTACT_IP_ID) THEN
1064 l_party_tbl(i).CONTACT_IP_ID := C2.NEW_CONTACT_IP_ID;
1065 END IF;
1066
1067 IF (C2.OLD_ACTIVE_START_DATE IS NULL AND C2.NEW_ACTIVE_START_DATE IS NOT NULL)
1068 OR (C2.OLD_ACTIVE_START_DATE IS NOT NULL AND C2.NEW_ACTIVE_START_DATE IS NULL)
1069 OR (C2.OLD_ACTIVE_START_DATE <> C2.NEW_ACTIVE_START_DATE) THEN
1070 l_party_tbl(i).ACTIVE_START_DATE := C2.NEW_ACTIVE_START_DATE;
1071 END IF;
1072
1073
1074 IF (C2.OLD_ACTIVE_END_DATE IS NULL AND C2.NEW_ACTIVE_END_DATE IS NOT NULL)
1075 OR (C2.OLD_ACTIVE_END_DATE IS NOT NULL AND C2.NEW_ACTIVE_END_DATE IS NULL)
1076 OR (C2.OLD_ACTIVE_END_DATE <> C2.NEW_ACTIVE_END_DATE) THEN
1077 l_party_tbl(i).ACTIVE_END_DATE := C2.NEW_ACTIVE_END_DATE;
1078 END IF;
1079
1080
1081 IF (C2.OLD_CONTEXT IS NULL AND C2.NEW_CONTEXT IS NOT NULL)
1082 OR (C2.OLD_CONTEXT IS NOT NULL AND C2.NEW_CONTEXT IS NULL)
1083 OR (C2.OLD_CONTEXT <> C2.NEW_CONTEXT) THEN
1084 l_party_tbl(i).CONTEXT := C2.NEW_CONTEXT;
1085 END IF;
1086
1087 IF (C2.OLD_ATTRIBUTE1 IS NULL AND C2.NEW_ATTRIBUTE1 IS NOT NULL)
1088 OR (C2.OLD_ATTRIBUTE1 IS NOT NULL AND C2.NEW_ATTRIBUTE1 IS NULL)
1089 OR (C2.OLD_ATTRIBUTE1 <> C2.NEW_ATTRIBUTE1) THEN
1090 l_party_tbl(i).ATTRIBUTE1 := C2.NEW_ATTRIBUTE1;
1091 END IF;
1092
1093 IF (C2.OLD_ATTRIBUTE2 IS NULL AND C2.NEW_ATTRIBUTE2 IS NOT NULL)
1094 OR (C2.OLD_ATTRIBUTE2 IS NOT NULL AND C2.NEW_ATTRIBUTE2 IS NULL)
1095 OR (C2.OLD_ATTRIBUTE2 <> C2.NEW_ATTRIBUTE2) THEN
1096 l_party_tbl(i).ATTRIBUTE2 := C2.NEW_ATTRIBUTE2;
1097 END IF;
1098
1099 IF (C2.OLD_ATTRIBUTE3 IS NULL AND C2.NEW_ATTRIBUTE3 IS NOT NULL)
1100 OR (C2.OLD_ATTRIBUTE3 IS NOT NULL AND C2.NEW_ATTRIBUTE3 IS NULL)
1101 OR (C2.OLD_ATTRIBUTE3 <> C2.NEW_ATTRIBUTE3) THEN
1102 l_party_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
1103 END IF;
1104
1105 IF (C2.OLD_ATTRIBUTE4 IS NULL AND C2.NEW_ATTRIBUTE4 IS NOT NULL)
1106 OR (C2.OLD_ATTRIBUTE4 IS NOT NULL AND C2.NEW_ATTRIBUTE4 IS NULL)
1107 OR (C2.OLD_ATTRIBUTE4 <> C2.NEW_ATTRIBUTE4) THEN
1108 l_party_tbl(i).ATTRIBUTE4 := C2.NEW_ATTRIBUTE4;
1109 END IF;
1110
1111
1112 IF (C2.OLD_ATTRIBUTE5 IS NULL AND C2.NEW_ATTRIBUTE5 IS NOT NULL)
1113 OR (C2.OLD_ATTRIBUTE5 IS NOT NULL AND C2.NEW_ATTRIBUTE5 IS NULL)
1114 OR (C2.OLD_ATTRIBUTE5 <> C2.NEW_ATTRIBUTE5) THEN
1115 l_party_tbl(i).ATTRIBUTE5 := C2.NEW_ATTRIBUTE5;
1116 END IF;
1117
1118
1119 IF (C2.OLD_ATTRIBUTE6 IS NULL AND C2.NEW_ATTRIBUTE6 IS NOT NULL)
1120 OR (C2.OLD_ATTRIBUTE6 IS NOT NULL AND C2.NEW_ATTRIBUTE6 IS NULL)
1121 OR (C2.OLD_ATTRIBUTE6 <> C2.NEW_ATTRIBUTE6) THEN
1122 l_party_tbl(i).ATTRIBUTE6 := C2.NEW_ATTRIBUTE6;
1123 END IF;
1124
1125 IF (C2.OLD_ATTRIBUTE7 IS NULL AND C2.NEW_ATTRIBUTE7 IS NOT NULL)
1126 OR (C2.OLD_ATTRIBUTE7 IS NOT NULL AND C2.NEW_ATTRIBUTE7 IS NULL)
1127 OR (C2.OLD_ATTRIBUTE7 <> C2.NEW_ATTRIBUTE7) THEN
1128 l_party_tbl(i).ATTRIBUTE7 := C2.NEW_ATTRIBUTE7;
1129 END IF;
1130
1131 IF (C2.OLD_ATTRIBUTE8 IS NULL AND C2.NEW_ATTRIBUTE8 IS NOT NULL)
1132 OR (C2.OLD_ATTRIBUTE8 IS NOT NULL AND C2.NEW_ATTRIBUTE8 IS NULL)
1133 OR (C2.OLD_ATTRIBUTE8 <> C2.NEW_ATTRIBUTE8) THEN
1134 l_party_tbl(i).ATTRIBUTE8 := C2.NEW_ATTRIBUTE8;
1135 END IF;
1136
1137 IF (C2.OLD_ATTRIBUTE9 IS NULL AND C2.NEW_ATTRIBUTE9 IS NOT NULL)
1138 OR (C2.OLD_ATTRIBUTE9 IS NOT NULL AND C2.NEW_ATTRIBUTE9 IS NULL)
1139 OR (C2.OLD_ATTRIBUTE9 <> C2.NEW_ATTRIBUTE9) THEN
1140 l_party_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
1141 END IF;
1142
1143
1144 IF (C2.OLD_ATTRIBUTE10 IS NULL AND C2.NEW_ATTRIBUTE10 IS NOT NULL)
1145 OR (C2.OLD_ATTRIBUTE10 IS NOT NULL AND C2.NEW_ATTRIBUTE10 IS NULL)
1146 OR (C2.OLD_ATTRIBUTE10 <> C2.NEW_ATTRIBUTE10) THEN
1147 l_party_tbl(i).ATTRIBUTE10 := C2.NEW_ATTRIBUTE10;
1148 END IF;
1149
1150
1151
1152 IF (C2.OLD_ATTRIBUTE11 IS NULL AND C2.NEW_ATTRIBUTE11 IS NOT NULL)
1153 OR (C2.OLD_ATTRIBUTE11 IS NOT NULL AND C2.NEW_ATTRIBUTE11 IS NULL)
1154 OR (C2.OLD_ATTRIBUTE11 <> C2.NEW_ATTRIBUTE11) THEN
1155 l_party_tbl(i).ATTRIBUTE11 := C2.NEW_ATTRIBUTE11;
1156 END IF;
1157
1158 IF (C2.OLD_ATTRIBUTE12 IS NULL AND C2.NEW_ATTRIBUTE12 IS NOT NULL)
1159 OR (C2.OLD_ATTRIBUTE12 IS NOT NULL AND C2.NEW_ATTRIBUTE12 IS NULL)
1160 OR (C2.OLD_ATTRIBUTE12 <> C2.NEW_ATTRIBUTE12) THEN
1161 l_party_tbl(i).ATTRIBUTE12 := C2.NEW_ATTRIBUTE12;
1162 END IF;
1163
1164
1165 IF (C2.OLD_ATTRIBUTE13 IS NULL AND C2.NEW_ATTRIBUTE13 IS NOT NULL)
1166 OR (C2.OLD_ATTRIBUTE13 IS NOT NULL AND C2.NEW_ATTRIBUTE13 IS NULL)
1167 OR (C2.OLD_ATTRIBUTE13 <> C2.NEW_ATTRIBUTE13) THEN
1168 l_party_tbl(i).ATTRIBUTE13 := C2.NEW_ATTRIBUTE13;
1169 END IF;
1170
1171
1172 IF (C2.OLD_ATTRIBUTE14 IS NULL AND C2.NEW_ATTRIBUTE14 IS NOT NULL)
1173 OR (C2.OLD_ATTRIBUTE14 IS NOT NULL AND C2.NEW_ATTRIBUTE14 IS NULL)
1174 OR (C2.OLD_ATTRIBUTE14 <> C2.NEW_ATTRIBUTE14) THEN
1175 l_party_tbl(i).ATTRIBUTE14 := C2.NEW_ATTRIBUTE14;
1176 END IF;
1177
1178 IF (C2.OLD_ATTRIBUTE15 IS NULL AND C2.NEW_ATTRIBUTE15 IS NOT NULL)
1179 OR (C2.OLD_ATTRIBUTE15 IS NOT NULL AND C2.NEW_ATTRIBUTE15 IS NULL)
1180 OR (C2.OLD_ATTRIBUTE15 <> C2.NEW_ATTRIBUTE15) THEN
1181 l_party_tbl(i).ATTRIBUTE15 := C2.NEW_ATTRIBUTE15;
1182 END IF;
1183
1184 IF (C2.OLD_PRIMARY_FLAG IS NULL AND C2.NEW_PRIMARY_FLAG IS NOT NULL)
1185 OR (C2.OLD_PRIMARY_FLAG IS NOT NULL AND C2.NEW_PRIMARY_FLAG IS NULL)
1186 OR (C2.OLD_PRIMARY_FLAG <> C2.NEW_PRIMARY_FLAG) THEN
1187 l_party_tbl(i).PRIMARY_FLAG := C2.NEW_PRIMARY_FLAG;
1188 END IF;
1189
1190 IF (C2.OLD_PREFERRED_FLAG IS NULL AND C2.NEW_PREFERRED_FLAG IS NOT NULL)
1191 OR (C2.OLD_PREFERRED_FLAG IS NOT NULL AND C2.NEW_PREFERRED_FLAG IS NULL)
1192 OR (C2.OLD_PREFERRED_FLAG <> C2.NEW_PREFERRED_FLAG) THEN
1193 l_party_tbl(i).PREFERRED_FLAG := C2.NEW_PREFERRED_FLAG;
1194 END IF;
1195
1196 END LOOP;
1197 EXCEPTION
1198 WHEN Process_next THEN
1199 NULL;
1200 END;
1201 END LOOP;
1202 x_party_tbl.DELETE;
1203 IF l_party_tbl.count > 0 THEN
1204 FOR pty_row in l_party_tbl.FIRST .. l_party_tbl.LAST
1205 LOOP
1206 IF l_party_tbl.EXISTS(pty_row) THEN
1207 l_pty_count := l_pty_count + 1;
1208 x_party_tbl(l_pty_count) := l_party_tbl(pty_row);
1209 END IF;
1210 END LOOP;
1211 END IF;
1212 END IF;
1213 END Construct_pty_from_hist;
1214
1215
1216 /*----------------------------------------------------------*/
1217 /* Procedure name: Get_Pty_Column_Values */
1218 /* Description : This procudure gets the column values */
1219 /* for the Dynamic SQL */
1220 /*----------------------------------------------------------*/
1221
1222 PROCEDURE Get_Pty_Column_Values
1223 (
1224 p_get_pty_cursor_id IN NUMBER ,
1225 x_party_rec OUT NOCOPY csi_datastructures_pub.party_header_rec
1226 ) IS
1227
1228 BEGIN
1229
1230 dbms_sql.column_value(p_get_pty_cursor_id, 1, x_party_rec.instance_party_id);
1231 dbms_sql.column_value(p_get_pty_cursor_id, 2, x_party_rec.instance_id);
1232 dbms_sql.column_value(p_get_pty_cursor_id, 3, x_party_rec.party_source_table);
1233 dbms_sql.column_value(p_get_pty_cursor_id, 4, x_party_rec.party_id);
1234 dbms_sql.column_value(p_get_pty_cursor_id, 5, x_party_rec.relationship_type_code);
1235 dbms_sql.column_value(p_get_pty_cursor_id, 6, x_party_rec.contact_flag);
1236 dbms_sql.column_value(p_get_pty_cursor_id, 7, x_party_rec.contact_ip_id);
1237 dbms_sql.column_value(p_get_pty_cursor_id, 8, x_party_rec.active_start_date);
1238 dbms_sql.column_value(p_get_pty_cursor_id, 9, x_party_rec.active_end_date);
1239 dbms_sql.column_value(p_get_pty_cursor_id, 10, x_party_rec.context);
1240 dbms_sql.column_value(p_get_pty_cursor_id, 11, x_party_rec.attribute1);
1241 dbms_sql.column_value(p_get_pty_cursor_id, 12, x_party_rec.attribute2);
1242 dbms_sql.column_value(p_get_pty_cursor_id, 13, x_party_rec.attribute3);
1243 dbms_sql.column_value(p_get_pty_cursor_id, 14, x_party_rec.attribute4);
1244 dbms_sql.column_value(p_get_pty_cursor_id, 15, x_party_rec.attribute5);
1245 dbms_sql.column_value(p_get_pty_cursor_id, 16, x_party_rec.attribute6);
1246 dbms_sql.column_value(p_get_pty_cursor_id, 17, x_party_rec.attribute7);
1247 dbms_sql.column_value(p_get_pty_cursor_id, 18, x_party_rec.attribute8);
1248 dbms_sql.column_value(p_get_pty_cursor_id, 19, x_party_rec.attribute9);
1249 dbms_sql.column_value(p_get_pty_cursor_id, 20, x_party_rec.attribute10);
1250 dbms_sql.column_value(p_get_pty_cursor_id, 21, x_party_rec.attribute11);
1251 dbms_sql.column_value(p_get_pty_cursor_id, 22, x_party_rec.attribute12);
1252 dbms_sql.column_value(p_get_pty_cursor_id, 23, x_party_rec.attribute13);
1253 dbms_sql.column_value(p_get_pty_cursor_id, 24, x_party_rec.attribute14);
1254 dbms_sql.column_value(p_get_pty_cursor_id, 25, x_party_rec.attribute15);
1255 dbms_sql.column_value(p_get_pty_cursor_id, 26, x_party_rec.object_version_number);
1256 dbms_sql.column_value(p_get_pty_cursor_id, 27, x_party_rec.primary_flag);
1257 dbms_sql.column_value(p_get_pty_cursor_id, 28, x_party_rec.preferred_flag);
1258
1259 END Get_Pty_Column_Values;
1260
1261 /*----------------------------------------------------------*/
1262 /* Procedure name: Define_Pty_Columns */
1263 /* Description : This procudure defines the columns */
1264 /* for the Dynamic SQL */
1265 /*----------------------------------------------------------*/
1266
1267 PROCEDURE Define_Pty_Columns
1268 (
1269 p_get_pty_cursor_id IN NUMBER
1270 ) IS
1271 l_party_rec csi_datastructures_pub.party_header_rec;
1272 BEGIN
1273
1274 dbms_sql.define_column(p_get_pty_cursor_id, 1, l_party_rec.instance_party_id);
1275 dbms_sql.define_column(p_get_pty_cursor_id, 2, l_party_rec.instance_id);
1276 dbms_sql.define_column(p_get_pty_cursor_id, 3, l_party_rec.party_source_table ,30);
1277 dbms_sql.define_column(p_get_pty_cursor_id, 4, l_party_rec.party_id);
1278 dbms_sql.define_column(p_get_pty_cursor_id, 5, l_party_rec.relationship_type_code ,30);
1279 dbms_sql.define_column(p_get_pty_cursor_id, 6, l_party_rec.contact_flag,1);
1280 dbms_sql.define_column(p_get_pty_cursor_id, 7, l_party_rec.contact_ip_id);
1281 dbms_sql.define_column(p_get_pty_cursor_id, 8, l_party_rec.active_start_date);
1282 dbms_sql.define_column(p_get_pty_cursor_id, 9, l_party_rec.active_end_date);
1283 dbms_sql.define_column(p_get_pty_cursor_id, 10, l_party_rec.context,30);
1284 dbms_sql.define_column(p_get_pty_cursor_id, 11, l_party_rec.attribute1,150);
1285 dbms_sql.define_column(p_get_pty_cursor_id, 12, l_party_rec.attribute2,150);
1286 dbms_sql.define_column(p_get_pty_cursor_id, 13, l_party_rec.attribute3,150);
1287 dbms_sql.define_column(p_get_pty_cursor_id, 14, l_party_rec.attribute4,150);
1288 dbms_sql.define_column(p_get_pty_cursor_id, 15, l_party_rec.attribute5,150);
1289 dbms_sql.define_column(p_get_pty_cursor_id, 16, l_party_rec.attribute6,150);
1290 dbms_sql.define_column(p_get_pty_cursor_id, 17, l_party_rec.attribute7,150);
1291 dbms_sql.define_column(p_get_pty_cursor_id, 18, l_party_rec.attribute8,150);
1292 dbms_sql.define_column(p_get_pty_cursor_id, 19, l_party_rec.attribute9,150);
1293 dbms_sql.define_column(p_get_pty_cursor_id, 20, l_party_rec.attribute10,150);
1294 dbms_sql.define_column(p_get_pty_cursor_id, 21, l_party_rec.attribute11,150);
1295 dbms_sql.define_column(p_get_pty_cursor_id, 22, l_party_rec.attribute12,150);
1296 dbms_sql.define_column(p_get_pty_cursor_id, 23, l_party_rec.attribute13,150);
1297 dbms_sql.define_column(p_get_pty_cursor_id, 24, l_party_rec.attribute14,150);
1298 dbms_sql.define_column(p_get_pty_cursor_id, 25, l_party_rec.attribute15,150);
1299 dbms_sql.define_column(p_get_pty_cursor_id, 26, l_party_rec.object_version_number);
1300 dbms_sql.define_column(p_get_pty_cursor_id, 27, l_party_rec.primary_flag,1);
1301 dbms_sql.define_column(p_get_pty_cursor_id, 28, l_party_rec.preferred_flag,1);
1302
1303 END Define_Pty_Columns;
1304
1305
1306 /*----------------------------------------------------------*/
1307 /* Procedure name: Bind_Pty_variable */
1308 /* Description : Procedure used to generate the where */
1309 /* cluase for Party relationship */
1310 /*----------------------------------------------------------*/
1311
1312 PROCEDURE Bind_Pty_variable
1313 (
1314 p_party_query_rec IN csi_datastructures_pub.party_query_rec,
1315 p_cur_get_pty_rel IN NUMBER
1316 ) IS
1317
1318 BEGIN
1319
1320 IF( (p_party_query_rec.instance_party_id IS NOT NULL)
1321 AND (p_party_query_rec.instance_party_id <> FND_API.G_MISS_NUM)) THEN
1322 DBMS_SQL.BIND_VARIABLE(p_cur_get_pty_rel, ':instance_party_id', p_party_query_rec.instance_party_id);
1323 END IF;
1324
1325 IF( (p_party_query_rec.instance_id IS NOT NULL)
1326 AND (p_party_query_rec.instance_id <> FND_API.G_MISS_NUM)) THEN
1327 DBMS_SQL.BIND_VARIABLE(p_cur_get_pty_rel, ':instance_id', p_party_query_rec.instance_id);
1328 END IF;
1329
1330 IF( (p_party_query_rec.party_id IS NOT NULL)
1331 AND (p_party_query_rec.party_id <> FND_API.G_MISS_NUM)) THEN
1332 DBMS_SQL.BIND_VARIABLE(p_cur_get_pty_rel, ':party_id', p_party_query_rec.party_id);
1333 END IF;
1334
1335 IF( (p_party_query_rec.relationship_type_code IS NOT NULL)
1336 AND (p_party_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR)) THEN
1337 DBMS_SQL.BIND_VARIABLE(p_cur_get_pty_rel, ':relationship_type_code', p_party_query_rec.relationship_type_code);
1338 END IF;
1339
1340 END Bind_Pty_variable;
1341
1342 /*----------------------------------------------------------*/
1343 /* Procedure name: Gen_Pty_Where_Clause */
1344 /* Description : Procedure used to generate the where */
1345 /* clause for Party relationship */
1346 /*----------------------------------------------------------*/
1347
1348 PROCEDURE Gen_Pty_Where_Clause
1349 (
1350 p_party_query_rec IN csi_datastructures_pub.party_query_rec
1351 ,x_where_clause OUT NOCOPY VARCHAR2
1352 ) IS
1353
1354 BEGIN
1355
1356 -- Assign null at the start
1357 x_where_clause := '';
1358
1359 IF (( p_party_query_rec.instance_party_id IS NOT NULL) AND
1360 ( p_party_query_rec.instance_party_id <> FND_API.G_MISS_NUM)) THEN
1361 x_where_clause := ' instance_party_id = :instance_party_id ';
1362 ELSIF ( p_party_query_rec.instance_party_id IS NULL) THEN
1363 x_where_clause := ' instance_party_id IS NULL ';
1364 END IF;
1365
1366 IF ((p_party_query_rec.instance_id IS NOT NULL) AND
1367 (p_party_query_rec.instance_id <> FND_API.G_MISS_NUM)) THEN
1368 IF x_where_clause IS NULL THEN
1369 x_where_clause := ' instance_id = :instance_id ';
1370 ELSE
1371 x_where_clause := x_where_clause||' AND '||' instance_id = :instance_id ';
1372 END IF;
1373 ELSIF (p_party_query_rec.instance_id IS NULL) THEN
1374 IF x_where_clause IS NULL THEN
1375 x_where_clause := ' instance_id IS NULL ';
1376 ELSE
1377 x_where_clause := x_where_clause||' AND '||' instance_id IS NULL';
1378 END IF;
1379 END IF;
1380
1381 IF ((p_party_query_rec.party_id IS NOT NULL) AND
1382 (p_party_query_rec.party_id <> FND_API.G_MISS_NUM)) THEN
1383 IF x_where_clause IS NULL THEN
1384 x_where_clause := ' party_id = :party_id ';
1385 ELSE
1386 x_where_clause := x_where_clause||' AND '||' party_id = :party_id ';
1387 END IF;
1388 ELSIF (p_party_query_rec.party_id IS NULL) THEN
1389 IF x_where_clause IS NULL THEN
1390 x_where_clause := ' party_id IS NULL ';
1391 ELSE
1392 x_where_clause := x_where_clause||' AND '||' party_id IS NULL ';
1393 END IF;
1394 END IF ;
1395
1396 IF ((p_party_query_rec.relationship_type_code IS NOT NULL) AND
1397 (p_party_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR)) THEN
1398 IF x_where_clause IS NULL THEN
1399 x_where_clause := ' relationship_type_code = :relationship_type_code ';
1400 ELSE
1401 x_where_clause := x_where_clause||' AND '||
1402 ' relationship_type_code = :relationship_type_code ';
1403 END IF;
1404 ELSIF (p_party_query_rec.relationship_type_code IS NULL) THEN
1405 IF x_where_clause IS NULL THEN
1406 x_where_clause := ' relationship_type_code IS NULL ';
1407 ELSE
1408 x_where_clause := x_where_clause||' AND '||
1409 ' relationship_type_code IS NULL ';
1410 END IF;
1411 END IF;
1412
1413 END Gen_Pty_Where_Clause;
1414
1415
1416 /*-------------------------------------------------------------*/
1417 /* Procedure name:Create_inst_party_realationships */
1418 /* Description : Procedure used to create new instance-party */
1419 /* relationships */
1420 /*-------------------------------------------------------------*/
1421
1422 PROCEDURE create_inst_party_relationship
1423 ( p_api_version IN NUMBER
1424 ,p_commit IN VARCHAR2
1425 ,p_init_msg_list IN VARCHAR2
1426 ,p_validation_level IN NUMBER
1427 ,p_party_rec IN OUT NOCOPY csi_datastructures_pub.party_rec
1428 ,p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
1429 ,x_return_status OUT NOCOPY VARCHAR2
1430 ,x_msg_count OUT NOCOPY NUMBER
1431 ,x_msg_data OUT NOCOPY VARCHAR2
1432 ,p_party_source_tbl IN OUT NOCOPY csi_party_relationships_pvt.party_source_tbl
1433 ,p_party_id_tbl IN OUT NOCOPY csi_party_relationships_pvt.party_id_tbl
1434 ,p_contact_tbl IN OUT NOCOPY csi_party_relationships_pvt.contact_tbl
1435 ,p_party_rel_type_tbl IN OUT NOCOPY csi_party_relationships_pvt.party_rel_type_tbl
1436 ,p_party_count_rec IN OUT NOCOPY csi_party_relationships_pvt.party_count_rec
1437 ,p_called_from_grp IN VARCHAR2
1438
1439 ) IS
1440
1441 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_INST_PARTY_RELATIONSHIP';
1442 l_api_version CONSTANT NUMBER := 1.0;
1443 l_csi_debug_level NUMBER;
1444 l_party_rec csi_datastructures_pub.party_rec;
1445 l_msg_index NUMBER;
1446 l_msg_count NUMBER;
1447 l_process_flag BOOLEAN := TRUE;
1448 l_inst_party_his_id NUMBER;
1449 l_record_found BOOLEAN := FALSE;
1450 l_exists_flag VARCHAR2(1);
1451 l_valid_flag VARCHAR2(1);
1452 l_exists VARCHAR2(1);
1453
1454 BEGIN
1455 -- Standard Start of API savepoint
1456 SAVEPOINT create_inst_party_rel_pvt;
1457
1458 -- Standard call to check for call compatibility.
1459 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
1460 p_api_version ,
1461 l_api_name ,
1462 g_pkg_name )
1463 THEN
1464 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1465 END IF;
1466
1467 -- Initialize message list if p_init_msg_list is set to TRUE.
1468 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1469 FND_MSG_PUB.initialize;
1470 END IF;
1471
1472 -- Initialize API return status to success
1473 x_return_status := FND_API.G_RET_STS_SUCCESS;
1474
1475 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
1476 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
1477
1478 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
1479 IF (l_csi_debug_level > 0) THEN
1480 csi_gen_utility_pvt.put_line( 'create_inst_party_relationship');
1481 END IF;
1482
1483 -- If the debug level = 2 then dump all the parameters values.
1484 IF (l_csi_debug_level> 1) THEN
1485 csi_gen_utility_pvt.put_line( 'create_inst_party_relationship'||
1486 p_api_version ||'-'||
1487 p_commit ||'-'||
1488 p_init_msg_list );
1489 -- Dump the records in the log file
1490 csi_gen_utility_pvt.dump_party_rec(p_party_rec);
1491 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
1492
1493 END IF;
1494
1495
1496 -- Start API body
1497 --
1498 -- Check if all the required parameters are passed
1499 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
1500 ( p_party_rec.INSTANCE_ID ,
1501 ' p_party_rec.INSTANCE_ID ',
1502 l_api_name );
1503 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_char
1504 ( p_party_rec.PARTY_SOURCE_TABLE ,
1505 ' p_party_rec.PARTY_SOURCE_TABLE ',
1506 l_api_name );
1507 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
1508 ( p_party_rec.PARTY_ID ,
1509 ' p_party_rec.PARTY_ID ',
1510 l_api_name );
1511
1512 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_char
1513 ( p_party_rec.RELATIONSHIP_TYPE_CODE,
1514 ' p_party_rec.RELATIONSHIP_TYPE_CODE',
1515 l_api_name );
1516
1517 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_char
1518 ( p_party_rec.CONTACT_FLAG,
1519 ' p_party_rec.CONTACT_FLAG',
1520 l_api_name );
1521
1522 -- Initialize the count
1523 IF p_party_count_rec.party_source_count is NULL OR
1524 p_party_count_rec.party_source_count = FND_API.G_MISS_NUM THEN
1525 p_party_count_rec.party_source_count := 0;
1526 END IF;
1527 --
1528 IF p_party_count_rec.party_id_count is NULL OR
1529 p_party_count_rec.party_id_count = FND_API.G_MISS_NUM THEN
1530 p_party_count_rec.party_id_count := 0;
1531 END IF;
1532 --
1533 IF p_party_count_rec.contact_id_count is NULL OR
1534 p_party_count_rec.contact_id_count = FND_API.G_MISS_NUM THEN
1535 p_party_count_rec.contact_id_count := 0;
1536 END IF;
1537 --
1538 IF p_party_count_rec.rel_type_count is NULL OR
1539 p_party_count_rec.rel_type_count = FND_API.G_MISS_NUM THEN
1540 p_party_count_rec.rel_type_count := 0;
1541 END IF;
1542 --
1543 -- Check if the party is expired
1544 -- If so unexpire the instance party relationship
1545 -- Added by sk for bug 2232880
1546 l_record_found := FALSE;
1547 IF ( (p_called_from_grp <> FND_API.G_TRUE) AND
1548 (p_party_rec.instance_party_id IS NULL OR
1549 p_party_rec.instance_party_id = fnd_api.g_miss_num) )
1550 THEN
1551 BEGIN
1552 SELECT instance_party_id,
1553 object_version_number,
1554 active_start_date
1555 INTO p_party_rec.instance_party_id,
1556 p_party_rec.object_version_number,
1557 p_party_rec.active_start_date
1558 FROM csi_i_parties
1559 WHERE instance_id = p_party_rec.instance_id
1560 AND party_source_table = p_party_rec.party_source_table
1561 AND party_id = p_party_rec.party_id
1562 AND relationship_type_code = p_party_rec.relationship_type_code
1563 AND contact_flag = p_party_rec.contact_flag
1564 AND nvl(contact_ip_id,fnd_api.g_miss_num) = nvl(p_party_rec.contact_ip_id,fnd_api.g_miss_num)
1565 AND active_end_date < SYSDATE
1566 AND ROWNUM=1;
1567 l_record_found := TRUE;
1568 EXCEPTION
1569 WHEN OTHERS THEN
1570 NULL;
1571 END;
1572 END IF;
1573 --
1574 IF l_record_found THEN
1575 /* -- Commented by sk for bug 2232880
1576 IF (CSI_Instance_parties_vld_pvt.Is_Party_Expired
1577 (p_party_rec)) THEN
1578 IF (p_party_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
1579 p_party_rec.ACTIVE_END_DATE := NULL;
1580 END IF;
1581 */ --End commentation by sk for bug 2232880
1582 -- Unexpire the instance party relationship
1583 -- Unexpire the instance party relationship
1584 IF p_party_rec.active_end_date = fnd_api.g_miss_date
1585 THEN
1586 p_party_rec.active_end_date := NULL;
1587 END IF;
1588 update_inst_party_relationship
1589 ( p_api_version => p_api_version
1590 ,p_commit => p_commit
1591 ,p_init_msg_list => p_init_msg_list
1592 ,p_validation_level => p_validation_level
1593 ,p_party_rec => p_party_rec
1594 ,p_txn_rec => p_txn_rec
1595 ,x_return_status => x_return_status
1596 ,x_msg_count => x_msg_count
1597 ,x_msg_data => x_msg_data ) ;
1598
1599 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1600 l_msg_index := 1;
1601 l_msg_count := x_msg_count;
1602 WHILE l_msg_count > 0 LOOP
1603 x_msg_data := FND_MSG_PUB.GET(
1604 l_msg_index,
1605 FND_API.G_FALSE );
1606 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
1607 l_msg_index := l_msg_index + 1;
1608 l_msg_count := l_msg_count - 1;
1609 END LOOP;
1610 RAISE FND_API.G_EXC_ERROR;
1611 END IF;
1612 ELSE -- -- Added by sk for bug 2232880 l_record not found
1613 --END IF; -- commented by sk for bug 2232880
1614 -- Verify if the Party rel combination exists
1615 IF p_called_from_grp <> FND_API.G_TRUE THEN
1616 IF (CSI_Instance_parties_vld_pvt.Is_Party_Rel_Comb_Exists
1617 (p_party_rec.instance_id ,
1618 p_party_rec.party_source_table ,
1619 p_party_rec.party_id ,
1620 p_party_rec.relationship_type_code ,
1621 p_party_rec.contact_flag ,
1622 p_party_rec.contact_ip_id ,
1623 TRUE )) THEN
1624 RAISE FND_API.G_EXC_ERROR;
1625 END IF;
1626 END IF;
1627 --
1628 IF p_party_rec.INSTANCE_PARTY_ID is NULL OR
1629 p_party_rec.INSTANCE_PARTY_ID = FND_API.G_MISS_NUM THEN
1630
1631 -- If the instance_party_id passed is null then generate from sequence
1632 -- and check if the value exists . If exists then generate
1633 -- again from the sequence till we get a value that does not exist
1634 while l_process_flag loop
1635 p_party_rec.INSTANCE_PARTY_ID := CSI_Instance_parties_vld_pvt.gen_inst_party_id;
1636 IF NOT(CSI_Instance_parties_vld_pvt.Is_Inst_PartyID_exists(p_party_rec.INSTANCE_PARTY_ID,
1637 FALSE )) THEN
1638 l_process_flag := FALSE;
1639 END IF;
1640 end loop;
1641 ELSE
1642 -- Validate the instance_party_id if exist then raise CSI_API_INVALID_PRIMARY_KEY error
1643 IF CSI_Instance_parties_vld_pvt.Is_Inst_PartyID_exists(p_party_rec.INSTANCE_PARTY_ID,
1644 TRUE ) THEN
1645 RAISE FND_API.G_EXC_ERROR;
1646 END IF;
1647 END IF;
1648
1649 -- Verify if the instance_id exists in csi_item_instances
1650 IF p_called_from_grp <> FND_API.G_TRUE THEN
1651 IF NOT(CSI_Instance_parties_vld_pvt.Is_InstanceID_Valid(p_party_rec.INSTANCE_ID)) THEN
1652 RAISE FND_API.G_EXC_ERROR;
1653 END IF;
1654 END IF;
1655
1656 -- Verify if the party_source_table exists in CSI_LOOKUPS
1657 -- Check the cache before hitting the database.
1658 l_exists_flag := 'N';
1659 l_valid_flag := 'Y';
1660 IF p_party_source_tbl.count > 0 THEN
1661 FOR src_count in p_party_source_tbl.FIRST .. p_party_source_tbl.LAST
1662 LOOP
1663 IF p_party_source_tbl(src_count).party_source_table = p_party_rec.PARTY_SOURCE_TABLE THEN
1664 l_valid_flag := p_party_source_tbl(src_count).valid_flag;
1665 l_exists_flag := 'Y';
1666 exit;
1667 END IF;
1668 END LOOP;
1669 --
1670 IF l_valid_flag <> 'Y' THEN
1671 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_PARTY_SOURCE');
1672 FND_MESSAGE.SET_TOKEN('PARTY_SOURCE_TABLE',p_party_rec.PARTY_SOURCE_TABLE);
1673 FND_MSG_PUB.Add;
1674 RAISE FND_API.G_EXC_ERROR;
1675 END IF;
1676 END IF;
1677 --
1678 IF l_exists_flag = 'N' THEN
1679 p_party_count_rec.party_source_count := p_party_count_rec.party_source_count + 1;
1680 p_party_source_tbl(p_party_count_rec.party_source_count).party_source_table := p_party_rec.PARTY_SOURCE_TABLE;
1681 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_Source_tab_Valid(p_party_rec.PARTY_SOURCE_TABLE)) THEN
1682 p_party_source_tbl(p_party_count_rec.party_source_count).valid_flag := 'N';
1683 RAISE FND_API.G_EXC_ERROR;
1684 ELSE
1685 p_party_source_tbl(p_party_count_rec.party_source_count).valid_flag := 'Y';
1686 END IF;
1687 END IF;
1688
1689 -- Verify if the party_id is valid from HZ_parties,PO_vendors and employee tables
1690 -- based on the value of party_source_table
1691 -- Check the cache before hitting the database.
1692 l_exists_flag := 'N';
1693 l_valid_flag := 'Y';
1694 IF p_party_id_tbl.count > 0 THEN
1695 For party_count IN p_party_id_tbl.FIRST .. p_party_id_tbl.LAST
1696 LOOP
1697 IF p_party_id_tbl(party_count).party_id = p_party_rec.PARTY_ID AND
1698 p_party_id_tbl(party_count).party_source_table = p_party_rec.PARTY_SOURCE_TABLE AND
1699 nvl(p_party_id_tbl(party_count).contact_flag,'*') = nvl(p_party_rec.CONTACT_FLAG,'*') THEN
1700 l_valid_flag := p_party_id_tbl(party_count).valid_flag;
1701 l_exists_flag := 'Y';
1702 exit;
1703 END IF;
1704 --
1705 IF l_valid_flag <> 'Y' THEN
1706 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_PARTY_ID');
1707 FND_MESSAGE.SET_TOKEN('PARTY_ID',p_party_rec.PARTY_ID);
1708 FND_MSG_PUB.Add;
1709 RAISE FND_API.G_EXC_ERROR;
1710 END IF;
1711 END LOOP;
1712 END IF;
1713 --
1714 IF l_exists_flag <> 'Y' THEN
1715 p_party_count_rec.party_id_count := p_party_count_rec.party_id_count + 1;
1716 p_party_id_tbl(p_party_count_rec.party_id_count).party_id := p_party_rec.PARTY_ID;
1717 p_party_id_tbl(p_party_count_rec.party_id_count).party_source_table := p_party_rec.PARTY_SOURCE_TABLE;
1718 p_party_id_tbl(p_party_count_rec.party_id_count).contact_flag := p_party_rec.CONTACT_FLAG;
1719 IF NOT(CSI_Instance_parties_vld_pvt.Is_Party_Valid
1720 (p_party_rec.PARTY_SOURCE_TABLE ,
1721 p_party_rec.PARTY_ID ,
1722 p_party_rec.CONTACT_FLAG)) THEN
1723 p_party_id_tbl(p_party_count_rec.party_id_count).valid_flag := 'N';
1724 RAISE FND_API.G_EXC_ERROR;
1725 ELSE
1726 p_party_id_tbl(p_party_count_rec.party_id_count).valid_flag := 'Y';
1727 END IF;
1728 END IF;
1729
1730 --
1731 --
1732 -- Added by rtalluri on 07/25/03 (Bug. 2990027)
1733 -- Contact_flag for the owner party should be 'N', if not then raise an error
1734 IF ((p_party_rec.relationship_type_code = 'OWNER')
1735 AND (p_party_rec.contact_flag = 'Y'))
1736 THEN
1737 FND_MESSAGE.SET_NAME('CSI', 'CSI_INVALID_OWNER_CONTACT');
1738 FND_MESSAGE.SET_TOKEN('CONTACT_FLAG', p_party_rec.CONTACT_FLAG);
1739 FND_MESSAGE.SET_TOKEN('RELATIONSHIP_TYPE_CODE', p_party_rec.RELATIONSHIP_TYPE_CODE);
1740 FND_MSG_PUB.ADD;
1741 RAISE FND_API.G_EXC_ERROR;
1742 END IF;
1743 --
1744 -- Verify that the contact_ip_id is null, if the contact_flag is 'N'
1745 IF p_party_rec.CONTACT_FLAG = 'N'
1746 THEN
1747 IF ((p_party_rec.CONTACT_IP_ID <> FND_API.G_MISS_NUM)
1748 AND (p_party_rec.CONTACT_IP_ID IS NOT NULL))
1749 THEN
1750 FND_MESSAGE.SET_NAME('CSI', 'CSI_CANNOT_CREATE_CONTACT');
1751 FND_MESSAGE.SET_TOKEN('CONTACT_FLAG', p_party_rec.CONTACT_FLAG);
1752 FND_MESSAGE.SET_TOKEN('CONTACT_IP_ID', p_party_rec.CONTACT_IP_ID);
1753 FND_MSG_PUB.ADD;
1754 RAISE FND_API.G_EXC_ERROR;
1755 END IF;
1756 END IF;
1757 --
1758 -- Verify that the contact_ip_id used to create a contact
1759 -- is not used by any other instance
1760 IF p_called_from_grp <> FND_API.G_TRUE THEN
1761 IF p_party_rec.CONTACT_FLAG = 'Y'
1762 THEN
1763 IF ((p_party_rec.CONTACT_IP_ID <> FND_API.G_MISS_NUM)
1764 AND (p_party_rec.CONTACT_IP_ID IS NOT NULL ))
1765 THEN
1766 l_exists := NULL;
1767 BEGIN
1768 SELECT 'X'
1769 INTO l_exists
1770 FROM csi_i_parties
1771 WHERE instance_id <> p_party_rec.INSTANCE_ID
1772 AND instance_party_id = p_party_rec.CONTACT_IP_ID;
1773
1774 IF l_exists IS NOT NULL THEN
1775 FND_MESSAGE.SET_NAME('CSI', 'CSI_INVALID_CONTACT_ID');
1776 FND_MESSAGE.SET_TOKEN('CONTACT_FLAG', p_party_rec.CONTACT_FLAG);
1777 FND_MESSAGE.SET_TOKEN('CONTACT_IP_ID', p_party_rec.CONTACT_IP_ID);
1778 FND_MSG_PUB.Add;
1779 RAISE FND_API.G_EXC_ERROR;
1780 END IF;
1781 EXCEPTION
1782 WHEN NO_DATA_FOUND THEN
1783 NULL;
1784 END;
1785 ELSE
1786 FND_MESSAGE.SET_NAME('CSI', 'CSI_INVALID_CONTACT_ID');
1787 FND_MESSAGE.SET_TOKEN('CONTACT_FLAG', p_party_rec.CONTACT_FLAG);
1788 FND_MESSAGE.SET_TOKEN('CONTACT_IP_ID', p_party_rec.CONTACT_IP_ID);
1789 FND_MSG_PUB.Add;
1790 RAISE FND_API.G_EXC_ERROR;
1791 END IF;
1792 END IF;
1793 END IF;
1794 --
1795 -- End of Addition by rtalluri on 07/25/03 (Bug. 2990027)
1796 --
1797
1798 -- Verify the contact_ip_id is valid contact for Party if the contact_flag is 'Y'
1799 IF p_party_rec.contact_flag = 'Y' THEN
1800 IF p_called_from_grp <> FND_API.G_TRUE THEN
1801 -- Check the cache before hitting the database.
1802 l_exists_flag := 'N';
1803 l_valid_flag := 'Y';
1804 IF p_contact_tbl.count > 0 THEN
1805 For contact_count in p_contact_tbl.FIRST .. p_contact_tbl.LAST
1806 LOOP
1807 IF p_contact_tbl(contact_count).contact_party_id = p_party_rec.PARTY_ID AND
1808 p_contact_tbl(contact_count).party_source_table = p_party_rec.PARTY_SOURCE_TABLE AND
1809 p_contact_tbl(contact_count).contact_ip_id = p_party_rec.CONTACT_IP_ID THEN
1810 l_valid_flag := p_contact_tbl(contact_count).valid_flag;
1811 l_exists_flag := 'Y';
1812 exit;
1813 END IF;
1814 END LOOP;
1815 --
1816 /*
1817 IF l_valid_flag <> 'Y' THEN
1818 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_CONTACT_INFO');
1819 FND_MESSAGE.SET_TOKEN('CONTACT_PARTY_ID',p_party_rec.PARTY_ID);
1820 FND_MESSAGE.SET_TOKEN('CONTACT_SOURCE_TABLE',p_party_rec.PARTY_SOURCE_TABLE);
1821 FND_MSG_PUB.Add;
1822 RAISE FND_API.G_EXC_ERROR;
1823 END IF;
1824 */ -- code commented by sguthiva for bug 2619247.
1825 END IF;
1826 --
1827 IF l_exists_flag <> 'Y' THEN
1828 p_party_count_rec.contact_id_count := p_party_count_rec.contact_id_count + 1;
1829 p_contact_tbl(p_party_count_rec.contact_id_count).contact_party_id := p_party_rec.PARTY_ID;
1830 p_contact_tbl(p_party_count_rec.contact_id_count).party_source_table := p_party_rec.PARTY_SOURCE_TABLE;
1831 p_contact_tbl(p_party_count_rec.contact_id_count).contact_ip_id := p_party_rec.CONTACT_IP_ID;
1832 /* code commented by sguthiva on 09-25-02 for bug 2377709
1833 IF NOT(CSI_Instance_parties_vld_pvt.Is_Contact_Valid
1834 (p_party_rec.PARTY_ID,
1835 p_party_rec.PARTY_SOURCE_TABLE,
1836 p_party_rec.CONTACT_IP_ID)) THEN
1837 p_contact_tbl(p_party_count_rec.contact_id_count).valid_flag := 'N';
1838 RAISE FND_API.G_EXC_ERROR;
1839 ELSE
1840 p_contact_tbl(p_party_count_rec.contact_id_count).valid_flag := 'Y';
1841 END IF;
1842 end of code comment */
1843 END IF;
1844 END IF; -- p_called_from_grp check
1845 -- Verify the relationship_type_code is valid
1846 -- Check the cache before hitting the database.
1847 l_exists_flag := 'N';
1848 l_valid_flag := 'Y';
1849 IF p_party_rel_type_tbl.count > 0 THEN
1850 For rel_type in p_party_rel_type_tbl.FIRST .. p_party_rel_type_tbl.LAST
1851 LOOP
1852 IF p_party_rel_type_tbl(rel_type).rel_type_code = p_party_rec.RELATIONSHIP_TYPE_CODE AND
1853 p_party_rel_type_tbl(rel_type).contact_flag = 'C' THEN
1854 l_valid_flag := p_party_rel_type_tbl(rel_type).valid_flag;
1855 l_exists_flag := 'Y';
1856 exit;
1857 END IF;
1858 END LOOP;
1859 --
1860 IF l_valid_flag <> 'Y' THEN
1861 FND_MESSAGE.SET_NAME('CSI','CSI_API_INV_PARTY_TYPE_CODE');
1862 FND_MESSAGE.SET_TOKEN('RELATIONSHIP_TYPE_CODE',p_party_rec.RELATIONSHIP_TYPE_CODE);
1863 FND_MSG_PUB.Add;
1864 RAISE FND_API.G_EXC_ERROR;
1865 END IF;
1866 END IF;
1867 --
1868 IF l_exists_flag <> 'Y' THEN
1869 p_party_count_rec.rel_type_count := p_party_count_rec.rel_type_count + 1;
1870 p_party_rel_type_tbl(p_party_count_rec.rel_type_count).rel_type_code := p_party_rec.RELATIONSHIP_TYPE_CODE;
1871 p_party_rel_type_tbl(p_party_count_rec.rel_type_count).contact_flag := 'C';
1872 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_Rel_type_Valid
1873 (p_party_rec.RELATIONSHIP_TYPE_CODE,
1874 'C' )) THEN
1875 p_party_rel_type_tbl(p_party_count_rec.rel_type_count).valid_flag := 'N';
1876 RAISE FND_API.G_EXC_ERROR;
1877 ELSE
1878 p_party_rel_type_tbl(p_party_count_rec.rel_type_count).valid_flag := 'Y';
1879 END IF;
1880 END IF;
1881 ELSE
1882 -- Verify the relationship_type_code is valid
1883 -- Check the cache before hitting the database.
1884 l_exists_flag := 'N';
1885 l_valid_flag := 'Y';
1886 IF p_party_rel_type_tbl.count > 0 THEN
1887 For rel_type in p_party_rel_type_tbl.FIRST .. p_party_rel_type_tbl.LAST
1888 LOOP
1889 IF p_party_rel_type_tbl(rel_type).rel_type_code = p_party_rec.RELATIONSHIP_TYPE_CODE AND
1890 p_party_rel_type_tbl(rel_type).contact_flag = 'P' THEN
1891 l_valid_flag := p_party_rel_type_tbl(rel_type).valid_flag;
1892 l_exists_flag := 'Y';
1893 exit;
1894 END IF;
1895 END LOOP;
1896 --
1897 IF l_valid_flag <> 'Y' THEN
1898 FND_MESSAGE.SET_NAME('CSI','CSI_API_INV_PARTY_TYPE_CODE');
1899 FND_MESSAGE.SET_TOKEN('RELATIONSHIP_TYPE_CODE',p_party_rec.RELATIONSHIP_TYPE_CODE);
1900 FND_MSG_PUB.Add;
1901 RAISE FND_API.G_EXC_ERROR;
1902 END IF;
1903 END IF;
1904 --
1905 IF l_exists_flag <> 'Y' THEN
1906 p_party_count_rec.rel_type_count := p_party_count_rec.rel_type_count + 1;
1907 p_party_rel_type_tbl(p_party_count_rec.rel_type_count).rel_type_code := p_party_rec.RELATIONSHIP_TYPE_CODE;
1908 p_party_rel_type_tbl(p_party_count_rec.rel_type_count).contact_flag := 'P';
1909 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_Rel_type_Valid
1910 (p_party_rec.RELATIONSHIP_TYPE_CODE,
1911 'P' )) THEN
1912 p_party_rel_type_tbl(p_party_count_rec.rel_type_count).valid_flag := 'N';
1913 RAISE FND_API.G_EXC_ERROR;
1914 ELSE
1915 p_party_rel_type_tbl(p_party_count_rec.rel_type_count).valid_flag := 'Y';
1916 END IF;
1917 END IF;
1918 END IF;
1919
1920
1921 -- If active_start_date is null or G_MISS value then assign sysdate
1922 IF ((p_party_rec.ACTIVE_START_DATE IS NULL ) OR
1923 ( p_party_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE)) THEN
1924 p_party_rec.ACTIVE_START_DATE := SYSDATE;
1925 END IF;
1926
1927 -- verify if the active_start_date is valid
1928 IF p_called_from_grp <> FND_API.G_TRUE THEN
1929 IF NOT(CSI_Instance_parties_vld_pvt.Is_StartDate_Valid
1930 (p_party_rec.ACTIVE_START_DATE,
1931 p_party_rec.ACTIVE_END_DATE ,
1932 p_party_rec.INSTANCE_ID )) THEN
1933 RAISE FND_API.G_EXC_ERROR;
1934 END IF;
1935 END IF;
1936
1937 -- Verify if the active_end_date is valid
1938 IF p_called_from_grp <> FND_API.G_TRUE THEN
1939 IF ((p_party_rec.ACTIVE_END_DATE is NOT NULL) AND
1940 ( p_party_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE)) THEN
1941 IF NOT(CSI_Instance_parties_vld_pvt.Is_EndDate_Valid(p_party_rec.ACTIVE_START_DATE,
1942 p_party_rec.ACTIVE_END_DATE ,
1943 p_party_rec.INSTANCE_ID,
1944 p_party_rec.INSTANCE_PARTY_ID,
1945 p_txn_rec.TRANSACTION_ID)) THEN
1946 RAISE FND_API.G_EXC_ERROR;
1947 END IF;
1948 END IF;
1949 END IF;
1950
1951 -- Verify the instance owner exists already if exists then raise error
1952 IF p_called_from_grp <> FND_API.G_TRUE THEN
1953 IF p_party_rec.RELATIONSHIP_TYPE_CODE = 'OWNER' THEN
1954 IF CSI_Instance_parties_vld_pvt.Is_Inst_Owner_exists
1955 (p_instance_id => p_party_rec.INSTANCE_ID,
1956 p_instance_party_id => p_party_rec.instance_party_id ) THEN
1957 RAISE FND_API.G_EXC_ERROR;
1958 END IF;
1959 END IF;
1960 END IF;
1961
1962 -- Verify that there is only one Preferred Party for a
1963 -- given instance party relationship
1964 IF p_party_rec.PREFERRED_FLAG = 'Y' THEN
1965 IF p_party_rec.CONTACT_FLAG <> 'Y' THEN
1966 IF p_party_rec.PARTY_SOURCE_TABLE NOT IN ('GROUP','TEAM') THEN
1967 FND_MESSAGE.SET_NAME('CSI','CSI_PREFERRED_PTY_TYPE');
1968 FND_MESSAGE.SET_TOKEN('PARTY_TYPE',p_party_rec.PARTY_SOURCE_TABLE);
1969 FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_party_rec.INSTANCE_ID);
1970 FND_MSG_PUB.Add;
1971 RAISE FND_API.G_EXC_ERROR;
1972 END IF;
1973 END IF;
1974 END IF;
1975
1976 -- Verify that there is only one Primary Party for a
1977 -- given instance party relationship
1978 IF p_called_from_grp <> FND_API.G_TRUE THEN
1979 IF p_party_rec.PRIMARY_FLAG = 'Y' THEN
1980 IF p_party_rec.CONTACT_FLAG = 'Y' THEN
1981 IF CSI_Instance_parties_vld_pvt.Is_Primary_Contact_Pty
1982 (p_party_rec.INSTANCE_ID,
1983 p_party_rec.CONTACT_IP_ID,
1984 p_party_rec.RELATIONSHIP_TYPE_CODE,
1985 p_party_rec.ACTIVE_START_DATE,
1986 p_party_rec.ACTIVE_END_DATE) THEN
1987 RAISE FND_API.G_EXC_ERROR;
1988 END IF;
1989 ELSE
1990 IF p_party_rec.PARTY_SOURCE_TABLE NOT IN ('GROUP','TEAM') THEN
1991 FND_MESSAGE.SET_NAME('CSI','CSI_PRIMARY_PTY_TYPE');
1992 FND_MESSAGE.SET_TOKEN('PARTY_TYPE',p_party_rec.PARTY_SOURCE_TABLE);
1993 FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_party_rec.INSTANCE_ID);
1994 FND_MSG_PUB.Add;
1995 RAISE FND_API.G_EXC_ERROR;
1996 ELSE
1997 IF CSI_Instance_parties_vld_pvt.Is_Primary_Pty
1998 (p_party_rec.INSTANCE_ID,
1999 p_party_rec.RELATIONSHIP_TYPE_CODE,
2000 p_party_rec.ACTIVE_START_DATE,
2001 p_party_rec.ACTIVE_END_DATE) THEN
2002 RAISE FND_API.G_EXC_ERROR;
2003 END IF;
2004 END IF;
2005 END IF;
2006 END IF;
2007 END IF;
2008 --
2009 IF p_called_from_grp <> fnd_api.g_true THEN
2010 -- If it is an owner party then update csi_item_instances
2011 IF p_party_rec.RELATIONSHIP_TYPE_CODE = 'OWNER' THEN
2012 update csi_item_instances
2013 set owner_party_source_table = p_party_rec.party_source_table,
2014 owner_party_id = p_party_rec.party_id
2015 where instance_id = p_party_rec.instance_id;
2016
2017 END IF;
2018
2019 -- A contact marked as 'Primary' can also be marked as 'Preferred' or
2020 -- 'Non-Preferred' at the same time.
2021 IF p_party_rec.preferred_flag IS NULL OR
2022 p_party_rec.preferred_flag=fnd_api.g_miss_char
2023 THEN
2024 p_party_rec.preferred_flag:='N';
2025 END IF;
2026
2027 IF (p_party_rec.preferred_flag='E' OR
2028 p_party_rec.preferred_flag='e' )
2029 THEN
2030 p_party_rec.preferred_flag:='E';
2031 END IF;
2032
2033 -- A contact marked as Primary cannot be marked as 'Excluded'
2034 IF (p_party_rec.primary_flag IS NOT NULL AND
2035 p_party_rec.primary_flag <> fnd_api.g_miss_char AND
2036 p_party_rec.primary_flag = 'Y' ) AND
2037 p_party_rec.preferred_flag='E'
2038 THEN
2039 fnd_message.set_name('CSI','CSI_PRIMARY_PTY_EXC');
2040 fnd_msg_pub.Add;
2041 RAISE fnd_api.g_exc_error;
2042 END IF;
2043
2044 -- Possible values for preferred flag are
2045 -- 'N','Y' and 'E'.
2046 IF p_party_rec.preferred_flag='Y' OR
2047 p_party_rec.preferred_flag='N' OR
2048 p_party_rec.preferred_flag='E'
2049 THEN
2050 NULL;
2051 ELSE
2052 fnd_message.set_name('CSI','CSI_PREFERRED_VALUES');
2053 fnd_message.set_token('PREFERRED_FLAG',p_party_rec.preferred_flag);
2054 fnd_msg_pub.Add;
2055 RAISE fnd_api.g_exc_error;
2056 END IF;
2057
2058
2059 -- Call table handlers to insert into the csi_i_parties table
2060 CSI_I_PARTIES_PKG.Insert_Row(
2061 p_INSTANCE_PARTY_ID => p_party_rec.INSTANCE_PARTY_ID ,
2062 p_INSTANCE_ID => p_party_rec.INSTANCE_ID ,
2063 p_PARTY_SOURCE_TABLE => p_party_rec.PARTY_SOURCE_TABLE ,
2064 p_PARTY_ID => p_party_rec.PARTY_ID ,
2065 p_RELATIONSHIP_TYPE_CODE => p_party_rec.RELATIONSHIP_TYPE_CODE,
2066 p_CONTACT_FLAG => p_party_rec.CONTACT_FLAG ,
2067 p_CONTACT_IP_ID => p_party_rec.CONTACT_IP_ID ,
2068 p_ACTIVE_START_DATE => p_party_rec.ACTIVE_START_DATE ,
2069 p_ACTIVE_END_DATE => p_party_rec.ACTIVE_END_DATE ,
2070 p_CONTEXT => p_party_rec.CONTEXT ,
2071 p_ATTRIBUTE1 => p_party_rec.ATTRIBUTE1 ,
2072 p_ATTRIBUTE2 => p_party_rec.ATTRIBUTE2 ,
2073 p_ATTRIBUTE3 => p_party_rec.ATTRIBUTE3 ,
2074 p_ATTRIBUTE4 => p_party_rec.ATTRIBUTE4 ,
2075 p_ATTRIBUTE5 => p_party_rec.ATTRIBUTE5 ,
2076 p_ATTRIBUTE6 => p_party_rec.ATTRIBUTE6 ,
2077 p_ATTRIBUTE7 => p_party_rec.ATTRIBUTE7 ,
2078 p_ATTRIBUTE8 => p_party_rec.ATTRIBUTE8 ,
2079 p_ATTRIBUTE9 => p_party_rec.ATTRIBUTE9 ,
2080 p_ATTRIBUTE10 => p_party_rec.ATTRIBUTE10 ,
2081 p_ATTRIBUTE11 => p_party_rec.ATTRIBUTE11 ,
2082 p_ATTRIBUTE12 => p_party_rec.ATTRIBUTE12 ,
2083 p_ATTRIBUTE13 => p_party_rec.ATTRIBUTE13 ,
2084 p_ATTRIBUTE14 => p_party_rec.ATTRIBUTE14 ,
2085 p_ATTRIBUTE15 => p_party_rec.ATTRIBUTE15 ,
2086 p_CREATED_BY => FND_GLOBAL.USER_ID ,
2087 p_CREATION_DATE => SYSDATE ,
2088 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
2089 p_LAST_UPDATE_DATE => SYSDATE ,
2090 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
2091 p_OBJECT_VERSION_NUMBER => 1 ,
2092 p_PRIMARY_FLAG => p_party_rec.PRIMARY_FLAG ,
2093 p_PREFERRED_FLAG => p_party_rec.PREFERRED_FLAG );
2094
2095
2096 -- Call create_transaction to create txn log
2097 CSI_TRANSACTIONS_PVT.Create_transaction
2098 (
2099 p_api_version => p_api_version
2100 ,p_commit => p_commit
2101 ,p_init_msg_list => p_init_msg_list
2102 ,p_validation_level => p_validation_level
2103 ,p_Success_If_Exists_Flag => 'Y'
2104 ,P_transaction_rec => p_txn_rec
2105 ,x_return_status => x_return_status
2106 ,x_msg_count => x_msg_count
2107 ,x_msg_data => x_msg_data );
2108
2109 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2110 l_msg_index := 1;
2111 l_msg_count := x_msg_count;
2112 WHILE l_msg_count > 0 LOOP
2113 x_msg_data := FND_MSG_PUB.GET(
2114 l_msg_index,
2115 FND_API.G_FALSE );
2116 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
2117 l_msg_index := l_msg_index + 1;
2118 l_msg_count := l_msg_count - 1;
2119 END LOOP;
2120 RAISE FND_API.G_EXC_ERROR;
2121 END IF;
2122
2123 -- Generate a unique instance_party_history_id from the sequence
2124 l_inst_party_his_id := CSI_Instance_parties_vld_pvt.gen_inst_party_hist_id;
2125
2126 -- Call table handlers to insert into csi_i_parties_h table
2127 CSI_I_PARTIES_H_PKG.Insert_Row
2128 (
2129 px_INSTANCE_PARTY_HISTORY_ID => l_inst_party_his_id ,
2130 p_INSTANCE_PARTY_ID => p_party_rec.INSTANCE_PARTY_ID ,
2131 p_TRANSACTION_ID => p_txn_rec.TRANSACTION_ID ,
2132 p_OLD_PARTY_SOURCE_TABLE => NULL ,
2133 p_NEW_PARTY_SOURCE_TABLE => p_party_rec.PARTY_SOURCE_TABLE,
2134 p_OLD_PARTY_ID => NULL ,
2135 p_NEW_PARTY_ID => p_party_rec.PARTY_ID ,
2136 p_OLD_RELATIONSHIP_TYPE_CODE => NULL ,
2137 p_NEW_RELATIONSHIP_TYPE_CODE => p_party_rec.RELATIONSHIP_TYPE_CODE,
2138 p_OLD_CONTACT_FLAG => NULL ,
2139 p_NEW_CONTACT_FLAG => p_party_rec.CONTACT_FLAG ,
2140 p_OLD_CONTACT_IP_ID => NULL ,
2141 p_NEW_CONTACT_IP_ID => p_party_rec.CONTACT_IP_ID ,
2142 p_OLD_ACTIVE_START_DATE => NULL ,
2143 p_NEW_ACTIVE_START_DATE => p_party_rec.ACTIVE_START_DATE,
2144 p_OLD_ACTIVE_END_DATE => NULL ,
2145 p_NEW_ACTIVE_END_DATE => p_party_rec.ACTIVE_END_DATE,
2146 p_OLD_CONTEXT => NULL ,
2147 p_NEW_CONTEXT => p_party_rec.context ,
2148 p_OLD_ATTRIBUTE1 => NULL ,
2149 p_NEW_ATTRIBUTE1 => p_party_rec.ATTRIBUTE1 ,
2150 p_OLD_ATTRIBUTE2 => NULL ,
2151 p_NEW_ATTRIBUTE2 => p_party_rec.ATTRIBUTE2 ,
2152 p_OLD_ATTRIBUTE3 => NULL ,
2153 p_NEW_ATTRIBUTE3 => p_party_rec.ATTRIBUTE3 ,
2154 p_OLD_ATTRIBUTE4 => NULL ,
2155 p_NEW_ATTRIBUTE4 => p_party_rec.ATTRIBUTE4 ,
2156 p_OLD_ATTRIBUTE5 => NULL ,
2157 p_NEW_ATTRIBUTE5 => p_party_rec.ATTRIBUTE5 ,
2158 p_OLD_ATTRIBUTE6 => NULL ,
2159 p_NEW_ATTRIBUTE6 => p_party_rec.ATTRIBUTE6 ,
2160 p_OLD_ATTRIBUTE7 => NULL ,
2161 p_NEW_ATTRIBUTE7 => p_party_rec.ATTRIBUTE7 ,
2162 p_OLD_ATTRIBUTE8 => NULL ,
2163 p_NEW_ATTRIBUTE8 => p_party_rec.ATTRIBUTE8 ,
2164 p_OLD_ATTRIBUTE9 => NULL ,
2165 p_NEW_ATTRIBUTE9 => p_party_rec.ATTRIBUTE9 ,
2166 p_OLD_ATTRIBUTE10 => NULL ,
2167 p_NEW_ATTRIBUTE10 => p_party_rec.ATTRIBUTE10 ,
2168 p_OLD_ATTRIBUTE11 => NULL ,
2169 p_NEW_ATTRIBUTE11 => p_party_rec.ATTRIBUTE11 ,
2170 p_OLD_ATTRIBUTE12 => NULL ,
2171 p_NEW_ATTRIBUTE12 => p_party_rec.ATTRIBUTE12 ,
2172 p_OLD_ATTRIBUTE13 => NULL ,
2173 p_NEW_ATTRIBUTE13 => p_party_rec.ATTRIBUTE13 ,
2174 p_OLD_ATTRIBUTE14 => NULL ,
2175 p_NEW_ATTRIBUTE14 => p_party_rec.ATTRIBUTE14 ,
2176 p_OLD_ATTRIBUTE15 => NULL ,
2177 p_NEW_ATTRIBUTE15 => p_party_rec.ATTRIBUTE15 ,
2178 p_FULL_DUMP_FLAG => 'N' ,
2179 p_CREATED_BY => FND_GLOBAL.USER_ID ,
2180 p_CREATION_DATE => sysdate ,
2181 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
2182 p_LAST_UPDATE_DATE => sysdate ,
2183 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
2184 p_OBJECT_VERSION_NUMBER => 1 ,
2185 p_OLD_PRIMARY_FLAG => NULL ,
2186 p_NEW_PRIMARY_FLAG => p_party_rec.PRIMARY_FLAG ,
2187 p_OLD_PREFERRED_FLAG => NULL ,
2188 p_NEW_PREFERRED_FLAG => p_party_rec.PREFERRED_FLAG );
2189
2190 END IF; -- p_called_from_grp check
2191
2192 END IF; -- Added by sk for bug 2232880
2193
2194 --
2195 -- End of API body
2196
2197 -- Standard check of p_commit.
2198 IF FND_API.To_Boolean( p_commit ) THEN
2199 COMMIT WORK;
2200 END IF;
2201
2202
2203 -- Standard call to get message count and if count is get message info.
2204 FND_MSG_PUB.Count_And_Get
2205 (p_count => x_msg_count ,
2206 p_data => x_msg_data );
2207 EXCEPTION
2208 WHEN FND_API.G_EXC_ERROR THEN
2209 ROLLBACK TO create_inst_party_rel_pvt;
2210 x_return_status := FND_API.G_RET_STS_ERROR ;
2211 FND_MSG_PUB.Count_And_Get
2212 ( p_count => x_msg_count,
2213 p_data => x_msg_data );
2214
2215 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2216 ROLLBACK TO create_inst_party_rel_pvt;
2217 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2218 FND_MSG_PUB.Count_And_Get
2219 ( p_count => x_msg_count,
2220 p_data => x_msg_data );
2221
2222 WHEN OTHERS THEN
2223 ROLLBACK TO create_inst_party_rel_pvt;
2224 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2225 IF FND_MSG_PUB.Check_Msg_Level
2226 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2227 THEN
2228 FND_MSG_PUB.Add_Exc_Msg
2229 ( g_pkg_name ,
2230 l_api_name );
2231 END IF;
2232 FND_MSG_PUB.Count_And_Get
2233 ( p_count => x_msg_count,
2234 p_data => x_msg_data );
2235 END create_inst_party_relationship;
2236
2237 /*------------------------------------------------------------*/
2238 /* Procedure name: Update_inst_party_relationship */
2239 /* Description : Procedure used to update the existing */
2240 /* instance -party relationships */
2241 /*------------------------------------------------------------*/
2242
2243 PROCEDURE update_inst_party_relationship
2244 ( p_api_version IN NUMBER
2245 ,p_commit IN VARCHAR2
2246 ,p_init_msg_list IN VARCHAR2
2247 ,p_validation_level IN NUMBER
2248 ,p_party_rec IN OUT NOCOPY csi_datastructures_pub.party_rec
2249 ,p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
2250 ,x_return_status OUT NOCOPY VARCHAR2
2251 ,x_msg_count OUT NOCOPY NUMBER
2252 ,x_msg_data OUT NOCOPY VARCHAR2
2253 ) IS
2254
2255 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_INST_PARTY_RELATIONSHIP';
2256 l_api_version CONSTANT NUMBER := 1.0;
2257 l_csi_debug_level NUMBER;
2258 l_curr_party_rec csi_datastructures_pub.party_rec;
2259 l_temp_party_rec csi_datastructures_pub.party_rec;
2260 l_cont_party_rec csi_datastructures_pub.party_rec;
2261 l_init_party_rec csi_datastructures_pub.party_rec;
2262 l_msg_index NUMBER;
2263 l_msg_count NUMBER;
2264 l_line_count NUMBER;
2265 l_object_version_number NUMBER;
2266 l_inst_party_his_id NUMBER;
2267 l_full_dump_frequency NUMBER;
2268 l_mod_value NUMBER;
2269 l_party_account_rec csi_datastructures_pub.party_account_rec;
2270 l_internal_party_id NUMBER;
2271
2272 x_msg_index_out NUMBER;
2273 l_acct_class_code VARCHAR2(10);
2274
2275 -- alternate pk check variables
2276 l_alt_pk_instance_id NUMBER;
2277 l_alt_pk_pty_source_tab VARCHAR2(30);
2278 l_alt_pk_party_id NUMBER;
2279 l_alt_pk_rel_type_code VARCHAR2(30);
2280 l_alt_pk_contact_flag VARCHAR2(1);
2281
2282 CURSOR GET_IP_ACCOUNT (p_inst_party_id IN NUMBER) IS
2283 SELECT
2284 ip_account_id,
2285 object_version_number
2286 FROM csi_ip_accounts
2287 WHERE instance_party_id = p_inst_party_id
2288 AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE)) ;
2289
2290 CURSOR get_curr_party_rec (p_inst_party_id IN NUMBER) IS
2291 SELECT
2292 instance_party_id ,
2293 instance_id ,
2294 party_source_table ,
2295 party_id ,
2296 relationship_type_code,
2297 contact_flag ,
2298 contact_ip_id ,
2299 active_start_date ,
2300 active_end_date ,
2301 context ,
2302 attribute1 ,
2303 attribute2 ,
2304 attribute3 ,
2305 attribute4 ,
2306 attribute5 ,
2307 attribute6 ,
2308 attribute7 ,
2309 attribute8 ,
2310 attribute9 ,
2311 attribute10 ,
2312 attribute11 ,
2313 attribute12 ,
2314 attribute13 ,
2315 attribute14 ,
2316 attribute15 ,
2317 object_version_number,
2318 primary_flag ,
2319 preferred_flag ,
2320 null parent_tbl_index ,
2321 null call_contracts,
2322 null interface_id,
2323 null contact_parent_tbl_index,
2324 null cascade_ownership_flag -- Added for bug 2972082
2325 FROM CSI_I_PARTIES
2326 WHERE INSTANCE_PARTY_ID = p_inst_party_id
2327 FOR UPDATE OF OBJECT_VERSION_NUMBER ;
2328
2329 CURSOR get_cont_party_rec (p_cont_ip_id IN NUMBER) IS
2330 SELECT
2331 instance_party_id ,
2332 instance_id ,
2333 party_source_table ,
2334 party_id ,
2335 relationship_type_code,
2336 contact_flag ,
2337 contact_ip_id ,
2338 active_start_date ,
2339 active_end_date ,
2340 context ,
2341 attribute1 ,
2342 attribute2 ,
2343 attribute3 ,
2344 attribute4 ,
2345 attribute5 ,
2346 attribute6 ,
2347 attribute7 ,
2348 attribute8 ,
2349 attribute9 ,
2350 attribute10 ,
2351 attribute11 ,
2352 attribute12 ,
2353 attribute13 ,
2354 attribute14 ,
2355 attribute15 ,
2356 object_version_number,
2357 primary_flag ,
2358 preferred_flag
2359 FROM CSI_I_PARTIES
2360 WHERE CONTACT_IP_ID = p_cont_ip_id
2361 AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE > SYSDATE))
2362 FOR UPDATE OF OBJECT_VERSION_NUMBER ;
2363
2364 CURSOR curr_instance_rec(p_instance_id IN NUMBER) IS
2365 SELECT
2366 INSTANCE_ID,
2367 INSTANCE_NUMBER,
2368 EXTERNAL_REFERENCE,
2369 INVENTORY_ITEM_ID,
2370 LAST_VLD_ORGANIZATION_ID VLD_ORGANIZATION_ID,
2371 INVENTORY_REVISION,
2372 INV_MASTER_ORGANIZATION_ID,
2373 SERIAL_NUMBER,
2374 MFG_SERIAL_NUMBER_FLAG,
2375 LOT_NUMBER,
2376 QUANTITY,
2377 UNIT_OF_MEASURE,
2378 ACCOUNTING_CLASS_CODE,
2379 INSTANCE_CONDITION_ID,
2380 INSTANCE_STATUS_ID,
2381 CUSTOMER_VIEW_FLAG,
2382 MERCHANT_VIEW_FLAG,
2383 SELLABLE_FLAG,
2384 SYSTEM_ID,
2385 INSTANCE_TYPE_CODE,
2386 ACTIVE_START_DATE,
2387 ACTIVE_END_DATE,
2388 LOCATION_TYPE_CODE,
2389 LOCATION_ID,
2390 INV_ORGANIZATION_ID,
2391 INV_SUBINVENTORY_NAME,
2392 INV_LOCATOR_ID,
2393 PA_PROJECT_ID,
2394 PA_PROJECT_TASK_ID,
2395 IN_TRANSIT_ORDER_LINE_ID,
2396 WIP_JOB_ID,
2397 PO_ORDER_LINE_ID,
2398 LAST_OE_ORDER_LINE_ID,
2399 LAST_OE_RMA_LINE_ID,
2400 LAST_PO_PO_LINE_ID,
2401 LAST_OE_PO_NUMBER,
2402 LAST_WIP_JOB_ID,
2403 LAST_PA_PROJECT_ID,
2404 LAST_PA_TASK_ID,
2405 LAST_OE_AGREEMENT_ID,
2406 INSTALL_DATE,
2407 MANUALLY_CREATED_FLAG,
2408 RETURN_BY_DATE,
2409 ACTUAL_RETURN_DATE,
2410 CREATION_COMPLETE_FLAG,
2411 COMPLETENESS_FLAG,
2412 NULL VERSION_LABEL,
2413 NULL VERSION_LABEL_DESCRIPTION,
2414 CONTEXT,
2415 ATTRIBUTE1,
2416 ATTRIBUTE2,
2417 ATTRIBUTE3,
2418 ATTRIBUTE4,
2419 ATTRIBUTE5,
2420 ATTRIBUTE6,
2421 ATTRIBUTE7,
2422 ATTRIBUTE8,
2423 ATTRIBUTE9,
2424 ATTRIBUTE10,
2425 ATTRIBUTE11,
2426 ATTRIBUTE12,
2427 ATTRIBUTE13,
2428 ATTRIBUTE14,
2429 ATTRIBUTE15,
2430 OBJECT_VERSION_NUMBER,
2431 LAST_TXN_LINE_DETAIL_ID,
2432 INSTALL_LOCATION_TYPE_CODE,
2433 INSTALL_LOCATION_ID,
2434 INSTANCE_USAGE_CODE,
2435 NULL CHECK_FOR_INSTANCE_EXPIRY,
2436 NULL PROCESSED_FLAG,
2437 NULL CALL_CONTRACTS,
2438 NULL INTERFACE_ID,
2439 NULL GRP_CALL_CONTRACTS,
2440 CONFIG_INST_HDR_ID,
2441 CONFIG_INST_REV_NUM,
2442 CONFIG_INST_ITEM_ID,
2443 CONFIG_VALID_STATUS,
2444 INSTANCE_DESCRIPTION,
2445 NULL CALL_BATCH_VALIDATION,
2446 NULL REQUEST_ID,
2447 NULL PROGRAM_APPLICATION_ID,
2448 NULL PROGRAM_ID,
2449 NULL PROGRAM_UPDATE_DATE,
2450 NULL cascade_ownership_flag, -- Added for bug 2972082
2451 NULL NETWORK_ASSET_FLAG,
2452 NULL MAINTAINABLE_FLAG,
2453 NULL PN_LOCATION_ID,
2454 NULL ASSET_CRITICALITY_CODE,
2455 NULL CATEGORY_ID,
2456 NULL EQUIPMENT_GEN_OBJECT_ID,
2457 NULL INSTANTIATION_FLAG,
2458 NULL LINEAR_LOCATION_ID,
2459 NULL OPERATIONAL_LOG_FLAG,
2460 NULL CHECKIN_STATUS,
2461 NULL SUPPLIER_WARRANTY_EXP_DATE,
2462 NULL ATTRIBUTE16,
2463 NULL ATTRIBUTE17,
2464 NULL ATTRIBUTE18,
2465 NULL ATTRIBUTE19,
2466 NULL ATTRIBUTE20,
2467 NULL ATTRIBUTE21,
2468 NULL ATTRIBUTE22,
2469 NULL ATTRIBUTE23,
2470 NULL ATTRIBUTE24,
2471 NULL ATTRIBUTE25,
2472 NULL ATTRIBUTE26,
2473 NULL ATTRIBUTE27,
2474 NULL ATTRIBUTE28,
2475 NULL ATTRIBUTE29,
2476 NULL ATTRIBUTE30,
2477 NULL PURCHASE_UNIT_PRICE,
2478 NULL PURCHASE_CURRENCY_CODE,
2479 NULL PAYABLES_UNIT_PRICE,
2480 NULL PAYABLES_CURRENCY_CODE,
2481 NULL SALES_UNIT_PRICE,
2482 NULL SALES_CURRENCY_CODE,
2483 NULL OPERATIONAL_STATUS_CODE,
2484 NULL DEPARTMENT_ID,
2485 NULL WIP_ACCOUNTING_CLASS,
2486 NULL AREA_ID,
2487 NULL OWNER_PARTY_ID,
2488 NULL SOURCE_CODE, -- Bug 6407307, added Code for Siebel Genesis Project
2489 NULL REC_INDEX
2490 FROM csi_item_instances
2491 WHERE instance_id = p_instance_id;
2492
2493 l_curr_instance_rec csi_datastructures_pub.instance_rec;
2494
2495
2496 CURSOR pty_hist_csr (p_party_hist_id NUMBER) IS
2497 SELECT instance_party_history_id
2498 ,instance_party_id
2499 ,transaction_id
2500 ,old_party_source_table
2501 ,new_party_source_table
2502 ,old_party_id
2503 ,new_party_id
2504 ,old_relationship_type_code
2505 ,new_relationship_type_code
2506 ,old_contact_flag
2507 ,new_contact_flag
2508 ,old_contact_ip_id
2509 ,new_contact_ip_id
2510 ,old_active_start_date
2511 ,new_active_start_date
2512 ,old_active_end_date
2513 ,new_active_end_date
2514 ,old_context
2515 ,new_context
2516 ,old_attribute1
2517 ,new_attribute1
2518 ,old_attribute2
2519 ,new_attribute2
2520 ,old_attribute3
2521 ,new_attribute3
2522 ,old_attribute4
2523 ,new_attribute4
2524 ,old_attribute5
2525 ,new_attribute5
2526 ,old_attribute6
2527 ,new_attribute6
2528 ,old_attribute7
2529 ,new_attribute7
2530 ,old_attribute8
2531 ,new_attribute8
2532 ,old_attribute9
2533 ,new_attribute9
2534 ,old_attribute10
2535 ,new_attribute10
2536 ,old_attribute11
2537 ,new_attribute11
2538 ,old_attribute12
2539 ,new_attribute12
2540 ,old_attribute13
2541 ,new_attribute13
2542 ,old_attribute14
2543 ,new_attribute14
2544 ,old_attribute15
2545 ,new_attribute15
2546 ,full_dump_flag
2547 ,object_version_number
2548 ,old_primary_flag
2549 ,new_primary_flag
2550 ,old_preferred_flag
2551 ,new_preferred_flag
2552 FROM csi_i_parties_h
2553 WHERE csi_i_parties_h.instance_party_history_id = p_party_hist_id
2554 FOR UPDATE OF object_version_number ;
2555 l_pty_hist_csr pty_hist_csr%rowtype;
2556 l_party_hist_id NUMBER;
2557 l_open_service VARCHAR2(1);
2558 l_party_hist_rec csi_datastructures_pub.party_history_rec;
2559 l_ins_pty_found NUMBER;
2560 l_pty_end_date DATE;
2561
2562 l_inst_just_expired VARCHAR2(1) := FND_API.G_FALSE; --Added for bug 7517240
2563 BEGIN
2564 -- Standard Start of API savepoint
2565 -- SAVEPOINT update_inst_party_rel_pvt ;
2566
2567 -- Standard call to check for call compatibility.
2568 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
2569 p_api_version ,
2570 l_api_name ,
2571 g_pkg_name )
2572 THEN
2573 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2574 END IF;
2575
2576 -- Initialize message list if p_init_msg_list is set to TRUE.
2577 IF FND_API.to_Boolean( p_init_msg_list ) THEN
2578 FND_MSG_PUB.initialize;
2579 END IF;
2580
2581 -- Initialize API return status to success
2582 x_return_status := FND_API.G_RET_STS_SUCCESS;
2583
2584 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
2585 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
2586
2587 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
2588 IF (l_csi_debug_level > 0) THEN
2589 csi_gen_utility_pvt.put_line( 'update_inst_party_relationship ');
2590 END IF;
2591
2592 -- If the debug level = 2 then dump all the parameters values.
2593 IF (l_csi_debug_level> 1) THEN
2594 csi_gen_utility_pvt.put_line( 'update_inst_party_relationship:' ||
2595 p_api_version ||'-'||
2596 p_commit ||'-'||
2597 p_init_msg_list );
2598 -- Dump the records in the log file
2599 csi_gen_utility_pvt.dump_party_rec(p_party_rec);
2600 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
2601 END IF;
2602 -- Start API body
2603 --
2604 -- Check if all the required parameters are passed
2605 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
2606 ( p_party_rec.INSTANCE_PARTY_ID ,
2607 ' p_party_rec.INSTANCE_PARTY_ID ',
2608 l_api_name );
2609 --
2610 IF p_party_rec.party_id IS NULL THEN
2611 FND_MESSAGE.SET_NAME('CSI','CSI_API_MANDATORY_PARTY');
2612 FND_MSG_PUB.Add;
2613 RAISE FND_API.G_EXC_ERROR;
2614 END IF;
2615 --
2616 -- Check if the instance party id is valid
2617 -- End commentation by sk for bug 2232880
2618 -- Verify if the instance_id exists in csi_item_instances
2619 IF p_party_rec.INSTANCE_ID <> FND_API.G_MISS_NUM THEN
2620 --Added query for bug 7517240
2621 IF p_party_rec.ACTIVE_END_DATE IS NOT NULL AND p_party_rec.ACTIVE_END_DATE < SYSDATE THEN
2622 BEGIN
2623 SELECT 'T'
2624 INTO l_inst_just_expired
2625 FROM CSI_ITEM_INSTANCES_H
2626 WHERE INSTANCE_ID = p_party_rec.INSTANCE_ID
2627 AND TRANSACTION_ID = p_txn_rec.TRANSACTION_ID
2628 AND OLD_ACTIVE_END_DATE IS NULL
2629 AND NEW_ACTIVE_END_DATE < SYSDATE
2630 AND ROWNUM = 1;
2631 EXCEPTION
2632 WHEN NO_DATA_FOUND THEN
2633 l_inst_just_expired := FND_API.G_FALSE;
2634 END;
2635 END IF;
2636 IF l_inst_just_expired = FND_API.G_FALSE
2637 AND NOT(CSI_Instance_parties_vld_pvt.Is_InstanceID_Valid(p_party_rec.INSTANCE_ID)) THEN
2638 RAISE FND_API.G_EXC_ERROR;
2639 END IF;
2640 END IF;
2641 -- Verify the instance owner exists already if exists then raise error
2642 IF p_party_rec.RELATIONSHIP_TYPE_CODE = 'OWNER' THEN
2643 IF CSI_Instance_parties_vld_pvt.Is_Inst_Owner_exists
2644 (p_instance_id => p_party_rec.INSTANCE_ID,
2645 p_instance_party_id => p_party_rec.instance_party_id ) THEN
2646 RAISE FND_API.G_EXC_ERROR;
2647 END IF;
2648 END IF;
2649 -- start of addition of code by rtalluri for bugfix 2324745 on 04/23/02
2650 -- validating the owner
2651 IF l_curr_party_rec.instance_party_id = p_party_rec.instance_party_id
2652 AND l_curr_party_rec.party_id <> p_party_rec.party_id
2653 AND (p_party_rec.party_id is not null and p_party_rec.party_id <> fnd_api.g_miss_num)
2654 AND l_curr_party_rec.relationship_type_code = 'OWNER'
2655 THEN
2656 OPEN curr_instance_rec(p_party_rec.instance_id);
2657 FETCH curr_instance_rec INTO l_curr_instance_rec;
2658 IF NOT (csi_item_instance_vld_pvt.Validate_Uniqueness(p_instance_rec => l_curr_instance_rec,
2659 p_party_rec => p_party_rec,
2660 p_csi_txn_type_id => p_txn_rec.transaction_type_id
2661 )) THEN
2662 RAISE FND_API.G_EXC_ERROR;
2663 END IF;
2664 CLOSE curr_instance_rec;
2665 END IF;
2666 -- end of addition of code by rtalluri for bugfix 2324745 on 04/23/02
2667 -- The following code has been added for the following scenario...
2668 -- For the customer merge/account merge, all the parent and the child instances
2669 -- were selected before calling update_item_instance.
2670 -- In this case the child records object_version numbers will be updated
2671 -- if the child owner party is same as the parent.
2672 IF p_txn_rec.transaction_type_id=7
2673 THEN
2674 BEGIN
2675 SELECT object_version_number
2676 INTO p_party_rec.object_version_number
2677 FROM csi_i_parties
2678 WHERE instance_party_id=p_party_rec.instance_party_id;
2679 EXCEPTION
2680 WHEN NO_DATA_FOUND THEN
2681 csi_gen_utility_pvt.put_line('Passed instance_party_id : '||p_party_rec.instance_party_id||' is not found.');
2682 RAISE FND_API.G_EXC_ERROR;
2683 END;
2684 END IF;
2685 -- check if the object_version_number passed matches with the one
2686 -- in the database else raise error
2687 OPEN get_curr_party_rec(p_party_rec.INSTANCE_PARTY_ID);
2688 FETCH get_curr_party_rec INTO l_curr_party_rec;
2689 IF (l_curr_party_rec.object_version_number <> p_party_rec.OBJECT_VERSION_NUMBER) THEN
2690 FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
2691 FND_MSG_PUB.ADD;
2692 RAISE FND_API.G_EXC_ERROR;
2693 END IF;
2694 --
2695 IF get_curr_party_rec%NOTFOUND THEN
2696 FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
2697 FND_MSG_PUB.ADD;
2698 RAISE FND_API.G_EXC_ERROR;
2699 END IF;
2700 CLOSE get_curr_party_rec;
2701 --
2702 IF p_party_rec.instance_id <> FND_API.G_MISS_NUM THEN
2703 IF p_party_rec.instance_id <> l_curr_party_rec.instance_id THEN
2704 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
2705 FND_MESSAGE.Set_Token('COLUMN', 'INSTANCE_ID');
2706 FND_MSG_PUB.ADD;
2707 RAISE FND_API.G_EXC_ERROR;
2708 END IF;
2709 END IF;
2710 --
2711 IF p_party_rec.active_start_date IS NULL THEN
2712 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
2713 FND_MESSAGE.Set_Token('COLUMN', 'ACTIVE_START_DATE');
2714 FND_MSG_PUB.ADD;
2715 RAISE FND_API.G_EXC_ERROR;
2716 END IF;
2717 --
2718 IF p_party_rec.active_start_date <> FND_API.G_MISS_DATE THEN
2719 IF p_party_rec.active_start_date <> l_curr_party_rec.active_start_date THEN
2720 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
2721 FND_MESSAGE.Set_Token('COLUMN', 'ACTIVE_START_DATE');
2722 FND_MSG_PUB.ADD;
2723 RAISE FND_API.G_EXC_ERROR;
2724 END IF;
2725 END IF;
2726 -- Increment the object_version_number before updating
2727 l_OBJECT_VERSION_NUMBER := l_curr_party_rec.OBJECT_VERSION_NUMBER + 1 ;
2728 -- Verify if the active_end_date is valid
2729 -- Don't allow expiry of owner parties
2730 IF p_party_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE THEN
2731 IF l_curr_party_rec.relationship_type_code = 'OWNER' THEN
2732 FND_MESSAGE.Set_Name('CSI', 'CSI_API_EXP_NOT_ALLOWED');
2733 FND_MESSAGE.Set_Token('COLUMN', 'OWNER PARTY');
2734 FND_MSG_PUB.ADD;
2735 RAISE FND_API.G_EXC_ERROR;
2736 ELSE
2737 -- Verify if the active_end_date is valid
2738 IF (g_expire_party_flag <> 'Y') THEN
2739 IF NOT(CSI_Instance_parties_vld_pvt.Is_EndDate_Valid
2740 (l_curr_party_rec.ACTIVE_START_DATE,
2741 p_party_rec.ACTIVE_END_DATE ,
2742 p_party_rec.INSTANCE_ID,
2743 p_party_rec.INSTANCE_PARTY_ID,
2744 p_txn_rec.TRANSACTION_ID)) THEN
2745 RAISE FND_API.G_EXC_ERROR;
2746 END IF;
2747 END IF;
2748 END IF;
2749 END IF;
2750 --
2751 IF p_party_rec.relationship_type_code <> FND_API.G_MISS_CHAR THEN
2752 IF ((p_party_rec.relationship_type_code <> l_curr_party_rec.relationship_type_code)
2753 AND l_curr_party_rec.relationship_type_code = 'OWNER' ) THEN
2754 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
2755 FND_MESSAGE.Set_Token('COLUMN', 'OWNER PARTY');
2756
2757 FND_MSG_PUB.ADD;
2758 RAISE FND_API.G_EXC_ERROR;
2759 ELSE
2760
2761
2762 IF (l_csi_debug_level > 0) THEN
2763 csi_gen_utility_pvt.put_line( 'Added line of code...');
2764 END IF;
2765 --bug 7015558 fix...Contact_flag is missing.
2766 IF p_party_rec.RELATIONSHIP_TYPE_CODE <> 'OWNER' THEN
2767 select contact_flag into p_party_rec.contact_flag FROM csi_i_parties where instance_id=p_party_rec.instance_id and instance_party_id=p_party_rec.instance_party_id;
2768 END IF;
2769 IF (l_csi_debug_level > 0) THEN
2770 csi_gen_utility_pvt.put_line( 'Added line of code ends...');
2771 csi_gen_utility_pvt.put_line('Contact flag'|| p_party_rec.contact_flag);
2772 csi_gen_utility_pvt.put_line('Instance id'|| p_party_rec.instance_id);
2773 csi_gen_utility_pvt.put_line('Instance party id'|| p_party_rec.instance_party_id);
2774 END IF;
2775
2776 -- Verify the relationship_type_code is valid
2777 IF p_party_rec.contact_flag = 'Y' THEN
2778 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_Rel_type_Valid
2779 (p_party_rec.RELATIONSHIP_TYPE_CODE,
2780 'C' )) THEN
2781 RAISE FND_API.G_EXC_ERROR;
2782 END IF;
2783 ELSE
2784 -- Verify the relationship_type_code is valid
2785 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_Rel_type_Valid
2786 (p_party_rec.RELATIONSHIP_TYPE_CODE,
2787 'P' )) THEN
2788 RAISE FND_API.G_EXC_ERROR;
2789 END IF;
2790 END IF;
2791 END IF;
2792 END IF;
2793
2794 -- Verify that there is only one Preferred Party for a
2795 -- given instance party relationship
2796 -- Bug 9286516
2797 IF p_party_rec.preferred_flag <> FND_API.G_MISS_CHAR THEN
2798 IF ( ((p_party_rec.preferred_flag IS NULL AND l_curr_party_rec.preferred_flag IS NOT NULL)
2799 OR (p_party_rec.preferred_flag IS NOT NULL AND l_curr_party_rec.preferred_flag IS NULL)
2800 OR (p_party_rec.preferred_flag <> l_curr_party_rec.preferred_flag))
2801 AND (p_party_rec.preferred_flag = 'Y')) THEN
2802 IF p_party_rec.CONTACT_FLAG <> 'Y' THEN
2803 IF (((p_party_rec.PARTY_SOURCE_TABLE <> FND_API.G_MISS_CHAR)
2804 AND (p_party_rec.PARTY_SOURCE_TABLE NOT IN ('GROUP','TEAM')))
2805 OR (l_curr_party_rec.PARTY_SOURCE_TABLE NOT IN ('GROUP','TEAM'))) THEN
2806 FND_MESSAGE.SET_NAME('CSI','CSI_PREFERRED_PTY_TYPE');
2807 FND_MESSAGE.SET_TOKEN('PARTY_TYPE',l_curr_party_rec.PARTY_SOURCE_TABLE);
2808 FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_curr_party_rec.INSTANCE_ID);
2809 FND_MSG_PUB.Add;
2810 RAISE FND_API.G_EXC_ERROR;
2811 END IF;
2812 END IF;
2813 END IF;
2814 END IF;
2815 -- Verify that there is only one Primary Party for a
2816 -- given instance party relationship
2817 IF ((nvl(p_party_rec.primary_flag,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR)
2818 OR (nvl(p_party_rec.relationship_type_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR)) THEN
2819 IF (((p_party_rec.primary_flag IS NULL AND l_curr_party_rec.primary_flag IS NOT NULL)
2820 OR (p_party_rec.primary_flag IS NOT NULL AND l_curr_party_rec.primary_flag IS NULL)
2821 OR (p_party_rec.primary_flag <> l_curr_party_rec.primary_flag)
2822 AND (p_party_rec.primary_flag = 'Y'))
2823 OR (p_party_rec.relationship_type_code <> l_curr_party_rec.relationship_type_code)) THEN
2824 IF (((p_party_rec.CONTACT_FLAG <> FND_API.G_MISS_CHAR)
2825 AND (p_party_rec.CONTACT_FLAG = 'Y'))
2826 OR (l_curr_party_rec.CONTACT_FLAG = 'Y')) THEN
2827 -- SK ADDED
2828 -- following code 10 lines needs to be removed once
2829 -- html code is fixed
2830 IF p_party_rec.PARTY_SOURCE_TABLE IS NULL
2831 THEN
2832 p_party_rec.PARTY_SOURCE_TABLE:=fnd_api.g_miss_char;
2833 END IF;
2834 IF p_party_rec.primary_flag IS NULL THEN
2835 p_party_rec.primary_flag:='N';
2836 END IF;
2837 --
2838 IF nvl(l_curr_party_rec.primary_flag,'N') = 'Y'
2839 AND p_party_rec.primary_flag = 'N'
2840 THEN
2841 NULL;
2842 ELSIF ((nvl(l_curr_party_rec.primary_flag,'N') = 'Y') OR (p_party_rec.primary_flag = 'Y')) THEN
2843 IF p_party_rec.ACTIVE_START_DATE IS NULL
2844 OR p_party_rec.ACTIVE_START_DATE = fnd_api.g_miss_date THEN
2845 p_party_rec.ACTIVE_START_DATE := l_curr_party_rec.ACTIVE_START_DATE;
2846 END IF;
2847 --
2848 IF /* p_party_rec.ACTIVE_END_DATE IS NULL
2849 -- Commenting for Bug 14772562
2850 OR */ p_party_rec.ACTIVE_END_DATE = fnd_api.g_miss_date
2851 THEN
2852 p_party_rec.ACTIVE_END_DATE := l_curr_party_rec.ACTIVE_END_DATE;
2853 END IF;
2854 -- SK END ADDITION
2855 IF CSI_Instance_parties_vld_pvt.Is_Primary_Contact_Pty
2856 (l_curr_party_rec.INSTANCE_ID,
2857 l_curr_party_rec.CONTACT_IP_ID,
2858 p_party_rec.RELATIONSHIP_TYPE_CODE,
2859 p_party_rec.ACTIVE_START_DATE,
2860 p_party_rec.ACTIVE_END_DATE) THEN
2861 RAISE FND_API.G_EXC_ERROR;
2862 END IF;
2863 END IF; --SK ADDED
2864 ELSE
2865 IF (((p_party_rec.PARTY_SOURCE_TABLE <> FND_API.G_MISS_CHAR)
2866 AND (p_party_rec.PARTY_SOURCE_TABLE NOT IN ('GROUP','TEAM')))
2867 OR (l_curr_party_rec.PARTY_SOURCE_TABLE NOT IN ('GROUP','TEAM'))) THEN
2868 -- following code is commented by sk
2869 /*FND_MESSAGE.SET_NAME('CSI','CSI_HAHA2');
2870 --FND_MESSAGE.SET_NAME('CSI','CSI_PRIMARY_PTY_TYPE');
2871 FND_MESSAGE.SET_TOKEN('PARTY_TYPE',l_curr_party_rec.PARTY_SOURCE_TABLE);
2872 FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_curr_party_rec.INSTANCE_ID);
2873 FND_MSG_PUB.Add;
2874 RAISE FND_API.G_EXC_ERROR; */
2875 NULL; --added by sk
2876 ELSE
2877 -- SK ADDED
2878 IF p_party_rec.primary_flag IS NULL
2879 THEN
2880 p_party_rec.primary_flag:='N';
2881 END IF;
2882 --
2883 IF nvl(l_curr_party_rec.primary_flag,'N') = 'Y'
2884 AND p_party_rec.primary_flag = 'N'
2885 THEN
2886 NULL;
2887 ELSIF ((nvl(l_curr_party_rec.primary_flag,'N') = 'Y') OR (p_party_rec.primary_flag = 'Y')) THEN
2888 IF p_party_rec.ACTIVE_START_DATE IS NULL
2889 OR p_party_rec.ACTIVE_START_DATE = fnd_api.g_miss_date
2890 THEN
2891 p_party_rec.ACTIVE_START_DATE := l_curr_party_rec.ACTIVE_START_DATE;
2892 END IF;
2893 IF /* p_party_rec.ACTIVE_END_DATE IS NULL
2894 -- Commenting for Bug 14772562
2895 OR */ p_party_rec.ACTIVE_END_DATE = fnd_api.g_miss_date
2896 THEN
2897 p_party_rec.ACTIVE_END_DATE := l_curr_party_rec.ACTIVE_END_DATE;
2898 END IF;
2899 -- SK END ADDITION
2900 IF CSI_Instance_parties_vld_pvt.Is_Primary_Pty
2901 (l_curr_party_rec.INSTANCE_ID,
2902 p_party_rec.RELATIONSHIP_TYPE_CODE,
2903 p_party_rec.ACTIVE_START_DATE,
2904 p_party_rec.ACTIVE_END_DATE) THEN
2905 RAISE FND_API.G_EXC_ERROR;
2906 END IF;
2907 END IF; --SK ADDED
2908 END IF;
2909 END IF;
2910 END IF;
2911 END IF;
2912 -- Call table handlers to insert into the csi_i_parties table
2913 -- Verify if the party_source_table exists in CSI_LOOKUPS
2914 IF (p_party_rec.PARTY_SOURCE_TABLE <> FND_API.G_MISS_CHAR) THEN
2915 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_Source_tab_Valid(p_party_rec.PARTY_SOURCE_TABLE)) THEN
2916 RAISE FND_API.G_EXC_ERROR;
2917 END IF;
2918 -- Verify if the party_id is valid based on the value of party_source_table
2919 IF (p_party_rec.PARTY_ID <> FND_API.G_MISS_NUM) THEN
2920 IF NOT(CSI_Instance_parties_vld_pvt.Is_Party_Valid
2921 (p_party_rec.PARTY_SOURCE_TABLE ,
2922 p_party_rec.PARTY_ID ,
2923 p_party_rec.CONTACT_FLAG )) THEN
2924 RAISE FND_API.G_EXC_ERROR;
2925 END IF;
2926 END IF;
2927 ELSE
2928 IF (p_party_rec.PARTY_ID <> FND_API.G_MISS_NUM) THEN
2929 IF NOT(CSI_Instance_parties_vld_pvt.Is_Party_Valid
2930 (l_curr_party_rec.PARTY_SOURCE_TABLE ,
2931 p_party_rec.PARTY_ID ,
2932 p_party_rec.CONTACT_FLAG )) THEN
2933 RAISE FND_API.G_EXC_ERROR;
2934 END IF;
2935 END IF;
2936 END IF;
2937 -- Grab the internal party id from csi_installed paramters
2938 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
2939 csi_gen_utility_pvt.populate_install_param_rec;
2940 END IF;
2941 --
2942 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
2943 --
2944 IF l_internal_party_id IS NULL THEN
2945 FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
2946 FND_MSG_PUB.ADD;
2947 RAISE FND_API.G_EXC_ERROR;
2948 END IF;
2949 -- Validate Tranfer Party rules in case of tranfer of instance
2950 IF ((p_party_rec.PARTY_ID <> FND_API.G_MISS_NUM)
2951 AND (p_party_rec.PARTY_ID IS NOT NULL)
2952 AND (p_party_rec.PARTY_ID <> l_curr_party_rec.PARTY_ID))
2953 --AND (p_party_rec.party_id <> l_internal_party_id)) -- commented for bug 3294748
2954 THEN
2955 -- End of code comment for bug 2600000
2956 -- End commentation by sguthiva for bug 2307804
2957 CSI_Instance_parties_vld_pvt.Transfer_Party_Rules
2958 ( p_api_version => p_api_version
2959 ,p_commit => p_commit
2960 ,p_init_msg_list => p_init_msg_list
2961 ,p_validation_level => p_validation_level
2962 ,p_party_rec => l_curr_party_rec
2963 ,p_stack_err_msg => TRUE
2964 ,p_txn_rec => p_txn_rec
2965 ,x_return_status => x_return_status
2966 ,x_msg_count => x_msg_count
2967 ,x_msg_data => x_msg_data );
2968
2969 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2970 l_msg_index := 1;
2971 l_msg_count := x_msg_count;
2972 WHILE l_msg_count > 0 LOOP
2973 x_msg_data := FND_MSG_PUB.GET(
2974 l_msg_index,
2975 FND_API.G_FALSE );
2976 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
2977 l_msg_index := l_msg_index + 1;
2978 l_msg_count := l_msg_count - 1;
2979 END LOOP;
2980 RAISE FND_API.G_EXC_ERROR;
2981 END IF;
2982 END IF;
2983 -- Validate alternate primary key
2984 IF ((p_party_rec.instance_id IS NULL) OR (p_party_rec.instance_id = FND_API.G_MISS_NUM)) THEN
2985 l_alt_pk_instance_id := l_curr_party_rec.instance_id;
2986 ELSE
2987 l_alt_pk_instance_id := p_party_rec.instance_id;
2988 END IF;
2989 --
2990 IF ((p_party_rec.party_source_table IS NULL) OR (p_party_rec.party_source_table = FND_API.G_MISS_CHAR)) THEN
2991 l_alt_pk_pty_source_tab := l_curr_party_rec.party_source_table;
2992 ELSE
2993 l_alt_pk_pty_source_tab := p_party_rec.party_source_table;
2994 END IF;
2995 --
2996 IF ((p_party_rec.party_id IS NULL) OR (p_party_rec.party_id = FND_API.G_MISS_NUM)) THEN
2997 l_alt_pk_party_id := l_curr_party_rec.party_id;
2998 ELSE
2999 l_alt_pk_party_id := p_party_rec.party_id;
3000 END IF;
3001 --
3002 IF ((p_party_rec.relationship_type_code IS NULL) OR
3003 (p_party_rec.relationship_type_code = FND_API.G_MISS_CHAR)) THEN
3004 l_alt_pk_rel_type_code := l_curr_party_rec.relationship_type_code ;
3005 ELSE
3006 l_alt_pk_rel_type_code := p_party_rec.relationship_type_code ;
3007 END IF;
3008 --
3009 IF ((p_party_rec.contact_flag IS NULL) OR (p_party_rec.contact_flag = FND_API.G_MISS_CHAR)) THEN
3010 l_alt_pk_contact_flag := l_curr_party_rec.contact_flag ;
3011 ELSE
3012 l_alt_pk_contact_flag := p_party_rec.contact_flag ;
3013 END IF;
3014 -- Verify if the Party rel combination exists
3015 IF ((l_alt_pk_instance_id <> l_curr_party_rec.instance_id)
3016 OR
3017 (l_alt_pk_pty_source_tab <> l_curr_party_rec.party_source_table )
3018 OR
3019 (l_alt_pk_party_id <> l_curr_party_rec.party_id)
3020 OR
3021 (l_alt_pk_rel_type_code <> l_curr_party_rec.relationship_type_code )
3022 OR
3023 (l_alt_pk_contact_flag <> l_curr_party_rec.contact_flag ))
3024 THEN
3025 -- Verify if the Party rel combination exists
3026 -- Added the following code for bug 3694434
3027 -- party rel combination check is relaxed on for party/acct merge transaction.
3028 IF p_txn_rec.transaction_type_id=7
3029 THEN
3030 BEGIN
3031 SELECT instance_party_id
3032 INTO l_ins_pty_found
3033 FROM csi_i_parties
3034 WHERE instance_id = l_alt_pk_instance_id
3035 AND party_source_table = l_alt_pk_pty_source_tab
3036 AND party_id = l_alt_pk_party_id
3037 AND relationship_type_code = l_alt_pk_rel_type_code
3038 AND contact_flag = l_alt_pk_contact_flag
3039 AND NVL(contact_ip_id,fnd_api.g_miss_num) = NVL(p_party_rec.contact_ip_id,fnd_api.g_miss_num)
3040 AND ((active_end_date IS NULL) OR (active_end_date >= sysdate));
3041 -- If found then there exists a record in csi_i_parties, Hence
3042 -- I need to expire(if active) this record.
3043 BEGIN
3044 SELECT active_end_date
3045 INTO l_pty_end_date
3046 FROM csi_i_parties
3047 WHERE instance_party_id=p_party_rec.instance_party_id
3048 AND ((active_end_date IS NULL) OR (active_end_date > sysdate));
3049 -- Active record found so make it inactive.
3050 p_party_rec.active_end_date:=sysdate;
3051 EXCEPTION
3052 WHEN OTHERS THEN
3053 NULL;
3054 END;
3055 EXCEPTION
3056 WHEN TOO_MANY_ROWS THEN
3057 csi_gen_utility_pvt.put_line('Too many rows exist in csi_i_parties with the same party rel combination.');
3058 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_PARTY_REL_COMB');
3059 FND_MESSAGE.SET_TOKEN('PARTY_REL_COMB',to_char(l_alt_pk_instance_id) ||','||l_alt_pk_pty_source_tab||','||to_char(l_alt_pk_party_id)||','||l_alt_pk_rel_type_code||','||to_char(p_party_rec.contact_ip_id));
3060 FND_MSG_PUB.Add;
3061 RAISE FND_API.G_EXC_ERROR;
3062 WHEN OTHERS THEN
3063 NULL;
3064 END;
3065 ELSE
3066 IF (CSI_Instance_parties_vld_pvt.Is_Party_Rel_Comb_Exists
3067 (l_alt_pk_instance_id ,
3068 l_alt_pk_pty_source_tab ,
3069 l_alt_pk_party_id ,
3070 l_alt_pk_rel_type_code ,
3071 l_alt_pk_contact_flag ,
3072 p_party_rec.contact_ip_id ,
3073 TRUE )) THEN
3074 RAISE FND_API.G_EXC_ERROR;
3075 END IF;
3076 END IF;
3077 END IF;
3078 --
3079 IF p_party_rec.relationship_type_code <> FND_API.G_MISS_CHAR THEN
3080 IF (p_party_rec.relationship_type_code = 'OWNER' ) THEN
3081 update csi_item_instances
3082 set owner_party_source_table = l_alt_pk_pty_source_tab, --p_party_rec.party_source_table,--bug 2769176
3083 owner_party_id = l_alt_pk_party_id, --p_party_rec.party_id, --bug 2769176
3084 last_update_date = sysdate,
3085 last_updated_by = fnd_global.user_id
3086 where instance_id = l_curr_party_rec.instance_id;
3087 END IF;
3088 END IF;
3089 -- A contact marked as 'Primary' can also be marked as 'Preferred' or
3090 -- 'Non-Preferred' at the same time.
3091 IF p_party_rec.preferred_flag IS NULL THEN
3092 p_party_rec.preferred_flag:='N';
3093 END IF;
3094 IF (p_party_rec.preferred_flag='E' OR
3095 p_party_rec.preferred_flag='e' )
3096 THEN
3097 p_party_rec.preferred_flag:='E';
3098 END IF;
3099 -- A contact marked as Primary cannot be marked as 'Excluded'
3100 IF (p_party_rec.primary_flag='Y' AND p_party_rec.preferred_flag='E') OR
3101 (p_party_rec.primary_flag=fnd_api.g_miss_char AND nvl(l_curr_party_rec.primary_flag,'N') = 'Y' AND
3102 p_party_rec.preferred_flag='E') OR
3103 (p_party_rec.preferred_flag=fnd_api.g_miss_char AND nvl(l_curr_party_rec.preferred_flag,'N') = 'E' AND
3104 p_party_rec.primary_flag='Y')
3105 THEN
3106 fnd_message.set_name('CSI','CSI_PRIMARY_PTY_EXC');
3107 fnd_msg_pub.Add;
3108 RAISE fnd_api.g_exc_error;
3109 END IF;
3110 -- Possible values for preferred flag are
3111 -- 'N','Y' and 'E'.
3112 IF p_party_rec.preferred_flag='Y' OR
3113 p_party_rec.preferred_flag='N' OR
3114 p_party_rec.preferred_flag='E' OR
3115 p_party_rec.preferred_flag=fnd_api.g_miss_char
3116 THEN
3117 NULL;
3118 ELSE
3119 fnd_message.set_name('CSI','CSI_PREFERRED_VALUES');
3120 fnd_message.set_token('PREFERRED_FLAG',p_party_rec.preferred_flag);
3121 fnd_msg_pub.Add;
3122 RAISE fnd_api.g_exc_error;
3123 END IF;
3124 -- Call table handlers to update the table
3125 CSI_I_PARTIES_PKG.Update_Row
3126 (
3127 p_INSTANCE_PARTY_ID => p_party_rec.instance_party_id,
3128 p_INSTANCE_ID => p_party_rec.instance_id,
3129 p_PARTY_SOURCE_TABLE => p_party_rec.PARTY_SOURCE_TABLE,
3130 p_PARTY_ID => p_party_rec.PARTY_ID,
3131 p_RELATIONSHIP_TYPE_CODE => p_party_rec.RELATIONSHIP_TYPE_CODE,
3132 p_CONTACT_FLAG => p_party_rec.CONTACT_FLAG,
3133 p_CONTACT_IP_ID => p_party_rec.CONTACT_IP_ID,
3134 p_ACTIVE_START_DATE => p_party_rec.ACTIVE_START_DATE,
3135 p_ACTIVE_END_DATE => p_party_rec.ACTIVE_END_DATE,
3136 p_CONTEXT => p_party_rec.CONTEXT,
3137 p_ATTRIBUTE1 => p_party_rec.ATTRIBUTE1,
3138 p_ATTRIBUTE2 => p_party_rec.ATTRIBUTE2,
3139 p_ATTRIBUTE3 => p_party_rec.ATTRIBUTE3,
3140 p_ATTRIBUTE4 => p_party_rec.ATTRIBUTE4,
3141 p_ATTRIBUTE5 => p_party_rec.ATTRIBUTE5,
3142 p_ATTRIBUTE6 => p_party_rec.ATTRIBUTE6,
3143 p_ATTRIBUTE7 => p_party_rec.ATTRIBUTE7,
3144 p_ATTRIBUTE8 => p_party_rec.ATTRIBUTE8,
3145 p_ATTRIBUTE9 => p_party_rec.ATTRIBUTE9,
3146 p_ATTRIBUTE10 => p_party_rec.ATTRIBUTE10,
3147 p_ATTRIBUTE11 => p_party_rec.ATTRIBUTE11,
3148 p_ATTRIBUTE12 => p_party_rec.ATTRIBUTE12,
3149 p_ATTRIBUTE13 => p_party_rec.ATTRIBUTE13,
3150 p_ATTRIBUTE14 => p_party_rec.ATTRIBUTE14,
3151 p_ATTRIBUTE15 => p_party_rec.ATTRIBUTE15,
3152 p_CREATED_BY => FND_API.G_MISS_NUM, -- FND_GLOBAL.USER_ID,
3153 p_CREATION_DATE => FND_API.G_MISS_DATE, -- sysdate,
3154 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID,
3155 p_LAST_UPDATE_DATE => sysdate,
3156 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID,
3157 p_OBJECT_VERSION_NUMBER => l_OBJECT_VERSION_NUMBER,
3158 p_PRIMARY_FLAG => p_party_rec.PRIMARY_FLAG,
3159 p_PREFERRED_FLAG => p_party_rec.PREFERRED_FLAG);
3160
3161 -- Call create_transaction to create txn log
3162 CSI_TRANSACTIONS_PVT.Create_transaction
3163 (
3164 p_api_version => p_api_version
3165 ,p_commit => p_commit
3166 ,p_init_msg_list => p_init_msg_list
3167 ,p_validation_level => p_validation_level
3168 ,p_Success_If_Exists_Flag => 'Y'
3169 ,P_transaction_rec => p_txn_rec
3170 ,x_return_status => x_return_status
3171 ,x_msg_count => x_msg_count
3172 ,x_msg_data => x_msg_data );
3173
3174 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3175 l_msg_index := 1;
3176 l_msg_count := x_msg_count;
3177 WHILE l_msg_count > 0 LOOP
3178 x_msg_data := FND_MSG_PUB.GET(
3179 l_msg_index,
3180 FND_API.G_FALSE );
3181 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
3182 l_msg_index := l_msg_index + 1;
3183 l_msg_count := l_msg_count - 1;
3184 END LOOP;
3185 RAISE FND_API.G_EXC_ERROR;
3186 END IF;
3187
3188 -- Get the full_dump_frequency from csi_install_parameter
3189 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
3190 csi_gen_utility_pvt.populate_install_param_rec;
3191 END IF;
3192 --
3193 l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
3194 --
3195 IF l_full_dump_frequency IS NULL THEN
3196 FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
3197 FND_MSG_PUB.ADD;
3198 RAISE FND_API.G_EXC_ERROR;
3199 END IF;
3200 -- Generate a unique instance_party_history_id from the sequence
3201 l_inst_party_his_id := CSI_Instance_parties_vld_pvt.gen_inst_party_hist_id;
3202
3203
3204 select mod(l_object_version_number,l_full_dump_frequency)
3205 into l_mod_value
3206 from dual;
3207
3208 -- assign the party rec
3209 l_temp_party_rec := p_party_rec;
3210 -- Start of Changes for Bug#2547034 on 09/20/02 - rtalluri
3211 BEGIN
3212 SELECT instance_party_history_id
3213 INTO l_party_hist_id
3214 FROM csi_i_parties_h h
3215 WHERE h.transaction_id = p_txn_rec.transaction_id
3216 AND h.instance_party_id = p_party_rec.instance_party_id;
3217
3218 OPEN pty_hist_csr(l_party_hist_id);
3219 FETCH pty_hist_csr INTO l_pty_hist_csr ;
3220 CLOSE pty_hist_csr;
3221
3222 IF l_pty_hist_csr.full_dump_flag = 'Y'
3223 THEN
3224 CSI_I_PARTIES_H_PKG.update_Row
3225 (
3226 p_INSTANCE_PARTY_HISTORY_ID => l_party_hist_id ,
3227 p_INSTANCE_PARTY_ID => fnd_api.g_miss_num ,
3228 p_TRANSACTION_ID => fnd_api.g_miss_num ,
3229 p_OLD_PARTY_SOURCE_TABLE => fnd_api.g_miss_char ,
3230 p_NEW_PARTY_SOURCE_TABLE => l_temp_party_rec.PARTY_SOURCE_TABLE,
3231 p_OLD_PARTY_ID => fnd_api.g_miss_num ,
3232 p_NEW_PARTY_ID => l_temp_party_rec.PARTY_ID ,
3233 p_OLD_RELATIONSHIP_TYPE_CODE => fnd_api.g_miss_char ,
3234 p_NEW_RELATIONSHIP_TYPE_CODE => l_temp_party_rec.RELATIONSHIP_TYPE_CODE,
3235 p_OLD_CONTACT_FLAG => fnd_api.g_miss_char ,
3236 p_NEW_CONTACT_FLAG => l_temp_party_rec.CONTACT_FLAG ,
3237 p_OLD_CONTACT_IP_ID => fnd_api.g_miss_num ,
3238 p_NEW_CONTACT_IP_ID => l_temp_party_rec.CONTACT_IP_ID ,
3239 p_OLD_ACTIVE_START_DATE => l_curr_party_rec.ACTIVE_START_DATE ,
3240 p_NEW_ACTIVE_START_DATE => l_temp_party_rec.ACTIVE_START_DATE ,
3241 p_OLD_ACTIVE_END_DATE => l_curr_party_rec.ACTIVE_END_DATE ,
3242 p_NEW_ACTIVE_END_DATE => l_temp_party_rec.ACTIVE_END_DATE ,
3243 p_OLD_CONTEXT => fnd_api.g_miss_char ,
3244 p_NEW_CONTEXT => l_temp_party_rec.context ,
3245 p_OLD_ATTRIBUTE1 => fnd_api.g_miss_char ,
3246 p_NEW_ATTRIBUTE1 => l_temp_party_rec.ATTRIBUTE1 ,
3247 p_OLD_ATTRIBUTE2 => fnd_api.g_miss_char ,
3248 p_NEW_ATTRIBUTE2 => l_temp_party_rec.ATTRIBUTE2 ,
3249 p_OLD_ATTRIBUTE3 => fnd_api.g_miss_char ,
3250 p_NEW_ATTRIBUTE3 => l_temp_party_rec.ATTRIBUTE3 ,
3251 p_OLD_ATTRIBUTE4 => fnd_api.g_miss_char ,
3252 p_NEW_ATTRIBUTE4 => l_temp_party_rec.ATTRIBUTE4 ,
3253 p_OLD_ATTRIBUTE5 => fnd_api.g_miss_char ,
3254 p_NEW_ATTRIBUTE5 => l_temp_party_rec.ATTRIBUTE5 ,
3255 p_OLD_ATTRIBUTE6 => fnd_api.g_miss_char ,
3256 p_NEW_ATTRIBUTE6 => l_temp_party_rec.ATTRIBUTE6 ,
3257 p_OLD_ATTRIBUTE7 => fnd_api.g_miss_char ,
3258 p_NEW_ATTRIBUTE7 => l_temp_party_rec.ATTRIBUTE7 ,
3259 p_OLD_ATTRIBUTE8 => fnd_api.g_miss_char ,
3260 p_NEW_ATTRIBUTE8 => l_temp_party_rec.ATTRIBUTE8 ,
3261 p_OLD_ATTRIBUTE9 => fnd_api.g_miss_char ,
3262 p_NEW_ATTRIBUTE9 => l_temp_party_rec.ATTRIBUTE9 ,
3263 p_OLD_ATTRIBUTE10 => fnd_api.g_miss_char ,
3264 p_NEW_ATTRIBUTE10 => l_temp_party_rec.ATTRIBUTE10 ,
3265 p_OLD_ATTRIBUTE11 => fnd_api.g_miss_char ,
3266 p_NEW_ATTRIBUTE11 => l_temp_party_rec.ATTRIBUTE11 ,
3267 p_OLD_ATTRIBUTE12 => fnd_api.g_miss_char ,
3268 p_NEW_ATTRIBUTE12 => l_temp_party_rec.ATTRIBUTE12 ,
3269 p_OLD_ATTRIBUTE13 => fnd_api.g_miss_char ,
3270 p_NEW_ATTRIBUTE13 => l_temp_party_rec.ATTRIBUTE13 ,
3271 p_OLD_ATTRIBUTE14 => fnd_api.g_miss_char ,
3272 p_NEW_ATTRIBUTE14 => l_temp_party_rec.ATTRIBUTE14 ,
3273 p_OLD_ATTRIBUTE15 => fnd_api.g_miss_char ,
3274 p_NEW_ATTRIBUTE15 => l_temp_party_rec.ATTRIBUTE15 ,
3275 p_FULL_DUMP_FLAG => fnd_api.g_miss_char ,
3276 p_CREATED_BY => FND_API.G_MISS_NUM ,
3277 p_CREATION_DATE => FND_API.G_MISS_DATE ,
3278 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
3279 p_LAST_UPDATE_DATE => SYSDATE ,
3280 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
3281 p_OBJECT_VERSION_NUMBER => fnd_api.g_miss_num ,
3282 p_OLD_PRIMARY_FLAG => fnd_api.g_miss_char ,
3283 p_NEW_PRIMARY_FLAG => l_temp_party_rec.PRIMARY_FLAG ,
3284 p_OLD_PREFERRED_FLAG => fnd_api.g_miss_char ,
3285 p_NEW_PREFERRED_FLAG => l_temp_party_rec.PREFERRED_FLAG );
3286
3287 ELSE
3288
3289 IF ( l_pty_hist_csr.old_party_source_table IS NULL
3290 AND l_pty_hist_csr.new_party_source_table IS NULL ) THEN
3291 IF ( l_temp_party_rec.party_source_table = l_curr_party_rec.party_source_table )
3292 OR ( l_temp_party_rec.party_source_table = fnd_api.g_miss_char ) THEN
3293 l_pty_hist_csr.old_party_source_table := NULL;
3294 l_pty_hist_csr.new_party_source_table := NULL;
3295 ELSE
3296 l_pty_hist_csr.old_party_source_table := fnd_api.g_miss_char;
3297 l_pty_hist_csr.new_party_source_table := l_temp_party_rec.party_source_table;
3298 END IF;
3299 ELSE
3300 l_pty_hist_csr.old_party_source_table := fnd_api.g_miss_char;
3301 l_pty_hist_csr.new_party_source_table := l_temp_party_rec.party_source_table;
3302 END IF;
3303 --
3304 IF ( l_pty_hist_csr.old_party_id IS NULL
3305 AND l_pty_hist_csr.new_party_id IS NULL ) THEN
3306 IF ( l_temp_party_rec.party_id = l_curr_party_rec.party_id )
3307 OR ( l_temp_party_rec.party_id = fnd_api.g_miss_num ) THEN
3308 l_pty_hist_csr.old_party_id := NULL;
3309 l_pty_hist_csr.new_party_id := NULL;
3310 ELSE
3311 l_pty_hist_csr.old_party_id := fnd_api.g_miss_num;
3312 l_pty_hist_csr.new_party_id := l_temp_party_rec.party_id;
3313 END IF;
3314 ELSE
3315 l_pty_hist_csr.old_party_id := fnd_api.g_miss_num;
3316 l_pty_hist_csr.new_party_id := l_temp_party_rec.party_id;
3317 END IF;
3318 --
3319 IF ( l_pty_hist_csr.old_relationship_type_code IS NULL
3320 AND l_pty_hist_csr.new_relationship_type_code IS NULL ) THEN
3321 IF ( l_temp_party_rec.relationship_type_code = l_curr_party_rec.relationship_type_code )
3322 OR ( l_temp_party_rec.relationship_type_code = fnd_api.g_miss_char ) THEN
3323 l_pty_hist_csr.old_relationship_type_code := NULL;
3324 l_pty_hist_csr.new_relationship_type_code := NULL;
3325 ELSE
3326 l_pty_hist_csr.old_relationship_type_code := fnd_api.g_miss_char;
3327 l_pty_hist_csr.new_relationship_type_code := l_temp_party_rec.relationship_type_code;
3328 END IF;
3329 ELSE
3330 l_pty_hist_csr.old_relationship_type_code := fnd_api.g_miss_char;
3331 l_pty_hist_csr.new_relationship_type_code := l_temp_party_rec.relationship_type_code;
3332 END IF;
3333 --
3334 IF ( l_pty_hist_csr.old_contact_flag IS NULL
3335 AND l_pty_hist_csr.new_contact_flag IS NULL ) THEN
3336 IF ( l_temp_party_rec.contact_flag = l_curr_party_rec.contact_flag )
3337 OR ( l_temp_party_rec.contact_flag = fnd_api.g_miss_char ) THEN
3338 l_pty_hist_csr.old_contact_flag := NULL;
3339 l_pty_hist_csr.new_contact_flag := NULL;
3340 ELSE
3341 l_pty_hist_csr.old_contact_flag := fnd_api.g_miss_char;
3342 l_pty_hist_csr.new_contact_flag := l_temp_party_rec.contact_flag;
3343 END IF;
3344 ELSE
3345 l_pty_hist_csr.old_contact_flag := fnd_api.g_miss_char;
3346 l_pty_hist_csr.new_contact_flag := l_temp_party_rec.contact_flag;
3347 END IF;
3348 --
3349 IF ( l_pty_hist_csr.old_contact_ip_id IS NULL
3350 AND l_pty_hist_csr.new_contact_ip_id IS NULL ) THEN
3351 IF ( l_temp_party_rec.contact_ip_id = l_curr_party_rec.contact_ip_id )
3352 OR ( l_temp_party_rec.contact_ip_id = fnd_api.g_miss_num ) THEN
3353 l_pty_hist_csr.old_contact_ip_id := NULL;
3354 l_pty_hist_csr.new_contact_ip_id := NULL;
3355 ELSE
3356 l_pty_hist_csr.old_contact_ip_id := fnd_api.g_miss_num;
3357 l_pty_hist_csr.new_contact_ip_id := l_temp_party_rec.contact_ip_id;
3358 END IF;
3359 ELSE
3360 l_pty_hist_csr.old_contact_ip_id := fnd_api.g_miss_num;
3361 l_pty_hist_csr.new_contact_ip_id := l_temp_party_rec.contact_ip_id;
3362 END IF;
3363 --
3364 IF ( l_pty_hist_csr.old_active_start_date IS NULL
3365 AND l_pty_hist_csr.new_active_start_date IS NULL ) THEN
3366 IF ( l_temp_party_rec.active_start_date = l_curr_party_rec.active_start_date )
3367 OR ( l_temp_party_rec.active_start_date = fnd_api.g_miss_date ) THEN
3368 l_pty_hist_csr.old_active_start_date := NULL;
3369 l_pty_hist_csr.new_active_start_date := NULL;
3370 ELSE
3371 l_pty_hist_csr.old_active_start_date := fnd_api.g_miss_date;
3372 l_pty_hist_csr.new_active_start_date := l_temp_party_rec.active_start_date;
3373 END IF;
3374 ELSE
3375 l_pty_hist_csr.old_active_start_date := fnd_api.g_miss_date;
3376 l_pty_hist_csr.new_active_start_date := l_temp_party_rec.active_start_date;
3377 END IF;
3378 --
3379 IF ( l_pty_hist_csr.old_active_end_date IS NULL
3380 AND l_pty_hist_csr.new_active_end_date IS NULL ) THEN
3381 IF ( l_temp_party_rec.active_end_date = l_curr_party_rec.active_end_date )
3382 OR ( l_temp_party_rec.active_end_date = fnd_api.g_miss_date ) THEN
3383 l_pty_hist_csr.old_active_end_date := NULL;
3384 l_pty_hist_csr.new_active_end_date := NULL;
3385 ELSE
3386 l_pty_hist_csr.old_active_end_date := fnd_api.g_miss_date;
3387 l_pty_hist_csr.new_active_end_date := l_temp_party_rec.active_end_date;
3388 END IF;
3389 ELSE
3390 l_pty_hist_csr.old_active_end_date := fnd_api.g_miss_date;
3391 l_pty_hist_csr.new_active_end_date := l_temp_party_rec.active_end_date;
3392 END IF;
3393 --
3394 IF ( l_pty_hist_csr.old_context IS NULL
3395 AND l_pty_hist_csr.new_context IS NULL ) THEN
3396 IF ( l_temp_party_rec.context = l_curr_party_rec.context )
3397 OR ( l_temp_party_rec.context = fnd_api.g_miss_char ) THEN
3398 l_pty_hist_csr.old_context := NULL;
3399 l_pty_hist_csr.new_context := NULL;
3400 ELSE
3401 l_pty_hist_csr.old_context := fnd_api.g_miss_char;
3402 l_pty_hist_csr.new_context := l_temp_party_rec.context;
3403 END IF;
3404 ELSE
3405 l_pty_hist_csr.old_context := fnd_api.g_miss_char;
3406 l_pty_hist_csr.new_context := l_temp_party_rec.context;
3407 END IF;
3408 --
3409 IF ( l_pty_hist_csr.old_attribute1 IS NULL
3410 AND l_pty_hist_csr.new_attribute1 IS NULL ) THEN
3411 IF ( l_temp_party_rec.attribute1 = l_curr_party_rec.attribute1 )
3412 OR ( l_temp_party_rec.attribute1 = fnd_api.g_miss_char ) THEN
3413 l_pty_hist_csr.old_attribute1 := NULL;
3414 l_pty_hist_csr.new_attribute1 := NULL;
3415 ELSE
3416 l_pty_hist_csr.old_attribute1 := fnd_api.g_miss_char;
3417 l_pty_hist_csr.new_attribute1 := l_temp_party_rec.attribute1;
3418 END IF;
3419 ELSE
3420 l_pty_hist_csr.old_attribute1 := fnd_api.g_miss_char;
3421 l_pty_hist_csr.new_attribute1 := l_temp_party_rec.attribute1;
3422 END IF;
3423 --
3424 IF ( l_pty_hist_csr.old_attribute2 IS NULL
3425 AND l_pty_hist_csr.new_attribute2 IS NULL ) THEN
3426 IF ( l_temp_party_rec.attribute2 = l_curr_party_rec.attribute2 )
3427 OR ( l_temp_party_rec.attribute2 = fnd_api.g_miss_char ) THEN
3428 l_pty_hist_csr.old_attribute2 := NULL;
3429 l_pty_hist_csr.new_attribute2 := NULL;
3430 ELSE
3431 l_pty_hist_csr.old_attribute2 := fnd_api.g_miss_char;
3432 l_pty_hist_csr.new_attribute2 := l_temp_party_rec.attribute2;
3433 END IF;
3434 ELSE
3435 l_pty_hist_csr.old_attribute2 := fnd_api.g_miss_char;
3436 l_pty_hist_csr.new_attribute2 := l_temp_party_rec.attribute2;
3437 END IF;
3438 --
3439 IF ( l_pty_hist_csr.old_attribute3 IS NULL
3440 AND l_pty_hist_csr.new_attribute3 IS NULL ) THEN
3441 IF ( l_temp_party_rec.attribute3 = l_curr_party_rec.attribute3 )
3442 OR ( l_temp_party_rec.attribute3 = fnd_api.g_miss_char ) THEN
3443 l_pty_hist_csr.old_attribute3 := NULL;
3444 l_pty_hist_csr.new_attribute3 := NULL;
3445 ELSE
3446 l_pty_hist_csr.old_attribute3 := fnd_api.g_miss_char;
3447 l_pty_hist_csr.new_attribute3 := l_temp_party_rec.attribute3;
3448 END IF;
3449 ELSE
3450 l_pty_hist_csr.old_attribute3 := fnd_api.g_miss_char;
3451 l_pty_hist_csr.new_attribute3 := l_temp_party_rec.attribute3;
3452 END IF;
3453 --
3454 IF ( l_pty_hist_csr.old_attribute4 IS NULL
3455 AND l_pty_hist_csr.new_attribute4 IS NULL ) THEN
3456 IF ( l_temp_party_rec.attribute4 = l_curr_party_rec.attribute4 )
3457 OR ( l_temp_party_rec.attribute4 = fnd_api.g_miss_char ) THEN
3458 l_pty_hist_csr.old_attribute4 := NULL;
3459 l_pty_hist_csr.new_attribute4 := NULL;
3460 ELSE
3461 l_pty_hist_csr.old_attribute4 := fnd_api.g_miss_char;
3462 l_pty_hist_csr.new_attribute4 := l_temp_party_rec.attribute4;
3463 END IF;
3464 ELSE
3465 l_pty_hist_csr.old_attribute4 := fnd_api.g_miss_char;
3466 l_pty_hist_csr.new_attribute4 := l_temp_party_rec.attribute4;
3467 END IF;
3468 --
3469 IF ( l_pty_hist_csr.old_attribute5 IS NULL
3470 AND l_pty_hist_csr.new_attribute5 IS NULL ) THEN
3471 IF ( l_temp_party_rec.attribute5 = l_curr_party_rec.attribute5 )
3472 OR ( l_temp_party_rec.attribute5 = fnd_api.g_miss_char ) THEN
3473 l_pty_hist_csr.old_attribute5 := NULL;
3474 l_pty_hist_csr.new_attribute5 := NULL;
3475 ELSE
3476 l_pty_hist_csr.old_attribute5 := fnd_api.g_miss_char;
3477 l_pty_hist_csr.new_attribute5 := l_temp_party_rec.attribute5;
3478 END IF;
3479 ELSE
3480 l_pty_hist_csr.old_attribute5 := fnd_api.g_miss_char;
3481 l_pty_hist_csr.new_attribute5 := l_temp_party_rec.attribute5;
3482 END IF;
3483 --
3484 IF ( l_pty_hist_csr.old_attribute6 IS NULL
3485 AND l_pty_hist_csr.new_attribute6 IS NULL ) THEN
3486 IF ( l_temp_party_rec.attribute6 = l_curr_party_rec.attribute6 )
3487 OR ( l_temp_party_rec.attribute6 = fnd_api.g_miss_char ) THEN
3488 l_pty_hist_csr.old_attribute6 := NULL;
3489 l_pty_hist_csr.new_attribute6 := NULL;
3490 ELSE
3491 l_pty_hist_csr.old_attribute6 := fnd_api.g_miss_char;
3492 l_pty_hist_csr.new_attribute6 := l_temp_party_rec.attribute6;
3493 END IF;
3494 ELSE
3495 l_pty_hist_csr.old_attribute6 := fnd_api.g_miss_char;
3496 l_pty_hist_csr.new_attribute6 := l_temp_party_rec.attribute6;
3497 END IF;
3498 --
3499 IF ( l_pty_hist_csr.old_attribute7 IS NULL
3500 AND l_pty_hist_csr.new_attribute7 IS NULL ) THEN
3501 IF ( l_temp_party_rec.attribute7 = l_curr_party_rec.attribute7 )
3502 OR ( l_temp_party_rec.attribute7 = fnd_api.g_miss_char ) THEN
3503 l_pty_hist_csr.old_attribute7 := NULL;
3504 l_pty_hist_csr.new_attribute7 := NULL;
3505 ELSE
3506 l_pty_hist_csr.old_attribute7 := fnd_api.g_miss_char;
3507 l_pty_hist_csr.new_attribute7 := l_temp_party_rec.attribute7;
3508 END IF;
3509 ELSE
3510 l_pty_hist_csr.old_attribute7 := fnd_api.g_miss_char;
3511 l_pty_hist_csr.new_attribute7 := l_temp_party_rec.attribute7;
3512 END IF;
3513 --
3514 IF ( l_pty_hist_csr.old_attribute8 IS NULL
3515 AND l_pty_hist_csr.new_attribute8 IS NULL ) THEN
3516 IF ( l_temp_party_rec.attribute8 = l_curr_party_rec.attribute8 )
3517 OR ( l_temp_party_rec.attribute8 = fnd_api.g_miss_char ) THEN
3518 l_pty_hist_csr.old_attribute8 := NULL;
3519 l_pty_hist_csr.new_attribute8 := NULL;
3520 ELSE
3521 l_pty_hist_csr.old_attribute8 := fnd_api.g_miss_char;
3522 l_pty_hist_csr.new_attribute8 := l_temp_party_rec.attribute8;
3523 END IF;
3524 ELSE
3525 l_pty_hist_csr.old_attribute8 := fnd_api.g_miss_char;
3526 l_pty_hist_csr.new_attribute8 := l_temp_party_rec.attribute8;
3527 END IF;
3528 --
3529 IF ( l_pty_hist_csr.old_attribute9 IS NULL
3530 AND l_pty_hist_csr.new_attribute9 IS NULL ) THEN
3531 IF ( l_temp_party_rec.attribute9 = l_curr_party_rec.attribute9 )
3532 OR ( l_temp_party_rec.attribute9 = fnd_api.g_miss_char ) THEN
3533 l_pty_hist_csr.old_attribute9 := NULL;
3534 l_pty_hist_csr.new_attribute9 := NULL;
3535 ELSE
3536 l_pty_hist_csr.old_attribute9 := fnd_api.g_miss_char;
3537 l_pty_hist_csr.new_attribute9 := l_temp_party_rec.attribute9;
3538 END IF;
3539 ELSE
3540 l_pty_hist_csr.old_attribute9 := fnd_api.g_miss_char;
3541 l_pty_hist_csr.new_attribute9 := l_temp_party_rec.attribute9;
3542 END IF;
3543 --
3544 IF ( l_pty_hist_csr.old_attribute10 IS NULL
3545 AND l_pty_hist_csr.new_attribute10 IS NULL ) THEN
3546 IF ( l_temp_party_rec.attribute10 = l_curr_party_rec.attribute10 )
3547 OR ( l_temp_party_rec.attribute10 = fnd_api.g_miss_char ) THEN
3548 l_pty_hist_csr.old_attribute10 := NULL;
3549 l_pty_hist_csr.new_attribute10 := NULL;
3550 ELSE
3551 l_pty_hist_csr.old_attribute10 := fnd_api.g_miss_char;
3552 l_pty_hist_csr.new_attribute10 := l_temp_party_rec.attribute10;
3553 END IF;
3554 ELSE
3555 l_pty_hist_csr.old_attribute10 := fnd_api.g_miss_char;
3556 l_pty_hist_csr.new_attribute10 := l_temp_party_rec.attribute10;
3557 END IF;
3558 --
3559 IF ( l_pty_hist_csr.old_attribute11 IS NULL
3560 AND l_pty_hist_csr.new_attribute11 IS NULL ) THEN
3561 IF ( l_temp_party_rec.attribute11 = l_curr_party_rec.attribute11 )
3562 OR ( l_temp_party_rec.attribute11 = fnd_api.g_miss_char ) THEN
3563 l_pty_hist_csr.old_attribute11 := NULL;
3564 l_pty_hist_csr.new_attribute11 := NULL;
3565 ELSE
3566 l_pty_hist_csr.old_attribute11 := fnd_api.g_miss_char;
3567 l_pty_hist_csr.new_attribute11 := l_temp_party_rec.attribute11;
3568 END IF;
3569 ELSE
3570 l_pty_hist_csr.old_attribute11 := fnd_api.g_miss_char;
3571 l_pty_hist_csr.new_attribute11 := l_temp_party_rec.attribute11;
3572 END IF;
3573 --
3574 IF ( l_pty_hist_csr.old_attribute12 IS NULL
3575 AND l_pty_hist_csr.new_attribute12 IS NULL ) THEN
3576 IF ( l_temp_party_rec.attribute12 = l_curr_party_rec.attribute12 )
3577 OR ( l_temp_party_rec.attribute12 = fnd_api.g_miss_char ) THEN
3578 l_pty_hist_csr.old_attribute12 := NULL;
3579 l_pty_hist_csr.new_attribute12 := NULL;
3580 ELSE
3581 l_pty_hist_csr.old_attribute12 := fnd_api.g_miss_char;
3582 l_pty_hist_csr.new_attribute12 := l_temp_party_rec.attribute12;
3583 END IF;
3584 ELSE
3585 l_pty_hist_csr.old_attribute12 := fnd_api.g_miss_char;
3586 l_pty_hist_csr.new_attribute12 := l_temp_party_rec.attribute12;
3587 END IF;
3588 --
3589 IF ( l_pty_hist_csr.old_attribute13 IS NULL
3590 AND l_pty_hist_csr.new_attribute13 IS NULL ) THEN
3591 IF ( l_temp_party_rec.attribute13 = l_curr_party_rec.attribute13 )
3592 OR ( l_temp_party_rec.attribute13 = fnd_api.g_miss_char ) THEN
3593 l_pty_hist_csr.old_attribute13 := NULL;
3594 l_pty_hist_csr.new_attribute13 := NULL;
3595 ELSE
3596 l_pty_hist_csr.old_attribute13 := fnd_api.g_miss_char;
3597 l_pty_hist_csr.new_attribute13 := l_temp_party_rec.attribute13;
3598 END IF;
3599 ELSE
3600 l_pty_hist_csr.old_attribute13 := fnd_api.g_miss_char;
3601 l_pty_hist_csr.new_attribute13 := l_temp_party_rec.attribute13;
3602 END IF;
3603 --
3604 IF ( l_pty_hist_csr.old_attribute14 IS NULL
3605 AND l_pty_hist_csr.new_attribute14 IS NULL ) THEN
3606 IF ( l_temp_party_rec.attribute14 = l_curr_party_rec.attribute14 )
3607 OR ( l_temp_party_rec.attribute14 = fnd_api.g_miss_char ) THEN
3608 l_pty_hist_csr.old_attribute14 := NULL;
3609 l_pty_hist_csr.new_attribute14 := NULL;
3610 ELSE
3611 l_pty_hist_csr.old_attribute14 := fnd_api.g_miss_char;
3612 l_pty_hist_csr.new_attribute14 := l_temp_party_rec.attribute14;
3613 END IF;
3614 ELSE
3615 l_pty_hist_csr.old_attribute14 := fnd_api.g_miss_char;
3616 l_pty_hist_csr.new_attribute14 := l_temp_party_rec.attribute14;
3617 END IF;
3618 --
3619 IF ( l_pty_hist_csr.old_attribute15 IS NULL
3620 AND l_pty_hist_csr.new_attribute15 IS NULL ) THEN
3621 IF ( l_temp_party_rec.attribute15 = l_curr_party_rec.attribute15 )
3622 OR ( l_temp_party_rec.attribute15 = fnd_api.g_miss_char ) THEN
3623 l_pty_hist_csr.old_attribute15 := NULL;
3624 l_pty_hist_csr.new_attribute15 := NULL;
3625 ELSE
3626 l_pty_hist_csr.old_attribute15 := fnd_api.g_miss_char;
3627 l_pty_hist_csr.new_attribute15 := l_temp_party_rec.attribute15;
3628 END IF;
3629 ELSE
3630 l_pty_hist_csr.old_attribute15 := fnd_api.g_miss_char;
3631 l_pty_hist_csr.new_attribute15 := l_temp_party_rec.attribute15;
3632 END IF;
3633 --
3634 IF ( l_pty_hist_csr.old_primary_flag IS NULL
3635 AND l_pty_hist_csr.new_primary_flag IS NULL ) THEN
3636 IF ( l_temp_party_rec.primary_flag = l_curr_party_rec.primary_flag )
3637 OR ( l_temp_party_rec.primary_flag = fnd_api.g_miss_char ) THEN
3638 l_pty_hist_csr.old_primary_flag := NULL;
3639 l_pty_hist_csr.new_primary_flag := NULL;
3640 ELSE
3641 l_pty_hist_csr.old_primary_flag := fnd_api.g_miss_char;
3642 l_pty_hist_csr.new_primary_flag := l_temp_party_rec.primary_flag;
3643 END IF;
3644 ELSE
3645 l_pty_hist_csr.old_primary_flag := fnd_api.g_miss_char;
3646 l_pty_hist_csr.new_primary_flag := l_temp_party_rec.primary_flag;
3647 END IF;
3648 --
3649 IF ( l_pty_hist_csr.old_preferred_flag IS NULL
3650 AND l_pty_hist_csr.new_preferred_flag IS NULL ) THEN
3651 IF ( l_temp_party_rec.preferred_flag = l_curr_party_rec.preferred_flag )
3652 OR ( l_temp_party_rec.preferred_flag = fnd_api.g_miss_char ) THEN
3653 l_pty_hist_csr.old_preferred_flag := NULL;
3654 l_pty_hist_csr.new_preferred_flag := NULL;
3655 ELSE
3656 l_pty_hist_csr.old_preferred_flag := fnd_api.g_miss_char;
3657 l_pty_hist_csr.new_preferred_flag := l_temp_party_rec.preferred_flag;
3658 END IF;
3659 ELSE
3660 l_pty_hist_csr.old_preferred_flag := fnd_api.g_miss_char;
3661 l_pty_hist_csr.new_preferred_flag := l_temp_party_rec.preferred_flag;
3662 END IF;
3663
3664 CSI_I_PARTIES_H_PKG.update_Row
3665 (
3666 p_INSTANCE_PARTY_HISTORY_ID => l_party_hist_id ,
3667 p_INSTANCE_PARTY_ID => FND_API.G_MISS_NUM ,
3668 p_TRANSACTION_ID => FND_API.G_MISS_NUM ,
3669 p_OLD_PARTY_SOURCE_TABLE => l_pty_hist_csr.OLD_PARTY_SOURCE_TABLE ,
3670 p_NEW_PARTY_SOURCE_TABLE => l_pty_hist_csr.NEW_PARTY_SOURCE_TABLE ,
3671 p_OLD_PARTY_ID => l_pty_hist_csr.OLD_PARTY_ID ,
3672 p_NEW_PARTY_ID => l_pty_hist_csr.NEW_PARTY_ID ,
3673 p_OLD_RELATIONSHIP_TYPE_CODE => l_pty_hist_csr.OLD_RELATIONSHIP_TYPE_CODE ,
3674 p_NEW_RELATIONSHIP_TYPE_CODE => l_pty_hist_csr.NEW_RELATIONSHIP_TYPE_CODE ,
3675 p_OLD_CONTACT_FLAG => l_pty_hist_csr.OLD_CONTACT_FLAG ,
3676 p_NEW_CONTACT_FLAG => l_pty_hist_csr.NEW_CONTACT_FLAG ,
3677 p_OLD_CONTACT_IP_ID => l_pty_hist_csr.OLD_CONTACT_IP_ID ,
3678 p_NEW_CONTACT_IP_ID => l_pty_hist_csr.NEW_CONTACT_IP_ID ,
3679 p_OLD_ACTIVE_START_DATE => l_pty_hist_csr.OLD_ACTIVE_START_DATE ,
3680 p_NEW_ACTIVE_START_DATE => l_pty_hist_csr.NEW_ACTIVE_START_DATE ,
3681 p_OLD_ACTIVE_END_DATE => l_pty_hist_csr.OLD_ACTIVE_END_DATE ,
3682 p_NEW_ACTIVE_END_DATE => l_pty_hist_csr.NEW_ACTIVE_END_DATE ,
3683 p_OLD_CONTEXT => l_pty_hist_csr.OLD_CONTEXT ,
3684 p_NEW_CONTEXT => l_pty_hist_csr.NEW_CONTEXT ,
3685 p_OLD_ATTRIBUTE1 => l_pty_hist_csr.OLD_ATTRIBUTE1 ,
3686 p_NEW_ATTRIBUTE1 => l_pty_hist_csr.NEW_ATTRIBUTE1 ,
3687 p_OLD_ATTRIBUTE2 => l_pty_hist_csr.OLD_ATTRIBUTE2 ,
3688 p_NEW_ATTRIBUTE2 => l_pty_hist_csr.NEW_ATTRIBUTE2 ,
3689 p_OLD_ATTRIBUTE3 => l_pty_hist_csr.OLD_ATTRIBUTE3 ,
3690 p_NEW_ATTRIBUTE3 => l_pty_hist_csr.NEW_ATTRIBUTE3 ,
3691 p_OLD_ATTRIBUTE4 => l_pty_hist_csr.OLD_ATTRIBUTE4 ,
3692 p_NEW_ATTRIBUTE4 => l_pty_hist_csr.NEW_ATTRIBUTE4 ,
3693 p_OLD_ATTRIBUTE5 => l_pty_hist_csr.OLD_ATTRIBUTE5 ,
3694 p_NEW_ATTRIBUTE5 => l_pty_hist_csr.NEW_ATTRIBUTE5 ,
3695 p_OLD_ATTRIBUTE6 => l_pty_hist_csr.OLD_ATTRIBUTE6 ,
3696 p_NEW_ATTRIBUTE6 => l_pty_hist_csr.NEW_ATTRIBUTE6 ,
3697 p_OLD_ATTRIBUTE7 => l_pty_hist_csr.OLD_ATTRIBUTE7 ,
3698 p_NEW_ATTRIBUTE7 => l_pty_hist_csr.NEW_ATTRIBUTE7 ,
3699 p_OLD_ATTRIBUTE8 => l_pty_hist_csr.OLD_ATTRIBUTE8 ,
3700 p_NEW_ATTRIBUTE8 => l_pty_hist_csr.NEW_ATTRIBUTE8 ,
3701 p_OLD_ATTRIBUTE9 => l_pty_hist_csr.OLD_ATTRIBUTE9 ,
3702 p_NEW_ATTRIBUTE9 => l_pty_hist_csr.NEW_ATTRIBUTE9 ,
3703 p_OLD_ATTRIBUTE10 => l_pty_hist_csr.OLD_ATTRIBUTE10 ,
3704 p_NEW_ATTRIBUTE10 => l_pty_hist_csr.NEW_ATTRIBUTE10 ,
3705 p_OLD_ATTRIBUTE11 => l_pty_hist_csr.OLD_ATTRIBUTE11 ,
3706 p_NEW_ATTRIBUTE11 => l_pty_hist_csr.NEW_ATTRIBUTE11 ,
3707 p_OLD_ATTRIBUTE12 => l_pty_hist_csr.OLD_ATTRIBUTE12 ,
3708 p_NEW_ATTRIBUTE12 => l_pty_hist_csr.NEW_ATTRIBUTE12 ,
3709 p_OLD_ATTRIBUTE13 => l_pty_hist_csr.OLD_ATTRIBUTE13 ,
3710 p_NEW_ATTRIBUTE13 => l_pty_hist_csr.NEW_ATTRIBUTE13 ,
3711 p_OLD_ATTRIBUTE14 => l_pty_hist_csr.OLD_ATTRIBUTE14 ,
3712 p_NEW_ATTRIBUTE14 => l_pty_hist_csr.NEW_ATTRIBUTE14 ,
3713 p_OLD_ATTRIBUTE15 => l_pty_hist_csr.OLD_ATTRIBUTE15 ,
3714 p_NEW_ATTRIBUTE15 => l_pty_hist_csr.NEW_ATTRIBUTE15 ,
3715 p_FULL_DUMP_FLAG => FND_API.G_MISS_CHAR ,
3716 p_CREATED_BY => FND_API.G_MISS_NUM ,
3717 p_CREATION_DATE => FND_API.G_MISS_DATE ,
3718 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
3719 p_LAST_UPDATE_DATE => SYSDATE ,
3720 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
3721 p_OBJECT_VERSION_NUMBER => FND_API.G_MISS_NUM ,
3722 p_OLD_PRIMARY_FLAG => l_pty_hist_csr.OLD_CONTACT_FLAG ,
3723 p_NEW_PRIMARY_FLAG => l_pty_hist_csr.NEW_PRIMARY_FLAG ,
3724 p_OLD_PREFERRED_FLAG => l_pty_hist_csr.OLD_CONTACT_FLAG ,
3725 p_NEW_PREFERRED_FLAG => l_pty_hist_csr.NEW_PREFERRED_FLAG );
3726
3727 END IF;
3728 EXCEPTION
3729
3730 WHEN NO_DATA_FOUND THEN
3731 IF (l_mod_value = 0) THEN
3732 -- If the mod value is 0 then dump all the columns both changed and unchanged
3733 -- changed columns have old and new values while the unchanged values have old and new values
3734 -- exactly same
3735 IF (p_party_rec.PARTY_SOURCE_TABLE = FND_API.G_MISS_CHAR) THEN
3736 l_temp_party_rec.PARTY_SOURCE_TABLE := l_curr_party_rec.PARTY_SOURCE_TABLE;
3737 END IF;
3738 IF (p_party_rec.PARTY_ID = FND_API.G_MISS_NUM) THEN
3739 l_temp_party_rec.PARTY_ID := l_curr_party_rec.PARTY_ID ;
3740 END IF;
3741 IF (p_party_rec.RELATIONSHIP_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
3742 l_temp_party_rec.RELATIONSHIP_TYPE_CODE := l_curr_party_rec.RELATIONSHIP_TYPE_CODE ;
3743 END IF;
3744 IF (p_party_rec.CONTACT_FLAG = FND_API.G_MISS_CHAR) THEN
3745 l_temp_party_rec.CONTACT_FLAG := l_curr_party_rec.CONTACT_FLAG ;
3746 END IF;
3747 IF (p_party_rec.CONTACT_IP_ID = FND_API.G_MISS_NUM) THEN
3748 l_temp_party_rec.CONTACT_IP_ID := l_curr_party_rec.CONTACT_IP_ID ;
3749 END IF;
3750 IF (p_party_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
3751 l_temp_party_rec.ACTIVE_START_DATE := l_curr_party_rec.ACTIVE_START_DATE ;
3752 END IF;
3753 IF (p_party_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
3754 l_temp_party_rec.ACTIVE_END_DATE := l_curr_party_rec.ACTIVE_END_DATE ;
3755 END IF;
3756 IF (p_party_rec.context = FND_API.G_MISS_CHAR) THEN
3757 l_temp_party_rec.CONTEXT := l_curr_party_rec.CONTEXT ;
3758 END IF;
3759 IF (p_party_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
3760 l_temp_party_rec.ATTRIBUTE1 := l_curr_party_rec.ATTRIBUTE1 ;
3761 END IF;
3762 IF (p_party_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
3763 l_temp_party_rec.ATTRIBUTE2 := l_curr_party_rec.ATTRIBUTE2 ;
3764 END IF;
3765 IF (p_party_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
3766 l_temp_party_rec.ATTRIBUTE3 := l_curr_party_rec.ATTRIBUTE3 ;
3767 END IF;
3768 IF (p_party_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
3769 l_temp_party_rec.ATTRIBUTE4 := l_curr_party_rec.ATTRIBUTE4 ;
3770 END IF;
3771 IF (p_party_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
3772 l_temp_party_rec.ATTRIBUTE5 := l_curr_party_rec.ATTRIBUTE5 ;
3773 END IF;
3774 IF (p_party_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
3775 l_temp_party_rec.ATTRIBUTE6 := l_curr_party_rec.ATTRIBUTE6 ;
3776 END IF;
3777 IF (p_party_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
3778 l_temp_party_rec.ATTRIBUTE7 := l_curr_party_rec.ATTRIBUTE7 ;
3779 END IF;
3780 IF (p_party_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
3781 l_temp_party_rec.ATTRIBUTE8 := l_curr_party_rec.ATTRIBUTE8 ;
3782 END IF;
3783 IF (p_party_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
3784 l_temp_party_rec.ATTRIBUTE9 := l_curr_party_rec.ATTRIBUTE9 ;
3785 END IF;
3786 IF (p_party_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
3787 l_temp_party_rec.ATTRIBUTE10 := l_curr_party_rec.ATTRIBUTE10 ;
3788 END IF;
3789 IF (p_party_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
3790 l_temp_party_rec.ATTRIBUTE11 := l_curr_party_rec.ATTRIBUTE11 ;
3791 END IF;
3792 IF (p_party_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
3793 l_temp_party_rec.ATTRIBUTE12 := l_curr_party_rec.ATTRIBUTE12 ;
3794 END IF;
3795 IF (p_party_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
3796 l_temp_party_rec.ATTRIBUTE13 := l_curr_party_rec.ATTRIBUTE13 ;
3797 END IF;
3798 IF (p_party_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
3799 l_temp_party_rec.ATTRIBUTE14 := l_curr_party_rec.ATTRIBUTE14 ;
3800 END IF;
3801 IF (p_party_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
3802 l_temp_party_rec.ATTRIBUTE15 := l_curr_party_rec.ATTRIBUTE15 ;
3803 END IF;
3804 IF (p_party_rec.PRIMARY_FLAG = FND_API.G_MISS_CHAR) THEN
3805 l_temp_party_rec.PRIMARY_FLAG := l_curr_party_rec.PRIMARY_FLAG ;
3806 END IF;
3807 IF (p_party_rec.PREFERRED_FLAG = FND_API.G_MISS_CHAR) THEN
3808 l_temp_party_rec.PREFERRED_FLAG := l_curr_party_rec.PREFERRED_FLAG ;
3809 END IF;
3810
3811 -- Call table handlers to insert into csi_i_parties_h table
3812 CSI_I_PARTIES_H_PKG.Insert_Row
3813 (
3814 px_INSTANCE_PARTY_HISTORY_ID => l_inst_party_his_id ,
3815 p_INSTANCE_PARTY_ID => p_party_rec.INSTANCE_PARTY_ID ,
3816 p_TRANSACTION_ID => p_txn_rec.TRANSACTION_ID ,
3817 p_OLD_PARTY_SOURCE_TABLE => l_curr_party_rec.PARTY_SOURCE_TABLE,
3818 p_NEW_PARTY_SOURCE_TABLE => l_temp_party_rec.PARTY_SOURCE_TABLE,
3819 p_OLD_PARTY_ID => l_curr_party_rec.PARTY_ID ,
3820 p_NEW_PARTY_ID => l_temp_party_rec.PARTY_ID ,
3821 p_OLD_RELATIONSHIP_TYPE_CODE => l_curr_party_rec.RELATIONSHIP_TYPE_CODE,
3822 p_NEW_RELATIONSHIP_TYPE_CODE => l_temp_party_rec.RELATIONSHIP_TYPE_CODE,
3823 p_OLD_CONTACT_FLAG => l_curr_party_rec.CONTACT_FLAG ,
3824 p_NEW_CONTACT_FLAG => l_temp_party_rec.CONTACT_FLAG ,
3825 p_OLD_CONTACT_IP_ID => l_curr_party_rec.CONTACT_IP_ID ,
3826 p_NEW_CONTACT_IP_ID => l_temp_party_rec.CONTACT_IP_ID ,
3827 p_OLD_ACTIVE_START_DATE => l_curr_party_rec.ACTIVE_START_DATE,
3828 p_NEW_ACTIVE_START_DATE => l_temp_party_rec.ACTIVE_START_DATE,
3829 p_OLD_ACTIVE_END_DATE => l_curr_party_rec.ACTIVE_END_DATE ,
3830 p_NEW_ACTIVE_END_DATE => l_temp_party_rec.ACTIVE_END_DATE ,
3831 p_OLD_CONTEXT => l_curr_party_rec.context ,
3832 p_NEW_CONTEXT => l_temp_party_rec.context ,
3833 p_OLD_ATTRIBUTE1 => l_curr_party_rec.ATTRIBUTE1 ,
3834 p_NEW_ATTRIBUTE1 => l_temp_party_rec.ATTRIBUTE1 ,
3835 p_OLD_ATTRIBUTE2 => l_curr_party_rec.ATTRIBUTE2 ,
3836 p_NEW_ATTRIBUTE2 => l_temp_party_rec.ATTRIBUTE2 ,
3837 p_OLD_ATTRIBUTE3 => l_curr_party_rec.ATTRIBUTE3 ,
3838 p_NEW_ATTRIBUTE3 => l_temp_party_rec.ATTRIBUTE3 ,
3839 p_OLD_ATTRIBUTE4 => l_curr_party_rec.ATTRIBUTE4 ,
3840 p_NEW_ATTRIBUTE4 => l_temp_party_rec.ATTRIBUTE4 ,
3841 p_OLD_ATTRIBUTE5 => l_curr_party_rec.ATTRIBUTE5 ,
3842 p_NEW_ATTRIBUTE5 => l_temp_party_rec.ATTRIBUTE5 ,
3843 p_OLD_ATTRIBUTE6 => l_curr_party_rec.ATTRIBUTE6 ,
3844 p_NEW_ATTRIBUTE6 => l_temp_party_rec.ATTRIBUTE6 ,
3845 p_OLD_ATTRIBUTE7 => l_curr_party_rec.ATTRIBUTE7 ,
3846 p_NEW_ATTRIBUTE7 => l_temp_party_rec.ATTRIBUTE7 ,
3847 p_OLD_ATTRIBUTE8 => l_curr_party_rec.ATTRIBUTE8 ,
3848 p_NEW_ATTRIBUTE8 => l_temp_party_rec.ATTRIBUTE8 ,
3849 p_OLD_ATTRIBUTE9 => l_curr_party_rec.ATTRIBUTE9 ,
3850 p_NEW_ATTRIBUTE9 => l_temp_party_rec.ATTRIBUTE9 ,
3851 p_OLD_ATTRIBUTE10 => l_curr_party_rec.ATTRIBUTE10 ,
3852 p_NEW_ATTRIBUTE10 => l_temp_party_rec.ATTRIBUTE10 ,
3853 p_OLD_ATTRIBUTE11 => l_curr_party_rec.ATTRIBUTE11 ,
3854 p_NEW_ATTRIBUTE11 => l_temp_party_rec.ATTRIBUTE11 ,
3855 p_OLD_ATTRIBUTE12 => l_curr_party_rec.ATTRIBUTE12 ,
3856 p_NEW_ATTRIBUTE12 => l_temp_party_rec.ATTRIBUTE12 ,
3857 p_OLD_ATTRIBUTE13 => l_curr_party_rec.ATTRIBUTE13 ,
3858 p_NEW_ATTRIBUTE13 => l_temp_party_rec.ATTRIBUTE13 ,
3859 p_OLD_ATTRIBUTE14 => l_curr_party_rec.ATTRIBUTE14 ,
3860 p_NEW_ATTRIBUTE14 => l_temp_party_rec.ATTRIBUTE14 ,
3861 p_OLD_ATTRIBUTE15 => l_curr_party_rec.ATTRIBUTE15 ,
3862 p_NEW_ATTRIBUTE15 => l_temp_party_rec.ATTRIBUTE15 ,
3863 p_FULL_DUMP_FLAG => 'Y' ,
3864 p_CREATED_BY => FND_GLOBAL.USER_ID ,
3865 p_CREATION_DATE => SYSDATE ,
3866 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
3867 p_LAST_UPDATE_DATE => SYSDATE ,
3868 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
3869 p_OBJECT_VERSION_NUMBER => 1 ,
3870 p_OLD_PRIMARY_FLAG => l_curr_party_rec.PRIMARY_FLAG ,
3871 p_NEW_PRIMARY_FLAG => l_temp_party_rec.PRIMARY_FLAG ,
3872 p_OLD_PREFERRED_FLAG => l_curr_party_rec.PREFERRED_FLAG ,
3873 p_NEW_PREFERRED_FLAG => l_temp_party_rec.PREFERRED_FLAG );
3874 ELSE
3875
3876 -- If the mod value is not equal to zero then dump only the changed columns
3877 -- while the unchanged values have old and new values as null
3878 IF (p_party_rec.party_source_table = fnd_api.g_miss_char) OR
3879 NVL(p_party_rec.party_source_table, fnd_api.g_miss_char) = NVL(l_curr_party_rec.party_source_table, fnd_api.g_miss_char) THEN
3880 l_party_hist_rec.old_party_source_table := NULL;
3881 l_party_hist_rec.new_party_source_table := NULL;
3882 ELSIF
3883 NVL(l_curr_party_rec.party_source_table,fnd_api.g_miss_char) <> NVL(p_party_rec.party_source_table,fnd_api.g_miss_char) THEN
3884 l_party_hist_rec.old_party_source_table := l_curr_party_rec.party_source_table ;
3885 l_party_hist_rec.new_party_source_table := p_party_rec.party_source_table ;
3886 END IF;
3887 --
3888 IF (p_party_rec.party_id = fnd_api.g_miss_num) OR
3889 NVL(p_party_rec.party_id, fnd_api.g_miss_num) = NVL(l_curr_party_rec.party_id, fnd_api.g_miss_num) THEN
3890 l_party_hist_rec.old_party_id := NULL;
3891 l_party_hist_rec.new_party_id := NULL;
3892 ELSIF
3893 NVL(l_curr_party_rec.party_id,fnd_api.g_miss_num) <> NVL(p_party_rec.party_id,fnd_api.g_miss_num) THEN
3894 l_party_hist_rec.old_party_id := l_curr_party_rec.party_id ;
3895 l_party_hist_rec.new_party_id := p_party_rec.party_id ;
3896 END IF;
3897 --
3898 IF (p_party_rec.relationship_type_code = fnd_api.g_miss_char) OR
3899 NVL(p_party_rec.relationship_type_code, fnd_api.g_miss_char) = NVL(l_curr_party_rec.relationship_type_code, fnd_api.g_miss_char) THEN
3900 l_party_hist_rec.old_relationship_type_code := NULL;
3901 l_party_hist_rec.new_relationship_type_code := NULL;
3902 ELSIF
3903 NVL(l_curr_party_rec.relationship_type_code,fnd_api.g_miss_char) <> NVL(p_party_rec.relationship_type_code,fnd_api.g_miss_char) THEN
3904 l_party_hist_rec.old_relationship_type_code := l_curr_party_rec.relationship_type_code ;
3905 l_party_hist_rec.new_relationship_type_code := p_party_rec.relationship_type_code ;
3906 END IF;
3907 --
3908 IF (p_party_rec.contact_flag = fnd_api.g_miss_char) OR
3909 NVL(p_party_rec.contact_flag, fnd_api.g_miss_char) = NVL(l_curr_party_rec.contact_flag, fnd_api.g_miss_char) THEN
3910 l_party_hist_rec.old_contact_flag := NULL;
3911 l_party_hist_rec.new_contact_flag := NULL;
3912 ELSIF
3913 NVL(l_curr_party_rec.contact_flag,fnd_api.g_miss_char) <> NVL(p_party_rec.contact_flag,fnd_api.g_miss_char) THEN
3914 l_party_hist_rec.old_contact_flag := l_curr_party_rec.contact_flag ;
3915 l_party_hist_rec.new_contact_flag := p_party_rec.contact_flag ;
3916 END IF;
3917 --
3918 IF (p_party_rec.contact_ip_id = fnd_api.g_miss_num) OR
3919 NVL(p_party_rec.contact_ip_id, fnd_api.g_miss_num) = NVL(l_curr_party_rec.contact_ip_id, fnd_api.g_miss_num) THEN
3920 l_party_hist_rec.old_contact_ip_id := NULL;
3921 l_party_hist_rec.new_contact_ip_id := NULL;
3922 ELSIF
3923 NVL(l_curr_party_rec.contact_ip_id,fnd_api.g_miss_num) <> NVL(p_party_rec.contact_ip_id,fnd_api.g_miss_num) THEN
3924 l_party_hist_rec.old_contact_ip_id := l_curr_party_rec.contact_ip_id ;
3925 l_party_hist_rec.new_contact_ip_id := p_party_rec.contact_ip_id ;
3926 END IF;
3927 --
3928 IF (p_party_rec.active_start_date = fnd_api.g_miss_date) OR
3929 NVL(p_party_rec.active_start_date, fnd_api.g_miss_date) = NVL(l_curr_party_rec.active_start_date, fnd_api.g_miss_date) THEN
3930 l_party_hist_rec.old_active_start_date := NULL;
3931 l_party_hist_rec.new_active_start_date := NULL;
3932 ELSIF
3933 NVL(l_curr_party_rec.active_start_date,fnd_api.g_miss_date) <> NVL(p_party_rec.active_start_date,fnd_api.g_miss_date) THEN
3934 l_party_hist_rec.old_active_start_date := l_curr_party_rec.active_start_date ;
3935 l_party_hist_rec.new_active_start_date := p_party_rec.active_start_date ;
3936 END IF;
3937 --
3938 IF (p_party_rec.active_end_date = fnd_api.g_miss_date) OR
3939 NVL(p_party_rec.active_end_date, fnd_api.g_miss_date) = NVL(l_curr_party_rec.active_end_date, fnd_api.g_miss_date) THEN
3940 l_party_hist_rec.old_active_end_date := NULL;
3941 l_party_hist_rec.new_active_end_date := NULL;
3942 ELSIF
3943 NVL(l_curr_party_rec.active_end_date,fnd_api.g_miss_date) <> NVL(p_party_rec.active_end_date,fnd_api.g_miss_date) THEN
3944 l_party_hist_rec.old_active_end_date := l_curr_party_rec.active_end_date ;
3945 l_party_hist_rec.new_active_end_date := p_party_rec.active_end_date ;
3946 END IF;
3947 --
3948 IF (p_party_rec.context = fnd_api.g_miss_char) OR
3949 NVL(p_party_rec.context, fnd_api.g_miss_char) = NVL(l_curr_party_rec.context, fnd_api.g_miss_char) THEN
3950 l_party_hist_rec.old_context := NULL;
3951 l_party_hist_rec.new_context := NULL;
3952 ELSIF
3953 NVL(l_curr_party_rec.context,fnd_api.g_miss_char) <> NVL(p_party_rec.context,fnd_api.g_miss_char) THEN
3954 l_party_hist_rec.old_context := l_curr_party_rec.context ;
3955 l_party_hist_rec.new_context := p_party_rec.context ;
3956 END IF;
3957 --
3958 IF (p_party_rec.attribute1 = fnd_api.g_miss_char) OR
3959 NVL(p_party_rec.attribute1, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute1, fnd_api.g_miss_char) THEN
3960 l_party_hist_rec.old_attribute1 := NULL;
3961 l_party_hist_rec.new_attribute1 := NULL;
3962 ELSIF
3963 NVL(l_curr_party_rec.attribute1,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute1,fnd_api.g_miss_char) THEN
3964 l_party_hist_rec.old_attribute1 := l_curr_party_rec.attribute1 ;
3965 l_party_hist_rec.new_attribute1 := p_party_rec.attribute1 ;
3966 END IF;
3967 --
3968 IF (p_party_rec.attribute2 = fnd_api.g_miss_char) OR
3969 NVL(p_party_rec.attribute2, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute2, fnd_api.g_miss_char) THEN
3970 l_party_hist_rec.old_attribute2 := NULL;
3971 l_party_hist_rec.new_attribute2 := NULL;
3972 ELSIF
3973 NVL(l_curr_party_rec.attribute2,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute2,fnd_api.g_miss_char) THEN
3974 l_party_hist_rec.old_attribute2 := l_curr_party_rec.attribute2 ;
3975 l_party_hist_rec.new_attribute2 := p_party_rec.attribute2 ;
3976 END IF;
3977 --
3978 IF (p_party_rec.attribute3 = fnd_api.g_miss_char) OR
3979 NVL(p_party_rec.attribute3, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute3, fnd_api.g_miss_char) THEN
3980 l_party_hist_rec.old_attribute3 := NULL;
3981 l_party_hist_rec.new_attribute3 := NULL;
3982 ELSIF
3983 NVL(l_curr_party_rec.attribute3,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute3,fnd_api.g_miss_char) THEN
3984 l_party_hist_rec.old_attribute3 := l_curr_party_rec.attribute3 ;
3985 l_party_hist_rec.new_attribute3 := p_party_rec.attribute3 ;
3986 END IF;
3987 --
3988 IF (p_party_rec.attribute4 = fnd_api.g_miss_char) OR
3989 NVL(p_party_rec.attribute4, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute4, fnd_api.g_miss_char) THEN
3990 l_party_hist_rec.old_attribute4 := NULL;
3991 l_party_hist_rec.new_attribute4 := NULL;
3992 ELSIF
3993 NVL(l_curr_party_rec.attribute4,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute4,fnd_api.g_miss_char) THEN
3994 l_party_hist_rec.old_attribute4 := l_curr_party_rec.attribute4 ;
3995 l_party_hist_rec.new_attribute4 := p_party_rec.attribute4 ;
3996 END IF;
3997 --
3998 IF (p_party_rec.attribute5 = fnd_api.g_miss_char) OR
3999 NVL(p_party_rec.attribute5, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute5, fnd_api.g_miss_char) THEN
4000 l_party_hist_rec.old_attribute5 := NULL;
4001 l_party_hist_rec.new_attribute5 := NULL;
4002 ELSIF
4003 NVL(l_curr_party_rec.attribute5,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute5,fnd_api.g_miss_char) THEN
4004 l_party_hist_rec.old_attribute5 := l_curr_party_rec.attribute5 ;
4005 l_party_hist_rec.new_attribute5 := p_party_rec.attribute5 ;
4006 END IF;
4007 --
4008 IF (p_party_rec.attribute6 = fnd_api.g_miss_char) OR
4009 NVL(p_party_rec.attribute6, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute6, fnd_api.g_miss_char) THEN
4010 l_party_hist_rec.old_attribute6 := NULL;
4011 l_party_hist_rec.new_attribute6 := NULL;
4012 ELSIF
4013 NVL(l_curr_party_rec.attribute6,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute6,fnd_api.g_miss_char) THEN
4014 l_party_hist_rec.old_attribute6 := l_curr_party_rec.attribute6 ;
4015 l_party_hist_rec.new_attribute6 := p_party_rec.attribute6 ;
4016 END IF;
4017 --
4018 IF (p_party_rec.attribute7 = fnd_api.g_miss_char) OR
4019 NVL(p_party_rec.attribute7, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute7, fnd_api.g_miss_char) THEN
4020 l_party_hist_rec.old_attribute7 := NULL;
4021 l_party_hist_rec.new_attribute7 := NULL;
4022 ELSIF
4023 NVL(l_curr_party_rec.attribute7,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute7,fnd_api.g_miss_char) THEN
4024 l_party_hist_rec.old_attribute7 := l_curr_party_rec.attribute7 ;
4025 l_party_hist_rec.new_attribute7 := p_party_rec.attribute7 ;
4026 END IF;
4027 --
4028 IF (p_party_rec.attribute8 = fnd_api.g_miss_char) OR
4029 NVL(p_party_rec.attribute8, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute8, fnd_api.g_miss_char) THEN
4030 l_party_hist_rec.old_attribute8 := NULL;
4031 l_party_hist_rec.new_attribute8 := NULL;
4032 ELSIF
4033 NVL(l_curr_party_rec.attribute8,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute8,fnd_api.g_miss_char) THEN
4034 l_party_hist_rec.old_attribute8 := l_curr_party_rec.attribute8 ;
4035 l_party_hist_rec.new_attribute8 := p_party_rec.attribute8 ;
4036 END IF;
4037 --
4038 IF (p_party_rec.attribute9 = fnd_api.g_miss_char) OR
4039 NVL(p_party_rec.attribute9, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute9, fnd_api.g_miss_char) THEN
4040 l_party_hist_rec.old_attribute9 := NULL;
4041 l_party_hist_rec.new_attribute9 := NULL;
4042 ELSIF
4043 NVL(l_curr_party_rec.attribute9,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute9,fnd_api.g_miss_char) THEN
4044 l_party_hist_rec.old_attribute9 := l_curr_party_rec.attribute9 ;
4045 l_party_hist_rec.new_attribute9 := p_party_rec.attribute9 ;
4046 END IF;
4047 --
4048 IF (p_party_rec.attribute10 = fnd_api.g_miss_char) OR
4049 NVL(p_party_rec.attribute10, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute10, fnd_api.g_miss_char) THEN
4050 l_party_hist_rec.old_attribute10 := NULL;
4051 l_party_hist_rec.new_attribute10 := NULL;
4052 ELSIF
4053 NVL(l_curr_party_rec.attribute10,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute10,fnd_api.g_miss_char) THEN
4054 l_party_hist_rec.old_attribute10 := l_curr_party_rec.attribute10 ;
4055 l_party_hist_rec.new_attribute10 := p_party_rec.attribute10 ;
4056 END IF;
4057 --
4058 IF (p_party_rec.attribute11 = fnd_api.g_miss_char) OR
4059 NVL(p_party_rec.attribute11, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute11, fnd_api.g_miss_char) THEN
4060 l_party_hist_rec.old_attribute11 := NULL;
4061 l_party_hist_rec.new_attribute11 := NULL;
4062 ELSIF
4063 NVL(l_curr_party_rec.attribute11,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute11,fnd_api.g_miss_char) THEN
4064 l_party_hist_rec.old_attribute11 := l_curr_party_rec.attribute11 ;
4065 l_party_hist_rec.new_attribute11 := p_party_rec.attribute11 ;
4066 END IF;
4067 --
4068 IF (p_party_rec.attribute12 = fnd_api.g_miss_char) OR
4069 NVL(p_party_rec.attribute12, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute12, fnd_api.g_miss_char) THEN
4070 l_party_hist_rec.old_attribute12 := NULL;
4071 l_party_hist_rec.new_attribute12 := NULL;
4072 ELSIF
4073 NVL(l_curr_party_rec.attribute12,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute12,fnd_api.g_miss_char) THEN
4074 l_party_hist_rec.old_attribute12 := l_curr_party_rec.attribute12 ;
4075 l_party_hist_rec.new_attribute12 := p_party_rec.attribute12 ;
4076 END IF;
4077 --
4078 IF (p_party_rec.attribute13 = fnd_api.g_miss_char) OR
4079 NVL(p_party_rec.attribute13, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute13, fnd_api.g_miss_char) THEN
4080 l_party_hist_rec.old_attribute13 := NULL;
4081 l_party_hist_rec.new_attribute13 := NULL;
4082 ELSIF
4083 NVL(l_curr_party_rec.attribute13,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute13,fnd_api.g_miss_char) THEN
4084 l_party_hist_rec.old_attribute13 := l_curr_party_rec.attribute13 ;
4085 l_party_hist_rec.new_attribute13 := p_party_rec.attribute13 ;
4086 END IF;
4087 --
4088 IF (p_party_rec.attribute14 = fnd_api.g_miss_char) OR
4089 NVL(p_party_rec.attribute14, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute14, fnd_api.g_miss_char) THEN
4090 l_party_hist_rec.old_attribute14 := NULL;
4091 l_party_hist_rec.new_attribute14 := NULL;
4092 ELSIF
4093 NVL(l_curr_party_rec.attribute14,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute14,fnd_api.g_miss_char) THEN
4094 l_party_hist_rec.old_attribute14 := l_curr_party_rec.attribute14 ;
4095 l_party_hist_rec.new_attribute14 := p_party_rec.attribute14 ;
4096 END IF;
4097 --
4098 IF (p_party_rec.attribute15 = fnd_api.g_miss_char) OR
4099 NVL(p_party_rec.attribute15, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute15, fnd_api.g_miss_char) THEN
4100 l_party_hist_rec.old_attribute15 := NULL;
4101 l_party_hist_rec.new_attribute15 := NULL;
4102 ELSIF
4103 NVL(l_curr_party_rec.attribute15,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute15,fnd_api.g_miss_char) THEN
4104 l_party_hist_rec.old_attribute15 := l_curr_party_rec.attribute15 ;
4105 l_party_hist_rec.new_attribute15 := p_party_rec.attribute15 ;
4106 END IF;
4107 --
4108 IF (p_party_rec.primary_flag = fnd_api.g_miss_char) OR
4109 NVL(p_party_rec.primary_flag, fnd_api.g_miss_char) = NVL(l_curr_party_rec.primary_flag, fnd_api.g_miss_char) THEN
4110 l_party_hist_rec.old_primary_flag := NULL;
4111 l_party_hist_rec.new_primary_flag := NULL;
4112 ELSIF
4113 NVL(l_curr_party_rec.primary_flag,fnd_api.g_miss_char) <> NVL(p_party_rec.primary_flag,fnd_api.g_miss_char) THEN
4114 l_party_hist_rec.old_primary_flag := l_curr_party_rec.primary_flag ;
4115 l_party_hist_rec.new_primary_flag := p_party_rec.primary_flag ;
4116 END IF;
4117 --
4118 IF (p_party_rec.preferred_flag = fnd_api.g_miss_char) OR
4119 NVL(p_party_rec.preferred_flag, fnd_api.g_miss_char) = NVL(l_curr_party_rec.preferred_flag, fnd_api.g_miss_char) THEN
4120 l_party_hist_rec.old_preferred_flag := NULL;
4121 l_party_hist_rec.new_preferred_flag := NULL;
4122 ELSIF
4123 NVL(l_curr_party_rec.preferred_flag,fnd_api.g_miss_char) <> NVL(p_party_rec.preferred_flag,fnd_api.g_miss_char) THEN
4124 l_party_hist_rec.old_preferred_flag := l_curr_party_rec.preferred_flag ;
4125 l_party_hist_rec.new_preferred_flag := p_party_rec.preferred_flag ;
4126 END IF;
4127
4128 -- Call table handlers to insert into csi_i_parties_h table
4129 CSI_I_PARTIES_H_PKG.Insert_Row
4130 (
4131 px_INSTANCE_PARTY_HISTORY_ID => l_inst_party_his_id ,
4132 p_INSTANCE_PARTY_ID => p_party_rec.INSTANCE_PARTY_ID ,
4133 p_TRANSACTION_ID => p_txn_rec.TRANSACTION_ID ,
4134 p_OLD_PARTY_SOURCE_TABLE => l_party_hist_rec.OLD_PARTY_SOURCE_TABLE ,
4135 p_NEW_PARTY_SOURCE_TABLE => l_party_hist_rec.NEW_PARTY_SOURCE_TABLE ,
4136 p_OLD_PARTY_ID => l_party_hist_rec.OLD_PARTY_ID ,
4137 p_NEW_PARTY_ID => l_party_hist_rec.NEW_PARTY_ID ,
4138 p_OLD_RELATIONSHIP_TYPE_CODE => l_party_hist_rec.OLD_RELATIONSHIP_TYPE_CODE ,
4139 p_NEW_RELATIONSHIP_TYPE_CODE => l_party_hist_rec.NEW_RELATIONSHIP_TYPE_CODE ,
4140 p_OLD_CONTACT_FLAG => l_party_hist_rec.OLD_CONTACT_FLAG ,
4141 p_NEW_CONTACT_FLAG => l_party_hist_rec.NEW_CONTACT_FLAG ,
4142 p_OLD_CONTACT_IP_ID => l_party_hist_rec.OLD_CONTACT_IP_ID ,
4143 p_NEW_CONTACT_IP_ID => l_party_hist_rec.NEW_CONTACT_IP_ID ,
4144 p_OLD_ACTIVE_START_DATE => l_party_hist_rec.OLD_ACTIVE_START_DATE ,
4145 p_NEW_ACTIVE_START_DATE => l_party_hist_rec.NEW_ACTIVE_START_DATE ,
4146 p_OLD_ACTIVE_END_DATE => l_party_hist_rec.OLD_ACTIVE_END_DATE ,
4147 p_NEW_ACTIVE_END_DATE => l_party_hist_rec.NEW_ACTIVE_END_DATE ,
4148 p_OLD_CONTEXT => l_party_hist_rec.OLD_CONTEXT ,
4149 p_NEW_CONTEXT => l_party_hist_rec.NEW_CONTEXT ,
4150 p_OLD_ATTRIBUTE1 => l_party_hist_rec.OLD_ATTRIBUTE1 ,
4151 p_NEW_ATTRIBUTE1 => l_party_hist_rec.NEW_ATTRIBUTE1 ,
4152 p_OLD_ATTRIBUTE2 => l_party_hist_rec.OLD_ATTRIBUTE2 ,
4153 p_NEW_ATTRIBUTE2 => l_party_hist_rec.NEW_ATTRIBUTE2 ,
4154 p_OLD_ATTRIBUTE3 => l_party_hist_rec.OLD_ATTRIBUTE3 ,
4155 p_NEW_ATTRIBUTE3 => l_party_hist_rec.NEW_ATTRIBUTE3 ,
4156 p_OLD_ATTRIBUTE4 => l_party_hist_rec.OLD_ATTRIBUTE4 ,
4157 p_NEW_ATTRIBUTE4 => l_party_hist_rec.NEW_ATTRIBUTE4 ,
4158 p_OLD_ATTRIBUTE5 => l_party_hist_rec.OLD_ATTRIBUTE5 ,
4159 p_NEW_ATTRIBUTE5 => l_party_hist_rec.NEW_ATTRIBUTE5 ,
4160 p_OLD_ATTRIBUTE6 => l_party_hist_rec.OLD_ATTRIBUTE6 ,
4161 p_NEW_ATTRIBUTE6 => l_party_hist_rec.NEW_ATTRIBUTE6 ,
4162 p_OLD_ATTRIBUTE7 => l_party_hist_rec.OLD_ATTRIBUTE7 ,
4163 p_NEW_ATTRIBUTE7 => l_party_hist_rec.NEW_ATTRIBUTE7 ,
4164 p_OLD_ATTRIBUTE8 => l_party_hist_rec.OLD_ATTRIBUTE8 ,
4165 p_NEW_ATTRIBUTE8 => l_party_hist_rec.NEW_ATTRIBUTE8 ,
4166 p_OLD_ATTRIBUTE9 => l_party_hist_rec.OLD_ATTRIBUTE9 ,
4167 p_NEW_ATTRIBUTE9 => l_party_hist_rec.NEW_ATTRIBUTE9 ,
4168 p_OLD_ATTRIBUTE10 => l_party_hist_rec.OLD_ATTRIBUTE10 ,
4169 p_NEW_ATTRIBUTE10 => l_party_hist_rec.NEW_ATTRIBUTE10 ,
4170 p_OLD_ATTRIBUTE11 => l_party_hist_rec.OLD_ATTRIBUTE11 ,
4171 p_NEW_ATTRIBUTE11 => l_party_hist_rec.NEW_ATTRIBUTE11 ,
4172 p_OLD_ATTRIBUTE12 => l_party_hist_rec.OLD_ATTRIBUTE12 ,
4173 p_NEW_ATTRIBUTE12 => l_party_hist_rec.NEW_ATTRIBUTE12 ,
4174 p_OLD_ATTRIBUTE13 => l_party_hist_rec.OLD_ATTRIBUTE13 ,
4175 p_NEW_ATTRIBUTE13 => l_party_hist_rec.NEW_ATTRIBUTE13 ,
4176 p_OLD_ATTRIBUTE14 => l_party_hist_rec.OLD_ATTRIBUTE14 ,
4177 p_NEW_ATTRIBUTE14 => l_party_hist_rec.NEW_ATTRIBUTE14 ,
4178 p_OLD_ATTRIBUTE15 => l_party_hist_rec.OLD_ATTRIBUTE15 ,
4179 p_NEW_ATTRIBUTE15 => l_party_hist_rec.NEW_ATTRIBUTE15 ,
4180 p_FULL_DUMP_FLAG => 'N',
4181 p_CREATED_BY => FND_GLOBAL.USER_ID ,
4182 p_CREATION_DATE => SYSDATE ,
4183 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
4184 p_LAST_UPDATE_DATE => SYSDATE ,
4185 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
4186 p_OBJECT_VERSION_NUMBER => 1 ,
4187 p_OLD_PRIMARY_FLAG => l_party_hist_rec.OLD_PRIMARY_FLAG ,
4188 p_NEW_PRIMARY_FLAG => l_party_hist_rec.NEW_PRIMARY_FLAG ,
4189 p_OLD_PREFERRED_FLAG => l_party_hist_rec.OLD_PREFERRED_FLAG ,
4190 p_NEW_PREFERRED_FLAG => l_party_hist_rec.NEW_PREFERRED_FLAG );
4191
4192 END IF;
4193
4194 END;
4195 -- End of Changes for Bug#2547034 on 09/20/02 - rtalluri
4196
4197 -- Update accounting class code in csi_item_instances table
4198
4199 csi_item_instance_pvt.get_and_update_acct_class
4200 ( p_api_version => p_api_version
4201 ,p_commit => p_commit
4202 ,p_init_msg_list => p_init_msg_list
4203 ,p_validation_level => p_validation_level
4204 ,p_instance_id => l_curr_party_rec.instance_id
4205 ,p_txn_rec => p_txn_rec
4206 ,x_acct_class_code => l_acct_class_code
4207 ,x_return_status => x_return_status
4208 ,x_msg_count => x_msg_count
4209 ,x_msg_data => x_msg_data
4210 );
4211
4212 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4213 FOR i in 1..x_msg_Count LOOP
4214 FND_MSG_PUB.Get(p_msg_index => i,
4215 p_encoded => 'F',
4216 p_data => x_msg_data,
4217 p_msg_index_out => x_msg_index_out );
4218 End LOOP;
4219 RAISE FND_API.G_EXC_ERROR;
4220 END IF;
4221 -- srramakr Bug # 2232230. Expire the Contacts incase of Xfer of Ownership.
4222 --
4223 IF ((p_party_rec.PARTY_ID <> FND_API.G_MISS_NUM)
4224 AND (p_party_rec.PARTY_ID IS NOT NULL)
4225 AND (p_party_rec.PARTY_ID <> l_curr_party_rec.PARTY_ID))
4226 THEN
4227 For cont_rec in get_cont_party_rec(p_party_rec.INSTANCE_PARTY_ID)
4228 LOOP
4229 l_cont_party_rec := l_init_party_rec;
4230 l_cont_party_rec.instance_party_id := cont_rec.instance_party_id;
4231 l_cont_party_rec.object_version_number := cont_rec.object_version_number;
4232 -- Calling Expire Instance Party Relationship
4233 expire_inst_party_relationship
4234 ( p_api_version => p_api_version
4235 ,p_commit => fnd_api.g_false
4236 ,p_init_msg_list => fnd_api.g_false
4237 ,p_validation_level => fnd_api.g_valid_level_full
4238 ,p_instance_party_rec => l_cont_party_rec
4239 ,p_txn_rec => p_txn_rec
4240 ,x_return_status => x_return_status
4241 ,x_msg_count => x_msg_count
4242 ,x_msg_data => x_msg_data
4243 );
4244 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4245 FOR i in 1..x_msg_Count LOOP
4246 FND_MSG_PUB.Get(p_msg_index => i,
4247 p_encoded => 'F',
4248 p_data => x_msg_data,
4249 p_msg_index_out => x_msg_index_out );
4250 End LOOP;
4251 RAISE FND_API.G_EXC_ERROR;
4252 END IF;
4253 END LOOP;
4254 END IF;
4255 -- End of API body
4256 -- Standard check of p_commit.
4257 IF FND_API.To_Boolean( p_commit ) THEN
4258 COMMIT WORK;
4259 END IF;
4260 -- Standard call to get message count and if count is get message info.
4261 FND_MSG_PUB.Count_And_Get
4262 (p_count => x_msg_count ,
4263 p_data => x_msg_data );
4264 EXCEPTION
4265 WHEN FND_API.G_EXC_ERROR THEN
4266 -- ROLLBACK TO update_inst_party_rel_pvt;
4267 x_return_status := FND_API.G_RET_STS_ERROR ;
4268 FND_MSG_PUB.Count_And_Get
4269 ( p_count => x_msg_count,
4270 p_data => x_msg_data );
4271 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4272 -- ROLLBACK TO update_inst_party_rel_pvt;
4273 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4274 FND_MSG_PUB.Count_And_Get
4275 ( p_count => x_msg_count,
4276 p_data => x_msg_data );
4277 WHEN OTHERS THEN
4278 -- ROLLBACK TO update_inst_party_rel_pvt;
4279 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4280 IF FND_MSG_PUB.Check_Msg_Level
4281 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4282 THEN
4283 FND_MSG_PUB.Add_Exc_Msg
4284 ( g_pkg_name, l_api_name );
4285 END IF;
4286 FND_MSG_PUB.Count_And_Get
4287 ( p_count => x_msg_count,
4288 p_data => x_msg_data );
4289
4290 END update_inst_party_relationship ;
4291
4292 /*-------------------------------------------------------*/
4293 /* Procedure name: Expire_inst_party_relationship */
4294 /* Description : Procedure used to expire an existing */
4295 /* instance -party relationships */
4296 /*-------------------------------------------------------*/
4297
4298 PROCEDURE expire_inst_party_relationship
4299 ( p_api_version IN NUMBER
4300 ,p_commit IN VARCHAR2
4301 ,p_init_msg_list IN VARCHAR2
4302 ,p_validation_level IN NUMBER
4303 ,p_instance_party_rec IN csi_datastructures_pub.party_rec
4304 ,p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
4305 ,x_return_status OUT NOCOPY VARCHAR2
4306 ,x_msg_count OUT NOCOPY NUMBER
4307 ,x_msg_data OUT NOCOPY VARCHAR2
4308 ) IS
4309
4310 l_api_name CONSTANT VARCHAR2(30) := 'EXPIRE_INST_PARTY_RELATIONSHIP';
4311 l_api_version CONSTANT NUMBER := 1.0;
4312 l_csi_debug_level NUMBER;
4313 l_party_rec csi_datastructures_pub.party_rec;
4314 l_msg_index NUMBER;
4315 l_msg_count NUMBER;
4316 l_line_count NUMBER;
4317 l_full_dump_frequency NUMBER;
4318 l_mod_value NUMBER;
4319 l_curr_party_rec csi_datastructures_pub.party_rec;
4320 l_party_account_rec csi_datastructures_pub.party_account_rec;
4321 l_OBJECT_VERSION_NUMBER NUMBER;
4322 l_inst_party_his_id NUMBER;
4323 l_temp_party_acct_rec csi_datastructures_pub.party_account_rec;
4324 --
4325 CURSOR get_curr_party_rec (p_inst_party_id IN NUMBER) IS
4326 SELECT
4327 instance_party_id ,
4328 instance_id ,
4329 party_source_table ,
4330 party_id ,
4331 relationship_type_code,
4332 contact_flag ,
4333 contact_ip_id ,
4334 active_start_date ,
4335 active_end_date ,
4336 context ,
4337 attribute1 ,
4338 attribute2 ,
4339 attribute3 ,
4340 attribute4 ,
4341 attribute5 ,
4342 attribute6 ,
4343 attribute7 ,
4344 attribute8 ,
4345 attribute9 ,
4346 attribute10 ,
4347 attribute11 ,
4348 attribute12 ,
4349 attribute13 ,
4350 attribute14 ,
4351 attribute15 ,
4352 object_version_number,
4353 primary_flag ,
4354 preferred_flag ,
4355 null parent_tbl_index ,
4356 null call_contracts,
4357 null interface_id,
4358 null contact_parent_tbl_index,
4359 null cascade_ownership_flag -- Added for bug 2972082
4360 FROM CSI_I_PARTIES
4361 WHERE INSTANCE_PARTY_ID = p_inst_party_id
4362 AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE))
4363 FOR UPDATE OF OBJECT_VERSION_NUMBER;
4364
4365 BEGIN
4366 -- Standard Start of API savepoint
4367 -- SAVEPOINT expire_inst_party_rel_pvt;
4368
4369 -- Standard call to check for call compatibility.
4370 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
4371 p_api_version ,
4372 l_api_name ,
4373 g_pkg_name )
4374 THEN
4375 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4376 END IF;
4377
4378 -- Initialize message list if p_init_msg_list is set to TRUE.
4379 IF FND_API.to_Boolean( p_init_msg_list ) THEN
4380 FND_MSG_PUB.initialize;
4381 END IF;
4382
4383 -- Initialize API return status to success
4384 -- Verify if the Party rel combination exists
4385 x_return_status := FND_API.G_RET_STS_SUCCESS;
4386
4387 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
4388 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
4389
4390 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
4391 IF (l_csi_debug_level > 0) THEN
4392 csi_gen_utility_pvt.put_line( 'expire_inst_party_relationship');
4393 END IF;
4394
4395 -- If the debug level = 2 then dump all the parameters values.
4396 IF (l_csi_debug_level > 1) THEN
4397 csi_gen_utility_pvt.put_line( 'expire_inst_party_relationship:'||
4398 p_api_version ||'-'||
4399 p_commit ||'-'||
4400 p_init_msg_list );
4401
4402 -- Dump the records in the log file
4403 csi_gen_utility_pvt.dump_party_rec(p_instance_party_rec );
4404 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
4405 END IF;
4406 -- Start API body
4407 --
4408 -- Check if all the required parameters are passed
4409 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
4410 ( p_instance_party_rec.instance_party_id ,
4411 ' p_instance_party_rec.instance_party_id ',
4412 l_api_name );
4413 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
4414 ( p_instance_party_rec.object_version_number ,
4415 ' p_instance_party_rec.object_version_number ',
4416 l_api_name );
4417
4418 -- Check if the instance party id is valid
4419 IF NOT(CSI_Instance_parties_vld_pvt.Is_Inst_partyID_Valid
4420 (p_Instance_party_id => p_instance_party_rec.instance_party_id
4421 ,p_txn_type_id => p_txn_rec.transaction_type_id
4422 ,p_mode => 'E' -- Added for bug 3550541
4423 )
4424 )
4425 THEN
4426 -- Message added in the validation routine since additional validation added for bug # 2477417.
4427 -- FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INST_PARTY_ID');
4428 -- FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',p_instance_party_rec.instance_party_id);
4429 -- FND_MSG_PUB.Add;
4430 RAISE FND_API.G_EXC_ERROR;
4431 END IF;
4432 -- check if the object_version_number passed matches with the one
4433 -- in the database else raise error
4434 OPEN get_curr_party_rec(p_instance_party_rec.instance_party_id);
4435 FETCH get_curr_party_rec INTO l_curr_party_rec;
4436 IF (l_curr_party_rec.object_version_number <> p_instance_party_rec.OBJECT_VERSION_NUMBER) THEN
4437 FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
4438 FND_MSG_PUB.ADD;
4439 RAISE FND_API.G_EXC_ERROR;
4440 END IF;
4441 --
4442 IF get_curr_party_rec%NOTFOUND THEN
4443 FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
4444 FND_MSG_PUB.ADD;
4445 RAISE FND_API.G_EXC_ERROR;
4446 END IF;
4447 CLOSE get_curr_party_rec;
4448 -- Initialize all the parameters and call update_inst_party_relationship to expire the record
4449 l_party_rec.instance_party_id := l_curr_party_rec.instance_party_id;
4450 l_party_rec.instance_id := FND_API.G_MISS_NUM;
4451 l_party_rec.PARTY_SOURCE_TABLE := FND_API.G_MISS_CHAR;
4452 l_party_rec.PARTY_ID := FND_API.G_MISS_NUM;
4453 l_party_rec.RELATIONSHIP_TYPE_CODE := FND_API.G_MISS_CHAR;
4454 l_party_rec.CONTACT_FLAG := FND_API.G_MISS_CHAR;
4455 l_party_rec.CONTACT_IP_ID := FND_API.G_MISS_NUM;
4456 l_party_rec.ACTIVE_START_DATE := FND_API.G_MISS_DATE;
4457 l_party_rec.ACTIVE_END_DATE := sysdate;
4458 l_party_rec.CONTEXT := FND_API.G_MISS_CHAR;
4459 l_party_rec.ATTRIBUTE1 := FND_API.G_MISS_CHAR;
4460 l_party_rec.ATTRIBUTE2 := FND_API.G_MISS_CHAR;
4461 l_party_rec.ATTRIBUTE3 := FND_API.G_MISS_CHAR;
4462 l_party_rec.ATTRIBUTE4 := FND_API.G_MISS_CHAR;
4463 l_party_rec.ATTRIBUTE5 := FND_API.G_MISS_CHAR;
4464 l_party_rec.ATTRIBUTE6 := FND_API.G_MISS_CHAR;
4465 l_party_rec.ATTRIBUTE7 := FND_API.G_MISS_CHAR;
4466 l_party_rec.ATTRIBUTE8 := FND_API.G_MISS_CHAR;
4467 l_party_rec.ATTRIBUTE9 := FND_API.G_MISS_CHAR;
4468 l_party_rec.ATTRIBUTE10 := FND_API.G_MISS_CHAR;
4469 l_party_rec.ATTRIBUTE11 := FND_API.G_MISS_CHAR;
4470 l_party_rec.ATTRIBUTE12 := FND_API.G_MISS_CHAR;
4471 l_party_rec.ATTRIBUTE13 := FND_API.G_MISS_CHAR;
4472 l_party_rec.ATTRIBUTE14 := FND_API.G_MISS_CHAR;
4473 l_party_rec.ATTRIBUTE15 := FND_API.G_MISS_CHAR;
4474 l_party_rec.OBJECT_VERSION_NUMBER := p_instance_party_rec.object_version_number;
4475 --
4476 g_expire_party_flag := 'Y';
4477 update_inst_party_relationship
4478 ( p_api_version => p_api_version
4479 ,p_commit => p_commit
4480 ,p_init_msg_list => p_init_msg_list
4481 ,p_validation_level => p_validation_level
4482 ,p_party_rec => l_party_rec
4483 ,p_txn_rec => p_txn_rec
4484 ,x_return_status => x_return_status
4485 ,x_msg_count => x_msg_count
4486 ,x_msg_data => x_msg_data ) ;
4487
4488 g_expire_party_flag := 'N';
4489 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4490 l_msg_index := 1;
4491 l_msg_count := x_msg_count;
4492 WHILE l_msg_count > 0 LOOP
4493 x_msg_data := FND_MSG_PUB.GET(
4494 l_msg_index,
4495 FND_API.G_FALSE );
4496 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
4497 l_msg_index := l_msg_index + 1;
4498 l_msg_count := l_msg_count - 1;
4499 END LOOP;
4500 RAISE FND_API.G_EXC_ERROR;
4501 END IF;
4502 --
4503 -- End of API body
4504
4505 -- Standard check of p_commit.
4506 IF FND_API.To_Boolean( p_commit ) THEN
4507 COMMIT WORK;
4508 END IF;
4509 -- Standard call to get message count and if count is get message info.
4510 FND_MSG_PUB.Count_And_Get
4511 (p_count => x_msg_count ,
4512 p_data => x_msg_data );
4513 EXCEPTION
4514 WHEN FND_API.G_EXC_ERROR THEN
4515 -- ROLLBACK TO expire_inst_party_rel_pvt;
4516 x_return_status := FND_API.G_RET_STS_ERROR ;
4517 FND_MSG_PUB.Count_And_Get
4518 ( p_count => x_msg_count,
4519 p_data => x_msg_data );
4520 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4521 -- ROLLBACK TO expire_inst_party_rel_pvt;
4522 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4523 FND_MSG_PUB.Count_And_Get
4524 ( p_count => x_msg_count,
4525 p_data => x_msg_data );
4526 WHEN OTHERS THEN
4527 -- ROLLBACK TO expire_inst_party_rel_pvt;
4528 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4529 IF FND_MSG_PUB.Check_Msg_Level
4530 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4531 THEN
4532 FND_MSG_PUB.Add_Exc_Msg
4533 ( g_pkg_name, l_api_name );
4534 END IF;
4535 FND_MSG_PUB.Count_And_Get
4536 ( p_count => x_msg_count,
4537 p_data => x_msg_data );
4538 END expire_inst_party_relationship;
4539
4540 /*-----------------------------------------------------------*/
4541 /* Procedure name: Create_inst_party_account */
4542 /* Description : Procedure used to create new */
4543 /* instance-party account relationships */
4544 /*-----------------------------------------------------------*/
4545
4546 PROCEDURE create_inst_party_account
4547 ( p_api_version IN NUMBER
4548 ,p_commit IN VARCHAR2
4549 ,p_init_msg_list IN VARCHAR2
4550 ,p_validation_level IN NUMBER
4551 ,p_party_account_rec IN OUT NOCOPY csi_datastructures_pub.party_account_rec
4552 ,p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
4553 ,x_return_status OUT NOCOPY VARCHAR2
4554 ,x_msg_count OUT NOCOPY NUMBER
4555 ,x_msg_data OUT NOCOPY VARCHAR2
4556 ,p_inst_party_tbl IN OUT NOCOPY csi_party_relationships_pvt.inst_party_tbl
4557 ,p_acct_rel_type_tbl IN OUT NOCOPY csi_party_relationships_pvt.acct_rel_type_tbl
4558 ,p_site_use_tbl IN OUT NOCOPY csi_party_relationships_pvt.site_use_tbl
4559 ,p_account_count_rec IN OUT NOCOPY csi_party_relationships_pvt.account_count_rec
4560 ,p_called_from_grp IN VARCHAR2
4561 ,p_oks_txn_inst_tbl IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl
4562 ) IS
4563
4564 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_INST_PARTY_ACCOUNT';
4565 l_api_version CONSTANT NUMBER := 1.0;
4566 l_csi_debug_level NUMBER;
4567 l_party_account_rec csi_datastructures_pub.party_account_rec;
4568 l_party_rec csi_datastructures_pub.party_rec;
4569 l_msg_index NUMBER;
4570 l_msg_count NUMBER;
4571 l_process_flag BOOLEAN := TRUE;
4572 l_ip_account_history_id NUMBER;
4573
4574 l_transaction_type VARCHAR2(10);
4575 l_old_oks_cp_rec oks_ibint_pub.cp_rec_type;
4576 l_new_oks_cp_rec oks_ibint_pub.cp_rec_type;
4577 l_contracts_status VARCHAR2(3);
4578 l_internal_party_id NUMBER;
4579 l_party_id NUMBER;
4580 l_record_found BOOLEAN := FALSE;
4581 l_update_record BOOLEAN := FALSE;
4582 l_exists_flag VARCHAR2(1);
4583 l_valid_flag VARCHAR2(1);
4584
4585 CURSOR instance_csr (p_ins_id IN NUMBER) IS
4586 SELECT *
4587 FROM csi_item_instances
4588 WHERE instance_id = p_ins_id;
4589 l_instance_csr instance_csr%ROWTYPE;
4590 l_last_vld_org NUMBER; -- Added by sguthiva for bug 2307804
4591 BEGIN
4592 -- Standard Start of API savepoint
4593 SAVEPOINT create_inst_party_acct_pvt;
4594
4595 -- Standard call to check for call compatibility.
4596 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
4597 p_api_version ,
4598 l_api_name ,
4599 g_pkg_name )
4600 THEN
4601 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4602 END IF;
4603
4604 -- Initialize message list if p_init_msg_list is set to TRUE.
4605 IF FND_API.to_Boolean( p_init_msg_list ) THEN
4606 FND_MSG_PUB.initialize;
4607 END IF;
4608
4609 -- Initialize API return status to success
4610 x_return_status := FND_API.G_RET_STS_SUCCESS;
4611
4612 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
4613 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
4614
4615 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
4616 IF (l_csi_debug_level > 0) THEN
4617 csi_gen_utility_pvt.put_line( 'create_inst_party_account');
4618 END IF;
4619
4620 -- If the debug level = 2 then dump all the parameters values.
4621 IF (l_csi_debug_level > 1) THEN
4622 csi_gen_utility_pvt.put_line( 'create_inst_party_account:'||
4623 p_api_version ||'-'||
4624 p_commit ||'-'||
4625 p_init_msg_list );
4626 -- Dump the records in the log file
4627 csi_gen_utility_pvt.dump_party_account_rec(p_party_account_rec);
4628 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
4629 END IF;
4630 -- Start API body
4631 --
4632 -- Check if all the required parameters are passed
4633 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
4634 ( p_party_account_rec.INSTANCE_PARTY_ID,
4635 ' p_party_account_rec.INSTANCE_PARTY_ID ',
4636 l_api_name );
4637
4638 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
4639 ( p_party_account_rec.PARTY_ACCOUNT_ID,
4640 ' p_party_account_rec.PARTY_ACCOUNT_ID ',
4641 l_api_name );
4642 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_char
4643 ( p_party_account_rec.RELATIONSHIP_TYPE_CODE,
4644 'p_party_account_rec.RELATIONSHIP_TYPE_CODE',
4645 l_api_name );
4646
4647 -- Initialize the counts
4648 IF p_account_count_rec.inst_party_count is NULL OR
4649 p_account_count_rec.inst_party_count = FND_API.G_MISS_NUM THEN
4650 p_account_count_rec.inst_party_count := 0;
4651 END IF;
4652 --
4653 IF p_account_count_rec.rel_type_count is NULL OR
4654 p_account_count_rec.rel_type_count = FND_API.G_MISS_NUM THEN
4655 p_account_count_rec.rel_type_count := 0;
4656 END IF;
4657 --
4658 IF p_account_count_rec.site_use_count is NULL OR
4659 p_account_count_rec.site_use_count = FND_API.G_MISS_NUM THEN
4660 p_account_count_rec.site_use_count := 0;
4661 END IF;
4662 --
4663 -- Added by sk for fixing bug 2110790
4664 l_update_record := FALSE;
4665 IF p_called_from_grp <> FND_API.G_TRUE THEN
4666 IF p_party_account_rec.relationship_type_code = 'OWNER'
4667 AND ( p_party_account_rec.ip_account_id IS NULL OR
4668 p_party_account_rec.ip_account_id = fnd_api.g_miss_num )
4669 THEN
4670 BEGIN
4671 SELECT ip_account_id,
4672 active_start_date,
4673 object_version_number
4674 INTO p_party_account_rec.ip_account_id,
4675 p_party_account_rec.active_start_date,
4676 p_party_account_rec.object_version_number
4677 FROM csi_ip_accounts
4678 WHERE instance_party_id = p_party_account_rec.instance_party_id
4679 AND relationship_type_code = 'OWNER'
4680 AND (active_end_date IS NULL OR active_end_date > SYSDATE)
4681 AND ROWNUM = 1;
4682
4683 IF p_party_account_rec.active_end_date = fnd_api.g_miss_date
4684 THEN
4685 p_party_account_rec.active_end_date := NULL ;
4686 END IF;
4687 --
4688 l_update_record := TRUE;
4689 EXCEPTION
4690 WHEN NO_DATA_FOUND THEN
4691 BEGIN
4692 SELECT ip_account_id,
4693 active_start_date,
4694 object_version_number
4695 INTO p_party_account_rec.ip_account_id,
4696 p_party_account_rec.active_start_date,
4697 p_party_account_rec.object_version_number
4698 FROM csi_ip_accounts
4699 WHERE instance_party_id = p_party_account_rec.instance_party_id
4700 AND relationship_type_code = 'OWNER'
4701 AND ROWNUM = 1;
4702
4703 IF p_party_account_rec.active_end_date = fnd_api.g_miss_date
4704 THEN
4705 p_party_account_rec.active_end_date := NULL ;
4706 END IF;
4707 l_update_record := TRUE;
4708 EXCEPTION
4709 WHEN OTHERS THEN
4710 NULL;
4711 END;
4712 WHEN OTHERS THEN
4713 NULL;
4714 END;
4715 --
4716 IF l_update_record
4717 THEN
4718 update_inst_party_account
4719 ( p_api_version => p_api_version
4720 ,p_commit => p_commit
4721 ,p_init_msg_list => p_init_msg_list
4722 ,p_validation_level => p_validation_level
4723 ,p_party_account_rec => p_party_account_rec
4724 ,p_txn_rec => p_txn_rec
4725 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
4726 ,x_return_status => x_return_status
4727 ,x_msg_count => x_msg_count
4728 ,x_msg_data => x_msg_data);
4729
4730 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4731 l_msg_index := 1;
4732 l_msg_count := x_msg_count;
4733 WHILE l_msg_count > 0 LOOP
4734 x_msg_data := FND_MSG_PUB.GET(
4735 l_msg_index,
4736 FND_API.G_FALSE );
4737 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
4738 l_msg_index := l_msg_index + 1;
4739 l_msg_count := l_msg_count - 1;
4740 END LOOP;
4741 RAISE FND_API.G_EXC_ERROR;
4742 END IF;
4743 END IF;
4744 END IF;
4745 END IF; -- Called from group check
4746 -- End addition by sk for fixing bug 2110790
4747 -- Check if the account is already expired
4748 -- If so unexpire the account
4749 l_record_found := FALSE;
4750 IF p_called_from_grp <> FND_API.G_TRUE THEN
4751 IF p_party_account_rec.ip_account_id IS NULL OR
4752 p_party_account_rec.ip_account_id = fnd_api.g_miss_num
4753 THEN
4754 BEGIN
4755 SELECT ip_account_id ,
4756 object_version_number
4757 INTO p_party_account_rec.ip_account_id,
4758 p_party_account_rec.object_version_number
4759 FROM csi_ip_accounts
4760 WHERE instance_party_id = p_party_account_rec.instance_party_id
4761 AND party_account_id = p_party_account_rec.party_account_id
4762 AND relationship_type_code = p_party_account_rec.relationship_type_code
4763 AND active_end_date < sysdate
4764 AND ROWNUM = 1;
4765 l_record_found := TRUE ;
4766 EXCEPTION
4767 WHEN OTHERS THEN
4768 NULL;
4769 END;
4770 END IF;
4771 END IF; -- called from group check
4772 /* -- Commented by sk for fixing the bug 2232880
4773 IF CSI_Instance_parties_vld_pvt.Is_Account_Expired
4774 (p_party_account_rec) THEN
4775 IF (p_party_account_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE ) THEN
4776 p_party_account_rec.active_end_date := NULL;
4777 END IF;
4778 */ -- Commented by sk for fixing the bug 2232880
4779 -- Unexpire the account
4780 IF NOT(l_update_record)
4781 THEN -- Added for bug 2110790
4782 IF l_record_found THEN
4783 -- Added by sk for fixing the bug 2232880
4784 IF p_party_account_rec.active_end_date = fnd_api.g_miss_date
4785 THEN
4786 p_party_account_rec.active_end_date := NULL;
4787 END IF;
4788 -- End additon by sk for fixing the bug 2232880
4789 update_inst_party_account
4790 ( p_api_version => p_api_version
4791 ,p_commit => p_commit
4792 ,p_init_msg_list => p_init_msg_list
4793 ,p_validation_level => p_validation_level
4794 ,p_party_account_rec => p_party_account_rec
4795 ,p_txn_rec => p_txn_rec
4796 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
4797 ,x_return_status => x_return_status
4798 ,x_msg_count => x_msg_count
4799 ,x_msg_data => x_msg_data);
4800
4801 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4802 l_msg_index := 1;
4803 l_msg_count := x_msg_count;
4804 WHILE l_msg_count > 0 LOOP
4805 x_msg_data := FND_MSG_PUB.GET(
4806 l_msg_index,
4807 FND_API.G_FALSE );
4808 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
4809 l_msg_index := l_msg_index + 1;
4810 l_msg_count := l_msg_count - 1;
4811 END LOOP;
4812 RAISE FND_API.G_EXC_ERROR;
4813 END IF;
4814 -- END IF; -- commented by sk for fixing the bug 2232880
4815 ELSE -- Added by sk for fixing the bug 2232880
4816 -- Verify if the party account combination exists
4817 IF p_called_from_grp <> FND_API.G_TRUE THEN
4818 IF CSI_Instance_parties_vld_pvt.Is_Pty_Acct_Comb_Exists
4819 (p_party_account_rec.instance_party_id ,
4820 p_party_account_rec.party_account_id ,
4821 p_party_account_rec.relationship_type_code ) THEN
4822 RAISE FND_API.G_EXC_ERROR;
4823 END IF;
4824 END IF;
4825
4826 IF p_party_account_rec.IP_ACCOUNT_ID is NULL OR
4827 p_party_account_rec.IP_ACCOUNT_ID = FND_API.G_MISS_NUM THEN
4828 -- If ip_account_id passed is null then generate from sequence
4829 -- and check if the value exists . If exists then generate again
4830 -- from the sequence till we get a value that does not exist
4831 while l_process_flag loop
4832 p_party_account_rec.IP_ACCOUNT_ID := CSI_Instance_parties_vld_pvt.gen_ip_account_id;
4833 IF NOT(CSI_Instance_parties_vld_pvt.Is_IP_account_Exists(p_party_account_rec.IP_ACCOUNT_ID,
4834 FALSE )) THEN
4835 l_process_flag := FALSE;
4836 END IF;
4837 end loop;
4838 ELSE
4839 -- Validate the instance_party_id if exist then raise CSI_API_INVALID_PRIMARY_KEY error
4840 IF CSI_Instance_parties_vld_pvt.Is_IP_account_Exists(p_party_account_rec.IP_ACCOUNT_ID ,
4841 TRUE ) THEN
4842 RAISE FND_API.G_EXC_ERROR;
4843 END IF;
4844 END IF;
4845 -- Verify if the instance_party_id is valid
4846 -- Check the cache before hitting the Database.
4847 IF p_called_from_grp <> FND_API.G_TRUE THEN
4848 l_exists_flag := 'N';
4849 l_valid_flag := 'Y';
4850 IF p_inst_party_tbl.count > 0 THEN
4851 For tab_row in p_inst_party_tbl.FIRST .. p_inst_party_tbl.LAST
4852 LOOP
4853 IF p_inst_party_tbl(tab_row).instance_party_id = p_party_account_rec.INSTANCE_PARTY_ID THEN
4854 l_valid_flag := p_inst_party_tbl(tab_row).valid_flag;
4855 l_exists_flag := 'Y';
4856 exit;
4857 END IF;
4858 END LOOP;
4859 --
4860 IF l_valid_flag <> 'Y' THEN
4861 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INST_PARTY_ID');
4862 FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',p_party_account_rec.INSTANCE_PARTY_ID);
4863 FND_MSG_PUB.Add;
4864 RAISE FND_API.G_EXC_ERROR;
4865 END IF;
4866 END IF;
4867 --
4868 IF l_exists_flag <> 'Y' THEN
4869 p_account_count_rec.inst_party_count := p_account_count_rec.inst_party_count + 1;
4870 p_inst_party_tbl(p_account_count_rec.inst_party_count).instance_party_id := p_party_account_rec.INSTANCE_PARTY_ID;
4871 IF NOT(CSI_Instance_parties_vld_pvt.Is_Inst_partyID_Valid(
4872 p_Instance_party_id => p_party_account_rec.INSTANCE_PARTY_ID
4873 ,p_txn_type_id => p_txn_rec.transaction_type_id
4874 ,p_mode => 'C' ) -- Added for bug 3550541
4875 )
4876 THEN
4877 p_inst_party_tbl(p_account_count_rec.inst_party_count).valid_flag := 'N';
4878 -- Message added in the validation routine since additional validation added for bug # 2477417.
4879 -- FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INST_PARTY_ID');
4880 -- FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',p_party_account_rec.INSTANCE_PARTY_ID);
4881 -- FND_MSG_PUB.Add;
4882 -- RAISE FND_API.G_EXC_ERROR;
4883 ELSE
4884 p_inst_party_tbl(p_account_count_rec.inst_party_count).valid_flag := 'Y';
4885 END IF;
4886 END IF;
4887 END IF; -- called from group check
4888 -- Verify Party Account ID is Valid
4889 IF p_called_from_grp <> FND_API.G_TRUE THEN
4890 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_accountID_Valid
4891 (p_party_account_rec.PARTY_ACCOUNT_ID,
4892 p_party_account_rec.INSTANCE_PARTY_ID,
4893 p_party_account_rec.RELATIONSHIP_TYPE_CODE,
4894 p_txn_rec.transaction_type_id, -- Added for bug 3550541
4895 'C')) -- Added for bug 3550541
4896 THEN
4897 RAISE FND_API.G_EXC_ERROR;
4898 END IF;
4899 END IF;
4900
4901 -- Verify the relationship_type_code is valid
4902 -- Check the cache before hitting the Database.
4903 l_exists_flag := 'N';
4904 l_valid_flag := 'Y';
4905 IF p_acct_rel_type_tbl.count > 0 THEN
4906 For tab_row in p_acct_rel_type_tbl.FIRST .. p_acct_rel_type_tbl.LAST
4907 LOOP
4908 IF p_acct_rel_type_tbl(tab_row).rel_type_code = p_party_account_rec.RELATIONSHIP_TYPE_CODE THEN
4909 l_valid_flag := p_acct_rel_type_tbl(tab_row).valid_flag;
4910 l_exists_flag := 'Y';
4911 exit;
4912 END IF;
4913 END LOOP;
4914 --
4915 IF l_valid_flag <> 'Y' THEN
4916 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ACCOUNT_TYPE');
4917 FND_MESSAGE.SET_TOKEN('IP_RELATIONSHIP_TYPE_CODE',p_party_account_rec.RELATIONSHIP_TYPE_CODE);
4918 FND_MSG_PUB.Add;
4919 RAISE FND_API.G_EXC_ERROR;
4920 END IF;
4921 END IF;
4922 IF l_exists_flag <> 'Y' THEN
4923 p_account_count_rec.rel_type_count := p_account_count_rec.rel_type_count + 1;
4924 p_acct_rel_type_tbl(p_account_count_rec.rel_type_count).rel_type_code :=
4925 p_party_account_rec.RELATIONSHIP_TYPE_CODE;
4926 IF NOT(CSI_Instance_parties_vld_pvt.Is_Acct_Rel_type_Valid
4927 (p_party_account_rec.RELATIONSHIP_TYPE_CODE)) THEN
4928 p_acct_rel_type_tbl(p_account_count_rec.rel_type_count).valid_flag := 'N';
4929 RAISE FND_API.G_EXC_ERROR;
4930 ELSE
4931 p_acct_rel_type_tbl(p_account_count_rec.rel_type_count).valid_flag := 'Y';
4932 END IF;
4933 END IF;
4934
4935 -- If active_start_date is null or G_MISS value then assign sysdate
4936 IF ((p_party_account_rec.ACTIVE_START_DATE IS NULL ) OR
4937 ( p_party_account_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE)) THEN
4938 p_party_account_rec.ACTIVE_START_DATE := SYSDATE;
4939 END IF;
4940
4941 -- verify if the active_start_date is valid
4942 IF p_called_from_grp <> FND_API.G_TRUE THEN
4943 IF NOT(CSI_Instance_parties_vld_pvt.Is_Acct_StartDate_Valid
4944 (p_party_account_rec.ACTIVE_START_DATE,
4945 p_party_account_rec.ACTIVE_END_DATE ,
4946 p_party_account_rec.INSTANCE_PARTY_ID )) THEN
4947 RAISE FND_API.G_EXC_ERROR;
4948 END IF;
4949
4950 -- Verify if the active_end_date is valid
4951 IF ((p_party_account_rec.ACTIVE_END_DATE is NOT NULL) AND
4952 (p_party_account_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE )) THEN
4953 IF NOT(CSI_Instance_parties_vld_pvt.Is_Acct_EndDate_Valid
4954 (p_party_account_rec.ACTIVE_START_DATE,
4955 p_party_account_rec.ACTIVE_END_DATE ,
4956 p_party_account_rec.INSTANCE_PARTY_ID ,
4957 p_party_account_rec.IP_ACCOUNT_ID ,
4958 p_txn_rec.TRANSACTION_ID)) THEN
4959 RAISE FND_API.G_EXC_ERROR;
4960 END IF;
4961 END IF;
4962 END IF; -- Called from group check
4963
4964 -- Verify if bill to address is correct
4965 IF ((p_party_account_rec.bill_to_address IS NOT NULL) AND
4966 (p_party_account_rec.bill_to_address <> FND_API.G_MISS_NUM )) THEN
4967 -- Check the cache before hitting the Database.
4968 l_exists_flag := 'N';
4969 l_valid_flag := 'Y';
4970 IF p_site_use_tbl.count > 0 THEN
4971 For tab_row in p_site_use_tbl.FIRST .. p_site_use_tbl.LAST
4972 LOOP
4973 IF p_site_use_tbl(tab_row).site_use_id = p_party_account_rec.bill_to_address AND
4974 p_site_use_tbl(tab_row).site_use_code = 'BILL_TO' THEN
4975 l_valid_flag := p_site_use_tbl(tab_row).valid_flag;
4976 l_exists_flag := 'Y';
4977 exit;
4978 END IF;
4979 END LOOP;
4980 --
4981 IF l_valid_flag <> 'Y' THEN
4982 FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_BILL_TO_ADD_ID');
4983 FND_MESSAGE.SET_TOKEN('BILL_TO_ADD_ID',p_party_account_rec.bill_to_address);
4984 FND_MSG_PUB.Add;
4985 RAISE FND_API.G_EXC_ERROR;
4986 END IF;
4987 END IF;
4988 --
4989 IF l_exists_flag <> 'Y' THEN
4990 p_account_count_rec.site_use_count := p_account_count_rec.site_use_count + 1;
4991 p_site_use_tbl(p_account_count_rec.site_use_count).site_use_id :=
4992 p_party_account_rec.bill_to_address;
4993 p_site_use_tbl(p_account_count_rec.site_use_count).site_use_code := 'BILL_TO';
4994 IF NOT(CSI_Instance_parties_vld_pvt.Is_bill_to_add_valid
4995 ( p_party_account_rec.bill_to_address)) THEN
4996 p_site_use_tbl(p_account_count_rec.site_use_count).valid_flag := 'N';
4997 RAISE FND_API.G_EXC_ERROR;
4998 ELSE
4999 p_site_use_tbl(p_account_count_rec.site_use_count).valid_flag := 'Y';
5000 END IF;
5001 END IF;
5002 END IF;
5003
5004 -- Verify if ship to address is correct
5005 IF ((p_party_account_rec.ship_to_address IS NOT NULL) AND
5006 (p_party_account_rec.ship_to_address <> FND_API.G_MISS_NUM )) THEN
5007 -- Check the cache before hitting the Database.
5008 l_exists_flag := 'N';
5009 l_valid_flag := 'Y';
5010 IF p_site_use_tbl.count > 0 THEN
5011 For tab_row in p_site_use_tbl.FIRST .. p_site_use_tbl.LAST
5012 LOOP
5013 IF p_site_use_tbl(tab_row).site_use_id = p_party_account_rec.ship_to_address AND
5014 p_site_use_tbl(tab_row).site_use_code = 'SHIP_TO' THEN
5015 l_valid_flag := p_site_use_tbl(tab_row).valid_flag;
5016 l_exists_flag := 'Y';
5017 exit;
5018 END IF;
5019 END LOOP;
5020 --
5021 IF l_valid_flag <> 'Y' THEN
5022 FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_SHIP_TO_ADD_ID');
5023 FND_MESSAGE.SET_TOKEN('SHIP_TO_ADD_ID',p_party_account_rec.ship_to_address);
5024 FND_MSG_PUB.Add;
5025 RAISE FND_API.G_EXC_ERROR;
5026 END IF;
5027 END IF;
5028 --
5029 IF l_exists_flag <> 'Y' THEN
5030 p_account_count_rec.site_use_count := p_account_count_rec.site_use_count + 1;
5031 p_site_use_tbl(p_account_count_rec.site_use_count).site_use_id :=
5032 p_party_account_rec.ship_to_address;
5033 p_site_use_tbl(p_account_count_rec.site_use_count).site_use_code := 'SHIP_TO';
5034 IF NOT(CSI_Instance_parties_vld_pvt.Is_ship_to_add_valid
5035 ( p_party_account_rec.ship_to_address)) THEN
5036 p_site_use_tbl(p_account_count_rec.site_use_count).valid_flag := 'N';
5037 RAISE FND_API.G_EXC_ERROR;
5038 ELSE
5039 p_site_use_tbl(p_account_count_rec.site_use_count).valid_flag := 'Y';
5040 END IF;
5041 END IF;
5042 END IF;
5043
5044 -- Following will not be done when called from Group API.
5045 -- Verify if it meets Account Rules
5046 IF p_called_from_grp <> FND_API.G_TRUE THEN
5047
5048 IF CSI_Instance_parties_vld_pvt.Acct_Rules_Check
5049 (p_party_account_rec.instance_party_id ,
5050 p_party_account_rec.relationship_type_code ) THEN
5051 RAISE FND_API.G_EXC_ERROR;
5052 END IF;
5053
5054 -- Get the parent party record
5055 IF NOT(CSI_Instance_parties_vld_pvt.Get_Party_Record
5056 ( p_party_account_rec.instance_party_id,
5057 l_party_rec)) THEN
5058 RAISE FND_API.G_EXC_ERROR;
5059 END IF;
5060
5061 -- If it is an owner party and owner account then update csi_item_instances
5062 -- Account Rules check ensures that if the owner account is
5063 -- being created, the parent party is always a owner party
5064 IF ((p_party_account_rec.RELATIONSHIP_TYPE_CODE = 'OWNER')
5065 AND (l_party_rec.RELATIONSHIP_TYPE_CODE = 'OWNER')) THEN
5066
5067 update csi_item_instances
5068 set owner_party_account_id = p_party_account_rec.party_account_id
5069 where instance_id = l_party_rec.instance_id;
5070 END IF;
5071
5072 -- Call table handlers to insert into csi_ip_accounts table
5073 CSI_IP_ACCOUNTS_PKG.Insert_Row(
5074 px_IP_ACCOUNT_ID => p_party_account_rec.ip_account_id,
5075 p_INSTANCE_PARTY_ID => p_party_account_rec.INSTANCE_PARTY_ID,
5076 p_PARTY_ACCOUNT_ID => p_party_account_rec.PARTY_ACCOUNT_ID,
5077 p_RELATIONSHIP_TYPE_CODE => p_party_account_rec.RELATIONSHIP_TYPE_CODE,
5078 p_ACTIVE_START_DATE => p_party_account_rec.ACTIVE_START_DATE,
5079 p_ACTIVE_END_DATE => p_party_account_rec.ACTIVE_END_DATE,
5080 p_CONTEXT => p_party_account_rec.CONTEXT,
5081 p_ATTRIBUTE1 => p_party_account_rec.ATTRIBUTE1,
5082 p_ATTRIBUTE2 => p_party_account_rec.ATTRIBUTE2,
5083 p_ATTRIBUTE3 => p_party_account_rec.ATTRIBUTE3,
5084 p_ATTRIBUTE4 => p_party_account_rec.ATTRIBUTE4,
5085 p_ATTRIBUTE5 => p_party_account_rec.ATTRIBUTE5,
5086 p_ATTRIBUTE6 => p_party_account_rec.ATTRIBUTE6,
5087 p_ATTRIBUTE7 => p_party_account_rec.ATTRIBUTE7,
5088 p_ATTRIBUTE8 => p_party_account_rec.ATTRIBUTE8,
5089 p_ATTRIBUTE9 => p_party_account_rec.ATTRIBUTE9,
5090 p_ATTRIBUTE10 => p_party_account_rec.ATTRIBUTE10,
5091 p_ATTRIBUTE11 => p_party_account_rec.ATTRIBUTE11,
5092 p_ATTRIBUTE12 => p_party_account_rec.ATTRIBUTE12,
5093 p_ATTRIBUTE13 => p_party_account_rec.ATTRIBUTE13,
5094 p_ATTRIBUTE14 => p_party_account_rec.ATTRIBUTE14,
5095 p_ATTRIBUTE15 => p_party_account_rec.ATTRIBUTE15,
5096 p_CREATED_BY => FND_GLOBAL.USER_ID ,
5097 p_CREATION_DATE => SYSDATE ,
5098 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
5099 p_LAST_UPDATE_DATE => SYSDATE ,
5100 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
5101 p_OBJECT_VERSION_NUMBER => 1 ,
5102 p_BILL_TO_ADDRESS => p_party_account_rec.BILL_TO_ADDRESS,
5103 p_SHIP_TO_ADDRESS => p_party_account_rec.SHIP_TO_ADDRESS,
5104 p_REQUEST_ID => p_party_account_rec.REQUEST_ID,
5105 p_PROGRAM_APPLICATION_ID => p_party_account_rec.PROGRAM_APPLICATION_ID,
5106 p_PROGRAM_ID => p_party_account_rec.PROGRAM_ID,
5107 p_PROGRAM_UPDATE_DATE => p_party_account_rec.PROGRAM_UPDATE_DATE
5108 );
5109
5110 -- Call create_transaction to create txn log
5111 CSI_TRANSACTIONS_PVT.Create_transaction
5112 (
5113 p_api_version => p_api_version
5114 ,p_commit => p_commit
5115 ,p_init_msg_list => p_init_msg_list
5116 ,p_validation_level => p_validation_level
5117 ,p_Success_If_Exists_Flag => 'Y'
5118 ,P_transaction_rec => p_txn_rec
5119 ,x_return_status => x_return_status
5120 ,x_msg_count => x_msg_count
5121 ,x_msg_data => x_msg_data );
5122
5123
5124 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
5125 l_msg_index := 1;
5126 l_msg_count := x_msg_count;
5127 WHILE l_msg_count > 0 LOOP
5128 x_msg_data := FND_MSG_PUB.GET(
5129 l_msg_index,
5130 FND_API.G_FALSE );
5131 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
5132 l_msg_index := l_msg_index + 1;
5133 l_msg_count := l_msg_count - 1;
5134 END LOOP;
5135 RAISE FND_API.G_EXC_ERROR;
5136 END IF;
5137
5138 -- Generate a unique instance_party_history_id from the sequence
5139 l_ip_account_history_id := CSI_Instance_parties_vld_pvt.gen_ip_account_hist_id;
5140
5141 CSI_IP_ACCOUNTS_H_PKG.Insert_Row
5142 (
5143 px_IP_ACCOUNT_HISTORY_ID => l_ip_account_history_id ,
5144 p_IP_ACCOUNT_ID => p_party_account_rec.ip_account_id,
5145 p_TRANSACTION_ID => p_txn_rec.transaction_id ,
5146 p_OLD_PARTY_ACCOUNT_ID => NULL ,
5147 p_NEW_PARTY_ACCOUNT_ID => p_party_account_rec.PARTY_ACCOUNT_ID,
5148 p_OLD_RELATIONSHIP_TYPE_CODE => NULL ,
5149 p_NEW_RELATIONSHIP_TYPE_CODE => p_party_account_rec.RELATIONSHIP_TYPE_CODE,
5150 p_OLD_ACTIVE_START_DATE => NULL ,
5151 p_NEW_ACTIVE_START_DATE => p_party_account_rec.ACTIVE_START_DATE,
5152 p_OLD_ACTIVE_END_DATE => NULL ,
5153 p_NEW_ACTIVE_END_DATE => p_party_account_rec.ACTIVE_END_DATE,
5154 p_OLD_CONTEXT => NULL ,
5155 p_NEW_CONTEXT => p_party_account_rec.CONTEXT ,
5156 p_OLD_ATTRIBUTE1 => NULL ,
5157 p_NEW_ATTRIBUTE1 => p_party_account_rec.ATTRIBUTE1 ,
5158 p_OLD_ATTRIBUTE2 => NULL ,
5159 p_NEW_ATTRIBUTE2 => p_party_account_rec.ATTRIBUTE2 ,
5160 p_OLD_ATTRIBUTE3 => NULL ,
5161 p_NEW_ATTRIBUTE3 => p_party_account_rec.ATTRIBUTE3 ,
5162 p_OLD_ATTRIBUTE4 => NULL ,
5163 p_NEW_ATTRIBUTE4 => p_party_account_rec.ATTRIBUTE4 ,
5164 p_OLD_ATTRIBUTE5 => NULL ,
5165 p_NEW_ATTRIBUTE5 => p_party_account_rec.ATTRIBUTE5 ,
5166 p_OLD_ATTRIBUTE6 => NULL ,
5167 p_NEW_ATTRIBUTE6 => p_party_account_rec.ATTRIBUTE6 ,
5168 p_OLD_ATTRIBUTE7 => NULL ,
5169 p_NEW_ATTRIBUTE7 => p_party_account_rec.ATTRIBUTE7 ,
5170 p_OLD_ATTRIBUTE8 => NULL ,
5171 p_NEW_ATTRIBUTE8 => p_party_account_rec.ATTRIBUTE8 ,
5172 p_OLD_ATTRIBUTE9 => NULL ,
5173 p_NEW_ATTRIBUTE9 => p_party_account_rec.ATTRIBUTE9 ,
5174 p_OLD_ATTRIBUTE10 => NULL ,
5175 p_NEW_ATTRIBUTE10 => p_party_account_rec.ATTRIBUTE10,
5176 p_OLD_ATTRIBUTE11 => NULL ,
5177 p_NEW_ATTRIBUTE11 => p_party_account_rec.ATTRIBUTE11,
5178 p_OLD_ATTRIBUTE12 => NULL ,
5179 p_NEW_ATTRIBUTE12 => p_party_account_rec.ATTRIBUTE12,
5180 p_OLD_ATTRIBUTE13 => NULL ,
5181 p_NEW_ATTRIBUTE13 => p_party_account_rec.ATTRIBUTE13,
5182 p_OLD_ATTRIBUTE14 => NULL ,
5183 p_NEW_ATTRIBUTE14 => p_party_account_rec.ATTRIBUTE14,
5184 p_OLD_ATTRIBUTE15 => NULL ,
5185 p_NEW_ATTRIBUTE15 => p_party_account_rec.ATTRIBUTE15,
5186 p_FULL_DUMP_FLAG => 'N' ,
5187 p_CREATED_BY => FND_GLOBAL.USER_ID ,
5188 p_CREATION_DATE => SYSDATE ,
5189 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
5190 p_LAST_UPDATE_DATE => SYSDATE ,
5191 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
5192 p_OBJECT_VERSION_NUMBER => 1 ,
5193 p_OLD_BILL_TO_ADDRESS => NULL ,
5194 p_NEW_BILL_TO_ADDRESS => p_party_account_rec.BILL_TO_ADDRESS,
5195 p_OLD_SHIP_TO_ADDRESS => NULL ,
5196 p_NEW_SHIP_TO_ADDRESS => p_party_account_rec.SHIP_TO_ADDRESS,
5197 p_OLD_INSTANCE_PARTY_ID => NULL ,
5198 p_NEW_INSTANCE_PARTY_ID => p_party_account_rec.INSTANCE_PARTY_ID);
5199
5200 END IF; -- p_called_from_grp check
5201 -- Call Contracts
5202 -- End commentation by sguthiva for bug 2307804
5203 -- Added by sguthiva for bug 2307804
5204 IF ( (p_party_account_rec.call_contracts <> fnd_api.g_false)
5205 AND (p_party_account_rec.relationship_type_code = 'OWNER' )
5206 )
5207 THEN
5208 -- The following code has been written to make sure
5209 -- before calling contracts we pass a valid vld_organization_id
5210 IF p_party_account_rec.vld_organization_id IS NULL OR
5211 p_party_account_rec.vld_organization_id = fnd_api.g_miss_num
5212 THEN
5213 BEGIN
5214 SELECT last_vld_organization_id
5215 INTO l_last_vld_org
5216 FROM csi_item_instances
5217 WHERE instance_id = l_party_rec.instance_id;
5218 EXCEPTION
5219 WHEN OTHERS THEN
5220 NULL;
5221 END;
5222 ELSE
5223 l_last_vld_org := p_party_account_rec.vld_organization_id;
5224 END IF;
5225 --
5226 --Changes for Bug 11679952
5227 IF p_txn_rec.transaction_type_id <> 7 -- Added for bug 3973706
5228 AND nvl(p_txn_rec.source_group_ref, FND_API.G_MISS_CHAR) <> 'WBADI' --Added for Bug 11679952
5229 THEN
5230 csi_item_instance_pvt.Call_to_Contracts(
5231 p_transaction_type => 'NEW'
5232 ,p_instance_id => l_party_rec.instance_id
5233 ,p_new_instance_id => NULL
5234 ,p_vld_org_id => l_last_vld_org
5235 ,p_quantity => NULL
5236 ,p_party_account_id1 => NULL -- old party account id
5237 ,p_party_account_id2 => NULL -- new party account id
5238 ,p_transaction_date => p_txn_rec.transaction_date -- SYSDATE
5239 ,p_source_transaction_date => p_txn_rec.source_transaction_date
5240 ,p_grp_call_contracts => p_party_account_rec.grp_call_contracts -- srramakr
5241 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
5242 ,x_return_status => x_return_status
5243 ,x_msg_count => x_msg_count
5244 ,x_msg_data => x_msg_data
5245 );
5246
5247 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
5248 THEN
5249 l_msg_index := 1;
5250 l_msg_count := x_msg_count;
5251 WHILE l_msg_count > 0 LOOP
5252 x_msg_data := FND_MSG_PUB.GET(
5253 l_msg_index,
5254 FND_API.G_FALSE );
5255 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
5256 l_msg_index := l_msg_index + 1;
5257 l_msg_count := l_msg_count - 1;
5258 END LOOP;
5259 RAISE FND_API.G_EXC_ERROR;
5260 END IF;
5261 END IF; -- Added for bug 3973706
5262 END IF;
5263 END IF; -- Added by sk for fixing the bug 2232880
5264 END IF; -- Added by sk for bug 2110790
5265 -- End addition by sguthiva for bug 2307804
5266 --
5267 -- End of API body
5268 -- Standard check of p_commit.
5269
5270 IF FND_API.To_Boolean( p_commit ) THEN
5271 COMMIT WORK;
5272 END IF;
5273
5274
5275 -- Standard call to get message count and if count is get message info.
5276 FND_MSG_PUB.Count_And_Get
5277 (p_count => x_msg_count ,
5278 p_data => x_msg_data );
5279 EXCEPTION
5280 WHEN FND_API.G_EXC_ERROR THEN
5281 ROLLBACK TO create_inst_party_acct_pvt;
5282 x_return_status := FND_API.G_RET_STS_ERROR ;
5283
5284 FND_MSG_PUB.Count_And_Get
5285 ( p_count => x_msg_count,
5286 p_data => x_msg_data );
5287 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5288 ROLLBACK TO create_inst_party_acct_pvt;
5289 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5290 FND_MSG_PUB.Count_And_Get
5291 ( p_count => x_msg_count,
5292 p_data => x_msg_data );
5293 WHEN OTHERS THEN
5294 ROLLBACK TO create_inst_party_acct_pvt;
5295 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5296 IF FND_MSG_PUB.Check_Msg_Level
5297 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5298 THEN
5299 FND_MSG_PUB.Add_Exc_Msg
5300 ( g_pkg_name, l_api_name );
5301 END IF;
5302 FND_MSG_PUB.Count_And_Get
5303 ( p_count => x_msg_count,
5304 p_data => x_msg_data );
5305
5306 END create_inst_party_account;
5307
5308 /*-----------------------------------------------------------*/
5309 /* Procedure name: Update_inst_party_account */
5310 /* Description : Procedure used to update the existing */
5311 /* instance-party account relationships */
5312 /*-----------------------------------------------------------*/
5313
5314 PROCEDURE update_inst_party_account
5315 ( p_api_version IN NUMBER
5316 ,p_commit IN VARCHAR2
5317 ,p_init_msg_list IN VARCHAR2
5318 ,p_validation_level IN NUMBER
5319 ,p_party_account_rec IN csi_datastructures_pub.party_account_rec
5320 ,p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
5321 ,p_oks_txn_inst_tbl IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl
5322 ,x_return_status OUT NOCOPY VARCHAR2
5323 ,x_msg_count OUT NOCOPY NUMBER
5324 ,x_msg_data OUT NOCOPY VARCHAR2
5325 ) IS
5326
5327 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_INST_PARTY_ACCOUNT';
5328 l_api_version CONSTANT NUMBER := 1.0;
5329 l_csi_debug_level NUMBER;
5330 -- l_curr_party_acct_rec csi_datastructures_pub.party_account_rec;
5331 l_temp_party_account_rec csi_datastructures_pub.party_account_rec;
5332 l_party_rec csi_datastructures_pub.party_rec;
5333 l_msg_index NUMBER;
5334 l_msg_count NUMBER;
5335 l_mod_value NUMBER;
5336 l_object_version_number NUMBER;
5337 l_ip_account_history_id NUMBER;
5338 l_full_dump_frequency NUMBER;
5339 x_msg_index_out NUMBER;
5340
5341 -- Alternate PK variables
5342 l_alt_pk_inst_pty_id NUMBER;
5343 l_alt_pk_pty_acct_id NUMBER;
5344 l_alt_pk_rel_type_code VARCHAR2(30);
5345
5346 l_party_relation VARCHAR2(30);
5347 l_transaction_type VARCHAR2(10);
5348 l_old_oks_cp_rec oks_ibint_pub.cp_rec_type;
5349 l_new_oks_cp_rec oks_ibint_pub.cp_rec_type;
5350 l_contracts_status VARCHAR2(3);
5351 l_internal_party_id NUMBER;
5352 l_party_id NUMBER;
5353 l_old_party_id NUMBER;
5354 l_new_party_id NUMBER;
5355 CURSOR instance_csr (p_ins_id IN NUMBER) IS
5356 SELECT *
5357 FROM csi_item_instances
5358 WHERE instance_id = p_ins_id;
5359 l_instance_csr instance_csr%ROWTYPE;
5360
5361 CURSOR get_curr_party_acct_rec (p_ip_account_id IN NUMBER) IS
5362 SELECT
5363 ip_account_id ,
5364 FND_API.G_MISS_NUM parent_tbl_index,
5365 instance_party_id ,
5366 party_account_id ,
5367 relationship_type_code ,
5368 bill_to_address ,
5369 ship_to_address ,
5370 active_start_date ,
5371 active_end_date ,
5372 context ,
5373 attribute1 ,
5374 attribute2 ,
5375 attribute3 ,
5376 attribute4 ,
5377 attribute5 ,
5378 attribute6 ,
5379 attribute7 ,
5380 attribute8 ,
5381 attribute9 ,
5382 attribute10 ,
5383 attribute11 ,
5384 attribute12 ,
5385 attribute13 ,
5386 attribute14 ,
5387 attribute15 ,
5388 object_version_number
5389 FROM CSI_IP_ACCOUNTS
5390 WHERE IP_ACCOUNT_ID = p_ip_account_id
5391 FOR UPDATE OF OBJECT_VERSION_NUMBER;
5392 --AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE));
5393
5394 l_curr_party_acct_rec get_curr_party_acct_rec%ROWTYPE;
5395
5396
5397 CURSOR pty_acct_csr (p_act_hist_id NUMBER) IS
5398 SELECT ip_account_history_id
5399 ,ip_account_id
5400 ,transaction_id
5401 ,old_party_account_id
5402 ,new_party_account_id
5403 ,old_relationship_type_code
5404 ,new_relationship_type_code
5405 ,old_active_start_date
5406 ,new_active_start_date
5407 ,old_active_end_date
5408 ,new_active_end_date
5409 ,old_context
5410 ,new_context
5411 ,old_attribute1
5412 ,new_attribute1
5413 ,old_attribute2
5414 ,new_attribute2
5415 ,old_attribute3
5416 ,new_attribute3
5417 ,old_attribute4
5418 ,new_attribute4
5419 ,old_attribute5
5420 ,new_attribute5
5421 ,old_attribute6
5422 ,new_attribute6
5423 ,old_attribute7
5424 ,new_attribute7
5425 ,old_attribute8
5426 ,new_attribute8
5427 ,old_attribute9
5428 ,new_attribute9
5429 ,old_attribute10
5430 ,new_attribute10
5431 ,old_attribute11
5432 ,new_attribute11
5433 ,old_attribute12
5434 ,new_attribute12
5435 ,old_attribute13
5436 ,new_attribute13
5437 ,old_attribute14
5438 ,new_attribute14
5439 ,old_attribute15
5440 ,new_attribute15
5441 ,object_version_number
5442 ,old_bill_to_address
5443 ,new_bill_to_address
5444 ,old_ship_to_address
5445 ,new_ship_to_address
5446 ,full_dump_flag
5447 ,old_instance_party_id
5448 ,new_instance_party_id
5449 FROM csi_ip_accounts_h
5450 WHERE csi_ip_accounts_h.ip_account_history_id = p_act_hist_id
5451 FOR UPDATE OF object_version_number ;
5452 l_pty_acct_csr pty_acct_csr%ROWTYPE;
5453 l_ip_acct_hist_id NUMBER;
5454 l_old_pty_acct_id NUMBER; -- Added by sguthiva for bug 2307804
5455 l_new_pty_acct_id NUMBER; -- Added by sguthiva for bug 2307804
5456 l_last_vld_org NUMBER; -- Added by sguthiva for bug 2307804
5457 l_party_account_id NUMBER; -- Added by sguthiva for bug 2307804
5458 l_account_hist_rec csi_datastructures_pub.account_history_rec;
5459 l_rel_type_code VARCHAR2(30);
5460 l_acct_end_date DATE;
5461 l_temp_acct_date DATE;
5462 l_found_for_update VARCHAR2(1):='N';
5463 l_dummy VARCHAR2(1);
5464 l_instance_party_id NUMBER;
5465 BEGIN
5466 -- Standard Start of API savepoint
5467 -- SAVEPOINT update_inst_party_acct_pvt;
5468
5469
5470 -- Standard call to check for call compatibility.
5471 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
5472 p_api_version ,
5473 l_api_name ,
5474 g_pkg_name )
5475 THEN
5476 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5477 END IF;
5478
5479 -- Initialize message list if p_init_msg_list is set to TRUE.
5480 IF FND_API.to_Boolean( p_init_msg_list ) THEN
5481 FND_MSG_PUB.initialize;
5482 END IF;
5483
5484 -- Initialize API return status to success
5485 x_return_status := FND_API.G_RET_STS_SUCCESS;
5486
5487 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
5488 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
5489
5490 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
5491 IF (l_csi_debug_level > 0) THEN
5492 csi_gen_utility_pvt.put_line( 'update_inst_party_account');
5493 END IF;
5494
5495 -- If the debug level = 2 then dump all the parameters values.
5496 IF (l_csi_debug_level > 1) THEN
5497 csi_gen_utility_pvt.put_line( 'update_inst_party_account '||'-'||
5498 p_api_version ||'-'||
5499 p_commit ||'-'||
5500 p_init_msg_list );
5501 -- Dump the records in the log file
5502 csi_gen_utility_pvt.dump_party_account_rec(p_party_account_rec);
5503 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
5504 END IF;
5505
5506 -- Start API body
5507 --
5508 -- Check if all the required parameters are passed
5509 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
5510 ( p_party_account_rec.ip_account_id ,
5511 ' p_party_account_rec.IP_ACCOUNT_ID ',
5512 l_api_name );
5513 --
5514 IF p_party_account_rec.party_account_id IS NULL THEN
5515 FND_MESSAGE.SET_NAME('CSI','CSI_API_MANDATORY_ACCOUNT');
5516 FND_MSG_PUB.Add;
5517 RAISE FND_API.G_EXC_ERROR;
5518 END IF;
5519 --
5520 -- Check if the instance party id is valid
5521 -- Commented by sk for bug 2232880
5522 -- End of commentation by sk for bug 2232880
5523
5524 -- check if the object_version_number passed matches with the one
5525 -- in the database else raise error
5526 OPEN get_curr_party_acct_rec(p_party_account_rec.IP_ACCOUNT_ID);
5527 FETCH get_curr_party_acct_rec INTO l_curr_party_acct_rec;
5528 IF (l_curr_party_acct_rec.object_version_number <> p_party_account_rec.OBJECT_VERSION_NUMBER) THEN
5529 FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
5530 FND_MSG_PUB.ADD;
5531 RAISE FND_API.G_EXC_ERROR;
5532 END IF;
5533 IF get_curr_party_acct_rec%NOTFOUND THEN
5534 FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
5535 FND_MSG_PUB.ADD;
5536 RAISE FND_API.G_EXC_ERROR;
5537 END IF;
5538 CLOSE get_curr_party_acct_rec;
5539
5540 -- Added by sguthiva for bug 2307804
5541 IF l_curr_party_acct_rec.active_end_date IS NULL OR
5542 l_curr_party_acct_rec.active_end_date > SYSDATE
5543 THEN
5544 l_old_pty_acct_id :=l_curr_party_acct_rec.party_account_id;-- added 18apr
5545 ELSE
5546 l_old_pty_acct_id := NULL;
5547 END IF;
5548 -- End addition by sguthiva for bug 2307804
5549
5550 IF p_party_account_rec.INSTANCE_PARTY_ID <> FND_API.G_MISS_NUM THEN
5551 -- Check if the instance party id is valid
5552 IF NOT(CSI_Instance_parties_vld_pvt.Is_Inst_partyID_Valid
5553 (p_Instance_party_id => p_party_account_rec.INSTANCE_PARTY_ID
5554 ,p_txn_type_id => p_txn_rec.transaction_type_id
5555 ,p_mode => 'U' -- Added for bug 3550541
5556 )
5557 )
5558 THEN
5559 -- Message added in the validation routine since additional validation added for bug # 2477417.
5560 -- FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INST_PARTY_ID');
5561 -- FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',p_party_account_rec.INSTANCE_PARTY_ID);
5562 -- FND_MSG_PUB.Add;
5563 RAISE FND_API.G_EXC_ERROR;
5564 END IF;
5565 IF p_party_account_rec.INSTANCE_PARTY_ID <> l_curr_party_acct_rec.INSTANCE_PARTY_ID THEN
5566 -- Start addition
5567 IF p_txn_rec.transaction_type_id <> 7
5568 THEN
5569 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
5570 FND_MESSAGE.Set_Token('COLUMN', 'INSTANCE_PARTY_ID');
5571 FND_MSG_PUB.ADD;
5572 RAISE FND_API.G_EXC_ERROR;
5573 ELSE
5574 BEGIN
5575 SELECT relationship_type_code
5576 INTO l_rel_type_code
5577 FROM csi_i_parties
5578 WHERE instance_party_id=l_curr_party_acct_rec.instance_party_id;
5579
5580 IF (l_rel_type_code='OWNER' AND
5581 l_curr_party_acct_rec.relationship_type_code='OWNER' )/* OR
5582 (l_curr_party_acct_rec.active_end_date IS NOT NULL AND
5583 l_curr_party_acct_rec.active_end_date < SYSDATE AND
5584 (p_party_account_rec.active_end_date = fnd_api.g_miss_date OR
5585 p_party_account_rec.active_end_date < SYSDATE )) */
5586 -- Commented the above code for bug 3539990 (reported in 11.5.9)
5587 THEN
5588 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
5589 FND_MESSAGE.Set_Token('COLUMN', 'INSTANCE_PARTY_ID');
5590 FND_MSG_PUB.ADD;
5591 RAISE FND_API.G_EXC_ERROR;
5592 END IF;
5593 EXCEPTION
5594 WHEN FND_API.G_EXC_ERROR THEN
5595 RAISE FND_API.G_EXC_ERROR;
5596 END;
5597
5598 END IF;
5599 -- End addition
5600 END IF;
5601 ELSE
5602 -- srramakr Updates not allowed for Expired instance. Bug # 2477417
5603 IF NOT(CSI_Instance_parties_vld_pvt.Is_Inst_partyID_Valid
5604 (p_Instance_party_id => l_curr_party_acct_rec.INSTANCE_PARTY_ID
5605 ,p_txn_type_id => p_txn_rec.transaction_type_id
5606 ,p_mode => 'U' -- Added for bug 3550541
5607 )
5608 )
5609 THEN
5610 RAISE FND_API.G_EXC_ERROR;
5611 END IF;
5612 END IF;
5613 l_party_relation := CSI_Instance_parties_vld_pvt.Get_Party_relation
5614 (l_curr_party_acct_rec.Instance_party_id);
5615 --
5616 IF p_party_account_rec.active_start_date IS NULL THEN
5617 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
5618 FND_MESSAGE.Set_Token('COLUMN', 'ACTIVE_START_DATE');
5619 FND_MSG_PUB.ADD;
5620 RAISE FND_API.G_EXC_ERROR;
5621 END IF;
5622 --
5623 IF p_party_account_rec.active_start_date <> FND_API.G_MISS_DATE THEN
5624 IF p_party_account_rec.active_start_date <> l_curr_party_acct_rec.active_start_date THEN
5625 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
5626 FND_MESSAGE.Set_Token('COLUMN', 'ACTIVE_START_DATE');
5627 FND_MSG_PUB.ADD;
5628 RAISE FND_API.G_EXC_ERROR;
5629 END IF;
5630 END IF;
5631
5632 -- Verify if the active_end_date is valid
5633 -- Don't allow expiry of owner accounts
5634 IF ( p_party_account_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE) THEN
5635 IF ((l_curr_party_acct_rec.relationship_type_code = 'OWNER')
5636 AND (l_party_relation = 'OWNER')) THEN
5637 -- Added by sguthiva for bug 2307804
5638 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
5639 csi_gen_utility_pvt.populate_install_param_rec;
5640 END IF;
5641 --
5642 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
5643 --
5644 IF l_internal_party_id IS NULL THEN
5645 FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
5646 FND_MSG_PUB.ADD;
5647 RAISE FND_API.G_EXC_ERROR;
5648 END IF;
5649 --
5650 -- End addition by sguthiva for bug 2307804
5651 IF p_party_account_rec.expire_flag = fnd_api.g_false -- Added by sguthiva for bug 2307804
5652 -- IF csi_party_relationships_pvt.g_force_expire_flag = 'N' -- Commented by sguthiva for bug 2307804
5653 THEN
5654 FND_MESSAGE.Set_Name('CSI', 'CSI_API_EXP_NOT_ALLOWED');
5655 FND_MESSAGE.Set_Token('COLUMN', 'OWNER ACCOUNT');
5656 FND_MSG_PUB.ADD;
5657 RAISE FND_API.G_EXC_ERROR;
5658 END IF;
5659 ELSE
5660
5661 -- Verify if the active_end_date is valid
5662 IF p_party_account_rec.expire_flag = fnd_api.g_false THEN -- Added by sguthiva for bug 2307804
5663 -- IF (g_expire_account_flag <> 'Y') THEN -- Commented by sguthiva for bug 2307804
5664 IF NOT(CSI_Instance_parties_vld_pvt.Is_Acct_EndDate_Valid
5665 (l_curr_party_acct_rec.ACTIVE_START_DATE,
5666 p_party_account_rec.ACTIVE_END_DATE ,
5667 p_party_account_rec.INSTANCE_PARTY_ID ,
5668 p_party_account_rec.IP_ACCOUNT_ID ,
5669 p_txn_rec.TRANSACTION_ID)) THEN
5670 RAISE FND_API.G_EXC_ERROR;
5671 END IF;
5672
5673
5674 -- Added following code for bug 3855525.
5675 IF p_party_account_rec.ACTIVE_END_DATE IS NOT NULL AND
5676 p_party_account_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE AND l_curr_party_acct_rec.ACTIVE_START_DATE IS NOT NULL AND
5677 l_curr_party_acct_rec.ACTIVE_START_DATE <> FND_API.G_MISS_DATE AND
5678 p_party_account_rec.ACTIVE_END_DATE < l_curr_party_acct_rec.ACTIVE_START_DATE
5679 THEN
5680 FND_MESSAGE.Set_Name('CSI', 'CSI_ENDDT_GT_STDT');
5681
5682 FND_MESSAGE.Set_Token('END_DATE',p_party_account_rec.ACTIVE_END_DATE);
5683 FND_MESSAGE.Set_Token('START_DATE',l_curr_party_acct_rec.ACTIVE_START_DATE);
5684 FND_MSG_PUB.ADD;
5685 RAISE FND_API.G_EXC_ERROR;
5686 END IF;
5687 -- End code addition for bug 3855525.
5688
5689 END IF;
5690 END IF;
5691 END IF;
5692
5693
5694 -- Verify the relationship_type_code is valid
5695 -- Don't allow change of owner accounts
5696 IF p_party_account_rec.relationship_type_code <> FND_API.G_MISS_CHAR THEN
5697 IF ((p_party_account_rec.relationship_type_code <> l_curr_party_acct_rec.relationship_type_code)
5698 AND (l_curr_party_acct_rec.relationship_type_code = 'OWNER')
5699 AND (l_party_relation = 'OWNER')) THEN
5700 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
5701 FND_MESSAGE.Set_Token('COLUMN', 'OWNER ACCOUNT');
5702 FND_MSG_PUB.ADD;
5703 RAISE FND_API.G_EXC_ERROR;
5704 ELSE
5705 -- Verify the relationship_type_code is valid
5706 IF NOT(CSI_Instance_parties_vld_pvt.Is_Acct_Rel_type_Valid
5707 (p_party_account_rec.RELATIONSHIP_TYPE_CODE)) THEN
5708 RAISE FND_API.G_EXC_ERROR;
5709 END IF;
5710 END IF;
5711 END IF;
5712
5713 -- Need to add the following as account/party merge transaction
5714 -- is allowed to change the instance_party_id.
5715 IF p_txn_rec.transaction_type_id=7 AND
5716 (p_party_account_rec.instance_party_id IS NOT NULL AND
5717 p_party_account_rec.instance_party_id <> fnd_api.g_miss_num)
5718 THEN
5719 l_instance_party_id := p_party_account_rec.instance_party_id;
5720 ELSE
5721 l_instance_party_id := l_curr_party_acct_rec.INSTANCE_PARTY_ID;
5722 END IF;
5723
5724 -- verify if party_account_id is valid
5725 IF p_party_account_rec.PARTY_ACCOUNT_ID <> FND_API.G_MISS_NUM THEN
5726 -- Added the following condition for bug 3830149 (rel 11.5.9)
5727 IF (p_party_account_rec.ACTIVE_END_DATE IS NULL OR
5728 p_party_account_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE)
5729 OR
5730 (p_party_account_rec.ACTIVE_END_DATE IS NOT NULL AND
5731 p_party_account_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE AND
5732 p_party_account_rec.ACTIVE_END_DATE > SYSDATE)
5733 THEN
5734 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_accountID_Valid
5735 (p_party_account_rec.PARTY_ACCOUNT_ID,
5736 l_instance_party_id, --l_curr_party_acct_rec.INSTANCE_PARTY_ID,
5737 p_party_account_rec.RELATIONSHIP_TYPE_CODE,
5738 p_txn_rec.transaction_type_id, -- Added for bug 3550541
5739 'U' -- Added for bug 3550541
5740 )
5741 )
5742 THEN
5743 RAISE FND_API.G_EXC_ERROR;
5744 END IF;
5745 ELSE
5746 -- Since party_account_id validation is not required during expiration of accounts
5747 -- ,Hence we added the above filter condition.
5748 -- Refer bug 3830149 for more explaination.
5749 NULL;
5750 END IF;
5751 END IF;
5752
5753 -- Verify if bill to address is correct
5754 IF p_party_account_rec.bill_to_address <> FND_API.G_MISS_NUM THEN
5755 IF NOT(CSI_Instance_parties_vld_pvt.Is_bill_to_add_valid
5756 ( p_party_account_rec.bill_to_address)) THEN
5757 RAISE FND_API.G_EXC_ERROR;
5758 END IF;
5759 END IF;
5760
5761
5762 -- Verify if ship to address is correct
5763 IF p_party_account_rec.ship_to_address <> FND_API.G_MISS_NUM THEN
5764 IF NOT(CSI_Instance_parties_vld_pvt.Is_ship_to_add_valid
5765 ( p_party_account_rec.ship_to_address)) THEN
5766 RAISE FND_API.G_EXC_ERROR;
5767 END IF;
5768 END IF;
5769
5770 -- Validate alternate primary key
5771 -- Verify if the party account combination exists
5772 IF ((p_party_account_rec.instance_party_id IS NULL) OR
5773 (p_party_account_rec.instance_party_id = FND_API.G_MISS_NUM)) THEN
5774 l_alt_pk_inst_pty_id := l_curr_party_acct_rec.instance_party_id;
5775 ELSE
5776 l_alt_pk_inst_pty_id := p_party_account_rec.instance_party_id;
5777 END IF;
5778
5779 IF ((p_party_account_rec.party_account_id IS NULL) OR
5780 (p_party_account_rec.party_account_id = FND_API.G_MISS_NUM)) THEN
5781 l_alt_pk_pty_acct_id := l_curr_party_acct_rec.party_account_id;
5782 ELSE
5783 l_alt_pk_pty_acct_id := p_party_account_rec.party_account_id;
5784 END IF;
5785
5786 IF ((p_party_account_rec.relationship_type_code IS NULL) OR
5787 (p_party_account_rec.relationship_type_code = FND_API.G_MISS_CHAR)) THEN
5788 l_alt_pk_rel_type_code := l_curr_party_acct_rec.relationship_type_code;
5789 ELSE
5790 l_alt_pk_rel_type_code := p_party_account_rec.relationship_type_code;
5791 END IF;
5792
5793 IF ((l_alt_pk_inst_pty_id <> l_curr_party_acct_rec.instance_party_id)
5794 OR
5795 (l_alt_pk_pty_acct_id <> l_curr_party_acct_rec.party_account_id)
5796 OR
5797 (l_alt_pk_rel_type_code <> l_curr_party_acct_rec.relationship_type_code))
5798 THEN
5799 -- Verify if the party account combination exists
5800 IF p_txn_rec.transaction_type_id=7
5801 THEN
5802 l_found_for_update:='T';
5803 BEGIN
5804 SELECT 'x'
5805 INTO l_dummy
5806 FROM csi_ip_accounts
5807 WHERE instance_party_id = l_alt_pk_inst_pty_id
5808 AND party_account_id = l_alt_pk_pty_acct_id
5809 AND relationship_type_code = l_alt_pk_rel_type_code
5810 AND ((active_end_date IS NULL) OR (active_end_date >= sysdate))
5811 AND ROWNUM=1;
5812
5813 -- If found then there exists a record in csi_i_parties, Hence
5814 -- I need to expire(if active) this record.
5815 BEGIN
5816 SELECT active_end_date
5817 INTO l_temp_acct_date
5818 FROM csi_ip_accounts
5819 WHERE ip_account_id=p_party_account_rec.ip_account_id
5820 AND ((active_end_date IS NULL) OR (active_end_date > sysdate));
5821 -- Active record found so make it inactive.
5822 l_temp_acct_date:=sysdate;
5823 EXCEPTION
5824 WHEN NO_DATA_FOUND THEN
5825 -- Means the record is already in inactive state.
5826 l_temp_acct_date := p_party_account_rec.active_end_date;
5827 END;
5828
5829 EXCEPTION
5830 WHEN OTHERS THEN
5831 -- No changes are needed.
5832 l_temp_acct_date := p_party_account_rec.active_end_date;
5833 END;
5834
5835 ELSE
5836 IF CSI_Instance_parties_vld_pvt.Is_Pty_Acct_Comb_Exists
5837 (l_alt_pk_inst_pty_id ,
5838 l_alt_pk_pty_acct_id ,
5839 l_alt_pk_rel_type_code ) THEN
5840 RAISE FND_API.G_EXC_ERROR;
5841 END IF;
5842 END IF;
5843 END IF;
5844
5845 -- Verify if it meets Account Rules
5846 IF ((l_alt_pk_inst_pty_id <> l_curr_party_acct_rec.instance_party_id)
5847 OR
5848 (l_alt_pk_rel_type_code <> l_curr_party_acct_rec.relationship_type_code))
5849 THEN
5850 IF CSI_Instance_parties_vld_pvt.Acct_Rules_Check
5851 (l_alt_pk_inst_pty_id ,
5852 l_alt_pk_rel_type_code ) THEN
5853 RAISE FND_API.G_EXC_ERROR;
5854 END IF;
5855 END IF;
5856
5857 -- Get party record for later use in contaracts
5858 IF NOT(CSI_Instance_parties_vld_pvt.Get_Party_Record
5859 (l_curr_party_acct_rec.instance_party_id,
5860 l_party_rec)) THEN
5861 RAISE FND_API.G_EXC_ERROR;
5862 END IF;
5863
5864 -- If it is an owner party and owner account then update csi_item_instances
5865 IF p_party_account_rec.relationship_type_code <> FND_API.G_MISS_CHAR THEN
5866 IF ((p_party_account_rec.relationship_type_code = 'OWNER')
5867 AND (l_party_relation = 'OWNER')) THEN
5868 -- Added by sguthiva for bug 2307804
5869 IF p_party_account_rec.party_account_id <> fnd_api.g_miss_num
5870 AND p_party_account_rec.party_account_id IS NOT NULL
5871 THEN
5872 update csi_item_instances
5873 set owner_party_account_id = p_party_account_rec.party_account_id
5874 where instance_id = l_party_rec.instance_id;
5875 END IF;
5876 END IF;
5877 -- End addition by sguthiva for bug 2307804
5878 END IF;
5879
5880 IF p_txn_rec.transaction_type_id=7 AND
5881 l_found_for_update='T'
5882 THEN
5883 l_acct_end_date:=l_temp_acct_date;
5884 ELSE
5885 l_acct_end_date:=p_party_account_rec.active_end_date;
5886 END IF;
5887
5888 -- Increment the object_version_number before updating
5889 l_OBJECT_VERSION_NUMBER := l_curr_party_acct_rec.OBJECT_VERSION_NUMBER + 1 ;
5890
5891 -- Calling table table handler to update
5892 CSI_IP_ACCOUNTS_PKG.Update_Row
5893 (
5894 p_IP_ACCOUNT_ID => p_party_account_rec.ip_account_id,
5895 p_INSTANCE_PARTY_ID => p_party_account_rec.INSTANCE_PARTY_ID,
5896 p_PARTY_ACCOUNT_ID => p_party_account_rec.PARTY_ACCOUNT_ID,
5897 p_RELATIONSHIP_TYPE_CODE => p_party_account_rec.RELATIONSHIP_TYPE_CODE,
5898 p_ACTIVE_START_DATE => p_party_account_rec.ACTIVE_START_DATE,
5899 p_ACTIVE_END_DATE => l_acct_end_date, --p_party_account_rec.ACTIVE_END_DATE,
5900 p_CONTEXT => p_party_account_rec.CONTEXT,
5901 p_ATTRIBUTE1 => p_party_account_rec.ATTRIBUTE1,
5902 p_ATTRIBUTE2 => p_party_account_rec.ATTRIBUTE2,
5903 p_ATTRIBUTE3 => p_party_account_rec.ATTRIBUTE3,
5904 p_ATTRIBUTE4 => p_party_account_rec.ATTRIBUTE4,
5905 p_ATTRIBUTE5 => p_party_account_rec.ATTRIBUTE5,
5906 p_ATTRIBUTE6 => p_party_account_rec.ATTRIBUTE6,
5907 p_ATTRIBUTE7 => p_party_account_rec.ATTRIBUTE7,
5908 p_ATTRIBUTE8 => p_party_account_rec.ATTRIBUTE8,
5909 p_ATTRIBUTE9 => p_party_account_rec.ATTRIBUTE9,
5910 p_ATTRIBUTE10 => p_party_account_rec.ATTRIBUTE10,
5911 p_ATTRIBUTE11 => p_party_account_rec.ATTRIBUTE11,
5912 p_ATTRIBUTE12 => p_party_account_rec.ATTRIBUTE12,
5913 p_ATTRIBUTE13 => p_party_account_rec.ATTRIBUTE13,
5914 p_ATTRIBUTE14 => p_party_account_rec.ATTRIBUTE14,
5915 p_ATTRIBUTE15 => p_party_account_rec.ATTRIBUTE15,
5916 p_CREATED_BY => FND_API.G_MISS_NUM, -- FND_GLOBAL.USER_ID,
5917 p_CREATION_DATE => FND_API.G_MISS_DATE, -- SYSDATE,
5918 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
5919 p_LAST_UPDATE_DATE => SYSDATE ,
5920 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
5921 p_OBJECT_VERSION_NUMBER => l_OBJECT_VERSION_NUMBER ,
5922 p_BILL_TO_ADDRESS => p_party_account_rec.BILL_TO_ADDRESS,
5923 p_SHIP_TO_ADDRESS => p_party_account_rec.SHIP_TO_ADDRESS,
5924 p_REQUEST_ID => p_party_account_rec.REQUEST_ID,
5925 p_PROGRAM_APPLICATION_ID => p_party_account_rec.PROGRAM_APPLICATION_ID,
5926 p_PROGRAM_ID => p_party_account_rec.PROGRAM_ID,
5927 p_PROGRAM_UPDATE_DATE => p_party_account_rec.PROGRAM_UPDATE_DATE);
5928
5929 -- Call create_transaction to create txn log
5930 CSI_TRANSACTIONS_PVT.Create_transaction
5931 (
5932 p_api_version => p_api_version
5933 ,p_commit => p_commit
5934 ,p_init_msg_list => p_init_msg_list
5935 ,p_validation_level => p_validation_level
5936 ,p_Success_If_Exists_Flag => 'Y'
5937 ,P_transaction_rec => p_txn_rec
5938 ,x_return_status => x_return_status
5939 ,x_msg_count => x_msg_count
5940 ,x_msg_data => x_msg_data );
5941
5942 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
5943
5944 FOR i in 1..x_msg_Count LOOP
5945 FND_MSG_PUB.Get(p_msg_index => i,
5946 p_encoded => 'F',
5947 p_data => x_msg_data,
5948 p_msg_index_out => x_msg_index_out );
5949 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
5950 End LOOP;
5951 RAISE FND_API.G_EXC_ERROR;
5952 END IF;
5953
5954
5955
5956 -- Generate a unique instance_party_history_id from the sequence
5957 l_ip_account_history_id := CSI_Instance_parties_vld_pvt.gen_ip_account_hist_id;
5958
5959 -- Get the full_dump_frequency from csi_install_parameter
5960 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
5961 csi_gen_utility_pvt.populate_install_param_rec;
5962 END IF;
5963 --
5964 l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
5965 --
5966 IF l_full_dump_frequency IS NULL THEN
5967 FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
5968 FND_MSG_PUB.ADD;
5969 RAISE FND_API.G_EXC_ERROR;
5970 END IF;
5971 --
5972 select mod(l_object_version_number,l_full_dump_frequency)
5973 into l_mod_value
5974 from dual;
5975
5976 -- assign the party rec
5977 l_temp_party_account_rec := p_party_account_rec;
5978 l_temp_party_account_rec.active_end_date:=l_acct_end_date;
5979 -- Start of changes for Bug#2547034 on 09/20/02 - rtalluri
5980 BEGIN
5981 SELECT ip_account_history_id
5982 INTO l_ip_acct_hist_id
5983 FROM csi_ip_accounts_h h
5984 WHERE h.transaction_id = p_txn_rec.transaction_id
5985 AND h.ip_account_id = p_party_account_rec.ip_account_id;
5986
5987 OPEN pty_acct_csr(l_ip_acct_hist_id);
5988 FETCH pty_acct_csr INTO l_pty_acct_csr ;
5989 CLOSE pty_acct_csr;
5990 IF l_pty_acct_csr.full_dump_flag = 'Y'
5991 THEN
5992 CSI_IP_ACCOUNTS_H_PKG.Update_Row
5993 (
5994 p_IP_ACCOUNT_HISTORY_ID => l_ip_acct_hist_id ,
5995 p_IP_ACCOUNT_ID => fnd_api.g_miss_num ,
5996 p_TRANSACTION_ID => fnd_api.g_miss_num ,
5997 p_OLD_PARTY_ACCOUNT_ID => fnd_api.g_miss_num ,
5998 p_NEW_PARTY_ACCOUNT_ID => l_temp_party_account_rec.PARTY_ACCOUNT_ID,
5999 p_OLD_RELATIONSHIP_TYPE_CODE => fnd_api.g_miss_char ,
6000 p_NEW_RELATIONSHIP_TYPE_CODE => l_temp_party_account_rec.RELATIONSHIP_TYPE_CODE,
6001 p_OLD_ACTIVE_START_DATE => fnd_api.g_miss_date ,
6002 p_NEW_ACTIVE_START_DATE => l_temp_party_account_rec.ACTIVE_START_DATE,
6003 p_OLD_ACTIVE_END_DATE => fnd_api.g_miss_date ,
6004 p_NEW_ACTIVE_END_DATE => l_temp_party_account_rec.ACTIVE_END_DATE ,
6005 p_OLD_CONTEXT => fnd_api.g_miss_char ,
6006 p_NEW_CONTEXT => l_temp_party_account_rec.CONTEXT ,
6007 p_OLD_ATTRIBUTE1 => fnd_api.g_miss_char ,
6008 p_NEW_ATTRIBUTE1 => l_temp_party_account_rec.ATTRIBUTE1 ,
6009 p_OLD_ATTRIBUTE2 => fnd_api.g_miss_char ,
6010 p_NEW_ATTRIBUTE2 => l_temp_party_account_rec.ATTRIBUTE2 ,
6011 p_OLD_ATTRIBUTE3 => fnd_api.g_miss_char ,
6012 p_NEW_ATTRIBUTE3 => l_temp_party_account_rec.ATTRIBUTE3 ,
6013 p_OLD_ATTRIBUTE4 => fnd_api.g_miss_char ,
6014 p_NEW_ATTRIBUTE4 => l_temp_party_account_rec.ATTRIBUTE4 ,
6015 p_OLD_ATTRIBUTE5 => fnd_api.g_miss_char ,
6016 p_NEW_ATTRIBUTE5 => l_temp_party_account_rec.ATTRIBUTE5 ,
6017 p_OLD_ATTRIBUTE6 => fnd_api.g_miss_char ,
6018 p_NEW_ATTRIBUTE6 => l_temp_party_account_rec.ATTRIBUTE6 ,
6019 p_OLD_ATTRIBUTE7 => fnd_api.g_miss_char ,
6020 p_NEW_ATTRIBUTE7 => l_temp_party_account_rec.ATTRIBUTE7 ,
6021 p_OLD_ATTRIBUTE8 => fnd_api.g_miss_char ,
6022 p_NEW_ATTRIBUTE8 => l_temp_party_account_rec.ATTRIBUTE8 ,
6023 p_OLD_ATTRIBUTE9 => fnd_api.g_miss_char ,
6024 p_NEW_ATTRIBUTE9 => l_temp_party_account_rec.ATTRIBUTE9 ,
6025 p_OLD_ATTRIBUTE10 => fnd_api.g_miss_char ,
6026 p_NEW_ATTRIBUTE10 => l_temp_party_account_rec.ATTRIBUTE10 ,
6027 p_OLD_ATTRIBUTE11 => fnd_api.g_miss_char ,
6028 p_NEW_ATTRIBUTE11 => l_temp_party_account_rec.ATTRIBUTE11 ,
6029 p_OLD_ATTRIBUTE12 => fnd_api.g_miss_char ,
6030 p_NEW_ATTRIBUTE12 => l_temp_party_account_rec.ATTRIBUTE12 ,
6031 p_OLD_ATTRIBUTE13 => fnd_api.g_miss_char ,
6032 p_NEW_ATTRIBUTE13 => l_temp_party_account_rec.ATTRIBUTE13 ,
6033 p_OLD_ATTRIBUTE14 => fnd_api.g_miss_char ,
6034 p_NEW_ATTRIBUTE14 => l_temp_party_account_rec.ATTRIBUTE14 ,
6035 p_OLD_ATTRIBUTE15 => fnd_api.g_miss_char ,
6036 p_NEW_ATTRIBUTE15 => l_temp_party_account_rec.ATTRIBUTE15 ,
6037 p_FULL_DUMP_FLAG => fnd_api.g_miss_char ,
6038 p_CREATED_BY => FND_API.G_MISS_NUM ,
6039 p_CREATION_DATE => FND_API.G_MISS_DATE ,
6040 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
6041 p_LAST_UPDATE_DATE => SYSDATE ,
6042 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
6043 p_OBJECT_VERSION_NUMBER => fnd_api.g_miss_num ,
6044 p_OLD_BILL_TO_ADDRESS => fnd_api.g_miss_num ,
6045 p_NEW_BILL_TO_ADDRESS => l_temp_party_account_rec.BILL_TO_ADDRESS ,
6046 p_OLD_SHIP_TO_ADDRESS => fnd_api.g_miss_num ,
6047 p_NEW_SHIP_TO_ADDRESS => l_temp_party_account_rec.SHIP_TO_ADDRESS ,
6048 p_OLD_INSTANCE_PARTY_ID => fnd_api.g_miss_num ,
6049 p_NEW_INSTANCE_PARTY_ID => l_temp_party_account_rec.INSTANCE_PARTY_ID);
6050
6051
6052 ELSE
6053
6054 IF ( l_pty_acct_csr.old_party_account_id IS NULL
6055 AND l_pty_acct_csr.new_party_account_id IS NULL ) THEN
6056 IF ( l_temp_party_account_rec.party_account_id = l_curr_party_acct_rec.party_account_id )
6057 OR ( l_temp_party_account_rec.party_account_id = fnd_api.g_miss_num ) THEN
6058 l_pty_acct_csr.old_party_account_id := NULL;
6059 l_pty_acct_csr.new_party_account_id := NULL;
6060 ELSE
6061 l_pty_acct_csr.old_party_account_id := fnd_api.g_miss_num;
6062 l_pty_acct_csr.new_party_account_id := l_temp_party_account_rec.party_account_id;
6063 END IF;
6064 ELSE
6065 l_pty_acct_csr.old_party_account_id := fnd_api.g_miss_num;
6066 l_pty_acct_csr.new_party_account_id := l_temp_party_account_rec.party_account_id;
6067 END IF;
6068 --
6069 IF ( l_pty_acct_csr.old_relationship_type_code IS NULL
6070 AND l_pty_acct_csr.new_relationship_type_code IS NULL ) THEN
6071 IF ( l_temp_party_account_rec.relationship_type_code = l_curr_party_acct_rec.relationship_type_code )
6072 OR ( l_temp_party_account_rec.relationship_type_code = fnd_api.g_miss_char ) THEN
6073 l_pty_acct_csr.old_relationship_type_code := NULL;
6074 l_pty_acct_csr.new_relationship_type_code := NULL;
6075 ELSE
6076 l_pty_acct_csr.old_relationship_type_code := fnd_api.g_miss_char;
6077 l_pty_acct_csr.new_relationship_type_code := l_temp_party_account_rec.relationship_type_code;
6078 END IF;
6079 ELSE
6080 l_pty_acct_csr.old_relationship_type_code := fnd_api.g_miss_char;
6081 l_pty_acct_csr.new_relationship_type_code := l_temp_party_account_rec.relationship_type_code;
6082 END IF;
6083 --
6084 IF ( l_pty_acct_csr.old_bill_to_address IS NULL
6085 AND l_pty_acct_csr.new_bill_to_address IS NULL ) THEN
6086 IF ( l_temp_party_account_rec.bill_to_address = l_curr_party_acct_rec.bill_to_address )
6087 OR ( l_temp_party_account_rec.bill_to_address = fnd_api.g_miss_num ) THEN
6088 l_pty_acct_csr.old_bill_to_address := NULL;
6089 l_pty_acct_csr.new_bill_to_address := NULL;
6090 ELSE
6091 l_pty_acct_csr.old_bill_to_address := fnd_api.g_miss_num;
6092 l_pty_acct_csr.new_bill_to_address := l_temp_party_account_rec.bill_to_address;
6093 END IF;
6094 ELSE
6095 l_pty_acct_csr.old_bill_to_address := fnd_api.g_miss_num;
6096 l_pty_acct_csr.new_bill_to_address := l_temp_party_account_rec.bill_to_address;
6097 END IF;
6098 --
6099 IF ( l_pty_acct_csr.old_ship_to_address IS NULL
6100 AND l_pty_acct_csr.new_ship_to_address IS NULL ) THEN
6101 IF ( l_temp_party_account_rec.ship_to_address = l_curr_party_acct_rec.ship_to_address )
6102 OR ( l_temp_party_account_rec.ship_to_address = fnd_api.g_miss_num ) THEN
6103 l_pty_acct_csr.old_ship_to_address := NULL;
6104 l_pty_acct_csr.new_ship_to_address := NULL;
6105 ELSE
6106 l_pty_acct_csr.old_ship_to_address := fnd_api.g_miss_num;
6107 l_pty_acct_csr.new_ship_to_address := l_temp_party_account_rec.ship_to_address;
6108 END IF;
6109 ELSE
6110 l_pty_acct_csr.old_ship_to_address := fnd_api.g_miss_num;
6111 l_pty_acct_csr.new_ship_to_address := l_temp_party_account_rec.ship_to_address;
6112 END IF;
6113 --
6114 IF ( l_pty_acct_csr.old_active_start_date IS NULL
6115 AND l_pty_acct_csr.new_active_start_date IS NULL ) THEN
6116 IF ( l_temp_party_account_rec.active_start_date = l_curr_party_acct_rec.active_start_date )
6117 OR ( l_temp_party_account_rec.active_start_date = fnd_api.g_miss_date ) THEN
6118 l_pty_acct_csr.old_active_start_date := NULL;
6119 l_pty_acct_csr.new_active_start_date := NULL;
6120 ELSE
6121 l_pty_acct_csr.old_active_start_date := fnd_api.g_miss_date;
6122 l_pty_acct_csr.new_active_start_date := l_temp_party_account_rec.active_start_date;
6123 END IF;
6124 ELSE
6125 l_pty_acct_csr.old_active_start_date := fnd_api.g_miss_date;
6126 l_pty_acct_csr.new_active_start_date := l_temp_party_account_rec.active_start_date;
6127 END IF;
6128 --
6129 IF ( l_pty_acct_csr.old_active_end_date IS NULL
6130 AND l_pty_acct_csr.new_active_end_date IS NULL ) THEN
6131 IF ( l_temp_party_account_rec.active_end_date = l_curr_party_acct_rec.active_end_date )
6132 OR ( l_temp_party_account_rec.active_end_date = fnd_api.g_miss_date ) THEN
6133 l_pty_acct_csr.old_active_end_date := NULL;
6134 l_pty_acct_csr.new_active_end_date := NULL;
6135 ELSE
6136 l_pty_acct_csr.old_active_end_date := fnd_api.g_miss_date;
6137 l_pty_acct_csr.new_active_end_date := l_temp_party_account_rec.active_end_date;
6138 END IF;
6139 ELSE
6140 l_pty_acct_csr.old_active_end_date := fnd_api.g_miss_date;
6141 l_pty_acct_csr.new_active_end_date := l_temp_party_account_rec.active_end_date;
6142 END IF;
6143 --
6144 IF ( l_pty_acct_csr.old_context IS NULL
6145 AND l_pty_acct_csr.new_context IS NULL ) THEN
6146 IF ( l_temp_party_account_rec.context = l_curr_party_acct_rec.context )
6147 OR ( l_temp_party_account_rec.context = fnd_api.g_miss_char ) THEN
6148 l_pty_acct_csr.old_context := NULL;
6149 l_pty_acct_csr.new_context := NULL;
6150 ELSE
6151 l_pty_acct_csr.old_context := fnd_api.g_miss_char;
6152 l_pty_acct_csr.new_context := l_temp_party_account_rec.context;
6153 END IF;
6154 ELSE
6155 l_pty_acct_csr.old_context := fnd_api.g_miss_char;
6156 l_pty_acct_csr.new_context := l_temp_party_account_rec.context;
6157 END IF;
6158 --
6159 IF ( l_pty_acct_csr.old_attribute1 IS NULL
6160 AND l_pty_acct_csr.new_attribute1 IS NULL ) THEN
6161 IF ( l_temp_party_account_rec.attribute1 = l_curr_party_acct_rec.attribute1 )
6162 OR ( l_temp_party_account_rec.attribute1 = fnd_api.g_miss_char ) THEN
6163 l_pty_acct_csr.old_attribute1 := NULL;
6164 l_pty_acct_csr.new_attribute1 := NULL;
6165 ELSE
6166 l_pty_acct_csr.old_attribute1 := fnd_api.g_miss_char;
6167 l_pty_acct_csr.new_attribute1 := l_temp_party_account_rec.attribute1;
6168 END IF;
6169 ELSE
6170 l_pty_acct_csr.old_attribute1 := fnd_api.g_miss_char;
6171 l_pty_acct_csr.new_attribute1 := l_temp_party_account_rec.attribute1;
6172 END IF;
6173 --
6174 IF ( l_pty_acct_csr.old_attribute2 IS NULL
6175 AND l_pty_acct_csr.new_attribute2 IS NULL ) THEN
6176 IF ( l_temp_party_account_rec.attribute2 = l_curr_party_acct_rec.attribute2 )
6177 OR ( l_temp_party_account_rec.attribute2 = fnd_api.g_miss_char ) THEN
6178 l_pty_acct_csr.old_attribute2 := NULL;
6179 l_pty_acct_csr.new_attribute2 := NULL;
6180 ELSE
6181 l_pty_acct_csr.old_attribute2 := fnd_api.g_miss_char;
6182 l_pty_acct_csr.new_attribute2 := l_temp_party_account_rec.attribute2;
6183 END IF;
6184 ELSE
6185 l_pty_acct_csr.old_attribute2 := fnd_api.g_miss_char;
6186 l_pty_acct_csr.new_attribute2 := l_temp_party_account_rec.attribute2;
6187 END IF;
6188 --
6189 IF ( l_pty_acct_csr.old_attribute3 IS NULL
6190 AND l_pty_acct_csr.new_attribute3 IS NULL ) THEN
6191 IF ( l_temp_party_account_rec.attribute3 = l_curr_party_acct_rec.attribute3 )
6192 OR ( l_temp_party_account_rec.attribute3 = fnd_api.g_miss_char ) THEN
6193 l_pty_acct_csr.old_attribute3 := NULL;
6194 l_pty_acct_csr.new_attribute3 := NULL;
6195 ELSE
6196 l_pty_acct_csr.old_attribute3 := fnd_api.g_miss_char;
6197 l_pty_acct_csr.new_attribute3 := l_temp_party_account_rec.attribute3;
6198 END IF;
6199 ELSE
6200 l_pty_acct_csr.old_attribute3 := fnd_api.g_miss_char;
6201 l_pty_acct_csr.new_attribute3 := l_temp_party_account_rec.attribute3;
6202 END IF;
6203 --
6204 IF ( l_pty_acct_csr.old_attribute4 IS NULL
6205 AND l_pty_acct_csr.new_attribute4 IS NULL ) THEN
6206 IF ( l_temp_party_account_rec.attribute4 = l_curr_party_acct_rec.attribute4 )
6207 OR ( l_temp_party_account_rec.attribute4 = fnd_api.g_miss_char ) THEN
6208 l_pty_acct_csr.old_attribute4 := NULL;
6209 l_pty_acct_csr.new_attribute4 := NULL;
6210 ELSE
6211 l_pty_acct_csr.old_attribute4 := fnd_api.g_miss_char;
6212 l_pty_acct_csr.new_attribute4 := l_temp_party_account_rec.attribute4;
6213 END IF;
6214 ELSE
6215 l_pty_acct_csr.old_attribute4 := fnd_api.g_miss_char;
6216 l_pty_acct_csr.new_attribute4 := l_temp_party_account_rec.attribute4;
6217 END IF;
6218 --
6219 IF ( l_pty_acct_csr.old_attribute5 IS NULL
6220 AND l_pty_acct_csr.new_attribute5 IS NULL ) THEN
6221 IF ( l_temp_party_account_rec.attribute5 = l_curr_party_acct_rec.attribute5 )
6222 OR ( l_temp_party_account_rec.attribute5 = fnd_api.g_miss_char ) THEN
6223 l_pty_acct_csr.old_attribute5 := NULL;
6224 l_pty_acct_csr.new_attribute5 := NULL;
6225 ELSE
6226 l_pty_acct_csr.old_attribute5 := fnd_api.g_miss_char;
6227 l_pty_acct_csr.new_attribute5 := l_temp_party_account_rec.attribute5;
6228 END IF;
6229 ELSE
6230 l_pty_acct_csr.old_attribute5 := fnd_api.g_miss_char;
6231 l_pty_acct_csr.new_attribute5 := l_temp_party_account_rec.attribute5;
6232 END IF;
6233 --
6234 IF ( l_pty_acct_csr.old_attribute6 IS NULL
6235 AND l_pty_acct_csr.new_attribute6 IS NULL ) THEN
6236 IF ( l_temp_party_account_rec.attribute6 = l_curr_party_acct_rec.attribute6 )
6237 OR ( l_temp_party_account_rec.attribute6 = fnd_api.g_miss_char ) THEN
6238 l_pty_acct_csr.old_attribute6 := NULL;
6239 l_pty_acct_csr.new_attribute6 := NULL;
6240 ELSE
6241 l_pty_acct_csr.old_attribute6 := fnd_api.g_miss_char;
6242 l_pty_acct_csr.new_attribute6 := l_temp_party_account_rec.attribute6;
6243 END IF;
6244 ELSE
6245 l_pty_acct_csr.old_attribute6 := fnd_api.g_miss_char;
6246 l_pty_acct_csr.new_attribute6 := l_temp_party_account_rec.attribute6;
6247 END IF;
6248 --
6249 IF ( l_pty_acct_csr.old_attribute7 IS NULL
6250 AND l_pty_acct_csr.new_attribute7 IS NULL ) THEN
6251 IF ( l_temp_party_account_rec.attribute7 = l_curr_party_acct_rec.attribute7 )
6252 OR ( l_temp_party_account_rec.attribute7 = fnd_api.g_miss_char ) THEN
6253 l_pty_acct_csr.old_attribute7 := NULL;
6254 l_pty_acct_csr.new_attribute7 := NULL;
6255 ELSE
6256 l_pty_acct_csr.old_attribute7 := fnd_api.g_miss_char;
6257 l_pty_acct_csr.new_attribute7 := l_temp_party_account_rec.attribute7;
6258 END IF;
6259 ELSE
6260 l_pty_acct_csr.old_attribute7 := fnd_api.g_miss_char;
6261 l_pty_acct_csr.new_attribute7 := l_temp_party_account_rec.attribute7;
6262 END IF;
6263 --
6264 IF ( l_pty_acct_csr.old_attribute8 IS NULL
6265 AND l_pty_acct_csr.new_attribute8 IS NULL ) THEN
6266 IF ( l_temp_party_account_rec.attribute8 = l_curr_party_acct_rec.attribute8 )
6267 OR ( l_temp_party_account_rec.attribute8 = fnd_api.g_miss_char ) THEN
6268 l_pty_acct_csr.old_attribute8 := NULL;
6269 l_pty_acct_csr.new_attribute8 := NULL;
6270 ELSE
6271 l_pty_acct_csr.old_attribute8 := fnd_api.g_miss_char;
6272 l_pty_acct_csr.new_attribute8 := l_temp_party_account_rec.attribute8;
6273 END IF;
6274 ELSE
6275 l_pty_acct_csr.old_attribute8 := fnd_api.g_miss_char;
6276 l_pty_acct_csr.new_attribute8 := l_temp_party_account_rec.attribute8;
6277 END IF;
6278 --
6279 IF ( l_pty_acct_csr.old_attribute9 IS NULL
6280 AND l_pty_acct_csr.new_attribute9 IS NULL ) THEN
6281 IF ( l_temp_party_account_rec.attribute9 = l_curr_party_acct_rec.attribute9 )
6282 OR ( l_temp_party_account_rec.attribute9 = fnd_api.g_miss_char ) THEN
6283 l_pty_acct_csr.old_attribute9 := NULL;
6284 l_pty_acct_csr.new_attribute9 := NULL;
6285 ELSE
6286 l_pty_acct_csr.old_attribute9 := fnd_api.g_miss_char;
6287 l_pty_acct_csr.new_attribute9 := l_temp_party_account_rec.attribute9;
6288 END IF;
6289 ELSE
6290 l_pty_acct_csr.old_attribute9 := fnd_api.g_miss_char;
6291 l_pty_acct_csr.new_attribute9 := l_temp_party_account_rec.attribute9;
6292 END IF;
6293 --
6294 IF ( l_pty_acct_csr.old_attribute10 IS NULL
6295 AND l_pty_acct_csr.new_attribute10 IS NULL ) THEN
6296 IF ( l_temp_party_account_rec.attribute10 = l_curr_party_acct_rec.attribute10 )
6297 OR ( l_temp_party_account_rec.attribute10 = fnd_api.g_miss_char ) THEN
6298 l_pty_acct_csr.old_attribute10 := NULL;
6299 l_pty_acct_csr.new_attribute10 := NULL;
6300 ELSE
6301 l_pty_acct_csr.old_attribute10 := fnd_api.g_miss_char;
6302 l_pty_acct_csr.new_attribute10 := l_temp_party_account_rec.attribute10;
6303 END IF;
6304 ELSE
6305 l_pty_acct_csr.old_attribute10 := fnd_api.g_miss_char;
6306 l_pty_acct_csr.new_attribute10 := l_temp_party_account_rec.attribute10;
6307 END IF;
6308 --
6309 IF ( l_pty_acct_csr.old_attribute11 IS NULL
6310 AND l_pty_acct_csr.new_attribute11 IS NULL ) THEN
6311 IF ( l_temp_party_account_rec.attribute11 = l_curr_party_acct_rec.attribute11 )
6312 OR ( l_temp_party_account_rec.attribute11 = fnd_api.g_miss_char ) THEN
6313 l_pty_acct_csr.old_attribute11 := NULL;
6314 l_pty_acct_csr.new_attribute11 := NULL;
6315 ELSE
6316 l_pty_acct_csr.old_attribute11 := fnd_api.g_miss_char;
6317 l_pty_acct_csr.new_attribute11 := l_temp_party_account_rec.attribute11;
6318 END IF;
6319 ELSE
6320 l_pty_acct_csr.old_attribute11 := fnd_api.g_miss_char;
6321 l_pty_acct_csr.new_attribute11 := l_temp_party_account_rec.attribute11;
6322 END IF;
6323 --
6324 IF ( l_pty_acct_csr.old_attribute12 IS NULL
6325 AND l_pty_acct_csr.new_attribute12 IS NULL ) THEN
6326 IF ( l_temp_party_account_rec.attribute12 = l_curr_party_acct_rec.attribute12 )
6327 OR ( l_temp_party_account_rec.attribute12 = fnd_api.g_miss_char ) THEN
6328 l_pty_acct_csr.old_attribute12 := NULL;
6329 l_pty_acct_csr.new_attribute12 := NULL;
6330 ELSE
6331 l_pty_acct_csr.old_attribute12 := fnd_api.g_miss_char;
6332 l_pty_acct_csr.new_attribute12 := l_temp_party_account_rec.attribute12;
6333 END IF;
6334 ELSE
6335 l_pty_acct_csr.old_attribute12 := fnd_api.g_miss_char;
6336 l_pty_acct_csr.new_attribute12 := l_temp_party_account_rec.attribute12;
6337 END IF;
6338 --
6339 IF ( l_pty_acct_csr.old_attribute13 IS NULL
6340 AND l_pty_acct_csr.new_attribute13 IS NULL ) THEN
6341 IF ( l_temp_party_account_rec.attribute13 = l_curr_party_acct_rec.attribute13 )
6342 OR ( l_temp_party_account_rec.attribute13 = fnd_api.g_miss_char ) THEN
6343 l_pty_acct_csr.old_attribute13 := NULL;
6344 l_pty_acct_csr.new_attribute13 := NULL;
6345 ELSE
6346 l_pty_acct_csr.old_attribute13 := fnd_api.g_miss_char;
6347 l_pty_acct_csr.new_attribute13 := l_temp_party_account_rec.attribute13;
6348 END IF;
6349 ELSE
6350 l_pty_acct_csr.old_attribute13 := fnd_api.g_miss_char;
6351 l_pty_acct_csr.new_attribute13 := l_temp_party_account_rec.attribute13;
6352 END IF;
6353 --
6354 IF ( l_pty_acct_csr.old_attribute14 IS NULL
6355 AND l_pty_acct_csr.new_attribute14 IS NULL ) THEN
6356 IF ( l_temp_party_account_rec.attribute14 = l_curr_party_acct_rec.attribute14 )
6357 OR ( l_temp_party_account_rec.attribute14 = fnd_api.g_miss_char ) THEN
6358 l_pty_acct_csr.old_attribute14 := NULL;
6359 l_pty_acct_csr.new_attribute14 := NULL;
6360 ELSE
6361 l_pty_acct_csr.old_attribute14 := fnd_api.g_miss_char;
6362 l_pty_acct_csr.new_attribute14 := l_temp_party_account_rec.attribute14;
6363 END IF;
6364 ELSE
6365 l_pty_acct_csr.old_attribute14 := fnd_api.g_miss_char;
6366 l_pty_acct_csr.new_attribute14 := l_temp_party_account_rec.attribute14;
6367 END IF;
6368 --
6369 IF ( l_pty_acct_csr.old_attribute15 IS NULL
6370 AND l_pty_acct_csr.new_attribute15 IS NULL ) THEN
6371 IF ( l_temp_party_account_rec.attribute15 = l_curr_party_acct_rec.attribute15 )
6372 OR ( l_temp_party_account_rec.attribute15 = fnd_api.g_miss_char ) THEN
6373 l_pty_acct_csr.old_attribute15 := NULL;
6374 l_pty_acct_csr.new_attribute15 := NULL;
6375 ELSE
6376 l_pty_acct_csr.old_attribute15 := fnd_api.g_miss_char;
6377 l_pty_acct_csr.new_attribute15 := l_temp_party_account_rec.attribute15;
6378 END IF;
6379 ELSE
6380 l_pty_acct_csr.old_attribute15 := fnd_api.g_miss_char;
6381 l_pty_acct_csr.new_attribute15 := l_temp_party_account_rec.attribute15;
6382 END IF;
6383 --
6384 IF ( l_pty_acct_csr.old_instance_party_id IS NULL
6385 AND l_pty_acct_csr.new_instance_party_id IS NULL ) THEN
6386 IF ( l_temp_party_account_rec.instance_party_id = l_curr_party_acct_rec.instance_party_id )
6387 OR ( l_temp_party_account_rec.instance_party_id = fnd_api.g_miss_num ) THEN
6388 l_pty_acct_csr.old_instance_party_id := NULL;
6389 l_pty_acct_csr.new_instance_party_id := NULL;
6390 ELSE
6391 l_pty_acct_csr.old_instance_party_id := fnd_api.g_miss_num;
6392 l_pty_acct_csr.new_instance_party_id := l_temp_party_account_rec.instance_party_id;
6393 END IF;
6394 ELSE
6395 l_pty_acct_csr.old_instance_party_id := fnd_api.g_miss_num;
6396 l_pty_acct_csr.new_instance_party_id := l_temp_party_account_rec.instance_party_id;
6397 END IF;
6398
6399 CSI_IP_ACCOUNTS_H_PKG.Update_Row
6400 (
6401 p_IP_ACCOUNT_HISTORY_ID => l_ip_acct_hist_id ,
6402 p_IP_ACCOUNT_ID => fnd_api.g_miss_num ,
6403 p_TRANSACTION_ID => fnd_api.g_miss_num ,
6404 p_OLD_PARTY_ACCOUNT_ID => l_pty_acct_csr.old_party_account_id ,
6405 p_NEW_PARTY_ACCOUNT_ID => l_pty_acct_csr.NEW_PARTY_ACCOUNT_ID,
6406 p_OLD_RELATIONSHIP_TYPE_CODE => l_pty_acct_csr.old_relationship_type_code,
6407 p_NEW_RELATIONSHIP_TYPE_CODE => l_pty_acct_csr.NEW_RELATIONSHIP_TYPE_CODE,
6408 p_OLD_ACTIVE_START_DATE => l_pty_acct_csr.old_active_start_date ,
6409 p_NEW_ACTIVE_START_DATE => l_pty_acct_csr.NEW_ACTIVE_START_DATE,
6410 p_OLD_ACTIVE_END_DATE => l_pty_acct_csr.old_active_end_date ,
6411 p_NEW_ACTIVE_END_DATE => l_pty_acct_csr.NEW_ACTIVE_END_DATE ,
6412 p_OLD_CONTEXT => l_pty_acct_csr.old_context ,
6413 p_NEW_CONTEXT => l_pty_acct_csr.NEW_CONTEXT ,
6414 p_OLD_ATTRIBUTE1 => l_pty_acct_csr.old_attribute1 ,
6415 p_NEW_ATTRIBUTE1 => l_pty_acct_csr.NEW_ATTRIBUTE1 ,
6416 p_OLD_ATTRIBUTE2 => l_pty_acct_csr.old_attribute2 ,
6417 p_NEW_ATTRIBUTE2 => l_pty_acct_csr.NEW_ATTRIBUTE2 ,
6418 p_OLD_ATTRIBUTE3 => l_pty_acct_csr.old_attribute3 ,
6419 p_NEW_ATTRIBUTE3 => l_pty_acct_csr.NEW_ATTRIBUTE3 ,
6420 p_OLD_ATTRIBUTE4 => l_pty_acct_csr.old_attribute4 ,
6421 p_NEW_ATTRIBUTE4 => l_pty_acct_csr.NEW_ATTRIBUTE4 ,
6422 p_OLD_ATTRIBUTE5 => l_pty_acct_csr.old_attribute5 ,
6423 p_NEW_ATTRIBUTE5 => l_pty_acct_csr.NEW_ATTRIBUTE5 ,
6424 p_OLD_ATTRIBUTE6 => l_pty_acct_csr.old_attribute6 ,
6425 p_NEW_ATTRIBUTE6 => l_pty_acct_csr.NEW_ATTRIBUTE6 ,
6426 p_OLD_ATTRIBUTE7 => l_pty_acct_csr.old_attribute7 ,
6427 p_NEW_ATTRIBUTE7 => l_pty_acct_csr.NEW_ATTRIBUTE7 ,
6428 p_OLD_ATTRIBUTE8 => l_pty_acct_csr.old_attribute8 ,
6429 p_NEW_ATTRIBUTE8 => l_pty_acct_csr.NEW_ATTRIBUTE8 ,
6430 p_OLD_ATTRIBUTE9 => l_pty_acct_csr.old_attribute9 ,
6431 p_NEW_ATTRIBUTE9 => l_pty_acct_csr.NEW_ATTRIBUTE9 ,
6432 p_OLD_ATTRIBUTE10 => l_pty_acct_csr.old_attribute10 ,
6433 p_NEW_ATTRIBUTE10 => l_pty_acct_csr.NEW_ATTRIBUTE10 ,
6434 p_OLD_ATTRIBUTE11 => l_pty_acct_csr.old_attribute11 ,
6435 p_NEW_ATTRIBUTE11 => l_pty_acct_csr.NEW_ATTRIBUTE11 ,
6436 p_OLD_ATTRIBUTE12 => l_pty_acct_csr.old_attribute12 ,
6437 p_NEW_ATTRIBUTE12 => l_pty_acct_csr.NEW_ATTRIBUTE12 ,
6438 p_OLD_ATTRIBUTE13 => l_pty_acct_csr.old_attribute13 ,
6439 p_NEW_ATTRIBUTE13 => l_pty_acct_csr.NEW_ATTRIBUTE13 ,
6440 p_OLD_ATTRIBUTE14 => l_pty_acct_csr.old_attribute14 ,
6441 p_NEW_ATTRIBUTE14 => l_pty_acct_csr.NEW_ATTRIBUTE14 ,
6442 p_OLD_ATTRIBUTE15 => l_pty_acct_csr.old_attribute15 ,
6443 p_NEW_ATTRIBUTE15 => l_pty_acct_csr.NEW_ATTRIBUTE15 ,
6444 p_FULL_DUMP_FLAG => fnd_api.g_miss_char ,
6445 p_CREATED_BY => FND_API.G_MISS_NUM ,
6446 p_CREATION_DATE => FND_API.G_MISS_DATE ,
6447 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
6448 p_LAST_UPDATE_DATE => SYSDATE ,
6449 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
6450 p_OBJECT_VERSION_NUMBER => fnd_api.g_miss_num ,
6451 p_OLD_BILL_TO_ADDRESS => l_pty_acct_csr.old_bill_to_address ,
6452 p_NEW_BILL_TO_ADDRESS => l_pty_acct_csr.NEW_BILL_TO_ADDRESS ,
6453 p_OLD_SHIP_TO_ADDRESS => l_pty_acct_csr.old_ship_to_address ,
6454 p_NEW_SHIP_TO_ADDRESS => l_pty_acct_csr.NEW_SHIP_TO_ADDRESS,
6455 p_OLD_INSTANCE_PARTY_ID => l_pty_acct_csr.old_instance_party_id ,
6456 p_NEW_INSTANCE_PARTY_ID => l_pty_acct_csr.new_instance_party_id );
6457
6458 END IF;
6459 EXCEPTION
6460
6461 WHEN NO_DATA_FOUND THEN
6462 IF (l_mod_value = 0) THEN
6463 -- If the mod value is 0 then dump all the columns both changed and unchanged
6464 -- changed columns have old and new values while the unchanged values have old and new values
6465 -- exactly same
6466
6467 IF (p_party_account_rec.instance_party_id = FND_API.G_MISS_NUM) THEN
6468 l_temp_party_account_rec.instance_party_id := l_curr_party_acct_rec.instance_party_id ;
6469 END IF;
6470 IF (p_party_account_rec.party_account_id = FND_API.G_MISS_NUM) THEN
6471 l_temp_party_account_rec.party_account_id := l_curr_party_acct_rec.party_account_id ;
6472 END IF;
6473 IF (p_party_account_rec.relationship_type_code = FND_API.G_MISS_CHAR) THEN
6474 l_temp_party_account_rec.relationship_type_code := l_curr_party_acct_rec.relationship_type_code ;
6475 END IF;
6476 IF (p_party_account_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
6477 l_temp_party_account_rec.ACTIVE_START_DATE := l_curr_party_acct_rec.ACTIVE_START_DATE ;
6478 END IF;
6479 IF --(p_party_account_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE)
6480 (l_acct_end_date = FND_API.G_MISS_DATE)
6481 THEN
6482 l_temp_party_account_rec.ACTIVE_END_DATE := l_curr_party_acct_rec.ACTIVE_END_DATE ;
6483 END IF;
6484 IF (p_party_account_rec.context = FND_API.G_MISS_CHAR) THEN
6485 l_temp_party_account_rec.CONTEXT := l_curr_party_acct_rec.CONTEXT ;
6486 END IF;
6487 IF (p_party_account_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
6488 l_temp_party_account_rec.ATTRIBUTE1 := l_curr_party_acct_rec.ATTRIBUTE1 ;
6489 END IF;
6490 IF (p_party_account_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
6491 l_temp_party_account_rec.ATTRIBUTE2 := l_curr_party_acct_rec.ATTRIBUTE2 ;
6492 END IF;
6493 IF (p_party_account_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
6494 l_temp_party_account_rec.ATTRIBUTE3 := l_curr_party_acct_rec.ATTRIBUTE3 ;
6495 END IF;
6496 IF (p_party_account_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
6497 l_temp_party_account_rec.ATTRIBUTE4 := l_curr_party_acct_rec.ATTRIBUTE4 ;
6498 END IF;
6499 IF (p_party_account_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
6500 l_temp_party_account_rec.ATTRIBUTE5 := l_curr_party_acct_rec.ATTRIBUTE5 ;
6501 END IF;
6502 IF (p_party_account_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
6503 l_temp_party_account_rec.ATTRIBUTE6 := l_curr_party_acct_rec.ATTRIBUTE6 ;
6504 END IF;
6505 IF (p_party_account_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
6506 l_temp_party_account_rec.ATTRIBUTE7 := l_curr_party_acct_rec.ATTRIBUTE7 ;
6507 END IF;
6508 IF (p_party_account_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
6509 l_temp_party_account_rec.ATTRIBUTE8 := l_curr_party_acct_rec.ATTRIBUTE8 ;
6510 END IF;
6511 IF (p_party_account_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
6512 l_temp_party_account_rec.ATTRIBUTE9 := l_curr_party_acct_rec.ATTRIBUTE9 ;
6513 END IF;
6514 IF (p_party_account_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
6515 l_temp_party_account_rec.ATTRIBUTE10 := l_curr_party_acct_rec.ATTRIBUTE10 ;
6516 END IF;
6517 IF (p_party_account_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
6518 l_temp_party_account_rec.ATTRIBUTE11 := l_curr_party_acct_rec.ATTRIBUTE11 ;
6519 END IF;
6520 IF (p_party_account_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
6521 l_temp_party_account_rec.ATTRIBUTE12 := l_curr_party_acct_rec.ATTRIBUTE12 ;
6522 END IF;
6523 IF (p_party_account_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
6524 l_temp_party_account_rec.ATTRIBUTE13 := l_curr_party_acct_rec.ATTRIBUTE13 ;
6525 END IF;
6526 IF (p_party_account_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
6527 l_temp_party_account_rec.ATTRIBUTE14 := l_curr_party_acct_rec.ATTRIBUTE14 ;
6528 END IF;
6529 IF (p_party_account_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
6530 l_temp_party_account_rec.ATTRIBUTE15 := l_curr_party_acct_rec.ATTRIBUTE15 ;
6531 END IF;
6532
6533 -- Call table handlers to insert into csi_i_parties_h table
6534 CSI_IP_ACCOUNTS_H_PKG.Insert_Row
6535 (
6536 px_IP_ACCOUNT_HISTORY_ID => l_ip_account_history_id ,
6537 p_IP_ACCOUNT_ID => p_party_account_rec.ip_account_id,
6538 p_TRANSACTION_ID => p_txn_rec.transaction_id ,
6539 p_OLD_PARTY_ACCOUNT_ID => l_curr_party_acct_rec.party_account_id,
6540 p_NEW_PARTY_ACCOUNT_ID => l_temp_party_account_rec.PARTY_ACCOUNT_ID,
6541 p_OLD_RELATIONSHIP_TYPE_CODE => l_curr_party_acct_rec.RELATIONSHIP_TYPE_CODE,
6542 p_NEW_RELATIONSHIP_TYPE_CODE => l_temp_party_account_rec.RELATIONSHIP_TYPE_CODE,
6543 p_OLD_ACTIVE_START_DATE => l_curr_party_acct_rec.ACTIVE_START_DATE,
6544 p_NEW_ACTIVE_START_DATE => l_temp_party_account_rec.ACTIVE_START_DATE,
6545 p_OLD_ACTIVE_END_DATE => l_curr_party_acct_rec.ACTIVE_END_DATE,
6546 p_NEW_ACTIVE_END_DATE => l_temp_party_account_rec.ACTIVE_END_DATE,
6547 p_OLD_CONTEXT => l_curr_party_acct_rec.CONTEXT,
6548 p_NEW_CONTEXT => l_temp_party_account_rec.CONTEXT ,
6549 p_OLD_ATTRIBUTE1 => l_curr_party_acct_rec.ATTRIBUTE1,
6550 p_NEW_ATTRIBUTE1 => l_temp_party_account_rec.ATTRIBUTE1 ,
6551 p_OLD_ATTRIBUTE2 => l_curr_party_acct_rec.ATTRIBUTE2,
6552 p_NEW_ATTRIBUTE2 => l_temp_party_account_rec.ATTRIBUTE2 ,
6553 p_OLD_ATTRIBUTE3 => l_curr_party_acct_rec.ATTRIBUTE3,
6554 p_NEW_ATTRIBUTE3 => l_temp_party_account_rec.ATTRIBUTE3 ,
6555 p_OLD_ATTRIBUTE4 => l_curr_party_acct_rec.ATTRIBUTE4,
6556 p_NEW_ATTRIBUTE4 => l_temp_party_account_rec.ATTRIBUTE4 ,
6557 p_OLD_ATTRIBUTE5 => l_curr_party_acct_rec.ATTRIBUTE5,
6558 p_NEW_ATTRIBUTE5 => l_temp_party_account_rec.ATTRIBUTE5 ,
6559 p_OLD_ATTRIBUTE6 => l_curr_party_acct_rec.ATTRIBUTE6,
6560 p_NEW_ATTRIBUTE6 => l_temp_party_account_rec.ATTRIBUTE6 ,
6561 p_OLD_ATTRIBUTE7 => l_curr_party_acct_rec.ATTRIBUTE7,
6562 p_NEW_ATTRIBUTE7 => l_temp_party_account_rec.ATTRIBUTE7 ,
6563 p_OLD_ATTRIBUTE8 => l_curr_party_acct_rec.ATTRIBUTE8,
6564 p_NEW_ATTRIBUTE8 => l_temp_party_account_rec.ATTRIBUTE8 ,
6565 p_OLD_ATTRIBUTE9 => l_curr_party_acct_rec.ATTRIBUTE9,
6566 p_NEW_ATTRIBUTE9 => l_temp_party_account_rec.ATTRIBUTE9 ,
6567 p_OLD_ATTRIBUTE10 => l_curr_party_acct_rec.ATTRIBUTE10,
6568 p_NEW_ATTRIBUTE10 => l_temp_party_account_rec.ATTRIBUTE10,
6569 p_OLD_ATTRIBUTE11 => l_curr_party_acct_rec.ATTRIBUTE11,
6570 p_NEW_ATTRIBUTE11 => l_temp_party_account_rec.ATTRIBUTE11,
6571 p_OLD_ATTRIBUTE12 => l_curr_party_acct_rec.ATTRIBUTE12,
6572 p_NEW_ATTRIBUTE12 => l_temp_party_account_rec.ATTRIBUTE12,
6573 p_OLD_ATTRIBUTE13 => l_curr_party_acct_rec.ATTRIBUTE13,
6574 p_NEW_ATTRIBUTE13 => l_temp_party_account_rec.ATTRIBUTE13,
6575 p_OLD_ATTRIBUTE14 => l_curr_party_acct_rec.ATTRIBUTE14,
6576 p_NEW_ATTRIBUTE14 => l_temp_party_account_rec.ATTRIBUTE14,
6577 p_OLD_ATTRIBUTE15 => l_curr_party_acct_rec.ATTRIBUTE15,
6578 p_NEW_ATTRIBUTE15 => l_temp_party_account_rec.ATTRIBUTE15,
6579 p_FULL_DUMP_FLAG => 'Y' ,
6580 p_CREATED_BY => FND_GLOBAL.USER_ID ,
6581 p_CREATION_DATE => SYSDATE ,
6582 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
6583 p_LAST_UPDATE_DATE => SYSDATE ,
6584 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
6585 p_OBJECT_VERSION_NUMBER => 1 ,
6586 p_OLD_BILL_TO_ADDRESS => l_curr_party_acct_rec.BILL_TO_ADDRESS,
6587 p_NEW_BILL_TO_ADDRESS => l_temp_party_account_rec.BILL_TO_ADDRESS,
6588 p_OLD_SHIP_TO_ADDRESS => l_curr_party_acct_rec.SHIP_TO_ADDRESS ,
6589 p_NEW_SHIP_TO_ADDRESS => l_temp_party_account_rec.SHIP_TO_ADDRESS,
6590 p_OLD_INSTANCE_PARTY_ID => l_curr_party_acct_rec.INSTANCE_PARTY_ID ,
6591 p_NEW_INSTANCE_PARTY_ID => l_temp_party_account_rec.INSTANCE_PARTY_ID);
6592
6593 ELSE
6594 -- If the mod value is not equal to zero then dump only the changed columns
6595 -- while the unchanged values have old and new values as null
6596 IF (p_party_account_rec.party_account_id = fnd_api.g_miss_num) OR
6597 NVL(p_party_account_rec.party_account_id, fnd_api.g_miss_num) = NVL(l_curr_party_acct_rec.party_account_id, fnd_api.g_miss_num) THEN
6598 l_account_hist_rec.old_party_account_id := NULL;
6599 l_account_hist_rec.new_party_account_id := NULL;
6600 ELSIF
6601 NVL(l_curr_party_acct_rec.party_account_id,fnd_api.g_miss_num) <> NVL(p_party_account_rec.party_account_id,fnd_api.g_miss_num) THEN
6602 l_account_hist_rec.old_party_account_id := l_curr_party_acct_rec.party_account_id ;
6603 l_account_hist_rec.new_party_account_id := p_party_account_rec.party_account_id ;
6604 END IF;
6605 --
6606 IF (p_party_account_rec.relationship_type_code = fnd_api.g_miss_char) OR
6607 NVL(p_party_account_rec.relationship_type_code, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.relationship_type_code, fnd_api.g_miss_char) THEN
6608 l_account_hist_rec.old_relationship_type_code := NULL;
6609 l_account_hist_rec.new_relationship_type_code := NULL;
6610 ELSIF
6611 NVL(l_curr_party_acct_rec.relationship_type_code,fnd_api.g_miss_char) <> NVL(p_party_account_rec.relationship_type_code,fnd_api.g_miss_char) THEN
6612 l_account_hist_rec.old_relationship_type_code := l_curr_party_acct_rec.relationship_type_code ;
6613 l_account_hist_rec.new_relationship_type_code := p_party_account_rec.relationship_type_code ;
6614 END IF;
6615 --
6616 IF (p_party_account_rec.bill_to_address = fnd_api.g_miss_num) OR
6617 NVL(p_party_account_rec.bill_to_address, fnd_api.g_miss_num) = NVL(l_curr_party_acct_rec.bill_to_address, fnd_api.g_miss_num) THEN
6618 l_account_hist_rec.old_bill_to_address := NULL;
6619 l_account_hist_rec.new_bill_to_address := NULL;
6620 ELSIF
6621 NVL(l_curr_party_acct_rec.bill_to_address,fnd_api.g_miss_num) <> NVL(p_party_account_rec.bill_to_address,fnd_api.g_miss_num) THEN
6622 l_account_hist_rec.old_bill_to_address := l_curr_party_acct_rec.bill_to_address ;
6623 l_account_hist_rec.new_bill_to_address := p_party_account_rec.bill_to_address ;
6624 END IF;
6625 --
6626 IF (p_party_account_rec.ship_to_address = fnd_api.g_miss_num) OR
6627 NVL(p_party_account_rec.ship_to_address, fnd_api.g_miss_num) = NVL(l_curr_party_acct_rec.ship_to_address, fnd_api.g_miss_num) THEN
6628 l_account_hist_rec.old_ship_to_address := NULL;
6629 l_account_hist_rec.new_ship_to_address := NULL;
6630 ELSIF
6631 NVL(l_curr_party_acct_rec.ship_to_address,fnd_api.g_miss_num) <> NVL(p_party_account_rec.ship_to_address,fnd_api.g_miss_num) THEN
6632 l_account_hist_rec.old_ship_to_address := l_curr_party_acct_rec.ship_to_address ;
6633 l_account_hist_rec.new_ship_to_address := p_party_account_rec.ship_to_address ;
6634 END IF;
6635 --
6636 IF (p_party_account_rec.active_start_date = fnd_api.g_miss_date) OR
6637 NVL(p_party_account_rec.active_start_date, fnd_api.g_miss_date) = NVL(l_curr_party_acct_rec.active_start_date, fnd_api.g_miss_date) THEN
6638 l_account_hist_rec.old_active_start_date := NULL;
6639 l_account_hist_rec.new_active_start_date := NULL;
6640 ELSIF
6641 NVL(l_curr_party_acct_rec.active_start_date,fnd_api.g_miss_date) <> NVL(p_party_account_rec.active_start_date,fnd_api.g_miss_date) THEN
6642 l_account_hist_rec.old_active_start_date := l_curr_party_acct_rec.active_start_date ;
6643 l_account_hist_rec.new_active_start_date := p_party_account_rec.active_start_date ;
6644 END IF;
6645 --
6646 IF --(p_party_account_rec.active_end_date = fnd_api.g_miss_date) OR
6647 (l_acct_end_date= fnd_api.g_miss_date) OR
6648 --NVL(p_party_account_rec.active_end_date, fnd_api.g_miss_date) = NVL(l_curr_party_acct_rec.active_end_date, fnd_api.g_miss_date) THEN
6649 NVL(l_acct_end_date, fnd_api.g_miss_date) = NVL(l_curr_party_acct_rec.active_end_date, fnd_api.g_miss_date) THEN
6650 l_account_hist_rec.old_active_end_date := NULL;
6651 l_account_hist_rec.new_active_end_date := NULL;
6652 ELSIF
6653 --NVL(l_curr_party_acct_rec.active_end_date,fnd_api.g_miss_date) <> NVL(p_party_account_rec.active_end_date,fnd_api.g_miss_date) THEN
6654 NVL(l_curr_party_acct_rec.active_end_date,fnd_api.g_miss_date) <> NVL(l_acct_end_date,fnd_api.g_miss_date) THEN
6655 l_account_hist_rec.old_active_end_date := l_curr_party_acct_rec.active_end_date ;
6656 l_account_hist_rec.new_active_end_date := l_acct_end_date; --p_party_account_rec.active_end_date ;
6657 END IF;
6658 --
6659 IF (p_party_account_rec.context = fnd_api.g_miss_char) OR
6660 NVL(p_party_account_rec.context, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.context, fnd_api.g_miss_char) THEN
6661 l_account_hist_rec.old_context := NULL;
6662 l_account_hist_rec.new_context := NULL;
6663 ELSIF
6664 NVL(l_curr_party_acct_rec.context,fnd_api.g_miss_char) <> NVL(p_party_account_rec.context,fnd_api.g_miss_char) THEN
6665 l_account_hist_rec.old_context := l_curr_party_acct_rec.context ;
6666 l_account_hist_rec.new_context := p_party_account_rec.context ;
6667 END IF;
6668 --
6669 IF (p_party_account_rec.attribute1 = fnd_api.g_miss_char) OR
6670 NVL(p_party_account_rec.attribute1, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute1, fnd_api.g_miss_char) THEN
6671 l_account_hist_rec.old_attribute1 := NULL;
6672 l_account_hist_rec.new_attribute1 := NULL;
6673 ELSIF
6674 NVL(l_curr_party_acct_rec.attribute1,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute1,fnd_api.g_miss_char) THEN
6675 l_account_hist_rec.old_attribute1 := l_curr_party_acct_rec.attribute1 ;
6676 l_account_hist_rec.new_attribute1 := p_party_account_rec.attribute1 ;
6677 END IF;
6678 --
6679 IF (p_party_account_rec.attribute2 = fnd_api.g_miss_char) OR
6680 NVL(p_party_account_rec.attribute2, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute2, fnd_api.g_miss_char) THEN
6681 l_account_hist_rec.old_attribute2 := NULL;
6682 l_account_hist_rec.new_attribute2 := NULL;
6683 ELSIF
6684 NVL(l_curr_party_acct_rec.attribute2,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute2,fnd_api.g_miss_char) THEN
6685 l_account_hist_rec.old_attribute2 := l_curr_party_acct_rec.attribute2 ;
6686 l_account_hist_rec.new_attribute2 := p_party_account_rec.attribute2 ;
6687 END IF;
6688 --
6689 IF (p_party_account_rec.attribute3 = fnd_api.g_miss_char) OR
6690 NVL(p_party_account_rec.attribute3, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute3, fnd_api.g_miss_char) THEN
6691 l_account_hist_rec.old_attribute3 := NULL;
6692 l_account_hist_rec.new_attribute3 := NULL;
6693 ELSIF
6694 NVL(l_curr_party_acct_rec.attribute3,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute3,fnd_api.g_miss_char) THEN
6695 l_account_hist_rec.old_attribute3 := l_curr_party_acct_rec.attribute3 ;
6696 l_account_hist_rec.new_attribute3 := p_party_account_rec.attribute3 ;
6697 END IF;
6698 --
6699 IF (p_party_account_rec.attribute4 = fnd_api.g_miss_char) OR
6700 NVL(p_party_account_rec.attribute4, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute4, fnd_api.g_miss_char) THEN
6701 l_account_hist_rec.old_attribute4 := NULL;
6702 l_account_hist_rec.new_attribute4 := NULL;
6703 ELSIF
6704 NVL(l_curr_party_acct_rec.attribute4,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute4,fnd_api.g_miss_char) THEN
6705 l_account_hist_rec.old_attribute4 := l_curr_party_acct_rec.attribute4 ;
6706 l_account_hist_rec.new_attribute4 := p_party_account_rec.attribute4 ;
6707 END IF;
6708 --
6709 IF (p_party_account_rec.attribute5 = fnd_api.g_miss_char) OR
6710 NVL(p_party_account_rec.attribute5, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute5, fnd_api.g_miss_char) THEN
6711 l_account_hist_rec.old_attribute5 := NULL;
6712 l_account_hist_rec.new_attribute5 := NULL;
6713 ELSIF
6714 NVL(l_curr_party_acct_rec.attribute5,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute5,fnd_api.g_miss_char) THEN
6715 l_account_hist_rec.old_attribute5 := l_curr_party_acct_rec.attribute5 ;
6716 l_account_hist_rec.new_attribute5 := p_party_account_rec.attribute5 ;
6717 END IF;
6718 --
6719 IF (p_party_account_rec.attribute6 = fnd_api.g_miss_char) OR
6720 NVL(p_party_account_rec.attribute6, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute6, fnd_api.g_miss_char) THEN
6721 l_account_hist_rec.old_attribute6 := NULL;
6722 l_account_hist_rec.new_attribute6 := NULL;
6723 ELSIF
6724 NVL(l_curr_party_acct_rec.attribute6,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute6,fnd_api.g_miss_char) THEN
6725 l_account_hist_rec.old_attribute6 := l_curr_party_acct_rec.attribute6 ;
6726 l_account_hist_rec.new_attribute6 := p_party_account_rec.attribute6 ;
6727 END IF;
6728 --
6729 IF (p_party_account_rec.attribute7 = fnd_api.g_miss_char) OR
6730 NVL(p_party_account_rec.attribute7, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute7, fnd_api.g_miss_char) THEN
6731 l_account_hist_rec.old_attribute7 := NULL;
6732 l_account_hist_rec.new_attribute7 := NULL;
6733 ELSIF
6734 NVL(l_curr_party_acct_rec.attribute7,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute7,fnd_api.g_miss_char) THEN
6735 l_account_hist_rec.old_attribute7 := l_curr_party_acct_rec.attribute7 ;
6736 l_account_hist_rec.new_attribute7 := p_party_account_rec.attribute7 ;
6737 END IF;
6738 --
6739 IF (p_party_account_rec.attribute8 = fnd_api.g_miss_char) OR
6740 NVL(p_party_account_rec.attribute8, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute8, fnd_api.g_miss_char) THEN
6741 l_account_hist_rec.old_attribute8 := NULL;
6742 l_account_hist_rec.new_attribute8 := NULL;
6743 ELSIF
6744 NVL(l_curr_party_acct_rec.attribute8,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute8,fnd_api.g_miss_char) THEN
6745 l_account_hist_rec.old_attribute8 := l_curr_party_acct_rec.attribute8 ;
6746 l_account_hist_rec.new_attribute8 := p_party_account_rec.attribute8 ;
6747 END IF;
6748 --
6749 IF (p_party_account_rec.attribute9 = fnd_api.g_miss_char) OR
6750 NVL(p_party_account_rec.attribute9, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute9, fnd_api.g_miss_char) THEN
6751 l_account_hist_rec.old_attribute9 := NULL;
6752 l_account_hist_rec.new_attribute9 := NULL;
6753 ELSIF
6754 NVL(l_curr_party_acct_rec.attribute9,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute9,fnd_api.g_miss_char) THEN
6755 l_account_hist_rec.old_attribute9 := l_curr_party_acct_rec.attribute9 ;
6756 l_account_hist_rec.new_attribute9 := p_party_account_rec.attribute9 ;
6757 END IF;
6758 --
6759 IF (p_party_account_rec.attribute10 = fnd_api.g_miss_char) OR
6760 NVL(p_party_account_rec.attribute10, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute10, fnd_api.g_miss_char) THEN
6761 l_account_hist_rec.old_attribute10 := NULL;
6762 l_account_hist_rec.new_attribute10 := NULL;
6763 ELSIF
6764 NVL(l_curr_party_acct_rec.attribute10,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute10,fnd_api.g_miss_char) THEN
6765 l_account_hist_rec.old_attribute10 := l_curr_party_acct_rec.attribute10 ;
6766 l_account_hist_rec.new_attribute10 := p_party_account_rec.attribute10 ;
6767 END IF;
6768 --
6769 IF (p_party_account_rec.attribute11 = fnd_api.g_miss_char) OR
6770 NVL(p_party_account_rec.attribute11, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute11, fnd_api.g_miss_char) THEN
6771 l_account_hist_rec.old_attribute11 := NULL;
6772 l_account_hist_rec.new_attribute11 := NULL;
6773 ELSIF
6774 NVL(l_curr_party_acct_rec.attribute11,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute11,fnd_api.g_miss_char) THEN
6775 l_account_hist_rec.old_attribute11 := l_curr_party_acct_rec.attribute11 ;
6776 l_account_hist_rec.new_attribute11 := p_party_account_rec.attribute11 ;
6777 END IF;
6778 --
6779 IF (p_party_account_rec.attribute12 = fnd_api.g_miss_char) OR
6780 NVL(p_party_account_rec.attribute12, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute12, fnd_api.g_miss_char) THEN
6781 l_account_hist_rec.old_attribute12 := NULL;
6782 l_account_hist_rec.new_attribute12 := NULL;
6783 ELSIF
6784 NVL(l_curr_party_acct_rec.attribute12,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute12,fnd_api.g_miss_char) THEN
6785 l_account_hist_rec.old_attribute12 := l_curr_party_acct_rec.attribute12 ;
6786 l_account_hist_rec.new_attribute12 := p_party_account_rec.attribute12 ;
6787 END IF;
6788 --
6789 IF (p_party_account_rec.attribute13 = fnd_api.g_miss_char) OR
6790 NVL(p_party_account_rec.attribute13, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute13, fnd_api.g_miss_char) THEN
6791 l_account_hist_rec.old_attribute13 := NULL;
6792 l_account_hist_rec.new_attribute13 := NULL;
6793 ELSIF
6794 NVL(l_curr_party_acct_rec.attribute13,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute13,fnd_api.g_miss_char) THEN
6795 l_account_hist_rec.old_attribute13 := l_curr_party_acct_rec.attribute13 ;
6796 l_account_hist_rec.new_attribute13 := p_party_account_rec.attribute13 ;
6797 END IF;
6798 --
6799 IF (p_party_account_rec.attribute14 = fnd_api.g_miss_char) OR
6800 NVL(p_party_account_rec.attribute14, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute14, fnd_api.g_miss_char) THEN
6801 l_account_hist_rec.old_attribute14 := NULL;
6802 l_account_hist_rec.new_attribute14 := NULL;
6803 ELSIF
6804 NVL(l_curr_party_acct_rec.attribute14,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute14,fnd_api.g_miss_char) THEN
6805 l_account_hist_rec.old_attribute14 := l_curr_party_acct_rec.attribute14 ;
6806 l_account_hist_rec.new_attribute14 := p_party_account_rec.attribute14 ;
6807 END IF;
6808 --
6809 IF (p_party_account_rec.attribute15 = fnd_api.g_miss_char) OR
6810 NVL(p_party_account_rec.attribute15, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute15, fnd_api.g_miss_char) THEN
6811 l_account_hist_rec.old_attribute15 := NULL;
6812 l_account_hist_rec.new_attribute15 := NULL;
6813 ELSIF
6814 NVL(l_curr_party_acct_rec.attribute15,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute15,fnd_api.g_miss_char) THEN
6815 l_account_hist_rec.old_attribute15 := l_curr_party_acct_rec.attribute15 ;
6816 l_account_hist_rec.new_attribute15 := p_party_account_rec.attribute15 ;
6817 END IF;
6818 -- Added
6819 IF (p_party_account_rec.instance_party_id = fnd_api.g_miss_num) OR
6820 NVL(p_party_account_rec.instance_party_id, fnd_api.g_miss_num) = NVL(l_curr_party_acct_rec.instance_party_id, fnd_api.g_miss_num) THEN
6821 l_account_hist_rec.old_instance_party_id := NULL;
6822 l_account_hist_rec.new_instance_party_id := NULL;
6823 ELSIF
6824 NVL(l_curr_party_acct_rec.instance_party_id,fnd_api.g_miss_num) <> NVL(p_party_account_rec.instance_party_id,fnd_api.g_miss_num) THEN
6825 l_account_hist_rec.old_instance_party_id := l_curr_party_acct_rec.instance_party_id ;
6826 l_account_hist_rec.new_instance_party_id := p_party_account_rec.instance_party_id ;
6827 END IF;
6828 -- End addition
6829 -- Call table handlers to insert into csi_i_parties_h table
6830 CSI_IP_ACCOUNTS_H_PKG.Insert_Row
6831 (
6832 px_IP_ACCOUNT_HISTORY_ID => l_ip_account_history_id ,
6833 p_IP_ACCOUNT_ID => p_party_account_rec.IP_ACCOUNT_ID ,
6834 p_TRANSACTION_ID => p_txn_rec.TRANSACTION_ID ,
6835 p_OLD_PARTY_ACCOUNT_ID => l_account_hist_rec.OLD_PARTY_ACCOUNT_ID ,
6836 p_NEW_PARTY_ACCOUNT_ID => l_account_hist_rec.NEW_PARTY_ACCOUNT_ID ,
6837 p_OLD_RELATIONSHIP_TYPE_CODE => l_account_hist_rec.OLD_RELATIONSHIP_TYPE_CODE ,
6838 p_NEW_RELATIONSHIP_TYPE_CODE => l_account_hist_rec.NEW_RELATIONSHIP_TYPE_CODE ,
6839 p_OLD_ACTIVE_START_DATE => l_account_hist_rec.OLD_ACTIVE_START_DATE ,
6840 p_NEW_ACTIVE_START_DATE => l_account_hist_rec.NEW_ACTIVE_START_DATE ,
6841 p_OLD_ACTIVE_END_DATE => l_account_hist_rec.OLD_ACTIVE_END_DATE ,
6842 p_NEW_ACTIVE_END_DATE => l_account_hist_rec.NEW_ACTIVE_END_DATE ,
6843 p_OLD_CONTEXT => l_account_hist_rec.OLD_CONTEXT ,
6844 p_NEW_CONTEXT => l_account_hist_rec.NEW_CONTEXT ,
6845 p_OLD_ATTRIBUTE1 => l_account_hist_rec.OLD_ATTRIBUTE1 ,
6846 p_NEW_ATTRIBUTE1 => l_account_hist_rec.NEW_ATTRIBUTE1 ,
6847 p_OLD_ATTRIBUTE2 => l_account_hist_rec.OLD_ATTRIBUTE2 ,
6848 p_NEW_ATTRIBUTE2 => l_account_hist_rec.NEW_ATTRIBUTE2 ,
6849 p_OLD_ATTRIBUTE3 => l_account_hist_rec.OLD_ATTRIBUTE3 ,
6850 p_NEW_ATTRIBUTE3 => l_account_hist_rec.NEW_ATTRIBUTE3 ,
6851 p_OLD_ATTRIBUTE4 => l_account_hist_rec.OLD_ATTRIBUTE4 ,
6852 p_NEW_ATTRIBUTE4 => l_account_hist_rec.NEW_ATTRIBUTE4 ,
6853 p_OLD_ATTRIBUTE5 => l_account_hist_rec.OLD_ATTRIBUTE5 ,
6854 p_NEW_ATTRIBUTE5 => l_account_hist_rec.NEW_ATTRIBUTE5 ,
6855 p_OLD_ATTRIBUTE6 => l_account_hist_rec.OLD_ATTRIBUTE6 ,
6856 p_NEW_ATTRIBUTE6 => l_account_hist_rec.NEW_ATTRIBUTE6 ,
6857 p_OLD_ATTRIBUTE7 => l_account_hist_rec.OLD_ATTRIBUTE7 ,
6858 p_NEW_ATTRIBUTE7 => l_account_hist_rec.NEW_ATTRIBUTE7 ,
6859 p_OLD_ATTRIBUTE8 => l_account_hist_rec.OLD_ATTRIBUTE8 ,
6860 p_NEW_ATTRIBUTE8 => l_account_hist_rec.NEW_ATTRIBUTE8 ,
6861 p_OLD_ATTRIBUTE9 => l_account_hist_rec.OLD_ATTRIBUTE9 ,
6862 p_NEW_ATTRIBUTE9 => l_account_hist_rec.NEW_ATTRIBUTE9 ,
6863 p_OLD_ATTRIBUTE10 => l_account_hist_rec.OLD_ATTRIBUTE10 ,
6864 p_NEW_ATTRIBUTE10 => l_account_hist_rec.NEW_ATTRIBUTE10 ,
6865 p_OLD_ATTRIBUTE11 => l_account_hist_rec.OLD_ATTRIBUTE11 ,
6866 p_NEW_ATTRIBUTE11 => l_account_hist_rec.NEW_ATTRIBUTE11 ,
6867 p_OLD_ATTRIBUTE12 => l_account_hist_rec.OLD_ATTRIBUTE12 ,
6868 p_NEW_ATTRIBUTE12 => l_account_hist_rec.NEW_ATTRIBUTE12 ,
6869 p_OLD_ATTRIBUTE13 => l_account_hist_rec.OLD_ATTRIBUTE13 ,
6870 p_NEW_ATTRIBUTE13 => l_account_hist_rec.NEW_ATTRIBUTE13 ,
6871 p_OLD_ATTRIBUTE14 => l_account_hist_rec.OLD_ATTRIBUTE14 ,
6872 p_NEW_ATTRIBUTE14 => l_account_hist_rec.NEW_ATTRIBUTE14 ,
6873 p_OLD_ATTRIBUTE15 => l_account_hist_rec.OLD_ATTRIBUTE15 ,
6874 p_NEW_ATTRIBUTE15 => l_account_hist_rec.NEW_ATTRIBUTE15 ,
6875 p_FULL_DUMP_FLAG => 'N' ,
6876 p_CREATED_BY => FND_GLOBAL.USER_ID ,
6877 p_CREATION_DATE => SYSDATE ,
6878 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
6879 p_LAST_UPDATE_DATE => SYSDATE ,
6880 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
6881 p_OBJECT_VERSION_NUMBER => 1 ,
6882 p_OLD_BILL_TO_ADDRESS => l_account_hist_rec.OLD_BILL_TO_ADDRESS ,
6883 p_NEW_BILL_TO_ADDRESS => l_account_hist_rec.NEW_BILL_TO_ADDRESS ,
6884 p_OLD_SHIP_TO_ADDRESS => l_account_hist_rec.OLD_SHIP_TO_ADDRESS ,
6885 p_NEW_SHIP_TO_ADDRESS => l_account_hist_rec.NEW_SHIP_TO_ADDRESS ,
6886 p_OLD_INSTANCE_PARTY_ID => l_account_hist_rec.OLD_INSTANCE_PARTY_ID ,
6887 p_NEW_INSTANCE_PARTY_ID => l_account_hist_rec.NEW_INSTANCE_PARTY_ID );
6888
6889 END IF;
6890 END;
6891 -- End of modification for Bug#2547034 on 09/20/02 - rtalluri
6892
6893 -- Call Contracts
6894 -- Commented by sguthiva for bug 2307804
6895 -- End commentation by sguthiva for bug 2307804
6896 -- Added by sguthiva for bug 2307804
6897 IF p_party_account_rec.relationship_type_code = 'OWNER'
6898 THEN
6899 -- The following code has been written to make sure
6900 -- before calling contracts we pass a valid vld_organization_id
6901 IF p_party_account_rec.vld_organization_id IS NULL OR
6902 p_party_account_rec.vld_organization_id = fnd_api.g_miss_num
6903 THEN
6904 BEGIN
6905 SELECT last_vld_organization_id
6906 INTO l_last_vld_org
6907 FROM csi_item_instances
6908 WHERE instance_id = l_party_rec.instance_id;
6909 EXCEPTION
6910 WHEN OTHERS THEN
6911 NULL;
6912 END;
6913 ELSE
6914 l_last_vld_org := p_party_account_rec.vld_organization_id;
6915 END IF;
6916 --
6917 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
6918 csi_gen_utility_pvt.populate_install_param_rec;
6919 END IF;
6920 --
6921 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
6922 --
6923 IF l_internal_party_id IS NULL THEN
6924 FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
6925 FND_MSG_PUB.ADD;
6926 RAISE FND_API.G_EXC_ERROR;
6927 END IF;
6928 -- Commenting as we are not using this code
6929 -- Uncommented following code for bug 13614080
6930 l_old_party_id := null;
6931 l_new_party_id := null;
6932 Begin
6933 select old_party_id,new_party_id
6934 into l_old_party_id,l_new_party_id
6935 from CSI_I_PARTIES_H
6936 where instance_party_id = l_party_rec.instance_party_id
6937 and transaction_id = p_txn_rec.transaction_id;
6938 Exception
6939 when no_data_found then
6940 l_old_party_id := null;
6941 l_new_party_id := null;
6942 End;
6943 --
6944
6945 IF l_old_pty_acct_id IS NOT NULL
6946 -- l_party_rec.Party_id <> l_internal_party_id -- changed from p_party_account_rec.party_account_id --commented for bug 13614080
6947 AND p_party_account_rec.party_account_id <> l_old_pty_acct_id
6948 AND p_party_account_rec.party_account_id <> fnd_api.g_miss_num
6949 THEN
6950 -- start code fix for bug 13614080
6951 IF l_old_party_id = l_internal_party_id THEN
6952 l_transaction_type := 'NEW';
6953 l_new_pty_acct_id := p_party_account_rec.party_account_id;
6954 ELSE
6955 l_transaction_type := 'TRF';
6956 l_new_pty_acct_id := p_party_account_rec.party_account_id;
6957 END IF;
6958 -- End code fix for bug 13614080
6959 ELSIF l_old_pty_acct_id IS NULL AND
6960 l_party_rec.party_id <> l_internal_party_id -- changed from p_party_account_rec.party_account_id
6961 AND p_party_account_rec.party_account_id IS NOT NULL
6962 AND p_party_account_rec.party_account_id <> fnd_api.g_miss_num
6963 THEN
6964 l_transaction_type := 'NEW';
6965 l_new_pty_acct_id := NULL;
6966 /* ELSIF p_party_account_rec.party_account_id = l_internal_party_id
6967 OR ( l_old_pty_acct_id <> l_internal_party_id
6968 AND p_party_account_rec.active_end_date <= sysdate
6969 AND p_party_account_rec.active_end_date <> fnd_api.g_miss_date )
6970 THEN */
6971 -- srramakr commneted the above code and checked for old and new party ID
6972 ELSIF /*l_old_party_id IS NOT NULL AND
6973 l_new_party_id IS NOT NULL AND
6974 l_old_party_id <> l_internal_party_id AND
6975 l_new_party_id = l_internal_party_id */
6976 p_party_account_rec.active_end_date IS NOT NULL AND
6977 p_party_account_rec.active_end_date <> fnd_api.g_miss_date AND
6978 p_party_account_rec.active_end_date <= sysdate
6979 THEN -- external to internal
6980 IF p_txn_rec.transaction_type_id in (53,54) THEN -- RMA
6981 l_transaction_type := 'RET';
6982 ELSE
6983 l_transaction_type := 'TRM';
6984 END IF;
6985
6986 l_old_pty_acct_id := NULL;
6987 l_new_pty_acct_id := NULL;
6988
6989 UPDATE csi_item_instances
6990 SET owner_party_account_id = NULL
6991 WHERE instance_id = l_party_rec.instance_id;
6992 END IF;
6993 --
6994 --Changes for Bug 11679952
6995 IF l_transaction_type IS NOT NULL AND
6996 p_party_account_rec.call_contracts <> fnd_api.g_false AND
6997 p_txn_rec.transaction_type_id <> 7 -- Added for bug 3973706
6998 AND nvl(p_txn_rec.source_group_ref, FND_API.G_MISS_CHAR) <> 'WBADI' --Added for Bug 11679952
6999 THEN
7000 IF l_transaction_type = 'TRF' THEN
7001 -- Added the following code for bug 2972082
7002 IF nvl(p_party_account_rec.cascade_ownership_flag,'N')='Y' THEN
7003 csi_gen_utility_pvt.put_line('Since the transaction is a cascade ownership call ');
7004 csi_gen_utility_pvt.put_line('(external to external ownership, component owner is different from parent),');
7005 csi_gen_utility_pvt.put_line('Hence call contracts with TRM and NEW transaction types. ');
7006 csi_gen_utility_pvt.put_line( 'Calling contracts with TRM transaction type for instance '||l_party_rec.instance_id);
7007 csi_item_instance_pvt.Call_to_Contracts(
7008 p_transaction_type => 'TRM'
7009 ,p_instance_id => l_party_rec.instance_id
7010 ,p_new_instance_id => NULL
7011 ,p_vld_org_id => l_last_vld_org
7012 ,p_quantity => NULL
7013 ,p_party_account_id1 => NULL
7014 ,p_party_account_id2 => NULL
7015 ,p_transaction_date => p_txn_rec.transaction_date -- SYSDATE
7016 ,p_txn_type_id => p_txn_rec.transaction_type_id --added for BUG# 5752271
7017 ,p_source_transaction_date => p_txn_rec.source_transaction_date
7018 ,p_grp_call_contracts => p_party_account_rec.grp_call_contracts -- srramakr
7019 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
7020 ,x_return_status => x_return_status
7021 ,x_msg_count => x_msg_count
7022 ,x_msg_data => x_msg_data
7023 );
7024
7025 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7026 csi_gen_utility_pvt.put_line('Cascade Ownership - Call to contracts with TRM txn type has errored ');
7027 l_msg_index := 1;
7028 l_msg_count := x_msg_count;
7029 WHILE l_msg_count > 0 LOOP
7030 x_msg_data := FND_MSG_PUB.GET(
7031 l_msg_index,
7032 FND_API.G_FALSE );
7033 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
7034 l_msg_index := l_msg_index + 1;
7035 l_msg_count := l_msg_count - 1;
7036 END LOOP;
7037 RAISE FND_API.G_EXC_ERROR;
7038 END IF;
7039 csi_gen_utility_pvt.put_line( 'Calling contracts with NEW transaction type for instance '||l_party_rec.instance_id);
7040
7041 csi_item_instance_pvt.Call_to_Contracts(
7042 p_transaction_type => 'NEW'
7043 ,p_instance_id => l_party_rec.instance_id
7044 ,p_new_instance_id => NULL
7045 ,p_vld_org_id => l_last_vld_org
7046 ,p_quantity => NULL
7047 ,p_party_account_id1 => NULL
7048 ,p_party_account_id2 => NULL
7049 ,p_transaction_date => p_txn_rec.transaction_date -- SYSDATE
7050 ,p_source_transaction_date => p_txn_rec.source_transaction_date -- SYSDATE
7051 ,p_grp_call_contracts => p_party_account_rec.grp_call_contracts -- srramakr
7052 ,p_txn_type_id => p_txn_rec.transaction_type_id --added for BUG# 5752271
7053 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
7054 ,x_return_status => x_return_status
7055 ,x_msg_count => x_msg_count
7056 ,x_msg_data => x_msg_data
7057 );
7058 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7059 csi_gen_utility_pvt.put_line('Cascade Ownership - Call to contracts with NEW txn type has errored ');
7060 l_msg_index := 1;
7061 l_msg_count := x_msg_count;
7062 WHILE l_msg_count > 0 LOOP
7063 x_msg_data := FND_MSG_PUB.GET(
7064 l_msg_index,
7065 FND_API.G_FALSE );
7066 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
7067 l_msg_index := l_msg_index + 1;
7068 l_msg_count := l_msg_count - 1;
7069 END LOOP;
7070 RAISE FND_API.G_EXC_ERROR;
7071 END IF;
7072 -- End addition for bug 2972082
7073 ELSE
7074 csi_item_instance_pvt.Call_to_Contracts(
7075 p_transaction_type => l_transaction_type
7076 ,p_instance_id => l_party_rec.instance_id
7077 ,p_new_instance_id => NULL
7078 ,p_vld_org_id => l_last_vld_org
7079 ,p_quantity => NULL
7080 ,p_party_account_id1 => l_old_pty_acct_id
7081 ,p_party_account_id2 => l_new_pty_acct_id
7082 ,p_transaction_date => p_txn_rec.transaction_date -- added by sguthiva
7083 ,p_source_transaction_date => p_txn_rec.source_transaction_date -- added by jpwilson
7084 ,p_transaction_id => p_txn_rec.transaction_id
7085 ,p_grp_call_contracts => p_party_account_rec.grp_call_contracts -- srramakr
7086 ,p_txn_type_id => p_txn_rec.transaction_type_id --added for BUG# 5752271
7087 ,p_system_id => p_party_account_rec.system_id
7088 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
7089 ,x_return_status => x_return_status
7090 ,x_msg_count => x_msg_count
7091 ,x_msg_data => x_msg_data
7092 );
7093 END IF;
7094 ELSE
7095 csi_item_instance_pvt.Call_to_Contracts(
7096 p_transaction_type => l_transaction_type
7097 ,p_instance_id => l_party_rec.instance_id
7098 ,p_new_instance_id => NULL
7099 ,p_vld_org_id => l_last_vld_org
7100 ,p_quantity => NULL
7101 ,p_party_account_id1 => l_old_pty_acct_id
7102 ,p_party_account_id2 => l_new_pty_acct_id
7103 ,p_transaction_date => p_txn_rec.transaction_date -- SYSDATE
7104 ,p_source_transaction_date => p_txn_rec.source_transaction_date
7105 ,p_grp_call_contracts => p_party_account_rec.grp_call_contracts -- srramakr
7106 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
7107 ,x_return_status => x_return_status
7108 ,x_msg_count => x_msg_count
7109 ,x_msg_data => x_msg_data
7110 );
7111 END IF;
7112 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7113 l_msg_index := 1;
7114 l_msg_count := x_msg_count;
7115 WHILE l_msg_count > 0 LOOP
7116 x_msg_data := FND_MSG_PUB.GET(
7117 l_msg_index,
7118 FND_API.G_FALSE );
7119 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
7120 l_msg_index := l_msg_index + 1;
7121 l_msg_count := l_msg_count - 1;
7122 END LOOP;
7123 RAISE FND_API.G_EXC_ERROR;
7124 END IF;
7125 END IF;
7126 END IF;
7127 -- End addition by sguthiva for bug 2307804
7128 --
7129 -- End of API body
7130 -- Standard check of p_commit.
7131 IF FND_API.To_Boolean( p_commit ) THEN
7132 COMMIT WORK;
7133 END IF;
7134 -- Standard call to get message count and if count is get message info.
7135 FND_MSG_PUB.Count_And_Get
7136 (p_count => x_msg_count ,
7137 p_data => x_msg_data );
7138 EXCEPTION
7139 WHEN FND_API.G_EXC_ERROR THEN
7140 -- ROLLBACK TO update_inst_party_acct_pvt;
7141 x_return_status := FND_API.G_RET_STS_ERROR ;
7142 FND_MSG_PUB.Count_And_Get
7143 ( p_count => x_msg_count,
7144 p_data => x_msg_data );
7145 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7146 -- ROLLBACK TO update_inst_party_acct_pvt;
7147 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7148 FND_MSG_PUB.Count_And_Get
7149 ( p_count => x_msg_count,
7150 p_data => x_msg_data );
7151 WHEN OTHERS THEN
7152 -- ROLLBACK TO update_inst_party_acct_pvt;
7153 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7154 IF FND_MSG_PUB.Check_Msg_Level
7155 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7156 THEN
7157 FND_MSG_PUB.Add_Exc_Msg
7158 ( g_pkg_name, l_api_name );
7159 END IF;
7160 FND_MSG_PUB.Count_And_Get
7161 ( p_count => x_msg_count,
7162 p_data => x_msg_data );
7163 END update_inst_party_account ;
7164
7165 /*--------------------------------------------------------------*/
7166 /* Procedure name: Expire_inst_party_account */
7167 /* Description : Procedure used to expire an existing */
7168 /* instance-party account relationships */
7169 /*--------------------------------------------------------------*/
7170
7171 PROCEDURE expire_inst_party_account
7172 ( p_api_version IN NUMBER
7173 ,p_commit IN VARCHAR2
7174 ,p_init_msg_list IN VARCHAR2
7175 ,p_validation_level IN NUMBER
7176 ,p_party_account_rec IN csi_datastructures_pub.party_account_rec
7177 ,p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
7178 ,x_return_status OUT NOCOPY VARCHAR2
7179 ,x_msg_count OUT NOCOPY NUMBER
7180 ,x_msg_data OUT NOCOPY VARCHAR2
7181 ) IS
7182
7183 l_api_name CONSTANT VARCHAR2(30) := 'EXPIRE_INST_PARTY_ACCOUNT';
7184 l_api_version CONSTANT NUMBER := 1.0;
7185 l_csi_debug_level NUMBER;
7186 l_party_account_rec csi_datastructures_pub.party_account_rec;
7187 -- l_curr_party_acct_rec csi_datastructures_pub.party_account_rec;
7188 l_msg_count NUMBER;
7189 l_msg_data VARCHAR2(100);
7190 l_txn_id NUMBER;
7191 l_msg_index NUMBER;
7192 l_OBJECT_VERSION_NUMBER NUMBER;
7193 x_msg_index_out NUMBER;
7194 l_ip_account_history_id NUMBER;
7195 l_full_dump_frequency NUMBER;
7196 l_mod_value NUMBER;
7197 --
7198 px_oks_txn_inst_tbl oks_ibint_pub.txn_instance_tbl;
7199
7200 CURSOR get_curr_party_acct_rec (p_ip_account_id IN NUMBER) IS
7201 SELECT
7202 ip_account_id ,
7203 FND_API.G_MISS_NUM parent_tbl_index,
7204 instance_party_id ,
7205 party_account_id ,
7206 relationship_type_code ,
7207 bill_to_address ,
7208 ship_to_address ,
7209 active_start_date ,
7210 active_end_date ,
7211 context ,
7212 attribute1 ,
7213 attribute2 ,
7214 attribute3 ,
7215 attribute4 ,
7216 attribute5 ,
7217 attribute6 ,
7218 attribute7 ,
7219 attribute8 ,
7220 attribute9 ,
7221 attribute10 ,
7222 attribute11 ,
7223 attribute12 ,
7224 attribute13 ,
7225 attribute14 ,
7226 attribute15 ,
7227 object_version_number
7228 FROM CSI_IP_ACCOUNTS
7229 WHERE IP_ACCOUNT_ID = p_ip_account_id
7230 AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE))
7231 FOR UPDATE OF OBJECT_VERSION_NUMBER;
7232
7233 l_curr_party_acct_rec get_curr_party_acct_rec%ROWTYPE;
7234
7235 BEGIN
7236 -- Standard Start of API savepoint
7237 SAVEPOINT expire_inst_party_acct_pvt;
7238
7239 -- Standard call to check for call compatibility.
7240 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
7241 p_api_version ,
7242 l_api_name ,
7243 g_pkg_name )
7244 THEN
7245 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7246 END IF;
7247
7248 -- Initialize message list if p_init_msg_list is set to TRUE.
7249 IF FND_API.to_Boolean( p_init_msg_list ) THEN
7250 FND_MSG_PUB.initialize;
7251 END IF;
7252
7253 -- Initialize API return status to success
7254 x_return_status := FND_API.G_RET_STS_SUCCESS;
7255
7256 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
7257 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
7258
7259 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
7260 IF (l_csi_debug_level > 0) THEN
7261 csi_gen_utility_pvt.put_line( 'expire_inst_party_account');
7262 END IF;
7263
7264 -- If the debug level = 2 then dump all the parameters values.
7265 IF (l_csi_debug_level > 1) THEN
7266 csi_gen_utility_pvt.put_line( 'expire_inst_party_account:'||
7267 p_api_version ||'-'||
7268 p_commit ||'-'||
7269 p_init_msg_list );
7270
7271
7272 -- Dump the records in the log file
7273 csi_gen_utility_pvt.dump_party_account_rec(p_party_account_rec);
7274 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
7275 END IF;
7276 -- Start API body
7277 --
7278 -- Check if all the required parameters are passed
7279 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
7280 ( p_party_account_rec.ip_account_id,
7281 ' p_party_account_rec.ip_account_id ',
7282 l_api_name );
7283
7284 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
7285 ( p_party_account_rec.object_version_number,
7286 ' p_party_account_rec.object_version_number ',
7287 l_api_name );
7288
7289
7290 -- Check if the instance party id is valid
7291 IF NOT(CSI_Instance_parties_vld_pvt.Is_Ip_account_Valid
7292 (p_party_account_rec.ip_account_id))THEN
7293 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_IP_ACCOUNT_ID');
7294 FND_MESSAGE.SET_TOKEN('IP_ACCOUNT_ID',p_party_account_rec.ip_account_id);
7295 FND_MSG_PUB.Add;
7296 RAISE FND_API.G_EXC_ERROR;
7297 END IF;
7298 -- check if the object_version_number passed matches with the one
7299 -- in the database else raise error
7300 OPEN get_curr_party_acct_rec(p_party_account_rec.ip_account_id);
7301 FETCH get_curr_party_acct_rec INTO l_curr_party_acct_rec;
7302
7303 IF (l_curr_party_acct_rec.object_version_number <> p_party_account_rec.OBJECT_VERSION_NUMBER) THEN
7304 FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
7305 FND_MSG_PUB.ADD;
7306 RAISE FND_API.G_EXC_ERROR;
7307 END IF;
7308 --
7309 IF get_curr_party_acct_rec%NOTFOUND THEN
7310 FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
7311 FND_MSG_PUB.ADD;
7312 RAISE FND_API.G_EXC_ERROR;
7313 END IF;
7314 CLOSE get_curr_party_acct_rec;
7315 -- Initialize all the parameters and call upate_inst_party_account to expire the record
7316
7317 l_party_account_rec.IP_ACCOUNT_ID := l_curr_party_acct_rec.ip_account_id;
7318 l_party_account_rec.INSTANCE_PARTY_ID := FND_API.G_MISS_NUM;
7319 l_party_account_rec.PARTY_ACCOUNT_ID := l_curr_party_acct_rec.party_account_id; -- Added by sguthiva for bug 2307804
7320 l_party_account_rec.RELATIONSHIP_TYPE_CODE := l_curr_party_acct_rec.relationship_type_code;-- Added by sguthiva for bug 2307804 l_party_account_rec.ACTIVE_START_DATE := FND_API.G_MISS_DATE;
7321 -- Bug 3804960
7322 -- srramakr Need to use the same the date used by the item instance
7323 IF p_txn_rec.src_txn_creation_date IS NULL OR
7324 p_txn_rec.src_txn_creation_date = FND_API.G_MISS_DATE THEN
7325 l_party_account_rec.active_end_date := sysdate;
7326 ELSE
7327 l_party_account_rec.active_end_date := p_txn_rec.src_txn_creation_date;
7328 END IF;
7329 -- End of 3804960
7330 l_party_account_rec.CONTEXT := FND_API.G_MISS_CHAR;
7331 l_party_account_rec.ATTRIBUTE1 := FND_API.G_MISS_CHAR;
7332 l_party_account_rec.ATTRIBUTE2 := FND_API.G_MISS_CHAR;
7333 l_party_account_rec.ATTRIBUTE3 := FND_API.G_MISS_CHAR;
7334 l_party_account_rec.ATTRIBUTE4 := FND_API.G_MISS_CHAR;
7335 l_party_account_rec.ATTRIBUTE5 := FND_API.G_MISS_CHAR;
7336 l_party_account_rec.ATTRIBUTE6 := FND_API.G_MISS_CHAR;
7337 l_party_account_rec.ATTRIBUTE7 := FND_API.G_MISS_CHAR;
7338 l_party_account_rec.ATTRIBUTE8 := FND_API.G_MISS_CHAR;
7339 l_party_account_rec.ATTRIBUTE9 := FND_API.G_MISS_CHAR;
7340 l_party_account_rec.ATTRIBUTE10 := FND_API.G_MISS_CHAR;
7341 l_party_account_rec.ATTRIBUTE11 := FND_API.G_MISS_CHAR;
7342 l_party_account_rec.ATTRIBUTE12 := FND_API.G_MISS_CHAR;
7343 l_party_account_rec.ATTRIBUTE13 := FND_API.G_MISS_CHAR;
7344 l_party_account_rec.ATTRIBUTE14 := FND_API.G_MISS_CHAR;
7345 l_party_account_rec.ATTRIBUTE15 := FND_API.G_MISS_CHAR;
7346 l_party_account_rec.BILL_TO_ADDRESS := FND_API.G_MISS_NUM;
7347 l_party_account_rec.SHIP_TO_ADDRESS := FND_API.G_MISS_NUM;
7348 l_party_account_rec.OBJECT_VERSION_NUMBER := p_party_account_rec.OBJECT_VERSION_NUMBER;
7349 l_party_account_rec.expire_flag := p_party_account_rec.expire_flag; -- Added by sguthiva for bug 2307804
7350 l_party_account_rec.call_contracts := p_party_account_rec.call_contracts; -- Added by sguthiva for bug 2307804
7351 -- g_expire_account_flag := 'Y'; -- Added by sguthiva for bug 2307804
7352 --
7353 update_inst_party_account
7354 ( p_api_version => p_api_version
7355 ,p_commit => p_commit
7356 ,p_init_msg_list => p_init_msg_list
7357 ,p_validation_level => p_validation_level
7358 ,p_party_account_rec => l_party_account_rec
7359 ,p_txn_rec => p_txn_rec
7360 ,p_oks_txn_inst_tbl => px_oks_txn_inst_tbl
7361 ,x_return_status => x_return_status
7362 ,x_msg_count => x_msg_count
7363 ,x_msg_data => x_msg_data);
7364 --
7365 --g_expire_account_flag := 'N'; -- Added by sguthiva for bug 2307804
7366 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7367 l_msg_index := 1;
7368 l_msg_count := x_msg_count;
7369 WHILE l_msg_count > 0 LOOP
7370 x_msg_data := FND_MSG_PUB.GET(
7371 l_msg_index,
7372 FND_API.G_FALSE );
7373 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
7374 l_msg_index := l_msg_index + 1;
7375 l_msg_count := l_msg_count - 1;
7376 END LOOP;
7377 RAISE FND_API.G_EXC_ERROR;
7378 END IF;
7379 --
7380 -- Commented the tablehandler call since Update API got invoked
7381 --
7382 -- End of API body
7383 -- Standard check of p_commit.
7384 IF FND_API.To_Boolean( p_commit ) THEN
7385 COMMIT WORK;
7386 END IF;
7387 -- Standard call to get message count and if count is get message info.
7388 FND_MSG_PUB.Count_And_Get
7389 (p_count => x_msg_count ,
7390 p_data => x_msg_data );
7391 EXCEPTION
7392 WHEN FND_API.G_EXC_ERROR THEN
7393 ROLLBACK TO expire_inst_party_acct_pvt;
7394 x_return_status := FND_API.G_RET_STS_ERROR ;
7395 FND_MSG_PUB.Count_And_Get
7396 ( p_count => x_msg_count,
7397 p_data => x_msg_data );
7398
7399 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7400 ROLLBACK TO expire_inst_party_acct_pvt;
7401 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7402 FND_MSG_PUB.Count_And_Get
7403 ( p_count => x_msg_count,
7404 p_data => x_msg_data );
7405 WHEN OTHERS THEN
7406 ROLLBACK TO expire_inst_party_acct_pvt;
7407 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7408 IF FND_MSG_PUB.Check_Msg_Level
7409 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7410 THEN
7411 FND_MSG_PUB.Add_Exc_Msg
7412 ( g_pkg_name, l_api_name );
7413 END IF;
7414 FND_MSG_PUB.Count_And_Get
7415 ( p_count => x_msg_count,
7416 p_data => x_msg_data );
7417 END expire_inst_party_account ;
7418
7419
7420 /*------------------------------------------------------------*/
7421 /* Procedure name: get_contact_details */
7422 /* Description : Get the details of a contact party */
7423 /*------------------------------------------------------------*/
7424
7425 PROCEDURE get_contact_details
7426 (
7427 p_api_version IN NUMBER
7428 ,p_commit IN VARCHAR2
7429 ,p_init_msg_list IN VARCHAR2
7430 ,p_validation_level IN NUMBER
7431 ,p_contact_party_id IN NUMBER
7432 ,p_contact_flag IN VARCHAR2
7433 ,p_party_tbl IN VARCHAR2
7434 ,x_contact_details OUT NOCOPY csi_datastructures_pub.contact_details_rec
7435 ,x_return_status OUT NOCOPY VARCHAR2
7436 ,x_msg_count OUT NOCOPY NUMBER
7437 ,x_msg_data OUT NOCOPY VARCHAR2
7438 ) IS
7439
7440 l_api_name CONSTANT VARCHAR2(30) := 'GET_CONTACT_DETAILS_PVT';
7441 l_api_version CONSTANT NUMBER := 1.0;
7442 l_csi_debug_level NUMBER;
7443
7444
7445 BEGIN
7446 -- Standard Start of API savepoint
7447 -- SAVEPOINT get_contact_details_pvt;
7448
7449 -- Standard call to check for call compatibility.
7450 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
7451 p_api_version ,
7452 l_api_name ,
7453 g_pkg_name )
7454 THEN
7455 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7456 END IF;
7457
7458 -- Initialize message list if p_init_msg_list is set to TRUE.
7459 IF FND_API.to_Boolean( p_init_msg_list ) THEN
7460 FND_MSG_PUB.initialize;
7461 END IF;
7462
7463 -- Initialize API return status to success
7464 x_return_status := FND_API.G_RET_STS_SUCCESS;
7465
7466 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
7467 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
7468
7469 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
7470 IF (l_csi_debug_level > 0) THEN
7471 csi_gen_utility_pvt.put_line( 'get_contact_details');
7472 END IF;
7473
7474
7475 -- Start API body
7476
7477 IF ( ( p_contact_party_id IS NULL OR p_contact_party_id = fnd_api.g_miss_num )
7478 OR ( p_party_tbl IS NULL OR p_party_tbl = fnd_api.g_miss_char )
7479 )
7480 THEN
7481 fnd_message.set_name('CSI', 'CSI_API_INVALID_PARAMETERS');
7482 fnd_msg_pub.add;
7483 x_return_status := fnd_api.g_ret_sts_error;
7484 RAISE fnd_api.g_exc_error;
7485 END IF;
7486
7487
7488 IF upper(p_party_tbl) = 'HZ_PARTIES'
7489 THEN
7490 BEGIN
7491
7492 SELECT hp.party_name party_name,
7493
7494 decode( hcp_wp.phone_country_code, null, null, hcp_wp.phone_country_code || '-'
7495 )
7496 || decode( hcp_wp.phone_area_code, null, null, '(' || hcp_wp.phone_Area_code || ')'
7497 )
7498 || hcp_wp.phone_number
7499 || decode( hcp_wp.phone_extension, null, null, ' x'|| hcp_wp.phone_extension)
7500 work_phone_number,
7501
7502 decode( hcp_hp.phone_country_code, null, null, hcp_hp.phone_country_code || '-'
7503 )
7504 || decode( hcp_hp.phone_area_code, null, null, '(' || hcp_hp.phone_Area_code || ')'
7505 )
7506 || hcp_hp.phone_number
7507 || decode( hcp_hp.phone_extension, null, null, ' x'|| hcp_hp.phone_extension)
7508 home_phone_number,
7509
7510 decode( hcp_mb.phone_country_code, null, null, hcp_mb.phone_country_code || '-'
7511 )
7512 || decode( hcp_mb.phone_area_code, null, null, '(' || hcp_mb.phone_Area_code || ')'
7513 )
7514 || hcp_mb.phone_number
7515 || decode( hcp_mb.phone_extension, null, null, ' x'|| hcp_mb.phone_extension)
7516 mobile_number,
7517
7518 decode( hcp_pg.phone_country_code, null, null, hcp_pg.phone_country_code || '-'
7519 )
7520 || decode( hcp_pg.phone_area_code, null, null, '(' || hcp_pg.phone_Area_code || ')'
7521 )
7522 || hcp_pg.phone_number
7523 || decode( hcp_pg.phone_extension, null, null, ' x'|| hcp_pg.phone_extension)
7524 pager_number,
7525
7526 decode( hcp_fx.phone_country_code, null, null, hcp_fx.phone_country_code || '-'
7527 )
7528 || decode( hcp_fx.phone_area_code, null, null, '(' || hcp_fx.phone_Area_code || ')'
7529 )
7530 || hcp_fx.phone_number
7531 || decode( hcp_fx.phone_extension, null, null, ' x'|| hcp_fx.phone_extension)
7532 fax_number,
7533
7534 HP.ADDRESS1, HP.ADDRESS2, HP.ADDRESS3, HP.ADDRESS4, HP.CITY, HP.POSTAL_CODE,
7535 HP.STATE, HP.COUNTRY,
7536 hcp_em.email_address
7537
7538 INTO x_contact_details.party_name,
7539 x_contact_details.officephone,
7540 x_contact_details.homephone,
7541 x_contact_details.mobile,
7542 x_contact_details.page,
7543 x_contact_details.fax,
7544 x_contact_details.address1,
7545 x_contact_details.address2,
7546 x_contact_details.address3,
7547 x_contact_details.address4,
7548 x_contact_details.city,
7549 x_contact_details.postal_code,
7550 x_contact_details.state,
7551 x_contact_details.country,
7552 x_contact_details.email
7553
7554 FROM
7555 HZ_PARTIES HP,
7556 CSI_I_PARTIES CIP,
7557 -- CSI_IPA_RELATION_TYPES CIR,
7558 HZ_CONTACT_POINTS HCP_WP,
7559 HZ_CONTACT_POINTS HCP_HP,
7560 HZ_CONTACT_POINTS HCP_PG,
7561 HZ_CONTACT_POINTS HCP_EM,
7562 HZ_CONTACT_POINTS HCP_FX,
7563 HZ_CONTACT_POINTS HCP_MB,
7564 -- CSI_LOOKUPS CL,
7565 HZ_RELATIONSHIPS HR,
7566 CSI_I_PARTIES CIPO
7567 WHERE CIP.INSTANCE_PARTY_ID = p_contact_party_id -- party_id for the contact
7568 AND CIP.PARTY_ID = HR.SUBJECT_ID
7569 AND CIP.CONTACT_IP_ID = CIPO.INSTANCE_PARTY_ID
7570 AND CIPO.PARTY_ID = HR.OBJECT_ID
7571 AND HR.SUBJECT_ID = HP.PARTY_ID
7572 AND CIP.CONTACT_FLAG = 'Y'
7573 AND CIP.PARTY_SOURCE_TABLE = 'HZ_PARTIES'
7574 -- AND CIP.RELATIONSHIP_TYPE_CODE = CIR.IPA_RELATION_TYPE_CODE(+)
7575 -- AND CL.LOOKUP_CODE(+) = CIP.PARTY_SOURCE_TABLE
7576 AND HR.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
7577 AND HR.OBJECT_TABLE_NAME = 'HZ_PARTIES'
7578
7579 AND HCP_WP.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7580 AND HCP_WP.OWNER_TABLE_ID(+) = HR.PARTY_ID
7581 AND HCP_WP.CONTACT_POINT_TYPE(+) = 'PHONE'
7582 AND HCP_WP.PHONE_LINE_TYPE(+) = 'GEN'
7583 AND HCP_WP.CONTACT_POINT_PURPOSE(+) = 'BUSINESS'
7584
7585 AND HCP_HP.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7586 AND HCP_HP.OWNER_TABLE_ID(+) = HR.PARTY_ID
7587 AND HCP_HP.CONTACT_POINT_TYPE(+) = 'PHONE'
7588 AND HCP_HP.PHONE_LINE_TYPE(+) = 'GEN'
7589 AND HCP_HP.CONTACT_POINT_PURPOSE(+) = 'PERSONAL'
7590
7591 AND HCP_MB.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7592 AND HCP_MB.OWNER_TABLE_ID(+) = HR.PARTY_ID
7593 AND HCP_MB.CONTACT_POINT_TYPE(+) = 'PHONE'
7594 AND HCP_MB.PHONE_LINE_TYPE(+) = 'MOBILE'
7595 AND HCP_MB.CONTACT_POINT_PURPOSE(+) = 'BUSINESS'
7596
7597 AND HCP_PG.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7598 AND HCP_PG.OWNER_TABLE_ID(+) = HR.PARTY_ID
7599 AND HCP_PG.CONTACT_POINT_TYPE(+) = 'PHONE'
7600 AND HCP_PG.PHONE_LINE_TYPE(+) = 'PAGER'
7601 AND HCP_PG.CONTACT_POINT_PURPOSE(+) = 'BUSINESS'
7602
7603 AND HCP_FX.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7604 AND HCP_FX.OWNER_TABLE_ID(+) = HR.PARTY_ID
7605 AND HCP_FX.CONTACT_POINT_TYPE(+) = 'PHONE'
7606 AND HCP_FX.PHONE_LINE_TYPE(+) = 'FAX'
7607 AND HCP_FX.CONTACT_POINT_PURPOSE(+) = 'BUSINESS'
7608
7609 AND HCP_EM.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7610 AND HCP_EM.OWNER_TABLE_ID(+) = HR.PARTY_ID
7611 AND HCP_EM.CONTACT_POINT_TYPE(+) = 'EMAIL'
7612 AND HCP_EM.PRIMARY_FLAG(+) = 'Y'
7613 AND ROWNUM < 2;
7614 EXCEPTION
7615 WHEN NO_DATA_FOUND THEN
7616 NULL;
7617 END;
7618
7619
7620 ELSIF upper(p_party_tbl) = 'PO_VENDORS'
7621 THEN
7622 IF p_contact_flag = 'Y' THEN
7623 BEGIN
7624
7625 SELECT PVC.PREFIX || ' ' || PVC.FIRST_NAME || ' ' || PVC.MIDDLE_NAME || ' '|| PVC.LAST_NAME PARTY_NAME,
7626 PVC.area_code||'-'||PVC.phone, --WORKPHONE,
7627 NULL, --HOMEPHONE
7628 NULL, --MOBILE
7629 NULL, --PAGE
7630 NULL, --FAX,
7631 PVS.ADDRESS_LINE1 ADDRESS1, --address_line1
7632 PVS.ADDRESS_LINE2 ADDRESS2, --address_line2
7633 PVS.ADDRESS_LINE3 ADDRESS3, --address_line3
7634 NULL, --address_line4
7635 PVS.CITY, --city,
7636 PVS.ZIP POSTAL_CODE, --zip
7637 PVS.STATE STATE, --state
7638 PVS.COUNTRY COUNTRY, --country
7639 PVC.mail_stop --EMAIL ADDRESS
7640 INTO x_contact_details.party_name,
7641 x_contact_details.officephone,
7642 x_contact_details.homephone,
7643 x_contact_details.mobile,
7644 x_contact_details.page,
7645 x_contact_details.fax,
7646 x_contact_details.address1,
7647 x_contact_details.address2,
7648 x_contact_details.address3,
7649 x_contact_details.address4,
7650 x_contact_details.city,
7651 x_contact_details.postal_code,
7652 x_contact_details.state,
7653 x_contact_details.country,
7654 x_contact_details.email
7655 FROM CSI_I_PARTIES CIP,
7656 PO_VENDOR_CONTACTS PVC,
7657 PO_VENDOR_SITES_ALL PVS
7658 WHERE CIP.INSTANCE_PARTY_ID = p_contact_party_id
7659 AND CIP.PARTY_ID = PVC.VENDOR_CONTACT_ID
7660 AND PVS.VENDOR_SITE_ID = PVC.VENDOR_SITE_ID
7661 AND rownum < 2;
7662 EXCEPTION
7663 WHEN NO_DATA_FOUND THEN
7664 NULL;
7665 END;
7666 END IF;
7667
7668 ELSIF upper(p_party_tbl) = 'EMPLOYEE'
7669 THEN
7670 BEGIN
7671 SELECT distinct PAP.full_name, --PARTY NAME
7672 PAP.work_telephone, --WORK PHONE
7673 NULL , -- HOME_PHONE_NUMBER
7674 NULL , --MOBILE
7675 NULL , --PAGE
7676 NULL , --FAX
7677 NULL , --ADDRESS1
7678 NULL , --ADDRESS2
7679 NULL , --ADDRESS3
7680 NULL , --ADDRESS4
7681 NULL , --CITY
7682 NULL , --POSTAL CODE
7683 NULL , --STATE
7684 NULL , --COUNTRY
7685 PAP.email_address --EMAIL
7686 INTO x_contact_details.party_name,
7687 x_contact_details.officephone,
7688 x_contact_details.homephone,
7689 x_contact_details.mobile,
7690 x_contact_details.page,
7691 x_contact_details.fax,
7692 x_contact_details.address1,
7693 x_contact_details.address2,
7694 x_contact_details.address3,
7695 x_contact_details.address4,
7696 x_contact_details.city,
7697 x_contact_details.postal_code,
7698 x_contact_details.state,
7699 x_contact_details.country,
7700 x_contact_details.email
7701 FROM CSI_I_PARTIES CIP,
7702 PER_ALL_PEOPLE_F PAP
7703 WHERE CIP.INSTANCE_PARTY_ID = p_contact_party_id
7704 AND CIP.PARTY_ID = PAP.PERSON_ID
7705 AND PAP.EFFECTIVE_START_DATE <= SYSDATE
7706 AND PAP.EFFECTIVE_END_DATE >= SYSDATE
7707 AND rownum < 2;
7708 EXCEPTION
7709 WHEN NO_DATA_FOUND THEN
7710 NULL;
7711 END;
7712
7713 ELSIF upper(p_party_tbl) = 'GROUP'
7714 THEN
7715 BEGIN
7716 SELECT distinct JG.group_name,
7717 NULL , --WORK PHONE
7718 NULL , --HOME_PHONE_NUMBER
7719 NULL , --MOBILE
7720 NULL , --PAGE
7721 NULL , --FAX
7722 NULL , --ADDRESS1
7723 NULL , --ADDRESS2
7724 NULL , --ADDRESS3
7725 NULL , --ADDRESS4
7726 NULL , --CITY
7727 NULL , --POSTAL CODE
7728 NULL , --STATE
7729 NULL , --COUNTRY
7730 JG.email_address --EMAIL
7731 INTO x_contact_details.party_name,
7732 x_contact_details.officephone,
7733 x_contact_details.homephone,
7734 x_contact_details.mobile,
7735 x_contact_details.page,
7736 x_contact_details.fax,
7737 x_contact_details.address1,
7738 x_contact_details.address2,
7739 x_contact_details.address3,
7740 x_contact_details.address4,
7741 x_contact_details.city,
7742 x_contact_details.postal_code,
7743 x_contact_details.state,
7744 x_contact_details.country,
7745 x_contact_details.email
7746 FROM CSI_I_PARTIES CIP,
7747 JTF_RS_GROUPS_VL JG
7748 WHERE CIP.INSTANCE_PARTY_ID = p_contact_party_id
7749 AND CIP.PARTY_ID = JG.GROUP_ID
7750 AND rownum < 2;
7751 EXCEPTION
7752 WHEN NO_DATA_FOUND THEN
7753 NULL;
7754 END;
7755
7756 ELSIF upper(p_party_tbl) = 'TEAM'
7757 THEN
7758 BEGIN
7759 SELECT distinct JT.TEAM_NAME,
7760 NULL , --WORK PHONE
7761 NULL , --HOME_PHONE_NUMBER
7762 NULL , --MOBILE
7763 NULL , --PAGE
7764 NULL , --FAX
7765 NULL , --ADDRESS1
7766 NULL , --ADDRESS2
7767 NULL , --ADDRESS3
7768 NULL , --ADDRESS4
7769 NULL , --CITY
7770 NULL , --POSTAL CODE
7771 NULL , --STATE
7772 NULL , --COUNTRY
7773 JT.email_address --EMAIL
7774 INTO x_contact_details.party_name,
7775 x_contact_details.officephone,
7776 x_contact_details.homephone,
7777 x_contact_details.mobile,
7778 x_contact_details.page,
7779 x_contact_details.fax,
7780 x_contact_details.address1,
7781 x_contact_details.address2,
7782 x_contact_details.address3,
7783 x_contact_details.address4,
7784 x_contact_details.city,
7785 x_contact_details.postal_code,
7786 x_contact_details.state,
7787 x_contact_details.country,
7788 x_contact_details.email
7789 FROM CSI_I_PARTIES CIP,
7790 JTF_RS_TEAMS_VL JT
7791 WHERE CIP.INSTANCE_PARTY_ID = p_contact_party_id
7792 AND CIP.PARTY_ID = JT.TEAM_ID
7793 AND rownum < 2;
7794 EXCEPTION
7795 WHEN NO_DATA_FOUND THEN
7796 NULL;
7797 END;
7798 END IF;
7799 x_contact_details.contact_party_id := p_contact_party_id;
7800 --
7801 -- End of API body
7802
7803 -- Standard check of p_commit.
7804 /*
7805 IF FND_API.To_Boolean( p_commit ) THEN
7806 COMMIT WORK;
7807 END IF;
7808 */
7809
7810 -- Standard call to get message count and if count is get message info.
7811 FND_MSG_PUB.Count_And_Get
7812 (p_count => x_msg_count ,
7813 p_data => x_msg_data );
7814 EXCEPTION
7815 WHEN FND_API.G_EXC_ERROR THEN
7816 -- ROLLBACK TO get_contact_details_pvt;
7817 x_return_status := FND_API.G_RET_STS_ERROR ;
7818 FND_MSG_PUB.Count_And_Get
7819 ( p_count => x_msg_count,
7820 p_data => x_msg_data );
7821 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7822 -- ROLLBACK TO get_contact_details_pvt;
7823 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7824 FND_MSG_PUB.Count_And_Get
7825 ( p_count => x_msg_count,
7826 p_data => x_msg_data );
7827 WHEN OTHERS THEN
7828 -- ROLLBACK TO get_contact_details_pvt;
7829 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7830 IF FND_MSG_PUB.Check_Msg_Level
7831 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7832 THEN
7833 FND_MSG_PUB.Add_Exc_Msg
7834 ( g_pkg_name, l_api_name );
7835 END IF;
7836 FND_MSG_PUB.Count_And_Get
7837 ( p_count => x_msg_count,
7838 p_data => x_msg_data );
7839
7840 END get_contact_details ;
7841
7842
7843
7844 /*------------------------------------------------------------*/
7845 /* Procedure name: get_inst_party_rel_hist */
7846 /* Description : Procedure used to get party relationships */
7847 /* from history given a transaction_id */
7848 /*------------------------------------------------------------*/
7849
7850 PROCEDURE get_inst_party_rel_hist
7851 ( p_api_version IN NUMBER
7852 ,p_commit IN VARCHAR2
7853 ,p_init_msg_list IN VARCHAR2
7854 ,p_validation_level IN NUMBER
7855 ,p_transaction_id IN NUMBER
7856 ,x_party_history_tbl OUT NOCOPY csi_datastructures_pub.party_history_tbl
7857 ,x_return_status OUT NOCOPY VARCHAR2
7858 ,x_msg_count OUT NOCOPY NUMBER
7859 ,x_msg_data OUT NOCOPY VARCHAR2
7860 ) IS
7861
7862 l_api_name CONSTANT VARCHAR2(30) := 'GET_INST_PARTY_REL_HIST' ;
7863 l_api_version CONSTANT NUMBER := 1.0 ;
7864 l_csi_debug_level NUMBER ;
7865 x_msg_index_out NUMBER;
7866 l_count NUMBER := 0 ;
7867 l_flag VARCHAR2(1) :='N' ;
7868 l_instance_party_id NUMBER ;
7869 l_old_contact_party_id NUMBER ;
7870 l_new_contact_party_id NUMBER ;
7871 l_contact_details csi_datastructures_pub.contact_details_rec ;
7872 i NUMBER :=1;
7873 l_old_party_source_tbl VARCHAR2(30);
7874 l_new_party_source_tbl VARCHAR2(30);
7875 l_old_contact_flag VARCHAR2(1);
7876 l_new_contact_flag VARCHAR2(1);
7877
7878
7879
7880 CURSOR get_party_hist(i_transaction_id NUMBER)
7881 IS
7882 SELECT ciph.INSTANCE_PARTY_ID,
7883 ciph.INSTANCE_PARTY_HISTORY_ID,
7884 ciph.TRANSACTION_ID,
7885 ciph.OLD_PARTY_SOURCE_TABLE,
7886 ciph.NEW_PARTY_SOURCE_TABLE,
7887 ciph.OLD_PARTY_ID,
7888 ciph.NEW_PARTY_ID,
7889 ciph.OLD_RELATIONSHIP_TYPE_CODE,
7890 ciph.NEW_RELATIONSHIP_TYPE_CODE,
7891 ciph.OLD_CONTACT_FLAG,
7892 ciph.NEW_CONTACT_FLAG,
7893 ciph.OLD_CONTACT_IP_ID,
7894 ciph.NEW_CONTACT_IP_ID,
7895 ciph.OLD_ACTIVE_START_DATE,
7896 ciph.NEW_ACTIVE_START_DATE,
7897 ciph.OLD_ACTIVE_END_DATE,
7898 ciph.NEW_ACTIVE_END_DATE,
7899 ciph.OLD_CONTEXT,
7900 ciph.NEW_CONTEXT,
7901 ciph.OLD_ATTRIBUTE1,
7902 ciph.NEW_ATTRIBUTE1,
7903 ciph.OLD_ATTRIBUTE2,
7904 ciph.NEW_ATTRIBUTE2,
7905 ciph.OLD_ATTRIBUTE3,
7906 ciph.NEW_ATTRIBUTE3,
7907 ciph.OLD_ATTRIBUTE4,
7908 ciph.NEW_ATTRIBUTE4,
7909 ciph.OLD_ATTRIBUTE5,
7910 ciph.NEW_ATTRIBUTE5,
7911 ciph.OLD_ATTRIBUTE6,
7912 ciph.NEW_ATTRIBUTE6,
7913 ciph.OLD_ATTRIBUTE7,
7914 ciph.NEW_ATTRIBUTE7,
7915 ciph.OLD_ATTRIBUTE8,
7916 ciph.NEW_ATTRIBUTE8,
7917 ciph.OLD_ATTRIBUTE9,
7918 ciph.NEW_ATTRIBUTE9,
7919 ciph.OLD_ATTRIBUTE10,
7920 ciph.NEW_ATTRIBUTE10,
7921 ciph.OLD_ATTRIBUTE11,
7922 ciph.NEW_ATTRIBUTE11,
7923 ciph.OLD_ATTRIBUTE12,
7924 ciph.NEW_ATTRIBUTE12,
7925 ciph.OLD_ATTRIBUTE13,
7926 ciph.NEW_ATTRIBUTE13,
7927 ciph.OLD_ATTRIBUTE14,
7928 ciph.NEW_ATTRIBUTE14,
7929 ciph.OLD_ATTRIBUTE15,
7930 ciph.NEW_ATTRIBUTE15,
7931 ciph.FULL_DUMP_FLAG,
7932 ciph.OBJECT_VERSION_NUMBER,
7933 ciph.OLD_PREFERRED_FLAG,
7934 ciph.NEW_PREFERRED_FLAG,
7935 ciph.OLD_PRIMARY_FLAG,
7936 ciph.NEW_PRIMARY_FLAG,
7937 cip.INSTANCE_ID,
7938 ciph.creation_date --Added for bug 2781480
7939 FROM csi_i_parties_h ciph,
7940 csi_i_parties cip
7941 WHERE ciph.transaction_id = i_transaction_id
7942 AND ciph.instance_party_id = cip.instance_party_id; -- Added by sk on 08-APR for fixing bug
7943 -- 2304649 .
7944 -- Added for bug 2781480
7945 l_time_stamp DATE;
7946 l_party_query_rec csi_datastructures_pub.party_query_rec;
7947 l_party_header_tbl csi_datastructures_pub.party_header_tbl;
7948 -- End addition for bug 2781480
7949 BEGIN
7950 -- Standard Start of API savepoint
7951 -- SAVEPOINT get_inst_party_rel_hist;
7952
7953
7954 -- Standard call to check for call compatibility.
7955 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
7956 p_api_version ,
7957 l_api_name ,
7958 g_pkg_name )
7959 THEN
7960 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7961 END IF;
7962
7963 -- Initialize message list if p_init_msg_list is set to TRUE.
7964 IF FND_API.to_Boolean( p_init_msg_list ) THEN
7965 FND_MSG_PUB.initialize;
7966 END IF;
7967
7968 -- Initialize API return status to success
7969 x_return_status := FND_API.G_RET_STS_SUCCESS;
7970
7971 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
7972 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
7973
7974 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
7975 IF (l_csi_debug_level > 0) THEN
7976 csi_gen_utility_pvt.put_line( 'get_inst_party_rel_hist');
7977 END IF;
7978
7979 -- If the debug level = 2 then dump all the parameters values.
7980 IF (l_csi_debug_level > 1) THEN
7981 csi_gen_utility_pvt.put_line( 'get_inst_party_rel_hist' ||
7982 p_api_version ||'-'||
7983 p_commit ||'-'||
7984 p_init_msg_list ||'-'||
7985 p_validation_level ||'-'||
7986 p_transaction_id );
7987 -- dump the in parameter in the log file
7988
7989 END IF;
7990
7991 /***** srramakr commented for bug # 3304439
7992 -- Check for the profile option and enable trace
7993 l_flag:=csi_gen_utility_pvt.enable_trace(l_trace_flag => l_flag);
7994 -- End enable trace
7995 ****/
7996
7997 -- Start API body
7998
7999 FOR C1 IN get_party_hist(p_transaction_id) LOOP
8000 x_party_history_tbl(i).INSTANCE_PARTY_ID := C1.INSTANCE_PARTY_ID;
8001 x_party_history_tbl(i).INSTANCE_PARTY_HISTORY_ID := C1.INSTANCE_PARTY_HISTORY_ID;
8002 x_party_history_tbl(i).TRANSACTION_ID := C1.TRANSACTION_ID;
8003 x_party_history_tbl(i).OLD_PARTY_SOURCE_TABLE := C1.OLD_PARTY_SOURCE_TABLE;
8004 x_party_history_tbl(i).NEW_PARTY_SOURCE_TABLE := C1.NEW_PARTY_SOURCE_TABLE;
8005 x_party_history_tbl(i).OLD_PARTY_ID := C1.OLD_PARTY_ID;
8006 x_party_history_tbl(i).NEW_PARTY_ID := C1.NEW_PARTY_ID;
8007 x_party_history_tbl(i).OLD_RELATIONSHIP_TYPE_CODE := C1.OLD_RELATIONSHIP_TYPE_CODE;
8008 x_party_history_tbl(i).NEW_RELATIONSHIP_TYPE_CODE:= C1.NEW_RELATIONSHIP_TYPE_CODE;
8009 x_party_history_tbl(i).OLD_CONTACT_FLAG := C1.OLD_CONTACT_FLAG;
8010 x_party_history_tbl(i).NEW_CONTACT_FLAG := C1.NEW_CONTACT_FLAG;
8011 x_party_history_tbl(i).OLD_CONTACT_IP_ID := C1.OLD_CONTACT_IP_ID;
8012 x_party_history_tbl(i).NEW_CONTACT_IP_ID := C1.NEW_CONTACT_IP_ID;
8013 x_party_history_tbl(i).OLD_ACTIVE_START_DATE:= C1.OLD_ACTIVE_START_DATE;
8014 x_party_history_tbl(i).NEW_ACTIVE_START_DATE:= C1.NEW_ACTIVE_START_DATE;
8015 x_party_history_tbl(i).OLD_ACTIVE_END_DATE:= C1.OLD_ACTIVE_END_DATE;
8016 x_party_history_tbl(i).NEW_ACTIVE_END_DATE:= C1.NEW_ACTIVE_END_DATE;
8017 x_party_history_tbl(i).OLD_CONTEXT:= C1.OLD_CONTEXT;
8018 x_party_history_tbl(i).NEW_CONTEXT:= C1.NEW_CONTEXT;
8019 x_party_history_tbl(i).OLD_ATTRIBUTE1:= C1.OLD_ATTRIBUTE1;
8020 x_party_history_tbl(i).NEW_ATTRIBUTE1:= C1.NEW_ATTRIBUTE1;
8021 x_party_history_tbl(i).OLD_ATTRIBUTE2:= C1.OLD_ATTRIBUTE2;
8022 x_party_history_tbl(i).NEW_ATTRIBUTE2:= C1.NEW_ATTRIBUTE2;
8023 x_party_history_tbl(i).OLD_ATTRIBUTE3:= C1.OLD_ATTRIBUTE3;
8024 x_party_history_tbl(i).OLD_ATTRIBUTE3:= C1.OLD_ATTRIBUTE3;
8025 x_party_history_tbl(i).OLD_ATTRIBUTE4:= C1.OLD_ATTRIBUTE4;
8026 x_party_history_tbl(i).NEW_ATTRIBUTE4:= C1.NEW_ATTRIBUTE4;
8027 x_party_history_tbl(i).OLD_ATTRIBUTE5:= C1.OLD_ATTRIBUTE5;
8028 x_party_history_tbl(i).NEW_ATTRIBUTE5:= C1.NEW_ATTRIBUTE5;
8029 x_party_history_tbl(i).OLD_ATTRIBUTE6:= C1.OLD_ATTRIBUTE6;
8030 x_party_history_tbl(i).NEW_ATTRIBUTE6:= C1.NEW_ATTRIBUTE6;
8031 x_party_history_tbl(i).OLD_ATTRIBUTE7:= C1.OLD_ATTRIBUTE7;
8032 x_party_history_tbl(i).NEW_ATTRIBUTE7:= C1.NEW_ATTRIBUTE7;
8033 x_party_history_tbl(i).OLD_ATTRIBUTE8:= C1.OLD_ATTRIBUTE8;
8034 x_party_history_tbl(i).NEW_ATTRIBUTE8:= C1.NEW_ATTRIBUTE8;
8035 x_party_history_tbl(i).OLD_ATTRIBUTE9:= C1.OLD_ATTRIBUTE9;
8036 x_party_history_tbl(i).NEW_ATTRIBUTE9:= C1.NEW_ATTRIBUTE9;
8037 x_party_history_tbl(i).OLD_ATTRIBUTE10:= C1.OLD_ATTRIBUTE10;
8038 x_party_history_tbl(i).NEW_ATTRIBUTE10:= C1.NEW_ATTRIBUTE10;
8039 x_party_history_tbl(i).OLD_ATTRIBUTE11:= C1.OLD_ATTRIBUTE11;
8040 x_party_history_tbl(i).NEW_ATTRIBUTE11:= C1.NEW_ATTRIBUTE11;
8041 x_party_history_tbl(i).OLD_ATTRIBUTE12:= C1.OLD_ATTRIBUTE12;
8042 x_party_history_tbl(i).NEW_ATTRIBUTE12:= C1.NEW_ATTRIBUTE12;
8043 x_party_history_tbl(i).OLD_ATTRIBUTE13:= C1.OLD_ATTRIBUTE13;
8044 x_party_history_tbl(i).NEW_ATTRIBUTE13:= C1.NEW_ATTRIBUTE13;
8045 x_party_history_tbl(i).OLD_ATTRIBUTE14:= C1.OLD_ATTRIBUTE14;
8046 x_party_history_tbl(i).NEW_ATTRIBUTE14:= C1.NEW_ATTRIBUTE14;
8047 x_party_history_tbl(i).OLD_ATTRIBUTE15:= C1.OLD_ATTRIBUTE15;
8048 x_party_history_tbl(i).NEW_ATTRIBUTE15:= C1.NEW_ATTRIBUTE15;
8049 x_party_history_tbl(i).FULL_DUMP_FLAG:= C1.FULL_DUMP_FLAG;
8050 x_party_history_tbl(i).OBJECT_VERSION_NUMBER := C1.OBJECT_VERSION_NUMBER;
8051 x_party_history_tbl(i).OLD_PREFERRED_FLAG := C1.OLD_PREFERRED_FLAG;
8052 x_party_history_tbl(i).NEW_PREFERRED_FLAG := C1.NEW_PREFERRED_FLAG;
8053 x_party_history_tbl(i).OLD_PRIMARY_FLAG:= C1.OLD_PRIMARY_FLAG;
8054 x_party_history_tbl(i).NEW_PRIMARY_FLAG := C1.NEW_PRIMARY_FLAG;
8055 x_party_history_tbl(i).INSTANCE_ID := C1.INSTANCE_ID; -- Added by sk on 08-APR for fixing bug
8056 -- 2304649 .
8057 -- Added for bug 2781480
8058 IF (x_party_history_tbl(i).old_party_source_table IS NULL AND
8059 x_party_history_tbl(i).new_party_source_table IS NULL ) OR
8060 (x_party_history_tbl(i).old_party_id IS NULL AND
8061 x_party_history_tbl(i).new_party_id IS NULL ) OR
8062 (x_party_history_tbl(i).old_relationship_type_code IS NULL AND
8063 x_party_history_tbl(i).new_relationship_type_code IS NULL)
8064 --AND (nvl(x_party_history_tbl(i).old_party_id,fnd_api.g_miss_num) <> nvl(x_party_history_tbl(i).new_party_id,fnd_api.g_miss_num) )
8065 THEN
8066 l_party_query_rec.instance_party_id := x_party_history_tbl(i).instance_party_id;
8067 l_time_stamp:=c1.creation_date;
8068 csi_party_relationships_pub.get_inst_party_relationships
8069 ( p_api_version => 1.0
8070 ,p_commit => fnd_api.g_false
8071 ,p_init_msg_list => fnd_api.g_false
8072 ,p_validation_level => fnd_api.g_valid_level_full
8073 ,p_party_query_rec => l_party_query_rec
8074 ,p_resolve_id_columns => fnd_api.g_false
8075 ,p_time_stamp => l_time_stamp
8076 ,x_party_header_tbl => l_party_header_tbl
8077 ,x_return_status => x_return_status
8078 ,x_msg_count => x_msg_count
8079 ,x_msg_data => x_msg_data
8080 );
8081
8082 IF NOT(x_return_status = fnd_api.g_ret_sts_success)
8083 THEN
8084 RAISE fnd_api.g_exc_error;
8085 END IF;
8086
8087 IF (x_party_history_tbl(i).old_party_source_table IS NULL AND
8088 x_party_history_tbl(i).new_party_source_table IS NULL )
8089 THEN
8090 x_party_history_tbl(i).old_party_source_table:=l_party_header_tbl(1).party_source_table;
8091 x_party_history_tbl(i).new_party_source_table:=l_party_header_tbl(1).party_source_table;
8092 END IF;
8093 -- Added for bug 2179142
8094 IF (x_party_history_tbl(i).old_party_id IS NULL AND
8095 x_party_history_tbl(i).new_party_id IS NULL )
8096 THEN
8097 x_party_history_tbl(i).old_party_id:=l_party_header_tbl(1).party_id;
8098 x_party_history_tbl(i).new_party_id:=l_party_header_tbl(1).party_id;
8099 END IF;
8100
8101 IF (x_party_history_tbl(i).old_relationship_type_code IS NULL AND
8102 x_party_history_tbl(i).new_relationship_type_code IS NULL)
8103 THEN
8104 x_party_history_tbl(i).old_relationship_type_code := l_party_header_tbl(1).relationship_type_code;
8105 x_party_history_tbl(i).new_relationship_type_code := l_party_header_tbl(1).relationship_type_code;
8106 END IF;
8107
8108 IF (x_party_history_tbl(i).old_contact_flag IS NULL AND
8109 x_party_history_tbl(i).new_contact_flag IS NULL )
8110 THEN
8111 x_party_history_tbl(i).old_contact_flag:=l_party_header_tbl(1).contact_flag;
8112 x_party_history_tbl(i).new_contact_flag:=l_party_header_tbl(1).contact_flag;
8113 END IF;
8114 -- End addition for bug 2179142
8115 END IF;
8116 -- End addition for bug 2781480
8117
8118
8119 --start of the code for resolve_id_columns for old tbl(i)ords
8120
8121 l_old_contact_party_id := x_party_history_tbl(i).old_party_id;
8122 l_old_contact_flag := x_party_history_tbl(i).old_contact_flag;
8123 l_old_party_source_tbl := x_party_history_tbl(i).old_party_source_table;
8124
8125 IF ((l_old_contact_party_id IS NOT NULL )
8126 AND ( l_old_party_source_tbl IS NOT NULL )
8127 AND ( l_old_contact_flag = 'Y') -- Added for bug 2179142
8128 )
8129 THEN
8130 csi_party_relationships_pvt.get_contact_details
8131 (
8132 p_api_version => p_api_version
8133 ,p_commit => p_commit
8134 ,p_init_msg_list => p_init_msg_list
8135 ,p_validation_level => p_validation_level
8136 ,p_contact_party_id => l_old_contact_party_id
8137 ,p_contact_flag => l_old_contact_flag
8138 ,p_party_tbl => l_old_party_source_tbl
8139 ,x_contact_details => l_contact_details
8140 ,x_return_status => x_return_status
8141 ,x_msg_count => x_msg_count
8142 ,x_msg_data => x_msg_data
8143 );
8144
8145
8146 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
8147 FOR i in 1..x_msg_Count LOOP
8148 FND_MSG_PUB.Get(p_msg_index => i,
8149 p_encoded => 'F',
8150 p_data => x_msg_data,
8151 p_msg_index_out => x_msg_index_out );
8152 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
8153 End LOOP;
8154 RAISE FND_API.G_EXC_ERROR;
8155 END IF;
8156
8157 x_party_history_tbl(i).old_contact_party_name := l_contact_details.party_name;
8158 -- Added for bug 2179142
8159 IF x_party_history_tbl(i).old_party_source_table = 'EMPLOYEE' THEN
8160 BEGIN
8161 SELECT employee_number,
8162 'EMPLYOEE'
8163 INTO x_party_history_tbl(i).old_contact_party_number,
8164 x_party_history_tbl(i).old_contact_party_type
8165 FROM per_all_people_f
8166 WHERE person_id = l_old_contact_party_id
8167 AND rownum < 2; -- Bug # 2183107 srramakr
8168 EXCEPTION
8169 WHEN OTHERS THEN
8170 NULL;
8171 END;
8172 ELSIF x_party_history_tbl(i).old_party_source_table = 'HZ_PARTIES' THEN
8173 BEGIN
8174 SELECT party_number,
8175 'PARTY'
8176 INTO x_party_history_tbl(i).old_contact_party_number,
8177 x_party_history_tbl(i).old_contact_party_type
8178 FROM hz_parties
8179 WHERE party_id = l_old_contact_party_id;
8180 EXCEPTION
8181 WHEN OTHERS THEN
8182 NULL;
8183 END;
8184 ELSIF x_party_history_tbl(i).old_party_source_table = 'PO_VENDORS' THEN
8185 BEGIN
8186 SELECT segment1,
8187 'VENDOR'
8188 INTO x_party_history_tbl(i).old_contact_party_number,
8189 x_party_history_tbl(i).old_contact_party_type
8190 FROM po_vendors
8191 WHERE vendor_id = l_old_contact_party_id;
8192 EXCEPTION
8193 WHEN OTHERS THEN
8194 NULL;
8195 END;
8196 ELSIF x_party_history_tbl(i).old_party_source_table = 'GROUP' THEN
8197 BEGIN
8198 SELECT group_number,
8199 'GROUP'
8200 INTO x_party_history_tbl(i).old_contact_party_number,
8201 x_party_history_tbl(i).old_contact_party_type
8202 FROM jtf_rs_groups_vl
8203 WHERE group_id = l_old_contact_party_id;
8204 EXCEPTION
8205 WHEN OTHERS THEN
8206 NULL;
8207 END;
8208 ELSIF x_party_history_tbl(i).old_party_source_table = 'TEAM' THEN
8209 BEGIN
8210 SELECT team_number,
8211 'TEAM'
8212 INTO x_party_history_tbl(i).old_contact_party_number,
8213 x_party_history_tbl(i).old_contact_party_type
8214 FROM jtf_rs_teams_vl
8215 WHERE team_id = l_old_contact_party_id;
8216 EXCEPTION
8217 WHEN OTHERS THEN
8218 NULL;
8219 END;
8220
8221 END IF;
8222 -- End addition for bug 2179142
8223 IF NVL(l_old_contact_party_id,fnd_api.g_miss_num) <> NVL(l_new_contact_party_id,fnd_api.g_miss_num)
8224 THEN
8225 x_party_history_tbl(i).old_contact_work_phone_num := l_contact_details.officephone;
8226 x_party_history_tbl(i).old_contact_address1 := l_contact_details.address1;
8227 x_party_history_tbl(i).old_contact_address2 := l_contact_details.address2;
8228 x_party_history_tbl(i).old_contact_address3 := l_contact_details.address3;
8229 x_party_history_tbl(i).old_contact_address4 := l_contact_details.address4;
8230 x_party_history_tbl(i).old_contact_city := l_contact_details.city;
8231 x_party_history_tbl(i).old_contact_postal_code := l_contact_details.postal_code;
8232 x_party_history_tbl(i).old_contact_state := l_contact_details.state;
8233 x_party_history_tbl(i).old_contact_country := l_contact_details.country;
8234 x_party_history_tbl(i).old_contact_email_address := l_contact_details.email;
8235 END IF;
8236 END IF;
8237
8238 IF x_party_history_tbl(i).old_party_source_table = 'EMPLOYEE' THEN
8239 BEGIN
8240 SELECT employee_number,
8241 'EMPLYOEE',
8242 full_name
8243 INTO x_party_history_tbl(i).old_party_number,
8244 x_party_history_tbl(i).old_party_type,
8245 x_party_history_tbl(i).old_party_name
8246 FROM per_all_people_f
8247 WHERE person_id = x_party_history_tbl(i).old_party_id
8248 AND rownum < 2; -- Bug # 2183107 srramakr
8249 EXCEPTION
8250 WHEN OTHERS THEN
8251 NULL;
8252 END;
8253 ELSIF x_party_history_tbl(i).old_party_source_table = 'HZ_PARTIES' THEN
8254 BEGIN
8255 SELECT party_number,
8256 'PARTY',
8257 party_name
8258 INTO x_party_history_tbl(i).old_party_number,
8259 x_party_history_tbl(i).old_party_type,
8260 x_party_history_tbl(i).old_party_name
8261 FROM hz_parties
8262 WHERE party_id = x_party_history_tbl(i).old_party_id;
8263 EXCEPTION
8264 WHEN OTHERS THEN
8265 NULL;
8266 END;
8267 ELSIF x_party_history_tbl(i).old_party_source_table = 'PO_VENDORS' THEN
8268 BEGIN
8269 SELECT segment1,
8270 'VENDOR',
8271 vendor_name
8272 INTO x_party_history_tbl(i).old_party_number,
8273 x_party_history_tbl(i).old_party_type,
8274 x_party_history_tbl(i).old_party_name
8275 FROM po_vendors
8276 WHERE vendor_id = x_party_history_tbl(i).old_party_id;
8277 EXCEPTION
8278 WHEN OTHERS THEN
8279 NULL;
8280 END;
8281 ELSIF x_party_history_tbl(i).old_party_source_table = 'GROUP' THEN
8282 BEGIN
8283 SELECT group_number,
8284 'GROUP',
8285 group_name
8286 INTO x_party_history_tbl(i).old_party_number,
8287 x_party_history_tbl(i).old_party_type,
8288 x_party_history_tbl(i).old_party_name
8289 FROM jtf_rs_groups_vl
8290 WHERE group_id = x_party_history_tbl(i).old_party_id;
8291 EXCEPTION
8292 WHEN OTHERS THEN
8293 NULL;
8294 END;
8295 ELSIF x_party_history_tbl(i).old_party_source_table = 'TEAM' THEN
8296 BEGIN
8297 SELECT team_number,
8298 'TEAM',
8299 team_name
8300 INTO x_party_history_tbl(i).old_party_number,
8301 x_party_history_tbl(i).old_party_type,
8302 x_party_history_tbl(i).old_party_name
8303 FROM jtf_rs_teams_vl
8304 WHERE team_id = x_party_history_tbl(i).old_party_id;
8305 EXCEPTION
8306 WHEN OTHERS THEN
8307 NULL;
8308 END;
8309
8310 END IF;
8311
8312 --start of the code for resolve_id_columns for new records
8313 l_new_contact_party_id := x_party_history_tbl(i).new_party_id;
8314 l_new_contact_flag := x_party_history_tbl(i).new_contact_flag;
8315 l_new_party_source_tbl := x_party_history_tbl(i).new_party_source_table;
8316
8317 IF ((l_new_contact_party_id IS NOT NULL )
8318 AND ( l_new_party_source_tbl IS NOT NULL )
8319 AND ( l_new_contact_flag = 'Y') -- Added for bug 2179142
8320 )
8321 THEN
8322 csi_party_relationships_pvt.get_contact_details
8323 (
8324 p_api_version => p_api_version
8325 ,p_commit => p_commit
8326 ,p_init_msg_list => p_init_msg_list
8327 ,p_validation_level => p_validation_level
8328 ,p_contact_party_id => l_new_contact_party_id
8329 ,p_contact_flag => l_new_contact_flag
8330 ,p_party_tbl => l_new_party_source_tbl
8331 ,x_contact_details => l_contact_details
8332 ,x_return_status => x_return_status
8333 ,x_msg_count => x_msg_count
8334 ,x_msg_data => x_msg_data
8335 );
8336
8337
8338 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
8339 FOR i in 1..x_msg_Count LOOP
8340 FND_MSG_PUB.Get(p_msg_index => i,
8341 p_encoded => 'F',
8342 p_data => x_msg_data,
8343 p_msg_index_out => x_msg_index_out );
8344 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
8345 End LOOP;
8346 RAISE FND_API.G_EXC_ERROR;
8347 END IF;
8348
8349 x_party_history_tbl(i).new_contact_party_name := l_contact_details.party_name;
8350 -- Added for bug 2179142
8351 IF x_party_history_tbl(i).new_party_source_table = 'EMPLOYEE' THEN
8352 BEGIN
8353 SELECT employee_number,
8354 'EMPLYOEE'
8355 INTO x_party_history_tbl(i).new_contact_party_number,
8356 x_party_history_tbl(i).new_contact_party_type
8357 FROM per_all_people_f
8358 WHERE person_id = l_new_contact_party_id
8359 AND rownum < 2; -- Bug # 2183107 srramakr
8360 EXCEPTION
8361 WHEN OTHERS THEN
8362 NULL;
8363 END;
8364 ELSIF x_party_history_tbl(i).new_party_source_table = 'HZ_PARTIES' THEN
8365 BEGIN
8366 SELECT party_number,
8367 'PARTY'
8368 INTO x_party_history_tbl(i).new_contact_party_number,
8369 x_party_history_tbl(i).new_contact_party_type
8370 FROM hz_parties
8371 WHERE party_id = l_new_contact_party_id;
8372 EXCEPTION
8373 WHEN OTHERS THEN
8374 NULL;
8375 END;
8376 ELSIF x_party_history_tbl(i).new_party_source_table = 'PO_VENDORS' THEN
8377 BEGIN
8378 SELECT segment1,
8379 'VENDOR'
8380 INTO x_party_history_tbl(i).new_contact_party_number,
8381 x_party_history_tbl(i).new_contact_party_type
8382 FROM po_vendors
8383 WHERE vendor_id = l_new_contact_party_id;
8384 EXCEPTION
8385 WHEN OTHERS THEN
8386 NULL;
8387 END;
8388 ELSIF x_party_history_tbl(i).new_party_source_table = 'GROUP' THEN
8389 BEGIN
8390 SELECT group_number,
8391 'GROUP'
8392 INTO x_party_history_tbl(i).new_contact_party_number,
8393 x_party_history_tbl(i).new_contact_party_type
8394 FROM jtf_rs_groups_vl
8395 WHERE group_id = l_new_contact_party_id;
8396 EXCEPTION
8397 WHEN OTHERS THEN
8398 NULL;
8399 END;
8400 ELSIF x_party_history_tbl(i).new_party_source_table = 'TEAM' THEN
8401 BEGIN
8402 SELECT team_number,
8403 'TEAM'
8404 INTO x_party_history_tbl(i).new_contact_party_number,
8405 x_party_history_tbl(i).new_contact_party_type
8406 FROM jtf_rs_teams_vl
8407 WHERE team_id = x_party_history_tbl(i).new_party_id;
8408 EXCEPTION
8409 WHEN OTHERS THEN
8410 NULL;
8411 END;
8412
8413 END IF;
8414 -- End addition for bug 2179142
8415 IF NVL(l_old_contact_party_id,fnd_api.g_miss_num) <> NVL(l_new_contact_party_id,fnd_api.g_miss_num)
8416 THEN
8417 x_party_history_tbl(i).new_contact_work_phone_num := l_contact_details.officephone;
8418 x_party_history_tbl(i).new_contact_address1 := l_contact_details.address1;
8419 x_party_history_tbl(i).new_contact_address2 := l_contact_details.address2;
8420 x_party_history_tbl(i).new_contact_address3 := l_contact_details.address3;
8421 x_party_history_tbl(i).new_contact_address4 := l_contact_details.address4;
8422 x_party_history_tbl(i).new_contact_city := l_contact_details.city;
8423 x_party_history_tbl(i).new_contact_postal_code := l_contact_details.postal_code;
8424 x_party_history_tbl(i).new_contact_state := l_contact_details.state;
8425 x_party_history_tbl(i).new_contact_country := l_contact_details.country;
8426 x_party_history_tbl(i).new_contact_email_address := l_contact_details.email;
8427 END IF;
8428
8429 END IF;
8430
8431 IF x_party_history_tbl(i).new_party_source_table = 'EMPLOYEE' THEN
8432 BEGIN
8433 SELECT employee_number,
8434 'EMPLYOEE',
8435 full_name
8436 INTO x_party_history_tbl(i).new_party_number,
8437 x_party_history_tbl(i).new_party_type,
8438 x_party_history_tbl(i).new_party_name
8439 FROM per_all_people_f
8440 WHERE person_id = x_party_history_tbl(i).new_party_id
8441 AND rownum < 2; -- Bug # 2183107 srramakr
8442 EXCEPTION
8443 WHEN OTHERS THEN
8444 NULL;
8445 END;
8446 ELSIF x_party_history_tbl(i).new_party_source_table = 'HZ_PARTIES' THEN
8447 BEGIN
8448 SELECT party_number,
8449 'PARTY',
8450 party_name
8451 INTO x_party_history_tbl(i).new_party_number,
8452 x_party_history_tbl(i).new_party_type,
8453 x_party_history_tbl(i).new_party_name
8454 FROM hz_parties
8455 WHERE party_id = x_party_history_tbl(i).new_party_id;
8456 EXCEPTION
8457 WHEN OTHERS THEN
8458 NULL;
8459 END;
8460 ELSIF x_party_history_tbl(i).new_party_source_table = 'PO_VENDORS' THEN
8461 BEGIN
8462 SELECT segment1,
8463 'VENDOR',
8464 vendor_name
8465 INTO x_party_history_tbl(i).new_party_number,
8466 x_party_history_tbl(i).new_party_type,
8467 x_party_history_tbl(i).new_party_name
8468 FROM po_vendors
8469 WHERE vendor_id = x_party_history_tbl(i).new_party_id;
8470 EXCEPTION
8471 WHEN OTHERS THEN
8472 NULL;
8473 END;
8474 ELSIF x_party_history_tbl(i).new_party_source_table = 'GROUP' THEN
8475 BEGIN
8476 SELECT group_number,
8477 'GROUP',
8478 group_name
8479 INTO x_party_history_tbl(i).new_party_number,
8480 x_party_history_tbl(i).new_party_type,
8481 x_party_history_tbl(i).new_party_name
8482 FROM jtf_rs_groups_vl
8483 WHERE group_id = x_party_history_tbl(i).new_party_id;
8484 EXCEPTION
8485 WHEN OTHERS THEN
8486 NULL;
8487 END;
8488 ELSIF x_party_history_tbl(i).new_party_source_table = 'TEAM' THEN
8489 BEGIN
8490 SELECT team_number,
8491 'TEAM',
8492 team_name
8493 INTO x_party_history_tbl(i).new_party_number,
8494 x_party_history_tbl(i).new_party_type,
8495 x_party_history_tbl(i).new_party_name
8496 FROM jtf_rs_teams_vl
8497 WHERE team_id = x_party_history_tbl(i).new_party_id;
8498 EXCEPTION
8499 WHEN OTHERS THEN
8500 NULL;
8501 END;
8502 END IF;
8503 -- Added for bug 2781480
8504 /* Commented for bug 2179142
8505 IF NVL(x_party_history_tbl(i).old_party_source_table,fnd_api.g_miss_char) = NVL(x_party_history_tbl(i).new_party_source_table,fnd_api.g_miss_char)
8506 THEN
8507 x_party_history_tbl(i).old_party_source_table:=NULL;
8508 x_party_history_tbl(i).new_party_source_table:=NULL;
8509 END IF;
8510 */
8511 -- End addition for bug 2781480
8512
8513 -- Added for bug 2179142
8514
8515 IF NVL(x_party_history_tbl(i).old_party_id,fnd_api.g_miss_num)=NVL(x_party_history_tbl(i).new_party_id,fnd_api.g_miss_num)
8516 THEN
8517 x_party_history_tbl(i).old_party_id:=NULL;
8518 x_party_history_tbl(i).new_party_id:=NULL;
8519 END IF;
8520
8521 -- End addition for bug 2179142
8522 i := i + 1;
8523 --IF get_party_hist%NOTFOUND THEN
8524 --FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_TXN_ID');
8525 --FND_MSG_PUB.Add;
8526 --RAISE FND_API.G_EXC_ERROR;
8527 --END IF;
8528 END LOOP;
8529
8530 -- End of API body
8531
8532 -- Standard check of p_commit.
8533 /*
8534 IF FND_API.To_Boolean( p_commit ) THEN
8535 COMMIT WORK;
8536 END IF;
8537 */
8538
8539 /***** srramakr commented for bug # 3304439
8540 -- Check for the profile option and disable the trace
8541 IF (l_flag = 'Y') THEN
8542 dbms_session.set_sql_trace(false);
8543 END IF;
8544 -- End disable trace
8545 ****/
8546
8547 -- Standard call to get message count and if count is get message info.
8548 FND_MSG_PUB.Count_And_Get
8549 (p_count => x_msg_count ,
8550 p_data => x_msg_data );
8551 EXCEPTION
8552 WHEN FND_API.G_EXC_ERROR THEN
8553 -- ROLLBACK TO get_inst_party_rel_hist;
8554 x_return_status := FND_API.G_RET_STS_ERROR ;
8555 FND_MSG_PUB.Count_And_Get
8556 ( p_count => x_msg_count,
8557 p_data => x_msg_data );
8558 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8559 -- ROLLBACK TO get_inst_party_rel_hist;
8560 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8561 FND_MSG_PUB.Count_And_Get
8562 ( p_count => x_msg_count,
8563 p_data => x_msg_data );
8564 WHEN OTHERS THEN
8565 -- ROLLBACK TO get_inst_party_rel_hist;
8566 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8567 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
8568 FND_MSG_PUB.Add_Exc_Msg
8569 ( g_pkg_name ,
8570 l_api_name );
8571 END IF;
8572 FND_MSG_PUB.Count_And_Get
8573 ( p_count => x_msg_count,
8574 p_data => x_msg_data );
8575
8576 END get_inst_party_rel_hist;
8577
8578
8579
8580 /*------------------------------------------------------------*/
8581 /* Procedure name: get_inst_party_rel_hist */
8582 /* Description : Procedure used to get party relationships */
8583 /* from history given a transaction_id */
8584 /*------------------------------------------------------------*/
8585
8586 PROCEDURE get_inst_party_account_hist
8587 ( p_api_version IN NUMBER
8588 ,p_commit IN VARCHAR2
8589 ,p_init_msg_list IN VARCHAR2
8590 ,p_validation_level IN NUMBER
8591 ,p_transaction_id IN NUMBER
8592 ,x_account_history_tbl OUT NOCOPY csi_datastructures_pub.account_history_tbl
8593 ,x_return_status OUT NOCOPY VARCHAR2
8594 ,x_msg_count OUT NOCOPY NUMBER
8595 ,x_msg_data OUT NOCOPY VARCHAR2
8596 )IS
8597
8598 l_api_name CONSTANT VARCHAR2(30) := 'get_inst_party_account_hist' ;
8599 l_api_version CONSTANT NUMBER := 1.0 ;
8600 l_csi_debug_level NUMBER ;
8601 x_msg_index_out NUMBER ;
8602 l_count NUMBER := 0 ;
8603 l_flag VARCHAR2(1) :='N' ;
8604 i NUMBER :=1 ;
8605 l_account_header_tbl csi_datastructures_pub.party_account_header_tbl ;
8606 l_time_stamp DATE;
8607 l_party_account_query_rec csi_datastructures_pub.party_account_query_rec;
8608 CURSOR get_account_hist(i_transaction_id NUMBER)
8609 IS
8610 SELECT cah.IP_ACCOUNT_HISTORY_ID ,
8611 cah.IP_ACCOUNT_ID ,
8612 cah.TRANSACTION_ID ,
8613 cah.OLD_PARTY_ACCOUNT_ID ,
8614 cah.NEW_PARTY_ACCOUNT_ID ,
8615 cah.OLD_RELATIONSHIP_TYPE_CODE ,
8616 cah.NEW_RELATIONSHIP_TYPE_CODE ,
8617 cah.OLD_ACTIVE_START_DATE ,
8618 cah.NEW_ACTIVE_START_DATE ,
8619 cah.OLD_ACTIVE_END_DATE ,
8620 cah.NEW_ACTIVE_END_DATE ,
8621 cah.OLD_CONTEXT ,
8622 cah.NEW_CONTEXT ,
8623 cah.OLD_ATTRIBUTE1 ,
8624 cah.NEW_ATTRIBUTE1 ,
8625 cah.OLD_ATTRIBUTE2 ,
8626 cah.NEW_ATTRIBUTE2 ,
8627 cah.OLD_ATTRIBUTE3 ,
8628 cah.NEW_ATTRIBUTE3 ,
8629 cah.OLD_ATTRIBUTE4 ,
8630 cah.NEW_ATTRIBUTE4 ,
8631 cah.OLD_ATTRIBUTE5 ,
8632 cah.NEW_ATTRIBUTE5 ,
8633 cah.OLD_ATTRIBUTE6 ,
8634 cah.NEW_ATTRIBUTE6 ,
8635 cah.OLD_ATTRIBUTE7 ,
8636 cah.NEW_ATTRIBUTE7 ,
8637 cah.OLD_ATTRIBUTE8 ,
8638 cah.NEW_ATTRIBUTE8 ,
8639 cah.OLD_ATTRIBUTE9 ,
8640 cah.NEW_ATTRIBUTE9 ,
8641 cah.OLD_ATTRIBUTE10 ,
8642 cah.NEW_ATTRIBUTE10 ,
8643 cah.OLD_ATTRIBUTE11 ,
8644 cah.NEW_ATTRIBUTE11 ,
8645 cah.OLD_ATTRIBUTE12 ,
8646 cah.NEW_ATTRIBUTE12 ,
8647 cah.OLD_ATTRIBUTE13 ,
8648 cah.NEW_ATTRIBUTE13 ,
8649 cah.OLD_ATTRIBUTE14 ,
8650 cah.NEW_ATTRIBUTE14 ,
8651 cah.OLD_ATTRIBUTE15 ,
8652 cah.NEW_ATTRIBUTE15 ,
8653 cah.FULL_DUMP_FLAG ,
8654 cah.OBJECT_VERSION_NUMBER ,
8655 cah.OLD_BILL_TO_ADDRESS ,
8656 cah.NEW_BILL_TO_ADDRESS ,
8657 cah.OLD_SHIP_TO_ADDRESS ,
8658 cah.NEW_SHIP_TO_ADDRESS ,
8659 cip.INSTANCE_ID,
8660 cah.OLD_INSTANCE_PARTY_ID ,
8661 cah.NEW_INSTANCE_PARTY_ID,
8662 cah.creation_date
8663 FROM csi_ip_accounts_h cah,
8664 csi_ip_accounts ca,
8665 csi_i_parties cip
8666 WHERE cah.transaction_id = i_transaction_id
8667 AND cah.ip_account_id = ca.ip_account_id
8668 AND ca.instance_party_id = cip.instance_party_id; -- Added by sguthiva on 9-APR for bug 2304649
8669
8670 BEGIN
8671 -- Standard Start of API savepoint
8672 -- SAVEPOINT get_inst_party_account_hist;
8673
8674
8675 -- Standard call to check for call compatibility.
8676 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
8677 p_api_version ,
8678 l_api_name ,
8679 g_pkg_name )
8680 THEN
8681 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8682 END IF;
8683
8684 -- Initialize message list if p_init_msg_list is set to TRUE.
8685 IF FND_API.to_Boolean( p_init_msg_list ) THEN
8686 FND_MSG_PUB.initialize;
8687 END IF;
8688
8689 -- Initialize API return status to success
8690 x_return_status := FND_API.G_RET_STS_SUCCESS;
8691
8692 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
8693 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
8694
8695 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
8696 IF (l_csi_debug_level > 0) THEN
8697 csi_gen_utility_pvt.put_line( 'get_inst_party_account_hist');
8698 END IF;
8699
8700 -- If the debug level = 2 then dump all the parameters values.
8701 IF (l_csi_debug_level > 1) THEN
8702 csi_gen_utility_pvt.put_line( 'get_inst_party_account_hist' ||
8703 p_api_version ||'-'||
8704 p_commit ||'-'||
8705 p_init_msg_list ||'-'||
8706 p_validation_level ||'-'||
8707 p_transaction_id );
8708 -- dump the in parameter in the log file
8709
8710 END IF;
8711
8712 /***** srramakr commented for bug # 3304439
8713 -- Check for the profile option and enable trace
8714 l_flag:=csi_gen_utility_pvt.enable_trace(l_trace_flag => l_flag);
8715 -- End enable trace
8716 ****/
8717
8718 -- Start API body
8719
8720 FOR l_acct_hist_csr IN get_account_hist(p_transaction_id)
8721 LOOP
8722 x_account_history_tbl(i).ip_account_id := l_acct_hist_csr.ip_account_id;
8723 x_account_history_tbl(i).ip_account_history_id := l_acct_hist_csr.ip_account_history_id;
8724 x_account_history_tbl(i).transaction_id := l_acct_hist_csr.transaction_id;
8725
8726 IF NVL(l_acct_hist_csr.old_party_account_id,fnd_api.g_miss_num) = NVL(l_acct_hist_csr.new_party_account_id,fnd_api.g_miss_num)
8727 THEN
8728 x_account_history_tbl(i).old_party_account_id := NULL;
8729 x_account_history_tbl(i).new_party_account_id := NULL;
8730 ELSE
8731 x_account_history_tbl(i).old_party_account_id := l_acct_hist_csr.old_party_account_id;
8732 x_account_history_tbl(i).new_party_account_id := l_acct_hist_csr.new_party_account_id;
8733 END IF;
8734
8735 IF NVL(l_acct_hist_csr.old_relationship_type_code,fnd_api.g_miss_char) =
8736 NVL(l_acct_hist_csr.new_relationship_type_code,fnd_api.g_miss_num)
8737 THEN
8738 x_account_history_tbl(i).old_relationship_type_code := NULL;
8739 x_account_history_tbl(i).new_relationship_type_code := NULL;
8740 ELSE
8741 x_account_history_tbl(i).old_relationship_type_code := l_acct_hist_csr.old_relationship_type_code;
8742 x_account_history_tbl(i).new_relationship_type_code := l_acct_hist_csr.new_relationship_type_code;
8743 END IF;
8744
8745 IF NVL(l_acct_hist_csr.old_active_start_date,fnd_api.g_miss_date) = NVL(l_acct_hist_csr.new_active_start_date,fnd_api.g_miss_date)
8746 THEN
8747 x_account_history_tbl(i).old_active_start_date := NULL;
8748 x_account_history_tbl(i).new_active_start_date := NULL;
8749 ELSE
8750 x_account_history_tbl(i).old_active_start_date := l_acct_hist_csr.old_active_start_date;
8751 x_account_history_tbl(i).new_active_start_date := l_acct_hist_csr.new_active_start_date;
8752 END IF;
8753
8754 IF NVL(l_acct_hist_csr.old_active_end_date,fnd_api.g_miss_date) = NVL(l_acct_hist_csr.new_active_end_date,fnd_api.g_miss_date)
8755 THEN
8756 x_account_history_tbl(i).old_active_end_date := NULL;
8757 x_account_history_tbl(i).new_active_end_date := NULL;
8758 ELSE
8759 x_account_history_tbl(i).old_active_end_date := l_acct_hist_csr.old_active_end_date;
8760 x_account_history_tbl(i).new_active_end_date := l_acct_hist_csr.new_active_end_date;
8761 END IF;
8762
8763 IF NVL(l_acct_hist_csr.old_context,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_context,fnd_api.g_miss_char)
8764 THEN
8765 x_account_history_tbl(i).old_context := NULL;
8766 x_account_history_tbl(i).new_context := NULL;
8767 ELSE
8768 x_account_history_tbl(i).old_context := l_acct_hist_csr.old_context;
8769 x_account_history_tbl(i).new_context := l_acct_hist_csr.new_context;
8770 END IF;
8771
8772 IF NVL(l_acct_hist_csr.old_attribute1,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute1,fnd_api.g_miss_char)
8773 THEN
8774 x_account_history_tbl(i).old_attribute1 := NULL;
8775 x_account_history_tbl(i).new_attribute1 := NULL;
8776 ELSE
8777 x_account_history_tbl(i).old_attribute1 := l_acct_hist_csr.old_attribute1;
8778 x_account_history_tbl(i).new_attribute1 := l_acct_hist_csr.new_attribute1;
8779 END IF;
8780
8781 IF NVL(l_acct_hist_csr.old_attribute2,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute2,fnd_api.g_miss_char)
8782 THEN
8783 x_account_history_tbl(i).old_attribute2 := NULL;
8784 x_account_history_tbl(i).new_attribute2 := NULL;
8785 ELSE
8786 x_account_history_tbl(i).old_attribute2 := l_acct_hist_csr.old_attribute2;
8787 x_account_history_tbl(i).new_attribute2 := l_acct_hist_csr.new_attribute2;
8788 END IF;
8789
8790 IF NVL(l_acct_hist_csr.old_attribute3,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute3,fnd_api.g_miss_char)
8791 THEN
8792 x_account_history_tbl(i).old_attribute3 := NULL;
8793 x_account_history_tbl(i).new_attribute3 := NULL;
8794 ELSE
8795 x_account_history_tbl(i).old_attribute3 := l_acct_hist_csr.old_attribute3;
8796 x_account_history_tbl(i).new_attribute3 := l_acct_hist_csr.new_attribute3;
8797 END IF;
8798
8799
8800 IF NVL(l_acct_hist_csr.old_attribute4,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute4,fnd_api.g_miss_char)
8801 THEN
8802 x_account_history_tbl(i).old_attribute4 := NULL;
8803 x_account_history_tbl(i).new_attribute4 := NULL;
8804 ELSE
8805 x_account_history_tbl(i).old_attribute4 := l_acct_hist_csr.old_attribute4;
8806 x_account_history_tbl(i).new_attribute4 := l_acct_hist_csr.new_attribute4;
8807 END IF;
8808
8809 IF NVL(l_acct_hist_csr.old_attribute5,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute5,fnd_api.g_miss_char)
8810 THEN
8811 x_account_history_tbl(i).old_attribute5 := NULL;
8812 x_account_history_tbl(i).new_attribute5 := NULL;
8813 ELSE
8814 x_account_history_tbl(i).old_attribute5 := l_acct_hist_csr.old_attribute5;
8815 x_account_history_tbl(i).new_attribute5 := l_acct_hist_csr.new_attribute5;
8816 END IF;
8817
8818 IF NVL(l_acct_hist_csr.old_attribute6,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute6,fnd_api.g_miss_char)
8819 THEN
8820 x_account_history_tbl(i).old_attribute6 := NULL;
8821 x_account_history_tbl(i).new_attribute6 := NULL;
8822 ELSE
8823 x_account_history_tbl(i).old_attribute6 := l_acct_hist_csr.old_attribute6;
8824 x_account_history_tbl(i).new_attribute6 := l_acct_hist_csr.new_attribute6;
8825 END IF;
8826
8827 IF NVL(l_acct_hist_csr.old_attribute7,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute7,fnd_api.g_miss_char)
8828 THEN
8829 x_account_history_tbl(i).old_attribute7 := NULL;
8830 x_account_history_tbl(i).new_attribute7 := NULL;
8831 ELSE
8832 x_account_history_tbl(i).old_attribute7 := l_acct_hist_csr.old_attribute7;
8833 x_account_history_tbl(i).new_attribute7 := l_acct_hist_csr.new_attribute7;
8834 END IF;
8835
8836 IF NVL(l_acct_hist_csr.old_attribute8,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute8,fnd_api.g_miss_char)
8837 THEN
8838 x_account_history_tbl(i).old_attribute8 := NULL;
8839 x_account_history_tbl(i).new_attribute8 := NULL;
8840 ELSE
8841 x_account_history_tbl(i).old_attribute8 := l_acct_hist_csr.old_attribute8;
8842 x_account_history_tbl(i).new_attribute8 := l_acct_hist_csr.new_attribute8;
8843 END IF;
8844
8845 IF NVL(l_acct_hist_csr.old_attribute9,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute9,fnd_api.g_miss_char)
8846 THEN
8847 x_account_history_tbl(i).old_attribute9 := NULL;
8848 x_account_history_tbl(i).new_attribute9 := NULL;
8849 ELSE
8850 x_account_history_tbl(i).old_attribute9 := l_acct_hist_csr.old_attribute9;
8851 x_account_history_tbl(i).new_attribute9 := l_acct_hist_csr.new_attribute9;
8852 END IF;
8853
8854 IF NVL(l_acct_hist_csr.old_attribute10,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute10,fnd_api.g_miss_char)
8855 THEN
8856 x_account_history_tbl(i).old_attribute10 := NULL;
8857 x_account_history_tbl(i).new_attribute10 := NULL;
8858 ELSE
8859 x_account_history_tbl(i).old_attribute10 := l_acct_hist_csr.old_attribute10;
8860 x_account_history_tbl(i).new_attribute10 := l_acct_hist_csr.new_attribute10;
8861 END IF;
8862
8863 IF NVL(l_acct_hist_csr.old_attribute11,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute11,fnd_api.g_miss_char)
8864 THEN
8865 x_account_history_tbl(i).old_attribute11 := NULL;
8866 x_account_history_tbl(i).new_attribute11 := NULL;
8867 ELSE
8868 x_account_history_tbl(i).old_attribute11 := l_acct_hist_csr.old_attribute11;
8869 x_account_history_tbl(i).new_attribute11 := l_acct_hist_csr.new_attribute11;
8870 END IF;
8871
8872 IF NVL(l_acct_hist_csr.old_attribute12,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute12,fnd_api.g_miss_char)
8873 THEN
8874 x_account_history_tbl(i).old_attribute12 := NULL;
8875 x_account_history_tbl(i).new_attribute12 := NULL;
8876 ELSE
8877 x_account_history_tbl(i).old_attribute12 := l_acct_hist_csr.old_attribute12;
8878 x_account_history_tbl(i).new_attribute12 := l_acct_hist_csr.new_attribute12;
8879 END IF;
8880
8881 IF NVL(l_acct_hist_csr.old_attribute13,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute13,fnd_api.g_miss_char)
8882 THEN
8883 x_account_history_tbl(i).old_attribute13 := NULL;
8884 x_account_history_tbl(i).new_attribute13 := NULL;
8885 ELSE
8886 x_account_history_tbl(i).old_attribute13 := l_acct_hist_csr.old_attribute13;
8887 x_account_history_tbl(i).new_attribute13 := l_acct_hist_csr.new_attribute13;
8888 END IF;
8889
8890 IF NVL(l_acct_hist_csr.old_attribute14,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute14,fnd_api.g_miss_char)
8891 THEN
8892 x_account_history_tbl(i).old_attribute14 := NULL;
8893 x_account_history_tbl(i).new_attribute14 := NULL;
8894 ELSE
8895 x_account_history_tbl(i).old_attribute14 := l_acct_hist_csr.old_attribute14;
8896 x_account_history_tbl(i).new_attribute14 := l_acct_hist_csr.new_attribute14;
8897 END IF;
8898
8899 IF NVL(l_acct_hist_csr.old_attribute15,fnd_api.g_miss_char) = NVL(l_acct_hist_csr.new_attribute15,fnd_api.g_miss_char)
8900 THEN
8901 x_account_history_tbl(i).old_attribute15 := NULL;
8902 x_account_history_tbl(i).new_attribute15 := NULL;
8903 ELSE
8904 x_account_history_tbl(i).old_attribute15 := l_acct_hist_csr.old_attribute15;
8905 x_account_history_tbl(i).new_attribute15 := l_acct_hist_csr.new_attribute15;
8906 END IF;
8907
8908 IF NVL(l_acct_hist_csr.old_bill_to_address,fnd_api.g_miss_num) = NVL(l_acct_hist_csr.new_bill_to_address,fnd_api.g_miss_num)
8909 THEN
8910 x_account_history_tbl(i).old_bill_to_address := NULL;
8911 x_account_history_tbl(i).new_bill_to_address := NULL;
8912 ELSE
8913 x_account_history_tbl(i).old_bill_to_address := l_acct_hist_csr.old_bill_to_address;
8914 x_account_history_tbl(i).new_bill_to_address := l_acct_hist_csr.new_bill_to_address;
8915 END IF;
8916
8917 IF NVL(l_acct_hist_csr.old_ship_to_address,fnd_api.g_miss_num) = NVL(l_acct_hist_csr.new_ship_to_address,fnd_api.g_miss_num)
8918 THEN
8919 x_account_history_tbl(i).old_ship_to_address := NULL;
8920 x_account_history_tbl(i).new_ship_to_address := NULL;
8921 ELSE
8922 x_account_history_tbl(i).old_ship_to_address := l_acct_hist_csr.old_ship_to_address;
8923 x_account_history_tbl(i).new_ship_to_address := l_acct_hist_csr.new_ship_to_address;
8924 END IF;
8925
8926 IF NVL(l_acct_hist_csr.old_instance_party_id,fnd_api.g_miss_num) = NVL(l_acct_hist_csr.new_instance_party_id,fnd_api.g_miss_num)
8927 THEN
8928 x_account_history_tbl(i).old_instance_party_id := NULL;
8929 x_account_history_tbl(i).new_instance_party_id := NULL;
8930 ELSE
8931 x_account_history_tbl(i).old_instance_party_id := l_acct_hist_csr.old_instance_party_id;
8932 x_account_history_tbl(i).new_instance_party_id := l_acct_hist_csr.new_instance_party_id;
8933 END IF;
8934
8935 x_account_history_tbl(i).object_version_number := l_acct_hist_csr.object_version_number;
8936 x_account_history_tbl(i).instance_id := l_acct_hist_csr.instance_id; -- added by sguthiva on 9-apr for bug 2304649
8937 x_account_history_tbl(i).full_dump_flag := l_acct_hist_csr.full_dump_flag;
8938
8939 IF (x_account_history_tbl(i).old_relationship_type_code IS NULL AND
8940 x_account_history_tbl(i).new_relationship_type_code IS NULL ) OR
8941 (x_account_history_tbl(i).old_party_account_id IS NULL AND
8942 x_account_history_tbl(i).new_party_account_id IS NULL)
8943 THEN
8944 l_party_account_query_rec.ip_account_id := x_account_history_tbl(i).ip_account_id;
8945 l_time_stamp:=l_acct_hist_csr.creation_date;
8946 csi_party_relationships_pub.get_inst_party_accounts
8947 ( p_api_version => p_api_version
8948 ,p_commit => p_commit
8949 ,p_init_msg_list => p_init_msg_list
8950 ,p_validation_level => p_validation_level
8951 ,p_account_query_rec => l_party_account_query_rec
8952 ,p_resolve_id_columns => fnd_api.g_false
8953 ,p_time_stamp => l_time_stamp
8954 ,x_account_header_tbl => l_account_header_tbl
8955 ,x_return_status => x_return_status
8956 ,x_msg_count => x_msg_count
8957 ,x_msg_data => x_msg_data);
8958
8959 IF (x_account_history_tbl(i).old_relationship_type_code IS NULL AND
8960 x_account_history_tbl(i).new_relationship_type_code IS NULL )
8961 THEN
8962 x_account_history_tbl(i).old_relationship_type_code := l_account_header_tbl(1).relationship_type_code;
8963 x_account_history_tbl(i).new_relationship_type_code := l_account_header_tbl(1).relationship_type_code;
8964 END IF;
8965
8966 IF (x_account_history_tbl(i).old_party_account_id IS NULL AND
8967 x_account_history_tbl(i).new_party_account_id IS NULL)
8968 THEN
8969 x_account_history_tbl(i).old_party_account_id := l_account_header_tbl(1).party_account_id;
8970 x_account_history_tbl(i).new_party_account_id := l_account_header_tbl(1).party_account_id;
8971 END IF;
8972
8973 END IF;
8974
8975 -- Resolve old history columns;
8976 l_account_header_tbl(1).party_account_id := x_account_history_tbl(i).OLD_PARTY_ACCOUNT_ID;
8977 l_account_header_tbl(1).bill_to_address := x_account_history_tbl(i).OLD_BILL_TO_ADDRESS;
8978 l_account_header_tbl(1).ship_to_address := x_account_history_tbl(i).OLD_SHIP_TO_ADDRESS;
8979 l_account_header_tbl(1).party_account_number := NULL;
8980 l_account_header_tbl(1).party_account_name := NULL;
8981 l_account_header_tbl(1).bill_to_location := NULL;
8982 l_account_header_tbl(1).ship_to_location := NULL;
8983 -- Following columns were added for bug 2670371
8984 l_account_header_tbl(1).bill_to_address1 := NULL;
8985 l_account_header_tbl(1).bill_to_address2 := NULL;
8986 l_account_header_tbl(1).bill_to_address3 := NULL;
8987 l_account_header_tbl(1).bill_to_address4 := NULL;
8988 l_account_header_tbl(1).bill_to_city := NULL;
8989 l_account_header_tbl(1).bill_to_state := NULL;
8990 l_account_header_tbl(1).bill_to_postal_code := NULL;
8991 l_account_header_tbl(1).bill_to_country := NULL;
8992 l_account_header_tbl(1).ship_to_address1 := NULL;
8993 l_account_header_tbl(1).ship_to_address2 := NULL;
8994 l_account_header_tbl(1).ship_to_address3 := NULL;
8995 l_account_header_tbl(1).ship_to_address4 := NULL;
8996 l_account_header_tbl(1).ship_to_city := NULL;
8997 l_account_header_tbl(1).ship_to_state := NULL;
8998 l_account_header_tbl(1).ship_to_postal_code := NULL;
8999 l_account_header_tbl(1).ship_to_country := NULL;
9000
9001
9002 csi_party_relationships_pvt.Resolve_id_columns(l_account_header_tbl);
9003
9004 x_account_history_tbl(i).old_party_account_number := l_account_header_tbl(1).party_account_number;
9005 x_account_history_tbl(i).old_party_account_name := l_account_header_tbl(1).party_account_name;
9006 x_account_history_tbl(i).old_bill_to_location := l_account_header_tbl(1).bill_to_location;
9007 x_account_history_tbl(i).old_ship_to_location := l_account_header_tbl(1).ship_to_location;
9008
9009 -- Following columns were added for bug 2670371
9010 x_account_history_tbl(i).old_bill_to_address1 := l_account_header_tbl(1).bill_to_address1;
9011 x_account_history_tbl(i).old_bill_to_address2 := l_account_header_tbl(1).bill_to_address2;
9012 x_account_history_tbl(i).old_bill_to_address3 := l_account_header_tbl(1).bill_to_address3;
9013 x_account_history_tbl(i).old_bill_to_address4 := l_account_header_tbl(1).bill_to_address4;
9014 x_account_history_tbl(i).old_bill_to_city := l_account_header_tbl(1).bill_to_city;
9015 x_account_history_tbl(i).old_bill_to_state := l_account_header_tbl(1).bill_to_state;
9016 x_account_history_tbl(i).old_bill_to_postal_code := l_account_header_tbl(1).bill_to_postal_code;
9017 x_account_history_tbl(i).old_bill_to_country := l_account_header_tbl(1).bill_to_country;
9018 x_account_history_tbl(i).old_ship_to_address1 := l_account_header_tbl(1).ship_to_address1;
9019 x_account_history_tbl(i).old_ship_to_address2 := l_account_header_tbl(1).ship_to_address2;
9020 x_account_history_tbl(i).old_ship_to_address3 := l_account_header_tbl(1).ship_to_address3;
9021 x_account_history_tbl(i).old_ship_to_address4 := l_account_header_tbl(1).ship_to_address4;
9022 x_account_history_tbl(i).old_ship_to_city := l_account_header_tbl(1).ship_to_city;
9023 x_account_history_tbl(i).old_ship_to_state := l_account_header_tbl(1).ship_to_state;
9024 x_account_history_tbl(i).old_ship_to_postal_code := l_account_header_tbl(1).ship_to_postal_code;
9025 x_account_history_tbl(i).old_ship_to_country := l_account_header_tbl(1).ship_to_country;
9026 -- Resolve new history columns;
9027 l_account_header_tbl(1).party_account_id := x_account_history_tbl(i).NEW_PARTY_ACCOUNT_ID;
9028 l_account_header_tbl(1).bill_to_address := x_account_history_tbl(i).NEW_BILL_TO_ADDRESS;
9029 l_account_header_tbl(1).ship_to_address := x_account_history_tbl(i).NEW_SHIP_TO_ADDRESS;
9030 l_account_header_tbl(1).party_account_number := NULL;
9031 l_account_header_tbl(1).party_account_name := NULL;
9032 l_account_header_tbl(1).bill_to_location := NULL;
9033 l_account_header_tbl(1).ship_to_location := NULL;
9034
9035 -- Following columns were added for bug 2670371
9036 l_account_header_tbl(1).bill_to_address1 := NULL;
9037 l_account_header_tbl(1).bill_to_address2 := NULL;
9038 l_account_header_tbl(1).bill_to_address3 := NULL;
9039 l_account_header_tbl(1).bill_to_address4 := NULL;
9040 l_account_header_tbl(1).bill_to_city := NULL;
9041 l_account_header_tbl(1).bill_to_state := NULL;
9042 l_account_header_tbl(1).bill_to_postal_code := NULL;
9043 l_account_header_tbl(1).bill_to_country := NULL;
9044 l_account_header_tbl(1).ship_to_address1 := NULL;
9045 l_account_header_tbl(1).ship_to_address2 := NULL;
9046 l_account_header_tbl(1).ship_to_address3 := NULL;
9047 l_account_header_tbl(1).ship_to_address4 := NULL;
9048 l_account_header_tbl(1).ship_to_city := NULL;
9049 l_account_header_tbl(1).ship_to_state := NULL;
9050 l_account_header_tbl(1).ship_to_postal_code := NULL;
9051 l_account_header_tbl(1).ship_to_country := NULL;
9052
9053 csi_party_relationships_pvt.Resolve_id_columns(l_account_header_tbl);
9054
9055 x_account_history_tbl(i).new_party_account_number := l_account_header_tbl(1).party_account_number;
9056 x_account_history_tbl(i).new_party_account_name := l_account_header_tbl(1).party_account_name;
9057 x_account_history_tbl(i).new_bill_to_location := l_account_header_tbl(1).bill_to_location;
9058 x_account_history_tbl(i).new_ship_to_location := l_account_header_tbl(1).ship_to_location;
9059
9060 -- Following columns were added for bug 2670371
9061
9062 x_account_history_tbl(i).new_bill_to_address1 := l_account_header_tbl(1).bill_to_address1;
9063 x_account_history_tbl(i).new_bill_to_address2 := l_account_header_tbl(1).bill_to_address2;
9064 x_account_history_tbl(i).new_bill_to_address3 := l_account_header_tbl(1).bill_to_address3;
9065 x_account_history_tbl(i).new_bill_to_address4 := l_account_header_tbl(1).bill_to_address4;
9066 x_account_history_tbl(i).new_bill_to_city := l_account_header_tbl(1).bill_to_city;
9067 x_account_history_tbl(i).new_bill_to_state := l_account_header_tbl(1).bill_to_state;
9068 x_account_history_tbl(i).new_bill_to_postal_code := l_account_header_tbl(1).bill_to_postal_code;
9069 x_account_history_tbl(i).new_bill_to_country := l_account_header_tbl(1).bill_to_country;
9070 x_account_history_tbl(i).new_ship_to_address1 := l_account_header_tbl(1).ship_to_address1;
9071 x_account_history_tbl(i).new_ship_to_address2 := l_account_header_tbl(1).ship_to_address2;
9072 x_account_history_tbl(i).new_ship_to_address3 := l_account_header_tbl(1).ship_to_address3;
9073 x_account_history_tbl(i).new_ship_to_address4 := l_account_header_tbl(1).ship_to_address4;
9074 x_account_history_tbl(i).new_ship_to_city := l_account_header_tbl(1).ship_to_city;
9075 x_account_history_tbl(i).new_ship_to_state := l_account_header_tbl(1).ship_to_state;
9076 x_account_history_tbl(i).new_ship_to_postal_code := l_account_header_tbl(1).ship_to_postal_code;
9077 x_account_history_tbl(i).new_ship_to_country := l_account_header_tbl(1).ship_to_country;
9078
9079 IF NVL(x_account_history_tbl(i).old_party_account_id,fnd_api.g_miss_num)=
9080 NVL(x_account_history_tbl(i).new_party_account_id,fnd_api.g_miss_num)
9081 THEN
9082 x_account_history_tbl(i).old_party_account_id := NULL;
9083 x_account_history_tbl(i).new_party_account_id := NULL;
9084 END IF;
9085
9086
9087 i := i + 1;
9088
9089 END LOOP;
9090
9091 -- End of API body
9092
9093 -- Standard check of p_commit.
9094 /*
9095 IF FND_API.To_Boolean( p_commit ) THEN
9096 COMMIT WORK;
9097 END IF;
9098 */
9099
9100 /***** srramakr commented for bug # 3304439
9101 -- Check for the profile option and disable the trace
9102 IF (l_flag = 'Y') THEN
9103 dbms_session.set_sql_trace(false);
9104 END IF;
9105 -- End disable trace
9106 ****/
9107
9108 -- Standard call to get message count and if count is get message info.
9109 FND_MSG_PUB.Count_And_Get
9110 (p_count => x_msg_count ,
9111 p_data => x_msg_data );
9112 EXCEPTION
9113 WHEN FND_API.G_EXC_ERROR THEN
9114 -- ROLLBACK TO get_inst_party_account_hist;
9115 x_return_status := FND_API.G_RET_STS_ERROR ;
9116 FND_MSG_PUB.Count_And_Get
9117 ( p_count => x_msg_count,
9118 p_data => x_msg_data );
9119 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9120 -- ROLLBACK TO get_inst_party_account_hist;
9121 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9122 FND_MSG_PUB.Count_And_Get
9123 ( p_count => x_msg_count,
9124 p_data => x_msg_data );
9125 WHEN OTHERS THEN
9126 -- ROLLBACK TO get_inst_party_account_hist;
9127 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9128 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
9129 FND_MSG_PUB.Add_Exc_Msg
9130 ( g_pkg_name ,
9131 l_api_name );
9132 END IF;
9133 FND_MSG_PUB.Count_And_Get
9134 ( p_count => x_msg_count,
9135 p_data => x_msg_data );
9136
9137 END get_inst_party_account_hist;
9138
9139 END csi_party_relationships_pvt ;