[Home] [Help]
PACKAGE BODY: APPS.CSI_SYSTEMS_PVT
Source
1 PACKAGE BODY csi_systems_pvt AS
2 /* $Header: csivsysb.pls 120.3.12010000.2 2008/11/06 20:33:46 mashah ship $ */
3 -- start of comments
4 -- package name : csi_systems_pvt
5 -- purpose :
6 -- history :
7 -- note :
8 -- END of comments
9
10
11 g_pkg_name CONSTANT VARCHAR2(30) := 'CSI_SYSTEMS_PVT';
12 g_file_name CONSTANT VARCHAR2(12) := 'csivsysb.pls';
13
14 PROCEDURE validate_system_id (
15 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
16 p_validation_mode IN VARCHAR2 ,
17 p_system_id IN NUMBER ,
18 x_return_status OUT NOCOPY VARCHAR2 ,
19 x_msg_count OUT NOCOPY NUMBER ,
20 x_msg_data OUT NOCOPY VARCHAR2
21 );
22
23
24 PROCEDURE validate_customer_id (
25 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
26 p_validation_mode IN VARCHAR2 ,
27 p_customer_id IN NUMBER ,
28 x_return_status OUT NOCOPY VARCHAR2 ,
29 x_msg_count OUT NOCOPY NUMBER ,
30 x_msg_data OUT NOCOPY VARCHAR2
31 );
32
33
34 PROCEDURE validate_system_type_code (
35 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
36 p_validation_mode IN VARCHAR2 ,
37 p_system_type_code IN VARCHAR2 ,
38 x_return_status OUT NOCOPY VARCHAR2 ,
39 x_msg_count OUT NOCOPY NUMBER ,
40 x_msg_data OUT NOCOPY VARCHAR2
41 );
42
43
44
45 PROCEDURE validate_parent_system_id (
46 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
47 p_validation_mode IN VARCHAR2 ,
48 p_parent_system_id IN NUMBER ,
49 x_return_status OUT NOCOPY VARCHAR2 ,
50 x_msg_count OUT NOCOPY NUMBER ,
51 x_msg_data OUT NOCOPY VARCHAR2
52 );
53
54
55 PROCEDURE validate_ship_to_contact_id (
56 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
57 p_validation_mode IN VARCHAR2 ,
58 p_ship_to_contact_id IN NUMBER ,
59 x_return_status OUT NOCOPY VARCHAR2 ,
60 x_msg_count OUT NOCOPY NUMBER ,
61 x_msg_data OUT NOCOPY VARCHAR2
62 );
63
64
65 PROCEDURE validate_bill_to_contact_id (
66 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
67 p_validation_mode IN VARCHAR2 ,
68 p_bill_to_contact_id IN NUMBER ,
69 x_return_status OUT NOCOPY VARCHAR2 ,
70 x_msg_count OUT NOCOPY NUMBER ,
71 x_msg_data OUT NOCOPY VARCHAR2
72 );
73
74 PROCEDURE validate_technical_contact_id (
75 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
76 p_validation_mode IN VARCHAR2 ,
77 p_technical_contact_id IN NUMBER ,
78 x_return_status OUT NOCOPY VARCHAR2 ,
79 x_msg_count OUT NOCOPY NUMBER ,
80 x_msg_data OUT NOCOPY VARCHAR2
81 );
82
83
84 PROCEDURE validate_srv_admin_cont_id (
85 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
86 p_validation_mode IN VARCHAR2 ,
87 p_service_admin_contact_id IN NUMBER ,
88 x_return_status OUT NOCOPY VARCHAR2 ,
89 x_msg_count OUT NOCOPY NUMBER ,
90 x_msg_data OUT NOCOPY VARCHAR2
91 );
92
93
94 PROCEDURE validate_ship_to_site_use_id (
95 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
96 p_validation_mode IN VARCHAR2 ,
97 p_ship_to_site_use_id IN NUMBER ,
98 x_return_status OUT NOCOPY VARCHAR2 ,
99 x_msg_count OUT NOCOPY NUMBER ,
100 x_msg_data OUT NOCOPY VARCHAR2
101 );
102
103
104 PROCEDURE validate_bill_to_site_use_id (
105 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
106 p_validation_mode IN VARCHAR2 ,
107 p_bill_to_site_use_id IN NUMBER ,
108 x_return_status OUT NOCOPY VARCHAR2 ,
109 x_msg_count OUT NOCOPY NUMBER ,
110 x_msg_data OUT NOCOPY VARCHAR2
111 );
112
113
114 PROCEDURE validate_install_site_use_id (
115 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
116 p_validation_mode IN VARCHAR2 ,
117 p_install_site_use_id IN NUMBER ,
118 x_return_status OUT NOCOPY VARCHAR2 ,
119 x_msg_count OUT NOCOPY NUMBER ,
120 x_msg_data OUT NOCOPY VARCHAR2
121 );
122
123 PROCEDURE validate_start_end_date (
124 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
125 p_validation_mode IN VARCHAR2 ,
126 p_system_id IN NUMBER ,
127 p_start_date IN DATE ,
128 p_end_date IN DATE ,
129 x_return_status OUT NOCOPY VARCHAR2 ,
130 x_msg_count OUT NOCOPY NUMBER ,
131 x_msg_data OUT NOCOPY VARCHAR2
132 );
133
134 PROCEDURE validate_object_version_num (
135 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
136 p_validation_mode IN VARCHAR2 ,
137 p_object_version_number IN NUMBER ,
138 x_return_status OUT NOCOPY VARCHAR2 ,
139 x_msg_count OUT NOCOPY NUMBER ,
140 x_msg_data OUT NOCOPY VARCHAR2
141 );
142
143 PROCEDURE validate_name (
144 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
145 p_validation_mode IN VARCHAR2 ,
146 p_name IN VARCHAR2 ,
147 x_return_status OUT NOCOPY VARCHAR2 ,
148 x_msg_count OUT NOCOPY NUMBER ,
149 x_msg_data OUT NOCOPY VARCHAR2
150 );
151
152 PROCEDURE validate_auto_sys_id (
153 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
154 p_validation_mode IN VARCHAR2 ,
155 p_auto_sys_id IN NUMBER ,
156 x_return_status OUT NOCOPY VARCHAR2 ,
157 x_msg_count OUT NOCOPY NUMBER ,
158 x_msg_data OUT NOCOPY VARCHAR2
159 );
160
161
162 PROCEDURE define_columns(
163 p_system_rec IN csi_datastructures_pub.system_rec,
164 p_cur_get_systems IN NUMBER
165 )
166 IS
167 BEGIN
168
169 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 1, p_system_rec.system_id);
170 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 2, p_system_rec.customer_id);
171 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 3, p_system_rec.system_type_code,30);
172 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 4, p_system_rec.system_number,30);
173 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 5, p_system_rec.parent_system_id);
174 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 6, p_system_rec.ship_to_contact_id);
175 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 7, p_system_rec.bill_to_contact_id);
176 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 8, p_system_rec.technical_contact_id);
177 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 9, p_system_rec.service_admin_contact_id);
178 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 10, p_system_rec.ship_to_site_use_id);
179 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 11, p_system_rec.bill_to_site_use_id);
180 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 12, p_system_rec.install_site_use_id);
181 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 13, p_system_rec.coterminate_day_month,6);
182 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 14, p_system_rec.autocreated_from_system_id);
183 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 15, p_system_rec.start_date_active);
184 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 16, p_system_rec.end_date_active);
185 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 17, p_system_rec.context,30);
186 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 18, p_system_rec.attribute1,240);
187 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 19, p_system_rec.attribute2,240);
188 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 20, p_system_rec.attribute3,240);
189 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 21, p_system_rec.attribute4,240);
190 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 22, p_system_rec.attribute5,240);
191 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 23, p_system_rec.attribute6,240);
192 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 24, p_system_rec.attribute7,240);
193 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 25, p_system_rec.attribute8,240);
194 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 26, p_system_rec.attribute9,240);
195 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 27, p_system_rec.attribute10,240);
196 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 28, p_system_rec.attribute11,240);
197 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 29, p_system_rec.attribute12,240);
198 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 30, p_system_rec.attribute13,240);
199 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 31, p_system_rec.attribute14,240);
200 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 32, p_system_rec.attribute15,240);
201 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 33, p_system_rec.object_version_number);
202 DBMS_SQL.DEFINE_COLUMN(p_cur_get_systems, 34, p_system_rec.operating_unit_id);
203 END define_columns;
204
205 PROCEDURE get_column_values(
206 p_cur_get_systems IN NUMBER,
207 x_sys_rec OUT NOCOPY csi_datastructures_pub.system_rec
208 )
209 IS
210 BEGIN
211 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 1, x_sys_rec.system_id);
212 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 2, x_sys_rec.customer_id);
213 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 3, x_sys_rec.system_type_code);
214 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 4, x_sys_rec.system_number);
215 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 5, x_sys_rec.parent_system_id);
216 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 6, x_sys_rec.ship_to_contact_id);
217 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 7, x_sys_rec.bill_to_contact_id);
218 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 8, x_sys_rec.technical_contact_id);
219 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 9, x_sys_rec.service_admin_contact_id);
220 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 10, x_sys_rec.ship_to_site_use_id);
221 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 11, x_sys_rec.bill_to_site_use_id);
222 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 12, x_sys_rec.install_site_use_id);
223 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 13, x_sys_rec.coterminate_day_month);
224 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 14, x_sys_rec.autocreated_from_system_id);
225 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 15, x_sys_rec.start_date_active);
226 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 16, x_sys_rec.end_date_active);
227 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 17, x_sys_rec.context);
228 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 18, x_sys_rec.attribute1);
229 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 19, x_sys_rec.attribute2);
230 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 20, x_sys_rec.attribute3);
231 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 21, x_sys_rec.attribute4);
232 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 22, x_sys_rec.attribute5);
233 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 23, x_sys_rec.attribute6);
234 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 24, x_sys_rec.attribute7);
235 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 25, x_sys_rec.attribute8);
236 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 26, x_sys_rec.attribute9);
237 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 27, x_sys_rec.attribute10);
238 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 28, x_sys_rec.attribute11);
239 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 29, x_sys_rec.attribute12);
240 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 30, x_sys_rec.attribute13);
241 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 31, x_sys_rec.attribute14);
242 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 32, x_sys_rec.attribute15);
243 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 33, x_sys_rec.object_version_number);
244 DBMS_SQL.COLUMN_VALUE(p_cur_get_systems, 34, x_sys_rec.operating_unit_id);
245
246 END get_column_values;
247
248
249 PROCEDURE bind(
250 p_system_query_rec IN csi_datastructures_pub.system_query_rec,
251 p_cur_get_systems IN NUMBER
252 )
253 IS
254 BEGIN
255
256
257
258 IF( (p_system_query_rec.system_id IS NOT NULL) AND (p_system_query_rec.system_id <> fnd_api.g_miss_num) )
259 THEN
260 dbms_sql.bind_variable(p_cur_get_systems, 'system_id', p_system_query_rec.system_id);
261 END IF;
262
263 IF( (p_system_query_rec.system_type_code IS NOT NULL) AND (p_system_query_rec.system_type_code <> fnd_api.g_miss_char) )
264 THEN
265 dbms_sql.bind_variable(p_cur_get_systems, 'system_type_code', p_system_query_rec.system_type_code);
266 END IF;
267
268 IF( (p_system_query_rec.system_number IS NOT NULL) AND (p_system_query_rec.system_number <> fnd_api.g_miss_char) )
269 THEN
270 dbms_sql.bind_variable(p_cur_get_systems, 'system_number', p_system_query_rec.system_number);
271 END IF;
272
273 END bind;
274
275
276 PROCEDURE gen_select(
277 p_system_query_rec IN csi_datastructures_pub.system_query_rec,
278 x_select_cl OUT NOCOPY VARCHAR2
279 )
280 IS
281 BEGIN
282
283 x_select_cl := 'SELECT distinct system_id,customer_id,system_type_code,system_number,
284 parent_system_id,ship_to_contact_id,bill_to_contact_id,technical_contact_id,
285 service_admin_contact_id,ship_to_site_use_id,bill_to_site_use_id,
286 install_site_use_id,coterminate_day_month,autocreated_from_system_id,
287 start_date_active,end_date_active,context,attribute1,attribute2,attribute3,
288 attribute4,attribute5,attribute6,attribute7,attribute8,attribute9,attribute10,
289 attribute11,attribute12,attribute13,attribute14,attribute15,object_version_number,
290 operating_unit_id
291 FROM csi_systems_b ';
292
293
294
295 END gen_select;
296
297 PROCEDURE gen_systems_where(
298 p_system_query_rec IN csi_datastructures_pub.system_query_rec,
299 p_active_systems_only IN VARCHAR2,
300 x_systems_where OUT NOCOPY VARCHAR2
301 )
302 IS
303 CURSOR c_chk_str1(p_rec_item VARCHAR2) IS
304 SELECT instr(p_rec_item, '%', 1, 1)
305 FROM dual;
306 CURSOR c_chk_str2(p_rec_item VARCHAR2) IS
307 SELECT instr(p_rec_item, '_', 1, 1)
308 FROM dual;
309
310 str_csr1 NUMBER;
311 str_csr2 NUMBER;
312 i NUMBER;
313 l_operator VARCHAR2(10);
314
315 BEGIN
316
317
318 IF( (p_system_query_rec.system_id IS NOT NULL) AND (p_system_query_rec.system_id <> fnd_api.g_miss_num) )
319 THEN
320 IF(x_systems_where IS NULL) THEN
321 x_systems_where := ' WHERE ';
322 ELSE
323 x_systems_where := x_systems_where || ' AND ';
324 END IF;
325 x_systems_where := x_systems_where || 'system_id = :system_id';
326 END IF;
327
328
329 IF( (p_system_query_rec.system_type_code IS NOT NULL) AND (p_system_query_rec.system_type_code <> fnd_api.g_miss_char) )
330 THEN
331
332 i:=0;
333 -- check IF item value contains '%' wildcard
334 OPEN c_chk_str1(p_system_query_rec.system_type_code);
335 FETCH c_chk_str1 INTO str_csr1;
336 CLOSE c_chk_str1;
337 IF(str_csr1 <> 0) THEN
338 l_operator := ' like ';
339 i:=1;
340 ELSE
341 l_operator := ' = ';
342 END IF;
343 IF i=0 THEN
344 -- check IF item value contains '_' wildcard
345 OPEN c_chk_str2(p_system_query_rec.system_type_code);
346 FETCH c_chk_str2 INTO str_csr2;
347 CLOSE c_chk_str2;
348 IF(str_csr2 <> 0) THEN
349 l_operator := ' like ';
350 ELSE
351 l_operator := ' = ';
352 END IF;
353 END IF;
354 IF(x_systems_where IS NULL) THEN
355 x_systems_where := ' WHERE ';
356 ELSE
357 x_systems_where := x_systems_where || ' AND ';
358 END IF;
359 x_systems_where := x_systems_where || 'system_type_code ' || l_operator || ' :system_type_code';
360 END IF;
361
362 IF( (p_system_query_rec.system_number IS NOT NULL) AND (p_system_query_rec.system_number <> fnd_api.g_miss_char) )
363 THEN
364
365 i:=0;
366
367 OPEN c_chk_str1(p_system_query_rec.system_number);
368 FETCH c_chk_str1 INTO str_csr1;
369 CLOSE c_chk_str1;
370 IF(str_csr1 <> 0) THEN
371 l_operator := ' like ';
372 i:=1;
373 ELSE
374 l_operator := ' = ';
375 END IF;
376 IF i=0 THEN
377 OPEN c_chk_str2(p_system_query_rec.system_number);
378 FETCH c_chk_str2 INTO str_csr2;
379 CLOSE c_chk_str2;
380 IF(str_csr2 <> 0) THEN
381 l_operator := ' like ';
382 ELSE
383 l_operator := ' = ';
384 END IF;
385 END IF;
386 IF(x_systems_where IS NULL) THEN
387 x_systems_where := ' WHERE ';
388 ELSE
389 x_systems_where := x_systems_where || ' AND ';
390 END IF;
391 x_systems_where := x_systems_where || 'system_number ' || l_operator || ' :system_number';
392 END IF;
393
394 /* IF p_active_systems_only = 'T' THEN
395 IF(x_systems_where IS NULL) THEN
396 x_systems_where := ' WHERE ';
397 ELSE
398 x_systems_where := x_systems_where ||' AND ';
399 END IF;
400 x_systems_where := x_systems_where ||' end_date_active >= SYSDATE ';
401 END IF; */
402
403
404
405 END gen_systems_where;
406
407 PROCEDURE from_to_tran( p_system_id IN NUMBER,
408 p_time_stamp IN DATE,
409 from_time_stamp OUT NOCOPY VARCHAR2,
410 to_time_stamp OUT NOCOPY VARCHAR2)
411 IS
412 l_f_date VARCHAR2(25) := fnd_api.g_miss_char;
413 l_t_date VARCHAR2(25) := fnd_api.g_miss_char;
414 BEGIN
415 SELECT max(min(to_char(a.transaction_date,'dd-mon-rr hh24:mi:ss')))
416 INTO l_f_date
417 FROM csi_transactions a, csi_systems_b b,csi_systems_h c
418 WHERE b.system_id = c.system_id
419 AND c.transaction_id = a.transaction_id
420 AND c.full_dump_flag = 'Y'
421 AND a.transaction_date <=p_time_stamp
422 AND c.system_id = p_system_id
423 GROUP BY to_char(a.transaction_date,'dd-mon-rr hh24:mi:ss');
424 IF l_f_date IS NULL THEN
425 from_time_stamp:=NULL;
426 to_time_stamp:=l_t_date;
427 ELSE
428 from_time_stamp:=l_f_date;
429 BEGIN
430 SELECT max(min(to_char(a.transaction_date,'dd-mon-rr hh24:mi:ss')))
431 INTO l_t_date
432 FROM csi_transactions a, csi_systems_b b,csi_systems_h c
433 WHERE b.system_id = c.system_id
434 AND c.transaction_id = a.transaction_id
435 AND a.transaction_date <=p_time_stamp
436 AND c.system_id = p_system_id
437 GROUP BY to_char(a.transaction_date,'dd-mon-rr hh24:mi:ss');
438
439 IF l_t_date IS NULL THEN
440 to_time_stamp:=NULL;
441 ELSE
442 to_time_stamp:=l_t_date;
443 END IF;
444 END;
445 END IF;
446 END;
447
448
449 PROCEDURE get_history( p_sys_rec IN csi_datastructures_pub.system_rec
450 ,p_new_rec OUT NOCOPY csi_datastructures_pub.system_rec
451 ,p_flag OUT NOCOPY VARCHAR2
452 ,p_time_stamp IN DATE
453 )
454 IS
455 CURSOR hist_csr (p_system_id IN NUMBER,
456 p_f_time_stamp IN VARCHAR2,
457 p_t_time_stamp IN VARCHAR2)
458 IS
459 SELECT c.system_id
460 ,c.old_customer_id
461 ,c.new_customer_id
462 ,c.old_system_type_code
463 ,c.new_system_type_code
464 ,c.old_system_number
465 ,c.new_system_number
466 ,c.old_parent_system_id
467 ,c.new_parent_system_id
468 ,c.old_ship_to_contact_id
469 ,c.new_ship_to_contact_id
470 ,c.old_bill_to_contact_id
471 ,c.new_bill_to_contact_id
472 ,c.old_technical_contact_id
473 ,c.new_technical_contact_id
474 ,c.old_service_admin_contact_id
475 ,c.new_service_admin_contact_id
476 ,c.old_ship_to_site_use_id
477 ,c.new_ship_to_site_use_id
478 ,c.old_install_site_use_id
479 ,c.new_install_site_use_id
480 ,c.old_bill_to_site_use_id
481 ,c.new_bill_to_site_use_id
482 ,c.old_coterminate_day_month
483 ,c.new_coterminate_day_month
484 ,c.old_start_date_active
485 ,c.new_start_date_active
486 ,c.old_end_date_active
487 ,c.new_end_date_active
488 ,c.old_autocreated_from_system
489 ,c.new_autocreated_from_system
490 ,c.old_config_system_type
491 ,c.new_config_system_type
492 ,c.old_context
493 ,c.new_context
494 ,c.old_attribute1
495 ,c.new_attribute1
496 ,c.old_attribute2
497 ,c.new_attribute2
498 ,c.old_attribute3
499 ,c.new_attribute3
500 ,c.old_attribute4
501 ,c.new_attribute4
502 ,c.old_attribute5
503 ,c.new_attribute5
504 ,c.old_attribute6
505 ,c.new_attribute6
506 ,c.old_attribute7
507 ,c.new_attribute7
508 ,c.old_attribute8
509 ,c.new_attribute8
510 ,c.old_attribute9
511 ,c.new_attribute9
512 ,c.old_attribute10
513 ,c.new_attribute10
514 ,c.old_attribute11
515 ,c.new_attribute11
516 ,c.old_attribute12
517 ,c.new_attribute12
518 ,c.old_attribute13
519 ,c.new_attribute13
520 ,c.old_attribute14
521 ,c.new_attribute14
522 ,c.old_attribute15
523 ,c.new_attribute15
524 ,c.full_dump_flag
525 ,c.old_operating_unit_id
526 ,c.new_operating_unit_id
527 FROM csi_transactions a,csi_systems_b b,csi_systems_h c
528 WHERE b.system_id = c.system_id
529 AND c.transaction_id = a.transaction_id
530 AND c.system_id = p_system_id
531 AND a.transaction_date BETWEEN to_date(p_f_time_stamp,'dd/mm/yyyy hh24:mi:ss')
532 AND to_date(p_t_time_stamp,'dd/mm/yyyy hh24:mi:ss')
533 ORDER BY to_char(a.transaction_date,'dd/mm/yyyy hh24:mi:ss') ;
534
535 l_f_time_stamp VARCHAR2(25) :=fnd_api.g_miss_char;
536 l_t_time_stamp VARCHAR2(25) :=fnd_api.g_miss_char;
537 l_to_date VARCHAR2(25);
538 BEGIN
539 from_to_tran(p_system_id => p_sys_rec.system_id,
540 p_time_stamp => p_time_stamp,
541 from_time_stamp => l_f_time_stamp,
542 to_time_stamp => l_t_time_stamp);
543
544 SELECT max(to_char(a.transaction_date,'dd/mm/yyyy hh24:mi:ss'))
545 INTO l_to_date
546 FROM csi_transactions a,csi_systems_h b
547 WHERE a.transaction_id=b.transaction_id
548 AND b.system_id=p_sys_rec.system_id;
549
550 IF ( (l_f_time_stamp IS NOT NULL) AND (p_time_stamp>to_date(l_to_date,'dd/mm/yyyy hh24:mi:ss')) ) THEN
551 p_new_rec := p_sys_rec;
552 p_flag := 'ADD';
553 ELSIF (l_f_time_stamp IS NULL) THEN
554 -- we have entered into case 1 which we have to skip the record.
555 p_flag := 'SKIP';
556 ELSE
557 -- we have entered into case 3 where we have to compare the record and return flag with 'add'.
558 FOR get_csr IN hist_csr(p_sys_rec.system_id,l_f_time_stamp,l_t_time_stamp) LOOP
559
560 p_new_rec.system_id:=p_sys_rec.system_id;
561
562
563 IF get_csr.new_customer_id IS NOT NULL THEN
564 p_new_rec.customer_id := get_csr.new_customer_id;
565 ELSIF get_csr.full_dump_flag='Y' THEN
566 p_new_rec.customer_id := get_csr.old_customer_id;
567 END IF;
568
569 IF get_csr.new_system_type_code IS NOT NULL THEN
570 p_new_rec.system_type_code := get_csr.new_system_type_code;
571 ELSIF get_csr.full_dump_flag='Y' THEN
572 p_new_rec.system_type_code := get_csr.old_system_type_code;
573 END IF;
574
575 IF get_csr.new_system_number IS NOT NULL THEN
576 p_new_rec.system_number := get_csr.new_system_number;
577 ELSIF get_csr.full_dump_flag='Y' THEN
578 p_new_rec.system_number := get_csr.old_system_number;
579 END IF;
580
581 IF get_csr.new_parent_system_id IS NOT NULL THEN
582 p_new_rec.parent_system_id := get_csr.new_parent_system_id;
583 ELSIF get_csr.full_dump_flag='Y' THEN
584 p_new_rec.parent_system_id := get_csr.old_parent_system_id;
585 END IF;
586
587 IF get_csr.new_ship_to_contact_id IS NOT NULL THEN
588 p_new_rec.ship_to_contact_id := get_csr.new_ship_to_contact_id;
589 ELSIF get_csr.full_dump_flag='Y' THEN
590 p_new_rec.ship_to_contact_id := get_csr.old_ship_to_contact_id;
591 END IF;
592
593 IF get_csr.new_bill_to_contact_id IS NOT NULL THEN
594 p_new_rec.bill_to_contact_id := get_csr.new_bill_to_contact_id;
595 ELSIF get_csr.full_dump_flag='Y' THEN
596 p_new_rec.bill_to_contact_id := get_csr.old_bill_to_contact_id;
597 END IF;
598
599 IF get_csr.new_technical_contact_id IS NOT NULL THEN
600 p_new_rec.technical_contact_id := get_csr.new_technical_contact_id;
601 ELSIF get_csr.full_dump_flag='Y' THEN
602 p_new_rec.technical_contact_id := get_csr.old_technical_contact_id;
603 END IF;
604
605 IF get_csr.new_service_admin_contact_id IS NOT NULL THEN
606 p_new_rec.service_admin_contact_id := get_csr.new_service_admin_contact_id;
607 ELSIF get_csr.full_dump_flag='Y' THEN
608 p_new_rec.service_admin_contact_id := get_csr.old_service_admin_contact_id;
609 END IF;
610
611 IF get_csr.new_ship_to_site_use_id IS NOT NULL THEN
612 p_new_rec.ship_to_site_use_id := get_csr.new_ship_to_site_use_id;
613 ELSIF get_csr.full_dump_flag='Y' THEN
614 p_new_rec.ship_to_site_use_id := get_csr.old_ship_to_site_use_id;
615 END IF;
616
617 IF get_csr.new_install_site_use_id IS NOT NULL THEN
618 p_new_rec.install_site_use_id := get_csr.new_install_site_use_id;
619 ELSIF get_csr.full_dump_flag='Y' THEN
620 p_new_rec.install_site_use_id := get_csr.old_install_site_use_id;
621 END IF;
622
623 IF get_csr.new_bill_to_site_use_id IS NOT NULL THEN
624 p_new_rec.bill_to_site_use_id := get_csr.new_bill_to_site_use_id;
625 ELSIF get_csr.full_dump_flag='Y' THEN
626 p_new_rec.bill_to_site_use_id := get_csr.old_bill_to_site_use_id;
627 END IF;
628
629 IF get_csr.new_coterminate_day_month IS NOT NULL THEN
630 p_new_rec.coterminate_day_month := get_csr.new_coterminate_day_month;
631 ELSIF get_csr.full_dump_flag='Y' THEN
632 p_new_rec.coterminate_day_month := get_csr.old_coterminate_day_month;
633 END IF;
634
635 IF get_csr.new_start_date_active IS NOT NULL THEN
636 p_new_rec.start_date_active := get_csr.new_start_date_active;
637 ELSIF get_csr.full_dump_flag='Y' THEN
638 p_new_rec.start_date_active := get_csr.old_start_date_active;
639 END IF;
640
641 IF get_csr.new_end_date_active IS NOT NULL THEN
642 p_new_rec.end_date_active := get_csr.new_end_date_active;
643 ELSIF get_csr.full_dump_flag='Y' THEN
644 p_new_rec.end_date_active := get_csr.old_end_date_active;
645 END IF;
646
647 IF get_csr.new_autocreated_from_system IS NOT NULL THEN
648 p_new_rec.autocreated_from_system_id := get_csr.new_autocreated_from_system;
649 ELSIF get_csr.full_dump_flag='Y' THEN
650 p_new_rec.autocreated_from_system_id := get_csr.old_autocreated_from_system;
651 END IF;
652
653 IF get_csr.new_config_system_type IS NOT NULL THEN
654 p_new_rec.config_system_type := get_csr.new_config_system_type;
655 ELSIF get_csr.full_dump_flag='Y' THEN
656 p_new_rec.config_system_type := get_csr.old_config_system_type;
657 END IF;
658
659 IF get_csr.new_context IS NOT NULL THEN
660 p_new_rec.context := get_csr.new_context;
661 ELSIF get_csr.full_dump_flag='Y' THEN
662 p_new_rec.context := get_csr.old_context;
663 END IF;
664
665 IF get_csr.new_attribute1 IS NOT NULL THEN
666 p_new_rec.attribute1 := get_csr.new_attribute1;
667 ELSIF get_csr.full_dump_flag='Y' THEN
668 p_new_rec.attribute1 := get_csr.old_attribute1;
669 END IF;
670
671 IF get_csr.new_attribute2 IS NOT NULL THEN
672 p_new_rec.attribute2 := get_csr.new_attribute2;
673 ELSIF get_csr.full_dump_flag='Y' THEN
674 p_new_rec.attribute2 := get_csr.old_attribute2;
675 END IF;
676
677 IF get_csr.new_attribute3 IS NOT NULL THEN
678 p_new_rec.attribute3 := get_csr.new_attribute3;
679 ELSIF get_csr.full_dump_flag='Y' THEN
680 p_new_rec.attribute3 := get_csr.old_attribute3;
681 END IF;
682
683 IF get_csr.new_attribute4 IS NOT NULL THEN
684 p_new_rec.attribute4 := get_csr.new_attribute4;
685 ELSIF get_csr.full_dump_flag='Y' THEN
686 p_new_rec.attribute4 := get_csr.old_attribute4;
687 END IF;
688
689 IF get_csr.new_attribute5 IS NOT NULL THEN
690 p_new_rec.attribute5 := get_csr.new_attribute5;
691 ELSIF get_csr.full_dump_flag='Y' THEN
692 p_new_rec.attribute5 := get_csr.old_attribute5;
693 END IF;
694
695 IF get_csr.new_attribute6 IS NOT NULL THEN
696 p_new_rec.attribute6 := get_csr.new_attribute6;
697 ELSIF get_csr.full_dump_flag='Y' THEN
698 p_new_rec.attribute6 := get_csr.old_attribute6;
699 END IF;
700
701 IF get_csr.new_attribute7 IS NOT NULL THEN
702 p_new_rec.attribute7 := get_csr.new_attribute7;
703 ELSIF get_csr.full_dump_flag='Y' THEN
704 p_new_rec.attribute7 := get_csr.old_attribute7;
705 END IF;
706
707 IF get_csr.new_attribute8 IS NOT NULL THEN
708 p_new_rec.attribute8 := get_csr.new_attribute8;
709 ELSIF get_csr.full_dump_flag='Y' THEN
710 p_new_rec.attribute8 := get_csr.old_attribute8;
711 END IF;
712
713 IF get_csr.new_attribute9 IS NOT NULL THEN
714 p_new_rec.attribute9 := get_csr.new_attribute9;
715 ELSIF get_csr.full_dump_flag='Y' THEN
716 p_new_rec.attribute9 := get_csr.old_attribute9;
717 END IF;
718
719 IF get_csr.new_attribute10 IS NOT NULL THEN
720 p_new_rec.attribute10 := get_csr.new_attribute10;
721 ELSIF get_csr.full_dump_flag='Y' THEN
722 p_new_rec.attribute10 := get_csr.old_attribute10;
723 END IF;
724
725 IF get_csr.new_attribute11 IS NOT NULL THEN
726 p_new_rec.attribute11 := get_csr.new_attribute11;
727 ELSIF get_csr.full_dump_flag='Y' THEN
728 p_new_rec.attribute11 := get_csr.old_attribute11;
729 END IF;
730
731 IF get_csr.new_attribute12 IS NOT NULL THEN
732 p_new_rec.attribute12 := get_csr.new_attribute12;
733 ELSIF get_csr.full_dump_flag='Y' THEN
734 p_new_rec.attribute12 := get_csr.old_attribute12;
735 END IF;
736
737 IF get_csr.new_attribute13 IS NOT NULL THEN
738 p_new_rec.attribute13 := get_csr.new_attribute13;
739 ELSIF get_csr.full_dump_flag='Y' THEN
740 p_new_rec.attribute13 := get_csr.old_attribute13;
741 END IF;
742
743 IF get_csr.new_attribute14 IS NOT NULL THEN
744 p_new_rec.attribute14 := get_csr.new_attribute14;
745 ELSIF get_csr.full_dump_flag='Y' THEN
746 p_new_rec.attribute14 := get_csr.old_attribute14;
747 END IF;
748
749 IF get_csr.new_attribute15 IS NOT NULL THEN
750 p_new_rec.attribute15 := get_csr.new_attribute15;
751 ELSIF get_csr.full_dump_flag='Y' THEN
752 p_new_rec.attribute15 := get_csr.old_attribute15;
753 END IF;
754
755 IF get_csr.new_operating_unit_id IS NOT NULL THEN
756 p_new_rec.operating_unit_id := get_csr.new_operating_unit_id;
757 ELSIF get_csr.full_dump_flag='Y' THEN
758 p_new_rec.operating_unit_id := get_csr.old_operating_unit_id;
759 END IF;
760
761 END LOOP;
762 IF p_new_rec.customer_id = fnd_api.g_miss_num THEN
763 p_new_rec.customer_id := NULL;
764 END IF;
765
766 IF p_new_rec.system_type_code = fnd_api.g_miss_char THEN
767 p_new_rec.system_type_code := NULL;
768 END IF;
769
770 IF p_new_rec.system_number = fnd_api.g_miss_char THEN
771 p_new_rec.system_number := NULL;
772 END IF;
773
774 IF p_new_rec.parent_system_id = fnd_api.g_miss_num THEN
775 p_new_rec.parent_system_id := NULL;
776 END IF;
777
778 IF p_new_rec.ship_to_contact_id = fnd_api.g_miss_num THEN
779 p_new_rec.ship_to_contact_id := NULL;
780 END IF;
781
782 IF p_new_rec.bill_to_contact_id = fnd_api.g_miss_num THEN
783 p_new_rec.bill_to_contact_id := NULL;
784 END IF;
785
786 IF p_new_rec.technical_contact_id = fnd_api.g_miss_num THEN
787 p_new_rec.technical_contact_id := NULL;
788 END IF;
789
790 IF p_new_rec.service_admin_contact_id = fnd_api.g_miss_num THEN
791 p_new_rec.service_admin_contact_id := NULL;
792 END IF;
793
794 IF p_new_rec.ship_to_site_use_id = fnd_api.g_miss_num THEN
795 p_new_rec.ship_to_site_use_id := NULL;
796 END IF;
797
798 IF p_new_rec.bill_to_site_use_id = fnd_api.g_miss_num THEN
799 p_new_rec.bill_to_site_use_id := NULL;
800 END IF;
801
802 IF p_new_rec.install_site_use_id = fnd_api.g_miss_num THEN
803 p_new_rec.install_site_use_id := NULL;
804 END IF;
805
806 IF p_new_rec.coterminate_day_month = fnd_api.g_miss_char THEN
807 p_new_rec.coterminate_day_month := NULL;
808 END IF;
809
810 IF p_new_rec.autocreated_from_system_id = fnd_api.g_miss_num THEN
811 p_new_rec.autocreated_from_system_id := NULL;
812 END IF;
813
814 IF p_new_rec.config_system_type = fnd_api.g_miss_char THEN
815 p_new_rec.config_system_type := NULL;
816 END IF;
817
818 IF p_new_rec.start_date_active = fnd_api.g_miss_date THEN
819 p_new_rec.start_date_active := NULL;
820 END IF;
821
822 IF p_new_rec.end_date_active = fnd_api.g_miss_date THEN
823 p_new_rec.end_date_active := NULL;
824 END IF;
825
826 IF p_new_rec.context = fnd_api.g_miss_char THEN
827 p_new_rec.context := NULL;
828 END IF;
829
830 IF p_new_rec.attribute1 = fnd_api.g_miss_char THEN
831 p_new_rec.attribute1 := NULL;
832 END IF;
833
834 IF p_new_rec.attribute2 = fnd_api.g_miss_char THEN
835 p_new_rec.attribute2 := NULL;
836 END IF;
837
838 IF p_new_rec.attribute3 = fnd_api.g_miss_char THEN
839 p_new_rec.attribute3 := NULL;
840 END IF;
841
842 IF p_new_rec.attribute4 = fnd_api.g_miss_char THEN
843 p_new_rec.attribute4 := NULL;
844 END IF;
845
846 IF p_new_rec.attribute5 = fnd_api.g_miss_char THEN
847 p_new_rec.attribute5 := NULL;
848 END IF;
849
850 IF p_new_rec.attribute6 = fnd_api.g_miss_char THEN
851 p_new_rec.attribute6 := NULL;
852 END IF;
853
854 IF p_new_rec.attribute7 =fnd_api.g_miss_char THEN
855 p_new_rec.attribute7 := NULL;
856 END IF;
857
858 IF p_new_rec.attribute8 = fnd_api.g_miss_char THEN
859 p_new_rec.attribute8 := NULL;
860 END IF;
861
862 IF p_new_rec.attribute9 = fnd_api.g_miss_char THEN
863 p_new_rec.attribute9 := NULL;
864 END IF;
865
866 IF p_new_rec.attribute10 = fnd_api.g_miss_char THEN
867 p_new_rec.attribute10 := NULL;
868 END IF;
869
870 IF p_new_rec.attribute11 = fnd_api.g_miss_char THEN
871 p_new_rec.attribute11 := NULL;
872 END IF;
873
874 IF p_new_rec.attribute12 = fnd_api.g_miss_char THEN
875 p_new_rec.attribute12 := NULL;
876 END IF;
877
878 IF p_new_rec.attribute13 = fnd_api.g_miss_char THEN
879 p_new_rec.attribute13 := NULL;
880 END IF;
881
882 IF p_new_rec.attribute14 =fnd_api.g_miss_char THEN
883 p_new_rec.attribute14 := NULL;
884 END IF;
885
886 IF p_new_rec.attribute15 = fnd_api.g_miss_char THEN
887 p_new_rec.attribute15 := NULL;
888 END IF;
889
890 IF p_new_rec.operating_unit_id = fnd_api.g_miss_num THEN
891 p_new_rec.operating_unit_id := NULL;
892 END IF;
893
894 p_flag :='ADD';
895 END IF;
896
897 END;
898
899
900
901 PROCEDURE get_systems
902 (
903 p_api_version IN NUMBER ,
904 p_commit IN VARCHAR2,
905 p_init_msg_list IN VARCHAR2,
906 p_validation_level IN NUMBER,
907 p_system_query_rec IN csi_datastructures_pub.system_query_rec,
908 p_time_stamp IN DATE ,
909 p_active_systems_only IN VARCHAR2,
910 x_systems_tbl OUT NOCOPY csi_datastructures_pub.systems_tbl,
911 x_return_status OUT NOCOPY VARCHAR2,
912 x_msg_count OUT NOCOPY NUMBER ,
913 x_msg_data OUT NOCOPY VARCHAR2
914 )
915 IS
916
917 l_api_name CONSTANT VARCHAR2(30) := 'get_systems';
918 l_api_version CONSTANT NUMBER := 1.0;
919 l_return_status_full VARCHAR2(1);
920 l_crit_systems_rec csi_datastructures_pub.system_query_rec := p_system_query_rec;
921 l_systems_where VARCHAR2(2000) := '';
922 l_cur_get_systems NUMBER;
923 l_select_cl VARCHAR2(2000) := '';
924 l_def_systems_rec csi_datastructures_pub.system_rec;
925 l_ignore NUMBER;
926 l_return_tot_count VARCHAR2(1) := fnd_api.g_false;
927 l_returned_rec_count NUMBER := 0;
928 l_sys_rec csi_datastructures_pub.system_rec;
929 l_tot_rec_count NUMBER := 0;
930 l_start_rec_prt NUMBER :=1;
931 l_rec_requested NUMBER :=1000000;
932 l_new_rec csi_datastructures_pub.system_rec;
933 l_flag VARCHAR2(4);
934 l_active_systems_only VARCHAR2(1):= p_active_systems_only;
935 l_debug_level NUMBER;
936 l_systems_tbl csi_datastructures_pub.systems_tbl;
937 l_sys_count NUMBER := 0;
938 l_last_purge_date DATE;
939
940 BEGIN
941
942 -- standard start of api savepoint
943 -- SAVEPOINT get_systems_pvt;
944
945 -- standard call to check for call compatibility.
946 IF NOT fnd_api.compatible_api_call ( l_api_version,
947 p_api_version,
948 l_api_name,
949 g_pkg_name)
950 THEN
951 RAISE fnd_api.g_exc_unexpected_error;
952 END IF;
953
954
955 -- initialize message list if p_init_msg_list is set to true.
956 IF fnd_api.to_boolean( p_init_msg_list )
957 THEN
958 fnd_msg_pub.initialize;
959 END IF;
960
961
962
963
964 -- initialize api return status to success
965 x_return_status := fnd_api.g_ret_sts_success;
966
967 l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
968 IF (l_debug_level > 0) THEN
969 csi_gen_utility_pvt.put_line( 'get_system');
970 END IF;
971
972 IF (l_debug_level > 1) THEN
973 csi_gen_utility_pvt.put_line(
974 p_api_version ||'-'||
975 p_Commit ||'-'||
976 p_Init_Msg_list ||'-'||
977 p_Validation_level ||'-'||
978 p_time_stamp ||'-'||
979 p_active_systems_only
980 );
981 csi_gen_utility_pvt.dump_sys_query_rec(p_system_query_rec);
982 END IF;
983
984 IF
985 ( ((p_system_query_rec.system_id IS NULL) OR (p_system_query_rec.system_id = fnd_api.g_miss_num))
986 AND ((p_system_query_rec.system_type_code IS NULL) OR (p_system_query_rec.system_type_code = fnd_api.g_miss_char))
987 AND ((p_system_query_rec.system_number IS NULL) OR (p_system_query_rec.system_number = fnd_api.g_miss_char))
988 )
989 THEN
990 fnd_message.set_name('CSI', 'CSI_INVALID_PARAMETERS');
991 fnd_msg_pub.add;
992 x_return_status := fnd_api.g_ret_sts_error;
993 RAISE fnd_api.g_exc_error;
994 END IF;
995
996 gen_select(l_crit_systems_rec,l_select_cl);
997
998
999 gen_systems_where(l_crit_systems_rec,l_active_systems_only, l_systems_where);
1000 IF dbms_sql.is_open(l_cur_get_systems) THEN
1001 dbms_sql.close_CURSOR(l_cur_get_systems);
1002 END IF;
1003
1004 l_cur_get_systems := dbms_sql.open_CURSOR;
1005
1006 dbms_sql.parse(l_cur_get_systems, l_select_cl||l_systems_where , dbms_sql.native);
1007
1008 bind(l_crit_systems_rec, l_cur_get_systems);
1009
1010 define_columns(l_def_systems_rec, l_cur_get_systems);
1011
1012 l_ignore := dbms_sql.execute(l_cur_get_systems);
1013 --
1014 -- Get the last purge date from csi_item_instances table
1015 --
1016 BEGIN
1017 SELECT last_purge_date
1018 INTO l_last_purge_date
1019 FROM CSI_ITEM_INSTANCES
1020 WHERE rownum < 2;
1021 EXCEPTION
1022 WHEN no_data_found THEN
1023 NULL;
1024 WHEN others THEN
1025 NULL;
1026 END;
1027 --
1028 LOOP
1029 IF((dbms_sql.fetch_rows(l_cur_get_systems)>0) AND ( (l_returned_rec_count<l_rec_requested) OR (l_rec_requested=fnd_api.g_miss_num)))
1030 THEN
1031
1032 get_column_values(l_cur_get_systems, l_sys_rec);
1033
1034 l_tot_rec_count := l_tot_rec_count + 1 ;
1035
1036 IF (l_returned_rec_count < l_rec_requested) THEN
1037 l_returned_rec_count := l_returned_rec_count + 1;
1038
1039 IF ((p_time_stamp IS NOT NULL) AND (p_time_stamp <> FND_API.G_MISS_DATE))
1040 THEN
1041 IF ((l_last_purge_date IS NOT NULL) AND (p_time_stamp <= l_last_purge_date))
1042 THEN
1043 csi_gen_utility_pvt.put_line('Warning! History for this entity has already been purged for the datetime stamp passed. ' ||
1044 'Please provide a valid datetime stamp.');
1045 FND_MESSAGE.Set_Name('CSI', 'CSI_API_HIST_AFTER_PURGE_REQ');
1046 FND_MSG_PUB.ADD;
1047 ELSE
1048 get_history( p_sys_rec => l_sys_rec
1049 ,p_new_rec => l_new_rec
1050 ,p_flag => l_flag
1051 ,p_time_stamp => p_time_stamp);
1052 IF l_flag='ADD' THEN
1053 l_systems_tbl(l_returned_rec_count) :=l_new_rec;--l_sys_rec;
1054 END IF;
1055 END IF;
1056 ELSE
1057 l_systems_tbl(l_returned_rec_count) :=l_sys_rec;
1058 END IF;
1059 END IF;
1060 ELSE
1061 EXIT;
1062 END IF;
1063 END LOOP;
1064 --
1065 IF l_active_systems_only = 'T' THEN
1066 IF l_systems_tbl.count > 0 THEN
1067 FOR sys_row IN l_systems_tbl.FIRST .. l_systems_tbl.LAST
1068 LOOP
1069 IF l_systems_tbl.EXISTS(sys_row) THEN
1070 IF l_systems_tbl(sys_row).end_date_active IS NULL OR
1071 l_systems_tbl(sys_row).end_date_active >= SYSDATE THEN
1072 l_sys_count := l_sys_count + 1;
1073 x_systems_tbl(l_sys_count) := l_systems_tbl(sys_row);
1074 END IF;
1075 END IF;
1076 END LOOP;
1077 END IF;
1078 ELSE
1079 x_systems_tbl := l_systems_tbl;
1080 END IF;
1081 -- END of api body
1082 --
1083 dbms_sql.close_cursor(l_cur_get_systems);
1084
1085 -- standard call to get message count and if count is 1, get message info.
1086 fnd_msg_pub.count_and_get
1087 ( p_count => x_msg_count,
1088 p_data => x_msg_data
1089 );
1090 EXCEPTION
1091 WHEN fnd_api.g_exc_error THEN
1092 -- ROLLBACK TO get_systems_pvt;
1093 x_return_status := fnd_api.g_ret_sts_error ;
1094 fnd_msg_pub.count_and_get
1095 (p_count => x_msg_count ,
1096 p_data => x_msg_data
1097 );
1098
1099 WHEN fnd_api.g_exc_unexpected_error THEN
1100 -- ROLLBACK TO get_systems_pvt;
1101 x_return_status := fnd_api.g_ret_sts_unexp_error ;
1102 fnd_msg_pub.count_and_get
1103 (p_count => x_msg_count ,
1104 p_data => x_msg_data
1105 );
1106
1107 WHEN OTHERS THEN
1108 -- ROLLBACK TO get_systems_pvt;
1109 x_return_status := fnd_api.g_ret_sts_unexp_error ;
1110 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1111 fnd_msg_pub.add_exc_msg(g_pkg_name ,l_api_name);
1112 END IF;
1113 fnd_msg_pub.count_and_get
1114 (p_count => x_msg_count ,
1115 p_data => x_msg_data
1116 );
1117
1118 END get_systems;
1119
1120
1121 /* ----------------------------------------------------------------------------------------------- */
1122 /* This Procedure(during creation/updation)is used to check for Unique system_name for a Customer */
1123 /* and System_Number.IF found then raise an error else success */
1124 /* ----------------------------------------------------------------------------------------------- */
1125 PROCEDURE Check_Unique(
1126 p_System_id IN NUMBER ,
1127 p_Name IN VARCHAR2,
1128 p_Customer_ID IN NUMBER ,
1129 p_System_number IN VARCHAR2,
1130 x_return_status OUT NOCOPY VARCHAR2,
1131 x_msg_count OUT NOCOPY NUMBER ,
1132 x_msg_data OUT NOCOPY VARCHAR2) IS
1133 CURSOR dup_cur IS
1134 SELECT 'x'
1135 FROM csi_systems_vl
1136 WHERE name = p_Name
1137 AND customer_id = p_Customer_ID
1138 --AND system_number = nvl(p_System_number,system_number)
1139 AND (system_number IS NULL OR
1140 system_number = p_System_number)
1141 AND (p_System_id IS NULL OR
1142 System_id <> p_System_id);
1143 l_dummy VARCHAR2(1);
1144 BEGIN
1145 x_return_status := fnd_api.g_ret_sts_success;
1146 OPEN dup_cur;
1147 FETCH dup_cur INTO l_dummy;
1148 IF (dup_cur%FOUND) THEN
1149 FND_MESSAGE.SET_NAME('CSI', 'CSI_SYSTEM_DUP_NAME');
1150 fnd_msg_pub.add;
1151 x_return_status := fnd_api.g_ret_sts_error;
1152 END IF;
1153
1154 CLOSE dup_cur;
1155
1156 EXCEPTION
1157 WHEN OTHERS THEN
1158 NULL;
1159 END Check_Unique;
1160
1161
1162
1163 /* ----------------------------------------------------------------------------------------------- */
1164 /* This procedure(during creation)is used to check if the received subject is already an object */
1165 /* if found then raise and error else success */
1166 /* a */
1167 /* / \ */
1168 /* b c */
1169 /* / \ */
1170 /* d a -> not allowed */
1171 /* ----------------------------------------------------------------------------------------------- */
1172
1173 PROCEDURE check_parent_child_constraint(x_system_id IN NUMBER,
1174 x_parent_system_id IN NUMBER,
1175 x_return_status OUT NOCOPY VARCHAR2,
1176 x_msg_count OUT NOCOPY NUMBER,
1177 x_msg_data OUT NOCOPY VARCHAR2) IS
1178
1179 CURSOR par_chld_csr IS
1180 SELECT 'x'
1181 FROM csi_systems_b
1182 WHERE system_id = x_parent_system_id
1183 START WITH parent_system_id = x_system_id
1184 CONNECT BY parent_system_id = prior system_id;
1185 l_dummy VARCHAR2(1);
1186
1187 BEGIN
1188 --
1189 -- check to make sure that parent system exists and it doesn't have
1190 -- a parent of its own
1191 --
1192 x_return_status := fnd_api.g_ret_sts_success;
1193
1194 IF x_system_id <> x_parent_system_id THEN
1195 OPEN par_chld_csr;
1196 FETCH par_chld_csr INTO l_dummy;
1197 IF (par_chld_csr%found) THEN
1198 --CLOSE par_chld_csr;
1199 fnd_message.set_name('CSI','CSI_CHILD_PARENT_REL_LOOP');
1200 fnd_msg_pub.add;
1201 x_return_status := fnd_api.g_ret_sts_error;
1202 END IF;
1203 CLOSE par_chld_csr;
1204
1205 ELSE
1206 fnd_message.set_name('CSI', 'CSI_PARENT_CHILD_INVALID');
1207 fnd_msg_pub.add;
1208 x_return_status := fnd_api.g_ret_sts_error;
1209 END IF;
1210
1211 END check_parent_child_constraint;
1212
1213
1214 PROCEDURE validate_history(p_old_systems_rec IN csi_datastructures_pub.system_rec,
1215 p_new_systems_rec IN csi_datastructures_pub.system_rec,
1216 p_transaction_id IN NUMBER,
1217 p_flag IN VARCHAR2,
1218 p_sysdate IN DATE,
1219 x_return_status OUT NOCOPY VARCHAR2,
1220 x_msg_count OUT NOCOPY NUMBER,
1221 x_msg_data OUT NOCOPY VARCHAR2)
1222 IS
1223 l_old_systems_rec csi_datastructures_pub.system_rec :=p_old_systems_rec;
1224 l_new_systems_rec csi_datastructures_pub.system_rec :=p_new_systems_rec;
1225 l_transaction_id NUMBER := p_transaction_id;
1226 l_full_dump NUMBER;
1227 l_systems_hist_rec csi_datastructures_pub.system_history_rec;
1228
1229 CURSOR sys_hist_csr (p_sys_hist_id NUMBER) IS
1230 SELECT *
1231 FROM csi_systems_h
1232 WHERE csi_systems_h.system_history_id = p_sys_hist_id
1233 FOR UPDATE OF object_version_number;
1234 l_sys_hist_csr sys_hist_csr%ROWTYPE;
1235 l_sys_hist_id NUMBER;
1236
1237 BEGIN
1238 x_return_status := fnd_api.g_ret_sts_success;
1239
1240 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
1241 csi_gen_utility_pvt.populate_install_param_rec;
1242 END IF;
1243 --
1244 l_full_dump := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
1245 --
1246 IF l_full_dump IS NULL THEN
1247 FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
1248 FND_MSG_PUB.ADD;
1249 RAISE FND_API.G_EXC_ERROR;
1250 END IF;
1251
1252 IF p_flag = 'EXPIRE' THEN
1253 l_new_systems_rec.end_date_active := p_sysdate;
1254 END IF;
1255 -- Start of modifications for Bug#2547034 on 09/20/02 - rtalluri
1256
1257 BEGIN
1258 SELECT system_history_id
1259 INTO l_sys_hist_id
1260 FROM csi_systems_h h
1261 WHERE h.transaction_id = p_transaction_id
1262 AND h.system_id = p_old_systems_rec.system_id;
1263
1264 OPEN sys_hist_csr(l_sys_hist_id);
1265 FETCH sys_hist_csr INTO l_sys_hist_csr ;
1266 CLOSE sys_hist_csr;
1267
1268 IF l_sys_hist_csr.full_dump_flag = 'Y'
1269 THEN
1270 csi_systems_h_pkg.update_row(
1271 p_system_history_id => l_sys_hist_id,
1272 p_system_id => fnd_api.g_miss_num,
1273 p_transaction_id => fnd_api.g_miss_num,
1274 p_old_customer_id => fnd_api.g_miss_num,
1275 p_new_customer_id => l_new_systems_rec.customer_id,
1276 p_old_system_type_code => fnd_api.g_miss_char,
1277 p_new_system_type_code => l_new_systems_rec.system_type_code,
1278 p_old_system_number => fnd_api.g_miss_char,
1279 p_new_system_number => l_new_systems_rec.system_number,
1280 p_old_parent_system_id => fnd_api.g_miss_num,
1281 p_new_parent_system_id => l_new_systems_rec.parent_system_id,
1282 p_old_ship_to_contact_id => fnd_api.g_miss_num,
1283 p_new_ship_to_contact_id => l_new_systems_rec.ship_to_contact_id,
1284 p_old_bill_to_contact_id => fnd_api.g_miss_num,
1285 p_new_bill_to_contact_id => l_new_systems_rec.bill_to_contact_id,
1286 p_old_technical_contact_id => fnd_api.g_miss_num,
1287 p_new_technical_contact_id => l_new_systems_rec.technical_contact_id,
1288 p_old_service_admin_contact_id => fnd_api.g_miss_num,
1289 p_new_service_admin_contact_id => l_new_systems_rec.service_admin_contact_id,
1290 p_old_ship_to_site_use_id => fnd_api.g_miss_num,
1291 p_new_ship_to_site_use_id => l_new_systems_rec.ship_to_site_use_id,
1292 p_old_install_site_use_id => fnd_api.g_miss_num,
1293 p_new_install_site_use_id => l_new_systems_rec.install_site_use_id,
1294 p_old_bill_to_site_use_id => fnd_api.g_miss_num,
1295 p_new_bill_to_site_use_id => l_new_systems_rec.bill_to_site_use_id,
1296 p_old_coterminate_day_month => fnd_api.g_miss_char,
1297 p_new_coterminate_day_month => l_new_systems_rec.coterminate_day_month,
1298 p_old_start_date_active => fnd_api.g_miss_date,
1299 p_new_start_date_active => l_new_systems_rec.start_date_active,
1300 p_old_end_date_active => fnd_api.g_miss_date,
1301 p_new_end_date_active => l_new_systems_rec.end_date_active,
1302 p_old_autocreated_from_system => fnd_api.g_miss_num,
1303 p_new_autocreated_from_system => l_new_systems_rec.autocreated_from_system_id,
1304 p_old_config_system_type => fnd_api.g_miss_char,
1305 p_new_config_system_type => l_new_systems_rec.config_system_type,
1306 p_old_context => fnd_api.g_miss_char,
1307 p_new_context => l_new_systems_rec.context,
1308 p_old_attribute1 => fnd_api.g_miss_char,
1309 p_new_attribute1 => l_new_systems_rec.attribute1,
1310 p_old_attribute2 => fnd_api.g_miss_char,
1311 p_new_attribute2 => l_new_systems_rec.attribute2,
1312 p_old_attribute3 => fnd_api.g_miss_char,
1313 p_new_attribute3 => l_new_systems_rec.attribute3,
1314 p_old_attribute4 => fnd_api.g_miss_char,
1315 p_new_attribute4 => l_new_systems_rec.attribute4,
1316 p_old_attribute5 => fnd_api.g_miss_char,
1317 p_new_attribute5 => l_new_systems_rec.attribute5,
1318 p_old_attribute6 => fnd_api.g_miss_char,
1319 p_new_attribute6 => l_new_systems_rec.attribute6,
1320 p_old_attribute7 => fnd_api.g_miss_char,
1321 p_new_attribute7 => l_new_systems_rec.attribute7,
1322 p_old_attribute8 => fnd_api.g_miss_char,
1323 p_new_attribute8 => l_new_systems_rec.attribute8,
1324 p_old_attribute9 => fnd_api.g_miss_char,
1325 p_new_attribute9 => l_new_systems_rec.attribute9,
1326 p_old_attribute10 => fnd_api.g_miss_char,
1327 p_new_attribute10 => l_new_systems_rec.attribute10,
1328 p_old_attribute11 => fnd_api.g_miss_char,
1329 p_new_attribute11 => l_new_systems_rec.attribute11,
1330 p_old_attribute12 => fnd_api.g_miss_char,
1331 p_new_attribute12 => l_new_systems_rec.attribute12,
1332 p_old_attribute13 => fnd_api.g_miss_char,
1333 p_new_attribute13 => l_new_systems_rec.attribute13,
1334 p_old_attribute14 => fnd_api.g_miss_char,
1335 p_new_attribute14 => l_new_systems_rec.attribute14,
1336 p_old_attribute15 => fnd_api.g_miss_char,
1337 p_new_attribute15 => l_new_systems_rec.attribute15,
1338 p_full_dump_flag => fnd_api.g_miss_char,
1339 p_created_by => fnd_api.g_miss_num, -- fnd_global.user_id,
1340 p_creation_date => fnd_api.g_miss_date,
1341 p_last_updated_by => fnd_global.user_id,
1342 p_last_update_date => SYSDATE,
1343 p_last_update_login => fnd_global.conc_login_id,
1344 p_object_version_number => fnd_api.g_miss_num,
1345 p_old_name => fnd_api.g_miss_char,
1346 p_new_name => l_new_systems_rec.name,
1347 p_old_description => fnd_api.g_miss_char,
1348 p_new_description => l_new_systems_rec.description,
1349 p_old_operating_unit_id => fnd_api.g_miss_num,
1350 p_new_operating_unit_id => l_new_systems_rec.operating_unit_id
1351 );
1352
1353 ELSE
1354
1355 IF ( l_sys_hist_csr.old_customer_id IS NULL
1356 AND l_sys_hist_csr.new_customer_id IS NULL ) THEN
1357 IF ( l_new_systems_rec.customer_id = l_old_systems_rec.customer_id )
1358 OR ( l_new_systems_rec.customer_id = fnd_api.g_miss_num ) THEN
1359 l_sys_hist_csr.old_customer_id := NULL;
1360 l_sys_hist_csr.new_customer_id := NULL;
1361 ELSE
1362 l_sys_hist_csr.old_customer_id := fnd_api.g_miss_num;
1363 l_sys_hist_csr.new_customer_id := l_new_systems_rec.customer_id;
1364 END IF;
1365 ELSE
1366 l_sys_hist_csr.old_customer_id := fnd_api.g_miss_num;
1367 l_sys_hist_csr.new_customer_id := l_new_systems_rec.customer_id;
1368 END IF;
1369 --
1370 IF ( l_sys_hist_csr.old_system_type_code IS NULL
1371 AND l_sys_hist_csr.new_system_type_code IS NULL ) THEN
1372 IF ( l_new_systems_rec.system_type_code = l_old_systems_rec.system_type_code )
1373 OR ( l_new_systems_rec.system_type_code = fnd_api.g_miss_char ) THEN
1374 l_sys_hist_csr.old_system_type_code := NULL;
1375 l_sys_hist_csr.new_system_type_code := NULL;
1376 ELSE
1377 l_sys_hist_csr.old_system_type_code := fnd_api.g_miss_char;
1378 l_sys_hist_csr.new_system_type_code := l_new_systems_rec.system_type_code;
1379 END IF;
1380 ELSE
1381 l_sys_hist_csr.old_system_type_code := fnd_api.g_miss_char;
1382 l_sys_hist_csr.new_system_type_code := l_new_systems_rec.system_type_code;
1383 END IF;
1384 --
1385 IF ( l_sys_hist_csr.old_system_number IS NULL
1386 AND l_sys_hist_csr.new_system_number IS NULL ) THEN
1387 IF ( l_new_systems_rec.system_number = l_old_systems_rec.system_number )
1388 OR ( l_new_systems_rec.system_number = fnd_api.g_miss_char ) THEN
1389 l_sys_hist_csr.old_system_number := NULL;
1390 l_sys_hist_csr.new_system_number := NULL;
1391 ELSE
1392 l_sys_hist_csr.old_system_number := fnd_api.g_miss_char;
1393 l_sys_hist_csr.new_system_number := l_new_systems_rec.system_number;
1394 END IF;
1395 ELSE
1396 l_sys_hist_csr.old_system_number := fnd_api.g_miss_char;
1397 l_sys_hist_csr.new_system_number := l_new_systems_rec.system_number;
1398 END IF;
1399 --
1400 IF ( l_sys_hist_csr.old_parent_system_id IS NULL
1401 AND l_sys_hist_csr.new_parent_system_id IS NULL ) THEN
1402 IF ( l_new_systems_rec.parent_system_id = l_old_systems_rec.parent_system_id )
1403 OR ( l_new_systems_rec.parent_system_id = fnd_api.g_miss_num ) THEN
1404 l_sys_hist_csr.old_parent_system_id := NULL;
1405 l_sys_hist_csr.new_parent_system_id := NULL;
1406 ELSE
1407 l_sys_hist_csr.old_parent_system_id := fnd_api.g_miss_num;
1408 l_sys_hist_csr.new_parent_system_id := l_new_systems_rec.parent_system_id;
1409 END IF;
1410 ELSE
1411 l_sys_hist_csr.old_parent_system_id := fnd_api.g_miss_num;
1412 l_sys_hist_csr.new_parent_system_id := l_new_systems_rec.parent_system_id;
1413 END IF;
1414 --
1415 IF ( l_sys_hist_csr.old_ship_to_contact_id IS NULL
1416 AND l_sys_hist_csr.new_ship_to_contact_id IS NULL ) THEN
1417 IF ( l_new_systems_rec.ship_to_contact_id = l_old_systems_rec.ship_to_contact_id )
1418 OR ( l_new_systems_rec.ship_to_contact_id = fnd_api.g_miss_num ) THEN
1419 l_sys_hist_csr.old_ship_to_contact_id := NULL;
1420 l_sys_hist_csr.new_ship_to_contact_id := NULL;
1421 ELSE
1422 l_sys_hist_csr.old_ship_to_contact_id := fnd_api.g_miss_num;
1423 l_sys_hist_csr.new_ship_to_contact_id := l_new_systems_rec.ship_to_contact_id;
1424 END IF;
1425 ELSE
1426 l_sys_hist_csr.old_ship_to_contact_id := fnd_api.g_miss_num;
1427 l_sys_hist_csr.new_ship_to_contact_id := l_new_systems_rec.ship_to_contact_id;
1428 END IF;
1429 --
1430 IF ( l_sys_hist_csr.old_bill_to_contact_id IS NULL
1431 AND l_sys_hist_csr.new_bill_to_contact_id IS NULL ) THEN
1432 IF ( l_new_systems_rec.bill_to_contact_id = l_old_systems_rec.bill_to_contact_id )
1433 OR ( l_new_systems_rec.bill_to_contact_id = fnd_api.g_miss_num ) THEN
1434 l_sys_hist_csr.old_bill_to_contact_id := NULL;
1435 l_sys_hist_csr.new_bill_to_contact_id := NULL;
1436 ELSE
1437 l_sys_hist_csr.old_bill_to_contact_id := fnd_api.g_miss_num;
1438 l_sys_hist_csr.new_bill_to_contact_id := l_new_systems_rec.bill_to_contact_id;
1439 END IF;
1440 ELSE
1441 l_sys_hist_csr.old_bill_to_contact_id := fnd_api.g_miss_num;
1442 l_sys_hist_csr.new_bill_to_contact_id := l_new_systems_rec.bill_to_contact_id;
1443 END IF;
1444 --
1445 IF ( l_sys_hist_csr.old_technical_contact_id IS NULL
1446 AND l_sys_hist_csr.new_technical_contact_id IS NULL ) THEN
1447 IF ( l_new_systems_rec.technical_contact_id = l_old_systems_rec.technical_contact_id )
1448 OR ( l_new_systems_rec.technical_contact_id = fnd_api.g_miss_num ) THEN
1449 l_sys_hist_csr.old_technical_contact_id := NULL;
1450 l_sys_hist_csr.new_technical_contact_id := NULL;
1451 ELSE
1452 l_sys_hist_csr.old_technical_contact_id := fnd_api.g_miss_num;
1453 l_sys_hist_csr.new_technical_contact_id := l_new_systems_rec.technical_contact_id;
1454 END IF;
1455 ELSE
1456 l_sys_hist_csr.old_technical_contact_id := fnd_api.g_miss_num;
1457 l_sys_hist_csr.new_technical_contact_id := l_new_systems_rec.technical_contact_id;
1458 END IF;
1459 --
1460 IF ( l_sys_hist_csr.old_service_admin_contact_id IS NULL
1461 AND l_sys_hist_csr.new_service_admin_contact_id IS NULL ) THEN
1462 IF ( l_new_systems_rec.service_admin_contact_id = l_old_systems_rec.service_admin_contact_id )
1463 OR ( l_new_systems_rec.service_admin_contact_id = fnd_api.g_miss_num ) THEN
1464 l_sys_hist_csr.old_service_admin_contact_id := NULL;
1465 l_sys_hist_csr.new_service_admin_contact_id := NULL;
1466 ELSE
1467 l_sys_hist_csr.old_service_admin_contact_id := fnd_api.g_miss_num;
1468 l_sys_hist_csr.new_service_admin_contact_id := l_new_systems_rec.service_admin_contact_id;
1469 END IF;
1470 ELSE
1471 l_sys_hist_csr.old_service_admin_contact_id := fnd_api.g_miss_num;
1472 l_sys_hist_csr.new_service_admin_contact_id := l_new_systems_rec.service_admin_contact_id;
1473 END IF;
1474 --
1475 IF ( l_sys_hist_csr.old_ship_to_site_use_id IS NULL
1476 AND l_sys_hist_csr.new_ship_to_site_use_id IS NULL ) THEN
1477 IF ( l_new_systems_rec.ship_to_site_use_id = l_old_systems_rec.ship_to_site_use_id )
1478 OR ( l_new_systems_rec.ship_to_site_use_id = fnd_api.g_miss_num ) THEN
1479 l_sys_hist_csr.old_ship_to_site_use_id := NULL;
1480 l_sys_hist_csr.new_ship_to_site_use_id := NULL;
1481 ELSE
1482 l_sys_hist_csr.old_ship_to_site_use_id := fnd_api.g_miss_num;
1483 l_sys_hist_csr.new_ship_to_site_use_id := l_new_systems_rec.ship_to_site_use_id;
1484 END IF;
1485 ELSE
1486 l_sys_hist_csr.old_ship_to_site_use_id := fnd_api.g_miss_num;
1487 l_sys_hist_csr.new_ship_to_site_use_id := l_new_systems_rec.ship_to_site_use_id;
1488 END IF;
1489 --
1490 IF ( l_sys_hist_csr.old_bill_to_site_use_id IS NULL
1491 AND l_sys_hist_csr.new_bill_to_site_use_id IS NULL ) THEN
1492 IF ( l_new_systems_rec.bill_to_site_use_id = l_old_systems_rec.bill_to_site_use_id )
1493 OR ( l_new_systems_rec.bill_to_site_use_id = fnd_api.g_miss_num ) THEN
1494 l_sys_hist_csr.old_bill_to_site_use_id := NULL;
1495 l_sys_hist_csr.new_bill_to_site_use_id := NULL;
1496 ELSE
1497 l_sys_hist_csr.old_bill_to_site_use_id := fnd_api.g_miss_num;
1498 l_sys_hist_csr.new_bill_to_site_use_id := l_new_systems_rec.bill_to_site_use_id;
1499 END IF;
1500 ELSE
1501 l_sys_hist_csr.old_bill_to_site_use_id := fnd_api.g_miss_num;
1502 l_sys_hist_csr.new_bill_to_site_use_id := l_new_systems_rec.bill_to_site_use_id;
1503 END IF;
1504 --
1505 IF ( l_sys_hist_csr.old_install_site_use_id IS NULL
1506 AND l_sys_hist_csr.new_install_site_use_id IS NULL ) THEN
1507 IF ( l_new_systems_rec.install_site_use_id = l_old_systems_rec.install_site_use_id )
1508 OR ( l_new_systems_rec.install_site_use_id = fnd_api.g_miss_num ) THEN
1509 l_sys_hist_csr.old_install_site_use_id := NULL;
1510 l_sys_hist_csr.new_install_site_use_id := NULL;
1511 ELSE
1512 l_sys_hist_csr.old_install_site_use_id := fnd_api.g_miss_num;
1513 l_sys_hist_csr.new_install_site_use_id := l_new_systems_rec.install_site_use_id;
1514 END IF;
1515 ELSE
1516 l_sys_hist_csr.old_install_site_use_id := fnd_api.g_miss_num;
1517 l_sys_hist_csr.new_install_site_use_id := l_new_systems_rec.install_site_use_id;
1518 END IF;
1519 --
1520 IF ( l_sys_hist_csr.old_coterminate_day_month IS NULL
1521 AND l_sys_hist_csr.new_coterminate_day_month IS NULL ) THEN
1522 IF ( l_new_systems_rec.coterminate_day_month = l_old_systems_rec.coterminate_day_month )
1523 OR ( l_new_systems_rec.coterminate_day_month = fnd_api.g_miss_char ) THEN
1524 l_sys_hist_csr.old_coterminate_day_month := NULL;
1525 l_sys_hist_csr.new_coterminate_day_month := NULL;
1526 ELSE
1527 l_sys_hist_csr.old_coterminate_day_month := fnd_api.g_miss_char;
1528 l_sys_hist_csr.new_coterminate_day_month := l_new_systems_rec.coterminate_day_month;
1529 END IF;
1530 ELSE
1531 l_sys_hist_csr.old_coterminate_day_month := fnd_api.g_miss_char;
1532 l_sys_hist_csr.new_coterminate_day_month := l_new_systems_rec.coterminate_day_month;
1533 END IF;
1534 --
1535 IF ( l_sys_hist_csr.old_autocreated_from_system IS NULL
1536 AND l_sys_hist_csr.new_autocreated_from_system IS NULL ) THEN
1537 IF ( l_new_systems_rec.autocreated_from_system_id = l_old_systems_rec.autocreated_from_system_id )
1538 OR ( l_new_systems_rec.autocreated_from_system_id = fnd_api.g_miss_num ) THEN
1539 l_sys_hist_csr.old_autocreated_from_system := NULL;
1540 l_sys_hist_csr.new_autocreated_from_system := NULL;
1541 ELSE
1542 l_sys_hist_csr.old_autocreated_from_system := fnd_api.g_miss_num;
1543 l_sys_hist_csr.new_autocreated_from_system := l_new_systems_rec.autocreated_from_system_id;
1544 END IF;
1545 ELSE
1546 l_sys_hist_csr.old_autocreated_from_system := fnd_api.g_miss_num;
1547 l_sys_hist_csr.new_autocreated_from_system := l_new_systems_rec.autocreated_from_system_id;
1548 END IF;
1549 --
1550 IF ( l_sys_hist_csr.old_config_system_type IS NULL
1551 AND l_sys_hist_csr.new_config_system_type IS NULL ) THEN
1552 IF ( l_new_systems_rec.config_system_type = l_old_systems_rec.config_system_type )
1553 OR ( l_new_systems_rec.config_system_type = fnd_api.g_miss_char ) THEN
1554 l_sys_hist_csr.old_config_system_type := NULL;
1555 l_sys_hist_csr.new_config_system_type := NULL;
1556 ELSE
1557 l_sys_hist_csr.old_config_system_type := fnd_api.g_miss_char;
1558 l_sys_hist_csr.new_config_system_type := l_new_systems_rec.config_system_type;
1559 END IF;
1560 ELSE
1561 l_sys_hist_csr.old_config_system_type := fnd_api.g_miss_char;
1562 l_sys_hist_csr.new_config_system_type := l_new_systems_rec.config_system_type;
1563 END IF;
1564 --
1565 IF ( l_sys_hist_csr.old_start_date_active IS NULL
1566 AND l_sys_hist_csr.new_start_date_active IS NULL ) THEN
1567 IF ( l_new_systems_rec.start_date_active = l_old_systems_rec.start_date_active )
1568 OR ( l_new_systems_rec.start_date_active = fnd_api.g_miss_date ) THEN
1569 l_sys_hist_csr.old_start_date_active := NULL;
1570 l_sys_hist_csr.new_start_date_active := NULL;
1571 ELSE
1572 l_sys_hist_csr.old_start_date_active := fnd_api.g_miss_date;
1573 l_sys_hist_csr.new_start_date_active := l_new_systems_rec.start_date_active;
1574 END IF;
1575 ELSE
1576 l_sys_hist_csr.old_start_date_active := fnd_api.g_miss_date;
1577 l_sys_hist_csr.new_start_date_active := l_new_systems_rec.start_date_active;
1578 END IF;
1579 --
1580 IF ( l_sys_hist_csr.old_end_date_active IS NULL
1581 AND l_sys_hist_csr.new_end_date_active IS NULL ) THEN
1582 IF ( l_new_systems_rec.end_date_active = l_old_systems_rec.end_date_active )
1583 OR ( l_new_systems_rec.end_date_active = fnd_api.g_miss_date ) THEN
1584 l_sys_hist_csr.old_end_date_active := NULL;
1585 l_sys_hist_csr.new_end_date_active := NULL;
1586 ELSE
1587 l_sys_hist_csr.old_end_date_active := fnd_api.g_miss_date;
1588 l_sys_hist_csr.new_end_date_active := l_new_systems_rec.end_date_active;
1589 END IF;
1590 ELSE
1591 l_sys_hist_csr.old_end_date_active := fnd_api.g_miss_date;
1592 l_sys_hist_csr.new_end_date_active := l_new_systems_rec.end_date_active;
1593 END IF;
1594 --
1595 IF ( l_sys_hist_csr.old_context IS NULL
1596 AND l_sys_hist_csr.new_context IS NULL ) THEN
1597 IF ( l_new_systems_rec.context = l_old_systems_rec.context )
1598 OR ( l_new_systems_rec.context = fnd_api.g_miss_char ) THEN
1599 l_sys_hist_csr.old_context := NULL;
1600 l_sys_hist_csr.new_context := NULL;
1601 ELSE
1602 l_sys_hist_csr.old_context := fnd_api.g_miss_char;
1603 l_sys_hist_csr.new_context := l_new_systems_rec.context;
1604 END IF;
1605 ELSE
1606 l_sys_hist_csr.old_context := fnd_api.g_miss_char;
1607 l_sys_hist_csr.new_context := l_new_systems_rec.context;
1608 END IF;
1609 --
1610 IF ( l_sys_hist_csr.old_attribute1 IS NULL
1611 AND l_sys_hist_csr.new_attribute1 IS NULL ) THEN
1612 IF ( l_new_systems_rec.attribute1 = l_old_systems_rec.attribute1 )
1613 OR ( l_new_systems_rec.attribute1 = fnd_api.g_miss_char ) THEN
1614 l_sys_hist_csr.old_attribute1 := NULL;
1615 l_sys_hist_csr.new_attribute1 := NULL;
1616 ELSE
1617 l_sys_hist_csr.old_attribute1 := fnd_api.g_miss_char;
1618 l_sys_hist_csr.new_attribute1 := l_new_systems_rec.attribute1;
1619 END IF;
1620 ELSE
1621 l_sys_hist_csr.old_attribute1 := fnd_api.g_miss_char;
1622 l_sys_hist_csr.new_attribute1 := l_new_systems_rec.attribute1;
1623 END IF;
1624 --
1625 IF ( l_sys_hist_csr.old_attribute2 IS NULL
1626 AND l_sys_hist_csr.new_attribute2 IS NULL ) THEN
1627 IF ( l_new_systems_rec.attribute2 = l_old_systems_rec.attribute2 )
1628 OR ( l_new_systems_rec.attribute2 = fnd_api.g_miss_char ) THEN
1629 l_sys_hist_csr.old_attribute2 := NULL;
1630 l_sys_hist_csr.new_attribute2 := NULL;
1631 ELSE
1632 l_sys_hist_csr.old_attribute2 := fnd_api.g_miss_char;
1633 l_sys_hist_csr.new_attribute2 := l_new_systems_rec.attribute2;
1634 END IF;
1635 ELSE
1636 l_sys_hist_csr.old_attribute2 := fnd_api.g_miss_char;
1637 l_sys_hist_csr.new_attribute2 := l_new_systems_rec.attribute2;
1638 END IF;
1639 --
1640 IF ( l_sys_hist_csr.old_attribute3 IS NULL
1641 AND l_sys_hist_csr.new_attribute3 IS NULL ) THEN
1642 IF ( l_new_systems_rec.attribute3 = l_old_systems_rec.attribute3 )
1643 OR ( l_new_systems_rec.attribute3 = fnd_api.g_miss_char ) THEN
1644 l_sys_hist_csr.old_attribute3 := NULL;
1645 l_sys_hist_csr.new_attribute3 := NULL;
1646 ELSE
1647 l_sys_hist_csr.old_attribute3 := fnd_api.g_miss_char;
1648 l_sys_hist_csr.new_attribute3 := l_new_systems_rec.attribute3;
1649 END IF;
1650 ELSE
1651 l_sys_hist_csr.old_attribute3 := fnd_api.g_miss_char;
1652 l_sys_hist_csr.new_attribute3 := l_new_systems_rec.attribute3;
1653 END IF;
1654 --
1655 IF ( l_sys_hist_csr.old_attribute4 IS NULL
1656 AND l_sys_hist_csr.new_attribute4 IS NULL ) THEN
1657 IF ( l_new_systems_rec.attribute4 = l_old_systems_rec.attribute4 )
1658 OR ( l_new_systems_rec.attribute4 = fnd_api.g_miss_char ) THEN
1659 l_sys_hist_csr.old_attribute4 := NULL;
1660 l_sys_hist_csr.new_attribute4 := NULL;
1661 ELSE
1662 l_sys_hist_csr.old_attribute4 := fnd_api.g_miss_char;
1663 l_sys_hist_csr.new_attribute4 := l_new_systems_rec.attribute4;
1664 END IF;
1665 ELSE
1666 l_sys_hist_csr.old_attribute4 := fnd_api.g_miss_char;
1667 l_sys_hist_csr.new_attribute4 := l_new_systems_rec.attribute4;
1668 END IF;
1669 --
1670 IF ( l_sys_hist_csr.old_attribute5 IS NULL
1671 AND l_sys_hist_csr.new_attribute5 IS NULL ) THEN
1672 IF ( l_new_systems_rec.attribute5 = l_old_systems_rec.attribute5 )
1673 OR ( l_new_systems_rec.attribute5 = fnd_api.g_miss_char ) THEN
1674 l_sys_hist_csr.old_attribute5 := NULL;
1675 l_sys_hist_csr.new_attribute5 := NULL;
1676 ELSE
1677 l_sys_hist_csr.old_attribute5 := fnd_api.g_miss_char;
1678 l_sys_hist_csr.new_attribute5 := l_new_systems_rec.attribute5;
1679 END IF;
1680 ELSE
1681 l_sys_hist_csr.old_attribute5 := fnd_api.g_miss_char;
1682 l_sys_hist_csr.new_attribute5 := l_new_systems_rec.attribute5;
1683 END IF;
1684 --
1685 IF ( l_sys_hist_csr.old_attribute6 IS NULL
1686 AND l_sys_hist_csr.new_attribute6 IS NULL ) THEN
1687 IF ( l_new_systems_rec.attribute6 = l_old_systems_rec.attribute6 )
1688 OR ( l_new_systems_rec.attribute6 = fnd_api.g_miss_char ) THEN
1689 l_sys_hist_csr.old_attribute6 := NULL;
1690 l_sys_hist_csr.new_attribute6 := NULL;
1691 ELSE
1692 l_sys_hist_csr.old_attribute6 := fnd_api.g_miss_char;
1693 l_sys_hist_csr.new_attribute6 := l_new_systems_rec.attribute6;
1694 END IF;
1695 ELSE
1696 l_sys_hist_csr.old_attribute6 := fnd_api.g_miss_char;
1697 l_sys_hist_csr.new_attribute6 := l_new_systems_rec.attribute6;
1698 END IF;
1699 --
1700 IF ( l_sys_hist_csr.old_attribute7 IS NULL
1701 AND l_sys_hist_csr.new_attribute7 IS NULL ) THEN
1702 IF ( l_new_systems_rec.attribute7 = l_old_systems_rec.attribute7 )
1703 OR ( l_new_systems_rec.attribute7 = fnd_api.g_miss_char ) THEN
1704 l_sys_hist_csr.old_attribute7 := NULL;
1705 l_sys_hist_csr.new_attribute7 := NULL;
1706 ELSE
1707 l_sys_hist_csr.old_attribute7 := fnd_api.g_miss_char;
1708 l_sys_hist_csr.new_attribute7 := l_new_systems_rec.attribute7;
1709 END IF;
1710 ELSE
1711 l_sys_hist_csr.old_attribute7 := fnd_api.g_miss_char;
1712 l_sys_hist_csr.new_attribute7 := l_new_systems_rec.attribute7;
1713 END IF;
1714 --
1715 IF ( l_sys_hist_csr.old_attribute8 IS NULL
1716 AND l_sys_hist_csr.new_attribute8 IS NULL ) THEN
1717 IF ( l_new_systems_rec.attribute8 = l_old_systems_rec.attribute8 )
1718 OR ( l_new_systems_rec.attribute8 = fnd_api.g_miss_char ) THEN
1719 l_sys_hist_csr.old_attribute8 := NULL;
1720 l_sys_hist_csr.new_attribute8 := NULL;
1721 ELSE
1722 l_sys_hist_csr.old_attribute8 := fnd_api.g_miss_char;
1723 l_sys_hist_csr.new_attribute8 := l_new_systems_rec.attribute8;
1724 END IF;
1725 ELSE
1726 l_sys_hist_csr.old_attribute8 := fnd_api.g_miss_char;
1727 l_sys_hist_csr.new_attribute8 := l_new_systems_rec.attribute8;
1728 END IF;
1729 --
1730 IF ( l_sys_hist_csr.old_attribute9 IS NULL
1731 AND l_sys_hist_csr.new_attribute9 IS NULL ) THEN
1732 IF ( l_new_systems_rec.attribute9 = l_old_systems_rec.attribute9 )
1733 OR ( l_new_systems_rec.attribute9 = fnd_api.g_miss_char ) THEN
1734 l_sys_hist_csr.old_attribute9 := NULL;
1735 l_sys_hist_csr.new_attribute9 := NULL;
1736 ELSE
1737 l_sys_hist_csr.old_attribute9 := fnd_api.g_miss_char;
1738 l_sys_hist_csr.new_attribute9 := l_new_systems_rec.attribute9;
1739 END IF;
1740 ELSE
1741 l_sys_hist_csr.old_attribute9 := fnd_api.g_miss_char;
1742 l_sys_hist_csr.new_attribute9 := l_new_systems_rec.attribute9;
1743 END IF;
1744 --
1745 IF ( l_sys_hist_csr.old_attribute10 IS NULL
1746 AND l_sys_hist_csr.new_attribute10 IS NULL ) THEN
1747 IF ( l_new_systems_rec.attribute10 = l_old_systems_rec.attribute10 )
1748 OR ( l_new_systems_rec.attribute10 = fnd_api.g_miss_char ) THEN
1749 l_sys_hist_csr.old_attribute10 := NULL;
1750 l_sys_hist_csr.new_attribute10 := NULL;
1751 ELSE
1752 l_sys_hist_csr.old_attribute10 := fnd_api.g_miss_char;
1753 l_sys_hist_csr.new_attribute10 := l_new_systems_rec.attribute10;
1754 END IF;
1755 ELSE
1756 l_sys_hist_csr.old_attribute10 := fnd_api.g_miss_char;
1757 l_sys_hist_csr.new_attribute10 := l_new_systems_rec.attribute10;
1758 END IF;
1759 --
1760 IF ( l_sys_hist_csr.old_attribute11 IS NULL
1761 AND l_sys_hist_csr.new_attribute11 IS NULL ) THEN
1762 IF ( l_new_systems_rec.attribute11 = l_old_systems_rec.attribute11 )
1763 OR ( l_new_systems_rec.attribute11 = fnd_api.g_miss_char ) THEN
1764 l_sys_hist_csr.old_attribute11 := NULL;
1765 l_sys_hist_csr.new_attribute11 := NULL;
1766 ELSE
1767 l_sys_hist_csr.old_attribute11 := fnd_api.g_miss_char;
1768 l_sys_hist_csr.new_attribute11 := l_new_systems_rec.attribute11;
1769 END IF;
1770 ELSE
1771 l_sys_hist_csr.old_attribute11 := fnd_api.g_miss_char;
1772 l_sys_hist_csr.new_attribute11 := l_new_systems_rec.attribute11;
1773 END IF;
1774 --
1775 IF ( l_sys_hist_csr.old_attribute12 IS NULL
1776 AND l_sys_hist_csr.new_attribute12 IS NULL ) THEN
1777 IF ( l_new_systems_rec.attribute12 = l_old_systems_rec.attribute12 )
1778 OR ( l_new_systems_rec.attribute12 = fnd_api.g_miss_char ) THEN
1779 l_sys_hist_csr.old_attribute12 := NULL;
1780 l_sys_hist_csr.new_attribute12 := NULL;
1781 ELSE
1782 l_sys_hist_csr.old_attribute12 := fnd_api.g_miss_char;
1783 l_sys_hist_csr.new_attribute12 := l_new_systems_rec.attribute12;
1784 END IF;
1785 ELSE
1786 l_sys_hist_csr.old_attribute12 := fnd_api.g_miss_char;
1787 l_sys_hist_csr.new_attribute12 := l_new_systems_rec.attribute12;
1788 END IF;
1789 --
1790 IF ( l_sys_hist_csr.old_attribute13 IS NULL
1791 AND l_sys_hist_csr.new_attribute13 IS NULL ) THEN
1792 IF ( l_new_systems_rec.attribute13 = l_old_systems_rec.attribute13 )
1793 OR ( l_new_systems_rec.attribute13 = fnd_api.g_miss_char ) THEN
1794 l_sys_hist_csr.old_attribute13 := NULL;
1795 l_sys_hist_csr.new_attribute13 := NULL;
1796 ELSE
1797 l_sys_hist_csr.old_attribute13 := fnd_api.g_miss_char;
1798 l_sys_hist_csr.new_attribute13 := l_new_systems_rec.attribute13;
1799 END IF;
1800 ELSE
1801 l_sys_hist_csr.old_attribute13 := fnd_api.g_miss_char;
1802 l_sys_hist_csr.new_attribute13 := l_new_systems_rec.attribute13;
1803 END IF;
1804 --
1805 IF ( l_sys_hist_csr.old_attribute14 IS NULL
1806 AND l_sys_hist_csr.new_attribute14 IS NULL ) THEN
1807 IF ( l_new_systems_rec.attribute14 = l_old_systems_rec.attribute14 )
1808 OR ( l_new_systems_rec.attribute14 = fnd_api.g_miss_char ) THEN
1809 l_sys_hist_csr.old_attribute14 := NULL;
1810 l_sys_hist_csr.new_attribute14 := NULL;
1811 ELSE
1812 l_sys_hist_csr.old_attribute14 := fnd_api.g_miss_char;
1813 l_sys_hist_csr.new_attribute14 := l_new_systems_rec.attribute14;
1814 END IF;
1815 ELSE
1816 l_sys_hist_csr.old_attribute14 := fnd_api.g_miss_char;
1817 l_sys_hist_csr.new_attribute14 := l_new_systems_rec.attribute14;
1818 END IF;
1819 --
1820 IF ( l_sys_hist_csr.old_attribute15 IS NULL
1821 AND l_sys_hist_csr.new_attribute15 IS NULL ) THEN
1822 IF ( l_new_systems_rec.attribute15 = l_old_systems_rec.attribute15 )
1823 OR ( l_new_systems_rec.attribute15 = fnd_api.g_miss_char ) THEN
1824 l_sys_hist_csr.old_attribute15 := NULL;
1825 l_sys_hist_csr.new_attribute15 := NULL;
1826 ELSE
1827 l_sys_hist_csr.old_attribute15 := fnd_api.g_miss_char;
1828 l_sys_hist_csr.new_attribute15 := l_new_systems_rec.attribute15;
1829 END IF;
1830 ELSE
1831 l_sys_hist_csr.old_attribute15 := fnd_api.g_miss_char;
1832 l_sys_hist_csr.new_attribute15 := l_new_systems_rec.attribute15;
1833 END IF;
1834 --
1835 IF ( l_sys_hist_csr.old_name IS NULL
1836 AND l_sys_hist_csr.new_name IS NULL ) THEN
1837 IF ( l_new_systems_rec.name = l_old_systems_rec.name )
1838 OR ( l_new_systems_rec.name = fnd_api.g_miss_char ) THEN
1839 l_sys_hist_csr.old_name := NULL;
1840 l_sys_hist_csr.new_name := NULL;
1841 ELSE
1842 l_sys_hist_csr.old_name := fnd_api.g_miss_char;
1843 l_sys_hist_csr.new_name := l_new_systems_rec.name;
1844 END IF;
1845 ELSE
1846 l_sys_hist_csr.old_name := fnd_api.g_miss_char;
1847 l_sys_hist_csr.new_name := l_new_systems_rec.name;
1848 END IF;
1849 --
1850 IF ( l_sys_hist_csr.old_description IS NULL
1851 AND l_sys_hist_csr.new_description IS NULL ) THEN
1852 IF ( l_new_systems_rec.description = l_old_systems_rec.description )
1853 OR ( l_new_systems_rec.description = fnd_api.g_miss_char ) THEN
1854 l_sys_hist_csr.old_description := NULL;
1855 l_sys_hist_csr.new_description := NULL;
1856 ELSE
1857 l_sys_hist_csr.old_description := fnd_api.g_miss_char;
1858 l_sys_hist_csr.new_description := l_new_systems_rec.description;
1859 END IF;
1860 ELSE
1861 l_sys_hist_csr.old_description := fnd_api.g_miss_char;
1862 l_sys_hist_csr.new_description := l_new_systems_rec.description;
1863 END IF;
1864 --
1865 IF ( l_sys_hist_csr.old_operating_unit_id IS NULL
1866 AND l_sys_hist_csr.new_operating_unit_id IS NULL ) THEN
1867 IF ( l_new_systems_rec.operating_unit_id = l_old_systems_rec.operating_unit_id )
1868 OR ( l_new_systems_rec.operating_unit_id = fnd_api.g_miss_num ) THEN
1869 l_sys_hist_csr.old_operating_unit_id := NULL;
1870 l_sys_hist_csr.new_operating_unit_id := NULL;
1871 ELSE
1872 l_sys_hist_csr.old_operating_unit_id := fnd_api.g_miss_num;
1873 l_sys_hist_csr.new_operating_unit_id := l_new_systems_rec.operating_unit_id;
1874 END IF;
1875 ELSE
1876 l_sys_hist_csr.old_operating_unit_id := fnd_api.g_miss_num;
1877 l_sys_hist_csr.new_operating_unit_id := l_new_systems_rec.operating_unit_id;
1878 END IF;
1879 --
1880
1881 csi_systems_h_pkg.update_row(
1882 p_system_history_id => l_sys_hist_id,
1883 p_system_id => fnd_api.g_miss_num,
1884 p_transaction_id => fnd_api.g_miss_num,
1885 p_old_customer_id => l_sys_hist_csr.old_customer_id,
1886 p_new_customer_id => l_sys_hist_csr.new_customer_id,
1887 p_old_system_type_code => l_sys_hist_csr.old_system_type_code,
1888 p_new_system_type_code => l_sys_hist_csr.new_system_type_code,
1889 p_old_system_number => l_sys_hist_csr.old_system_number,
1890 p_new_system_number => l_sys_hist_csr.new_system_number,
1891 p_old_parent_system_id => l_sys_hist_csr.old_parent_system_id,
1892 p_new_parent_system_id => l_sys_hist_csr.new_parent_system_id,
1893 p_old_ship_to_contact_id => l_sys_hist_csr.old_ship_to_contact_id,
1894 p_new_ship_to_contact_id => l_sys_hist_csr.new_ship_to_contact_id,
1895 p_old_bill_to_contact_id => l_sys_hist_csr.old_bill_to_contact_id,
1896 p_new_bill_to_contact_id => l_sys_hist_csr.new_bill_to_contact_id,
1897 p_old_technical_contact_id => l_sys_hist_csr.old_technical_contact_id,
1898 p_new_technical_contact_id => l_sys_hist_csr.new_technical_contact_id,
1899 p_old_service_admin_contact_id => l_sys_hist_csr.old_service_admin_contact_id,
1900 p_new_service_admin_contact_id => l_sys_hist_csr.new_service_admin_contact_id,
1901 p_old_ship_to_site_use_id => l_sys_hist_csr.old_ship_to_site_use_id,
1902 p_new_ship_to_site_use_id => l_sys_hist_csr.new_ship_to_site_use_id,
1903 p_old_install_site_use_id => l_sys_hist_csr.old_install_site_use_id,
1904 p_new_install_site_use_id => l_sys_hist_csr.new_install_site_use_id,
1905 p_old_bill_to_site_use_id => l_sys_hist_csr.old_bill_to_site_use_id,
1906 p_new_bill_to_site_use_id => l_sys_hist_csr.new_bill_to_site_use_id,
1907 p_old_coterminate_day_month => l_sys_hist_csr.old_coterminate_day_month,
1908 p_new_coterminate_day_month => l_sys_hist_csr.new_coterminate_day_month,
1909 p_old_start_date_active => l_sys_hist_csr.old_start_date_active,
1910 p_new_start_date_active => l_sys_hist_csr.new_start_date_active,
1911 p_old_end_date_active => l_sys_hist_csr.old_end_date_active,
1912 p_new_end_date_active => l_sys_hist_csr.new_end_date_active,
1913 p_old_autocreated_from_system => l_sys_hist_csr.old_autocreated_from_system,
1914 p_new_autocreated_from_system => l_sys_hist_csr.new_autocreated_from_system,
1915 p_old_config_system_type => l_sys_hist_csr.old_config_system_type,
1916 p_new_config_system_type => l_sys_hist_csr.new_config_system_type,
1917 p_old_context => l_sys_hist_csr.old_context,
1918 p_new_context => l_sys_hist_csr.new_context,
1919 p_old_attribute1 => l_sys_hist_csr.old_attribute1,
1920 p_new_attribute1 => l_sys_hist_csr.new_attribute1,
1921 p_old_attribute2 => l_sys_hist_csr.old_attribute2,
1922 p_new_attribute2 => l_sys_hist_csr.new_attribute2,
1923 p_old_attribute3 => l_sys_hist_csr.old_attribute3,
1924 p_new_attribute3 => l_sys_hist_csr.new_attribute3,
1925 p_old_attribute4 => l_sys_hist_csr.old_attribute4,
1926 p_new_attribute4 => l_sys_hist_csr.new_attribute4,
1927 p_old_attribute5 => l_sys_hist_csr.old_attribute5,
1928 p_new_attribute5 => l_sys_hist_csr.new_attribute5,
1929 p_old_attribute6 => l_sys_hist_csr.old_attribute6,
1930 p_new_attribute6 => l_sys_hist_csr.new_attribute6,
1931 p_old_attribute7 => l_sys_hist_csr.old_attribute7,
1932 p_new_attribute7 => l_sys_hist_csr.new_attribute7,
1933 p_old_attribute8 => l_sys_hist_csr.old_attribute8,
1934 p_new_attribute8 => l_sys_hist_csr.new_attribute8,
1935 p_old_attribute9 => l_sys_hist_csr.old_attribute9,
1936 p_new_attribute9 => l_sys_hist_csr.new_attribute9,
1937 p_old_attribute10 => l_sys_hist_csr.old_attribute10,
1938 p_new_attribute10 => l_sys_hist_csr.new_attribute10,
1939 p_old_attribute11 => l_sys_hist_csr.old_attribute11,
1940 p_new_attribute11 => l_sys_hist_csr.new_attribute11,
1941 p_old_attribute12 => l_sys_hist_csr.old_attribute12,
1942 p_new_attribute12 => l_sys_hist_csr.new_attribute12,
1943 p_old_attribute13 => l_sys_hist_csr.old_attribute13,
1944 p_new_attribute13 => l_sys_hist_csr.new_attribute13,
1945 p_old_attribute14 => l_sys_hist_csr.old_attribute14,
1946 p_new_attribute14 => l_sys_hist_csr.new_attribute14,
1947 p_old_attribute15 => l_sys_hist_csr.old_attribute15,
1948 p_new_attribute15 => l_sys_hist_csr.new_attribute15,
1949 p_full_dump_flag => fnd_api.g_miss_char,
1950 p_created_by => fnd_api.g_miss_num,
1951 p_creation_date => fnd_api.g_miss_date,
1952 p_last_updated_by => fnd_global.user_id,
1953 p_last_update_date => SYSDATE,
1954 p_last_update_login => fnd_global.conc_login_id,
1955 p_object_version_number => fnd_api.g_miss_num,
1956 p_old_name => l_sys_hist_csr.old_name,
1957 p_new_name => l_sys_hist_csr.new_name,
1958 p_old_description => l_sys_hist_csr.old_description,
1959 p_new_description => l_sys_hist_csr.new_description,
1960 p_old_operating_unit_id => l_sys_hist_csr.old_operating_unit_id,
1961 p_new_operating_unit_id => l_sys_hist_csr.new_operating_unit_id
1962 );
1963 END IF;
1964 EXCEPTION
1965 WHEN NO_DATA_FOUND THEN
1966
1967 IF mod(l_old_systems_rec.object_version_number+1,l_full_dump)=0 THEN
1968 csi_systems_h_pkg.insert_row(
1969 px_system_history_id => l_systems_hist_rec.system_history_id,
1970 p_system_id => l_old_systems_rec.system_id,
1971 p_transaction_id => l_transaction_id,
1972 p_old_customer_id => l_old_systems_rec.customer_id,
1973 p_new_customer_id => l_new_systems_rec.customer_id,
1974 p_old_system_type_code => l_old_systems_rec.system_type_code,
1975 p_new_system_type_code => l_new_systems_rec.system_type_code,
1976 p_old_system_number => l_old_systems_rec.system_number,
1977 p_new_system_number => l_new_systems_rec.system_number,
1978 p_old_parent_system_id => l_old_systems_rec.parent_system_id,
1979 p_new_parent_system_id => l_new_systems_rec.parent_system_id,
1980 p_old_ship_to_contact_id => l_old_systems_rec.ship_to_contact_id,
1981 p_new_ship_to_contact_id => l_new_systems_rec.ship_to_contact_id,
1982 p_old_bill_to_contact_id => l_old_systems_rec.bill_to_contact_id,
1983 p_new_bill_to_contact_id => l_new_systems_rec.bill_to_contact_id,
1984 p_old_technical_contact_id => l_old_systems_rec.technical_contact_id,
1985 p_new_technical_contact_id => l_new_systems_rec.technical_contact_id,
1986 p_old_service_admin_contact_id => l_old_systems_rec.service_admin_contact_id,
1987 p_new_service_admin_contact_id => l_new_systems_rec.service_admin_contact_id,
1988 p_old_ship_to_site_use_id => l_old_systems_rec.ship_to_site_use_id,
1989 p_new_ship_to_site_use_id => l_new_systems_rec.ship_to_site_use_id,
1990 p_old_install_site_use_id => l_old_systems_rec.install_site_use_id,
1991 p_new_install_site_use_id => l_new_systems_rec.install_site_use_id,
1992 p_old_bill_to_site_use_id => l_old_systems_rec.bill_to_site_use_id,
1993 p_new_bill_to_site_use_id => l_new_systems_rec.bill_to_site_use_id,
1994 p_old_coterminate_day_month => l_old_systems_rec.coterminate_day_month,
1995 p_new_coterminate_day_month => l_new_systems_rec.coterminate_day_month,
1996 p_old_start_date_active => l_old_systems_rec.start_date_active,
1997 p_new_start_date_active => l_new_systems_rec.start_date_active,
1998 p_old_end_date_active => l_old_systems_rec.end_date_active,
1999 p_new_end_date_active => l_new_systems_rec.end_date_active,
2000 p_old_autocreated_from_system => l_old_systems_rec.autocreated_from_system_id,
2001 p_new_autocreated_from_system => l_new_systems_rec.autocreated_from_system_id,
2002 p_old_config_system_type => l_old_systems_rec.config_system_type,
2003 p_new_config_system_type => l_new_systems_rec.config_system_type,
2004 p_old_context => l_old_systems_rec.context,
2005 p_new_context => l_new_systems_rec.context,
2006 p_old_attribute1 => l_old_systems_rec.attribute1,
2007 p_new_attribute1 => l_new_systems_rec.attribute1,
2008 p_old_attribute2 => l_old_systems_rec.attribute2,
2009 p_new_attribute2 => l_new_systems_rec.attribute2,
2010 p_old_attribute3 => l_old_systems_rec.attribute3,
2011 p_new_attribute3 => l_new_systems_rec.attribute3,
2012 p_old_attribute4 => l_old_systems_rec.attribute4,
2013 p_new_attribute4 => l_new_systems_rec.attribute4,
2014 p_old_attribute5 => l_old_systems_rec.attribute5,
2015 p_new_attribute5 => l_new_systems_rec.attribute5,
2016 p_old_attribute6 => l_old_systems_rec.attribute6,
2017 p_new_attribute6 => l_new_systems_rec.attribute6,
2018 p_old_attribute7 => l_old_systems_rec.attribute7,
2019 p_new_attribute7 => l_new_systems_rec.attribute7,
2020 p_old_attribute8 => l_old_systems_rec.attribute8,
2021 p_new_attribute8 => l_new_systems_rec.attribute8,
2022 p_old_attribute9 => l_old_systems_rec.attribute9,
2023 p_new_attribute9 => l_new_systems_rec.attribute9,
2024 p_old_attribute10 => l_old_systems_rec.attribute10,
2025 p_new_attribute10 => l_new_systems_rec.attribute10,
2026 p_old_attribute11 => l_old_systems_rec.attribute11,
2027 p_new_attribute11 => l_new_systems_rec.attribute11,
2028 p_old_attribute12 => l_old_systems_rec.attribute12,
2029 p_new_attribute12 => l_new_systems_rec.attribute12,
2030 p_old_attribute13 => l_old_systems_rec.attribute13,
2031 p_new_attribute13 => l_new_systems_rec.attribute13,
2032 p_old_attribute14 => l_old_systems_rec.attribute14,
2033 p_new_attribute14 => l_new_systems_rec.attribute14,
2034 p_old_attribute15 => l_old_systems_rec.attribute15,
2035 p_new_attribute15 => l_new_systems_rec.attribute15,
2036 p_full_dump_flag => 'Y',
2037 p_created_by => fnd_global.user_id,
2038 p_creation_date => SYSDATE,
2039 p_last_updated_by => fnd_global.user_id,
2040 p_last_update_date => SYSDATE,
2041 p_last_update_login => fnd_global.conc_login_id,
2042 p_object_version_number => 1,
2043 p_old_name => l_old_systems_rec.name,
2044 p_new_name => l_new_systems_rec.name,
2045 p_old_description => l_old_systems_rec.description,
2046 p_new_description => l_new_systems_rec.description,
2047 p_old_operating_unit_id => l_old_systems_rec.operating_unit_id,
2048 p_new_operating_unit_id => l_new_systems_rec.operating_unit_id
2049 );
2050 ELSE
2051
2052 IF (l_new_systems_rec.customer_id = fnd_api.g_miss_num) OR
2053 NVL(l_old_systems_rec.customer_id,fnd_api.g_miss_num) = NVL(l_new_systems_rec.customer_id,fnd_api.g_miss_num) THEN
2054 l_systems_hist_rec.old_customer_id := NULL;
2055 l_systems_hist_rec.new_customer_id := NULL;
2056 ELSIF
2057 NVL(l_old_systems_rec.customer_id,fnd_api.g_miss_num) <> NVL(l_new_systems_rec.customer_id,fnd_api.g_miss_num) THEN
2058 l_systems_hist_rec.old_customer_id := l_old_systems_rec.customer_id ;
2059 l_systems_hist_rec.new_customer_id := l_new_systems_rec.customer_id ;
2060 END IF;
2061 --
2062 IF (l_new_systems_rec.system_type_code = fnd_api.g_miss_char) OR
2063 NVL(l_old_systems_rec.system_type_code,fnd_api.g_miss_char) = NVL(l_new_systems_rec.system_type_code,fnd_api.g_miss_char) THEN
2064 l_systems_hist_rec.old_system_type_code := NULL;
2065 l_systems_hist_rec.new_system_type_code := NULL;
2066 ELSIF
2067 NVL(l_old_systems_rec.system_type_code,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.system_type_code,fnd_api.g_miss_char) THEN
2068 l_systems_hist_rec.old_system_type_code := l_old_systems_rec.system_type_code ;
2069 l_systems_hist_rec.new_system_type_code := l_new_systems_rec.system_type_code ;
2070 END IF;
2071 --
2072 IF (l_new_systems_rec.system_number = fnd_api.g_miss_char) OR
2073 NVL(l_old_systems_rec.system_number,fnd_api.g_miss_char) = NVL(l_new_systems_rec.system_number,fnd_api.g_miss_char) THEN
2074 l_systems_hist_rec.old_system_number := NULL;
2075 l_systems_hist_rec.new_system_number := NULL;
2076 ELSIF
2077 NVL(l_old_systems_rec.system_number,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.system_number,fnd_api.g_miss_char) THEN
2078 l_systems_hist_rec.old_system_number := l_old_systems_rec.system_number ;
2079 l_systems_hist_rec.new_system_number := l_new_systems_rec.system_number ;
2080 END IF;
2081 --
2082 IF (l_new_systems_rec.parent_system_id = fnd_api.g_miss_num) OR
2083 NVL(l_old_systems_rec.parent_system_id,fnd_api.g_miss_num) = NVL(l_new_systems_rec.parent_system_id,fnd_api.g_miss_num) THEN
2084 l_systems_hist_rec.old_parent_system_id := NULL;
2085 l_systems_hist_rec.new_parent_system_id := NULL;
2086 ELSIF
2087 NVL(l_old_systems_rec.parent_system_id,fnd_api.g_miss_num) <> NVL(l_new_systems_rec.parent_system_id,fnd_api.g_miss_num) THEN
2088 l_systems_hist_rec.old_parent_system_id := l_old_systems_rec.parent_system_id ;
2089 l_systems_hist_rec.new_parent_system_id := l_new_systems_rec.parent_system_id ;
2090 END IF;
2091 --
2092 IF (l_new_systems_rec.ship_to_contact_id = fnd_api.g_miss_num) OR
2093 NVL(l_old_systems_rec.ship_to_contact_id,fnd_api.g_miss_num) = NVL(l_new_systems_rec.ship_to_contact_id,fnd_api.g_miss_num) THEN
2094 l_systems_hist_rec.old_ship_to_contact_id := NULL;
2095 l_systems_hist_rec.new_ship_to_contact_id := NULL;
2096 ELSIF
2097 NVL(l_old_systems_rec.ship_to_contact_id,fnd_api.g_miss_num) <> NVL(l_new_systems_rec.ship_to_contact_id,fnd_api.g_miss_num) THEN
2098 l_systems_hist_rec.old_ship_to_contact_id := l_old_systems_rec.ship_to_contact_id ;
2099 l_systems_hist_rec.new_ship_to_contact_id := l_new_systems_rec.ship_to_contact_id ;
2100 END IF;
2101 --
2102 IF (l_new_systems_rec.bill_to_contact_id = fnd_api.g_miss_num) OR
2103 NVL(l_old_systems_rec.bill_to_contact_id,fnd_api.g_miss_num) = NVL(l_new_systems_rec.bill_to_contact_id,fnd_api.g_miss_num) THEN
2104 l_systems_hist_rec.old_bill_to_contact_id := NULL;
2105 l_systems_hist_rec.new_bill_to_contact_id := NULL;
2106 ELSIF
2107 NVL(l_old_systems_rec.bill_to_contact_id,fnd_api.g_miss_num) <> NVL(l_new_systems_rec.bill_to_contact_id,fnd_api.g_miss_num) THEN
2108 l_systems_hist_rec.old_bill_to_contact_id := l_old_systems_rec.bill_to_contact_id ;
2109 l_systems_hist_rec.new_bill_to_contact_id := l_new_systems_rec.bill_to_contact_id ;
2110 END IF;
2111 --
2112 IF (l_new_systems_rec.technical_contact_id = fnd_api.g_miss_num) OR
2113 NVL(l_old_systems_rec.technical_contact_id,fnd_api.g_miss_num) = NVL(l_new_systems_rec.technical_contact_id,fnd_api.g_miss_num) THEN
2114 l_systems_hist_rec.old_technical_contact_id := NULL;
2115 l_systems_hist_rec.new_technical_contact_id := NULL;
2116 ELSIF
2117 NVL(l_old_systems_rec.technical_contact_id,fnd_api.g_miss_num) <> NVL(l_new_systems_rec.technical_contact_id,fnd_api.g_miss_num) THEN
2118 l_systems_hist_rec.old_technical_contact_id := l_old_systems_rec.technical_contact_id ;
2119 l_systems_hist_rec.new_technical_contact_id := l_new_systems_rec.technical_contact_id ;
2120 END IF;
2121 --
2122 IF (l_new_systems_rec.service_admin_contact_id = fnd_api.g_miss_num) OR
2123 NVL(l_old_systems_rec.service_admin_contact_id,fnd_api.g_miss_num) = NVL(l_new_systems_rec.service_admin_contact_id,fnd_api.g_miss_num) THEN
2124 l_systems_hist_rec.old_service_admin_contact_id := NULL;
2125 l_systems_hist_rec.new_service_admin_contact_id := NULL;
2126 ELSIF
2127 NVL(l_old_systems_rec.service_admin_contact_id,fnd_api.g_miss_num) <> NVL(l_new_systems_rec.service_admin_contact_id,fnd_api.g_miss_num) THEN
2128 l_systems_hist_rec.old_service_admin_contact_id := l_old_systems_rec.service_admin_contact_id ;
2129 l_systems_hist_rec.new_service_admin_contact_id := l_new_systems_rec.service_admin_contact_id ;
2130 END IF;
2131 --
2132 IF (l_new_systems_rec.ship_to_site_use_id = fnd_api.g_miss_num) OR
2133 NVL(l_old_systems_rec.ship_to_site_use_id,fnd_api.g_miss_num) = NVL(l_new_systems_rec.ship_to_site_use_id,fnd_api.g_miss_num) THEN
2134 l_systems_hist_rec.old_ship_to_site_use_id := NULL;
2135 l_systems_hist_rec.new_ship_to_site_use_id := NULL;
2136 ELSIF
2137 NVL(l_old_systems_rec.ship_to_site_use_id,fnd_api.g_miss_num) <> NVL(l_new_systems_rec.ship_to_site_use_id,fnd_api.g_miss_num) THEN
2138 l_systems_hist_rec.old_ship_to_site_use_id := l_old_systems_rec.ship_to_site_use_id ;
2139 l_systems_hist_rec.new_ship_to_site_use_id := l_new_systems_rec.ship_to_site_use_id ;
2140 END IF;
2141 --
2142 IF (l_new_systems_rec.bill_to_site_use_id = fnd_api.g_miss_num) OR
2143 NVL(l_old_systems_rec.bill_to_site_use_id,fnd_api.g_miss_num) = NVL(l_new_systems_rec.bill_to_site_use_id,fnd_api.g_miss_num) THEN
2144 l_systems_hist_rec.old_bill_to_site_use_id := NULL;
2145 l_systems_hist_rec.new_bill_to_site_use_id := NULL;
2146 ELSIF
2147 NVL(l_old_systems_rec.bill_to_site_use_id,fnd_api.g_miss_num) <> NVL(l_new_systems_rec.bill_to_site_use_id,fnd_api.g_miss_num) THEN
2148 l_systems_hist_rec.old_bill_to_site_use_id := l_old_systems_rec.bill_to_site_use_id ;
2149 l_systems_hist_rec.new_bill_to_site_use_id := l_new_systems_rec.bill_to_site_use_id ;
2150 END IF;
2151 --
2152 IF (l_new_systems_rec.install_site_use_id = fnd_api.g_miss_num) OR
2153 NVL(l_old_systems_rec.install_site_use_id,fnd_api.g_miss_num) = NVL(l_new_systems_rec.install_site_use_id,fnd_api.g_miss_num) THEN
2154 l_systems_hist_rec.old_install_site_use_id := NULL;
2155 l_systems_hist_rec.new_install_site_use_id := NULL;
2156 ELSIF
2157 NVL(l_old_systems_rec.install_site_use_id,fnd_api.g_miss_num) <> NVL(l_new_systems_rec.install_site_use_id,fnd_api.g_miss_num) THEN
2158 l_systems_hist_rec.old_install_site_use_id := l_old_systems_rec.install_site_use_id ;
2159 l_systems_hist_rec.new_install_site_use_id := l_new_systems_rec.install_site_use_id ;
2160 END IF;
2161 --
2162 IF (l_new_systems_rec.coterminate_day_month = fnd_api.g_miss_char) OR
2163 NVL(l_old_systems_rec.coterminate_day_month,fnd_api.g_miss_char) = NVL(l_new_systems_rec.coterminate_day_month,fnd_api.g_miss_char) THEN
2164 l_systems_hist_rec.old_coterminate_day_month := NULL;
2165 l_systems_hist_rec.new_coterminate_day_month := NULL;
2166 ELSIF
2167 NVL(l_old_systems_rec.coterminate_day_month,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.coterminate_day_month,fnd_api.g_miss_char) THEN
2168 l_systems_hist_rec.old_coterminate_day_month := l_old_systems_rec.coterminate_day_month ;
2169 l_systems_hist_rec.new_coterminate_day_month := l_new_systems_rec.coterminate_day_month ;
2170 END IF;
2171 --
2172 IF (l_new_systems_rec.start_date_active = fnd_api.g_miss_date) OR
2173 NVL(l_old_systems_rec.start_date_active,fnd_api.g_miss_date) = NVL(l_new_systems_rec.start_date_active,fnd_api.g_miss_date) THEN
2174 l_systems_hist_rec.old_start_date_active := NULL;
2175 l_systems_hist_rec.new_start_date_active := NULL;
2176 ELSIF
2177 NVL(l_old_systems_rec.start_date_active,fnd_api.g_miss_date) <> NVL(l_new_systems_rec.start_date_active,fnd_api.g_miss_date) THEN
2178 l_systems_hist_rec.old_start_date_active := l_old_systems_rec.start_date_active ;
2179 l_systems_hist_rec.new_start_date_active := l_new_systems_rec.start_date_active ;
2180 END IF;
2181 --
2182 IF (l_new_systems_rec.end_date_active = fnd_api.g_miss_date) OR
2183 NVL(l_old_systems_rec.end_date_active,fnd_api.g_miss_date) = NVL(l_new_systems_rec.end_date_active,fnd_api.g_miss_date) THEN
2184 l_systems_hist_rec.old_end_date_active := NULL;
2185 l_systems_hist_rec.new_end_date_active := NULL;
2186 ELSIF
2187 NVL(l_old_systems_rec.end_date_active,fnd_api.g_miss_date) <> NVL(l_new_systems_rec.end_date_active,fnd_api.g_miss_date) THEN
2188 l_systems_hist_rec.old_end_date_active := l_old_systems_rec.end_date_active ;
2189 l_systems_hist_rec.new_end_date_active := l_new_systems_rec.end_date_active ;
2190 END IF;
2191 --
2192 IF (l_new_systems_rec.autocreated_from_system_id = fnd_api.g_miss_num) OR
2193 NVL(l_old_systems_rec.autocreated_from_system_id,fnd_api.g_miss_num) = NVL(l_new_systems_rec.autocreated_from_system_id,fnd_api.g_miss_num) THEN
2194 l_systems_hist_rec.old_autocreated_from_system := NULL;
2195 l_systems_hist_rec.new_autocreated_from_system := NULL;
2196 ELSIF
2197 NVL(l_old_systems_rec.autocreated_from_system_id,fnd_api.g_miss_num) <> NVL(l_new_systems_rec.autocreated_from_system_id,fnd_api.g_miss_num) THEN
2198 l_systems_hist_rec.old_autocreated_from_system := l_old_systems_rec.autocreated_from_system_id ;
2199 l_systems_hist_rec.new_autocreated_from_system := l_new_systems_rec.autocreated_from_system_id ;
2200 END IF;
2201 --
2202 IF (l_new_systems_rec.config_system_type = fnd_api.g_miss_char) OR
2203 NVL(l_old_systems_rec.config_system_type,fnd_api.g_miss_char) = NVL(l_new_systems_rec.config_system_type,fnd_api.g_miss_char) THEN
2204 l_systems_hist_rec.old_config_system_type := NULL;
2205 l_systems_hist_rec.new_config_system_type := NULL;
2206 ELSIF
2207 NVL(l_old_systems_rec.config_system_type,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.config_system_type,fnd_api.g_miss_char) THEN
2208 l_systems_hist_rec.old_config_system_type := l_old_systems_rec.config_system_type ;
2209 l_systems_hist_rec.new_config_system_type := l_new_systems_rec.config_system_type ;
2210 END IF;
2211 --
2212 IF (l_new_systems_rec.context = fnd_api.g_miss_char) OR
2213 NVL(l_old_systems_rec.context,fnd_api.g_miss_char) = NVL(l_new_systems_rec.context,fnd_api.g_miss_char) THEN
2214 l_systems_hist_rec.old_context := NULL;
2215 l_systems_hist_rec.new_context := NULL;
2216 ELSIF
2217 NVL(l_old_systems_rec.context,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.context,fnd_api.g_miss_char) THEN
2218 l_systems_hist_rec.old_context := l_old_systems_rec.context ;
2219 l_systems_hist_rec.new_context := l_new_systems_rec.context ;
2220 END IF;
2221 --
2222 IF (l_new_systems_rec.attribute1 = fnd_api.g_miss_char) OR
2223 NVL(l_old_systems_rec.attribute1,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute1,fnd_api.g_miss_char) THEN
2224 l_systems_hist_rec.old_attribute1 := NULL;
2225 l_systems_hist_rec.new_attribute1 := NULL;
2226 ELSIF
2227 NVL(l_old_systems_rec.attribute1,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute1,fnd_api.g_miss_char) THEN
2228 l_systems_hist_rec.old_attribute1 := l_old_systems_rec.attribute1 ;
2229 l_systems_hist_rec.new_attribute1 := l_new_systems_rec.attribute1 ;
2230 END IF;
2231 --
2232 IF (l_new_systems_rec.attribute2 = fnd_api.g_miss_char) OR
2233 NVL(l_old_systems_rec.attribute2,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute2,fnd_api.g_miss_char) THEN
2234 l_systems_hist_rec.old_attribute2 := NULL;
2235 l_systems_hist_rec.new_attribute2 := NULL;
2236 ELSIF
2237 NVL(l_old_systems_rec.attribute2,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute2,fnd_api.g_miss_char) THEN
2238 l_systems_hist_rec.old_attribute2 := l_old_systems_rec.attribute2 ;
2239 l_systems_hist_rec.new_attribute2 := l_new_systems_rec.attribute2 ;
2240 END IF;
2241 --
2242 IF (l_new_systems_rec.attribute3 = fnd_api.g_miss_char) OR
2243 NVL(l_old_systems_rec.attribute3,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute3,fnd_api.g_miss_char) THEN
2244 l_systems_hist_rec.old_attribute3 := NULL;
2245 l_systems_hist_rec.new_attribute3 := NULL;
2246 ELSIF
2247 NVL(l_old_systems_rec.attribute3,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute3,fnd_api.g_miss_char) THEN
2248 l_systems_hist_rec.old_attribute3 := l_old_systems_rec.attribute3 ;
2249 l_systems_hist_rec.new_attribute3 := l_new_systems_rec.attribute3 ;
2250 END IF;
2251 --
2252 IF (l_new_systems_rec.attribute4 = fnd_api.g_miss_char) OR
2253 NVL(l_old_systems_rec.attribute4,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute4,fnd_api.g_miss_char) THEN
2254 l_systems_hist_rec.old_attribute4 := NULL;
2255 l_systems_hist_rec.new_attribute4 := NULL;
2256 ELSIF
2257 NVL(l_old_systems_rec.attribute4,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute4,fnd_api.g_miss_char) THEN
2258 l_systems_hist_rec.old_attribute4 := l_old_systems_rec.attribute4 ;
2259 l_systems_hist_rec.new_attribute4 := l_new_systems_rec.attribute4 ;
2260 END IF;
2261 --
2262 IF (l_new_systems_rec.attribute5 = fnd_api.g_miss_char) OR
2263 NVL(l_old_systems_rec.attribute5,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute5,fnd_api.g_miss_char) THEN
2264 l_systems_hist_rec.old_attribute5 := NULL;
2265 l_systems_hist_rec.new_attribute5 := NULL;
2266 ELSIF
2267 NVL(l_old_systems_rec.attribute5,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute5,fnd_api.g_miss_char) THEN
2268 l_systems_hist_rec.old_attribute5 := l_old_systems_rec.attribute5 ;
2269 l_systems_hist_rec.new_attribute5 := l_new_systems_rec.attribute5 ;
2270 END IF;
2271 --
2272 IF (l_new_systems_rec.attribute6 = fnd_api.g_miss_char) OR
2273 NVL(l_old_systems_rec.attribute6,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute6,fnd_api.g_miss_char) THEN
2274 l_systems_hist_rec.old_attribute6 := NULL;
2275 l_systems_hist_rec.new_attribute6 := NULL;
2276 ELSIF
2277 NVL(l_old_systems_rec.attribute6,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute6,fnd_api.g_miss_char) THEN
2278 l_systems_hist_rec.old_attribute6 := l_old_systems_rec.attribute6 ;
2279 l_systems_hist_rec.new_attribute6 := l_new_systems_rec.attribute6 ;
2280 END IF;
2281 --
2282 IF (l_new_systems_rec.attribute7 = fnd_api.g_miss_char) OR
2283 NVL(l_old_systems_rec.attribute7,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute7,fnd_api.g_miss_char) THEN
2284 l_systems_hist_rec.old_attribute7 := NULL;
2285 l_systems_hist_rec.new_attribute7 := NULL;
2286 ELSIF
2287 NVL(l_old_systems_rec.attribute7,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute7,fnd_api.g_miss_char) THEN
2288 l_systems_hist_rec.old_attribute7 := l_old_systems_rec.attribute7 ;
2289 l_systems_hist_rec.new_attribute7 := l_new_systems_rec.attribute7 ;
2290 END IF;
2291 --
2292 IF (l_new_systems_rec.attribute8 = fnd_api.g_miss_char) OR
2293 NVL(l_old_systems_rec.attribute8,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute8,fnd_api.g_miss_char) THEN
2294 l_systems_hist_rec.old_attribute8 := NULL;
2295 l_systems_hist_rec.new_attribute8 := NULL;
2296 ELSIF
2297 NVL(l_old_systems_rec.attribute8,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute8,fnd_api.g_miss_char) THEN
2298 l_systems_hist_rec.old_attribute8 := l_old_systems_rec.attribute8 ;
2299 l_systems_hist_rec.new_attribute8 := l_new_systems_rec.attribute8 ;
2300 END IF;
2301 --
2302 IF (l_new_systems_rec.attribute9 = fnd_api.g_miss_char) OR
2303 NVL(l_old_systems_rec.attribute9,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute9,fnd_api.g_miss_char) THEN
2304 l_systems_hist_rec.old_attribute9 := NULL;
2305 l_systems_hist_rec.new_attribute9 := NULL;
2306 ELSIF
2307 NVL(l_old_systems_rec.attribute9,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute9,fnd_api.g_miss_char) THEN
2308 l_systems_hist_rec.old_attribute9 := l_old_systems_rec.attribute9 ;
2309 l_systems_hist_rec.new_attribute9 := l_new_systems_rec.attribute9 ;
2310 END IF;
2311 --
2312 IF (l_new_systems_rec.attribute10 = fnd_api.g_miss_char) OR
2313 NVL(l_old_systems_rec.attribute10,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute10,fnd_api.g_miss_char) THEN
2314 l_systems_hist_rec.old_attribute10 := NULL;
2315 l_systems_hist_rec.new_attribute10 := NULL;
2316 ELSIF
2317 NVL(l_old_systems_rec.attribute10,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute10,fnd_api.g_miss_char) THEN
2318 l_systems_hist_rec.old_attribute10 := l_old_systems_rec.attribute10 ;
2319 l_systems_hist_rec.new_attribute10 := l_new_systems_rec.attribute10 ;
2320 END IF;
2321 --
2322 IF (l_new_systems_rec.attribute11 = fnd_api.g_miss_char) OR
2323 NVL(l_old_systems_rec.attribute11,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute11,fnd_api.g_miss_char) THEN
2324 l_systems_hist_rec.old_attribute11 := NULL;
2325 l_systems_hist_rec.new_attribute11 := NULL;
2326 ELSIF
2327 NVL(l_old_systems_rec.attribute11,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute11,fnd_api.g_miss_char) THEN
2328 l_systems_hist_rec.old_attribute11 := l_old_systems_rec.attribute11 ;
2329 l_systems_hist_rec.new_attribute11 := l_new_systems_rec.attribute11 ;
2330 END IF;
2331 --
2332 IF (l_new_systems_rec.attribute12 = fnd_api.g_miss_char) OR
2333 NVL(l_old_systems_rec.attribute12,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute12,fnd_api.g_miss_char) THEN
2334 l_systems_hist_rec.old_attribute12 := NULL;
2335 l_systems_hist_rec.new_attribute12 := NULL;
2336 ELSIF
2337 NVL(l_old_systems_rec.attribute12,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute12,fnd_api.g_miss_char) THEN
2338 l_systems_hist_rec.old_attribute12 := l_old_systems_rec.attribute12 ;
2339 l_systems_hist_rec.new_attribute12 := l_new_systems_rec.attribute12 ;
2340 END IF;
2341 --
2342 IF (l_new_systems_rec.attribute13 = fnd_api.g_miss_char) OR
2343 NVL(l_old_systems_rec.attribute13,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute13,fnd_api.g_miss_char) THEN
2344 l_systems_hist_rec.old_attribute13 := NULL;
2345 l_systems_hist_rec.new_attribute13 := NULL;
2346 ELSIF
2347 NVL(l_old_systems_rec.attribute13,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute13,fnd_api.g_miss_char) THEN
2348 l_systems_hist_rec.old_attribute13 := l_old_systems_rec.attribute13 ;
2349 l_systems_hist_rec.new_attribute13 := l_new_systems_rec.attribute13 ;
2350 END IF;
2351 --
2352 IF (l_new_systems_rec.attribute14 = fnd_api.g_miss_char) OR
2353 NVL(l_old_systems_rec.attribute14,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute14,fnd_api.g_miss_char) THEN
2354 l_systems_hist_rec.old_attribute14 := NULL;
2355 l_systems_hist_rec.new_attribute14 := NULL;
2356 ELSIF
2357 NVL(l_old_systems_rec.attribute14,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute14,fnd_api.g_miss_char) THEN
2358 l_systems_hist_rec.old_attribute14 := l_old_systems_rec.attribute14 ;
2359 l_systems_hist_rec.new_attribute14 := l_new_systems_rec.attribute14 ;
2360 END IF;
2361 --
2362 IF (l_new_systems_rec.attribute15 = fnd_api.g_miss_char) OR
2363 NVL(l_old_systems_rec.attribute15,fnd_api.g_miss_char) = NVL(l_new_systems_rec.attribute15,fnd_api.g_miss_char) THEN
2364 l_systems_hist_rec.old_attribute15 := NULL;
2365 l_systems_hist_rec.new_attribute15 := NULL;
2366 ELSIF
2367 NVL(l_old_systems_rec.attribute15,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.attribute15,fnd_api.g_miss_char) THEN
2368 l_systems_hist_rec.old_attribute15 := l_old_systems_rec.attribute15 ;
2369 l_systems_hist_rec.new_attribute15 := l_new_systems_rec.attribute15 ;
2370 END IF;
2371 --
2372 IF (l_new_systems_rec.name = fnd_api.g_miss_char) OR
2373 NVL(l_old_systems_rec.name,fnd_api.g_miss_char) = NVL(l_new_systems_rec.name,fnd_api.g_miss_char) THEN
2374 l_systems_hist_rec.old_name := NULL;
2375 l_systems_hist_rec.new_name := NULL;
2376 ELSIF
2377 NVL(l_old_systems_rec.name,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.name,fnd_api.g_miss_char) THEN
2378 l_systems_hist_rec.old_name := l_old_systems_rec.name ;
2379 l_systems_hist_rec.new_name := l_new_systems_rec.name ;
2380 END IF;
2381 --
2382 IF (l_new_systems_rec.description = fnd_api.g_miss_char) OR
2383 NVL(l_old_systems_rec.description,fnd_api.g_miss_char) = NVL(l_new_systems_rec.description,fnd_api.g_miss_char) THEN
2384 l_systems_hist_rec.old_description := NULL;
2385 l_systems_hist_rec.new_description := NULL;
2386 ELSIF
2387 NVL(l_old_systems_rec.description,fnd_api.g_miss_char) <> NVL(l_new_systems_rec.description,fnd_api.g_miss_char) THEN
2388 l_systems_hist_rec.old_description := l_old_systems_rec.description ;
2389 l_systems_hist_rec.new_description := l_new_systems_rec.description ;
2390 END IF;
2391 --
2392 IF (l_new_systems_rec.operating_unit_id = fnd_api.g_miss_num) OR
2393 NVL(l_old_systems_rec.operating_unit_id,fnd_api.g_miss_num) = NVL(l_new_systems_rec.operating_unit_id,fnd_api.g_miss_num) THEN
2394 l_systems_hist_rec.old_operating_unit_id := NULL;
2395 l_systems_hist_rec.new_operating_unit_id := NULL;
2396 ELSIF
2397 NVL(l_old_systems_rec.operating_unit_id,fnd_api.g_miss_num) <> NVL(l_new_systems_rec.operating_unit_id,fnd_api.g_miss_num) THEN
2398 l_systems_hist_rec.old_operating_unit_id := l_old_systems_rec.operating_unit_id ;
2399 l_systems_hist_rec.new_operating_unit_id := l_new_systems_rec.operating_unit_id ;
2400 END IF;
2401 --
2402 IF p_flag = 'EXPIRE' THEN
2403 l_systems_hist_rec.new_end_date_active := p_sysdate;
2404 END IF;
2405
2406 csi_systems_h_pkg.insert_row(
2407 px_system_history_id => l_systems_hist_rec.system_history_id,
2408 p_system_id => l_old_systems_rec.system_id,
2409 p_transaction_id => l_transaction_id,
2410 p_old_customer_id => l_systems_hist_rec.old_customer_id,
2411 p_new_customer_id => l_systems_hist_rec.new_customer_id,
2412 p_old_system_type_code => l_systems_hist_rec.old_system_type_code,
2413 p_new_system_type_code => l_systems_hist_rec.new_system_type_code,
2414 p_old_system_number => l_systems_hist_rec.old_system_number,
2415 p_new_system_number => l_systems_hist_rec.new_system_number,
2416 p_old_parent_system_id => l_systems_hist_rec.old_parent_system_id,
2417 p_new_parent_system_id => l_systems_hist_rec.new_parent_system_id,
2418 p_old_ship_to_contact_id => l_systems_hist_rec.old_ship_to_contact_id,
2419 p_new_ship_to_contact_id => l_systems_hist_rec.new_ship_to_contact_id,
2420 p_old_bill_to_contact_id => l_systems_hist_rec.old_bill_to_contact_id,
2421 p_new_bill_to_contact_id => l_systems_hist_rec.new_bill_to_contact_id,
2422 p_old_technical_contact_id => l_systems_hist_rec.old_technical_contact_id,
2423 p_new_technical_contact_id => l_systems_hist_rec.new_technical_contact_id,
2424 p_old_service_admin_contact_id => l_systems_hist_rec.old_service_admin_contact_id,
2425 p_new_service_admin_contact_id => l_systems_hist_rec.new_service_admin_contact_id,
2426 p_old_ship_to_site_use_id => l_systems_hist_rec.old_ship_to_site_use_id,
2427 p_new_ship_to_site_use_id => l_systems_hist_rec.new_ship_to_site_use_id,
2428 p_old_install_site_use_id => l_systems_hist_rec.old_install_site_use_id,
2429 p_new_install_site_use_id => l_systems_hist_rec.new_install_site_use_id,
2430 p_old_bill_to_site_use_id => l_systems_hist_rec.old_bill_to_site_use_id,
2431 p_new_bill_to_site_use_id => l_systems_hist_rec.new_bill_to_site_use_id,
2432 p_old_coterminate_day_month => l_systems_hist_rec.old_coterminate_day_month,
2433 p_new_coterminate_day_month => l_systems_hist_rec.new_coterminate_day_month,
2434 p_old_start_date_active => l_systems_hist_rec.old_start_date_active,
2435 p_new_start_date_active => l_systems_hist_rec.new_start_date_active,
2436 p_old_end_date_active => l_systems_hist_rec.old_end_date_active,
2437 p_new_end_date_active => l_systems_hist_rec.new_end_date_active,
2438 p_old_autocreated_from_system => l_systems_hist_rec.old_autocreated_from_system,
2439 p_new_autocreated_from_system => l_systems_hist_rec.new_autocreated_from_system,
2440 p_old_config_system_type => l_systems_hist_rec.old_config_system_type,
2441 p_new_config_system_type => l_systems_hist_rec.new_config_system_type,
2442 p_old_context => l_systems_hist_rec.old_context,
2443 p_new_context => l_systems_hist_rec.new_context,
2444 p_old_attribute1 => l_systems_hist_rec.old_attribute1,
2445 p_new_attribute1 => l_systems_hist_rec.new_attribute1,
2446 p_old_attribute2 => l_systems_hist_rec.old_attribute2,
2447 p_new_attribute2 => l_systems_hist_rec.new_attribute2,
2448 p_old_attribute3 => l_systems_hist_rec.old_attribute3,
2449 p_new_attribute3 => l_systems_hist_rec.new_attribute3,
2450 p_old_attribute4 => l_systems_hist_rec.old_attribute4,
2451 p_new_attribute4 => l_systems_hist_rec.new_attribute4,
2452 p_old_attribute5 => l_systems_hist_rec.old_attribute5,
2453 p_new_attribute5 => l_systems_hist_rec.new_attribute5,
2454 p_old_attribute6 => l_systems_hist_rec.old_attribute6,
2455 p_new_attribute6 => l_systems_hist_rec.new_attribute6,
2456 p_old_attribute7 => l_systems_hist_rec.old_attribute7,
2457 p_new_attribute7 => l_systems_hist_rec.new_attribute7,
2458 p_old_attribute8 => l_systems_hist_rec.old_attribute8,
2459 p_new_attribute8 => l_systems_hist_rec.new_attribute8,
2460 p_old_attribute9 => l_systems_hist_rec.old_attribute9,
2461 p_new_attribute9 => l_systems_hist_rec.new_attribute9,
2462 p_old_attribute10 => l_systems_hist_rec.old_attribute10,
2463 p_new_attribute10 => l_systems_hist_rec.new_attribute10,
2464 p_old_attribute11 => l_systems_hist_rec.old_attribute11,
2465 p_new_attribute11 => l_systems_hist_rec.new_attribute11,
2466 p_old_attribute12 => l_systems_hist_rec.old_attribute12,
2467 p_new_attribute12 => l_systems_hist_rec.new_attribute12,
2468 p_old_attribute13 => l_systems_hist_rec.old_attribute13,
2469 p_new_attribute13 => l_systems_hist_rec.new_attribute13,
2470 p_old_attribute14 => l_systems_hist_rec.old_attribute14,
2471 p_new_attribute14 => l_systems_hist_rec.new_attribute14,
2472 p_old_attribute15 => l_systems_hist_rec.old_attribute15,
2473 p_new_attribute15 => l_systems_hist_rec.new_attribute15,
2474 p_full_dump_flag => 'N',
2475 p_created_by => fnd_global.user_id,
2476 p_creation_date => SYSDATE,
2477 p_last_updated_by => fnd_global.user_id,
2478 p_last_update_date => SYSDATE,
2479 p_last_update_login => fnd_global.conc_login_id,
2480 p_object_version_number => 1,
2481 p_old_name => l_systems_hist_rec.old_name,
2482 p_new_name => l_systems_hist_rec.new_name,
2483 p_old_description => l_systems_hist_rec.old_description,
2484 p_new_description => l_systems_hist_rec.new_description,
2485 p_old_operating_unit_id => l_systems_hist_rec.old_operating_unit_id,
2486 p_new_operating_unit_id => l_systems_hist_rec.new_operating_unit_id
2487 );
2488
2489 END IF;
2490
2491 END;
2492 -- End of modifications for Bug#2547034 on 09/20/02 - rtalluri
2493 EXCEPTION
2494 WHEN OTHERS THEN
2495 x_return_status := fnd_api.g_ret_sts_error;
2496 END;
2497
2498
2499
2500
2501
2502 -- hint: primary key needs to be returned.
2503 PROCEDURE create_system(
2504 p_api_version IN NUMBER,
2505 p_commit IN VARCHAR2,
2506 p_init_msg_list IN VARCHAR2,
2507 p_validation_level IN NUMBER,
2508 p_system_rec IN csi_datastructures_pub.system_rec,
2509 p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec,
2510 x_system_id OUT NOCOPY NUMBER,
2511 x_return_status OUT NOCOPY VARCHAR2,
2512 x_msg_count OUT NOCOPY NUMBER,
2513 x_msg_data OUT NOCOPY VARCHAR2
2514 )
2515
2516 IS
2517 l_api_name CONSTANT VARCHAR2(30) := 'create_system';
2518 l_api_version_number CONSTANT NUMBER := 1.0;
2519 l_system_id NUMBER;
2520 l_system_history_id NUMBER :=fnd_api.g_miss_num;
2521 l_debug_level NUMBER;
2522 l_name VARCHAR2(50);
2523 l_start_date DATE;
2524 l_date DATE;
2525 l_month VARCHAR2(20);
2526 BEGIN
2527 -- standard start of api savepoint
2528 SAVEPOINT create_system_pvt;
2529
2530 -- standard call to check for call compatibility.
2531 IF NOT fnd_api.compatible_api_call ( l_api_version_number,
2532 p_api_version,
2533 l_api_name,
2534 g_pkg_name)
2535 THEN
2536 RAISE fnd_api.g_exc_unexpected_error;
2537 END IF;
2538
2539
2540 -- initialize message list if p_init_msg_list is set to true.
2541 IF fnd_api.to_boolean( p_init_msg_list )
2542 THEN
2543 fnd_msg_pub.initialize;
2544 END IF;
2545
2546
2547 -- debug message
2548
2549
2550 -- initialize api return status to success
2551 x_return_status := fnd_api.g_ret_sts_success;
2552
2553 l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
2554 IF (l_debug_level > 0) THEN
2555 csi_gen_utility_pvt.put_line( 'create_system');
2556 END IF;
2557
2558 IF (l_debug_level > 1) THEN
2559 csi_gen_utility_pvt.put_line(
2560 p_api_version ||'-'||
2561 p_Commit ||'-'||
2562 p_Init_Msg_list ||'-'||
2563 p_Validation_level
2564 );
2565 csi_gen_utility_pvt.dump_sys_rec(p_system_rec);
2566 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
2567 END IF;
2568 -- invoke validation procedures
2569
2570 validate_system_id(
2571 p_init_msg_list => fnd_api.g_false,
2572 p_validation_mode => 'CREATE',
2573 p_system_id => p_system_rec.system_id,
2574 x_return_status => x_return_status,
2575 x_msg_count => x_msg_count,
2576 x_msg_data => x_msg_data);
2577
2578 validate_auto_sys_id(
2579 p_init_msg_list => fnd_api.g_false,
2580 p_validation_mode => 'CREATE',
2581 p_auto_sys_id => p_system_rec.autocreated_from_system_id,
2582 x_return_status => x_return_status,
2583 x_msg_count => x_msg_count,
2584 x_msg_data => x_msg_data);
2585
2586 IF x_return_status<>fnd_api.g_ret_sts_success THEN
2587 RAISE fnd_api.g_exc_error;
2588 END IF;
2589
2590 validate_systems(
2591 p_init_msg_list => fnd_api.g_false,
2592 p_validation_level => p_validation_level,
2593 p_validation_mode => 'CREATE',
2594 p_system_rec => p_system_rec,
2595 x_return_status => x_return_status,
2596 x_msg_count => x_msg_count,
2597 x_msg_data => x_msg_data);
2598
2599 IF x_return_status<>fnd_api.g_ret_sts_success THEN
2600 RAISE fnd_api.g_exc_error;
2601 END IF;
2602
2603 validate_start_end_date(
2604 p_init_msg_list => fnd_api.g_false,
2605 p_validation_mode => 'CREATE',
2606 p_system_id => p_system_rec.system_id,
2607 p_start_date => p_system_rec.start_date_active,
2608 p_end_date => p_system_rec.end_date_active,
2609 x_return_status => x_return_status,
2610 x_msg_count => x_msg_count,
2611 x_msg_data => x_msg_data);
2612 IF x_return_status <> fnd_api.g_ret_sts_success THEN
2613 RAISE fnd_api.g_exc_error;
2614 END IF;
2615
2616 -- Validate the Operating Unit
2617 IF p_system_rec.operating_unit_id is NOT NULL AND
2618 p_system_rec.operating_unit_id <> FND_API.G_MISS_NUM THEN
2619 IF NOT csi_org_unit_vld_pvt.Is_Valid_operating_unit_id(p_system_rec.operating_unit_id) THEN
2620 RAISE fnd_api.g_exc_error;
2621 END IF;
2622 END IF;
2623 --
2624 IF ( (p_system_rec.name IS NULL) OR (p_system_rec.name=fnd_api.g_miss_char) )
2625 THEN
2626 IF (fnd_profile.value('CSI_AUTO_GEN_SYS_NAME') = 'Y')
2627 THEN
2628 SELECT csi_systems_s.NEXTVAL
2629 INTO x_system_id
2630 FROM sys.dual;
2631 l_name := to_char(x_system_id);
2632 END IF;
2633 ELSE
2634 l_name := p_system_rec.name;
2635 END IF;
2636
2637 IF (x_return_status = fnd_api.g_ret_sts_success) THEN
2638
2639 -- check for unique system name
2640 Check_Unique(
2641 p_System_id => NULL
2642 ,p_Name => l_name --p_system_rec.name
2643 ,p_Customer_ID => p_system_rec.customer_id
2644 ,p_System_number => p_system_rec.system_number
2645 ,x_return_status => x_return_status
2646 ,x_msg_count => x_msg_count
2647 ,x_msg_data => x_msg_data);
2648 END IF;
2649
2650 IF p_system_rec.start_date_active IS NULL
2651 OR p_system_rec.start_date_active = fnd_api.g_miss_date
2652 THEN
2653 l_start_date := SYSDATE;
2654 ELSE
2655 l_start_date := p_system_rec.start_date_active;
2656 END IF;
2657
2658 IF ((p_system_rec.coterminate_day_month IS NOT NULL) AND
2659 (p_system_rec.coterminate_day_month <> FND_API.G_MISS_CHAR))
2660 THEN
2661 BEGIN
2662 l_month := p_system_rec.coterminate_day_month||'-1996';
2663 l_date := to_date(l_month, 'DD-MM-YYYY');
2664 EXCEPTION
2665 WHEN OTHERS THEN
2666 fnd_message.set_name('CSI','CSI_INVALID_COTERM_DATE');
2667 fnd_message.set_token('Coterminate_Day_Month',p_system_rec.coterminate_day_month);
2668 fnd_msg_pub.add;
2669 RAISE fnd_api.g_exc_error;
2670 END;
2671 END IF;
2672
2673
2674 IF x_return_status = fnd_api.g_ret_sts_success THEN
2675 -- invoke table handler(csi_systems_b_pkg.insert_row)
2676
2677
2678 csi_systems_b_pkg.insert_row(
2679 px_system_id => x_system_id,
2680 p_customer_id => p_system_rec.customer_id,
2681 p_system_type_code => p_system_rec.system_type_code,
2682 p_system_number => p_system_rec.system_number,
2683 p_parent_system_id => p_system_rec.parent_system_id,
2684 p_ship_to_contact_id => p_system_rec.ship_to_contact_id,
2685 p_bill_to_contact_id => p_system_rec.bill_to_contact_id,
2686 p_technical_contact_id => p_system_rec.technical_contact_id,
2687 p_service_admin_contact_id => p_system_rec.service_admin_contact_id,
2688 p_ship_to_site_use_id => p_system_rec.ship_to_site_use_id,
2689 p_bill_to_site_use_id => p_system_rec.bill_to_site_use_id,
2690 p_install_site_use_id => p_system_rec.install_site_use_id,
2691 p_coterminate_day_month => p_system_rec.coterminate_day_month,
2692 p_autocreated_from_system_id => p_system_rec.autocreated_from_system_id,
2693 p_config_system_type => p_system_rec.config_system_type,
2694 p_start_date_active => l_start_date,
2695 p_end_date_active => p_system_rec.end_date_active,
2696 p_context => p_system_rec.context,
2697 p_attribute1 => p_system_rec.attribute1,
2698 p_attribute2 => p_system_rec.attribute2,
2699 p_attribute3 => p_system_rec.attribute3,
2700 p_attribute4 => p_system_rec.attribute4,
2701 p_attribute5 => p_system_rec.attribute5,
2702 p_attribute6 => p_system_rec.attribute6,
2703 p_attribute7 => p_system_rec.attribute7,
2704 p_attribute8 => p_system_rec.attribute8,
2705 p_attribute9 => p_system_rec.attribute9,
2706 p_attribute10 => p_system_rec.attribute10,
2707 p_attribute11 => p_system_rec.attribute11,
2708 p_attribute12 => p_system_rec.attribute12,
2709 p_attribute13 => p_system_rec.attribute13,
2710 p_attribute14 => p_system_rec.attribute14,
2711 p_attribute15 => p_system_rec.attribute15,
2712 p_created_by => fnd_global.user_id,
2713 p_creation_date => SYSDATE,
2714 p_last_updated_by => fnd_global.user_id,
2715 p_last_update_date => SYSDATE,
2716 p_last_update_login => fnd_global.conc_login_id,
2717 p_object_version_number => 1,
2718 p_name => l_name,--p_system_rec.name,
2719 p_description => p_system_rec.description,
2720 p_operating_unit_id => p_system_rec.operating_unit_id,
2721 p_request_id => p_system_rec.request_id,
2722 p_program_application_id => p_system_rec.program_application_id,
2723 p_program_id => p_system_rec.program_id,
2724 p_program_update_date => p_system_rec.program_update_date);
2725 -- hint: primary key should be returned.
2726 -- x_system_id := px_system_id;
2727 l_system_id := x_system_id;
2728
2729 csi_transactions_pvt.create_transaction
2730 (
2731 p_api_version => p_api_version
2732 ,p_commit => p_commit
2733 ,p_init_msg_list => p_init_msg_list
2734 ,p_validation_level => p_validation_level
2735 ,p_success_if_exists_flag => 'Y'
2736 ,p_transaction_rec => p_txn_rec
2737 ,x_return_status => x_return_status
2738 ,x_msg_count => x_msg_count
2739 ,x_msg_data => x_msg_data
2740 );
2741
2742 IF NOT(x_return_status = fnd_api.g_ret_sts_success) THEN
2743
2744
2745 fnd_message.set_name('CSI','CSI_FAILED_TO_VALIDATE_TXN');
2746 fnd_message.set_token('transaction_id',p_txn_rec.transaction_id );
2747 fnd_msg_pub.add;
2748
2749 RAISE fnd_api.g_exc_error;
2750 RETURN;
2751 END IF;
2752
2753
2754 csi_systems_h_pkg.insert_row(
2755 px_system_history_id => l_system_history_id,
2756 p_system_id => l_system_id,
2757 p_transaction_id => p_txn_rec.transaction_id,
2758 p_old_customer_id => NULL,
2759 p_new_customer_id => p_system_rec.customer_id,
2760 p_old_system_type_code => NULL,
2761 p_new_system_type_code => p_system_rec.system_type_code,
2762 p_old_system_number => NULL,
2763 p_new_system_number => p_system_rec.system_number,
2764 p_old_parent_system_id => NULL,
2765 p_new_parent_system_id => p_system_rec.parent_system_id,
2766 p_old_ship_to_contact_id => NULL,
2767 p_new_ship_to_contact_id => p_system_rec.ship_to_contact_id,
2768 p_old_bill_to_contact_id => NULL,
2769 p_new_bill_to_contact_id => p_system_rec.bill_to_contact_id,
2770 p_old_technical_contact_id => NULL,
2771 p_new_technical_contact_id => p_system_rec.technical_contact_id,
2772 p_old_service_admin_contact_id => NULL,
2773 p_new_service_admin_contact_id => p_system_rec.service_admin_contact_id,
2774 p_old_ship_to_site_use_id => NULL,
2775 p_new_ship_to_site_use_id => p_system_rec.ship_to_site_use_id,
2776 p_old_install_site_use_id => NULL,
2777 p_new_install_site_use_id => p_system_rec.install_site_use_id,
2778 p_old_bill_to_site_use_id => NULL,
2779 p_new_bill_to_site_use_id => p_system_rec.bill_to_site_use_id,
2780 p_old_coterminate_day_month => NULL,
2781 p_new_coterminate_day_month => p_system_rec.coterminate_day_month,
2782 p_old_start_date_active => NULL,
2783 p_new_start_date_active => l_start_date,
2784 p_old_end_date_active => NULL,
2785 p_new_end_date_active => p_system_rec.end_date_active,
2786 p_old_autocreated_from_system => NULL,
2787 p_new_autocreated_from_system => p_system_rec.autocreated_from_system_id,
2788 p_old_config_system_type => NULL,
2789 p_new_config_system_type => p_system_rec.config_system_type,
2790 p_old_context => NULL,
2791 p_new_context => p_system_rec.context,
2792 p_old_attribute1 => NULL,
2793 p_new_attribute1 => p_system_rec.attribute1,
2794 p_old_attribute2 => NULL,
2795 p_new_attribute2 => p_system_rec.attribute2,
2796 p_old_attribute3 => NULL,
2797 p_new_attribute3 => p_system_rec.attribute3,
2798 p_old_attribute4 => NULL,
2799 p_new_attribute4 => p_system_rec.attribute4,
2800 p_old_attribute5 => NULL,
2801 p_new_attribute5 => p_system_rec.attribute5,
2802 p_old_attribute6 => NULL,
2803 p_new_attribute6 => p_system_rec.attribute6,
2804 p_old_attribute7 => NULL,
2805 p_new_attribute7 => p_system_rec.attribute7,
2806 p_old_attribute8 => NULL,
2807 p_new_attribute8 => p_system_rec.attribute8,
2808 p_old_attribute9 => NULL,
2809 p_new_attribute9 => p_system_rec.attribute9,
2810 p_old_attribute10 => NULL,
2811 p_new_attribute10 => p_system_rec.attribute10,
2812 p_old_attribute11 => NULL,
2813 p_new_attribute11 => p_system_rec.attribute11,
2814 p_old_attribute12 => NULL,
2815 p_new_attribute12 => p_system_rec.attribute12,
2816 p_old_attribute13 => NULL,
2817 p_new_attribute13 => p_system_rec.attribute13,
2818 p_old_attribute14 => NULL,
2819 p_new_attribute14 => p_system_rec.attribute14,
2820 p_old_attribute15 => NULL,
2821 p_new_attribute15 => p_system_rec.attribute15,
2822 p_full_dump_flag => 'Y',
2823 p_created_by => fnd_global.user_id,
2824 p_creation_date => SYSDATE,
2825 p_last_updated_by => fnd_global.user_id,
2826 p_last_update_date => SYSDATE,
2827 p_last_update_login => fnd_global.conc_login_id,
2828 p_object_version_number => 1,
2829 p_old_name => NULL,
2830 p_new_name => l_name, --p_system_rec.name,
2831 p_old_description => NULL,
2832 p_new_description => p_system_rec.description,
2833 p_old_operating_unit_id => NULL,
2834 p_new_operating_unit_id => p_system_rec.operating_unit_id) ;
2835
2836
2837 END IF;
2838
2839
2840
2841
2842
2843 IF x_return_status <> fnd_api.g_ret_sts_success THEN
2844 RAISE fnd_api.g_exc_error;
2845 END IF;
2846
2847 --
2848 -- END of api body
2849 --
2850
2851 -- standard check FOR p_commit
2852 IF fnd_api.to_boolean( p_commit )
2853 THEN
2854 COMMIT WORK;
2855 END IF;
2856
2857
2858
2859
2860 -- standard call to get message count and if count is 1, get message info.
2861 fnd_msg_pub.count_and_get
2862 ( p_count => x_msg_count,
2863 p_data => x_msg_data
2864 );
2865
2866 EXCEPTION
2867 WHEN fnd_api.g_exc_error THEN
2868 ROLLBACK TO create_system_pvt;
2869 x_return_status := fnd_api.g_ret_sts_error ;
2870 fnd_msg_pub.count_and_get
2871 (p_count => x_msg_count ,
2872 p_data => x_msg_data
2873 );
2874
2875 WHEN fnd_api.g_exc_unexpected_error THEN
2876 ROLLBACK TO create_system_pvt;
2877 x_return_status := fnd_api.g_ret_sts_unexp_error ;
2878 fnd_msg_pub.count_and_get
2879 (p_count => x_msg_count ,
2880 p_data => x_msg_data
2881 );
2882
2883 WHEN OTHERS THEN
2884 ROLLBACK TO create_system_pvt;
2885 x_return_status := fnd_api.g_ret_sts_unexp_error ;
2886 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2887 fnd_msg_pub.add_exc_msg(g_pkg_name ,l_api_name);
2888 END IF;
2889 fnd_msg_pub.count_and_get
2890 (p_count => x_msg_count ,
2891 p_data => x_msg_data
2892 );
2893
2894 END create_system;
2895
2896
2897
2898 PROCEDURE update_system(
2899 p_api_version IN NUMBER,
2900 p_commit IN VARCHAR2,
2901 p_init_msg_list IN VARCHAR2,
2902 p_validation_level IN NUMBER,
2903 p_system_rec IN csi_datastructures_pub.system_rec,
2904 p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec,
2905 x_return_status OUT NOCOPY VARCHAR2,
2906 x_msg_count OUT NOCOPY NUMBER,
2907 x_msg_data OUT NOCOPY VARCHAR2
2908 )
2909 IS
2910 --
2911 CURSOR systems_csr (sys_id NUMBER) IS
2912 SELECT system_id,
2913 customer_id,
2914 system_type_code,
2915 system_number,
2916 parent_system_id,
2917 ship_to_contact_id,
2918 bill_to_contact_id,
2919 technical_contact_id,
2920 service_admin_contact_id,
2921 ship_to_site_use_id,
2922 bill_to_site_use_id,
2923 install_site_use_id,
2924 coterminate_day_month,
2925 start_date_active,
2926 end_date_active,
2927 context,
2928 attribute1,
2929 attribute2,
2930 attribute3,
2931 attribute4,
2932 attribute5,
2933 attribute6,
2934 attribute7,
2935 attribute8,
2936 attribute9,
2937 attribute10,
2938 attribute11,
2939 attribute12,
2940 attribute13,
2941 attribute14,
2942 attribute15,
2943 object_version_number,
2944 operating_unit_id
2945 FROM csi_systems_b
2946 WHERE system_id=sys_id
2947 FOR UPDATE OF object_version_number ;
2948
2949 CURSOR tl_csr (sys_id NUMBER) IS
2950 SELECT name,
2951 description
2952 FROM csi_systems_tl
2953 WHERE system_id=sys_id
2954 FOR UPDATE OF system_id ;
2955
2956 CURSOR cont_csr IS
2957 SELECT party_id
2958 FROM csi_i_parties cip, csi_item_instances cii
2959 WHERE cip.instance_id=cii.instance_id
2960 AND cii.system_id=p_system_rec.system_id
2961 AND cip.relationship_type_code='OWNER'
2962 AND sysdate BETWEEN NVL(cii.active_start_date,sysdate)
2963 AND NVL(cii.active_end_date,sysdate);
2964
2965 CURSOR site_csr IS
2966 SELECT ip_account_id
2967 FROM csi_item_instances cii,
2968 csi_i_parties cip,
2969 csi_ip_accounts cia
2970 WHERE cii.instance_id=cip.instance_id
2971 AND cii.system_id=p_system_rec.system_id
2972 AND cip.instance_party_id=cia.instance_party_id
2973 AND cia.relationship_type_code='OWNER'
2974 AND sysdate BETWEEN NVL(cii.active_start_date,sysdate)
2975 AND NVL(cii.active_end_date,sysdate);
2976 CURSOR ins_csr IS
2977 SELECT cip.instance_id instance_id,cip.instance_party_id instance_party_id,
2978 cip.object_version_number party_obj_version_number
2979 ,cia.ip_account_id ip_account_id,cia.object_version_number account_obj_version_number
2980 FROM CSI_ITEM_INSTANCES cii,
2981 CSI_I_PARTIES cip,
2982 CSI_IP_ACCOUNTS cia
2983 WHERE cii.system_id = p_system_rec.system_id
2984 AND cip.instance_id = cii.instance_id
2985 AND cip.relationship_type_code='OWNER'
2986 AND cip.instance_party_id=cia.instance_party_id
2987 AND cia.relationship_type_code='OWNER'
2988 AND sysdate BETWEEN NVL(cii.active_start_date,sysdate) AND NVL(cii.active_end_date,sysdate)
2989 AND sysdate BETWEEN NVL(cip.active_start_date,sysdate) AND NVL(cip.active_end_date,sysdate)
2990 AND sysdate BETWEEN NVL(cia.active_start_date,sysdate) AND NVL(cia.active_end_date,sysdate);
2991 --
2992 CURSOR ip_acct_csr(p_bill_to IN NUMBER,p_ship_to IN NUMBER) IS
2993 SELECT cia.ip_account_id ip_account_id,cia.object_version_number object_version_number
2994 ,cia.bill_to_address,cia.ship_to_address
2995 FROM CSI_ITEM_INSTANCES cii,
2996 CSI_I_PARTIES cip,
2997 CSI_IP_ACCOUNTS cia
2998 WHERE cii.system_id = p_system_rec.system_id
2999 AND cip.instance_id = cii.instance_id
3000 AND cip.relationship_type_code='OWNER'
3001 AND cip.instance_party_id=cia.instance_party_id
3002 AND cia.relationship_type_code='OWNER'
3003 AND sysdate BETWEEN NVL(cii.active_start_date,sysdate) AND NVL(cii.active_end_date,sysdate)
3004 AND sysdate BETWEEN NVL(cip.active_start_date,sysdate) AND NVL(cip.active_end_date,sysdate)
3005 AND sysdate BETWEEN NVL(cia.active_start_date,sysdate) AND NVL(cia.active_end_date,sysdate)
3006 AND ((NVL(cia.bill_to_address,-999) = NVL(p_bill_to,-999)) OR
3007 (NVL(cia.ship_to_address,-999) = NVL(p_ship_to,-999))) ;
3008 --
3009 CURSOR ins_party_csr IS
3010 SELECT cip.instance_party_id instance_party_id
3011 FROM CSI_ITEM_INSTANCES cii,
3012 CSI_I_PARTIES cip
3013 WHERE cii.system_id = p_system_rec.system_id
3014 AND cip.instance_id = cii.instance_id
3015 AND cip.relationship_type_code = 'OWNER'
3016 AND sysdate BETWEEN NVL(cii.active_start_date,sysdate) AND NVL(cii.active_end_date,sysdate)
3017 AND sysdate BETWEEN NVL(cip.active_start_date,sysdate) AND NVL(cip.active_end_date,sysdate);
3018 --
3019 CURSOR contact_ip_csr(p_contact_ip_id IN NUMBER) IS
3020 SELECT instance_party_id,object_version_number,party_id,relationship_type_code
3021 FROM CSI_I_PARTIES
3022 WHERE contact_ip_id = p_contact_ip_id
3023 AND contact_flag = 'Y'
3024 AND party_source_table = 'HZ_PARTIES'
3025 AND sysdate BETWEEN NVL(active_start_date,sysdate) AND NVL(active_end_date,sysdate);
3026 --
3027 CURSOR install_csr(p_sys_id IN NUMBER) IS
3028 SELECT instance_id, install_location_id, object_version_number
3029 FROM CSI_ITEM_INSTANCES
3030 WHERE sysdate BETWEEN NVL(active_start_date,sysdate) AND NVL(active_end_date,sysdate)
3031 AND system_id = p_sys_id;
3032 --
3033 l_msg_count NUMBER;
3034 l_msg_data VARCHAR2(2000);
3035 l_msg_index NUMBER;
3036 l_dummy VARCHAR2(1):='N';
3037 l_sys_csr systems_csr%ROWTYPE;
3038 l_tl_csr tl_csr%ROWTYPE;
3039 l_api_name CONSTANT VARCHAR2(30) := 'update_system';
3040 l_api_version_number CONSTANT NUMBER := 1.0;
3041 l_rowid rowid;
3042 l_object_version_number NUMBER;
3043 l_old_systems_rec csi_datastructures_pub.system_rec;
3044 l_new_systems_rec csi_datastructures_pub.system_rec:=p_system_rec;
3045 l_systems_hist_rec csi_datastructures_pub.system_history_rec;
3046 l_count NUMBER;
3047 l_full_dump NUMBER;
3048 l_debug_level NUMBER;
3049 l_customer_id NUMBER;
3050 l_instance_id_lst csi_datastructures_pub.id_tbl;
3051 l_transaction_date DATE;
3052 l_party_id NUMBER;
3053 l_party_tbl csi_datastructures_pub.party_tbl;
3054 l_party_account_tbl csi_datastructures_pub.party_account_tbl;
3055 l_init_party_tbl csi_datastructures_pub.party_tbl;
3056 l_init_party_account_tbl csi_datastructures_pub.party_account_tbl;
3057 l_bill_to NUMBER;
3058 l_ship_to NUMBER;
3059 l_contact_party_id NUMBER;
3060 l_call_flag VARCHAR2(1);
3061 l_date DATE;
3062 l_month VARCHAR2(20);
3063 l_exists VARCHAR2(1);
3064 l_xfer_flag VARCHAR2(1);
3065 l_bill_to_address NUMBER;
3066 l_ship_to_address NUMBER;
3067 --
3068 l_item_attribute_tbl csi_item_instance_pvt.item_attribute_tbl;
3069 l_location_tbl csi_item_instance_pvt.location_tbl;
3070 l_generic_id_tbl csi_item_instance_pvt.generic_id_tbl;
3071 l_lookup_tbl csi_item_instance_pvt.lookup_tbl;
3072 l_ins_count_rec csi_item_instance_pvt.ins_count_rec;
3073 l_instance_rec csi_datastructures_pub.instance_rec;
3074 l_temp_instance_rec csi_datastructures_pub.instance_rec;
3075 l_install_to NUMBER;
3076 px_oks_txn_inst_tbl oks_ibint_pub.txn_instance_tbl;
3077 px_child_inst_tbl csi_item_instance_grp.child_inst_tbl;
3078 l_batch_id NUMBER;
3079 l_batch_type VARCHAR2(50);
3080 --
3081 Process_next EXCEPTION;
3082
3083 BEGIN
3084 -- standard start of api savepoint
3085 SAVEPOINT update_system_pvt;
3086
3087 -- standard call to check for call compatibility.
3088 IF NOT fnd_api.compatible_api_call ( l_api_version_number,
3089 p_api_version,
3090 l_api_name,
3091 g_pkg_name)
3092 THEN
3093 RAISE fnd_api.g_exc_unexpected_error;
3094 END IF;
3095
3096
3097 -- initialize message list if p_init_msg_list is set to true.
3098 IF fnd_api.to_boolean( p_init_msg_list )
3099 THEN
3100 fnd_msg_pub.initialize;
3101 END IF;
3102
3103 -- initialize api return status to success
3104 x_return_status := fnd_api.g_ret_sts_success;
3105
3106
3107
3108 l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
3109 IF (l_debug_level > 0) THEN
3110 csi_gen_utility_pvt.put_line( 'update_system');
3111 END IF;
3112
3113 IF (l_debug_level > 1) THEN
3114 csi_gen_utility_pvt.put_line(
3115 p_api_version ||'-'||
3116 p_Commit ||'-'||
3117 p_Init_Msg_list ||'-'||
3118 p_Validation_level
3119 );
3120 csi_gen_utility_pvt.dump_sys_rec(p_system_rec);
3121 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
3122 END IF;
3123 --
3124 IF p_system_rec.customer_id IS NULL THEN
3125 fnd_message.set_name('CSI', 'CSI_API_MANDATORY_CUSTOMER');
3126 fnd_msg_pub.add;
3127 RAISE fnd_api.g_exc_error;
3128 END IF;
3129 --
3130 IF p_system_rec.system_type_code IS NULL THEN
3131 fnd_message.set_name('CSI', 'CSI_API_MANDATORY_SYSTEM_TYPE');
3132 fnd_msg_pub.add;
3133 RAISE fnd_api.g_exc_error;
3134 END IF;
3135 --
3136
3137 OPEN systems_csr (p_system_rec.system_id);
3138 FETCH systems_csr INTO l_sys_csr;
3139 IF ( (l_sys_csr.object_version_number<>p_system_rec.object_version_number)
3140 AND (p_system_rec.object_version_number <> fnd_api.g_miss_num) ) THEN
3141 fnd_message.set_name('CSI', 'CSI_RECORD_CHANGED');
3142 fnd_msg_pub.add;
3143 RAISE fnd_api.g_exc_error;
3144 END IF;
3145 CLOSE systems_csr;
3146
3147 OPEN tl_csr (p_system_rec.system_id);
3148 FETCH tl_csr INTO l_tl_csr;
3149 CLOSE tl_csr;
3150
3151
3152 -- invoke validation procedures
3153 validate_system_id(
3154 p_init_msg_list => fnd_api.g_false,
3155 p_validation_mode => 'UPDATE',
3156 p_system_id => p_system_rec.system_id,
3157 x_return_status => x_return_status,
3158 x_msg_count => x_msg_count,
3159 x_msg_data => x_msg_data);
3160
3161 validate_object_version_num(
3162 p_init_msg_list => fnd_api.g_false,
3163 p_validation_mode => 'UPDATE',
3164 p_object_version_number => p_system_rec.object_version_number,
3165 x_return_status => x_return_status,
3166 x_msg_count => x_msg_count,
3167 x_msg_data => x_msg_data);
3168
3169 IF x_return_status<>fnd_api.g_ret_sts_success THEN
3170 RAISE fnd_api.g_exc_error;
3171 END IF;
3172
3173 validate_systems(
3174 p_init_msg_list => fnd_api.g_false,
3175 p_validation_level => p_validation_level,
3176 p_validation_mode => 'UPDATE',
3177 p_system_rec => p_system_rec,
3178 x_return_status => x_return_status,
3179 x_msg_count => x_msg_count,
3180 x_msg_data => x_msg_data);
3181
3182 IF x_return_status<>fnd_api.g_ret_sts_success THEN
3183 RAISE fnd_api.g_exc_error;
3184 END IF;
3185
3186 validate_start_end_date(
3187 p_init_msg_list => fnd_api.g_false,
3188 p_validation_mode => 'UPDATE',
3189 p_system_id => p_system_rec.system_id,
3190 p_start_date => p_system_rec.start_date_active,
3191 p_end_date => p_system_rec.end_date_active,
3192 x_return_status => x_return_status,
3193 x_msg_count => x_msg_count,
3194 x_msg_data => x_msg_data);
3195 IF x_return_status <> fnd_api.g_ret_sts_success THEN
3196 RAISE fnd_api.g_exc_error;
3197 END IF;
3198
3199 IF (x_return_status = fnd_api.g_ret_sts_success) THEN
3200
3201 IF( (p_system_rec.parent_system_id IS NOT NULL) AND (p_system_rec.parent_system_id <> fnd_api.g_miss_num)) THEN
3202
3203 check_parent_child_constraint(x_system_id => p_system_rec.system_id,
3204 x_parent_system_id => p_system_rec.parent_system_id,
3205 x_return_status => x_return_status,
3206 x_msg_count => x_msg_count,
3207 x_msg_data => x_msg_data);
3208 END IF;
3209 END IF;
3210 IF ( (p_system_rec.customer_id IS NOT NULL) AND (p_system_rec.customer_id<>fnd_api.g_miss_num) ) THEN
3211 l_customer_id:=p_system_rec.customer_id;
3212 ELSE
3213 l_customer_id:=l_sys_csr.customer_id;
3214 END IF;
3215
3216
3217 IF (x_return_status = fnd_api.g_ret_sts_success) THEN
3218 -- check for unique system name
3219 Check_Unique(
3220 p_System_id => p_system_rec.system_id
3221 ,p_Name => p_system_rec.name
3222 ,p_Customer_ID => l_customer_id
3223 ,p_System_number => p_system_rec.system_number
3224 ,x_return_status => x_return_status
3225 ,x_msg_count => x_msg_count
3226 ,x_msg_data => x_msg_data);
3227
3228 END IF;
3229
3230 IF ((p_system_rec.coterminate_day_month IS NOT NULL) AND
3231 (p_system_rec.coterminate_day_month <> FND_API.G_MISS_CHAR))
3232 THEN
3233 BEGIN
3234 l_month := p_system_rec.coterminate_day_month||'-1996';
3235 l_date := to_date(l_month, 'DD-MM-YYYY');
3236 EXCEPTION
3237 WHEN OTHERS THEN
3238 fnd_message.set_name('CSI','CSI_INVALID_COTERM_DATE');
3239 fnd_message.set_token('Coterminate_Day_Month',p_system_rec.coterminate_day_month);
3240 fnd_msg_pub.add;
3241 RAISE fnd_api.g_exc_error;
3242 END;
3243 END IF;
3244
3245 -- Validate Operating_unit_id
3246 IF p_system_rec.operating_unit_id IS NOT NULL AND
3247 p_system_rec.operating_unit_id <> FND_API.G_MISS_NUM AND
3248 p_system_rec.operating_unit_id <> nvl(l_sys_csr.operating_unit_id,-999) THEN
3249 IF NOT csi_org_unit_vld_pvt.Is_Valid_operating_unit_id(p_system_rec.operating_unit_id) THEN
3250 RAISE fnd_api.g_exc_error;
3251 END IF;
3252 END IF;
3253 --
3254 csi_gen_utility_pvt.put_line('p_system_rec.end_date_active is '||to_char(p_system_rec.end_date_active,'DD-MON-YYYY HH24:MI:SS'));
3255 IF (p_system_rec.end_date_active IS NOT NULL
3256 AND p_system_rec.end_date_active <> fnd_api.g_miss_date
3257 AND p_system_rec.end_date_active <> nvl(l_sys_csr.end_date_active,fnd_api.g_miss_date)
3258 AND p_system_rec.end_date_active >= SYSDATE)
3259 -- srramakr. Since HTML has the time component, TRUNC has been removed.
3260 THEN
3261 csi_systems_pvt.expire_system(
3262 p_api_version => p_api_version,
3263 p_commit => fnd_api.g_false,
3264 p_init_msg_list => p_init_msg_list,
3265 p_validation_level => p_validation_level,
3266 p_system_rec => p_system_rec,
3267 p_txn_rec => p_txn_rec,
3268 x_instance_id_lst => l_instance_id_lst,
3269 x_return_status => x_return_status,
3270 x_msg_count => x_msg_count,
3271 x_msg_data => x_msg_data
3272 );
3273
3274 IF NOT(x_return_status = fnd_api.g_ret_sts_success) THEN
3275 fnd_message.set_name('CSI','CSI_FAILED_TO_EXPIRE_SYSTEM');
3276 fnd_message.set_token('SYSTEM_ID',p_system_rec.system_id );
3277 fnd_msg_pub.add;
3278 RAISE fnd_api.g_exc_error;
3279 END IF;
3280 ELSIF ( p_system_rec.end_date_active IS NOT NULL
3281 AND p_system_rec.end_date_active <> fnd_api.g_miss_date
3282 AND p_system_rec.end_date_active <> nvl(l_sys_csr.end_date_active,fnd_api.g_miss_date)
3283 AND p_system_rec.end_date_active < SYSDATE)
3284 -- srramakr. Since HTML has the time component, TRUNC has been removed.
3285 THEN
3286 BEGIN
3287 SELECT MAX(t.transaction_date)
3288 INTO l_transaction_date
3289 FROM csi_systems_h s,
3290 csi_transactions t
3291 WHERE s.system_id=p_system_rec.system_id
3292 AND s.transaction_id=t.transaction_id;
3293 -- srramakar. Exception handled right after select rather than at the end.
3294 -- Group function does not raise exception. Since it was there I am leaving as it is.
3295 EXCEPTION
3296 WHEN OTHERS THEN
3297 NULL;
3298 END;
3299
3300 IF l_transaction_date > p_system_rec.end_date_active
3301 THEN
3302 fnd_message.set_name('CSI','CSI_HAS_TXNS');
3303 fnd_message.set_token('END_DATE_ACTIVE',p_system_rec.end_date_active );
3304 fnd_msg_pub.add;
3305 RAISE fnd_api.g_exc_error;
3306 -- srramakr. If the Active end date is < sysdate, then call to Expire_System
3307 -- was missed. Fixed as a part of Bug 2230262.
3308 ELSE
3309 csi_systems_pvt.expire_system(
3310 p_api_version => p_api_version,
3311 p_commit => fnd_api.g_false,
3312 p_init_msg_list => p_init_msg_list,
3313 p_validation_level => p_validation_level,
3314 p_system_rec => p_system_rec,
3315 p_txn_rec => p_txn_rec,
3316 x_instance_id_lst => l_instance_id_lst,
3317 x_return_status => x_return_status,
3318 x_msg_count => x_msg_count,
3319 x_msg_data => x_msg_data
3320 );
3321
3322 IF NOT(x_return_status = fnd_api.g_ret_sts_success) THEN
3323 fnd_message.set_name('CSI','CSI_FAILED_TO_EXPIRE_SYSTEM');
3324 fnd_message.set_token('SYSTEM_ID',p_system_rec.system_id );
3325 fnd_msg_pub.add;
3326 RAISE fnd_api.g_exc_error;
3327 END IF;
3328 END IF;
3329 -- The exception has moved up since any Raise wihin the block will hit this exception
3330 -- rather than going to the actual fnd_api.g_exc_error.
3331 ELSE
3332
3333 IF x_return_status = fnd_api.g_ret_sts_success THEN
3334 -- invoke table handler(csi_systems_b_pkg.update_row)
3335 IF p_txn_rec.source_group_ref = 'XFER' THEN
3336
3337 csi_systems_b_pkg.update_row_for_mu(
3338 p_system_id => p_system_rec.system_id,
3339 p_customer_id => p_system_rec.customer_id,
3340 p_system_type_code => p_system_rec.system_type_code,
3341 p_system_number => p_system_rec.system_number,
3342 p_parent_system_id => p_system_rec.parent_system_id,
3343 p_ship_to_contact_id => p_system_rec.ship_to_contact_id,
3344 p_bill_to_contact_id => p_system_rec.bill_to_contact_id,
3345 p_technical_contact_id => p_system_rec.technical_contact_id,
3346 p_service_admin_contact_id => p_system_rec.service_admin_contact_id,
3347 p_ship_to_site_use_id => p_system_rec.ship_to_site_use_id,
3348 p_bill_to_site_use_id => p_system_rec.bill_to_site_use_id,
3349 p_install_site_use_id => p_system_rec.install_site_use_id,
3350 p_coterminate_day_month => p_system_rec.coterminate_day_month,
3351 p_autocreated_from_system_id => p_system_rec.autocreated_from_system_id,
3352 p_start_date_active => p_system_rec.start_date_active,
3353 p_end_date_active => p_system_rec.end_date_active,
3354 p_context => p_system_rec.context,
3355 p_attribute1 => p_system_rec.attribute1,
3356 p_attribute2 => p_system_rec.attribute2,
3357 p_attribute3 => p_system_rec.attribute3,
3358 p_attribute4 => p_system_rec.attribute4,
3359 p_attribute5 => p_system_rec.attribute5,
3360 p_attribute6 => p_system_rec.attribute6,
3361 p_attribute7 => p_system_rec.attribute7,
3362 p_attribute8 => p_system_rec.attribute8,
3363 p_attribute9 => p_system_rec.attribute9,
3364 p_attribute10 => p_system_rec.attribute10,
3365 p_attribute11 => p_system_rec.attribute11,
3366 p_attribute12 => p_system_rec.attribute12,
3367 p_attribute13 => p_system_rec.attribute13,
3368 p_attribute14 => p_system_rec.attribute14,
3369 p_attribute15 => p_system_rec.attribute15,
3370 p_created_by => fnd_api.g_miss_num,
3371 p_creation_date => fnd_api.g_miss_date,
3372 p_last_updated_by => fnd_global.user_id,
3373 p_last_update_date => SYSDATE,
3374 p_last_update_login => fnd_global.conc_login_id,
3375 p_object_version_number => p_system_rec.object_version_number,
3376 p_name => p_system_rec.name,
3377 p_description => p_system_rec.description,
3378 p_operating_unit_id => p_system_rec.operating_unit_id,
3379 p_request_id => p_system_rec.request_id,
3380 p_program_application_id => p_system_rec.program_application_id,
3381 p_program_id => p_system_rec.program_id,
3382 p_program_update_date => p_system_rec.program_update_date);
3383 ELSE
3384
3385 csi_systems_b_pkg.update_row(
3386 p_system_id => p_system_rec.system_id,
3387 p_customer_id => p_system_rec.customer_id,
3388 p_system_type_code => p_system_rec.system_type_code,
3389 p_system_number => p_system_rec.system_number,
3390 p_parent_system_id => p_system_rec.parent_system_id,
3391 p_ship_to_contact_id => p_system_rec.ship_to_contact_id,
3392 p_bill_to_contact_id => p_system_rec.bill_to_contact_id,
3393 p_technical_contact_id => p_system_rec.technical_contact_id,
3394 p_service_admin_contact_id => p_system_rec.service_admin_contact_id,
3395 p_ship_to_site_use_id => p_system_rec.ship_to_site_use_id,
3396 p_bill_to_site_use_id => p_system_rec.bill_to_site_use_id,
3397 p_install_site_use_id => p_system_rec.install_site_use_id,
3398 p_coterminate_day_month => p_system_rec.coterminate_day_month,
3399 p_autocreated_from_system_id => p_system_rec.autocreated_from_system_id,
3400 p_start_date_active => p_system_rec.start_date_active,
3401 p_end_date_active => p_system_rec.end_date_active,
3402 p_context => p_system_rec.context,
3403 p_attribute1 => p_system_rec.attribute1,
3404 p_attribute2 => p_system_rec.attribute2,
3405 p_attribute3 => p_system_rec.attribute3,
3406 p_attribute4 => p_system_rec.attribute4,
3407 p_attribute5 => p_system_rec.attribute5,
3408 p_attribute6 => p_system_rec.attribute6,
3409 p_attribute7 => p_system_rec.attribute7,
3410 p_attribute8 => p_system_rec.attribute8,
3411 p_attribute9 => p_system_rec.attribute9,
3412 p_attribute10 => p_system_rec.attribute10,
3413 p_attribute11 => p_system_rec.attribute11,
3414 p_attribute12 => p_system_rec.attribute12,
3415 p_attribute13 => p_system_rec.attribute13,
3416 p_attribute14 => p_system_rec.attribute14,
3417 p_attribute15 => p_system_rec.attribute15,
3418 p_created_by => fnd_api.g_miss_num,
3419 p_creation_date => fnd_api.g_miss_date,
3420 p_last_updated_by => fnd_global.user_id,
3421 p_last_update_date => SYSDATE,
3422 p_last_update_login => fnd_global.conc_login_id,
3423 p_object_version_number => p_system_rec.object_version_number,
3424 p_name => p_system_rec.name,
3425 p_description => p_system_rec.description,
3426 p_operating_unit_id => p_system_rec.operating_unit_id,
3427 p_request_id => p_system_rec.request_id,
3428 p_program_application_id => p_system_rec.program_application_id,
3429 p_program_id => p_system_rec.program_id,
3430 p_program_update_date => p_system_rec.program_update_date);
3431 END IF;
3432
3433 csi_transactions_pvt.create_transaction
3434 (
3435 p_api_version => p_api_version
3436 ,p_commit => p_commit
3437 ,p_init_msg_list => p_init_msg_list
3438 ,p_validation_level => p_validation_level
3439 ,p_success_if_exists_flag => 'Y'
3440 ,p_transaction_rec => p_txn_rec
3441 ,x_return_status => x_return_status
3442 ,x_msg_count => x_msg_count
3443 ,x_msg_data => x_msg_data
3444 );
3445
3446 IF NOT(x_return_status = fnd_api.g_ret_sts_success) THEN
3447 fnd_message.set_name('CSI','CSI_FAILED_TO_VALIDATE_TXN');
3448 fnd_message.set_token('transaction_id',p_txn_rec.transaction_id );
3449 fnd_msg_pub.add;
3450
3451 RAISE fnd_api.g_exc_error;
3452 RETURN;
3453 END IF;
3454
3455 l_old_systems_rec.system_id:=l_sys_csr.system_id;
3456 l_old_systems_rec.customer_id:=l_sys_csr.customer_id;
3457 l_old_systems_rec.system_type_code:=l_sys_csr.system_type_code;
3458 l_old_systems_rec.system_number:=l_sys_csr.system_number;
3459 l_old_systems_rec.parent_system_id:=l_sys_csr.parent_system_id;
3460 l_old_systems_rec.ship_to_contact_id:=l_sys_csr.ship_to_contact_id;
3461 l_old_systems_rec.bill_to_contact_id:=l_sys_csr.bill_to_contact_id;
3462 l_old_systems_rec.technical_contact_id:=l_sys_csr.technical_contact_id;
3463 l_old_systems_rec.service_admin_contact_id:=l_sys_csr.service_admin_contact_id;
3464 l_old_systems_rec.ship_to_site_use_id:=l_sys_csr.ship_to_site_use_id;
3465 l_old_systems_rec.bill_to_site_use_id:=l_sys_csr.bill_to_site_use_id;
3466 l_old_systems_rec.install_site_use_id:=l_sys_csr.install_site_use_id;
3467 l_old_systems_rec.coterminate_day_month:=l_sys_csr.coterminate_day_month;
3468 l_old_systems_rec.start_date_active:=l_sys_csr.start_date_active;
3469 l_old_systems_rec.end_date_active:=l_sys_csr.end_date_active;
3470 l_old_systems_rec.context:=l_sys_csr.context;
3471 l_old_systems_rec.attribute1:=l_sys_csr.attribute1;
3472 l_old_systems_rec.attribute2:=l_sys_csr.attribute2;
3473 l_old_systems_rec.attribute3:=l_sys_csr.attribute3;
3474 l_old_systems_rec.attribute4:=l_sys_csr.attribute4;
3475 l_old_systems_rec.attribute5:=l_sys_csr.attribute5;
3476 l_old_systems_rec.attribute6:=l_sys_csr.attribute6;
3477 l_old_systems_rec.attribute7:=l_sys_csr.attribute7;
3478 l_old_systems_rec.attribute8:=l_sys_csr.attribute8;
3479 l_old_systems_rec.attribute9:=l_sys_csr.attribute9;
3480 l_old_systems_rec.attribute10:=l_sys_csr.attribute10;
3481 l_old_systems_rec.attribute11:=l_sys_csr.attribute11;
3482 l_old_systems_rec.attribute12:=l_sys_csr.attribute12;
3483 l_old_systems_rec.attribute13:=l_sys_csr.attribute13;
3484 l_old_systems_rec.attribute14:=l_sys_csr.attribute14;
3485 l_old_systems_rec.attribute15:=l_sys_csr.attribute15;
3486 l_old_systems_rec.object_version_number:=l_sys_csr.object_version_number;
3487 l_old_systems_rec.name:=l_tl_csr.name;
3488 l_old_systems_rec.description:=l_tl_csr.description;
3489 l_old_systems_rec.operating_unit_id := l_sys_csr.operating_unit_id;
3490
3491 validate_history(p_old_systems_rec => l_old_systems_rec,
3492 p_new_systems_rec => l_new_systems_rec,
3493 p_transaction_id => p_txn_rec.transaction_id,
3494 p_flag => NULL,
3495 p_sysdate => NULL,
3496 x_return_status => x_return_status,
3497 x_msg_count => x_msg_count,
3498 x_msg_data => x_msg_data
3499 );
3500
3501
3502 /************* COMMENTED SINCE API SHOULD BE CALLED RATHER THAN DIRECT UPDATE
3503 check version 115.54 for the old code
3504 *********************** END OF COMMENT ****************/
3505 END IF;
3506 -- Bug # 2199317 srramakr
3507 -- When a system is Xferred, based on Cascade_cust_to_inst_flag, we need to cascade the account
3508 -- changes to Instances.
3509 l_xfer_flag := 'N';
3510
3511 IF ( (p_system_rec.customer_id IS NOT NULL) AND (p_system_rec.customer_id<>fnd_api.g_miss_num) AND
3512 (p_system_rec.customer_id <> l_sys_csr.customer_id) AND
3513 (nvl(p_system_rec.CASCADE_CUST_TO_INS_FLAG,'N') = 'Y') ) THEN
3514 Begin
3515 select party_id
3516 into l_party_id
3517 from HZ_CUST_ACCOUNTS
3518 where cust_account_id = p_system_rec.customer_id;
3519 Exception
3520 when others then
3521 null;
3522 End;
3523 --
3524 l_xfer_flag := 'Y';
3525 -- srramakr Bug 3621181. Bill_to and Ship_to should get changed accordingly
3526 IF nvl(p_system_rec.bill_to_site_use_id,fnd_api.g_miss_num) = fnd_api.g_miss_num THEN
3527 l_bill_to_address := null;
3528 ELSE
3529 l_bill_to_address := p_system_rec.bill_to_site_use_id;
3530 END IF;
3531 --
3532 IF nvl(p_system_rec.ship_to_site_use_id,fnd_api.g_miss_num) = fnd_api.g_miss_num THEN
3533 l_ship_to_address := null;
3534 ELSE
3535 l_ship_to_address := p_system_rec.ship_to_site_use_id;
3536 END IF;
3537 --
3538 For v_rec in ins_csr
3539 Loop
3540 Begin
3541 l_exists := 'N';
3542 Begin
3543 select 'Y'
3544 into l_exists
3545 from CSI_ITEM_INSTANCES
3546 where instance_id = v_rec.instance_id
3547 and owner_party_id = l_party_id
3548 and nvl(owner_party_account_id,-999) = p_system_rec.customer_id;
3549 Exception
3550 when no_data_found then
3551 l_exists := 'N';
3552 End;
3553 --
3554 -- srramakr Bug # 3531056
3555 -- If the child instance also belongs to the same system then the ownership would have got
3556 -- cascaded from the parent. So, there is no need to change the owner again.
3557 IF l_exists = 'Y' THEN
3558 csi_gen_utility_pvt.put_line('Instance '||to_char(v_rec.instance_id)||' Already Transfered');
3559 Raise Process_next;
3560 END IF;
3561 --
3562 l_party_tbl := l_init_party_tbl;
3563 l_party_account_tbl := l_init_party_account_tbl;
3564 l_party_tbl(1).party_id := l_party_id;
3565 l_party_tbl(1).instance_id := v_rec.instance_id;
3566 l_party_tbl(1).instance_party_id := v_rec.instance_party_id;
3567 l_party_tbl(1).relationship_type_code := 'OWNER';
3568 l_party_tbl(1).object_version_number := v_rec.party_obj_version_number;
3569 l_party_account_tbl(1).instance_party_id := v_rec.instance_party_id;
3570 l_party_account_tbl(1).parent_tbl_index := 1;
3571 l_party_account_tbl(1).party_account_id := p_system_rec.customer_id;
3572 l_party_account_tbl(1).relationship_type_code := 'OWNER';
3573 l_party_account_tbl(1).object_version_number := v_rec.account_obj_version_number;
3574 l_party_account_tbl(1).system_id := p_system_rec.system_id;
3575 l_party_account_tbl(1).bill_to_address := l_bill_to_address;
3576 l_party_account_tbl(1).ship_to_address := l_ship_to_address;
3577 --
3578 csi_party_relationships_pub.update_inst_party_relationship
3579 (p_api_version => p_api_version
3580 ,p_commit => fnd_api.g_false
3581 ,p_init_msg_list => p_init_msg_list
3582 ,p_validation_level => p_validation_level
3583 ,p_party_tbl => l_party_tbl
3584 ,p_party_account_tbl=> l_party_account_tbl
3585 ,p_txn_rec => p_txn_rec
3586 ,p_oks_txn_inst_tbl => px_oks_txn_inst_tbl
3587 ,x_return_status => x_return_status
3588 ,x_msg_count => x_msg_count
3589 ,x_msg_data => x_msg_data
3590 );
3591
3592 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3593 csi_gen_utility_pvt.put_line('Error from CSI_PARTY_RELATIONSHIPS_PUB.. ');
3594 l_msg_index := 1;
3595 l_msg_count := x_msg_count;
3596 WHILE l_msg_count > 0
3597 LOOP
3598 x_msg_data := FND_MSG_PUB.GET
3599 ( l_msg_index,
3600 FND_API.G_FALSE );
3601 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
3602 l_msg_index := l_msg_index + 1;
3603 l_msg_count := l_msg_count - 1;
3604 END LOOP;
3605 RAISE FND_API.G_EXC_ERROR;
3606 END IF;
3607 Exception
3608 when Process_next then
3609 null;
3610 End;
3611 End Loop;
3612 --
3613 IF px_oks_txn_inst_tbl.count > 0 THEN
3614 csi_gen_utility_pvt.dump_oks_txn_inst_tbl(px_oks_txn_inst_tbl);
3615 csi_gen_utility_pvt.put_line('Calling OKS Core API...');
3616 --
3617 IF p_txn_rec.transaction_type_id = 3 THEN
3618 l_batch_id := p_txn_rec.source_header_ref_id;
3619 l_batch_type := p_txn_rec.source_group_ref;
3620 ELSE
3621 l_batch_id := NULL;
3622 l_batch_type := NULL;
3623 END IF;
3624 --
3625 UPDATE CSI_TRANSACTIONS
3626 set contracts_invoked = 'Y'
3627 where transaction_id = p_txn_rec.transaction_id;
3628 --
3629 OKS_IBINT_PUB.IB_interface
3630 (
3631 P_Api_Version => 1.0,
3632 P_init_msg_list => p_init_msg_list,
3633 P_single_txn_date_flag => 'Y',
3634 P_Batch_type => l_batch_type,
3635 P_Batch_ID => l_batch_id,
3636 P_OKS_Txn_Inst_tbl => px_oks_txn_inst_tbl,
3637 x_return_status => x_return_status,
3638 x_msg_count => x_msg_count,
3639 x_msg_data => x_msg_data
3640 );
3641 --
3642 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3643 l_msg_index := 1;
3644 l_msg_count := x_msg_count;
3645 WHILE l_msg_count > 0 LOOP
3646 x_msg_data := FND_MSG_PUB.GET
3647 ( l_msg_index,
3648 FND_API.G_FALSE );
3649 csi_gen_utility_pvt.put_line( 'Error from OKS_IBINT_PUB.IB_interface..');
3650 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
3651 l_msg_index := l_msg_index + 1;
3652 l_msg_count := l_msg_count - 1;
3653 END LOOP;
3654 RAISE FND_API.G_EXC_ERROR;
3655 END IF;
3656 END IF;
3657 END IF;
3658 --
3659 --
3660 -- Bug # 3072178 rtalluri
3661 -- When a install_site_use_id changes for a system, then the install details should be cascaded to
3662 -- all the underlying instances associated to the system
3663 --
3664 If ( ((nvl(p_system_rec.install_site_use_id,-999) <> fnd_api.g_miss_num) AND
3665 (nvl(p_system_rec.install_site_use_id,-999) <> nvl(l_sys_csr.install_site_use_id,-999))) AND
3666 (nvl(p_system_rec.INSTALL_TO_SITE_CHANGE_FLAG,'N') = 'Y') )
3667 Then
3668
3669 For v_install_rec in install_csr(l_sys_csr.system_id)
3670 Loop
3671 Begin
3672 l_instance_rec :=l_temp_instance_rec;
3673 l_call_flag := 'N';
3674 IF nvl(v_install_rec.install_location_id,-999) = nvl(l_sys_csr.install_site_use_id,-999) THEN
3675 IF p_system_rec.install_site_use_id = FND_API.G_MISS_NUM OR
3676 nvl(p_system_rec.INSTALL_TO_SITE_CHANGE_FLAG,'N') <> 'Y' THEN
3677 l_install_to := v_install_rec.install_location_id;
3678 ELSE
3679 l_install_to := p_system_rec.install_site_use_id;
3680 l_call_flag := 'Y';
3681 END IF;
3682 ELSE
3683 l_install_to := v_install_rec.install_location_id;
3684 END IF;
3685
3686 IF l_call_flag = 'Y' THEN
3687 l_exists := 'N';
3688 Begin
3689 select 'Y'
3690 into l_exists
3691 from CSI_ITEM_INSTANCES
3692 where instance_id = v_install_rec.instance_id
3693 and nvl(install_location_id,-999) = l_install_to;
3694 Exception
3695 when no_data_found then
3696 l_exists := 'N';
3697 End;
3698 --
3699 -- srramakr Bug # 3531056
3700 -- If the child instance also belongs to the same system then the install location
3701 -- would have got cascaded from the parent. So, there is no need to change this again.
3702 --
3703 IF l_exists = 'Y' THEN
3704 csi_gen_utility_pvt.put_line('Install Location for instance '||to_char(v_install_rec.instance_id)||' already changed..');
3705 Raise Process_next;
3706 END IF;
3707 --
3708 l_instance_rec.instance_id := v_install_rec.instance_id;
3709 l_instance_rec.object_version_number := v_install_rec.object_version_number;
3710 l_instance_rec.install_location_id := l_install_to; --p_system_rec.install_site_use_id;
3711
3712 csi_item_instance_pvt.update_Item_Instance
3713 (
3714 p_api_version => p_api_version
3715 ,p_commit => fnd_api.g_false
3716 ,p_init_msg_list => p_init_msg_list
3717 ,p_validation_level => p_validation_level
3718 ,p_instance_rec => l_instance_rec
3719 ,p_txn_rec => p_txn_rec
3720 ,x_instance_id_lst => l_instance_id_lst
3721 ,x_return_status => x_return_status
3722 ,x_msg_count => x_msg_count
3723 ,x_msg_data => x_msg_data
3724 ,p_item_attribute_tbl => l_item_attribute_tbl
3725 ,p_location_tbl => l_location_tbl
3726 ,p_generic_id_tbl => l_generic_id_tbl
3727 ,p_lookup_tbl => l_lookup_tbl
3728 ,p_ins_count_rec => l_ins_count_rec
3729 ,p_oks_txn_inst_tbl => px_oks_txn_inst_tbl
3730 ,p_child_inst_tbl => px_child_inst_tbl
3731 );
3732 If NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) Then
3733 csi_gen_utility_pvt.put_line('Error from csi_item_instance_pvt.update_item_instance while updating Install Location.');
3734 l_msg_index := 1;
3735 l_msg_count := x_msg_count;
3736 While l_msg_count > 0
3737 Loop
3738 x_msg_data := FND_MSG_PUB.GET
3739 ( l_msg_index,
3740 FND_API.G_FALSE );
3741 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
3742 l_msg_index := l_msg_index + 1;
3743 l_msg_count := l_msg_count - 1;
3744 End Loop;
3745 Raise FND_API.G_EXC_ERROR;
3746 End If;
3747 End If;
3748 Exception
3749 when Process_next then
3750 null;
3751 End;
3752 End Loop;
3753 End If;
3754 --
3755 -- srramakr Bug # 2368440. When Bill_to or Ship_to address is changed, it should cascade to
3756 -- instances. The change will take place for the Owner Party Account with the same addresses.
3757 -- srramakr Bug 3621181 No need to cascade the addresses if ownership xfer occured.
3758 IF l_xfer_flag <> 'Y' THEN
3759 IF ( (((nvl(p_system_rec.bill_to_site_use_id,-999) <> fnd_api.g_miss_num) AND
3760 (nvl(p_system_rec.bill_to_site_use_id,-999) <> nvl(l_sys_csr.bill_to_site_use_id,-999))) OR
3761 ((nvl(p_system_rec.ship_to_site_use_id,-999) <> fnd_api.g_miss_num) AND
3762 (nvl(p_system_rec.ship_to_site_use_id,-999) <> nvl(l_sys_csr.ship_to_site_use_id,-999)))) AND
3763 ((nvl(p_system_rec.BILL_TO_SITE_CHANGE_FLAG,'N') = 'Y') OR
3764 (nvl(p_system_rec.SHIP_TO_SITE_CHANGE_FLAG,'N') = 'Y')) ) THEN
3765 For v_rec in ip_acct_csr(l_sys_csr.bill_to_site_use_id,l_sys_csr.ship_to_site_use_id)
3766 Loop
3767 l_party_account_tbl := l_init_party_account_tbl;
3768 l_call_flag := 'N';
3769 IF nvl(v_rec.bill_to_address,-999) = nvl(l_sys_csr.bill_to_site_use_id,-999) THEN
3770 IF p_system_rec.bill_to_site_use_id = FND_API.G_MISS_NUM OR
3771 nvl(p_system_rec.BILL_TO_SITE_CHANGE_FLAG,'N') <> 'Y' THEN
3772 l_bill_to := v_rec.bill_to_address;
3773 ELSE
3774 l_bill_to := p_system_rec.bill_to_site_use_id;
3775 l_call_flag := 'Y';
3776 END IF;
3777 ELSE
3778 l_bill_to := v_rec.bill_to_address;
3779 END IF;
3780 --
3781 IF nvl(v_rec.ship_to_address,-999) = nvl(l_sys_csr.ship_to_site_use_id,-999) THEN
3782 IF p_system_rec.ship_to_site_use_id = FND_API.G_MISS_NUM OR
3783 nvl(p_system_rec.SHIP_TO_SITE_CHANGE_FLAG,'N') <> 'Y' THEN
3784 l_ship_to := v_rec.ship_to_address;
3785 ELSE
3786 l_ship_to := p_system_rec.ship_to_site_use_id;
3787 l_call_flag := 'Y';
3788 END IF;
3789 ELSE
3790 l_ship_to := v_rec.ship_to_address;
3791 END IF;
3792 --
3793 IF l_call_flag = 'Y' THEN
3794 l_party_account_tbl(1).ip_account_id := v_rec.ip_account_id;
3795 l_party_account_tbl(1).object_version_number := v_rec.object_version_number;
3796 l_party_account_tbl(1).bill_to_address := l_bill_to;
3797 l_party_account_tbl(1).ship_to_address := l_ship_to;
3798 --
3799 -- Call Update_Inst_party_account
3800 csi_party_relationships_pvt.update_inst_party_account
3801 ( p_api_version => p_api_version
3802 ,p_commit => fnd_api.g_false
3803 ,p_init_msg_list => p_init_msg_list
3804 ,p_validation_level => p_validation_level
3805 ,p_party_account_rec => l_party_account_tbl(1)
3806 ,p_txn_rec => p_txn_rec
3807 ,p_oks_txn_inst_tbl => px_oks_txn_inst_tbl
3808 ,x_return_status => x_return_status
3809 ,x_msg_count => x_msg_count
3810 ,x_msg_data => x_msg_data
3811 );
3812 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3813 csi_gen_utility_pvt.put_line('Error from while updating Accounts.');
3814 l_msg_index := 1;
3815 l_msg_count := x_msg_count;
3816 WHILE l_msg_count > 0
3817 LOOP
3818 x_msg_data := FND_MSG_PUB.GET
3819 ( l_msg_index,
3820 FND_API.G_FALSE );
3821 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
3822 l_msg_index := l_msg_index + 1;
3823 l_msg_count := l_msg_count - 1;
3824 END LOOP;
3825 RAISE FND_API.G_EXC_ERROR;
3826 END IF;
3827 END IF;
3828 --
3829 End Loop;
3830 END IF;
3831 END IF; -- l_xfer_flag check
3832 --
3833 -- Updating the contact information
3834 IF (nvl(p_system_rec.BILL_TO_CONT_CHANGE_FLAG,'N') = 'Y' OR
3835 nvl(p_system_rec.SHIP_TO_CONT_CHANGE_FLAG,'N') = 'Y' OR
3836 nvl(p_system_rec.TECH_CONT_CHANGE_FLAG,'N') = 'Y' OR
3837 nvl(p_system_rec.SERV_ADMIN_CONT_CHANGE_FLAG,'N') = 'Y') THEN
3838 For party_rec in ins_party_csr
3839 Loop
3840 For cont_rec in contact_ip_csr(party_rec.instance_party_id)
3841 Loop
3842 l_party_tbl := l_init_party_tbl;
3843 l_call_flag := 'N';
3844 IF cont_rec.relationship_type_code = 'BILL_TO' AND
3845 nvl(cont_rec.party_id,-999) = nvl(l_sys_csr.bill_to_contact_id,-999) THEN
3846 IF p_system_rec.bill_to_contact_id = FND_API.G_MISS_NUM OR
3847 p_system_rec.bill_to_contact_id IS NULL OR
3848 nvl(p_system_rec.bill_to_cont_change_flag,'N') <> 'Y' THEN
3849 l_contact_party_id := cont_rec.party_id;
3850 ELSE
3851 l_contact_party_id := p_system_rec.bill_to_contact_id;
3852 l_call_flag := 'Y';
3853 END IF;
3854 END IF; -- End of Bill To
3855 --
3856 IF cont_rec.relationship_type_code = 'SHIP_TO' AND
3857 nvl(cont_rec.party_id,-999) = nvl(l_sys_csr.ship_to_contact_id,-999) THEN
3858 IF p_system_rec.ship_to_contact_id = FND_API.G_MISS_NUM OR
3859 p_system_rec.ship_to_contact_id IS NULL OR
3860 nvl(p_system_rec.ship_to_cont_change_flag,'N') <> 'Y' THEN
3861 l_contact_party_id := cont_rec.party_id;
3862 ELSE
3863 l_contact_party_id := p_system_rec.ship_to_contact_id;
3864 l_call_flag := 'Y';
3865 END IF;
3866 END IF; -- End of Ship To
3867 --
3868 IF cont_rec.relationship_type_code = 'TECHNICAL' AND
3869 nvl(cont_rec.party_id,-999) = nvl(l_sys_csr.technical_contact_id,-999) THEN
3870 IF p_system_rec.technical_contact_id = FND_API.G_MISS_NUM OR
3871 p_system_rec.technical_contact_id IS NULL OR
3872 nvl(p_system_rec.tech_cont_change_flag,'N') <> 'Y' THEN
3873 l_contact_party_id := cont_rec.party_id;
3874 ELSE
3875 l_contact_party_id := p_system_rec.technical_contact_id;
3876 l_call_flag := 'Y';
3877 END IF;
3878 END IF; -- End of Technical
3879 --
3880 IF cont_rec.relationship_type_code = 'SERV_ADMIN' AND
3881 nvl(cont_rec.party_id,-999) = nvl(l_sys_csr.service_admin_contact_id,-999) THEN
3882 IF p_system_rec.service_admin_contact_id = FND_API.G_MISS_NUM OR
3883 p_system_rec.service_admin_contact_id IS NULL OR
3884 nvl(p_system_rec.serv_admin_cont_change_flag,'N') <> 'Y' THEN
3885 l_contact_party_id := cont_rec.party_id;
3886 ELSE
3887 l_contact_party_id := p_system_rec.service_admin_contact_id;
3888 l_call_flag := 'Y';
3889 END IF;
3890 END IF; -- End of Service Admin
3891 -- Build the Party_tbl and call Update_inst_party_relationship API
3892 IF l_call_flag = 'Y' THEN
3893 l_party_tbl(1).instance_party_id := cont_rec.instance_party_id;
3894 l_party_tbl(1).object_version_number := cont_rec.object_version_number;
3895 l_party_tbl(1).party_id := l_contact_party_id;
3896 --
3897 csi_party_relationships_pvt.update_inst_party_relationship
3898 (p_api_version => p_api_version
3899 ,p_commit => fnd_api.g_false
3900 ,p_init_msg_list => p_init_msg_list
3901 ,p_validation_level => p_validation_level
3902 ,p_party_rec => l_party_tbl(1)
3903 ,p_txn_rec => p_txn_rec
3904 ,x_return_status => x_return_status
3905 ,x_msg_count => x_msg_count
3906 ,x_msg_data => x_msg_data
3907 );
3908
3909 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3910 csi_gen_utility_pvt.put_line('Error from CSI_PARTY_RELATIONSHIPS_PVT.. ');
3911 l_msg_index := 1;
3912 l_msg_count := x_msg_count;
3913 WHILE l_msg_count > 0
3914 LOOP
3915 x_msg_data := FND_MSG_PUB.GET
3916 ( l_msg_index,
3917 FND_API.G_FALSE );
3918 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
3919 l_msg_index := l_msg_index + 1;
3920 l_msg_count := l_msg_count - 1;
3921 END LOOP;
3922 RAISE FND_API.G_EXC_ERROR;
3923 END IF;
3924 END IF; -- End of call_flag check
3925 --
3926 End Loop;
3927 End Loop;
3928 END IF;
3929
3930 IF x_return_status <> fnd_api.g_ret_sts_success THEN
3931 RAISE fnd_api.g_exc_error;
3932 END IF;
3933 -- standard check for p_commit
3934 IF fnd_api.to_boolean( p_commit )
3935 THEN
3936 COMMIT WORK;
3937 END IF;
3938
3939 -- standard call to get message count and if count is 1, get message info.
3940 fnd_msg_pub.count_and_get
3941 ( p_count => x_msg_count,
3942 p_data => x_msg_data
3943 );
3944 END IF;
3945 EXCEPTION
3946 WHEN fnd_api.g_exc_error THEN
3947 ROLLBACK TO update_system_pvt;
3948 x_return_status := fnd_api.g_ret_sts_error ;
3949 fnd_msg_pub.count_and_get
3950 (p_count => x_msg_count ,
3951 p_data => x_msg_data
3952 );
3953
3954 WHEN fnd_api.g_exc_unexpected_error THEN
3955 ROLLBACK TO update_system_pvt;
3956 x_return_status := fnd_api.g_ret_sts_unexp_error ;
3957 fnd_msg_pub.count_and_get
3958 (p_count => x_msg_count ,
3959 p_data => x_msg_data
3960 );
3961
3962 WHEN OTHERS THEN
3963 ROLLBACK TO update_system_pvt;
3964 x_return_status := fnd_api.g_ret_sts_unexp_error ;
3965 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
3966 fnd_msg_pub.add_exc_msg(g_pkg_name ,l_api_name);
3967 END IF;
3968 fnd_msg_pub.count_and_get
3969 (p_count => x_msg_count ,
3970 p_data => x_msg_data
3971 );
3972
3973 END update_system;
3974
3975 PROCEDURE expire_system
3976 (
3977 p_api_version IN NUMBER,
3978 p_commit IN VARCHAR2,
3979 p_init_msg_list IN VARCHAR2,
3980 p_validation_level IN NUMBER,
3981 p_system_rec IN csi_datastructures_pub.system_rec,
3982 p_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec,
3983 x_instance_id_lst OUT NOCOPY csi_datastructures_pub.id_tbl,
3984 x_return_status OUT NOCOPY VARCHAR2,
3985 x_msg_count OUT NOCOPY NUMBER,
3986 x_msg_data OUT NOCOPY VARCHAR2
3987 ) IS
3988 CURSOR systems_csr (p_system_id NUMBER) IS
3989 SELECT system_id,
3990 customer_id,
3991 system_type_code,
3992 system_number,
3993 parent_system_id,
3994 ship_to_contact_id,
3995 bill_to_contact_id,
3996 technical_contact_id,
3997 service_admin_contact_id,
3998 ship_to_site_use_id,
3999 bill_to_site_use_id,
4000 install_site_use_id,
4001 coterminate_day_month,
4002 start_date_active,
4003 end_date_active,
4004 context,
4005 attribute1,
4006 attribute2,
4007 attribute3,
4008 attribute4,
4009 attribute5,
4010 attribute6,
4011 attribute7,
4012 attribute8,
4013 attribute9,
4014 attribute10,
4015 attribute11,
4016 attribute12,
4017 attribute13,
4018 attribute14,
4019 attribute15,
4020 object_version_number,
4021 operating_unit_id
4022 FROM csi_systems_b
4023 WHERE system_id=p_system_id
4024 FOR UPDATE OF object_version_number ;
4025
4026 CURSOR tl_csr (sys_id NUMBER) IS
4027 SELECT name,
4028 description
4029 FROM csi_systems_tl
4030 WHERE system_id=sys_id
4031 FOR UPDATE OF system_id;
4032
4033
4034 CURSOR expire_instance_csr(p_system_id NUMBER) IS
4035 SELECT *
4036 FROM csi_item_instances
4037 WHERE system_id=p_system_id
4038 AND sysdate BETWEEN NVL(active_start_date,(sysdate -1))
4039 AND NVL(active_end_date,(sysdate +1));
4040
4041 l_sys_csr systems_csr%ROWTYPE;
4042 l_tl_csr tl_csr%ROWTYPE;
4043 l_sysdate DATE :=SYSDATE;
4044 l_api_version_number CONSTANT NUMBER := 1.0;
4045 l_api_name CONSTANT VARCHAR2(30) := 'expire_system';
4046 l_system_rec csi_datastructures_pub.system_rec;
4047 l_old_systems_rec csi_datastructures_pub.system_rec;
4048 l_new_systems_rec csi_datastructures_pub.system_rec;
4049 l_instance_rec csi_datastructures_pub.instance_rec;
4050 l_init_instance_rec csi_datastructures_pub.instance_rec;
4051 l_debug_level NUMBER;
4052 l_ext_attrib_values_tbl csi_datastructures_pub.extend_attrib_values_tbl;
4053 l_party_tbl csi_datastructures_pub.party_tbl;
4054 l_account_tbl csi_datastructures_pub.party_account_tbl;
4055 l_pricing_attrib_tbl csi_datastructures_pub.pricing_attribs_tbl;
4056 l_org_assignments_tbl csi_datastructures_pub.organization_units_tbl;
4057 l_asset_assignment_tbl csi_datastructures_pub.instance_asset_tbl;
4058 l_exists VARCHAR2(1);
4059 --
4060 Process_next EXCEPTION;
4061
4062 BEGIN
4063
4064 -- standard start of api savepoint
4065 SAVEPOINT expire_system_pvt;
4066
4067 -- standard call to check for call compatibility.
4068 IF NOT fnd_api.compatible_api_call ( l_api_version_number,
4069 p_api_version,
4070 l_api_name,
4071 g_pkg_name)
4072 THEN
4073 RAISE fnd_api.g_exc_unexpected_error;
4074 END IF;
4075
4076
4077 -- initialize message list if p_init_msg_list is set to true.
4078 IF fnd_api.to_boolean( p_init_msg_list )
4079 THEN
4080 fnd_msg_pub.initialize;
4081 END IF;
4082
4083 -- initialize api return status to success
4084 x_return_status := fnd_api.g_ret_sts_success;
4085
4086 l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
4087 IF (l_debug_level > 0) THEN
4088 csi_gen_utility_pvt.put_line( 'expire_system');
4089 END IF;
4090
4091 IF (l_debug_level > 1) THEN
4092 csi_gen_utility_pvt.put_line(
4093 p_api_version ||'-'||
4094 p_Commit ||'-'||
4095 p_Init_Msg_list ||'-'||
4096 p_Validation_level
4097 );
4098 csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
4099 csi_gen_utility_pvt.dump_sys_rec(p_system_rec);
4100 END IF;
4101
4102 OPEN systems_csr (p_system_rec.system_id);
4103 FETCH systems_csr INTO l_sys_csr;
4104 IF ( (l_sys_csr.object_version_number<>p_system_rec.object_version_number)
4105 AND (p_system_rec.object_version_number <> fnd_api.g_miss_num) ) THEN
4106 fnd_message.set_name('CSI', 'CSI_RECORD_CHANGED');
4107 fnd_msg_pub.add;
4108 RAISE fnd_api.g_exc_error;
4109 END IF;
4110 CLOSE systems_csr;
4111
4112 OPEN tl_csr (p_system_rec.system_id);
4113 FETCH tl_csr INTO l_tl_csr;
4114 CLOSE tl_csr;
4115
4116 validate_system_id(
4117 p_init_msg_list => fnd_api.g_false,
4118 p_validation_mode => 'EXPIRE',
4119 p_system_id => p_system_rec.system_id,
4120 x_return_status => x_return_status,
4121 x_msg_count => x_msg_count,
4122 x_msg_data => x_msg_data);
4123
4124 validate_object_version_num(
4125 p_init_msg_list => fnd_api.g_false,
4126 p_validation_mode => 'EXPIRE',
4127 p_object_version_number => p_system_rec.object_version_number,
4128 x_return_status => x_return_status,
4129 x_msg_count => x_msg_count,
4130 x_msg_data => x_msg_data);
4131
4132 csi_gen_utility_pvt.put_line('Inside Expire System');
4133 IF x_return_status<>fnd_api.g_ret_sts_success THEN
4134 RAISE fnd_api.g_exc_error;
4135 END IF;
4136
4137 IF p_system_rec.end_date_active IS NOT NULL
4138 AND p_system_rec.end_date_active <> FND_API.G_MISS_DATE
4139 THEN
4140 l_sysdate := p_system_rec.end_date_active;
4141 END IF;
4142 -- srramakr Bug # 3031086. Moving the Update Table handler after cascading the changes to instances.
4143 -- This is because, as a part of bug # 2783027, we enforced system_id validation to make sure that
4144 -- no update is allowed on an instance that is attachaed to an expired system.
4145 -- In this case, if the system is already expired then cascade can't be done.
4146 --
4147 csi_transactions_pvt.create_transaction
4148 (
4149 p_api_version => p_api_version
4150 ,p_commit => p_commit
4151 ,p_init_msg_list => p_init_msg_list
4152 ,p_validation_level => p_validation_level
4153 ,p_success_if_exists_flag => 'Y'
4154 ,p_transaction_rec => p_txn_rec
4155 ,x_return_status => x_return_status
4156 ,x_msg_count => x_msg_count
4157 ,x_msg_data => x_msg_data
4158 );
4159
4160 IF NOT(x_return_status = fnd_api.g_ret_sts_success) THEN
4161 fnd_message.set_name('CSI','CSI_FAILED_TO_VALIDATE_TXN');
4162 fnd_message.set_token('transaction_id',p_txn_rec.transaction_id );
4163 fnd_msg_pub.add;
4164
4165 RAISE fnd_api.g_exc_error;
4166 RETURN;
4167 END IF;
4168 -- srramakr Bug # 2230262. Expire_Item_Instance was called for updating the Active_end_Date
4169 -- for the instances irrespective of whether the passed active_end_date is > sysdate or
4170 -- <= sysdate. Changed this to call Update_Item_Instance which takes care of changing the
4171 -- status to EXPIRED when the active_end_Date is <= sysdate. For active_end_date > sysdate,
4172 -- only the date component should change for the instances and status should remain as it is.
4173 --
4174 IF NVL(fnd_profile.value('CSI_CASCADE_SYS_TERMINATE'),'N')='Y' THEN
4175
4176 FOR expire_csr IN expire_instance_csr(p_system_rec.system_id)
4177 LOOP
4178 Begin
4179 l_exists := 'N';
4180 Begin
4181 select 'Y'
4182 into l_exists
4183 from CSI_ITEM_INSTANCES
4184 where instance_id = expire_csr.instance_id
4185 and nvl(active_end_date,(sysdate+1)) <= sysdate;
4186 Exception
4187 when no_data_found then
4188 l_exists := 'N';
4189 End;
4190 --
4191 -- srramakr Bug # 3531056
4192 -- If the child instance also belongs to the same system then it would have got
4193 -- terminated when its parent got terminated. So, there is no need terminate it again.
4194 IF l_exists = 'Y' THEN
4195 csi_gen_utility_pvt.put_line('Instance '||to_char(expire_csr.instance_id)||' Already expired');
4196 Raise Process_next;
4197 END IF;
4198 --
4199 l_instance_rec := l_init_instance_rec; -- srramakr need to be initialized everytime.
4200 l_ext_attrib_values_tbl.DELETE;
4201 l_party_tbl.DELETE;
4202 l_account_tbl.DELETE;
4203 l_pricing_attrib_tbl.DELETE;
4204 l_org_assignments_tbl.DELETE;
4205 l_asset_assignment_tbl.DELETE;
4206 l_instance_rec.instance_id := expire_csr.instance_id;
4207 l_instance_rec.active_end_date := l_sysdate;-- modified by sguthiva for bug 2401398 p_system_rec.end_date_active;
4208 l_instance_rec.object_version_number := expire_csr.object_version_number;
4209 --
4210 csi_gen_utility_pvt.put_line('Calling Update for instance_id '||to_char(l_instance_rec.instance_id));
4211 csi_item_instance_pub.update_item_instance
4212 (
4213 p_api_version => p_api_version
4214 ,p_commit => fnd_api.g_false
4215 ,p_init_msg_list => p_init_msg_list
4216 ,p_validation_level => p_validation_level
4217 ,p_instance_rec => l_instance_rec
4218 ,p_ext_attrib_values_tbl => l_ext_attrib_values_tbl
4219 ,p_party_tbl => l_party_tbl
4220 ,p_account_tbl => l_account_tbl
4221 ,p_pricing_attrib_tbl => l_pricing_attrib_tbl
4222 ,p_org_assignments_tbl => l_org_assignments_tbl
4223 ,p_asset_assignment_tbl => l_asset_assignment_tbl
4224 ,p_txn_rec => p_txn_rec
4225 ,x_instance_id_lst => x_instance_id_lst
4226 ,x_return_status => x_return_status
4227 ,x_msg_count => x_msg_count
4228 ,x_msg_data => x_msg_data
4229 );
4230 IF NOT(x_return_status = fnd_api.g_ret_sts_success) THEN
4231 fnd_message.set_name('CSI','CSI_FAILED_TO_VALIDATE_INS');
4232 fnd_message.set_token('instance_id',expire_csr.instance_id);
4233 fnd_msg_pub.add;
4234 RAISE fnd_api.g_exc_error;
4235 RETURN;
4236 END IF;
4237 Exception
4238 when Process_next then
4239 null;
4240 End;
4241 END LOOP; -- Instance loop
4242 END IF; -- cascade profile check
4243 --
4244 -- Moved down for Bug # 3031086.
4245 csi_systems_b_pkg.update_row(
4246 p_system_id => p_system_rec.system_id,
4247 p_customer_id => p_system_rec.customer_id,
4248 p_system_type_code => p_system_rec.system_type_code,
4249 p_system_number => p_system_rec.system_number,
4250 p_parent_system_id => p_system_rec.parent_system_id,
4251 p_ship_to_contact_id => p_system_rec.ship_to_contact_id,
4252 p_bill_to_contact_id => p_system_rec.bill_to_contact_id,
4253 p_technical_contact_id => p_system_rec.technical_contact_id,
4254 p_service_admin_contact_id => p_system_rec.service_admin_contact_id,
4255 p_ship_to_site_use_id => p_system_rec.ship_to_site_use_id,
4256 p_bill_to_site_use_id => p_system_rec.bill_to_site_use_id,
4257 p_install_site_use_id => p_system_rec.install_site_use_id,
4258 p_coterminate_day_month => p_system_rec.coterminate_day_month,
4259 p_autocreated_from_system_id => p_system_rec.autocreated_from_system_id,
4260 p_start_date_active => p_system_rec.start_date_active,
4261 p_end_date_active => l_sysdate,
4262 p_context => p_system_rec.context,
4263 p_attribute1 => p_system_rec.attribute1,
4264 p_attribute2 => p_system_rec.attribute2,
4265 p_attribute3 => p_system_rec.attribute3,
4266 p_attribute4 => p_system_rec.attribute4,
4267 p_attribute5 => p_system_rec.attribute5,
4268 p_attribute6 => p_system_rec.attribute6,
4269 p_attribute7 => p_system_rec.attribute7,
4270 p_attribute8 => p_system_rec.attribute8,
4271 p_attribute9 => p_system_rec.attribute9,
4272 p_attribute10 => p_system_rec.attribute10,
4273 p_attribute11 => p_system_rec.attribute11,
4274 p_attribute12 => p_system_rec.attribute12,
4275 p_attribute13 => p_system_rec.attribute13,
4276 p_attribute14 => p_system_rec.attribute14,
4277 p_attribute15 => p_system_rec.attribute15,
4278 p_created_by => fnd_api.g_miss_num,
4279 p_creation_date => fnd_api.g_miss_date,
4280 p_last_updated_by => fnd_global.user_id,
4281 p_last_update_date => SYSDATE,
4282 p_last_update_login => fnd_global.conc_login_id,
4283 p_object_version_number => fnd_api.g_miss_num,
4284 p_name => p_system_rec.name,
4285 p_description => p_system_rec.description,
4286 p_operating_unit_id => p_system_rec.operating_unit_id,
4287 p_request_id => p_system_rec.request_id,
4288 p_program_application_id => p_system_rec.program_application_id,
4289 p_program_id => p_system_rec.program_id,
4290 p_program_update_date => p_system_rec.program_update_date);
4291
4292 l_old_systems_rec.system_id:=l_sys_csr.system_id;
4293 l_old_systems_rec.customer_id:=l_sys_csr.customer_id;
4294 l_old_systems_rec.system_type_code:=l_sys_csr.system_type_code;
4295 l_old_systems_rec.system_number:=l_sys_csr.system_number;
4296 l_old_systems_rec.parent_system_id:=l_sys_csr.parent_system_id;
4297 l_old_systems_rec.ship_to_contact_id:=l_sys_csr.ship_to_contact_id;
4298 l_old_systems_rec.bill_to_contact_id:=l_sys_csr.bill_to_contact_id;
4299 l_old_systems_rec.technical_contact_id:=l_sys_csr.technical_contact_id;
4300 l_old_systems_rec.service_admin_contact_id:=l_sys_csr.service_admin_contact_id;
4301 l_old_systems_rec.ship_to_site_use_id:=l_sys_csr.ship_to_site_use_id;
4302 l_old_systems_rec.bill_to_site_use_id:=l_sys_csr.bill_to_site_use_id;
4303 l_old_systems_rec.install_site_use_id:=l_sys_csr.install_site_use_id;
4304 l_old_systems_rec.coterminate_day_month:=l_sys_csr.coterminate_day_month;
4305 l_old_systems_rec.start_date_active:=l_sys_csr.start_date_active;
4306 l_old_systems_rec.end_date_active:=l_sys_csr.end_date_active;
4307 l_old_systems_rec.context:=l_sys_csr.context;
4308 l_old_systems_rec.attribute1:=l_sys_csr.attribute1;
4309 l_old_systems_rec.attribute2:=l_sys_csr.attribute2;
4310 l_old_systems_rec.attribute3:=l_sys_csr.attribute3;
4311 l_old_systems_rec.attribute4:=l_sys_csr.attribute4;
4312 l_old_systems_rec.attribute5:=l_sys_csr.attribute5;
4313 l_old_systems_rec.attribute6:=l_sys_csr.attribute6;
4314 l_old_systems_rec.attribute7:=l_sys_csr.attribute7;
4315 l_old_systems_rec.attribute8:=l_sys_csr.attribute8;
4316 l_old_systems_rec.attribute9:=l_sys_csr.attribute9;
4317 l_old_systems_rec.attribute10:=l_sys_csr.attribute10;
4318 l_old_systems_rec.attribute11:=l_sys_csr.attribute11;
4319 l_old_systems_rec.attribute12:=l_sys_csr.attribute12;
4320 l_old_systems_rec.attribute13:=l_sys_csr.attribute13;
4321 l_old_systems_rec.attribute14:=l_sys_csr.attribute14;
4322 l_old_systems_rec.attribute15:=l_sys_csr.attribute15;
4323 l_old_systems_rec.object_version_number:=l_sys_csr.object_version_number;
4324 l_old_systems_rec.name:=l_tl_csr.name;
4325 l_old_systems_rec.description:=l_tl_csr.description;
4326 l_old_systems_rec.operating_unit_id := l_sys_csr.operating_unit_id;
4327
4328 l_new_systems_rec := p_system_rec;
4329
4330 validate_history(p_old_systems_rec => l_old_systems_rec,
4331 p_new_systems_rec => l_new_systems_rec,
4332 p_transaction_id => p_txn_rec.transaction_id,
4333 p_flag => 'EXPIRE',
4334 p_sysdate => l_sysdate,
4335 x_return_status => x_return_status,
4336 x_msg_count => x_msg_count,
4337 x_msg_data => x_msg_data
4338 );
4339
4340 IF x_return_status <> fnd_api.g_ret_sts_success THEN
4341 RAISE fnd_api.g_exc_error;
4342 END IF;
4343 -- standard check for p_commit
4344 IF fnd_api.to_boolean( p_commit )
4345 THEN
4346 COMMIT WORK;
4347 END IF;
4348
4349 -- standard call to get message count and if count is 1, get message info.
4350 fnd_msg_pub.count_and_get
4351 ( p_count => x_msg_count,
4352 p_data => x_msg_data
4353 );
4354
4355 EXCEPTION
4356 WHEN fnd_api.g_exc_error THEN
4357 ROLLBACK TO expire_system_pvt;
4358 x_return_status := fnd_api.g_ret_sts_error ;
4359 fnd_msg_pub.count_and_get
4360 (p_count => x_msg_count ,
4361 p_data => x_msg_data
4362 );
4363
4364 WHEN fnd_api.g_exc_unexpected_error THEN
4365 ROLLBACK TO expire_system_pvt;
4366 x_return_status := fnd_api.g_ret_sts_unexp_error ;
4367 fnd_msg_pub.count_and_get
4368 (p_count => x_msg_count ,
4369 p_data => x_msg_data
4370 );
4371
4372 WHEN OTHERS THEN
4373 ROLLBACK TO expire_system_pvt;
4374 x_return_status := fnd_api.g_ret_sts_unexp_error ;
4375 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
4376 fnd_msg_pub.add_exc_msg(g_pkg_name ,l_api_name);
4377 END IF;
4378 fnd_msg_pub.count_and_get
4379 (p_count => x_msg_count ,
4380 p_data => x_msg_data
4381 );
4382
4383
4384
4385 END expire_system;
4386
4387
4388 -- item-level validation procedures
4389 PROCEDURE validate_system_id (
4390 p_init_msg_list IN VARCHAR2,
4391 p_validation_mode IN VARCHAR2,
4392 p_system_id IN NUMBER,
4393 x_return_status OUT NOCOPY VARCHAR2,
4394 x_msg_count OUT NOCOPY NUMBER,
4395 x_msg_data OUT NOCOPY VARCHAR2
4396 )
4397 IS
4398 l_dummy VARCHAR2(1);
4399 BEGIN
4400 -- initialize message list if p_init_msg_list is set to true.
4401 IF fnd_api.to_boolean( p_init_msg_list )
4402 THEN
4403 fnd_msg_pub.initialize;
4404 END IF;
4405
4406
4407 -- initialize api return status to success
4408 x_return_status := fnd_api.g_ret_sts_success;
4409
4410 -- validate not null column
4411 IF p_validation_mode='CREATE' THEN
4412 IF ( (p_system_id IS NOT NULL) AND (p_system_id<>fnd_api.g_miss_num) )
4413 THEN
4414 BEGIN
4415 SELECT 'x'
4416 INTO l_dummy
4417 FROM csi_systems_b
4418 WHERE system_id=p_system_id;
4419 fnd_message.set_name('CSI', 'CSI_INVALID_SYSTEM_ID');
4420 fnd_message.set_token('system_id',p_system_id);
4421 fnd_msg_pub.add;
4422 x_return_status := fnd_api.g_ret_sts_error;
4423 EXCEPTION
4424 WHEN no_data_found THEN
4425 x_return_status := fnd_api.g_ret_sts_success;
4426 END;
4427 END IF;
4428
4429 ELSIF p_validation_mode='UPDATE' OR p_validation_mode='EXPIRE' THEN
4430 IF ( (p_system_id IS NOT NULL) AND (p_system_id<>fnd_api.g_miss_num) )
4431 THEN
4432 BEGIN
4433 SELECT 'x'
4434 INTO l_dummy
4435 FROM csi_systems_b
4436 WHERE system_id=p_system_id;
4437 EXCEPTION
4438 WHEN no_data_found THEN
4439 fnd_message.set_name('CSI', 'CSI_INVALID_SYSTEM_ID');
4440 fnd_message.set_token('system_id',p_system_id);
4441 fnd_msg_pub.add;
4442 x_return_status := fnd_api.g_ret_sts_error;
4443 END;
4444 ELSE
4445 fnd_message.set_name('CSI', 'CSI_NO_SYSTEM_ID');
4446 fnd_message.set_token('REQUIRED_PARAM','SYSTEM_ID');
4447 fnd_msg_pub.add;
4448 x_return_status := fnd_api.g_ret_sts_error;
4449 END IF;
4450
4451 END IF;
4452
4453
4454
4455 -- standard call to get message count and if count is 1, get message info.
4456 fnd_msg_pub.count_and_get
4457 ( p_count => x_msg_count,
4458 p_data => x_msg_data
4459 );
4460
4461 END validate_system_id;
4462
4463
4464 PROCEDURE validate_customer_id (
4465 p_init_msg_list IN VARCHAR2,
4466 p_validation_mode IN VARCHAR2,
4467 p_customer_id IN NUMBER,
4468 x_return_status OUT NOCOPY VARCHAR2,
4469 x_msg_count OUT NOCOPY NUMBER,
4470 x_msg_data OUT NOCOPY VARCHAR2
4471 )
4472 IS
4473 l_dummy VARCHAR2(1);
4474 BEGIN
4475 -- initialize message list if p_init_msg_list is set to true.
4476 IF fnd_api.to_boolean( p_init_msg_list )
4477 THEN
4478 fnd_msg_pub.initialize;
4479 END IF;
4480
4481
4482 -- initialize api return status to success
4483 x_return_status := fnd_api.g_ret_sts_success;
4484
4485 -- validate not null column
4486 IF p_validation_mode='CREATE' THEN
4487 IF ( (p_customer_id IS NOT NULL) AND (p_customer_id<>fnd_api.g_miss_num) )
4488 THEN
4489 BEGIN
4490 SELECT 'x'
4491 INTO l_dummy
4492 FROM hz_cust_accounts hzc
4493 ,hz_parties hz
4494 WHERE hzc.cust_account_id = p_customer_id
4495 AND hzc.party_id=hz.party_id;
4496
4497 /*SELECT 'x'
4498 INTO l_dummy
4499 FROM hz_parties
4500 WHERE party_id=p_customer_id; */
4501
4502 EXCEPTION
4503 WHEN no_data_found THEN
4504 fnd_message.set_name('CSI', 'CSI_INVALID_CUSTOMER_ID');
4505 fnd_message.set_token('customer_id',p_customer_id);
4506 fnd_msg_pub.add;
4507 x_return_status := fnd_api.g_ret_sts_error;
4508 END;
4509 ELSE
4510 fnd_message.set_name('CSI', 'CSI_CUST_ID_NOT_PASSED');
4511 fnd_message.set_token('REQUIRED_PARAM','CUSTOMER_ID');
4512 fnd_msg_pub.add;
4513 x_return_status := fnd_api.g_ret_sts_error;
4514
4515 END IF;
4516 ELSIF p_validation_mode='UPDATE' THEN
4517 IF ( (p_customer_id IS NOT NULL) AND (p_customer_id<>fnd_api.g_miss_num) )
4518 THEN
4519 BEGIN
4520 SELECT 'x'
4521 INTO l_dummy
4522 FROM hz_cust_accounts hzc
4523 ,hz_parties hz
4524 WHERE hzc.cust_account_id = p_customer_id
4525 AND hzc.party_id=hz.party_id;
4526
4527 /* SELECT 'x'
4528 INTO l_dummy
4529 FROM hz_parties
4530 WHERE party_id=p_customer_id; */
4531 EXCEPTION
4532 WHEN no_data_found THEN
4533 fnd_message.set_name('CSI', 'CSI_INVALID_CUSTOMER_ID');
4534 fnd_message.set_token('customer_id',p_customer_id);
4535 fnd_msg_pub.add;
4536 x_return_status := fnd_api.g_ret_sts_error;
4537 END;
4538 END IF;
4539 END IF;
4540 -- standard call to get message count and if count is 1, get message info.
4541 fnd_msg_pub.count_and_get
4542 ( p_count => x_msg_count,
4543 p_data => x_msg_data
4544 );
4545
4546 END validate_customer_id;
4547
4548
4549 PROCEDURE validate_system_type_code (
4550 p_init_msg_list IN VARCHAR2,
4551 p_validation_mode IN VARCHAR2,
4552 p_system_type_code IN VARCHAR2,
4553 x_return_status OUT NOCOPY VARCHAR2,
4554 x_msg_count OUT NOCOPY NUMBER,
4555 x_msg_data OUT NOCOPY VARCHAR2
4556 )
4557 IS
4558 l_dummy VARCHAR2(1);
4559 l_sys_lookup_type VARCHAR2(30) := 'CSI_SYSTEM_TYPE';
4560 BEGIN
4561 -- initialize message list if p_init_msg_list is set to true.
4562 IF fnd_api.to_boolean( p_init_msg_list )
4563 THEN
4564 fnd_msg_pub.initialize;
4565 END IF;
4566
4567
4568 -- initialize api return status to success
4569 x_return_status := fnd_api.g_ret_sts_success;
4570
4571 -- validate not null column
4572 IF p_validation_mode='CREATE' THEN
4573
4574 IF ( (p_system_type_code IS NOT NULL) AND (p_system_type_code<>fnd_api.g_miss_char) )
4575 THEN
4576 BEGIN
4577 SELECT 'x'
4578 INTO l_dummy
4579 FROM csi_lookups
4580 WHERE lookup_type=l_sys_lookup_type
4581 AND lookup_code=p_system_type_code;
4582 EXCEPTION
4583 WHEN no_data_found THEN
4584 fnd_message.set_name('CSI', 'CSI_INVALID_SYS_TYPE_CODE');
4585 fnd_message.set_token('system_type_code',p_system_type_code);
4586 fnd_msg_pub.add;
4587 x_return_status := fnd_api.g_ret_sts_error;
4588 END;
4589 ELSE
4590 fnd_message.set_name('CSI', 'CSI_NO_SYS_TYPE_CODE');
4591 fnd_message.set_token('REQUIRED_PARAM','SYSTEM_TYPE_CODE');
4592
4593 fnd_msg_pub.add;
4594 x_return_status := fnd_api.g_ret_sts_error;
4595
4596 END IF;
4597 ELSIF p_validation_mode='UPDATE' THEN
4598 IF ( (p_system_type_code IS NOT NULL) AND (p_system_type_code<>fnd_api.g_miss_char) )
4599 THEN
4600 BEGIN
4601 SELECT 'x'
4602 INTO l_dummy
4603 FROM csi_lookups
4604 WHERE lookup_type=l_sys_lookup_type
4605 AND lookup_code=p_system_type_code;
4606 EXCEPTION
4607 WHEN no_data_found THEN
4608 fnd_message.set_name('CSI', 'CSI_INVALID_SYS_TYPE_CODE');
4609 fnd_message.set_token('system_type_code',p_system_type_code);
4610 fnd_msg_pub.add;
4611 x_return_status := fnd_api.g_ret_sts_error;
4612 END;
4613 END IF;
4614 END IF;
4615
4616
4617 -- standard call to get message count and if count is 1, get message info.
4618 fnd_msg_pub.count_and_get
4619 ( p_count => x_msg_count,
4620 p_data => x_msg_data
4621 );
4622
4623 END validate_system_type_code;
4624
4625
4626
4627
4628 PROCEDURE validate_parent_system_id (
4629 p_init_msg_list IN VARCHAR2,
4630 p_validation_mode IN VARCHAR2,
4631 p_parent_system_id IN NUMBER,
4632 x_return_status OUT NOCOPY VARCHAR2,
4633 x_msg_count OUT NOCOPY NUMBER,
4634 x_msg_data OUT NOCOPY VARCHAR2
4635 )
4636 IS
4637 l_dummy VARCHAR2(1);
4638 BEGIN
4639 -- initialize message list IF p_init_msg_list IS set to true.
4640 IF fnd_api.to_boolean( p_init_msg_list )
4641 THEN
4642 fnd_msg_pub.initialize;
4643 END IF;
4644
4645
4646 -- initialize api return status to success
4647 x_return_status := fnd_api.g_ret_sts_success;
4648
4649 -- validate not null column
4650 IF p_validation_mode='CREATE' THEN
4651 IF ( (p_parent_system_id IS NOT NULL) AND (p_parent_system_id<>fnd_api.g_miss_num) )
4652 THEN
4653 BEGIN
4654 SELECT 'x'
4655 INTO l_dummy
4656 FROM csi_systems_b
4657 WHERE system_id=p_parent_system_id;
4658 EXCEPTION
4659 WHEN no_data_found THEN
4660 fnd_message.set_name('CSI', 'CSI_INVALID_PARENT_SYS_ID');
4661 fnd_message.set_token('parent_system_id',p_parent_system_id);
4662 fnd_msg_pub.add;
4663 x_return_status := fnd_api.g_ret_sts_error;
4664 END;
4665 END IF;
4666
4667
4668 ELSIF p_validation_mode='UPDATE' THEN
4669 IF ( (p_parent_system_id IS NOT NULL) AND (p_parent_system_id<>fnd_api.g_miss_num) )
4670 THEN
4671 BEGIN
4672 SELECT 'x'
4673 INTO l_dummy
4674 FROM csi_systems_b
4675 WHERE system_id=p_parent_system_id;
4676 EXCEPTION
4677 WHEN no_data_found THEN
4678 fnd_message.set_name('CSI', 'CSI_INVALID_PARENT_SYS_ID');
4679 fnd_message.set_token('parent_system_id',p_parent_system_id);
4680 fnd_msg_pub.add;
4681 x_return_status := fnd_api.g_ret_sts_error;
4682 END;
4683 END IF;
4684 END IF;
4685
4686 -- standard call to get message count and if count is 1, get message info.
4687 fnd_msg_pub.count_and_get
4688 ( p_count => x_msg_count,
4689 p_data => x_msg_data
4690 );
4691
4692 END validate_parent_system_id;
4693
4694
4695 PROCEDURE validate_ship_to_contact_id (
4696 p_init_msg_list IN VARCHAR2,
4697 p_validation_mode IN VARCHAR2,
4698 p_ship_to_contact_id IN NUMBER,
4699 x_return_status OUT NOCOPY VARCHAR2,
4700 x_msg_count OUT NOCOPY NUMBER,
4701 x_msg_data OUT NOCOPY VARCHAR2
4702 )
4703 IS
4704 l_dummy VARCHAR2(1);
4705 BEGIN
4706 -- initialize message list if p_init_msg_list is set to true.
4707 IF fnd_api.to_boolean( p_init_msg_list )
4708 THEN
4709 fnd_msg_pub.initialize;
4710 END IF;
4711
4712
4713 -- initialize api return status to success
4714 x_return_status := fnd_api.g_ret_sts_success;
4715
4716 -- validate not null column
4717 IF p_validation_mode='CREATE' THEN
4718 IF ( (p_ship_to_contact_id IS NOT NULL) AND (p_ship_to_contact_id<>fnd_api.g_miss_num) )
4719 THEN
4720 BEGIN
4721 SELECT 'x'
4722 INTO l_dummy
4723 FROM hz_parties
4724 WHERE party_id=p_ship_to_contact_id;
4725 EXCEPTION
4726 WHEN no_data_found THEN
4727 fnd_message.set_name('CSI', 'CSI_INVALID_SHIPTO_CT_ID');
4728 fnd_message.set_token('ship_to_contact_id',p_ship_to_contact_id);
4729 fnd_msg_pub.add;
4730 x_return_status := fnd_api.g_ret_sts_error;
4731 END;
4732
4733 END IF;
4734 ELSIF p_validation_mode='UPDATE' THEN
4735 IF ( (p_ship_to_contact_id IS NOT NULL) AND (p_ship_to_contact_id<>fnd_api.g_miss_num) )
4736 THEN
4737 BEGIN
4738 SELECT 'x'
4739 INTO l_dummy
4740 FROM hz_parties
4741 WHERE party_id=p_ship_to_contact_id;
4742 EXCEPTION
4743 WHEN no_data_found THEN
4744 fnd_message.set_name('CSI', 'CSI_INVALID_SHIPTO_CT_ID');
4745 fnd_message.set_token('ship_to_contact_id',p_ship_to_contact_id);
4746 fnd_msg_pub.add;
4747 x_return_status := fnd_api.g_ret_sts_error;
4748 END;
4749 END IF;
4750 END IF;
4751
4752 -- standard call to get message count and if count is 1, get message info.
4753 fnd_msg_pub.count_and_get
4754 ( p_count => x_msg_count,
4755 p_data => x_msg_data
4756 );
4757
4758 END validate_ship_to_contact_id;
4759
4760
4761 PROCEDURE validate_bill_to_contact_id (
4762 p_init_msg_list IN VARCHAR2,
4763 p_validation_mode IN VARCHAR2,
4764 p_bill_to_contact_id IN NUMBER,
4765 x_return_status OUT NOCOPY VARCHAR2,
4766 x_msg_count OUT NOCOPY NUMBER,
4767 x_msg_data OUT NOCOPY VARCHAR2
4768 )
4769 IS
4770 l_dummy VARCHAR2(1);
4771 BEGIN
4772 -- initialize message list if p_init_msg_list is set to true.
4773 IF fnd_api.to_boolean( p_init_msg_list )
4774 THEN
4775 fnd_msg_pub.initialize;
4776 END IF;
4777
4778
4779 -- initialize api return status to success
4780 x_return_status := fnd_api.g_ret_sts_success;
4781
4782 -- validate not null column
4783 IF p_validation_mode='CREATE' THEN
4784 IF ( (p_bill_to_contact_id IS NOT NULL) AND (p_bill_to_contact_id<>fnd_api.g_miss_num) )
4785 THEN
4786 BEGIN
4787 SELECT 'x'
4788 INTO l_dummy
4789 FROM hz_parties
4790 WHERE party_id=p_bill_to_contact_id;
4791 EXCEPTION
4792 WHEN no_data_found THEN
4793 fnd_message.set_name('CSI', 'CSI_INVALID_BILLTO_CT_ID');
4794 fnd_message.set_token('bill_to_contact_id',p_bill_to_contact_id);
4795 fnd_msg_pub.add;
4796 x_return_status := fnd_api.g_ret_sts_error;
4797 END;
4798 END IF;
4799 ELSIF p_validation_mode='UPDATE' THEN
4800 IF ( (p_bill_to_contact_id IS NOT NULL) AND (p_bill_to_contact_id<>fnd_api.g_miss_num) )
4801 THEN
4802 BEGIN
4803 SELECT 'x'
4804 INTO l_dummy
4805 FROM hz_parties
4806 WHERE party_id=p_bill_to_contact_id;
4807 EXCEPTION
4808 WHEN no_data_found THEN
4809 fnd_message.set_name('CSI', 'CSI_INVALID_BILLTO_CT_ID');
4810 fnd_message.set_token('bill_to_contact_id',p_bill_to_contact_id);
4811 fnd_msg_pub.add;
4812 x_return_status := fnd_api.g_ret_sts_error;
4813 END;
4814 END IF;
4815 END IF;
4816
4817 -- standard call to get message count and if count is 1, get message info.
4818 fnd_msg_pub.count_and_get
4819 ( p_count => x_msg_count,
4820 p_data => x_msg_data
4821 );
4822
4823 END validate_bill_to_contact_id;
4824
4825
4826 PROCEDURE validate_technical_contact_id (
4827 p_init_msg_list IN VARCHAR2,
4828 p_validation_mode IN VARCHAR2,
4829 p_technical_contact_id IN NUMBER,
4830 x_return_status OUT NOCOPY VARCHAR2,
4831 x_msg_count OUT NOCOPY NUMBER,
4832 x_msg_data OUT NOCOPY VARCHAR2
4833 )
4834 IS
4835 l_dummy VARCHAR2(1);
4836 BEGIN
4837 -- initialize message list if p_init_msg_list is set to true.
4838 IF fnd_api.to_boolean( p_init_msg_list )
4839 THEN
4840 fnd_msg_pub.initialize;
4841 END IF;
4842
4843
4844 -- initialize api return status to success
4845 x_return_status := fnd_api.g_ret_sts_success;
4846
4847 -- validate not null column
4848 IF p_validation_mode='CREATE' THEN
4849 IF ( (p_technical_contact_id IS NOT NULL) AND (p_technical_contact_id<>fnd_api.g_miss_num) )
4850 THEN
4851 BEGIN
4852 SELECT 'x'
4853 INTO l_dummy
4854 FROM hz_parties
4855 WHERE party_id=p_technical_contact_id;
4856 EXCEPTION
4857 WHEN no_data_found THEN
4858 fnd_message.set_name('CSI', 'CSI_INVALID_TECH_CT_ID');
4859 fnd_message.set_token('technical_contact_id',p_technical_contact_id);
4860 fnd_msg_pub.add;
4861 x_return_status := fnd_api.g_ret_sts_error;
4862 END;
4863 END IF;
4864 ELSIF p_validation_mode='UPDATE' THEN
4865 IF ( (p_technical_contact_id IS NOT NULL) AND (p_technical_contact_id<>fnd_api.g_miss_num) )
4866 THEN
4867 BEGIN
4868 SELECT 'x'
4869 INTO l_dummy
4870 FROM hz_parties
4871 WHERE party_id=p_technical_contact_id;
4872 EXCEPTION
4873 WHEN no_data_found THEN
4874 fnd_message.set_name('CSI', 'CSI_INVALID_TECH_CT_ID');
4875 fnd_message.set_token('technical_contact_id',p_technical_contact_id);
4876 fnd_msg_pub.add;
4877 x_return_status := fnd_api.g_ret_sts_error;
4878 END;
4879 END IF;
4880 END IF;
4881 -- standard call to get message count and if count is 1, get message info.
4882 fnd_msg_pub.count_and_get
4883 ( p_count => x_msg_count,
4884 p_data => x_msg_data
4885 );
4886
4887 END validate_technical_contact_id;
4888
4889
4890 PROCEDURE validate_srv_admin_cont_id (
4891 p_init_msg_list IN VARCHAR2,
4892 p_validation_mode IN VARCHAR2,
4893 p_service_admin_contact_id IN NUMBER,
4894 x_return_status OUT NOCOPY VARCHAR2,
4895 x_msg_count OUT NOCOPY NUMBER,
4896 x_msg_data OUT NOCOPY VARCHAR2
4897 )
4898 IS
4899 l_dummy VARCHAR2(1);
4900 BEGIN
4901 -- initialize message list if p_init_msg_list is set to true.
4902 IF fnd_api.to_boolean( p_init_msg_list )
4903 THEN
4904 fnd_msg_pub.initialize;
4905 END IF;
4906
4907
4908 -- initialize api return status to success
4909 x_return_status := fnd_api.g_ret_sts_success;
4910
4911 -- validate not null column
4912 IF p_validation_mode='CREATE' THEN
4913 IF ( (p_service_admin_contact_id IS NOT NULL) AND (p_service_admin_contact_id<>fnd_api.g_miss_num) )
4914 THEN
4915 BEGIN
4916 SELECT 'x'
4917 INTO l_dummy
4918 FROM hz_parties
4919 WHERE party_id=p_service_admin_contact_id;
4920 EXCEPTION
4921 WHEN no_data_found THEN
4922 fnd_message.set_name('CSI', 'CSI_INVALID_SRVADMIN_CT_ID');
4923 fnd_message.set_token('service_admin_contact_id',p_service_admin_contact_id);
4924 fnd_msg_pub.add;
4925 x_return_status := fnd_api.g_ret_sts_error;
4926 END;
4927 END IF;
4928 ELSIF p_validation_mode='UPDATE' THEN
4929 IF ( (p_service_admin_contact_id IS NOT NULL) AND (p_service_admin_contact_id<>fnd_api.g_miss_num) )
4930 THEN
4931 BEGIN
4932 SELECT 'x'
4933 INTO l_dummy
4934 FROM hz_parties
4935 WHERE party_id=p_service_admin_contact_id;
4936 EXCEPTION
4937 WHEN no_data_found THEN
4938 fnd_message.set_name('CSI', 'CSI_INVALID_SRVADMIN_CT_ID');
4939 fnd_message.set_token('service_admin_contact_id',p_service_admin_contact_id);
4940 fnd_msg_pub.add;
4941 x_return_status := fnd_api.g_ret_sts_error;
4942 END;
4943 END IF;
4944 END IF;
4945 -- standard call to get message count and if count is 1, get message info.
4946 fnd_msg_pub.count_and_get
4947 ( p_count => x_msg_count,
4948 p_data => x_msg_data
4949 );
4950
4951 END validate_srv_admin_cont_id;
4952
4953
4954 PROCEDURE validate_ship_to_site_use_id (
4955 p_init_msg_list IN VARCHAR2,
4956 p_validation_mode IN VARCHAR2,
4957 p_ship_to_site_use_id IN NUMBER,
4958 x_return_status OUT NOCOPY VARCHAR2,
4959 x_msg_count OUT NOCOPY NUMBER,
4960 x_msg_data OUT NOCOPY VARCHAR2
4961 )
4962 IS
4963 l_dummy VARCHAR2(1);
4964 BEGIN
4965 -- initialize message list if p_init_msg_list is set to true.
4966 IF fnd_api.to_boolean( p_init_msg_list )
4967 THEN
4968 fnd_msg_pub.initialize;
4969 END IF;
4970
4971
4972 -- initialize api return status to success
4973 x_return_status := fnd_api.g_ret_sts_success;
4974
4975 -- validate not null column
4976 IF p_validation_mode='CREATE' THEN
4977 IF ( (p_ship_to_site_use_id IS NOT NULL) AND (p_ship_to_site_use_id<>fnd_api.g_miss_num) )
4978 THEN
4979 BEGIN
4980 SELECT 'x'
4981 INTO l_dummy
4982 FROM hz_cust_site_uses_all--hz_party_sites
4983 WHERE site_use_id = p_ship_to_site_use_id
4984 AND site_use_code = 'SHIP_TO';
4985 EXCEPTION
4986 WHEN no_data_found THEN
4987 fnd_message.set_name('CSI', 'CSI_INVALID_SHIP_TO_ID');
4988 fnd_message.set_token('ship_to_site_use_id',p_ship_to_site_use_id);
4989 fnd_msg_pub.add;
4990 x_return_status := fnd_api.g_ret_sts_error;
4991 END;
4992 END IF;
4993 ELSIF p_validation_mode='UPDATE' THEN
4994 IF ( (p_ship_to_site_use_id IS NOT NULL) AND (p_ship_to_site_use_id<>fnd_api.g_miss_num) )
4995 THEN
4996 BEGIN
4997 SELECT 'x'
4998 INTO l_dummy
4999 FROM hz_cust_site_uses_all --hz_party_sites
5000 WHERE site_use_id = p_ship_to_site_use_id
5001 AND site_use_code = 'SHIP_TO';
5002 EXCEPTION
5003 WHEN no_data_found THEN
5004 fnd_message.set_name('CSI', 'CSI_INVALID_SHIP_TO_ID');
5005 fnd_message.set_token('ship_to_site_use_id',p_ship_to_site_use_id);
5006 fnd_msg_pub.add;
5007 x_return_status := fnd_api.g_ret_sts_error;
5008 END;
5009 END IF;
5010 END IF;
5011
5012 -- standard call to get message count and if count is 1, get message info.
5013 fnd_msg_pub.count_and_get
5014 ( p_count => x_msg_count,
5015 p_data => x_msg_data
5016 );
5017
5018 END validate_ship_to_site_use_id;
5019
5020
5021 PROCEDURE validate_bill_to_site_use_id (
5022 p_init_msg_list IN VARCHAR2,
5023 p_validation_mode IN VARCHAR2,
5024 p_bill_to_site_use_id IN NUMBER,
5025 x_return_status OUT NOCOPY VARCHAR2,
5026 x_msg_count OUT NOCOPY NUMBER,
5027 x_msg_data OUT NOCOPY VARCHAR2
5028 )
5029 IS
5030 l_dummy VARCHAR2(1);
5031 BEGIN
5032 -- initialize message list if p_init_msg_list is set to true.
5033 IF fnd_api.to_boolean( p_init_msg_list )
5034 THEN
5035 fnd_msg_pub.initialize;
5036 END IF;
5037
5038
5039 -- initialize api return status to success
5040 x_return_status := fnd_api.g_ret_sts_success;
5041
5042 -- validate not null column
5043 IF p_validation_mode='CREATE' THEN
5044 IF ( (p_bill_to_site_use_id IS NOT NULL) AND (p_bill_to_site_use_id<>fnd_api.g_miss_num) )
5045 THEN
5046 BEGIN
5047 SELECT 'x'
5048 INTO l_dummy
5049 FROM hz_cust_site_uses_all --hz_cust_acct_sites_all
5050 WHERE site_use_id = p_bill_to_site_use_id
5051 AND site_use_code = 'BILL_TO';
5052 EXCEPTION
5053 WHEN no_data_found THEN
5054 fnd_message.set_name('CSI', 'CSI_INVALID_BILL_TO_ID');
5055 fnd_message.set_token('bill_to_site_use_id',p_bill_to_site_use_id);
5056 fnd_msg_pub.add;
5057 x_return_status := fnd_api.g_ret_sts_error;
5058 END;
5059 END IF;
5060 ELSIF p_validation_mode='UPDATE' THEN
5061 IF ( (p_bill_to_site_use_id IS NOT NULL) AND (p_bill_to_site_use_id<>fnd_api.g_miss_num) )
5062 THEN
5063 BEGIN
5064 SELECT 'x'
5065 INTO l_dummy
5066 FROM hz_cust_site_uses_all --hz_cust_acct_sites_all
5067 WHERE site_use_id = p_bill_to_site_use_id
5068 AND site_use_code = 'BILL_TO';
5069 EXCEPTION
5070 WHEN no_data_found THEN
5071 fnd_message.set_name('CSI', 'CSI_INVALID_BILL_TO_ID');
5072 fnd_message.set_token('bill_to_site_use_id',p_bill_to_site_use_id);
5073 fnd_msg_pub.add;
5074 x_return_status := fnd_api.g_ret_sts_error;
5075 END;
5076 END IF;
5077
5078 END IF;
5079 -- standard call to get message count and if count is 1, get message info.
5080 fnd_msg_pub.count_and_get
5081 ( p_count => x_msg_count,
5082 p_data => x_msg_data
5083 );
5084
5085 END validate_bill_to_site_use_id;
5086
5087
5088 PROCEDURE validate_install_site_use_id (
5089 p_init_msg_list IN VARCHAR2,
5090 p_validation_mode IN VARCHAR2,
5091 p_install_site_use_id IN NUMBER,
5092 x_return_status OUT NOCOPY VARCHAR2,
5093 x_msg_count OUT NOCOPY NUMBER,
5094 x_msg_data OUT NOCOPY VARCHAR2
5095 )
5096 IS
5097 l_dummy VARCHAR2(1);
5098 BEGIN
5099
5100 -- initialize message list if p_init_msg_list is set to true.
5101 IF fnd_api.to_boolean( p_init_msg_list )
5102 THEN
5103 fnd_msg_pub.initialize;
5104 END IF;
5105
5106
5107 -- initialize api return status to success
5108 x_return_status := fnd_api.g_ret_sts_success;
5109
5110 -- validate not null column
5111 IF p_validation_mode='CREATE' THEN
5112 IF ( (p_install_site_use_id IS NOT NULL) AND (p_install_site_use_id<>fnd_api.g_miss_num) )
5113 THEN
5114 BEGIN
5115 SELECT 'x'
5116 INTO l_dummy
5117 FROM hz_party_sites
5118 WHERE party_site_id=p_install_site_use_id;
5119 EXCEPTION
5120 WHEN no_data_found THEN
5121 fnd_message.set_name('CSI', 'CSI_INVALID_INSTALL_ID');
5122 fnd_message.set_token('install_site_use_id',p_install_site_use_id);
5123 fnd_msg_pub.add;
5124 x_return_status := fnd_api.g_ret_sts_error;
5125 END;
5126 END IF;
5127 ELSIF p_validation_mode='UPDATE' THEN
5128 IF ( (p_install_site_use_id IS NOT NULL) AND (p_install_site_use_id<>fnd_api.g_miss_num) )
5129 THEN
5130 BEGIN
5131 SELECT 'x'
5132 INTO l_dummy
5133 FROM hz_party_sites
5134 WHERE party_site_id=p_install_site_use_id;
5135 EXCEPTION
5136 WHEN no_data_found THEN
5137 fnd_message.set_name('CSI', 'CSI_INVALID_INSTALL_ID');
5138 fnd_message.set_token('install_site_use_id',p_install_site_use_id);
5139 fnd_msg_pub.add;
5140 x_return_status := fnd_api.g_ret_sts_error;
5141 END;
5142 END IF;
5143 END IF;
5144
5145 -- standard call to get message count and if count is 1, get message info.
5146 fnd_msg_pub.count_and_get
5147 ( p_count => x_msg_count,
5148 p_data => x_msg_data
5149 );
5150
5151 END validate_install_site_use_id;
5152
5153 PROCEDURE validate_auto_sys_id (
5154 p_init_msg_list IN VARCHAR2,
5155 p_validation_mode IN VARCHAR2 ,
5156 p_auto_sys_id IN NUMBER ,
5157 x_return_status OUT NOCOPY VARCHAR2 ,
5158 x_msg_count OUT NOCOPY NUMBER ,
5159 x_msg_data OUT NOCOPY VARCHAR2
5160 )
5161 IS
5162 l_dummy VARCHAR2(1);
5163 BEGIN
5164
5165 IF fnd_api.to_boolean( p_init_msg_list )
5166 THEN
5167 fnd_msg_pub.initialize;
5168 END IF;
5169
5170
5171 x_return_status := fnd_api.g_ret_sts_success;
5172
5173 IF p_validation_mode='CREATE' THEN
5174 IF ( (p_auto_sys_id IS NOT NULL) AND (p_auto_sys_id<>fnd_api.g_miss_num) )
5175 THEN
5176 BEGIN
5177 SELECT 'x'
5178 INTO l_dummy
5179 FROM csi_systems_b
5180 WHERE system_id=p_auto_sys_id;
5181 EXCEPTION
5182 WHEN no_data_found THEN
5183 fnd_message.set_name('CSI', 'CSI_INVALID_AUTOSYS_ID');
5184 fnd_message.set_token('autocreated_from_system_id',p_auto_sys_id);
5185 fnd_msg_pub.add;
5186 x_return_status := fnd_api.g_ret_sts_error;
5187 END;
5188 END IF;
5189 END IF;
5190
5191 -- standard call to get message count and if count is 1, get message info.
5192 fnd_msg_pub.count_and_get
5193 ( p_count => x_msg_count,
5194 p_data => x_msg_data
5195 );
5196
5197 END validate_auto_sys_id;
5198
5199 PROCEDURE validate_start_end_date (
5200 p_init_msg_list IN VARCHAR2,
5201 p_validation_mode IN VARCHAR2 ,
5202 p_system_id IN NUMBER ,
5203 p_start_date IN DATE ,
5204 p_end_date IN DATE ,
5205 x_return_status OUT NOCOPY VARCHAR2 ,
5206 x_msg_count OUT NOCOPY NUMBER ,
5207 x_msg_data OUT NOCOPY VARCHAR2
5208 )
5209 IS
5210 l_start_date_active DATE;
5211 BEGIN
5212
5213 IF fnd_api.to_boolean( p_init_msg_list )
5214 THEN
5215 fnd_msg_pub.initialize;
5216 END IF;
5217
5218
5219 x_return_status := fnd_api.g_ret_sts_success;
5220
5221 IF p_validation_mode='CREATE' THEN
5222 IF ( (p_start_date IS NOT NULL) AND (p_start_date<>fnd_api.g_miss_date) )
5223 AND ( (p_end_date IS NOT NULL) AND (p_end_date<>fnd_api.g_miss_date) )
5224 THEN
5225 IF (p_start_date > p_end_date)
5226 THEN
5227 fnd_message.set_name('CSI', 'CSI_INVALID_START_DATE');
5228 fnd_message.set_token('START_DATE_ACTIVE',p_start_date);
5229 fnd_msg_pub.add;
5230 x_return_status := fnd_api.g_ret_sts_error;
5231 END IF;
5232 ELSIF ( (p_start_date IS NULL) OR (p_start_date = fnd_api.g_miss_date) )
5233 AND ( (p_end_date IS NOT NULL) AND (p_end_date<>fnd_api.g_miss_date) )
5234 THEN
5235 fnd_message.set_name('CSI', 'CSI_INVALID_END_DATE');
5236 fnd_message.set_token('END_DATE_ACTIVE',p_end_date);
5237 fnd_msg_pub.add;
5238 x_return_status := fnd_api.g_ret_sts_error;
5239 END IF;
5240 END IF;
5241
5242 IF p_validation_mode='UPDATE' THEN
5243 IF ( (p_start_date IS NOT NULL) AND (p_start_date<>fnd_api.g_miss_date) )
5244 AND ( (p_end_date IS NOT NULL) AND (p_end_date<>fnd_api.g_miss_date) )
5245 THEN
5246 IF (p_start_date > p_end_date)
5247 THEN
5248 fnd_message.set_name('CSI', 'CSI_START_DATE_GREATER');
5249 fnd_message.set_token('START_DATE_ACTIVE',p_start_date);
5250 fnd_message.set_token('END_DATE_ACTIVE',p_end_date);
5251 fnd_msg_pub.add;
5252 x_return_status := fnd_api.g_ret_sts_error;
5253 END IF;
5254 ELSIF ( (p_start_date IS NULL) OR (p_start_date = fnd_api.g_miss_date) )
5255 AND ( (p_end_date IS NOT NULL) AND (p_end_date<>fnd_api.g_miss_date) )
5256 THEN
5257 BEGIN
5258 SELECT start_date_active
5259 INTO l_start_date_active
5260 FROM csi_systems_b
5261 WHERE system_id = p_system_id;
5262 IF l_start_date_active > p_end_date
5263 THEN
5264 fnd_message.set_name('CSI', 'CSI_START_DATE_GREATER');
5265 fnd_message.set_token('START_DATE_ACTIVE',l_start_date_active);
5266 fnd_message.set_token('END_DATE_ACTIVE',p_end_date);
5267 fnd_msg_pub.add;
5268 x_return_status := fnd_api.g_ret_sts_error;
5269 END IF;
5270 EXCEPTION
5271 WHEN NO_DATA_FOUND THEN
5272 fnd_message.set_name('CSI', 'CSI_INVALID_END_DATE');
5273 fnd_message.set_token('END_DATE_ACTIVE',p_end_date);
5274 fnd_msg_pub.add;
5275 x_return_status := fnd_api.g_ret_sts_error;
5276 END;
5277 END IF;
5278 END IF;
5279
5280 -- standard call to get message count and if count is 1, get message info.
5281 fnd_msg_pub.count_and_get
5282 ( p_count => x_msg_count,
5283 p_data => x_msg_data
5284 );
5285
5286 END validate_start_end_date;
5287
5288
5289
5290 PROCEDURE validate_name (
5291 p_init_msg_list IN VARCHAR2,
5292 p_validation_mode IN VARCHAR2,
5293 p_name IN VARCHAR2,
5294 x_return_status OUT NOCOPY VARCHAR2,
5295 x_msg_count OUT NOCOPY NUMBER,
5296 x_msg_data OUT NOCOPY VARCHAR2
5297 )
5298 IS
5299 l_dummy VARCHAR2(1);
5300 BEGIN
5301 -- initialize message list if p_init_msg_list is set to true.
5302 IF fnd_api.to_boolean( p_init_msg_list )
5303 THEN
5304 fnd_msg_pub.initialize;
5305 END IF;
5306
5307
5308 -- initialize api return status to success
5309 x_return_status := fnd_api.g_ret_sts_success;
5310
5311 -- validate not null column
5312 IF p_validation_mode='CREATE' THEN
5313 IF ( (p_name IS NULL) OR (p_name=fnd_api.g_miss_char) ) THEN
5314 IF (fnd_profile.value('CSI_AUTO_GEN_SYS_NAME') = 'Y')
5315 THEN
5316 NULL;
5317 ELSE
5318 fnd_message.set_name('CSI', 'CSI_SYS_NAME_NOT_PASSED');
5319 fnd_message.set_token('REQUIRED_PARAM','SYSTEM_NAME');
5320 fnd_msg_pub.add;
5321 x_return_status := fnd_api.g_ret_sts_error;
5322 END IF;
5323 END IF;
5324 END IF;
5325
5326 IF p_validation_mode='UPDATE' THEN
5327 IF ( (p_name IS NULL) OR (p_name=fnd_api.g_miss_char) ) THEN
5328 fnd_message.set_name('CSI', 'CSI_SYS_NAME_NOT_PASSED');
5329 fnd_message.set_token('REQUIRED_PARAM','SYSTEM_NAME');
5330 fnd_msg_pub.add;
5331 x_return_status := fnd_api.g_ret_sts_error;
5332 END IF;
5333 END IF;
5334
5335
5336 -- standard call to get message count and if count is 1, get message info.
5337 fnd_msg_pub.count_and_get
5338 ( p_count => x_msg_count,
5339 p_data => x_msg_data
5340 );
5341
5342 END validate_name;
5343
5344
5345 PROCEDURE validate_object_version_num (
5346 p_init_msg_list IN VARCHAR2,
5347 p_validation_mode IN VARCHAR2,
5348 p_object_version_number IN NUMBER,
5349 x_return_status OUT NOCOPY VARCHAR2,
5350 x_msg_count OUT NOCOPY NUMBER,
5351 x_msg_data OUT NOCOPY VARCHAR2
5352 )
5353 IS
5354 l_dummy VARCHAR2(1);
5355 BEGIN
5356
5357 -- initialize message list if p_init_msg_list is set to true.
5358 IF fnd_api.to_boolean( p_init_msg_list )
5359 THEN
5360 fnd_msg_pub.initialize;
5361 END IF;
5362
5363
5364 -- initialize api return status to success
5365 x_return_status := fnd_api.g_ret_sts_success;
5366
5367 -- validate not null column
5368
5369
5370 IF ( (p_validation_mode = 'UPDATE') OR (p_validation_mode = 'EXPIRE') ) THEN
5371 IF ( (p_object_version_number IS NULL) OR (p_object_version_number = fnd_api.g_miss_num) ) THEN
5372 fnd_message.set_name('CSI', 'CSI_MISSING_OBJ_VER_NUM');
5373 fnd_msg_pub.add;
5374 x_return_status := fnd_api.g_ret_sts_error;
5375 END IF;
5376 END IF;
5377
5378 -- standard call to get message count and if count is 1, get message info.
5379 fnd_msg_pub.count_and_get
5380 ( p_count => x_msg_count,
5381 p_data => x_msg_data
5382 );
5383
5384 END validate_object_version_num;
5385
5386
5387
5388
5389 PROCEDURE validate_systems(
5390 p_init_msg_list IN VARCHAR2,
5391 p_validation_level IN NUMBER,
5392 p_validation_mode IN VARCHAR2,
5393 p_system_rec IN csi_datastructures_pub.system_rec,
5394 x_return_status OUT NOCOPY VARCHAR2,
5395 x_msg_count OUT NOCOPY NUMBER,
5396 x_msg_data OUT NOCOPY VARCHAR2
5397 )
5398 IS
5399 l_api_name CONSTANT VARCHAR2(30) := 'validate_systems';
5400 BEGIN
5401
5402 -- initialize api return status to success
5403 x_return_status := fnd_api.g_ret_sts_success;
5404
5405 -- The following IF statement has been commented out for Bug: 3271806
5406 -- IF (p_validation_level >= fnd_api.g_valid_level_full) THEN
5407
5408 validate_customer_id(
5409 p_init_msg_list => fnd_api.g_false,
5410 p_validation_mode => p_validation_mode,
5411 p_customer_id => p_system_rec.customer_id,
5412 x_return_status => x_return_status,
5413 x_msg_count => x_msg_count,
5414 x_msg_data => x_msg_data);
5415 IF x_return_status <> fnd_api.g_ret_sts_success THEN
5416 RAISE fnd_api.g_exc_error;
5417 END IF;
5418
5419 validate_system_type_code(
5420 p_init_msg_list => fnd_api.g_false,
5421 p_validation_mode => p_validation_mode,
5422 p_system_type_code => p_system_rec.system_type_code,
5423 x_return_status => x_return_status,
5424 x_msg_count => x_msg_count,
5425 x_msg_data => x_msg_data);
5426 IF x_return_status <> fnd_api.g_ret_sts_success THEN
5427 RAISE fnd_api.g_exc_error;
5428 END IF;
5429
5430 validate_parent_system_id(
5431 p_init_msg_list => fnd_api.g_false,
5432 p_validation_mode => p_validation_mode,
5433 p_parent_system_id => p_system_rec.parent_system_id,
5434 x_return_status => x_return_status,
5435 x_msg_count => x_msg_count,
5436 x_msg_data => x_msg_data);
5437 IF x_return_status <> fnd_api.g_ret_sts_success THEN
5438 RAISE fnd_api.g_exc_error;
5439 END IF;
5440
5441 validate_ship_to_contact_id(
5442 p_init_msg_list => fnd_api.g_false,
5443 p_validation_mode => p_validation_mode,
5444 p_ship_to_contact_id => p_system_rec.ship_to_contact_id,
5445 x_return_status => x_return_status,
5446 x_msg_count => x_msg_count,
5447 x_msg_data => x_msg_data);
5448 IF x_return_status <> fnd_api.g_ret_sts_success THEN
5449 RAISE fnd_api.g_exc_error;
5450 END IF;
5451
5452 validate_bill_to_contact_id(
5453 p_init_msg_list => fnd_api.g_false,
5454 p_validation_mode => p_validation_mode,
5455 p_bill_to_contact_id => p_system_rec.bill_to_contact_id,
5456 x_return_status => x_return_status,
5457 x_msg_count => x_msg_count,
5458 x_msg_data => x_msg_data);
5459 IF x_return_status <> fnd_api.g_ret_sts_success THEN
5460 RAISE fnd_api.g_exc_error;
5461 END IF;
5462
5463 validate_technical_contact_id(
5464 p_init_msg_list => fnd_api.g_false,
5465 p_validation_mode => p_validation_mode,
5466 p_technical_contact_id => p_system_rec.technical_contact_id,
5467 x_return_status => x_return_status,
5468 x_msg_count => x_msg_count,
5469 x_msg_data => x_msg_data);
5470 IF x_return_status <> fnd_api.g_ret_sts_success THEN
5471 RAISE fnd_api.g_exc_error;
5472 END IF;
5473
5474 validate_srv_admin_cont_id(
5475 p_init_msg_list => fnd_api.g_false,
5476 p_validation_mode => p_validation_mode,
5477 p_service_admin_contact_id => p_system_rec.service_admin_contact_id,
5478 x_return_status => x_return_status,
5479 x_msg_count => x_msg_count,
5480 x_msg_data => x_msg_data);
5481 IF x_return_status <> fnd_api.g_ret_sts_success THEN
5482 RAISE fnd_api.g_exc_error;
5483 END IF;
5484
5485 validate_ship_to_site_use_id(
5486 p_init_msg_list => fnd_api.g_false,
5487 p_validation_mode => p_validation_mode,
5488 p_ship_to_site_use_id => p_system_rec.ship_to_site_use_id,
5489 x_return_status => x_return_status,
5490 x_msg_count => x_msg_count,
5491 x_msg_data => x_msg_data);
5492 IF x_return_status <> fnd_api.g_ret_sts_success THEN
5493 RAISE fnd_api.g_exc_error;
5494 END IF;
5495
5496 validate_bill_to_site_use_id(
5497 p_init_msg_list => fnd_api.g_false,
5498 p_validation_mode => p_validation_mode,
5499 p_bill_to_site_use_id => p_system_rec.bill_to_site_use_id,
5500 x_return_status => x_return_status,
5501 x_msg_count => x_msg_count,
5502 x_msg_data => x_msg_data);
5503 IF x_return_status <> fnd_api.g_ret_sts_success THEN
5504 RAISE fnd_api.g_exc_error;
5505 END IF;
5506
5507 validate_install_site_use_id(
5508 p_init_msg_list => fnd_api.g_false,
5509 p_validation_mode => p_validation_mode,
5510 p_install_site_use_id => p_system_rec.install_site_use_id,
5511 x_return_status => x_return_status,
5512 x_msg_count => x_msg_count,
5513 x_msg_data => x_msg_data);
5514 IF x_return_status <> fnd_api.g_ret_sts_success THEN
5515 RAISE fnd_api.g_exc_error;
5516 END IF;
5517
5518 validate_name(
5519 p_init_msg_list => fnd_api.g_false,
5520 p_validation_mode => p_validation_mode,
5521 p_name => p_system_rec.name,
5522 x_return_status => x_return_status,
5523 x_msg_count => x_msg_count,
5524 x_msg_data => x_msg_data);
5525 IF x_return_status <> fnd_api.g_ret_sts_success THEN
5526 RAISE fnd_api.g_exc_error;
5527 END IF;
5528
5529 -- END IF;
5530 END validate_systems;
5531 --
5532 PROCEDURE Get_System_Details
5533 (
5534 p_api_version IN NUMBER ,
5535 p_commit IN VARCHAR2,
5536 p_init_msg_list IN VARCHAR2,
5537 p_validation_level IN NUMBER,
5538 p_system_query_rec IN csi_datastructures_pub.system_query_rec,
5539 p_time_stamp IN DATE,
5540 p_active_systems_only IN VARCHAR2,
5541 x_system_header_tbl OUT NOCOPY csi_datastructures_pub.system_header_tbl,
5542 x_return_status OUT NOCOPY VARCHAR2,
5543 x_msg_count OUT NOCOPY NUMBER,
5544 x_msg_data OUT NOCOPY VARCHAR2
5545 )
5546 IS
5547
5548 l_api_name CONSTANT VARCHAR2(30) := 'get_system_details';
5549 l_api_version CONSTANT NUMBER := 1.0;
5550 l_return_status_full VARCHAR2(1);
5551 l_crit_systems_rec csi_datastructures_pub.system_query_rec := p_system_query_rec;
5552 l_systems_where VARCHAR2(2000) := '';
5553 l_cur_get_systems NUMBER;
5554 l_select_cl VARCHAR2(2000) := '';
5555 l_def_systems_rec csi_datastructures_pub.system_rec;
5556 l_ignore NUMBER;
5557 l_return_tot_count VARCHAR2(1) := fnd_api.g_false;
5558 l_returned_rec_count NUMBER := 0;
5559 l_sys_rec csi_datastructures_pub.system_rec;
5560 l_tot_rec_count NUMBER := 0;
5561 l_start_rec_prt NUMBER :=1;
5562 l_rec_requested NUMBER :=1000000;
5563 l_new_rec csi_datastructures_pub.system_rec;
5564 l_flag VARCHAR2(4);
5565 l_active_systems_only VARCHAR2(1):= p_active_systems_only;
5566 l_debug_level NUMBER;
5567 l_systems_tbl csi_datastructures_pub.systems_tbl;
5568 l_sys_hdr_count NUMBER := 0;
5569 l_last_purge_date DATE;
5570 --
5571 Process_next EXCEPTION;
5572 BEGIN
5573
5574 -- standard start of api savepoint
5575 SAVEPOINT get_systems_details;
5576
5577 -- standard call to check for call compatibility.
5578 IF NOT fnd_api.compatible_api_call ( l_api_version,
5579 p_api_version,
5580 l_api_name,
5581 g_pkg_name)
5582 THEN
5583 RAISE fnd_api.g_exc_unexpected_error;
5584 END IF;
5585
5586
5587 -- initialize message list if p_init_msg_list is set to true.
5588 IF fnd_api.to_boolean( p_init_msg_list )
5589 THEN
5590 fnd_msg_pub.initialize;
5591 END IF;
5592
5593
5594
5595
5596 -- initialize api return status to success
5597 x_return_status := fnd_api.g_ret_sts_success;
5598
5599 l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
5600 IF (l_debug_level > 0) THEN
5601 csi_gen_utility_pvt.put_line( 'get_system_details');
5602 END IF;
5603
5604 IF (l_debug_level > 1) THEN
5605 csi_gen_utility_pvt.put_line(
5606 p_api_version ||'-'||
5607 p_Commit ||'-'||
5608 p_Init_Msg_list ||'-'||
5609 p_Validation_level ||'-'||
5610 p_time_stamp ||'-'||
5611 p_active_systems_only
5612 );
5613 csi_gen_utility_pvt.dump_sys_query_rec(p_system_query_rec);
5614 END IF;
5615
5616 IF
5617 ( ((p_system_query_rec.system_id IS NULL) OR (p_system_query_rec.system_id = fnd_api.g_miss_num))
5618 AND ((p_system_query_rec.system_type_code IS NULL) OR (p_system_query_rec.system_type_code = fnd_api.g_miss_char))
5619 AND ((p_system_query_rec.system_number IS NULL) OR (p_system_query_rec.system_number = fnd_api.g_miss_char))
5620 )
5621 THEN
5622 fnd_message.set_name('CSI', 'CSI_INVALID_PARAMETERS');
5623 fnd_msg_pub.add;
5624 x_return_status := fnd_api.g_ret_sts_error;
5625 RAISE fnd_api.g_exc_error;
5626 END IF;
5627
5628 gen_select(l_crit_systems_rec,l_select_cl);
5629
5630
5631 gen_systems_where(l_crit_systems_rec,l_active_systems_only, l_systems_where);
5632 IF dbms_sql.is_open(l_cur_get_systems) THEN
5633 dbms_sql.close_CURSOR(l_cur_get_systems);
5634 END IF;
5635
5636 l_cur_get_systems := dbms_sql.open_CURSOR;
5637
5638 dbms_sql.parse(l_cur_get_systems, l_select_cl||l_systems_where , dbms_sql.native);
5639
5640 bind(l_crit_systems_rec, l_cur_get_systems);
5641
5642 define_columns(l_def_systems_rec, l_cur_get_systems);
5643
5644 l_ignore := dbms_sql.execute(l_cur_get_systems);
5645 --
5646 -- Get the last purge date from csi_item_instances table
5647 --
5648 BEGIN
5649 SELECT last_purge_date
5650 INTO l_last_purge_date
5651 FROM CSI_ITEM_INSTANCES
5652 WHERE rownum < 2;
5653 EXCEPTION
5654 WHEN no_data_found THEN
5655 NULL;
5656 WHEN others THEN
5657 NULL;
5658 END;
5659 --
5660 LOOP
5661 IF((dbms_sql.fetch_rows(l_cur_get_systems)>0) AND ( (l_returned_rec_count<l_rec_requested) OR (l_rec_requested=fnd_api.g_miss_num)))
5662 THEN
5663
5664 get_column_values(l_cur_get_systems, l_sys_rec);
5665
5666 l_tot_rec_count := l_tot_rec_count + 1 ;
5667
5668 IF (l_returned_rec_count < l_rec_requested)
5669 THEN
5670 l_returned_rec_count := l_returned_rec_count + 1;
5671 IF ( (p_time_stamp IS NOT NULL) AND (p_time_stamp <> FND_API.G_MISS_DATE) )
5672 THEN
5673 IF ( (l_last_purge_date IS NOT NULL) AND (p_time_stamp <= l_last_purge_date) )
5674 THEN
5675 csi_gen_utility_pvt.put_line('Warning! History for this entity has already been purged for the datetime stamp passed. ' ||
5676 'Please provide a valid datetime stamp.');
5677 FND_MESSAGE.Set_Name('CSI', 'CSI_API_HIST_AFTER_PURGE_REQ');
5678 FND_MSG_PUB.ADD;
5679 ELSE
5680 get_history( p_sys_rec => l_sys_rec
5681 ,p_new_rec => l_new_rec
5682 ,p_flag => l_flag
5683 ,p_time_stamp => p_time_stamp);
5684 IF l_flag='ADD' THEN
5685 l_systems_tbl(l_returned_rec_count) :=l_new_rec;--l_sys_rec;
5686 END IF;
5687 END IF;
5688 ELSE
5689 l_systems_tbl(l_returned_rec_count) :=l_sys_rec;
5690 END IF;
5691 END IF;
5692 ELSE
5693 EXIT;
5694 END IF;
5695 END LOOP;
5696 --
5697 -- END of api body
5698 --
5699 dbms_sql.close_cursor(l_cur_get_systems);
5700 --
5701 IF l_systems_tbl.count > 0 THEN
5702 FOR sys_row IN l_systems_tbl.FIRST .. l_systems_tbl.LAST
5703 LOOP
5704 BEGIN
5705 IF l_systems_tbl.EXISTS(sys_row) THEN
5706 -- Construct Systems Header Tbl using Systems Tbl
5707 -- Ignore the Expired Systems
5708 IF l_active_systems_only = 'T' THEN
5709 IF l_systems_tbl(sys_row).end_date_active IS NOT NULL AND
5710 l_systems_tbl(sys_row).end_date_active < SYSDATE THEN
5711 RAISE Process_next;
5712 END IF;
5713 END IF;
5714 l_sys_hdr_count := l_sys_hdr_count + 1;
5715 x_system_header_tbl(l_sys_hdr_count).system_id := l_systems_tbl(sys_row).system_id;
5716 x_system_header_tbl(l_sys_hdr_count).operating_unit_id := l_systems_tbl(sys_row).operating_unit_id;
5717 x_system_header_tbl(l_sys_hdr_count).customer_id := l_systems_tbl(sys_row).customer_id;
5718 x_system_header_tbl(l_sys_hdr_count).system_type_code := l_systems_tbl(sys_row).system_type_code;
5719 x_system_header_tbl(l_sys_hdr_count).system_number := l_systems_tbl(sys_row).system_number;
5720 x_system_header_tbl(l_sys_hdr_count).parent_system_id := l_systems_tbl(sys_row).parent_system_id;
5721 x_system_header_tbl(l_sys_hdr_count).technical_contact_id := l_systems_tbl(sys_row).technical_contact_id;
5722 x_system_header_tbl(l_sys_hdr_count).service_admin_contact_id := l_systems_tbl(sys_row).service_admin_contact_id;
5723 x_system_header_tbl(l_sys_hdr_count).install_site_use_id := l_systems_tbl(sys_row).install_site_use_id;
5724 x_system_header_tbl(l_sys_hdr_count).bill_to_contact_id := l_systems_tbl(sys_row).bill_to_contact_id;
5725 x_system_header_tbl(l_sys_hdr_count).bill_to_site_use_id := l_systems_tbl(sys_row).bill_to_site_use_id;
5726 x_system_header_tbl(l_sys_hdr_count).ship_to_site_use_id := l_systems_tbl(sys_row).ship_to_site_use_id;
5727 x_system_header_tbl(l_sys_hdr_count).ship_to_contact_id := l_systems_tbl(sys_row).ship_to_contact_id;
5728 x_system_header_tbl(l_sys_hdr_count).coterminate_day_month := l_systems_tbl(sys_row).coterminate_day_month;
5729 x_system_header_tbl(l_sys_hdr_count).start_date_active := l_systems_tbl(sys_row).start_date_active;
5730 x_system_header_tbl(l_sys_hdr_count).end_date_active := l_systems_tbl(sys_row).end_date_active;
5731 x_system_header_tbl(l_sys_hdr_count).autocreated_from_system_id := l_systems_tbl(sys_row).autocreated_from_system_id;
5732 x_system_header_tbl(l_sys_hdr_count).attribute1 := l_systems_tbl(sys_row).attribute1;
5733 x_system_header_tbl(l_sys_hdr_count).attribute2 := l_systems_tbl(sys_row).attribute2;
5734 x_system_header_tbl(l_sys_hdr_count).attribute3 := l_systems_tbl(sys_row).attribute3;
5735 x_system_header_tbl(l_sys_hdr_count).attribute4 := l_systems_tbl(sys_row).attribute4;
5736 x_system_header_tbl(l_sys_hdr_count).attribute5 := l_systems_tbl(sys_row).attribute5;
5737 x_system_header_tbl(l_sys_hdr_count).attribute6 := l_systems_tbl(sys_row).attribute6;
5738 x_system_header_tbl(l_sys_hdr_count).attribute7 := l_systems_tbl(sys_row).attribute7;
5739 x_system_header_tbl(l_sys_hdr_count).attribute8 := l_systems_tbl(sys_row).attribute8;
5740 x_system_header_tbl(l_sys_hdr_count).attribute9 := l_systems_tbl(sys_row).attribute9;
5741 x_system_header_tbl(l_sys_hdr_count).attribute10 := l_systems_tbl(sys_row).attribute10;
5742 x_system_header_tbl(l_sys_hdr_count).attribute11 := l_systems_tbl(sys_row).attribute11;
5743 x_system_header_tbl(l_sys_hdr_count).attribute12 := l_systems_tbl(sys_row).attribute12;
5744 x_system_header_tbl(l_sys_hdr_count).attribute13 := l_systems_tbl(sys_row).attribute13;
5745 x_system_header_tbl(l_sys_hdr_count).attribute14 := l_systems_tbl(sys_row).attribute14;
5746 x_system_header_tbl(l_sys_hdr_count).attribute15 := l_systems_tbl(sys_row).attribute15;
5747 x_system_header_tbl(l_sys_hdr_count).context := l_systems_tbl(sys_row).context;
5748 x_system_header_tbl(l_sys_hdr_count).config_system_type := l_systems_tbl(sys_row).config_system_type;
5749 x_system_header_tbl(l_sys_hdr_count).object_version_number := l_systems_tbl(sys_row).object_version_number;
5750 END IF;
5751 EXCEPTION
5752 WHEN Process_next THEN
5753 NULL;
5754 END;
5755 END LOOP;
5756 --
5757 csi_systems_pvt.Resolve_ID_Columns(p_system_header_tbl => x_system_header_tbl);
5758 END IF;
5759
5760 -- standard call to get message count and if count is 1, get message info.
5761 fnd_msg_pub.count_and_get
5762 ( p_count => x_msg_count,
5763 p_data => x_msg_data
5764 );
5765 EXCEPTION
5766 WHEN fnd_api.g_exc_error THEN
5767 ROLLBACK TO get_system_details;
5768 x_return_status := fnd_api.g_ret_sts_error ;
5769 fnd_msg_pub.count_and_get
5770 (p_count => x_msg_count ,
5771 p_data => x_msg_data
5772 );
5773
5774 WHEN fnd_api.g_exc_unexpected_error THEN
5775 ROLLBACK TO get_system_details;
5776 x_return_status := fnd_api.g_ret_sts_unexp_error ;
5777 fnd_msg_pub.count_and_get
5778 (p_count => x_msg_count ,
5779 p_data => x_msg_data
5780 );
5781
5782 WHEN OTHERS THEN
5783 ROLLBACK TO get_system_details;
5784 x_return_status := fnd_api.g_ret_sts_unexp_error ;
5785 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
5786 fnd_msg_pub.add_exc_msg(g_pkg_name ,l_api_name);
5787 END IF;
5788 fnd_msg_pub.count_and_get
5789 (p_count => x_msg_count ,
5790 p_data => x_msg_data
5791 );
5792
5793 END get_system_details;
5794 --
5795 PROCEDURE Resolve_ID_Columns
5796 (p_system_header_tbl IN OUT NOCOPY csi_datastructures_pub.system_header_tbl)
5797 IS
5798 --
5799 l_sys_type VARCHAR2(30) := 'CSI_SYSTEM_TYPE';
5800 BEGIN
5801 IF p_system_header_tbl.count > 0 THEN
5802 FOR sys_row in p_system_header_tbl.FIRST .. p_system_header_tbl.LAST
5803 LOOP
5804 IF p_system_header_tbl.EXISTS(sys_row) THEN
5805 IF ( (p_system_header_tbl(sys_row).system_id IS NOT NULL) AND
5806 (p_system_header_tbl(sys_row).system_id <> FND_API.G_MISS_NUM) ) THEN
5807 BEGIN
5808 SELECT name
5809 ,description
5810 INTO p_system_header_tbl(sys_row).name
5811 ,p_system_header_tbl(sys_row).description
5812 FROM CSI_SYSTEMS_VL
5813 WHERE system_id = p_system_header_tbl(sys_row).system_id;
5814 EXCEPTION
5815 WHEN OTHERS THEN
5816 NULL;
5817 END;
5818 END IF;
5819 --
5820 IF ( (p_system_header_tbl(sys_row).customer_id IS NOT NULL) AND
5821 (p_system_header_tbl(sys_row).customer_id <> FND_API.G_MISS_NUM) ) THEN
5822 BEGIN
5823 SELECT hza.account_number
5824 ,hza.account_name
5825 ,hza.party_id
5826 ,hzp.party_number
5827 ,hzp.party_name
5828 INTO p_system_header_tbl(sys_row).customer_number
5829 ,p_system_header_tbl(sys_row).customer_name
5830 ,p_system_header_tbl(sys_row).party_id
5831 ,p_system_header_tbl(sys_row).customer_party_number
5832 ,p_system_header_tbl(sys_row).party_name
5833 FROM HZ_CUST_ACCOUNTS hza
5834 ,HZ_PARTIES hzp
5835 WHERE hza.cust_account_id = p_system_header_tbl(sys_row).customer_id
5836 AND hza.party_id = hzp.party_id;
5837 EXCEPTION
5838 WHEN OTHERS THEN
5839 NULL;
5840 END;
5841 END IF;
5842 --
5843 IF ( (p_system_header_tbl(sys_row).ship_to_site_use_id IS NOT NULL) AND
5844 (p_system_header_tbl(sys_row).ship_to_site_use_id <> FND_API.G_MISS_NUM) ) THEN
5845 BEGIN
5846 SELECT hzp.party_id
5847 ,hzp.party_number
5848 ,hzp.party_name
5849 ,hzp.party_type
5850 ,hls.address1
5851 ,hls.address2
5852 ,hls.address3
5853 ,hls.address4
5854 ,hls.city
5855 ,hls.state
5856 ,hls.postal_code
5857 ,hls.country
5858 ,hls.description
5859 ,hls.location_id
5860 ,hps.party_site_number
5861 INTO p_system_header_tbl(sys_row).ship_to_customer_id
5862 ,p_system_header_tbl(sys_row).ship_to_customer_number
5863 ,p_system_header_tbl(sys_row).ship_to_customer
5864 ,p_system_header_tbl(sys_row).ship_party_type
5865 ,p_system_header_tbl(sys_row).ship_to_address1
5866 ,p_system_header_tbl(sys_row).ship_to_address2
5867 ,p_system_header_tbl(sys_row).ship_to_address3
5868 ,p_system_header_tbl(sys_row).ship_to_address4
5869 ,p_system_header_tbl(sys_row).ship_to_location
5870 ,p_system_header_tbl(sys_row).ship_state
5871 ,p_system_header_tbl(sys_row).ship_postal_code
5872 ,p_system_header_tbl(sys_row).ship_country
5873 ,p_system_header_tbl(sys_row).ship_description
5874 ,p_system_header_tbl(sys_row).ship_to_location_id
5875 ,p_system_header_tbl(sys_row).ship_to_site_number
5876 FROM HZ_CUST_SITE_USES_ALL hzsu
5877 ,HZ_CUST_ACCT_SITES_ALL hzca
5878 ,HZ_PARTY_SITES hps
5879 ,HZ_PARTIES hzp
5880 ,HZ_LOCATIONS hls
5881 WHERE hzsu.site_use_id = p_system_header_tbl(sys_row).ship_to_site_use_id
5882 AND hzca.cust_acct_site_id = hzsu.cust_acct_site_id
5883 AND hzca.party_site_id = hps.party_site_id
5884 AND hps.party_id = hzp.party_id
5885 AND hps.location_id = hls.location_id;
5886 EXCEPTION
5887 WHEN OTHERS THEN
5888 NULL;
5889 END;
5890 END IF;
5891 --
5892 IF ( (p_system_header_tbl(sys_row).bill_to_site_use_id IS NOT NULL) AND
5893 (p_system_header_tbl(sys_row).bill_to_site_use_id <> FND_API.G_MISS_NUM) ) THEN
5894 BEGIN
5895 SELECT hzp.party_id
5896 ,hzp.party_number
5897 ,hzp.party_name
5898 ,hzp.party_type
5899 ,hls.address1
5900 ,hls.address2
5901 ,hls.address3
5902 ,hls.address4
5903 ,hls.city
5904 ,hls.state
5905 ,hls.postal_code
5906 ,hls.country
5907 ,hls.description
5908 ,hls.location_id
5909 ,hps.party_site_number
5910 INTO p_system_header_tbl(sys_row).bill_to_customer_id
5911 ,p_system_header_tbl(sys_row).bill_to_customer_number
5912 ,p_system_header_tbl(sys_row).bill_to_customer
5913 ,p_system_header_tbl(sys_row).bill_party_type
5914 ,p_system_header_tbl(sys_row).bill_to_address1
5915 ,p_system_header_tbl(sys_row).bill_to_address2
5916 ,p_system_header_tbl(sys_row).bill_to_address3
5917 ,p_system_header_tbl(sys_row).bill_to_address4
5918 ,p_system_header_tbl(sys_row).bill_to_location
5919 ,p_system_header_tbl(sys_row).bill_state
5920 ,p_system_header_tbl(sys_row).bill_postal_code
5921 ,p_system_header_tbl(sys_row).bill_country
5922 ,p_system_header_tbl(sys_row).bill_description
5923 ,p_system_header_tbl(sys_row).bill_to_location_id
5924 ,p_system_header_tbl(sys_row).bill_to_site_number
5925 FROM HZ_CUST_SITE_USES_ALL hzsu
5926 ,HZ_CUST_ACCT_SITES_ALL hzca
5927 ,HZ_PARTY_SITES hps
5928 ,HZ_PARTIES hzp
5929 ,HZ_LOCATIONS hls
5930 WHERE hzsu.site_use_id = p_system_header_tbl(sys_row).bill_to_site_use_id
5931 AND hzca.cust_acct_site_id = hzsu.cust_acct_site_id
5932 AND hzca.party_site_id = hps.party_site_id
5933 AND hps.party_id = hzp.party_id
5934 AND hps.location_id = hls.location_id;
5935 EXCEPTION
5936 WHEN OTHERS THEN
5937 NULL;
5938 END;
5939 END IF;
5940 --
5941 IF ( (p_system_header_tbl(sys_row).install_site_use_id IS NOT NULL) AND
5942 (p_system_header_tbl(sys_row).install_site_use_id <> FND_API.G_MISS_NUM) ) THEN
5943 BEGIN
5944 SELECT hzp.party_id
5945 ,hzp.party_number
5946 ,hzp.party_name
5947 ,hzp.party_type
5948 ,hls.address1
5949 ,hls.address2
5950 ,hls.address3
5951 ,hls.address4
5952 ,hls.city
5953 ,hls.state
5954 ,hls.postal_code
5955 ,hls.country
5956 ,hls.description
5957 ,hls.location_id
5958 ,hps.party_site_number
5959 INTO p_system_header_tbl(sys_row).install_customer_id
5960 ,p_system_header_tbl(sys_row).install_customer_number
5961 ,p_system_header_tbl(sys_row).install_customer
5962 ,p_system_header_tbl(sys_row).install_party_type
5963 ,p_system_header_tbl(sys_row).install_address1
5964 ,p_system_header_tbl(sys_row).install_address2
5965 ,p_system_header_tbl(sys_row).install_address3
5966 ,p_system_header_tbl(sys_row).install_address4
5967 ,p_system_header_tbl(sys_row).install_location
5968 ,p_system_header_tbl(sys_row).install_state
5969 ,p_system_header_tbl(sys_row).install_postal_code
5970 ,p_system_header_tbl(sys_row).install_country
5971 ,p_system_header_tbl(sys_row).install_description
5972 ,p_system_header_tbl(sys_row).install_location_id
5973 ,p_system_header_tbl(sys_row).install_site_number
5974 FROM HZ_PARTY_SITES hps
5975 ,HZ_PARTIES hzp
5976 ,HZ_LOCATIONS hls
5977 WHERE hps.party_site_id = p_system_header_tbl(sys_row).install_site_use_id
5978 AND hps.party_id = hzp.party_id
5979 AND hps.location_id = hls.location_id;
5980 EXCEPTION
5981 WHEN OTHERS THEN
5982 NULL;
5983 END;
5984 END IF;
5985 --
5986 IF ( (p_system_header_tbl(sys_row).technical_contact_id IS NOT NULL) AND
5987 (p_system_header_tbl(sys_row).technical_contact_id <> FND_API.G_MISS_NUM) ) THEN
5988 BEGIN
5989 SELECT hzp.party_number
5990 ,hzp.party_name
5991 INTO p_system_header_tbl(sys_row).technical_contact_number
5992 ,p_system_header_tbl(sys_row).technical_contact
5993 FROM HZ_PARTIES hzp
5994 WHERE hzp.party_id = p_system_header_tbl(sys_row).technical_contact_id;
5995 EXCEPTION
5996 WHEN OTHERS THEN
5997 NULL;
5998 END;
5999 END IF;
6000 --
6001 IF ( (p_system_header_tbl(sys_row).service_admin_contact_id IS NOT NULL) AND
6002 (p_system_header_tbl(sys_row).service_admin_contact_id <> FND_API.G_MISS_NUM) ) THEN
6003 BEGIN
6004 SELECT hzp.party_number
6005 ,hzp.party_name
6006 INTO p_system_header_tbl(sys_row).service_admin_contact_number
6007 ,p_system_header_tbl(sys_row).service_admin_contact
6008 FROM HZ_PARTIES hzp
6009 WHERE hzp.party_id = p_system_header_tbl(sys_row).service_admin_contact_id;
6010 EXCEPTION
6011 WHEN OTHERS THEN
6012 NULL;
6013 END;
6014 END IF;
6015 --
6016 IF ( (p_system_header_tbl(sys_row).bill_to_contact_id IS NOT NULL) AND
6017 (p_system_header_tbl(sys_row).bill_to_contact_id <> FND_API.G_MISS_NUM) ) THEN
6018 BEGIN
6019 SELECT hzp.party_number
6020 ,hzp.party_name
6021 INTO p_system_header_tbl(sys_row).bill_to_contact_number
6022 ,p_system_header_tbl(sys_row).bill_to_contact
6023 FROM HZ_PARTIES hzp
6024 WHERE hzp.party_id = p_system_header_tbl(sys_row).bill_to_contact_id;
6025 EXCEPTION
6026 WHEN OTHERS THEN
6027 NULL;
6028 END;
6029 END IF;
6030 --
6031 IF ( (p_system_header_tbl(sys_row).ship_to_contact_id IS NOT NULL) AND
6032 (p_system_header_tbl(sys_row).ship_to_contact_id <> FND_API.G_MISS_NUM) ) THEN
6033 BEGIN
6034 SELECT hzp.party_number
6035 ,hzp.party_name
6036 INTO p_system_header_tbl(sys_row).ship_to_contact_number
6037 ,p_system_header_tbl(sys_row).ship_to_contact
6038 FROM HZ_PARTIES hzp
6039 WHERE hzp.party_id = p_system_header_tbl(sys_row).ship_to_contact_id;
6040 EXCEPTION
6041 WHEN OTHERS THEN
6042 NULL;
6043 END;
6044 END IF;
6045 --
6046 IF ( (p_system_header_tbl(sys_row).operating_unit_id IS NOT NULL) AND
6047 (p_system_header_tbl(sys_row).operating_unit_id <> FND_API.G_MISS_NUM) ) THEN
6048 BEGIN
6049 SELECT name
6050 INTO p_system_header_tbl(sys_row).operating_unit_name
6051 FROM HR_OPERATING_UNITS
6052 WHERE organization_id = p_system_header_tbl(sys_row).operating_unit_id;
6053 EXCEPTION
6054 WHEN OTHERS THEN
6055 NULL;
6056 END;
6057 END IF;
6058 --
6059 IF ( (p_system_header_tbl(sys_row).parent_system_id IS NOT NULL) AND
6060 (p_system_header_tbl(sys_row).parent_system_id <> FND_API.G_MISS_NUM) ) THEN
6061 BEGIN
6062 SELECT name
6063 ,description
6064 INTO p_system_header_tbl(sys_row).parent_name
6065 ,p_system_header_tbl(sys_row).parent_description
6066 FROM CSI_SYSTEMS_VL
6067 WHERE system_id = p_system_header_tbl(sys_row).parent_system_id;
6068 EXCEPTION
6069 WHEN OTHERS THEN
6070 NULL;
6071 END;
6072 END IF;
6073 --
6074 IF ( (p_system_header_tbl(sys_row).system_type_code IS NOT NULL) AND
6075 (p_system_header_tbl(sys_row).system_type_code <> FND_API.G_MISS_CHAR) ) THEN
6076 BEGIN
6077 SELECT meaning
6078 INTO p_system_header_tbl(sys_row).system_type
6079 FROM CSI_LOOKUPS
6080 WHERE lookup_type = l_sys_type
6081 AND lookup_code = p_system_header_tbl(sys_row).system_type_code;
6082 EXCEPTION
6083 WHEN OTHERS THEN
6084 NULL;
6085 END;
6086 END IF;
6087 --
6088 END IF; -- sys_row EXISTS check
6089 END LOOP;
6090 END IF;
6091 END Resolve_ID_Columns;
6092 --
6093 PROCEDURE Get_System_History
6094 ( p_api_version IN NUMBER
6095 ,p_commit IN VARCHAR2
6096 ,p_init_msg_list IN VARCHAR2
6097 ,p_validation_level IN NUMBER
6098 ,p_transaction_id IN NUMBER
6099 ,p_system_id IN NUMBER
6100 ,x_system_history_tbl OUT NOCOPY csi_datastructures_pub.systems_history_tbl
6101 ,x_return_status OUT NOCOPY VARCHAR2
6102 ,x_msg_count OUT NOCOPY NUMBER
6103 ,x_msg_data OUT NOCOPY VARCHAR2
6104 ) IS
6105 --
6106 CURSOR txn_hist_csr(p_txn_id IN NUMBER
6107 ,p_sys_id IN NUMBER) IS
6108 SELECT *
6109 FROM CSI_SYSTEMS_H
6110 WHERE transaction_id = p_txn_id
6111 AND system_id = p_sys_id;
6112 --
6113 l_old_sys_header_rec csi_datastructures_pub.system_header_rec;
6114 l_new_sys_header_rec csi_datastructures_pub.system_header_rec;
6115 l_old_sys_header_tbl csi_datastructures_pub.system_header_tbl;
6116 l_new_sys_header_tbl csi_datastructures_pub.system_header_tbl;
6117 l_sys_history_rec csi_datastructures_pub.system_history_rec;
6118 l_temp_sys_hist_rec csi_datastructures_pub.system_history_rec;
6119 l_temp_sys_header_rec csi_datastructures_pub.system_header_rec;
6120 l_api_name CONSTANT VARCHAR2(30) := 'get_system_history';
6121 l_api_version CONSTANT NUMBER := 1.0;
6122 l_sys_count NUMBER := 0;
6123 BEGIN
6124 IF fnd_api.to_boolean(p_commit) THEN
6125 SAVEPOINT get_system_history;
6126 END IF;
6127
6128 -- Standard call to check for call compatibility.
6129 IF NOT FND_API.Compatible_API_Call (l_api_version ,
6130 p_api_version ,
6131 l_api_name ,
6132 G_PKG_NAME )
6133 THEN
6134 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6135 END IF;
6136
6137 -- Initialize message list if p_init_msg_list is set to TRUE.
6138 IF FND_API.to_Boolean( p_init_msg_list ) THEN
6139 FND_MSG_PUB.initialize;
6140 END IF;
6141
6142 -- Initialize API return status to success
6143 x_return_status := FND_API.G_RET_STS_SUCCESS;
6144
6145 /***** srramakr commented for bug # 3304439
6146 -- Check for the profile option and enable trace
6147 IF (fnd_profile.value('CSI_ENABLE_SQL_TRACE') = 'Y') THEN
6148 dbms_session.set_sql_trace(TRUE);
6149 END IF;
6150
6151 -- End enable trace
6152 ****/
6153
6154 -- Start API body
6155 --
6156 FOR l_hist_csr IN txn_hist_csr(p_transaction_id,p_system_id)
6157 LOOP
6158 l_sys_history_rec := l_temp_sys_hist_rec;
6159 l_old_sys_header_rec := l_temp_sys_header_rec;
6160 l_new_sys_header_rec := l_temp_sys_header_rec;
6161 --
6162 IF NVL(l_hist_csr.old_customer_id,fnd_api.g_miss_num) =
6163 NVL(l_hist_csr.new_customer_id,fnd_api.g_miss_num) THEN
6164 l_old_sys_header_rec.customer_id := NULL;
6165 l_new_sys_header_rec.customer_id := NULL;
6166 ELSE
6167 l_old_sys_header_rec.customer_id := l_hist_csr.old_customer_id;
6168 l_new_sys_header_rec.customer_id := l_hist_csr.new_customer_id;
6169 END IF;
6170 --
6171 IF NVL(l_hist_csr.old_system_type_code,fnd_api.g_miss_char) =
6172 NVL(l_hist_csr.new_system_type_code,fnd_api.g_miss_char) THEN
6173 l_old_sys_header_rec.system_type_code := NULL;
6174 l_new_sys_header_rec.system_type_code := NULL;
6175 ELSE
6176 l_old_sys_header_rec.system_type_code := l_hist_csr.old_system_type_code;
6177 l_new_sys_header_rec.system_type_code := l_hist_csr.new_system_type_code;
6178 END IF;
6179 --
6180 IF NVL(l_hist_csr.old_system_number,fnd_api.g_miss_char) =
6181 NVL(l_hist_csr.new_system_number,fnd_api.g_miss_char) THEN
6182 l_old_sys_header_rec.system_number := NULL;
6183 l_new_sys_header_rec.system_number := NULL;
6184 ELSE
6185 l_old_sys_header_rec.system_number := l_hist_csr.old_system_number;
6186 l_new_sys_header_rec.system_number := l_hist_csr.new_system_number;
6187 END IF;
6188 --
6189 IF NVL(l_hist_csr.old_parent_system_id,fnd_api.g_miss_num) =
6190 NVL(l_hist_csr.new_parent_system_id,fnd_api.g_miss_num) THEN
6191 l_old_sys_header_rec.parent_system_id := NULL;
6192 l_new_sys_header_rec.parent_system_id := NULL;
6193 ELSE
6194 l_old_sys_header_rec.parent_system_id := l_hist_csr.old_parent_system_id;
6195 l_new_sys_header_rec.parent_system_id := l_hist_csr.new_parent_system_id;
6196 END IF;
6197 --
6198 IF NVL(l_hist_csr.old_ship_to_contact_id,fnd_api.g_miss_num) =
6199 NVL(l_hist_csr.new_ship_to_contact_id,fnd_api.g_miss_num) THEN
6200 l_old_sys_header_rec.ship_to_contact_id := NULL;
6201 l_new_sys_header_rec.ship_to_contact_id := NULL;
6202 ELSE
6203 l_old_sys_header_rec.ship_to_contact_id := l_hist_csr.old_ship_to_contact_id;
6204 l_new_sys_header_rec.ship_to_contact_id := l_hist_csr.new_ship_to_contact_id;
6205 END IF;
6206 --
6207 IF NVL(l_hist_csr.old_bill_to_contact_id,fnd_api.g_miss_num) =
6208 NVL(l_hist_csr.new_bill_to_contact_id,fnd_api.g_miss_num) THEN
6209 l_old_sys_header_rec.bill_to_contact_id := NULL;
6210 l_new_sys_header_rec.bill_to_contact_id := NULL;
6211 ELSE
6212 l_old_sys_header_rec.bill_to_contact_id := l_hist_csr.old_bill_to_contact_id;
6213 l_new_sys_header_rec.bill_to_contact_id := l_hist_csr.new_bill_to_contact_id;
6214 END IF;
6215 --
6216 IF NVL(l_hist_csr.old_technical_contact_id,fnd_api.g_miss_num) =
6217 NVL(l_hist_csr.new_technical_contact_id,fnd_api.g_miss_num) THEN
6218 l_old_sys_header_rec.technical_contact_id := NULL;
6219 l_new_sys_header_rec.technical_contact_id := NULL;
6220 ELSE
6221 l_old_sys_header_rec.technical_contact_id := l_hist_csr.old_technical_contact_id;
6222 l_new_sys_header_rec.technical_contact_id := l_hist_csr.new_technical_contact_id;
6223 END IF;
6224 --
6225 IF NVL(l_hist_csr.old_service_admin_contact_id,fnd_api.g_miss_num) =
6226 NVL(l_hist_csr.new_service_admin_contact_id,fnd_api.g_miss_num) THEN
6227 l_old_sys_header_rec.service_admin_contact_id := NULL;
6228 l_new_sys_header_rec.service_admin_contact_id := NULL;
6229 ELSE
6230 l_old_sys_header_rec.service_admin_contact_id := l_hist_csr.old_service_admin_contact_id;
6231 l_new_sys_header_rec.service_admin_contact_id := l_hist_csr.new_service_admin_contact_id;
6232 END IF;
6233 --
6234 IF NVL(l_hist_csr.old_ship_to_site_use_id,fnd_api.g_miss_num) =
6235 NVL(l_hist_csr.new_ship_to_site_use_id,fnd_api.g_miss_num) THEN
6236 l_old_sys_header_rec.ship_to_site_use_id := NULL;
6237 l_new_sys_header_rec.ship_to_site_use_id := NULL;
6238 ELSE
6239 l_old_sys_header_rec.ship_to_site_use_id := l_hist_csr.old_ship_to_site_use_id;
6240 l_new_sys_header_rec.ship_to_site_use_id := l_hist_csr.new_ship_to_site_use_id;
6241 END IF;
6242 --
6243 IF NVL(l_hist_csr.old_bill_to_site_use_id,fnd_api.g_miss_num) =
6244 NVL(l_hist_csr.new_bill_to_site_use_id,fnd_api.g_miss_num) THEN
6245 l_old_sys_header_rec.bill_to_site_use_id := NULL;
6246 l_new_sys_header_rec.bill_to_site_use_id := NULL;
6247 ELSE
6248 l_old_sys_header_rec.bill_to_site_use_id := l_hist_csr.old_bill_to_site_use_id;
6249 l_new_sys_header_rec.bill_to_site_use_id := l_hist_csr.new_bill_to_site_use_id;
6250 END IF;
6251 --
6252 IF NVL(l_hist_csr.old_install_site_use_id,fnd_api.g_miss_num) =
6253 NVL(l_hist_csr.new_install_site_use_id,fnd_api.g_miss_num) THEN
6254 l_old_sys_header_rec.install_site_use_id := NULL;
6255 l_new_sys_header_rec.install_site_use_id := NULL;
6256 ELSE
6257 l_old_sys_header_rec.install_site_use_id := l_hist_csr.old_install_site_use_id;
6258 l_new_sys_header_rec.install_site_use_id := l_hist_csr.new_install_site_use_id;
6259 END IF;
6260 --
6261 IF NVL(l_hist_csr.old_coterminate_day_month,fnd_api.g_miss_char) =
6262 NVL(l_hist_csr.new_coterminate_day_month,fnd_api.g_miss_char) THEN
6263 l_old_sys_header_rec.coterminate_day_month := NULL;
6264 l_new_sys_header_rec.coterminate_day_month := NULL;
6265 ELSE
6266 l_old_sys_header_rec.coterminate_day_month := l_hist_csr.old_coterminate_day_month;
6267 l_new_sys_header_rec.coterminate_day_month := l_hist_csr.new_coterminate_day_month;
6268 END IF;
6269 --
6270 IF NVL(l_hist_csr.old_start_date_active,fnd_api.g_miss_date) =
6271 NVL(l_hist_csr.new_start_date_active,fnd_api.g_miss_date) THEN
6272 l_old_sys_header_rec.start_date_active := NULL;
6273 l_new_sys_header_rec.start_date_active := NULL;
6274 ELSE
6275 l_old_sys_header_rec.start_date_active := l_hist_csr.old_start_date_active;
6276 l_new_sys_header_rec.start_date_active := l_hist_csr.new_start_date_active;
6277 END IF;
6278 --
6279 IF NVL(l_hist_csr.old_end_date_active,fnd_api.g_miss_date) =
6280 NVL(l_hist_csr.new_end_date_active,fnd_api.g_miss_date) THEN
6281 l_old_sys_header_rec.end_date_active := NULL;
6282 l_new_sys_header_rec.end_date_active := NULL;
6283 ELSE
6284 l_old_sys_header_rec.end_date_active := l_hist_csr.old_end_date_active;
6285 l_new_sys_header_rec.end_date_active := l_hist_csr.new_end_date_active;
6286 END IF;
6287 --
6288 IF NVL(l_hist_csr.old_autocreated_from_system,fnd_api.g_miss_num) =
6289 NVL(l_hist_csr.new_autocreated_from_system,fnd_api.g_miss_num) THEN
6290 l_old_sys_header_rec.autocreated_from_system_id := NULL;
6291 l_new_sys_header_rec.autocreated_from_system_id := NULL;
6292 ELSE
6293 l_old_sys_header_rec.autocreated_from_system_id := l_hist_csr.old_autocreated_from_system;
6294 l_new_sys_header_rec.autocreated_from_system_id := l_hist_csr.new_autocreated_from_system;
6295 END IF;
6296 --
6297 IF NVL(l_hist_csr.old_config_system_type,fnd_api.g_miss_char) =
6298 NVL(l_hist_csr.new_config_system_type,fnd_api.g_miss_char) THEN
6299 l_old_sys_header_rec.config_system_type := NULL;
6300 l_new_sys_header_rec.config_system_type := NULL;
6301 ELSE
6302 l_old_sys_header_rec.config_system_type := l_hist_csr.old_config_system_type;
6303 l_new_sys_header_rec.config_system_type := l_hist_csr.new_config_system_type;
6304 END IF;
6305 --
6306 IF NVL(l_hist_csr.old_name,fnd_api.g_miss_char) =
6307 NVL(l_hist_csr.new_name,fnd_api.g_miss_char) THEN
6308 l_old_sys_header_rec.name := NULL;
6309 l_new_sys_header_rec.name := NULL;
6310 ELSE
6311 l_old_sys_header_rec.name := l_hist_csr.old_name;
6312 l_new_sys_header_rec.name := l_hist_csr.new_name;
6313 END IF;
6314 --
6315 IF NVL(l_hist_csr.old_description,fnd_api.g_miss_char) =
6316 NVL(l_hist_csr.new_description,fnd_api.g_miss_char) THEN
6317 l_old_sys_header_rec.description := NULL;
6318 l_new_sys_header_rec.description := NULL;
6319 ELSE
6320 l_old_sys_header_rec.description := l_hist_csr.old_description;
6321 l_new_sys_header_rec.description := l_hist_csr.new_description;
6322 END IF;
6323 --
6324 IF NVL(l_hist_csr.old_context,fnd_api.g_miss_char) =
6325 NVL(l_hist_csr.new_context,fnd_api.g_miss_char) THEN
6326 l_old_sys_header_rec.context := NULL;
6327 l_new_sys_header_rec.context := NULL;
6328 ELSE
6329 l_old_sys_header_rec.context := l_hist_csr.old_context;
6330 l_new_sys_header_rec.context := l_hist_csr.new_context;
6331 END IF;
6332 --
6333 IF NVL(l_hist_csr.old_attribute1,fnd_api.g_miss_char) =
6334 NVL(l_hist_csr.new_attribute1,fnd_api.g_miss_char) THEN
6335 l_old_sys_header_rec.attribute1 := NULL;
6336 l_new_sys_header_rec.attribute1 := NULL;
6337 ELSE
6338 l_old_sys_header_rec.attribute1 := l_hist_csr.old_attribute1;
6339 l_new_sys_header_rec.attribute1 := l_hist_csr.new_attribute1;
6340 END IF;
6341 --
6342 IF NVL(l_hist_csr.old_attribute2,fnd_api.g_miss_char) =
6343 NVL(l_hist_csr.new_attribute2,fnd_api.g_miss_char) THEN
6344 l_old_sys_header_rec.attribute2 := NULL;
6345 l_new_sys_header_rec.attribute2 := NULL;
6346 ELSE
6347 l_old_sys_header_rec.attribute2 := l_hist_csr.old_attribute2;
6348 l_new_sys_header_rec.attribute2 := l_hist_csr.new_attribute2;
6349 END IF;
6350 --
6351 IF NVL(l_hist_csr.old_attribute3,fnd_api.g_miss_char) =
6352 NVL(l_hist_csr.new_attribute3,fnd_api.g_miss_char) THEN
6353 l_old_sys_header_rec.attribute3 := NULL;
6354 l_new_sys_header_rec.attribute3 := NULL;
6355 ELSE
6356 l_old_sys_header_rec.attribute3 := l_hist_csr.old_attribute3;
6357 l_new_sys_header_rec.attribute3 := l_hist_csr.new_attribute3;
6358 END IF;
6359 --
6360 IF NVL(l_hist_csr.old_attribute4,fnd_api.g_miss_char) =
6361 NVL(l_hist_csr.new_attribute4,fnd_api.g_miss_char) THEN
6362 l_old_sys_header_rec.attribute4 := NULL;
6363 l_new_sys_header_rec.attribute4 := NULL;
6364 ELSE
6365 l_old_sys_header_rec.attribute4 := l_hist_csr.old_attribute4;
6366 l_new_sys_header_rec.attribute4 := l_hist_csr.new_attribute4;
6367 END IF;
6368 --
6369 IF NVL(l_hist_csr.old_attribute5,fnd_api.g_miss_char) =
6370 NVL(l_hist_csr.new_attribute5,fnd_api.g_miss_char) THEN
6371 l_old_sys_header_rec.attribute5 := NULL;
6372 l_new_sys_header_rec.attribute5 := NULL;
6373 ELSE
6374 l_old_sys_header_rec.attribute5 := l_hist_csr.old_attribute5;
6375 l_new_sys_header_rec.attribute5 := l_hist_csr.new_attribute5;
6376 END IF;
6377 --
6378 IF NVL(l_hist_csr.old_attribute6,fnd_api.g_miss_char) =
6379 NVL(l_hist_csr.new_attribute6,fnd_api.g_miss_char) THEN
6380 l_old_sys_header_rec.attribute6 := NULL;
6381 l_new_sys_header_rec.attribute6 := NULL;
6382 ELSE
6383 l_old_sys_header_rec.attribute6 := l_hist_csr.old_attribute6;
6384 l_new_sys_header_rec.attribute6 := l_hist_csr.new_attribute6;
6385 END IF;
6386 --
6387 IF NVL(l_hist_csr.old_attribute7,fnd_api.g_miss_char) =
6388 NVL(l_hist_csr.new_attribute7,fnd_api.g_miss_char) THEN
6389 l_old_sys_header_rec.attribute7 := NULL;
6390 l_new_sys_header_rec.attribute7 := NULL;
6391 ELSE
6392 l_old_sys_header_rec.attribute7 := l_hist_csr.old_attribute7;
6393 l_new_sys_header_rec.attribute7 := l_hist_csr.new_attribute7;
6394 END IF;
6395 --
6396 IF NVL(l_hist_csr.old_attribute8,fnd_api.g_miss_char) =
6397 NVL(l_hist_csr.new_attribute8,fnd_api.g_miss_char) THEN
6398 l_old_sys_header_rec.attribute8 := NULL;
6399 l_new_sys_header_rec.attribute8 := NULL;
6400 ELSE
6401 l_old_sys_header_rec.attribute8 := l_hist_csr.old_attribute8;
6402 l_new_sys_header_rec.attribute8 := l_hist_csr.new_attribute8;
6403 END IF;
6404 --
6405 IF NVL(l_hist_csr.old_attribute9,fnd_api.g_miss_char) =
6406 NVL(l_hist_csr.new_attribute9,fnd_api.g_miss_char) THEN
6407 l_old_sys_header_rec.attribute9 := NULL;
6408 l_new_sys_header_rec.attribute9 := NULL;
6409 ELSE
6410 l_old_sys_header_rec.attribute9 := l_hist_csr.old_attribute9;
6411 l_new_sys_header_rec.attribute9 := l_hist_csr.new_attribute9;
6412 END IF;
6413 --
6414 IF NVL(l_hist_csr.old_attribute10,fnd_api.g_miss_char) =
6415 NVL(l_hist_csr.new_attribute10,fnd_api.g_miss_char) THEN
6416 l_old_sys_header_rec.attribute10 := NULL;
6417 l_new_sys_header_rec.attribute10 := NULL;
6418 ELSE
6419 l_old_sys_header_rec.attribute10 := l_hist_csr.old_attribute10;
6420 l_new_sys_header_rec.attribute10 := l_hist_csr.new_attribute10;
6421 END IF;
6422 --
6423 IF NVL(l_hist_csr.old_attribute11,fnd_api.g_miss_char) =
6424 NVL(l_hist_csr.new_attribute11,fnd_api.g_miss_char) THEN
6425 l_old_sys_header_rec.attribute11 := NULL;
6426 l_new_sys_header_rec.attribute11 := NULL;
6427 ELSE
6428 l_old_sys_header_rec.attribute11 := l_hist_csr.old_attribute11;
6429 l_new_sys_header_rec.attribute11 := l_hist_csr.new_attribute11;
6430 END IF;
6431 --
6432 IF NVL(l_hist_csr.old_attribute12,fnd_api.g_miss_char) =
6433 NVL(l_hist_csr.new_attribute12,fnd_api.g_miss_char) THEN
6434 l_old_sys_header_rec.attribute12 := NULL;
6435 l_new_sys_header_rec.attribute12 := NULL;
6436 ELSE
6437 l_old_sys_header_rec.attribute12 := l_hist_csr.old_attribute12;
6438 l_new_sys_header_rec.attribute12 := l_hist_csr.new_attribute12;
6439 END IF;
6440 --
6441 IF NVL(l_hist_csr.old_attribute13,fnd_api.g_miss_char) =
6442 NVL(l_hist_csr.new_attribute13,fnd_api.g_miss_char) THEN
6443 l_old_sys_header_rec.attribute13 := NULL;
6444 l_new_sys_header_rec.attribute13 := NULL;
6445 ELSE
6446 l_old_sys_header_rec.attribute13 := l_hist_csr.old_attribute13;
6447 l_new_sys_header_rec.attribute13 := l_hist_csr.new_attribute13;
6448 END IF;
6449 --
6450 IF NVL(l_hist_csr.old_attribute14,fnd_api.g_miss_char) =
6451 NVL(l_hist_csr.new_attribute14,fnd_api.g_miss_char) THEN
6452 l_old_sys_header_rec.attribute14 := NULL;
6453 l_new_sys_header_rec.attribute14 := NULL;
6454 ELSE
6455 l_old_sys_header_rec.attribute14 := l_hist_csr.old_attribute14;
6456 l_new_sys_header_rec.attribute14 := l_hist_csr.new_attribute14;
6457 END IF;
6458 --
6459 IF NVL(l_hist_csr.old_attribute15,fnd_api.g_miss_char) =
6460 NVL(l_hist_csr.new_attribute15,fnd_api.g_miss_char) THEN
6461 l_old_sys_header_rec.attribute15 := NULL;
6462 l_new_sys_header_rec.attribute15 := NULL;
6463 ELSE
6464 l_old_sys_header_rec.attribute15 := l_hist_csr.old_attribute15;
6465 l_new_sys_header_rec.attribute15 := l_hist_csr.new_attribute15;
6466 END IF;
6467 --
6468 IF NVL(l_hist_csr.old_operating_unit_id,fnd_api.g_miss_num) =
6469 NVL(l_hist_csr.new_operating_unit_id,fnd_api.g_miss_num) THEN
6470 l_old_sys_header_rec.operating_unit_id := NULL;
6471 l_new_sys_header_rec.operating_unit_id := NULL;
6472 ELSE
6473 l_old_sys_header_rec.operating_unit_id := l_hist_csr.old_operating_unit_id;
6474 l_new_sys_header_rec.operating_unit_id := l_hist_csr.new_operating_unit_id;
6475 END IF;
6476 --
6477 -- Resolve the IDs
6478 l_old_sys_header_tbl(1) := l_old_sys_header_rec;
6479 csi_systems_pvt.Resolve_ID_Columns(p_system_header_tbl => l_old_sys_header_tbl);
6480 l_old_sys_header_rec := l_old_sys_header_tbl(1);
6481 --
6482 l_new_sys_header_tbl(1) := l_new_sys_header_rec;
6483 csi_systems_pvt.Resolve_ID_Columns(p_system_header_tbl => l_new_sys_header_tbl);
6484 l_new_sys_header_rec := l_new_sys_header_tbl(1);
6485 --
6486 -- Check for the Resolved Column values and assign NULL appropriately
6487 IF NVL(l_old_sys_header_rec.name,fnd_api.g_miss_char) =
6488 NVL(l_new_sys_header_rec.name,fnd_api.g_miss_char) THEN
6489 l_old_sys_header_rec.name := NULL;
6490 l_new_sys_header_rec.name := NULL;
6491 END IF;
6492 --
6493 IF NVL(l_old_sys_header_rec.description,fnd_api.g_miss_char) =
6494 NVL(l_new_sys_header_rec.description,fnd_api.g_miss_char) THEN
6495 l_old_sys_header_rec.description := NULL;
6496 l_new_sys_header_rec.description := NULL;
6497 END IF;
6498 --
6499 -- Build the l_system_history_rec
6500 l_sys_history_rec.system_history_id := l_hist_csr.system_history_id;
6501 l_sys_history_rec.system_id := l_hist_csr.system_id;
6502 l_sys_history_rec.transaction_id := l_hist_csr.transaction_id;
6503 l_sys_history_rec.old_customer_id := l_old_sys_header_rec.customer_id;
6504 l_sys_history_rec.new_customer_id := l_new_sys_header_rec.customer_id;
6505 l_sys_history_rec.old_system_type_code := l_old_sys_header_rec.system_type_code;
6506 l_sys_history_rec.new_system_type_code := l_new_sys_header_rec.system_type_code;
6507 l_sys_history_rec.old_system_number := l_old_sys_header_rec.system_number;
6508 l_sys_history_rec.new_system_number := l_new_sys_header_rec.system_number;
6509 l_sys_history_rec.old_parent_system_id := l_old_sys_header_rec.parent_system_id;
6510 l_sys_history_rec.new_parent_system_id := l_new_sys_header_rec.parent_system_id;
6511 l_sys_history_rec.old_ship_to_contact_id := l_old_sys_header_rec.ship_to_contact_id;
6512 l_sys_history_rec.new_ship_to_contact_id := l_new_sys_header_rec.ship_to_contact_id;
6513 l_sys_history_rec.old_bill_to_contact_id := l_old_sys_header_rec.bill_to_contact_id;
6514 l_sys_history_rec.new_bill_to_contact_id := l_new_sys_header_rec.bill_to_contact_id;
6515 l_sys_history_rec.old_technical_contact_id := l_old_sys_header_rec.technical_contact_id;
6516 l_sys_history_rec.new_technical_contact_id := l_new_sys_header_rec.technical_contact_id;
6517 l_sys_history_rec.old_service_admin_contact_id := l_old_sys_header_rec.service_admin_contact_id;
6518 l_sys_history_rec.new_service_admin_contact_id := l_new_sys_header_rec.service_admin_contact_id;
6519 l_sys_history_rec.old_ship_to_site_use_id := l_old_sys_header_rec.ship_to_site_use_id;
6520 l_sys_history_rec.new_ship_to_site_use_id := l_new_sys_header_rec.ship_to_site_use_id;
6521 l_sys_history_rec.old_bill_to_site_use_id := l_old_sys_header_rec.bill_to_site_use_id;
6522 l_sys_history_rec.new_bill_to_site_use_id := l_new_sys_header_rec.bill_to_site_use_id;
6523 l_sys_history_rec.old_install_site_use_id := l_old_sys_header_rec.install_site_use_id;
6524 l_sys_history_rec.new_install_site_use_id := l_new_sys_header_rec.install_site_use_id;
6525 l_sys_history_rec.old_coterminate_day_month := l_old_sys_header_rec.coterminate_day_month;
6526 l_sys_history_rec.new_coterminate_day_month := l_new_sys_header_rec.coterminate_day_month;
6527 l_sys_history_rec.old_start_date_active := l_old_sys_header_rec.start_date_active;
6528 l_sys_history_rec.new_start_date_active := l_new_sys_header_rec.start_date_active;
6529 l_sys_history_rec.old_end_date_active := l_old_sys_header_rec.end_date_active;
6530 l_sys_history_rec.new_end_date_active := l_new_sys_header_rec.end_date_active;
6531 l_sys_history_rec.old_autocreated_from_system := l_old_sys_header_rec.autocreated_from_system_id;
6532 l_sys_history_rec.new_autocreated_from_system := l_new_sys_header_rec.autocreated_from_system_id;
6533 l_sys_history_rec.old_config_system_type := l_old_sys_header_rec.config_system_type;
6534 l_sys_history_rec.new_config_system_type := l_new_sys_header_rec.config_system_type;
6535 l_sys_history_rec.old_context := l_old_sys_header_rec.context;
6536 l_sys_history_rec.new_context := l_new_sys_header_rec.context;
6537 l_sys_history_rec.old_attribute1 := l_old_sys_header_rec.attribute1;
6538 l_sys_history_rec.new_attribute1 := l_new_sys_header_rec.attribute1;
6539 l_sys_history_rec.old_attribute2 := l_old_sys_header_rec.attribute2;
6540 l_sys_history_rec.new_attribute2 := l_new_sys_header_rec.attribute2;
6541 l_sys_history_rec.old_attribute3 := l_old_sys_header_rec.attribute3;
6542 l_sys_history_rec.new_attribute3 := l_new_sys_header_rec.attribute3;
6543 l_sys_history_rec.old_attribute4 := l_old_sys_header_rec.attribute4;
6544 l_sys_history_rec.new_attribute4 := l_new_sys_header_rec.attribute4;
6545 l_sys_history_rec.old_attribute5 := l_old_sys_header_rec.attribute5;
6546 l_sys_history_rec.new_attribute5 := l_new_sys_header_rec.attribute5;
6547 l_sys_history_rec.old_attribute6 := l_old_sys_header_rec.attribute6;
6548 l_sys_history_rec.new_attribute6 := l_new_sys_header_rec.attribute6;
6549 l_sys_history_rec.old_attribute7 := l_old_sys_header_rec.attribute7;
6550 l_sys_history_rec.new_attribute7 := l_new_sys_header_rec.attribute7;
6551 l_sys_history_rec.old_attribute8 := l_old_sys_header_rec.attribute8;
6552 l_sys_history_rec.new_attribute8 := l_new_sys_header_rec.attribute8;
6553 l_sys_history_rec.old_attribute9 := l_old_sys_header_rec.attribute9;
6554 l_sys_history_rec.new_attribute9 := l_new_sys_header_rec.attribute9;
6555 l_sys_history_rec.old_attribute10 := l_old_sys_header_rec.attribute10;
6556 l_sys_history_rec.new_attribute10 := l_new_sys_header_rec.attribute10;
6557 l_sys_history_rec.old_attribute11 := l_old_sys_header_rec.attribute11;
6558 l_sys_history_rec.new_attribute11 := l_new_sys_header_rec.attribute11;
6559 l_sys_history_rec.old_attribute12 := l_old_sys_header_rec.attribute12;
6560 l_sys_history_rec.new_attribute12 := l_new_sys_header_rec.attribute12;
6561 l_sys_history_rec.old_attribute13 := l_old_sys_header_rec.attribute13;
6562 l_sys_history_rec.new_attribute13 := l_new_sys_header_rec.attribute13;
6563 l_sys_history_rec.old_attribute14 := l_old_sys_header_rec.attribute14;
6564 l_sys_history_rec.new_attribute14 := l_new_sys_header_rec.attribute14;
6565 l_sys_history_rec.old_attribute15 := l_old_sys_header_rec.attribute15;
6566 l_sys_history_rec.new_attribute15 := l_new_sys_header_rec.attribute15;
6567 l_sys_history_rec.old_name := l_old_sys_header_rec.name;
6568 l_sys_history_rec.new_name := l_new_sys_header_rec.name;
6569 l_sys_history_rec.old_description := l_old_sys_header_rec.description;
6570 l_sys_history_rec.new_description := l_new_sys_header_rec.description;
6571 l_sys_history_rec.old_operating_unit_id := l_old_sys_header_rec.operating_unit_id;
6572 l_sys_history_rec.new_operating_unit_id := l_new_sys_header_rec.operating_unit_id;
6573 l_sys_history_rec.old_operating_unit_name := l_old_sys_header_rec.operating_unit_name;
6574 l_sys_history_rec.new_operating_unit_name := l_new_sys_header_rec.operating_unit_name;
6575 l_sys_history_rec.old_system_type := l_old_sys_header_rec.system_type;
6576 l_sys_history_rec.new_system_type := l_new_sys_header_rec.system_type;
6577 l_sys_history_rec.old_parent_name := l_old_sys_header_rec.parent_name;
6578 l_sys_history_rec.new_parent_name := l_new_sys_header_rec.parent_name;
6579 l_sys_history_rec.old_ship_to_address1 := l_old_sys_header_rec.ship_to_address1;
6580 l_sys_history_rec.new_ship_to_address1 := l_new_sys_header_rec.ship_to_address1;
6581 l_sys_history_rec.old_ship_to_address2 := l_old_sys_header_rec.ship_to_address2;
6582 l_sys_history_rec.new_ship_to_address2 := l_new_sys_header_rec.ship_to_address2;
6583 l_sys_history_rec.old_ship_to_address3 := l_old_sys_header_rec.ship_to_address3;
6584 l_sys_history_rec.new_ship_to_address3 := l_new_sys_header_rec.ship_to_address3;
6585 l_sys_history_rec.old_ship_to_address4 := l_old_sys_header_rec.ship_to_address4;
6586 l_sys_history_rec.new_ship_to_address4 := l_new_sys_header_rec.ship_to_address4;
6587 l_sys_history_rec.old_ship_to_location := l_old_sys_header_rec.ship_to_location;
6588 l_sys_history_rec.new_ship_to_location := l_new_sys_header_rec.ship_to_location;
6589 l_sys_history_rec.old_ship_state := l_old_sys_header_rec.ship_state;
6590 l_sys_history_rec.new_ship_state := l_new_sys_header_rec.ship_state;
6591 l_sys_history_rec.old_ship_postal_code := l_old_sys_header_rec.ship_postal_code;
6592 l_sys_history_rec.new_ship_postal_code := l_new_sys_header_rec.ship_postal_code;
6593 l_sys_history_rec.old_ship_country := l_old_sys_header_rec.ship_country;
6594 l_sys_history_rec.new_ship_country := l_new_sys_header_rec.ship_country;
6595 l_sys_history_rec.old_ship_to_customer := l_old_sys_header_rec.ship_to_customer;
6596 l_sys_history_rec.new_ship_to_customer := l_new_sys_header_rec.ship_to_customer;
6597 l_sys_history_rec.old_ship_to_customer_number := l_old_sys_header_rec.ship_to_customer_number;
6598 l_sys_history_rec.new_ship_to_customer_number := l_new_sys_header_rec.ship_to_customer_number;
6599 l_sys_history_rec.old_bill_to_address1 := l_old_sys_header_rec.bill_to_address1;
6600 l_sys_history_rec.new_bill_to_address1 := l_new_sys_header_rec.bill_to_address1;
6601 l_sys_history_rec.old_bill_to_address2 := l_old_sys_header_rec.bill_to_address2;
6602 l_sys_history_rec.new_bill_to_address2 := l_new_sys_header_rec.bill_to_address2;
6603 l_sys_history_rec.old_bill_to_address3 := l_old_sys_header_rec.bill_to_address3;
6604 l_sys_history_rec.new_bill_to_address3 := l_new_sys_header_rec.bill_to_address3;
6605 l_sys_history_rec.old_bill_to_address4 := l_old_sys_header_rec.bill_to_address4;
6606 l_sys_history_rec.new_bill_to_address4 := l_new_sys_header_rec.bill_to_address4;
6607 l_sys_history_rec.old_bill_to_location := l_old_sys_header_rec.bill_to_location;
6608 l_sys_history_rec.new_bill_to_location := l_new_sys_header_rec.bill_to_location;
6609 l_sys_history_rec.old_bill_state := l_old_sys_header_rec.bill_state;
6610 l_sys_history_rec.new_bill_state := l_new_sys_header_rec.bill_state;
6611 l_sys_history_rec.old_bill_postal_code := l_old_sys_header_rec.bill_postal_code;
6612 l_sys_history_rec.new_bill_postal_code := l_new_sys_header_rec.bill_postal_code;
6613 l_sys_history_rec.old_bill_country := l_old_sys_header_rec.bill_country;
6614 l_sys_history_rec.new_bill_country := l_new_sys_header_rec.bill_country;
6615 l_sys_history_rec.old_bill_to_customer := l_old_sys_header_rec.bill_to_customer;
6616 l_sys_history_rec.new_bill_to_customer := l_new_sys_header_rec.bill_to_customer;
6617 l_sys_history_rec.old_bill_to_customer_number := l_old_sys_header_rec.bill_to_customer_number;
6618 l_sys_history_rec.new_bill_to_customer_number := l_new_sys_header_rec.bill_to_customer_number;
6619 l_sys_history_rec.old_install_address1 := l_old_sys_header_rec.install_address1;
6620 l_sys_history_rec.new_install_address1 := l_new_sys_header_rec.install_address1;
6621 l_sys_history_rec.old_install_address2 := l_old_sys_header_rec.install_address2;
6622 l_sys_history_rec.new_install_address2 := l_new_sys_header_rec.install_address2;
6623 l_sys_history_rec.old_install_address3 := l_old_sys_header_rec.install_address3;
6624 l_sys_history_rec.new_install_address3 := l_new_sys_header_rec.install_address3;
6625 l_sys_history_rec.old_install_address4 := l_old_sys_header_rec.install_address4;
6626 l_sys_history_rec.new_install_address4 := l_new_sys_header_rec.install_address4;
6627 l_sys_history_rec.old_install_location := l_old_sys_header_rec.install_location;
6628 l_sys_history_rec.new_install_location := l_new_sys_header_rec.install_location;
6629 l_sys_history_rec.old_install_state := l_old_sys_header_rec.install_state;
6630 l_sys_history_rec.new_install_state := l_new_sys_header_rec.install_state;
6631 l_sys_history_rec.old_install_postal_code := l_old_sys_header_rec.install_postal_code;
6632 l_sys_history_rec.new_install_postal_code := l_new_sys_header_rec.install_postal_code;
6633 l_sys_history_rec.old_install_country := l_old_sys_header_rec.install_country;
6634 l_sys_history_rec.new_install_country := l_new_sys_header_rec.install_country;
6635 l_sys_history_rec.old_install_customer := l_old_sys_header_rec.install_customer;
6636 l_sys_history_rec.new_install_customer := l_new_sys_header_rec.install_customer;
6637 l_sys_history_rec.old_install_customer_number := l_old_sys_header_rec.install_customer_number;
6638 l_sys_history_rec.new_install_customer_number := l_new_sys_header_rec.install_customer_number;
6639 l_sys_history_rec.old_ship_to_contact_number := l_old_sys_header_rec.ship_to_contact_number;
6640 l_sys_history_rec.new_ship_to_contact_number := l_new_sys_header_rec.ship_to_contact_number;
6641 l_sys_history_rec.old_bill_to_contact_number := l_old_sys_header_rec.bill_to_contact_number;
6642 l_sys_history_rec.new_bill_to_contact_number := l_new_sys_header_rec.bill_to_contact_number;
6643 l_sys_history_rec.old_technical_contact_number := l_old_sys_header_rec.technical_contact_number;
6644 l_sys_history_rec.new_technical_contact_number := l_new_sys_header_rec.technical_contact_number;
6645 l_sys_history_rec.old_serv_admin_contact_number := l_old_sys_header_rec.service_admin_contact_number;
6646 l_sys_history_rec.new_serv_admin_contact_number := l_new_sys_header_rec.service_admin_contact_number;
6647 l_sys_history_rec.old_ship_to_contact := l_old_sys_header_rec.ship_to_contact;
6648 l_sys_history_rec.new_ship_to_contact := l_new_sys_header_rec.ship_to_contact;
6649 l_sys_history_rec.old_bill_to_contact := l_old_sys_header_rec.bill_to_contact;
6650 l_sys_history_rec.new_bill_to_contact := l_new_sys_header_rec.bill_to_contact;
6651 l_sys_history_rec.old_technical_contact := l_old_sys_header_rec.technical_contact;
6652 l_sys_history_rec.new_technical_contact := l_new_sys_header_rec.technical_contact;
6653 l_sys_history_rec.old_serv_admin_contact := l_old_sys_header_rec.service_admin_contact;
6654 l_sys_history_rec.new_serv_admin_contact := l_new_sys_header_rec.service_admin_contact;
6655 l_sys_history_rec.object_version_number := l_hist_csr.object_version_number;
6656 --
6657 l_sys_count := l_sys_count + 1;
6658 x_system_history_tbl(l_sys_count) := l_sys_history_rec;
6659 END LOOP;
6660 -- End of API body
6661
6662 -- Standard check of p_commit.
6663 IF FND_API.To_Boolean( p_commit ) THEN
6664 COMMIT WORK;
6665 END IF;
6666
6667 /***** srramakr commented for bug # 3304439
6668 -- Check for the profile option and disable the trace
6669 IF (fnd_profile.value('CSI_ENABLE_SQL_TRACE') = 'Y') THEN
6670 dbms_session.set_sql_trace(false);
6671 END IF;
6672 -- End disable trace
6673 ****/
6674
6675 -- Standard call to get message count and if count is get message info.
6676 FND_MSG_PUB.Count_And_Get
6677 (p_count => x_msg_count ,
6678 p_data => x_msg_data );
6679 EXCEPTION
6680 WHEN OTHERS THEN
6681 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6682 IF fnd_api.to_boolean(p_commit) THEN
6683 ROLLBACK TO get_system_history;
6684 END IF;
6685 IF FND_MSG_PUB.Check_Msg_Level
6686 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6687 THEN
6688 FND_MSG_PUB.Add_Exc_Msg
6689 ( G_PKG_NAME, l_api_name );
6690 END IF;
6691 FND_MSG_PUB.Count_And_Get
6692 ( p_count => x_msg_count,
6693 p_data => x_msg_data);
6694
6695 END Get_System_History;
6696 --
6697 END csi_systems_pvt;