[Home] [Help]
PACKAGE BODY: APPS.CSI_PARTY_RELATIONSHIPS_PVT
Source
1 PACKAGE BODY csi_party_relationships_pvt AS
2 /* $Header: csivipb.pls 120.12 2007/10/20 00:51:30 fli 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 FROM csi_item_instances
2490 WHERE instance_id = p_instance_id;
2491
2492 l_curr_instance_rec csi_datastructures_pub.instance_rec;
2493
2494
2495 CURSOR pty_hist_csr (p_party_hist_id NUMBER) IS
2496 SELECT instance_party_history_id
2497 ,instance_party_id
2498 ,transaction_id
2499 ,old_party_source_table
2500 ,new_party_source_table
2501 ,old_party_id
2502 ,new_party_id
2503 ,old_relationship_type_code
2504 ,new_relationship_type_code
2505 ,old_contact_flag
2506 ,new_contact_flag
2507 ,old_contact_ip_id
2508 ,new_contact_ip_id
2509 ,old_active_start_date
2510 ,new_active_start_date
2511 ,old_active_end_date
2512 ,new_active_end_date
2513 ,old_context
2514 ,new_context
2515 ,old_attribute1
2516 ,new_attribute1
2517 ,old_attribute2
2518 ,new_attribute2
2519 ,old_attribute3
2520 ,new_attribute3
2521 ,old_attribute4
2522 ,new_attribute4
2523 ,old_attribute5
2524 ,new_attribute5
2525 ,old_attribute6
2526 ,new_attribute6
2527 ,old_attribute7
2528 ,new_attribute7
2529 ,old_attribute8
2530 ,new_attribute8
2531 ,old_attribute9
2532 ,new_attribute9
2533 ,old_attribute10
2534 ,new_attribute10
2535 ,old_attribute11
2536 ,new_attribute11
2537 ,old_attribute12
2538 ,new_attribute12
2539 ,old_attribute13
2540 ,new_attribute13
2541 ,old_attribute14
2542 ,new_attribute14
2543 ,old_attribute15
2544 ,new_attribute15
2545 ,full_dump_flag
2546 ,object_version_number
2547 ,old_primary_flag
2548 ,new_primary_flag
2549 ,old_preferred_flag
2550 ,new_preferred_flag
2551 FROM csi_i_parties_h
2552 WHERE csi_i_parties_h.instance_party_history_id = p_party_hist_id
2553 FOR UPDATE OF object_version_number ;
2554 l_pty_hist_csr pty_hist_csr%rowtype;
2555 l_party_hist_id NUMBER;
2556 l_open_service VARCHAR2(1);
2557 l_party_hist_rec csi_datastructures_pub.party_history_rec;
2558 l_ins_pty_found NUMBER;
2559 l_pty_end_date DATE;
2560 BEGIN
2561 -- Standard Start of API savepoint
2562 -- SAVEPOINT update_inst_party_rel_pvt ;
2563
2564 -- Standard call to check for call compatibility.
2565 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
2566 p_api_version ,
2567 l_api_name ,
2568 g_pkg_name )
2569 THEN
2570 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2571 END IF;
2572
2573 -- Initialize message list if p_init_msg_list is set to TRUE.
2574 IF FND_API.to_Boolean( p_init_msg_list ) THEN
2575 FND_MSG_PUB.initialize;
2576 END IF;
2577
2578 -- Initialize API return status to success
2579 x_return_status := FND_API.G_RET_STS_SUCCESS;
2580
2581 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
2582 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
2583
2584 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
2585 IF (l_csi_debug_level > 0) THEN
2586 csi_gen_utility_pvt.put_line( 'update_inst_party_relationship ');
2587 END IF;
2588
2589 -- If the debug level = 2 then dump all the parameters values.
2590 IF (l_csi_debug_level> 1) THEN
2591 csi_gen_utility_pvt.put_line( 'update_inst_party_relationship:' ||
2592 p_api_version ||'-'||
2593 p_commit ||'-'||
2594 p_init_msg_list );
2595 -- Dump the records in the log file
2596 csi_gen_utility_pvt.dump_party_rec(p_party_rec);
2597 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
2598 END IF;
2599 -- Start API body
2600 --
2601 -- Check if all the required parameters are passed
2602 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
2603 ( p_party_rec.INSTANCE_PARTY_ID ,
2604 ' p_party_rec.INSTANCE_PARTY_ID ',
2605 l_api_name );
2606 --
2607 IF p_party_rec.party_id IS NULL THEN
2608 FND_MESSAGE.SET_NAME('CSI','CSI_API_MANDATORY_PARTY');
2609 FND_MSG_PUB.Add;
2610 RAISE FND_API.G_EXC_ERROR;
2611 END IF;
2612 --
2613 -- Check if the instance party id is valid
2614 -- End commentation by sk for bug 2232880
2615 -- Verify if the instance_id exists in csi_item_instances
2616 IF p_party_rec.INSTANCE_ID <> FND_API.G_MISS_NUM THEN
2617 IF NOT(CSI_Instance_parties_vld_pvt.Is_InstanceID_Valid(p_party_rec.INSTANCE_ID)) THEN
2618 RAISE FND_API.G_EXC_ERROR;
2619 END IF;
2620 END IF;
2621 -- Verify the instance owner exists already if exists then raise error
2622 IF p_party_rec.RELATIONSHIP_TYPE_CODE = 'OWNER' THEN
2623 IF CSI_Instance_parties_vld_pvt.Is_Inst_Owner_exists
2624 (p_instance_id => p_party_rec.INSTANCE_ID,
2625 p_instance_party_id => p_party_rec.instance_party_id ) THEN
2626 RAISE FND_API.G_EXC_ERROR;
2627 END IF;
2628 END IF;
2629 -- start of addition of code by rtalluri for bugfix 2324745 on 04/23/02
2630 -- validating the owner
2631 IF l_curr_party_rec.instance_party_id = p_party_rec.instance_party_id
2632 AND l_curr_party_rec.party_id <> p_party_rec.party_id
2633 AND (p_party_rec.party_id is not null and p_party_rec.party_id <> fnd_api.g_miss_num)
2634 AND l_curr_party_rec.relationship_type_code = 'OWNER'
2635 THEN
2636 OPEN curr_instance_rec(p_party_rec.instance_id);
2637 FETCH curr_instance_rec INTO l_curr_instance_rec;
2638 IF NOT (csi_item_instance_vld_pvt.Validate_Uniqueness(p_instance_rec => l_curr_instance_rec,
2639 p_party_rec => p_party_rec,
2640 p_csi_txn_type_id => p_txn_rec.transaction_type_id
2641 )) THEN
2642 RAISE FND_API.G_EXC_ERROR;
2643 END IF;
2644 CLOSE curr_instance_rec;
2645 END IF;
2646 -- end of addition of code by rtalluri for bugfix 2324745 on 04/23/02
2647 -- The following code has been added for the following scenario...
2648 -- For the customer merge/account merge, all the parent and the child instances
2649 -- were selected before calling update_item_instance.
2650 -- In this case the child records object_version numbers will be updated
2651 -- if the child owner party is same as the parent.
2652 IF p_txn_rec.transaction_type_id=7
2653 THEN
2654 BEGIN
2655 SELECT object_version_number
2656 INTO p_party_rec.object_version_number
2657 FROM csi_i_parties
2658 WHERE instance_party_id=p_party_rec.instance_party_id;
2659 EXCEPTION
2660 WHEN NO_DATA_FOUND THEN
2661 csi_gen_utility_pvt.put_line('Passed instance_party_id : '||p_party_rec.instance_party_id||' is not found.');
2662 RAISE FND_API.G_EXC_ERROR;
2663 END;
2664 END IF;
2665 -- check if the object_version_number passed matches with the one
2666 -- in the database else raise error
2667 OPEN get_curr_party_rec(p_party_rec.INSTANCE_PARTY_ID);
2668 FETCH get_curr_party_rec INTO l_curr_party_rec;
2669 IF (l_curr_party_rec.object_version_number <> p_party_rec.OBJECT_VERSION_NUMBER) THEN
2670 FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
2671 FND_MSG_PUB.ADD;
2672 RAISE FND_API.G_EXC_ERROR;
2673 END IF;
2674 --
2675 IF get_curr_party_rec%NOTFOUND THEN
2676 FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
2677 FND_MSG_PUB.ADD;
2678 RAISE FND_API.G_EXC_ERROR;
2679 END IF;
2680 CLOSE get_curr_party_rec;
2681 --
2682 IF p_party_rec.instance_id <> FND_API.G_MISS_NUM THEN
2683 IF p_party_rec.instance_id <> l_curr_party_rec.instance_id THEN
2684 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
2685 FND_MESSAGE.Set_Token('COLUMN', 'INSTANCE_ID');
2686 FND_MSG_PUB.ADD;
2687 RAISE FND_API.G_EXC_ERROR;
2688 END IF;
2689 END IF;
2690 --
2691 IF p_party_rec.active_start_date IS NULL THEN
2692 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
2693 FND_MESSAGE.Set_Token('COLUMN', 'ACTIVE_START_DATE');
2694 FND_MSG_PUB.ADD;
2695 RAISE FND_API.G_EXC_ERROR;
2696 END IF;
2697 --
2698 IF p_party_rec.active_start_date <> FND_API.G_MISS_DATE THEN
2699 IF p_party_rec.active_start_date <> l_curr_party_rec.active_start_date THEN
2700 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
2701 FND_MESSAGE.Set_Token('COLUMN', 'ACTIVE_START_DATE');
2702 FND_MSG_PUB.ADD;
2703 RAISE FND_API.G_EXC_ERROR;
2704 END IF;
2705 END IF;
2706 -- Increment the object_version_number before updating
2707 l_OBJECT_VERSION_NUMBER := l_curr_party_rec.OBJECT_VERSION_NUMBER + 1 ;
2708 -- Verify if the active_end_date is valid
2709 -- Don't allow expiry of owner parties
2710 IF p_party_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE THEN
2711 IF l_curr_party_rec.relationship_type_code = 'OWNER' THEN
2712 FND_MESSAGE.Set_Name('CSI', 'CSI_API_EXP_NOT_ALLOWED');
2713 FND_MESSAGE.Set_Token('COLUMN', 'OWNER PARTY');
2714 FND_MSG_PUB.ADD;
2715 RAISE FND_API.G_EXC_ERROR;
2716 ELSE
2717 -- Verify if the active_end_date is valid
2718 IF (g_expire_party_flag <> 'Y') THEN
2719 IF NOT(CSI_Instance_parties_vld_pvt.Is_EndDate_Valid
2720 (l_curr_party_rec.ACTIVE_START_DATE,
2721 p_party_rec.ACTIVE_END_DATE ,
2722 p_party_rec.INSTANCE_ID,
2723 p_party_rec.INSTANCE_PARTY_ID,
2724 p_txn_rec.TRANSACTION_ID)) THEN
2725 RAISE FND_API.G_EXC_ERROR;
2726 END IF;
2727 END IF;
2728 END IF;
2729 END IF;
2730 --
2731 IF p_party_rec.relationship_type_code <> FND_API.G_MISS_CHAR THEN
2732 IF ((p_party_rec.relationship_type_code <> l_curr_party_rec.relationship_type_code)
2733 AND l_curr_party_rec.relationship_type_code = 'OWNER' ) THEN
2734 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
2735 FND_MESSAGE.Set_Token('COLUMN', 'OWNER PARTY');
2736
2737 FND_MSG_PUB.ADD;
2738 RAISE FND_API.G_EXC_ERROR;
2739 ELSE
2740 -- Verify the relationship_type_code is valid
2741 IF p_party_rec.contact_flag = 'Y' THEN
2742 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_Rel_type_Valid
2743 (p_party_rec.RELATIONSHIP_TYPE_CODE,
2744 'C' )) THEN
2745 RAISE FND_API.G_EXC_ERROR;
2746 END IF;
2747 ELSE
2748 -- Verify the relationship_type_code is valid
2749 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_Rel_type_Valid
2750 (p_party_rec.RELATIONSHIP_TYPE_CODE,
2751 'P' )) THEN
2752 RAISE FND_API.G_EXC_ERROR;
2753 END IF;
2754 END IF;
2755 END IF;
2756 END IF;
2757
2758 -- Verify that there is only one Preferred Party for a
2759 -- given instance party relationship
2760 IF p_party_rec.preferred_flag <> FND_API.G_MISS_CHAR THEN
2761 IF ((p_party_rec.preferred_flag IS NULL AND l_curr_party_rec.preferred_flag IS NOT NULL)
2762 OR (p_party_rec.preferred_flag IS NOT NULL AND l_curr_party_rec.preferred_flag IS NULL)
2763 OR (p_party_rec.preferred_flag <> l_curr_party_rec.preferred_flag)
2764 AND (p_party_rec.preferred_flag = 'Y')) THEN
2765 IF p_party_rec.CONTACT_FLAG <> 'Y' THEN
2766 IF (((p_party_rec.PARTY_SOURCE_TABLE <> FND_API.G_MISS_CHAR)
2767 AND (p_party_rec.PARTY_SOURCE_TABLE NOT IN ('GROUP','TEAM')))
2768 OR (l_curr_party_rec.PARTY_SOURCE_TABLE NOT IN ('GROUP','TEAM'))) THEN
2769 FND_MESSAGE.SET_NAME('CSI','CSI_PREFERRED_PTY_TYPE');
2770 FND_MESSAGE.SET_TOKEN('PARTY_TYPE',l_curr_party_rec.PARTY_SOURCE_TABLE);
2771 FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_curr_party_rec.INSTANCE_ID);
2772 FND_MSG_PUB.Add;
2773 RAISE FND_API.G_EXC_ERROR;
2774 END IF;
2775 END IF;
2776 END IF;
2777 END IF;
2778 -- Verify that there is only one Primary Party for a
2779 -- given instance party relationship
2780 IF ((nvl(p_party_rec.primary_flag,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR)
2781 OR (nvl(p_party_rec.relationship_type_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR)) THEN
2782 IF (((p_party_rec.primary_flag IS NULL AND l_curr_party_rec.primary_flag IS NOT NULL)
2783 OR (p_party_rec.primary_flag IS NOT NULL AND l_curr_party_rec.primary_flag IS NULL)
2784 OR (p_party_rec.primary_flag <> l_curr_party_rec.primary_flag)
2785 AND (p_party_rec.primary_flag = 'Y'))
2786 OR (p_party_rec.relationship_type_code <> l_curr_party_rec.relationship_type_code)) THEN
2787 IF (((p_party_rec.CONTACT_FLAG <> FND_API.G_MISS_CHAR)
2788 AND (p_party_rec.CONTACT_FLAG = 'Y'))
2789 OR (l_curr_party_rec.CONTACT_FLAG = 'Y')) THEN
2790 -- SK ADDED
2791 -- following code 10 lines needs to be removed once
2792 -- html code is fixed
2793 IF p_party_rec.PARTY_SOURCE_TABLE IS NULL
2794 THEN
2795 p_party_rec.PARTY_SOURCE_TABLE:=fnd_api.g_miss_char;
2796 END IF;
2797 IF p_party_rec.primary_flag IS NULL THEN
2798 p_party_rec.primary_flag:='N';
2799 END IF;
2800 --
2801 IF nvl(l_curr_party_rec.primary_flag,'N') = 'Y'
2802 AND p_party_rec.primary_flag = 'N'
2803 THEN
2804 NULL;
2805 ELSIF ((nvl(l_curr_party_rec.primary_flag,'N') = 'Y') OR (p_party_rec.primary_flag = 'Y')) THEN
2806 IF p_party_rec.ACTIVE_START_DATE IS NULL
2807 OR p_party_rec.ACTIVE_START_DATE = fnd_api.g_miss_date THEN
2808 p_party_rec.ACTIVE_START_DATE := l_curr_party_rec.ACTIVE_START_DATE;
2809 END IF;
2810 --
2811 IF p_party_rec.ACTIVE_END_DATE IS NULL
2812 OR p_party_rec.ACTIVE_END_DATE = fnd_api.g_miss_date
2813 THEN
2814 p_party_rec.ACTIVE_END_DATE := l_curr_party_rec.ACTIVE_END_DATE;
2815 END IF;
2816 -- SK END ADDITION
2817 IF CSI_Instance_parties_vld_pvt.Is_Primary_Contact_Pty
2818 (l_curr_party_rec.INSTANCE_ID,
2819 l_curr_party_rec.CONTACT_IP_ID,
2820 p_party_rec.RELATIONSHIP_TYPE_CODE,
2821 p_party_rec.ACTIVE_START_DATE,
2822 p_party_rec.ACTIVE_END_DATE) THEN
2823 RAISE FND_API.G_EXC_ERROR;
2824 END IF;
2825 END IF; --SK ADDED
2826 ELSE
2827 IF (((p_party_rec.PARTY_SOURCE_TABLE <> FND_API.G_MISS_CHAR)
2828 AND (p_party_rec.PARTY_SOURCE_TABLE NOT IN ('GROUP','TEAM')))
2829 OR (l_curr_party_rec.PARTY_SOURCE_TABLE NOT IN ('GROUP','TEAM'))) THEN
2830 -- following code is commented by sk
2831 /*FND_MESSAGE.SET_NAME('CSI','CSI_HAHA2');
2832 --FND_MESSAGE.SET_NAME('CSI','CSI_PRIMARY_PTY_TYPE');
2833 FND_MESSAGE.SET_TOKEN('PARTY_TYPE',l_curr_party_rec.PARTY_SOURCE_TABLE);
2834 FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_curr_party_rec.INSTANCE_ID);
2835 FND_MSG_PUB.Add;
2836 RAISE FND_API.G_EXC_ERROR; */
2837 NULL; --added by sk
2838 ELSE
2839 -- SK ADDED
2840 IF p_party_rec.primary_flag IS NULL
2841 THEN
2842 p_party_rec.primary_flag:='N';
2843 END IF;
2844 --
2845 IF nvl(l_curr_party_rec.primary_flag,'N') = 'Y'
2846 AND p_party_rec.primary_flag = 'N'
2847 THEN
2848 NULL;
2849 ELSIF ((nvl(l_curr_party_rec.primary_flag,'N') = 'Y') OR (p_party_rec.primary_flag = 'Y')) THEN
2850 IF p_party_rec.ACTIVE_START_DATE IS NULL
2851 OR p_party_rec.ACTIVE_START_DATE = fnd_api.g_miss_date
2852 THEN
2853 p_party_rec.ACTIVE_START_DATE := l_curr_party_rec.ACTIVE_START_DATE;
2854 END IF;
2855 IF p_party_rec.ACTIVE_END_DATE IS NULL
2856 OR p_party_rec.ACTIVE_END_DATE = fnd_api.g_miss_date
2857 THEN
2858 p_party_rec.ACTIVE_END_DATE := l_curr_party_rec.ACTIVE_END_DATE;
2859 END IF;
2860 -- SK END ADDITION
2861 IF CSI_Instance_parties_vld_pvt.Is_Primary_Pty
2862 (l_curr_party_rec.INSTANCE_ID,
2863 p_party_rec.RELATIONSHIP_TYPE_CODE,
2864 p_party_rec.ACTIVE_START_DATE,
2865 p_party_rec.ACTIVE_END_DATE) THEN
2866 RAISE FND_API.G_EXC_ERROR;
2867 END IF;
2868 END IF; --SK ADDED
2869 END IF;
2870 END IF;
2871 END IF;
2872 END IF;
2873 -- Call table handlers to insert into the csi_i_parties table
2874 -- Verify if the party_source_table exists in CSI_LOOKUPS
2875 IF (p_party_rec.PARTY_SOURCE_TABLE <> FND_API.G_MISS_CHAR) THEN
2876 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_Source_tab_Valid(p_party_rec.PARTY_SOURCE_TABLE)) THEN
2877 RAISE FND_API.G_EXC_ERROR;
2878 END IF;
2879 -- Verify if the party_id is valid based on the value of party_source_table
2880 IF (p_party_rec.PARTY_ID <> FND_API.G_MISS_NUM) THEN
2881 IF NOT(CSI_Instance_parties_vld_pvt.Is_Party_Valid
2882 (p_party_rec.PARTY_SOURCE_TABLE ,
2883 p_party_rec.PARTY_ID ,
2884 p_party_rec.CONTACT_FLAG )) THEN
2885 RAISE FND_API.G_EXC_ERROR;
2886 END IF;
2887 END IF;
2888 ELSE
2889 IF (p_party_rec.PARTY_ID <> FND_API.G_MISS_NUM) THEN
2890 IF NOT(CSI_Instance_parties_vld_pvt.Is_Party_Valid
2891 (l_curr_party_rec.PARTY_SOURCE_TABLE ,
2892 p_party_rec.PARTY_ID ,
2893 p_party_rec.CONTACT_FLAG )) THEN
2894 RAISE FND_API.G_EXC_ERROR;
2895 END IF;
2896 END IF;
2897 END IF;
2898 -- Grab the internal party id from csi_installed paramters
2899 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
2900 csi_gen_utility_pvt.populate_install_param_rec;
2901 END IF;
2902 --
2903 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
2904 --
2905 IF l_internal_party_id IS NULL THEN
2906 FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
2907 FND_MSG_PUB.ADD;
2908 RAISE FND_API.G_EXC_ERROR;
2909 END IF;
2910 -- Validate Tranfer Party rules in case of tranfer of instance
2911 IF ((p_party_rec.PARTY_ID <> FND_API.G_MISS_NUM)
2912 AND (p_party_rec.PARTY_ID IS NOT NULL)
2913 AND (p_party_rec.PARTY_ID <> l_curr_party_rec.PARTY_ID))
2914 --AND (p_party_rec.party_id <> l_internal_party_id)) -- commented for bug 3294748
2915 THEN
2916 -- End of code comment for bug 2600000
2917 -- End commentation by sguthiva for bug 2307804
2918 CSI_Instance_parties_vld_pvt.Transfer_Party_Rules
2919 ( p_api_version => p_api_version
2920 ,p_commit => p_commit
2921 ,p_init_msg_list => p_init_msg_list
2922 ,p_validation_level => p_validation_level
2923 ,p_party_rec => l_curr_party_rec
2924 ,p_stack_err_msg => TRUE
2925 ,p_txn_rec => p_txn_rec
2926 ,x_return_status => x_return_status
2927 ,x_msg_count => x_msg_count
2928 ,x_msg_data => x_msg_data );
2929
2930 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2931 l_msg_index := 1;
2932 l_msg_count := x_msg_count;
2933 WHILE l_msg_count > 0 LOOP
2934 x_msg_data := FND_MSG_PUB.GET(
2935 l_msg_index,
2936 FND_API.G_FALSE );
2937 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
2938 l_msg_index := l_msg_index + 1;
2939 l_msg_count := l_msg_count - 1;
2940 END LOOP;
2941 RAISE FND_API.G_EXC_ERROR;
2942 END IF;
2943 END IF;
2944 -- Validate alternate primary key
2945 IF ((p_party_rec.instance_id IS NULL) OR (p_party_rec.instance_id = FND_API.G_MISS_NUM)) THEN
2946 l_alt_pk_instance_id := l_curr_party_rec.instance_id;
2947 ELSE
2948 l_alt_pk_instance_id := p_party_rec.instance_id;
2949 END IF;
2950 --
2951 IF ((p_party_rec.party_source_table IS NULL) OR (p_party_rec.party_source_table = FND_API.G_MISS_CHAR)) THEN
2952 l_alt_pk_pty_source_tab := l_curr_party_rec.party_source_table;
2953 ELSE
2954 l_alt_pk_pty_source_tab := p_party_rec.party_source_table;
2955 END IF;
2956 --
2957 IF ((p_party_rec.party_id IS NULL) OR (p_party_rec.party_id = FND_API.G_MISS_NUM)) THEN
2958 l_alt_pk_party_id := l_curr_party_rec.party_id;
2959 ELSE
2960 l_alt_pk_party_id := p_party_rec.party_id;
2961 END IF;
2962 --
2963 IF ((p_party_rec.relationship_type_code IS NULL) OR
2964 (p_party_rec.relationship_type_code = FND_API.G_MISS_CHAR)) THEN
2965 l_alt_pk_rel_type_code := l_curr_party_rec.relationship_type_code ;
2966 ELSE
2967 l_alt_pk_rel_type_code := p_party_rec.relationship_type_code ;
2968 END IF;
2969 --
2970 IF ((p_party_rec.contact_flag IS NULL) OR (p_party_rec.contact_flag = FND_API.G_MISS_CHAR)) THEN
2971 l_alt_pk_contact_flag := l_curr_party_rec.contact_flag ;
2972 ELSE
2973 l_alt_pk_contact_flag := p_party_rec.contact_flag ;
2974 END IF;
2975 -- Verify if the Party rel combination exists
2976 IF ((l_alt_pk_instance_id <> l_curr_party_rec.instance_id)
2977 OR
2978 (l_alt_pk_pty_source_tab <> l_curr_party_rec.party_source_table )
2979 OR
2980 (l_alt_pk_party_id <> l_curr_party_rec.party_id)
2981 OR
2982 (l_alt_pk_rel_type_code <> l_curr_party_rec.relationship_type_code )
2983 OR
2984 (l_alt_pk_contact_flag <> l_curr_party_rec.contact_flag ))
2985 THEN
2986 -- Verify if the Party rel combination exists
2987 -- Added the following code for bug 3694434
2988 -- party rel combination check is relaxed on for party/acct merge transaction.
2989 IF p_txn_rec.transaction_type_id=7
2990 THEN
2991 BEGIN
2992 SELECT instance_party_id
2993 INTO l_ins_pty_found
2994 FROM csi_i_parties
2995 WHERE instance_id = l_alt_pk_instance_id
2996 AND party_source_table = l_alt_pk_pty_source_tab
2997 AND party_id = l_alt_pk_party_id
2998 AND relationship_type_code = l_alt_pk_rel_type_code
2999 AND contact_flag = l_alt_pk_contact_flag
3000 AND NVL(contact_ip_id,fnd_api.g_miss_num) = NVL(p_party_rec.contact_ip_id,fnd_api.g_miss_num)
3001 AND ((active_end_date IS NULL) OR (active_end_date >= sysdate));
3002 -- If found then there exists a record in csi_i_parties, Hence
3003 -- I need to expire(if active) this record.
3004 BEGIN
3005 SELECT active_end_date
3006 INTO l_pty_end_date
3007 FROM csi_i_parties
3008 WHERE instance_party_id=p_party_rec.instance_party_id
3009 AND ((active_end_date IS NULL) OR (active_end_date > sysdate));
3010 -- Active record found so make it inactive.
3011 p_party_rec.active_end_date:=sysdate;
3012 EXCEPTION
3013 WHEN OTHERS THEN
3014 NULL;
3015 END;
3016 EXCEPTION
3017 WHEN TOO_MANY_ROWS THEN
3018 csi_gen_utility_pvt.put_line('Too many rows exist in csi_i_parties with the same party rel combination.');
3019 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_PARTY_REL_COMB');
3020 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));
3021 FND_MSG_PUB.Add;
3022 RAISE FND_API.G_EXC_ERROR;
3023 WHEN OTHERS THEN
3024 NULL;
3025 END;
3026 ELSE
3027 IF (CSI_Instance_parties_vld_pvt.Is_Party_Rel_Comb_Exists
3028 (l_alt_pk_instance_id ,
3029 l_alt_pk_pty_source_tab ,
3030 l_alt_pk_party_id ,
3031 l_alt_pk_rel_type_code ,
3032 l_alt_pk_contact_flag ,
3033 p_party_rec.contact_ip_id ,
3034 TRUE )) THEN
3035 RAISE FND_API.G_EXC_ERROR;
3036 END IF;
3037 END IF;
3038 END IF;
3039 --
3040 IF p_party_rec.relationship_type_code <> FND_API.G_MISS_CHAR THEN
3041 IF (p_party_rec.relationship_type_code = 'OWNER' ) THEN
3042 update csi_item_instances
3043 set owner_party_source_table = l_alt_pk_pty_source_tab, --p_party_rec.party_source_table,--bug 2769176
3044 owner_party_id = l_alt_pk_party_id, --p_party_rec.party_id, --bug 2769176
3045 last_update_date = sysdate,
3046 last_updated_by = fnd_global.user_id
3047 where instance_id = l_curr_party_rec.instance_id;
3048 END IF;
3049 END IF;
3050 -- A contact marked as 'Primary' can also be marked as 'Preferred' or
3051 -- 'Non-Preferred' at the same time.
3052 IF p_party_rec.preferred_flag IS NULL THEN
3053 p_party_rec.preferred_flag:='N';
3054 END IF;
3055 IF (p_party_rec.preferred_flag='E' OR
3056 p_party_rec.preferred_flag='e' )
3057 THEN
3058 p_party_rec.preferred_flag:='E';
3059 END IF;
3060 -- A contact marked as Primary cannot be marked as 'Excluded'
3061 IF (p_party_rec.primary_flag='Y' AND p_party_rec.preferred_flag='E') OR
3062 (p_party_rec.primary_flag=fnd_api.g_miss_char AND nvl(l_curr_party_rec.primary_flag,'N') = 'Y' AND
3063 p_party_rec.preferred_flag='E') OR
3064 (p_party_rec.preferred_flag=fnd_api.g_miss_char AND nvl(l_curr_party_rec.preferred_flag,'N') = 'E' AND
3065 p_party_rec.primary_flag='Y')
3066 THEN
3067 fnd_message.set_name('CSI','CSI_PRIMARY_PTY_EXC');
3068 fnd_msg_pub.Add;
3069 RAISE fnd_api.g_exc_error;
3070 END IF;
3071 -- Possible values for preferred flag are
3072 -- 'N','Y' and 'E'.
3073 IF p_party_rec.preferred_flag='Y' OR
3074 p_party_rec.preferred_flag='N' OR
3075 p_party_rec.preferred_flag='E' OR
3076 p_party_rec.preferred_flag=fnd_api.g_miss_char
3077 THEN
3078 NULL;
3079 ELSE
3080 fnd_message.set_name('CSI','CSI_PREFERRED_VALUES');
3081 fnd_message.set_token('PREFERRED_FLAG',p_party_rec.preferred_flag);
3082 fnd_msg_pub.Add;
3083 RAISE fnd_api.g_exc_error;
3084 END IF;
3085 -- Call table handlers to update the table
3086 CSI_I_PARTIES_PKG.Update_Row
3087 (
3088 p_INSTANCE_PARTY_ID => p_party_rec.instance_party_id,
3089 p_INSTANCE_ID => p_party_rec.instance_id,
3090 p_PARTY_SOURCE_TABLE => p_party_rec.PARTY_SOURCE_TABLE,
3091 p_PARTY_ID => p_party_rec.PARTY_ID,
3092 p_RELATIONSHIP_TYPE_CODE => p_party_rec.RELATIONSHIP_TYPE_CODE,
3093 p_CONTACT_FLAG => p_party_rec.CONTACT_FLAG,
3094 p_CONTACT_IP_ID => p_party_rec.CONTACT_IP_ID,
3095 p_ACTIVE_START_DATE => p_party_rec.ACTIVE_START_DATE,
3096 p_ACTIVE_END_DATE => p_party_rec.ACTIVE_END_DATE,
3097 p_CONTEXT => p_party_rec.CONTEXT,
3098 p_ATTRIBUTE1 => p_party_rec.ATTRIBUTE1,
3099 p_ATTRIBUTE2 => p_party_rec.ATTRIBUTE2,
3100 p_ATTRIBUTE3 => p_party_rec.ATTRIBUTE3,
3101 p_ATTRIBUTE4 => p_party_rec.ATTRIBUTE4,
3102 p_ATTRIBUTE5 => p_party_rec.ATTRIBUTE5,
3103 p_ATTRIBUTE6 => p_party_rec.ATTRIBUTE6,
3104 p_ATTRIBUTE7 => p_party_rec.ATTRIBUTE7,
3105 p_ATTRIBUTE8 => p_party_rec.ATTRIBUTE8,
3106 p_ATTRIBUTE9 => p_party_rec.ATTRIBUTE9,
3107 p_ATTRIBUTE10 => p_party_rec.ATTRIBUTE10,
3108 p_ATTRIBUTE11 => p_party_rec.ATTRIBUTE11,
3109 p_ATTRIBUTE12 => p_party_rec.ATTRIBUTE12,
3110 p_ATTRIBUTE13 => p_party_rec.ATTRIBUTE13,
3111 p_ATTRIBUTE14 => p_party_rec.ATTRIBUTE14,
3112 p_ATTRIBUTE15 => p_party_rec.ATTRIBUTE15,
3113 p_CREATED_BY => FND_API.G_MISS_NUM, -- FND_GLOBAL.USER_ID,
3114 p_CREATION_DATE => FND_API.G_MISS_DATE, -- sysdate,
3115 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID,
3116 p_LAST_UPDATE_DATE => sysdate,
3117 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID,
3118 p_OBJECT_VERSION_NUMBER => l_OBJECT_VERSION_NUMBER,
3119 p_PRIMARY_FLAG => p_party_rec.PRIMARY_FLAG,
3120 p_PREFERRED_FLAG => p_party_rec.PREFERRED_FLAG);
3121
3122 -- Call create_transaction to create txn log
3123 CSI_TRANSACTIONS_PVT.Create_transaction
3124 (
3125 p_api_version => p_api_version
3126 ,p_commit => p_commit
3127 ,p_init_msg_list => p_init_msg_list
3128 ,p_validation_level => p_validation_level
3129 ,p_Success_If_Exists_Flag => 'Y'
3130 ,P_transaction_rec => p_txn_rec
3131 ,x_return_status => x_return_status
3132 ,x_msg_count => x_msg_count
3133 ,x_msg_data => x_msg_data );
3134
3135 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3136 l_msg_index := 1;
3137 l_msg_count := x_msg_count;
3138 WHILE l_msg_count > 0 LOOP
3139 x_msg_data := FND_MSG_PUB.GET(
3140 l_msg_index,
3141 FND_API.G_FALSE );
3142 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
3143 l_msg_index := l_msg_index + 1;
3144 l_msg_count := l_msg_count - 1;
3145 END LOOP;
3146 RAISE FND_API.G_EXC_ERROR;
3147 END IF;
3148
3149 -- Get the full_dump_frequency from csi_install_parameter
3150 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
3151 csi_gen_utility_pvt.populate_install_param_rec;
3152 END IF;
3153 --
3154 l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
3155 --
3156 IF l_full_dump_frequency IS NULL THEN
3157 FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
3158 FND_MSG_PUB.ADD;
3159 RAISE FND_API.G_EXC_ERROR;
3160 END IF;
3161 -- Generate a unique instance_party_history_id from the sequence
3162 l_inst_party_his_id := CSI_Instance_parties_vld_pvt.gen_inst_party_hist_id;
3163
3164
3165 select mod(l_object_version_number,l_full_dump_frequency)
3166 into l_mod_value
3167 from dual;
3168
3169 -- assign the party rec
3170 l_temp_party_rec := p_party_rec;
3171 -- Start of Changes for Bug#2547034 on 09/20/02 - rtalluri
3172 BEGIN
3173 SELECT instance_party_history_id
3174 INTO l_party_hist_id
3175 FROM csi_i_parties_h h
3176 WHERE h.transaction_id = p_txn_rec.transaction_id
3177 AND h.instance_party_id = p_party_rec.instance_party_id;
3178
3179 OPEN pty_hist_csr(l_party_hist_id);
3180 FETCH pty_hist_csr INTO l_pty_hist_csr ;
3181 CLOSE pty_hist_csr;
3182
3183 IF l_pty_hist_csr.full_dump_flag = 'Y'
3184 THEN
3185 CSI_I_PARTIES_H_PKG.update_Row
3186 (
3187 p_INSTANCE_PARTY_HISTORY_ID => l_party_hist_id ,
3188 p_INSTANCE_PARTY_ID => fnd_api.g_miss_num ,
3189 p_TRANSACTION_ID => fnd_api.g_miss_num ,
3190 p_OLD_PARTY_SOURCE_TABLE => fnd_api.g_miss_char ,
3191 p_NEW_PARTY_SOURCE_TABLE => l_temp_party_rec.PARTY_SOURCE_TABLE,
3192 p_OLD_PARTY_ID => fnd_api.g_miss_num ,
3193 p_NEW_PARTY_ID => l_temp_party_rec.PARTY_ID ,
3194 p_OLD_RELATIONSHIP_TYPE_CODE => fnd_api.g_miss_char ,
3195 p_NEW_RELATIONSHIP_TYPE_CODE => l_temp_party_rec.RELATIONSHIP_TYPE_CODE,
3196 p_OLD_CONTACT_FLAG => fnd_api.g_miss_char ,
3197 p_NEW_CONTACT_FLAG => l_temp_party_rec.CONTACT_FLAG ,
3198 p_OLD_CONTACT_IP_ID => fnd_api.g_miss_num ,
3199 p_NEW_CONTACT_IP_ID => l_temp_party_rec.CONTACT_IP_ID ,
3200 p_OLD_ACTIVE_START_DATE => l_curr_party_rec.ACTIVE_START_DATE ,
3201 p_NEW_ACTIVE_START_DATE => l_temp_party_rec.ACTIVE_START_DATE ,
3202 p_OLD_ACTIVE_END_DATE => l_curr_party_rec.ACTIVE_END_DATE ,
3203 p_NEW_ACTIVE_END_DATE => l_temp_party_rec.ACTIVE_END_DATE ,
3204 p_OLD_CONTEXT => fnd_api.g_miss_char ,
3205 p_NEW_CONTEXT => l_temp_party_rec.context ,
3206 p_OLD_ATTRIBUTE1 => fnd_api.g_miss_char ,
3207 p_NEW_ATTRIBUTE1 => l_temp_party_rec.ATTRIBUTE1 ,
3208 p_OLD_ATTRIBUTE2 => fnd_api.g_miss_char ,
3209 p_NEW_ATTRIBUTE2 => l_temp_party_rec.ATTRIBUTE2 ,
3210 p_OLD_ATTRIBUTE3 => fnd_api.g_miss_char ,
3211 p_NEW_ATTRIBUTE3 => l_temp_party_rec.ATTRIBUTE3 ,
3212 p_OLD_ATTRIBUTE4 => fnd_api.g_miss_char ,
3213 p_NEW_ATTRIBUTE4 => l_temp_party_rec.ATTRIBUTE4 ,
3214 p_OLD_ATTRIBUTE5 => fnd_api.g_miss_char ,
3215 p_NEW_ATTRIBUTE5 => l_temp_party_rec.ATTRIBUTE5 ,
3216 p_OLD_ATTRIBUTE6 => fnd_api.g_miss_char ,
3217 p_NEW_ATTRIBUTE6 => l_temp_party_rec.ATTRIBUTE6 ,
3218 p_OLD_ATTRIBUTE7 => fnd_api.g_miss_char ,
3219 p_NEW_ATTRIBUTE7 => l_temp_party_rec.ATTRIBUTE7 ,
3220 p_OLD_ATTRIBUTE8 => fnd_api.g_miss_char ,
3221 p_NEW_ATTRIBUTE8 => l_temp_party_rec.ATTRIBUTE8 ,
3222 p_OLD_ATTRIBUTE9 => fnd_api.g_miss_char ,
3223 p_NEW_ATTRIBUTE9 => l_temp_party_rec.ATTRIBUTE9 ,
3224 p_OLD_ATTRIBUTE10 => fnd_api.g_miss_char ,
3225 p_NEW_ATTRIBUTE10 => l_temp_party_rec.ATTRIBUTE10 ,
3226 p_OLD_ATTRIBUTE11 => fnd_api.g_miss_char ,
3227 p_NEW_ATTRIBUTE11 => l_temp_party_rec.ATTRIBUTE11 ,
3228 p_OLD_ATTRIBUTE12 => fnd_api.g_miss_char ,
3229 p_NEW_ATTRIBUTE12 => l_temp_party_rec.ATTRIBUTE12 ,
3230 p_OLD_ATTRIBUTE13 => fnd_api.g_miss_char ,
3231 p_NEW_ATTRIBUTE13 => l_temp_party_rec.ATTRIBUTE13 ,
3232 p_OLD_ATTRIBUTE14 => fnd_api.g_miss_char ,
3233 p_NEW_ATTRIBUTE14 => l_temp_party_rec.ATTRIBUTE14 ,
3234 p_OLD_ATTRIBUTE15 => fnd_api.g_miss_char ,
3235 p_NEW_ATTRIBUTE15 => l_temp_party_rec.ATTRIBUTE15 ,
3236 p_FULL_DUMP_FLAG => fnd_api.g_miss_char ,
3237 p_CREATED_BY => FND_API.G_MISS_NUM ,
3238 p_CREATION_DATE => FND_API.G_MISS_DATE ,
3239 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
3240 p_LAST_UPDATE_DATE => SYSDATE ,
3241 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
3242 p_OBJECT_VERSION_NUMBER => fnd_api.g_miss_num ,
3243 p_OLD_PRIMARY_FLAG => fnd_api.g_miss_char ,
3244 p_NEW_PRIMARY_FLAG => l_temp_party_rec.PRIMARY_FLAG ,
3245 p_OLD_PREFERRED_FLAG => fnd_api.g_miss_char ,
3246 p_NEW_PREFERRED_FLAG => l_temp_party_rec.PREFERRED_FLAG );
3247
3248 ELSE
3249
3250 IF ( l_pty_hist_csr.old_party_source_table IS NULL
3251 AND l_pty_hist_csr.new_party_source_table IS NULL ) THEN
3252 IF ( l_temp_party_rec.party_source_table = l_curr_party_rec.party_source_table )
3253 OR ( l_temp_party_rec.party_source_table = fnd_api.g_miss_char ) THEN
3254 l_pty_hist_csr.old_party_source_table := NULL;
3255 l_pty_hist_csr.new_party_source_table := NULL;
3256 ELSE
3257 l_pty_hist_csr.old_party_source_table := fnd_api.g_miss_char;
3258 l_pty_hist_csr.new_party_source_table := l_temp_party_rec.party_source_table;
3259 END IF;
3260 ELSE
3261 l_pty_hist_csr.old_party_source_table := fnd_api.g_miss_char;
3262 l_pty_hist_csr.new_party_source_table := l_temp_party_rec.party_source_table;
3263 END IF;
3264 --
3265 IF ( l_pty_hist_csr.old_party_id IS NULL
3266 AND l_pty_hist_csr.new_party_id IS NULL ) THEN
3267 IF ( l_temp_party_rec.party_id = l_curr_party_rec.party_id )
3268 OR ( l_temp_party_rec.party_id = fnd_api.g_miss_num ) THEN
3269 l_pty_hist_csr.old_party_id := NULL;
3270 l_pty_hist_csr.new_party_id := NULL;
3271 ELSE
3272 l_pty_hist_csr.old_party_id := fnd_api.g_miss_num;
3273 l_pty_hist_csr.new_party_id := l_temp_party_rec.party_id;
3274 END IF;
3275 ELSE
3276 l_pty_hist_csr.old_party_id := fnd_api.g_miss_num;
3277 l_pty_hist_csr.new_party_id := l_temp_party_rec.party_id;
3278 END IF;
3279 --
3280 IF ( l_pty_hist_csr.old_relationship_type_code IS NULL
3281 AND l_pty_hist_csr.new_relationship_type_code IS NULL ) THEN
3282 IF ( l_temp_party_rec.relationship_type_code = l_curr_party_rec.relationship_type_code )
3283 OR ( l_temp_party_rec.relationship_type_code = fnd_api.g_miss_char ) THEN
3284 l_pty_hist_csr.old_relationship_type_code := NULL;
3285 l_pty_hist_csr.new_relationship_type_code := NULL;
3286 ELSE
3287 l_pty_hist_csr.old_relationship_type_code := fnd_api.g_miss_char;
3288 l_pty_hist_csr.new_relationship_type_code := l_temp_party_rec.relationship_type_code;
3289 END IF;
3290 ELSE
3291 l_pty_hist_csr.old_relationship_type_code := fnd_api.g_miss_char;
3292 l_pty_hist_csr.new_relationship_type_code := l_temp_party_rec.relationship_type_code;
3293 END IF;
3294 --
3295 IF ( l_pty_hist_csr.old_contact_flag IS NULL
3296 AND l_pty_hist_csr.new_contact_flag IS NULL ) THEN
3297 IF ( l_temp_party_rec.contact_flag = l_curr_party_rec.contact_flag )
3298 OR ( l_temp_party_rec.contact_flag = fnd_api.g_miss_char ) THEN
3299 l_pty_hist_csr.old_contact_flag := NULL;
3300 l_pty_hist_csr.new_contact_flag := NULL;
3301 ELSE
3302 l_pty_hist_csr.old_contact_flag := fnd_api.g_miss_char;
3303 l_pty_hist_csr.new_contact_flag := l_temp_party_rec.contact_flag;
3304 END IF;
3305 ELSE
3306 l_pty_hist_csr.old_contact_flag := fnd_api.g_miss_char;
3307 l_pty_hist_csr.new_contact_flag := l_temp_party_rec.contact_flag;
3308 END IF;
3309 --
3310 IF ( l_pty_hist_csr.old_contact_ip_id IS NULL
3311 AND l_pty_hist_csr.new_contact_ip_id IS NULL ) THEN
3312 IF ( l_temp_party_rec.contact_ip_id = l_curr_party_rec.contact_ip_id )
3313 OR ( l_temp_party_rec.contact_ip_id = fnd_api.g_miss_num ) THEN
3314 l_pty_hist_csr.old_contact_ip_id := NULL;
3315 l_pty_hist_csr.new_contact_ip_id := NULL;
3316 ELSE
3317 l_pty_hist_csr.old_contact_ip_id := fnd_api.g_miss_num;
3318 l_pty_hist_csr.new_contact_ip_id := l_temp_party_rec.contact_ip_id;
3319 END IF;
3320 ELSE
3321 l_pty_hist_csr.old_contact_ip_id := fnd_api.g_miss_num;
3322 l_pty_hist_csr.new_contact_ip_id := l_temp_party_rec.contact_ip_id;
3323 END IF;
3324 --
3325 IF ( l_pty_hist_csr.old_active_start_date IS NULL
3326 AND l_pty_hist_csr.new_active_start_date IS NULL ) THEN
3327 IF ( l_temp_party_rec.active_start_date = l_curr_party_rec.active_start_date )
3328 OR ( l_temp_party_rec.active_start_date = fnd_api.g_miss_date ) THEN
3329 l_pty_hist_csr.old_active_start_date := NULL;
3330 l_pty_hist_csr.new_active_start_date := NULL;
3331 ELSE
3332 l_pty_hist_csr.old_active_start_date := fnd_api.g_miss_date;
3333 l_pty_hist_csr.new_active_start_date := l_temp_party_rec.active_start_date;
3334 END IF;
3335 ELSE
3336 l_pty_hist_csr.old_active_start_date := fnd_api.g_miss_date;
3337 l_pty_hist_csr.new_active_start_date := l_temp_party_rec.active_start_date;
3338 END IF;
3339 --
3340 IF ( l_pty_hist_csr.old_active_end_date IS NULL
3341 AND l_pty_hist_csr.new_active_end_date IS NULL ) THEN
3342 IF ( l_temp_party_rec.active_end_date = l_curr_party_rec.active_end_date )
3343 OR ( l_temp_party_rec.active_end_date = fnd_api.g_miss_date ) THEN
3344 l_pty_hist_csr.old_active_end_date := NULL;
3345 l_pty_hist_csr.new_active_end_date := NULL;
3346 ELSE
3347 l_pty_hist_csr.old_active_end_date := fnd_api.g_miss_date;
3348 l_pty_hist_csr.new_active_end_date := l_temp_party_rec.active_end_date;
3349 END IF;
3350 ELSE
3351 l_pty_hist_csr.old_active_end_date := fnd_api.g_miss_date;
3352 l_pty_hist_csr.new_active_end_date := l_temp_party_rec.active_end_date;
3353 END IF;
3354 --
3355 IF ( l_pty_hist_csr.old_context IS NULL
3356 AND l_pty_hist_csr.new_context IS NULL ) THEN
3357 IF ( l_temp_party_rec.context = l_curr_party_rec.context )
3358 OR ( l_temp_party_rec.context = fnd_api.g_miss_char ) THEN
3359 l_pty_hist_csr.old_context := NULL;
3360 l_pty_hist_csr.new_context := NULL;
3361 ELSE
3362 l_pty_hist_csr.old_context := fnd_api.g_miss_char;
3363 l_pty_hist_csr.new_context := l_temp_party_rec.context;
3364 END IF;
3365 ELSE
3366 l_pty_hist_csr.old_context := fnd_api.g_miss_char;
3367 l_pty_hist_csr.new_context := l_temp_party_rec.context;
3368 END IF;
3369 --
3370 IF ( l_pty_hist_csr.old_attribute1 IS NULL
3371 AND l_pty_hist_csr.new_attribute1 IS NULL ) THEN
3372 IF ( l_temp_party_rec.attribute1 = l_curr_party_rec.attribute1 )
3373 OR ( l_temp_party_rec.attribute1 = fnd_api.g_miss_char ) THEN
3374 l_pty_hist_csr.old_attribute1 := NULL;
3375 l_pty_hist_csr.new_attribute1 := NULL;
3376 ELSE
3377 l_pty_hist_csr.old_attribute1 := fnd_api.g_miss_char;
3378 l_pty_hist_csr.new_attribute1 := l_temp_party_rec.attribute1;
3379 END IF;
3380 ELSE
3381 l_pty_hist_csr.old_attribute1 := fnd_api.g_miss_char;
3382 l_pty_hist_csr.new_attribute1 := l_temp_party_rec.attribute1;
3383 END IF;
3384 --
3385 IF ( l_pty_hist_csr.old_attribute2 IS NULL
3386 AND l_pty_hist_csr.new_attribute2 IS NULL ) THEN
3387 IF ( l_temp_party_rec.attribute2 = l_curr_party_rec.attribute2 )
3388 OR ( l_temp_party_rec.attribute2 = fnd_api.g_miss_char ) THEN
3389 l_pty_hist_csr.old_attribute2 := NULL;
3390 l_pty_hist_csr.new_attribute2 := NULL;
3391 ELSE
3392 l_pty_hist_csr.old_attribute2 := fnd_api.g_miss_char;
3393 l_pty_hist_csr.new_attribute2 := l_temp_party_rec.attribute2;
3394 END IF;
3395 ELSE
3396 l_pty_hist_csr.old_attribute2 := fnd_api.g_miss_char;
3397 l_pty_hist_csr.new_attribute2 := l_temp_party_rec.attribute2;
3398 END IF;
3399 --
3400 IF ( l_pty_hist_csr.old_attribute3 IS NULL
3401 AND l_pty_hist_csr.new_attribute3 IS NULL ) THEN
3402 IF ( l_temp_party_rec.attribute3 = l_curr_party_rec.attribute3 )
3403 OR ( l_temp_party_rec.attribute3 = fnd_api.g_miss_char ) THEN
3404 l_pty_hist_csr.old_attribute3 := NULL;
3405 l_pty_hist_csr.new_attribute3 := NULL;
3406 ELSE
3407 l_pty_hist_csr.old_attribute3 := fnd_api.g_miss_char;
3408 l_pty_hist_csr.new_attribute3 := l_temp_party_rec.attribute3;
3409 END IF;
3410 ELSE
3411 l_pty_hist_csr.old_attribute3 := fnd_api.g_miss_char;
3412 l_pty_hist_csr.new_attribute3 := l_temp_party_rec.attribute3;
3413 END IF;
3414 --
3415 IF ( l_pty_hist_csr.old_attribute4 IS NULL
3416 AND l_pty_hist_csr.new_attribute4 IS NULL ) THEN
3417 IF ( l_temp_party_rec.attribute4 = l_curr_party_rec.attribute4 )
3418 OR ( l_temp_party_rec.attribute4 = fnd_api.g_miss_char ) THEN
3419 l_pty_hist_csr.old_attribute4 := NULL;
3420 l_pty_hist_csr.new_attribute4 := NULL;
3421 ELSE
3422 l_pty_hist_csr.old_attribute4 := fnd_api.g_miss_char;
3423 l_pty_hist_csr.new_attribute4 := l_temp_party_rec.attribute4;
3424 END IF;
3425 ELSE
3426 l_pty_hist_csr.old_attribute4 := fnd_api.g_miss_char;
3427 l_pty_hist_csr.new_attribute4 := l_temp_party_rec.attribute4;
3428 END IF;
3429 --
3430 IF ( l_pty_hist_csr.old_attribute5 IS NULL
3431 AND l_pty_hist_csr.new_attribute5 IS NULL ) THEN
3432 IF ( l_temp_party_rec.attribute5 = l_curr_party_rec.attribute5 )
3433 OR ( l_temp_party_rec.attribute5 = fnd_api.g_miss_char ) THEN
3434 l_pty_hist_csr.old_attribute5 := NULL;
3435 l_pty_hist_csr.new_attribute5 := NULL;
3436 ELSE
3437 l_pty_hist_csr.old_attribute5 := fnd_api.g_miss_char;
3438 l_pty_hist_csr.new_attribute5 := l_temp_party_rec.attribute5;
3439 END IF;
3440 ELSE
3441 l_pty_hist_csr.old_attribute5 := fnd_api.g_miss_char;
3442 l_pty_hist_csr.new_attribute5 := l_temp_party_rec.attribute5;
3443 END IF;
3444 --
3445 IF ( l_pty_hist_csr.old_attribute6 IS NULL
3446 AND l_pty_hist_csr.new_attribute6 IS NULL ) THEN
3447 IF ( l_temp_party_rec.attribute6 = l_curr_party_rec.attribute6 )
3448 OR ( l_temp_party_rec.attribute6 = fnd_api.g_miss_char ) THEN
3449 l_pty_hist_csr.old_attribute6 := NULL;
3450 l_pty_hist_csr.new_attribute6 := NULL;
3451 ELSE
3452 l_pty_hist_csr.old_attribute6 := fnd_api.g_miss_char;
3453 l_pty_hist_csr.new_attribute6 := l_temp_party_rec.attribute6;
3454 END IF;
3455 ELSE
3456 l_pty_hist_csr.old_attribute6 := fnd_api.g_miss_char;
3457 l_pty_hist_csr.new_attribute6 := l_temp_party_rec.attribute6;
3458 END IF;
3459 --
3460 IF ( l_pty_hist_csr.old_attribute7 IS NULL
3461 AND l_pty_hist_csr.new_attribute7 IS NULL ) THEN
3462 IF ( l_temp_party_rec.attribute7 = l_curr_party_rec.attribute7 )
3463 OR ( l_temp_party_rec.attribute7 = fnd_api.g_miss_char ) THEN
3464 l_pty_hist_csr.old_attribute7 := NULL;
3465 l_pty_hist_csr.new_attribute7 := NULL;
3466 ELSE
3467 l_pty_hist_csr.old_attribute7 := fnd_api.g_miss_char;
3468 l_pty_hist_csr.new_attribute7 := l_temp_party_rec.attribute7;
3469 END IF;
3470 ELSE
3471 l_pty_hist_csr.old_attribute7 := fnd_api.g_miss_char;
3472 l_pty_hist_csr.new_attribute7 := l_temp_party_rec.attribute7;
3473 END IF;
3474 --
3475 IF ( l_pty_hist_csr.old_attribute8 IS NULL
3476 AND l_pty_hist_csr.new_attribute8 IS NULL ) THEN
3477 IF ( l_temp_party_rec.attribute8 = l_curr_party_rec.attribute8 )
3478 OR ( l_temp_party_rec.attribute8 = fnd_api.g_miss_char ) THEN
3479 l_pty_hist_csr.old_attribute8 := NULL;
3480 l_pty_hist_csr.new_attribute8 := NULL;
3481 ELSE
3482 l_pty_hist_csr.old_attribute8 := fnd_api.g_miss_char;
3483 l_pty_hist_csr.new_attribute8 := l_temp_party_rec.attribute8;
3484 END IF;
3485 ELSE
3486 l_pty_hist_csr.old_attribute8 := fnd_api.g_miss_char;
3487 l_pty_hist_csr.new_attribute8 := l_temp_party_rec.attribute8;
3488 END IF;
3489 --
3490 IF ( l_pty_hist_csr.old_attribute9 IS NULL
3491 AND l_pty_hist_csr.new_attribute9 IS NULL ) THEN
3492 IF ( l_temp_party_rec.attribute9 = l_curr_party_rec.attribute9 )
3493 OR ( l_temp_party_rec.attribute9 = fnd_api.g_miss_char ) THEN
3494 l_pty_hist_csr.old_attribute9 := NULL;
3495 l_pty_hist_csr.new_attribute9 := NULL;
3496 ELSE
3497 l_pty_hist_csr.old_attribute9 := fnd_api.g_miss_char;
3498 l_pty_hist_csr.new_attribute9 := l_temp_party_rec.attribute9;
3499 END IF;
3500 ELSE
3501 l_pty_hist_csr.old_attribute9 := fnd_api.g_miss_char;
3502 l_pty_hist_csr.new_attribute9 := l_temp_party_rec.attribute9;
3503 END IF;
3504 --
3505 IF ( l_pty_hist_csr.old_attribute10 IS NULL
3506 AND l_pty_hist_csr.new_attribute10 IS NULL ) THEN
3507 IF ( l_temp_party_rec.attribute10 = l_curr_party_rec.attribute10 )
3508 OR ( l_temp_party_rec.attribute10 = fnd_api.g_miss_char ) THEN
3509 l_pty_hist_csr.old_attribute10 := NULL;
3510 l_pty_hist_csr.new_attribute10 := NULL;
3511 ELSE
3512 l_pty_hist_csr.old_attribute10 := fnd_api.g_miss_char;
3513 l_pty_hist_csr.new_attribute10 := l_temp_party_rec.attribute10;
3514 END IF;
3515 ELSE
3516 l_pty_hist_csr.old_attribute10 := fnd_api.g_miss_char;
3517 l_pty_hist_csr.new_attribute10 := l_temp_party_rec.attribute10;
3518 END IF;
3519 --
3520 IF ( l_pty_hist_csr.old_attribute11 IS NULL
3521 AND l_pty_hist_csr.new_attribute11 IS NULL ) THEN
3522 IF ( l_temp_party_rec.attribute11 = l_curr_party_rec.attribute11 )
3523 OR ( l_temp_party_rec.attribute11 = fnd_api.g_miss_char ) THEN
3524 l_pty_hist_csr.old_attribute11 := NULL;
3525 l_pty_hist_csr.new_attribute11 := NULL;
3526 ELSE
3527 l_pty_hist_csr.old_attribute11 := fnd_api.g_miss_char;
3528 l_pty_hist_csr.new_attribute11 := l_temp_party_rec.attribute11;
3529 END IF;
3530 ELSE
3531 l_pty_hist_csr.old_attribute11 := fnd_api.g_miss_char;
3532 l_pty_hist_csr.new_attribute11 := l_temp_party_rec.attribute11;
3533 END IF;
3534 --
3535 IF ( l_pty_hist_csr.old_attribute12 IS NULL
3536 AND l_pty_hist_csr.new_attribute12 IS NULL ) THEN
3537 IF ( l_temp_party_rec.attribute12 = l_curr_party_rec.attribute12 )
3538 OR ( l_temp_party_rec.attribute12 = fnd_api.g_miss_char ) THEN
3539 l_pty_hist_csr.old_attribute12 := NULL;
3540 l_pty_hist_csr.new_attribute12 := NULL;
3541 ELSE
3542 l_pty_hist_csr.old_attribute12 := fnd_api.g_miss_char;
3543 l_pty_hist_csr.new_attribute12 := l_temp_party_rec.attribute12;
3544 END IF;
3545 ELSE
3546 l_pty_hist_csr.old_attribute12 := fnd_api.g_miss_char;
3547 l_pty_hist_csr.new_attribute12 := l_temp_party_rec.attribute12;
3548 END IF;
3549 --
3550 IF ( l_pty_hist_csr.old_attribute13 IS NULL
3551 AND l_pty_hist_csr.new_attribute13 IS NULL ) THEN
3552 IF ( l_temp_party_rec.attribute13 = l_curr_party_rec.attribute13 )
3553 OR ( l_temp_party_rec.attribute13 = fnd_api.g_miss_char ) THEN
3554 l_pty_hist_csr.old_attribute13 := NULL;
3555 l_pty_hist_csr.new_attribute13 := NULL;
3556 ELSE
3557 l_pty_hist_csr.old_attribute13 := fnd_api.g_miss_char;
3558 l_pty_hist_csr.new_attribute13 := l_temp_party_rec.attribute13;
3559 END IF;
3560 ELSE
3561 l_pty_hist_csr.old_attribute13 := fnd_api.g_miss_char;
3562 l_pty_hist_csr.new_attribute13 := l_temp_party_rec.attribute13;
3563 END IF;
3564 --
3565 IF ( l_pty_hist_csr.old_attribute14 IS NULL
3566 AND l_pty_hist_csr.new_attribute14 IS NULL ) THEN
3567 IF ( l_temp_party_rec.attribute14 = l_curr_party_rec.attribute14 )
3568 OR ( l_temp_party_rec.attribute14 = fnd_api.g_miss_char ) THEN
3569 l_pty_hist_csr.old_attribute14 := NULL;
3570 l_pty_hist_csr.new_attribute14 := NULL;
3571 ELSE
3572 l_pty_hist_csr.old_attribute14 := fnd_api.g_miss_char;
3573 l_pty_hist_csr.new_attribute14 := l_temp_party_rec.attribute14;
3574 END IF;
3575 ELSE
3576 l_pty_hist_csr.old_attribute14 := fnd_api.g_miss_char;
3577 l_pty_hist_csr.new_attribute14 := l_temp_party_rec.attribute14;
3578 END IF;
3579 --
3580 IF ( l_pty_hist_csr.old_attribute15 IS NULL
3581 AND l_pty_hist_csr.new_attribute15 IS NULL ) THEN
3582 IF ( l_temp_party_rec.attribute15 = l_curr_party_rec.attribute15 )
3583 OR ( l_temp_party_rec.attribute15 = fnd_api.g_miss_char ) THEN
3584 l_pty_hist_csr.old_attribute15 := NULL;
3585 l_pty_hist_csr.new_attribute15 := NULL;
3586 ELSE
3587 l_pty_hist_csr.old_attribute15 := fnd_api.g_miss_char;
3588 l_pty_hist_csr.new_attribute15 := l_temp_party_rec.attribute15;
3589 END IF;
3590 ELSE
3591 l_pty_hist_csr.old_attribute15 := fnd_api.g_miss_char;
3592 l_pty_hist_csr.new_attribute15 := l_temp_party_rec.attribute15;
3593 END IF;
3594 --
3595 IF ( l_pty_hist_csr.old_primary_flag IS NULL
3596 AND l_pty_hist_csr.new_primary_flag IS NULL ) THEN
3597 IF ( l_temp_party_rec.primary_flag = l_curr_party_rec.primary_flag )
3598 OR ( l_temp_party_rec.primary_flag = fnd_api.g_miss_char ) THEN
3599 l_pty_hist_csr.old_primary_flag := NULL;
3600 l_pty_hist_csr.new_primary_flag := NULL;
3601 ELSE
3602 l_pty_hist_csr.old_primary_flag := fnd_api.g_miss_char;
3603 l_pty_hist_csr.new_primary_flag := l_temp_party_rec.primary_flag;
3604 END IF;
3605 ELSE
3606 l_pty_hist_csr.old_primary_flag := fnd_api.g_miss_char;
3607 l_pty_hist_csr.new_primary_flag := l_temp_party_rec.primary_flag;
3608 END IF;
3609 --
3610 IF ( l_pty_hist_csr.old_preferred_flag IS NULL
3611 AND l_pty_hist_csr.new_preferred_flag IS NULL ) THEN
3612 IF ( l_temp_party_rec.preferred_flag = l_curr_party_rec.preferred_flag )
3613 OR ( l_temp_party_rec.preferred_flag = fnd_api.g_miss_char ) THEN
3614 l_pty_hist_csr.old_preferred_flag := NULL;
3615 l_pty_hist_csr.new_preferred_flag := NULL;
3616 ELSE
3617 l_pty_hist_csr.old_preferred_flag := fnd_api.g_miss_char;
3618 l_pty_hist_csr.new_preferred_flag := l_temp_party_rec.preferred_flag;
3619 END IF;
3620 ELSE
3621 l_pty_hist_csr.old_preferred_flag := fnd_api.g_miss_char;
3622 l_pty_hist_csr.new_preferred_flag := l_temp_party_rec.preferred_flag;
3623 END IF;
3624
3625 CSI_I_PARTIES_H_PKG.update_Row
3626 (
3627 p_INSTANCE_PARTY_HISTORY_ID => l_party_hist_id ,
3628 p_INSTANCE_PARTY_ID => FND_API.G_MISS_NUM ,
3629 p_TRANSACTION_ID => FND_API.G_MISS_NUM ,
3630 p_OLD_PARTY_SOURCE_TABLE => l_pty_hist_csr.OLD_PARTY_SOURCE_TABLE ,
3631 p_NEW_PARTY_SOURCE_TABLE => l_pty_hist_csr.NEW_PARTY_SOURCE_TABLE ,
3632 p_OLD_PARTY_ID => l_pty_hist_csr.OLD_PARTY_ID ,
3633 p_NEW_PARTY_ID => l_pty_hist_csr.NEW_PARTY_ID ,
3634 p_OLD_RELATIONSHIP_TYPE_CODE => l_pty_hist_csr.OLD_RELATIONSHIP_TYPE_CODE ,
3635 p_NEW_RELATIONSHIP_TYPE_CODE => l_pty_hist_csr.NEW_RELATIONSHIP_TYPE_CODE ,
3636 p_OLD_CONTACT_FLAG => l_pty_hist_csr.OLD_CONTACT_FLAG ,
3637 p_NEW_CONTACT_FLAG => l_pty_hist_csr.NEW_CONTACT_FLAG ,
3638 p_OLD_CONTACT_IP_ID => l_pty_hist_csr.OLD_CONTACT_IP_ID ,
3639 p_NEW_CONTACT_IP_ID => l_pty_hist_csr.NEW_CONTACT_IP_ID ,
3640 p_OLD_ACTIVE_START_DATE => l_pty_hist_csr.OLD_ACTIVE_START_DATE ,
3641 p_NEW_ACTIVE_START_DATE => l_pty_hist_csr.NEW_ACTIVE_START_DATE ,
3642 p_OLD_ACTIVE_END_DATE => l_pty_hist_csr.OLD_ACTIVE_END_DATE ,
3643 p_NEW_ACTIVE_END_DATE => l_pty_hist_csr.NEW_ACTIVE_END_DATE ,
3644 p_OLD_CONTEXT => l_pty_hist_csr.OLD_CONTEXT ,
3645 p_NEW_CONTEXT => l_pty_hist_csr.NEW_CONTEXT ,
3646 p_OLD_ATTRIBUTE1 => l_pty_hist_csr.OLD_ATTRIBUTE1 ,
3647 p_NEW_ATTRIBUTE1 => l_pty_hist_csr.NEW_ATTRIBUTE1 ,
3648 p_OLD_ATTRIBUTE2 => l_pty_hist_csr.OLD_ATTRIBUTE2 ,
3649 p_NEW_ATTRIBUTE2 => l_pty_hist_csr.NEW_ATTRIBUTE2 ,
3650 p_OLD_ATTRIBUTE3 => l_pty_hist_csr.OLD_ATTRIBUTE3 ,
3651 p_NEW_ATTRIBUTE3 => l_pty_hist_csr.NEW_ATTRIBUTE3 ,
3652 p_OLD_ATTRIBUTE4 => l_pty_hist_csr.OLD_ATTRIBUTE4 ,
3653 p_NEW_ATTRIBUTE4 => l_pty_hist_csr.NEW_ATTRIBUTE4 ,
3654 p_OLD_ATTRIBUTE5 => l_pty_hist_csr.OLD_ATTRIBUTE5 ,
3655 p_NEW_ATTRIBUTE5 => l_pty_hist_csr.NEW_ATTRIBUTE5 ,
3656 p_OLD_ATTRIBUTE6 => l_pty_hist_csr.OLD_ATTRIBUTE6 ,
3657 p_NEW_ATTRIBUTE6 => l_pty_hist_csr.NEW_ATTRIBUTE6 ,
3658 p_OLD_ATTRIBUTE7 => l_pty_hist_csr.OLD_ATTRIBUTE7 ,
3659 p_NEW_ATTRIBUTE7 => l_pty_hist_csr.NEW_ATTRIBUTE7 ,
3660 p_OLD_ATTRIBUTE8 => l_pty_hist_csr.OLD_ATTRIBUTE8 ,
3661 p_NEW_ATTRIBUTE8 => l_pty_hist_csr.NEW_ATTRIBUTE8 ,
3662 p_OLD_ATTRIBUTE9 => l_pty_hist_csr.OLD_ATTRIBUTE9 ,
3663 p_NEW_ATTRIBUTE9 => l_pty_hist_csr.NEW_ATTRIBUTE9 ,
3664 p_OLD_ATTRIBUTE10 => l_pty_hist_csr.OLD_ATTRIBUTE10 ,
3665 p_NEW_ATTRIBUTE10 => l_pty_hist_csr.NEW_ATTRIBUTE10 ,
3666 p_OLD_ATTRIBUTE11 => l_pty_hist_csr.OLD_ATTRIBUTE11 ,
3667 p_NEW_ATTRIBUTE11 => l_pty_hist_csr.NEW_ATTRIBUTE11 ,
3668 p_OLD_ATTRIBUTE12 => l_pty_hist_csr.OLD_ATTRIBUTE12 ,
3669 p_NEW_ATTRIBUTE12 => l_pty_hist_csr.NEW_ATTRIBUTE12 ,
3670 p_OLD_ATTRIBUTE13 => l_pty_hist_csr.OLD_ATTRIBUTE13 ,
3671 p_NEW_ATTRIBUTE13 => l_pty_hist_csr.NEW_ATTRIBUTE13 ,
3672 p_OLD_ATTRIBUTE14 => l_pty_hist_csr.OLD_ATTRIBUTE14 ,
3673 p_NEW_ATTRIBUTE14 => l_pty_hist_csr.NEW_ATTRIBUTE14 ,
3674 p_OLD_ATTRIBUTE15 => l_pty_hist_csr.OLD_ATTRIBUTE15 ,
3675 p_NEW_ATTRIBUTE15 => l_pty_hist_csr.NEW_ATTRIBUTE15 ,
3676 p_FULL_DUMP_FLAG => FND_API.G_MISS_CHAR ,
3677 p_CREATED_BY => FND_API.G_MISS_NUM ,
3678 p_CREATION_DATE => FND_API.G_MISS_DATE ,
3679 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
3680 p_LAST_UPDATE_DATE => SYSDATE ,
3681 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
3682 p_OBJECT_VERSION_NUMBER => FND_API.G_MISS_NUM ,
3683 p_OLD_PRIMARY_FLAG => l_pty_hist_csr.OLD_CONTACT_FLAG ,
3684 p_NEW_PRIMARY_FLAG => l_pty_hist_csr.NEW_PRIMARY_FLAG ,
3685 p_OLD_PREFERRED_FLAG => l_pty_hist_csr.OLD_CONTACT_FLAG ,
3686 p_NEW_PREFERRED_FLAG => l_pty_hist_csr.NEW_PREFERRED_FLAG );
3687
3688 END IF;
3689 EXCEPTION
3690
3691 WHEN NO_DATA_FOUND THEN
3692 IF (l_mod_value = 0) THEN
3693 -- If the mod value is 0 then dump all the columns both changed and unchanged
3694 -- changed columns have old and new values while the unchanged values have old and new values
3695 -- exactly same
3696 IF (p_party_rec.PARTY_SOURCE_TABLE = FND_API.G_MISS_CHAR) THEN
3697 l_temp_party_rec.PARTY_SOURCE_TABLE := l_curr_party_rec.PARTY_SOURCE_TABLE;
3698 END IF;
3699 IF (p_party_rec.PARTY_ID = FND_API.G_MISS_NUM) THEN
3700 l_temp_party_rec.PARTY_ID := l_curr_party_rec.PARTY_ID ;
3701 END IF;
3702 IF (p_party_rec.RELATIONSHIP_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
3703 l_temp_party_rec.RELATIONSHIP_TYPE_CODE := l_curr_party_rec.RELATIONSHIP_TYPE_CODE ;
3704 END IF;
3705 IF (p_party_rec.CONTACT_FLAG = FND_API.G_MISS_CHAR) THEN
3706 l_temp_party_rec.CONTACT_FLAG := l_curr_party_rec.CONTACT_FLAG ;
3707 END IF;
3708 IF (p_party_rec.CONTACT_IP_ID = FND_API.G_MISS_NUM) THEN
3709 l_temp_party_rec.CONTACT_IP_ID := l_curr_party_rec.CONTACT_IP_ID ;
3710 END IF;
3711 IF (p_party_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
3712 l_temp_party_rec.ACTIVE_START_DATE := l_curr_party_rec.ACTIVE_START_DATE ;
3713 END IF;
3714 IF (p_party_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
3715 l_temp_party_rec.ACTIVE_END_DATE := l_curr_party_rec.ACTIVE_END_DATE ;
3716 END IF;
3717 IF (p_party_rec.context = FND_API.G_MISS_CHAR) THEN
3718 l_temp_party_rec.CONTEXT := l_curr_party_rec.CONTEXT ;
3719 END IF;
3720 IF (p_party_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
3721 l_temp_party_rec.ATTRIBUTE1 := l_curr_party_rec.ATTRIBUTE1 ;
3722 END IF;
3723 IF (p_party_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
3724 l_temp_party_rec.ATTRIBUTE2 := l_curr_party_rec.ATTRIBUTE2 ;
3725 END IF;
3726 IF (p_party_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
3727 l_temp_party_rec.ATTRIBUTE3 := l_curr_party_rec.ATTRIBUTE3 ;
3728 END IF;
3729 IF (p_party_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
3730 l_temp_party_rec.ATTRIBUTE4 := l_curr_party_rec.ATTRIBUTE4 ;
3731 END IF;
3732 IF (p_party_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
3733 l_temp_party_rec.ATTRIBUTE5 := l_curr_party_rec.ATTRIBUTE5 ;
3734 END IF;
3735 IF (p_party_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
3736 l_temp_party_rec.ATTRIBUTE6 := l_curr_party_rec.ATTRIBUTE6 ;
3737 END IF;
3738 IF (p_party_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
3739 l_temp_party_rec.ATTRIBUTE7 := l_curr_party_rec.ATTRIBUTE7 ;
3740 END IF;
3741 IF (p_party_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
3742 l_temp_party_rec.ATTRIBUTE8 := l_curr_party_rec.ATTRIBUTE8 ;
3743 END IF;
3744 IF (p_party_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
3745 l_temp_party_rec.ATTRIBUTE9 := l_curr_party_rec.ATTRIBUTE9 ;
3746 END IF;
3747 IF (p_party_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
3748 l_temp_party_rec.ATTRIBUTE10 := l_curr_party_rec.ATTRIBUTE10 ;
3749 END IF;
3750 IF (p_party_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
3751 l_temp_party_rec.ATTRIBUTE11 := l_curr_party_rec.ATTRIBUTE11 ;
3752 END IF;
3753 IF (p_party_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
3754 l_temp_party_rec.ATTRIBUTE12 := l_curr_party_rec.ATTRIBUTE12 ;
3755 END IF;
3756 IF (p_party_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
3757 l_temp_party_rec.ATTRIBUTE13 := l_curr_party_rec.ATTRIBUTE13 ;
3758 END IF;
3759 IF (p_party_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
3760 l_temp_party_rec.ATTRIBUTE14 := l_curr_party_rec.ATTRIBUTE14 ;
3761 END IF;
3762 IF (p_party_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
3763 l_temp_party_rec.ATTRIBUTE15 := l_curr_party_rec.ATTRIBUTE15 ;
3764 END IF;
3765 IF (p_party_rec.PRIMARY_FLAG = FND_API.G_MISS_CHAR) THEN
3766 l_temp_party_rec.PRIMARY_FLAG := l_curr_party_rec.PRIMARY_FLAG ;
3767 END IF;
3768 IF (p_party_rec.PREFERRED_FLAG = FND_API.G_MISS_CHAR) THEN
3769 l_temp_party_rec.PREFERRED_FLAG := l_curr_party_rec.PREFERRED_FLAG ;
3770 END IF;
3771
3772 -- Call table handlers to insert into csi_i_parties_h table
3773 CSI_I_PARTIES_H_PKG.Insert_Row
3774 (
3775 px_INSTANCE_PARTY_HISTORY_ID => l_inst_party_his_id ,
3776 p_INSTANCE_PARTY_ID => p_party_rec.INSTANCE_PARTY_ID ,
3777 p_TRANSACTION_ID => p_txn_rec.TRANSACTION_ID ,
3778 p_OLD_PARTY_SOURCE_TABLE => l_curr_party_rec.PARTY_SOURCE_TABLE,
3779 p_NEW_PARTY_SOURCE_TABLE => l_temp_party_rec.PARTY_SOURCE_TABLE,
3780 p_OLD_PARTY_ID => l_curr_party_rec.PARTY_ID ,
3781 p_NEW_PARTY_ID => l_temp_party_rec.PARTY_ID ,
3782 p_OLD_RELATIONSHIP_TYPE_CODE => l_curr_party_rec.RELATIONSHIP_TYPE_CODE,
3783 p_NEW_RELATIONSHIP_TYPE_CODE => l_temp_party_rec.RELATIONSHIP_TYPE_CODE,
3784 p_OLD_CONTACT_FLAG => l_curr_party_rec.CONTACT_FLAG ,
3785 p_NEW_CONTACT_FLAG => l_temp_party_rec.CONTACT_FLAG ,
3786 p_OLD_CONTACT_IP_ID => l_curr_party_rec.CONTACT_IP_ID ,
3787 p_NEW_CONTACT_IP_ID => l_temp_party_rec.CONTACT_IP_ID ,
3788 p_OLD_ACTIVE_START_DATE => l_curr_party_rec.ACTIVE_START_DATE,
3789 p_NEW_ACTIVE_START_DATE => l_temp_party_rec.ACTIVE_START_DATE,
3790 p_OLD_ACTIVE_END_DATE => l_curr_party_rec.ACTIVE_END_DATE ,
3791 p_NEW_ACTIVE_END_DATE => l_temp_party_rec.ACTIVE_END_DATE ,
3792 p_OLD_CONTEXT => l_curr_party_rec.context ,
3793 p_NEW_CONTEXT => l_temp_party_rec.context ,
3794 p_OLD_ATTRIBUTE1 => l_curr_party_rec.ATTRIBUTE1 ,
3795 p_NEW_ATTRIBUTE1 => l_temp_party_rec.ATTRIBUTE1 ,
3796 p_OLD_ATTRIBUTE2 => l_curr_party_rec.ATTRIBUTE2 ,
3797 p_NEW_ATTRIBUTE2 => l_temp_party_rec.ATTRIBUTE2 ,
3798 p_OLD_ATTRIBUTE3 => l_curr_party_rec.ATTRIBUTE3 ,
3799 p_NEW_ATTRIBUTE3 => l_temp_party_rec.ATTRIBUTE3 ,
3800 p_OLD_ATTRIBUTE4 => l_curr_party_rec.ATTRIBUTE4 ,
3801 p_NEW_ATTRIBUTE4 => l_temp_party_rec.ATTRIBUTE4 ,
3802 p_OLD_ATTRIBUTE5 => l_curr_party_rec.ATTRIBUTE5 ,
3803 p_NEW_ATTRIBUTE5 => l_temp_party_rec.ATTRIBUTE5 ,
3804 p_OLD_ATTRIBUTE6 => l_curr_party_rec.ATTRIBUTE6 ,
3805 p_NEW_ATTRIBUTE6 => l_temp_party_rec.ATTRIBUTE6 ,
3806 p_OLD_ATTRIBUTE7 => l_curr_party_rec.ATTRIBUTE7 ,
3807 p_NEW_ATTRIBUTE7 => l_temp_party_rec.ATTRIBUTE7 ,
3808 p_OLD_ATTRIBUTE8 => l_curr_party_rec.ATTRIBUTE8 ,
3809 p_NEW_ATTRIBUTE8 => l_temp_party_rec.ATTRIBUTE8 ,
3810 p_OLD_ATTRIBUTE9 => l_curr_party_rec.ATTRIBUTE9 ,
3811 p_NEW_ATTRIBUTE9 => l_temp_party_rec.ATTRIBUTE9 ,
3812 p_OLD_ATTRIBUTE10 => l_curr_party_rec.ATTRIBUTE10 ,
3813 p_NEW_ATTRIBUTE10 => l_temp_party_rec.ATTRIBUTE10 ,
3814 p_OLD_ATTRIBUTE11 => l_curr_party_rec.ATTRIBUTE11 ,
3815 p_NEW_ATTRIBUTE11 => l_temp_party_rec.ATTRIBUTE11 ,
3816 p_OLD_ATTRIBUTE12 => l_curr_party_rec.ATTRIBUTE12 ,
3817 p_NEW_ATTRIBUTE12 => l_temp_party_rec.ATTRIBUTE12 ,
3818 p_OLD_ATTRIBUTE13 => l_curr_party_rec.ATTRIBUTE13 ,
3819 p_NEW_ATTRIBUTE13 => l_temp_party_rec.ATTRIBUTE13 ,
3820 p_OLD_ATTRIBUTE14 => l_curr_party_rec.ATTRIBUTE14 ,
3821 p_NEW_ATTRIBUTE14 => l_temp_party_rec.ATTRIBUTE14 ,
3822 p_OLD_ATTRIBUTE15 => l_curr_party_rec.ATTRIBUTE15 ,
3823 p_NEW_ATTRIBUTE15 => l_temp_party_rec.ATTRIBUTE15 ,
3824 p_FULL_DUMP_FLAG => 'Y' ,
3825 p_CREATED_BY => FND_GLOBAL.USER_ID ,
3826 p_CREATION_DATE => SYSDATE ,
3827 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
3828 p_LAST_UPDATE_DATE => SYSDATE ,
3829 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
3830 p_OBJECT_VERSION_NUMBER => 1 ,
3831 p_OLD_PRIMARY_FLAG => l_curr_party_rec.PRIMARY_FLAG ,
3832 p_NEW_PRIMARY_FLAG => l_temp_party_rec.PRIMARY_FLAG ,
3833 p_OLD_PREFERRED_FLAG => l_curr_party_rec.PREFERRED_FLAG ,
3834 p_NEW_PREFERRED_FLAG => l_temp_party_rec.PREFERRED_FLAG );
3835 ELSE
3836
3837 -- If the mod value is not equal to zero then dump only the changed columns
3838 -- while the unchanged values have old and new values as null
3839 IF (p_party_rec.party_source_table = fnd_api.g_miss_char) OR
3840 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
3841 l_party_hist_rec.old_party_source_table := NULL;
3842 l_party_hist_rec.new_party_source_table := NULL;
3843 ELSIF
3844 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
3845 l_party_hist_rec.old_party_source_table := l_curr_party_rec.party_source_table ;
3846 l_party_hist_rec.new_party_source_table := p_party_rec.party_source_table ;
3847 END IF;
3848 --
3849 IF (p_party_rec.party_id = fnd_api.g_miss_num) OR
3850 NVL(p_party_rec.party_id, fnd_api.g_miss_num) = NVL(l_curr_party_rec.party_id, fnd_api.g_miss_num) THEN
3851 l_party_hist_rec.old_party_id := NULL;
3852 l_party_hist_rec.new_party_id := NULL;
3853 ELSIF
3854 NVL(l_curr_party_rec.party_id,fnd_api.g_miss_num) <> NVL(p_party_rec.party_id,fnd_api.g_miss_num) THEN
3855 l_party_hist_rec.old_party_id := l_curr_party_rec.party_id ;
3856 l_party_hist_rec.new_party_id := p_party_rec.party_id ;
3857 END IF;
3858 --
3859 IF (p_party_rec.relationship_type_code = fnd_api.g_miss_char) OR
3860 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
3861 l_party_hist_rec.old_relationship_type_code := NULL;
3862 l_party_hist_rec.new_relationship_type_code := NULL;
3863 ELSIF
3864 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
3865 l_party_hist_rec.old_relationship_type_code := l_curr_party_rec.relationship_type_code ;
3866 l_party_hist_rec.new_relationship_type_code := p_party_rec.relationship_type_code ;
3867 END IF;
3868 --
3869 IF (p_party_rec.contact_flag = fnd_api.g_miss_char) OR
3870 NVL(p_party_rec.contact_flag, fnd_api.g_miss_char) = NVL(l_curr_party_rec.contact_flag, fnd_api.g_miss_char) THEN
3871 l_party_hist_rec.old_contact_flag := NULL;
3872 l_party_hist_rec.new_contact_flag := NULL;
3873 ELSIF
3874 NVL(l_curr_party_rec.contact_flag,fnd_api.g_miss_char) <> NVL(p_party_rec.contact_flag,fnd_api.g_miss_char) THEN
3875 l_party_hist_rec.old_contact_flag := l_curr_party_rec.contact_flag ;
3876 l_party_hist_rec.new_contact_flag := p_party_rec.contact_flag ;
3877 END IF;
3878 --
3879 IF (p_party_rec.contact_ip_id = fnd_api.g_miss_num) OR
3880 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
3881 l_party_hist_rec.old_contact_ip_id := NULL;
3882 l_party_hist_rec.new_contact_ip_id := NULL;
3883 ELSIF
3884 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
3885 l_party_hist_rec.old_contact_ip_id := l_curr_party_rec.contact_ip_id ;
3886 l_party_hist_rec.new_contact_ip_id := p_party_rec.contact_ip_id ;
3887 END IF;
3888 --
3889 IF (p_party_rec.active_start_date = fnd_api.g_miss_date) OR
3890 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
3891 l_party_hist_rec.old_active_start_date := NULL;
3892 l_party_hist_rec.new_active_start_date := NULL;
3893 ELSIF
3894 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
3895 l_party_hist_rec.old_active_start_date := l_curr_party_rec.active_start_date ;
3896 l_party_hist_rec.new_active_start_date := p_party_rec.active_start_date ;
3897 END IF;
3898 --
3899 IF (p_party_rec.active_end_date = fnd_api.g_miss_date) OR
3900 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
3901 l_party_hist_rec.old_active_end_date := NULL;
3902 l_party_hist_rec.new_active_end_date := NULL;
3903 ELSIF
3904 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
3905 l_party_hist_rec.old_active_end_date := l_curr_party_rec.active_end_date ;
3906 l_party_hist_rec.new_active_end_date := p_party_rec.active_end_date ;
3907 END IF;
3908 --
3909 IF (p_party_rec.context = fnd_api.g_miss_char) OR
3910 NVL(p_party_rec.context, fnd_api.g_miss_char) = NVL(l_curr_party_rec.context, fnd_api.g_miss_char) THEN
3911 l_party_hist_rec.old_context := NULL;
3912 l_party_hist_rec.new_context := NULL;
3913 ELSIF
3914 NVL(l_curr_party_rec.context,fnd_api.g_miss_char) <> NVL(p_party_rec.context,fnd_api.g_miss_char) THEN
3915 l_party_hist_rec.old_context := l_curr_party_rec.context ;
3916 l_party_hist_rec.new_context := p_party_rec.context ;
3917 END IF;
3918 --
3919 IF (p_party_rec.attribute1 = fnd_api.g_miss_char) OR
3920 NVL(p_party_rec.attribute1, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute1, fnd_api.g_miss_char) THEN
3921 l_party_hist_rec.old_attribute1 := NULL;
3922 l_party_hist_rec.new_attribute1 := NULL;
3923 ELSIF
3924 NVL(l_curr_party_rec.attribute1,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute1,fnd_api.g_miss_char) THEN
3925 l_party_hist_rec.old_attribute1 := l_curr_party_rec.attribute1 ;
3926 l_party_hist_rec.new_attribute1 := p_party_rec.attribute1 ;
3927 END IF;
3928 --
3929 IF (p_party_rec.attribute2 = fnd_api.g_miss_char) OR
3930 NVL(p_party_rec.attribute2, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute2, fnd_api.g_miss_char) THEN
3931 l_party_hist_rec.old_attribute2 := NULL;
3932 l_party_hist_rec.new_attribute2 := NULL;
3933 ELSIF
3934 NVL(l_curr_party_rec.attribute2,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute2,fnd_api.g_miss_char) THEN
3935 l_party_hist_rec.old_attribute2 := l_curr_party_rec.attribute2 ;
3936 l_party_hist_rec.new_attribute2 := p_party_rec.attribute2 ;
3937 END IF;
3938 --
3939 IF (p_party_rec.attribute3 = fnd_api.g_miss_char) OR
3940 NVL(p_party_rec.attribute3, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute3, fnd_api.g_miss_char) THEN
3941 l_party_hist_rec.old_attribute3 := NULL;
3942 l_party_hist_rec.new_attribute3 := NULL;
3943 ELSIF
3944 NVL(l_curr_party_rec.attribute3,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute3,fnd_api.g_miss_char) THEN
3945 l_party_hist_rec.old_attribute3 := l_curr_party_rec.attribute3 ;
3946 l_party_hist_rec.new_attribute3 := p_party_rec.attribute3 ;
3947 END IF;
3948 --
3949 IF (p_party_rec.attribute4 = fnd_api.g_miss_char) OR
3950 NVL(p_party_rec.attribute4, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute4, fnd_api.g_miss_char) THEN
3951 l_party_hist_rec.old_attribute4 := NULL;
3952 l_party_hist_rec.new_attribute4 := NULL;
3953 ELSIF
3954 NVL(l_curr_party_rec.attribute4,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute4,fnd_api.g_miss_char) THEN
3955 l_party_hist_rec.old_attribute4 := l_curr_party_rec.attribute4 ;
3956 l_party_hist_rec.new_attribute4 := p_party_rec.attribute4 ;
3957 END IF;
3958 --
3959 IF (p_party_rec.attribute5 = fnd_api.g_miss_char) OR
3960 NVL(p_party_rec.attribute5, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute5, fnd_api.g_miss_char) THEN
3961 l_party_hist_rec.old_attribute5 := NULL;
3962 l_party_hist_rec.new_attribute5 := NULL;
3963 ELSIF
3964 NVL(l_curr_party_rec.attribute5,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute5,fnd_api.g_miss_char) THEN
3965 l_party_hist_rec.old_attribute5 := l_curr_party_rec.attribute5 ;
3966 l_party_hist_rec.new_attribute5 := p_party_rec.attribute5 ;
3967 END IF;
3968 --
3969 IF (p_party_rec.attribute6 = fnd_api.g_miss_char) OR
3970 NVL(p_party_rec.attribute6, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute6, fnd_api.g_miss_char) THEN
3971 l_party_hist_rec.old_attribute6 := NULL;
3972 l_party_hist_rec.new_attribute6 := NULL;
3973 ELSIF
3974 NVL(l_curr_party_rec.attribute6,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute6,fnd_api.g_miss_char) THEN
3975 l_party_hist_rec.old_attribute6 := l_curr_party_rec.attribute6 ;
3976 l_party_hist_rec.new_attribute6 := p_party_rec.attribute6 ;
3977 END IF;
3978 --
3979 IF (p_party_rec.attribute7 = fnd_api.g_miss_char) OR
3980 NVL(p_party_rec.attribute7, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute7, fnd_api.g_miss_char) THEN
3981 l_party_hist_rec.old_attribute7 := NULL;
3982 l_party_hist_rec.new_attribute7 := NULL;
3983 ELSIF
3984 NVL(l_curr_party_rec.attribute7,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute7,fnd_api.g_miss_char) THEN
3985 l_party_hist_rec.old_attribute7 := l_curr_party_rec.attribute7 ;
3986 l_party_hist_rec.new_attribute7 := p_party_rec.attribute7 ;
3987 END IF;
3988 --
3989 IF (p_party_rec.attribute8 = fnd_api.g_miss_char) OR
3990 NVL(p_party_rec.attribute8, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute8, fnd_api.g_miss_char) THEN
3991 l_party_hist_rec.old_attribute8 := NULL;
3992 l_party_hist_rec.new_attribute8 := NULL;
3993 ELSIF
3994 NVL(l_curr_party_rec.attribute8,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute8,fnd_api.g_miss_char) THEN
3995 l_party_hist_rec.old_attribute8 := l_curr_party_rec.attribute8 ;
3996 l_party_hist_rec.new_attribute8 := p_party_rec.attribute8 ;
3997 END IF;
3998 --
3999 IF (p_party_rec.attribute9 = fnd_api.g_miss_char) OR
4000 NVL(p_party_rec.attribute9, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute9, fnd_api.g_miss_char) THEN
4001 l_party_hist_rec.old_attribute9 := NULL;
4002 l_party_hist_rec.new_attribute9 := NULL;
4003 ELSIF
4004 NVL(l_curr_party_rec.attribute9,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute9,fnd_api.g_miss_char) THEN
4005 l_party_hist_rec.old_attribute9 := l_curr_party_rec.attribute9 ;
4006 l_party_hist_rec.new_attribute9 := p_party_rec.attribute9 ;
4007 END IF;
4008 --
4009 IF (p_party_rec.attribute10 = fnd_api.g_miss_char) OR
4010 NVL(p_party_rec.attribute10, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute10, fnd_api.g_miss_char) THEN
4011 l_party_hist_rec.old_attribute10 := NULL;
4012 l_party_hist_rec.new_attribute10 := NULL;
4013 ELSIF
4014 NVL(l_curr_party_rec.attribute10,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute10,fnd_api.g_miss_char) THEN
4015 l_party_hist_rec.old_attribute10 := l_curr_party_rec.attribute10 ;
4016 l_party_hist_rec.new_attribute10 := p_party_rec.attribute10 ;
4017 END IF;
4018 --
4019 IF (p_party_rec.attribute11 = fnd_api.g_miss_char) OR
4020 NVL(p_party_rec.attribute11, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute11, fnd_api.g_miss_char) THEN
4021 l_party_hist_rec.old_attribute11 := NULL;
4022 l_party_hist_rec.new_attribute11 := NULL;
4023 ELSIF
4024 NVL(l_curr_party_rec.attribute11,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute11,fnd_api.g_miss_char) THEN
4025 l_party_hist_rec.old_attribute11 := l_curr_party_rec.attribute11 ;
4026 l_party_hist_rec.new_attribute11 := p_party_rec.attribute11 ;
4027 END IF;
4028 --
4029 IF (p_party_rec.attribute12 = fnd_api.g_miss_char) OR
4030 NVL(p_party_rec.attribute12, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute12, fnd_api.g_miss_char) THEN
4031 l_party_hist_rec.old_attribute12 := NULL;
4032 l_party_hist_rec.new_attribute12 := NULL;
4033 ELSIF
4034 NVL(l_curr_party_rec.attribute12,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute12,fnd_api.g_miss_char) THEN
4035 l_party_hist_rec.old_attribute12 := l_curr_party_rec.attribute12 ;
4036 l_party_hist_rec.new_attribute12 := p_party_rec.attribute12 ;
4037 END IF;
4038 --
4039 IF (p_party_rec.attribute13 = fnd_api.g_miss_char) OR
4040 NVL(p_party_rec.attribute13, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute13, fnd_api.g_miss_char) THEN
4041 l_party_hist_rec.old_attribute13 := NULL;
4042 l_party_hist_rec.new_attribute13 := NULL;
4043 ELSIF
4044 NVL(l_curr_party_rec.attribute13,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute13,fnd_api.g_miss_char) THEN
4045 l_party_hist_rec.old_attribute13 := l_curr_party_rec.attribute13 ;
4046 l_party_hist_rec.new_attribute13 := p_party_rec.attribute13 ;
4047 END IF;
4048 --
4049 IF (p_party_rec.attribute14 = fnd_api.g_miss_char) OR
4050 NVL(p_party_rec.attribute14, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute14, fnd_api.g_miss_char) THEN
4051 l_party_hist_rec.old_attribute14 := NULL;
4052 l_party_hist_rec.new_attribute14 := NULL;
4053 ELSIF
4054 NVL(l_curr_party_rec.attribute14,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute14,fnd_api.g_miss_char) THEN
4055 l_party_hist_rec.old_attribute14 := l_curr_party_rec.attribute14 ;
4056 l_party_hist_rec.new_attribute14 := p_party_rec.attribute14 ;
4057 END IF;
4058 --
4059 IF (p_party_rec.attribute15 = fnd_api.g_miss_char) OR
4060 NVL(p_party_rec.attribute15, fnd_api.g_miss_char) = NVL(l_curr_party_rec.attribute15, fnd_api.g_miss_char) THEN
4061 l_party_hist_rec.old_attribute15 := NULL;
4062 l_party_hist_rec.new_attribute15 := NULL;
4063 ELSIF
4064 NVL(l_curr_party_rec.attribute15,fnd_api.g_miss_char) <> NVL(p_party_rec.attribute15,fnd_api.g_miss_char) THEN
4065 l_party_hist_rec.old_attribute15 := l_curr_party_rec.attribute15 ;
4066 l_party_hist_rec.new_attribute15 := p_party_rec.attribute15 ;
4067 END IF;
4068 --
4069 IF (p_party_rec.primary_flag = fnd_api.g_miss_char) OR
4070 NVL(p_party_rec.primary_flag, fnd_api.g_miss_char) = NVL(l_curr_party_rec.primary_flag, fnd_api.g_miss_char) THEN
4071 l_party_hist_rec.old_primary_flag := NULL;
4072 l_party_hist_rec.new_primary_flag := NULL;
4073 ELSIF
4074 NVL(l_curr_party_rec.primary_flag,fnd_api.g_miss_char) <> NVL(p_party_rec.primary_flag,fnd_api.g_miss_char) THEN
4075 l_party_hist_rec.old_primary_flag := l_curr_party_rec.primary_flag ;
4076 l_party_hist_rec.new_primary_flag := p_party_rec.primary_flag ;
4077 END IF;
4078 --
4079 IF (p_party_rec.preferred_flag = fnd_api.g_miss_char) OR
4080 NVL(p_party_rec.preferred_flag, fnd_api.g_miss_char) = NVL(l_curr_party_rec.preferred_flag, fnd_api.g_miss_char) THEN
4081 l_party_hist_rec.old_preferred_flag := NULL;
4082 l_party_hist_rec.new_preferred_flag := NULL;
4083 ELSIF
4084 NVL(l_curr_party_rec.preferred_flag,fnd_api.g_miss_char) <> NVL(p_party_rec.preferred_flag,fnd_api.g_miss_char) THEN
4085 l_party_hist_rec.old_preferred_flag := l_curr_party_rec.preferred_flag ;
4086 l_party_hist_rec.new_preferred_flag := p_party_rec.preferred_flag ;
4087 END IF;
4088
4089 -- Call table handlers to insert into csi_i_parties_h table
4090 CSI_I_PARTIES_H_PKG.Insert_Row
4091 (
4092 px_INSTANCE_PARTY_HISTORY_ID => l_inst_party_his_id ,
4093 p_INSTANCE_PARTY_ID => p_party_rec.INSTANCE_PARTY_ID ,
4094 p_TRANSACTION_ID => p_txn_rec.TRANSACTION_ID ,
4095 p_OLD_PARTY_SOURCE_TABLE => l_party_hist_rec.OLD_PARTY_SOURCE_TABLE ,
4096 p_NEW_PARTY_SOURCE_TABLE => l_party_hist_rec.NEW_PARTY_SOURCE_TABLE ,
4097 p_OLD_PARTY_ID => l_party_hist_rec.OLD_PARTY_ID ,
4098 p_NEW_PARTY_ID => l_party_hist_rec.NEW_PARTY_ID ,
4099 p_OLD_RELATIONSHIP_TYPE_CODE => l_party_hist_rec.OLD_RELATIONSHIP_TYPE_CODE ,
4100 p_NEW_RELATIONSHIP_TYPE_CODE => l_party_hist_rec.NEW_RELATIONSHIP_TYPE_CODE ,
4101 p_OLD_CONTACT_FLAG => l_party_hist_rec.OLD_CONTACT_FLAG ,
4102 p_NEW_CONTACT_FLAG => l_party_hist_rec.NEW_CONTACT_FLAG ,
4103 p_OLD_CONTACT_IP_ID => l_party_hist_rec.OLD_CONTACT_IP_ID ,
4104 p_NEW_CONTACT_IP_ID => l_party_hist_rec.NEW_CONTACT_IP_ID ,
4105 p_OLD_ACTIVE_START_DATE => l_party_hist_rec.OLD_ACTIVE_START_DATE ,
4106 p_NEW_ACTIVE_START_DATE => l_party_hist_rec.NEW_ACTIVE_START_DATE ,
4107 p_OLD_ACTIVE_END_DATE => l_party_hist_rec.OLD_ACTIVE_END_DATE ,
4108 p_NEW_ACTIVE_END_DATE => l_party_hist_rec.NEW_ACTIVE_END_DATE ,
4109 p_OLD_CONTEXT => l_party_hist_rec.OLD_CONTEXT ,
4110 p_NEW_CONTEXT => l_party_hist_rec.NEW_CONTEXT ,
4111 p_OLD_ATTRIBUTE1 => l_party_hist_rec.OLD_ATTRIBUTE1 ,
4112 p_NEW_ATTRIBUTE1 => l_party_hist_rec.NEW_ATTRIBUTE1 ,
4113 p_OLD_ATTRIBUTE2 => l_party_hist_rec.OLD_ATTRIBUTE2 ,
4114 p_NEW_ATTRIBUTE2 => l_party_hist_rec.NEW_ATTRIBUTE2 ,
4115 p_OLD_ATTRIBUTE3 => l_party_hist_rec.OLD_ATTRIBUTE3 ,
4116 p_NEW_ATTRIBUTE3 => l_party_hist_rec.NEW_ATTRIBUTE3 ,
4117 p_OLD_ATTRIBUTE4 => l_party_hist_rec.OLD_ATTRIBUTE4 ,
4118 p_NEW_ATTRIBUTE4 => l_party_hist_rec.NEW_ATTRIBUTE4 ,
4119 p_OLD_ATTRIBUTE5 => l_party_hist_rec.OLD_ATTRIBUTE5 ,
4120 p_NEW_ATTRIBUTE5 => l_party_hist_rec.NEW_ATTRIBUTE5 ,
4121 p_OLD_ATTRIBUTE6 => l_party_hist_rec.OLD_ATTRIBUTE6 ,
4122 p_NEW_ATTRIBUTE6 => l_party_hist_rec.NEW_ATTRIBUTE6 ,
4123 p_OLD_ATTRIBUTE7 => l_party_hist_rec.OLD_ATTRIBUTE7 ,
4124 p_NEW_ATTRIBUTE7 => l_party_hist_rec.NEW_ATTRIBUTE7 ,
4125 p_OLD_ATTRIBUTE8 => l_party_hist_rec.OLD_ATTRIBUTE8 ,
4126 p_NEW_ATTRIBUTE8 => l_party_hist_rec.NEW_ATTRIBUTE8 ,
4127 p_OLD_ATTRIBUTE9 => l_party_hist_rec.OLD_ATTRIBUTE9 ,
4128 p_NEW_ATTRIBUTE9 => l_party_hist_rec.NEW_ATTRIBUTE9 ,
4129 p_OLD_ATTRIBUTE10 => l_party_hist_rec.OLD_ATTRIBUTE10 ,
4130 p_NEW_ATTRIBUTE10 => l_party_hist_rec.NEW_ATTRIBUTE10 ,
4131 p_OLD_ATTRIBUTE11 => l_party_hist_rec.OLD_ATTRIBUTE11 ,
4132 p_NEW_ATTRIBUTE11 => l_party_hist_rec.NEW_ATTRIBUTE11 ,
4133 p_OLD_ATTRIBUTE12 => l_party_hist_rec.OLD_ATTRIBUTE12 ,
4134 p_NEW_ATTRIBUTE12 => l_party_hist_rec.NEW_ATTRIBUTE12 ,
4135 p_OLD_ATTRIBUTE13 => l_party_hist_rec.OLD_ATTRIBUTE13 ,
4136 p_NEW_ATTRIBUTE13 => l_party_hist_rec.NEW_ATTRIBUTE13 ,
4137 p_OLD_ATTRIBUTE14 => l_party_hist_rec.OLD_ATTRIBUTE14 ,
4138 p_NEW_ATTRIBUTE14 => l_party_hist_rec.NEW_ATTRIBUTE14 ,
4139 p_OLD_ATTRIBUTE15 => l_party_hist_rec.OLD_ATTRIBUTE15 ,
4140 p_NEW_ATTRIBUTE15 => l_party_hist_rec.NEW_ATTRIBUTE15 ,
4141 p_FULL_DUMP_FLAG => 'N',
4142 p_CREATED_BY => FND_GLOBAL.USER_ID ,
4143 p_CREATION_DATE => SYSDATE ,
4144 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
4145 p_LAST_UPDATE_DATE => SYSDATE ,
4146 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
4147 p_OBJECT_VERSION_NUMBER => 1 ,
4148 p_OLD_PRIMARY_FLAG => l_party_hist_rec.OLD_PRIMARY_FLAG ,
4149 p_NEW_PRIMARY_FLAG => l_party_hist_rec.NEW_PRIMARY_FLAG ,
4150 p_OLD_PREFERRED_FLAG => l_party_hist_rec.OLD_PREFERRED_FLAG ,
4151 p_NEW_PREFERRED_FLAG => l_party_hist_rec.NEW_PREFERRED_FLAG );
4152
4153 END IF;
4154
4155 END;
4156 -- End of Changes for Bug#2547034 on 09/20/02 - rtalluri
4157
4158 -- Update accounting class code in csi_item_instances table
4159
4160 csi_item_instance_pvt.get_and_update_acct_class
4161 ( p_api_version => p_api_version
4162 ,p_commit => p_commit
4163 ,p_init_msg_list => p_init_msg_list
4164 ,p_validation_level => p_validation_level
4165 ,p_instance_id => l_curr_party_rec.instance_id
4166 ,p_txn_rec => p_txn_rec
4167 ,x_acct_class_code => l_acct_class_code
4168 ,x_return_status => x_return_status
4169 ,x_msg_count => x_msg_count
4170 ,x_msg_data => x_msg_data
4171 );
4172
4173 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4174 FOR i in 1..x_msg_Count LOOP
4175 FND_MSG_PUB.Get(p_msg_index => i,
4176 p_encoded => 'F',
4177 p_data => x_msg_data,
4178 p_msg_index_out => x_msg_index_out );
4179 End LOOP;
4180 RAISE FND_API.G_EXC_ERROR;
4181 END IF;
4182 -- srramakr Bug # 2232230. Expire the Contacts incase of Xfer of Ownership.
4183 --
4184 IF ((p_party_rec.PARTY_ID <> FND_API.G_MISS_NUM)
4185 AND (p_party_rec.PARTY_ID IS NOT NULL)
4186 AND (p_party_rec.PARTY_ID <> l_curr_party_rec.PARTY_ID))
4187 THEN
4188 For cont_rec in get_cont_party_rec(p_party_rec.INSTANCE_PARTY_ID)
4189 LOOP
4190 l_cont_party_rec := l_init_party_rec;
4191 l_cont_party_rec.instance_party_id := cont_rec.instance_party_id;
4192 l_cont_party_rec.object_version_number := cont_rec.object_version_number;
4193 -- Calling Expire Instance Party Relationship
4194 expire_inst_party_relationship
4195 ( p_api_version => p_api_version
4196 ,p_commit => fnd_api.g_false
4197 ,p_init_msg_list => fnd_api.g_false
4198 ,p_validation_level => fnd_api.g_valid_level_full
4199 ,p_instance_party_rec => l_cont_party_rec
4200 ,p_txn_rec => p_txn_rec
4201 ,x_return_status => x_return_status
4202 ,x_msg_count => x_msg_count
4203 ,x_msg_data => x_msg_data
4204 );
4205 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4206 FOR i in 1..x_msg_Count LOOP
4207 FND_MSG_PUB.Get(p_msg_index => i,
4208 p_encoded => 'F',
4209 p_data => x_msg_data,
4210 p_msg_index_out => x_msg_index_out );
4211 End LOOP;
4212 RAISE FND_API.G_EXC_ERROR;
4213 END IF;
4214 END LOOP;
4215 END IF;
4216 -- End of API body
4217 -- Standard check of p_commit.
4218 IF FND_API.To_Boolean( p_commit ) THEN
4219 COMMIT WORK;
4220 END IF;
4221 -- Standard call to get message count and if count is get message info.
4222 FND_MSG_PUB.Count_And_Get
4223 (p_count => x_msg_count ,
4224 p_data => x_msg_data );
4225 EXCEPTION
4226 WHEN FND_API.G_EXC_ERROR THEN
4227 -- ROLLBACK TO update_inst_party_rel_pvt;
4228 x_return_status := FND_API.G_RET_STS_ERROR ;
4229 FND_MSG_PUB.Count_And_Get
4230 ( p_count => x_msg_count,
4231 p_data => x_msg_data );
4232 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4233 -- ROLLBACK TO update_inst_party_rel_pvt;
4234 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4235 FND_MSG_PUB.Count_And_Get
4236 ( p_count => x_msg_count,
4237 p_data => x_msg_data );
4238 WHEN OTHERS THEN
4239 -- ROLLBACK TO update_inst_party_rel_pvt;
4240 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4241 IF FND_MSG_PUB.Check_Msg_Level
4242 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4243 THEN
4244 FND_MSG_PUB.Add_Exc_Msg
4245 ( g_pkg_name, l_api_name );
4246 END IF;
4247 FND_MSG_PUB.Count_And_Get
4248 ( p_count => x_msg_count,
4249 p_data => x_msg_data );
4250
4251 END update_inst_party_relationship ;
4252
4253 /*-------------------------------------------------------*/
4254 /* Procedure name: Expire_inst_party_relationship */
4255 /* Description : Procedure used to expire an existing */
4256 /* instance -party relationships */
4257 /*-------------------------------------------------------*/
4258
4259 PROCEDURE expire_inst_party_relationship
4260 ( p_api_version IN NUMBER
4261 ,p_commit IN VARCHAR2
4262 ,p_init_msg_list IN VARCHAR2
4263 ,p_validation_level IN NUMBER
4264 ,p_instance_party_rec IN csi_datastructures_pub.party_rec
4265 ,p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
4266 ,x_return_status OUT NOCOPY VARCHAR2
4267 ,x_msg_count OUT NOCOPY NUMBER
4268 ,x_msg_data OUT NOCOPY VARCHAR2
4269 ) IS
4270
4271 l_api_name CONSTANT VARCHAR2(30) := 'EXPIRE_INST_PARTY_RELATIONSHIP';
4272 l_api_version CONSTANT NUMBER := 1.0;
4273 l_csi_debug_level NUMBER;
4274 l_party_rec csi_datastructures_pub.party_rec;
4275 l_msg_index NUMBER;
4276 l_msg_count NUMBER;
4277 l_line_count NUMBER;
4278 l_full_dump_frequency NUMBER;
4279 l_mod_value NUMBER;
4280 l_curr_party_rec csi_datastructures_pub.party_rec;
4281 l_party_account_rec csi_datastructures_pub.party_account_rec;
4282 l_OBJECT_VERSION_NUMBER NUMBER;
4283 l_inst_party_his_id NUMBER;
4284 l_temp_party_acct_rec csi_datastructures_pub.party_account_rec;
4285 --
4286 CURSOR get_curr_party_rec (p_inst_party_id IN NUMBER) IS
4287 SELECT
4288 instance_party_id ,
4289 instance_id ,
4290 party_source_table ,
4291 party_id ,
4292 relationship_type_code,
4293 contact_flag ,
4294 contact_ip_id ,
4295 active_start_date ,
4296 active_end_date ,
4297 context ,
4298 attribute1 ,
4299 attribute2 ,
4300 attribute3 ,
4301 attribute4 ,
4302 attribute5 ,
4303 attribute6 ,
4304 attribute7 ,
4305 attribute8 ,
4306 attribute9 ,
4307 attribute10 ,
4308 attribute11 ,
4309 attribute12 ,
4310 attribute13 ,
4311 attribute14 ,
4312 attribute15 ,
4313 object_version_number,
4314 primary_flag ,
4315 preferred_flag ,
4316 null parent_tbl_index ,
4317 null call_contracts,
4318 null interface_id,
4319 null contact_parent_tbl_index,
4320 null cascade_ownership_flag -- Added for bug 2972082
4321 FROM CSI_I_PARTIES
4322 WHERE INSTANCE_PARTY_ID = p_inst_party_id
4323 AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE))
4324 FOR UPDATE OF OBJECT_VERSION_NUMBER;
4325
4326 BEGIN
4327 -- Standard Start of API savepoint
4328 -- SAVEPOINT expire_inst_party_rel_pvt;
4329
4330 -- Standard call to check for call compatibility.
4331 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
4332 p_api_version ,
4333 l_api_name ,
4334 g_pkg_name )
4335 THEN
4336 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4337 END IF;
4338
4339 -- Initialize message list if p_init_msg_list is set to TRUE.
4340 IF FND_API.to_Boolean( p_init_msg_list ) THEN
4341 FND_MSG_PUB.initialize;
4342 END IF;
4343
4344 -- Initialize API return status to success
4345 -- Verify if the Party rel combination exists
4346 x_return_status := FND_API.G_RET_STS_SUCCESS;
4347
4348 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
4349 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
4350
4351 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
4352 IF (l_csi_debug_level > 0) THEN
4353 csi_gen_utility_pvt.put_line( 'expire_inst_party_relationship');
4354 END IF;
4355
4356 -- If the debug level = 2 then dump all the parameters values.
4357 IF (l_csi_debug_level > 1) THEN
4358 csi_gen_utility_pvt.put_line( 'expire_inst_party_relationship:'||
4359 p_api_version ||'-'||
4360 p_commit ||'-'||
4361 p_init_msg_list );
4362
4363 -- Dump the records in the log file
4364 csi_gen_utility_pvt.dump_party_rec(p_instance_party_rec );
4365 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
4366 END IF;
4367 -- Start API body
4368 --
4369 -- Check if all the required parameters are passed
4370 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
4371 ( p_instance_party_rec.instance_party_id ,
4372 ' p_instance_party_rec.instance_party_id ',
4373 l_api_name );
4374 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
4375 ( p_instance_party_rec.object_version_number ,
4376 ' p_instance_party_rec.object_version_number ',
4377 l_api_name );
4378
4379 -- Check if the instance party id is valid
4380 IF NOT(CSI_Instance_parties_vld_pvt.Is_Inst_partyID_Valid
4381 (p_Instance_party_id => p_instance_party_rec.instance_party_id
4382 ,p_txn_type_id => p_txn_rec.transaction_type_id
4383 ,p_mode => 'E' -- Added for bug 3550541
4384 )
4385 )
4386 THEN
4387 -- Message added in the validation routine since additional validation added for bug # 2477417.
4388 -- FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INST_PARTY_ID');
4389 -- FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',p_instance_party_rec.instance_party_id);
4390 -- FND_MSG_PUB.Add;
4391 RAISE FND_API.G_EXC_ERROR;
4392 END IF;
4393 -- check if the object_version_number passed matches with the one
4394 -- in the database else raise error
4395 OPEN get_curr_party_rec(p_instance_party_rec.instance_party_id);
4396 FETCH get_curr_party_rec INTO l_curr_party_rec;
4397 IF (l_curr_party_rec.object_version_number <> p_instance_party_rec.OBJECT_VERSION_NUMBER) THEN
4398 FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
4399 FND_MSG_PUB.ADD;
4400 RAISE FND_API.G_EXC_ERROR;
4401 END IF;
4402 --
4403 IF get_curr_party_rec%NOTFOUND THEN
4404 FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
4405 FND_MSG_PUB.ADD;
4406 RAISE FND_API.G_EXC_ERROR;
4407 END IF;
4408 CLOSE get_curr_party_rec;
4409 -- Initialize all the parameters and call update_inst_party_relationship to expire the record
4410 l_party_rec.instance_party_id := l_curr_party_rec.instance_party_id;
4411 l_party_rec.instance_id := FND_API.G_MISS_NUM;
4412 l_party_rec.PARTY_SOURCE_TABLE := FND_API.G_MISS_CHAR;
4413 l_party_rec.PARTY_ID := FND_API.G_MISS_NUM;
4414 l_party_rec.RELATIONSHIP_TYPE_CODE := FND_API.G_MISS_CHAR;
4415 l_party_rec.CONTACT_FLAG := FND_API.G_MISS_CHAR;
4416 l_party_rec.CONTACT_IP_ID := FND_API.G_MISS_NUM;
4417 l_party_rec.ACTIVE_START_DATE := FND_API.G_MISS_DATE;
4418 l_party_rec.ACTIVE_END_DATE := sysdate;
4419 l_party_rec.CONTEXT := FND_API.G_MISS_CHAR;
4420 l_party_rec.ATTRIBUTE1 := FND_API.G_MISS_CHAR;
4421 l_party_rec.ATTRIBUTE2 := FND_API.G_MISS_CHAR;
4422 l_party_rec.ATTRIBUTE3 := FND_API.G_MISS_CHAR;
4423 l_party_rec.ATTRIBUTE4 := FND_API.G_MISS_CHAR;
4424 l_party_rec.ATTRIBUTE5 := FND_API.G_MISS_CHAR;
4425 l_party_rec.ATTRIBUTE6 := FND_API.G_MISS_CHAR;
4426 l_party_rec.ATTRIBUTE7 := FND_API.G_MISS_CHAR;
4427 l_party_rec.ATTRIBUTE8 := FND_API.G_MISS_CHAR;
4428 l_party_rec.ATTRIBUTE9 := FND_API.G_MISS_CHAR;
4429 l_party_rec.ATTRIBUTE10 := FND_API.G_MISS_CHAR;
4430 l_party_rec.ATTRIBUTE11 := FND_API.G_MISS_CHAR;
4431 l_party_rec.ATTRIBUTE12 := FND_API.G_MISS_CHAR;
4432 l_party_rec.ATTRIBUTE13 := FND_API.G_MISS_CHAR;
4433 l_party_rec.ATTRIBUTE14 := FND_API.G_MISS_CHAR;
4434 l_party_rec.ATTRIBUTE15 := FND_API.G_MISS_CHAR;
4435 l_party_rec.OBJECT_VERSION_NUMBER := p_instance_party_rec.object_version_number;
4436 --
4437 g_expire_party_flag := 'Y';
4438 update_inst_party_relationship
4439 ( p_api_version => p_api_version
4440 ,p_commit => p_commit
4441 ,p_init_msg_list => p_init_msg_list
4442 ,p_validation_level => p_validation_level
4443 ,p_party_rec => l_party_rec
4444 ,p_txn_rec => p_txn_rec
4445 ,x_return_status => x_return_status
4446 ,x_msg_count => x_msg_count
4447 ,x_msg_data => x_msg_data ) ;
4448
4449 g_expire_party_flag := 'N';
4450 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4451 l_msg_index := 1;
4452 l_msg_count := x_msg_count;
4453 WHILE l_msg_count > 0 LOOP
4454 x_msg_data := FND_MSG_PUB.GET(
4455 l_msg_index,
4456 FND_API.G_FALSE );
4457 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
4458 l_msg_index := l_msg_index + 1;
4459 l_msg_count := l_msg_count - 1;
4460 END LOOP;
4461 RAISE FND_API.G_EXC_ERROR;
4462 END IF;
4463 --
4464 -- End of API body
4465
4466 -- Standard check of p_commit.
4467 IF FND_API.To_Boolean( p_commit ) THEN
4468 COMMIT WORK;
4469 END IF;
4470 -- Standard call to get message count and if count is get message info.
4471 FND_MSG_PUB.Count_And_Get
4472 (p_count => x_msg_count ,
4473 p_data => x_msg_data );
4474 EXCEPTION
4475 WHEN FND_API.G_EXC_ERROR THEN
4476 -- ROLLBACK TO expire_inst_party_rel_pvt;
4477 x_return_status := FND_API.G_RET_STS_ERROR ;
4478 FND_MSG_PUB.Count_And_Get
4479 ( p_count => x_msg_count,
4480 p_data => x_msg_data );
4481 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4482 -- ROLLBACK TO expire_inst_party_rel_pvt;
4483 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4484 FND_MSG_PUB.Count_And_Get
4485 ( p_count => x_msg_count,
4486 p_data => x_msg_data );
4487 WHEN OTHERS THEN
4488 -- ROLLBACK TO expire_inst_party_rel_pvt;
4489 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4490 IF FND_MSG_PUB.Check_Msg_Level
4491 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4492 THEN
4493 FND_MSG_PUB.Add_Exc_Msg
4494 ( g_pkg_name, l_api_name );
4495 END IF;
4496 FND_MSG_PUB.Count_And_Get
4497 ( p_count => x_msg_count,
4498 p_data => x_msg_data );
4499 END expire_inst_party_relationship;
4500
4501 /*-----------------------------------------------------------*/
4502 /* Procedure name: Create_inst_party_account */
4503 /* Description : Procedure used to create new */
4504 /* instance-party account relationships */
4505 /*-----------------------------------------------------------*/
4506
4507 PROCEDURE create_inst_party_account
4508 ( p_api_version IN NUMBER
4509 ,p_commit IN VARCHAR2
4510 ,p_init_msg_list IN VARCHAR2
4511 ,p_validation_level IN NUMBER
4512 ,p_party_account_rec IN OUT NOCOPY csi_datastructures_pub.party_account_rec
4513 ,p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
4514 ,x_return_status OUT NOCOPY VARCHAR2
4515 ,x_msg_count OUT NOCOPY NUMBER
4516 ,x_msg_data OUT NOCOPY VARCHAR2
4517 ,p_inst_party_tbl IN OUT NOCOPY csi_party_relationships_pvt.inst_party_tbl
4518 ,p_acct_rel_type_tbl IN OUT NOCOPY csi_party_relationships_pvt.acct_rel_type_tbl
4519 ,p_site_use_tbl IN OUT NOCOPY csi_party_relationships_pvt.site_use_tbl
4520 ,p_account_count_rec IN OUT NOCOPY csi_party_relationships_pvt.account_count_rec
4521 ,p_called_from_grp IN VARCHAR2
4522 ,p_oks_txn_inst_tbl IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl
4523 ) IS
4524
4525 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_INST_PARTY_ACCOUNT';
4526 l_api_version CONSTANT NUMBER := 1.0;
4527 l_csi_debug_level NUMBER;
4528 l_party_account_rec csi_datastructures_pub.party_account_rec;
4529 l_party_rec csi_datastructures_pub.party_rec;
4530 l_msg_index NUMBER;
4531 l_msg_count NUMBER;
4532 l_process_flag BOOLEAN := TRUE;
4533 l_ip_account_history_id NUMBER;
4534
4535 l_transaction_type VARCHAR2(10);
4536 l_old_oks_cp_rec oks_ibint_pub.cp_rec_type;
4537 l_new_oks_cp_rec oks_ibint_pub.cp_rec_type;
4538 l_contracts_status VARCHAR2(3);
4539 l_internal_party_id NUMBER;
4540 l_party_id NUMBER;
4541 l_record_found BOOLEAN := FALSE;
4542 l_update_record BOOLEAN := FALSE;
4543 l_exists_flag VARCHAR2(1);
4544 l_valid_flag VARCHAR2(1);
4545
4546 CURSOR instance_csr (p_ins_id IN NUMBER) IS
4547 SELECT *
4548 FROM csi_item_instances
4549 WHERE instance_id = p_ins_id;
4550 l_instance_csr instance_csr%ROWTYPE;
4551 l_last_vld_org NUMBER; -- Added by sguthiva for bug 2307804
4552 BEGIN
4553 -- Standard Start of API savepoint
4554 SAVEPOINT create_inst_party_acct_pvt;
4555
4556 -- Standard call to check for call compatibility.
4557 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
4558 p_api_version ,
4559 l_api_name ,
4560 g_pkg_name )
4561 THEN
4562 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4563 END IF;
4564
4565 -- Initialize message list if p_init_msg_list is set to TRUE.
4566 IF FND_API.to_Boolean( p_init_msg_list ) THEN
4567 FND_MSG_PUB.initialize;
4568 END IF;
4569
4570 -- Initialize API return status to success
4571 x_return_status := FND_API.G_RET_STS_SUCCESS;
4572
4573 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
4574 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
4575
4576 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
4577 IF (l_csi_debug_level > 0) THEN
4578 csi_gen_utility_pvt.put_line( 'create_inst_party_account');
4579 END IF;
4580
4581 -- If the debug level = 2 then dump all the parameters values.
4582 IF (l_csi_debug_level > 1) THEN
4583 csi_gen_utility_pvt.put_line( 'create_inst_party_account:'||
4584 p_api_version ||'-'||
4585 p_commit ||'-'||
4586 p_init_msg_list );
4587 -- Dump the records in the log file
4588 csi_gen_utility_pvt.dump_party_account_rec(p_party_account_rec);
4589 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
4590 END IF;
4591 -- Start API body
4592 --
4593 -- Check if all the required parameters are passed
4594 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
4595 ( p_party_account_rec.INSTANCE_PARTY_ID,
4596 ' p_party_account_rec.INSTANCE_PARTY_ID ',
4597 l_api_name );
4598
4599 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
4600 ( p_party_account_rec.PARTY_ACCOUNT_ID,
4601 ' p_party_account_rec.PARTY_ACCOUNT_ID ',
4602 l_api_name );
4603 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_char
4604 ( p_party_account_rec.RELATIONSHIP_TYPE_CODE,
4605 'p_party_account_rec.RELATIONSHIP_TYPE_CODE',
4606 l_api_name );
4607
4608 -- Initialize the counts
4609 IF p_account_count_rec.inst_party_count is NULL OR
4610 p_account_count_rec.inst_party_count = FND_API.G_MISS_NUM THEN
4611 p_account_count_rec.inst_party_count := 0;
4612 END IF;
4613 --
4614 IF p_account_count_rec.rel_type_count is NULL OR
4615 p_account_count_rec.rel_type_count = FND_API.G_MISS_NUM THEN
4616 p_account_count_rec.rel_type_count := 0;
4617 END IF;
4618 --
4619 IF p_account_count_rec.site_use_count is NULL OR
4620 p_account_count_rec.site_use_count = FND_API.G_MISS_NUM THEN
4621 p_account_count_rec.site_use_count := 0;
4622 END IF;
4623 --
4624 -- Added by sk for fixing bug 2110790
4625 l_update_record := FALSE;
4626 IF p_called_from_grp <> FND_API.G_TRUE THEN
4627 IF p_party_account_rec.relationship_type_code = 'OWNER'
4628 AND ( p_party_account_rec.ip_account_id IS NULL OR
4629 p_party_account_rec.ip_account_id = fnd_api.g_miss_num )
4630 THEN
4631 BEGIN
4632 SELECT ip_account_id,
4633 active_start_date,
4634 object_version_number
4635 INTO p_party_account_rec.ip_account_id,
4636 p_party_account_rec.active_start_date,
4637 p_party_account_rec.object_version_number
4638 FROM csi_ip_accounts
4639 WHERE instance_party_id = p_party_account_rec.instance_party_id
4640 AND relationship_type_code = 'OWNER'
4641 AND (active_end_date IS NULL OR active_end_date > SYSDATE)
4642 AND ROWNUM = 1;
4643
4644 IF p_party_account_rec.active_end_date = fnd_api.g_miss_date
4645 THEN
4646 p_party_account_rec.active_end_date := NULL ;
4647 END IF;
4648 --
4649 l_update_record := TRUE;
4650 EXCEPTION
4651 WHEN NO_DATA_FOUND THEN
4652 BEGIN
4653 SELECT ip_account_id,
4654 active_start_date,
4655 object_version_number
4656 INTO p_party_account_rec.ip_account_id,
4657 p_party_account_rec.active_start_date,
4658 p_party_account_rec.object_version_number
4659 FROM csi_ip_accounts
4660 WHERE instance_party_id = p_party_account_rec.instance_party_id
4661 AND relationship_type_code = 'OWNER'
4662 AND ROWNUM = 1;
4663
4664 IF p_party_account_rec.active_end_date = fnd_api.g_miss_date
4665 THEN
4666 p_party_account_rec.active_end_date := NULL ;
4667 END IF;
4668 l_update_record := TRUE;
4669 EXCEPTION
4670 WHEN OTHERS THEN
4671 NULL;
4672 END;
4673 WHEN OTHERS THEN
4674 NULL;
4675 END;
4676 --
4677 IF l_update_record
4678 THEN
4679 update_inst_party_account
4680 ( p_api_version => p_api_version
4681 ,p_commit => p_commit
4682 ,p_init_msg_list => p_init_msg_list
4683 ,p_validation_level => p_validation_level
4684 ,p_party_account_rec => p_party_account_rec
4685 ,p_txn_rec => p_txn_rec
4686 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
4687 ,x_return_status => x_return_status
4688 ,x_msg_count => x_msg_count
4689 ,x_msg_data => x_msg_data);
4690
4691 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4692 l_msg_index := 1;
4693 l_msg_count := x_msg_count;
4694 WHILE l_msg_count > 0 LOOP
4695 x_msg_data := FND_MSG_PUB.GET(
4696 l_msg_index,
4697 FND_API.G_FALSE );
4698 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
4699 l_msg_index := l_msg_index + 1;
4700 l_msg_count := l_msg_count - 1;
4701 END LOOP;
4702 RAISE FND_API.G_EXC_ERROR;
4703 END IF;
4704 END IF;
4705 END IF;
4706 END IF; -- Called from group check
4707 -- End addition by sk for fixing bug 2110790
4708 -- Check if the account is already expired
4709 -- If so unexpire the account
4710 l_record_found := FALSE;
4711 IF p_called_from_grp <> FND_API.G_TRUE THEN
4712 IF p_party_account_rec.ip_account_id IS NULL OR
4713 p_party_account_rec.ip_account_id = fnd_api.g_miss_num
4714 THEN
4715 BEGIN
4716 SELECT ip_account_id ,
4717 object_version_number
4718 INTO p_party_account_rec.ip_account_id,
4719 p_party_account_rec.object_version_number
4720 FROM csi_ip_accounts
4721 WHERE instance_party_id = p_party_account_rec.instance_party_id
4722 AND party_account_id = p_party_account_rec.party_account_id
4723 AND relationship_type_code = p_party_account_rec.relationship_type_code
4724 AND active_end_date < sysdate
4725 AND ROWNUM = 1;
4726 l_record_found := TRUE ;
4727 EXCEPTION
4728 WHEN OTHERS THEN
4729 NULL;
4730 END;
4731 END IF;
4732 END IF; -- called from group check
4733 /* -- Commented by sk for fixing the bug 2232880
4734 IF CSI_Instance_parties_vld_pvt.Is_Account_Expired
4735 (p_party_account_rec) THEN
4736 IF (p_party_account_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE ) THEN
4737 p_party_account_rec.active_end_date := NULL;
4738 END IF;
4739 */ -- Commented by sk for fixing the bug 2232880
4740 -- Unexpire the account
4741 IF NOT(l_update_record)
4742 THEN -- Added for bug 2110790
4743 IF l_record_found THEN
4744 -- Added by sk for fixing the bug 2232880
4745 IF p_party_account_rec.active_end_date = fnd_api.g_miss_date
4746 THEN
4747 p_party_account_rec.active_end_date := NULL;
4748 END IF;
4749 -- End additon by sk for fixing the bug 2232880
4750 update_inst_party_account
4751 ( p_api_version => p_api_version
4752 ,p_commit => p_commit
4753 ,p_init_msg_list => p_init_msg_list
4754 ,p_validation_level => p_validation_level
4755 ,p_party_account_rec => p_party_account_rec
4756 ,p_txn_rec => p_txn_rec
4757 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
4758 ,x_return_status => x_return_status
4759 ,x_msg_count => x_msg_count
4760 ,x_msg_data => x_msg_data);
4761
4762 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4763 l_msg_index := 1;
4764 l_msg_count := x_msg_count;
4765 WHILE l_msg_count > 0 LOOP
4766 x_msg_data := FND_MSG_PUB.GET(
4767 l_msg_index,
4768 FND_API.G_FALSE );
4769 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
4770 l_msg_index := l_msg_index + 1;
4771 l_msg_count := l_msg_count - 1;
4772 END LOOP;
4773 RAISE FND_API.G_EXC_ERROR;
4774 END IF;
4775 -- END IF; -- commented by sk for fixing the bug 2232880
4776 ELSE -- Added by sk for fixing the bug 2232880
4777 -- Verify if the party account combination exists
4778 IF p_called_from_grp <> FND_API.G_TRUE THEN
4779 IF CSI_Instance_parties_vld_pvt.Is_Pty_Acct_Comb_Exists
4780 (p_party_account_rec.instance_party_id ,
4781 p_party_account_rec.party_account_id ,
4782 p_party_account_rec.relationship_type_code ) THEN
4783 RAISE FND_API.G_EXC_ERROR;
4784 END IF;
4785 END IF;
4786
4787 IF p_party_account_rec.IP_ACCOUNT_ID is NULL OR
4788 p_party_account_rec.IP_ACCOUNT_ID = FND_API.G_MISS_NUM THEN
4789 -- If ip_account_id passed is null then generate from sequence
4790 -- and check if the value exists . If exists then generate again
4791 -- from the sequence till we get a value that does not exist
4792 while l_process_flag loop
4793 p_party_account_rec.IP_ACCOUNT_ID := CSI_Instance_parties_vld_pvt.gen_ip_account_id;
4794 IF NOT(CSI_Instance_parties_vld_pvt.Is_IP_account_Exists(p_party_account_rec.IP_ACCOUNT_ID,
4795 FALSE )) THEN
4796 l_process_flag := FALSE;
4797 END IF;
4798 end loop;
4799 ELSE
4800 -- Validate the instance_party_id if exist then raise CSI_API_INVALID_PRIMARY_KEY error
4801 IF CSI_Instance_parties_vld_pvt.Is_IP_account_Exists(p_party_account_rec.IP_ACCOUNT_ID ,
4802 TRUE ) THEN
4803 RAISE FND_API.G_EXC_ERROR;
4804 END IF;
4805 END IF;
4806 -- Verify if the instance_party_id is valid
4807 -- Check the cache before hitting the Database.
4808 IF p_called_from_grp <> FND_API.G_TRUE THEN
4809 l_exists_flag := 'N';
4810 l_valid_flag := 'Y';
4811 IF p_inst_party_tbl.count > 0 THEN
4812 For tab_row in p_inst_party_tbl.FIRST .. p_inst_party_tbl.LAST
4813 LOOP
4814 IF p_inst_party_tbl(tab_row).instance_party_id = p_party_account_rec.INSTANCE_PARTY_ID THEN
4815 l_valid_flag := p_inst_party_tbl(tab_row).valid_flag;
4816 l_exists_flag := 'Y';
4817 exit;
4818 END IF;
4819 END LOOP;
4820 --
4821 IF l_valid_flag <> 'Y' THEN
4822 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INST_PARTY_ID');
4823 FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',p_party_account_rec.INSTANCE_PARTY_ID);
4824 FND_MSG_PUB.Add;
4825 RAISE FND_API.G_EXC_ERROR;
4826 END IF;
4827 END IF;
4828 --
4829 IF l_exists_flag <> 'Y' THEN
4830 p_account_count_rec.inst_party_count := p_account_count_rec.inst_party_count + 1;
4831 p_inst_party_tbl(p_account_count_rec.inst_party_count).instance_party_id := p_party_account_rec.INSTANCE_PARTY_ID;
4832 IF NOT(CSI_Instance_parties_vld_pvt.Is_Inst_partyID_Valid(
4833 p_Instance_party_id => p_party_account_rec.INSTANCE_PARTY_ID
4834 ,p_txn_type_id => p_txn_rec.transaction_type_id
4835 ,p_mode => 'C' ) -- Added for bug 3550541
4836 )
4837 THEN
4838 p_inst_party_tbl(p_account_count_rec.inst_party_count).valid_flag := 'N';
4839 -- Message added in the validation routine since additional validation added for bug # 2477417.
4840 -- FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INST_PARTY_ID');
4841 -- FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',p_party_account_rec.INSTANCE_PARTY_ID);
4842 -- FND_MSG_PUB.Add;
4843 -- RAISE FND_API.G_EXC_ERROR;
4844 ELSE
4845 p_inst_party_tbl(p_account_count_rec.inst_party_count).valid_flag := 'Y';
4846 END IF;
4847 END IF;
4848 END IF; -- called from group check
4849 -- Verify Party Account ID is Valid
4850 IF p_called_from_grp <> FND_API.G_TRUE THEN
4851 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_accountID_Valid
4852 (p_party_account_rec.PARTY_ACCOUNT_ID,
4853 p_party_account_rec.INSTANCE_PARTY_ID,
4854 p_party_account_rec.RELATIONSHIP_TYPE_CODE,
4855 p_txn_rec.transaction_type_id, -- Added for bug 3550541
4856 'C')) -- Added for bug 3550541
4857 THEN
4858 RAISE FND_API.G_EXC_ERROR;
4859 END IF;
4860 END IF;
4861
4862 -- Verify the relationship_type_code is valid
4863 -- Check the cache before hitting the Database.
4864 l_exists_flag := 'N';
4865 l_valid_flag := 'Y';
4866 IF p_acct_rel_type_tbl.count > 0 THEN
4867 For tab_row in p_acct_rel_type_tbl.FIRST .. p_acct_rel_type_tbl.LAST
4868 LOOP
4869 IF p_acct_rel_type_tbl(tab_row).rel_type_code = p_party_account_rec.RELATIONSHIP_TYPE_CODE THEN
4870 l_valid_flag := p_acct_rel_type_tbl(tab_row).valid_flag;
4871 l_exists_flag := 'Y';
4872 exit;
4873 END IF;
4874 END LOOP;
4875 --
4876 IF l_valid_flag <> 'Y' THEN
4877 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ACCOUNT_TYPE');
4878 FND_MESSAGE.SET_TOKEN('IP_RELATIONSHIP_TYPE_CODE',p_party_account_rec.RELATIONSHIP_TYPE_CODE);
4879 FND_MSG_PUB.Add;
4880 RAISE FND_API.G_EXC_ERROR;
4881 END IF;
4882 END IF;
4883 IF l_exists_flag <> 'Y' THEN
4884 p_account_count_rec.rel_type_count := p_account_count_rec.rel_type_count + 1;
4885 p_acct_rel_type_tbl(p_account_count_rec.rel_type_count).rel_type_code :=
4886 p_party_account_rec.RELATIONSHIP_TYPE_CODE;
4887 IF NOT(CSI_Instance_parties_vld_pvt.Is_Acct_Rel_type_Valid
4888 (p_party_account_rec.RELATIONSHIP_TYPE_CODE)) THEN
4889 p_acct_rel_type_tbl(p_account_count_rec.rel_type_count).valid_flag := 'N';
4890 RAISE FND_API.G_EXC_ERROR;
4891 ELSE
4892 p_acct_rel_type_tbl(p_account_count_rec.rel_type_count).valid_flag := 'Y';
4893 END IF;
4894 END IF;
4895
4896 -- If active_start_date is null or G_MISS value then assign sysdate
4897 IF ((p_party_account_rec.ACTIVE_START_DATE IS NULL ) OR
4898 ( p_party_account_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE)) THEN
4899 p_party_account_rec.ACTIVE_START_DATE := SYSDATE;
4900 END IF;
4901
4902 -- verify if the active_start_date is valid
4903 IF p_called_from_grp <> FND_API.G_TRUE THEN
4904 IF NOT(CSI_Instance_parties_vld_pvt.Is_Acct_StartDate_Valid
4905 (p_party_account_rec.ACTIVE_START_DATE,
4906 p_party_account_rec.ACTIVE_END_DATE ,
4907 p_party_account_rec.INSTANCE_PARTY_ID )) THEN
4908 RAISE FND_API.G_EXC_ERROR;
4909 END IF;
4910
4911 -- Verify if the active_end_date is valid
4912 IF ((p_party_account_rec.ACTIVE_END_DATE is NOT NULL) AND
4913 (p_party_account_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE )) THEN
4914 IF NOT(CSI_Instance_parties_vld_pvt.Is_Acct_EndDate_Valid
4915 (p_party_account_rec.ACTIVE_START_DATE,
4916 p_party_account_rec.ACTIVE_END_DATE ,
4917 p_party_account_rec.INSTANCE_PARTY_ID ,
4918 p_party_account_rec.IP_ACCOUNT_ID ,
4919 p_txn_rec.TRANSACTION_ID)) THEN
4920 RAISE FND_API.G_EXC_ERROR;
4921 END IF;
4922 END IF;
4923 END IF; -- Called from group check
4924
4925 -- Verify if bill to address is correct
4926 IF ((p_party_account_rec.bill_to_address IS NOT NULL) AND
4927 (p_party_account_rec.bill_to_address <> FND_API.G_MISS_NUM )) THEN
4928 -- Check the cache before hitting the Database.
4929 l_exists_flag := 'N';
4930 l_valid_flag := 'Y';
4931 IF p_site_use_tbl.count > 0 THEN
4932 For tab_row in p_site_use_tbl.FIRST .. p_site_use_tbl.LAST
4933 LOOP
4934 IF p_site_use_tbl(tab_row).site_use_id = p_party_account_rec.bill_to_address AND
4935 p_site_use_tbl(tab_row).site_use_code = 'BILL_TO' THEN
4936 l_valid_flag := p_site_use_tbl(tab_row).valid_flag;
4937 l_exists_flag := 'Y';
4938 exit;
4939 END IF;
4940 END LOOP;
4941 --
4942 IF l_valid_flag <> 'Y' THEN
4943 FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_BILL_TO_ADD_ID');
4944 FND_MESSAGE.SET_TOKEN('BILL_TO_ADD_ID',p_party_account_rec.bill_to_address);
4945 FND_MSG_PUB.Add;
4946 RAISE FND_API.G_EXC_ERROR;
4947 END IF;
4948 END IF;
4949 --
4950 IF l_exists_flag <> 'Y' THEN
4951 p_account_count_rec.site_use_count := p_account_count_rec.site_use_count + 1;
4952 p_site_use_tbl(p_account_count_rec.site_use_count).site_use_id :=
4953 p_party_account_rec.bill_to_address;
4954 p_site_use_tbl(p_account_count_rec.site_use_count).site_use_code := 'BILL_TO';
4955 IF NOT(CSI_Instance_parties_vld_pvt.Is_bill_to_add_valid
4956 ( p_party_account_rec.bill_to_address)) THEN
4957 p_site_use_tbl(p_account_count_rec.site_use_count).valid_flag := 'N';
4958 RAISE FND_API.G_EXC_ERROR;
4959 ELSE
4960 p_site_use_tbl(p_account_count_rec.site_use_count).valid_flag := 'Y';
4961 END IF;
4962 END IF;
4963 END IF;
4964
4965 -- Verify if ship to address is correct
4966 IF ((p_party_account_rec.ship_to_address IS NOT NULL) AND
4967 (p_party_account_rec.ship_to_address <> FND_API.G_MISS_NUM )) THEN
4968 -- Check the cache before hitting the Database.
4969 l_exists_flag := 'N';
4970 l_valid_flag := 'Y';
4971 IF p_site_use_tbl.count > 0 THEN
4972 For tab_row in p_site_use_tbl.FIRST .. p_site_use_tbl.LAST
4973 LOOP
4974 IF p_site_use_tbl(tab_row).site_use_id = p_party_account_rec.ship_to_address AND
4975 p_site_use_tbl(tab_row).site_use_code = 'SHIP_TO' THEN
4976 l_valid_flag := p_site_use_tbl(tab_row).valid_flag;
4977 l_exists_flag := 'Y';
4978 exit;
4979 END IF;
4980 END LOOP;
4981 --
4982 IF l_valid_flag <> 'Y' THEN
4983 FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_SHIP_TO_ADD_ID');
4984 FND_MESSAGE.SET_TOKEN('SHIP_TO_ADD_ID',p_party_account_rec.ship_to_address);
4985 FND_MSG_PUB.Add;
4986 RAISE FND_API.G_EXC_ERROR;
4987 END IF;
4988 END IF;
4989 --
4990 IF l_exists_flag <> 'Y' THEN
4991 p_account_count_rec.site_use_count := p_account_count_rec.site_use_count + 1;
4992 p_site_use_tbl(p_account_count_rec.site_use_count).site_use_id :=
4993 p_party_account_rec.ship_to_address;
4994 p_site_use_tbl(p_account_count_rec.site_use_count).site_use_code := 'SHIP_TO';
4995 IF NOT(CSI_Instance_parties_vld_pvt.Is_ship_to_add_valid
4996 ( p_party_account_rec.ship_to_address)) THEN
4997 p_site_use_tbl(p_account_count_rec.site_use_count).valid_flag := 'N';
4998 RAISE FND_API.G_EXC_ERROR;
4999 ELSE
5000 p_site_use_tbl(p_account_count_rec.site_use_count).valid_flag := 'Y';
5001 END IF;
5002 END IF;
5003 END IF;
5004
5005 -- Following will not be done when called from Group API.
5006 -- Verify if it meets Account Rules
5007 IF p_called_from_grp <> FND_API.G_TRUE THEN
5008
5009 IF CSI_Instance_parties_vld_pvt.Acct_Rules_Check
5010 (p_party_account_rec.instance_party_id ,
5011 p_party_account_rec.relationship_type_code ) THEN
5012 RAISE FND_API.G_EXC_ERROR;
5013 END IF;
5014
5015 -- Get the parent party record
5016 IF NOT(CSI_Instance_parties_vld_pvt.Get_Party_Record
5017 ( p_party_account_rec.instance_party_id,
5018 l_party_rec)) THEN
5019 RAISE FND_API.G_EXC_ERROR;
5020 END IF;
5021
5022 -- If it is an owner party and owner account then update csi_item_instances
5023 -- Account Rules check ensures that if the owner account is
5024 -- being created, the parent party is always a owner party
5025 IF ((p_party_account_rec.RELATIONSHIP_TYPE_CODE = 'OWNER')
5026 AND (l_party_rec.RELATIONSHIP_TYPE_CODE = 'OWNER')) THEN
5027
5028 update csi_item_instances
5029 set owner_party_account_id = p_party_account_rec.party_account_id
5030 where instance_id = l_party_rec.instance_id;
5031 END IF;
5032
5033 -- Call table handlers to insert into csi_ip_accounts table
5034 CSI_IP_ACCOUNTS_PKG.Insert_Row(
5035 px_IP_ACCOUNT_ID => p_party_account_rec.ip_account_id,
5036 p_INSTANCE_PARTY_ID => p_party_account_rec.INSTANCE_PARTY_ID,
5037 p_PARTY_ACCOUNT_ID => p_party_account_rec.PARTY_ACCOUNT_ID,
5038 p_RELATIONSHIP_TYPE_CODE => p_party_account_rec.RELATIONSHIP_TYPE_CODE,
5039 p_ACTIVE_START_DATE => p_party_account_rec.ACTIVE_START_DATE,
5040 p_ACTIVE_END_DATE => p_party_account_rec.ACTIVE_END_DATE,
5041 p_CONTEXT => p_party_account_rec.CONTEXT,
5042 p_ATTRIBUTE1 => p_party_account_rec.ATTRIBUTE1,
5043 p_ATTRIBUTE2 => p_party_account_rec.ATTRIBUTE2,
5044 p_ATTRIBUTE3 => p_party_account_rec.ATTRIBUTE3,
5045 p_ATTRIBUTE4 => p_party_account_rec.ATTRIBUTE4,
5046 p_ATTRIBUTE5 => p_party_account_rec.ATTRIBUTE5,
5047 p_ATTRIBUTE6 => p_party_account_rec.ATTRIBUTE6,
5048 p_ATTRIBUTE7 => p_party_account_rec.ATTRIBUTE7,
5049 p_ATTRIBUTE8 => p_party_account_rec.ATTRIBUTE8,
5050 p_ATTRIBUTE9 => p_party_account_rec.ATTRIBUTE9,
5051 p_ATTRIBUTE10 => p_party_account_rec.ATTRIBUTE10,
5052 p_ATTRIBUTE11 => p_party_account_rec.ATTRIBUTE11,
5053 p_ATTRIBUTE12 => p_party_account_rec.ATTRIBUTE12,
5054 p_ATTRIBUTE13 => p_party_account_rec.ATTRIBUTE13,
5055 p_ATTRIBUTE14 => p_party_account_rec.ATTRIBUTE14,
5056 p_ATTRIBUTE15 => p_party_account_rec.ATTRIBUTE15,
5057 p_CREATED_BY => FND_GLOBAL.USER_ID ,
5058 p_CREATION_DATE => SYSDATE ,
5059 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
5060 p_LAST_UPDATE_DATE => SYSDATE ,
5061 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
5062 p_OBJECT_VERSION_NUMBER => 1 ,
5063 p_BILL_TO_ADDRESS => p_party_account_rec.BILL_TO_ADDRESS,
5064 p_SHIP_TO_ADDRESS => p_party_account_rec.SHIP_TO_ADDRESS,
5065 p_REQUEST_ID => p_party_account_rec.REQUEST_ID,
5066 p_PROGRAM_APPLICATION_ID => p_party_account_rec.PROGRAM_APPLICATION_ID,
5067 p_PROGRAM_ID => p_party_account_rec.PROGRAM_ID,
5068 p_PROGRAM_UPDATE_DATE => p_party_account_rec.PROGRAM_UPDATE_DATE
5069 );
5070
5071 -- Call create_transaction to create txn log
5072 CSI_TRANSACTIONS_PVT.Create_transaction
5073 (
5074 p_api_version => p_api_version
5075 ,p_commit => p_commit
5076 ,p_init_msg_list => p_init_msg_list
5077 ,p_validation_level => p_validation_level
5078 ,p_Success_If_Exists_Flag => 'Y'
5079 ,P_transaction_rec => p_txn_rec
5080 ,x_return_status => x_return_status
5081 ,x_msg_count => x_msg_count
5082 ,x_msg_data => x_msg_data );
5083
5084
5085 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
5086 l_msg_index := 1;
5087 l_msg_count := x_msg_count;
5088 WHILE l_msg_count > 0 LOOP
5089 x_msg_data := FND_MSG_PUB.GET(
5090 l_msg_index,
5091 FND_API.G_FALSE );
5092 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
5093 l_msg_index := l_msg_index + 1;
5094 l_msg_count := l_msg_count - 1;
5095 END LOOP;
5096 RAISE FND_API.G_EXC_ERROR;
5097 END IF;
5098
5099 -- Generate a unique instance_party_history_id from the sequence
5100 l_ip_account_history_id := CSI_Instance_parties_vld_pvt.gen_ip_account_hist_id;
5101
5102 CSI_IP_ACCOUNTS_H_PKG.Insert_Row
5103 (
5104 px_IP_ACCOUNT_HISTORY_ID => l_ip_account_history_id ,
5105 p_IP_ACCOUNT_ID => p_party_account_rec.ip_account_id,
5106 p_TRANSACTION_ID => p_txn_rec.transaction_id ,
5107 p_OLD_PARTY_ACCOUNT_ID => NULL ,
5108 p_NEW_PARTY_ACCOUNT_ID => p_party_account_rec.PARTY_ACCOUNT_ID,
5109 p_OLD_RELATIONSHIP_TYPE_CODE => NULL ,
5110 p_NEW_RELATIONSHIP_TYPE_CODE => p_party_account_rec.RELATIONSHIP_TYPE_CODE,
5111 p_OLD_ACTIVE_START_DATE => NULL ,
5112 p_NEW_ACTIVE_START_DATE => p_party_account_rec.ACTIVE_START_DATE,
5113 p_OLD_ACTIVE_END_DATE => NULL ,
5114 p_NEW_ACTIVE_END_DATE => p_party_account_rec.ACTIVE_END_DATE,
5115 p_OLD_CONTEXT => NULL ,
5116 p_NEW_CONTEXT => p_party_account_rec.CONTEXT ,
5117 p_OLD_ATTRIBUTE1 => NULL ,
5118 p_NEW_ATTRIBUTE1 => p_party_account_rec.ATTRIBUTE1 ,
5119 p_OLD_ATTRIBUTE2 => NULL ,
5120 p_NEW_ATTRIBUTE2 => p_party_account_rec.ATTRIBUTE2 ,
5121 p_OLD_ATTRIBUTE3 => NULL ,
5122 p_NEW_ATTRIBUTE3 => p_party_account_rec.ATTRIBUTE3 ,
5123 p_OLD_ATTRIBUTE4 => NULL ,
5124 p_NEW_ATTRIBUTE4 => p_party_account_rec.ATTRIBUTE4 ,
5125 p_OLD_ATTRIBUTE5 => NULL ,
5126 p_NEW_ATTRIBUTE5 => p_party_account_rec.ATTRIBUTE5 ,
5127 p_OLD_ATTRIBUTE6 => NULL ,
5128 p_NEW_ATTRIBUTE6 => p_party_account_rec.ATTRIBUTE6 ,
5129 p_OLD_ATTRIBUTE7 => NULL ,
5130 p_NEW_ATTRIBUTE7 => p_party_account_rec.ATTRIBUTE7 ,
5131 p_OLD_ATTRIBUTE8 => NULL ,
5132 p_NEW_ATTRIBUTE8 => p_party_account_rec.ATTRIBUTE8 ,
5133 p_OLD_ATTRIBUTE9 => NULL ,
5134 p_NEW_ATTRIBUTE9 => p_party_account_rec.ATTRIBUTE9 ,
5135 p_OLD_ATTRIBUTE10 => NULL ,
5136 p_NEW_ATTRIBUTE10 => p_party_account_rec.ATTRIBUTE10,
5137 p_OLD_ATTRIBUTE11 => NULL ,
5138 p_NEW_ATTRIBUTE11 => p_party_account_rec.ATTRIBUTE11,
5139 p_OLD_ATTRIBUTE12 => NULL ,
5140 p_NEW_ATTRIBUTE12 => p_party_account_rec.ATTRIBUTE12,
5141 p_OLD_ATTRIBUTE13 => NULL ,
5142 p_NEW_ATTRIBUTE13 => p_party_account_rec.ATTRIBUTE13,
5143 p_OLD_ATTRIBUTE14 => NULL ,
5144 p_NEW_ATTRIBUTE14 => p_party_account_rec.ATTRIBUTE14,
5145 p_OLD_ATTRIBUTE15 => NULL ,
5146 p_NEW_ATTRIBUTE15 => p_party_account_rec.ATTRIBUTE15,
5147 p_FULL_DUMP_FLAG => 'N' ,
5148 p_CREATED_BY => FND_GLOBAL.USER_ID ,
5149 p_CREATION_DATE => SYSDATE ,
5150 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
5151 p_LAST_UPDATE_DATE => SYSDATE ,
5152 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
5153 p_OBJECT_VERSION_NUMBER => 1 ,
5154 p_OLD_BILL_TO_ADDRESS => NULL ,
5155 p_NEW_BILL_TO_ADDRESS => p_party_account_rec.BILL_TO_ADDRESS,
5156 p_OLD_SHIP_TO_ADDRESS => NULL ,
5157 p_NEW_SHIP_TO_ADDRESS => p_party_account_rec.SHIP_TO_ADDRESS,
5158 p_OLD_INSTANCE_PARTY_ID => NULL ,
5159 p_NEW_INSTANCE_PARTY_ID => p_party_account_rec.INSTANCE_PARTY_ID);
5160
5161 END IF; -- p_called_from_grp check
5162 -- Call Contracts
5163 -- End commentation by sguthiva for bug 2307804
5164 -- Added by sguthiva for bug 2307804
5165 IF ( (p_party_account_rec.call_contracts <> fnd_api.g_false)
5166 AND (p_party_account_rec.relationship_type_code = 'OWNER' )
5167 )
5168 THEN
5169 -- The following code has been written to make sure
5170 -- before calling contracts we pass a valid vld_organization_id
5171 IF p_party_account_rec.vld_organization_id IS NULL OR
5172 p_party_account_rec.vld_organization_id = fnd_api.g_miss_num
5173 THEN
5174 BEGIN
5175 SELECT last_vld_organization_id
5176 INTO l_last_vld_org
5177 FROM csi_item_instances
5178 WHERE instance_id = l_party_rec.instance_id;
5179 EXCEPTION
5180 WHEN OTHERS THEN
5181 NULL;
5182 END;
5183 ELSE
5184 l_last_vld_org := p_party_account_rec.vld_organization_id;
5185 END IF;
5186 --
5187 IF p_txn_rec.transaction_type_id <> 7 -- Added for bug 3973706
5188 THEN
5189 csi_item_instance_pvt.Call_to_Contracts(
5190 p_transaction_type => 'NEW'
5191 ,p_instance_id => l_party_rec.instance_id
5192 ,p_new_instance_id => NULL
5193 ,p_vld_org_id => l_last_vld_org
5194 ,p_quantity => NULL
5195 ,p_party_account_id1 => NULL -- old party account id
5196 ,p_party_account_id2 => NULL -- new party account id
5197 ,p_transaction_date => p_txn_rec.transaction_date -- SYSDATE
5198 ,p_source_transaction_date => p_txn_rec.source_transaction_date
5199 ,p_grp_call_contracts => p_party_account_rec.grp_call_contracts -- srramakr
5200 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
5201 ,x_return_status => x_return_status
5202 ,x_msg_count => x_msg_count
5203 ,x_msg_data => x_msg_data
5204 );
5205
5206 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
5207 THEN
5208 l_msg_index := 1;
5209 l_msg_count := x_msg_count;
5210 WHILE l_msg_count > 0 LOOP
5211 x_msg_data := FND_MSG_PUB.GET(
5212 l_msg_index,
5213 FND_API.G_FALSE );
5214 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
5215 l_msg_index := l_msg_index + 1;
5216 l_msg_count := l_msg_count - 1;
5217 END LOOP;
5218 RAISE FND_API.G_EXC_ERROR;
5219 END IF;
5220 END IF; -- Added for bug 3973706
5221 END IF;
5222 END IF; -- Added by sk for fixing the bug 2232880
5223 END IF; -- Added by sk for bug 2110790
5224 -- End addition by sguthiva for bug 2307804
5225 --
5226 -- End of API body
5227 -- Standard check of p_commit.
5228
5229 IF FND_API.To_Boolean( p_commit ) THEN
5230 COMMIT WORK;
5231 END IF;
5232
5233
5234 -- Standard call to get message count and if count is get message info.
5235 FND_MSG_PUB.Count_And_Get
5236 (p_count => x_msg_count ,
5237 p_data => x_msg_data );
5238 EXCEPTION
5239 WHEN FND_API.G_EXC_ERROR THEN
5240 ROLLBACK TO create_inst_party_acct_pvt;
5241 x_return_status := FND_API.G_RET_STS_ERROR ;
5242
5243 FND_MSG_PUB.Count_And_Get
5244 ( p_count => x_msg_count,
5245 p_data => x_msg_data );
5246 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5247 ROLLBACK TO create_inst_party_acct_pvt;
5248 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5249 FND_MSG_PUB.Count_And_Get
5250 ( p_count => x_msg_count,
5251 p_data => x_msg_data );
5252 WHEN OTHERS THEN
5253 ROLLBACK TO create_inst_party_acct_pvt;
5254 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5255 IF FND_MSG_PUB.Check_Msg_Level
5256 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5257 THEN
5258 FND_MSG_PUB.Add_Exc_Msg
5259 ( g_pkg_name, l_api_name );
5260 END IF;
5261 FND_MSG_PUB.Count_And_Get
5262 ( p_count => x_msg_count,
5263 p_data => x_msg_data );
5264
5265 END create_inst_party_account;
5266
5267 /*-----------------------------------------------------------*/
5268 /* Procedure name: Update_inst_party_account */
5269 /* Description : Procedure used to update the existing */
5270 /* instance-party account relationships */
5271 /*-----------------------------------------------------------*/
5272
5273 PROCEDURE update_inst_party_account
5274 ( p_api_version IN NUMBER
5275 ,p_commit IN VARCHAR2
5276 ,p_init_msg_list IN VARCHAR2
5277 ,p_validation_level IN NUMBER
5278 ,p_party_account_rec IN csi_datastructures_pub.party_account_rec
5279 ,p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
5280 ,p_oks_txn_inst_tbl IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl
5281 ,x_return_status OUT NOCOPY VARCHAR2
5282 ,x_msg_count OUT NOCOPY NUMBER
5283 ,x_msg_data OUT NOCOPY VARCHAR2
5284 ) IS
5285
5286 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_INST_PARTY_ACCOUNT';
5287 l_api_version CONSTANT NUMBER := 1.0;
5288 l_csi_debug_level NUMBER;
5289 -- l_curr_party_acct_rec csi_datastructures_pub.party_account_rec;
5290 l_temp_party_account_rec csi_datastructures_pub.party_account_rec;
5291 l_party_rec csi_datastructures_pub.party_rec;
5292 l_msg_index NUMBER;
5293 l_msg_count NUMBER;
5294 l_mod_value NUMBER;
5295 l_object_version_number NUMBER;
5296 l_ip_account_history_id NUMBER;
5297 l_full_dump_frequency NUMBER;
5298 x_msg_index_out NUMBER;
5299
5300 -- Alternate PK variables
5301 l_alt_pk_inst_pty_id NUMBER;
5302 l_alt_pk_pty_acct_id NUMBER;
5303 l_alt_pk_rel_type_code VARCHAR2(30);
5304
5305 l_party_relation VARCHAR2(30);
5306 l_transaction_type VARCHAR2(10);
5307 l_old_oks_cp_rec oks_ibint_pub.cp_rec_type;
5308 l_new_oks_cp_rec oks_ibint_pub.cp_rec_type;
5309 l_contracts_status VARCHAR2(3);
5310 l_internal_party_id NUMBER;
5311 l_party_id NUMBER;
5312 l_old_party_id NUMBER;
5313 l_new_party_id NUMBER;
5314 CURSOR instance_csr (p_ins_id IN NUMBER) IS
5315 SELECT *
5316 FROM csi_item_instances
5317 WHERE instance_id = p_ins_id;
5318 l_instance_csr instance_csr%ROWTYPE;
5319
5320 CURSOR get_curr_party_acct_rec (p_ip_account_id IN NUMBER) IS
5321 SELECT
5322 ip_account_id ,
5323 FND_API.G_MISS_NUM parent_tbl_index,
5324 instance_party_id ,
5325 party_account_id ,
5326 relationship_type_code ,
5327 bill_to_address ,
5328 ship_to_address ,
5329 active_start_date ,
5330 active_end_date ,
5331 context ,
5332 attribute1 ,
5333 attribute2 ,
5334 attribute3 ,
5335 attribute4 ,
5336 attribute5 ,
5337 attribute6 ,
5338 attribute7 ,
5339 attribute8 ,
5340 attribute9 ,
5341 attribute10 ,
5342 attribute11 ,
5343 attribute12 ,
5344 attribute13 ,
5345 attribute14 ,
5346 attribute15 ,
5347 object_version_number
5348 FROM CSI_IP_ACCOUNTS
5349 WHERE IP_ACCOUNT_ID = p_ip_account_id
5350 FOR UPDATE OF OBJECT_VERSION_NUMBER;
5351 --AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE));
5352
5353 l_curr_party_acct_rec get_curr_party_acct_rec%ROWTYPE;
5354
5355
5356 CURSOR pty_acct_csr (p_act_hist_id NUMBER) IS
5357 SELECT ip_account_history_id
5358 ,ip_account_id
5359 ,transaction_id
5360 ,old_party_account_id
5361 ,new_party_account_id
5362 ,old_relationship_type_code
5363 ,new_relationship_type_code
5364 ,old_active_start_date
5365 ,new_active_start_date
5366 ,old_active_end_date
5367 ,new_active_end_date
5368 ,old_context
5369 ,new_context
5370 ,old_attribute1
5371 ,new_attribute1
5372 ,old_attribute2
5373 ,new_attribute2
5374 ,old_attribute3
5375 ,new_attribute3
5376 ,old_attribute4
5377 ,new_attribute4
5378 ,old_attribute5
5379 ,new_attribute5
5380 ,old_attribute6
5381 ,new_attribute6
5382 ,old_attribute7
5383 ,new_attribute7
5384 ,old_attribute8
5385 ,new_attribute8
5386 ,old_attribute9
5387 ,new_attribute9
5388 ,old_attribute10
5389 ,new_attribute10
5390 ,old_attribute11
5391 ,new_attribute11
5392 ,old_attribute12
5393 ,new_attribute12
5394 ,old_attribute13
5395 ,new_attribute13
5396 ,old_attribute14
5397 ,new_attribute14
5398 ,old_attribute15
5399 ,new_attribute15
5400 ,object_version_number
5401 ,old_bill_to_address
5402 ,new_bill_to_address
5403 ,old_ship_to_address
5404 ,new_ship_to_address
5405 ,full_dump_flag
5406 ,old_instance_party_id
5407 ,new_instance_party_id
5408 FROM csi_ip_accounts_h
5409 WHERE csi_ip_accounts_h.ip_account_history_id = p_act_hist_id
5410 FOR UPDATE OF object_version_number ;
5411 l_pty_acct_csr pty_acct_csr%ROWTYPE;
5412 l_ip_acct_hist_id NUMBER;
5413 l_old_pty_acct_id NUMBER; -- Added by sguthiva for bug 2307804
5414 l_new_pty_acct_id NUMBER; -- Added by sguthiva for bug 2307804
5415 l_last_vld_org NUMBER; -- Added by sguthiva for bug 2307804
5416 l_party_account_id NUMBER; -- Added by sguthiva for bug 2307804
5417 l_account_hist_rec csi_datastructures_pub.account_history_rec;
5418 l_rel_type_code VARCHAR2(30);
5419 l_acct_end_date DATE;
5420 l_temp_acct_date DATE;
5421 l_found_for_update VARCHAR2(1):='N';
5422 l_dummy VARCHAR2(1);
5423 l_instance_party_id NUMBER;
5424 BEGIN
5425 -- Standard Start of API savepoint
5426 -- SAVEPOINT update_inst_party_acct_pvt;
5427
5428
5429 -- Standard call to check for call compatibility.
5430 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
5431 p_api_version ,
5432 l_api_name ,
5433 g_pkg_name )
5434 THEN
5435 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5436 END IF;
5437
5438 -- Initialize message list if p_init_msg_list is set to TRUE.
5439 IF FND_API.to_Boolean( p_init_msg_list ) THEN
5440 FND_MSG_PUB.initialize;
5441 END IF;
5442
5443 -- Initialize API return status to success
5444 x_return_status := FND_API.G_RET_STS_SUCCESS;
5445
5446 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
5447 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
5448
5449 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
5450 IF (l_csi_debug_level > 0) THEN
5451 csi_gen_utility_pvt.put_line( 'update_inst_party_account');
5452 END IF;
5453
5454 -- If the debug level = 2 then dump all the parameters values.
5455 IF (l_csi_debug_level > 1) THEN
5456 csi_gen_utility_pvt.put_line( 'update_inst_party_account '||'-'||
5457 p_api_version ||'-'||
5458 p_commit ||'-'||
5459 p_init_msg_list );
5460 -- Dump the records in the log file
5461 csi_gen_utility_pvt.dump_party_account_rec(p_party_account_rec);
5462 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
5463 END IF;
5464
5465 -- Start API body
5466 --
5467 -- Check if all the required parameters are passed
5468 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
5469 ( p_party_account_rec.ip_account_id ,
5470 ' p_party_account_rec.IP_ACCOUNT_ID ',
5471 l_api_name );
5472 --
5473 IF p_party_account_rec.party_account_id IS NULL THEN
5474 FND_MESSAGE.SET_NAME('CSI','CSI_API_MANDATORY_ACCOUNT');
5475 FND_MSG_PUB.Add;
5476 RAISE FND_API.G_EXC_ERROR;
5477 END IF;
5478 --
5479 -- Check if the instance party id is valid
5480 -- Commented by sk for bug 2232880
5481 -- End of commentation by sk for bug 2232880
5482
5483 -- check if the object_version_number passed matches with the one
5484 -- in the database else raise error
5485 OPEN get_curr_party_acct_rec(p_party_account_rec.IP_ACCOUNT_ID);
5486 FETCH get_curr_party_acct_rec INTO l_curr_party_acct_rec;
5487 IF (l_curr_party_acct_rec.object_version_number <> p_party_account_rec.OBJECT_VERSION_NUMBER) THEN
5488 FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
5489 FND_MSG_PUB.ADD;
5490 RAISE FND_API.G_EXC_ERROR;
5491 END IF;
5492 IF get_curr_party_acct_rec%NOTFOUND THEN
5493 FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
5494 FND_MSG_PUB.ADD;
5495 RAISE FND_API.G_EXC_ERROR;
5496 END IF;
5497 CLOSE get_curr_party_acct_rec;
5498
5499 -- Added by sguthiva for bug 2307804
5500 IF l_curr_party_acct_rec.active_end_date IS NULL OR
5501 l_curr_party_acct_rec.active_end_date > SYSDATE
5502 THEN
5503 l_old_pty_acct_id :=l_curr_party_acct_rec.party_account_id;-- added 18apr
5504 ELSE
5505 l_old_pty_acct_id := NULL;
5506 END IF;
5507 -- End addition by sguthiva for bug 2307804
5508
5509 IF p_party_account_rec.INSTANCE_PARTY_ID <> FND_API.G_MISS_NUM THEN
5510 -- Check if the instance party id is valid
5511 IF NOT(CSI_Instance_parties_vld_pvt.Is_Inst_partyID_Valid
5512 (p_Instance_party_id => p_party_account_rec.INSTANCE_PARTY_ID
5513 ,p_txn_type_id => p_txn_rec.transaction_type_id
5514 ,p_mode => 'U' -- Added for bug 3550541
5515 )
5516 )
5517 THEN
5518 -- Message added in the validation routine since additional validation added for bug # 2477417.
5519 -- FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INST_PARTY_ID');
5520 -- FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',p_party_account_rec.INSTANCE_PARTY_ID);
5521 -- FND_MSG_PUB.Add;
5522 RAISE FND_API.G_EXC_ERROR;
5523 END IF;
5524 IF p_party_account_rec.INSTANCE_PARTY_ID <> l_curr_party_acct_rec.INSTANCE_PARTY_ID THEN
5525 -- Start addition
5526 IF p_txn_rec.transaction_type_id <> 7
5527 THEN
5528 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
5529 FND_MESSAGE.Set_Token('COLUMN', 'INSTANCE_PARTY_ID');
5530 FND_MSG_PUB.ADD;
5531 RAISE FND_API.G_EXC_ERROR;
5532 ELSE
5533 BEGIN
5534 SELECT relationship_type_code
5535 INTO l_rel_type_code
5536 FROM csi_i_parties
5537 WHERE instance_party_id=l_curr_party_acct_rec.instance_party_id;
5538
5539 IF (l_rel_type_code='OWNER' AND
5540 l_curr_party_acct_rec.relationship_type_code='OWNER' )/* OR
5541 (l_curr_party_acct_rec.active_end_date IS NOT NULL AND
5542 l_curr_party_acct_rec.active_end_date < SYSDATE AND
5543 (p_party_account_rec.active_end_date = fnd_api.g_miss_date OR
5544 p_party_account_rec.active_end_date < SYSDATE )) */
5545 -- Commented the above code for bug 3539990 (reported in 11.5.9)
5546 THEN
5547 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
5548 FND_MESSAGE.Set_Token('COLUMN', 'INSTANCE_PARTY_ID');
5549 FND_MSG_PUB.ADD;
5550 RAISE FND_API.G_EXC_ERROR;
5551 END IF;
5552 EXCEPTION
5553 WHEN FND_API.G_EXC_ERROR THEN
5554 RAISE FND_API.G_EXC_ERROR;
5555 END;
5556
5557 END IF;
5558 -- End addition
5559 END IF;
5560 ELSE
5561 -- srramakr Updates not allowed for Expired instance. Bug # 2477417
5562 IF NOT(CSI_Instance_parties_vld_pvt.Is_Inst_partyID_Valid
5563 (p_Instance_party_id => l_curr_party_acct_rec.INSTANCE_PARTY_ID
5564 ,p_txn_type_id => p_txn_rec.transaction_type_id
5565 ,p_mode => 'U' -- Added for bug 3550541
5566 )
5567 )
5568 THEN
5569 RAISE FND_API.G_EXC_ERROR;
5570 END IF;
5571 END IF;
5572 l_party_relation := CSI_Instance_parties_vld_pvt.Get_Party_relation
5573 (l_curr_party_acct_rec.Instance_party_id);
5574 --
5575 IF p_party_account_rec.active_start_date IS NULL THEN
5576 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
5577 FND_MESSAGE.Set_Token('COLUMN', 'ACTIVE_START_DATE');
5578 FND_MSG_PUB.ADD;
5579 RAISE FND_API.G_EXC_ERROR;
5580 END IF;
5581 --
5582 IF p_party_account_rec.active_start_date <> FND_API.G_MISS_DATE THEN
5583 IF p_party_account_rec.active_start_date <> l_curr_party_acct_rec.active_start_date THEN
5584 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
5585 FND_MESSAGE.Set_Token('COLUMN', 'ACTIVE_START_DATE');
5586 FND_MSG_PUB.ADD;
5587 RAISE FND_API.G_EXC_ERROR;
5588 END IF;
5589 END IF;
5590
5591 -- Verify if the active_end_date is valid
5592 -- Don't allow expiry of owner accounts
5593 IF ( p_party_account_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE) THEN
5594 IF ((l_curr_party_acct_rec.relationship_type_code = 'OWNER')
5595 AND (l_party_relation = 'OWNER')) THEN
5596 -- Added by sguthiva for bug 2307804
5597 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
5598 csi_gen_utility_pvt.populate_install_param_rec;
5599 END IF;
5600 --
5601 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
5602 --
5603 IF l_internal_party_id IS NULL THEN
5604 FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
5605 FND_MSG_PUB.ADD;
5606 RAISE FND_API.G_EXC_ERROR;
5607 END IF;
5608 --
5609 -- End addition by sguthiva for bug 2307804
5610 IF p_party_account_rec.expire_flag = fnd_api.g_false -- Added by sguthiva for bug 2307804
5611 -- IF csi_party_relationships_pvt.g_force_expire_flag = 'N' -- Commented by sguthiva for bug 2307804
5612 THEN
5613 FND_MESSAGE.Set_Name('CSI', 'CSI_API_EXP_NOT_ALLOWED');
5614 FND_MESSAGE.Set_Token('COLUMN', 'OWNER ACCOUNT');
5615 FND_MSG_PUB.ADD;
5616 RAISE FND_API.G_EXC_ERROR;
5617 END IF;
5618 ELSE
5619
5620 -- Verify if the active_end_date is valid
5621 IF p_party_account_rec.expire_flag = fnd_api.g_false THEN -- Added by sguthiva for bug 2307804
5622 -- IF (g_expire_account_flag <> 'Y') THEN -- Commented by sguthiva for bug 2307804
5623 IF NOT(CSI_Instance_parties_vld_pvt.Is_Acct_EndDate_Valid
5624 (l_curr_party_acct_rec.ACTIVE_START_DATE,
5625 p_party_account_rec.ACTIVE_END_DATE ,
5626 p_party_account_rec.INSTANCE_PARTY_ID ,
5627 p_party_account_rec.IP_ACCOUNT_ID ,
5628 p_txn_rec.TRANSACTION_ID)) THEN
5629 RAISE FND_API.G_EXC_ERROR;
5630 END IF;
5631
5632
5633 -- Added following code for bug 3855525.
5634 IF p_party_account_rec.ACTIVE_END_DATE IS NOT NULL AND
5635 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
5636 l_curr_party_acct_rec.ACTIVE_START_DATE <> FND_API.G_MISS_DATE AND
5637 p_party_account_rec.ACTIVE_END_DATE < l_curr_party_acct_rec.ACTIVE_START_DATE
5638 THEN
5639 FND_MESSAGE.Set_Name('CSI', 'CSI_ENDDT_GT_STDT');
5640
5641 FND_MESSAGE.Set_Token('END_DATE',p_party_account_rec.ACTIVE_END_DATE);
5642 FND_MESSAGE.Set_Token('START_DATE',l_curr_party_acct_rec.ACTIVE_START_DATE);
5643 FND_MSG_PUB.ADD;
5644 RAISE FND_API.G_EXC_ERROR;
5645 END IF;
5646 -- End code addition for bug 3855525.
5647
5648 END IF;
5649 END IF;
5650 END IF;
5651
5652
5653 -- Verify the relationship_type_code is valid
5654 -- Don't allow change of owner accounts
5655 IF p_party_account_rec.relationship_type_code <> FND_API.G_MISS_CHAR THEN
5656 IF ((p_party_account_rec.relationship_type_code <> l_curr_party_acct_rec.relationship_type_code)
5657 AND (l_curr_party_acct_rec.relationship_type_code = 'OWNER')
5658 AND (l_party_relation = 'OWNER')) THEN
5659 FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
5660 FND_MESSAGE.Set_Token('COLUMN', 'OWNER ACCOUNT');
5661 FND_MSG_PUB.ADD;
5662 RAISE FND_API.G_EXC_ERROR;
5663 ELSE
5664 -- Verify the relationship_type_code is valid
5665 IF NOT(CSI_Instance_parties_vld_pvt.Is_Acct_Rel_type_Valid
5666 (p_party_account_rec.RELATIONSHIP_TYPE_CODE)) THEN
5667 RAISE FND_API.G_EXC_ERROR;
5668 END IF;
5669 END IF;
5670 END IF;
5671
5672 -- Need to add the following as account/party merge transaction
5673 -- is allowed to change the instance_party_id.
5674 IF p_txn_rec.transaction_type_id=7 AND
5675 (p_party_account_rec.instance_party_id IS NOT NULL AND
5676 p_party_account_rec.instance_party_id <> fnd_api.g_miss_num)
5677 THEN
5678 l_instance_party_id := p_party_account_rec.instance_party_id;
5679 ELSE
5680 l_instance_party_id := l_curr_party_acct_rec.INSTANCE_PARTY_ID;
5681 END IF;
5682
5683 -- verify if party_account_id is valid
5684 IF p_party_account_rec.PARTY_ACCOUNT_ID <> FND_API.G_MISS_NUM THEN
5685 -- Added the following condition for bug 3830149 (rel 11.5.9)
5686 IF (p_party_account_rec.ACTIVE_END_DATE IS NULL OR
5687 p_party_account_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE)
5688 OR
5689 (p_party_account_rec.ACTIVE_END_DATE IS NOT NULL AND
5690 p_party_account_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE AND
5691 p_party_account_rec.ACTIVE_END_DATE > SYSDATE)
5692 THEN
5693 IF NOT(CSI_Instance_parties_vld_pvt.Is_Pty_accountID_Valid
5694 (p_party_account_rec.PARTY_ACCOUNT_ID,
5695 l_instance_party_id, --l_curr_party_acct_rec.INSTANCE_PARTY_ID,
5696 p_party_account_rec.RELATIONSHIP_TYPE_CODE,
5697 p_txn_rec.transaction_type_id, -- Added for bug 3550541
5698 'U' -- Added for bug 3550541
5699 )
5700 )
5701 THEN
5702 RAISE FND_API.G_EXC_ERROR;
5703 END IF;
5704 ELSE
5705 -- Since party_account_id validation is not required during expiration of accounts
5706 -- ,Hence we added the above filter condition.
5707 -- Refer bug 3830149 for more explaination.
5708 NULL;
5709 END IF;
5710 END IF;
5711
5712 -- Verify if bill to address is correct
5713 IF p_party_account_rec.bill_to_address <> FND_API.G_MISS_NUM THEN
5714 IF NOT(CSI_Instance_parties_vld_pvt.Is_bill_to_add_valid
5715 ( p_party_account_rec.bill_to_address)) THEN
5716 RAISE FND_API.G_EXC_ERROR;
5717 END IF;
5718 END IF;
5719
5720
5721 -- Verify if ship to address is correct
5722 IF p_party_account_rec.ship_to_address <> FND_API.G_MISS_NUM THEN
5723 IF NOT(CSI_Instance_parties_vld_pvt.Is_ship_to_add_valid
5724 ( p_party_account_rec.ship_to_address)) THEN
5725 RAISE FND_API.G_EXC_ERROR;
5726 END IF;
5727 END IF;
5728
5729 -- Validate alternate primary key
5730 -- Verify if the party account combination exists
5731 IF ((p_party_account_rec.instance_party_id IS NULL) OR
5732 (p_party_account_rec.instance_party_id = FND_API.G_MISS_NUM)) THEN
5733 l_alt_pk_inst_pty_id := l_curr_party_acct_rec.instance_party_id;
5734 ELSE
5735 l_alt_pk_inst_pty_id := p_party_account_rec.instance_party_id;
5736 END IF;
5737
5738 IF ((p_party_account_rec.party_account_id IS NULL) OR
5739 (p_party_account_rec.party_account_id = FND_API.G_MISS_NUM)) THEN
5740 l_alt_pk_pty_acct_id := l_curr_party_acct_rec.party_account_id;
5741 ELSE
5742 l_alt_pk_pty_acct_id := p_party_account_rec.party_account_id;
5743 END IF;
5744
5745 IF ((p_party_account_rec.relationship_type_code IS NULL) OR
5746 (p_party_account_rec.relationship_type_code = FND_API.G_MISS_CHAR)) THEN
5747 l_alt_pk_rel_type_code := l_curr_party_acct_rec.relationship_type_code;
5748 ELSE
5749 l_alt_pk_rel_type_code := p_party_account_rec.relationship_type_code;
5750 END IF;
5751
5752 IF ((l_alt_pk_inst_pty_id <> l_curr_party_acct_rec.instance_party_id)
5753 OR
5754 (l_alt_pk_pty_acct_id <> l_curr_party_acct_rec.party_account_id)
5755 OR
5756 (l_alt_pk_rel_type_code <> l_curr_party_acct_rec.relationship_type_code))
5757 THEN
5758 -- Verify if the party account combination exists
5759 IF p_txn_rec.transaction_type_id=7
5760 THEN
5761 l_found_for_update:='T';
5762 BEGIN
5763 SELECT 'x'
5764 INTO l_dummy
5765 FROM csi_ip_accounts
5766 WHERE instance_party_id = l_alt_pk_inst_pty_id
5767 AND party_account_id = l_alt_pk_pty_acct_id
5768 AND relationship_type_code = l_alt_pk_rel_type_code
5769 AND ((active_end_date IS NULL) OR (active_end_date >= sysdate))
5770 AND ROWNUM=1;
5771
5772 -- If found then there exists a record in csi_i_parties, Hence
5773 -- I need to expire(if active) this record.
5774 BEGIN
5775 SELECT active_end_date
5776 INTO l_temp_acct_date
5777 FROM csi_ip_accounts
5778 WHERE ip_account_id=p_party_account_rec.ip_account_id
5779 AND ((active_end_date IS NULL) OR (active_end_date > sysdate));
5780 -- Active record found so make it inactive.
5781 l_temp_acct_date:=sysdate;
5782 EXCEPTION
5783 WHEN NO_DATA_FOUND THEN
5784 -- Means the record is already in inactive state.
5785 l_temp_acct_date := p_party_account_rec.active_end_date;
5786 END;
5787
5788 EXCEPTION
5789 WHEN OTHERS THEN
5790 -- No changes are needed.
5791 l_temp_acct_date := p_party_account_rec.active_end_date;
5792 END;
5793
5794 ELSE
5795 IF CSI_Instance_parties_vld_pvt.Is_Pty_Acct_Comb_Exists
5796 (l_alt_pk_inst_pty_id ,
5797 l_alt_pk_pty_acct_id ,
5798 l_alt_pk_rel_type_code ) THEN
5799 RAISE FND_API.G_EXC_ERROR;
5800 END IF;
5801 END IF;
5802 END IF;
5803
5804 -- Verify if it meets Account Rules
5805 IF ((l_alt_pk_inst_pty_id <> l_curr_party_acct_rec.instance_party_id)
5806 OR
5807 (l_alt_pk_rel_type_code <> l_curr_party_acct_rec.relationship_type_code))
5808 THEN
5809 IF CSI_Instance_parties_vld_pvt.Acct_Rules_Check
5810 (l_alt_pk_inst_pty_id ,
5811 l_alt_pk_rel_type_code ) THEN
5812 RAISE FND_API.G_EXC_ERROR;
5813 END IF;
5814 END IF;
5815
5816 -- Get party record for later use in contaracts
5817 IF NOT(CSI_Instance_parties_vld_pvt.Get_Party_Record
5818 (l_curr_party_acct_rec.instance_party_id,
5819 l_party_rec)) THEN
5820 RAISE FND_API.G_EXC_ERROR;
5821 END IF;
5822
5823 -- If it is an owner party and owner account then update csi_item_instances
5824 IF p_party_account_rec.relationship_type_code <> FND_API.G_MISS_CHAR THEN
5825 IF ((p_party_account_rec.relationship_type_code = 'OWNER')
5826 AND (l_party_relation = 'OWNER')) THEN
5827 -- Added by sguthiva for bug 2307804
5828 IF p_party_account_rec.party_account_id <> fnd_api.g_miss_num
5829 AND p_party_account_rec.party_account_id IS NOT NULL
5830 THEN
5831 update csi_item_instances
5832 set owner_party_account_id = p_party_account_rec.party_account_id
5833 where instance_id = l_party_rec.instance_id;
5834 END IF;
5835 END IF;
5836 -- End addition by sguthiva for bug 2307804
5837 END IF;
5838
5839 IF p_txn_rec.transaction_type_id=7 AND
5840 l_found_for_update='T'
5841 THEN
5842 l_acct_end_date:=l_temp_acct_date;
5843 ELSE
5844 l_acct_end_date:=p_party_account_rec.active_end_date;
5845 END IF;
5846
5847 -- Increment the object_version_number before updating
5848 l_OBJECT_VERSION_NUMBER := l_curr_party_acct_rec.OBJECT_VERSION_NUMBER + 1 ;
5849
5850 -- Calling table table handler to update
5851 CSI_IP_ACCOUNTS_PKG.Update_Row
5852 (
5853 p_IP_ACCOUNT_ID => p_party_account_rec.ip_account_id,
5854 p_INSTANCE_PARTY_ID => p_party_account_rec.INSTANCE_PARTY_ID,
5855 p_PARTY_ACCOUNT_ID => p_party_account_rec.PARTY_ACCOUNT_ID,
5856 p_RELATIONSHIP_TYPE_CODE => p_party_account_rec.RELATIONSHIP_TYPE_CODE,
5857 p_ACTIVE_START_DATE => p_party_account_rec.ACTIVE_START_DATE,
5858 p_ACTIVE_END_DATE => l_acct_end_date, --p_party_account_rec.ACTIVE_END_DATE,
5859 p_CONTEXT => p_party_account_rec.CONTEXT,
5860 p_ATTRIBUTE1 => p_party_account_rec.ATTRIBUTE1,
5861 p_ATTRIBUTE2 => p_party_account_rec.ATTRIBUTE2,
5862 p_ATTRIBUTE3 => p_party_account_rec.ATTRIBUTE3,
5863 p_ATTRIBUTE4 => p_party_account_rec.ATTRIBUTE4,
5864 p_ATTRIBUTE5 => p_party_account_rec.ATTRIBUTE5,
5865 p_ATTRIBUTE6 => p_party_account_rec.ATTRIBUTE6,
5866 p_ATTRIBUTE7 => p_party_account_rec.ATTRIBUTE7,
5867 p_ATTRIBUTE8 => p_party_account_rec.ATTRIBUTE8,
5868 p_ATTRIBUTE9 => p_party_account_rec.ATTRIBUTE9,
5869 p_ATTRIBUTE10 => p_party_account_rec.ATTRIBUTE10,
5870 p_ATTRIBUTE11 => p_party_account_rec.ATTRIBUTE11,
5871 p_ATTRIBUTE12 => p_party_account_rec.ATTRIBUTE12,
5872 p_ATTRIBUTE13 => p_party_account_rec.ATTRIBUTE13,
5873 p_ATTRIBUTE14 => p_party_account_rec.ATTRIBUTE14,
5874 p_ATTRIBUTE15 => p_party_account_rec.ATTRIBUTE15,
5875 p_CREATED_BY => FND_API.G_MISS_NUM, -- FND_GLOBAL.USER_ID,
5876 p_CREATION_DATE => FND_API.G_MISS_DATE, -- SYSDATE,
5877 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
5878 p_LAST_UPDATE_DATE => SYSDATE ,
5879 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
5880 p_OBJECT_VERSION_NUMBER => l_OBJECT_VERSION_NUMBER ,
5881 p_BILL_TO_ADDRESS => p_party_account_rec.BILL_TO_ADDRESS,
5882 p_SHIP_TO_ADDRESS => p_party_account_rec.SHIP_TO_ADDRESS,
5883 p_REQUEST_ID => p_party_account_rec.REQUEST_ID,
5884 p_PROGRAM_APPLICATION_ID => p_party_account_rec.PROGRAM_APPLICATION_ID,
5885 p_PROGRAM_ID => p_party_account_rec.PROGRAM_ID,
5886 p_PROGRAM_UPDATE_DATE => p_party_account_rec.PROGRAM_UPDATE_DATE);
5887
5888 -- Call create_transaction to create txn log
5889 CSI_TRANSACTIONS_PVT.Create_transaction
5890 (
5891 p_api_version => p_api_version
5892 ,p_commit => p_commit
5893 ,p_init_msg_list => p_init_msg_list
5894 ,p_validation_level => p_validation_level
5895 ,p_Success_If_Exists_Flag => 'Y'
5896 ,P_transaction_rec => p_txn_rec
5897 ,x_return_status => x_return_status
5898 ,x_msg_count => x_msg_count
5899 ,x_msg_data => x_msg_data );
5900
5901 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
5902
5903 FOR i in 1..x_msg_Count LOOP
5904 FND_MSG_PUB.Get(p_msg_index => i,
5905 p_encoded => 'F',
5906 p_data => x_msg_data,
5907 p_msg_index_out => x_msg_index_out );
5908 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
5909 End LOOP;
5910 RAISE FND_API.G_EXC_ERROR;
5911 END IF;
5912
5913
5914
5915 -- Generate a unique instance_party_history_id from the sequence
5916 l_ip_account_history_id := CSI_Instance_parties_vld_pvt.gen_ip_account_hist_id;
5917
5918 -- Get the full_dump_frequency from csi_install_parameter
5919 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
5920 csi_gen_utility_pvt.populate_install_param_rec;
5921 END IF;
5922 --
5923 l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
5924 --
5925 IF l_full_dump_frequency IS NULL THEN
5926 FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
5927 FND_MSG_PUB.ADD;
5928 RAISE FND_API.G_EXC_ERROR;
5929 END IF;
5930 --
5931 select mod(l_object_version_number,l_full_dump_frequency)
5932 into l_mod_value
5933 from dual;
5934
5935 -- assign the party rec
5936 l_temp_party_account_rec := p_party_account_rec;
5937 l_temp_party_account_rec.active_end_date:=l_acct_end_date;
5938 -- Start of changes for Bug#2547034 on 09/20/02 - rtalluri
5939 BEGIN
5940 SELECT ip_account_history_id
5941 INTO l_ip_acct_hist_id
5942 FROM csi_ip_accounts_h h
5943 WHERE h.transaction_id = p_txn_rec.transaction_id
5944 AND h.ip_account_id = p_party_account_rec.ip_account_id;
5945
5946 OPEN pty_acct_csr(l_ip_acct_hist_id);
5947 FETCH pty_acct_csr INTO l_pty_acct_csr ;
5948 CLOSE pty_acct_csr;
5949 IF l_pty_acct_csr.full_dump_flag = 'Y'
5950 THEN
5951 CSI_IP_ACCOUNTS_H_PKG.Update_Row
5952 (
5953 p_IP_ACCOUNT_HISTORY_ID => l_ip_acct_hist_id ,
5954 p_IP_ACCOUNT_ID => fnd_api.g_miss_num ,
5955 p_TRANSACTION_ID => fnd_api.g_miss_num ,
5956 p_OLD_PARTY_ACCOUNT_ID => fnd_api.g_miss_num ,
5957 p_NEW_PARTY_ACCOUNT_ID => l_temp_party_account_rec.PARTY_ACCOUNT_ID,
5958 p_OLD_RELATIONSHIP_TYPE_CODE => fnd_api.g_miss_char ,
5959 p_NEW_RELATIONSHIP_TYPE_CODE => l_temp_party_account_rec.RELATIONSHIP_TYPE_CODE,
5960 p_OLD_ACTIVE_START_DATE => fnd_api.g_miss_date ,
5961 p_NEW_ACTIVE_START_DATE => l_temp_party_account_rec.ACTIVE_START_DATE,
5962 p_OLD_ACTIVE_END_DATE => fnd_api.g_miss_date ,
5963 p_NEW_ACTIVE_END_DATE => l_temp_party_account_rec.ACTIVE_END_DATE ,
5964 p_OLD_CONTEXT => fnd_api.g_miss_char ,
5965 p_NEW_CONTEXT => l_temp_party_account_rec.CONTEXT ,
5966 p_OLD_ATTRIBUTE1 => fnd_api.g_miss_char ,
5967 p_NEW_ATTRIBUTE1 => l_temp_party_account_rec.ATTRIBUTE1 ,
5968 p_OLD_ATTRIBUTE2 => fnd_api.g_miss_char ,
5969 p_NEW_ATTRIBUTE2 => l_temp_party_account_rec.ATTRIBUTE2 ,
5970 p_OLD_ATTRIBUTE3 => fnd_api.g_miss_char ,
5971 p_NEW_ATTRIBUTE3 => l_temp_party_account_rec.ATTRIBUTE3 ,
5972 p_OLD_ATTRIBUTE4 => fnd_api.g_miss_char ,
5973 p_NEW_ATTRIBUTE4 => l_temp_party_account_rec.ATTRIBUTE4 ,
5974 p_OLD_ATTRIBUTE5 => fnd_api.g_miss_char ,
5975 p_NEW_ATTRIBUTE5 => l_temp_party_account_rec.ATTRIBUTE5 ,
5976 p_OLD_ATTRIBUTE6 => fnd_api.g_miss_char ,
5977 p_NEW_ATTRIBUTE6 => l_temp_party_account_rec.ATTRIBUTE6 ,
5978 p_OLD_ATTRIBUTE7 => fnd_api.g_miss_char ,
5979 p_NEW_ATTRIBUTE7 => l_temp_party_account_rec.ATTRIBUTE7 ,
5980 p_OLD_ATTRIBUTE8 => fnd_api.g_miss_char ,
5981 p_NEW_ATTRIBUTE8 => l_temp_party_account_rec.ATTRIBUTE8 ,
5982 p_OLD_ATTRIBUTE9 => fnd_api.g_miss_char ,
5983 p_NEW_ATTRIBUTE9 => l_temp_party_account_rec.ATTRIBUTE9 ,
5984 p_OLD_ATTRIBUTE10 => fnd_api.g_miss_char ,
5985 p_NEW_ATTRIBUTE10 => l_temp_party_account_rec.ATTRIBUTE10 ,
5986 p_OLD_ATTRIBUTE11 => fnd_api.g_miss_char ,
5987 p_NEW_ATTRIBUTE11 => l_temp_party_account_rec.ATTRIBUTE11 ,
5988 p_OLD_ATTRIBUTE12 => fnd_api.g_miss_char ,
5989 p_NEW_ATTRIBUTE12 => l_temp_party_account_rec.ATTRIBUTE12 ,
5990 p_OLD_ATTRIBUTE13 => fnd_api.g_miss_char ,
5991 p_NEW_ATTRIBUTE13 => l_temp_party_account_rec.ATTRIBUTE13 ,
5992 p_OLD_ATTRIBUTE14 => fnd_api.g_miss_char ,
5993 p_NEW_ATTRIBUTE14 => l_temp_party_account_rec.ATTRIBUTE14 ,
5994 p_OLD_ATTRIBUTE15 => fnd_api.g_miss_char ,
5995 p_NEW_ATTRIBUTE15 => l_temp_party_account_rec.ATTRIBUTE15 ,
5996 p_FULL_DUMP_FLAG => fnd_api.g_miss_char ,
5997 p_CREATED_BY => FND_API.G_MISS_NUM ,
5998 p_CREATION_DATE => FND_API.G_MISS_DATE ,
5999 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
6000 p_LAST_UPDATE_DATE => SYSDATE ,
6001 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
6002 p_OBJECT_VERSION_NUMBER => fnd_api.g_miss_num ,
6003 p_OLD_BILL_TO_ADDRESS => fnd_api.g_miss_num ,
6004 p_NEW_BILL_TO_ADDRESS => l_temp_party_account_rec.BILL_TO_ADDRESS ,
6005 p_OLD_SHIP_TO_ADDRESS => fnd_api.g_miss_num ,
6006 p_NEW_SHIP_TO_ADDRESS => l_temp_party_account_rec.SHIP_TO_ADDRESS ,
6007 p_OLD_INSTANCE_PARTY_ID => fnd_api.g_miss_num ,
6008 p_NEW_INSTANCE_PARTY_ID => l_temp_party_account_rec.INSTANCE_PARTY_ID);
6009
6010
6011 ELSE
6012
6013 IF ( l_pty_acct_csr.old_party_account_id IS NULL
6014 AND l_pty_acct_csr.new_party_account_id IS NULL ) THEN
6015 IF ( l_temp_party_account_rec.party_account_id = l_curr_party_acct_rec.party_account_id )
6016 OR ( l_temp_party_account_rec.party_account_id = fnd_api.g_miss_num ) THEN
6017 l_pty_acct_csr.old_party_account_id := NULL;
6018 l_pty_acct_csr.new_party_account_id := NULL;
6019 ELSE
6020 l_pty_acct_csr.old_party_account_id := fnd_api.g_miss_num;
6021 l_pty_acct_csr.new_party_account_id := l_temp_party_account_rec.party_account_id;
6022 END IF;
6023 ELSE
6024 l_pty_acct_csr.old_party_account_id := fnd_api.g_miss_num;
6025 l_pty_acct_csr.new_party_account_id := l_temp_party_account_rec.party_account_id;
6026 END IF;
6027 --
6028 IF ( l_pty_acct_csr.old_relationship_type_code IS NULL
6029 AND l_pty_acct_csr.new_relationship_type_code IS NULL ) THEN
6030 IF ( l_temp_party_account_rec.relationship_type_code = l_curr_party_acct_rec.relationship_type_code )
6031 OR ( l_temp_party_account_rec.relationship_type_code = fnd_api.g_miss_char ) THEN
6032 l_pty_acct_csr.old_relationship_type_code := NULL;
6033 l_pty_acct_csr.new_relationship_type_code := NULL;
6034 ELSE
6035 l_pty_acct_csr.old_relationship_type_code := fnd_api.g_miss_char;
6036 l_pty_acct_csr.new_relationship_type_code := l_temp_party_account_rec.relationship_type_code;
6037 END IF;
6038 ELSE
6039 l_pty_acct_csr.old_relationship_type_code := fnd_api.g_miss_char;
6040 l_pty_acct_csr.new_relationship_type_code := l_temp_party_account_rec.relationship_type_code;
6041 END IF;
6042 --
6043 IF ( l_pty_acct_csr.old_bill_to_address IS NULL
6044 AND l_pty_acct_csr.new_bill_to_address IS NULL ) THEN
6045 IF ( l_temp_party_account_rec.bill_to_address = l_curr_party_acct_rec.bill_to_address )
6046 OR ( l_temp_party_account_rec.bill_to_address = fnd_api.g_miss_num ) THEN
6047 l_pty_acct_csr.old_bill_to_address := NULL;
6048 l_pty_acct_csr.new_bill_to_address := NULL;
6049 ELSE
6050 l_pty_acct_csr.old_bill_to_address := fnd_api.g_miss_num;
6051 l_pty_acct_csr.new_bill_to_address := l_temp_party_account_rec.bill_to_address;
6052 END IF;
6053 ELSE
6054 l_pty_acct_csr.old_bill_to_address := fnd_api.g_miss_num;
6055 l_pty_acct_csr.new_bill_to_address := l_temp_party_account_rec.bill_to_address;
6056 END IF;
6057 --
6058 IF ( l_pty_acct_csr.old_ship_to_address IS NULL
6059 AND l_pty_acct_csr.new_ship_to_address IS NULL ) THEN
6060 IF ( l_temp_party_account_rec.ship_to_address = l_curr_party_acct_rec.ship_to_address )
6061 OR ( l_temp_party_account_rec.ship_to_address = fnd_api.g_miss_num ) THEN
6062 l_pty_acct_csr.old_ship_to_address := NULL;
6063 l_pty_acct_csr.new_ship_to_address := NULL;
6064 ELSE
6065 l_pty_acct_csr.old_ship_to_address := fnd_api.g_miss_num;
6066 l_pty_acct_csr.new_ship_to_address := l_temp_party_account_rec.ship_to_address;
6067 END IF;
6068 ELSE
6069 l_pty_acct_csr.old_ship_to_address := fnd_api.g_miss_num;
6070 l_pty_acct_csr.new_ship_to_address := l_temp_party_account_rec.ship_to_address;
6071 END IF;
6072 --
6073 IF ( l_pty_acct_csr.old_active_start_date IS NULL
6074 AND l_pty_acct_csr.new_active_start_date IS NULL ) THEN
6075 IF ( l_temp_party_account_rec.active_start_date = l_curr_party_acct_rec.active_start_date )
6076 OR ( l_temp_party_account_rec.active_start_date = fnd_api.g_miss_date ) THEN
6077 l_pty_acct_csr.old_active_start_date := NULL;
6078 l_pty_acct_csr.new_active_start_date := NULL;
6079 ELSE
6080 l_pty_acct_csr.old_active_start_date := fnd_api.g_miss_date;
6081 l_pty_acct_csr.new_active_start_date := l_temp_party_account_rec.active_start_date;
6082 END IF;
6083 ELSE
6084 l_pty_acct_csr.old_active_start_date := fnd_api.g_miss_date;
6085 l_pty_acct_csr.new_active_start_date := l_temp_party_account_rec.active_start_date;
6086 END IF;
6087 --
6088 IF ( l_pty_acct_csr.old_active_end_date IS NULL
6089 AND l_pty_acct_csr.new_active_end_date IS NULL ) THEN
6090 IF ( l_temp_party_account_rec.active_end_date = l_curr_party_acct_rec.active_end_date )
6091 OR ( l_temp_party_account_rec.active_end_date = fnd_api.g_miss_date ) THEN
6092 l_pty_acct_csr.old_active_end_date := NULL;
6093 l_pty_acct_csr.new_active_end_date := NULL;
6094 ELSE
6095 l_pty_acct_csr.old_active_end_date := fnd_api.g_miss_date;
6096 l_pty_acct_csr.new_active_end_date := l_temp_party_account_rec.active_end_date;
6097 END IF;
6098 ELSE
6099 l_pty_acct_csr.old_active_end_date := fnd_api.g_miss_date;
6100 l_pty_acct_csr.new_active_end_date := l_temp_party_account_rec.active_end_date;
6101 END IF;
6102 --
6103 IF ( l_pty_acct_csr.old_context IS NULL
6104 AND l_pty_acct_csr.new_context IS NULL ) THEN
6105 IF ( l_temp_party_account_rec.context = l_curr_party_acct_rec.context )
6106 OR ( l_temp_party_account_rec.context = fnd_api.g_miss_char ) THEN
6107 l_pty_acct_csr.old_context := NULL;
6108 l_pty_acct_csr.new_context := NULL;
6109 ELSE
6110 l_pty_acct_csr.old_context := fnd_api.g_miss_char;
6111 l_pty_acct_csr.new_context := l_temp_party_account_rec.context;
6112 END IF;
6113 ELSE
6114 l_pty_acct_csr.old_context := fnd_api.g_miss_char;
6115 l_pty_acct_csr.new_context := l_temp_party_account_rec.context;
6116 END IF;
6117 --
6118 IF ( l_pty_acct_csr.old_attribute1 IS NULL
6119 AND l_pty_acct_csr.new_attribute1 IS NULL ) THEN
6120 IF ( l_temp_party_account_rec.attribute1 = l_curr_party_acct_rec.attribute1 )
6121 OR ( l_temp_party_account_rec.attribute1 = fnd_api.g_miss_char ) THEN
6122 l_pty_acct_csr.old_attribute1 := NULL;
6123 l_pty_acct_csr.new_attribute1 := NULL;
6124 ELSE
6125 l_pty_acct_csr.old_attribute1 := fnd_api.g_miss_char;
6126 l_pty_acct_csr.new_attribute1 := l_temp_party_account_rec.attribute1;
6127 END IF;
6128 ELSE
6129 l_pty_acct_csr.old_attribute1 := fnd_api.g_miss_char;
6130 l_pty_acct_csr.new_attribute1 := l_temp_party_account_rec.attribute1;
6131 END IF;
6132 --
6133 IF ( l_pty_acct_csr.old_attribute2 IS NULL
6134 AND l_pty_acct_csr.new_attribute2 IS NULL ) THEN
6135 IF ( l_temp_party_account_rec.attribute2 = l_curr_party_acct_rec.attribute2 )
6136 OR ( l_temp_party_account_rec.attribute2 = fnd_api.g_miss_char ) THEN
6137 l_pty_acct_csr.old_attribute2 := NULL;
6138 l_pty_acct_csr.new_attribute2 := NULL;
6139 ELSE
6140 l_pty_acct_csr.old_attribute2 := fnd_api.g_miss_char;
6141 l_pty_acct_csr.new_attribute2 := l_temp_party_account_rec.attribute2;
6142 END IF;
6143 ELSE
6144 l_pty_acct_csr.old_attribute2 := fnd_api.g_miss_char;
6145 l_pty_acct_csr.new_attribute2 := l_temp_party_account_rec.attribute2;
6146 END IF;
6147 --
6148 IF ( l_pty_acct_csr.old_attribute3 IS NULL
6149 AND l_pty_acct_csr.new_attribute3 IS NULL ) THEN
6150 IF ( l_temp_party_account_rec.attribute3 = l_curr_party_acct_rec.attribute3 )
6151 OR ( l_temp_party_account_rec.attribute3 = fnd_api.g_miss_char ) THEN
6152 l_pty_acct_csr.old_attribute3 := NULL;
6153 l_pty_acct_csr.new_attribute3 := NULL;
6154 ELSE
6155 l_pty_acct_csr.old_attribute3 := fnd_api.g_miss_char;
6156 l_pty_acct_csr.new_attribute3 := l_temp_party_account_rec.attribute3;
6157 END IF;
6158 ELSE
6159 l_pty_acct_csr.old_attribute3 := fnd_api.g_miss_char;
6160 l_pty_acct_csr.new_attribute3 := l_temp_party_account_rec.attribute3;
6161 END IF;
6162 --
6163 IF ( l_pty_acct_csr.old_attribute4 IS NULL
6164 AND l_pty_acct_csr.new_attribute4 IS NULL ) THEN
6165 IF ( l_temp_party_account_rec.attribute4 = l_curr_party_acct_rec.attribute4 )
6166 OR ( l_temp_party_account_rec.attribute4 = fnd_api.g_miss_char ) THEN
6167 l_pty_acct_csr.old_attribute4 := NULL;
6168 l_pty_acct_csr.new_attribute4 := NULL;
6169 ELSE
6170 l_pty_acct_csr.old_attribute4 := fnd_api.g_miss_char;
6171 l_pty_acct_csr.new_attribute4 := l_temp_party_account_rec.attribute4;
6172 END IF;
6173 ELSE
6174 l_pty_acct_csr.old_attribute4 := fnd_api.g_miss_char;
6175 l_pty_acct_csr.new_attribute4 := l_temp_party_account_rec.attribute4;
6176 END IF;
6177 --
6178 IF ( l_pty_acct_csr.old_attribute5 IS NULL
6179 AND l_pty_acct_csr.new_attribute5 IS NULL ) THEN
6180 IF ( l_temp_party_account_rec.attribute5 = l_curr_party_acct_rec.attribute5 )
6181 OR ( l_temp_party_account_rec.attribute5 = fnd_api.g_miss_char ) THEN
6182 l_pty_acct_csr.old_attribute5 := NULL;
6183 l_pty_acct_csr.new_attribute5 := NULL;
6184 ELSE
6185 l_pty_acct_csr.old_attribute5 := fnd_api.g_miss_char;
6186 l_pty_acct_csr.new_attribute5 := l_temp_party_account_rec.attribute5;
6187 END IF;
6188 ELSE
6189 l_pty_acct_csr.old_attribute5 := fnd_api.g_miss_char;
6190 l_pty_acct_csr.new_attribute5 := l_temp_party_account_rec.attribute5;
6191 END IF;
6192 --
6193 IF ( l_pty_acct_csr.old_attribute6 IS NULL
6194 AND l_pty_acct_csr.new_attribute6 IS NULL ) THEN
6195 IF ( l_temp_party_account_rec.attribute6 = l_curr_party_acct_rec.attribute6 )
6196 OR ( l_temp_party_account_rec.attribute6 = fnd_api.g_miss_char ) THEN
6197 l_pty_acct_csr.old_attribute6 := NULL;
6198 l_pty_acct_csr.new_attribute6 := NULL;
6199 ELSE
6200 l_pty_acct_csr.old_attribute6 := fnd_api.g_miss_char;
6201 l_pty_acct_csr.new_attribute6 := l_temp_party_account_rec.attribute6;
6202 END IF;
6203 ELSE
6204 l_pty_acct_csr.old_attribute6 := fnd_api.g_miss_char;
6205 l_pty_acct_csr.new_attribute6 := l_temp_party_account_rec.attribute6;
6206 END IF;
6207 --
6208 IF ( l_pty_acct_csr.old_attribute7 IS NULL
6209 AND l_pty_acct_csr.new_attribute7 IS NULL ) THEN
6210 IF ( l_temp_party_account_rec.attribute7 = l_curr_party_acct_rec.attribute7 )
6211 OR ( l_temp_party_account_rec.attribute7 = fnd_api.g_miss_char ) THEN
6212 l_pty_acct_csr.old_attribute7 := NULL;
6213 l_pty_acct_csr.new_attribute7 := NULL;
6214 ELSE
6215 l_pty_acct_csr.old_attribute7 := fnd_api.g_miss_char;
6216 l_pty_acct_csr.new_attribute7 := l_temp_party_account_rec.attribute7;
6217 END IF;
6218 ELSE
6219 l_pty_acct_csr.old_attribute7 := fnd_api.g_miss_char;
6220 l_pty_acct_csr.new_attribute7 := l_temp_party_account_rec.attribute7;
6221 END IF;
6222 --
6223 IF ( l_pty_acct_csr.old_attribute8 IS NULL
6224 AND l_pty_acct_csr.new_attribute8 IS NULL ) THEN
6225 IF ( l_temp_party_account_rec.attribute8 = l_curr_party_acct_rec.attribute8 )
6226 OR ( l_temp_party_account_rec.attribute8 = fnd_api.g_miss_char ) THEN
6227 l_pty_acct_csr.old_attribute8 := NULL;
6228 l_pty_acct_csr.new_attribute8 := NULL;
6229 ELSE
6230 l_pty_acct_csr.old_attribute8 := fnd_api.g_miss_char;
6231 l_pty_acct_csr.new_attribute8 := l_temp_party_account_rec.attribute8;
6232 END IF;
6233 ELSE
6234 l_pty_acct_csr.old_attribute8 := fnd_api.g_miss_char;
6235 l_pty_acct_csr.new_attribute8 := l_temp_party_account_rec.attribute8;
6236 END IF;
6237 --
6238 IF ( l_pty_acct_csr.old_attribute9 IS NULL
6239 AND l_pty_acct_csr.new_attribute9 IS NULL ) THEN
6240 IF ( l_temp_party_account_rec.attribute9 = l_curr_party_acct_rec.attribute9 )
6241 OR ( l_temp_party_account_rec.attribute9 = fnd_api.g_miss_char ) THEN
6242 l_pty_acct_csr.old_attribute9 := NULL;
6243 l_pty_acct_csr.new_attribute9 := NULL;
6244 ELSE
6245 l_pty_acct_csr.old_attribute9 := fnd_api.g_miss_char;
6246 l_pty_acct_csr.new_attribute9 := l_temp_party_account_rec.attribute9;
6247 END IF;
6248 ELSE
6249 l_pty_acct_csr.old_attribute9 := fnd_api.g_miss_char;
6250 l_pty_acct_csr.new_attribute9 := l_temp_party_account_rec.attribute9;
6251 END IF;
6252 --
6253 IF ( l_pty_acct_csr.old_attribute10 IS NULL
6254 AND l_pty_acct_csr.new_attribute10 IS NULL ) THEN
6255 IF ( l_temp_party_account_rec.attribute10 = l_curr_party_acct_rec.attribute10 )
6256 OR ( l_temp_party_account_rec.attribute10 = fnd_api.g_miss_char ) THEN
6257 l_pty_acct_csr.old_attribute10 := NULL;
6258 l_pty_acct_csr.new_attribute10 := NULL;
6259 ELSE
6260 l_pty_acct_csr.old_attribute10 := fnd_api.g_miss_char;
6261 l_pty_acct_csr.new_attribute10 := l_temp_party_account_rec.attribute10;
6262 END IF;
6263 ELSE
6264 l_pty_acct_csr.old_attribute10 := fnd_api.g_miss_char;
6265 l_pty_acct_csr.new_attribute10 := l_temp_party_account_rec.attribute10;
6266 END IF;
6267 --
6268 IF ( l_pty_acct_csr.old_attribute11 IS NULL
6269 AND l_pty_acct_csr.new_attribute11 IS NULL ) THEN
6270 IF ( l_temp_party_account_rec.attribute11 = l_curr_party_acct_rec.attribute11 )
6271 OR ( l_temp_party_account_rec.attribute11 = fnd_api.g_miss_char ) THEN
6272 l_pty_acct_csr.old_attribute11 := NULL;
6273 l_pty_acct_csr.new_attribute11 := NULL;
6274 ELSE
6275 l_pty_acct_csr.old_attribute11 := fnd_api.g_miss_char;
6276 l_pty_acct_csr.new_attribute11 := l_temp_party_account_rec.attribute11;
6277 END IF;
6278 ELSE
6279 l_pty_acct_csr.old_attribute11 := fnd_api.g_miss_char;
6280 l_pty_acct_csr.new_attribute11 := l_temp_party_account_rec.attribute11;
6281 END IF;
6282 --
6283 IF ( l_pty_acct_csr.old_attribute12 IS NULL
6284 AND l_pty_acct_csr.new_attribute12 IS NULL ) THEN
6285 IF ( l_temp_party_account_rec.attribute12 = l_curr_party_acct_rec.attribute12 )
6286 OR ( l_temp_party_account_rec.attribute12 = fnd_api.g_miss_char ) THEN
6287 l_pty_acct_csr.old_attribute12 := NULL;
6288 l_pty_acct_csr.new_attribute12 := NULL;
6289 ELSE
6290 l_pty_acct_csr.old_attribute12 := fnd_api.g_miss_char;
6291 l_pty_acct_csr.new_attribute12 := l_temp_party_account_rec.attribute12;
6292 END IF;
6293 ELSE
6294 l_pty_acct_csr.old_attribute12 := fnd_api.g_miss_char;
6295 l_pty_acct_csr.new_attribute12 := l_temp_party_account_rec.attribute12;
6296 END IF;
6297 --
6298 IF ( l_pty_acct_csr.old_attribute13 IS NULL
6299 AND l_pty_acct_csr.new_attribute13 IS NULL ) THEN
6300 IF ( l_temp_party_account_rec.attribute13 = l_curr_party_acct_rec.attribute13 )
6301 OR ( l_temp_party_account_rec.attribute13 = fnd_api.g_miss_char ) THEN
6302 l_pty_acct_csr.old_attribute13 := NULL;
6303 l_pty_acct_csr.new_attribute13 := NULL;
6304 ELSE
6305 l_pty_acct_csr.old_attribute13 := fnd_api.g_miss_char;
6306 l_pty_acct_csr.new_attribute13 := l_temp_party_account_rec.attribute13;
6307 END IF;
6308 ELSE
6309 l_pty_acct_csr.old_attribute13 := fnd_api.g_miss_char;
6310 l_pty_acct_csr.new_attribute13 := l_temp_party_account_rec.attribute13;
6311 END IF;
6312 --
6313 IF ( l_pty_acct_csr.old_attribute14 IS NULL
6314 AND l_pty_acct_csr.new_attribute14 IS NULL ) THEN
6315 IF ( l_temp_party_account_rec.attribute14 = l_curr_party_acct_rec.attribute14 )
6316 OR ( l_temp_party_account_rec.attribute14 = fnd_api.g_miss_char ) THEN
6317 l_pty_acct_csr.old_attribute14 := NULL;
6318 l_pty_acct_csr.new_attribute14 := NULL;
6319 ELSE
6320 l_pty_acct_csr.old_attribute14 := fnd_api.g_miss_char;
6321 l_pty_acct_csr.new_attribute14 := l_temp_party_account_rec.attribute14;
6322 END IF;
6323 ELSE
6324 l_pty_acct_csr.old_attribute14 := fnd_api.g_miss_char;
6325 l_pty_acct_csr.new_attribute14 := l_temp_party_account_rec.attribute14;
6326 END IF;
6327 --
6328 IF ( l_pty_acct_csr.old_attribute15 IS NULL
6329 AND l_pty_acct_csr.new_attribute15 IS NULL ) THEN
6330 IF ( l_temp_party_account_rec.attribute15 = l_curr_party_acct_rec.attribute15 )
6331 OR ( l_temp_party_account_rec.attribute15 = fnd_api.g_miss_char ) THEN
6332 l_pty_acct_csr.old_attribute15 := NULL;
6333 l_pty_acct_csr.new_attribute15 := NULL;
6334 ELSE
6335 l_pty_acct_csr.old_attribute15 := fnd_api.g_miss_char;
6336 l_pty_acct_csr.new_attribute15 := l_temp_party_account_rec.attribute15;
6337 END IF;
6338 ELSE
6339 l_pty_acct_csr.old_attribute15 := fnd_api.g_miss_char;
6340 l_pty_acct_csr.new_attribute15 := l_temp_party_account_rec.attribute15;
6341 END IF;
6342 --
6343 IF ( l_pty_acct_csr.old_instance_party_id IS NULL
6344 AND l_pty_acct_csr.new_instance_party_id IS NULL ) THEN
6345 IF ( l_temp_party_account_rec.instance_party_id = l_curr_party_acct_rec.instance_party_id )
6346 OR ( l_temp_party_account_rec.instance_party_id = fnd_api.g_miss_num ) THEN
6347 l_pty_acct_csr.old_instance_party_id := NULL;
6348 l_pty_acct_csr.new_instance_party_id := NULL;
6349 ELSE
6350 l_pty_acct_csr.old_instance_party_id := fnd_api.g_miss_num;
6351 l_pty_acct_csr.new_instance_party_id := l_temp_party_account_rec.instance_party_id;
6352 END IF;
6353 ELSE
6354 l_pty_acct_csr.old_instance_party_id := fnd_api.g_miss_num;
6355 l_pty_acct_csr.new_instance_party_id := l_temp_party_account_rec.instance_party_id;
6356 END IF;
6357
6358 CSI_IP_ACCOUNTS_H_PKG.Update_Row
6359 (
6360 p_IP_ACCOUNT_HISTORY_ID => l_ip_acct_hist_id ,
6361 p_IP_ACCOUNT_ID => fnd_api.g_miss_num ,
6362 p_TRANSACTION_ID => fnd_api.g_miss_num ,
6363 p_OLD_PARTY_ACCOUNT_ID => l_pty_acct_csr.old_party_account_id ,
6364 p_NEW_PARTY_ACCOUNT_ID => l_pty_acct_csr.NEW_PARTY_ACCOUNT_ID,
6365 p_OLD_RELATIONSHIP_TYPE_CODE => l_pty_acct_csr.old_relationship_type_code,
6366 p_NEW_RELATIONSHIP_TYPE_CODE => l_pty_acct_csr.NEW_RELATIONSHIP_TYPE_CODE,
6367 p_OLD_ACTIVE_START_DATE => l_pty_acct_csr.old_active_start_date ,
6368 p_NEW_ACTIVE_START_DATE => l_pty_acct_csr.NEW_ACTIVE_START_DATE,
6369 p_OLD_ACTIVE_END_DATE => l_pty_acct_csr.old_active_end_date ,
6370 p_NEW_ACTIVE_END_DATE => l_pty_acct_csr.NEW_ACTIVE_END_DATE ,
6371 p_OLD_CONTEXT => l_pty_acct_csr.old_context ,
6372 p_NEW_CONTEXT => l_pty_acct_csr.NEW_CONTEXT ,
6373 p_OLD_ATTRIBUTE1 => l_pty_acct_csr.old_attribute1 ,
6374 p_NEW_ATTRIBUTE1 => l_pty_acct_csr.NEW_ATTRIBUTE1 ,
6375 p_OLD_ATTRIBUTE2 => l_pty_acct_csr.old_attribute2 ,
6376 p_NEW_ATTRIBUTE2 => l_pty_acct_csr.NEW_ATTRIBUTE2 ,
6377 p_OLD_ATTRIBUTE3 => l_pty_acct_csr.old_attribute3 ,
6378 p_NEW_ATTRIBUTE3 => l_pty_acct_csr.NEW_ATTRIBUTE3 ,
6379 p_OLD_ATTRIBUTE4 => l_pty_acct_csr.old_attribute4 ,
6380 p_NEW_ATTRIBUTE4 => l_pty_acct_csr.NEW_ATTRIBUTE4 ,
6381 p_OLD_ATTRIBUTE5 => l_pty_acct_csr.old_attribute5 ,
6382 p_NEW_ATTRIBUTE5 => l_pty_acct_csr.NEW_ATTRIBUTE5 ,
6383 p_OLD_ATTRIBUTE6 => l_pty_acct_csr.old_attribute6 ,
6384 p_NEW_ATTRIBUTE6 => l_pty_acct_csr.NEW_ATTRIBUTE6 ,
6385 p_OLD_ATTRIBUTE7 => l_pty_acct_csr.old_attribute7 ,
6386 p_NEW_ATTRIBUTE7 => l_pty_acct_csr.NEW_ATTRIBUTE7 ,
6387 p_OLD_ATTRIBUTE8 => l_pty_acct_csr.old_attribute8 ,
6388 p_NEW_ATTRIBUTE8 => l_pty_acct_csr.NEW_ATTRIBUTE8 ,
6389 p_OLD_ATTRIBUTE9 => l_pty_acct_csr.old_attribute9 ,
6390 p_NEW_ATTRIBUTE9 => l_pty_acct_csr.NEW_ATTRIBUTE9 ,
6391 p_OLD_ATTRIBUTE10 => l_pty_acct_csr.old_attribute10 ,
6392 p_NEW_ATTRIBUTE10 => l_pty_acct_csr.NEW_ATTRIBUTE10 ,
6393 p_OLD_ATTRIBUTE11 => l_pty_acct_csr.old_attribute11 ,
6394 p_NEW_ATTRIBUTE11 => l_pty_acct_csr.NEW_ATTRIBUTE11 ,
6395 p_OLD_ATTRIBUTE12 => l_pty_acct_csr.old_attribute12 ,
6396 p_NEW_ATTRIBUTE12 => l_pty_acct_csr.NEW_ATTRIBUTE12 ,
6397 p_OLD_ATTRIBUTE13 => l_pty_acct_csr.old_attribute13 ,
6398 p_NEW_ATTRIBUTE13 => l_pty_acct_csr.NEW_ATTRIBUTE13 ,
6399 p_OLD_ATTRIBUTE14 => l_pty_acct_csr.old_attribute14 ,
6400 p_NEW_ATTRIBUTE14 => l_pty_acct_csr.NEW_ATTRIBUTE14 ,
6401 p_OLD_ATTRIBUTE15 => l_pty_acct_csr.old_attribute15 ,
6402 p_NEW_ATTRIBUTE15 => l_pty_acct_csr.NEW_ATTRIBUTE15 ,
6403 p_FULL_DUMP_FLAG => fnd_api.g_miss_char ,
6404 p_CREATED_BY => FND_API.G_MISS_NUM ,
6405 p_CREATION_DATE => FND_API.G_MISS_DATE ,
6406 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
6407 p_LAST_UPDATE_DATE => SYSDATE ,
6408 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
6409 p_OBJECT_VERSION_NUMBER => fnd_api.g_miss_num ,
6410 p_OLD_BILL_TO_ADDRESS => l_pty_acct_csr.old_bill_to_address ,
6411 p_NEW_BILL_TO_ADDRESS => l_pty_acct_csr.NEW_BILL_TO_ADDRESS ,
6412 p_OLD_SHIP_TO_ADDRESS => l_pty_acct_csr.old_ship_to_address ,
6413 p_NEW_SHIP_TO_ADDRESS => l_pty_acct_csr.NEW_SHIP_TO_ADDRESS,
6414 p_OLD_INSTANCE_PARTY_ID => l_pty_acct_csr.old_instance_party_id ,
6415 p_NEW_INSTANCE_PARTY_ID => l_pty_acct_csr.new_instance_party_id );
6416
6417 END IF;
6418 EXCEPTION
6419
6420 WHEN NO_DATA_FOUND THEN
6421 IF (l_mod_value = 0) THEN
6422 -- If the mod value is 0 then dump all the columns both changed and unchanged
6423 -- changed columns have old and new values while the unchanged values have old and new values
6424 -- exactly same
6425
6426 IF (p_party_account_rec.instance_party_id = FND_API.G_MISS_NUM) THEN
6427 l_temp_party_account_rec.instance_party_id := l_curr_party_acct_rec.instance_party_id ;
6428 END IF;
6429 IF (p_party_account_rec.party_account_id = FND_API.G_MISS_NUM) THEN
6430 l_temp_party_account_rec.party_account_id := l_curr_party_acct_rec.party_account_id ;
6431 END IF;
6432 IF (p_party_account_rec.relationship_type_code = FND_API.G_MISS_CHAR) THEN
6433 l_temp_party_account_rec.relationship_type_code := l_curr_party_acct_rec.relationship_type_code ;
6434 END IF;
6435 IF (p_party_account_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
6436 l_temp_party_account_rec.ACTIVE_START_DATE := l_curr_party_acct_rec.ACTIVE_START_DATE ;
6437 END IF;
6438 IF --(p_party_account_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE)
6439 (l_acct_end_date = FND_API.G_MISS_DATE)
6440 THEN
6441 l_temp_party_account_rec.ACTIVE_END_DATE := l_curr_party_acct_rec.ACTIVE_END_DATE ;
6442 END IF;
6443 IF (p_party_account_rec.context = FND_API.G_MISS_CHAR) THEN
6444 l_temp_party_account_rec.CONTEXT := l_curr_party_acct_rec.CONTEXT ;
6445 END IF;
6446 IF (p_party_account_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
6447 l_temp_party_account_rec.ATTRIBUTE1 := l_curr_party_acct_rec.ATTRIBUTE1 ;
6448 END IF;
6449 IF (p_party_account_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
6450 l_temp_party_account_rec.ATTRIBUTE2 := l_curr_party_acct_rec.ATTRIBUTE2 ;
6451 END IF;
6452 IF (p_party_account_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
6453 l_temp_party_account_rec.ATTRIBUTE3 := l_curr_party_acct_rec.ATTRIBUTE3 ;
6454 END IF;
6455 IF (p_party_account_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
6456 l_temp_party_account_rec.ATTRIBUTE4 := l_curr_party_acct_rec.ATTRIBUTE4 ;
6457 END IF;
6458 IF (p_party_account_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
6459 l_temp_party_account_rec.ATTRIBUTE5 := l_curr_party_acct_rec.ATTRIBUTE5 ;
6460 END IF;
6461 IF (p_party_account_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
6462 l_temp_party_account_rec.ATTRIBUTE6 := l_curr_party_acct_rec.ATTRIBUTE6 ;
6463 END IF;
6464 IF (p_party_account_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
6465 l_temp_party_account_rec.ATTRIBUTE7 := l_curr_party_acct_rec.ATTRIBUTE7 ;
6466 END IF;
6467 IF (p_party_account_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
6468 l_temp_party_account_rec.ATTRIBUTE8 := l_curr_party_acct_rec.ATTRIBUTE8 ;
6469 END IF;
6470 IF (p_party_account_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
6471 l_temp_party_account_rec.ATTRIBUTE9 := l_curr_party_acct_rec.ATTRIBUTE9 ;
6472 END IF;
6473 IF (p_party_account_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
6474 l_temp_party_account_rec.ATTRIBUTE10 := l_curr_party_acct_rec.ATTRIBUTE10 ;
6475 END IF;
6476 IF (p_party_account_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
6477 l_temp_party_account_rec.ATTRIBUTE11 := l_curr_party_acct_rec.ATTRIBUTE11 ;
6478 END IF;
6479 IF (p_party_account_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
6480 l_temp_party_account_rec.ATTRIBUTE12 := l_curr_party_acct_rec.ATTRIBUTE12 ;
6481 END IF;
6482 IF (p_party_account_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
6483 l_temp_party_account_rec.ATTRIBUTE13 := l_curr_party_acct_rec.ATTRIBUTE13 ;
6484 END IF;
6485 IF (p_party_account_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
6486 l_temp_party_account_rec.ATTRIBUTE14 := l_curr_party_acct_rec.ATTRIBUTE14 ;
6487 END IF;
6488 IF (p_party_account_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
6489 l_temp_party_account_rec.ATTRIBUTE15 := l_curr_party_acct_rec.ATTRIBUTE15 ;
6490 END IF;
6491
6492 -- Call table handlers to insert into csi_i_parties_h table
6493 CSI_IP_ACCOUNTS_H_PKG.Insert_Row
6494 (
6495 px_IP_ACCOUNT_HISTORY_ID => l_ip_account_history_id ,
6496 p_IP_ACCOUNT_ID => p_party_account_rec.ip_account_id,
6497 p_TRANSACTION_ID => p_txn_rec.transaction_id ,
6498 p_OLD_PARTY_ACCOUNT_ID => l_curr_party_acct_rec.party_account_id,
6499 p_NEW_PARTY_ACCOUNT_ID => l_temp_party_account_rec.PARTY_ACCOUNT_ID,
6500 p_OLD_RELATIONSHIP_TYPE_CODE => l_curr_party_acct_rec.RELATIONSHIP_TYPE_CODE,
6501 p_NEW_RELATIONSHIP_TYPE_CODE => l_temp_party_account_rec.RELATIONSHIP_TYPE_CODE,
6502 p_OLD_ACTIVE_START_DATE => l_curr_party_acct_rec.ACTIVE_START_DATE,
6503 p_NEW_ACTIVE_START_DATE => l_temp_party_account_rec.ACTIVE_START_DATE,
6504 p_OLD_ACTIVE_END_DATE => l_curr_party_acct_rec.ACTIVE_END_DATE,
6505 p_NEW_ACTIVE_END_DATE => l_temp_party_account_rec.ACTIVE_END_DATE,
6506 p_OLD_CONTEXT => l_curr_party_acct_rec.CONTEXT,
6507 p_NEW_CONTEXT => l_temp_party_account_rec.CONTEXT ,
6508 p_OLD_ATTRIBUTE1 => l_curr_party_acct_rec.ATTRIBUTE1,
6509 p_NEW_ATTRIBUTE1 => l_temp_party_account_rec.ATTRIBUTE1 ,
6510 p_OLD_ATTRIBUTE2 => l_curr_party_acct_rec.ATTRIBUTE2,
6511 p_NEW_ATTRIBUTE2 => l_temp_party_account_rec.ATTRIBUTE2 ,
6512 p_OLD_ATTRIBUTE3 => l_curr_party_acct_rec.ATTRIBUTE3,
6513 p_NEW_ATTRIBUTE3 => l_temp_party_account_rec.ATTRIBUTE3 ,
6514 p_OLD_ATTRIBUTE4 => l_curr_party_acct_rec.ATTRIBUTE4,
6515 p_NEW_ATTRIBUTE4 => l_temp_party_account_rec.ATTRIBUTE4 ,
6516 p_OLD_ATTRIBUTE5 => l_curr_party_acct_rec.ATTRIBUTE5,
6517 p_NEW_ATTRIBUTE5 => l_temp_party_account_rec.ATTRIBUTE5 ,
6518 p_OLD_ATTRIBUTE6 => l_curr_party_acct_rec.ATTRIBUTE6,
6519 p_NEW_ATTRIBUTE6 => l_temp_party_account_rec.ATTRIBUTE6 ,
6520 p_OLD_ATTRIBUTE7 => l_curr_party_acct_rec.ATTRIBUTE7,
6521 p_NEW_ATTRIBUTE7 => l_temp_party_account_rec.ATTRIBUTE7 ,
6522 p_OLD_ATTRIBUTE8 => l_curr_party_acct_rec.ATTRIBUTE8,
6523 p_NEW_ATTRIBUTE8 => l_temp_party_account_rec.ATTRIBUTE8 ,
6524 p_OLD_ATTRIBUTE9 => l_curr_party_acct_rec.ATTRIBUTE9,
6525 p_NEW_ATTRIBUTE9 => l_temp_party_account_rec.ATTRIBUTE9 ,
6526 p_OLD_ATTRIBUTE10 => l_curr_party_acct_rec.ATTRIBUTE10,
6527 p_NEW_ATTRIBUTE10 => l_temp_party_account_rec.ATTRIBUTE10,
6528 p_OLD_ATTRIBUTE11 => l_curr_party_acct_rec.ATTRIBUTE11,
6529 p_NEW_ATTRIBUTE11 => l_temp_party_account_rec.ATTRIBUTE11,
6530 p_OLD_ATTRIBUTE12 => l_curr_party_acct_rec.ATTRIBUTE12,
6531 p_NEW_ATTRIBUTE12 => l_temp_party_account_rec.ATTRIBUTE12,
6532 p_OLD_ATTRIBUTE13 => l_curr_party_acct_rec.ATTRIBUTE13,
6533 p_NEW_ATTRIBUTE13 => l_temp_party_account_rec.ATTRIBUTE13,
6534 p_OLD_ATTRIBUTE14 => l_curr_party_acct_rec.ATTRIBUTE14,
6535 p_NEW_ATTRIBUTE14 => l_temp_party_account_rec.ATTRIBUTE14,
6536 p_OLD_ATTRIBUTE15 => l_curr_party_acct_rec.ATTRIBUTE15,
6537 p_NEW_ATTRIBUTE15 => l_temp_party_account_rec.ATTRIBUTE15,
6538 p_FULL_DUMP_FLAG => 'Y' ,
6539 p_CREATED_BY => FND_GLOBAL.USER_ID ,
6540 p_CREATION_DATE => SYSDATE ,
6541 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
6542 p_LAST_UPDATE_DATE => SYSDATE ,
6543 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
6544 p_OBJECT_VERSION_NUMBER => 1 ,
6545 p_OLD_BILL_TO_ADDRESS => l_curr_party_acct_rec.BILL_TO_ADDRESS,
6546 p_NEW_BILL_TO_ADDRESS => l_temp_party_account_rec.BILL_TO_ADDRESS,
6547 p_OLD_SHIP_TO_ADDRESS => l_curr_party_acct_rec.SHIP_TO_ADDRESS ,
6548 p_NEW_SHIP_TO_ADDRESS => l_temp_party_account_rec.SHIP_TO_ADDRESS,
6549 p_OLD_INSTANCE_PARTY_ID => l_curr_party_acct_rec.INSTANCE_PARTY_ID ,
6550 p_NEW_INSTANCE_PARTY_ID => l_temp_party_account_rec.INSTANCE_PARTY_ID);
6551
6552 ELSE
6553 -- If the mod value is not equal to zero then dump only the changed columns
6554 -- while the unchanged values have old and new values as null
6555 IF (p_party_account_rec.party_account_id = fnd_api.g_miss_num) OR
6556 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
6557 l_account_hist_rec.old_party_account_id := NULL;
6558 l_account_hist_rec.new_party_account_id := NULL;
6559 ELSIF
6560 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
6561 l_account_hist_rec.old_party_account_id := l_curr_party_acct_rec.party_account_id ;
6562 l_account_hist_rec.new_party_account_id := p_party_account_rec.party_account_id ;
6563 END IF;
6564 --
6565 IF (p_party_account_rec.relationship_type_code = fnd_api.g_miss_char) OR
6566 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
6567 l_account_hist_rec.old_relationship_type_code := NULL;
6568 l_account_hist_rec.new_relationship_type_code := NULL;
6569 ELSIF
6570 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
6571 l_account_hist_rec.old_relationship_type_code := l_curr_party_acct_rec.relationship_type_code ;
6572 l_account_hist_rec.new_relationship_type_code := p_party_account_rec.relationship_type_code ;
6573 END IF;
6574 --
6575 IF (p_party_account_rec.bill_to_address = fnd_api.g_miss_num) OR
6576 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
6577 l_account_hist_rec.old_bill_to_address := NULL;
6578 l_account_hist_rec.new_bill_to_address := NULL;
6579 ELSIF
6580 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
6581 l_account_hist_rec.old_bill_to_address := l_curr_party_acct_rec.bill_to_address ;
6582 l_account_hist_rec.new_bill_to_address := p_party_account_rec.bill_to_address ;
6583 END IF;
6584 --
6585 IF (p_party_account_rec.ship_to_address = fnd_api.g_miss_num) OR
6586 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
6587 l_account_hist_rec.old_ship_to_address := NULL;
6588 l_account_hist_rec.new_ship_to_address := NULL;
6589 ELSIF
6590 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
6591 l_account_hist_rec.old_ship_to_address := l_curr_party_acct_rec.ship_to_address ;
6592 l_account_hist_rec.new_ship_to_address := p_party_account_rec.ship_to_address ;
6593 END IF;
6594 --
6595 IF (p_party_account_rec.active_start_date = fnd_api.g_miss_date) OR
6596 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
6597 l_account_hist_rec.old_active_start_date := NULL;
6598 l_account_hist_rec.new_active_start_date := NULL;
6599 ELSIF
6600 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
6601 l_account_hist_rec.old_active_start_date := l_curr_party_acct_rec.active_start_date ;
6602 l_account_hist_rec.new_active_start_date := p_party_account_rec.active_start_date ;
6603 END IF;
6604 --
6605 IF --(p_party_account_rec.active_end_date = fnd_api.g_miss_date) OR
6606 (l_acct_end_date= fnd_api.g_miss_date) OR
6607 --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
6608 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
6609 l_account_hist_rec.old_active_end_date := NULL;
6610 l_account_hist_rec.new_active_end_date := NULL;
6611 ELSIF
6612 --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
6613 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
6614 l_account_hist_rec.old_active_end_date := l_curr_party_acct_rec.active_end_date ;
6615 l_account_hist_rec.new_active_end_date := l_acct_end_date; --p_party_account_rec.active_end_date ;
6616 END IF;
6617 --
6618 IF (p_party_account_rec.context = fnd_api.g_miss_char) OR
6619 NVL(p_party_account_rec.context, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.context, fnd_api.g_miss_char) THEN
6620 l_account_hist_rec.old_context := NULL;
6621 l_account_hist_rec.new_context := NULL;
6622 ELSIF
6623 NVL(l_curr_party_acct_rec.context,fnd_api.g_miss_char) <> NVL(p_party_account_rec.context,fnd_api.g_miss_char) THEN
6624 l_account_hist_rec.old_context := l_curr_party_acct_rec.context ;
6625 l_account_hist_rec.new_context := p_party_account_rec.context ;
6626 END IF;
6627 --
6628 IF (p_party_account_rec.attribute1 = fnd_api.g_miss_char) OR
6629 NVL(p_party_account_rec.attribute1, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute1, fnd_api.g_miss_char) THEN
6630 l_account_hist_rec.old_attribute1 := NULL;
6631 l_account_hist_rec.new_attribute1 := NULL;
6632 ELSIF
6633 NVL(l_curr_party_acct_rec.attribute1,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute1,fnd_api.g_miss_char) THEN
6634 l_account_hist_rec.old_attribute1 := l_curr_party_acct_rec.attribute1 ;
6635 l_account_hist_rec.new_attribute1 := p_party_account_rec.attribute1 ;
6636 END IF;
6637 --
6638 IF (p_party_account_rec.attribute2 = fnd_api.g_miss_char) OR
6639 NVL(p_party_account_rec.attribute2, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute2, fnd_api.g_miss_char) THEN
6640 l_account_hist_rec.old_attribute2 := NULL;
6641 l_account_hist_rec.new_attribute2 := NULL;
6642 ELSIF
6643 NVL(l_curr_party_acct_rec.attribute2,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute2,fnd_api.g_miss_char) THEN
6644 l_account_hist_rec.old_attribute2 := l_curr_party_acct_rec.attribute2 ;
6645 l_account_hist_rec.new_attribute2 := p_party_account_rec.attribute2 ;
6646 END IF;
6647 --
6648 IF (p_party_account_rec.attribute3 = fnd_api.g_miss_char) OR
6649 NVL(p_party_account_rec.attribute3, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute3, fnd_api.g_miss_char) THEN
6650 l_account_hist_rec.old_attribute3 := NULL;
6651 l_account_hist_rec.new_attribute3 := NULL;
6652 ELSIF
6653 NVL(l_curr_party_acct_rec.attribute3,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute3,fnd_api.g_miss_char) THEN
6654 l_account_hist_rec.old_attribute3 := l_curr_party_acct_rec.attribute3 ;
6655 l_account_hist_rec.new_attribute3 := p_party_account_rec.attribute3 ;
6656 END IF;
6657 --
6658 IF (p_party_account_rec.attribute4 = fnd_api.g_miss_char) OR
6659 NVL(p_party_account_rec.attribute4, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute4, fnd_api.g_miss_char) THEN
6660 l_account_hist_rec.old_attribute4 := NULL;
6661 l_account_hist_rec.new_attribute4 := NULL;
6662 ELSIF
6663 NVL(l_curr_party_acct_rec.attribute4,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute4,fnd_api.g_miss_char) THEN
6664 l_account_hist_rec.old_attribute4 := l_curr_party_acct_rec.attribute4 ;
6665 l_account_hist_rec.new_attribute4 := p_party_account_rec.attribute4 ;
6666 END IF;
6667 --
6668 IF (p_party_account_rec.attribute5 = fnd_api.g_miss_char) OR
6669 NVL(p_party_account_rec.attribute5, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute5, fnd_api.g_miss_char) THEN
6670 l_account_hist_rec.old_attribute5 := NULL;
6671 l_account_hist_rec.new_attribute5 := NULL;
6672 ELSIF
6673 NVL(l_curr_party_acct_rec.attribute5,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute5,fnd_api.g_miss_char) THEN
6674 l_account_hist_rec.old_attribute5 := l_curr_party_acct_rec.attribute5 ;
6675 l_account_hist_rec.new_attribute5 := p_party_account_rec.attribute5 ;
6676 END IF;
6677 --
6678 IF (p_party_account_rec.attribute6 = fnd_api.g_miss_char) OR
6679 NVL(p_party_account_rec.attribute6, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute6, fnd_api.g_miss_char) THEN
6680 l_account_hist_rec.old_attribute6 := NULL;
6681 l_account_hist_rec.new_attribute6 := NULL;
6682 ELSIF
6683 NVL(l_curr_party_acct_rec.attribute6,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute6,fnd_api.g_miss_char) THEN
6684 l_account_hist_rec.old_attribute6 := l_curr_party_acct_rec.attribute6 ;
6685 l_account_hist_rec.new_attribute6 := p_party_account_rec.attribute6 ;
6686 END IF;
6687 --
6688 IF (p_party_account_rec.attribute7 = fnd_api.g_miss_char) OR
6689 NVL(p_party_account_rec.attribute7, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute7, fnd_api.g_miss_char) THEN
6690 l_account_hist_rec.old_attribute7 := NULL;
6691 l_account_hist_rec.new_attribute7 := NULL;
6692 ELSIF
6693 NVL(l_curr_party_acct_rec.attribute7,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute7,fnd_api.g_miss_char) THEN
6694 l_account_hist_rec.old_attribute7 := l_curr_party_acct_rec.attribute7 ;
6695 l_account_hist_rec.new_attribute7 := p_party_account_rec.attribute7 ;
6696 END IF;
6697 --
6698 IF (p_party_account_rec.attribute8 = fnd_api.g_miss_char) OR
6699 NVL(p_party_account_rec.attribute8, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute8, fnd_api.g_miss_char) THEN
6700 l_account_hist_rec.old_attribute8 := NULL;
6701 l_account_hist_rec.new_attribute8 := NULL;
6702 ELSIF
6703 NVL(l_curr_party_acct_rec.attribute8,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute8,fnd_api.g_miss_char) THEN
6704 l_account_hist_rec.old_attribute8 := l_curr_party_acct_rec.attribute8 ;
6705 l_account_hist_rec.new_attribute8 := p_party_account_rec.attribute8 ;
6706 END IF;
6707 --
6708 IF (p_party_account_rec.attribute9 = fnd_api.g_miss_char) OR
6709 NVL(p_party_account_rec.attribute9, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute9, fnd_api.g_miss_char) THEN
6710 l_account_hist_rec.old_attribute9 := NULL;
6711 l_account_hist_rec.new_attribute9 := NULL;
6712 ELSIF
6713 NVL(l_curr_party_acct_rec.attribute9,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute9,fnd_api.g_miss_char) THEN
6714 l_account_hist_rec.old_attribute9 := l_curr_party_acct_rec.attribute9 ;
6715 l_account_hist_rec.new_attribute9 := p_party_account_rec.attribute9 ;
6716 END IF;
6717 --
6718 IF (p_party_account_rec.attribute10 = fnd_api.g_miss_char) OR
6719 NVL(p_party_account_rec.attribute10, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute10, fnd_api.g_miss_char) THEN
6720 l_account_hist_rec.old_attribute10 := NULL;
6721 l_account_hist_rec.new_attribute10 := NULL;
6722 ELSIF
6723 NVL(l_curr_party_acct_rec.attribute10,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute10,fnd_api.g_miss_char) THEN
6724 l_account_hist_rec.old_attribute10 := l_curr_party_acct_rec.attribute10 ;
6725 l_account_hist_rec.new_attribute10 := p_party_account_rec.attribute10 ;
6726 END IF;
6727 --
6728 IF (p_party_account_rec.attribute11 = fnd_api.g_miss_char) OR
6729 NVL(p_party_account_rec.attribute11, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute11, fnd_api.g_miss_char) THEN
6730 l_account_hist_rec.old_attribute11 := NULL;
6731 l_account_hist_rec.new_attribute11 := NULL;
6732 ELSIF
6733 NVL(l_curr_party_acct_rec.attribute11,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute11,fnd_api.g_miss_char) THEN
6734 l_account_hist_rec.old_attribute11 := l_curr_party_acct_rec.attribute11 ;
6735 l_account_hist_rec.new_attribute11 := p_party_account_rec.attribute11 ;
6736 END IF;
6737 --
6738 IF (p_party_account_rec.attribute12 = fnd_api.g_miss_char) OR
6739 NVL(p_party_account_rec.attribute12, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute12, fnd_api.g_miss_char) THEN
6740 l_account_hist_rec.old_attribute12 := NULL;
6741 l_account_hist_rec.new_attribute12 := NULL;
6742 ELSIF
6743 NVL(l_curr_party_acct_rec.attribute12,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute12,fnd_api.g_miss_char) THEN
6744 l_account_hist_rec.old_attribute12 := l_curr_party_acct_rec.attribute12 ;
6745 l_account_hist_rec.new_attribute12 := p_party_account_rec.attribute12 ;
6746 END IF;
6747 --
6748 IF (p_party_account_rec.attribute13 = fnd_api.g_miss_char) OR
6749 NVL(p_party_account_rec.attribute13, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute13, fnd_api.g_miss_char) THEN
6750 l_account_hist_rec.old_attribute13 := NULL;
6751 l_account_hist_rec.new_attribute13 := NULL;
6752 ELSIF
6753 NVL(l_curr_party_acct_rec.attribute13,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute13,fnd_api.g_miss_char) THEN
6754 l_account_hist_rec.old_attribute13 := l_curr_party_acct_rec.attribute13 ;
6755 l_account_hist_rec.new_attribute13 := p_party_account_rec.attribute13 ;
6756 END IF;
6757 --
6758 IF (p_party_account_rec.attribute14 = fnd_api.g_miss_char) OR
6759 NVL(p_party_account_rec.attribute14, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute14, fnd_api.g_miss_char) THEN
6760 l_account_hist_rec.old_attribute14 := NULL;
6761 l_account_hist_rec.new_attribute14 := NULL;
6762 ELSIF
6763 NVL(l_curr_party_acct_rec.attribute14,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute14,fnd_api.g_miss_char) THEN
6764 l_account_hist_rec.old_attribute14 := l_curr_party_acct_rec.attribute14 ;
6765 l_account_hist_rec.new_attribute14 := p_party_account_rec.attribute14 ;
6766 END IF;
6767 --
6768 IF (p_party_account_rec.attribute15 = fnd_api.g_miss_char) OR
6769 NVL(p_party_account_rec.attribute15, fnd_api.g_miss_char) = NVL(l_curr_party_acct_rec.attribute15, fnd_api.g_miss_char) THEN
6770 l_account_hist_rec.old_attribute15 := NULL;
6771 l_account_hist_rec.new_attribute15 := NULL;
6772 ELSIF
6773 NVL(l_curr_party_acct_rec.attribute15,fnd_api.g_miss_char) <> NVL(p_party_account_rec.attribute15,fnd_api.g_miss_char) THEN
6774 l_account_hist_rec.old_attribute15 := l_curr_party_acct_rec.attribute15 ;
6775 l_account_hist_rec.new_attribute15 := p_party_account_rec.attribute15 ;
6776 END IF;
6777 -- Added
6778 IF (p_party_account_rec.instance_party_id = fnd_api.g_miss_num) OR
6779 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
6780 l_account_hist_rec.old_instance_party_id := NULL;
6781 l_account_hist_rec.new_instance_party_id := NULL;
6782 ELSIF
6783 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
6784 l_account_hist_rec.old_instance_party_id := l_curr_party_acct_rec.instance_party_id ;
6785 l_account_hist_rec.new_instance_party_id := p_party_account_rec.instance_party_id ;
6786 END IF;
6787 -- End addition
6788 -- Call table handlers to insert into csi_i_parties_h table
6789 CSI_IP_ACCOUNTS_H_PKG.Insert_Row
6790 (
6791 px_IP_ACCOUNT_HISTORY_ID => l_ip_account_history_id ,
6792 p_IP_ACCOUNT_ID => p_party_account_rec.IP_ACCOUNT_ID ,
6793 p_TRANSACTION_ID => p_txn_rec.TRANSACTION_ID ,
6794 p_OLD_PARTY_ACCOUNT_ID => l_account_hist_rec.OLD_PARTY_ACCOUNT_ID ,
6795 p_NEW_PARTY_ACCOUNT_ID => l_account_hist_rec.NEW_PARTY_ACCOUNT_ID ,
6796 p_OLD_RELATIONSHIP_TYPE_CODE => l_account_hist_rec.OLD_RELATIONSHIP_TYPE_CODE ,
6797 p_NEW_RELATIONSHIP_TYPE_CODE => l_account_hist_rec.NEW_RELATIONSHIP_TYPE_CODE ,
6798 p_OLD_ACTIVE_START_DATE => l_account_hist_rec.OLD_ACTIVE_START_DATE ,
6799 p_NEW_ACTIVE_START_DATE => l_account_hist_rec.NEW_ACTIVE_START_DATE ,
6800 p_OLD_ACTIVE_END_DATE => l_account_hist_rec.OLD_ACTIVE_END_DATE ,
6801 p_NEW_ACTIVE_END_DATE => l_account_hist_rec.NEW_ACTIVE_END_DATE ,
6802 p_OLD_CONTEXT => l_account_hist_rec.OLD_CONTEXT ,
6803 p_NEW_CONTEXT => l_account_hist_rec.NEW_CONTEXT ,
6804 p_OLD_ATTRIBUTE1 => l_account_hist_rec.OLD_ATTRIBUTE1 ,
6805 p_NEW_ATTRIBUTE1 => l_account_hist_rec.NEW_ATTRIBUTE1 ,
6806 p_OLD_ATTRIBUTE2 => l_account_hist_rec.OLD_ATTRIBUTE2 ,
6807 p_NEW_ATTRIBUTE2 => l_account_hist_rec.NEW_ATTRIBUTE2 ,
6808 p_OLD_ATTRIBUTE3 => l_account_hist_rec.OLD_ATTRIBUTE3 ,
6809 p_NEW_ATTRIBUTE3 => l_account_hist_rec.NEW_ATTRIBUTE3 ,
6810 p_OLD_ATTRIBUTE4 => l_account_hist_rec.OLD_ATTRIBUTE4 ,
6811 p_NEW_ATTRIBUTE4 => l_account_hist_rec.NEW_ATTRIBUTE4 ,
6812 p_OLD_ATTRIBUTE5 => l_account_hist_rec.OLD_ATTRIBUTE5 ,
6813 p_NEW_ATTRIBUTE5 => l_account_hist_rec.NEW_ATTRIBUTE5 ,
6814 p_OLD_ATTRIBUTE6 => l_account_hist_rec.OLD_ATTRIBUTE6 ,
6815 p_NEW_ATTRIBUTE6 => l_account_hist_rec.NEW_ATTRIBUTE6 ,
6816 p_OLD_ATTRIBUTE7 => l_account_hist_rec.OLD_ATTRIBUTE7 ,
6817 p_NEW_ATTRIBUTE7 => l_account_hist_rec.NEW_ATTRIBUTE7 ,
6818 p_OLD_ATTRIBUTE8 => l_account_hist_rec.OLD_ATTRIBUTE8 ,
6819 p_NEW_ATTRIBUTE8 => l_account_hist_rec.NEW_ATTRIBUTE8 ,
6820 p_OLD_ATTRIBUTE9 => l_account_hist_rec.OLD_ATTRIBUTE9 ,
6821 p_NEW_ATTRIBUTE9 => l_account_hist_rec.NEW_ATTRIBUTE9 ,
6822 p_OLD_ATTRIBUTE10 => l_account_hist_rec.OLD_ATTRIBUTE10 ,
6823 p_NEW_ATTRIBUTE10 => l_account_hist_rec.NEW_ATTRIBUTE10 ,
6824 p_OLD_ATTRIBUTE11 => l_account_hist_rec.OLD_ATTRIBUTE11 ,
6825 p_NEW_ATTRIBUTE11 => l_account_hist_rec.NEW_ATTRIBUTE11 ,
6826 p_OLD_ATTRIBUTE12 => l_account_hist_rec.OLD_ATTRIBUTE12 ,
6827 p_NEW_ATTRIBUTE12 => l_account_hist_rec.NEW_ATTRIBUTE12 ,
6828 p_OLD_ATTRIBUTE13 => l_account_hist_rec.OLD_ATTRIBUTE13 ,
6829 p_NEW_ATTRIBUTE13 => l_account_hist_rec.NEW_ATTRIBUTE13 ,
6830 p_OLD_ATTRIBUTE14 => l_account_hist_rec.OLD_ATTRIBUTE14 ,
6831 p_NEW_ATTRIBUTE14 => l_account_hist_rec.NEW_ATTRIBUTE14 ,
6832 p_OLD_ATTRIBUTE15 => l_account_hist_rec.OLD_ATTRIBUTE15 ,
6833 p_NEW_ATTRIBUTE15 => l_account_hist_rec.NEW_ATTRIBUTE15 ,
6834 p_FULL_DUMP_FLAG => 'N' ,
6835 p_CREATED_BY => FND_GLOBAL.USER_ID ,
6836 p_CREATION_DATE => SYSDATE ,
6837 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID ,
6838 p_LAST_UPDATE_DATE => SYSDATE ,
6839 p_LAST_UPDATE_LOGIN => FND_GLOBAL.LOGIN_ID ,
6840 p_OBJECT_VERSION_NUMBER => 1 ,
6841 p_OLD_BILL_TO_ADDRESS => l_account_hist_rec.OLD_BILL_TO_ADDRESS ,
6842 p_NEW_BILL_TO_ADDRESS => l_account_hist_rec.NEW_BILL_TO_ADDRESS ,
6843 p_OLD_SHIP_TO_ADDRESS => l_account_hist_rec.OLD_SHIP_TO_ADDRESS ,
6844 p_NEW_SHIP_TO_ADDRESS => l_account_hist_rec.NEW_SHIP_TO_ADDRESS ,
6845 p_OLD_INSTANCE_PARTY_ID => l_account_hist_rec.OLD_INSTANCE_PARTY_ID ,
6846 p_NEW_INSTANCE_PARTY_ID => l_account_hist_rec.NEW_INSTANCE_PARTY_ID );
6847
6848 END IF;
6849 END;
6850 -- End of modification for Bug#2547034 on 09/20/02 - rtalluri
6851
6852 -- Call Contracts
6853 -- Commented by sguthiva for bug 2307804
6854 -- End commentation by sguthiva for bug 2307804
6855 -- Added by sguthiva for bug 2307804
6856 IF p_party_account_rec.relationship_type_code = 'OWNER'
6857 THEN
6858 -- The following code has been written to make sure
6859 -- before calling contracts we pass a valid vld_organization_id
6860 IF p_party_account_rec.vld_organization_id IS NULL OR
6861 p_party_account_rec.vld_organization_id = fnd_api.g_miss_num
6862 THEN
6863 BEGIN
6864 SELECT last_vld_organization_id
6865 INTO l_last_vld_org
6866 FROM csi_item_instances
6867 WHERE instance_id = l_party_rec.instance_id;
6868 EXCEPTION
6869 WHEN OTHERS THEN
6870 NULL;
6871 END;
6872 ELSE
6873 l_last_vld_org := p_party_account_rec.vld_organization_id;
6874 END IF;
6875 --
6876 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
6877 csi_gen_utility_pvt.populate_install_param_rec;
6878 END IF;
6879 --
6880 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
6881 --
6882 IF l_internal_party_id IS NULL THEN
6883 FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
6884 FND_MSG_PUB.ADD;
6885 RAISE FND_API.G_EXC_ERROR;
6886 END IF;
6887 -- Commenting as we are not using this code
6888 /*
6889 l_old_party_id := null;
6890 l_new_party_id := null;
6891 Begin
6892 select old_party_id,new_party_id
6893 into l_old_party_id,l_new_party_id
6894 from CSI_I_PARTIES_H
6895 where instance_party_id = l_party_rec.instance_party_id
6896 and transaction_id = p_txn_rec.transaction_id;
6897 Exception
6898 when no_data_found then
6899 l_old_party_id := null;
6900 l_new_party_id := null;
6901 End;
6902 --
6903 */
6904 IF l_old_pty_acct_id IS NOT NULL AND
6905 l_party_rec.Party_id <> l_internal_party_id -- changed from p_party_account_rec.party_account_id
6906 AND p_party_account_rec.party_account_id <> l_old_pty_acct_id
6907 AND p_party_account_rec.party_account_id <> fnd_api.g_miss_num
6908 THEN
6909 l_transaction_type := 'TRF';
6910 l_new_pty_acct_id := p_party_account_rec.party_account_id;
6911 ELSIF l_old_pty_acct_id IS NULL AND
6912 l_party_rec.party_id <> l_internal_party_id -- changed from p_party_account_rec.party_account_id
6913 AND p_party_account_rec.party_account_id IS NOT NULL
6914 AND p_party_account_rec.party_account_id <> fnd_api.g_miss_num
6915 THEN
6916 l_transaction_type := 'NEW';
6917 l_new_pty_acct_id := NULL;
6918 /* ELSIF p_party_account_rec.party_account_id = l_internal_party_id
6919 OR ( l_old_pty_acct_id <> l_internal_party_id
6920 AND p_party_account_rec.active_end_date <= sysdate
6921 AND p_party_account_rec.active_end_date <> fnd_api.g_miss_date )
6922 THEN */
6923 -- srramakr commneted the above code and checked for old and new party ID
6924 ELSIF /*l_old_party_id IS NOT NULL AND
6925 l_new_party_id IS NOT NULL AND
6926 l_old_party_id <> l_internal_party_id AND
6927 l_new_party_id = l_internal_party_id */
6928 p_party_account_rec.active_end_date IS NOT NULL AND
6929 p_party_account_rec.active_end_date <> fnd_api.g_miss_date AND
6930 p_party_account_rec.active_end_date <= sysdate
6931 THEN -- external to internal
6932 IF p_txn_rec.transaction_type_id in (53,54) THEN -- RMA
6933 l_transaction_type := 'RET';
6934 ELSE
6935 l_transaction_type := 'TRM';
6936 END IF;
6937
6938 l_old_pty_acct_id := NULL;
6939 l_new_pty_acct_id := NULL;
6940
6941 UPDATE csi_item_instances
6942 SET owner_party_account_id = NULL
6943 WHERE instance_id = l_party_rec.instance_id;
6944 END IF;
6945 --
6946 IF l_transaction_type IS NOT NULL AND
6947 p_party_account_rec.call_contracts <> fnd_api.g_false AND
6948 p_txn_rec.transaction_type_id <> 7 -- Added for bug 3973706
6949 THEN
6950 IF l_transaction_type = 'TRF' THEN
6951 -- Added the following code for bug 2972082
6952 IF nvl(p_party_account_rec.cascade_ownership_flag,'N')='Y' THEN
6953 csi_gen_utility_pvt.put_line('Since the transaction is a cascade ownership call ');
6954 csi_gen_utility_pvt.put_line('(external to external ownership, component owner is different from parent),');
6955 csi_gen_utility_pvt.put_line('Hence call contracts with TRM and NEW transaction types. ');
6956 csi_gen_utility_pvt.put_line( 'Calling contracts with TRM transaction type for instance '||l_party_rec.instance_id);
6957 csi_item_instance_pvt.Call_to_Contracts(
6958 p_transaction_type => 'TRM'
6959 ,p_instance_id => l_party_rec.instance_id
6960 ,p_new_instance_id => NULL
6961 ,p_vld_org_id => l_last_vld_org
6962 ,p_quantity => NULL
6963 ,p_party_account_id1 => NULL
6964 ,p_party_account_id2 => NULL
6965 ,p_transaction_date => p_txn_rec.transaction_date -- SYSDATE
6966 ,p_txn_type_id => p_txn_rec.transaction_type_id --added for BUG# 5752271
6967 ,p_source_transaction_date => p_txn_rec.source_transaction_date
6968 ,p_grp_call_contracts => p_party_account_rec.grp_call_contracts -- srramakr
6969 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
6970 ,x_return_status => x_return_status
6971 ,x_msg_count => x_msg_count
6972 ,x_msg_data => x_msg_data
6973 );
6974
6975 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
6976 csi_gen_utility_pvt.put_line('Cascade Ownership - Call to contracts with TRM txn type has errored ');
6977 l_msg_index := 1;
6978 l_msg_count := x_msg_count;
6979 WHILE l_msg_count > 0 LOOP
6980 x_msg_data := FND_MSG_PUB.GET(
6981 l_msg_index,
6982 FND_API.G_FALSE );
6983 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
6984 l_msg_index := l_msg_index + 1;
6985 l_msg_count := l_msg_count - 1;
6986 END LOOP;
6987 RAISE FND_API.G_EXC_ERROR;
6988 END IF;
6989 csi_gen_utility_pvt.put_line( 'Calling contracts with NEW transaction type for instance '||l_party_rec.instance_id);
6990
6991 csi_item_instance_pvt.Call_to_Contracts(
6992 p_transaction_type => 'NEW'
6993 ,p_instance_id => l_party_rec.instance_id
6994 ,p_new_instance_id => NULL
6995 ,p_vld_org_id => l_last_vld_org
6996 ,p_quantity => NULL
6997 ,p_party_account_id1 => NULL
6998 ,p_party_account_id2 => NULL
6999 ,p_transaction_date => p_txn_rec.transaction_date -- SYSDATE
7000 ,p_source_transaction_date => p_txn_rec.source_transaction_date -- SYSDATE
7001 ,p_grp_call_contracts => p_party_account_rec.grp_call_contracts -- srramakr
7002 ,p_txn_type_id => p_txn_rec.transaction_type_id --added for BUG# 5752271
7003 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
7004 ,x_return_status => x_return_status
7005 ,x_msg_count => x_msg_count
7006 ,x_msg_data => x_msg_data
7007 );
7008 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7009 csi_gen_utility_pvt.put_line('Cascade Ownership - Call to contracts with NEW txn type has errored ');
7010 l_msg_index := 1;
7011 l_msg_count := x_msg_count;
7012 WHILE l_msg_count > 0 LOOP
7013 x_msg_data := FND_MSG_PUB.GET(
7014 l_msg_index,
7015 FND_API.G_FALSE );
7016 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
7017 l_msg_index := l_msg_index + 1;
7018 l_msg_count := l_msg_count - 1;
7019 END LOOP;
7020 RAISE FND_API.G_EXC_ERROR;
7021 END IF;
7022 -- End addition for bug 2972082
7023 ELSE
7024 csi_item_instance_pvt.Call_to_Contracts(
7025 p_transaction_type => l_transaction_type
7026 ,p_instance_id => l_party_rec.instance_id
7027 ,p_new_instance_id => NULL
7028 ,p_vld_org_id => l_last_vld_org
7029 ,p_quantity => NULL
7030 ,p_party_account_id1 => l_old_pty_acct_id
7031 ,p_party_account_id2 => l_new_pty_acct_id
7032 ,p_transaction_date => p_txn_rec.transaction_date -- added by sguthiva
7033 ,p_source_transaction_date => p_txn_rec.source_transaction_date -- added by jpwilson
7034 ,p_transaction_id => p_txn_rec.transaction_id
7035 ,p_grp_call_contracts => p_party_account_rec.grp_call_contracts -- srramakr
7036 ,p_txn_type_id => p_txn_rec.transaction_type_id --added for BUG# 5752271
7037 ,p_system_id => p_party_account_rec.system_id
7038 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
7039 ,x_return_status => x_return_status
7040 ,x_msg_count => x_msg_count
7041 ,x_msg_data => x_msg_data
7042 );
7043 END IF;
7044 ELSE
7045 csi_item_instance_pvt.Call_to_Contracts(
7046 p_transaction_type => l_transaction_type
7047 ,p_instance_id => l_party_rec.instance_id
7048 ,p_new_instance_id => NULL
7049 ,p_vld_org_id => l_last_vld_org
7050 ,p_quantity => NULL
7051 ,p_party_account_id1 => l_old_pty_acct_id
7052 ,p_party_account_id2 => l_new_pty_acct_id
7053 ,p_transaction_date => p_txn_rec.transaction_date -- SYSDATE
7054 ,p_source_transaction_date => p_txn_rec.source_transaction_date
7055 ,p_grp_call_contracts => p_party_account_rec.grp_call_contracts -- srramakr
7056 ,p_oks_txn_inst_tbl => p_oks_txn_inst_tbl
7057 ,x_return_status => x_return_status
7058 ,x_msg_count => x_msg_count
7059 ,x_msg_data => x_msg_data
7060 );
7061 END IF;
7062 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7063 l_msg_index := 1;
7064 l_msg_count := x_msg_count;
7065 WHILE l_msg_count > 0 LOOP
7066 x_msg_data := FND_MSG_PUB.GET(
7067 l_msg_index,
7068 FND_API.G_FALSE );
7069 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
7070 l_msg_index := l_msg_index + 1;
7071 l_msg_count := l_msg_count - 1;
7072 END LOOP;
7073 RAISE FND_API.G_EXC_ERROR;
7074 END IF;
7075 END IF;
7076 END IF;
7077 -- End addition by sguthiva for bug 2307804
7078 --
7079 -- End of API body
7080 -- Standard check of p_commit.
7081 IF FND_API.To_Boolean( p_commit ) THEN
7082 COMMIT WORK;
7083 END IF;
7084 -- Standard call to get message count and if count is get message info.
7085 FND_MSG_PUB.Count_And_Get
7086 (p_count => x_msg_count ,
7087 p_data => x_msg_data );
7088 EXCEPTION
7089 WHEN FND_API.G_EXC_ERROR THEN
7090 -- ROLLBACK TO update_inst_party_acct_pvt;
7091 x_return_status := FND_API.G_RET_STS_ERROR ;
7092 FND_MSG_PUB.Count_And_Get
7093 ( p_count => x_msg_count,
7094 p_data => x_msg_data );
7095 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7096 -- ROLLBACK TO update_inst_party_acct_pvt;
7097 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7098 FND_MSG_PUB.Count_And_Get
7099 ( p_count => x_msg_count,
7100 p_data => x_msg_data );
7101 WHEN OTHERS THEN
7102 -- ROLLBACK TO update_inst_party_acct_pvt;
7103 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7104 IF FND_MSG_PUB.Check_Msg_Level
7105 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7106 THEN
7107 FND_MSG_PUB.Add_Exc_Msg
7108 ( g_pkg_name, l_api_name );
7109 END IF;
7110 FND_MSG_PUB.Count_And_Get
7111 ( p_count => x_msg_count,
7112 p_data => x_msg_data );
7113 END update_inst_party_account ;
7114
7115 /*--------------------------------------------------------------*/
7116 /* Procedure name: Expire_inst_party_account */
7117 /* Description : Procedure used to expire an existing */
7118 /* instance-party account relationships */
7119 /*--------------------------------------------------------------*/
7120
7121 PROCEDURE expire_inst_party_account
7122 ( p_api_version IN NUMBER
7123 ,p_commit IN VARCHAR2
7124 ,p_init_msg_list IN VARCHAR2
7125 ,p_validation_level IN NUMBER
7126 ,p_party_account_rec IN csi_datastructures_pub.party_account_rec
7127 ,p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
7128 ,x_return_status OUT NOCOPY VARCHAR2
7129 ,x_msg_count OUT NOCOPY NUMBER
7130 ,x_msg_data OUT NOCOPY VARCHAR2
7131 ) IS
7132
7133 l_api_name CONSTANT VARCHAR2(30) := 'EXPIRE_INST_PARTY_ACCOUNT';
7134 l_api_version CONSTANT NUMBER := 1.0;
7135 l_csi_debug_level NUMBER;
7136 l_party_account_rec csi_datastructures_pub.party_account_rec;
7137 -- l_curr_party_acct_rec csi_datastructures_pub.party_account_rec;
7138 l_msg_count NUMBER;
7139 l_msg_data VARCHAR2(100);
7140 l_txn_id NUMBER;
7141 l_msg_index NUMBER;
7142 l_OBJECT_VERSION_NUMBER NUMBER;
7143 x_msg_index_out NUMBER;
7144 l_ip_account_history_id NUMBER;
7145 l_full_dump_frequency NUMBER;
7146 l_mod_value NUMBER;
7147 --
7148 px_oks_txn_inst_tbl oks_ibint_pub.txn_instance_tbl;
7149
7150 CURSOR get_curr_party_acct_rec (p_ip_account_id IN NUMBER) IS
7151 SELECT
7152 ip_account_id ,
7153 FND_API.G_MISS_NUM parent_tbl_index,
7154 instance_party_id ,
7155 party_account_id ,
7156 relationship_type_code ,
7157 bill_to_address ,
7158 ship_to_address ,
7159 active_start_date ,
7160 active_end_date ,
7161 context ,
7162 attribute1 ,
7163 attribute2 ,
7164 attribute3 ,
7165 attribute4 ,
7166 attribute5 ,
7167 attribute6 ,
7168 attribute7 ,
7169 attribute8 ,
7170 attribute9 ,
7171 attribute10 ,
7172 attribute11 ,
7173 attribute12 ,
7174 attribute13 ,
7175 attribute14 ,
7176 attribute15 ,
7177 object_version_number
7178 FROM CSI_IP_ACCOUNTS
7179 WHERE IP_ACCOUNT_ID = p_ip_account_id
7180 AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE))
7181 FOR UPDATE OF OBJECT_VERSION_NUMBER;
7182
7183 l_curr_party_acct_rec get_curr_party_acct_rec%ROWTYPE;
7184
7185 BEGIN
7186 -- Standard Start of API savepoint
7187 SAVEPOINT expire_inst_party_acct_pvt;
7188
7189 -- Standard call to check for call compatibility.
7190 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
7191 p_api_version ,
7192 l_api_name ,
7193 g_pkg_name )
7194 THEN
7195 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7196 END IF;
7197
7198 -- Initialize message list if p_init_msg_list is set to TRUE.
7199 IF FND_API.to_Boolean( p_init_msg_list ) THEN
7200 FND_MSG_PUB.initialize;
7201 END IF;
7202
7203 -- Initialize API return status to success
7204 x_return_status := FND_API.G_RET_STS_SUCCESS;
7205
7206 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
7207 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
7208
7209 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
7210 IF (l_csi_debug_level > 0) THEN
7211 csi_gen_utility_pvt.put_line( 'expire_inst_party_account');
7212 END IF;
7213
7214 -- If the debug level = 2 then dump all the parameters values.
7215 IF (l_csi_debug_level > 1) THEN
7216 csi_gen_utility_pvt.put_line( 'expire_inst_party_account:'||
7217 p_api_version ||'-'||
7218 p_commit ||'-'||
7219 p_init_msg_list );
7220
7221
7222 -- Dump the records in the log file
7223 csi_gen_utility_pvt.dump_party_account_rec(p_party_account_rec);
7224 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
7225 END IF;
7226 -- Start API body
7227 --
7228 -- Check if all the required parameters are passed
7229 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
7230 ( p_party_account_rec.ip_account_id,
7231 ' p_party_account_rec.ip_account_id ',
7232 l_api_name );
7233
7234 CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
7235 ( p_party_account_rec.object_version_number,
7236 ' p_party_account_rec.object_version_number ',
7237 l_api_name );
7238
7239
7240 -- Check if the instance party id is valid
7241 IF NOT(CSI_Instance_parties_vld_pvt.Is_Ip_account_Valid
7242 (p_party_account_rec.ip_account_id))THEN
7243 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_IP_ACCOUNT_ID');
7244 FND_MESSAGE.SET_TOKEN('IP_ACCOUNT_ID',p_party_account_rec.ip_account_id);
7245 FND_MSG_PUB.Add;
7246 RAISE FND_API.G_EXC_ERROR;
7247 END IF;
7248 -- check if the object_version_number passed matches with the one
7249 -- in the database else raise error
7250 OPEN get_curr_party_acct_rec(p_party_account_rec.ip_account_id);
7251 FETCH get_curr_party_acct_rec INTO l_curr_party_acct_rec;
7252
7253 IF (l_curr_party_acct_rec.object_version_number <> p_party_account_rec.OBJECT_VERSION_NUMBER) THEN
7254 FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
7255 FND_MSG_PUB.ADD;
7256 RAISE FND_API.G_EXC_ERROR;
7257 END IF;
7258 --
7259 IF get_curr_party_acct_rec%NOTFOUND THEN
7260 FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
7261 FND_MSG_PUB.ADD;
7262 RAISE FND_API.G_EXC_ERROR;
7263 END IF;
7264 CLOSE get_curr_party_acct_rec;
7265 -- Initialize all the parameters and call upate_inst_party_account to expire the record
7266
7267 l_party_account_rec.IP_ACCOUNT_ID := l_curr_party_acct_rec.ip_account_id;
7268 l_party_account_rec.INSTANCE_PARTY_ID := FND_API.G_MISS_NUM;
7269 l_party_account_rec.PARTY_ACCOUNT_ID := l_curr_party_acct_rec.party_account_id; -- Added by sguthiva for bug 2307804
7270 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;
7271 -- Bug 3804960
7272 -- srramakr Need to use the same the date used by the item instance
7273 IF p_txn_rec.src_txn_creation_date IS NULL OR
7274 p_txn_rec.src_txn_creation_date = FND_API.G_MISS_DATE THEN
7275 l_party_account_rec.active_end_date := sysdate;
7276 ELSE
7277 l_party_account_rec.active_end_date := p_txn_rec.src_txn_creation_date;
7278 END IF;
7279 -- End of 3804960
7280 l_party_account_rec.CONTEXT := FND_API.G_MISS_CHAR;
7281 l_party_account_rec.ATTRIBUTE1 := FND_API.G_MISS_CHAR;
7282 l_party_account_rec.ATTRIBUTE2 := FND_API.G_MISS_CHAR;
7283 l_party_account_rec.ATTRIBUTE3 := FND_API.G_MISS_CHAR;
7284 l_party_account_rec.ATTRIBUTE4 := FND_API.G_MISS_CHAR;
7285 l_party_account_rec.ATTRIBUTE5 := FND_API.G_MISS_CHAR;
7286 l_party_account_rec.ATTRIBUTE6 := FND_API.G_MISS_CHAR;
7287 l_party_account_rec.ATTRIBUTE7 := FND_API.G_MISS_CHAR;
7288 l_party_account_rec.ATTRIBUTE8 := FND_API.G_MISS_CHAR;
7289 l_party_account_rec.ATTRIBUTE9 := FND_API.G_MISS_CHAR;
7290 l_party_account_rec.ATTRIBUTE10 := FND_API.G_MISS_CHAR;
7291 l_party_account_rec.ATTRIBUTE11 := FND_API.G_MISS_CHAR;
7292 l_party_account_rec.ATTRIBUTE12 := FND_API.G_MISS_CHAR;
7293 l_party_account_rec.ATTRIBUTE13 := FND_API.G_MISS_CHAR;
7294 l_party_account_rec.ATTRIBUTE14 := FND_API.G_MISS_CHAR;
7295 l_party_account_rec.ATTRIBUTE15 := FND_API.G_MISS_CHAR;
7296 l_party_account_rec.BILL_TO_ADDRESS := FND_API.G_MISS_NUM;
7297 l_party_account_rec.SHIP_TO_ADDRESS := FND_API.G_MISS_NUM;
7298 l_party_account_rec.OBJECT_VERSION_NUMBER := p_party_account_rec.OBJECT_VERSION_NUMBER;
7299 l_party_account_rec.expire_flag := p_party_account_rec.expire_flag; -- Added by sguthiva for bug 2307804
7300 l_party_account_rec.call_contracts := p_party_account_rec.call_contracts; -- Added by sguthiva for bug 2307804
7301 -- g_expire_account_flag := 'Y'; -- Added by sguthiva for bug 2307804
7302 --
7303 update_inst_party_account
7304 ( p_api_version => p_api_version
7305 ,p_commit => p_commit
7306 ,p_init_msg_list => p_init_msg_list
7307 ,p_validation_level => p_validation_level
7308 ,p_party_account_rec => l_party_account_rec
7309 ,p_txn_rec => p_txn_rec
7310 ,p_oks_txn_inst_tbl => px_oks_txn_inst_tbl
7311 ,x_return_status => x_return_status
7312 ,x_msg_count => x_msg_count
7313 ,x_msg_data => x_msg_data);
7314 --
7315 --g_expire_account_flag := 'N'; -- Added by sguthiva for bug 2307804
7316 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7317 l_msg_index := 1;
7318 l_msg_count := x_msg_count;
7319 WHILE l_msg_count > 0 LOOP
7320 x_msg_data := FND_MSG_PUB.GET(
7321 l_msg_index,
7322 FND_API.G_FALSE );
7323 csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
7324 l_msg_index := l_msg_index + 1;
7325 l_msg_count := l_msg_count - 1;
7326 END LOOP;
7327 RAISE FND_API.G_EXC_ERROR;
7328 END IF;
7329 --
7330 -- Commented the tablehandler call since Update API got invoked
7331 --
7332 -- End of API body
7333 -- Standard check of p_commit.
7334 IF FND_API.To_Boolean( p_commit ) THEN
7335 COMMIT WORK;
7336 END IF;
7337 -- Standard call to get message count and if count is get message info.
7338 FND_MSG_PUB.Count_And_Get
7339 (p_count => x_msg_count ,
7340 p_data => x_msg_data );
7341 EXCEPTION
7342 WHEN FND_API.G_EXC_ERROR THEN
7343 ROLLBACK TO expire_inst_party_acct_pvt;
7344 x_return_status := FND_API.G_RET_STS_ERROR ;
7345 FND_MSG_PUB.Count_And_Get
7346 ( p_count => x_msg_count,
7347 p_data => x_msg_data );
7348
7349 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7350 ROLLBACK TO expire_inst_party_acct_pvt;
7351 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7352 FND_MSG_PUB.Count_And_Get
7353 ( p_count => x_msg_count,
7354 p_data => x_msg_data );
7355 WHEN OTHERS THEN
7356 ROLLBACK TO expire_inst_party_acct_pvt;
7357 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7358 IF FND_MSG_PUB.Check_Msg_Level
7359 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7360 THEN
7361 FND_MSG_PUB.Add_Exc_Msg
7362 ( g_pkg_name, l_api_name );
7363 END IF;
7364 FND_MSG_PUB.Count_And_Get
7365 ( p_count => x_msg_count,
7366 p_data => x_msg_data );
7367 END expire_inst_party_account ;
7368
7369
7370 /*------------------------------------------------------------*/
7371 /* Procedure name: get_contact_details */
7372 /* Description : Get the details of a contact party */
7373 /*------------------------------------------------------------*/
7374
7375 PROCEDURE get_contact_details
7376 (
7377 p_api_version IN NUMBER
7378 ,p_commit IN VARCHAR2
7379 ,p_init_msg_list IN VARCHAR2
7380 ,p_validation_level IN NUMBER
7381 ,p_contact_party_id IN NUMBER
7382 ,p_contact_flag IN VARCHAR2
7383 ,p_party_tbl IN VARCHAR2
7384 ,x_contact_details OUT NOCOPY csi_datastructures_pub.contact_details_rec
7385 ,x_return_status OUT NOCOPY VARCHAR2
7386 ,x_msg_count OUT NOCOPY NUMBER
7387 ,x_msg_data OUT NOCOPY VARCHAR2
7388 ) IS
7389
7390 l_api_name CONSTANT VARCHAR2(30) := 'GET_CONTACT_DETAILS_PVT';
7391 l_api_version CONSTANT NUMBER := 1.0;
7392 l_csi_debug_level NUMBER;
7393
7394
7395 BEGIN
7396 -- Standard Start of API savepoint
7397 -- SAVEPOINT get_contact_details_pvt;
7398
7399 -- Standard call to check for call compatibility.
7400 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
7401 p_api_version ,
7402 l_api_name ,
7403 g_pkg_name )
7404 THEN
7405 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7406 END IF;
7407
7408 -- Initialize message list if p_init_msg_list is set to TRUE.
7409 IF FND_API.to_Boolean( p_init_msg_list ) THEN
7410 FND_MSG_PUB.initialize;
7411 END IF;
7412
7413 -- Initialize API return status to success
7414 x_return_status := FND_API.G_RET_STS_SUCCESS;
7415
7416 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
7417 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
7418
7419 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
7420 IF (l_csi_debug_level > 0) THEN
7421 csi_gen_utility_pvt.put_line( 'get_contact_details');
7422 END IF;
7423
7424
7425 -- Start API body
7426
7427 IF ( ( p_contact_party_id IS NULL OR p_contact_party_id = fnd_api.g_miss_num )
7428 OR ( p_party_tbl IS NULL OR p_party_tbl = fnd_api.g_miss_char )
7429 )
7430 THEN
7431 fnd_message.set_name('CSI', 'CSI_API_INVALID_PARAMETERS');
7432 fnd_msg_pub.add;
7433 x_return_status := fnd_api.g_ret_sts_error;
7434 RAISE fnd_api.g_exc_error;
7435 END IF;
7436
7437
7438 IF upper(p_party_tbl) = 'HZ_PARTIES'
7439 THEN
7440 BEGIN
7441
7442 SELECT hp.party_name party_name,
7443
7444 decode( hcp_wp.phone_country_code, null, null, hcp_wp.phone_country_code || '-'
7445 )
7446 || decode( hcp_wp.phone_area_code, null, null, '(' || hcp_wp.phone_Area_code || ')'
7447 )
7448 || hcp_wp.phone_number
7449 || decode( hcp_wp.phone_extension, null, null, ' x'|| hcp_wp.phone_extension)
7450 work_phone_number,
7451
7452 decode( hcp_hp.phone_country_code, null, null, hcp_hp.phone_country_code || '-'
7453 )
7454 || decode( hcp_hp.phone_area_code, null, null, '(' || hcp_hp.phone_Area_code || ')'
7455 )
7456 || hcp_hp.phone_number
7457 || decode( hcp_hp.phone_extension, null, null, ' x'|| hcp_hp.phone_extension)
7458 home_phone_number,
7459
7460 decode( hcp_mb.phone_country_code, null, null, hcp_mb.phone_country_code || '-'
7461 )
7462 || decode( hcp_mb.phone_area_code, null, null, '(' || hcp_mb.phone_Area_code || ')'
7463 )
7464 || hcp_mb.phone_number
7465 || decode( hcp_mb.phone_extension, null, null, ' x'|| hcp_mb.phone_extension)
7466 mobile_number,
7467
7468 decode( hcp_pg.phone_country_code, null, null, hcp_pg.phone_country_code || '-'
7469 )
7470 || decode( hcp_pg.phone_area_code, null, null, '(' || hcp_pg.phone_Area_code || ')'
7471 )
7472 || hcp_pg.phone_number
7473 || decode( hcp_pg.phone_extension, null, null, ' x'|| hcp_pg.phone_extension)
7474 pager_number,
7475
7476 decode( hcp_fx.phone_country_code, null, null, hcp_fx.phone_country_code || '-'
7477 )
7478 || decode( hcp_fx.phone_area_code, null, null, '(' || hcp_fx.phone_Area_code || ')'
7479 )
7480 || hcp_fx.phone_number
7481 || decode( hcp_fx.phone_extension, null, null, ' x'|| hcp_fx.phone_extension)
7482 fax_number,
7483
7484 HP.ADDRESS1, HP.ADDRESS2, HP.ADDRESS3, HP.ADDRESS4, HP.CITY, HP.POSTAL_CODE,
7485 HP.STATE, HP.COUNTRY,
7486 hcp_em.email_address
7487
7488 INTO x_contact_details.party_name,
7489 x_contact_details.officephone,
7490 x_contact_details.homephone,
7491 x_contact_details.mobile,
7492 x_contact_details.page,
7493 x_contact_details.fax,
7494 x_contact_details.address1,
7495 x_contact_details.address2,
7496 x_contact_details.address3,
7497 x_contact_details.address4,
7498 x_contact_details.city,
7499 x_contact_details.postal_code,
7500 x_contact_details.state,
7501 x_contact_details.country,
7502 x_contact_details.email
7503
7504 FROM
7505 HZ_PARTIES HP,
7506 CSI_I_PARTIES CIP,
7507 -- CSI_IPA_RELATION_TYPES CIR,
7508 HZ_CONTACT_POINTS HCP_WP,
7509 HZ_CONTACT_POINTS HCP_HP,
7510 HZ_CONTACT_POINTS HCP_PG,
7511 HZ_CONTACT_POINTS HCP_EM,
7512 HZ_CONTACT_POINTS HCP_FX,
7513 HZ_CONTACT_POINTS HCP_MB,
7514 -- CSI_LOOKUPS CL,
7515 HZ_RELATIONSHIPS HR,
7516 CSI_I_PARTIES CIPO
7517 WHERE CIP.INSTANCE_PARTY_ID = p_contact_party_id -- party_id for the contact
7518 AND CIP.PARTY_ID = HR.SUBJECT_ID
7519 AND CIP.CONTACT_IP_ID = CIPO.INSTANCE_PARTY_ID
7520 AND CIPO.PARTY_ID = HR.OBJECT_ID
7521 AND HR.SUBJECT_ID = HP.PARTY_ID
7522 AND CIP.CONTACT_FLAG = 'Y'
7523 AND CIP.PARTY_SOURCE_TABLE = 'HZ_PARTIES'
7524 -- AND CIP.RELATIONSHIP_TYPE_CODE = CIR.IPA_RELATION_TYPE_CODE(+)
7525 -- AND CL.LOOKUP_CODE(+) = CIP.PARTY_SOURCE_TABLE
7526 AND HR.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
7527 AND HR.OBJECT_TABLE_NAME = 'HZ_PARTIES'
7528
7529 AND HCP_WP.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7530 AND HCP_WP.OWNER_TABLE_ID(+) = HR.PARTY_ID
7531 AND HCP_WP.CONTACT_POINT_TYPE(+) = 'PHONE'
7532 AND HCP_WP.PHONE_LINE_TYPE(+) = 'GEN'
7533 AND HCP_WP.CONTACT_POINT_PURPOSE(+) = 'BUSINESS'
7534
7535 AND HCP_HP.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7536 AND HCP_HP.OWNER_TABLE_ID(+) = HR.PARTY_ID
7537 AND HCP_HP.CONTACT_POINT_TYPE(+) = 'PHONE'
7538 AND HCP_HP.PHONE_LINE_TYPE(+) = 'GEN'
7539 AND HCP_HP.CONTACT_POINT_PURPOSE(+) = 'PERSONAL'
7540
7541 AND HCP_MB.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7542 AND HCP_MB.OWNER_TABLE_ID(+) = HR.PARTY_ID
7543 AND HCP_MB.CONTACT_POINT_TYPE(+) = 'PHONE'
7544 AND HCP_MB.PHONE_LINE_TYPE(+) = 'MOBILE'
7545 AND HCP_MB.CONTACT_POINT_PURPOSE(+) = 'BUSINESS'
7546
7547 AND HCP_PG.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7548 AND HCP_PG.OWNER_TABLE_ID(+) = HR.PARTY_ID
7549 AND HCP_PG.CONTACT_POINT_TYPE(+) = 'PHONE'
7550 AND HCP_PG.PHONE_LINE_TYPE(+) = 'PAGER'
7551 AND HCP_PG.CONTACT_POINT_PURPOSE(+) = 'BUSINESS'
7552
7553 AND HCP_FX.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7554 AND HCP_FX.OWNER_TABLE_ID(+) = HR.PARTY_ID
7555 AND HCP_FX.CONTACT_POINT_TYPE(+) = 'PHONE'
7556 AND HCP_FX.PHONE_LINE_TYPE(+) = 'FAX'
7557 AND HCP_FX.CONTACT_POINT_PURPOSE(+) = 'BUSINESS'
7558
7559 AND HCP_EM.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
7560 AND HCP_EM.OWNER_TABLE_ID(+) = HR.PARTY_ID
7561 AND HCP_EM.CONTACT_POINT_TYPE(+) = 'EMAIL'
7562 AND HCP_EM.PRIMARY_FLAG(+) = 'Y'
7563 AND ROWNUM < 2;
7564 EXCEPTION
7565 WHEN NO_DATA_FOUND THEN
7566 NULL;
7567 END;
7568
7569
7570 ELSIF upper(p_party_tbl) = 'PO_VENDORS'
7571 THEN
7572 IF p_contact_flag = 'Y' THEN
7573 BEGIN
7574
7575 SELECT PVC.PREFIX || ' ' || PVC.FIRST_NAME || ' ' || PVC.MIDDLE_NAME || ' '|| PVC.LAST_NAME PARTY_NAME,
7576 PVC.area_code||'-'||PVC.phone, --WORKPHONE,
7577 NULL, --HOMEPHONE
7578 NULL, --MOBILE
7579 NULL, --PAGE
7580 NULL, --FAX,
7581 PVS.ADDRESS_LINE1 ADDRESS1, --address_line1
7582 PVS.ADDRESS_LINE2 ADDRESS2, --address_line2
7583 PVS.ADDRESS_LINE3 ADDRESS3, --address_line3
7584 NULL, --address_line4
7585 PVS.CITY, --city,
7586 PVS.ZIP POSTAL_CODE, --zip
7587 PVS.STATE STATE, --state
7588 PVS.COUNTRY COUNTRY, --country
7589 PVC.mail_stop --EMAIL ADDRESS
7590 INTO x_contact_details.party_name,
7591 x_contact_details.officephone,
7592 x_contact_details.homephone,
7593 x_contact_details.mobile,
7594 x_contact_details.page,
7595 x_contact_details.fax,
7596 x_contact_details.address1,
7597 x_contact_details.address2,
7598 x_contact_details.address3,
7599 x_contact_details.address4,
7600 x_contact_details.city,
7601 x_contact_details.postal_code,
7602 x_contact_details.state,
7603 x_contact_details.country,
7604 x_contact_details.email
7605 FROM CSI_I_PARTIES CIP,
7606 PO_VENDOR_CONTACTS PVC,
7607 PO_VENDOR_SITES_ALL PVS
7608 WHERE CIP.INSTANCE_PARTY_ID = p_contact_party_id
7609 AND CIP.PARTY_ID = PVC.VENDOR_CONTACT_ID
7610 AND PVS.VENDOR_SITE_ID = PVC.VENDOR_SITE_ID
7611 AND rownum < 2;
7612 EXCEPTION
7613 WHEN NO_DATA_FOUND THEN
7614 NULL;
7615 END;
7616 END IF;
7617
7618 ELSIF upper(p_party_tbl) = 'EMPLOYEE'
7619 THEN
7620 BEGIN
7621 SELECT distinct PAP.full_name, --PARTY NAME
7622 PAP.work_telephone, --WORK PHONE
7623 NULL , -- HOME_PHONE_NUMBER
7624 NULL , --MOBILE
7625 NULL , --PAGE
7626 NULL , --FAX
7627 NULL , --ADDRESS1
7628 NULL , --ADDRESS2
7629 NULL , --ADDRESS3
7630 NULL , --ADDRESS4
7631 NULL , --CITY
7632 NULL , --POSTAL CODE
7633 NULL , --STATE
7634 NULL , --COUNTRY
7635 PAP.email_address --EMAIL
7636 INTO x_contact_details.party_name,
7637 x_contact_details.officephone,
7638 x_contact_details.homephone,
7639 x_contact_details.mobile,
7640 x_contact_details.page,
7641 x_contact_details.fax,
7642 x_contact_details.address1,
7643 x_contact_details.address2,
7644 x_contact_details.address3,
7645 x_contact_details.address4,
7646 x_contact_details.city,
7647 x_contact_details.postal_code,
7648 x_contact_details.state,
7649 x_contact_details.country,
7650 x_contact_details.email
7651 FROM CSI_I_PARTIES CIP,
7652 PER_ALL_PEOPLE_F PAP
7653 WHERE CIP.INSTANCE_PARTY_ID = p_contact_party_id
7654 AND CIP.PARTY_ID = PAP.PERSON_ID
7655 AND PAP.EFFECTIVE_START_DATE <= SYSDATE
7656 AND PAP.EFFECTIVE_END_DATE >= SYSDATE
7657 AND rownum < 2;
7658 EXCEPTION
7659 WHEN NO_DATA_FOUND THEN
7660 NULL;
7661 END;
7662
7663 ELSIF upper(p_party_tbl) = 'GROUP'
7664 THEN
7665 BEGIN
7666 SELECT distinct JG.group_name,
7667 NULL , --WORK PHONE
7668 NULL , --HOME_PHONE_NUMBER
7669 NULL , --MOBILE
7670 NULL , --PAGE
7671 NULL , --FAX
7672 NULL , --ADDRESS1
7673 NULL , --ADDRESS2
7674 NULL , --ADDRESS3
7675 NULL , --ADDRESS4
7676 NULL , --CITY
7677 NULL , --POSTAL CODE
7678 NULL , --STATE
7679 NULL , --COUNTRY
7680 JG.email_address --EMAIL
7681 INTO x_contact_details.party_name,
7682 x_contact_details.officephone,
7683 x_contact_details.homephone,
7684 x_contact_details.mobile,
7685 x_contact_details.page,
7686 x_contact_details.fax,
7687 x_contact_details.address1,
7688 x_contact_details.address2,
7689 x_contact_details.address3,
7690 x_contact_details.address4,
7691 x_contact_details.city,
7692 x_contact_details.postal_code,
7693 x_contact_details.state,
7694 x_contact_details.country,
7695 x_contact_details.email
7696 FROM CSI_I_PARTIES CIP,
7697 JTF_RS_GROUPS_VL JG
7698 WHERE CIP.INSTANCE_PARTY_ID = p_contact_party_id
7699 AND CIP.PARTY_ID = JG.GROUP_ID
7700 AND rownum < 2;
7701 EXCEPTION
7702 WHEN NO_DATA_FOUND THEN
7703 NULL;
7704 END;
7705
7706 ELSIF upper(p_party_tbl) = 'TEAM'
7707 THEN
7708 BEGIN
7709 SELECT distinct JT.TEAM_NAME,
7710 NULL , --WORK PHONE
7711 NULL , --HOME_PHONE_NUMBER
7712 NULL , --MOBILE
7713 NULL , --PAGE
7714 NULL , --FAX
7715 NULL , --ADDRESS1
7716 NULL , --ADDRESS2
7717 NULL , --ADDRESS3
7718 NULL , --ADDRESS4
7719 NULL , --CITY
7720 NULL , --POSTAL CODE
7721 NULL , --STATE
7722 NULL , --COUNTRY
7723 JT.email_address --EMAIL
7724 INTO x_contact_details.party_name,
7725 x_contact_details.officephone,
7726 x_contact_details.homephone,
7727 x_contact_details.mobile,
7728 x_contact_details.page,
7729 x_contact_details.fax,
7730 x_contact_details.address1,
7731 x_contact_details.address2,
7732 x_contact_details.address3,
7733 x_contact_details.address4,
7734 x_contact_details.city,
7735 x_contact_details.postal_code,
7736 x_contact_details.state,
7737 x_contact_details.country,
7738 x_contact_details.email
7739 FROM CSI_I_PARTIES CIP,
7740 JTF_RS_TEAMS_VL JT
7741 WHERE CIP.INSTANCE_PARTY_ID = p_contact_party_id
7742 AND CIP.PARTY_ID = JT.TEAM_ID
7743 AND rownum < 2;
7744 EXCEPTION
7745 WHEN NO_DATA_FOUND THEN
7746 NULL;
7747 END;
7748 END IF;
7749 x_contact_details.contact_party_id := p_contact_party_id;
7750 --
7751 -- End of API body
7752
7753 -- Standard check of p_commit.
7754 /*
7755 IF FND_API.To_Boolean( p_commit ) THEN
7756 COMMIT WORK;
7757 END IF;
7758 */
7759
7760 -- Standard call to get message count and if count is get message info.
7761 FND_MSG_PUB.Count_And_Get
7762 (p_count => x_msg_count ,
7763 p_data => x_msg_data );
7764 EXCEPTION
7765 WHEN FND_API.G_EXC_ERROR THEN
7766 -- ROLLBACK TO get_contact_details_pvt;
7767 x_return_status := FND_API.G_RET_STS_ERROR ;
7768 FND_MSG_PUB.Count_And_Get
7769 ( p_count => x_msg_count,
7770 p_data => x_msg_data );
7771 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7772 -- ROLLBACK TO get_contact_details_pvt;
7773 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7774 FND_MSG_PUB.Count_And_Get
7775 ( p_count => x_msg_count,
7776 p_data => x_msg_data );
7777 WHEN OTHERS THEN
7778 -- ROLLBACK TO get_contact_details_pvt;
7779 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7780 IF FND_MSG_PUB.Check_Msg_Level
7781 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7782 THEN
7783 FND_MSG_PUB.Add_Exc_Msg
7784 ( g_pkg_name, l_api_name );
7785 END IF;
7786 FND_MSG_PUB.Count_And_Get
7787 ( p_count => x_msg_count,
7788 p_data => x_msg_data );
7789
7790 END get_contact_details ;
7791
7792
7793
7794 /*------------------------------------------------------------*/
7795 /* Procedure name: get_inst_party_rel_hist */
7796 /* Description : Procedure used to get party relationships */
7797 /* from history given a transaction_id */
7798 /*------------------------------------------------------------*/
7799
7800 PROCEDURE get_inst_party_rel_hist
7801 ( p_api_version IN NUMBER
7802 ,p_commit IN VARCHAR2
7803 ,p_init_msg_list IN VARCHAR2
7804 ,p_validation_level IN NUMBER
7805 ,p_transaction_id IN NUMBER
7806 ,x_party_history_tbl OUT NOCOPY csi_datastructures_pub.party_history_tbl
7807 ,x_return_status OUT NOCOPY VARCHAR2
7808 ,x_msg_count OUT NOCOPY NUMBER
7809 ,x_msg_data OUT NOCOPY VARCHAR2
7810 ) IS
7811
7812 l_api_name CONSTANT VARCHAR2(30) := 'GET_INST_PARTY_REL_HIST' ;
7813 l_api_version CONSTANT NUMBER := 1.0 ;
7814 l_csi_debug_level NUMBER ;
7815 x_msg_index_out NUMBER;
7816 l_count NUMBER := 0 ;
7817 l_flag VARCHAR2(1) :='N' ;
7818 l_instance_party_id NUMBER ;
7819 l_old_contact_party_id NUMBER ;
7820 l_new_contact_party_id NUMBER ;
7821 l_contact_details csi_datastructures_pub.contact_details_rec ;
7822 i NUMBER :=1;
7823 l_old_party_source_tbl VARCHAR2(30);
7824 l_new_party_source_tbl VARCHAR2(30);
7825 l_old_contact_flag VARCHAR2(1);
7826 l_new_contact_flag VARCHAR2(1);
7827
7828
7829
7830 CURSOR get_party_hist(i_transaction_id NUMBER)
7831 IS
7832 SELECT ciph.INSTANCE_PARTY_ID,
7833 ciph.INSTANCE_PARTY_HISTORY_ID,
7834 ciph.TRANSACTION_ID,
7835 ciph.OLD_PARTY_SOURCE_TABLE,
7836 ciph.NEW_PARTY_SOURCE_TABLE,
7837 ciph.OLD_PARTY_ID,
7838 ciph.NEW_PARTY_ID,
7839 ciph.OLD_RELATIONSHIP_TYPE_CODE,
7840 ciph.NEW_RELATIONSHIP_TYPE_CODE,
7841 ciph.OLD_CONTACT_FLAG,
7842 ciph.NEW_CONTACT_FLAG,
7843 ciph.OLD_CONTACT_IP_ID,
7844 ciph.NEW_CONTACT_IP_ID,
7845 ciph.OLD_ACTIVE_START_DATE,
7846 ciph.NEW_ACTIVE_START_DATE,
7847 ciph.OLD_ACTIVE_END_DATE,
7848 ciph.NEW_ACTIVE_END_DATE,
7849 ciph.OLD_CONTEXT,
7850 ciph.NEW_CONTEXT,
7851 ciph.OLD_ATTRIBUTE1,
7852 ciph.NEW_ATTRIBUTE1,
7853 ciph.OLD_ATTRIBUTE2,
7854 ciph.NEW_ATTRIBUTE2,
7855 ciph.OLD_ATTRIBUTE3,
7856 ciph.NEW_ATTRIBUTE3,
7857 ciph.OLD_ATTRIBUTE4,
7858 ciph.NEW_ATTRIBUTE4,
7859 ciph.OLD_ATTRIBUTE5,
7860 ciph.NEW_ATTRIBUTE5,
7861 ciph.OLD_ATTRIBUTE6,
7862 ciph.NEW_ATTRIBUTE6,
7863 ciph.OLD_ATTRIBUTE7,
7864 ciph.NEW_ATTRIBUTE7,
7865 ciph.OLD_ATTRIBUTE8,
7866 ciph.NEW_ATTRIBUTE8,
7867 ciph.OLD_ATTRIBUTE9,
7868 ciph.NEW_ATTRIBUTE9,
7869 ciph.OLD_ATTRIBUTE10,
7870 ciph.NEW_ATTRIBUTE10,
7871 ciph.OLD_ATTRIBUTE11,
7872 ciph.NEW_ATTRIBUTE11,
7873 ciph.OLD_ATTRIBUTE12,
7874 ciph.NEW_ATTRIBUTE12,
7875 ciph.OLD_ATTRIBUTE13,
7876 ciph.NEW_ATTRIBUTE13,
7877 ciph.OLD_ATTRIBUTE14,
7878 ciph.NEW_ATTRIBUTE14,
7879 ciph.OLD_ATTRIBUTE15,
7880 ciph.NEW_ATTRIBUTE15,
7881 ciph.FULL_DUMP_FLAG,
7882 ciph.OBJECT_VERSION_NUMBER,
7883 ciph.OLD_PREFERRED_FLAG,
7884 ciph.NEW_PREFERRED_FLAG,
7885 ciph.OLD_PRIMARY_FLAG,
7886 ciph.NEW_PRIMARY_FLAG,
7887 cip.INSTANCE_ID,
7888 ciph.creation_date --Added for bug 2781480
7889 FROM csi_i_parties_h ciph,
7890 csi_i_parties cip
7891 WHERE ciph.transaction_id = i_transaction_id
7892 AND ciph.instance_party_id = cip.instance_party_id; -- Added by sk on 08-APR for fixing bug
7893 -- 2304649 .
7894 -- Added for bug 2781480
7895 l_time_stamp DATE;
7896 l_party_query_rec csi_datastructures_pub.party_query_rec;
7897 l_party_header_tbl csi_datastructures_pub.party_header_tbl;
7898 -- End addition for bug 2781480
7899 BEGIN
7900 -- Standard Start of API savepoint
7901 -- SAVEPOINT get_inst_party_rel_hist;
7902
7903
7904 -- Standard call to check for call compatibility.
7905 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
7906 p_api_version ,
7907 l_api_name ,
7908 g_pkg_name )
7909 THEN
7910 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7911 END IF;
7912
7913 -- Initialize message list if p_init_msg_list is set to TRUE.
7914 IF FND_API.to_Boolean( p_init_msg_list ) THEN
7915 FND_MSG_PUB.initialize;
7916 END IF;
7917
7918 -- Initialize API return status to success
7919 x_return_status := FND_API.G_RET_STS_SUCCESS;
7920
7921 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
7922 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
7923
7924 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
7925 IF (l_csi_debug_level > 0) THEN
7926 csi_gen_utility_pvt.put_line( 'get_inst_party_rel_hist');
7927 END IF;
7928
7929 -- If the debug level = 2 then dump all the parameters values.
7930 IF (l_csi_debug_level > 1) THEN
7931 csi_gen_utility_pvt.put_line( 'get_inst_party_rel_hist' ||
7932 p_api_version ||'-'||
7933 p_commit ||'-'||
7934 p_init_msg_list ||'-'||
7935 p_validation_level ||'-'||
7936 p_transaction_id );
7937 -- dump the in parameter in the log file
7938
7939 END IF;
7940
7941 /***** srramakr commented for bug # 3304439
7942 -- Check for the profile option and enable trace
7943 l_flag:=csi_gen_utility_pvt.enable_trace(l_trace_flag => l_flag);
7944 -- End enable trace
7945 ****/
7946
7947 -- Start API body
7948
7949 FOR C1 IN get_party_hist(p_transaction_id) LOOP
7950 x_party_history_tbl(i).INSTANCE_PARTY_ID := C1.INSTANCE_PARTY_ID;
7951 x_party_history_tbl(i).INSTANCE_PARTY_HISTORY_ID := C1.INSTANCE_PARTY_HISTORY_ID;
7952 x_party_history_tbl(i).TRANSACTION_ID := C1.TRANSACTION_ID;
7953 x_party_history_tbl(i).OLD_PARTY_SOURCE_TABLE := C1.OLD_PARTY_SOURCE_TABLE;
7954 x_party_history_tbl(i).NEW_PARTY_SOURCE_TABLE := C1.NEW_PARTY_SOURCE_TABLE;
7955 x_party_history_tbl(i).OLD_PARTY_ID := C1.OLD_PARTY_ID;
7956 x_party_history_tbl(i).NEW_PARTY_ID := C1.NEW_PARTY_ID;
7957 x_party_history_tbl(i).OLD_RELATIONSHIP_TYPE_CODE := C1.OLD_RELATIONSHIP_TYPE_CODE;
7958 x_party_history_tbl(i).NEW_RELATIONSHIP_TYPE_CODE:= C1.NEW_RELATIONSHIP_TYPE_CODE;
7959 x_party_history_tbl(i).OLD_CONTACT_FLAG := C1.OLD_CONTACT_FLAG;
7960 x_party_history_tbl(i).NEW_CONTACT_FLAG := C1.NEW_CONTACT_FLAG;
7961 x_party_history_tbl(i).OLD_CONTACT_IP_ID := C1.OLD_CONTACT_IP_ID;
7962 x_party_history_tbl(i).NEW_CONTACT_IP_ID := C1.NEW_CONTACT_IP_ID;
7963 x_party_history_tbl(i).OLD_ACTIVE_START_DATE:= C1.OLD_ACTIVE_START_DATE;
7964 x_party_history_tbl(i).NEW_ACTIVE_START_DATE:= C1.NEW_ACTIVE_START_DATE;
7965 x_party_history_tbl(i).OLD_ACTIVE_END_DATE:= C1.OLD_ACTIVE_END_DATE;
7966 x_party_history_tbl(i).NEW_ACTIVE_END_DATE:= C1.NEW_ACTIVE_END_DATE;
7967 x_party_history_tbl(i).OLD_CONTEXT:= C1.OLD_CONTEXT;
7968 x_party_history_tbl(i).NEW_CONTEXT:= C1.NEW_CONTEXT;
7969 x_party_history_tbl(i).OLD_ATTRIBUTE1:= C1.OLD_ATTRIBUTE1;
7970 x_party_history_tbl(i).NEW_ATTRIBUTE1:= C1.NEW_ATTRIBUTE1;
7971 x_party_history_tbl(i).OLD_ATTRIBUTE2:= C1.OLD_ATTRIBUTE2;
7972 x_party_history_tbl(i).NEW_ATTRIBUTE2:= C1.NEW_ATTRIBUTE2;
7973 x_party_history_tbl(i).OLD_ATTRIBUTE3:= C1.OLD_ATTRIBUTE3;
7974 x_party_history_tbl(i).OLD_ATTRIBUTE3:= C1.OLD_ATTRIBUTE3;
7975 x_party_history_tbl(i).OLD_ATTRIBUTE4:= C1.OLD_ATTRIBUTE4;
7976 x_party_history_tbl(i).NEW_ATTRIBUTE4:= C1.NEW_ATTRIBUTE4;
7977 x_party_history_tbl(i).OLD_ATTRIBUTE5:= C1.OLD_ATTRIBUTE5;
7978 x_party_history_tbl(i).NEW_ATTRIBUTE5:= C1.NEW_ATTRIBUTE5;
7979 x_party_history_tbl(i).OLD_ATTRIBUTE6:= C1.OLD_ATTRIBUTE6;
7980 x_party_history_tbl(i).NEW_ATTRIBUTE6:= C1.NEW_ATTRIBUTE6;
7981 x_party_history_tbl(i).OLD_ATTRIBUTE7:= C1.OLD_ATTRIBUTE7;
7982 x_party_history_tbl(i).NEW_ATTRIBUTE7:= C1.NEW_ATTRIBUTE7;
7983 x_party_history_tbl(i).OLD_ATTRIBUTE8:= C1.OLD_ATTRIBUTE8;
7984 x_party_history_tbl(i).NEW_ATTRIBUTE8:= C1.NEW_ATTRIBUTE8;
7985 x_party_history_tbl(i).OLD_ATTRIBUTE9:= C1.OLD_ATTRIBUTE9;
7986 x_party_history_tbl(i).NEW_ATTRIBUTE9:= C1.NEW_ATTRIBUTE9;
7987 x_party_history_tbl(i).OLD_ATTRIBUTE10:= C1.OLD_ATTRIBUTE10;
7988 x_party_history_tbl(i).NEW_ATTRIBUTE10:= C1.NEW_ATTRIBUTE10;
7989 x_party_history_tbl(i).OLD_ATTRIBUTE11:= C1.OLD_ATTRIBUTE11;
7990 x_party_history_tbl(i).NEW_ATTRIBUTE11:= C1.NEW_ATTRIBUTE11;
7991 x_party_history_tbl(i).OLD_ATTRIBUTE12:= C1.OLD_ATTRIBUTE12;
7992 x_party_history_tbl(i).NEW_ATTRIBUTE12:= C1.NEW_ATTRIBUTE12;
7993 x_party_history_tbl(i).OLD_ATTRIBUTE13:= C1.OLD_ATTRIBUTE13;
7994 x_party_history_tbl(i).NEW_ATTRIBUTE13:= C1.NEW_ATTRIBUTE13;
7995 x_party_history_tbl(i).OLD_ATTRIBUTE14:= C1.OLD_ATTRIBUTE14;
7996 x_party_history_tbl(i).NEW_ATTRIBUTE14:= C1.NEW_ATTRIBUTE14;
7997 x_party_history_tbl(i).OLD_ATTRIBUTE15:= C1.OLD_ATTRIBUTE15;
7998 x_party_history_tbl(i).NEW_ATTRIBUTE15:= C1.NEW_ATTRIBUTE15;
7999 x_party_history_tbl(i).FULL_DUMP_FLAG:= C1.FULL_DUMP_FLAG;
8000 x_party_history_tbl(i).OBJECT_VERSION_NUMBER := C1.OBJECT_VERSION_NUMBER;
8001 x_party_history_tbl(i).OLD_PREFERRED_FLAG := C1.OLD_PREFERRED_FLAG;
8002 x_party_history_tbl(i).NEW_PREFERRED_FLAG := C1.NEW_PREFERRED_FLAG;
8003 x_party_history_tbl(i).OLD_PRIMARY_FLAG:= C1.OLD_PRIMARY_FLAG;
8004 x_party_history_tbl(i).NEW_PRIMARY_FLAG := C1.NEW_PRIMARY_FLAG;
8005 x_party_history_tbl(i).INSTANCE_ID := C1.INSTANCE_ID; -- Added by sk on 08-APR for fixing bug
8006 -- 2304649 .
8007 -- Added for bug 2781480
8008 IF (x_party_history_tbl(i).old_party_source_table IS NULL AND
8009 x_party_history_tbl(i).new_party_source_table IS NULL ) OR
8010 (x_party_history_tbl(i).old_party_id IS NULL AND
8011 x_party_history_tbl(i).new_party_id IS NULL ) OR
8012 (x_party_history_tbl(i).old_relationship_type_code IS NULL AND
8013 x_party_history_tbl(i).new_relationship_type_code IS NULL)
8014 --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) )
8015 THEN
8016 l_party_query_rec.instance_party_id := x_party_history_tbl(i).instance_party_id;
8017 l_time_stamp:=c1.creation_date;
8018 csi_party_relationships_pub.get_inst_party_relationships
8019 ( p_api_version => 1.0
8020 ,p_commit => fnd_api.g_false
8021 ,p_init_msg_list => fnd_api.g_false
8022 ,p_validation_level => fnd_api.g_valid_level_full
8023 ,p_party_query_rec => l_party_query_rec
8024 ,p_resolve_id_columns => fnd_api.g_false
8025 ,p_time_stamp => l_time_stamp
8026 ,x_party_header_tbl => l_party_header_tbl
8027 ,x_return_status => x_return_status
8028 ,x_msg_count => x_msg_count
8029 ,x_msg_data => x_msg_data
8030 );
8031
8032 IF NOT(x_return_status = fnd_api.g_ret_sts_success)
8033 THEN
8034 RAISE fnd_api.g_exc_error;
8035 END IF;
8036
8037 IF (x_party_history_tbl(i).old_party_source_table IS NULL AND
8038 x_party_history_tbl(i).new_party_source_table IS NULL )
8039 THEN
8040 x_party_history_tbl(i).old_party_source_table:=l_party_header_tbl(1).party_source_table;
8041 x_party_history_tbl(i).new_party_source_table:=l_party_header_tbl(1).party_source_table;
8042 END IF;
8043 -- Added for bug 2179142
8044 IF (x_party_history_tbl(i).old_party_id IS NULL AND
8045 x_party_history_tbl(i).new_party_id IS NULL )
8046 THEN
8047 x_party_history_tbl(i).old_party_id:=l_party_header_tbl(1).party_id;
8048 x_party_history_tbl(i).new_party_id:=l_party_header_tbl(1).party_id;
8049 END IF;
8050
8051 IF (x_party_history_tbl(i).old_relationship_type_code IS NULL AND
8052 x_party_history_tbl(i).new_relationship_type_code IS NULL)
8053 THEN
8054 x_party_history_tbl(i).old_relationship_type_code := l_party_header_tbl(1).relationship_type_code;
8055 x_party_history_tbl(i).new_relationship_type_code := l_party_header_tbl(1).relationship_type_code;
8056 END IF;
8057
8058 IF (x_party_history_tbl(i).old_contact_flag IS NULL AND
8059 x_party_history_tbl(i).new_contact_flag IS NULL )
8060 THEN
8061 x_party_history_tbl(i).old_contact_flag:=l_party_header_tbl(1).contact_flag;
8062 x_party_history_tbl(i).new_contact_flag:=l_party_header_tbl(1).contact_flag;
8063 END IF;
8064 -- End addition for bug 2179142
8065 END IF;
8066 -- End addition for bug 2781480
8067
8068
8069 --start of the code for resolve_id_columns for old tbl(i)ords
8070
8071 l_old_contact_party_id := x_party_history_tbl(i).old_party_id;
8072 l_old_contact_flag := x_party_history_tbl(i).old_contact_flag;
8073 l_old_party_source_tbl := x_party_history_tbl(i).old_party_source_table;
8074
8075 IF ((l_old_contact_party_id IS NOT NULL )
8076 AND ( l_old_party_source_tbl IS NOT NULL )
8077 AND ( l_old_contact_flag = 'Y') -- Added for bug 2179142
8078 )
8079 THEN
8080 csi_party_relationships_pvt.get_contact_details
8081 (
8082 p_api_version => p_api_version
8083 ,p_commit => p_commit
8084 ,p_init_msg_list => p_init_msg_list
8085 ,p_validation_level => p_validation_level
8086 ,p_contact_party_id => l_old_contact_party_id
8087 ,p_contact_flag => l_old_contact_flag
8088 ,p_party_tbl => l_old_party_source_tbl
8089 ,x_contact_details => l_contact_details
8090 ,x_return_status => x_return_status
8091 ,x_msg_count => x_msg_count
8092 ,x_msg_data => x_msg_data
8093 );
8094
8095
8096 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
8097 FOR i in 1..x_msg_Count LOOP
8098 FND_MSG_PUB.Get(p_msg_index => i,
8099 p_encoded => 'F',
8100 p_data => x_msg_data,
8101 p_msg_index_out => x_msg_index_out );
8102 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
8103 End LOOP;
8104 RAISE FND_API.G_EXC_ERROR;
8105 END IF;
8106
8107 x_party_history_tbl(i).old_contact_party_name := l_contact_details.party_name;
8108 -- Added for bug 2179142
8109 IF x_party_history_tbl(i).old_party_source_table = 'EMPLOYEE' THEN
8110 BEGIN
8111 SELECT employee_number,
8112 'EMPLYOEE'
8113 INTO x_party_history_tbl(i).old_contact_party_number,
8114 x_party_history_tbl(i).old_contact_party_type
8115 FROM per_all_people_f
8116 WHERE person_id = l_old_contact_party_id
8117 AND rownum < 2; -- Bug # 2183107 srramakr
8118 EXCEPTION
8119 WHEN OTHERS THEN
8120 NULL;
8121 END;
8122 ELSIF x_party_history_tbl(i).old_party_source_table = 'HZ_PARTIES' THEN
8123 BEGIN
8124 SELECT party_number,
8125 'PARTY'
8126 INTO x_party_history_tbl(i).old_contact_party_number,
8127 x_party_history_tbl(i).old_contact_party_type
8128 FROM hz_parties
8129 WHERE party_id = l_old_contact_party_id;
8130 EXCEPTION
8131 WHEN OTHERS THEN
8132 NULL;
8133 END;
8134 ELSIF x_party_history_tbl(i).old_party_source_table = 'PO_VENDORS' THEN
8135 BEGIN
8136 SELECT segment1,
8137 'VENDOR'
8138 INTO x_party_history_tbl(i).old_contact_party_number,
8139 x_party_history_tbl(i).old_contact_party_type
8140 FROM po_vendors
8141 WHERE vendor_id = l_old_contact_party_id;
8142 EXCEPTION
8143 WHEN OTHERS THEN
8144 NULL;
8145 END;
8146 ELSIF x_party_history_tbl(i).old_party_source_table = 'GROUP' THEN
8147 BEGIN
8148 SELECT group_number,
8149 'GROUP'
8150 INTO x_party_history_tbl(i).old_contact_party_number,
8151 x_party_history_tbl(i).old_contact_party_type
8152 FROM jtf_rs_groups_vl
8153 WHERE group_id = l_old_contact_party_id;
8154 EXCEPTION
8155 WHEN OTHERS THEN
8156 NULL;
8157 END;
8158 ELSIF x_party_history_tbl(i).old_party_source_table = 'TEAM' THEN
8159 BEGIN
8160 SELECT team_number,
8161 'TEAM'
8162 INTO x_party_history_tbl(i).old_contact_party_number,
8163 x_party_history_tbl(i).old_contact_party_type
8164 FROM jtf_rs_teams_vl
8165 WHERE team_id = l_old_contact_party_id;
8166 EXCEPTION
8167 WHEN OTHERS THEN
8168 NULL;
8169 END;
8170
8171 END IF;
8172 -- End addition for bug 2179142
8173 IF NVL(l_old_contact_party_id,fnd_api.g_miss_num) <> NVL(l_new_contact_party_id,fnd_api.g_miss_num)
8174 THEN
8175 x_party_history_tbl(i).old_contact_work_phone_num := l_contact_details.officephone;
8176 x_party_history_tbl(i).old_contact_address1 := l_contact_details.address1;
8177 x_party_history_tbl(i).old_contact_address2 := l_contact_details.address2;
8178 x_party_history_tbl(i).old_contact_address3 := l_contact_details.address3;
8179 x_party_history_tbl(i).old_contact_address4 := l_contact_details.address4;
8180 x_party_history_tbl(i).old_contact_city := l_contact_details.city;
8181 x_party_history_tbl(i).old_contact_postal_code := l_contact_details.postal_code;
8182 x_party_history_tbl(i).old_contact_state := l_contact_details.state;
8183 x_party_history_tbl(i).old_contact_country := l_contact_details.country;
8184 x_party_history_tbl(i).old_contact_email_address := l_contact_details.email;
8185 END IF;
8186 END IF;
8187
8188 IF x_party_history_tbl(i).old_party_source_table = 'EMPLOYEE' THEN
8189 BEGIN
8190 SELECT employee_number,
8191 'EMPLYOEE',
8192 full_name
8193 INTO x_party_history_tbl(i).old_party_number,
8194 x_party_history_tbl(i).old_party_type,
8195 x_party_history_tbl(i).old_party_name
8196 FROM per_all_people_f
8197 WHERE person_id = x_party_history_tbl(i).old_party_id
8198 AND rownum < 2; -- Bug # 2183107 srramakr
8199 EXCEPTION
8200 WHEN OTHERS THEN
8201 NULL;
8202 END;
8203 ELSIF x_party_history_tbl(i).old_party_source_table = 'HZ_PARTIES' THEN
8204 BEGIN
8205 SELECT party_number,
8206 'PARTY',
8207 party_name
8208 INTO x_party_history_tbl(i).old_party_number,
8209 x_party_history_tbl(i).old_party_type,
8210 x_party_history_tbl(i).old_party_name
8211 FROM hz_parties
8212 WHERE party_id = x_party_history_tbl(i).old_party_id;
8213 EXCEPTION
8214 WHEN OTHERS THEN
8215 NULL;
8216 END;
8217 ELSIF x_party_history_tbl(i).old_party_source_table = 'PO_VENDORS' THEN
8218 BEGIN
8219 SELECT segment1,
8220 'VENDOR',
8221 vendor_name
8222 INTO x_party_history_tbl(i).old_party_number,
8223 x_party_history_tbl(i).old_party_type,
8224 x_party_history_tbl(i).old_party_name
8225 FROM po_vendors
8226 WHERE vendor_id = x_party_history_tbl(i).old_party_id;
8227 EXCEPTION
8228 WHEN OTHERS THEN
8229 NULL;
8230 END;
8231 ELSIF x_party_history_tbl(i).old_party_source_table = 'GROUP' THEN
8232 BEGIN
8233 SELECT group_number,
8234 'GROUP',
8235 group_name
8236 INTO x_party_history_tbl(i).old_party_number,
8237 x_party_history_tbl(i).old_party_type,
8238 x_party_history_tbl(i).old_party_name
8239 FROM jtf_rs_groups_vl
8240 WHERE group_id = x_party_history_tbl(i).old_party_id;
8241 EXCEPTION
8242 WHEN OTHERS THEN
8243 NULL;
8244 END;
8245 ELSIF x_party_history_tbl(i).old_party_source_table = 'TEAM' THEN
8246 BEGIN
8247 SELECT team_number,
8248 'TEAM',
8249 team_name
8250 INTO x_party_history_tbl(i).old_party_number,
8251 x_party_history_tbl(i).old_party_type,
8252 x_party_history_tbl(i).old_party_name
8253 FROM jtf_rs_teams_vl
8254 WHERE team_id = x_party_history_tbl(i).old_party_id;
8255 EXCEPTION
8256 WHEN OTHERS THEN
8257 NULL;
8258 END;
8259
8260 END IF;
8261
8262 --start of the code for resolve_id_columns for new records
8263 l_new_contact_party_id := x_party_history_tbl(i).new_party_id;
8264 l_new_contact_flag := x_party_history_tbl(i).new_contact_flag;
8265 l_new_party_source_tbl := x_party_history_tbl(i).new_party_source_table;
8266
8267 IF ((l_new_contact_party_id IS NOT NULL )
8268 AND ( l_new_party_source_tbl IS NOT NULL )
8269 AND ( l_new_contact_flag = 'Y') -- Added for bug 2179142
8270 )
8271 THEN
8272 csi_party_relationships_pvt.get_contact_details
8273 (
8274 p_api_version => p_api_version
8275 ,p_commit => p_commit
8276 ,p_init_msg_list => p_init_msg_list
8277 ,p_validation_level => p_validation_level
8278 ,p_contact_party_id => l_new_contact_party_id
8279 ,p_contact_flag => l_new_contact_flag
8280 ,p_party_tbl => l_new_party_source_tbl
8281 ,x_contact_details => l_contact_details
8282 ,x_return_status => x_return_status
8283 ,x_msg_count => x_msg_count
8284 ,x_msg_data => x_msg_data
8285 );
8286
8287
8288 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
8289 FOR i in 1..x_msg_Count LOOP
8290 FND_MSG_PUB.Get(p_msg_index => i,
8291 p_encoded => 'F',
8292 p_data => x_msg_data,
8293 p_msg_index_out => x_msg_index_out );
8294 csi_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
8295 End LOOP;
8296 RAISE FND_API.G_EXC_ERROR;
8297 END IF;
8298
8299 x_party_history_tbl(i).new_contact_party_name := l_contact_details.party_name;
8300 -- Added for bug 2179142
8301 IF x_party_history_tbl(i).new_party_source_table = 'EMPLOYEE' THEN
8302 BEGIN
8303 SELECT employee_number,
8304 'EMPLYOEE'
8305 INTO x_party_history_tbl(i).new_contact_party_number,
8306 x_party_history_tbl(i).new_contact_party_type
8307 FROM per_all_people_f
8308 WHERE person_id = l_new_contact_party_id
8309 AND rownum < 2; -- Bug # 2183107 srramakr
8310 EXCEPTION
8311 WHEN OTHERS THEN
8312 NULL;
8313 END;
8314 ELSIF x_party_history_tbl(i).new_party_source_table = 'HZ_PARTIES' THEN
8315 BEGIN
8316 SELECT party_number,
8317 'PARTY'
8318 INTO x_party_history_tbl(i).new_contact_party_number,
8319 x_party_history_tbl(i).new_contact_party_type
8320 FROM hz_parties
8321 WHERE party_id = l_new_contact_party_id;
8322 EXCEPTION
8323 WHEN OTHERS THEN
8324 NULL;
8325 END;
8326 ELSIF x_party_history_tbl(i).new_party_source_table = 'PO_VENDORS' THEN
8327 BEGIN
8328 SELECT segment1,
8329 'VENDOR'
8330 INTO x_party_history_tbl(i).new_contact_party_number,
8331 x_party_history_tbl(i).new_contact_party_type
8332 FROM po_vendors
8333 WHERE vendor_id = l_new_contact_party_id;
8334 EXCEPTION
8335 WHEN OTHERS THEN
8336 NULL;
8337 END;
8338 ELSIF x_party_history_tbl(i).new_party_source_table = 'GROUP' THEN
8339 BEGIN
8340 SELECT group_number,
8341 'GROUP'
8342 INTO x_party_history_tbl(i).new_contact_party_number,
8343 x_party_history_tbl(i).new_contact_party_type
8344 FROM jtf_rs_groups_vl
8345 WHERE group_id = l_new_contact_party_id;
8346 EXCEPTION
8347 WHEN OTHERS THEN
8348 NULL;
8349 END;
8350 ELSIF x_party_history_tbl(i).new_party_source_table = 'TEAM' THEN
8351 BEGIN
8352 SELECT team_number,
8353 'TEAM'
8354 INTO x_party_history_tbl(i).new_contact_party_number,
8355 x_party_history_tbl(i).new_contact_party_type
8356 FROM jtf_rs_teams_vl
8357 WHERE team_id = x_party_history_tbl(i).new_party_id;
8358 EXCEPTION
8359 WHEN OTHERS THEN
8360 NULL;
8361 END;
8362
8363 END IF;
8364 -- End addition for bug 2179142
8365 IF NVL(l_old_contact_party_id,fnd_api.g_miss_num) <> NVL(l_new_contact_party_id,fnd_api.g_miss_num)
8366 THEN
8367 x_party_history_tbl(i).new_contact_work_phone_num := l_contact_details.officephone;
8368 x_party_history_tbl(i).new_contact_address1 := l_contact_details.address1;
8369 x_party_history_tbl(i).new_contact_address2 := l_contact_details.address2;
8370 x_party_history_tbl(i).new_contact_address3 := l_contact_details.address3;
8371 x_party_history_tbl(i).new_contact_address4 := l_contact_details.address4;
8372 x_party_history_tbl(i).new_contact_city := l_contact_details.city;
8373 x_party_history_tbl(i).new_contact_postal_code := l_contact_details.postal_code;
8374 x_party_history_tbl(i).new_contact_state := l_contact_details.state;
8375 x_party_history_tbl(i).new_contact_country := l_contact_details.country;
8376 x_party_history_tbl(i).new_contact_email_address := l_contact_details.email;
8377 END IF;
8378
8379 END IF;
8380
8381 IF x_party_history_tbl(i).new_party_source_table = 'EMPLOYEE' THEN
8382 BEGIN
8383 SELECT employee_number,
8384 'EMPLYOEE',
8385 full_name
8386 INTO x_party_history_tbl(i).new_party_number,
8387 x_party_history_tbl(i).new_party_type,
8388 x_party_history_tbl(i).new_party_name
8389 FROM per_all_people_f
8390 WHERE person_id = x_party_history_tbl(i).new_party_id
8391 AND rownum < 2; -- Bug # 2183107 srramakr
8392 EXCEPTION
8393 WHEN OTHERS THEN
8394 NULL;
8395 END;
8396 ELSIF x_party_history_tbl(i).new_party_source_table = 'HZ_PARTIES' THEN
8397 BEGIN
8398 SELECT party_number,
8399 'PARTY',
8400 party_name
8401 INTO x_party_history_tbl(i).new_party_number,
8402 x_party_history_tbl(i).new_party_type,
8403 x_party_history_tbl(i).new_party_name
8404 FROM hz_parties
8405 WHERE party_id = x_party_history_tbl(i).new_party_id;
8406 EXCEPTION
8407 WHEN OTHERS THEN
8408 NULL;
8409 END;
8410 ELSIF x_party_history_tbl(i).new_party_source_table = 'PO_VENDORS' THEN
8411 BEGIN
8412 SELECT segment1,
8413 'VENDOR',
8414 vendor_name
8415 INTO x_party_history_tbl(i).new_party_number,
8416 x_party_history_tbl(i).new_party_type,
8417 x_party_history_tbl(i).new_party_name
8418 FROM po_vendors
8419 WHERE vendor_id = x_party_history_tbl(i).new_party_id;
8420 EXCEPTION
8421 WHEN OTHERS THEN
8422 NULL;
8423 END;
8424 ELSIF x_party_history_tbl(i).new_party_source_table = 'GROUP' THEN
8425 BEGIN
8426 SELECT group_number,
8427 'GROUP',
8428 group_name
8429 INTO x_party_history_tbl(i).new_party_number,
8430 x_party_history_tbl(i).new_party_type,
8431 x_party_history_tbl(i).new_party_name
8432 FROM jtf_rs_groups_vl
8433 WHERE group_id = x_party_history_tbl(i).new_party_id;
8434 EXCEPTION
8435 WHEN OTHERS THEN
8436 NULL;
8437 END;
8438 ELSIF x_party_history_tbl(i).new_party_source_table = 'TEAM' THEN
8439 BEGIN
8440 SELECT team_number,
8441 'TEAM',
8442 team_name
8443 INTO x_party_history_tbl(i).new_party_number,
8444 x_party_history_tbl(i).new_party_type,
8445 x_party_history_tbl(i).new_party_name
8446 FROM jtf_rs_teams_vl
8447 WHERE team_id = x_party_history_tbl(i).new_party_id;
8448 EXCEPTION
8449 WHEN OTHERS THEN
8450 NULL;
8451 END;
8452 END IF;
8453 -- Added for bug 2781480
8454 /* Commented for bug 2179142
8455 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)
8456 THEN
8457 x_party_history_tbl(i).old_party_source_table:=NULL;
8458 x_party_history_tbl(i).new_party_source_table:=NULL;
8459 END IF;
8460 */
8461 -- End addition for bug 2781480
8462
8463 -- Added for bug 2179142
8464
8465 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)
8466 THEN
8467 x_party_history_tbl(i).old_party_id:=NULL;
8468 x_party_history_tbl(i).new_party_id:=NULL;
8469 END IF;
8470
8471 -- End addition for bug 2179142
8472 i := i + 1;
8473 --IF get_party_hist%NOTFOUND THEN
8474 --FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_TXN_ID');
8475 --FND_MSG_PUB.Add;
8476 --RAISE FND_API.G_EXC_ERROR;
8477 --END IF;
8478 END LOOP;
8479
8480 -- End of API body
8481
8482 -- Standard check of p_commit.
8483 /*
8484 IF FND_API.To_Boolean( p_commit ) THEN
8485 COMMIT WORK;
8486 END IF;
8487 */
8488
8489 /***** srramakr commented for bug # 3304439
8490 -- Check for the profile option and disable the trace
8491 IF (l_flag = 'Y') THEN
8492 dbms_session.set_sql_trace(false);
8493 END IF;
8494 -- End disable trace
8495 ****/
8496
8497 -- Standard call to get message count and if count is get message info.
8498 FND_MSG_PUB.Count_And_Get
8499 (p_count => x_msg_count ,
8500 p_data => x_msg_data );
8501 EXCEPTION
8502 WHEN FND_API.G_EXC_ERROR THEN
8503 -- ROLLBACK TO get_inst_party_rel_hist;
8504 x_return_status := FND_API.G_RET_STS_ERROR ;
8505 FND_MSG_PUB.Count_And_Get
8506 ( p_count => x_msg_count,
8507 p_data => x_msg_data );
8508 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8509 -- ROLLBACK TO get_inst_party_rel_hist;
8510 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8511 FND_MSG_PUB.Count_And_Get
8512 ( p_count => x_msg_count,
8513 p_data => x_msg_data );
8514 WHEN OTHERS THEN
8515 -- ROLLBACK TO get_inst_party_rel_hist;
8516 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8517 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
8518 FND_MSG_PUB.Add_Exc_Msg
8519 ( g_pkg_name ,
8520 l_api_name );
8521 END IF;
8522 FND_MSG_PUB.Count_And_Get
8523 ( p_count => x_msg_count,
8524 p_data => x_msg_data );
8525
8526 END get_inst_party_rel_hist;
8527
8528
8529
8530 /*------------------------------------------------------------*/
8531 /* Procedure name: get_inst_party_rel_hist */
8532 /* Description : Procedure used to get party relationships */
8533 /* from history given a transaction_id */
8534 /*------------------------------------------------------------*/
8535
8536 PROCEDURE get_inst_party_account_hist
8537 ( p_api_version IN NUMBER
8538 ,p_commit IN VARCHAR2
8539 ,p_init_msg_list IN VARCHAR2
8540 ,p_validation_level IN NUMBER
8541 ,p_transaction_id IN NUMBER
8542 ,x_account_history_tbl OUT NOCOPY csi_datastructures_pub.account_history_tbl
8543 ,x_return_status OUT NOCOPY VARCHAR2
8544 ,x_msg_count OUT NOCOPY NUMBER
8545 ,x_msg_data OUT NOCOPY VARCHAR2
8546 )IS
8547
8548 l_api_name CONSTANT VARCHAR2(30) := 'get_inst_party_account_hist' ;
8549 l_api_version CONSTANT NUMBER := 1.0 ;
8550 l_csi_debug_level NUMBER ;
8551 x_msg_index_out NUMBER ;
8552 l_count NUMBER := 0 ;
8553 l_flag VARCHAR2(1) :='N' ;
8554 i NUMBER :=1 ;
8555 l_account_header_tbl csi_datastructures_pub.party_account_header_tbl ;
8556 l_time_stamp DATE;
8557 l_party_account_query_rec csi_datastructures_pub.party_account_query_rec;
8558 CURSOR get_account_hist(i_transaction_id NUMBER)
8559 IS
8560 SELECT cah.IP_ACCOUNT_HISTORY_ID ,
8561 cah.IP_ACCOUNT_ID ,
8562 cah.TRANSACTION_ID ,
8563 cah.OLD_PARTY_ACCOUNT_ID ,
8564 cah.NEW_PARTY_ACCOUNT_ID ,
8565 cah.OLD_RELATIONSHIP_TYPE_CODE ,
8566 cah.NEW_RELATIONSHIP_TYPE_CODE ,
8567 cah.OLD_ACTIVE_START_DATE ,
8568 cah.NEW_ACTIVE_START_DATE ,
8569 cah.OLD_ACTIVE_END_DATE ,
8570 cah.NEW_ACTIVE_END_DATE ,
8571 cah.OLD_CONTEXT ,
8572 cah.NEW_CONTEXT ,
8573 cah.OLD_ATTRIBUTE1 ,
8574 cah.NEW_ATTRIBUTE1 ,
8575 cah.OLD_ATTRIBUTE2 ,
8576 cah.NEW_ATTRIBUTE2 ,
8577 cah.OLD_ATTRIBUTE3 ,
8578 cah.NEW_ATTRIBUTE3 ,
8579 cah.OLD_ATTRIBUTE4 ,
8580 cah.NEW_ATTRIBUTE4 ,
8581 cah.OLD_ATTRIBUTE5 ,
8582 cah.NEW_ATTRIBUTE5 ,
8583 cah.OLD_ATTRIBUTE6 ,
8584 cah.NEW_ATTRIBUTE6 ,
8585 cah.OLD_ATTRIBUTE7 ,
8586 cah.NEW_ATTRIBUTE7 ,
8587 cah.OLD_ATTRIBUTE8 ,
8588 cah.NEW_ATTRIBUTE8 ,
8589 cah.OLD_ATTRIBUTE9 ,
8590 cah.NEW_ATTRIBUTE9 ,
8591 cah.OLD_ATTRIBUTE10 ,
8592 cah.NEW_ATTRIBUTE10 ,
8593 cah.OLD_ATTRIBUTE11 ,
8594 cah.NEW_ATTRIBUTE11 ,
8595 cah.OLD_ATTRIBUTE12 ,
8596 cah.NEW_ATTRIBUTE12 ,
8597 cah.OLD_ATTRIBUTE13 ,
8598 cah.NEW_ATTRIBUTE13 ,
8599 cah.OLD_ATTRIBUTE14 ,
8600 cah.NEW_ATTRIBUTE14 ,
8601 cah.OLD_ATTRIBUTE15 ,
8602 cah.NEW_ATTRIBUTE15 ,
8603 cah.FULL_DUMP_FLAG ,
8604 cah.OBJECT_VERSION_NUMBER ,
8605 cah.OLD_BILL_TO_ADDRESS ,
8606 cah.NEW_BILL_TO_ADDRESS ,
8607 cah.OLD_SHIP_TO_ADDRESS ,
8608 cah.NEW_SHIP_TO_ADDRESS ,
8609 cip.INSTANCE_ID,
8610 cah.OLD_INSTANCE_PARTY_ID ,
8611 cah.NEW_INSTANCE_PARTY_ID,
8612 cah.creation_date
8613 FROM csi_ip_accounts_h cah,
8614 csi_ip_accounts ca,
8615 csi_i_parties cip
8616 WHERE cah.transaction_id = i_transaction_id
8617 AND cah.ip_account_id = ca.ip_account_id
8618 AND ca.instance_party_id = cip.instance_party_id; -- Added by sguthiva on 9-APR for bug 2304649
8619
8620 BEGIN
8621 -- Standard Start of API savepoint
8622 -- SAVEPOINT get_inst_party_account_hist;
8623
8624
8625 -- Standard call to check for call compatibility.
8626 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
8627 p_api_version ,
8628 l_api_name ,
8629 g_pkg_name )
8630 THEN
8631 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8632 END IF;
8633
8634 -- Initialize message list if p_init_msg_list is set to TRUE.
8635 IF FND_API.to_Boolean( p_init_msg_list ) THEN
8636 FND_MSG_PUB.initialize;
8637 END IF;
8638
8639 -- Initialize API return status to success
8640 x_return_status := FND_API.G_RET_STS_SUCCESS;
8641
8642 -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
8643 l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
8644
8645 -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
8646 IF (l_csi_debug_level > 0) THEN
8647 csi_gen_utility_pvt.put_line( 'get_inst_party_account_hist');
8648 END IF;
8649
8650 -- If the debug level = 2 then dump all the parameters values.
8651 IF (l_csi_debug_level > 1) THEN
8652 csi_gen_utility_pvt.put_line( 'get_inst_party_account_hist' ||
8653 p_api_version ||'-'||
8654 p_commit ||'-'||
8655 p_init_msg_list ||'-'||
8656 p_validation_level ||'-'||
8657 p_transaction_id );
8658 -- dump the in parameter in the log file
8659
8660 END IF;
8661
8662 /***** srramakr commented for bug # 3304439
8663 -- Check for the profile option and enable trace
8664 l_flag:=csi_gen_utility_pvt.enable_trace(l_trace_flag => l_flag);
8665 -- End enable trace
8666 ****/
8667
8668 -- Start API body
8669
8670 FOR l_acct_hist_csr IN get_account_hist(p_transaction_id)
8671 LOOP
8672 x_account_history_tbl(i).ip_account_id := l_acct_hist_csr.ip_account_id;
8673 x_account_history_tbl(i).ip_account_history_id := l_acct_hist_csr.ip_account_history_id;
8674 x_account_history_tbl(i).transaction_id := l_acct_hist_csr.transaction_id;
8675
8676 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)
8677 THEN
8678 x_account_history_tbl(i).old_party_account_id := NULL;
8679 x_account_history_tbl(i).new_party_account_id := NULL;
8680 ELSE
8681 x_account_history_tbl(i).old_party_account_id := l_acct_hist_csr.old_party_account_id;
8682 x_account_history_tbl(i).new_party_account_id := l_acct_hist_csr.new_party_account_id;
8683 END IF;
8684
8685 IF NVL(l_acct_hist_csr.old_relationship_type_code,fnd_api.g_miss_char) =
8686 NVL(l_acct_hist_csr.new_relationship_type_code,fnd_api.g_miss_num)
8687 THEN
8688 x_account_history_tbl(i).old_relationship_type_code := NULL;
8689 x_account_history_tbl(i).new_relationship_type_code := NULL;
8690 ELSE
8691 x_account_history_tbl(i).old_relationship_type_code := l_acct_hist_csr.old_relationship_type_code;
8692 x_account_history_tbl(i).new_relationship_type_code := l_acct_hist_csr.new_relationship_type_code;
8693 END IF;
8694
8695 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)
8696 THEN
8697 x_account_history_tbl(i).old_active_start_date := NULL;
8698 x_account_history_tbl(i).new_active_start_date := NULL;
8699 ELSE
8700 x_account_history_tbl(i).old_active_start_date := l_acct_hist_csr.old_active_start_date;
8701 x_account_history_tbl(i).new_active_start_date := l_acct_hist_csr.new_active_start_date;
8702 END IF;
8703
8704 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)
8705 THEN
8706 x_account_history_tbl(i).old_active_end_date := NULL;
8707 x_account_history_tbl(i).new_active_end_date := NULL;
8708 ELSE
8709 x_account_history_tbl(i).old_active_end_date := l_acct_hist_csr.old_active_end_date;
8710 x_account_history_tbl(i).new_active_end_date := l_acct_hist_csr.new_active_end_date;
8711 END IF;
8712
8713 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)
8714 THEN
8715 x_account_history_tbl(i).old_context := NULL;
8716 x_account_history_tbl(i).new_context := NULL;
8717 ELSE
8718 x_account_history_tbl(i).old_context := l_acct_hist_csr.old_context;
8719 x_account_history_tbl(i).new_context := l_acct_hist_csr.new_context;
8720 END IF;
8721
8722 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)
8723 THEN
8724 x_account_history_tbl(i).old_attribute1 := NULL;
8725 x_account_history_tbl(i).new_attribute1 := NULL;
8726 ELSE
8727 x_account_history_tbl(i).old_attribute1 := l_acct_hist_csr.old_attribute1;
8728 x_account_history_tbl(i).new_attribute1 := l_acct_hist_csr.new_attribute1;
8729 END IF;
8730
8731 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)
8732 THEN
8733 x_account_history_tbl(i).old_attribute2 := NULL;
8734 x_account_history_tbl(i).new_attribute2 := NULL;
8735 ELSE
8736 x_account_history_tbl(i).old_attribute2 := l_acct_hist_csr.old_attribute2;
8737 x_account_history_tbl(i).new_attribute2 := l_acct_hist_csr.new_attribute2;
8738 END IF;
8739
8740 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)
8741 THEN
8742 x_account_history_tbl(i).old_attribute3 := NULL;
8743 x_account_history_tbl(i).new_attribute3 := NULL;
8744 ELSE
8745 x_account_history_tbl(i).old_attribute3 := l_acct_hist_csr.old_attribute3;
8746 x_account_history_tbl(i).new_attribute3 := l_acct_hist_csr.new_attribute3;
8747 END IF;
8748
8749
8750 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)
8751 THEN
8752 x_account_history_tbl(i).old_attribute4 := NULL;
8753 x_account_history_tbl(i).new_attribute4 := NULL;
8754 ELSE
8755 x_account_history_tbl(i).old_attribute4 := l_acct_hist_csr.old_attribute4;
8756 x_account_history_tbl(i).new_attribute4 := l_acct_hist_csr.new_attribute4;
8757 END IF;
8758
8759 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)
8760 THEN
8761 x_account_history_tbl(i).old_attribute5 := NULL;
8762 x_account_history_tbl(i).new_attribute5 := NULL;
8763 ELSE
8764 x_account_history_tbl(i).old_attribute5 := l_acct_hist_csr.old_attribute5;
8765 x_account_history_tbl(i).new_attribute5 := l_acct_hist_csr.new_attribute5;
8766 END IF;
8767
8768 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)
8769 THEN
8770 x_account_history_tbl(i).old_attribute6 := NULL;
8771 x_account_history_tbl(i).new_attribute6 := NULL;
8772 ELSE
8773 x_account_history_tbl(i).old_attribute6 := l_acct_hist_csr.old_attribute6;
8774 x_account_history_tbl(i).new_attribute6 := l_acct_hist_csr.new_attribute6;
8775 END IF;
8776
8777 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)
8778 THEN
8779 x_account_history_tbl(i).old_attribute7 := NULL;
8780 x_account_history_tbl(i).new_attribute7 := NULL;
8781 ELSE
8782 x_account_history_tbl(i).old_attribute7 := l_acct_hist_csr.old_attribute7;
8783 x_account_history_tbl(i).new_attribute7 := l_acct_hist_csr.new_attribute7;
8784 END IF;
8785
8786 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)
8787 THEN
8788 x_account_history_tbl(i).old_attribute8 := NULL;
8789 x_account_history_tbl(i).new_attribute8 := NULL;
8790 ELSE
8791 x_account_history_tbl(i).old_attribute8 := l_acct_hist_csr.old_attribute8;
8792 x_account_history_tbl(i).new_attribute8 := l_acct_hist_csr.new_attribute8;
8793 END IF;
8794
8795 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)
8796 THEN
8797 x_account_history_tbl(i).old_attribute9 := NULL;
8798 x_account_history_tbl(i).new_attribute9 := NULL;
8799 ELSE
8800 x_account_history_tbl(i).old_attribute9 := l_acct_hist_csr.old_attribute9;
8801 x_account_history_tbl(i).new_attribute9 := l_acct_hist_csr.new_attribute9;
8802 END IF;
8803
8804 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)
8805 THEN
8806 x_account_history_tbl(i).old_attribute10 := NULL;
8807 x_account_history_tbl(i).new_attribute10 := NULL;
8808 ELSE
8809 x_account_history_tbl(i).old_attribute10 := l_acct_hist_csr.old_attribute10;
8810 x_account_history_tbl(i).new_attribute10 := l_acct_hist_csr.new_attribute10;
8811 END IF;
8812
8813 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)
8814 THEN
8815 x_account_history_tbl(i).old_attribute11 := NULL;
8816 x_account_history_tbl(i).new_attribute11 := NULL;
8817 ELSE
8818 x_account_history_tbl(i).old_attribute11 := l_acct_hist_csr.old_attribute11;
8819 x_account_history_tbl(i).new_attribute11 := l_acct_hist_csr.new_attribute11;
8820 END IF;
8821
8822 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)
8823 THEN
8824 x_account_history_tbl(i).old_attribute12 := NULL;
8825 x_account_history_tbl(i).new_attribute12 := NULL;
8826 ELSE
8827 x_account_history_tbl(i).old_attribute12 := l_acct_hist_csr.old_attribute12;
8828 x_account_history_tbl(i).new_attribute12 := l_acct_hist_csr.new_attribute12;
8829 END IF;
8830
8831 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)
8832 THEN
8833 x_account_history_tbl(i).old_attribute13 := NULL;
8834 x_account_history_tbl(i).new_attribute13 := NULL;
8835 ELSE
8836 x_account_history_tbl(i).old_attribute13 := l_acct_hist_csr.old_attribute13;
8837 x_account_history_tbl(i).new_attribute13 := l_acct_hist_csr.new_attribute13;
8838 END IF;
8839
8840 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)
8841 THEN
8842 x_account_history_tbl(i).old_attribute14 := NULL;
8843 x_account_history_tbl(i).new_attribute14 := NULL;
8844 ELSE
8845 x_account_history_tbl(i).old_attribute14 := l_acct_hist_csr.old_attribute14;
8846 x_account_history_tbl(i).new_attribute14 := l_acct_hist_csr.new_attribute14;
8847 END IF;
8848
8849 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)
8850 THEN
8851 x_account_history_tbl(i).old_attribute15 := NULL;
8852 x_account_history_tbl(i).new_attribute15 := NULL;
8853 ELSE
8854 x_account_history_tbl(i).old_attribute15 := l_acct_hist_csr.old_attribute15;
8855 x_account_history_tbl(i).new_attribute15 := l_acct_hist_csr.new_attribute15;
8856 END IF;
8857
8858 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)
8859 THEN
8860 x_account_history_tbl(i).old_bill_to_address := NULL;
8861 x_account_history_tbl(i).new_bill_to_address := NULL;
8862 ELSE
8863 x_account_history_tbl(i).old_bill_to_address := l_acct_hist_csr.old_bill_to_address;
8864 x_account_history_tbl(i).new_bill_to_address := l_acct_hist_csr.new_bill_to_address;
8865 END IF;
8866
8867 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)
8868 THEN
8869 x_account_history_tbl(i).old_ship_to_address := NULL;
8870 x_account_history_tbl(i).new_ship_to_address := NULL;
8871 ELSE
8872 x_account_history_tbl(i).old_ship_to_address := l_acct_hist_csr.old_ship_to_address;
8873 x_account_history_tbl(i).new_ship_to_address := l_acct_hist_csr.new_ship_to_address;
8874 END IF;
8875
8876 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)
8877 THEN
8878 x_account_history_tbl(i).old_instance_party_id := NULL;
8879 x_account_history_tbl(i).new_instance_party_id := NULL;
8880 ELSE
8881 x_account_history_tbl(i).old_instance_party_id := l_acct_hist_csr.old_instance_party_id;
8882 x_account_history_tbl(i).new_instance_party_id := l_acct_hist_csr.new_instance_party_id;
8883 END IF;
8884
8885 x_account_history_tbl(i).object_version_number := l_acct_hist_csr.object_version_number;
8886 x_account_history_tbl(i).instance_id := l_acct_hist_csr.instance_id; -- added by sguthiva on 9-apr for bug 2304649
8887 x_account_history_tbl(i).full_dump_flag := l_acct_hist_csr.full_dump_flag;
8888
8889 IF (x_account_history_tbl(i).old_relationship_type_code IS NULL AND
8890 x_account_history_tbl(i).new_relationship_type_code IS NULL ) OR
8891 (x_account_history_tbl(i).old_party_account_id IS NULL AND
8892 x_account_history_tbl(i).new_party_account_id IS NULL)
8893 THEN
8894 l_party_account_query_rec.ip_account_id := x_account_history_tbl(i).ip_account_id;
8895 l_time_stamp:=l_acct_hist_csr.creation_date;
8896 csi_party_relationships_pub.get_inst_party_accounts
8897 ( p_api_version => p_api_version
8898 ,p_commit => p_commit
8899 ,p_init_msg_list => p_init_msg_list
8900 ,p_validation_level => p_validation_level
8901 ,p_account_query_rec => l_party_account_query_rec
8902 ,p_resolve_id_columns => fnd_api.g_false
8903 ,p_time_stamp => l_time_stamp
8904 ,x_account_header_tbl => l_account_header_tbl
8905 ,x_return_status => x_return_status
8906 ,x_msg_count => x_msg_count
8907 ,x_msg_data => x_msg_data);
8908
8909 IF (x_account_history_tbl(i).old_relationship_type_code IS NULL AND
8910 x_account_history_tbl(i).new_relationship_type_code IS NULL )
8911 THEN
8912 x_account_history_tbl(i).old_relationship_type_code := l_account_header_tbl(1).relationship_type_code;
8913 x_account_history_tbl(i).new_relationship_type_code := l_account_header_tbl(1).relationship_type_code;
8914 END IF;
8915
8916 IF (x_account_history_tbl(i).old_party_account_id IS NULL AND
8917 x_account_history_tbl(i).new_party_account_id IS NULL)
8918 THEN
8919 x_account_history_tbl(i).old_party_account_id := l_account_header_tbl(1).party_account_id;
8920 x_account_history_tbl(i).new_party_account_id := l_account_header_tbl(1).party_account_id;
8921 END IF;
8922
8923 END IF;
8924
8925 -- Resolve old history columns;
8926 l_account_header_tbl(1).party_account_id := x_account_history_tbl(i).OLD_PARTY_ACCOUNT_ID;
8927 l_account_header_tbl(1).bill_to_address := x_account_history_tbl(i).OLD_BILL_TO_ADDRESS;
8928 l_account_header_tbl(1).ship_to_address := x_account_history_tbl(i).OLD_SHIP_TO_ADDRESS;
8929 l_account_header_tbl(1).party_account_number := NULL;
8930 l_account_header_tbl(1).party_account_name := NULL;
8931 l_account_header_tbl(1).bill_to_location := NULL;
8932 l_account_header_tbl(1).ship_to_location := NULL;
8933 -- Following columns were added for bug 2670371
8934 l_account_header_tbl(1).bill_to_address1 := NULL;
8935 l_account_header_tbl(1).bill_to_address2 := NULL;
8936 l_account_header_tbl(1).bill_to_address3 := NULL;
8937 l_account_header_tbl(1).bill_to_address4 := NULL;
8938 l_account_header_tbl(1).bill_to_city := NULL;
8939 l_account_header_tbl(1).bill_to_state := NULL;
8940 l_account_header_tbl(1).bill_to_postal_code := NULL;
8941 l_account_header_tbl(1).bill_to_country := NULL;
8942 l_account_header_tbl(1).ship_to_address1 := NULL;
8943 l_account_header_tbl(1).ship_to_address2 := NULL;
8944 l_account_header_tbl(1).ship_to_address3 := NULL;
8945 l_account_header_tbl(1).ship_to_address4 := NULL;
8946 l_account_header_tbl(1).ship_to_city := NULL;
8947 l_account_header_tbl(1).ship_to_state := NULL;
8948 l_account_header_tbl(1).ship_to_postal_code := NULL;
8949 l_account_header_tbl(1).ship_to_country := NULL;
8950
8951
8952 csi_party_relationships_pvt.Resolve_id_columns(l_account_header_tbl);
8953
8954 x_account_history_tbl(i).old_party_account_number := l_account_header_tbl(1).party_account_number;
8955 x_account_history_tbl(i).old_party_account_name := l_account_header_tbl(1).party_account_name;
8956 x_account_history_tbl(i).old_bill_to_location := l_account_header_tbl(1).bill_to_location;
8957 x_account_history_tbl(i).old_ship_to_location := l_account_header_tbl(1).ship_to_location;
8958
8959 -- Following columns were added for bug 2670371
8960 x_account_history_tbl(i).old_bill_to_address1 := l_account_header_tbl(1).bill_to_address1;
8961 x_account_history_tbl(i).old_bill_to_address2 := l_account_header_tbl(1).bill_to_address2;
8962 x_account_history_tbl(i).old_bill_to_address3 := l_account_header_tbl(1).bill_to_address3;
8963 x_account_history_tbl(i).old_bill_to_address4 := l_account_header_tbl(1).bill_to_address4;
8964 x_account_history_tbl(i).old_bill_to_city := l_account_header_tbl(1).bill_to_city;
8965 x_account_history_tbl(i).old_bill_to_state := l_account_header_tbl(1).bill_to_state;
8966 x_account_history_tbl(i).old_bill_to_postal_code := l_account_header_tbl(1).bill_to_postal_code;
8967 x_account_history_tbl(i).old_bill_to_country := l_account_header_tbl(1).bill_to_country;
8968 x_account_history_tbl(i).old_ship_to_address1 := l_account_header_tbl(1).ship_to_address1;
8969 x_account_history_tbl(i).old_ship_to_address2 := l_account_header_tbl(1).ship_to_address2;
8970 x_account_history_tbl(i).old_ship_to_address3 := l_account_header_tbl(1).ship_to_address3;
8971 x_account_history_tbl(i).old_ship_to_address4 := l_account_header_tbl(1).ship_to_address4;
8972 x_account_history_tbl(i).old_ship_to_city := l_account_header_tbl(1).ship_to_city;
8973 x_account_history_tbl(i).old_ship_to_state := l_account_header_tbl(1).ship_to_state;
8974 x_account_history_tbl(i).old_ship_to_postal_code := l_account_header_tbl(1).ship_to_postal_code;
8975 x_account_history_tbl(i).old_ship_to_country := l_account_header_tbl(1).ship_to_country;
8976 -- Resolve new history columns;
8977 l_account_header_tbl(1).party_account_id := x_account_history_tbl(i).NEW_PARTY_ACCOUNT_ID;
8978 l_account_header_tbl(1).bill_to_address := x_account_history_tbl(i).NEW_BILL_TO_ADDRESS;
8979 l_account_header_tbl(1).ship_to_address := x_account_history_tbl(i).NEW_SHIP_TO_ADDRESS;
8980 l_account_header_tbl(1).party_account_number := NULL;
8981 l_account_header_tbl(1).party_account_name := NULL;
8982 l_account_header_tbl(1).bill_to_location := NULL;
8983 l_account_header_tbl(1).ship_to_location := NULL;
8984
8985 -- Following columns were added for bug 2670371
8986 l_account_header_tbl(1).bill_to_address1 := NULL;
8987 l_account_header_tbl(1).bill_to_address2 := NULL;
8988 l_account_header_tbl(1).bill_to_address3 := NULL;
8989 l_account_header_tbl(1).bill_to_address4 := NULL;
8990 l_account_header_tbl(1).bill_to_city := NULL;
8991 l_account_header_tbl(1).bill_to_state := NULL;
8992 l_account_header_tbl(1).bill_to_postal_code := NULL;
8993 l_account_header_tbl(1).bill_to_country := NULL;
8994 l_account_header_tbl(1).ship_to_address1 := NULL;
8995 l_account_header_tbl(1).ship_to_address2 := NULL;
8996 l_account_header_tbl(1).ship_to_address3 := NULL;
8997 l_account_header_tbl(1).ship_to_address4 := NULL;
8998 l_account_header_tbl(1).ship_to_city := NULL;
8999 l_account_header_tbl(1).ship_to_state := NULL;
9000 l_account_header_tbl(1).ship_to_postal_code := NULL;
9001 l_account_header_tbl(1).ship_to_country := NULL;
9002
9003 csi_party_relationships_pvt.Resolve_id_columns(l_account_header_tbl);
9004
9005 x_account_history_tbl(i).new_party_account_number := l_account_header_tbl(1).party_account_number;
9006 x_account_history_tbl(i).new_party_account_name := l_account_header_tbl(1).party_account_name;
9007 x_account_history_tbl(i).new_bill_to_location := l_account_header_tbl(1).bill_to_location;
9008 x_account_history_tbl(i).new_ship_to_location := l_account_header_tbl(1).ship_to_location;
9009
9010 -- Following columns were added for bug 2670371
9011
9012 x_account_history_tbl(i).new_bill_to_address1 := l_account_header_tbl(1).bill_to_address1;
9013 x_account_history_tbl(i).new_bill_to_address2 := l_account_header_tbl(1).bill_to_address2;
9014 x_account_history_tbl(i).new_bill_to_address3 := l_account_header_tbl(1).bill_to_address3;
9015 x_account_history_tbl(i).new_bill_to_address4 := l_account_header_tbl(1).bill_to_address4;
9016 x_account_history_tbl(i).new_bill_to_city := l_account_header_tbl(1).bill_to_city;
9017 x_account_history_tbl(i).new_bill_to_state := l_account_header_tbl(1).bill_to_state;
9018 x_account_history_tbl(i).new_bill_to_postal_code := l_account_header_tbl(1).bill_to_postal_code;
9019 x_account_history_tbl(i).new_bill_to_country := l_account_header_tbl(1).bill_to_country;
9020 x_account_history_tbl(i).new_ship_to_address1 := l_account_header_tbl(1).ship_to_address1;
9021 x_account_history_tbl(i).new_ship_to_address2 := l_account_header_tbl(1).ship_to_address2;
9022 x_account_history_tbl(i).new_ship_to_address3 := l_account_header_tbl(1).ship_to_address3;
9023 x_account_history_tbl(i).new_ship_to_address4 := l_account_header_tbl(1).ship_to_address4;
9024 x_account_history_tbl(i).new_ship_to_city := l_account_header_tbl(1).ship_to_city;
9025 x_account_history_tbl(i).new_ship_to_state := l_account_header_tbl(1).ship_to_state;
9026 x_account_history_tbl(i).new_ship_to_postal_code := l_account_header_tbl(1).ship_to_postal_code;
9027 x_account_history_tbl(i).new_ship_to_country := l_account_header_tbl(1).ship_to_country;
9028
9029 IF NVL(x_account_history_tbl(i).old_party_account_id,fnd_api.g_miss_num)=
9030 NVL(x_account_history_tbl(i).new_party_account_id,fnd_api.g_miss_num)
9031 THEN
9032 x_account_history_tbl(i).old_party_account_id := NULL;
9033 x_account_history_tbl(i).new_party_account_id := NULL;
9034 END IF;
9035
9036
9037 i := i + 1;
9038
9039 END LOOP;
9040
9041 -- End of API body
9042
9043 -- Standard check of p_commit.
9044 /*
9045 IF FND_API.To_Boolean( p_commit ) THEN
9046 COMMIT WORK;
9047 END IF;
9048 */
9049
9050 /***** srramakr commented for bug # 3304439
9051 -- Check for the profile option and disable the trace
9052 IF (l_flag = 'Y') THEN
9053 dbms_session.set_sql_trace(false);
9054 END IF;
9055 -- End disable trace
9056 ****/
9057
9058 -- Standard call to get message count and if count is get message info.
9059 FND_MSG_PUB.Count_And_Get
9060 (p_count => x_msg_count ,
9061 p_data => x_msg_data );
9062 EXCEPTION
9063 WHEN FND_API.G_EXC_ERROR THEN
9064 -- ROLLBACK TO get_inst_party_account_hist;
9065 x_return_status := FND_API.G_RET_STS_ERROR ;
9066 FND_MSG_PUB.Count_And_Get
9067 ( p_count => x_msg_count,
9068 p_data => x_msg_data );
9069 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9070 -- ROLLBACK TO get_inst_party_account_hist;
9071 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9072 FND_MSG_PUB.Count_And_Get
9073 ( p_count => x_msg_count,
9074 p_data => x_msg_data );
9075 WHEN OTHERS THEN
9076 -- ROLLBACK TO get_inst_party_account_hist;
9077 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9078 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
9079 FND_MSG_PUB.Add_Exc_Msg
9080 ( g_pkg_name ,
9081 l_api_name );
9082 END IF;
9083 FND_MSG_PUB.Count_And_Get
9084 ( p_count => x_msg_count,
9085 p_data => x_msg_data );
9086
9087 END get_inst_party_account_hist;
9088
9089 END csi_party_relationships_pvt ;