DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSI_ITEM_INSTANCE_PVT

Source


1 PACKAGE BODY CSI_ITEM_INSTANCE_PVT as
2 /* $Header: csiviib.pls 120.88.12010000.2 2008/12/08 13:47:04 dsingire ship $ */
3 
4 -- ---------------------------------------------------------
5 -- Define global variables
6 -- ---------------------------------------------------------
7 
8 G_PKG_NAME CONSTANT VARCHAR2(30):= 'CSI_ITEM_INSTANCE_PVT';
9 G_FILE_NAME CONSTANT VARCHAR2(12) := 'csiviib.pls';
10 g_expire_ext_att_flag  VARCHAR2(1) := 'N';
11 
12 --Start of: Added for bug 5615169
13 
14 /*-------------------------------------------------------------*/
15 /* Procedure name: Build_Inst_Hist_Rec_of_Table                                   */
16 /* Description   : This function is used in Explode_Bom to     */
17 /*                 check whether the given component qualifies */
18 /*                 as a parent or not.                         */
19 /*-------------------------------------------------------------*/
20 
21 PROCEDURE Build_Inst_Hist_Rec_of_Table
22         (
23                 p_inst_hist_tbl     IN csi_datastructures_pub.instance_history_tbl ,
24                 p_inst_hist_rec_tab IN OUT NOCOPY csi_item_instance_grp.instance_history_rec_tab )
25 IS
26 BEGIN
27         FOR i in p_inst_hist_tbl.FIRST .. p_inst_hist_tbl.LAST
28         LOOP
29 	p_inst_hist_rec_tab.instance_id(i)                    := p_inst_hist_tbl(i).instance_id ;
30 	p_inst_hist_rec_tab.old_instance_number(i)            := p_inst_hist_tbl(i).old_instance_number ;
31 	p_inst_hist_rec_tab.new_instance_number(i)            := p_inst_hist_tbl(i).new_instance_number ;
32 	p_inst_hist_rec_tab.old_external_reference(i)         := p_inst_hist_tbl(i).old_external_reference ;
33 	p_inst_hist_rec_tab.new_external_reference(i)         := p_inst_hist_tbl(i).new_external_reference ;
34 	p_inst_hist_rec_tab.old_inventory_item_id(i)          := p_inst_hist_tbl(i).old_inventory_item_id ;
35 	p_inst_hist_rec_tab.new_inventory_item_id(i)          := p_inst_hist_tbl(i).new_inventory_item_id ;
36 	p_inst_hist_rec_tab.old_inventory_revision(i)         := p_inst_hist_tbl(i).old_inventory_revision ;
37 	p_inst_hist_rec_tab.new_inventory_revision(i)         := p_inst_hist_tbl(i).new_inventory_revision ;
38 	p_inst_hist_rec_tab.old_inv_master_org_id(i)          := p_inst_hist_tbl(i).old_inv_master_org_id ;
39 	p_inst_hist_rec_tab.new_inv_master_org_id(i)          := p_inst_hist_tbl(i).new_inv_master_org_id ;
40 	p_inst_hist_rec_tab.old_serial_number(i)              := p_inst_hist_tbl(i).old_serial_number ;
41 	p_inst_hist_rec_tab.new_serial_number(i)              := p_inst_hist_tbl(i).new_serial_number ;
42 	p_inst_hist_rec_tab.old_mfg_serial_number_flag(i)     := p_inst_hist_tbl(i).old_mfg_serial_number_flag ;
43 	p_inst_hist_rec_tab.new_mfg_serial_number_flag(i)     := p_inst_hist_tbl(i).new_mfg_serial_number_flag ;
44 	p_inst_hist_rec_tab.old_lot_number(i)                 := p_inst_hist_tbl(i).old_lot_number ;
45 	p_inst_hist_rec_tab.new_lot_number(i)                 := p_inst_hist_tbl(i).new_lot_number ;
46 	p_inst_hist_rec_tab.old_quantity(i)                   := p_inst_hist_tbl(i).old_quantity ;
47 	p_inst_hist_rec_tab.new_quantity(i)                   := p_inst_hist_tbl(i).new_quantity ;
48 	p_inst_hist_rec_tab.old_unit_of_measure_name(i)       := p_inst_hist_tbl(i).old_unit_of_measure_name ;
49 	p_inst_hist_rec_tab.new_unit_of_measure_name(i)       := p_inst_hist_tbl(i).new_unit_of_measure_name ;
50 	p_inst_hist_rec_tab.old_unit_of_measure(i)            := p_inst_hist_tbl(i).old_unit_of_measure ;
51 	p_inst_hist_rec_tab.new_unit_of_measure(i)            := p_inst_hist_tbl(i).new_unit_of_measure ;
52 	p_inst_hist_rec_tab.old_accounting_class(i)           := p_inst_hist_tbl(i).old_accounting_class ;
53 	p_inst_hist_rec_tab.new_accounting_class(i)           := p_inst_hist_tbl(i).new_accounting_class ;
54 	p_inst_hist_rec_tab.old_accounting_class_code(i)      := p_inst_hist_tbl(i).old_accounting_class_code ;
55 	p_inst_hist_rec_tab.new_accounting_class_code(i)      := p_inst_hist_tbl(i).new_accounting_class_code ;
56 	p_inst_hist_rec_tab.old_instance_condition(i)         := p_inst_hist_tbl(i).old_instance_condition ;
57 	p_inst_hist_rec_tab.new_instance_condition(i)         := p_inst_hist_tbl(i).new_instance_condition ;
58 	p_inst_hist_rec_tab.old_instance_condition_id(i)      := p_inst_hist_tbl(i).old_instance_condition_id ;
59 	p_inst_hist_rec_tab.new_instance_condition_id(i)      := p_inst_hist_tbl(i).new_instance_condition_id ;
60 	p_inst_hist_rec_tab.old_instance_status(i)            := p_inst_hist_tbl(i).old_instance_status ;
61 	p_inst_hist_rec_tab.new_instance_status(i)            := p_inst_hist_tbl(i).new_instance_status ;
62 	p_inst_hist_rec_tab.old_instance_status_id(i)         := p_inst_hist_tbl(i).old_instance_status_id ;
63 	p_inst_hist_rec_tab.new_instance_status_id(i)         := p_inst_hist_tbl(i).new_instance_status_id ;
64 	p_inst_hist_rec_tab.old_customer_view_flag(i)         := p_inst_hist_tbl(i).old_customer_view_flag ;
65 	p_inst_hist_rec_tab.new_customer_view_flag(i)         := p_inst_hist_tbl(i).new_customer_view_flag ;
66 	p_inst_hist_rec_tab.old_merchant_view_flag(i)         := p_inst_hist_tbl(i).old_merchant_view_flag ;
67 	p_inst_hist_rec_tab.new_merchant_view_flag(i)         := p_inst_hist_tbl(i).new_merchant_view_flag ;
68 	p_inst_hist_rec_tab.old_sellable_flag(i)              := p_inst_hist_tbl(i).old_sellable_flag ;
69 	p_inst_hist_rec_tab.new_sellable_flag(i)              := p_inst_hist_tbl(i).new_sellable_flag ;
70 	p_inst_hist_rec_tab.old_system_id(i)                  := p_inst_hist_tbl(i).old_system_id ;
71 	p_inst_hist_rec_tab.new_system_id(i)                  := p_inst_hist_tbl(i).new_system_id ;
72 	p_inst_hist_rec_tab.old_system_name(i)                := p_inst_hist_tbl(i).old_system_name ;
73 	p_inst_hist_rec_tab.new_system_name(i)                := p_inst_hist_tbl(i).new_system_name ;
74 	p_inst_hist_rec_tab.old_instance_type_code(i)         := p_inst_hist_tbl(i).old_instance_type_code ;
75 	p_inst_hist_rec_tab.new_instance_type_code(i)         := p_inst_hist_tbl(i).new_instance_type_code ;
76 	p_inst_hist_rec_tab.old_instance_type_name(i)         := p_inst_hist_tbl(i).old_instance_type_name ;
77 	p_inst_hist_rec_tab.new_instance_type_name(i)         := p_inst_hist_tbl(i).new_instance_type_name ;
78 	p_inst_hist_rec_tab.old_active_start_date(i)          := p_inst_hist_tbl(i).old_active_start_date ;
79 	p_inst_hist_rec_tab.new_active_start_date(i)          := p_inst_hist_tbl(i).new_active_start_date ;
80 	p_inst_hist_rec_tab.old_active_end_date(i)            := p_inst_hist_tbl(i).old_active_end_date ;
81 	p_inst_hist_rec_tab.new_active_end_date(i)            := p_inst_hist_tbl(i).new_active_end_date ;
82 	p_inst_hist_rec_tab.old_location_type_code(i)         := p_inst_hist_tbl(i).old_location_type_code ;
83 	p_inst_hist_rec_tab.new_location_type_code(i)         := p_inst_hist_tbl(i).new_location_type_code ;
84 	p_inst_hist_rec_tab.old_location_id(i)                := p_inst_hist_tbl(i).old_location_id ;
85 	p_inst_hist_rec_tab.new_location_id(i)                := p_inst_hist_tbl(i).new_location_id ;
86 	p_inst_hist_rec_tab.old_inv_organization_id(i)        := p_inst_hist_tbl(i).old_inv_organization_id ;
87 	p_inst_hist_rec_tab.new_inv_organization_id(i)        := p_inst_hist_tbl(i).new_inv_organization_id ;
88 	p_inst_hist_rec_tab.old_inv_organization_name(i)      := p_inst_hist_tbl(i).old_inv_organization_name ;
89 	p_inst_hist_rec_tab.new_inv_organization_name(i)      := p_inst_hist_tbl(i).new_inv_organization_name ;
90 	p_inst_hist_rec_tab.old_inv_subinventory_name(i)      := p_inst_hist_tbl(i).old_inv_subinventory_name ;
91 	p_inst_hist_rec_tab.new_inv_subinventory_name(i)      := p_inst_hist_tbl(i).new_inv_subinventory_name ;
92 	p_inst_hist_rec_tab.old_inv_locator_id(i)             := p_inst_hist_tbl(i).old_inv_locator_id ;
93 	p_inst_hist_rec_tab.new_inv_locator_id(i)             := p_inst_hist_tbl(i).new_inv_locator_id ;
94 	p_inst_hist_rec_tab.old_pa_project_id(i)              := p_inst_hist_tbl(i).old_pa_project_id ;
95 	p_inst_hist_rec_tab.new_pa_project_id(i)              := p_inst_hist_tbl(i).new_pa_project_id ;
96 	p_inst_hist_rec_tab.old_pa_project_task_id(i)         := p_inst_hist_tbl(i).old_pa_project_task_id ;
97 	p_inst_hist_rec_tab.new_pa_project_task_id(i)         := p_inst_hist_tbl(i).new_pa_project_task_id ;
98 	p_inst_hist_rec_tab.old_pa_project_name(i)            := p_inst_hist_tbl(i).old_pa_project_name ;
99 	p_inst_hist_rec_tab.new_pa_project_name(i)            := p_inst_hist_tbl(i).new_pa_project_name ;
100 	p_inst_hist_rec_tab.old_pa_project_number(i)          := p_inst_hist_tbl(i).old_pa_project_number ;
101 	p_inst_hist_rec_tab.new_pa_project_number(i)          := p_inst_hist_tbl(i).new_pa_project_number ;
102 	p_inst_hist_rec_tab.old_pa_task_name(i)               := p_inst_hist_tbl(i).old_pa_task_name ;
103 	p_inst_hist_rec_tab.new_pa_task_name(i)               := p_inst_hist_tbl(i).new_pa_task_name ;
104 	p_inst_hist_rec_tab.old_pa_task_number(i)             := p_inst_hist_tbl(i).old_pa_task_number ;
105 	p_inst_hist_rec_tab.new_pa_task_number(i)             := p_inst_hist_tbl(i).new_pa_task_number ;
106 	p_inst_hist_rec_tab.old_in_transit_order_line_id(i)   := p_inst_hist_tbl(i).old_in_transit_order_line_id ;
107 	p_inst_hist_rec_tab.new_in_transit_order_line_id(i)   := p_inst_hist_tbl(i).new_in_transit_order_line_id ;
108 	p_inst_hist_rec_tab.old_in_transit_order_line_num(i)  := p_inst_hist_tbl(i).old_in_transit_order_line_num ;
109 	p_inst_hist_rec_tab.new_in_transit_order_line_num(i)  := p_inst_hist_tbl(i).new_in_transit_order_line_num ;
110 	p_inst_hist_rec_tab.old_in_transit_order_number(i)    := p_inst_hist_tbl(i).old_in_transit_order_number ;
111 	p_inst_hist_rec_tab.new_in_transit_order_number(i)    := p_inst_hist_tbl(i).new_in_transit_order_number ;
112 	p_inst_hist_rec_tab.old_wip_job_id(i)                 := p_inst_hist_tbl(i).old_wip_job_id ;
113 	p_inst_hist_rec_tab.new_wip_job_id(i)                 := p_inst_hist_tbl(i).new_wip_job_id ;
114 	p_inst_hist_rec_tab.old_wip_entity_name(i)            := p_inst_hist_tbl(i).old_wip_entity_name ;
115 	p_inst_hist_rec_tab.new_wip_entity_name(i)            := p_inst_hist_tbl(i).new_wip_entity_name ;
116 	p_inst_hist_rec_tab.old_po_order_line_id(i)           := p_inst_hist_tbl(i).old_po_order_line_id ;
117 	p_inst_hist_rec_tab.new_po_order_line_id(i)           := p_inst_hist_tbl(i).new_po_order_line_id ;
118 	p_inst_hist_rec_tab.old_last_oe_order_line_id(i)      := p_inst_hist_tbl(i).old_last_oe_order_line_id ;
119 	p_inst_hist_rec_tab.new_last_oe_order_line_id(i)      := p_inst_hist_tbl(i).new_last_oe_order_line_id ;
120 	p_inst_hist_rec_tab.old_last_oe_rma_line_id(i)        := p_inst_hist_tbl(i).old_last_oe_rma_line_id ;
121 	p_inst_hist_rec_tab.new_last_oe_rma_line_id(i)        := p_inst_hist_tbl(i).new_last_oe_rma_line_id ;
122 	p_inst_hist_rec_tab.old_last_po_po_line_id(i)         := p_inst_hist_tbl(i).old_last_po_po_line_id ;
123 	p_inst_hist_rec_tab.new_last_po_po_line_id(i)         := p_inst_hist_tbl(i).new_last_po_po_line_id ;
124 	p_inst_hist_rec_tab.old_last_oe_po_number(i)          := p_inst_hist_tbl(i).old_last_oe_po_number ;
125 	p_inst_hist_rec_tab.new_last_oe_po_number(i)          := p_inst_hist_tbl(i).new_last_oe_po_number ;
126 	p_inst_hist_rec_tab.old_last_wip_job_id(i)            := p_inst_hist_tbl(i).old_last_wip_job_id ;
127 	p_inst_hist_rec_tab.new_last_wip_job_id(i)            := p_inst_hist_tbl(i).new_last_wip_job_id ;
128 	p_inst_hist_rec_tab.old_last_pa_project_id(i)         := p_inst_hist_tbl(i).old_last_pa_project_id ;
129 	p_inst_hist_rec_tab.new_last_pa_project_id(i)         := p_inst_hist_tbl(i).new_last_pa_project_id ;
130 	p_inst_hist_rec_tab.old_last_pa_task_id(i)            := p_inst_hist_tbl(i).old_last_pa_task_id ;
131 	p_inst_hist_rec_tab.new_last_pa_task_id(i)            := p_inst_hist_tbl(i).new_last_pa_task_id ;
132 	p_inst_hist_rec_tab.old_last_oe_agreement_id(i)       := p_inst_hist_tbl(i).old_last_oe_agreement_id ;
133 	p_inst_hist_rec_tab.new_last_oe_agreement_id(i)       := p_inst_hist_tbl(i).new_last_oe_agreement_id ;
134 	p_inst_hist_rec_tab.old_install_date(i)               := p_inst_hist_tbl(i).old_install_date ;
135 	p_inst_hist_rec_tab.new_install_date(i)               := p_inst_hist_tbl(i).new_install_date ;
136 	p_inst_hist_rec_tab.old_manually_created_flag(i)      := p_inst_hist_tbl(i).old_manually_created_flag ;
137 	p_inst_hist_rec_tab.new_manually_created_flag(i)      := p_inst_hist_tbl(i).new_manually_created_flag ;
138 	p_inst_hist_rec_tab.old_return_by_date(i)             := p_inst_hist_tbl(i).old_return_by_date ;
139 	p_inst_hist_rec_tab.new_return_by_date(i)             := p_inst_hist_tbl(i).new_return_by_date ;
140 	p_inst_hist_rec_tab.old_actual_return_date(i)         := p_inst_hist_tbl(i).old_actual_return_date ;
141 	p_inst_hist_rec_tab.new_actual_return_date(i)         := p_inst_hist_tbl(i).new_actual_return_date ;
142 	p_inst_hist_rec_tab.old_creation_complete_flag(i)     := p_inst_hist_tbl(i).old_creation_complete_flag ;
143 	p_inst_hist_rec_tab.new_creation_complete_flag(i)     := p_inst_hist_tbl(i).new_creation_complete_flag ;
144 	p_inst_hist_rec_tab.old_completeness_flag(i)          := p_inst_hist_tbl(i).old_completeness_flag ;
145 	p_inst_hist_rec_tab.new_completeness_flag(i)          := p_inst_hist_tbl(i).new_completeness_flag ;
146 	p_inst_hist_rec_tab.old_context(i)                    := p_inst_hist_tbl(i).old_context ;
147 	p_inst_hist_rec_tab.new_context(i)                    := p_inst_hist_tbl(i).new_context ;
148 	p_inst_hist_rec_tab.old_attribute1(i)                 := p_inst_hist_tbl(i).old_attribute1 ;
149 	p_inst_hist_rec_tab.new_attribute1(i)                 := p_inst_hist_tbl(i).new_attribute1 ;
150 	p_inst_hist_rec_tab.old_attribute2(i)                 := p_inst_hist_tbl(i).old_attribute2 ;
151 	p_inst_hist_rec_tab.new_attribute2(i)                 := p_inst_hist_tbl(i).new_attribute2 ;
152 	p_inst_hist_rec_tab.old_attribute3(i)                 := p_inst_hist_tbl(i).old_attribute3 ;
153 	p_inst_hist_rec_tab.new_attribute3(i)                 := p_inst_hist_tbl(i).new_attribute3 ;
154 	p_inst_hist_rec_tab.old_attribute4(i)                 := p_inst_hist_tbl(i).old_attribute4 ;
155 	p_inst_hist_rec_tab.new_attribute4(i)                 := p_inst_hist_tbl(i).new_attribute4 ;
156 	p_inst_hist_rec_tab.old_attribute5(i)                 := p_inst_hist_tbl(i).old_attribute5 ;
157 	p_inst_hist_rec_tab.new_attribute5(i)                 := p_inst_hist_tbl(i).new_attribute5 ;
158 	p_inst_hist_rec_tab.old_attribute6(i)                 := p_inst_hist_tbl(i).old_attribute6 ;
159 	p_inst_hist_rec_tab.new_attribute6(i)                 := p_inst_hist_tbl(i).new_attribute6 ;
160 	p_inst_hist_rec_tab.old_attribute7(i)                 := p_inst_hist_tbl(i).old_attribute7 ;
161 	p_inst_hist_rec_tab.new_attribute7(i)                 := p_inst_hist_tbl(i).new_attribute7 ;
162 	p_inst_hist_rec_tab.old_attribute8(i)                 := p_inst_hist_tbl(i).old_attribute8 ;
163 	p_inst_hist_rec_tab.new_attribute8(i)                 := p_inst_hist_tbl(i).new_attribute8 ;
164 	p_inst_hist_rec_tab.old_attribute9(i)                 := p_inst_hist_tbl(i).old_attribute9 ;
165 	p_inst_hist_rec_tab.new_attribute9(i)                 := p_inst_hist_tbl(i).new_attribute9 ;
166 	p_inst_hist_rec_tab.old_attribute10(i)                := p_inst_hist_tbl(i).old_attribute10 ;
167 	p_inst_hist_rec_tab.new_attribute10(i)                := p_inst_hist_tbl(i).new_attribute10 ;
168 	p_inst_hist_rec_tab.old_attribute11(i)                := p_inst_hist_tbl(i).old_attribute11 ;
169 	p_inst_hist_rec_tab.new_attribute11(i)                := p_inst_hist_tbl(i).new_attribute11 ;
170 	p_inst_hist_rec_tab.old_attribute12(i)                := p_inst_hist_tbl(i).old_attribute12 ;
171 	p_inst_hist_rec_tab.new_attribute12(i)                := p_inst_hist_tbl(i).new_attribute12 ;
172 	p_inst_hist_rec_tab.old_attribute13(i)                := p_inst_hist_tbl(i).old_attribute13 ;
173 	p_inst_hist_rec_tab.new_attribute13(i)                := p_inst_hist_tbl(i).new_attribute13 ;
174 	p_inst_hist_rec_tab.old_attribute14(i)                := p_inst_hist_tbl(i).old_attribute14 ;
175 	p_inst_hist_rec_tab.new_attribute14(i)                := p_inst_hist_tbl(i).new_attribute14 ;
176 	p_inst_hist_rec_tab.old_attribute15(i)                := p_inst_hist_tbl(i).old_attribute15 ;
177 	p_inst_hist_rec_tab.new_attribute15(i)                := p_inst_hist_tbl(i).new_attribute15 ;
178 	p_inst_hist_rec_tab.old_last_txn_line_detail_id(i)    := p_inst_hist_tbl(i).old_last_txn_line_detail_id ;
179 	p_inst_hist_rec_tab.new_last_txn_line_detail_id(i)    := p_inst_hist_tbl(i).new_last_txn_line_detail_id ;
180 	p_inst_hist_rec_tab.old_install_location_type_code(i) := p_inst_hist_tbl(i).old_install_location_type_code ;
181 	p_inst_hist_rec_tab.new_install_location_type_code(i) := p_inst_hist_tbl(i).new_install_location_type_code ;
182 	p_inst_hist_rec_tab.old_install_location_id(i)        := p_inst_hist_tbl(i).old_install_location_id ;
183 	p_inst_hist_rec_tab.new_install_location_id(i)        := p_inst_hist_tbl(i).new_install_location_id ;
184 	p_inst_hist_rec_tab.old_instance_usage_code(i)        := p_inst_hist_tbl(i).old_instance_usage_code ;
185 	p_inst_hist_rec_tab.new_instance_usage_code(i)        := p_inst_hist_tbl(i).new_instance_usage_code ;
186 	p_inst_hist_rec_tab.old_current_loc_address1(i)       := p_inst_hist_tbl(i).old_current_loc_address1 ;
187 	p_inst_hist_rec_tab.new_current_loc_address1(i)       := p_inst_hist_tbl(i).new_current_loc_address1 ;
188 	p_inst_hist_rec_tab.old_current_loc_address2(i)       := p_inst_hist_tbl(i).old_current_loc_address2 ;
189 	p_inst_hist_rec_tab.new_current_loc_address2(i)       := p_inst_hist_tbl(i).new_current_loc_address2 ;
190 	p_inst_hist_rec_tab.old_current_loc_address3(i)       := p_inst_hist_tbl(i).old_current_loc_address3 ;
191 	p_inst_hist_rec_tab.new_current_loc_address3(i)       := p_inst_hist_tbl(i).new_current_loc_address3 ;
192 	p_inst_hist_rec_tab.old_current_loc_address4(i)       := p_inst_hist_tbl(i).old_current_loc_address4 ;
193 	p_inst_hist_rec_tab.new_current_loc_address4(i)       := p_inst_hist_tbl(i).new_current_loc_address4 ;
194 	p_inst_hist_rec_tab.old_current_loc_city(i)           := p_inst_hist_tbl(i).old_current_loc_city ;
195 	p_inst_hist_rec_tab.new_current_loc_city(i)           := p_inst_hist_tbl(i).new_current_loc_city ;
196 	p_inst_hist_rec_tab.old_current_loc_postal_code(i)    := p_inst_hist_tbl(i).old_current_loc_postal_code ;
197 	p_inst_hist_rec_tab.new_current_loc_postal_code(i)    := p_inst_hist_tbl(i).new_current_loc_postal_code ;
198 	p_inst_hist_rec_tab.old_current_loc_country(i)        := p_inst_hist_tbl(i).old_current_loc_country ;
199 	p_inst_hist_rec_tab.new_current_loc_country(i)        := p_inst_hist_tbl(i).new_current_loc_country ;
200 	p_inst_hist_rec_tab.old_sales_order_number(i)         := p_inst_hist_tbl(i).old_sales_order_number ;
201 	p_inst_hist_rec_tab.new_sales_order_number(i)         := p_inst_hist_tbl(i).new_sales_order_number ;
202 	p_inst_hist_rec_tab.old_sales_order_line_number(i)    := p_inst_hist_tbl(i).old_sales_order_line_number ;
203 	p_inst_hist_rec_tab.new_sales_order_line_number(i)    := p_inst_hist_tbl(i).new_sales_order_line_number ;
204 	p_inst_hist_rec_tab.old_sales_order_date(i)           := p_inst_hist_tbl(i).old_sales_order_date ;
205 	p_inst_hist_rec_tab.new_sales_order_date(i)           := p_inst_hist_tbl(i).new_sales_order_date ;
206 	p_inst_hist_rec_tab.old_purchase_order_number(i)      := p_inst_hist_tbl(i).old_purchase_order_number ;
207 	p_inst_hist_rec_tab.new_purchase_order_number(i)      := p_inst_hist_tbl(i).new_purchase_order_number ;
208 	p_inst_hist_rec_tab.old_instance_usage_name(i)        := p_inst_hist_tbl(i).old_instance_usage_name ;
209 	p_inst_hist_rec_tab.new_instance_usage_name(i)        := p_inst_hist_tbl(i).new_instance_usage_name ;
210 	p_inst_hist_rec_tab.old_current_loc_state(i)          := p_inst_hist_tbl(i).old_current_loc_state ;
211 	p_inst_hist_rec_tab.new_current_loc_state(i)          := p_inst_hist_tbl(i).new_current_loc_state ;
212 	p_inst_hist_rec_tab.old_install_loc_address1(i)       := p_inst_hist_tbl(i).old_install_loc_address1 ;
213 	p_inst_hist_rec_tab.new_install_loc_address1(i)       := p_inst_hist_tbl(i).new_install_loc_address1 ;
214 	p_inst_hist_rec_tab.old_install_loc_address2(i)       := p_inst_hist_tbl(i).old_install_loc_address2 ;
215 	p_inst_hist_rec_tab.new_install_loc_address2(i)       := p_inst_hist_tbl(i).new_install_loc_address2 ;
216 	p_inst_hist_rec_tab.old_install_loc_address3(i)       := p_inst_hist_tbl(i).old_install_loc_address3 ;
217 	p_inst_hist_rec_tab.new_install_loc_address3(i)       := p_inst_hist_tbl(i).new_install_loc_address3 ;
218 	p_inst_hist_rec_tab.old_install_loc_address4(i)       := p_inst_hist_tbl(i).old_install_loc_address4 ;
219 	p_inst_hist_rec_tab.new_install_loc_address4(i)       := p_inst_hist_tbl(i).new_install_loc_address4 ;
220 	p_inst_hist_rec_tab.old_install_loc_city(i)           := p_inst_hist_tbl(i).old_install_loc_city ;
221 	p_inst_hist_rec_tab.new_install_loc_city(i)           := p_inst_hist_tbl(i).new_install_loc_city ;
222 	p_inst_hist_rec_tab.old_install_loc_state(i)          := p_inst_hist_tbl(i).old_install_loc_state ;
223 	p_inst_hist_rec_tab.new_install_loc_state(i)          := p_inst_hist_tbl(i).new_install_loc_state ;
224 	p_inst_hist_rec_tab.old_install_loc_postal_code(i)    := p_inst_hist_tbl(i).old_install_loc_postal_code ;
225 	p_inst_hist_rec_tab.new_install_loc_postal_code(i)    := p_inst_hist_tbl(i).new_install_loc_postal_code ;
226 	p_inst_hist_rec_tab.old_install_loc_country(i)        := p_inst_hist_tbl(i).old_install_loc_country ;
227 	p_inst_hist_rec_tab.new_install_loc_country(i)        := p_inst_hist_tbl(i).new_install_loc_country ;
228 	p_inst_hist_rec_tab.old_config_inst_rev_num(i)        := p_inst_hist_tbl(i).old_config_inst_rev_num ;
229 	p_inst_hist_rec_tab.new_config_inst_rev_num(i)        := p_inst_hist_tbl(i).new_config_inst_rev_num ;
230 	p_inst_hist_rec_tab.old_config_valid_status(i)        := p_inst_hist_tbl(i).old_config_valid_status ;
231 	p_inst_hist_rec_tab.new_config_valid_status(i)        := p_inst_hist_tbl(i).new_config_valid_status ;
232 	p_inst_hist_rec_tab.old_instance_description(i)       := p_inst_hist_tbl(i).old_instance_description ;
233 	p_inst_hist_rec_tab.new_instance_description(i)       := p_inst_hist_tbl(i).new_instance_description ;
234 	p_inst_hist_rec_tab.instance_history_id(i)            := p_inst_hist_tbl(i).instance_history_id ;
235 	p_inst_hist_rec_tab.transaction_id(i)                 := p_inst_hist_tbl(i).transaction_id ;
236 	p_inst_hist_rec_tab.old_last_vld_organization_id(i)   := p_inst_hist_tbl(i).old_last_vld_organization_id ;
237 	p_inst_hist_rec_tab.new_last_vld_organization_id(i)   := p_inst_hist_tbl(i).new_last_vld_organization_id ;
238 	p_inst_hist_rec_tab.old_network_asset_flag(i)         := p_inst_hist_tbl(i).old_network_asset_flag ;
239 	p_inst_hist_rec_tab.new_network_asset_flag(i)         := p_inst_hist_tbl(i).new_network_asset_flag ;
240 	p_inst_hist_rec_tab.old_maintainable_flag(i)          := p_inst_hist_tbl(i).old_maintainable_flag ;
241 	p_inst_hist_rec_tab.new_maintainable_flag(i)          := p_inst_hist_tbl(i).new_maintainable_flag ;
242 	p_inst_hist_rec_tab.old_pn_location_id(i)             := p_inst_hist_tbl(i).old_pn_location_id;
243 	p_inst_hist_rec_tab.new_pn_location_id(i)             := p_inst_hist_tbl(i).new_pn_location_id;
244 	p_inst_hist_rec_tab.old_asset_criticality_code(i)     := p_inst_hist_tbl(i).old_asset_criticality_code ;
245 	p_inst_hist_rec_tab.new_asset_criticality_code(i)     := p_inst_hist_tbl(i).new_asset_criticality_code ;
246 	p_inst_hist_rec_tab.old_category_id(i)                := p_inst_hist_tbl(i).old_category_id ;
247 	p_inst_hist_rec_tab.new_category_id(i)                := p_inst_hist_tbl(i).new_category_id ;
248 	p_inst_hist_rec_tab.old_equipment_gen_object_id(i)    := p_inst_hist_tbl(i).old_equipment_gen_object_id ;
249 	p_inst_hist_rec_tab.new_equipment_gen_object_id(i)    := p_inst_hist_tbl(i).new_equipment_gen_object_id ;
250 	p_inst_hist_rec_tab.old_instantiation_flag(i)         := p_inst_hist_tbl(i).old_instantiation_flag ;
251 	p_inst_hist_rec_tab.new_instantiation_flag(i)         := p_inst_hist_tbl(i).new_instantiation_flag ;
252 	p_inst_hist_rec_tab.old_linear_location_id(i)         := p_inst_hist_tbl(i).old_linear_location_id;
253 	p_inst_hist_rec_tab.new_linear_location_id(i)         := p_inst_hist_tbl(i).new_linear_location_id;
254 	p_inst_hist_rec_tab.old_operational_log_flag(i)       := p_inst_hist_tbl(i).old_operational_log_flag ;
255 	p_inst_hist_rec_tab.new_operational_log_flag(i)       := p_inst_hist_tbl(i).new_operational_log_flag ;
256 	p_inst_hist_rec_tab.old_checkin_status(i)             := p_inst_hist_tbl(i).old_checkin_status;
257 	p_inst_hist_rec_tab.new_checkin_status(i)             := p_inst_hist_tbl(i).new_checkin_status;
258 	p_inst_hist_rec_tab.old_supplier_warranty_exp_date(i) := p_inst_hist_tbl(i).old_supplier_warranty_exp_date ;
259 	p_inst_hist_rec_tab.new_supplier_warranty_exp_date(i) := p_inst_hist_tbl(i).new_supplier_warranty_exp_date ;
260 	p_inst_hist_rec_tab.old_attribute16(i)                := p_inst_hist_tbl(i).old_attribute16 ;
261 	p_inst_hist_rec_tab.new_attribute16(i)                := p_inst_hist_tbl(i).new_attribute16 ;
262 	p_inst_hist_rec_tab.old_attribute17(i)                := p_inst_hist_tbl(i).old_attribute17 ;
263 	p_inst_hist_rec_tab.new_attribute17(i)                := p_inst_hist_tbl(i).new_attribute17 ;
264 	p_inst_hist_rec_tab.old_attribute18(i)                := p_inst_hist_tbl(i).old_attribute18 ;
265 	p_inst_hist_rec_tab.new_attribute18(i)                := p_inst_hist_tbl(i).new_attribute18 ;
266 	p_inst_hist_rec_tab.old_attribute19(i)                := p_inst_hist_tbl(i).old_attribute19 ;
267 	p_inst_hist_rec_tab.new_attribute19(i)                := p_inst_hist_tbl(i).new_attribute19 ;
268 	p_inst_hist_rec_tab.old_attribute20(i)                := p_inst_hist_tbl(i).old_attribute20 ;
269 	p_inst_hist_rec_tab.new_attribute20(i)                := p_inst_hist_tbl(i).new_attribute20 ;
270 	p_inst_hist_rec_tab.old_attribute21(i)                := p_inst_hist_tbl(i).old_attribute21 ;
271 	p_inst_hist_rec_tab.new_attribute21(i)                := p_inst_hist_tbl(i).new_attribute21 ;
272 	p_inst_hist_rec_tab.old_attribute22(i)                := p_inst_hist_tbl(i).old_attribute22 ;
273 	p_inst_hist_rec_tab.new_attribute22(i)                := p_inst_hist_tbl(i).new_attribute22 ;
274 	p_inst_hist_rec_tab.old_attribute23(i)                := p_inst_hist_tbl(i).old_attribute23 ;
275 	p_inst_hist_rec_tab.new_attribute23(i)                := p_inst_hist_tbl(i).new_attribute23 ;
276 	p_inst_hist_rec_tab.old_attribute24(i)                := p_inst_hist_tbl(i).old_attribute24 ;
277 	p_inst_hist_rec_tab.new_attribute24(i)                := p_inst_hist_tbl(i).new_attribute24 ;
278 	p_inst_hist_rec_tab.old_attribute25(i)                := p_inst_hist_tbl(i).old_attribute25 ;
279 	p_inst_hist_rec_tab.new_attribute25(i)                := p_inst_hist_tbl(i).new_attribute25 ;
280 	p_inst_hist_rec_tab.old_attribute26(i)                := p_inst_hist_tbl(i).old_attribute26 ;
281 	p_inst_hist_rec_tab.new_attribute26(i)                := p_inst_hist_tbl(i).new_attribute26 ;
282 	p_inst_hist_rec_tab.old_attribute27(i)                := p_inst_hist_tbl(i).old_attribute27 ;
283 	p_inst_hist_rec_tab.new_attribute27(i)                := p_inst_hist_tbl(i).new_attribute27 ;
284 	p_inst_hist_rec_tab.old_attribute28(i)                := p_inst_hist_tbl(i).old_attribute28 ;
285 	p_inst_hist_rec_tab.new_attribute28(i)                := p_inst_hist_tbl(i).new_attribute28 ;
286 	p_inst_hist_rec_tab.old_attribute29(i)                := p_inst_hist_tbl(i).old_attribute29 ;
287 	p_inst_hist_rec_tab.new_attribute29(i)                := p_inst_hist_tbl(i).new_attribute29 ;
288 	p_inst_hist_rec_tab.old_attribute30(i)                := p_inst_hist_tbl(i).old_attribute30 ;
289 	p_inst_hist_rec_tab.new_attribute30(i)                := p_inst_hist_tbl(i).new_attribute30 ;
290 	p_inst_hist_rec_tab.old_payables_currency_code(i)     := p_inst_hist_tbl(i).old_payables_currency_code ;
291 	p_inst_hist_rec_tab.new_payables_currency_code(i)     := p_inst_hist_tbl(i).new_payables_currency_code ;
292 	p_inst_hist_rec_tab.old_purchase_unit_price(i)        := p_inst_hist_tbl(i).old_purchase_unit_price ;
293 	p_inst_hist_rec_tab.new_purchase_unit_price(i)        := p_inst_hist_tbl(i).new_purchase_unit_price ;
294 	p_inst_hist_rec_tab.old_purchase_currency_code(i)     := p_inst_hist_tbl(i).old_purchase_currency_code ;
295 	p_inst_hist_rec_tab.new_purchase_currency_code(i)     := p_inst_hist_tbl(i).new_purchase_currency_code ;
296 	p_inst_hist_rec_tab.old_payables_unit_price(i)        := p_inst_hist_tbl(i).old_payables_unit_price ;
297 	p_inst_hist_rec_tab.new_payables_unit_price(i)        := p_inst_hist_tbl(i).new_payables_unit_price ;
298 	p_inst_hist_rec_tab.old_sales_unit_price(i)           := p_inst_hist_tbl(i).old_sales_unit_price ;
299 	p_inst_hist_rec_tab.new_sales_unit_price(i)           := p_inst_hist_tbl(i).new_sales_unit_price ;
300 	p_inst_hist_rec_tab.old_sales_currency_code(i)        := p_inst_hist_tbl(i).old_sales_currency_code ;
301 	p_inst_hist_rec_tab.new_sales_currency_code(i)        := p_inst_hist_tbl(i).new_sales_currency_code ;
302 	p_inst_hist_rec_tab.old_operational_status_code(i)    := p_inst_hist_tbl(i).old_operational_status_code ;
303 	p_inst_hist_rec_tab.new_operational_status_code(i)    := p_inst_hist_tbl(i).new_operational_status_code ;
304 	p_inst_hist_rec_tab.full_dump_flag(i)                 := p_inst_hist_tbl(i).full_dump_flag ;
305         END LOOP;
306 END Build_Inst_Hist_Rec_of_Table;
307 --End of: Added for bug 5615169
308 
309 /*-------------------------------------------------------------*/
310 /* Function name:  Is_Parent                                   */
311 /* Description :   This function is used in Explode_Bom to     */
312 /*                 check whether the given component qualifies */
313 /*                 as a parent or not.                         */
314 /*-------------------------------------------------------------*/
315 FUNCTION Is_Parent(
316                     p_child_sort_order   IN  VARCHAR2
317                    ,p_parent_child_tbl   IN  csi_item_instance_pvt.parent_child_tbl
318                   ) return BOOLEAN IS
319 --
320    l_return_status   BOOLEAN := TRUE;
321 --
322 BEGIN
323    IF p_parent_child_tbl.count > 0 THEN
324       l_return_status := FALSE;
325       For par_row in p_parent_child_tbl.FIRST .. p_parent_child_tbl.LAST
326       Loop
327          IF p_parent_child_tbl(par_row).parent_sort_order = p_child_sort_order THEN
328             l_return_status := TRUE;
329             EXIT;
330          END IF;
331       End Loop;
332       --
333    ELSE
334       l_return_status := FALSE;
335    END IF;
336    --
337    return l_return_status;
338 END Is_Parent;
339 --
340 /*-------------------------------------------------------------*/
341 /* Procedure name:  Get_parent_sort_order                      */
342 /* Description :   This procedure is used in Explode_Bom to    */
343 /*                 get the immediate trackable parent for any  */
344 /*                 given component.                            */
345 /*-------------------------------------------------------------*/
346 PROCEDURE Get_parent_sort_order
347    (
348      p_parent_sort_order   IN OUT NOCOPY VARCHAR2
349     ,p_parent_child_tbl    IN csi_item_instance_pvt.parent_child_tbl
350     ,p_bom_sort_order_tbl  IN csi_item_instance_pvt.bom_sort_order_tbl
351    ) IS
352    l_exists_flag       VARCHAR2(1) := 'N';
353    l_init_sort_code    VARCHAR2(2000);
354 BEGIN
355    l_init_sort_code := Bom_Common_Definitions.get_initial_sort_code;
356    -- Check the passed parent_sort_order exists in ins_tbl.
357    -- This means the parent is trackable and the OUT parent_sort_order is same as IN
358    IF p_parent_sort_order = l_init_sort_code THEN
359 	 RETURN;
360    END IF;
361    --
362    IF p_bom_sort_order_tbl.count > 0 THEN
363       For ins_row in p_bom_sort_order_tbl.FIRST .. p_bom_sort_order_tbl.LAST
364 	 Loop
365 	    IF p_bom_sort_order_tbl(ins_row).child_sort_order = p_parent_sort_order THEN
366 		  -- Parent is trackable
367 		  l_exists_flag := 'Y';
368 		  EXIT;
369 	    END IF;
370 	 End Loop;
371 	 --
372 	 IF l_exists_flag = 'Y' THEN
373 	    RETURN;
374 	 END IF;
375    END IF;
376    --
377    -- Check the next immediate parent
378    For tab_row in p_parent_child_tbl.FIRST .. p_parent_child_tbl.LAST
379    Loop
380       IF p_parent_child_tbl(tab_row).child_sort_order = p_parent_sort_order THEN
381 	 p_parent_sort_order := p_parent_child_tbl(tab_row).parent_sort_order;
382 	 EXIT;
383       END IF;
384    End Loop;
385    --
386    -- Call this recursively
387    csi_item_instance_pvt.Get_parent_sort_order
388 	(
389 	  p_parent_sort_order  => p_parent_sort_order
390          ,p_parent_child_tbl   => p_parent_child_tbl
391          ,p_bom_sort_order_tbl => p_bom_sort_order_tbl
392         );
393 END Get_Parent_Sort_Order;
394 --
395 /*-------------------------------------------------------------*/
396 /* Function name:  Has_Trackable_Component                     */
397 /* Description :   This function is used in Explode_Bom to     */
398 /*                 check whether the given sub-assembly has    */
399 /*                 at least one trackable child or not.        */
400 /*-------------------------------------------------------------*/
401 FUNCTION Has_Trackable_Component
402    (
403      p_inventory_item_id   IN NUMBER
404     ,p_organization_id     IN NUMBER
405     ,p_explosion_level     IN NUMBER
406    ) RETURN BOOLEAN IS
407    --
408    l_return_status      BOOLEAN;
409    l_exists_flag        VARCHAR2(1);
410    l_group_id           NUMBER;
411    l_err_msg            VARCHAR2(2000) := NULL;
412    l_error_code         VARCHAR2(30) := NULL;
413    --
414    process_next         EXCEPTION;
415    --
416    CURSOR BOM_CSR (p_group_id NUMBER)
417    IS
418    SELECT   bet.component_item_id component_item_id
419            ,mp.master_organization_id master_organization_id
420    FROM     bom_small_expl_temp bet
421 	   ,bom_bill_of_materials bom
422 	   ,mtl_system_items msi
423 	   ,mtl_system_items msip
424 	   ,mtl_parameters mp
425    WHERE    bet.group_id = p_group_id
426    AND      bet.plan_level > 0               -- Ignore Top Most
427    AND      bet.component_item_id = msi.inventory_item_id
428    AND      bet.organization_id = msi.organization_id
429    AND      bet.bill_sequence_id = bom.bill_sequence_id
430    AND      bet.extended_quantity > 0
431    AND      bom.assembly_item_id = msip.inventory_item_id
432    AND      bom.organization_id = msip.organization_id
433    AND      msi.organization_id = mp.organization_id
434    ORDER BY bet.sort_order;
435 BEGIN
436    IF p_explosion_level <= 0 THEN
437       l_return_status := FALSE;
438       RETURN l_return_status;
439    END IF;
440    --
441    SELECT Bom_Explosion_Temp_S.NextVal
442    INTO   l_group_id
443    FROM   sys.dual;
444 
445    Bompxinq.Exploder_Userexit(
446 	   grp_id            => l_group_id,
447 	   org_id            => p_organization_id,
448 	   item_id           => p_inventory_item_id,
449 	   unit_number_from  => '',
450 	   unit_number_to    => '',
451 	   levels_to_explode => p_explosion_level,
452 	   expl_qty          => 1,
453 	   show_rev          => 1,
454 	   material_ctrl     => 1,
455 	   err_msg           => l_err_msg,
456 	   error_code        => l_error_code);
457    IF l_Error_Code <> 0 THEN
458       csi_gen_utility_pvt.put_line (' Bom explosion error code <> 0 '|| l_Error_Code ||'  '||l_err_msg);
459       IF l_Error_Code < 0 THEN
460          csi_gen_utility_pvt.put_line (' Bom explosion error code > 0 '|| l_Error_Code ||'  '||l_err_msg);
461       ELSIF l_Error_Code > 0 THEN
462          csi_gen_utility_pvt.put_line (' Bom explosion error code < 0'|| l_Error_Code ||'  '||l_err_msg);
463       END IF;
464       FND_MESSAGE.SET_NAME('CSI','CSI_API_CORE_BOM_EXPL_ERROR');
465       FND_MSG_PUB.Add;
466       l_return_status := FALSE;
467       RETURN l_return_status;
468    END IF;
469    --
470    l_exists_flag := 'N';
471    For v_rec in BOM_CSR(l_group_id)
472    Loop
473       Begin
474          IF v_rec.component_item_id = p_inventory_item_id THEN
475             Raise Process_next;
476          END IF;
477          --
478          IF csi_item_instance_vld_pvt.Is_Trackable
479                         (p_inv_item_id => v_rec.component_item_id,
480                          p_org_id => v_rec.master_organization_id,
481                          p_stack_err_msg => FALSE) THEN
482             l_exists_flag := 'Y';
483             EXIT;
484          END IF;
485       Exception
486          when process_next then
487             null;
488       End;
489    End Loop;
490    --
491    -- Delete records from bom_small_exp_temp
492    DELETE FROM bom_small_expl_temp where group_id = l_group_id;
493    --
494    IF l_exists_flag = 'Y' THEN
495       l_return_status := TRUE;
496    ELSE
497       l_return_status := FALSE;
498    END IF;
499    --
500    RETURN l_return_status;
501 END Has_Trackable_Component;
502 --
503 /*---------------------------------------------------------*/
504 /* Procedure name:  Initialize_inst_rec                    */
505 /* Description :    This procudure recontructs the record  */
506 /*                  from the history                       */
507 /*---------------------------------------------------------*/
508 
509 PROCEDURE Initialize_inst_rec
510 (
511   x_instance_rec           IN OUT NOCOPY csi_datastructures_pub.instance_header_rec,
512   p_instance_hist_id       IN NUMBER ,
513   x_nearest_full_dump      IN OUT NOCOPY DATE
514   ) IS
515 
516 CURSOR Int_nearest_full_dump(p_instance_hist_id IN NUMBER ) IS
517 SELECT
518      CREATION_DATE
519     ,NEW_INSTANCE_NUMBER
520     ,NEW_EXTERNAL_REFERENCE
521     ,NEW_INVENTORY_ITEM_ID
522     ,NEW_INVENTORY_REVISION
523     ,NEW_INV_MASTER_ORGANIZATION_ID
524     ,NEW_SERIAL_NUMBER
525     ,NEW_MFG_SERIAL_NUMBER_FLAG
526     ,NEW_LOT_NUMBER
527     ,NEW_QUANTITY
528     ,NEW_UNIT_OF_MEASURE
529     ,NEW_ACCOUNTING_CLASS_CODE
530     ,NEW_INSTANCE_CONDITION_ID
531     ,NEW_INSTANCE_STATUS_ID
532     ,NEW_CUSTOMER_VIEW_FLAG
533     ,NEW_MERCHANT_VIEW_FLAG
534     ,NEW_SELLABLE_FLAG
535     ,NEW_SYSTEM_ID
536     ,NEW_INSTANCE_TYPE_CODE
537     ,NEW_ACTIVE_START_DATE
538     ,NEW_ACTIVE_END_DATE
539     ,NEW_LOCATION_TYPE_CODE
540     ,NEW_LOCATION_ID
541     ,NEW_INV_ORGANIZATION_ID
542     ,NEW_INV_SUBINVENTORY_NAME
543     ,NEW_INV_LOCATOR_ID
544     ,NEW_PA_PROJECT_ID
545     ,NEW_PA_PROJECT_TASK_ID
546     ,NEW_IN_TRANSIT_ORDER_LINE_ID
547     ,NEW_WIP_JOB_ID
548     ,NEW_PO_ORDER_LINE_ID
549     ,NEW_COMPLETENESS_FLAG
550     ,NEW_CONTEXT
551     ,NEW_ATTRIBUTE1
552     ,NEW_ATTRIBUTE2
553     ,NEW_ATTRIBUTE3
554     ,NEW_ATTRIBUTE4
555     ,NEW_ATTRIBUTE5
556     ,NEW_ATTRIBUTE6
557     ,NEW_ATTRIBUTE7
558     ,NEW_ATTRIBUTE8
559     ,NEW_ATTRIBUTE9
560     ,NEW_ATTRIBUTE10
561     ,NEW_ATTRIBUTE11
562     ,NEW_ATTRIBUTE12
563     ,NEW_ATTRIBUTE13
564     ,NEW_ATTRIBUTE14
565     ,NEW_ATTRIBUTE15
566     ,NEW_INST_LOC_TYPE_CODE
567     ,NEW_INST_LOC_ID
568     ,NEW_INST_USAGE_CODE
569     ,NEW_LAST_OE_ORDER_LINE_ID
570     ,NEW_LAST_OE_RMA_LINE_ID
571     ,NEW_LAST_WIP_JOB_ID
572     ,NEW_LAST_PO_PO_LINE_ID
573     ,NEW_LAST_PA_PROJECT_ID
574     ,NEW_LAST_PA_TASK_ID
575     ,NEW_LAST_TXN_LINE_DETAIL_ID
576     ,NEW_LAST_OE_PO_NUMBER
577     ,NEW_OE_AGREEMENT_ID
578     --start of column addition for eam integration--
579     ,NEW_NETWORK_ASSET_FLAG
580     ,NEW_MAINTAINABLE_FLAG
581     ,NEW_PN_LOCATION_ID
582     ,NEW_ASSET_CRITICALITY_CODE
583     ,NEW_CATEGORY_ID
584     ,NEW_EQUIPMENT_GEN_OBJECT_ID
585     ,NEW_INSTANTIATION_FLAG
586     ,NEW_LINEAR_LOCATION_ID
587     ,NEW_OPERATIONAL_LOG_FLAG
588     ,NEW_CHECKIN_STATUS
589     ,NEW_SUPPLIER_WARRANTY_EXP_DATE
590     ,NEW_ATTRIBUTE16
591     ,NEW_ATTRIBUTE17
592     ,NEW_ATTRIBUTE18
593     ,NEW_ATTRIBUTE19
594     ,NEW_ATTRIBUTE20
595     ,NEW_ATTRIBUTE21
596     ,NEW_ATTRIBUTE22
597     ,NEW_ATTRIBUTE23
598     ,NEW_ATTRIBUTE24
599     ,NEW_ATTRIBUTE25
600     ,NEW_ATTRIBUTE26
601     ,NEW_ATTRIBUTE27
602     ,NEW_ATTRIBUTE28
603     ,NEW_ATTRIBUTE29
604     ,NEW_ATTRIBUTE30
605     --end of column addition for eam integration--
606     -- Addition of columns for FA Integration
607     ,NEW_PURCHASE_UNIT_PRICE
608     ,NEW_PURCHASE_CURRENCY_CODE
609     ,NEW_PAYABLES_UNIT_PRICE
610     ,NEW_PAYABLES_CURRENCY_CODE
611     ,NEW_SALES_UNIT_PRICE
612     ,NEW_SALES_CURRENCY_CODE
613     ,NEW_OPERATIONAL_STATUS_CODE
614     -- End addition of columns for FA Integration
615 FROM CSI_ITEM_INSTANCES_H
616 WHERE instance_history_id = p_instance_hist_id
617  AND  full_dump_flag = 'Y' ;
618 
619 BEGIN
620 
621   FOR C1 IN Int_nearest_full_dump(p_instance_hist_id) LOOP
622     x_nearest_full_dump                         := C1.creation_date;
623     x_instance_rec.INSTANCE_NUMBER              := C1.NEW_INSTANCE_NUMBER;
624     x_instance_rec.EXTERNAL_REFERENCE           := C1.NEW_EXTERNAL_REFERENCE;
625     x_instance_rec.INVENTORY_ITEM_ID            := C1.NEW_INVENTORY_ITEM_ID;
626     x_instance_rec.INVENTORY_REVISION           := C1.NEW_INVENTORY_REVISION;
627     x_instance_rec.INV_MASTER_ORGANIZATION_ID   := C1.NEW_INV_MASTER_ORGANIZATION_ID;
628     x_instance_rec.SERIAL_NUMBER                := C1.NEW_SERIAL_NUMBER;
629     x_instance_rec.MFG_SERIAL_NUMBER_FLAG       := C1.NEW_MFG_SERIAL_NUMBER_FLAG;
630     x_instance_rec.LOT_NUMBER                   := C1.NEW_LOT_NUMBER;
631     x_instance_rec.QUANTITY                     := C1.NEW_QUANTITY;
632     x_instance_rec.UNIT_OF_MEASURE              := C1.NEW_UNIT_OF_MEASURE;
633     x_instance_rec.ACCOUNTING_CLASS_CODE        := C1.NEW_ACCOUNTING_CLASS_CODE;
634     x_instance_rec.INSTANCE_CONDITION_ID        := C1.NEW_INSTANCE_CONDITION_ID;
635     x_instance_rec.INSTANCE_STATUS_ID           := C1.NEW_INSTANCE_STATUS_ID;
636     x_instance_rec.CUSTOMER_VIEW_FLAG           := C1.NEW_CUSTOMER_VIEW_FLAG;
637     x_instance_rec.MERCHANT_VIEW_FLAG           := C1.NEW_MERCHANT_VIEW_FLAG;
638     x_instance_rec.SELLABLE_FLAG                := C1.NEW_SELLABLE_FLAG;
639     x_instance_rec.SYSTEM_ID                    := C1.NEW_SYSTEM_ID;
640     x_instance_rec.INSTANCE_TYPE_CODE           := C1.NEW_INSTANCE_TYPE_CODE;
641     x_instance_rec.ACTIVE_START_DATE            := C1.NEW_ACTIVE_START_DATE;
642     x_instance_rec.ACTIVE_END_DATE              := C1.NEW_ACTIVE_END_DATE;
643     x_instance_rec.LOCATION_TYPE_CODE           := C1.NEW_LOCATION_TYPE_CODE;
644     x_instance_rec.LOCATION_ID                  := C1.NEW_LOCATION_ID;
645     x_instance_rec.INV_ORGANIZATION_ID          := C1.NEW_INV_ORGANIZATION_ID;
646     x_instance_rec.INV_SUBINVENTORY_NAME        := C1.NEW_INV_SUBINVENTORY_NAME;
647     x_instance_rec.INV_LOCATOR_ID               := C1.NEW_INV_LOCATOR_ID;
648     x_instance_rec.PA_PROJECT_ID                := C1.NEW_PA_PROJECT_ID;
649     x_instance_rec.PA_PROJECT_TASK_ID           := C1.NEW_PA_PROJECT_TASK_ID;
650     x_instance_rec.IN_TRANSIT_ORDER_LINE_ID     := C1.NEW_IN_TRANSIT_ORDER_LINE_ID;
651     x_instance_rec.WIP_JOB_ID                   := C1.NEW_WIP_JOB_ID;
652     x_instance_rec.PO_ORDER_LINE_ID             := C1.NEW_PO_ORDER_LINE_ID;
653     x_instance_rec.COMPLETENESS_FLAG            := C1.NEW_COMPLETENESS_FLAG;
654     x_instance_rec.CONTEXT                      := C1.NEW_CONTEXT;
655     x_instance_rec.ATTRIBUTE1                   := C1.NEW_ATTRIBUTE1;
656     x_instance_rec.ATTRIBUTE2                   := C1.NEW_ATTRIBUTE2;
657     x_instance_rec.ATTRIBUTE3                   := C1.NEW_ATTRIBUTE3;
658     x_instance_rec.ATTRIBUTE4                   := C1.NEW_ATTRIBUTE4;
659     x_instance_rec.ATTRIBUTE5                   := C1.NEW_ATTRIBUTE5;
660     x_instance_rec.ATTRIBUTE6                   := C1.NEW_ATTRIBUTE6;
661     x_instance_rec.ATTRIBUTE7                   := C1.NEW_ATTRIBUTE7;
662     x_instance_rec.ATTRIBUTE8                   := C1.NEW_ATTRIBUTE8;
663     x_instance_rec.ATTRIBUTE9                   := C1.NEW_ATTRIBUTE9;
664     x_instance_rec.ATTRIBUTE10                  := C1.NEW_ATTRIBUTE10;
665     x_instance_rec.ATTRIBUTE11                  := C1.NEW_ATTRIBUTE11;
666     x_instance_rec.ATTRIBUTE12                  := C1.NEW_ATTRIBUTE12;
667     x_instance_rec.ATTRIBUTE13                  := C1.NEW_ATTRIBUTE13;
668     x_instance_rec.ATTRIBUTE14                  := C1.NEW_ATTRIBUTE14;
669     x_instance_rec.ATTRIBUTE15                  := C1.NEW_ATTRIBUTE15;
670     x_instance_rec.INSTALL_LOCATION_TYPE_CODE   := C1.NEW_INST_LOC_TYPE_CODE;
671     x_instance_rec.INSTALL_LOCATION_ID          := C1.NEW_INST_LOC_ID;
672     x_instance_rec.INSTANCE_USAGE_CODE          := C1.NEW_INST_USAGE_CODE;
673     x_instance_rec.LAST_OE_ORDER_LINE_ID        := C1.NEW_LAST_OE_ORDER_LINE_ID;
674     x_instance_rec.LAST_OE_RMA_LINE_ID          := C1.NEW_LAST_OE_RMA_LINE_ID;
675     x_instance_rec.LAST_WIP_JOB_ID              := C1.NEW_LAST_WIP_JOB_ID;
676     x_instance_rec.LAST_PO_PO_LINE_ID           := C1.NEW_LAST_PO_PO_LINE_ID;
677     x_instance_rec.LAST_PA_PROJECT_ID           := C1.NEW_LAST_PA_PROJECT_ID;
678     x_instance_rec.LAST_PA_TASK_ID              := C1.NEW_LAST_PA_TASK_ID;
679     x_instance_rec.LAST_TXN_LINE_DETAIL_ID      := C1.NEW_LAST_TXN_LINE_DETAIL_ID;
680     x_instance_rec.LAST_OE_PO_NUMBER            := C1.NEW_LAST_OE_PO_NUMBER;
681     x_instance_rec.LAST_OE_AGREEMENT_ID         := C1.NEW_OE_AGREEMENT_ID;
682     --start of code for eam integration--
683     x_instance_rec.NETWORK_ASSET_FLAG           := C1.NEW_NETWORK_ASSET_FLAG;
684     x_instance_rec.MAINTAINABLE_FLAG            := C1.NEW_MAINTAINABLE_FLAG;
685     x_instance_rec.PN_LOCATION_ID               := C1.NEW_PN_LOCATION_ID;
686     x_instance_rec.ASSET_CRITICALITY_CODE       := C1.NEW_ASSET_CRITICALITY_CODE;
687     x_instance_rec.CATEGORY_ID                  := C1.NEW_CATEGORY_ID;
688     x_instance_rec.EQUIPMENT_GEN_OBJECT_ID      := C1.NEW_EQUIPMENT_GEN_OBJECT_ID;
689     x_instance_rec.INSTANTIATION_FLAG           := C1.NEW_INSTANTIATION_FLAG;
690     x_instance_rec.LINEAR_LOCATION_ID           := C1.NEW_LINEAR_LOCATION_ID;
691     x_instance_rec.OPERATIONAL_LOG_FLAG         := C1.NEW_OPERATIONAL_LOG_FLAG;
692     x_instance_rec.CHECKIN_STATUS               := C1.NEW_CHECKIN_STATUS;
693     x_instance_rec.SUPPLIER_WARRANTY_EXP_DATE   := C1.NEW_SUPPLIER_WARRANTY_EXP_DATE;
694     x_instance_rec.ATTRIBUTE16                  := C1.NEW_ATTRIBUTE16;
695     x_instance_rec.ATTRIBUTE17                  := C1.NEW_ATTRIBUTE17;
696     x_instance_rec.ATTRIBUTE18                  := C1.NEW_ATTRIBUTE18;
697     x_instance_rec.ATTRIBUTE19                  := C1.NEW_ATTRIBUTE19;
698     x_instance_rec.ATTRIBUTE20                  := C1.NEW_ATTRIBUTE20;
699     x_instance_rec.ATTRIBUTE21                  := C1.NEW_ATTRIBUTE21;
700     x_instance_rec.ATTRIBUTE22                  := C1.NEW_ATTRIBUTE22;
701     x_instance_rec.ATTRIBUTE23                  := C1.NEW_ATTRIBUTE23;
702     x_instance_rec.ATTRIBUTE24                  := C1.NEW_ATTRIBUTE24;
703     x_instance_rec.ATTRIBUTE25                  := C1.NEW_ATTRIBUTE25;
704     x_instance_rec.ATTRIBUTE26                  := C1.NEW_ATTRIBUTE26;
705     x_instance_rec.ATTRIBUTE27                  := C1.NEW_ATTRIBUTE27;
706     x_instance_rec.ATTRIBUTE28                  := C1.NEW_ATTRIBUTE28;
707     x_instance_rec.ATTRIBUTE29                  := C1.NEW_ATTRIBUTE29;
708     x_instance_rec.ATTRIBUTE30                  := C1.NEW_ATTRIBUTE30;
709     --end of code for eam integration--
710     -- Addition of columns for FA Integration
711     x_instance_rec.PURCHASE_UNIT_PRICE          := C1.NEW_PURCHASE_UNIT_PRICE;
712     x_instance_rec.PURCHASE_CURRENCY_CODE       := C1.NEW_PURCHASE_CURRENCY_CODE;
713     x_instance_rec.PAYABLES_UNIT_PRICE          := C1.NEW_PAYABLES_UNIT_PRICE;
714     x_instance_rec.PAYABLES_CURRENCY_CODE       := C1.NEW_PAYABLES_CURRENCY_CODE;
715     x_instance_rec.SALES_UNIT_PRICE             := C1.NEW_SALES_UNIT_PRICE;
716     x_instance_rec.SALES_CURRENCY_CODE          := C1.NEW_SALES_CURRENCY_CODE;
717     x_instance_rec.OPERATIONAL_STATUS_CODE      := C1.NEW_OPERATIONAL_STATUS_CODE;
718     -- End addition of columns for FA Integration
719   END LOOP;
720 END Initialize_inst_rec ;
721 
722 /*---------------------------------------------------*/
723 /* Procedure name:  Initialize_inst_rec_no_dump      */
724 /* Description :    This procudure gets the first    */
725 /*                  record from the history table    */
726 /*---------------------------------------------------*/
727 
728 PROCEDURE Initialize_inst_rec_no_dump
729 (
730   x_instance_rec      IN OUT NOCOPY csi_datastructures_pub.instance_header_rec,
731   p_instance_id       IN NUMBER ,
732   x_first_no_dump     IN OUT NOCOPY DATE
733   ) IS
734 
735 CURSOR Int_no_dump(p_instance_id IN NUMBER) IS
736 SELECT
737      CREATION_DATE
738     ,NEW_INSTANCE_NUMBER
739     ,NEW_EXTERNAL_REFERENCE
740     ,NEW_INVENTORY_ITEM_ID
741     ,NEW_INVENTORY_REVISION
742     ,NEW_INV_MASTER_ORGANIZATION_ID
743     ,NEW_SERIAL_NUMBER
744     ,NEW_MFG_SERIAL_NUMBER_FLAG
745     ,NEW_LOT_NUMBER
746     ,NEW_QUANTITY
747     ,NEW_UNIT_OF_MEASURE
748     ,NEW_ACCOUNTING_CLASS_CODE
749     ,NEW_INSTANCE_CONDITION_ID
750     ,NEW_INSTANCE_STATUS_ID
751     ,NEW_CUSTOMER_VIEW_FLAG
752     ,NEW_MERCHANT_VIEW_FLAG
753     ,NEW_SELLABLE_FLAG
754     ,NEW_SYSTEM_ID
755     ,NEW_INSTANCE_TYPE_CODE
756     ,NEW_ACTIVE_START_DATE
757     ,NEW_ACTIVE_END_DATE
758     ,NEW_LOCATION_TYPE_CODE
759     ,NEW_LOCATION_ID
760     ,NEW_INV_ORGANIZATION_ID
761     ,NEW_INV_SUBINVENTORY_NAME
762     ,NEW_INV_LOCATOR_ID
763     ,NEW_PA_PROJECT_ID
764     ,NEW_PA_PROJECT_TASK_ID
765     ,NEW_IN_TRANSIT_ORDER_LINE_ID
766     ,NEW_WIP_JOB_ID
767     ,NEW_PO_ORDER_LINE_ID
768     ,NEW_COMPLETENESS_FLAG
769     ,NEW_CONTEXT
770     ,NEW_ATTRIBUTE1
771     ,NEW_ATTRIBUTE2
772     ,NEW_ATTRIBUTE3
773     ,NEW_ATTRIBUTE4
774     ,NEW_ATTRIBUTE5
775     ,NEW_ATTRIBUTE6
776     ,NEW_ATTRIBUTE7
777     ,NEW_ATTRIBUTE8
778     ,NEW_ATTRIBUTE9
779     ,NEW_ATTRIBUTE10
780     ,NEW_ATTRIBUTE11
781     ,NEW_ATTRIBUTE12
782     ,NEW_ATTRIBUTE13
783     ,NEW_ATTRIBUTE14
784     ,NEW_ATTRIBUTE15
785     ,NEW_INST_LOC_TYPE_CODE
786     ,NEW_INST_LOC_ID
787     ,NEW_INST_USAGE_CODE
788     ,NEW_LAST_OE_ORDER_LINE_ID
789     ,NEW_LAST_OE_RMA_LINE_ID
790     ,NEW_LAST_WIP_JOB_ID
791     ,NEW_LAST_PO_PO_LINE_ID
792     ,NEW_LAST_PA_PROJECT_ID
793     ,NEW_LAST_PA_TASK_ID
794     ,NEW_LAST_TXN_LINE_DETAIL_ID
795     ,NEW_LAST_OE_PO_NUMBER
796     ,NEW_OE_AGREEMENT_ID
797     --start of column addition for eam integration--
798     ,NEW_NETWORK_ASSET_FLAG
799     ,NEW_MAINTAINABLE_FLAG
800     ,NEW_PN_LOCATION_ID
801     ,NEW_ASSET_CRITICALITY_CODE
802     ,NEW_CATEGORY_ID
803     ,NEW_EQUIPMENT_GEN_OBJECT_ID
804     ,NEW_INSTANTIATION_FLAG
805     ,NEW_LINEAR_LOCATION_ID
806     ,NEW_OPERATIONAL_LOG_FLAG
807     ,NEW_CHECKIN_STATUS
808     ,NEW_SUPPLIER_WARRANTY_EXP_DATE
809     ,NEW_ATTRIBUTE16
810     ,NEW_ATTRIBUTE17
811     ,NEW_ATTRIBUTE18
812     ,NEW_ATTRIBUTE19
813     ,NEW_ATTRIBUTE20
814     ,NEW_ATTRIBUTE21
815     ,NEW_ATTRIBUTE22
816     ,NEW_ATTRIBUTE23
817     ,NEW_ATTRIBUTE24
818     ,NEW_ATTRIBUTE25
819     ,NEW_ATTRIBUTE26
820     ,NEW_ATTRIBUTE27
821     ,NEW_ATTRIBUTE28
822     ,NEW_ATTRIBUTE29
823     ,NEW_ATTRIBUTE30
824     --end of column addition for eam integration--
825     -- Addition of columns for FA Integration
826     ,NEW_PURCHASE_UNIT_PRICE
827     ,NEW_PURCHASE_CURRENCY_CODE
828     ,NEW_PAYABLES_UNIT_PRICE
829     ,NEW_PAYABLES_CURRENCY_CODE
830     ,NEW_SALES_UNIT_PRICE
831     ,NEW_SALES_CURRENCY_CODE
832     ,NEW_OPERATIONAL_STATUS_CODE
833     -- End addition of columns for FA Integration
834 FROM CSI_ITEM_INSTANCES_H
835 WHERE instance_id = p_instance_id
836 --and creation_date <= x_first_no_dump
837 --and  full_dump_flag = 'N'
838 ORDER BY creation_date;
839 
840 BEGIN
841 
842   FOR C1 IN Int_no_dump(p_instance_id) LOOP
843    IF Int_no_dump%ROWCOUNT = 1 THEN
844     x_first_no_dump                             := NVL(C1.NEW_ACTIVE_START_DATE,C1.CREATION_DATE);
845     x_instance_rec.INSTANCE_NUMBER              := C1.NEW_INSTANCE_NUMBER;
846     x_instance_rec.EXTERNAL_REFERENCE           := C1.NEW_EXTERNAL_REFERENCE;
847     x_instance_rec.INVENTORY_ITEM_ID            := C1.NEW_INVENTORY_ITEM_ID;
848     x_instance_rec.INVENTORY_REVISION           := C1.NEW_INVENTORY_REVISION;
849     x_instance_rec.INV_MASTER_ORGANIZATION_ID   := C1.NEW_INV_MASTER_ORGANIZATION_ID;
850     x_instance_rec.SERIAL_NUMBER                := C1.NEW_SERIAL_NUMBER;
851     x_instance_rec.MFG_SERIAL_NUMBER_FLAG       := C1.NEW_MFG_SERIAL_NUMBER_FLAG;
852     x_instance_rec.LOT_NUMBER                   := C1.NEW_LOT_NUMBER;
853     x_instance_rec.QUANTITY                     := C1.NEW_QUANTITY;
854     x_instance_rec.UNIT_OF_MEASURE              := C1.NEW_UNIT_OF_MEASURE;
855     x_instance_rec.ACCOUNTING_CLASS_CODE        := C1.NEW_ACCOUNTING_CLASS_CODE;
856     x_instance_rec.INSTANCE_CONDITION_ID        := C1.NEW_INSTANCE_CONDITION_ID;
857     x_instance_rec.INSTANCE_STATUS_ID           := C1.NEW_INSTANCE_STATUS_ID;
858     x_instance_rec.CUSTOMER_VIEW_FLAG           := C1.NEW_CUSTOMER_VIEW_FLAG;
859     x_instance_rec.MERCHANT_VIEW_FLAG           := C1.NEW_MERCHANT_VIEW_FLAG;
860     x_instance_rec.SELLABLE_FLAG                := C1.NEW_SELLABLE_FLAG;
861     x_instance_rec.SYSTEM_ID                    := C1.NEW_SYSTEM_ID;
862     x_instance_rec.INSTANCE_TYPE_CODE           := C1.NEW_INSTANCE_TYPE_CODE;
863     x_instance_rec.ACTIVE_START_DATE            := C1.NEW_ACTIVE_START_DATE;
864     x_instance_rec.ACTIVE_END_DATE              := C1.NEW_ACTIVE_END_DATE;
865     x_instance_rec.LOCATION_TYPE_CODE           := C1.NEW_LOCATION_TYPE_CODE;
866     x_instance_rec.LOCATION_ID                  := C1.NEW_LOCATION_ID;
867     x_instance_rec.INV_ORGANIZATION_ID          := C1.NEW_INV_ORGANIZATION_ID;
868     x_instance_rec.INV_SUBINVENTORY_NAME        := C1.NEW_INV_SUBINVENTORY_NAME;
869     x_instance_rec.INV_LOCATOR_ID               := C1.NEW_INV_LOCATOR_ID;
870     x_instance_rec.PA_PROJECT_ID                := C1.NEW_PA_PROJECT_ID;
871     x_instance_rec.PA_PROJECT_TASK_ID           := C1.NEW_PA_PROJECT_TASK_ID;
872     x_instance_rec.IN_TRANSIT_ORDER_LINE_ID     := C1.NEW_IN_TRANSIT_ORDER_LINE_ID;
873     x_instance_rec.WIP_JOB_ID                   := C1.NEW_WIP_JOB_ID;
874     x_instance_rec.PO_ORDER_LINE_ID             := C1.NEW_PO_ORDER_LINE_ID;
875     x_instance_rec.COMPLETENESS_FLAG            := C1.NEW_COMPLETENESS_FLAG;
876     x_instance_rec.CONTEXT                      := C1.NEW_CONTEXT;
877     x_instance_rec.ATTRIBUTE1                   := C1.NEW_ATTRIBUTE1;
878     x_instance_rec.ATTRIBUTE2                   := C1.NEW_ATTRIBUTE2;
879     x_instance_rec.ATTRIBUTE3                   := C1.NEW_ATTRIBUTE3;
880     x_instance_rec.ATTRIBUTE4                   := C1.NEW_ATTRIBUTE4;
881     x_instance_rec.ATTRIBUTE5                   := C1.NEW_ATTRIBUTE5;
882     x_instance_rec.ATTRIBUTE6                   := C1.NEW_ATTRIBUTE6;
883     x_instance_rec.ATTRIBUTE7                   := C1.NEW_ATTRIBUTE7;
884     x_instance_rec.ATTRIBUTE8                   := C1.NEW_ATTRIBUTE8;
885     x_instance_rec.ATTRIBUTE9                   := C1.NEW_ATTRIBUTE9;
886     x_instance_rec.ATTRIBUTE10                  := C1.NEW_ATTRIBUTE10;
887     x_instance_rec.ATTRIBUTE11                  := C1.NEW_ATTRIBUTE11;
888     x_instance_rec.ATTRIBUTE12                  := C1.NEW_ATTRIBUTE12;
889     x_instance_rec.ATTRIBUTE13                  := C1.NEW_ATTRIBUTE13;
890     x_instance_rec.ATTRIBUTE14                  := C1.NEW_ATTRIBUTE14;
891     x_instance_rec.ATTRIBUTE15                  := C1.NEW_ATTRIBUTE15;
892     x_instance_rec.INSTALL_LOCATION_TYPE_CODE   := C1.NEW_INST_LOC_TYPE_CODE;
893     x_instance_rec.INSTALL_LOCATION_ID          := C1.NEW_INST_LOC_ID;
894     x_instance_rec.INSTANCE_USAGE_CODE          := C1.NEW_INST_USAGE_CODE;
895     x_instance_rec.LAST_OE_ORDER_LINE_ID        := C1.NEW_LAST_OE_ORDER_LINE_ID;
896     x_instance_rec.LAST_OE_RMA_LINE_ID          := C1.NEW_LAST_OE_RMA_LINE_ID;
897     x_instance_rec.LAST_WIP_JOB_ID              := C1.NEW_LAST_WIP_JOB_ID;
898     x_instance_rec.LAST_PO_PO_LINE_ID           := C1.NEW_LAST_PO_PO_LINE_ID;
899     x_instance_rec.LAST_PA_PROJECT_ID           := C1.NEW_LAST_PA_PROJECT_ID;
900     x_instance_rec.LAST_PA_TASK_ID              := C1.NEW_LAST_PA_TASK_ID;
901     x_instance_rec.LAST_TXN_LINE_DETAIL_ID      := C1.NEW_LAST_TXN_LINE_DETAIL_ID;
902     x_instance_rec.LAST_OE_PO_NUMBER            := C1.NEW_LAST_OE_PO_NUMBER;
903     x_instance_rec.LAST_OE_AGREEMENT_ID         := C1.NEW_OE_AGREEMENT_ID;
904     --start of code for eam integration--
905     x_instance_rec.NETWORK_ASSET_FLAG           := C1.NEW_NETWORK_ASSET_FLAG;
906     x_instance_rec.MAINTAINABLE_FLAG            := C1.NEW_MAINTAINABLE_FLAG;
907     x_instance_rec.PN_LOCATION_ID               := C1.NEW_PN_LOCATION_ID;
908     x_instance_rec.ASSET_CRITICALITY_CODE       := C1.NEW_ASSET_CRITICALITY_CODE;
909     x_instance_rec.CATEGORY_ID                  := C1.NEW_CATEGORY_ID;
910     x_instance_rec.EQUIPMENT_GEN_OBJECT_ID      := C1.NEW_EQUIPMENT_GEN_OBJECT_ID;
911     x_instance_rec.INSTANTIATION_FLAG           := C1.NEW_INSTANTIATION_FLAG;
912     x_instance_rec.LINEAR_LOCATION_ID           := C1.NEW_LINEAR_LOCATION_ID;
913     x_instance_rec.OPERATIONAL_LOG_FLAG         := C1.NEW_OPERATIONAL_LOG_FLAG;
914     x_instance_rec.CHECKIN_STATUS               := C1.NEW_CHECKIN_STATUS;
915     x_instance_rec.SUPPLIER_WARRANTY_EXP_DATE   := C1.NEW_SUPPLIER_WARRANTY_EXP_DATE;
916     x_instance_rec.ATTRIBUTE16                  := C1.NEW_ATTRIBUTE16;
917     x_instance_rec.ATTRIBUTE17                  := C1.NEW_ATTRIBUTE17;
918     x_instance_rec.ATTRIBUTE18                  := C1.NEW_ATTRIBUTE18;
919     x_instance_rec.ATTRIBUTE19                  := C1.NEW_ATTRIBUTE19;
920     x_instance_rec.ATTRIBUTE20                  := C1.NEW_ATTRIBUTE20;
921     x_instance_rec.ATTRIBUTE21                  := C1.NEW_ATTRIBUTE21;
922     x_instance_rec.ATTRIBUTE22                  := C1.NEW_ATTRIBUTE22;
923     x_instance_rec.ATTRIBUTE23                  := C1.NEW_ATTRIBUTE23;
924     x_instance_rec.ATTRIBUTE24                  := C1.NEW_ATTRIBUTE24;
925     x_instance_rec.ATTRIBUTE25                  := C1.NEW_ATTRIBUTE25;
926     x_instance_rec.ATTRIBUTE26                  := C1.NEW_ATTRIBUTE26;
927     x_instance_rec.ATTRIBUTE27                  := C1.NEW_ATTRIBUTE27;
928     x_instance_rec.ATTRIBUTE28                  := C1.NEW_ATTRIBUTE28;
929     x_instance_rec.ATTRIBUTE29                  := C1.NEW_ATTRIBUTE29;
930     x_instance_rec.ATTRIBUTE30                  := C1.NEW_ATTRIBUTE30;
931     --end of code for eam integration--
932     -- Addition of columns for FA Integration
933     x_instance_rec.PURCHASE_UNIT_PRICE          := C1.NEW_PURCHASE_UNIT_PRICE;
934     x_instance_rec.PURCHASE_CURRENCY_CODE       := C1.NEW_PURCHASE_CURRENCY_CODE;
935     x_instance_rec.PAYABLES_UNIT_PRICE          := C1.NEW_PAYABLES_UNIT_PRICE;
936     x_instance_rec.PAYABLES_CURRENCY_CODE       := C1.NEW_PAYABLES_CURRENCY_CODE;
937     x_instance_rec.SALES_UNIT_PRICE             := C1.NEW_SALES_UNIT_PRICE;
938     x_instance_rec.SALES_CURRENCY_CODE          := C1.NEW_SALES_CURRENCY_CODE;
939     x_instance_rec.OPERATIONAL_STATUS_CODE      := C1.NEW_OPERATIONAL_STATUS_CODE;
940     -- End addition of columns for FA Integration
941   ELSE
942     EXIT;
943   END IF;
944 
945   END LOOP;
946 END Initialize_inst_rec_no_dump ;
947 
948 
949 
950 
951 /*---------------------------------------------------------*/
952 /* Procedure name:  Construct_inst_from_hist               */
953 /* Description :    This procudure recontructs the record  */
954 /*                  from the history                       */
955 /*---------------------------------------------------------*/
956 
957 PROCEDURE Construct_inst_from_hist
958 (
959   x_instance_rec           IN OUT NOCOPY csi_datastructures_pub.instance_header_rec,
960   p_time_stamp             IN DATE
961    ) IS
962 
963  l_nearest_full_dump      DATE := p_time_stamp;
964  l_instance_hist_id       NUMBER;
965 
966 CURSOR get_nearest_full_dump(p_instance_id IN NUMBER ,p_time IN DATE) IS
967 SELECT
968 MAX(instance_history_id)
969 FROM CSI_ITEM_INSTANCES_H
970 WHERE creation_date <= p_time
971   and instance_id = p_instance_id
972   and full_dump_flag = 'Y' ;
973 
974 CURSOR get_instance_hist(p_instance_id IN NUMBER ,
975                           p_nearest_full_dump IN DATE,
976                           p_time IN DATE ) IS
977 SELECT
978      OLD_INSTANCE_NUMBER
979     ,NEW_INSTANCE_NUMBER
980     ,OLD_EXTERNAL_REFERENCE
981     ,NEW_EXTERNAL_REFERENCE
982     ,OLD_INVENTORY_ITEM_ID
983     ,NEW_INVENTORY_ITEM_ID
984     ,OLD_INVENTORY_REVISION
985     ,NEW_INVENTORY_REVISION
986     ,OLD_INV_MASTER_ORGANIZATION_ID
987     ,NEW_INV_MASTER_ORGANIZATION_ID
988     ,OLD_SERIAL_NUMBER
989     ,NEW_SERIAL_NUMBER
990     ,OLD_MFG_SERIAL_NUMBER_FLAG
991     ,NEW_MFG_SERIAL_NUMBER_FLAG
992     ,OLD_LOT_NUMBER
993     ,NEW_LOT_NUMBER
994     ,OLD_QUANTITY
995     ,NEW_QUANTITY
996     ,OLD_UNIT_OF_MEASURE
997     ,NEW_UNIT_OF_MEASURE
998     ,OLD_ACCOUNTING_CLASS_CODE
999     ,NEW_ACCOUNTING_CLASS_CODE
1000     ,OLD_INSTANCE_CONDITION_ID
1001     ,NEW_INSTANCE_CONDITION_ID
1002     ,OLD_INSTANCE_STATUS_ID
1003     ,NEW_INSTANCE_STATUS_ID
1004     ,OLD_CUSTOMER_VIEW_FLAG
1005     ,NEW_CUSTOMER_VIEW_FLAG
1006     ,OLD_MERCHANT_VIEW_FLAG
1007     ,NEW_MERCHANT_VIEW_FLAG
1008     ,OLD_SELLABLE_FLAG
1009     ,NEW_SELLABLE_FLAG
1010     ,OLD_SYSTEM_ID
1011     ,NEW_SYSTEM_ID
1012     ,OLD_INSTANCE_TYPE_CODE
1013     ,NEW_INSTANCE_TYPE_CODE
1014     ,OLD_ACTIVE_START_DATE
1015     ,NEW_ACTIVE_START_DATE
1016     ,OLD_ACTIVE_END_DATE
1017     ,NEW_ACTIVE_END_DATE
1018     ,OLD_LOCATION_TYPE_CODE
1019     ,NEW_LOCATION_TYPE_CODE
1020     ,OLD_LOCATION_ID
1021     ,NEW_LOCATION_ID
1022     ,OLD_INV_ORGANIZATION_ID
1023     ,NEW_INV_ORGANIZATION_ID
1024     ,OLD_INV_SUBINVENTORY_NAME
1025     ,NEW_INV_SUBINVENTORY_NAME
1026     ,OLD_INV_LOCATOR_ID
1027     ,NEW_INV_LOCATOR_ID
1028     ,OLD_PA_PROJECT_ID
1029     ,NEW_PA_PROJECT_ID
1030     ,OLD_PA_PROJECT_TASK_ID
1031     ,NEW_PA_PROJECT_TASK_ID
1032     ,OLD_IN_TRANSIT_ORDER_LINE_ID
1033     ,NEW_IN_TRANSIT_ORDER_LINE_ID
1034     ,OLD_WIP_JOB_ID
1035     ,NEW_WIP_JOB_ID
1036     ,OLD_PO_ORDER_LINE_ID
1037     ,NEW_PO_ORDER_LINE_ID
1038     ,OLD_COMPLETENESS_FLAG
1039     ,NEW_COMPLETENESS_FLAG
1040     ,OLD_CONTEXT
1041     ,NEW_CONTEXT
1042     ,OLD_ATTRIBUTE1
1043     ,NEW_ATTRIBUTE1
1044     ,OLD_ATTRIBUTE2
1045     ,NEW_ATTRIBUTE2
1046     ,OLD_ATTRIBUTE3
1047     ,NEW_ATTRIBUTE3
1048     ,OLD_ATTRIBUTE4
1049     ,NEW_ATTRIBUTE4
1050     ,OLD_ATTRIBUTE5
1051     ,NEW_ATTRIBUTE5
1052     ,OLD_ATTRIBUTE6
1053     ,NEW_ATTRIBUTE6
1054     ,OLD_ATTRIBUTE7
1055     ,NEW_ATTRIBUTE7
1056     ,OLD_ATTRIBUTE8
1057     ,NEW_ATTRIBUTE8
1058     ,OLD_ATTRIBUTE9
1059     ,NEW_ATTRIBUTE9
1060     ,OLD_ATTRIBUTE10
1061     ,NEW_ATTRIBUTE10
1062     ,OLD_ATTRIBUTE11
1063     ,NEW_ATTRIBUTE11
1064     ,OLD_ATTRIBUTE12
1065     ,NEW_ATTRIBUTE12
1066     ,OLD_ATTRIBUTE13
1067     ,NEW_ATTRIBUTE13
1068     ,OLD_ATTRIBUTE14
1069     ,NEW_ATTRIBUTE14
1070     ,OLD_ATTRIBUTE15
1071     ,NEW_ATTRIBUTE15
1072     ,OLD_INST_LOC_TYPE_CODE
1073     ,NEW_INST_LOC_TYPE_CODE
1074     ,OLD_INST_LOC_ID
1075     ,NEW_INST_LOC_ID
1076     ,OLD_INST_USAGE_CODE
1077     ,NEW_INST_USAGE_CODE
1078     ,CREATION_DATE
1079     ,OLD_CONFIG_INST_REV_NUM
1080     ,NEW_CONFIG_INST_REV_NUM
1081     ,OLD_CONFIG_VALID_STATUS
1082     ,NEW_CONFIG_VALID_STATUS
1083     ,OLD_INSTANCE_DESCRIPTION
1084     ,NEW_INSTANCE_DESCRIPTION
1085     ,OLD_LAST_VLD_ORGANIZATION_ID
1086     ,NEW_LAST_VLD_ORGANIZATION_ID
1087     ,OLD_INSTALL_DATE
1088     ,NEW_INSTALL_DATE
1089     ,OLD_RETURN_BY_DATE
1090     ,NEW_RETURN_BY_DATE
1091     ,OLD_ACTUAL_RETURN_DATE
1092     ,NEW_ACTUAL_RETURN_DATE
1093     ,OLD_OE_AGREEMENT_ID
1094     ,NEW_OE_AGREEMENT_ID
1095     ,OLD_LAST_OE_ORDER_LINE_ID
1096     ,NEW_LAST_OE_ORDER_LINE_ID
1097     ,OLD_LAST_OE_RMA_LINE_ID
1098     ,NEW_LAST_OE_RMA_LINE_ID
1099     ,OLD_LAST_WIP_JOB_ID
1100     ,NEW_LAST_WIP_JOB_ID
1101     ,OLD_LAST_PO_PO_LINE_ID
1102     ,NEW_LAST_PO_PO_LINE_ID
1103     ,OLD_LAST_PA_PROJECT_ID
1104     ,NEW_LAST_PA_PROJECT_ID
1105     ,OLD_LAST_PA_TASK_ID
1106     ,NEW_LAST_PA_TASK_ID
1107     ,OLD_LAST_TXN_LINE_DETAIL_ID
1108     ,NEW_LAST_TXN_LINE_DETAIL_ID
1109     ,OLD_LAST_OE_PO_NUMBER
1110     ,NEW_LAST_OE_PO_NUMBER
1111     --start of column addition for eam integration--
1112     ,OLD_NETWORK_ASSET_FLAG
1113     ,NEW_NETWORK_ASSET_FLAG
1114     ,OLD_MAINTAINABLE_FLAG
1115     ,NEW_MAINTAINABLE_FLAG
1116     ,OLD_PN_LOCATION_ID
1117     ,NEW_PN_LOCATION_ID
1118     ,OLD_ASSET_CRITICALITY_CODE
1119     ,NEW_ASSET_CRITICALITY_CODE
1120     ,OLD_CATEGORY_ID
1121     ,NEW_CATEGORY_ID
1122     ,OLD_EQUIPMENT_GEN_OBJECT_ID
1123     ,NEW_EQUIPMENT_GEN_OBJECT_ID
1124     ,OLD_INSTANTIATION_FLAG
1125     ,NEW_INSTANTIATION_FLAG
1126     ,OLD_LINEAR_LOCATION_ID
1127     ,NEW_LINEAR_LOCATION_ID
1128     ,OLD_OPERATIONAL_LOG_FLAG
1129     ,NEW_OPERATIONAL_LOG_FLAG
1130     ,OLD_CHECKIN_STATUS
1131     ,NEW_CHECKIN_STATUS
1132     ,OLD_SUPPLIER_WARRANTY_EXP_DATE
1133     ,NEW_SUPPLIER_WARRANTY_EXP_DATE
1134     ,OLD_ATTRIBUTE16
1135     ,NEW_ATTRIBUTE16
1136     ,OLD_ATTRIBUTE17
1137     ,NEW_ATTRIBUTE17
1138     ,OLD_ATTRIBUTE18
1139     ,NEW_ATTRIBUTE18
1140     ,OLD_ATTRIBUTE19
1141     ,NEW_ATTRIBUTE19
1142     ,OLD_ATTRIBUTE20
1143     ,NEW_ATTRIBUTE20
1144     ,OLD_ATTRIBUTE21
1145     ,NEW_ATTRIBUTE21
1146     ,OLD_ATTRIBUTE22
1147     ,NEW_ATTRIBUTE22
1148     ,OLD_ATTRIBUTE23
1149     ,NEW_ATTRIBUTE23
1150     ,OLD_ATTRIBUTE24
1151     ,NEW_ATTRIBUTE24
1152     ,OLD_ATTRIBUTE25
1153     ,NEW_ATTRIBUTE25
1154     ,OLD_ATTRIBUTE26
1155     ,NEW_ATTRIBUTE26
1156     ,OLD_ATTRIBUTE27
1157     ,NEW_ATTRIBUTE27
1158     ,OLD_ATTRIBUTE28
1159     ,NEW_ATTRIBUTE28
1160     ,OLD_ATTRIBUTE29
1161     ,NEW_ATTRIBUTE29
1162     ,OLD_ATTRIBUTE30
1163     ,NEW_ATTRIBUTE30
1164     --end of column addition for eam integration--
1165     -- Addition of columns for FA Integration
1166     ,OLD_PURCHASE_UNIT_PRICE
1167     ,NEW_PURCHASE_UNIT_PRICE
1168     ,OLD_PURCHASE_CURRENCY_CODE
1169     ,NEW_PURCHASE_CURRENCY_CODE
1170     ,OLD_PAYABLES_UNIT_PRICE
1171     ,NEW_PAYABLES_UNIT_PRICE
1172     ,OLD_PAYABLES_CURRENCY_CODE
1173     ,NEW_PAYABLES_CURRENCY_CODE
1174     ,OLD_SALES_UNIT_PRICE
1175     ,NEW_SALES_UNIT_PRICE
1176     ,OLD_SALES_CURRENCY_CODE
1177     ,NEW_SALES_CURRENCY_CODE
1178     ,OLD_OPERATIONAL_STATUS_CODE
1179     ,NEW_OPERATIONAL_STATUS_CODE
1180     -- End addition of columns for FA Integration
1181 FROM CSI_ITEM_INSTANCES_H
1182 WHERE creation_date <= p_time
1183 and creation_date >= p_nearest_full_dump
1184 and instance_id = p_instance_id
1185 ORDER BY creation_date;
1186 
1187 l_time_stamp  DATE := p_time_stamp;
1188 
1189 BEGIN
1190 
1191       OPEN get_nearest_full_dump(x_instance_rec.instance_id,p_time_stamp);
1192         FETCH get_nearest_full_dump INTO l_instance_hist_id;
1193       CLOSE get_nearest_full_dump;
1194 
1195        IF l_instance_hist_id IS NOT NULL THEN
1196             Initialize_inst_rec( x_instance_rec, l_instance_hist_id ,l_nearest_full_dump);
1197        ELSE
1198             Initialize_inst_rec_no_dump(x_instance_rec, x_instance_rec.instance_id, l_time_stamp);
1199             l_nearest_full_dump :=  l_time_stamp;
1200          -- If the user chooses a date before the creation date of the instance
1201          -- then raise an error
1202            IF p_time_stamp < l_time_stamp THEN
1203                FND_MESSAGE.SET_NAME('CSI','CSI_H_DATE_BEFORE_CRE_DATE');
1204                FND_MESSAGE.SET_TOKEN('CREATION_DATE',to_char(l_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
1205                FND_MESSAGE.SET_TOKEN('USER_DATE',to_char(p_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
1206                FND_MSG_PUB.Add;
1207                RAISE FND_API.G_EXC_ERROR;
1208            END IF;
1209         END IF;
1210  FOR C2 IN get_instance_hist(x_instance_rec.instance_id ,l_nearest_full_dump,p_time_stamp ) LOOP
1211 
1212    IF (C2.OLD_INSTANCE_NUMBER IS NULL AND C2.NEW_INSTANCE_NUMBER IS NOT NULL)
1213    OR (C2.OLD_INSTANCE_NUMBER IS NOT NULL AND C2.NEW_INSTANCE_NUMBER IS NULL)
1214    OR (C2.OLD_INSTANCE_NUMBER <> C2.NEW_INSTANCE_NUMBER) THEN
1215         x_instance_rec.INSTANCE_NUMBER := C2.NEW_INSTANCE_NUMBER;
1216    END IF;
1217 
1218    IF (C2.OLD_EXTERNAL_REFERENCE IS NULL AND C2.NEW_EXTERNAL_REFERENCE IS NOT NULL)
1219    OR (C2.OLD_EXTERNAL_REFERENCE IS NOT NULL AND C2.NEW_EXTERNAL_REFERENCE IS NULL)
1220    OR (C2.OLD_EXTERNAL_REFERENCE <> C2.NEW_EXTERNAL_REFERENCE) THEN
1221         x_instance_rec.EXTERNAL_REFERENCE := C2.NEW_EXTERNAL_REFERENCE;
1222    END IF;
1223 
1224    IF (C2.OLD_INVENTORY_ITEM_ID IS NULL AND C2.NEW_INVENTORY_ITEM_ID IS NOT NULL)
1225    OR (C2.OLD_INVENTORY_ITEM_ID IS NOT NULL AND C2.NEW_INVENTORY_ITEM_ID IS NULL)
1226    OR (C2.OLD_INVENTORY_ITEM_ID <> C2.NEW_INVENTORY_ITEM_ID) THEN
1227         x_instance_rec.INVENTORY_ITEM_ID := C2.NEW_INVENTORY_ITEM_ID;
1228    END IF;
1229 
1230    IF (C2.OLD_INVENTORY_REVISION IS NULL AND C2.NEW_INVENTORY_REVISION IS NOT NULL)
1231    OR (C2.OLD_INVENTORY_REVISION IS NOT NULL AND C2.NEW_INVENTORY_REVISION IS NULL)
1232    OR (C2.OLD_INVENTORY_REVISION <> C2.NEW_INVENTORY_REVISION) THEN
1233         x_instance_rec.INVENTORY_REVISION := C2.NEW_INVENTORY_REVISION;
1234    END IF;
1235 
1236    IF (C2.OLD_INV_MASTER_ORGANIZATION_ID IS NULL AND C2.NEW_INV_MASTER_ORGANIZATION_ID IS NOT NULL)
1237    OR (C2.OLD_INV_MASTER_ORGANIZATION_ID IS NOT NULL AND C2.NEW_INV_MASTER_ORGANIZATION_ID IS NULL)
1238    OR (C2.OLD_INV_MASTER_ORGANIZATION_ID <> C2.NEW_INV_MASTER_ORGANIZATION_ID) THEN
1239         x_instance_rec.INV_MASTER_ORGANIZATION_ID := C2.NEW_INV_MASTER_ORGANIZATION_ID;
1240    END IF;
1241 
1242    IF (C2.OLD_SERIAL_NUMBER IS NULL AND C2.NEW_SERIAL_NUMBER IS NOT NULL)
1243    OR (C2.OLD_SERIAL_NUMBER IS NOT NULL AND C2.NEW_SERIAL_NUMBER IS NULL)
1244    OR (C2.OLD_SERIAL_NUMBER <> C2.NEW_SERIAL_NUMBER) THEN
1245         x_instance_rec.SERIAL_NUMBER := C2.NEW_SERIAL_NUMBER;
1246    END IF;
1247 
1248    IF (C2.OLD_MFG_SERIAL_NUMBER_FLAG IS NULL AND C2.NEW_MFG_SERIAL_NUMBER_FLAG IS NOT NULL)
1249    OR (C2.OLD_MFG_SERIAL_NUMBER_FLAG IS NOT NULL AND C2.NEW_MFG_SERIAL_NUMBER_FLAG IS NULL)
1250    OR (C2.OLD_MFG_SERIAL_NUMBER_FLAG <> C2.NEW_MFG_SERIAL_NUMBER_FLAG) THEN
1251         x_instance_rec.MFG_SERIAL_NUMBER_FLAG := C2.NEW_MFG_SERIAL_NUMBER_FLAG;
1252    END IF;
1253 
1254    IF (C2.OLD_LOT_NUMBER IS NULL AND C2.NEW_LOT_NUMBER IS NOT NULL)
1255    OR (C2.OLD_LOT_NUMBER IS NOT NULL AND C2.NEW_LOT_NUMBER IS NULL)
1256    OR (C2.OLD_LOT_NUMBER <> C2.NEW_LOT_NUMBER) THEN
1257         x_instance_rec.LOT_NUMBER := C2.NEW_LOT_NUMBER;
1258    END IF;
1259 
1260    IF (C2.OLD_QUANTITY IS NULL AND C2.NEW_QUANTITY IS NOT NULL)
1261    OR (C2.OLD_QUANTITY IS NOT NULL AND C2.NEW_QUANTITY IS NULL)
1262    OR (C2.OLD_QUANTITY <> C2.NEW_QUANTITY) THEN
1263         x_instance_rec.QUANTITY := C2.NEW_QUANTITY;
1264    END IF;
1265 
1266    IF (C2.OLD_UNIT_OF_MEASURE IS NULL AND C2.NEW_UNIT_OF_MEASURE IS NOT NULL)
1267    OR (C2.OLD_UNIT_OF_MEASURE IS NOT NULL AND C2.NEW_UNIT_OF_MEASURE IS NULL)
1268    OR (C2.OLD_UNIT_OF_MEASURE <> C2.NEW_UNIT_OF_MEASURE) THEN
1269         x_instance_rec.UNIT_OF_MEASURE := C2.NEW_UNIT_OF_MEASURE;
1270    END IF;
1271 
1272    IF (C2.OLD_ACCOUNTING_CLASS_CODE IS NULL AND C2.NEW_ACCOUNTING_CLASS_CODE IS NOT NULL)
1273    OR (C2.OLD_ACCOUNTING_CLASS_CODE IS NOT NULL AND C2.NEW_ACCOUNTING_CLASS_CODE IS NULL)
1274    OR (C2.OLD_ACCOUNTING_CLASS_CODE <> C2.NEW_ACCOUNTING_CLASS_CODE) THEN
1275         x_instance_rec.ACCOUNTING_CLASS_CODE := C2.NEW_ACCOUNTING_CLASS_CODE;
1276    END IF;
1277 
1278    IF (C2.OLD_INSTANCE_CONDITION_ID IS NULL AND C2.NEW_INSTANCE_CONDITION_ID IS NOT NULL)
1279    OR (C2.OLD_INSTANCE_CONDITION_ID IS NOT NULL AND C2.NEW_INSTANCE_CONDITION_ID IS NULL)
1280    OR (C2.OLD_INSTANCE_CONDITION_ID <> C2.NEW_INSTANCE_CONDITION_ID) THEN
1281         x_instance_rec.INSTANCE_CONDITION_ID := C2.NEW_INSTANCE_CONDITION_ID;
1282    END IF;
1283 
1284    IF (C2.OLD_INSTANCE_STATUS_ID IS NULL AND C2.NEW_INSTANCE_STATUS_ID IS NOT NULL)
1285    OR (C2.OLD_INSTANCE_STATUS_ID IS NOT NULL AND C2.NEW_INSTANCE_STATUS_ID IS NULL)
1286    OR (C2.OLD_INSTANCE_STATUS_ID <> C2.NEW_INSTANCE_STATUS_ID) THEN
1287         x_instance_rec.INSTANCE_STATUS_ID := C2.NEW_INSTANCE_STATUS_ID;
1288    END IF;
1289 
1290    IF (C2.OLD_CUSTOMER_VIEW_FLAG IS NULL AND C2.NEW_CUSTOMER_VIEW_FLAG IS NOT NULL)
1291    OR (C2.OLD_CUSTOMER_VIEW_FLAG IS NOT NULL AND C2.NEW_CUSTOMER_VIEW_FLAG IS NULL)
1292    OR (C2.OLD_CUSTOMER_VIEW_FLAG <> C2.NEW_CUSTOMER_VIEW_FLAG) THEN
1293         x_instance_rec.CUSTOMER_VIEW_FLAG := C2.NEW_CUSTOMER_VIEW_FLAG;
1294    END IF;
1295 
1296    IF (C2.OLD_MERCHANT_VIEW_FLAG IS NULL AND C2.NEW_MERCHANT_VIEW_FLAG IS NOT NULL)
1297    OR (C2.OLD_MERCHANT_VIEW_FLAG IS NOT NULL AND C2.NEW_MERCHANT_VIEW_FLAG IS NULL)
1298    OR (C2.OLD_MERCHANT_VIEW_FLAG <> C2.NEW_MERCHANT_VIEW_FLAG) THEN
1299         x_instance_rec.MERCHANT_VIEW_FLAG := C2.NEW_MERCHANT_VIEW_FLAG;
1300    END IF;
1301 
1302 
1303    IF (C2.OLD_SELLABLE_FLAG IS NULL AND C2.NEW_SELLABLE_FLAG IS NOT NULL)
1304    OR (C2.OLD_SELLABLE_FLAG IS NOT NULL AND C2.NEW_SELLABLE_FLAG IS NULL)
1305    OR (C2.OLD_SELLABLE_FLAG <> C2.NEW_SELLABLE_FLAG) THEN
1306         x_instance_rec.SELLABLE_FLAG := C2.NEW_SELLABLE_FLAG;
1307    END IF;
1308 
1309    IF (C2.OLD_SYSTEM_ID IS NULL AND C2.NEW_SYSTEM_ID IS NOT NULL)
1310    OR (C2.OLD_SYSTEM_ID IS NOT NULL AND C2.NEW_SYSTEM_ID IS NULL)
1311    OR (C2.OLD_SYSTEM_ID <> C2.NEW_SYSTEM_ID) THEN
1312         x_instance_rec.SYSTEM_ID := C2.NEW_SYSTEM_ID;
1313    END IF;
1314 
1315 
1316    IF (C2.OLD_INSTANCE_TYPE_CODE IS NULL AND C2.NEW_INSTANCE_TYPE_CODE IS NOT NULL)
1317    OR (C2.OLD_INSTANCE_TYPE_CODE IS NOT NULL AND C2.NEW_INSTANCE_TYPE_CODE IS NULL)
1318    OR (C2.OLD_INSTANCE_TYPE_CODE <> C2.NEW_INSTANCE_TYPE_CODE) THEN
1319         x_instance_rec.INSTANCE_TYPE_CODE := C2.NEW_INSTANCE_TYPE_CODE;
1320    END IF;
1321 
1322 
1323    IF (C2.OLD_ACTIVE_START_DATE IS NULL AND C2.NEW_ACTIVE_START_DATE IS NOT NULL)
1324    OR (C2.OLD_ACTIVE_START_DATE IS NOT NULL AND C2.NEW_ACTIVE_START_DATE IS NULL)
1325    OR (C2.OLD_ACTIVE_START_DATE <> C2.NEW_ACTIVE_START_DATE) THEN
1326         x_instance_rec.ACTIVE_START_DATE := C2.NEW_ACTIVE_START_DATE;
1327    END IF;
1328 
1329 
1330    IF (C2.OLD_ACTIVE_END_DATE IS NULL AND C2.NEW_ACTIVE_END_DATE IS NOT NULL)
1331    OR (C2.OLD_ACTIVE_END_DATE IS NOT NULL AND C2.NEW_ACTIVE_END_DATE IS NULL)
1332    OR (C2.OLD_ACTIVE_END_DATE <> C2.NEW_ACTIVE_END_DATE) THEN
1333         x_instance_rec.ACTIVE_END_DATE := C2.NEW_ACTIVE_END_DATE;
1334    END IF;
1335 
1336  -- Added for bug 2671179
1337    IF (C2.OLD_INSTALL_DATE IS NULL AND C2.NEW_INSTALL_DATE IS NOT NULL)
1338    OR (C2.OLD_INSTALL_DATE IS NOT NULL AND C2.NEW_INSTALL_DATE IS NULL)
1339    OR (C2.OLD_INSTALL_DATE <> C2.NEW_INSTALL_DATE) THEN
1340         x_instance_rec.INSTALL_DATE := C2.NEW_INSTALL_DATE;
1341    END IF;
1342 
1343 
1344    IF (C2.OLD_RETURN_BY_DATE IS NULL AND C2.NEW_RETURN_BY_DATE IS NOT NULL)
1345    OR (C2.OLD_RETURN_BY_DATE IS NOT NULL AND C2.NEW_RETURN_BY_DATE IS NULL)
1346    OR (C2.OLD_RETURN_BY_DATE <> C2.NEW_RETURN_BY_DATE) THEN
1347         x_instance_rec.RETURN_BY_DATE := C2.NEW_RETURN_BY_DATE;
1348    END IF;
1349 
1350    IF (C2.OLD_ACTUAL_RETURN_DATE IS NULL AND C2.NEW_ACTUAL_RETURN_DATE IS NOT NULL)
1351    OR (C2.OLD_ACTUAL_RETURN_DATE IS NOT NULL AND C2.NEW_ACTUAL_RETURN_DATE IS NULL)
1352    OR (C2.OLD_ACTUAL_RETURN_DATE <> C2.NEW_ACTUAL_RETURN_DATE) THEN
1353         x_instance_rec.ACTUAL_RETURN_DATE := C2.NEW_ACTUAL_RETURN_DATE;
1354    END IF;
1355  -- End addition for bug 2671179
1356 
1357    IF (C2.OLD_LOCATION_TYPE_CODE IS NULL AND C2.NEW_LOCATION_TYPE_CODE IS NOT NULL)
1358    OR (C2.OLD_LOCATION_TYPE_CODE IS NOT NULL AND C2.NEW_LOCATION_TYPE_CODE IS NULL)
1359    OR (C2.OLD_LOCATION_TYPE_CODE <> C2.NEW_LOCATION_TYPE_CODE) THEN
1360         x_instance_rec.LOCATION_TYPE_CODE := C2.NEW_LOCATION_TYPE_CODE;
1361    END IF;
1362 
1363    IF (C2.OLD_LOCATION_ID IS NULL AND C2.NEW_LOCATION_ID IS NOT NULL)
1364    OR (C2.OLD_LOCATION_ID IS NOT NULL AND C2.NEW_LOCATION_ID IS NULL)
1365    OR (C2.OLD_LOCATION_ID <> C2.NEW_LOCATION_ID) THEN
1366         x_instance_rec.LOCATION_ID := C2.NEW_LOCATION_ID;
1367    END IF;
1368 
1369 
1370    IF (C2.OLD_INV_ORGANIZATION_ID IS NULL AND C2.NEW_INV_ORGANIZATION_ID IS NOT NULL)
1371    OR (C2.OLD_INV_ORGANIZATION_ID IS NOT NULL AND C2.NEW_INV_ORGANIZATION_ID IS NULL)
1372    OR (C2.OLD_INV_ORGANIZATION_ID <> C2.NEW_INV_ORGANIZATION_ID) THEN
1373         x_instance_rec.INV_ORGANIZATION_ID := C2.NEW_INV_ORGANIZATION_ID;
1374    END IF;
1375 
1376 
1377    IF (C2.OLD_INV_SUBINVENTORY_NAME IS NULL AND C2.NEW_INV_SUBINVENTORY_NAME IS NOT NULL)
1378    OR (C2.OLD_INV_SUBINVENTORY_NAME IS NOT NULL AND C2.NEW_INV_SUBINVENTORY_NAME IS NULL)
1379    OR (C2.OLD_INV_SUBINVENTORY_NAME <> C2.NEW_INV_SUBINVENTORY_NAME) THEN
1380         x_instance_rec.INV_SUBINVENTORY_NAME := C2.NEW_INV_SUBINVENTORY_NAME;
1381    END IF;
1382 
1383    IF (C2.OLD_INV_LOCATOR_ID IS NULL AND C2.NEW_INV_LOCATOR_ID IS NOT NULL)
1384    OR (C2.OLD_INV_LOCATOR_ID IS NOT NULL AND C2.NEW_INV_LOCATOR_ID IS NULL)
1385    OR (C2.OLD_INV_LOCATOR_ID <> C2.NEW_INV_LOCATOR_ID) THEN
1386         x_instance_rec.INV_LOCATOR_ID := C2.NEW_INV_LOCATOR_ID;
1387    END IF;
1388 
1389    IF (C2.OLD_PA_PROJECT_ID IS NULL AND C2.NEW_PA_PROJECT_ID IS NOT NULL)
1390    OR (C2.OLD_PA_PROJECT_ID IS NOT NULL AND C2.NEW_PA_PROJECT_ID IS NULL)
1391    OR (C2.OLD_PA_PROJECT_ID <> C2.NEW_PA_PROJECT_ID) THEN
1392         x_instance_rec.PA_PROJECT_ID := C2.NEW_PA_PROJECT_ID;
1393    END IF;
1394 
1395    IF (C2.OLD_PA_PROJECT_TASK_ID IS NULL AND C2.NEW_PA_PROJECT_TASK_ID IS NOT NULL)
1396    OR (C2.OLD_PA_PROJECT_TASK_ID IS NOT NULL AND C2.NEW_PA_PROJECT_TASK_ID IS NULL)
1397    OR (C2.OLD_PA_PROJECT_TASK_ID <> C2.NEW_PA_PROJECT_TASK_ID) THEN
1398         x_instance_rec.PA_PROJECT_TASK_ID := C2.NEW_PA_PROJECT_TASK_ID;
1399    END IF;
1400 
1401    IF (C2.OLD_IN_TRANSIT_ORDER_LINE_ID IS NULL AND C2.NEW_IN_TRANSIT_ORDER_LINE_ID IS NOT NULL)
1402    OR (C2.OLD_IN_TRANSIT_ORDER_LINE_ID IS NOT NULL AND C2.NEW_IN_TRANSIT_ORDER_LINE_ID IS NULL)
1403    OR (C2.OLD_IN_TRANSIT_ORDER_LINE_ID <> C2.NEW_IN_TRANSIT_ORDER_LINE_ID) THEN
1404         x_instance_rec.IN_TRANSIT_ORDER_LINE_ID := C2.NEW_IN_TRANSIT_ORDER_LINE_ID;
1405    END IF;
1406 
1407    IF (C2.OLD_WIP_JOB_ID IS NULL AND C2.NEW_WIP_JOB_ID IS NOT NULL)
1408    OR (C2.OLD_WIP_JOB_ID IS NOT NULL AND C2.NEW_WIP_JOB_ID IS NULL)
1409    OR (C2.OLD_WIP_JOB_ID <> C2.NEW_WIP_JOB_ID) THEN
1410         x_instance_rec.WIP_JOB_ID := C2.NEW_WIP_JOB_ID;
1411    END IF;
1412 
1413    IF (C2.OLD_PO_ORDER_LINE_ID IS NULL AND C2.NEW_PO_ORDER_LINE_ID IS NOT NULL)
1414    OR (C2.OLD_PO_ORDER_LINE_ID IS NOT NULL AND C2.NEW_PO_ORDER_LINE_ID IS NULL)
1415    OR (C2.OLD_PO_ORDER_LINE_ID <> C2.NEW_PO_ORDER_LINE_ID) THEN
1416         x_instance_rec.PO_ORDER_LINE_ID := C2.NEW_PO_ORDER_LINE_ID;
1417    END IF;
1418 
1419    IF (C2.OLD_COMPLETENESS_FLAG IS NULL AND C2.NEW_COMPLETENESS_FLAG IS NOT NULL)
1420    OR (C2.OLD_COMPLETENESS_FLAG IS NOT NULL AND C2.NEW_COMPLETENESS_FLAG IS NULL)
1421    OR (C2.OLD_COMPLETENESS_FLAG <> C2.NEW_COMPLETENESS_FLAG) THEN
1422         x_instance_rec.COMPLETENESS_FLAG := C2.NEW_COMPLETENESS_FLAG;
1423    END IF;
1424 
1425    IF (C2.OLD_CONTEXT IS NULL AND C2.NEW_CONTEXT IS NOT NULL)
1426    OR (C2.OLD_CONTEXT IS NOT NULL AND C2.NEW_CONTEXT IS NULL)
1427    OR (C2.OLD_CONTEXT <> C2.NEW_CONTEXT) THEN
1428         x_instance_rec.CONTEXT := C2.NEW_CONTEXT;
1429    END IF;
1430 
1431    IF (C2.OLD_ATTRIBUTE1 IS NULL AND C2.NEW_ATTRIBUTE1 IS NOT NULL)
1432    OR (C2.OLD_ATTRIBUTE1 IS NOT NULL AND C2.NEW_ATTRIBUTE1 IS NULL)
1433    OR (C2.OLD_ATTRIBUTE1 <> C2.NEW_ATTRIBUTE1) THEN
1434         x_instance_rec.ATTRIBUTE1 := C2.NEW_ATTRIBUTE1;
1435    END IF;
1436 
1437    IF (C2.OLD_ATTRIBUTE2 IS NULL AND C2.NEW_ATTRIBUTE2 IS NOT NULL)
1438    OR (C2.OLD_ATTRIBUTE2 IS NOT NULL AND C2.NEW_ATTRIBUTE2 IS NULL)
1439    OR (C2.OLD_ATTRIBUTE2 <> C2.NEW_ATTRIBUTE2) THEN
1440         x_instance_rec.ATTRIBUTE2 := C2.NEW_ATTRIBUTE2;
1441    END IF;
1442 
1443    IF (C2.OLD_ATTRIBUTE3 IS NULL AND C2.NEW_ATTRIBUTE3 IS NOT NULL)
1444    OR (C2.OLD_ATTRIBUTE3 IS NOT NULL AND C2.NEW_ATTRIBUTE3 IS NULL)
1445    OR (C2.OLD_ATTRIBUTE3 <> C2.NEW_ATTRIBUTE3) THEN
1446         x_instance_rec.ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
1447    END IF;
1448 
1449    IF (C2.OLD_ATTRIBUTE4 IS NULL AND C2.NEW_ATTRIBUTE4 IS NOT NULL)
1450    OR (C2.OLD_ATTRIBUTE4 IS NOT NULL AND C2.NEW_ATTRIBUTE4 IS NULL)
1451    OR (C2.OLD_ATTRIBUTE4 <> C2.NEW_ATTRIBUTE4) THEN
1452         x_instance_rec.ATTRIBUTE4 := C2.NEW_ATTRIBUTE4;
1453    END IF;
1454 
1455 
1456    IF (C2.OLD_ATTRIBUTE5 IS NULL AND C2.NEW_ATTRIBUTE5 IS NOT NULL)
1457    OR (C2.OLD_ATTRIBUTE5 IS NOT NULL AND C2.NEW_ATTRIBUTE5 IS NULL)
1458    OR (C2.OLD_ATTRIBUTE5 <> C2.NEW_ATTRIBUTE5) THEN
1459         x_instance_rec.ATTRIBUTE5 := C2.NEW_ATTRIBUTE5;
1460    END IF;
1461 
1462 
1463    IF (C2.OLD_ATTRIBUTE6 IS NULL AND C2.NEW_ATTRIBUTE6 IS NOT NULL)
1464    OR (C2.OLD_ATTRIBUTE6 IS NOT NULL AND C2.NEW_ATTRIBUTE6 IS NULL)
1465    OR (C2.OLD_ATTRIBUTE6 <> C2.NEW_ATTRIBUTE6) THEN
1466         x_instance_rec.ATTRIBUTE6 := C2.NEW_ATTRIBUTE6;
1467    END IF;
1468 
1469    IF (C2.OLD_ATTRIBUTE7 IS NULL AND C2.NEW_ATTRIBUTE7 IS NOT NULL)
1470    OR (C2.OLD_ATTRIBUTE7 IS NOT NULL AND C2.NEW_ATTRIBUTE7 IS NULL)
1471    OR (C2.OLD_ATTRIBUTE7 <> C2.NEW_ATTRIBUTE7) THEN
1472         x_instance_rec.ATTRIBUTE7 := C2.NEW_ATTRIBUTE7;
1473    END IF;
1474 
1475    IF (C2.OLD_ATTRIBUTE8 IS NULL AND C2.NEW_ATTRIBUTE8 IS NOT NULL)
1476    OR (C2.OLD_ATTRIBUTE8 IS NOT NULL AND C2.NEW_ATTRIBUTE8 IS NULL)
1477    OR (C2.OLD_ATTRIBUTE8 <> C2.NEW_ATTRIBUTE8) THEN
1478         x_instance_rec.ATTRIBUTE8 := C2.NEW_ATTRIBUTE8;
1479    END IF;
1480 
1481    IF (C2.OLD_ATTRIBUTE9 IS NULL AND C2.NEW_ATTRIBUTE9 IS NOT NULL)
1482    OR (C2.OLD_ATTRIBUTE9 IS NOT NULL AND C2.NEW_ATTRIBUTE9 IS NULL)
1483    OR (C2.OLD_ATTRIBUTE9 <> C2.NEW_ATTRIBUTE9) THEN
1484         x_instance_rec.ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
1485    END IF;
1486 
1487 
1488    IF (C2.OLD_ATTRIBUTE10 IS NULL AND C2.NEW_ATTRIBUTE10 IS NOT NULL)
1489    OR (C2.OLD_ATTRIBUTE10 IS NOT NULL AND C2.NEW_ATTRIBUTE10 IS NULL)
1490    OR (C2.OLD_ATTRIBUTE10 <> C2.NEW_ATTRIBUTE10) THEN
1491         x_instance_rec.ATTRIBUTE10 := C2.NEW_ATTRIBUTE10;
1492    END IF;
1493 
1494 
1495 
1496    IF (C2.OLD_ATTRIBUTE11 IS NULL AND C2.NEW_ATTRIBUTE11 IS NOT NULL)
1497    OR (C2.OLD_ATTRIBUTE11 IS NOT NULL AND C2.NEW_ATTRIBUTE11 IS NULL)
1498    OR (C2.OLD_ATTRIBUTE11 <> C2.NEW_ATTRIBUTE11) THEN
1499         x_instance_rec.ATTRIBUTE11 := C2.NEW_ATTRIBUTE11;
1500    END IF;
1501 
1502    IF (C2.OLD_ATTRIBUTE12 IS NULL AND C2.NEW_ATTRIBUTE12 IS NOT NULL)
1503    OR (C2.OLD_ATTRIBUTE12 IS NOT NULL AND C2.NEW_ATTRIBUTE12 IS NULL)
1504    OR (C2.OLD_ATTRIBUTE12 <> C2.NEW_ATTRIBUTE12) THEN
1505         x_instance_rec.ATTRIBUTE12 := C2.NEW_ATTRIBUTE12;
1506    END IF;
1507 
1508 
1509    IF (C2.OLD_ATTRIBUTE13 IS NULL AND C2.NEW_ATTRIBUTE13 IS NOT NULL)
1510    OR (C2.OLD_ATTRIBUTE13 IS NOT NULL AND C2.NEW_ATTRIBUTE13 IS NULL)
1511    OR (C2.OLD_ATTRIBUTE13 <> C2.NEW_ATTRIBUTE13) THEN
1512         x_instance_rec.ATTRIBUTE13 := C2.NEW_ATTRIBUTE13;
1513    END IF;
1514 
1515 
1516    IF (C2.OLD_ATTRIBUTE14 IS NULL AND C2.NEW_ATTRIBUTE14 IS NOT NULL)
1517    OR (C2.OLD_ATTRIBUTE14 IS NOT NULL AND C2.NEW_ATTRIBUTE14 IS NULL)
1518    OR (C2.OLD_ATTRIBUTE14 <> C2.NEW_ATTRIBUTE14) THEN
1519         x_instance_rec.ATTRIBUTE14 := C2.NEW_ATTRIBUTE14;
1520    END IF;
1521 
1522    IF (C2.OLD_ATTRIBUTE15 IS NULL AND C2.NEW_ATTRIBUTE15 IS NOT NULL)
1523    OR (C2.OLD_ATTRIBUTE15 IS NOT NULL AND C2.NEW_ATTRIBUTE15 IS NULL)
1524    OR (C2.OLD_ATTRIBUTE15 <> C2.NEW_ATTRIBUTE15) THEN
1525         x_instance_rec.ATTRIBUTE15 := C2.NEW_ATTRIBUTE15;
1526    END IF;
1527 
1528    IF (C2.OLD_INST_LOC_TYPE_CODE IS NULL AND C2.NEW_INST_LOC_TYPE_CODE IS NOT NULL)
1529    OR (C2.OLD_INST_LOC_TYPE_CODE IS NOT NULL AND C2.NEW_INST_LOC_TYPE_CODE IS NULL)
1530    OR (C2.OLD_INST_LOC_TYPE_CODE <> C2.NEW_INST_LOC_TYPE_CODE) THEN
1531         x_instance_rec.INSTALL_LOCATION_TYPE_CODE := C2.NEW_INST_LOC_TYPE_CODE;
1532    END IF;
1533 
1534    IF (C2.OLD_INST_LOC_ID IS NULL AND C2.NEW_INST_LOC_ID IS NOT NULL)
1535    OR (C2.OLD_INST_LOC_ID IS NOT NULL AND C2.NEW_INST_LOC_ID IS NULL)
1536    OR (C2.OLD_INST_LOC_ID <> C2.NEW_INST_LOC_ID) THEN
1537         x_instance_rec.INSTALL_LOCATION_ID := C2.NEW_INST_LOC_ID;
1538    END IF;
1539 
1540    IF (C2.OLD_INST_USAGE_CODE IS NULL AND C2.NEW_INST_USAGE_CODE IS NOT NULL)
1541    OR (C2.OLD_INST_USAGE_CODE IS NOT NULL AND C2.NEW_INST_USAGE_CODE IS NULL)
1542    OR (C2.OLD_INST_USAGE_CODE <> C2.NEW_INST_USAGE_CODE) THEN
1543         x_instance_rec.INSTANCE_USAGE_CODE := C2.NEW_INST_USAGE_CODE;
1544    END IF;
1545 
1546    IF (C2.OLD_LAST_VLD_ORGANIZATION_ID IS NULL AND C2.NEW_LAST_VLD_ORGANIZATION_ID IS NOT NULL)
1547    OR (C2.OLD_LAST_VLD_ORGANIZATION_ID IS NOT NULL AND C2.NEW_LAST_VLD_ORGANIZATION_ID IS NULL)
1548    OR (C2.OLD_LAST_VLD_ORGANIZATION_ID <> C2.NEW_LAST_VLD_ORGANIZATION_ID) THEN
1549         x_instance_rec.VLD_ORGANIZATION_ID := C2.NEW_LAST_VLD_ORGANIZATION_ID;
1550    END IF;
1551 
1552    IF (C2.OLD_OE_AGREEMENT_ID IS NULL AND C2.NEW_OE_AGREEMENT_ID IS NOT NULL)
1553    OR (C2.OLD_OE_AGREEMENT_ID IS NOT NULL AND C2.NEW_OE_AGREEMENT_ID IS NULL)
1554    OR (C2.OLD_OE_AGREEMENT_ID <> C2.NEW_OE_AGREEMENT_ID) THEN
1555         x_instance_rec.LAST_OE_AGREEMENT_ID := C2.NEW_OE_AGREEMENT_ID;
1556    END IF;
1557 
1558    IF (C2.OLD_LAST_OE_ORDER_LINE_ID IS NULL AND C2.NEW_LAST_OE_ORDER_LINE_ID IS NOT NULL)
1559    OR (C2.OLD_LAST_OE_ORDER_LINE_ID IS NOT NULL AND C2.NEW_LAST_OE_ORDER_LINE_ID IS NULL)
1560    OR (C2.OLD_LAST_OE_ORDER_LINE_ID <> C2.NEW_LAST_OE_ORDER_LINE_ID) THEN
1561         x_instance_rec.LAST_OE_ORDER_LINE_ID := C2.NEW_LAST_OE_ORDER_LINE_ID;
1562    END IF;
1563 
1564    IF (C2.OLD_LAST_OE_RMA_LINE_ID IS NULL AND C2.NEW_LAST_OE_RMA_LINE_ID IS NOT NULL)
1565    OR (C2.OLD_LAST_OE_RMA_LINE_ID IS NOT NULL AND C2.NEW_LAST_OE_RMA_LINE_ID IS NULL)
1566    OR (C2.OLD_LAST_OE_RMA_LINE_ID <> C2.NEW_LAST_OE_RMA_LINE_ID) THEN
1567         x_instance_rec.LAST_OE_RMA_LINE_ID := C2.NEW_LAST_OE_RMA_LINE_ID;
1568    END IF;
1569 
1570    IF (C2.OLD_LAST_WIP_JOB_ID IS NULL AND C2.NEW_LAST_WIP_JOB_ID IS NOT NULL)
1571    OR (C2.OLD_LAST_WIP_JOB_ID IS NOT NULL AND C2.NEW_LAST_WIP_JOB_ID IS NULL)
1572    OR (C2.OLD_LAST_WIP_JOB_ID <> C2.NEW_LAST_WIP_JOB_ID) THEN
1573         x_instance_rec.LAST_WIP_JOB_ID := C2.NEW_LAST_WIP_JOB_ID;
1574    END IF;
1575 
1576    IF (C2.OLD_LAST_PO_PO_LINE_ID IS NULL AND C2.NEW_LAST_PO_PO_LINE_ID IS NOT NULL)
1577    OR (C2.OLD_LAST_PO_PO_LINE_ID IS NOT NULL AND C2.NEW_LAST_PO_PO_LINE_ID IS NULL)
1578    OR (C2.OLD_LAST_PO_PO_LINE_ID <> C2.NEW_LAST_PO_PO_LINE_ID) THEN
1579         x_instance_rec.LAST_PO_PO_LINE_ID := C2.NEW_LAST_PO_PO_LINE_ID;
1580    END IF;
1581 
1582    IF (C2.OLD_LAST_PA_PROJECT_ID IS NULL AND C2.NEW_LAST_PA_PROJECT_ID IS NOT NULL)
1583    OR (C2.OLD_LAST_PA_PROJECT_ID IS NOT NULL AND C2.NEW_LAST_PA_PROJECT_ID IS NULL)
1584    OR (C2.OLD_LAST_PA_PROJECT_ID <> C2.NEW_LAST_PA_PROJECT_ID) THEN
1585         x_instance_rec.LAST_PA_PROJECT_ID := C2.NEW_LAST_PA_PROJECT_ID;
1586    END IF;
1587 
1588    IF (C2.OLD_LAST_PA_TASK_ID IS NULL AND C2.NEW_LAST_PA_TASK_ID IS NOT NULL)
1589    OR (C2.OLD_LAST_PA_TASK_ID IS NOT NULL AND C2.NEW_LAST_PA_TASK_ID IS NULL)
1590    OR (C2.OLD_LAST_PA_TASK_ID <> C2.NEW_LAST_PA_TASK_ID) THEN
1591         x_instance_rec.LAST_PA_TASK_ID := C2.NEW_LAST_PA_TASK_ID;
1592    END IF;
1593 
1594    IF (C2.OLD_LAST_TXN_LINE_DETAIL_ID IS NULL AND C2.NEW_LAST_TXN_LINE_DETAIL_ID IS NOT NULL)
1595    OR (C2.OLD_LAST_TXN_LINE_DETAIL_ID IS NOT NULL AND C2.NEW_LAST_TXN_LINE_DETAIL_ID IS NULL)
1596    OR (C2.OLD_LAST_TXN_LINE_DETAIL_ID <> C2.NEW_LAST_TXN_LINE_DETAIL_ID) THEN
1597         x_instance_rec.LAST_TXN_LINE_DETAIL_ID := C2.NEW_LAST_TXN_LINE_DETAIL_ID;
1598    END IF;
1599 
1600    IF (C2.OLD_LAST_OE_PO_NUMBER IS NULL AND C2.NEW_LAST_OE_PO_NUMBER IS NOT NULL)
1601    OR (C2.OLD_LAST_OE_PO_NUMBER IS NOT NULL AND C2.NEW_LAST_OE_PO_NUMBER IS NULL)
1602    OR (C2.OLD_LAST_OE_PO_NUMBER <> C2.NEW_LAST_OE_PO_NUMBER) THEN
1603         x_instance_rec.LAST_OE_PO_NUMBER := C2.NEW_LAST_OE_PO_NUMBER;
1604    END IF;
1605 
1606   -- sguthiva added for att enhancements
1607    IF (C2.OLD_CONFIG_INST_REV_NUM IS NULL AND C2.NEW_CONFIG_INST_REV_NUM IS NOT NULL)
1608    OR (C2.OLD_CONFIG_INST_REV_NUM IS NOT NULL AND C2.NEW_CONFIG_INST_REV_NUM IS NULL)
1609    OR (C2.OLD_CONFIG_INST_REV_NUM <> C2.NEW_CONFIG_INST_REV_NUM) THEN
1610         x_instance_rec.CONFIG_INST_REV_NUM := C2.NEW_CONFIG_INST_REV_NUM;
1611    END IF;
1612 
1613    IF (C2.OLD_CONFIG_VALID_STATUS IS NULL AND C2.NEW_CONFIG_VALID_STATUS IS NOT NULL)
1614    OR (C2.OLD_CONFIG_VALID_STATUS IS NOT NULL AND C2.NEW_CONFIG_VALID_STATUS IS NULL)
1615    OR (C2.OLD_CONFIG_VALID_STATUS <> C2.NEW_CONFIG_VALID_STATUS) THEN
1616         x_instance_rec.CONFIG_VALID_STATUS := C2.NEW_CONFIG_VALID_STATUS;
1617    END IF;
1618 
1619    IF (C2.OLD_INSTANCE_DESCRIPTION IS NULL AND C2.NEW_INSTANCE_DESCRIPTION IS NOT NULL)
1620    OR (C2.OLD_INSTANCE_DESCRIPTION IS NOT NULL AND C2.NEW_INSTANCE_DESCRIPTION IS NULL)
1621    OR (C2.OLD_INSTANCE_DESCRIPTION <> C2.NEW_INSTANCE_DESCRIPTION) THEN
1622         x_instance_rec.INSTANCE_DESCRIPTION := C2.NEW_INSTANCE_DESCRIPTION;
1623    END IF;
1624   -- End of addition
1625 
1626   --start of code for eam integration--
1627    IF (C2.OLD_NETWORK_ASSET_FLAG IS NULL AND C2.NEW_NETWORK_ASSET_FLAG IS NOT NULL)
1628    OR (C2.OLD_NETWORK_ASSET_FLAG IS NOT NULL AND C2.NEW_NETWORK_ASSET_FLAG IS NULL)
1629    OR (C2.OLD_NETWORK_ASSET_FLAG <> C2.NEW_NETWORK_ASSET_FLAG) THEN
1630         x_instance_rec.NETWORK_ASSET_FLAG := C2.NEW_NETWORK_ASSET_FLAG;
1631    END IF;
1632 
1633    IF (C2.OLD_MAINTAINABLE_FLAG IS NULL AND C2.NEW_MAINTAINABLE_FLAG IS NOT NULL)
1634    OR (C2.OLD_MAINTAINABLE_FLAG IS NOT NULL AND C2.NEW_MAINTAINABLE_FLAG IS NULL)
1635    OR (C2.OLD_MAINTAINABLE_FLAG <> C2.NEW_MAINTAINABLE_FLAG) THEN
1636         x_instance_rec.MAINTAINABLE_FLAG := C2.NEW_MAINTAINABLE_FLAG;
1637    END IF;
1638 
1639    IF (C2.OLD_PN_LOCATION_ID IS NULL AND C2.NEW_PN_LOCATION_ID IS NOT NULL)
1640    OR (C2.OLD_PN_LOCATION_ID IS NOT NULL AND C2.NEW_PN_LOCATION_ID IS NULL)
1641    OR (C2.OLD_PN_LOCATION_ID <> C2.NEW_PN_LOCATION_ID) THEN
1642         x_instance_rec.PN_LOCATION_ID := C2.NEW_PN_LOCATION_ID;
1643    END IF;
1644 
1645    IF (C2.OLD_ASSET_CRITICALITY_CODE IS NULL AND C2.NEW_ASSET_CRITICALITY_CODE IS NOT NULL)
1646    OR (C2.OLD_ASSET_CRITICALITY_CODE IS NOT NULL AND C2.NEW_ASSET_CRITICALITY_CODE IS NULL)
1647    OR (C2.OLD_ASSET_CRITICALITY_CODE <> C2.NEW_ASSET_CRITICALITY_CODE) THEN
1648         x_instance_rec.ASSET_CRITICALITY_CODE := C2.NEW_ASSET_CRITICALITY_CODE;
1649    END IF;
1650 
1651    IF (C2.OLD_CATEGORY_ID IS NULL AND C2.NEW_CATEGORY_ID IS NOT NULL)
1652    OR (C2.OLD_CATEGORY_ID IS NOT NULL AND C2.NEW_CATEGORY_ID IS NULL)
1653    OR (C2.OLD_CATEGORY_ID <> C2.NEW_CATEGORY_ID) THEN
1654         x_instance_rec.CATEGORY_ID := C2.NEW_CATEGORY_ID;
1655    END IF;
1656 
1657    IF (C2.OLD_EQUIPMENT_GEN_OBJECT_ID IS NULL AND C2.NEW_EQUIPMENT_GEN_OBJECT_ID IS NOT NULL)
1658    OR (C2.OLD_EQUIPMENT_GEN_OBJECT_ID IS NOT NULL AND C2.NEW_EQUIPMENT_GEN_OBJECT_ID IS NULL)
1659    OR (C2.OLD_EQUIPMENT_GEN_OBJECT_ID <> C2.NEW_EQUIPMENT_GEN_OBJECT_ID) THEN
1660         x_instance_rec.EQUIPMENT_GEN_OBJECT_ID := C2.NEW_EQUIPMENT_GEN_OBJECT_ID;
1661    END IF;
1662 
1663    IF (C2.OLD_INSTANTIATION_FLAG IS NULL AND C2.NEW_INSTANTIATION_FLAG IS NOT NULL)
1664    OR (C2.OLD_INSTANTIATION_FLAG IS NOT NULL AND C2.NEW_INSTANTIATION_FLAG IS NULL)
1665    OR (C2.OLD_INSTANTIATION_FLAG <> C2.NEW_INSTANTIATION_FLAG) THEN
1666         x_instance_rec.INSTANTIATION_FLAG := C2.NEW_INSTANTIATION_FLAG;
1667    END IF;
1668 
1669    IF (C2.OLD_LINEAR_LOCATION_ID IS NULL AND C2.NEW_LINEAR_LOCATION_ID IS NOT NULL)
1670    OR (C2.OLD_LINEAR_LOCATION_ID IS NOT NULL AND C2.NEW_LINEAR_LOCATION_ID IS NULL)
1671    OR (C2.OLD_LINEAR_LOCATION_ID <> C2.NEW_LINEAR_LOCATION_ID) THEN
1672         x_instance_rec.LINEAR_LOCATION_ID := C2.NEW_LINEAR_LOCATION_ID;
1673    END IF;
1674 
1675    IF (C2.OLD_OPERATIONAL_LOG_FLAG IS NULL AND C2.NEW_OPERATIONAL_LOG_FLAG IS NOT NULL)
1676    OR (C2.OLD_OPERATIONAL_LOG_FLAG IS NOT NULL AND C2.NEW_OPERATIONAL_LOG_FLAG IS NULL)
1677    OR (C2.OLD_OPERATIONAL_LOG_FLAG <> C2.NEW_OPERATIONAL_LOG_FLAG) THEN
1678         x_instance_rec.OPERATIONAL_LOG_FLAG := C2.NEW_OPERATIONAL_LOG_FLAG;
1679    END IF;
1680 
1681    IF (C2.OLD_CHECKIN_STATUS IS NULL AND C2.NEW_CHECKIN_STATUS IS NOT NULL)
1682    OR (C2.OLD_CHECKIN_STATUS IS NOT NULL AND C2.NEW_CHECKIN_STATUS IS NULL)
1683    OR (C2.OLD_CHECKIN_STATUS <> C2.NEW_CHECKIN_STATUS) THEN
1684         x_instance_rec.CHECKIN_STATUS := C2.NEW_CHECKIN_STATUS;
1685    END IF;
1686 
1687    IF (C2.OLD_SUPPLIER_WARRANTY_EXP_DATE IS NULL AND C2.NEW_SUPPLIER_WARRANTY_EXP_DATE IS NOT NULL)
1688    OR (C2.OLD_SUPPLIER_WARRANTY_EXP_DATE IS NOT NULL AND C2.NEW_SUPPLIER_WARRANTY_EXP_DATE IS NULL)
1689    OR (C2.OLD_SUPPLIER_WARRANTY_EXP_DATE <> C2.NEW_SUPPLIER_WARRANTY_EXP_DATE) THEN
1690         x_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := C2.NEW_SUPPLIER_WARRANTY_EXP_DATE;
1691    END IF;
1692 
1693    IF (C2.OLD_ATTRIBUTE16 IS NULL AND C2.NEW_ATTRIBUTE16 IS NOT NULL)
1694    OR (C2.OLD_ATTRIBUTE16 IS NOT NULL AND C2.NEW_ATTRIBUTE16 IS NULL)
1695    OR (C2.OLD_ATTRIBUTE16 <> C2.NEW_ATTRIBUTE16) THEN
1696         x_instance_rec.ATTRIBUTE16 := C2.NEW_ATTRIBUTE16;
1697    END IF;
1698 
1699    IF (C2.OLD_ATTRIBUTE17 IS NULL AND C2.NEW_ATTRIBUTE17 IS NOT NULL)
1700    OR (C2.OLD_ATTRIBUTE17 IS NOT NULL AND C2.NEW_ATTRIBUTE17 IS NULL)
1701    OR (C2.OLD_ATTRIBUTE17 <> C2.NEW_ATTRIBUTE17) THEN
1702         x_instance_rec.ATTRIBUTE17 := C2.NEW_ATTRIBUTE17;
1703    END IF;
1704 
1705    IF (C2.OLD_ATTRIBUTE18 IS NULL AND C2.NEW_ATTRIBUTE18 IS NOT NULL)
1706    OR (C2.OLD_ATTRIBUTE18 IS NOT NULL AND C2.NEW_ATTRIBUTE18 IS NULL)
1707    OR (C2.OLD_ATTRIBUTE18 <> C2.NEW_ATTRIBUTE18) THEN
1708         x_instance_rec.ATTRIBUTE18 := C2.NEW_ATTRIBUTE18;
1709    END IF;
1710 
1711    IF (C2.OLD_ATTRIBUTE19 IS NULL AND C2.NEW_ATTRIBUTE19 IS NOT NULL)
1712    OR (C2.OLD_ATTRIBUTE19 IS NOT NULL AND C2.NEW_ATTRIBUTE19 IS NULL)
1713    OR (C2.OLD_ATTRIBUTE19 <> C2.NEW_ATTRIBUTE19) THEN
1714         x_instance_rec.ATTRIBUTE19 := C2.NEW_ATTRIBUTE19;
1715    END IF;
1716 
1717    IF (C2.OLD_ATTRIBUTE20 IS NULL AND C2.NEW_ATTRIBUTE20 IS NOT NULL)
1718    OR (C2.OLD_ATTRIBUTE20 IS NOT NULL AND C2.NEW_ATTRIBUTE20 IS NULL)
1719    OR (C2.OLD_ATTRIBUTE20 <> C2.NEW_ATTRIBUTE20) THEN
1720         x_instance_rec.ATTRIBUTE20 := C2.NEW_ATTRIBUTE20;
1721    END IF;
1722 
1723    IF (C2.OLD_ATTRIBUTE21 IS NULL AND C2.NEW_ATTRIBUTE21 IS NOT NULL)
1724    OR (C2.OLD_ATTRIBUTE21 IS NOT NULL AND C2.NEW_ATTRIBUTE21 IS NULL)
1725    OR (C2.OLD_ATTRIBUTE21 <> C2.NEW_ATTRIBUTE21) THEN
1726         x_instance_rec.ATTRIBUTE21 := C2.NEW_ATTRIBUTE21;
1727    END IF;
1728 
1729    IF (C2.OLD_ATTRIBUTE22 IS NULL AND C2.NEW_ATTRIBUTE22 IS NOT NULL)
1730    OR (C2.OLD_ATTRIBUTE22 IS NOT NULL AND C2.NEW_ATTRIBUTE22 IS NULL)
1731    OR (C2.OLD_ATTRIBUTE22 <> C2.NEW_ATTRIBUTE22) THEN
1732         x_instance_rec.ATTRIBUTE22 := C2.NEW_ATTRIBUTE22;
1733    END IF;
1734 
1735    IF (C2.OLD_ATTRIBUTE23 IS NULL AND C2.NEW_ATTRIBUTE23 IS NOT NULL)
1736    OR (C2.OLD_ATTRIBUTE23 IS NOT NULL AND C2.NEW_ATTRIBUTE23 IS NULL)
1737    OR (C2.OLD_ATTRIBUTE23 <> C2.NEW_ATTRIBUTE23) THEN
1738         x_instance_rec.ATTRIBUTE23 := C2.NEW_ATTRIBUTE23;
1739    END IF;
1740 
1741    IF (C2.OLD_ATTRIBUTE24 IS NULL AND C2.NEW_ATTRIBUTE24 IS NOT NULL)
1742    OR (C2.OLD_ATTRIBUTE24 IS NOT NULL AND C2.NEW_ATTRIBUTE24 IS NULL)
1743    OR (C2.OLD_ATTRIBUTE24 <> C2.NEW_ATTRIBUTE24) THEN
1744         x_instance_rec.ATTRIBUTE24 := C2.NEW_ATTRIBUTE24;
1745    END IF;
1746 
1747    IF (C2.OLD_ATTRIBUTE25 IS NULL AND C2.NEW_ATTRIBUTE25 IS NOT NULL)
1748    OR (C2.OLD_ATTRIBUTE25 IS NOT NULL AND C2.NEW_ATTRIBUTE25 IS NULL)
1749    OR (C2.OLD_ATTRIBUTE25 <> C2.NEW_ATTRIBUTE25) THEN
1750         x_instance_rec.ATTRIBUTE25 := C2.NEW_ATTRIBUTE25;
1751    END IF;
1752 
1753    IF (C2.OLD_ATTRIBUTE26 IS NULL AND C2.NEW_ATTRIBUTE26 IS NOT NULL)
1754    OR (C2.OLD_ATTRIBUTE26 IS NOT NULL AND C2.NEW_ATTRIBUTE26 IS NULL)
1755    OR (C2.OLD_ATTRIBUTE26 <> C2.NEW_ATTRIBUTE26) THEN
1756         x_instance_rec.ATTRIBUTE26 := C2.NEW_ATTRIBUTE26;
1757    END IF;
1758 
1759    IF (C2.OLD_ATTRIBUTE27 IS NULL AND C2.NEW_ATTRIBUTE27 IS NOT NULL)
1760    OR (C2.OLD_ATTRIBUTE27 IS NOT NULL AND C2.NEW_ATTRIBUTE27 IS NULL)
1761    OR (C2.OLD_ATTRIBUTE27 <> C2.NEW_ATTRIBUTE27) THEN
1762         x_instance_rec.ATTRIBUTE27 := C2.NEW_ATTRIBUTE27;
1763    END IF;
1764 
1765    IF (C2.OLD_ATTRIBUTE28 IS NULL AND C2.NEW_ATTRIBUTE28 IS NOT NULL)
1766    OR (C2.OLD_ATTRIBUTE28 IS NOT NULL AND C2.NEW_ATTRIBUTE28 IS NULL)
1767    OR (C2.OLD_ATTRIBUTE28 <> C2.NEW_ATTRIBUTE28) THEN
1768         x_instance_rec.ATTRIBUTE28 := C2.NEW_ATTRIBUTE28;
1769    END IF;
1770 
1771    IF (C2.OLD_ATTRIBUTE29 IS NULL AND C2.NEW_ATTRIBUTE29 IS NOT NULL)
1772    OR (C2.OLD_ATTRIBUTE29 IS NOT NULL AND C2.NEW_ATTRIBUTE29 IS NULL)
1773    OR (C2.OLD_ATTRIBUTE29 <> C2.NEW_ATTRIBUTE29) THEN
1774         x_instance_rec.ATTRIBUTE29 := C2.NEW_ATTRIBUTE29;
1775    END IF;
1776 
1777    IF (C2.OLD_ATTRIBUTE30 IS NULL AND C2.NEW_ATTRIBUTE30 IS NOT NULL)
1778    OR (C2.OLD_ATTRIBUTE30 IS NOT NULL AND C2.NEW_ATTRIBUTE30 IS NULL)
1779    OR (C2.OLD_ATTRIBUTE30 <> C2.NEW_ATTRIBUTE30) THEN
1780         x_instance_rec.ATTRIBUTE30 := C2.NEW_ATTRIBUTE30;
1781    END IF;
1782   --end of code for eam integration--
1783 
1784   -- Addition of columns for FA Integration
1785    IF (C2.OLD_PURCHASE_UNIT_PRICE IS NULL AND C2.NEW_PURCHASE_UNIT_PRICE IS NOT NULL)
1786    OR (C2.OLD_PURCHASE_UNIT_PRICE IS NOT NULL AND C2.NEW_PURCHASE_UNIT_PRICE IS NULL)
1787    OR (C2.OLD_PURCHASE_UNIT_PRICE <> C2.NEW_PURCHASE_UNIT_PRICE) THEN
1788         x_instance_rec.PURCHASE_UNIT_PRICE := C2.NEW_PURCHASE_UNIT_PRICE;
1789    END IF;
1790 
1791    IF (C2.OLD_PURCHASE_CURRENCY_CODE IS NULL AND C2.NEW_PURCHASE_CURRENCY_CODE IS NOT NULL)
1792    OR (C2.OLD_PURCHASE_CURRENCY_CODE IS NOT NULL AND C2.NEW_PURCHASE_CURRENCY_CODE IS NULL)
1793    OR (C2.OLD_PURCHASE_CURRENCY_CODE <> C2.NEW_PURCHASE_CURRENCY_CODE) THEN
1794         x_instance_rec.PURCHASE_CURRENCY_CODE := C2.NEW_PURCHASE_CURRENCY_CODE;
1795    END IF;
1796 
1797    IF (C2.OLD_PAYABLES_UNIT_PRICE IS NULL AND C2.NEW_PAYABLES_UNIT_PRICE IS NOT NULL)
1798    OR (C2.OLD_PAYABLES_UNIT_PRICE IS NOT NULL AND C2.NEW_PAYABLES_UNIT_PRICE IS NULL)
1799    OR (C2.OLD_PAYABLES_UNIT_PRICE <> C2.NEW_PAYABLES_UNIT_PRICE) THEN
1800         x_instance_rec.PAYABLES_UNIT_PRICE := C2.NEW_PAYABLES_UNIT_PRICE;
1801    END IF;
1802 
1803    IF (C2.OLD_PAYABLES_CURRENCY_CODE IS NULL AND C2.NEW_PAYABLES_CURRENCY_CODE IS NOT NULL)
1804    OR (C2.OLD_PAYABLES_CURRENCY_CODE IS NOT NULL AND C2.NEW_PAYABLES_CURRENCY_CODE IS NULL)
1805    OR (C2.OLD_PAYABLES_CURRENCY_CODE <> C2.NEW_PAYABLES_CURRENCY_CODE) THEN
1806         x_instance_rec.PAYABLES_CURRENCY_CODE := C2.NEW_PAYABLES_CURRENCY_CODE;
1807    END IF;
1808 
1809    IF (C2.OLD_SALES_UNIT_PRICE IS NULL AND C2.NEW_SALES_UNIT_PRICE IS NOT NULL)
1810    OR (C2.OLD_SALES_UNIT_PRICE IS NOT NULL AND C2.NEW_SALES_UNIT_PRICE IS NULL)
1811    OR (C2.OLD_SALES_UNIT_PRICE <> C2.NEW_SALES_UNIT_PRICE) THEN
1812         x_instance_rec.SALES_UNIT_PRICE := C2.NEW_SALES_UNIT_PRICE;
1813    END IF;
1814 
1815    IF (C2.OLD_SALES_CURRENCY_CODE IS NULL AND C2.NEW_SALES_CURRENCY_CODE IS NOT NULL)
1816    OR (C2.OLD_SALES_CURRENCY_CODE IS NOT NULL AND C2.NEW_SALES_CURRENCY_CODE IS NULL)
1817    OR (C2.OLD_SALES_CURRENCY_CODE <> C2.NEW_SALES_CURRENCY_CODE) THEN
1818         x_instance_rec.SALES_CURRENCY_CODE := C2.NEW_SALES_CURRENCY_CODE;
1819    END IF;
1820 
1821    IF (C2.OLD_OPERATIONAL_STATUS_CODE IS NULL AND C2.NEW_OPERATIONAL_STATUS_CODE IS NOT NULL)
1822    OR (C2.OLD_OPERATIONAL_STATUS_CODE IS NOT NULL AND C2.NEW_OPERATIONAL_STATUS_CODE IS NULL)
1823    OR (C2.OLD_OPERATIONAL_STATUS_CODE <> C2.NEW_OPERATIONAL_STATUS_CODE) THEN
1824         x_instance_rec.OPERATIONAL_STATUS_CODE := C2.NEW_OPERATIONAL_STATUS_CODE;
1825    END IF;
1826 
1827   -- End addition of columns for FA Integration
1828 
1829   END LOOP;
1830 
1831   IF x_instance_rec.location_type_code IN ('WIP', 'PROJECT','IN_TRANSIT','PO','INTERNAL_SITE')
1832      AND
1833      nvl(x_instance_rec.location_id, fnd_api.g_miss_num) = fnd_api.g_miss_num
1834   THEN
1835        BEGIN
1836         SELECT location_id
1837           INTO x_instance_rec.location_id
1838           FROM hr_all_organization_units
1839          WHERE organization_id = x_instance_rec.vld_organization_id;
1840        EXCEPTION
1841         WHEN NO_DATA_FOUND THEN
1842           fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
1843           fnd_message.set_token('ORGANIZATION_ID',x_instance_rec.vld_organization_id);
1844           fnd_msg_pub.ADD;
1845           RAISE fnd_api.g_exc_error;
1846        END;
1847     END IF;
1848 
1849 END Construct_inst_from_hist;
1850 
1851 /*-------------------------------------------------------*/
1852 /* Procedure name:  Construct_inst_header_rec            */
1853 /* Description   :  This procedure defines the columns   */
1854 /*                  for the Dynamic SQL                  */
1855 /*-------------------------------------------------------*/
1856 -- srramakr Bug # 2636868. Instead of using IN p_instance_id_list, we use = p_inst_id. This
1857 -- is to avoid large memory usage in the SGA.
1858 PROCEDURE Construct_inst_header_rec
1859 (
1860   p_inst_id                 IN   NUMBER,
1861   x_instance_header_tbl     IN OUT NOCOPY  csi_datastructures_pub.instance_header_tbl
1862   ) IS
1863 
1864 l_inst_header_cursor_id  INTEGER;
1865 l_rows_processed         NUMBER;
1866 l_instance_header_rec    csi_datastructures_pub.instance_header_rec;
1867 l_count                  NUMBER := 0;
1868 
1869 l_select_stmt  VARCHAR2(2000) := ' select instance_id, instance_number, external_reference, '||
1870                 ' inventory_item_id ,inventory_revision ,inv_master_organization_id, '||
1871                 ' serial_number ,mfg_serial_number_flag, lot_number, quantity,unit_of_measure ,'||
1872                 ' accounting_class_code, instance_condition_id, instance_status_id,customer_view_flag, '||
1873                 ' merchant_view_flag, sellable_flag, system_id, instance_type_code ,active_start_date, '||
1874                 ' active_end_date, location_type_code ,location_id, inv_organization_id, inv_subinventory_name, '||
1875                 ' inv_locator_id, pa_project_id, pa_project_task_id, in_transit_order_line_id, '||
1876                 ' wip_job_id, po_order_line_id ,last_oe_order_line_id, last_oe_rma_line_id , '||
1877                 ' last_po_po_line_id, last_oe_po_number, last_wip_job_id, last_pa_project_id, '||
1878                 ' last_pa_task_id, last_oe_agreement_id, install_date, manually_created_flag, '||
1879                 ' return_by_date, actual_return_date, creation_complete_flag, completeness_flag, '||
1880                 ' context, attribute1, attribute2, attribute3, attribute4, attribute5, attribute6, '||
1881                 ' attribute7, attribute8, attribute9, attribute10, attribute11, attribute12, attribute13, '||
1882                 ' attribute14, attribute15, object_version_number, last_txn_line_detail_id, '||
1883                 ' install_location_type_code, install_location_id, instance_usage_code, last_vld_organization_id, '||
1884                 ' config_inst_hdr_id, config_inst_rev_num, config_inst_item_id, '||
1885                 ' config_valid_status, instance_description, '||
1886                 --start of code for eam integration columns--
1887                 ' network_asset_flag, maintainable_flag, pn_location_id, asset_criticality_code, '||
1888                 ' category_id, equipment_gen_object_id, instantiation_flag, linear_location_id, '||
1889                 ' operational_log_flag, checkin_status, supplier_warranty_exp_date, attribute16, '||
1890                 ' attribute17, attribute18, attribute19, attribute20, attribute21, attribute22, attribute23, '||
1891                 ' attribute24, attribute25, attribute26, attribute27, attribute28, attribute29, attribute30, '||
1892                 --end of code for eam integration columns--
1893                 -- Addition of columns for FA Integration
1894                 ' purchase_unit_price, purchase_currency_code, payables_unit_price, payables_currency_code, '||
1895                 ' sales_unit_price, sales_currency_code, operational_status_code '||
1896                 -- End addition of columns for FA Integration
1897                 ' from csi_item_instances where instance_id = :l_inst_id';
1898 
1899 BEGIN
1900 
1901 -- Open the cursor
1902 l_inst_header_cursor_id := dbms_sql.open_cursor;
1903 
1904 -- Parse the select statement
1905 dbms_sql.parse(l_inst_header_cursor_id, l_select_stmt , dbms_sql.native);
1906 dbms_sql.bind_variable(l_inst_header_cursor_id,':l_inst_id',p_inst_id);
1907 
1908 -- define columns
1909 dbms_sql.define_column(l_inst_header_cursor_id, 1, l_instance_header_rec.instance_id);
1910 dbms_sql.define_column(l_inst_header_cursor_id, 2, l_instance_header_rec.instance_number,30);
1911 dbms_sql.define_column(l_inst_header_cursor_id, 3, l_instance_header_rec.external_reference,30);
1912 dbms_sql.define_column(l_inst_header_cursor_id, 4, l_instance_header_rec.inventory_item_id);
1913 dbms_sql.define_column(l_inst_header_cursor_id, 5, l_instance_header_rec.inventory_revision,30);
1914 dbms_sql.define_column(l_inst_header_cursor_id, 6, l_instance_header_rec.inv_master_organization_id);
1915 dbms_sql.define_column(l_inst_header_cursor_id, 7, l_instance_header_rec.serial_number,30);
1916 dbms_sql.define_column(l_inst_header_cursor_id, 8, l_instance_header_rec.mfg_serial_number_flag,1);
1917 dbms_sql.define_column(l_inst_header_cursor_id, 9, l_instance_header_rec.lot_number,80);
1918 dbms_sql.define_column(l_inst_header_cursor_id, 10, l_instance_header_rec.quantity);
1919 dbms_sql.define_column(l_inst_header_cursor_id, 11, l_instance_header_rec.unit_of_measure,3);
1920 dbms_sql.define_column(l_inst_header_cursor_id, 12, l_instance_header_rec.accounting_class_code,10);
1921 dbms_sql.define_column(l_inst_header_cursor_id, 13, l_instance_header_rec.instance_condition_id);
1922 dbms_sql.define_column(l_inst_header_cursor_id, 14, l_instance_header_rec.instance_status_id);
1923 dbms_sql.define_column(l_inst_header_cursor_id, 15, l_instance_header_rec.customer_view_flag,1);
1924 dbms_sql.define_column(l_inst_header_cursor_id, 16, l_instance_header_rec.merchant_view_flag,1);
1925 dbms_sql.define_column(l_inst_header_cursor_id, 17, l_instance_header_rec.sellable_flag,1);
1926 dbms_sql.define_column(l_inst_header_cursor_id, 18, l_instance_header_rec.system_id);
1927 dbms_sql.define_column(l_inst_header_cursor_id, 19, l_instance_header_rec.instance_type_code,30);
1928 dbms_sql.define_column(l_inst_header_cursor_id, 20, l_instance_header_rec.active_start_date);
1929 dbms_sql.define_column(l_inst_header_cursor_id, 21, l_instance_header_rec.active_end_date);
1930 dbms_sql.define_column(l_inst_header_cursor_id, 22, l_instance_header_rec.location_type_code,30);
1931 dbms_sql.define_column(l_inst_header_cursor_id, 23, l_instance_header_rec.location_id);
1932 dbms_sql.define_column(l_inst_header_cursor_id, 24, l_instance_header_rec.inv_organization_id);
1933 dbms_sql.define_column(l_inst_header_cursor_id, 25, l_instance_header_rec.inv_subinventory_name,30);
1934 dbms_sql.define_column(l_inst_header_cursor_id, 26, l_instance_header_rec.inv_locator_id);
1935 dbms_sql.define_column(l_inst_header_cursor_id, 27, l_instance_header_rec.pa_project_id);
1936 dbms_sql.define_column(l_inst_header_cursor_id, 28, l_instance_header_rec.pa_project_task_id);
1937 dbms_sql.define_column(l_inst_header_cursor_id, 29, l_instance_header_rec.in_transit_order_line_id);
1938 dbms_sql.define_column(l_inst_header_cursor_id, 30, l_instance_header_rec.wip_job_id);
1939 dbms_sql.define_column(l_inst_header_cursor_id, 31, l_instance_header_rec.po_order_line_id);
1940 dbms_sql.define_column(l_inst_header_cursor_id, 32, l_instance_header_rec.last_oe_order_line_id);
1941 dbms_sql.define_column(l_inst_header_cursor_id, 33, l_instance_header_rec.last_oe_rma_line_id);
1942 dbms_sql.define_column(l_inst_header_cursor_id, 34, l_instance_header_rec.last_po_po_line_id);
1943 dbms_sql.define_column(l_inst_header_cursor_id, 35, l_instance_header_rec.last_oe_po_number,30);
1944 dbms_sql.define_column(l_inst_header_cursor_id, 36, l_instance_header_rec.last_wip_job_id);
1945 dbms_sql.define_column(l_inst_header_cursor_id, 37, l_instance_header_rec.last_pa_project_id);
1946 dbms_sql.define_column(l_inst_header_cursor_id, 38, l_instance_header_rec.last_pa_task_id);
1947 dbms_sql.define_column(l_inst_header_cursor_id, 39, l_instance_header_rec.last_oe_agreement_id);
1948 dbms_sql.define_column(l_inst_header_cursor_id, 40, l_instance_header_rec.install_date);
1949 dbms_sql.define_column(l_inst_header_cursor_id, 41, l_instance_header_rec.manually_created_flag,1);
1950 dbms_sql.define_column(l_inst_header_cursor_id, 42, l_instance_header_rec.return_by_date);
1951 dbms_sql.define_column(l_inst_header_cursor_id, 43, l_instance_header_rec.actual_return_date);
1952 dbms_sql.define_column(l_inst_header_cursor_id, 44, l_instance_header_rec.creation_complete_flag,1);
1953 dbms_sql.define_column(l_inst_header_cursor_id, 45, l_instance_header_rec.completeness_flag,1);
1954 dbms_sql.define_column(l_inst_header_cursor_id, 46, l_instance_header_rec.context,30);
1955 dbms_sql.define_column(l_inst_header_cursor_id, 47, l_instance_header_rec.attribute1,150);
1956 dbms_sql.define_column(l_inst_header_cursor_id, 48, l_instance_header_rec.attribute2,150);
1957 dbms_sql.define_column(l_inst_header_cursor_id, 49, l_instance_header_rec.attribute3,150);
1958 dbms_sql.define_column(l_inst_header_cursor_id, 50, l_instance_header_rec.attribute4,150);
1959 dbms_sql.define_column(l_inst_header_cursor_id, 51, l_instance_header_rec.attribute5,150);
1960 dbms_sql.define_column(l_inst_header_cursor_id, 52, l_instance_header_rec.attribute6,150);
1961 dbms_sql.define_column(l_inst_header_cursor_id, 53, l_instance_header_rec.attribute7,150);
1962 dbms_sql.define_column(l_inst_header_cursor_id, 54, l_instance_header_rec.attribute8,150);
1963 dbms_sql.define_column(l_inst_header_cursor_id, 55, l_instance_header_rec.attribute9,150);
1964 dbms_sql.define_column(l_inst_header_cursor_id, 56, l_instance_header_rec.attribute10,150);
1965 dbms_sql.define_column(l_inst_header_cursor_id, 57, l_instance_header_rec.attribute11,150);
1966 dbms_sql.define_column(l_inst_header_cursor_id, 58, l_instance_header_rec.attribute12,150);
1967 dbms_sql.define_column(l_inst_header_cursor_id, 59, l_instance_header_rec.attribute13,150);
1968 dbms_sql.define_column(l_inst_header_cursor_id, 60, l_instance_header_rec.attribute14,150);
1969 dbms_sql.define_column(l_inst_header_cursor_id, 61, l_instance_header_rec.attribute15,150);
1970 dbms_sql.define_column(l_inst_header_cursor_id, 62, l_instance_header_rec.object_version_number);
1971 dbms_sql.define_column(l_inst_header_cursor_id, 63, l_instance_header_rec.last_txn_line_detail_id);
1972 dbms_sql.define_column(l_inst_header_cursor_id, 64, l_instance_header_rec.install_location_type_code,30);
1973 dbms_sql.define_column(l_inst_header_cursor_id, 65, l_instance_header_rec.install_location_id);
1974 dbms_sql.define_column(l_inst_header_cursor_id, 66, l_instance_header_rec.instance_usage_code,30);
1975 dbms_sql.define_column(l_inst_header_cursor_id, 67, l_instance_header_rec.vld_organization_id);
1976 -- following code has been added by sguthiva for att enhancements
1977 dbms_sql.define_column(l_inst_header_cursor_id, 68, l_instance_header_rec.config_inst_hdr_id);
1978 dbms_sql.define_column(l_inst_header_cursor_id, 69, l_instance_header_rec.config_inst_rev_num);
1979 dbms_sql.define_column(l_inst_header_cursor_id, 70, l_instance_header_rec.config_inst_item_id);
1980 dbms_sql.define_column(l_inst_header_cursor_id, 71, l_instance_header_rec.config_valid_status,30);
1981 dbms_sql.define_column(l_inst_header_cursor_id, 72, l_instance_header_rec.instance_description,240);
1982 -- end of addition
1983 
1984 --start of code for eam integration columns--
1985 dbms_sql.define_column(l_inst_header_cursor_id, 73, l_instance_header_rec.network_asset_flag,1);
1986 dbms_sql.define_column(l_inst_header_cursor_id, 74, l_instance_header_rec.maintainable_flag,1);
1987 dbms_sql.define_column(l_inst_header_cursor_id, 75, l_instance_header_rec.pn_location_id);
1988 dbms_sql.define_column(l_inst_header_cursor_id, 76, l_instance_header_rec.asset_criticality_code,30);
1989 dbms_sql.define_column(l_inst_header_cursor_id, 77, l_instance_header_rec.category_id);
1990 dbms_sql.define_column(l_inst_header_cursor_id, 78, l_instance_header_rec.equipment_gen_object_id);
1991 dbms_sql.define_column(l_inst_header_cursor_id, 79, l_instance_header_rec.instantiation_flag,1);
1992 dbms_sql.define_column(l_inst_header_cursor_id, 80, l_instance_header_rec.linear_location_id);
1993 dbms_sql.define_column(l_inst_header_cursor_id, 81, l_instance_header_rec.operational_log_flag,1);
1994 dbms_sql.define_column(l_inst_header_cursor_id, 82, l_instance_header_rec.checkin_status);
1995 dbms_sql.define_column(l_inst_header_cursor_id, 83, l_instance_header_rec.supplier_warranty_exp_date);
1996 dbms_sql.define_column(l_inst_header_cursor_id, 84, l_instance_header_rec.attribute16,240);
1997 dbms_sql.define_column(l_inst_header_cursor_id, 85, l_instance_header_rec.attribute17,240);
1998 dbms_sql.define_column(l_inst_header_cursor_id, 86, l_instance_header_rec.attribute18,240);
1999 dbms_sql.define_column(l_inst_header_cursor_id, 87, l_instance_header_rec.attribute19,240);
2000 dbms_sql.define_column(l_inst_header_cursor_id, 88, l_instance_header_rec.attribute20,240);
2001 dbms_sql.define_column(l_inst_header_cursor_id, 89, l_instance_header_rec.attribute21,240);
2002 dbms_sql.define_column(l_inst_header_cursor_id, 90, l_instance_header_rec.attribute22,240);
2003 dbms_sql.define_column(l_inst_header_cursor_id, 91, l_instance_header_rec.attribute23,240);
2004 dbms_sql.define_column(l_inst_header_cursor_id, 92, l_instance_header_rec.attribute24,240);
2005 dbms_sql.define_column(l_inst_header_cursor_id, 93, l_instance_header_rec.attribute25,240);
2006 dbms_sql.define_column(l_inst_header_cursor_id, 94, l_instance_header_rec.attribute26,240);
2007 dbms_sql.define_column(l_inst_header_cursor_id, 95, l_instance_header_rec.attribute27,240);
2008 dbms_sql.define_column(l_inst_header_cursor_id, 96, l_instance_header_rec.attribute28,240);
2009 dbms_sql.define_column(l_inst_header_cursor_id, 97, l_instance_header_rec.attribute29,240);
2010 dbms_sql.define_column(l_inst_header_cursor_id, 98, l_instance_header_rec.attribute30,240);
2011 --end of code for eam integration columns--
2012 
2013 -- Addition of columns for FA Integration
2014 dbms_sql.define_column(l_inst_header_cursor_id, 99, l_instance_header_rec.purchase_unit_price);
2015 dbms_sql.define_column(l_inst_header_cursor_id, 100, l_instance_header_rec.purchase_currency_code,15);
2016 dbms_sql.define_column(l_inst_header_cursor_id, 101, l_instance_header_rec.payables_unit_price);
2017 dbms_sql.define_column(l_inst_header_cursor_id, 102, l_instance_header_rec.payables_currency_code,15);
2018 dbms_sql.define_column(l_inst_header_cursor_id, 103, l_instance_header_rec.sales_unit_price);
2019 dbms_sql.define_column(l_inst_header_cursor_id, 104, l_instance_header_rec.sales_currency_code,15);
2020 dbms_sql.define_column(l_inst_header_cursor_id, 105, l_instance_header_rec.operational_status_code,30);
2021 -- End addition of columns for FA Integration
2022 -- Execute the query
2023 l_rows_processed := dbms_sql.execute(l_inst_header_cursor_id);
2024 
2025 LOOP
2026   EXIT WHEN DBMS_SQL.FETCH_ROWS(l_inst_header_cursor_id) = 0;
2027   -- get the values
2028   l_count := x_instance_header_tbl.count + 1 ;
2029 
2030 dbms_sql.column_value(l_inst_header_cursor_id, 1, x_instance_header_tbl(l_count).instance_id);
2031 dbms_sql.column_value(l_inst_header_cursor_id, 2, x_instance_header_tbl(l_count).instance_number);
2032 dbms_sql.column_value(l_inst_header_cursor_id, 3, x_instance_header_tbl(l_count).external_reference);
2033 dbms_sql.column_value(l_inst_header_cursor_id, 4, x_instance_header_tbl(l_count).inventory_item_id);
2034 dbms_sql.column_value(l_inst_header_cursor_id, 5, x_instance_header_tbl(l_count).inventory_revision);
2035 dbms_sql.column_value(l_inst_header_cursor_id, 6, x_instance_header_tbl(l_count).inv_master_organization_id);
2036 dbms_sql.column_value(l_inst_header_cursor_id, 7, x_instance_header_tbl(l_count).serial_number);
2037 dbms_sql.column_value(l_inst_header_cursor_id, 8, x_instance_header_tbl(l_count).mfg_serial_number_flag);
2038 dbms_sql.column_value(l_inst_header_cursor_id, 9, x_instance_header_tbl(l_count).lot_number);
2039 dbms_sql.column_value(l_inst_header_cursor_id, 10, x_instance_header_tbl(l_count).quantity);
2040 dbms_sql.column_value(l_inst_header_cursor_id, 11, x_instance_header_tbl(l_count).unit_of_measure);
2041 dbms_sql.column_value(l_inst_header_cursor_id, 12, x_instance_header_tbl(l_count).accounting_class_code);
2042 dbms_sql.column_value(l_inst_header_cursor_id, 13, x_instance_header_tbl(l_count).instance_condition_id);
2043 dbms_sql.column_value(l_inst_header_cursor_id, 14, x_instance_header_tbl(l_count).instance_status_id);
2044 dbms_sql.column_value(l_inst_header_cursor_id, 15, x_instance_header_tbl(l_count).customer_view_flag);
2045 dbms_sql.column_value(l_inst_header_cursor_id, 16, x_instance_header_tbl(l_count).merchant_view_flag);
2046 dbms_sql.column_value(l_inst_header_cursor_id, 17, x_instance_header_tbl(l_count).sellable_flag);
2047 dbms_sql.column_value(l_inst_header_cursor_id, 18, x_instance_header_tbl(l_count).system_id);
2048 dbms_sql.column_value(l_inst_header_cursor_id, 19, x_instance_header_tbl(l_count).instance_type_code);
2049 dbms_sql.column_value(l_inst_header_cursor_id, 20, x_instance_header_tbl(l_count).active_start_date);
2050 dbms_sql.column_value(l_inst_header_cursor_id, 21, x_instance_header_tbl(l_count).active_end_date);
2051 dbms_sql.column_value(l_inst_header_cursor_id, 22, x_instance_header_tbl(l_count).location_type_code);
2052 dbms_sql.column_value(l_inst_header_cursor_id, 23, x_instance_header_tbl(l_count).location_id);
2053 dbms_sql.column_value(l_inst_header_cursor_id, 24, x_instance_header_tbl(l_count).inv_organization_id);
2054 dbms_sql.column_value(l_inst_header_cursor_id, 25, x_instance_header_tbl(l_count).inv_subinventory_name);
2055 dbms_sql.column_value(l_inst_header_cursor_id, 26, x_instance_header_tbl(l_count).inv_locator_id);
2056 dbms_sql.column_value(l_inst_header_cursor_id, 27, x_instance_header_tbl(l_count).pa_project_id);
2057 dbms_sql.column_value(l_inst_header_cursor_id, 28, x_instance_header_tbl(l_count).pa_project_task_id);
2058 dbms_sql.column_value(l_inst_header_cursor_id, 29, x_instance_header_tbl(l_count).in_transit_order_line_id);
2059 dbms_sql.column_value(l_inst_header_cursor_id, 30, x_instance_header_tbl(l_count).wip_job_id);
2060 dbms_sql.column_value(l_inst_header_cursor_id, 31, x_instance_header_tbl(l_count).po_order_line_id);
2061 dbms_sql.column_value(l_inst_header_cursor_id, 32, x_instance_header_tbl(l_count).last_oe_order_line_id);
2062 dbms_sql.column_value(l_inst_header_cursor_id, 33, x_instance_header_tbl(l_count).last_oe_rma_line_id);
2063 dbms_sql.column_value(l_inst_header_cursor_id, 34, x_instance_header_tbl(l_count).last_po_po_line_id);
2064 dbms_sql.column_value(l_inst_header_cursor_id, 35, x_instance_header_tbl(l_count).last_oe_po_number);
2065 dbms_sql.column_value(l_inst_header_cursor_id, 36, x_instance_header_tbl(l_count).last_wip_job_id);
2066 dbms_sql.column_value(l_inst_header_cursor_id, 37, x_instance_header_tbl(l_count).last_pa_project_id);
2067 dbms_sql.column_value(l_inst_header_cursor_id, 38, x_instance_header_tbl(l_count).last_pa_task_id);
2068 dbms_sql.column_value(l_inst_header_cursor_id, 39, x_instance_header_tbl(l_count).last_oe_agreement_id);
2069 dbms_sql.column_value(l_inst_header_cursor_id, 40, x_instance_header_tbl(l_count).install_date);
2070 dbms_sql.column_value(l_inst_header_cursor_id, 41, x_instance_header_tbl(l_count).manually_created_flag);
2071 dbms_sql.column_value(l_inst_header_cursor_id, 42, x_instance_header_tbl(l_count).return_by_date);
2072 dbms_sql.column_value(l_inst_header_cursor_id, 43, x_instance_header_tbl(l_count).actual_return_date);
2073 dbms_sql.column_value(l_inst_header_cursor_id, 44, x_instance_header_tbl(l_count).creation_complete_flag);
2074 dbms_sql.column_value(l_inst_header_cursor_id, 45, x_instance_header_tbl(l_count).completeness_flag);
2075 dbms_sql.column_value(l_inst_header_cursor_id, 46, x_instance_header_tbl(l_count).context);
2076 dbms_sql.column_value(l_inst_header_cursor_id, 47, x_instance_header_tbl(l_count).attribute1);
2077 dbms_sql.column_value(l_inst_header_cursor_id, 48, x_instance_header_tbl(l_count).attribute2);
2078 dbms_sql.column_value(l_inst_header_cursor_id, 49, x_instance_header_tbl(l_count).attribute3);
2079 dbms_sql.column_value(l_inst_header_cursor_id, 50, x_instance_header_tbl(l_count).attribute4);
2080 dbms_sql.column_value(l_inst_header_cursor_id, 51, x_instance_header_tbl(l_count).attribute5);
2081 dbms_sql.column_value(l_inst_header_cursor_id, 52, x_instance_header_tbl(l_count).attribute6);
2082 dbms_sql.column_value(l_inst_header_cursor_id, 53, x_instance_header_tbl(l_count).attribute7);
2083 dbms_sql.column_value(l_inst_header_cursor_id, 54, x_instance_header_tbl(l_count).attribute8);
2084 dbms_sql.column_value(l_inst_header_cursor_id, 55, x_instance_header_tbl(l_count).attribute9);
2085 dbms_sql.column_value(l_inst_header_cursor_id, 56, x_instance_header_tbl(l_count).attribute10);
2086 dbms_sql.column_value(l_inst_header_cursor_id, 57, x_instance_header_tbl(l_count).attribute11);
2087 dbms_sql.column_value(l_inst_header_cursor_id, 58, x_instance_header_tbl(l_count).attribute12);
2088 dbms_sql.column_value(l_inst_header_cursor_id, 59, x_instance_header_tbl(l_count).attribute13);
2089 dbms_sql.column_value(l_inst_header_cursor_id, 60, x_instance_header_tbl(l_count).attribute14);
2090 dbms_sql.column_value(l_inst_header_cursor_id, 61, x_instance_header_tbl(l_count).attribute15);
2091 dbms_sql.column_value(l_inst_header_cursor_id, 62, x_instance_header_tbl(l_count).object_version_number);
2092 dbms_sql.column_value(l_inst_header_cursor_id, 63, x_instance_header_tbl(l_count).last_txn_line_detail_id);
2093 dbms_sql.column_value(l_inst_header_cursor_id, 64, x_instance_header_tbl(l_count).install_location_type_code);
2094 dbms_sql.column_value(l_inst_header_cursor_id, 65, x_instance_header_tbl(l_count).install_location_id);
2095 dbms_sql.column_value(l_inst_header_cursor_id, 66, x_instance_header_tbl(l_count).instance_usage_code);
2096 dbms_sql.column_value(l_inst_header_cursor_id, 67, x_instance_header_tbl(l_count).vld_organization_id);
2097 -- following code has been added by sguthiva for att enhancements
2098 dbms_sql.column_value(l_inst_header_cursor_id, 68, x_instance_header_tbl(l_count).config_inst_hdr_id);
2099 dbms_sql.column_value(l_inst_header_cursor_id, 69, x_instance_header_tbl(l_count).config_inst_rev_num);
2100 dbms_sql.column_value(l_inst_header_cursor_id, 70, x_instance_header_tbl(l_count).config_inst_item_id);
2101 dbms_sql.column_value(l_inst_header_cursor_id, 71, x_instance_header_tbl(l_count).config_valid_status);
2102 dbms_sql.column_value(l_inst_header_cursor_id, 72, x_instance_header_tbl(l_count).instance_description);
2103 -- end of code addition
2104 
2105 --start of code for eam integration columns--
2106 dbms_sql.column_value(l_inst_header_cursor_id, 73, x_instance_header_tbl(l_count).network_asset_flag);
2107 dbms_sql.column_value(l_inst_header_cursor_id, 74, x_instance_header_tbl(l_count).maintainable_flag);
2108 dbms_sql.column_value(l_inst_header_cursor_id, 75, x_instance_header_tbl(l_count).pn_location_id);
2109 dbms_sql.column_value(l_inst_header_cursor_id, 76, x_instance_header_tbl(l_count).asset_criticality_code);
2110 dbms_sql.column_value(l_inst_header_cursor_id, 77, x_instance_header_tbl(l_count).category_id);
2111 dbms_sql.column_value(l_inst_header_cursor_id, 78, x_instance_header_tbl(l_count).equipment_gen_object_id);
2112 dbms_sql.column_value(l_inst_header_cursor_id, 79, x_instance_header_tbl(l_count).instantiation_flag);
2113 dbms_sql.column_value(l_inst_header_cursor_id, 80, x_instance_header_tbl(l_count).linear_location_id);
2114 dbms_sql.column_value(l_inst_header_cursor_id, 81, x_instance_header_tbl(l_count).operational_log_flag);
2115 dbms_sql.column_value(l_inst_header_cursor_id, 82, x_instance_header_tbl(l_count).checkin_status);
2116 dbms_sql.column_value(l_inst_header_cursor_id, 83, x_instance_header_tbl(l_count).supplier_warranty_exp_date);
2117 dbms_sql.column_value(l_inst_header_cursor_id, 84, x_instance_header_tbl(l_count).attribute16);
2118 dbms_sql.column_value(l_inst_header_cursor_id, 85, x_instance_header_tbl(l_count).attribute17);
2119 dbms_sql.column_value(l_inst_header_cursor_id, 86, x_instance_header_tbl(l_count).attribute18);
2120 dbms_sql.column_value(l_inst_header_cursor_id, 87, x_instance_header_tbl(l_count).attribute19);
2121 dbms_sql.column_value(l_inst_header_cursor_id, 88, x_instance_header_tbl(l_count).attribute20);
2122 dbms_sql.column_value(l_inst_header_cursor_id, 89, x_instance_header_tbl(l_count).attribute21);
2123 dbms_sql.column_value(l_inst_header_cursor_id, 90, x_instance_header_tbl(l_count).attribute22);
2124 dbms_sql.column_value(l_inst_header_cursor_id, 91, x_instance_header_tbl(l_count).attribute23);
2125 dbms_sql.column_value(l_inst_header_cursor_id, 92, x_instance_header_tbl(l_count).attribute24);
2126 dbms_sql.column_value(l_inst_header_cursor_id, 93, x_instance_header_tbl(l_count).attribute25);
2127 dbms_sql.column_value(l_inst_header_cursor_id, 94, x_instance_header_tbl(l_count).attribute26);
2128 dbms_sql.column_value(l_inst_header_cursor_id, 95, x_instance_header_tbl(l_count).attribute27);
2129 dbms_sql.column_value(l_inst_header_cursor_id, 96, x_instance_header_tbl(l_count).attribute28);
2130 dbms_sql.column_value(l_inst_header_cursor_id, 97, x_instance_header_tbl(l_count).attribute29);
2131 dbms_sql.column_value(l_inst_header_cursor_id, 98, x_instance_header_tbl(l_count).attribute30);
2132 --end of code for eam integration columns--
2133 
2134 -- Addition of columns for FA Integration
2135 dbms_sql.column_value(l_inst_header_cursor_id, 99, x_instance_header_tbl(l_count).purchase_unit_price);
2136 dbms_sql.column_value(l_inst_header_cursor_id, 100, x_instance_header_tbl(l_count).purchase_currency_code);
2137 dbms_sql.column_value(l_inst_header_cursor_id, 101, x_instance_header_tbl(l_count).payables_unit_price);
2138 dbms_sql.column_value(l_inst_header_cursor_id, 102, x_instance_header_tbl(l_count).payables_currency_code);
2139 dbms_sql.column_value(l_inst_header_cursor_id, 103, x_instance_header_tbl(l_count).sales_unit_price);
2140 dbms_sql.column_value(l_inst_header_cursor_id, 104, x_instance_header_tbl(l_count).sales_currency_code);
2141 dbms_sql.column_value(l_inst_header_cursor_id, 105, x_instance_header_tbl(l_count).operational_status_code);
2142 -- End addition of columns for FA Integration
2143 
2144 
2145 
2146 END LOOP;
2147 
2148 -- Close the cursor
2149 DBMS_SQL.CLOSE_CURSOR(l_inst_header_cursor_id);
2150 
2151 EXCEPTION
2152 WHEN OTHERS THEN
2153    IF DBMS_SQL.IS_OPEN(l_inst_header_cursor_id) THEN
2154         DBMS_SQL.CLOSE_CURSOR(l_inst_header_cursor_id);
2155    END IF;
2156 END Construct_inst_header_rec;
2157 
2158 /*----------------------------------------------------------*/
2159 /* Procedure name:  Resolve_Id_Columns                      */
2160 /* Description   :  This procedure gets the column values   */
2161 /*                  for the Dynamic SQL                     */
2162 /*----------------------------------------------------------*/
2163 
2164 PROCEDURE Resolve_id_columns
2165            (p_instance_header_tbl  IN OUT NOCOPY csi_datastructures_pub.instance_header_tbl)
2166 
2167 IS
2168 
2169 l_acct_lookup_type          VARCHAR2(30) := 'CSI_ACCOUNTING_CLASS_CODE';
2170 l_inst_lookup_type          VARCHAR2(30) := 'CSI_INST_TYPE_CODE';
2171 l_usage_lookup_type         VARCHAR2(30) := 'CSI_INSTANCE_USAGE_CODE';
2172 l_op_status_lookup_type     VARCHAR2(30) := 'CSI_OPERATIONAL_STATUS_CODE'; --5154813
2173 l_ver_label_lookup_type VARCHAR2(30) := 'CSI_INSTANCE_VERSION_LABELS';
2174 l_yesno_lookup_type     VARCHAR2(30) := 'CSI_YES_NO'; --included for bug5211068
2175 
2176 l_maint_organization_id     NUMBER;
2177 l_department_id             NUMBER;
2178 l_location_id               NUMBER;
2179 l_gen_object_id             NUMBER;
2180 
2181 l_vld_organization_id       NUMBER; --bug 4754569
2182 l_inventory_item_id         NUMBER; --bug 4754569
2183 
2184 BEGIN
2185 
2186    FOR tab_row in p_instance_header_tbl.FIRST ..p_instance_header_tbl.LAST
2187    LOOP
2188       IF p_instance_header_tbl.EXISTS(tab_row) THEN
2189 
2190          IF p_instance_header_tbl(tab_row).location_type_code = 'INVENTORY' THEN
2191           BEGIN
2192             SELECT name
2193             INTO   p_instance_header_tbl(tab_row).inv_organization_name
2194             FROM   hr_all_organization_units
2195             WHERE  organization_id = p_instance_header_tbl(tab_row).inv_organization_id;
2196           EXCEPTION
2197             WHEN OTHERS THEN
2198               null;
2199           END;
2200          END IF;
2201          --
2202          IF p_instance_header_tbl(tab_row).inv_locator_id IS NOT NULL THEN
2203             Begin
2204                -- Bug 4605780. Modified the query to get Project and Task information.
2205                select INV_PROJECT.GET_LOCSEGS(milk.INVENTORY_LOCATION_ID,milk.organization_id) ||
2206                            decode(inv_project.GET_PROJECT_NUMBER(milk.SEGMENT19),'','','.'||
2207                                   inv_project.GET_PROJECT_NUMBER(milk.SEGMENT19)||
2208                                   decode(inv_project.GET_TASK_NUMBER(milk.SEGMENT20),'','','.'||
2209                                          inv_project.GET_TASK_NUMBER(milk.SEGMENT20) ) )
2210                into p_instance_header_tbl(tab_row).inv_locator_name
2211                from MTL_ITEM_LOCATIONS milk
2212                where milk.inventory_location_id = p_instance_header_tbl(tab_row).inv_locator_id;
2213             Exception
2214                when no_data_found then
2215                   p_instance_header_tbl(tab_row).inv_locator_name := NULL;
2216             End;
2217          END IF;
2218          --
2219          IF p_instance_header_tbl(tab_row).last_oe_agreement_id IS NOT NULL THEN
2220             Begin
2221                select name
2222                into p_instance_header_tbl(tab_row).last_oe_agreement_name
2223                from OE_AGREEMENTS
2224                where agreement_id = p_instance_header_tbl(tab_row).last_oe_agreement_id;
2225             Exception
2226                when no_data_found then
2227                   null;
2228             End;
2229          END IF;
2230          --
2231          IF p_instance_header_tbl(tab_row).location_type_code = 'HZ_LOCATIONS' THEN
2232           BEGIN
2233             SELECT
2234                    hzl.address1,
2235                    hzl.address2,
2236                    hzl.address3,
2237                    hzl.address4,
2238                    hzl.city,
2239                    hzl.state,
2240                    hzl.postal_code,
2241                    hzl.country,
2242                    hps.party_site_number,
2243                    hzp.party_name,
2244                    hzp.party_number
2245             INTO   p_instance_header_tbl(tab_row).current_loc_address1,
2246                    p_instance_header_tbl(tab_row).current_loc_address2,
2247                    p_instance_header_tbl(tab_row).current_loc_address3,
2248                    p_instance_header_tbl(tab_row).current_loc_address4,
2249                    p_instance_header_tbl(tab_row).current_loc_city,
2250                    p_instance_header_tbl(tab_row).current_loc_state,
2251                    p_instance_header_tbl(tab_row).current_loc_postal_code,
2252                    p_instance_header_tbl(tab_row).current_loc_country,
2253                    p_instance_header_tbl(tab_row).current_loc_number,
2254                    p_instance_header_tbl(tab_row).current_party_name,
2255                    p_instance_header_tbl(tab_row).current_party_number
2256             FROM   hz_locations hzl,
2257                    hz_party_sites hps,
2258                    hz_parties hzp
2259             WHERE  hzl.location_id = hps.location_id(+) --(+)added for bug 5213645
2260             AND    hps.party_id    = hzp.party_id(+)
2261             AND    hzl.location_id = p_instance_header_tbl(tab_row).location_id
2262             AND    rownum < 2;
2263 
2264           EXCEPTION
2265             WHEN   OTHERS THEN
2266                 NULL;
2267           END;
2268          END IF;
2269 
2270          IF p_instance_header_tbl(tab_row).install_location_type_code = 'HZ_LOCATIONS' THEN
2271           BEGIN
2272             SELECT
2273                    hzl.address1,
2274                    hzl.address2,
2275                    hzl.address3,
2276                    hzl.address4,
2277                    hzl.city,
2278                    hzl.state,
2279                    hzl.postal_code,
2280                    hzl.country,
2281                    hps.party_site_number,
2282                    hzp.party_name,
2283                    hzp.party_number
2284             INTO   p_instance_header_tbl(tab_row).install_loc_address1,
2285                    p_instance_header_tbl(tab_row).install_loc_address2,
2286                    p_instance_header_tbl(tab_row).install_loc_address3,
2287                    p_instance_header_tbl(tab_row).install_loc_address4,
2288                    p_instance_header_tbl(tab_row).install_loc_city,
2289                    p_instance_header_tbl(tab_row).install_loc_state,
2290                    p_instance_header_tbl(tab_row).install_loc_postal_code,
2291                    p_instance_header_tbl(tab_row).install_loc_country,
2292                    p_instance_header_tbl(tab_row).install_loc_number,
2293                    p_instance_header_tbl(tab_row).install_party_name,
2294                    p_instance_header_tbl(tab_row).install_party_number
2295             FROM   hz_locations hzl,
2296                    hz_party_sites hps,
2297                    hz_parties hzp
2298             WHERE  hzl.location_id = hps.location_id(+) --(+)added for bug 5213645
2299             AND    hps.party_id    = hzp.party_id(+)
2300             AND    hzl.location_id = p_instance_header_tbl(tab_row).install_location_id
2301             AND    rownum < 2;
2302 
2303           EXCEPTION
2304             WHEN   OTHERS THEN
2305                 NULL;
2306           END;
2307          END IF;
2308 
2309 	 IF p_instance_header_tbl(tab_row).location_type_code = 'HR_LOCATIONS' THEN
2310           BEGIN
2311             SELECT hr.address_line_1,
2312                    hr.address_line_2,
2313                    hr.address_line_3,
2314                    hr.town_or_city,
2315                    hr.region_2,
2316                    hr.postal_code,
2317                    hr.country
2318             INTO   p_instance_header_tbl(tab_row).current_loc_address1,
2319                    p_instance_header_tbl(tab_row).current_loc_address2,
2320                    p_instance_header_tbl(tab_row).current_loc_address3,
2321                    p_instance_header_tbl(tab_row).current_loc_city,
2322                    p_instance_header_tbl(tab_row).current_loc_state,
2323                    p_instance_header_tbl(tab_row).current_loc_postal_code,
2324                    p_instance_header_tbl(tab_row).current_loc_country
2325             FROM   hr_locations_all hr
2326             WHERE  hr.location_id = p_instance_header_tbl(tab_row).location_id;
2327           EXCEPTION
2328             WHEN   OTHERS THEN
2329                 NULL;
2330           END;
2331          END IF;
2332 
2333          --4926773
2334          IF p_instance_header_tbl(tab_row).Install_location_type_code = 'HR_LOCATIONS' THEN
2335           BEGIN
2336             SELECT hr.address_line_1,
2337                    hr.address_line_2,
2338                    hr.address_line_3,
2339                    hr.town_or_city,
2340                    hr.region_2,
2341                    hr.postal_code,
2342                    hr.country
2343             INTO   p_instance_header_tbl(tab_row).current_loc_address1,
2344                    p_instance_header_tbl(tab_row).current_loc_address2,
2345                    p_instance_header_tbl(tab_row).current_loc_address3,
2346                    p_instance_header_tbl(tab_row).current_loc_city,
2347                    p_instance_header_tbl(tab_row).current_loc_state,
2348                    p_instance_header_tbl(tab_row).current_loc_postal_code,
2349                    p_instance_header_tbl(tab_row).current_loc_country
2350             FROM   hr_locations_all hr
2351             WHERE  hr.location_id = p_instance_header_tbl(tab_row).location_id;
2352           EXCEPTION
2353             WHEN   OTHERS THEN
2354                 NULL;
2355           END;
2356          END IF;
2357 
2358          IF p_instance_header_tbl(tab_row).location_type_code = 'HZ_PARTY_SITES' THEN
2359           BEGIN
2360             SELECT
2361                    hzl.address1,
2362                    hzl.address2,
2363                    hzl.address3,
2364                    hzl.address4,
2365                    hzl.city,
2366                    hzl.state,
2367                    hzl.postal_code,
2368                    hzl.country,
2369                    hps.party_site_number,
2370                    hzp.party_name,
2371                    hzp.party_number
2372             INTO   p_instance_header_tbl(tab_row).current_loc_address1,
2373                    p_instance_header_tbl(tab_row).current_loc_address2,
2374                    p_instance_header_tbl(tab_row).current_loc_address3,
2375                    p_instance_header_tbl(tab_row).current_loc_address4,
2376                    p_instance_header_tbl(tab_row).current_loc_city,
2377                    p_instance_header_tbl(tab_row).current_loc_state,
2378                    p_instance_header_tbl(tab_row).current_loc_postal_code,
2379                    p_instance_header_tbl(tab_row).current_loc_country,
2380                    p_instance_header_tbl(tab_row).current_loc_number,
2381                    p_instance_header_tbl(tab_row).current_party_name,
2382                    p_instance_header_tbl(tab_row).current_party_number
2383             FROM   hz_locations hzl,
2384                    hz_party_sites hps,
2385                    hz_parties hzp
2386             WHERE  hps.location_id   = hzl.location_id
2387             AND    hps.party_id      = hzp.party_id
2388             AND    hps.party_site_id = p_instance_header_tbl(tab_row).location_id;
2389 
2390           EXCEPTION
2391             WHEN   OTHERS THEN
2392                 NULL;
2393           END;
2394          END IF;
2395 
2396          IF p_instance_header_tbl(tab_row).install_location_type_code = 'HZ_PARTY_SITES' THEN
2397           BEGIN
2398             SELECT
2399                    hzl.address1,
2400                    hzl.address2,
2401                    hzl.address3,
2402                    hzl.address4,
2403                    hzl.city,
2404                    hzl.state,
2405                    hzl.postal_code,
2406                    hzl.country,
2407                    hps.party_site_number,
2408                    hzp.party_name,
2409                    hzp.party_number
2410             INTO   p_instance_header_tbl(tab_row).install_loc_address1,
2411                    p_instance_header_tbl(tab_row).install_loc_address2,
2412                    p_instance_header_tbl(tab_row).install_loc_address3,
2413                    p_instance_header_tbl(tab_row).install_loc_address4,
2414                    p_instance_header_tbl(tab_row).install_loc_city,
2415                    p_instance_header_tbl(tab_row).install_loc_state,
2416                    p_instance_header_tbl(tab_row).install_loc_postal_code,
2417                    p_instance_header_tbl(tab_row).install_loc_country,
2418                    p_instance_header_tbl(tab_row).install_loc_number,
2419                    p_instance_header_tbl(tab_row).install_party_name,
2420                    p_instance_header_tbl(tab_row).install_party_number
2421             FROM   hz_locations hzl,
2422                    hz_party_sites hps,
2423                    hz_parties hzp
2424             WHERE  hps.location_id   = hzl.location_id
2425             AND    hps.party_id      = hzp.party_id
2426             AND    hps.party_site_id = p_instance_header_tbl(tab_row).install_location_id;
2427 
2428           EXCEPTION
2429             WHEN   OTHERS THEN
2430                 NULL;
2431           END;
2432          END IF;
2433 
2434          IF p_instance_header_tbl(tab_row).location_type_code = 'INTERNAL_SITE' THEN
2435           BEGIN
2436             SELECT hr.address_line_1,
2437                    hr.address_line_2,
2438                    hr.address_line_3,
2439                    hr.town_or_city,
2440                    hr.region_2,
2441                    hr.postal_code,
2442                    hr.country
2443             INTO   p_instance_header_tbl(tab_row).current_loc_address1,
2444                    p_instance_header_tbl(tab_row).current_loc_address2,
2445                    p_instance_header_tbl(tab_row).current_loc_address3,
2446                    p_instance_header_tbl(tab_row).current_loc_city,
2447                    p_instance_header_tbl(tab_row).current_loc_state,
2448                    p_instance_header_tbl(tab_row).current_loc_postal_code,
2449                    p_instance_header_tbl(tab_row).current_loc_country
2450             FROM   hr_locations_all hr
2451             WHERE  hr.location_id = p_instance_header_tbl(tab_row).location_id;
2452           EXCEPTION
2453             WHEN   OTHERS THEN
2454                 NULL;
2455           END;
2456          END IF;
2457 
2458          IF p_instance_header_tbl(tab_row).install_location_type_code = 'INTERNAL_SITE' THEN
2459           BEGIN
2460             SELECT hr.address_line_1,
2461                    hr.address_line_2,
2462                    hr.address_line_3,
2463                    hr.town_or_city,
2464                    hr.region_2,
2465                    hr.postal_code,
2466                    hr.country
2467             INTO   p_instance_header_tbl(tab_row).install_loc_address1,
2468                    p_instance_header_tbl(tab_row).install_loc_address2,
2469                    p_instance_header_tbl(tab_row).install_loc_address3,
2470                    p_instance_header_tbl(tab_row).install_loc_city,
2471                    p_instance_header_tbl(tab_row).install_loc_state,
2472                    p_instance_header_tbl(tab_row).install_loc_postal_code,
2473                    p_instance_header_tbl(tab_row).install_loc_country
2474             FROM   hr_locations_all hr
2475             WHERE  hr.location_id = p_instance_header_tbl(tab_row).install_location_id;
2476           EXCEPTION
2477             WHEN   OTHERS THEN
2478                 NULL;
2479           END;
2480          END IF;
2481 
2482          IF p_instance_header_tbl(tab_row).location_type_code = 'VENDOR_SITE' THEN
2483           BEGIN
2484             SELECT
2485                    pvs.address_line1,
2486                    pvs.address_line2,
2487                    pvs.address_line3,
2488                    pvs.city,
2489                    pvs.state,
2490                    pvs.zip,
2491                    pvs.country
2492             INTO   p_instance_header_tbl(tab_row).current_loc_address1,
2493                    p_instance_header_tbl(tab_row).current_loc_address2,
2494                    p_instance_header_tbl(tab_row).current_loc_address3,
2495                    p_instance_header_tbl(tab_row).current_loc_city,
2496                    p_instance_header_tbl(tab_row).current_loc_state,
2497                    p_instance_header_tbl(tab_row).current_loc_postal_code,
2498                    p_instance_header_tbl(tab_row).current_loc_country
2499             FROM   po_vendor_sites_all pvs
2500             WHERE  pvs.vendor_site_id = p_instance_header_tbl(tab_row).location_id;
2501           EXCEPTION
2502             WHEN  OTHERS THEN
2503                 NULL;
2504           END;
2505          END IF;
2506 
2507          IF p_instance_header_tbl(tab_row).install_location_type_code = 'VENDOR_SITE' THEN
2508           BEGIN
2509             SELECT
2510                    pvs.address_line1,
2511                    pvs.address_line2,
2512                    pvs.address_line3,
2513                    pvs.city,
2514                    pvs.state,
2515                    pvs.zip,
2516                    pvs.country
2517             INTO   p_instance_header_tbl(tab_row).install_loc_address1,
2518                    p_instance_header_tbl(tab_row).install_loc_address2,
2519                    p_instance_header_tbl(tab_row).install_loc_address3,
2520                    p_instance_header_tbl(tab_row).install_loc_city,
2521                    p_instance_header_tbl(tab_row).install_loc_state,
2522                    p_instance_header_tbl(tab_row).install_loc_postal_code,
2523                    p_instance_header_tbl(tab_row).install_loc_country
2524             FROM   po_vendor_sites_all pvs
2525             WHERE  pvs.vendor_site_id = p_instance_header_tbl(tab_row).install_location_id;
2526           EXCEPTION
2527             WHEN  OTHERS THEN
2528                 NULL;
2529           END;
2530          END IF;
2531 
2532          IF p_instance_header_tbl(tab_row).location_type_code = 'IN_TRANSIT' THEN
2533           BEGIN
2534             SELECT a.order_number,
2535                    b.line_number
2536             INTO   p_instance_header_tbl(tab_row).in_transit_order_number,
2537                    p_instance_header_tbl(tab_row).in_transit_order_line_number
2538             FROM   oe_order_headers_all a, oe_order_lines_all b
2539             WHERE  a.header_id = b.header_id
2540             AND    b.line_id   = p_instance_header_tbl(tab_row).in_transit_order_line_id;
2541           EXCEPTION
2542             WHEN OTHERS THEN
2543               null;
2544           END;
2545          END IF;
2546 
2547          IF p_instance_header_tbl(tab_row).location_type_code = 'PROJECT' THEN
2548           BEGIN
2549             SELECT a.name,
2550                    a.segment1,
2551                    b.task_name,
2552                    b.task_number
2553             INTO   p_instance_header_tbl(tab_row).pa_project_name,
2554                    p_instance_header_tbl(tab_row).pa_project_number,
2555                    p_instance_header_tbl(tab_row).pa_task_name,
2556                    p_instance_header_tbl(tab_row).pa_task_number
2557             FROM   pa_projects_all a,
2558                    pa_tasks b
2559             WHERE  a.project_id = b.project_id
2560             AND    b.task_id    = p_instance_header_tbl(tab_row).pa_project_task_id;
2561            EXCEPTION
2562              WHEN OTHERS THEN
2563                null;
2564            END;
2565           END IF;
2566 
2567           IF p_instance_header_tbl(tab_row).location_type_code = 'WIP' THEN
2568            BEGIN
2569              SELECT wip_entity_name
2570              INTO   p_instance_header_tbl(tab_row).wip_entity_name
2571              FROM   wip_entities
2572              WHERE  wip_entity_id = p_instance_header_tbl(tab_row).wip_job_id;
2573            EXCEPTION
2574              WHEN OTHERS THEN
2575                null;
2576            END;
2577           END IF;
2578 
2579           BEGIN
2580             SELECT   meaning
2581             INTO     p_instance_header_tbl(tab_row).accounting_class
2582             FROM     csi_lookups
2583             WHERE    lookup_code = p_instance_header_tbl(tab_row).accounting_class_code
2584             AND      lookup_type = l_acct_lookup_type;
2585           EXCEPTION
2586             WHEN OTHERS THEN
2587               null;
2588           END;
2589 
2590           BEGIN
2591             SELECT   meaning
2592             INTO     p_instance_header_tbl(tab_row).instance_type_name
2593             FROM     csi_lookups
2594             WHERE    lookup_code = p_instance_header_tbl(tab_row).instance_type_code
2595             AND      lookup_type = l_inst_lookup_type;
2596           EXCEPTION
2597             WHEN OTHERS THEN
2598               null;
2599           END;
2600 
2601           BEGIN
2602             SELECT   meaning
2603             INTO     p_instance_header_tbl(tab_row).instance_usage_name
2604             FROM     csi_lookups
2605             WHERE    lookup_code = p_instance_header_tbl(tab_row).instance_usage_code
2606             AND      lookup_type = l_usage_lookup_type;
2607           EXCEPTION
2608             WHEN OTHERS THEN
2609               null;
2610           END;
2611 
2612 
2613 	   BEGIN
2614             SELECT   meaning
2615             INTO     p_instance_header_tbl(tab_row).operational_status_name
2616             FROM     csi_lookups
2617             WHERE    lookup_code = p_instance_header_tbl(tab_row).operational_status_code
2618             AND      lookup_type = l_op_status_lookup_type;
2619           EXCEPTION
2620             WHEN OTHERS THEN
2621               null;
2622           END;
2623 
2624           IF p_instance_header_tbl(tab_row).version_label IS NOT NULL THEN
2625 	     BEGIN
2626                 SELECT   meaning
2627                 INTO     p_instance_header_tbl(tab_row).version_label_meaning
2628                 FROM     csi_lookups
2629                 WHERE    lookup_code = p_instance_header_tbl(tab_row).version_label
2630                 AND      lookup_type = l_ver_label_lookup_type;
2631              EXCEPTION
2632                 WHEN OTHERS THEN
2633                    null;
2634              END;
2635           END IF;
2636 
2637           BEGIN
2638             SELECT   status_code
2639             INTO     p_instance_header_tbl(tab_row).instance_condition
2640             FROM     mtl_material_statuses
2641             WHERE    status_id = p_instance_header_tbl(tab_row).instance_condition_id;
2642           EXCEPTION
2643             WHEN OTHERS THEN
2644               null;
2645           END;
2646 
2647           BEGIN
2648             SELECT   unit_of_measure
2649             INTO     p_instance_header_tbl(tab_row).unit_of_measure_name
2650             FROM     mtl_units_of_measure_vl
2651             WHERE    uom_code = p_instance_header_tbl(tab_row).unit_of_measure;
2652           EXCEPTION
2653             WHEN OTHERS THEN
2654               null;
2655           END;
2656 
2657 
2658           BEGIN
2659             SELECT   name
2660             INTO     p_instance_header_tbl(tab_row).instance_status
2661             FROM     csi_instance_statuses
2662             WHERE    instance_status_id = p_instance_header_tbl(tab_row).instance_status_id;
2663           EXCEPTION
2664             WHEN OTHERS THEN
2665               null;
2666           END;
2667 
2668           BEGIN
2669             SELECT   name
2670             INTO     p_instance_header_tbl(tab_row).system_name
2671             FROM     csi_systems_vl
2672             WHERE    system_id = p_instance_header_tbl(tab_row).system_id;
2673           EXCEPTION
2674             WHEN OTHERS THEN
2675               null;
2676           END;
2677 
2678           IF ( (p_instance_header_tbl(tab_row).vld_organization_id IS NOT NULL) AND
2679                (p_instance_header_tbl(tab_row).vld_organization_id <> FND_API.G_MISS_NUM) ) THEN
2680              BEGIN
2681                 l_vld_organization_id := p_instance_header_tbl(tab_row).vld_organization_id; --bug4754569
2682 
2683 		SELECT name
2684                 INTO   p_instance_header_tbl(tab_row).vld_organization_name
2685                 FROM   hr_all_organization_units
2686                 WHERE  organization_id = p_instance_header_tbl(tab_row).vld_organization_id;
2687              EXCEPTION
2688                 WHEN OTHERS THEN
2689                    null;
2690              END;
2691           --start of code for bug 4754569--
2692           ELSE
2693             --To get the vld_organization_id from csi_item_instances--
2694             BEGIN
2695               SELECT last_vld_organization_id
2696               INTO l_vld_organization_id
2697               FROM csi_item_instances
2698               WHERE instance_id = p_instance_header_tbl(tab_row).instance_id;
2699             EXCEPTION
2700               WHEN OTHERS THEN
2701                NULL;
2702              END;
2703 
2704           END IF;
2705 
2706           IF ( (p_instance_header_tbl(tab_row).inventory_item_id IS NOT NULL) AND
2707                (p_instance_header_tbl(tab_row).inventory_item_id <> FND_API.G_MISS_NUM) ) THEN
2708             l_inventory_item_id:=p_instance_header_tbl(tab_row).inventory_item_id;
2709           ELSE
2710           --To get the inventory_item_id from csi_item_instances--
2711             BEGIN
2712               SELECT inventory_item_id
2713               INTO l_inventory_item_id
2714               FROM csi_item_instances
2715               WHERE instance_id = p_instance_header_tbl(tab_row).instance_id;
2716             EXCEPTION
2717               WHEN OTHERS THEN
2718                NULL;
2719             END;
2720           END IF;
2721           --end of code for bug 4754569--
2722 
2723           IF csi_item_instance_vld_pvt.Check_for_eam_item
2724                (p_inventory_item_id  => l_inventory_item_id,
2725                 p_organization_id    => l_vld_organization_id)--bug 4754569
2726            THEN
2727               l_maint_organization_id  := NULL;
2728               l_department_id          := NULL;
2729               l_location_id            := NULL;
2730               l_gen_object_id          := NULL;
2731              -- Maintenance organization
2732                BEGIN
2733                 SELECT maint_organization_id
2734                   INTO l_maint_organization_id
2735                   FROM mtl_parameters
2736                  WHERE organization_id = p_instance_header_tbl(tab_row).vld_organization_id;
2737                EXCEPTION
2738                  WHEN NO_DATA_FOUND THEN
2739                   NULL;
2740                END;
2741 
2742                IF l_maint_organization_id IS NOT NULL
2743                THEN
2744                 BEGIN
2745                  SELECT organization_code
2746                    INTO p_instance_header_tbl(tab_row).maintenance_organization
2747                    FROM mtl_parameters
2748                   WHERE organization_id = l_maint_organization_id;
2749                 EXCEPTION
2750                  WHEN NO_DATA_FOUND THEN
2751                    NULL;
2752                 END;
2753                END IF;
2754 
2755              -- Department
2756                BEGIN
2757                 SELECT owning_department_id
2758                       ,area_id
2759                   INTO l_department_id
2760                       ,l_location_id
2761                   FROM eam_org_maint_defaults
2762                  WHERE object_type = 50
2763                    AND object_id   = p_instance_header_tbl(tab_row).instance_id;
2764                -- Defining when others as constraints were not defined in eam schema
2765                -- for the eam_org_maint_defaults table.
2766                EXCEPTION
2767                 WHEN OTHERS THEN
2768                  NULL;
2769                END ;
2770 
2771                BEGIN
2772                 IF l_department_id IS NOT NULL
2773                 THEN
2774                  SELECT department_code
2775                    INTO p_instance_header_tbl(tab_row).department
2776                    FROM bom_departments
2777                   WHERE department_id = l_department_id;
2778                 END IF;
2779                EXCEPTION
2780                  WHEN NO_DATA_FOUND THEN
2781                   NULL;
2782                END;
2783 
2784              -- Area
2785                IF l_location_id IS NOT NULL
2786                THEN
2787                 BEGIN
2788                  SELECT location_codes
2789                    INTO p_instance_header_tbl(tab_row).area
2790                    FROM mtl_eam_locations
2791                   WHERE location_id = l_location_id;
2792                 EXCEPTION
2793                  WHEN NO_DATA_FOUND THEN
2794                   NULL;
2795                 END;
2796                END IF;
2797 
2798              -- Wip_accounting_class
2799                IF l_maint_organization_id IS NOT NULL
2800                THEN
2801                 BEGIN
2802                  SELECT class_code
2803                    INTO p_instance_header_tbl(tab_row).wip_accounting_class
2804                    FROM wip_accounting_classes
2805                   WHERE organization_id = l_maint_organization_id
2806                     AND class_type = 6
2807                     AND sysdate <= nvl(disable_date, sysdate)
2808                     AND ROWNUM=1;
2809                 EXCEPTION
2810                  WHEN NO_DATA_FOUND THEN
2811                   NULL;
2812                 END;
2813                END IF;
2814 
2815              -- Parent_asset_number
2816                 BEGIN
2817                  SELECT msn.gen_object_id
2818                    INTO l_gen_object_id
2819                    FROM mtl_serial_numbers msn
2820                        ,csi_item_instances cii
2821                   WHERE msn.inventory_item_id = cii.inventory_item_id
2822                     AND msn.serial_number = cii.serial_number
2823                     AND cii.instance_id = p_instance_header_tbl(tab_row).instance_id;
2824                 EXCEPTION
2825                  WHEN NO_DATA_FOUND THEN
2826                   NULL;
2827                 END;
2828 
2829                IF l_gen_object_id IS NOT NULL
2830                THEN
2831                 BEGIN
2832                  SELECT msi.concatenated_segments
2833                        ,cii.instance_number
2834                    INTO p_instance_header_tbl(tab_row).parent_asset_group
2835                        ,p_instance_header_tbl(tab_row).parent_asset_number
2836                    FROM mtl_system_items_b_kfv msi
2837                        ,mtl_serial_numbers msn
2838                        ,csi_item_instances cii
2839                        ,mtl_object_genealogy mog
2840                   WHERE msn.gen_object_id= mog.parent_object_id
2841                     AND mog.object_id = l_gen_object_id
2842                     AND mog.genealogy_type =5
2843                     AND (sysdate BETWEEN mog.start_date_active AND nvl(mog.end_date_active,sysdate))
2844                     AND msi.inventory_item_id = msn.inventory_item_id
2845                     AND msi.organization_id= cii.last_vld_organization_id
2846                     AND msn.inventory_item_id=cii.inventory_item_id
2847                     AND msn.serial_number=cii.serial_number;
2848                 EXCEPTION
2849                  WHEN OTHERS THEN
2850                   NULL;
2851                 END;
2852                END IF;
2853 
2854                IF p_instance_header_tbl(tab_row).asset_criticality_code IS NOT NULL AND
2855                   p_instance_header_tbl(tab_row).asset_criticality_code <> fnd_api.g_miss_char
2856                THEN
2857                 BEGIN
2858                  SELECT meaning
2859                    INTO p_instance_header_tbl(tab_row).criticality
2860                    FROM mfg_lookups
2861                   WHERE lookup_code = p_instance_header_tbl(tab_row).asset_criticality_code
2862                     AND lookup_type = 'MTL_EAM_ASSET_CRITICALITY';
2863                 EXCEPTION
2864                   WHEN OTHERS THEN
2865                     NULL;
2866                 END;
2867                END IF;
2868 
2869                IF p_instance_header_tbl(tab_row).category_id IS NOT NULL AND
2870                   p_instance_header_tbl(tab_row).category_id <> fnd_api.g_miss_num
2871                THEN
2872                 BEGIN
2873                  SELECT concatenated_segments
2874                    INTO p_instance_header_tbl(tab_row).category_name
2875                    FROM mtl_categories_kfv
2876                   WHERE category_id=p_instance_header_tbl(tab_row).category_id;
2877                 EXCEPTION
2878                   WHEN OTHERS THEN
2879                     NULL;
2880                 END;
2881                END IF;
2882 
2883 	       --included for bug 5211068
2884                IF p_instance_header_tbl(tab_row).maintainable_flag IS NOT NULL AND
2885                   p_instance_header_tbl(tab_row).maintainable_flag <> fnd_api.g_miss_char
2886                THEN
2887 		BEGIN
2888                     SELECT meaning
2889                     INTO p_instance_header_tbl(tab_row).maintainable
2890                     FROM csi_lookups
2891                     WHERE lookup_code = DECODE(p_instance_header_tbl(tab_row).maintainable_flag,'Y','YES','N','NO')
2892                     AND lookup_type = l_yesno_lookup_type;
2893 		EXCEPTION WHEN OTHERS THEN
2894                     NULL;
2895 		END;
2896                END IF;
2897 
2898              END IF; -- <IF csi_item_instance_vld_pvt.Check_for_eam_item>
2899 
2900        END IF;
2901    END LOOP;
2902 END Resolve_id_columns;
2903 
2904 
2905 /*----------------------------------------------------------*/
2906 /* Procedure name:  Get_Inst_Column_Values                  */
2907 /* Description   :  This procedure gets the column values   */
2908 /*                  for the Dynamic SQL                     */
2909 /*----------------------------------------------------------*/
2910 
2911 PROCEDURE Get_Inst_Column_Values
2912 (
2913     p_get_inst_cursor_id      IN   NUMBER,
2914     x_instance_id             OUT  NOCOPY NUMBER
2915      ) IS
2916 
2917 BEGIN
2918 
2919 dbms_sql.column_value(p_get_inst_cursor_id, 1, x_instance_id);
2920 
2921 END Get_Inst_Column_Values;
2922 
2923 
2924 /*--------------------------------------------------------*/
2925 /* Procedure name:  Define_Inst_Columns                   */
2926 /* Description   :  This procedure defines the columns    */
2927 /*                  for the Dynamic SQL                   */
2928 /*--------------------------------------------------------*/
2929 
2930 PROCEDURE Define_Inst_Columns
2931 (
2932   p_get_inst_cursor_id      IN   NUMBER,
2933   p_instance_query_rec      IN   csi_datastructures_pub.instance_query_rec
2934   ) IS
2935 
2936 l_instance_header_rec  csi_datastructures_pub.instance_header_rec;
2937 
2938 BEGIN
2939 
2940 dbms_sql.define_column(p_get_inst_cursor_id, 1, l_instance_header_rec.instance_id);
2941 
2942 END Define_Inst_Columns;
2943 
2944 
2945 /*---------------------------------------------------------*/
2946 /* Procedure name:  Bind_Inst_variable                     */
2947 /* Description :    Procedure used to generate the where   */
2948 /*                  clause for Item Instances              */
2949 /*---------------------------------------------------------*/
2950 
2951 PROCEDURE Bind_Inst_variable
2952 (
2953     p_instance_query_rec        IN   csi_datastructures_pub.instance_query_rec,
2954     p_party_query_rec           IN   csi_datastructures_pub.party_query_rec,
2955     p_pty_acct_query_rec        IN   csi_datastructures_pub.party_account_query_rec,
2956     p_transaction_id            IN   NUMBER,
2957     p_cur_get_inst_rel          IN   NUMBER
2958    ) IS
2959 BEGIN
2960 
2961  IF(( p_instance_query_rec.instance_id IS NOT NULL) AND
2962     ( p_instance_query_rec.instance_id <> FND_API.G_MISS_NUM))  THEN
2963 
2964       DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':INSTANCE_ID', p_instance_query_rec.instance_id);
2965  END IF;
2966 
2967  IF( (p_instance_query_rec.inventory_item_id IS NOT NULL)
2968                   AND (p_instance_query_rec.inventory_item_id <> FND_API.G_MISS_NUM))  THEN
2969     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':INVENTORY_ITEM_ID', p_instance_query_rec.inventory_item_id);
2970  END IF;
2971 
2972  IF( (p_instance_query_rec.inventory_revision IS NOT NULL)
2973                   AND (p_instance_query_rec.inventory_revision <> FND_API.G_MISS_CHAR))  THEN
2974     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':INVENTORY_REVISION', p_instance_query_rec.inventory_revision);
2975  END IF;
2976 
2977  IF( (p_instance_query_rec.inv_master_organization_id IS NOT NULL)
2978                   AND (p_instance_query_rec.inv_master_organization_id <> FND_API.G_MISS_NUM))  THEN
2979     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, 'INV_MASTER_ORGANIZATION_ID', p_instance_query_rec.inv_master_organization_id);
2980  END IF;
2981 
2982  IF( (p_instance_query_rec.serial_number IS NOT NULL)
2983                   AND (p_instance_query_rec.serial_number <> FND_API.G_MISS_CHAR))  THEN
2984     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':serial_number', p_instance_query_rec.serial_number);
2985  END IF;
2986 
2987  IF( (p_instance_query_rec.lot_number IS NOT NULL)
2988                   AND (p_instance_query_rec.lot_number <> FND_API.G_MISS_CHAR))  THEN
2989     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':lot_number', p_instance_query_rec.lot_number);
2990  END IF;
2991 
2992  IF( (p_instance_query_rec.unit_of_measure IS NOT NULL)
2993                   AND (p_instance_query_rec.unit_of_measure <> FND_API.G_MISS_CHAR))  THEN
2994     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':unit_of_measure', p_instance_query_rec.unit_of_measure);
2995  END IF;
2996 
2997  IF( (p_instance_query_rec.instance_condition_id IS NOT NULL)
2998                   AND (p_instance_query_rec.instance_condition_id <> FND_API.G_MISS_NUM))  THEN
2999     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_condition_id', p_instance_query_rec.instance_condition_id);
3000  END IF;
3001 
3002  IF( (p_instance_query_rec.instance_status_id IS NOT NULL)
3003                   AND (p_instance_query_rec.instance_status_id <> FND_API.G_MISS_NUM))  THEN
3004     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_status_id', p_instance_query_rec.instance_status_id);
3005  END IF;
3006 
3007  IF( (p_instance_query_rec.system_id IS NOT NULL)
3008                   AND (p_instance_query_rec.system_id <> FND_API.G_MISS_NUM))  THEN
3009     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':system_id', p_instance_query_rec.system_id);
3010  END IF;
3011 
3012  IF( (p_instance_query_rec.instance_type_code IS NOT NULL)
3013                   AND (p_instance_query_rec.instance_type_code <> FND_API.G_MISS_CHAR))  THEN
3014     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_type_code', p_instance_query_rec.instance_type_code);
3015  END IF;
3016 
3017  IF( (p_instance_query_rec.location_type_code IS NOT NULL)
3018                   AND (p_instance_query_rec.location_type_code <> FND_API.G_MISS_CHAR))  THEN
3019     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':location_type_code', p_instance_query_rec.location_type_code);
3020  END IF;
3021 
3022  IF( (p_instance_query_rec.location_id IS NOT NULL)
3023                   AND (p_instance_query_rec.location_id <> FND_API.G_MISS_NUM))  THEN
3024     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':location_id', p_instance_query_rec.location_id);
3025  END IF;
3026 
3027  IF( (p_instance_query_rec.inv_organization_id IS NOT NULL)
3028                   AND (p_instance_query_rec.inv_organization_id <> FND_API.G_MISS_NUM))  THEN
3029     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':inv_organization_id', p_instance_query_rec.inv_organization_id);
3030  END IF;
3031 
3032  IF( (p_instance_query_rec.inv_subinventory_name IS NOT NULL)
3033                   AND (p_instance_query_rec.inv_subinventory_name <> FND_API.G_MISS_CHAR))  THEN
3034     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':inv_subinventory_name', p_instance_query_rec.inv_subinventory_name);
3035  END IF;
3036 
3037  IF( (p_instance_query_rec.inv_locator_id IS NOT NULL)
3038                   AND (p_instance_query_rec.inv_locator_id <> FND_API.G_MISS_NUM))  THEN
3039     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':inv_locator_id', p_instance_query_rec.inv_locator_id);
3040  END IF;
3041 
3042  IF( (p_instance_query_rec.pa_project_id IS NOT NULL)
3043                   AND (p_instance_query_rec.pa_project_id <> FND_API.G_MISS_NUM))  THEN
3044     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':pa_project_id', p_instance_query_rec.pa_project_id);
3045  END IF;
3046 
3047  IF( (p_instance_query_rec.pa_project_task_id IS NOT NULL)
3048                   AND (p_instance_query_rec.pa_project_task_id <> FND_API.G_MISS_NUM))  THEN
3049     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':pa_project_task_id', p_instance_query_rec.pa_project_task_id);
3050  END IF;
3051 
3052  IF( (p_instance_query_rec.in_transit_order_line_id IS NOT NULL)
3053                   AND (p_instance_query_rec.in_transit_order_line_id <> FND_API.G_MISS_NUM))  THEN
3054     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':in_transit_order_line_id', p_instance_query_rec.in_transit_order_line_id);
3055  END IF;
3056 
3057  IF( (p_instance_query_rec.wip_job_id IS NOT NULL)
3058                   AND (p_instance_query_rec.wip_job_id <> FND_API.G_MISS_NUM))  THEN
3059     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':wip_job_id', p_instance_query_rec.wip_job_id);
3060  END IF;
3061 
3062  IF( (p_instance_query_rec.po_order_line_id IS NOT NULL)
3063                   AND (p_instance_query_rec.po_order_line_id <> FND_API.G_MISS_NUM))  THEN
3064     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':po_order_line_id', p_instance_query_rec.po_order_line_id);
3065  END IF;
3066 
3067  IF( (p_instance_query_rec.last_oe_order_line_id IS NOT NULL)
3068                   AND (p_instance_query_rec.last_oe_order_line_id <> FND_API.G_MISS_NUM))  THEN
3069     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_oe_order_line_id', p_instance_query_rec.last_oe_order_line_id);
3070  END IF;
3071 
3072  IF( (p_instance_query_rec.last_oe_rma_line_id IS NOT NULL)
3073                   AND (p_instance_query_rec.last_oe_rma_line_id <> FND_API.G_MISS_NUM))  THEN
3074     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_oe_rma_line_id', p_instance_query_rec.last_oe_rma_line_id);
3075  END IF;
3076 
3077  IF( (p_instance_query_rec.last_po_po_line_id IS NOT NULL)
3078                   AND (p_instance_query_rec.last_po_po_line_id <> FND_API.G_MISS_NUM))  THEN
3079     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_po_po_line_id', p_instance_query_rec.last_po_po_line_id);
3080  END IF;
3081 
3082  IF( (p_instance_query_rec.last_oe_po_number IS NOT NULL)
3083                   AND (p_instance_query_rec.last_oe_po_number <> FND_API.G_MISS_CHAR))  THEN
3084     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_oe_po_number', p_instance_query_rec.last_oe_po_number);
3085  END IF;
3086 
3087  IF( (p_instance_query_rec.last_wip_job_id IS NOT NULL)
3088                   AND (p_instance_query_rec.last_wip_job_id <> FND_API.G_MISS_NUM))  THEN
3089     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_wip_job_id', p_instance_query_rec.last_wip_job_id);
3090  END IF;
3091 
3092  IF( (p_instance_query_rec.last_pa_project_id IS NOT NULL)
3093                   AND (p_instance_query_rec.last_pa_project_id <> FND_API.G_MISS_NUM))  THEN
3094     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_pa_project_id', p_instance_query_rec.last_pa_project_id);
3095  END IF;
3096 
3097  IF( (p_instance_query_rec.last_pa_task_id IS NOT NULL)
3098                   AND (p_instance_query_rec.last_pa_task_id <> FND_API.G_MISS_NUM))  THEN
3099     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_pa_task_id', p_instance_query_rec.last_pa_task_id);
3100  END IF;
3101 
3102  IF( (p_instance_query_rec.last_oe_agreement_id IS NOT NULL)
3103                   AND (p_instance_query_rec.last_oe_agreement_id <> FND_API.G_MISS_NUM))  THEN
3104     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_oe_agreement_id', p_instance_query_rec.last_oe_agreement_id);
3105  END IF;
3106 
3107  IF( (p_instance_query_rec.install_date IS NOT NULL)
3108                   AND (p_instance_query_rec.install_date <> FND_API.G_MISS_DATE))  THEN
3109     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':install_date', p_instance_query_rec.install_date);
3110  END IF;
3111 
3112  IF( (p_instance_query_rec.manually_created_flag IS NOT NULL)
3113                   AND (p_instance_query_rec.manually_created_flag <> FND_API.G_MISS_CHAR))  THEN
3114     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':manually_created_flag', p_instance_query_rec.manually_created_flag);
3115  END IF;
3116 
3117  IF( (p_instance_query_rec.return_by_date IS NOT NULL)
3118                   AND (p_instance_query_rec.return_by_date <> FND_API.G_MISS_DATE))  THEN
3119     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':return_by_date', p_instance_query_rec.return_by_date);
3120  END IF;
3121 
3122  IF( (p_instance_query_rec.actual_return_date IS NOT NULL)
3123                   AND (p_instance_query_rec.actual_return_date <> FND_API.G_MISS_DATE))  THEN
3124     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':actual_return_date', p_instance_query_rec.actual_return_date);
3125  END IF;
3126 
3127  IF( (p_instance_query_rec.instance_usage_code IS NOT NULL)
3128                   AND (p_instance_query_rec.instance_usage_code <> FND_API.G_MISS_CHAR))  THEN
3129     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_usage_code', p_instance_query_rec.instance_usage_code);
3130  END IF;
3131 
3132 -- The following code has been added by sguthiva for att enhancements
3133 
3134  IF( (p_instance_query_rec.config_inst_hdr_id IS NOT NULL)
3135                   AND (p_instance_query_rec.config_inst_hdr_id <> FND_API.G_MISS_NUM))  THEN
3136     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':config_inst_hdr_id', p_instance_query_rec.config_inst_hdr_id);
3137  END IF;
3138 
3139  IF( (p_instance_query_rec.config_inst_rev_num IS NOT NULL)
3140                   AND (p_instance_query_rec.config_inst_rev_num <> FND_API.G_MISS_NUM))  THEN
3141     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':config_inst_rev_num', p_instance_query_rec.config_inst_rev_num);
3142  END IF;
3143 
3144  IF( (p_instance_query_rec.config_inst_item_id IS NOT NULL)
3145                   AND (p_instance_query_rec.config_inst_item_id <> FND_API.G_MISS_NUM))  THEN
3146     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':config_inst_item_id', p_instance_query_rec.config_inst_item_id);
3147  END IF;
3148 
3149  IF( (p_instance_query_rec.instance_description IS NOT NULL)
3150                   AND (p_instance_query_rec.instance_description <> FND_API.G_MISS_CHAR))  THEN
3151     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_description', p_instance_query_rec.instance_description);
3152  END IF;
3153 
3154 -- End of code addition
3155   -- Addition of columns for FA Integration
3156  IF( (p_instance_query_rec.operational_status_code IS NOT NULL)
3157                   AND (p_instance_query_rec.operational_status_code <> FND_API.G_MISS_CHAR))  THEN
3158     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':operational_status_code', p_instance_query_rec.operational_status_code);
3159  END IF;
3160   -- End addition of columns for FA Integration
3161 ----
3162  IF( (p_party_query_rec.instance_party_id IS NOT NULL)
3163                   AND (p_party_query_rec.instance_party_id <> FND_API.G_MISS_NUM))  THEN
3164     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_party_id', p_party_query_rec.instance_party_id);
3165  END IF;
3166 
3167  IF( (p_party_query_rec.instance_id IS NOT NULL)
3168                   AND (p_party_query_rec.instance_id <> FND_API.G_MISS_NUM))  THEN
3169     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_id', p_party_query_rec.instance_id);
3170  END IF;
3171 
3172  IF( (p_party_query_rec.party_id IS NOT NULL)
3173                   AND (p_party_query_rec.party_id <> FND_API.G_MISS_NUM))  THEN
3174     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':party_id', p_party_query_rec.party_id);
3175  END IF;
3176 
3177  IF( (p_party_query_rec.relationship_type_code IS NOT NULL)
3178                   AND (p_party_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR))  THEN
3179     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':relationship_type_code', p_party_query_rec.relationship_type_code);
3180  END IF;
3181 
3182 ----
3183  IF( (p_pty_acct_query_rec.ip_account_id IS NOT NULL)
3184                   AND (p_pty_acct_query_rec.ip_account_id <> FND_API.G_MISS_NUM))  THEN
3185     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':ip_account_id', p_pty_acct_query_rec.ip_account_id);
3186  END IF;
3187 
3188  IF( (p_pty_acct_query_rec.instance_party_id IS NOT NULL)
3189                   AND (p_pty_acct_query_rec.instance_party_id <> FND_API.G_MISS_NUM))  THEN
3190     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_party_id', p_pty_acct_query_rec.instance_party_id);
3191  END IF;
3192 
3193  IF( (p_pty_acct_query_rec.party_account_id IS NOT NULL)
3194                   AND (p_pty_acct_query_rec.party_account_id <> FND_API.G_MISS_NUM))  THEN
3195     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':party_account_id', p_pty_acct_query_rec.party_account_id);
3196  END IF;
3197 
3198  IF( (p_pty_acct_query_rec.relationship_type_code IS NOT NULL)
3199                   AND (p_pty_acct_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR))  THEN
3200     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':relationship_type_code', p_pty_acct_query_rec.relationship_type_code);
3201  END IF;
3202 
3203  IF p_transaction_id is not null then
3204     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':p_transaction_id', p_transaction_id);
3205  END IF;
3206 END Bind_Inst_variable;
3207 
3208 
3209 /*-----------------------------------------------------------*/
3210 /* Procedure name:  Gen_Inst_Where_Clause                    */
3211 /* Description :    Procedure used to  generate the where    */
3212 /*                  clause  for Party relationship           */
3213 /*-----------------------------------------------------------*/
3214 
3215 PROCEDURE Gen_Inst_Where_Clause
3216 (
3217     p_instance_query_rec    IN      csi_datastructures_pub.instance_query_rec,
3218     p_party_query_rec       IN      csi_datastructures_pub.party_query_rec,
3219     p_pty_acct_query_rec    IN      csi_datastructures_pub.party_account_query_rec,
3220     p_transaction_id        IN      NUMBER,
3221     x_select_stmt           OUT     NOCOPY VARCHAR2,
3222     p_active_instance_only  IN      VARCHAR2
3223    ) IS
3224 
3225   l_join_condition         VARCHAR2(2000):= '';
3226   l_from_clause            VARCHAR2(2000):= '';
3227   l_select_columns         VARCHAR2(2000):= '';
3228   x_where_clause           VARCHAR2(2000):= '';
3229   l_instance_rec_exists    BOOLEAN := FALSE;
3230   l_party_rec_exists       BOOLEAN := FALSE;
3231   l_party_acct_rec_exists  BOOLEAN := FALSE;
3232   --Added
3233   l_flag                   VARCHAR2(3);
3234   l_inp_rec                OKS_ENTITLEMENTS_PUB.inp_cont_rec;
3235   x_return_status          VARCHAR2(2000);
3236   x_msg_count              NUMBER;
3237   x_msg_data               VARCHAR2(2000);
3238   l_ent_contracts          OKS_ENTITLEMENTS_PUB.ent_cont_tbl;
3239   l_msg_data               VARCHAR2(2000);
3240   l_msg_index              NUMBER;
3241   l_msg_count              NUMBER;
3242   l_rec_count              NUMBER:=1;
3243   l_row_count              NUMBER;
3244   l_covered_cp_id          VARCHAR2(2000) DEFAULT NULL;
3245   l_covered_level_code     OKC_LINE_STYLES_B.LTY_CODE%TYPE;
3246   l_coverage_level_id      NUMBER;
3247   --End Addition
3248 
3249   l_union_stmt             VARCHAR2(2000) := ' select instance_id  from csi_item_instances_h '||
3250                             ' where transaction_id = :p_transaction_id  UNION   select a.instance_id '||
3251                             ' from csi_i_parties a, csi_i_parties_h b where a.instance_party_id = b.instance_party_id '||
3252                             ' and  b.transaction_id = :p_transaction_id  UNION   select a.instance_id '||
3253                             ' from csi_i_assets a, csi_i_assets_h b where a.instance_asset_id = b.instance_asset_id '||
3254                             ' and transaction_id = :p_transaction_id UNION '||
3255                             ' select a.instance_id  from csi_i_parties a, csi_ip_accounts b, '||
3256                             ' csi_ip_accounts_h c  where a.instance_party_id = b.instance_party_id '||
3257                             ' and b.ip_account_id  = c.ip_account_id  and c.transaction_id = :p_transaction_id UNION '||
3258                             ' SELECT b.instance_id  FROM csi_iea_values_h a, csi_iea_values b '||
3259                             ' WHERE a.attribute_value_id = b.attribute_value_id  AND a.transaction_id = :p_transaction_id '||
3260                             ' UNION SELECT b.subject_id  FROM csi_ii_relationships_h a, csi_ii_relationships b '||
3261                             ' WHERE a.relationship_id = b.relationship_id  AND a.transaction_id  = :p_transaction_id '||
3262                             ' UNION SELECT a.instance_id FROM csi_i_org_assignments a, csi_i_org_assignments_h b '||
3263                             ' WHERE a.instance_ou_id = b.instance_ou_id and  b.transaction_id = :p_transaction_id '||
3264                             ' UNION SELECT a.instance_id FROM csi_i_pricing_attribs a , csi_i_pricing_attribs_h b '||
3265                             ' WHERE a.pricing_attribute_id = b.pricing_attribute_id and  b.transaction_id = :p_transaction_id '||
3266                             ' UNION SELECT a.instance_id FROM csi_i_version_labels a, csi_i_version_labels_h b '||
3267                             ' WHERE a.version_label_id = b.version_label_id  and b.transaction_id = :p_transaction_id '||
3268                             ' UNION SELECT a.instance_id FROM csi_item_instances a, csi_systems_b b, csi_systems_h c '||
3269                             ' WHERE a.system_id = b.system_id  and b.system_id = c.system_id and  c.transaction_id = :p_transaction_id ';
3270 
3271 
3272 BEGIN
3273 
3274   IF        (p_instance_query_rec.INSTANCE_ID              <>  FND_API.G_MISS_NUM)
3275          OR (p_instance_query_rec.INSTANCE_ID              IS NULL )
3276          OR (p_instance_query_rec.INVENTORY_ITEM_ID        <>  FND_API.G_MISS_NUM)
3277          OR (p_instance_query_rec.INVENTORY_ITEM_ID        IS NULL )
3278          OR (p_instance_query_rec.INVENTORY_REVISION       <>  FND_API.G_MISS_CHAR)
3279          OR (p_instance_query_rec.INVENTORY_REVISION       IS NULL )
3280          OR (p_instance_query_rec.INV_MASTER_ORGANIZATION_ID <>  FND_API.G_MISS_NUM)
3281          OR (p_instance_query_rec.INV_MASTER_ORGANIZATION_ID  IS NULL )
3282          OR (p_instance_query_rec.SERIAL_NUMBER            <>  FND_API.G_MISS_CHAR)
3283          OR (p_instance_query_rec.SERIAL_NUMBER            IS NULL )
3284          OR (p_instance_query_rec.LOT_NUMBER               <>  FND_API.G_MISS_CHAR)
3285          OR (p_instance_query_rec.LOT_NUMBER               IS NULL )
3286          OR (p_instance_query_rec.UNIT_OF_MEASURE          <>  FND_API.G_MISS_CHAR)
3287          OR (p_instance_query_rec.UNIT_OF_MEASURE          IS NULL )
3288          OR (p_instance_query_rec.INSTANCE_CONDITION_ID    <>  FND_API.G_MISS_NUM)
3289          OR (p_instance_query_rec.INSTANCE_CONDITION_ID    IS NULL )
3290          OR (p_instance_query_rec.INSTANCE_STATUS_ID       <>  FND_API.G_MISS_NUM)
3291          OR (p_instance_query_rec.INSTANCE_STATUS_ID       IS NULL )
3292          OR (p_instance_query_rec.SYSTEM_ID                <>  FND_API.G_MISS_NUM)
3293          OR (p_instance_query_rec.SYSTEM_ID                IS NULL )
3294          OR (p_instance_query_rec.INSTANCE_TYPE_CODE       <>  FND_API.G_MISS_CHAR)
3295          OR (p_instance_query_rec.INSTANCE_TYPE_CODE       IS NULL )
3296          OR (p_instance_query_rec.LOCATION_TYPE_CODE       <>  FND_API.G_MISS_CHAR)
3297          OR (p_instance_query_rec.LOCATION_TYPE_CODE       IS NULL )
3298          OR (p_instance_query_rec.LOCATION_ID              <>  FND_API.G_MISS_NUM)
3299          OR (p_instance_query_rec.LOCATION_ID              IS NULL )
3300          OR (p_instance_query_rec.INV_ORGANIZATION_ID      <>  FND_API.G_MISS_NUM)
3301          OR (p_instance_query_rec.INV_ORGANIZATION_ID      IS NULL )
3302          OR (p_instance_query_rec.INV_SUBINVENTORY_NAME    <>  FND_API.G_MISS_CHAR)
3303          OR (p_instance_query_rec.INV_SUBINVENTORY_NAME    IS NULL )
3304          OR (p_instance_query_rec.INV_LOCATOR_ID           <>  FND_API.G_MISS_NUM)
3305          OR (p_instance_query_rec.INV_LOCATOR_ID           IS NULL )
3306          OR (p_instance_query_rec.PA_PROJECT_ID            <>  FND_API.G_MISS_NUM)
3307          OR (p_instance_query_rec.PA_PROJECT_ID            IS NULL )
3308          OR (p_instance_query_rec.PA_PROJECT_TASK_ID       <>  FND_API.G_MISS_NUM)
3309          OR (p_instance_query_rec.PA_PROJECT_TASK_ID       IS NULL )
3310          OR (p_instance_query_rec.IN_TRANSIT_ORDER_LINE_ID <>  FND_API.G_MISS_NUM)
3311          OR (p_instance_query_rec.IN_TRANSIT_ORDER_LINE_ID IS NULL )
3312          OR (p_instance_query_rec.WIP_JOB_ID               <>  FND_API.G_MISS_NUM)
3313          OR (p_instance_query_rec.WIP_JOB_ID               IS NULL )
3314          OR (p_instance_query_rec.PO_ORDER_LINE_ID         <>  FND_API.G_MISS_NUM)
3315          OR (p_instance_query_rec.PO_ORDER_LINE_ID         IS NULL )
3316          OR (p_instance_query_rec.LAST_OE_ORDER_LINE_ID    <>  FND_API.G_MISS_NUM)
3317          OR (p_instance_query_rec.LAST_OE_ORDER_LINE_ID    IS NULL )
3318          OR (p_instance_query_rec.LAST_OE_RMA_LINE_ID      <>  FND_API.G_MISS_NUM)
3319          OR (p_instance_query_rec.LAST_OE_RMA_LINE_ID      IS NULL )
3320          OR (p_instance_query_rec.LAST_PO_PO_LINE_ID       <>  FND_API.G_MISS_NUM)
3321          OR (p_instance_query_rec.LAST_PO_PO_LINE_ID       IS NULL )
3322          OR (p_instance_query_rec.LAST_OE_PO_NUMBER        <>  FND_API.G_MISS_CHAR)
3323          OR (p_instance_query_rec.LAST_OE_PO_NUMBER        IS NULL )
3324          OR (p_instance_query_rec.LAST_WIP_JOB_ID          <>  FND_API.G_MISS_NUM)
3325          OR (p_instance_query_rec.LAST_WIP_JOB_ID          IS NULL )
3326          OR (p_instance_query_rec.LAST_PA_PROJECT_ID       <>  FND_API.G_MISS_NUM)
3327          OR (p_instance_query_rec.LAST_PA_PROJECT_ID       IS NULL )
3328          OR (p_instance_query_rec.LAST_PA_TASK_ID          <>  FND_API.G_MISS_NUM)
3329          OR (p_instance_query_rec.LAST_PA_TASK_ID          IS NULL )
3330          OR (p_instance_query_rec.LAST_OE_AGREEMENT_ID     <>  FND_API.G_MISS_NUM)
3331          OR (p_instance_query_rec.LAST_OE_AGREEMENT_ID     IS NULL )
3332          OR (p_instance_query_rec.INSTALL_DATE             <>  FND_API.G_MISS_DATE)
3333          OR (p_instance_query_rec.INSTALL_DATE             IS NULL )
3334          OR (p_instance_query_rec.MANUALLY_CREATED_FLAG    <>  FND_API.G_MISS_CHAR)
3335          OR (p_instance_query_rec.MANUALLY_CREATED_FLAG    IS NULL )
3336          OR (p_instance_query_rec.RETURN_BY_DATE           <>  FND_API.G_MISS_DATE)
3337          OR (p_instance_query_rec.RETURN_BY_DATE           IS NULL )
3338          OR (p_instance_query_rec.ACTUAL_RETURN_DATE       <>  FND_API.G_MISS_DATE)
3339          OR (p_instance_query_rec.ACTUAL_RETURN_DATE       IS NULL )
3340          OR (p_instance_query_rec.INSTANCE_USAGE_CODE      <>  FND_API.G_MISS_CHAR)
3341          OR (p_instance_query_rec.INSTANCE_USAGE_CODE      IS NULL )
3342          OR (p_instance_query_rec.CONTRACT_NUMBER          <>  FND_API.G_MISS_CHAR)
3343          OR (p_instance_query_rec.CONTRACT_NUMBER          IS NULL )
3344          OR (p_instance_query_rec.CONFIG_INST_HDR_ID       <>  FND_API.G_MISS_NUM) -- sguthiva added for att
3345          OR (p_instance_query_rec.CONFIG_INST_HDR_ID       IS NULL )
3346          OR (p_instance_query_rec.CONFIG_INST_REV_NUM      <>  FND_API.G_MISS_NUM) -- sguthiva added for att
3347          OR (p_instance_query_rec.CONFIG_INST_REV_NUM      IS NULL )
3348          OR (p_instance_query_rec.CONFIG_INST_ITEM_ID      <>  FND_API.G_MISS_NUM) -- sguthiva added for att
3349          OR (p_instance_query_rec.CONFIG_INST_ITEM_ID      IS NULL )
3350          OR (p_instance_query_rec.INSTANCE_DESCRIPTION     <>  FND_API.G_MISS_CHAR) -- sguthiva added for att
3351          OR (p_instance_query_rec.INSTANCE_DESCRIPTION     IS NULL )
3352          OR (p_instance_query_rec.OPERATIONAL_STATUS_CODE  <>  FND_API.G_MISS_CHAR) -- Addition of columns for FA Integration
3353          OR (p_instance_query_rec.OPERATIONAL_STATUS_CODE  IS NULL )
3354  THEN
3355 
3356      l_instance_rec_exists := TRUE;
3357      l_from_clause    := ' csi_item_instances a ';
3358      l_select_columns := ' a.INSTANCE_ID ';
3359 
3360 
3361  END IF;
3362 
3363  IF   (p_party_query_rec.instance_party_id  <> FND_API.G_MISS_NUM)
3364    OR (p_party_query_rec.instance_party_id  IS NULL )
3365    OR (p_party_query_rec.instance_id        <> FND_API.G_MISS_NUM)
3366    OR (p_party_query_rec.instance_id        IS NULL )
3367    OR (p_party_query_rec.party_id           <> FND_API.G_MISS_NUM)
3368    OR (p_party_query_rec.party_id           IS NULL )
3369    OR (p_party_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR )
3370    OR (p_party_query_rec.relationship_type_code IS NULL ) THEN
3371 
3372    l_party_rec_exists := TRUE;
3373    IF l_instance_rec_exists THEN
3374      l_from_clause    := l_from_clause||'  , csi_i_parties b ';
3375      l_join_condition := ' a.instance_id = b.instance_id  ';
3376    ELSE
3377      l_from_clause    := '  csi_i_parties b ';
3378      l_select_columns := ' b.instance_id ';
3379    END IF;
3380 
3381 END IF;
3382 
3383 IF    (p_pty_acct_query_rec.ip_account_id     <> FND_API.G_MISS_NUM)
3384    OR (p_pty_acct_query_rec.ip_account_id     IS NULL )
3385    OR (p_pty_acct_query_rec.instance_party_id <> FND_API.G_MISS_NUM)
3386    OR (p_pty_acct_query_rec.instance_party_id IS NULL )
3387    OR (p_pty_acct_query_rec.party_account_id  <> FND_API.G_MISS_NUM)
3388    OR (p_pty_acct_query_rec.party_account_id  IS NULL)
3389    OR (p_pty_acct_query_rec.relationship_type_code  <> FND_API.G_MISS_CHAR  )
3390    OR (p_pty_acct_query_rec.relationship_type_code  IS NULL  ) THEN
3391 
3392      l_party_acct_rec_exists := TRUE;
3393 
3394      IF l_party_rec_exists then
3395 
3396         IF l_instance_rec_exists THEN
3397            l_from_clause  := l_from_clause||' , csi_ip_accounts c  ';
3398            l_join_condition := l_join_condition||' AND  b.instance_party_id = c.instance_party_id  ';
3399 
3400         ELSE
3401            l_from_clause  := l_from_clause||' , csi_ip_accounts c  ';
3402            l_join_condition := ' b.instance_party_id = c.instance_party_id  ';
3403 
3404         END IF;
3405 
3406      ELSE
3407 
3408         IF l_instance_rec_exists THEN
3409            l_from_clause    := l_from_clause||'  , csi_i_parties b , csi_ip_accounts c ';
3410            l_join_condition := ' a.instance_id = b.instance_id AND b.instance_party_id = c.instance_party_id  ';
3411         ELSE
3412            l_from_clause    := '  csi_i_parties b , csi_ip_accounts c ';
3413            l_join_condition := ' b.instance_party_id = c.instance_party_id  ';
3414            l_select_columns := ' b.instance_id ';
3415         END IF;
3416 
3417      END IF;
3418 
3419 END IF;
3420 
3421 IF (( p_instance_query_rec.instance_id  IS NOT NULL)  AND
3422                          ( p_instance_query_rec.instance_id  <> FND_API.G_MISS_NUM)) THEN
3423        IF x_where_clause IS NULL THEN
3424          x_where_clause := '  a.instance_id = :INSTANCE_ID ';
3425        ELSE
3426          x_where_clause := x_where_clause||' AND '||'  a.instance_id = :INSTANCE_ID ';
3427        END IF;
3428 ELSIF ( p_instance_query_rec.instance_id  IS  NULL) THEN
3429        IF x_where_clause IS NULL THEN
3430         x_where_clause := '  a.instance_id IS NULL ';
3431        ELSE
3432         x_where_clause := x_where_clause||' AND '||'  a.instance_id IS NULL ';
3433        END IF;
3434 END IF;
3435 IF (( p_instance_query_rec.inventory_item_id  IS NOT NULL)  AND
3436                          ( p_instance_query_rec.inventory_item_id  <> FND_API.G_MISS_NUM)) THEN
3437        IF x_where_clause IS NULL THEN
3438         x_where_clause := ' a.inventory_item_id = :INVENTORY_ITEM_ID ';
3439        ELSE
3440         x_where_clause := x_where_clause||' AND '||' a.inventory_item_id = :INVENTORY_ITEM_ID ';
3441        END IF;
3442 ELSIF ( p_instance_query_rec.inventory_item_id  IS NULL) THEN
3443        IF x_where_clause IS NULL THEN
3444          x_where_clause := ' a.inventory_item_id IS NULL ';
3445        ELSE
3446            x_where_clause := x_where_clause||' AND '||' a.inventory_item_id IS NULL ';
3447        END IF;
3448 END IF;
3449 IF (( p_instance_query_rec.inventory_revision  IS NOT NULL)  AND
3450              ( p_instance_query_rec.inventory_revision  <> FND_API.G_MISS_CHAR)) THEN
3451        IF x_where_clause IS NULL THEN
3452         x_where_clause := ' a.inventory_revision = :INVENTORY_REVISION ';
3453        ELSE
3454         x_where_clause := x_where_clause||' AND '||' a.inventory_revision = :INVENTORY_REVISION ';
3455 
3456        END IF;
3457 ELSIF ( p_instance_query_rec.inventory_revision  IS  NULL) THEN
3458        IF x_where_clause IS NULL THEN
3459          x_where_clause := ' a.inventory_revision IS NULL ';
3460        ELSE
3461          x_where_clause := x_where_clause||' AND '||' a.inventory_revision IS NULL ';
3462        END IF;
3463 END IF;
3464 IF (( p_instance_query_rec.inv_master_organization_id  IS NOT NULL)  AND
3465             ( p_instance_query_rec.inv_master_organization_id  <> FND_API.G_MISS_NUM)) THEN
3466    IF x_where_clause IS NULL THEN
3467     x_where_clause := ' a.inv_master_organization_id = :INV_MASTER_ORGANIZATION_ID ';
3468    ELSE
3469     x_where_clause := x_where_clause||' AND '||' a.inv_master_organization_id = :INV_MASTER_ORGANIZATION_ID ';
3470 
3471    END IF;
3472 ELSIF ( p_instance_query_rec.inv_master_organization_id  IS  NULL) THEN
3473   IF x_where_clause IS NULL THEN
3474     x_where_clause := ' a.inv_master_organization_id IS NULL ';
3475   ELSE
3476     x_where_clause := x_where_clause||' AND '||' a.inv_master_organization_id IS NULL ';
3477   END IF;
3478 END IF;
3479 
3480 IF (( p_instance_query_rec.serial_number  IS NOT NULL)  AND
3481             ( p_instance_query_rec.serial_number  <> FND_API.G_MISS_CHAR)) THEN
3482     IF x_where_clause IS NULL THEN
3483         x_where_clause := ' a.serial_number = :serial_number ';
3484     ELSE
3485         x_where_clause := x_where_clause||' AND '||' a.serial_number = :serial_number ';
3486     END IF;
3487 
3488 ELSIF ( p_instance_query_rec.serial_number  IS  NULL) THEN
3489     IF x_where_clause IS NULL THEN
3490         x_where_clause := ' a.serial_number IS NULL ';
3491     ELSE
3492         x_where_clause := x_where_clause||' AND '||' a.serial_number IS NULL ';
3493     END IF;
3494 END IF;
3495 
3496 IF (( p_instance_query_rec.lot_number  IS NOT NULL)  AND
3497           ( p_instance_query_rec.lot_number  <> FND_API.G_MISS_CHAR)) THEN
3498        IF x_where_clause IS NULL THEN
3499          x_where_clause := ' a.lot_number = :lot_number ';
3500        ELSE
3501          x_where_clause := x_where_clause||' AND '||' a.lot_number = :lot_number ';
3502        END IF;
3503 
3504 ELSIF ( p_instance_query_rec.lot_number  IS  NULL) THEN
3505     IF x_where_clause IS NULL THEN
3506       x_where_clause := ' a.lot_number IS NULL ';
3507     ELSE
3508       x_where_clause := x_where_clause||' AND '||' a.lot_number IS NULL ';
3509 
3510     END IF;
3511 END IF;
3512 
3513 IF( (p_instance_query_rec.unit_of_measure IS NOT NULL)
3514          AND (p_instance_query_rec.unit_of_measure <> FND_API.G_MISS_CHAR))  THEN
3515      IF x_where_clause IS NULL THEN
3516         x_where_clause := ' a.unit_of_measure = :unit_of_measure ';
3517      ELSE
3518         x_where_clause := x_where_clause||' AND '||' a.unit_of_measure = :unit_of_measure ';
3519      END IF;
3520 ELSIF (p_instance_query_rec.unit_of_measure IS  NULL) THEN
3521     IF x_where_clause IS NULL THEN
3522       x_where_clause := ' a.unit_of_measure IS NULL ';
3523     ELSE
3524        x_where_clause := x_where_clause||' AND '||' a.unit_of_measure IS NULL ';
3525     END IF;
3526 END IF;
3527 
3528 IF (( p_instance_query_rec.instance_condition_id  IS NOT NULL)  AND
3529            ( p_instance_query_rec.instance_condition_id  <> FND_API.G_MISS_NUM)) THEN
3530      IF x_where_clause IS NULL THEN
3531         x_where_clause := ' a.instance_condition_id = :instance_condition_id ';
3532      ELSE
3533          x_where_clause := x_where_clause||' AND '||' a.instance_condition_id = :instance_condition_id ';
3534      END IF;
3535 ELSIF ( p_instance_query_rec.instance_condition_id  IS NULL) THEN
3536      IF x_where_clause IS NULL THEN
3537         x_where_clause := ' a.instance_condition_id IS NULL ';
3538      ELSE
3539         x_where_clause := x_where_clause||' AND '||' a.instance_condition_id IS NULL ';
3540      END IF;
3541 
3542 END IF;
3543 
3544 IF (( p_instance_query_rec.instance_status_id  IS NOT NULL)  AND
3545             ( p_instance_query_rec.instance_status_id  <> FND_API.G_MISS_NUM)) THEN
3546       IF x_where_clause IS NULL THEN
3547          x_where_clause := ' a.instance_status_id = :instance_status_id ';
3548       ELSE
3549          x_where_clause := x_where_clause||' AND '||' a.instance_status_id = :instance_status_id ';
3550       END IF;
3551 ELSIF ( p_instance_query_rec.instance_status_id  IS NULL) THEN
3552     IF x_where_clause IS NULL THEN
3553       x_where_clause := ' a.instance_status_id IS NULL ';
3554     ELSE
3555       x_where_clause := x_where_clause||' AND '||' a.instance_status_id IS NULL ';
3556     END IF;
3557 END IF;
3558 
3559 IF (( p_instance_query_rec.system_id  IS NOT NULL)  AND
3560         ( p_instance_query_rec.system_id  <> FND_API.G_MISS_NUM)) THEN
3561       IF x_where_clause IS NULL THEN
3562          x_where_clause := ' a.system_id = :system_id ';
3563       ELSE
3564          x_where_clause := x_where_clause||' AND '||' a.system_id = :system_id ';
3565       END IF;
3566 
3567 ELSIF ( p_instance_query_rec.system_id  IS NULL) THEN
3568    IF x_where_clause IS NULL THEN
3569       x_where_clause := ' a.system_id IS NULL ';
3570    ELSE
3571       x_where_clause := x_where_clause||' AND '||' a.system_id IS NULL ';
3572    END IF;
3573 END IF;
3574 
3575 IF (( p_instance_query_rec.instance_type_code  IS NOT NULL)  AND
3576            ( p_instance_query_rec.instance_type_code  <> FND_API.G_MISS_CHAR)) THEN
3577      IF x_where_clause IS NULL THEN
3578         x_where_clause := ' a.instance_type_code = :instance_type_code ';
3579      ELSE
3580         x_where_clause := x_where_clause||' AND '||' a.instance_type_code = :instance_type_code ';
3581      END IF;
3582 ELSIF ( p_instance_query_rec.instance_type_code  IS  NULL) THEN
3583     IF x_where_clause IS NULL THEN
3584        x_where_clause := ' a.instance_type_code IS NULL ';
3585     ELSE
3586        x_where_clause := x_where_clause||' AND '||' a.instance_type_code IS NULL ';
3587     END IF;
3588 END IF;
3589 
3590 IF (( p_instance_query_rec.location_type_code  IS NOT NULL)  AND
3591            ( p_instance_query_rec.location_type_code  <> FND_API.G_MISS_CHAR)) THEN
3592      IF x_where_clause IS NULL THEN
3593         x_where_clause := ' a.location_type_code = :location_type_code ';
3594      ELSE
3595         x_where_clause := x_where_clause||' AND '||' a.location_type_code = :location_type_code ';
3596      END IF;
3597 ELSIF ( p_instance_query_rec.location_type_code  IS  NULL) THEN
3598     IF x_where_clause IS NULL THEN
3599        x_where_clause := ' a.location_type_code IS NULL ';
3600     ELSE
3601        x_where_clause := x_where_clause||' AND '||' a.location_type_code IS NULL ';
3602     END IF;
3603 END IF;
3604 
3605 IF (( p_instance_query_rec.location_id  IS NOT NULL)  AND
3606           ( p_instance_query_rec.location_id  <> FND_API.G_MISS_NUM)) THEN
3607      IF x_where_clause IS NULL THEN
3608         x_where_clause := ' a.location_id = :location_id ';
3609      ELSE
3610          x_where_clause := x_where_clause||' AND '||' a.location_id = :location_id ';
3611      END IF;
3612 ELSIF ( p_instance_query_rec.location_id  IS  NULL) THEN
3613      IF x_where_clause IS NULL THEN
3614         x_where_clause := ' a.location_id IS NULL ';
3615      ELSE
3616          x_where_clause := x_where_clause||' AND '||' a.location_id IS NULL ';
3617      END IF;
3618 END IF;
3619 
3620 IF (( p_instance_query_rec.inv_organization_id  IS NOT NULL)  AND
3621           ( p_instance_query_rec.inv_organization_id  <> FND_API.G_MISS_NUM)) THEN
3622    IF x_where_clause IS NULL THEN
3623         x_where_clause := ' a.inv_organization_id = :inv_organization_id ';
3624    ELSE
3625         x_where_clause := x_where_clause||' AND '||' a.inv_organization_id = :inv_organization_id ';
3626    END IF;
3627 ELSIF ( p_instance_query_rec.inv_organization_id  IS NULL) THEN
3628   IF x_where_clause IS NULL THEN
3629      x_where_clause := ' a.inv_organization_id IS NULL ';
3630   ELSE
3631      x_where_clause := x_where_clause||' AND '||' a.inv_organization_id IS NULL ';
3632   END IF;
3633 END IF;
3634 
3635 IF (( p_instance_query_rec.inv_subinventory_name  IS NOT NULL)  AND
3636                ( p_instance_query_rec.inv_subinventory_name  <> FND_API.G_MISS_CHAR)) THEN
3637    IF x_where_clause IS NULL THEN
3638      x_where_clause := ' a.inv_subinventory_name = :inv_subinventory_name ';
3639    ELSE
3640      x_where_clause := x_where_clause||' AND '||' a.inv_subinventory_name = :inv_subinventory_name ';
3641    END IF;
3642 ELSIF ( p_instance_query_rec.inv_subinventory_name  IS  NULL) THEN
3643    IF x_where_clause IS NULL THEN
3644      x_where_clause := ' a.inv_subinventory_name IS NULL ';
3645    ELSE
3646      x_where_clause := x_where_clause||' AND '||' a.inv_subinventory_name IS NULL ';
3647    END IF;
3648 END IF;
3649 
3650 IF (( p_instance_query_rec.inv_locator_id  IS NOT NULL)  AND
3651                 ( p_instance_query_rec.inv_locator_id  <> FND_API.G_MISS_NUM)) THEN
3652     IF x_where_clause IS NULL THEN
3653         x_where_clause := ' a.inv_locator_id = :inv_locator_id ';
3654     ELSE
3655         x_where_clause := x_where_clause||' AND '||' a.inv_locator_id = :inv_locator_id ';
3656     END IF;
3657 ELSIF ( p_instance_query_rec.inv_locator_id  IS NULL) THEN
3658    IF x_where_clause IS NULL THEN
3659      x_where_clause := ' a.inv_locator_id IS NULL ';
3660    ELSE
3661      x_where_clause := x_where_clause||' AND '||' a.inv_locator_id IS NULL ';
3662    END IF;
3663 END IF;
3664 
3665 IF (( p_instance_query_rec.pa_project_id  IS NOT NULL)  AND
3666            ( p_instance_query_rec.pa_project_id  <> FND_API.G_MISS_NUM)) THEN
3667     IF x_where_clause IS NULL THEN
3668       x_where_clause := ' a.pa_project_id = :pa_project_id ';
3669     ELSE
3670       x_where_clause := x_where_clause||' AND '||' a.pa_project_id = :pa_project_id ';
3671     END IF;
3672 ELSIF ( p_instance_query_rec.pa_project_id  IS  NULL) THEN
3673     IF x_where_clause IS NULL THEN
3674        x_where_clause := ' a.pa_project_id IS NULL ';
3675     ELSE
3676        x_where_clause := x_where_clause||' AND '||' a.pa_project_id IS NULL ';
3677     END IF;
3678 END IF;
3679 
3680 IF (( p_instance_query_rec.pa_project_task_id  IS NOT NULL)  AND
3681          ( p_instance_query_rec.pa_project_task_id  <> FND_API.G_MISS_NUM)) THEN
3682    IF x_where_clause IS NULL THEN
3683      x_where_clause := ' a.pa_project_task_id = :pa_project_task_id ';
3684    ELSE
3685       x_where_clause := x_where_clause||' AND '||' a.pa_project_task_id = :pa_project_task_id ';
3686    END IF;
3687 ELSIF ( p_instance_query_rec.pa_project_task_id  IS  NULL) THEN
3688   IF x_where_clause IS NULL THEN
3689     x_where_clause :=  ' a.pa_project_task_id IS NULL ';
3690   ELSE
3691      x_where_clause := x_where_clause||' AND '||' a.pa_project_task_id IS NULL ';
3692   END IF;
3693 END IF;
3694 
3695 IF (( p_instance_query_rec.in_transit_order_line_id  IS NOT NULL)  AND
3696           ( p_instance_query_rec.in_transit_order_line_id  <> FND_API.G_MISS_NUM)) THEN
3697    IF x_where_clause IS NULL THEN
3698      x_where_clause := ' a.in_transit_order_line_id = :in_transit_order_line_id ';
3699    ELSE
3700      x_where_clause := x_where_clause||' AND '||' a.in_transit_order_line_id = :in_transit_order_line_id ';
3701    END IF;
3702 ELSIF ( p_instance_query_rec.in_transit_order_line_id  IS NULL) THEN
3703    IF x_where_clause IS NULL THEN
3704       x_where_clause := ' a.in_transit_order_line_id IS NULL ';
3705    ELSE
3706       x_where_clause := x_where_clause||' AND '||' a.in_transit_order_line_id IS NULL ';
3707    END IF;
3708 END IF;
3709 
3710 IF (( p_instance_query_rec.wip_job_id  IS NOT NULL)  AND
3711            ( p_instance_query_rec.wip_job_id  <> FND_API.G_MISS_NUM)) THEN
3712    IF x_where_clause IS NULL THEN
3713       x_where_clause := ' a.wip_job_id = :wip_job_id ';
3714    ELSE
3715        x_where_clause := x_where_clause||' AND '||' a.wip_job_id = :wip_job_id ';
3716    END IF;
3717 ELSIF ( p_instance_query_rec.wip_job_id  IS  NULL) THEN
3718    IF x_where_clause IS NULL THEN
3719       x_where_clause := ' a.wip_job_id IS NULL ';
3720    ELSE
3721      x_where_clause := x_where_clause||' AND '||' a.wip_job_id IS NULL ';
3722    END IF;
3723 END IF;
3724 IF (( p_instance_query_rec.po_order_line_id  IS NOT NULL)  AND
3725            ( p_instance_query_rec.po_order_line_id  <> FND_API.G_MISS_NUM)) THEN
3726     IF x_where_clause IS NULL THEN
3727        x_where_clause := ' a.po_order_line_id = :po_order_line_id ';
3728     ELSE
3729         x_where_clause := x_where_clause||' AND '||' a.po_order_line_id = :po_order_line_id ';
3730     END IF;
3731 ELSIF ( p_instance_query_rec.po_order_line_id  IS NULL) THEN
3732     IF x_where_clause IS NULL THEN
3733       x_where_clause := ' a.po_order_line_id IS NULL ';
3734     ELSE
3735        x_where_clause := x_where_clause||' AND '||' a.po_order_line_id IS NULL ';
3736     END IF;
3737 END IF;
3738 
3739 IF (( p_instance_query_rec.last_oe_order_line_id  IS NOT NULL)  AND
3740            ( p_instance_query_rec.last_oe_order_line_id  <> FND_API.G_MISS_NUM)) THEN
3741     IF x_where_clause IS NULL THEN
3742       x_where_clause := ' a.last_oe_order_line_id = :last_oe_order_line_id ';
3743     ELSE
3744       x_where_clause := x_where_clause||' AND '||' a.last_oe_order_line_id = :last_oe_order_line_id ';
3745     END IF;
3746 ELSIF ( p_instance_query_rec.last_oe_order_line_id  IS  NULL) THEN
3747    IF x_where_clause IS NULL THEN
3748      x_where_clause := ' a.last_oe_order_line_id IS NULL ';
3749    ELSE
3750       x_where_clause := x_where_clause||' AND '||' a.last_oe_order_line_id IS NULL ';
3751    END IF;
3752 END IF;
3753 
3754 IF (( p_instance_query_rec.last_oe_rma_line_id  IS NOT NULL)  AND
3755             ( p_instance_query_rec.last_oe_rma_line_id  <> FND_API.G_MISS_NUM)) THEN
3756    IF x_where_clause IS NULL THEN
3757      x_where_clause := ' a.last_oe_rma_line_id = :last_oe_rma_line_id ';
3758    ELSE
3759       x_where_clause := x_where_clause||' AND '||' a.last_oe_rma_line_id = :last_oe_rma_line_id ';
3760    END IF;
3761 ELSIF ( p_instance_query_rec.last_oe_rma_line_id  IS NULL) THEN
3762    IF x_where_clause IS NULL THEN
3763      x_where_clause := ' a.last_oe_rma_line_id  IS NULL ';
3764    ELSE
3765      x_where_clause := x_where_clause||' AND '||' a.last_oe_rma_line_id  IS NULL ';
3766    END IF;
3767 END IF;
3768 
3769 IF (( p_instance_query_rec.last_po_po_line_id  IS NOT NULL)  AND
3770           ( p_instance_query_rec.last_po_po_line_id  <> FND_API.G_MISS_NUM)) THEN
3771     IF x_where_clause IS NULL THEN
3772       x_where_clause := ' a.last_po_po_line_id = :last_po_po_line_id ';
3773     ELSE
3774       x_where_clause := x_where_clause||' AND '||' a.last_po_po_line_id = :last_po_po_line_id ';
3775     END IF;
3776 ELSIF ( p_instance_query_rec.last_po_po_line_id  IS NULL) THEN
3777   IF x_where_clause IS NULL THEN
3778      x_where_clause := ' a.last_po_po_line_id IS NULL  ';
3779   ELSE
3780      x_where_clause := x_where_clause||' AND '||' a.last_po_po_line_id IS NULL  ';
3781   END IF;
3782 END IF;
3783 
3784 IF (( p_instance_query_rec.last_oe_po_number  IS NOT NULL)  AND
3785           ( p_instance_query_rec.last_oe_po_number  <> FND_API.G_MISS_CHAR)) THEN
3786    IF x_where_clause IS NULL THEN
3787      x_where_clause := ' a.last_oe_po_number = :last_oe_po_number ';
3788    ELSE
3789      x_where_clause := x_where_clause||' AND '||' a.last_oe_po_number = :last_oe_po_number ';
3790    END IF;
3791 ELSIF ( p_instance_query_rec.last_oe_po_number  IS NULL) THEN
3792   IF x_where_clause IS NULL THEN
3793     x_where_clause :=  ' a.last_oe_po_number IS NULL ';
3794   ELSE
3795     x_where_clause := x_where_clause||' AND '||' a.last_oe_po_number IS NULL ';
3796   END IF;
3797 END IF;
3798 
3799 IF (( p_instance_query_rec.last_wip_job_id  IS NOT NULL)  AND
3800           ( p_instance_query_rec.last_wip_job_id  <> FND_API.G_MISS_NUM)) THEN
3801      IF x_where_clause IS NULL THEN
3802         x_where_clause := ' a.last_wip_job_id = :last_wip_job_id ';
3803      ELSE
3804         x_where_clause := x_where_clause||' AND '||' a.last_wip_job_id = :last_wip_job_id ';
3805      END IF;
3806 ELSIF ( p_instance_query_rec.last_wip_job_id  IS  NULL) THEN
3807     IF x_where_clause IS NULL THEN
3808       x_where_clause := ' a.last_wip_job_id IS NULL ';
3809     ELSE
3810       x_where_clause := x_where_clause||' AND '||' a.last_wip_job_id IS NULL ';
3811     END IF;
3812 END IF;
3813 
3814 IF (( p_instance_query_rec.last_pa_project_id  IS NOT NULL)  AND
3815                ( p_instance_query_rec.last_pa_project_id  <> FND_API.G_MISS_NUM)) THEN
3816      IF x_where_clause IS NULL THEN
3817         x_where_clause :=  ' a.last_pa_project_id = :last_pa_project_id ';
3818      ELSE
3819         x_where_clause := x_where_clause||' AND '||' a.last_pa_project_id = :last_pa_project_id ';
3820      END IF;
3821 ELSIF ( p_instance_query_rec.last_pa_project_id  IS  NULL) THEN
3822   IF x_where_clause IS NULL THEN
3823     x_where_clause := ' a.last_pa_project_id IS NULL ';
3824   ELSE
3825     x_where_clause := x_where_clause||' AND '||' a.last_pa_project_id IS NULL ';
3826   END IF;
3827 END IF;
3828 
3829 IF (( p_instance_query_rec.last_pa_task_id  IS NOT NULL)  AND
3830            ( p_instance_query_rec.last_pa_task_id  <> FND_API.G_MISS_NUM)) THEN
3831   IF x_where_clause IS NULL THEN
3832      x_where_clause := ' a.last_pa_task_id = :last_pa_task_id ';
3833   ELSE
3834      x_where_clause := x_where_clause||' AND '||' a.last_pa_task_id = :last_pa_task_id ';
3835   END IF;
3836 ELSIF ( p_instance_query_rec.last_pa_task_id  IS  NULL) THEN
3837   IF x_where_clause IS NULL THEN
3838     x_where_clause := ' a.last_pa_task_id IS NULL ';
3839   ELSE
3840     x_where_clause := x_where_clause||' AND '||' a.last_pa_task_id IS NULL ';
3841   END IF;
3842 END IF;
3843 
3844 IF (( p_instance_query_rec.last_oe_agreement_id  IS NOT NULL)  AND
3845            ( p_instance_query_rec.last_oe_agreement_id  <> FND_API.G_MISS_NUM)) THEN
3846   IF x_where_clause IS NULL THEN
3847     x_where_clause := ' a.last_oe_agreement_id = :last_oe_agreement_id ';
3848   ELSE
3849     x_where_clause := x_where_clause||' AND '||' a.last_oe_agreement_id = :last_oe_agreement_id ';
3850   END IF;
3851 ELSIF ( p_instance_query_rec.last_oe_agreement_id  IS NULL) THEN
3852   IF x_where_clause IS NULL THEN
3853     x_where_clause := ' a.last_oe_agreement_id IS NULL ';
3854   ELSE
3855     x_where_clause := x_where_clause||' AND '||' a.last_oe_agreement_id IS NULL ';
3856   END IF;
3857 END IF;
3858 
3859 IF (( p_instance_query_rec.install_date  IS NOT NULL)  AND
3860            ( p_instance_query_rec.install_date  <> FND_API.G_MISS_DATE)) THEN
3861    IF x_where_clause IS NULL THEN
3862      x_where_clause := ' a.install_date = :install_date ';
3863    ELSE
3864      x_where_clause := x_where_clause||' AND '||' a.install_date = :install_date ';
3865    END IF;
3866 ELSIF ( p_instance_query_rec.install_date  IS  NULL) THEN
3867  IF x_where_clause IS NULL THEN
3868    x_where_clause := ' a.install_date IS NULL ';
3869  ELSE
3870    x_where_clause := x_where_clause||' AND '||' a.install_date IS NULL ';
3871  END IF;
3872 END IF;
3873 
3874 IF (( p_instance_query_rec.manually_created_flag  IS NOT NULL)  AND
3875           ( p_instance_query_rec.manually_created_flag  <> FND_API.G_MISS_CHAR)) THEN
3876   IF x_where_clause IS NULL THEN
3877      x_where_clause := ' a.manually_created_flag = :manually_created_flag ';
3878   ELSE
3879     x_where_clause := x_where_clause||' AND '||' a.manually_created_flag = :manually_created_flag ';
3880   END IF;
3881 ELSIF ( p_instance_query_rec.manually_created_flag  IS  NULL) THEN
3882  IF x_where_clause IS NULL THEN
3883    x_where_clause := ' a.manually_created_flag IS NULL ';
3884  ELSE
3885    x_where_clause := x_where_clause||' AND '||' a.manually_created_flag IS NULL ';
3886  END IF;
3887 END IF;
3888 
3889 IF (( p_instance_query_rec.return_by_date  IS NOT NULL)  AND
3890              ( p_instance_query_rec.return_by_date  <> FND_API.G_MISS_DATE)) THEN
3891  IF x_where_clause IS NULL THEN
3892     x_where_clause := ' a.return_by_date = :return_by_date ';
3893  ELSE
3894    x_where_clause := x_where_clause||' AND '||' a.return_by_date = :return_by_date ';
3895  END IF;
3896 ELSIF ( p_instance_query_rec.return_by_date  IS  NULL) THEN
3897  IF x_where_clause IS NULL THEN
3898    x_where_clause := ' a.return_by_date IS NULL ';
3899  ELSE
3900    x_where_clause := x_where_clause||' AND '||' a.return_by_date IS NULL ';
3901  END IF;
3902 END IF;
3903 
3904 IF (( p_instance_query_rec.instance_usage_code  IS NOT NULL)  AND
3905              ( p_instance_query_rec.instance_usage_code  <> FND_API.G_MISS_CHAR)) THEN
3906  IF x_where_clause IS NULL THEN
3907     x_where_clause := ' a.instance_usage_code = :instance_usage_code ';
3908  ELSE
3909    x_where_clause := x_where_clause||' AND '||' a.instance_usage_code = :instance_usage_code ';
3910  END IF;
3911 ELSIF ( p_instance_query_rec.instance_usage_code  IS  NULL) THEN
3912  IF x_where_clause IS NULL THEN
3913    x_where_clause := ' a.instance_usage_code IS NULL ';
3914  ELSE
3915    x_where_clause := x_where_clause||' AND '||' a.instance_usage_code IS NULL ';
3916  END IF;
3917 END IF;
3918 
3919 -- Following code has been added by sguthiva for att enhancements
3920 
3921 IF (( p_instance_query_rec.config_inst_hdr_id  IS NOT NULL)  AND
3922            ( p_instance_query_rec.config_inst_hdr_id  <> FND_API.G_MISS_NUM)) THEN
3923     IF x_where_clause IS NULL THEN
3924       x_where_clause := ' a.config_inst_hdr_id = :config_inst_hdr_id ';
3925     ELSE
3926       x_where_clause := x_where_clause||' AND '||' a.config_inst_hdr_id = :config_inst_hdr_id ';
3927     END IF;
3928 ELSIF ( p_instance_query_rec.config_inst_hdr_id  IS  NULL) THEN
3929    IF x_where_clause IS NULL THEN
3930      x_where_clause := ' a.config_inst_hdr_id IS NULL ';
3931    ELSE
3932       x_where_clause := x_where_clause||' AND '||' a.config_inst_hdr_id IS NULL ';
3933    END IF;
3934 END IF;
3935 
3936 IF (( p_instance_query_rec.config_inst_rev_num  IS NOT NULL)  AND
3937             ( p_instance_query_rec.config_inst_rev_num  <> FND_API.G_MISS_NUM)) THEN
3938    IF x_where_clause IS NULL THEN
3939      x_where_clause := ' a.config_inst_rev_num = :config_inst_rev_num ';
3940    ELSE
3941       x_where_clause := x_where_clause||' AND '||' a.config_inst_rev_num = :config_inst_rev_num ';
3942    END IF;
3943 ELSIF ( p_instance_query_rec.config_inst_rev_num  IS NULL) THEN
3944    IF x_where_clause IS NULL THEN
3945      x_where_clause := ' a.config_inst_rev_num  IS NULL ';
3946    ELSE
3947      x_where_clause := x_where_clause||' AND '||' a.config_inst_rev_num  IS NULL ';
3948    END IF;
3949 END IF;
3950 
3951 IF (( p_instance_query_rec.config_inst_item_id  IS NOT NULL)  AND
3952           ( p_instance_query_rec.config_inst_item_id  <> FND_API.G_MISS_NUM)) THEN
3953     IF x_where_clause IS NULL THEN
3954       x_where_clause := ' a.config_inst_item_id = :config_inst_item_id ';
3955     ELSE
3956       x_where_clause := x_where_clause||' AND '||' a.config_inst_item_id = :config_inst_item_id ';
3957     END IF;
3958 ELSIF ( p_instance_query_rec.config_inst_item_id  IS NULL) THEN
3959   IF x_where_clause IS NULL THEN
3960      x_where_clause := ' a.config_inst_item_id IS NULL  ';
3961   ELSE
3962      x_where_clause := x_where_clause||' AND '||' a.config_inst_item_id IS NULL  ';
3963   END IF;
3964 END IF;
3965 
3966 IF (( p_instance_query_rec.instance_description  IS NOT NULL)  AND
3967           ( p_instance_query_rec.instance_description  <> FND_API.G_MISS_CHAR)) THEN
3968    IF x_where_clause IS NULL THEN
3969      x_where_clause := ' a.instance_description = :instance_description ';
3970    ELSE
3971      x_where_clause := x_where_clause||' AND '||' a.instance_description = :instance_description ';
3972    END IF;
3973 ELSIF ( p_instance_query_rec.instance_description  IS NULL) THEN
3974   IF x_where_clause IS NULL THEN
3975     x_where_clause :=  ' a.instance_description IS NULL ';
3976   ELSE
3977     x_where_clause := x_where_clause||' AND '||' a.instance_description IS NULL ';
3978   END IF;
3979 END IF;
3980 
3981 -- End of addition for att
3982 -- Addition of columns for FA Integration
3983 IF (( p_instance_query_rec.operational_status_code  IS NOT NULL)  AND
3984           ( p_instance_query_rec.operational_status_code  <> FND_API.G_MISS_CHAR)) THEN
3985    IF x_where_clause IS NULL THEN
3986      x_where_clause := ' a.operational_status_code = :operational_status_code ';
3987    ELSE
3988      x_where_clause := x_where_clause||' AND '||' a.operational_status_code = :operational_status_code ';
3989    END IF;
3990 ELSIF ( p_instance_query_rec.operational_status_code  IS NULL) THEN
3991   IF x_where_clause IS NULL THEN
3992     x_where_clause :=  ' a.operational_status_code IS NULL ';
3993   ELSE
3994     x_where_clause := x_where_clause||' AND '||' a.operational_status_code IS NULL ';
3995   END IF;
3996 END IF;
3997 -- End addition of columns for FA Integration
3998 
3999 IF (( p_instance_query_rec.actual_return_date  IS NOT NULL)  AND
4000              ( p_instance_query_rec.actual_return_date  <> FND_API.G_MISS_DATE)) THEN
4001     IF x_where_clause IS NULL THEN
4002       x_where_clause := ' a.actual_return_date = :actual_return_date ';
4003     ELSE
4004       x_where_clause := x_where_clause||' AND '||' a.actual_return_date = :actual_return_date ';
4005     END IF;
4006 ELSIF ( p_instance_query_rec.actual_return_date  IS  NULL) THEN
4007  IF x_where_clause IS NULL THEN
4008    x_where_clause :=  ' a.actual_return_date IS NULL ';
4009  ELSE
4010    x_where_clause := x_where_clause||' AND '||' a.actual_return_date IS NULL ';
4011  END IF;
4012 END IF;
4013 
4014 --sk added
4015 IF (( p_instance_query_rec.contract_number  IS NOT NULL)  AND
4016     ( p_instance_query_rec.contract_number  <> FND_API.G_MISS_CHAR)) THEN
4017 BEGIN
4018             l_flag := nvl(FND_PROFILE.VALUE('CSI_CONTRACTS_ENABLED'), 'N');
4019         l_inp_rec.contract_number := p_instance_query_rec.contract_number;
4020         l_inp_rec.party_id        := NULL;
4021         l_inp_rec.site_id         := NULL;
4022         l_inp_rec.cust_acct_id    := NULL;
4023         l_inp_rec.system_id       := NULL;
4024         l_inp_rec.item_id         := NULL;
4025         l_inp_rec.product_id      := NULL;
4026         l_inp_rec.request_date    := sysdate;
4027         l_inp_rec.validate_flag   := l_flag;
4028       OKS_ENTITLEMENTS_PUB.GET_CONTRACTS( p_api_version   => 1.0,
4029                                           p_init_msg_list => 'T',
4030                                           p_inp_rec       => l_inp_rec,
4031                                           x_return_status => x_return_status,
4032                                           x_msg_count     => x_msg_count,
4033                                           x_msg_data      => x_msg_data,
4034                                           x_ent_contracts => l_ent_contracts);
4035 
4036        IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4037                   l_msg_index := 1;
4038           l_msg_count := x_msg_count;
4039          WHILE l_msg_count > 0 LOOP
4040                   x_msg_data := FND_MSG_PUB.GET
4041                           (  l_msg_index,
4042                                      FND_API.G_FALSE    );
4043           csi_gen_utility_pvt.put_line( ' Error from OKS_ENTITLEMENTS_PUB.GET_CONTRACTS.. ');
4044           csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
4045               l_msg_index := l_msg_index + 1;
4046               l_msg_count := l_msg_count - 1;
4047              END LOOP;
4048          RAISE FND_API.G_EXC_ERROR;
4049        END IF;
4050       l_row_count := 1;
4051       l_rec_count := l_ent_contracts.FIRST;
4052       WHILE l_rec_count IS NOT NULL
4053       LOOP
4054       BEGIN
4055        l_covered_level_code := l_ent_contracts(l_rec_count).coverage_level_code ;
4056        l_coverage_level_id  := l_ent_contracts(l_rec_count).coverage_level_id ;
4057             IF (l_covered_level_code = 'COVER_PROD') THEN
4058                 IF  l_covered_cp_id IS NULL THEN
4059 
4060                    l_covered_cp_id := to_char(l_coverage_level_id) ;
4061                 ELSE
4062 
4063                    l_covered_cp_id := l_covered_cp_id ||','||to_char(l_coverage_level_id) ;
4064                 END IF;
4065             END IF;
4066            l_rec_count := l_ent_contracts.NEXT(l_rec_count);
4067        EXCEPTION
4068           WHEN OTHERS THEN
4069              NULL;
4070        END;
4071        END LOOP;
4072     IF (l_covered_cp_id IS NOT NULL) THEN
4073        IF x_where_clause IS NULL THEN
4074         x_where_clause := ' a.instance_id IN ( ' ||l_covered_cp_id ||' )' ;
4075        ELSE
4076         x_where_clause := x_where_clause||' AND '||' a.instance_id IN ( ' ||l_covered_cp_id ||' )' ;
4077        END IF;
4078     ELSE
4079 
4080        IF x_where_clause IS NULL THEN
4081         x_where_clause := ' a.instance_id IS NULL' ;
4082        ELSE
4083         x_where_clause := x_where_clause||' AND '||' a.instance_id IS NULL' ;
4084        END IF;
4085     END IF;
4086 
4087 EXCEPTION
4088    WHEN OTHERS THEN
4089       NULL;
4090 END;
4091 END IF;
4092 --end sk addition
4093 
4094 IF (( p_party_query_rec.instance_party_id  IS NOT NULL)  AND
4095                          ( p_party_query_rec.instance_party_id  <> FND_API.G_MISS_NUM)) THEN
4096        IF x_where_clause IS NULL THEN
4097           x_where_clause := ' b.instance_party_id = :instance_party_id ';
4098        ELSE
4099           x_where_clause := x_where_clause||' AND '||' b.instance_party_id = :instance_party_id ';
4100        END IF;
4101 
4102 ELSIF ( p_party_query_rec.instance_party_id  IS  NULL) THEN
4103     IF x_where_clause IS NULL THEN
4104      x_where_clause := ' b.instance_party_id IS NULL ';
4105     ELSE
4106      x_where_clause := x_where_clause||' AND '||' b.instance_party_id IS NULL ';
4107     END IF;
4108 END IF;
4109 
4110 IF ((p_party_query_rec.instance_id IS NOT NULL)       AND
4111                          (p_party_query_rec.instance_id <> FND_API.G_MISS_NUM))   THEN
4112     IF x_where_clause IS NULL THEN
4113         x_where_clause := ' b.instance_id = :instance_id ';
4114     ELSE
4115         x_where_clause := x_where_clause||' AND '||' b.instance_id = :instance_id ';
4116     END IF;
4117 ELSIF (p_party_query_rec.instance_id IS  NULL) THEN
4118     IF x_where_clause IS NULL THEN
4119       x_where_clause :=  ' b.instance_id IS NULL ';
4120     ELSE
4121       x_where_clause := x_where_clause||' AND '||' b.instance_id IS NULL ';
4122     END IF;
4123 END IF;
4124 
4125 IF ((p_party_query_rec.party_id  IS NOT NULL)         AND
4126                          (p_party_query_rec.party_id  <> FND_API.G_MISS_NUM)) THEN
4127      IF x_where_clause IS NULL THEN
4128         x_where_clause := ' b.party_id = :party_id ';
4129      ELSE
4130         x_where_clause := x_where_clause||' AND '||' b.party_id = :party_id ';
4131      END IF;
4132 
4133 ELSIF (p_party_query_rec.party_id  IS  NULL) THEN
4134      IF x_where_clause IS NULL THEN
4135          x_where_clause := ' b.party_id IS NULL ';
4136      ELSE
4137          x_where_clause := x_where_clause||' AND '||' b.party_id IS NULL ';
4138      END IF;
4139 END IF ;
4140 
4141 IF  ((p_party_query_rec.relationship_type_code IS NOT NULL) AND
4142                    (p_party_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR)) THEN
4143    IF x_where_clause IS NULL THEN
4144      x_where_clause := '  b.relationship_type_code = :relationship_type_code ';
4145    ELSE
4146      x_where_clause := x_where_clause||' AND '||'  b.relationship_type_code = :relationship_type_code ';
4147    END IF;
4148 ELSIF (p_party_query_rec.relationship_type_code IS  NULL) THEN
4149    IF x_where_clause IS NULL THEN
4150     x_where_clause := '  b.relationship_type_code IS NULL ';
4151    ELSE
4152     x_where_clause := x_where_clause||' AND '||'  b.relationship_type_code IS NULL ';
4153    END IF;
4154 END IF;
4155 -----
4156 
4157 IF (( p_pty_acct_query_rec.ip_account_id  IS NOT NULL)  AND
4158                          ( p_pty_acct_query_rec.ip_account_id  <> FND_API.G_MISS_NUM)) THEN
4159   IF x_where_clause IS NULL THEN
4160     x_where_clause := x_where_clause||' c.ip_account_id = :ip_account_id ';
4161   ELSE
4162     x_where_clause := x_where_clause||' AND '||' c.ip_account_id = :ip_account_id ';
4163   END IF;
4164 ELSIF ( p_pty_acct_query_rec.ip_account_id  IS  NULL) THEN
4165   IF x_where_clause IS NULL THEN
4166    x_where_clause := x_where_clause||' c.ip_account_id IS NULL ';
4167   ELSE
4168    x_where_clause := x_where_clause||' AND '||' c.ip_account_id IS NULL ';
4169   END IF;
4170 END IF;
4171 
4172 IF ((p_pty_acct_query_rec.instance_party_id IS NOT NULL)       AND
4173                          (p_pty_acct_query_rec.instance_party_id <> FND_API.G_MISS_NUM))   THEN
4174   IF x_where_clause IS NULL THEN
4175    x_where_clause := x_where_clause||' c.instance_party_id = :instance_party_id ';
4176   ELSE
4177    x_where_clause := x_where_clause||' AND '||' c.instance_party_id = :instance_party_id ';
4178   END IF;
4179 ELSIF (p_pty_acct_query_rec.instance_party_id IS  NULL) THEN
4180   IF x_where_clause IS NULL THEN
4181    x_where_clause := x_where_clause||' c.instance_party_id IS NULL ';
4182   ELSE
4183    x_where_clause := x_where_clause||' AND '||' c.instance_party_id IS NULL ';
4184   END IF;
4185 END IF;
4186 
4187 IF ((p_pty_acct_query_rec.party_account_id  IS NOT NULL)         AND
4188                          (p_pty_acct_query_rec.party_account_id  <> FND_API.G_MISS_NUM)) THEN
4189   IF x_where_clause IS NULL THEN
4190     x_where_clause := x_where_clause||' c.party_account_id = :party_account_id ';
4191   ELSE
4192     x_where_clause := x_where_clause||' AND '||' c.party_account_id = :party_account_id ';
4193   END IF;
4194 ELSIF (p_pty_acct_query_rec.party_account_id  IS  NULL) THEN
4195   IF x_where_clause IS NULL THEN
4196     x_where_clause := x_where_clause||' c.party_account_id IS NULL ';
4197   ELSE
4198     x_where_clause := x_where_clause||' AND '||' c.party_account_id IS NULL ';
4199   END IF;
4200 END IF ;
4201 
4202 IF  ((p_pty_acct_query_rec.relationship_type_code IS NOT NULL) AND
4203                    (p_pty_acct_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR)) THEN
4204     IF x_where_clause IS NULL THEN
4205       x_where_clause := x_where_clause||'  c.relationship_type_code = :relationship_type_code ';
4206     ELSE
4207       x_where_clause := x_where_clause||' AND '||'  c.relationship_type_code = :relationship_type_code ';
4208     END IF;
4209 ELSIF (p_pty_acct_query_rec.relationship_type_code IS  NULL) THEN
4210     IF x_where_clause IS NULL  THEN
4211      x_where_clause := x_where_clause||'  c.relationship_type_code IS NULL ';
4212     ELSE
4213      x_where_clause := x_where_clause||' AND '||'  c.relationship_type_code IS NULL ';
4214     END IF;
4215 END IF;
4216 
4217 IF  p_active_instance_only = 'T' THEN
4218      x_where_clause := x_where_clause||' AND '||'( a.active_end_date IS NULL '||' OR '||' a.active_end_date > SYSDATE)';
4219 END IF;
4220 
4221 IF l_join_condition IS null THEN
4222  x_select_stmt  := ' SELECT '||l_select_columns ||' from '||l_from_clause ||' where '||l_join_condition||x_where_clause;
4223 ELSE
4224  x_select_stmt  := ' SELECT '||l_select_columns ||' from '||l_from_clause ||' where '||l_join_condition||' AND '||x_where_clause;
4225 END IF;
4226 
4227 IF ((l_instance_rec_exists OR
4228      l_party_rec_exists OR
4229      l_party_acct_rec_exists) AND
4230     (p_transaction_id is not null)) then
4231     x_select_stmt := x_select_stmt || ' INTERSECT '||l_union_stmt;
4232 
4233 ELSIF   NOT(l_instance_rec_exists) AND
4234         NOT(l_party_rec_exists)    AND
4235         NOT(l_party_acct_rec_exists) AND
4236        (p_transaction_id is not null)  then
4237     x_select_stmt := l_union_stmt;
4238 END IF;
4239 END Gen_Inst_Where_Clause;
4240 
4241 /*----------------------------------------------------------*/
4242 /* Procedure name:  Get_Inst_Column_Values                  */
4243 /* Description   :  This procedure gets the column values   */
4244 /*                  for the Dynamic SQL                     */
4245 /*----------------------------------------------------------*/
4246 
4247 PROCEDURE Get_Instance_Col_Values
4248 (
4249     p_get_instance_cur_id      IN       NUMBER,
4250     x_instance_rec             IN OUT   NOCOPY csi_datastructures_pub.instance_header_rec
4251 ) IS
4252 
4253 BEGIN
4254  dbms_sql.column_value(p_get_instance_cur_id, 1, x_instance_rec.instance_id);
4255  dbms_sql.column_value(p_get_instance_cur_id, 2, x_instance_rec.instance_number);
4256  dbms_sql.column_value(p_get_instance_cur_id, 3, x_instance_rec.external_reference);
4257  dbms_sql.column_value(p_get_instance_cur_id, 4, x_instance_rec.inventory_item_id);
4258  dbms_sql.column_value(p_get_instance_cur_id, 5, x_instance_rec.inventory_revision);
4259  dbms_sql.column_value(p_get_instance_cur_id, 6, x_instance_rec.inv_master_organization_id);
4260  dbms_sql.column_value(p_get_instance_cur_id, 7, x_instance_rec.serial_number);
4261  dbms_sql.column_value(p_get_instance_cur_id, 8, x_instance_rec.mfg_serial_number_flag);
4262  dbms_sql.column_value(p_get_instance_cur_id, 9, x_instance_rec.lot_number);
4263  dbms_sql.column_value(p_get_instance_cur_id, 10, x_instance_rec.quantity);
4264  dbms_sql.column_value(p_get_instance_cur_id, 11, x_instance_rec.unit_of_measure);
4265  dbms_sql.column_value(p_get_instance_cur_id, 12, x_instance_rec.accounting_class_code);
4266  dbms_sql.column_value(p_get_instance_cur_id, 13, x_instance_rec.instance_condition_id);
4267  dbms_sql.column_value(p_get_instance_cur_id, 14, x_instance_rec.instance_status_id);
4268  dbms_sql.column_value(p_get_instance_cur_id, 15, x_instance_rec.customer_view_flag);
4269  dbms_sql.column_value(p_get_instance_cur_id, 16, x_instance_rec.merchant_view_flag);
4270  dbms_sql.column_value(p_get_instance_cur_id, 17, x_instance_rec.sellable_flag);
4271  dbms_sql.column_value(p_get_instance_cur_id, 18, x_instance_rec.system_id);
4272  dbms_sql.column_value(p_get_instance_cur_id, 19, x_instance_rec.instance_type_code);
4273  dbms_sql.column_value(p_get_instance_cur_id, 20, x_instance_rec.active_start_date);
4274  dbms_sql.column_value(p_get_instance_cur_id, 21, x_instance_rec.active_end_date);
4275  dbms_sql.column_value(p_get_instance_cur_id, 22, x_instance_rec.location_type_code);
4276  dbms_sql.column_value(p_get_instance_cur_id, 23, x_instance_rec.location_id);
4277  dbms_sql.column_value(p_get_instance_cur_id, 24, x_instance_rec.inv_organization_id);
4278  dbms_sql.column_value(p_get_instance_cur_id, 25, x_instance_rec.inv_subinventory_name);
4279  dbms_sql.column_value(p_get_instance_cur_id, 26, x_instance_rec.inv_locator_id);
4280  dbms_sql.column_value(p_get_instance_cur_id, 27, x_instance_rec.pa_project_id);
4281  dbms_sql.column_value(p_get_instance_cur_id, 28, x_instance_rec.pa_project_task_id);
4282  dbms_sql.column_value(p_get_instance_cur_id, 29, x_instance_rec.in_transit_order_line_id);
4283  dbms_sql.column_value(p_get_instance_cur_id, 30, x_instance_rec.wip_job_id);
4284  dbms_sql.column_value(p_get_instance_cur_id, 31, x_instance_rec.po_order_line_id);
4285  dbms_sql.column_value(p_get_instance_cur_id, 32, x_instance_rec.last_oe_order_line_id);
4286  dbms_sql.column_value(p_get_instance_cur_id, 33, x_instance_rec.last_oe_rma_line_id);
4287  dbms_sql.column_value(p_get_instance_cur_id, 34, x_instance_rec.last_po_po_line_id);
4288  dbms_sql.column_value(p_get_instance_cur_id, 35, x_instance_rec.last_oe_po_number);
4289  dbms_sql.column_value(p_get_instance_cur_id, 36, x_instance_rec.last_wip_job_id);
4290  dbms_sql.column_value(p_get_instance_cur_id, 37, x_instance_rec.last_pa_project_id);
4291  dbms_sql.column_value(p_get_instance_cur_id, 38, x_instance_rec.last_pa_task_id);
4292  dbms_sql.column_value(p_get_instance_cur_id, 39, x_instance_rec.last_oe_agreement_id);
4293  dbms_sql.column_value(p_get_instance_cur_id, 40, x_instance_rec.install_date);
4294  dbms_sql.column_value(p_get_instance_cur_id, 41, x_instance_rec.manually_created_flag);
4295  dbms_sql.column_value(p_get_instance_cur_id, 42, x_instance_rec.return_by_date);
4296  dbms_sql.column_value(p_get_instance_cur_id, 43, x_instance_rec.actual_return_date);
4297  dbms_sql.column_value(p_get_instance_cur_id, 44, x_instance_rec.creation_complete_flag);
4298  dbms_sql.column_value(p_get_instance_cur_id, 45, x_instance_rec.completeness_flag);
4299  dbms_sql.column_value(p_get_instance_cur_id, 46, x_instance_rec.context);
4300  dbms_sql.column_value(p_get_instance_cur_id, 47, x_instance_rec.attribute1);
4301  dbms_sql.column_value(p_get_instance_cur_id, 48, x_instance_rec.attribute2);
4302  dbms_sql.column_value(p_get_instance_cur_id, 49, x_instance_rec.attribute3);
4303  dbms_sql.column_value(p_get_instance_cur_id, 50, x_instance_rec.attribute4);
4304  dbms_sql.column_value(p_get_instance_cur_id, 51, x_instance_rec.attribute5);
4305  dbms_sql.column_value(p_get_instance_cur_id, 52, x_instance_rec.attribute6);
4306  dbms_sql.column_value(p_get_instance_cur_id, 53, x_instance_rec.attribute7);
4307  dbms_sql.column_value(p_get_instance_cur_id, 54, x_instance_rec.attribute8);
4308  dbms_sql.column_value(p_get_instance_cur_id, 55, x_instance_rec.attribute9);
4309  dbms_sql.column_value(p_get_instance_cur_id, 56, x_instance_rec.attribute10);
4310  dbms_sql.column_value(p_get_instance_cur_id, 57, x_instance_rec.attribute11);
4311  dbms_sql.column_value(p_get_instance_cur_id, 58, x_instance_rec.attribute12);
4312  dbms_sql.column_value(p_get_instance_cur_id, 59, x_instance_rec.attribute13);
4313  dbms_sql.column_value(p_get_instance_cur_id, 60, x_instance_rec.attribute14);
4314  dbms_sql.column_value(p_get_instance_cur_id, 61, x_instance_rec.attribute15);
4315  dbms_sql.column_value(p_get_instance_cur_id, 62, x_instance_rec.object_version_number);
4316  dbms_sql.column_value(p_get_instance_cur_id, 63, x_instance_rec.last_txn_line_detail_id);
4317  dbms_sql.column_value(p_get_instance_cur_id, 64, x_instance_rec.install_location_type_code);
4318  dbms_sql.column_value(p_get_instance_cur_id, 65, x_instance_rec.install_location_id);
4319  dbms_sql.column_value(p_get_instance_cur_id, 66, x_instance_rec.instance_usage_code);
4320  dbms_sql.column_value(p_get_instance_cur_id, 67, x_instance_rec.vld_organization_id);
4321  dbms_sql.column_value(p_get_instance_cur_id, 68, x_instance_rec.config_inst_hdr_id);
4322  dbms_sql.column_value(p_get_instance_cur_id, 69, x_instance_rec.config_inst_rev_num);
4323  dbms_sql.column_value(p_get_instance_cur_id, 70, x_instance_rec.config_inst_item_id);
4324  dbms_sql.column_value(p_get_instance_cur_id, 71, x_instance_rec.config_valid_status);
4325  dbms_sql.column_value(p_get_instance_cur_id, 72, x_instance_rec.instance_description);
4326  --start of code for eam integration columns--
4327  dbms_sql.column_value(p_get_instance_cur_id, 73, x_instance_rec.network_asset_flag);
4328  dbms_sql.column_value(p_get_instance_cur_id, 74, x_instance_rec.maintainable_flag);
4329  dbms_sql.column_value(p_get_instance_cur_id, 75, x_instance_rec.pn_location_id);
4330  dbms_sql.column_value(p_get_instance_cur_id, 76, x_instance_rec.asset_criticality_code);
4331  dbms_sql.column_value(p_get_instance_cur_id, 77, x_instance_rec.category_id);
4332  dbms_sql.column_value(p_get_instance_cur_id, 78, x_instance_rec.equipment_gen_object_id);
4333  dbms_sql.column_value(p_get_instance_cur_id, 79, x_instance_rec.instantiation_flag);
4334  dbms_sql.column_value(p_get_instance_cur_id, 80, x_instance_rec.linear_location_id);
4335  dbms_sql.column_value(p_get_instance_cur_id, 81, x_instance_rec.operational_log_flag);
4336  dbms_sql.column_value(p_get_instance_cur_id, 82, x_instance_rec.checkin_status);
4337  dbms_sql.column_value(p_get_instance_cur_id, 83, x_instance_rec.supplier_warranty_exp_date);
4338  dbms_sql.column_value(p_get_instance_cur_id, 84, x_instance_rec.attribute16);
4339  dbms_sql.column_value(p_get_instance_cur_id, 85, x_instance_rec.attribute17);
4340  dbms_sql.column_value(p_get_instance_cur_id, 86, x_instance_rec.attribute18);
4341  dbms_sql.column_value(p_get_instance_cur_id, 87, x_instance_rec.attribute19);
4342  dbms_sql.column_value(p_get_instance_cur_id, 88, x_instance_rec.attribute20);
4343  dbms_sql.column_value(p_get_instance_cur_id, 89, x_instance_rec.attribute21);
4344  dbms_sql.column_value(p_get_instance_cur_id, 90, x_instance_rec.attribute22);
4345  dbms_sql.column_value(p_get_instance_cur_id, 91, x_instance_rec.attribute23);
4346  dbms_sql.column_value(p_get_instance_cur_id, 92, x_instance_rec.attribute24);
4347  dbms_sql.column_value(p_get_instance_cur_id, 93, x_instance_rec.attribute25);
4348  dbms_sql.column_value(p_get_instance_cur_id, 94, x_instance_rec.attribute26);
4349  dbms_sql.column_value(p_get_instance_cur_id, 95, x_instance_rec.attribute27);
4350  dbms_sql.column_value(p_get_instance_cur_id, 96, x_instance_rec.attribute28);
4351  dbms_sql.column_value(p_get_instance_cur_id, 97, x_instance_rec.attribute29);
4352  dbms_sql.column_value(p_get_instance_cur_id, 98, x_instance_rec.attribute30);
4353  --end of code for eam integration columns--
4354 
4355 -- Addition of columns for FA Integration
4356  dbms_sql.column_value(p_get_instance_cur_id, 99, x_instance_rec.purchase_unit_price);
4357  dbms_sql.column_value(p_get_instance_cur_id, 100, x_instance_rec.purchase_currency_code);
4358  dbms_sql.column_value(p_get_instance_cur_id, 101, x_instance_rec.payables_unit_price);
4359  dbms_sql.column_value(p_get_instance_cur_id, 102, x_instance_rec.payables_currency_code);
4360  dbms_sql.column_value(p_get_instance_cur_id, 103, x_instance_rec.sales_unit_price);
4361  dbms_sql.column_value(p_get_instance_cur_id, 104, x_instance_rec.sales_currency_code);
4362  dbms_sql.column_value(p_get_instance_cur_id, 105, x_instance_rec.operational_status_code);
4363 -- End addition of columns for FA Integration
4364 
4365 END Get_Instance_Col_Values;
4366 
4367 
4368 /*-------------------------------------------------------*/
4369 /* Procedure name:  Define_Inst_Columns                  */
4370 /* Description   :  This procedure defines the columns   */
4371 /*                  for the Dynamic SQL                  */
4372 /*-------------------------------------------------------*/
4373 
4374 PROCEDURE Define_Instance_Columns
4375 (
4376   p_get_instance_cur_id      IN   NUMBER
4377   ) IS
4378 
4379   l_instance_rec         csi_datastructures_pub.instance_header_rec;
4380 
4381 BEGIN
4382  dbms_sql.define_column(p_get_instance_cur_id, 1, l_instance_rec.instance_id);
4383  dbms_sql.define_column(p_get_instance_cur_id, 2, l_instance_rec.instance_number,30);
4384  dbms_sql.define_column(p_get_instance_cur_id, 3, l_instance_rec.external_reference,30);
4385  dbms_sql.define_column(p_get_instance_cur_id, 4, l_instance_rec.inventory_item_id);
4386  dbms_sql.define_column(p_get_instance_cur_id, 5, l_instance_rec.inventory_revision,3);
4387  dbms_sql.define_column(p_get_instance_cur_id, 6, l_instance_rec.inv_master_organization_id);
4388  dbms_sql.define_column(p_get_instance_cur_id, 7, l_instance_rec.serial_number,30);
4389  dbms_sql.define_column(p_get_instance_cur_id, 8, l_instance_rec.mfg_serial_number_flag,1);
4390  dbms_sql.define_column(p_get_instance_cur_id, 9, l_instance_rec.lot_number,80);
4391  dbms_sql.define_column(p_get_instance_cur_id, 10, l_instance_rec.quantity);
4392  dbms_sql.define_column(p_get_instance_cur_id, 11, l_instance_rec.unit_of_measure,3);
4393  dbms_sql.define_column(p_get_instance_cur_id, 12, l_instance_rec.accounting_class_code,10);
4394  dbms_sql.define_column(p_get_instance_cur_id, 13, l_instance_rec.instance_condition_id);
4395  dbms_sql.define_column(p_get_instance_cur_id, 14, l_instance_rec.instance_status_id);
4396  dbms_sql.define_column(p_get_instance_cur_id, 15, l_instance_rec.customer_view_flag,1);
4397  dbms_sql.define_column(p_get_instance_cur_id, 16, l_instance_rec.merchant_view_flag,1);
4398  dbms_sql.define_column(p_get_instance_cur_id, 17, l_instance_rec.sellable_flag,1);
4399  dbms_sql.define_column(p_get_instance_cur_id, 18, l_instance_rec.system_id);
4400  dbms_sql.define_column(p_get_instance_cur_id, 19, l_instance_rec.instance_type_code,30);
4401  dbms_sql.define_column(p_get_instance_cur_id, 20, l_instance_rec.active_start_date);
4402  dbms_sql.define_column(p_get_instance_cur_id, 21, l_instance_rec.active_end_date);
4403  dbms_sql.define_column(p_get_instance_cur_id, 22, l_instance_rec.location_type_code,30);
4404  dbms_sql.define_column(p_get_instance_cur_id, 23, l_instance_rec.location_id);
4405  dbms_sql.define_column(p_get_instance_cur_id, 24, l_instance_rec.inv_organization_id);
4406  dbms_sql.define_column(p_get_instance_cur_id, 25, l_instance_rec.inv_subinventory_name,10);
4407  dbms_sql.define_column(p_get_instance_cur_id, 26, l_instance_rec.inv_locator_id);
4408  dbms_sql.define_column(p_get_instance_cur_id, 27, l_instance_rec.pa_project_id);
4409  dbms_sql.define_column(p_get_instance_cur_id, 28, l_instance_rec.pa_project_task_id);
4410  dbms_sql.define_column(p_get_instance_cur_id, 29, l_instance_rec.in_transit_order_line_id);
4411  dbms_sql.define_column(p_get_instance_cur_id, 30, l_instance_rec.wip_job_id);
4412  dbms_sql.define_column(p_get_instance_cur_id, 31, l_instance_rec.po_order_line_id);
4413  dbms_sql.define_column(p_get_instance_cur_id, 32, l_instance_rec.last_oe_order_line_id);
4414  dbms_sql.define_column(p_get_instance_cur_id, 33, l_instance_rec.last_oe_rma_line_id);
4415  dbms_sql.define_column(p_get_instance_cur_id, 34, l_instance_rec.last_po_po_line_id);
4416  dbms_sql.define_column(p_get_instance_cur_id, 35, l_instance_rec.last_oe_po_number,30);
4417  dbms_sql.define_column(p_get_instance_cur_id, 36, l_instance_rec.last_wip_job_id);
4418  dbms_sql.define_column(p_get_instance_cur_id, 37, l_instance_rec.last_pa_project_id);
4419  dbms_sql.define_column(p_get_instance_cur_id, 38, l_instance_rec.last_pa_task_id);
4420  dbms_sql.define_column(p_get_instance_cur_id, 39, l_instance_rec.last_oe_agreement_id);
4421  dbms_sql.define_column(p_get_instance_cur_id, 40, l_instance_rec.install_date);
4422  dbms_sql.define_column(p_get_instance_cur_id, 41, l_instance_rec.manually_created_flag,1);
4423  dbms_sql.define_column(p_get_instance_cur_id, 42, l_instance_rec.return_by_date);
4424  dbms_sql.define_column(p_get_instance_cur_id, 43, l_instance_rec.actual_return_date);
4425  dbms_sql.define_column(p_get_instance_cur_id, 44, l_instance_rec.creation_complete_flag,1);
4426  dbms_sql.define_column(p_get_instance_cur_id, 45, l_instance_rec.completeness_flag,1);
4427  dbms_sql.define_column(p_get_instance_cur_id, 46, l_instance_rec.context,30);
4428  dbms_sql.define_column(p_get_instance_cur_id, 47, l_instance_rec.attribute1,150);
4429  dbms_sql.define_column(p_get_instance_cur_id, 48, l_instance_rec.attribute2,150);
4430  dbms_sql.define_column(p_get_instance_cur_id, 49, l_instance_rec.attribute3,150);
4431  dbms_sql.define_column(p_get_instance_cur_id, 50, l_instance_rec.attribute4,150);
4432  dbms_sql.define_column(p_get_instance_cur_id, 51, l_instance_rec.attribute5,150);
4433  dbms_sql.define_column(p_get_instance_cur_id, 52, l_instance_rec.attribute6,150);
4434  dbms_sql.define_column(p_get_instance_cur_id, 53, l_instance_rec.attribute7,150);
4435  dbms_sql.define_column(p_get_instance_cur_id, 54, l_instance_rec.attribute8,150);
4436  dbms_sql.define_column(p_get_instance_cur_id, 55, l_instance_rec.attribute9,150);
4437  dbms_sql.define_column(p_get_instance_cur_id, 56, l_instance_rec.attribute10,150);
4438  dbms_sql.define_column(p_get_instance_cur_id, 57, l_instance_rec.attribute11,150);
4439  dbms_sql.define_column(p_get_instance_cur_id, 58, l_instance_rec.attribute12,150);
4440  dbms_sql.define_column(p_get_instance_cur_id, 59, l_instance_rec.attribute13,150);
4441  dbms_sql.define_column(p_get_instance_cur_id, 60, l_instance_rec.attribute14,150);
4442  dbms_sql.define_column(p_get_instance_cur_id, 61, l_instance_rec.attribute15,150);
4443  dbms_sql.define_column(p_get_instance_cur_id, 62, l_instance_rec.object_version_number);
4444  dbms_sql.define_column(p_get_instance_cur_id, 63, l_instance_rec.last_txn_line_detail_id);
4445  dbms_sql.define_column(p_get_instance_cur_id, 64, l_instance_rec.install_location_type_code,30);
4446  dbms_sql.define_column(p_get_instance_cur_id, 65, l_instance_rec.install_location_id);
4447  dbms_sql.define_column(p_get_instance_cur_id, 66, l_instance_rec.instance_usage_code,30);
4448  dbms_sql.define_column(p_get_instance_cur_id, 67, l_instance_rec.vld_organization_id);
4449  dbms_sql.define_column(p_get_instance_cur_id, 68, l_instance_rec.config_inst_hdr_id);
4450  dbms_sql.define_column(p_get_instance_cur_id, 69, l_instance_rec.config_inst_rev_num);
4451  dbms_sql.define_column(p_get_instance_cur_id, 70, l_instance_rec.config_inst_item_id);
4452  dbms_sql.define_column(p_get_instance_cur_id, 71, l_instance_rec.config_valid_status,30);
4453  dbms_sql.define_column(p_get_instance_cur_id, 72, l_instance_rec.instance_description,240);
4454  --start of code for eam integration columns--
4455  dbms_sql.define_column(p_get_instance_cur_id, 73, l_instance_rec.network_asset_flag,1);
4456  dbms_sql.define_column(p_get_instance_cur_id, 74, l_instance_rec.maintainable_flag,1);
4457  dbms_sql.define_column(p_get_instance_cur_id, 75, l_instance_rec.pn_location_id);
4458  dbms_sql.define_column(p_get_instance_cur_id, 76, l_instance_rec.asset_criticality_code,30);
4459  dbms_sql.define_column(p_get_instance_cur_id, 77, l_instance_rec.category_id);
4460  dbms_sql.define_column(p_get_instance_cur_id, 78, l_instance_rec.equipment_gen_object_id);
4461  dbms_sql.define_column(p_get_instance_cur_id, 79, l_instance_rec.instantiation_flag,1);
4462  dbms_sql.define_column(p_get_instance_cur_id, 80, l_instance_rec.linear_location_id);
4463  dbms_sql.define_column(p_get_instance_cur_id, 81, l_instance_rec.operational_log_flag,1);
4464  dbms_sql.define_column(p_get_instance_cur_id, 82, l_instance_rec.checkin_status);
4465  dbms_sql.define_column(p_get_instance_cur_id, 83, l_instance_rec.supplier_warranty_exp_date);
4466  dbms_sql.define_column(p_get_instance_cur_id, 84, l_instance_rec.attribute16,240);
4467  dbms_sql.define_column(p_get_instance_cur_id, 85, l_instance_rec.attribute17,240);
4468  dbms_sql.define_column(p_get_instance_cur_id, 86, l_instance_rec.attribute18,240);
4469  dbms_sql.define_column(p_get_instance_cur_id, 87, l_instance_rec.attribute19,240);
4470  dbms_sql.define_column(p_get_instance_cur_id, 88, l_instance_rec.attribute20,240);
4471  dbms_sql.define_column(p_get_instance_cur_id, 89, l_instance_rec.attribute21,240);
4472  dbms_sql.define_column(p_get_instance_cur_id, 90, l_instance_rec.attribute22,240);
4473  dbms_sql.define_column(p_get_instance_cur_id, 91, l_instance_rec.attribute23,240);
4474  dbms_sql.define_column(p_get_instance_cur_id, 92, l_instance_rec.attribute24,240);
4475  dbms_sql.define_column(p_get_instance_cur_id, 93, l_instance_rec.attribute25,240);
4476  dbms_sql.define_column(p_get_instance_cur_id, 94, l_instance_rec.attribute26,240);
4477  dbms_sql.define_column(p_get_instance_cur_id, 95, l_instance_rec.attribute27,240);
4478  dbms_sql.define_column(p_get_instance_cur_id, 96, l_instance_rec.attribute28,240);
4479  dbms_sql.define_column(p_get_instance_cur_id, 97, l_instance_rec.attribute29,240);
4480  dbms_sql.define_column(p_get_instance_cur_id, 98, l_instance_rec.attribute30,240);
4481  --end of code for eam integration columns--
4482 -- Addition of columns for FA Integration
4483 dbms_sql.define_column(p_get_instance_cur_id, 99, l_instance_rec.purchase_unit_price);
4484 dbms_sql.define_column(p_get_instance_cur_id, 100, l_instance_rec.purchase_currency_code,15);
4485 dbms_sql.define_column(p_get_instance_cur_id, 101, l_instance_rec.payables_unit_price);
4486 dbms_sql.define_column(p_get_instance_cur_id, 102, l_instance_rec.payables_currency_code,15);
4487 dbms_sql.define_column(p_get_instance_cur_id, 103, l_instance_rec.sales_unit_price);
4488 dbms_sql.define_column(p_get_instance_cur_id, 104, l_instance_rec.sales_currency_code,15);
4489 dbms_sql.define_column(p_get_instance_cur_id, 105, l_instance_rec.operational_status_code,30);
4490 -- End addition of columns for FA Integration
4491 
4492 END Define_Instance_Columns;
4493 
4494 /*---------------------------------------------------------*/
4495 /* Procedure name:  Bind_Inst_variable                     */
4496 /* Description :    Procedure used to generate the where   */
4497 /*                  clause for Item Instances              */
4498 /*---------------------------------------------------------*/
4499 
4500 PROCEDURE Bind_Instance_variable
4501 (
4502     p_instance_rec              IN   csi_datastructures_pub.instance_header_rec,
4503     p_cur_get_instance_rel      IN   NUMBER
4504 ) IS
4505 
4506 BEGIN
4507 
4508  IF( (p_instance_rec.instance_id IS NOT NULL)
4509                   AND (p_instance_rec.instance_id <> FND_API.G_MISS_NUM))  THEN
4510     DBMS_SQL.BIND_VARIABLE(p_cur_get_instance_rel, ':INSTANCE_ID', p_instance_rec.instance_id);
4511  END IF;
4512 
4513 END Bind_Instance_variable;
4514 
4515 
4516 /*--------------------------------------------------*/
4517 /* procedure name: create_item_instance             */
4518 /* description   : procedure used to                */
4519 /*                 create item instances            */
4520 /*                                                  */
4521 /*--------------------------------------------------*/
4522 
4523 PROCEDURE create_item_instance
4524  (
4525      p_api_version           IN     NUMBER
4526     ,p_commit                IN     VARCHAR2
4527     ,p_init_msg_list         IN     VARCHAR2
4528     ,p_validation_level      IN     NUMBER
4529     ,p_instance_rec          IN OUT NOCOPY csi_datastructures_pub.instance_rec
4530     ,p_txn_rec               IN OUT NOCOPY csi_datastructures_pub.transaction_rec
4531     ,p_party_tbl             IN OUT NOCOPY csi_datastructures_pub.party_tbl
4532     ,p_asset_tbl             IN OUT NOCOPY csi_datastructures_pub.instance_asset_tbl
4533     ,x_return_status         OUT    NOCOPY VARCHAR2
4534     ,x_msg_count             OUT    NOCOPY NUMBER
4535     ,x_msg_data              OUT    NOCOPY VARCHAR2
4536     ,p_item_attribute_tbl    IN OUT NOCOPY csi_item_instance_pvt.item_attribute_tbl
4537     ,p_location_tbl          IN OUT NOCOPY csi_item_instance_pvt.location_tbl
4538     ,p_generic_id_tbl        IN OUT NOCOPY csi_item_instance_pvt.generic_id_tbl
4539     ,p_lookup_tbl            IN OUT NOCOPY csi_item_instance_pvt.lookup_tbl
4540     ,p_ins_count_rec         IN OUT NOCOPY csi_item_instance_pvt.ins_count_rec
4541     ,p_called_from_grp       IN     VARCHAR2
4542     ,p_internal_party_id     IN     NUMBER
4543  )
4544     IS
4545 
4546     l_api_name               CONSTANT VARCHAR2(30)   := 'CREATE_ITEM_INSTANCE_PVT';
4547     l_api_version            CONSTANT NUMBER         := 1.0;
4548     l_debug_level            NUMBER;
4549     l_instance_id            NUMBER;
4550     l_party_owner_rec        csi_datastructures_pub.party_rec;
4551     l_csi_item_instance_h_id NUMBER;
4552     l_old_oks_cp_rec         OKS_IBINT_PUB.CP_REC_TYPE;
4553     l_new_oks_cp_rec         OKS_IBINT_PUB.CP_REC_TYPE;
4554     l_ctr_grp_id_template    NUMBER;
4555     l_ctr_grp_id_instance    NUMBER;
4556     l_ctr_id_template        csi_counter_template_pub.ctr_template_autoinst_tbl;
4557     l_ctr_id_instance        csi_counter_template_pub.counter_autoinstantiate_tbl;
4558     l_msg_count              NUMBER;
4559     l_msg_data               VARCHAR2(100);
4560     l_msg_index              NUMBER;
4561     l_line_count             NUMBER;
4562     l_version_label_rec      csi_datastructures_pub.version_label_rec;
4563     l_process_flag           BOOLEAN := TRUE;
4564     l_return_value           BOOLEAN;
4565     l_owner                  NUMBER;
4566     l_owner_count            NUMBER := 0;
4567     l_int_party_id           NUMBER;
4568     l_serial_control         NUMBER;
4569     l_lot_control            NUMBER;
4570     l_shelf_life_code        NUMBER;
4571     l_instance_status        VARCHAR2(50);
4572     l_contracts_status       VARCHAR2(3);
4573     l_account_id             NUMBER;
4574     l_version_label          VARCHAR2(30);
4575     l_sys_date               DATE := SYSDATE;
4576     l_last_vld_organization_id NUMBER;
4577     l_temp                   VARCHAR2(1);
4578     l_base_item_id           NUMBER;
4579     l_ctr_association_id     NUMBER;
4580     l_object_version_number  NUMBER;
4581 --    l_desc_flex              CS_COUNTERS_EXT_PVT.DFF_Rec_Type;
4582 -- Counter ref r12 changes
4583     l_desc_flex              csi_ctr_datastructures_pub.dff_rec_type;
4584     l_ctr_item_associations_rec csi_ctr_datastructures_pub.ctr_item_associations_rec;
4585     l_trackable_flag         VARCHAR2(1);
4586     l_uom_code               VARCHAR2(3);
4587     l_rev_control            NUMBER;
4588     l_exists_flag            VARCHAR2(1);
4589     l_valid_flag             VARCHAR2(1);
4590     l_call_counters          VARCHAR2(1) := FND_PROFILE.VALUE('CSI_COUNTERS_ENABLED');
4591     l_config_key             csi_utility_grp.config_instance_key;
4592     l_config_valid_status    VARCHAR2(10);
4593     l_return_message         VARCHAR2(100);
4594     l_component_ins_type     VARCHAR2(1):=NULL ;
4595     l_config_hdr_id          NUMBER;
4596     l_config_rev_nbr         NUMBER;
4597     l_terminated_flag        VARCHAR2(1);
4598     l_check_instance_rec     csi_datastructures_pub.instance_rec;
4599     l_prior_txn_id           NUMBER;
4600     l_ins_flag               VARCHAR2(1);
4601     l_eam_item               BOOLEAN := FALSE;
4602     l_eam_item_type          NUMBER;
4603     l_reason_failed          VARCHAR2(30);
4604     l_token                  VARCHAR2(30);
4605     l_dummy_location         VARCHAR2(1);
4606     l_counter_group_id       NUMBER :=0;
4607     l_gen_object_id          NUMBER;
4608     l_equipment_type         NUMBER;
4609     --
4610     CURSOR CTR_GROUP(p_src_object_id IN NUMBER) IS
4611 /*    R12 Changes ...
4612     SELECT counter_group_id
4613     FROM CS_CTR_ASSOCIATIONS
4614     WHERE source_object_id = p_src_object_id;
4615     */
4616     SELECT  group_id
4617       FROM  csi_ctr_item_associations
4618      WHERE  inventory_item_id = p_src_object_id;
4619 BEGIN
4620     -- Standard Start of API savepoint
4621        SAVEPOINT  create_item_instance_pvt;
4622 
4623     -- Standard call to check for call compatibility.
4624        IF NOT FND_API.Compatible_API_Call (l_api_version,
4625                                            p_api_version,
4626                                            l_api_name   ,
4627                                            G_PKG_NAME    )
4628        THEN
4629              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4630        END IF;
4631 
4632     -- Initialize message list if p_init_msg_list is set to TRUE.
4633        IF FND_API.to_Boolean( p_init_msg_list ) THEN
4634              FND_MSG_PUB.initialize;
4635        END IF;
4636 
4637     -- Initialize API return status to success
4638        x_return_status := FND_API.G_RET_STS_SUCCESS;
4639 
4640         -- Check the profile option debug_level for debug message reporting
4641            l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
4642        --  If debug_level = 1 then dump the procedure name
4643            IF (l_debug_level > 0) THEN
4644               csi_gen_utility_pvt.put_line ('create_item_instance_pvt');
4645            END IF;
4646 
4647        -- If the debug level = 2 then dump all the parameters values.
4648            IF (l_debug_level > 1) THEN
4649                  csi_gen_utility_pvt.put_line ( 'create_item_instance_pvt' ||
4650                                                    p_api_version      ||'-'||
4651                                                    p_commit           ||'-'||
4652                                                    p_init_msg_list          );
4653                -- Dump the records in the log file
4654                  csi_gen_utility_pvt.dump_instance_rec(p_instance_rec);
4655                  csi_gen_utility_pvt.dump_party_tbl(p_party_tbl);
4656                  csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
4657            END IF;
4658 
4659         -- Start API body
4660          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Num
4661              (    p_instance_rec.INVENTORY_ITEM_ID  ,
4662                 ' p_instance_rec.INVENTORY_ITEM_ID ',
4663                   l_api_name
4664            );
4665 /* Code commented by sk for bug 2198575
4666 
4667          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Num
4668              (    p_instance_rec.INV_MASTER_ORGANIZATION_ID  ,
4669                 ' p_instance_rec.INV_MASTER_ORGANIZATION_ID ',
4670                   l_api_name
4671            );
4672 */
4673          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Num
4674              (    p_instance_rec.QUANTITY  ,
4675                 ' p_instance_rec.QUANTITY ',
4676                   l_api_name
4677            );
4678 
4679          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Char
4680              (    p_instance_rec.UNIT_OF_MEASURE  ,
4681                 ' p_instance_rec.UNIT_OF_MEASURE ',
4682                   l_api_name
4683            );
4684       --
4685       -- Initialize the Instance count
4686       --
4687       If p_ins_count_rec.inv_count is NULL OR
4688          p_ins_count_rec.inv_count = FND_API.G_MISS_NUM THEN
4689          p_ins_count_rec.inv_count := 0;
4690       End if;
4691       --
4692       If p_ins_count_rec.generic_count is NULL OR
4693          p_ins_count_rec.generic_count = FND_API.G_MISS_NUM THEN
4694          p_ins_count_rec.generic_count := 0;
4695       End if;
4696       --
4697       If p_ins_count_rec.location_count is NULL OR
4698          p_ins_count_rec.location_count = FND_API.G_MISS_NUM THEN
4699          p_ins_count_rec.location_count := 0;
4700       End if;
4701       --
4702       If p_ins_count_rec.lookup_count is NULL OR
4703          p_ins_count_rec.lookup_count = FND_API.G_MISS_NUM THEN
4704          p_ins_count_rec.lookup_count := 0;
4705       End if;
4706       --
4707 
4708       --Validations for the Create Item Instance
4709       --If vld_organization_id is passed and inv_master_organization_id is
4710       --not passed then derive master_organization_id from mtl_parameters.
4711       -- Start of modifications by sk on 02/19/02 for bug 2198575
4712       IF   ((p_instance_rec.vld_organization_id IS NOT NULL)  AND
4713             (p_instance_rec.vld_organization_id <> FND_API.G_MISS_NUM)) AND
4714            ((p_instance_rec.inv_master_organization_id IS NULL)  OR
4715             (p_instance_rec.inv_master_organization_id = FND_API.G_MISS_NUM))
4716       THEN
4717          BEGIN
4718             SELECT  master_organization_id
4719             INTO    p_instance_rec.inv_master_organization_id
4720             FROM    mtl_parameters
4721             WHERE   organization_id = p_instance_rec.vld_organization_id;
4722          EXCEPTION
4723            WHEN OTHERS THEN
4724              NULL;
4725          END;
4726       --If vld_organization_id is not passed and inv_master_organization_id is
4727       --passed then assign inv_master_organization_id to vld_organization_id.
4728       ELSIF ((p_instance_rec.vld_organization_id IS NULL)  OR
4729              (p_instance_rec.vld_organization_id = FND_API.G_MISS_NUM)) AND
4730             ((p_instance_rec.inv_master_organization_id IS NOT NULL)  AND
4731              (p_instance_rec.inv_master_organization_id <> FND_API.G_MISS_NUM))
4732       THEN
4733           IF NOT (csi_Item_Instance_Vld_Pvt.Is_Valid_Master_Org
4734                             (p_instance_rec.inv_master_organization_id)) THEN
4735              FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_MAST_ORG');
4736              FND_MSG_PUB.Add;
4737              RAISE FND_API.G_EXC_ERROR;
4738           END IF;
4739           p_instance_rec.vld_organization_id := p_instance_rec.inv_master_organization_id;
4740       --If both vld_organization_id and inv_master_organization_id are
4741       --passed then check the validity of passed inv_master_organization_id.
4742       ELSIF ((p_instance_rec.vld_organization_id IS NOT NULL)  AND
4743              (p_instance_rec.vld_organization_id <> FND_API.G_MISS_NUM)) AND
4744             ((p_instance_rec.inv_master_organization_id IS NOT NULL)  AND
4745              (p_instance_rec.inv_master_organization_id <> FND_API.G_MISS_NUM))
4746       THEN
4747             BEGIN
4748                SELECT  'x'
4749                INTO    l_temp
4750                FROM    mtl_parameters
4751                WHERE   organization_id = p_instance_rec.vld_organization_id
4752                AND     master_organization_id = p_instance_rec.inv_master_organization_id;
4753             EXCEPTION
4754               WHEN NO_DATA_FOUND THEN
4755                 FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_VLD_MAST_COMB');
4756                 FND_MSG_PUB.Add;
4757                 RAISE FND_API.G_EXC_ERROR;
4758             END;
4759       ELSE
4760                 FND_MESSAGE.SET_NAME('CSI','CSI_NO_VLD_ORG');
4761                 FND_MSG_PUB.Add;
4762                 RAISE FND_API.G_EXC_ERROR;
4763       END IF;
4764       -- End of modifications by sk on 02/19/02 for bug 2198575
4765 
4766 -- Validating the Instance Id
4767         IF  ((p_instance_rec.INSTANCE_ID IS  NULL) OR
4768              (p_instance_rec.INSTANCE_ID = FND_API.G_MISS_NUM)) THEN
4769            -- If the instance_id passed is null then generate from sequence
4770            -- and check if the value exists . If exists then generate
4771            -- again from the sequence till we get a value that does not exist
4772            WHILE l_process_flag LOOP
4773                 p_instance_rec.INSTANCE_ID := CSI_Item_Instance_vld_pvt.get_instance_id;
4774                 IF NOT(CSI_Item_Instance_vld_pvt.InstanceExists(p_instance_rec.INSTANCE_ID,
4775                                                             FALSE                    )) THEN
4776                     l_process_flag := FALSE;
4777                 END IF;
4778            END LOOP;
4779         ELSE
4780             -- Validate the instance_id if exist then raise CSI_API_INVALID_PRIMARY_KEY error
4781             IF CSI_Item_Instance_vld_pvt.InstanceExists(p_instance_rec.INSTANCE_ID,
4782                                                         TRUE                       ) THEN
4783                 RAISE FND_API.G_EXC_ERROR;
4784             END IF;
4785         END IF;
4786 
4787        -- IF l_eam_item
4788        -- THEN
4789          IF (p_instance_rec.location_id IS NULL OR
4790              p_instance_rec.location_id =fnd_api.g_miss_num)
4791          THEN
4792            IF p_instance_rec.location_type_code IN ('WIP', 'HR_LOCATIONS','PROJECT','IN_TRANSIT','PO','INTERNAL_SITE')
4793            THEN
4794             BEGIN
4795               SELECT location_id
4796                 INTO p_instance_rec.location_id
4797                 FROM hr_all_organization_units
4798                WHERE organization_id = p_instance_rec.vld_organization_id;
4799             EXCEPTION
4800               WHEN NO_DATA_FOUND THEN
4801                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
4802                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4803                fnd_msg_pub.ADD;
4804 	           RAISE fnd_api.g_exc_error;
4805             END;
4806             IF p_instance_rec.location_id IS NULL
4807             THEN
4808                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
4809                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4810                fnd_msg_pub.ADD;
4811 	           RAISE fnd_api.g_exc_error;
4812             END IF;
4813            END IF;
4814          END IF;
4815 
4816          IF (p_instance_rec.install_location_id IS NULL OR
4817              p_instance_rec.install_location_id =fnd_api.g_miss_num)
4818          THEN
4819            IF p_instance_rec.install_location_type_code IN ('WIP','HR_LOCATIONS','PROJECT','IN_TRANSIT','PO','INTERNAL_SITE')
4820            THEN
4821             BEGIN
4822               SELECT location_id
4823                 INTO p_instance_rec.install_location_id
4824                 FROM hr_all_organization_units
4825                WHERE organization_id = p_instance_rec.vld_organization_id;
4826             EXCEPTION
4827               WHEN NO_DATA_FOUND THEN
4828                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
4829                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4830                fnd_msg_pub.ADD;
4831 	           RAISE fnd_api.g_exc_error;
4832             END;
4833             IF p_instance_rec.install_location_id IS NULL
4834             THEN
4835                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
4836                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4837                fnd_msg_pub.ADD;
4838 	           RAISE fnd_api.g_exc_error;
4839             END IF;
4840            END IF;
4841          END IF;
4842        -- END IF;
4843       -- End addition of code for eam integration
4844 
4845         IF csi_item_Instance_Vld_pvt.Is_InstanceNum_Valid(p_instance_rec.instance_id,
4846                                                           p_instance_rec.instance_number,
4847                                                           'CREATE')
4848         THEN
4849            IF p_instance_rec.instance_number IS NULL OR
4850               p_instance_rec.instance_number = fnd_api.g_miss_char
4851            THEN
4852               p_instance_rec.instance_number := substr(to_char(p_instance_rec.instance_id),1,30);
4853            END IF;
4854         ELSE
4855             RAISE fnd_api.g_exc_error;
4856         END IF;
4857         --
4858         -- Get the Required Inventory Attributes
4859         l_exists_flag := 'N';
4860         l_valid_flag := 'Y';
4861         IF p_item_attribute_tbl.count > 0 then
4862            FOR item_count in p_item_attribute_tbl.FIRST .. p_item_attribute_tbl.LAST
4863            LOOP
4864               IF p_item_attribute_tbl(item_count).inventory_item_id = p_instance_rec.inventory_item_id AND
4865                  p_item_attribute_tbl(item_count).organization_id = p_instance_rec.vld_organization_id AND
4866                  p_item_attribute_tbl(item_count).master_organization_id = p_instance_rec.inv_master_organization_id
4867               THEN
4868                  l_trackable_flag := p_item_attribute_tbl(item_count).trackable_flag;
4869                  l_rev_control := p_item_attribute_tbl(item_count).revision_control_code;
4870                  l_serial_control := p_item_attribute_tbl(item_count).serial_number_control_code;
4871                  l_lot_control := p_item_attribute_tbl(item_count).lot_control_code;
4872                  l_shelf_life_code := p_item_attribute_tbl(item_count).shelf_life_code;
4873                  l_uom_code := p_item_attribute_tbl(item_count).uom_code;
4874                  l_eam_item_type := p_item_attribute_tbl(item_count).eam_item_type;
4875                  l_equipment_type := p_item_attribute_tbl(item_count).equipment_type;
4876                  l_valid_flag := p_item_attribute_tbl(item_count).valid_flag;
4877                  l_exists_flag := 'Y';
4878                  EXIT;
4879               END IF;
4880            END LOOP;
4881            IF l_valid_flag <> 'Y'
4882            THEN
4883               FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
4884               FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',p_instance_rec.inventory_item_id);
4885               FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4886               FND_MSG_PUB.Add;
4887               RAISE fnd_api.g_exc_error;
4888            END IF;
4889         END IF;
4890         --
4891         -- if item does not exist in cache then get from database.
4892         if l_exists_flag = 'N' then
4893            p_ins_count_rec.inv_count := p_ins_count_rec.inv_count + 1;
4894            p_item_attribute_tbl(p_ins_count_rec.inv_count).inventory_item_id := p_instance_rec.inventory_item_id;
4895            p_item_attribute_tbl(p_ins_count_rec.inv_count).organization_id := p_instance_rec.vld_organization_id;
4896            p_item_attribute_tbl(p_ins_count_rec.inv_count).master_organization_id := p_instance_rec.inv_master_organization_id;
4897            Begin
4898               select comms_nl_trackable_flag,primary_uom_code
4899               into l_trackable_flag,l_uom_code
4900               from MTL_SYSTEM_ITEMS_B
4901               where inventory_item_id = p_instance_rec.inventory_item_id
4902               and   organization_id = p_instance_rec.inv_master_organization_id
4903 	      and   enabled_flag = 'Y'
4904 	      and   nvl (start_date_active, sysdate) <= sysdate
4905 	      and   nvl (end_date_active, sysdate+1) > sysdate;
4906               --
4907 	      p_item_attribute_tbl(p_ins_count_rec.inv_count).trackable_flag := l_trackable_flag;
4908 	      p_item_attribute_tbl(p_ins_count_rec.inv_count).uom_code := l_uom_code;
4909               p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'Y';
4910 	   Exception
4911 	      when others then
4912                  p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'N';
4913 		 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
4914                  FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',p_instance_rec.inventory_item_id);
4915                  FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4916                  FND_MSG_PUB.Add;
4917 		 RAISE fnd_api.g_exc_error;
4918            End;
4919            --
4920        BEGIN
4921          SELECT revision_qty_control_code
4922                ,serial_number_control_code
4923                ,lot_control_code
4924                ,shelf_life_code
4925                ,eam_item_type
4926                ,equipment_type
4927            INTO l_rev_control
4928                ,l_serial_control
4929                ,l_lot_control
4930                ,l_shelf_life_code
4931                ,l_eam_item_type
4932                ,l_equipment_type
4933            FROM mtl_system_items_b
4934           WHERE inventory_item_id = p_instance_rec.inventory_item_id
4935 	        AND organization_id = p_instance_rec.vld_organization_id
4936             AND enabled_flag = 'Y'
4937             AND nvl (start_date_active, sysdate) <= sysdate
4938             AND nvl (end_date_active, sysdate+1) > sysdate;
4939               --
4940             p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'Y';
4941             p_item_attribute_tbl(p_ins_count_rec.inv_count).revision_control_code := l_rev_control;
4942             p_item_attribute_tbl(p_ins_count_rec.inv_count).serial_number_control_code := l_serial_control;
4943             p_item_attribute_tbl(p_ins_count_rec.inv_count).lot_control_code := l_lot_control;
4944             p_item_attribute_tbl(p_ins_count_rec.inv_count).shelf_life_code := l_shelf_life_code;
4945             p_item_attribute_tbl(p_ins_count_rec.inv_count).eam_item_type := l_eam_item_type;
4946             p_item_attribute_tbl(p_ins_count_rec.inv_count).equipment_type := l_equipment_type;
4947        EXCEPTION
4948         WHEN OTHERS THEN
4949              p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'N';
4950              FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
4951              FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',p_instance_rec.inventory_item_id);
4952              FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4953              FND_MSG_PUB.Add;
4954              RAISE fnd_api.g_exc_error;
4955        END;
4956         End if;
4957    -- Added the following code to fix bug 5506231
4958        IF p_instance_rec.instance_usage_code IS NULL OR
4959           p_instance_rec.instance_usage_code = fnd_api.g_miss_char
4960        THEN
4961           csi_gen_utility_pvt.put_line ('Instance_usage_code is passed as null or g_miss value');
4962           csi_gen_utility_pvt.put_line ('Hence deriving instance usage code');
4963          IF l_serial_control = 6 AND
4964             p_instance_rec.serial_number IS NOT NULL AND
4965             p_instance_rec.location_type_code = 'INVENTORY'
4966          THEN
4967             p_instance_rec.instance_usage_code := 'RETURNED';
4968          ELSE
4969            IF p_instance_rec.location_type_code = 'INVENTORY'
4970            THEN
4971               p_instance_rec.instance_usage_code := 'IN_INVENTORY';
4972            ELSIF p_instance_rec.location_type_code = 'WIP'
4973            THEN
4974                  p_instance_rec.instance_usage_code := 'IN_WIP';
4975            ELSE
4976                  p_instance_rec.instance_usage_code := 'OUT_OF_ENTERPRISE';
4977            END IF;
4978          END IF;
4979           csi_gen_utility_pvt.put_line ('Value of derived instance_usage_code is : '||p_instance_rec.instance_usage_code);
4980        END IF;
4981    -- End addition of code to fix bug 5506231
4982 
4983         -- Checking for Trackable Flag
4984         IF NOT csi_item_instance_vld_pvt.Is_Trackable
4985                            (p_instance_rec.inventory_item_id,
4986                             p_instance_rec.inv_master_organization_id,
4987                             l_trackable_flag
4988                            )  THEN
4989            RAISE fnd_api.g_exc_error;
4990         END IF;
4991         --
4992       -- Added following code for eam integration
4993       -- Check if the item is a rebuildable or an asset group
4994 
4995         IF csi_item_instance_vld_pvt.Check_for_eam_item
4996            (p_inventory_item_id  => p_instance_rec.inventory_item_id,
4997             p_organization_id    => p_instance_rec.vld_organization_id,
4998             p_eam_item_type      => l_eam_item_type)
4999         THEN
5000           l_eam_item := TRUE;
5001         END IF;
5002         -- Added for eam
5003          IF ((p_instance_rec.network_asset_flag IS NOT NULL AND
5004               p_instance_rec.network_asset_flag <> fnd_api.g_miss_char) OR
5005              (p_instance_rec.maintainable_flag IS NOT NULL AND
5006               p_instance_rec.maintainable_flag <> fnd_api.g_miss_char)  OR
5007              (p_instance_rec.pn_location_id IS NOT NULL AND
5008               p_instance_rec.pn_location_id <> fnd_api.g_miss_num) OR
5009              (p_instance_rec.asset_criticality_code IS NOT NULL AND
5010               p_instance_rec.asset_criticality_code <> fnd_api.g_miss_char) OR
5011              (p_instance_rec.category_id IS NOT NULL AND
5012               p_instance_rec.category_id <> fnd_api.g_miss_num) OR
5013              (p_instance_rec.equipment_gen_object_id IS NOT NULL AND
5014               p_instance_rec.equipment_gen_object_id <> fnd_api.g_miss_num) OR
5015              (p_instance_rec.linear_location_id IS NOT NULL AND
5016               p_instance_rec.linear_location_id <> fnd_api.g_miss_num) OR
5017              (p_instance_rec.operational_log_flag IS NOT NULL AND
5018               p_instance_rec.operational_log_flag <> fnd_api.g_miss_char) OR
5019              (p_instance_rec.checkin_status IS NOT NULL AND
5020               p_instance_rec.checkin_status <> fnd_api.g_miss_num) OR
5021              (p_instance_rec.supplier_warranty_exp_date IS NOT NULL AND
5022               p_instance_rec.supplier_warranty_exp_date <> fnd_api.g_miss_date))
5023          THEN
5024           IF l_eam_item
5025           THEN
5026             IF p_instance_rec.maintainable_flag IS NULL OR
5027                p_instance_rec.maintainable_flag = fnd_api.g_miss_char
5028             THEN
5029                p_instance_rec.maintainable_flag :='Y';
5030             END IF;
5031 
5032            IF NOT eam_assetnumber_pub.validate_fields
5033             (p_current_organization_id    => p_instance_rec.vld_organization_id
5034             ,p_inventory_item_id          => p_instance_rec.inventory_item_id
5035             ,p_serial_number              => p_instance_rec.serial_number
5036             ,p_network_asset_flag         => p_instance_rec.network_asset_flag
5037             ,p_maintainable_flag          => p_instance_rec.maintainable_flag
5038             ,p_pn_location_id             => p_instance_rec.pn_location_id
5039             ,p_asset_criticality_code     => p_instance_rec.asset_criticality_code
5040             ,p_category_id                => p_instance_rec.category_id
5041             ,p_equipment_object_id        => p_instance_rec.equipment_gen_object_id
5042             ,p_eam_linear_id              => p_instance_rec.linear_location_id
5043             ,p_operational_log_flag       => p_instance_rec.operational_log_flag
5044             ,p_checkin_status             => p_instance_rec.checkin_status
5045             ,p_supplier_warranty_exp_date => p_instance_rec.supplier_warranty_exp_date
5046             ,p_owning_department_id       => NULL
5047             ,x_reason_failed              => l_reason_failed
5048             ,x_token                      => l_token
5049             )
5050            THEN
5051           --  FND_MESSAGE.SET_NAME('CSI', l_reason_failed); -- commented for bug 5351886
5052           --  FND_MSG_PUB.Add;                              -- commented for bug 5351886
5053             csi_gen_utility_pvt.put_line('Call to eam_assetnumber_pub.validate_fields failed with following reason');
5054             csi_gen_utility_pvt.put_line(l_reason_failed);
5055             RAISE FND_API.G_EXC_ERROR;
5056            END IF;
5057           ELSE
5058             FND_MESSAGE.SET_NAME('CSI', 'CSI_NON_EAM_ITEM');
5059             FND_MSG_PUB.Add;
5060             RAISE FND_API.G_EXC_ERROR;
5061           END IF;
5062          END IF;
5063           -- Adding the following code as there could be a case
5064           -- where the item is an eam item but none of the eam columns were
5065           -- populated then above code will not assign a value to
5066           -- maintainable_flag.
5067           IF l_eam_item
5068           THEN
5069            IF p_instance_rec.maintainable_flag IS NULL OR
5070               p_instance_rec.maintainable_flag = fnd_api.g_miss_char
5071            THEN
5072               p_instance_rec.maintainable_flag :='Y';
5073            END IF;
5074           END IF;
5075         -- End addition for eam
5076 
5077         -- Validation for the Revision
5078         csi_item_instance_vld_pvt.Validate_Revision
5079                   (
5080                          p_inv_item_id              => p_instance_rec.inventory_item_id ,
5081                          p_inv_org_id               => p_instance_rec.vld_organization_id,
5082                          p_creation_complete_flag   => p_instance_rec.creation_complete_flag,
5083                          p_revision                 => p_instance_rec.inventory_revision,
5084                          l_return_value             => l_return_value,
5085                          p_rev_control_code         => l_rev_control
5086                    );
5087 
5088          IF l_return_value = FALSE THEN
5089             RAISE fnd_api.g_exc_error;
5090          END IF;
5091          -- Validation for the Lot Number
5092          csi_Item_Instance_Vld_pvt.Validate_Lot_Number
5093                    (
5094                          p_inv_org_id               => p_instance_rec.vld_organization_id,
5095                          p_inv_item_id              => p_instance_rec.inventory_item_id ,
5096                          p_lot_number               => p_instance_rec.lot_number,
5097                          p_mfg_serial_number_flag   => p_instance_rec.mfg_serial_number_flag,
5098                          p_txn_rec                  => p_txn_rec,
5099                          p_creation_complete_flag   => p_instance_rec.creation_complete_flag,
5100                          l_return_value             => l_return_value,
5101                          p_lot_control_code         => l_lot_control
5102                     );
5103          IF l_return_value = FALSE THEN
5104             RAISE fnd_api.g_exc_error;
5105          END IF;
5106 
5107          -- Validates the lot uniqueness and creates lot numbers in MLNs for manually created Instances
5108          -- Bug# 4011408
5109          IF ((p_instance_rec.lot_number <> FND_API.G_MISS_CHAR) AND
5110              (p_instance_rec.lot_number IS NOT NULL))
5111          THEN
5112             csi_gen_utility_pvt.put_line('Calling Create_Lot routine...');
5113             csi_item_instance_vld_pvt.Create_Lot
5114                (
5115                  p_inv_org_id                 =>  p_instance_rec.vld_organization_id,
5116                  p_inv_item_id                =>  p_instance_rec.inventory_item_id,
5117                  p_lot_number                 =>  p_instance_rec.lot_number,
5118                  p_shelf_life_code            =>  l_shelf_life_code,
5119                  p_instance_id                =>  p_instance_rec.instance_id,
5120                  l_return_value               =>  l_return_value
5121                );
5122              IF l_return_value = FALSE THEN
5123                 RAISE fnd_api.g_exc_error;
5124              END IF;
5125          END IF;
5126          -- Creates Serial number in MSNs for manually created serialized CPs
5127          l_ins_flag := FND_API.G_FALSE;
5128          IF ((p_instance_rec.serial_number <> FND_API.G_MISS_CHAR) AND
5129              (p_instance_rec.serial_number IS NOT NULL)) /* AND
5130              (nvl(p_instance_rec.mfg_serial_number_flag,'N') <> 'Y') ) */
5131          THEN
5132            csi_gen_utility_pvt.put_line('Calling Create_Serial...');
5133            csi_item_instance_vld_pvt.Create_Serial
5134                    (
5135                          p_inv_org_id         =>  p_instance_rec.vld_organization_id,
5136                          p_inv_item_id        =>  p_instance_rec.inventory_item_id,
5137                          p_serial_number      =>  p_instance_rec.serial_number,
5138                          p_mfg_srl_num_flag   =>  p_instance_rec.mfg_serial_number_flag,
5139                          p_location_type_code =>  p_instance_rec.location_type_code,
5140                          p_ins_flag           =>  l_ins_flag,
5141                          p_lot_number         =>  p_instance_rec.lot_number,
5142                          p_gen_object_id      =>  l_gen_object_id,
5143                          l_return_value       =>  l_return_value
5144                    );
5145 
5146            IF l_return_value = FALSE THEN
5147               RAISE fnd_api.g_exc_error;
5148            ELSE
5149               IF nvl(p_instance_rec.mfg_serial_number_flag,'N') <> 'Y'
5150               THEN
5151                 p_instance_rec.mfg_serial_number_flag := 'Y';
5152               END IF;
5153            END IF;
5154 
5155            IF l_eam_item AND
5156               l_equipment_type = 1
5157            THEN
5158               p_instance_rec.equipment_gen_object_id := l_gen_object_id;
5159            END IF;
5160 
5161            IF l_eam_item
5162            THEN
5163             csi_gen_utility_pvt.put_line( 'Calling eam_common_utilities_pvt.update_logical_asset...');
5164             csi_gen_utility_pvt.put_line( 'Inventory_item_id is       :'||p_instance_rec.inventory_item_id);
5165             csi_gen_utility_pvt.put_line( 'Serial_number is           :'||p_instance_rec.serial_number);
5166             csi_gen_utility_pvt.put_line( 'Network_asset_flag is      :'||p_instance_rec.network_asset_flag);
5167             csi_gen_utility_pvt.put_line( 'Pn_location_id is          :'||p_instance_rec.pn_location_id);
5168 			csi_gen_utility_pvt.put_line( 'Equipment_gen_object_id is :'||p_instance_rec.equipment_gen_object_id);
5169              eam_common_utilities_pvt.update_logical_asset
5170                ( p_inventory_item_id       => p_instance_rec.inventory_item_id
5171                 ,p_serial_number           => p_instance_rec.serial_number
5172                 ,p_network_asset_flag      => p_instance_rec.network_asset_flag
5173                 ,p_pn_location_id          => p_instance_rec.pn_location_id
5174                 ,p_equipment_gen_object_id => p_instance_rec.equipment_gen_object_id
5175                 ,x_return_status           => x_return_status
5176                 );
5177 	         IF NOT (x_return_status = FND_API.G_RET_STS_SUCCESS)
5178 			 THEN
5179 			    csi_gen_utility_pvt.put_line( 'Error from eam_common_utilities_pvt.update_logical_asset...');
5180 	            RAISE fnd_api.g_exc_error;
5181 	         END IF;
5182            END IF;
5183 
5184         END IF;
5185         -- Transaction Sequencing check
5186         -- By-pass sequencing if the serial number got created by the above routine
5187         IF p_instance_rec.serial_number IS NOT NULL AND
5188            p_instance_rec.serial_number <> FND_API.G_MISS_CHAR AND
5189            l_ins_flag = FND_API.G_FALSE THEN
5190 	  --  l_check_instance_rec.instance_id := p_instance_rec.instance_id;
5191 	   l_check_instance_rec.inventory_item_id := p_instance_rec.inventory_item_id;
5192 	   l_check_instance_rec.serial_number := p_instance_rec.serial_number;
5193 	   l_check_instance_rec.lot_number := p_instance_rec.lot_number;
5194 	   l_check_instance_rec.last_txn_line_detail_id := p_instance_rec.last_txn_line_detail_id;
5195 	   csi_gen_utility_pvt.put_line('Calling Check_Prior_Txn');
5196 	   csi_Item_Instance_Vld_pvt.Check_Prior_Txn
5197 		     (
5198 		       p_instance_rec              => l_check_instance_rec
5199 		      ,p_txn_rec                   => p_txn_rec
5200 		      ,p_prior_txn_id              => l_prior_txn_id
5201                ,p_mode                      => 'CREATE'
5202 		      ,x_return_status             => x_return_status
5203 		     );
5204 	   IF NOT (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
5205 	      RAISE fnd_api.g_exc_error;
5206 	   END IF;
5207 	END IF;
5208         -- Validation for the Serial Number
5209           csi_gen_utility_pvt.put_line('Calling Validate_Serial_Number...');
5210           csi_Item_Instance_Vld_pvt.Validate_Serial_Number
5211                    (
5212                          p_inv_org_id               => p_instance_rec.vld_organization_id,
5213                          p_inv_item_id              => p_instance_rec.inventory_item_id ,
5214                          p_serial_number            => p_instance_rec.serial_number,
5215                          p_mfg_serial_number_flag   => p_instance_rec.mfg_serial_number_flag,
5216                          p_txn_rec                  => p_txn_rec,
5217                          p_creation_complete_flag   => p_instance_rec.creation_complete_flag,
5218                          p_location_type_code       => p_instance_rec.location_type_code,
5219                          p_instance_usage_code      => p_instance_rec.instance_usage_code,
5220                          l_return_value             => l_return_value,
5221                          p_srl_control_code         => l_serial_control
5222                     );
5223          IF l_return_value = FALSE THEN
5224             RAISE fnd_api.g_exc_error;
5225          END IF;
5226          -- Validation for the Unit of Measure
5227          -- validate/convert only if the uom is not a primary uom
5228          IF p_instance_rec.unit_of_measure <> l_uom_code THEN
5229             csi_item_instance_vld_pvt.Is_Valid_Uom
5230                     (
5231                          p_inv_org_id               => p_instance_rec.inv_master_organization_id,
5232                          p_inv_item_id              => p_instance_rec.inventory_item_id ,
5233                          p_uom_code                 => p_instance_rec.unit_of_measure,
5234                          p_quantity                 => p_instance_rec.quantity,
5235                          p_creation_complete_flag   => p_instance_rec.creation_complete_flag,
5236                          l_return_value             => l_return_value
5237                     );
5238             IF l_return_value = FALSE THEN
5239                RAISE FND_API.G_EXC_ERROR;
5240             END IF;
5241          END IF;
5242    -- Validation for Location Source and Location ID
5243    IF p_instance_rec.location_type_code = FND_API.G_MISS_CHAR OR
5244       p_instance_rec.location_type_code IS NULL THEN
5245       IF p_instance_rec.creation_complete_flag = 'Y' THEN
5246          FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_LOCATION');
5247          FND_MSG_PUB.ADD;
5248          RAISE fnd_api.g_exc_error;
5249       ELSE
5250          p_instance_rec.creation_complete_flag := 'N';
5251       END IF;
5252    ELSE
5253       IF p_instance_rec.location_id IS NULL OR
5254          p_instance_rec.location_id = FND_API.G_MISS_NUM THEN
5255          FND_MESSAGE.SET_NAME('CSI','CSI_API_LOCATION_NOT_VALID');
5256          FND_MSG_PUB.ADD;
5257          RAISE fnd_api.g_exc_error;
5258       ELSE
5259          -- Validate location_id
5260          l_exists_flag := 'N';
5261          l_valid_flag := 'Y';
5262          IF p_location_tbl.count > 0 THEN
5263             For loc_row in p_location_tbl.FIRST .. p_location_tbl.LAST
5264             Loop
5265                IF p_location_tbl(loc_row).location_type_code = p_instance_rec.location_type_code AND
5266                   p_location_tbl(loc_row).location_id = p_instance_rec.location_id THEN
5267                   l_exists_flag := 'Y';
5268                   l_valid_flag := p_location_tbl(loc_row).valid_flag;
5269                   EXIT;
5270                END IF;
5271             End Loop;
5272             --
5273             IF l_valid_flag <> 'Y' THEN
5274                FND_MESSAGE.SET_NAME('CSI','CSI_API_LOCATION_NOT_VALID');
5275                FND_MSG_PUB.ADD;
5276                RAISE fnd_api.g_exc_error;
5277             END IF;
5278          END IF; -- p_location_tbl count
5279          --
5280          IF l_exists_flag <> 'Y' THEN
5281             p_ins_count_rec.location_count := p_ins_count_rec.location_count + 1;
5282             p_location_tbl(p_ins_count_rec.location_count).location_type_code :=
5283                                            p_instance_rec.location_type_code;
5284             p_location_tbl(p_ins_count_rec.location_count).location_id := p_instance_rec.location_id;
5285             IF csi_item_instance_vld_pvt.Is_Valid_Location_ID
5286                                         (p_location_source_table => p_instance_rec.location_type_code
5287                                         ,p_location_id => p_instance_rec.location_id) THEN
5288                p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'Y';
5289             ELSE
5290                p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'N';
5291                RAISE fnd_api.g_exc_error;
5292             END IF;
5293          END IF;
5294          -- Validate Related Parameters
5295          IF NOT csi_item_instance_vld_pvt.Validate_Related_Loc_Params
5296                                    (
5297 				     p_location_source_table => p_instance_rec.location_type_code,
5298 				     p_location_id           => p_instance_rec.location_id,
5299 				     p_organization_id       => p_instance_rec.inv_organization_id,
5300 				     p_subinventory          => p_instance_rec.inv_subinventory_name,
5301 				     p_locator_id            => p_instance_rec.inv_locator_id,
5302 				     p_project_id            => p_instance_rec.pa_project_id,
5303 				     p_task_id               => p_instance_rec.pa_project_task_id,
5304 				     p_sales_ord_line_id     => p_instance_rec.in_transit_order_line_id,
5305 				     p_wip_job_id            => p_instance_rec.wip_job_id,
5306 				     p_po_line_id            => p_instance_rec.po_order_line_id,
5307 				     p_inst_usage_code       => p_instance_rec.instance_usage_code
5308 				   ) THEN
5309             RAISE fnd_api.g_exc_error;
5310          END IF;
5311       END IF; -- Location ID Valid
5312    END IF; -- Location Type code valid
5313    --
5314    -- Validation for the Quantity
5315    IF NOT csi_Item_Instance_Vld_pvt.Is_Quantity_Valid(
5316               p_instance_id         => p_instance_rec.instance_id,
5317               p_inv_organization_id => p_instance_rec.vld_organization_id,
5318               p_quantity            => p_instance_rec.quantity ,
5319               p_serial_control_code => l_serial_control,
5320               p_location_type_code  => p_instance_rec.location_type_code,
5321               p_flag                => 'CREATE',
5322               p_csi_txn_type_id     => p_txn_rec.transaction_type_id
5323             ) -- Added serial_control and location by sk on 09/14/01
5324    THEN
5325       RAISE fnd_api.g_exc_error;
5326    END IF;
5327    --validation for accounting classification_code
5328    IF (p_party_tbl.count < 1) THEN
5329       FND_MESSAGE.SET_NAME('CSI','CSI_API_NO_PARTY_RECORD');
5330       FND_MSG_PUB.Add;
5331       RAISE FND_API.G_EXC_ERROR;
5332    ELSE
5333       FOR l_count IN p_party_tbl.FIRST..p_party_tbl.LAST LOOP
5334          IF p_party_tbl.EXISTS(l_count) THEN
5335             IF p_party_tbl(l_count).relationship_type_code = 'OWNER' THEN
5336                l_owner_count := l_owner_count + 1;
5337                l_owner := P_PARTY_TBL(l_count).party_id;
5338             END IF;
5339          END IF;
5340       END LOOP;
5341       IF l_owner_count <> 1 THEN
5342          FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_OWNER_EXISTS');
5343          FND_MESSAGE.SET_TOKEN('OWNER',l_owner);
5344          FND_MSG_PUB.Add;
5345          RAISE fnd_api.g_exc_error;
5346       END IF;
5347       --
5348       IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
5349          csi_gen_utility_pvt.populate_install_param_rec;
5350       END IF;
5351       --
5352       l_int_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
5353       --
5354       IF l_int_party_id IS NULL THEN
5355          FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
5356          FND_MSG_PUB.ADD;
5357          RAISE FND_API.G_EXC_ERROR;
5358       END IF;
5359       --
5360       --   Start code addition for eam integration
5361       /* Commented code for bug 4906588
5362       IF l_eam_item
5363       THEN
5364          p_instance_rec.ACCOUNTING_CLASS_CODE := 'ASSET';
5365       ELSE
5366       */
5367          --   End code addition for eam integration
5368          IF l_owner = l_int_party_id THEN
5369             IF p_asset_tbl.COUNT > 0 THEN
5370                p_instance_rec.ACCOUNTING_CLASS_CODE := 'ASSET';
5371             ELSIF p_instance_rec.location_type_code = 'WIP' THEN
5372                p_instance_rec.ACCOUNTING_CLASS_CODE := 'WIP';
5373             ELSIF p_instance_rec.location_type_code = 'PROJECT' THEN
5374                p_instance_rec.ACCOUNTING_CLASS_CODE := 'PROJECT';
5375             ELSE
5376                p_instance_rec.ACCOUNTING_CLASS_CODE := 'INV';
5377             END IF;
5378          ELSE
5379             IF ((p_instance_rec.accounting_class_code  IS NULL) OR
5380                (p_instance_rec.accounting_class_code = FND_API.G_MISS_CHAR)) THEN
5381                p_instance_rec.accounting_class_code := 'CUST_PROD';
5382             ELSE
5383                IF ((p_instance_rec.accounting_class_code = 'WIP') OR
5384                     (p_instance_rec.accounting_class_code = 'PROJECT')) THEN
5385                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ACCOUNT_CLASS');
5386                   FND_MSG_PUB.Add;
5387                   RAISE FND_API.G_EXC_ERROR;
5388                END IF;
5389             END IF;
5390          END IF;
5391    --   END IF;
5392    END IF;
5393 
5394   --validation for owner uniqueness
5395    FOR l_count IN p_party_tbl.FIRST..p_party_tbl.LAST LOOP
5396       IF p_party_tbl.EXISTS(l_count) THEN
5397          IF p_party_tbl(l_count).relationship_type_code = 'OWNER' THEN
5398             l_party_owner_rec := p_party_tbl(l_count);
5399          END IF;
5400       END IF;
5401     END LOOP;
5402     IF NOT csi_item_instance_vld_pvt.Validate_Uniqueness
5403                    (p_instance_rec     => p_instance_rec,
5404                     p_party_rec        => l_party_owner_rec,
5405                     p_srl_control_code => l_serial_control,
5406                     p_csi_txn_type_id  => p_txn_rec.transaction_type_id)
5407     THEN
5408 
5409         RAISE FND_API.G_EXC_ERROR;
5410     END IF;
5411     -- validating the effective active start date
5412          IF ((p_instance_rec.active_start_date = FND_API.G_MISS_DATE) OR
5413              (p_instance_rec.active_start_date IS NULL)) THEN
5414                 p_instance_rec.active_start_date := SYSDATE;
5415          END IF;
5416 
5417          IF (p_instance_rec.active_end_date = FND_API.G_MISS_DATE) THEN
5418              p_instance_rec.active_end_date := NULL;
5419          END IF;
5420 
5421          IF NOT (csi_item_instance_vld_pvt.Is_StartDate_Valid
5422                     (p_instance_rec.active_start_date,
5423                      p_instance_rec.active_end_date
5424                     )) THEN
5425                 RAISE FND_API.G_EXC_ERROR;
5426          END IF;
5427 
5428 --Check whether the active start date is > sysdate.
5429          IF ((p_instance_rec.active_start_date IS NOT NULL) AND
5430              (p_instance_rec.active_start_date <> FND_API.G_MISS_DATE)) AND
5431              (p_instance_rec.active_start_date > SYSDATE)
5432          THEN
5433               FND_MESSAGE.SET_NAME('CSI','CSI_API_INSTANCE_START_DATE');
5434               FND_MSG_PUB.Add;
5435               RAISE FND_API.G_EXC_ERROR;
5436          END IF;
5437 
5438 -- validating the effective active start date
5439          IF NOT (csi_item_instance_vld_pvt.Is_EndDate_Valid
5440                     (p_instance_rec.active_start_date,
5441                      p_instance_rec.active_end_date
5442                     )) THEN
5443                 RAISE FND_API.G_EXC_ERROR;
5444          END IF;
5445 
5446 --validation for the instance condition id
5447          l_valid_flag := 'Y';
5448          l_exists_flag := 'N';
5449          IF p_instance_rec.instance_condition_id is not null AND
5450             p_instance_rec.instance_condition_id <> FND_API.G_MISS_NUM then
5451             IF p_generic_id_tbl.count > 0 then
5452                For gen_count in p_generic_id_tbl.FIRST .. p_generic_id_tbl.LAST
5453                LOOP
5454                   IF p_generic_id_tbl(gen_count).generic_id = p_instance_rec.instance_condition_id AND
5455                      p_generic_id_tbl(gen_count).id_type = 'INS_CONDITION' then
5456                      l_valid_flag := p_generic_id_tbl(gen_count).valid_flag;
5457                      l_exists_flag := 'Y';
5458                      exit;
5459                   END IF;
5460                END LOOP;
5461                --
5462                IF l_valid_flag <> 'Y' THEN
5463                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM_CONDITION');
5464                   FND_MESSAGE.SET_TOKEN('INSTANCE_CONDITION_ID',p_instance_rec.instance_condition_id);
5465                   FND_MSG_PUB.Add;
5466                   RAISE fnd_api.g_exc_error;
5467                END IF;
5468             END IF;
5469             --
5470 	    IF l_exists_flag = 'N' THEN
5471                p_ins_count_rec.generic_count := p_ins_count_rec.generic_count + 1;
5472                p_generic_id_tbl(p_ins_count_rec.generic_count).generic_id := p_instance_rec.instance_condition_id;
5473                p_generic_id_tbl(p_ins_count_rec.generic_count).id_type := 'INS_CONDITION';
5474 	       csi_item_instance_vld_pvt.Is_Valid_Condition
5475 			    (
5476 			    p_instance_condition_id  => p_instance_rec.instance_condition_id,
5477 			    p_creation_complete_flag => p_instance_rec.creation_complete_flag,
5478 			    l_return_value           => l_return_value
5479 			   );
5480 	       IF l_return_value = FALSE THEN
5481                   p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'N';
5482 		  RAISE fnd_api.g_exc_error;
5483                ELSE
5484                   p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'Y';
5485 	       END IF;
5486 	    END IF;
5487          END IF;
5488          --
5489 --validation for the instance status id
5490     l_valid_flag := 'Y';
5491     l_exists_flag := 'N';
5492     IF ((p_instance_rec.instance_status_id IS NULL) OR
5493         (p_instance_rec.instance_status_id = FND_API.G_MISS_NUM)) THEN
5494         l_instance_status := FND_PROFILE.VALUE('CSI_DEFAULT_INSTANCE_STATUS');
5495         BEGIN
5496             SELECT instance_status_id,terminated_flag
5497             INTO   p_instance_rec.instance_status_id
5498                   ,l_terminated_flag
5499             FROM   csi_instance_statuses
5500             WHERE  name = l_instance_status;
5501             --
5502             IF nvl(l_terminated_flag,'N') = 'Y' THEN
5503                FND_MESSAGE.SET_NAME('CSI','CSI_API_STATUS_NOT_ALLOWED');
5504                FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5505                FND_MSG_PUB.Add;
5506                RAISE FND_API.G_EXC_ERROR;
5507             END IF;
5508         EXCEPTION
5509             WHEN NO_DATA_FOUND THEN
5510                 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_STATUS_ID');
5511                 FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5512                 FND_MSG_PUB.Add;
5513                 RAISE FND_API.G_EXC_ERROR;
5514         END;
5515      ELSIF (p_instance_rec.instance_status_id = 1) THEN
5516            FND_MESSAGE.SET_NAME('CSI','CSI_API_STATUS_NOT_ALLOWED');
5517            FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5518            FND_MSG_PUB.Add;
5519            RAISE FND_API.G_EXC_ERROR;
5520     ELSE
5521        IF p_generic_id_tbl.count > 0 THEN
5522           For gen_count in p_generic_id_tbl.FIRST .. p_generic_id_tbl.LAST
5523           LOOP
5524              IF p_generic_id_tbl(gen_count).generic_id = p_instance_rec.instance_status_id AND
5525                 p_generic_id_tbl(gen_count).id_type = 'INS_STATUS' THEN
5526                 l_valid_flag := p_generic_id_tbl(gen_count).valid_flag;
5527                 l_terminated_flag := p_generic_id_tbl(gen_count).terminated_flag;
5528                 l_exists_flag := 'Y';
5529                 exit;
5530              END IF;
5531           END LOOP;
5532           --
5533           IF l_valid_flag <> 'Y' THEN
5534              FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_STATUS_ID');
5535              FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5536              FND_MSG_PUB.Add;
5537              RAISE FND_API.G_EXC_ERROR;
5538           END IF;
5539           --
5540           IF nvl(l_terminated_flag,'N') = 'Y' THEN
5541              FND_MESSAGE.SET_NAME('CSI','CSI_API_STATUS_NOT_ALLOWED');
5542              FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5543              FND_MSG_PUB.Add;
5544              RAISE FND_API.G_EXC_ERROR;
5545           END IF;
5546        END IF;
5547        --
5548        IF l_exists_flag <> 'Y' THEN
5549           p_ins_count_rec.generic_count := p_ins_count_rec.generic_count + 1;
5550           p_generic_id_tbl(p_ins_count_rec.generic_count).generic_id := p_instance_rec.instance_status_id;
5551           p_generic_id_tbl(p_ins_count_rec.generic_count).id_type := 'INS_STATUS';
5552           Begin
5553              select terminated_flag
5554              into l_terminated_flag
5555              from CSI_INSTANCE_STATUSES
5556              where instance_status_id = p_instance_rec.instance_status_id;
5557              --
5558              p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'Y';
5559              p_generic_id_tbl(p_ins_count_rec.generic_count).terminated_flag := l_terminated_flag;
5560              --
5561              IF nvl(l_terminated_flag,'N') = 'Y' THEN
5562                 FND_MESSAGE.SET_NAME('CSI','CSI_API_STATUS_NOT_ALLOWED');
5563                 FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5564                 FND_MSG_PUB.Add;
5565                 RAISE FND_API.G_EXC_ERROR;
5566              END IF;
5567           Exception
5568              when others then
5569                 p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'N';
5570                 p_generic_id_tbl(p_ins_count_rec.generic_count).terminated_flag := NULL;
5571                 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_STATUS_ID');
5572                 FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5573                 FND_MSG_PUB.Add;
5574                 RAISE FND_API.G_EXC_ERROR;
5575           End;
5576        END IF;
5577     END IF;
5578 
5579 --validation for the system id
5580          l_valid_flag := 'Y';
5581          l_exists_flag := 'N';
5582          IF p_instance_rec.system_id is not null AND
5583             p_instance_rec.system_id <> FND_API.G_MISS_NUM THEN
5584             IF p_generic_id_tbl.count > 0 then
5585                For gen_count in p_generic_id_tbl.FIRST .. p_generic_id_tbl.LAST
5586                LOOP
5587                   IF p_generic_id_tbl(gen_count).generic_id = p_instance_rec.system_id AND
5588                      p_generic_id_tbl(gen_count).id_type = 'SYSTEM' then
5589                      l_valid_flag := p_generic_id_tbl(gen_count).valid_flag;
5590                      l_exists_flag := 'Y';
5591                      exit;
5592                   END IF;
5593                END LOOP;
5594                --
5595                IF l_valid_flag <> 'Y' THEN
5596                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_SYSTEM_ID');
5597                   FND_MESSAGE.SET_TOKEN('SYSTEM_ID',p_instance_rec.system_id);
5598                   FND_MSG_PUB.Add;
5599                   RAISE fnd_api.g_exc_error;
5600                END IF;
5601             END IF;
5602             --
5603             IF l_exists_flag <> 'Y' THEN
5604                p_ins_count_rec.generic_count := p_ins_count_rec.generic_count + 1;
5605                p_generic_id_tbl(p_ins_count_rec.generic_count).generic_id := p_instance_rec.system_id;
5606                p_generic_id_tbl(p_ins_count_rec.generic_count).id_type := 'SYSTEM';
5607                IF NOT csi_Item_Instance_Vld_pvt.Is_Valid_System_id(
5608                             p_instance_rec.system_id) THEN
5609                   p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'N';
5610                   RAISE fnd_api.g_exc_error;
5611                ELSE
5612                   p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'Y';
5613                END IF;
5614             END IF;
5615          END IF;
5616 
5617 --validation for the instance type
5618          l_valid_flag := 'Y';
5619          l_exists_flag := 'N';
5620          IF ((p_instance_rec.instance_type_code IS NOT NULL) AND
5621              (p_instance_rec.instance_type_code <> FND_API.G_MISS_CHAR)) THEN
5622             IF p_lookup_tbl.count > 0 then
5623                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
5624                LOOP
5625                   IF p_lookup_tbl(lookup_count).lookup_type = 'INSTANCE_TYPE' AND
5626                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.instance_type_code THEN
5627                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
5628                      l_exists_flag := 'Y';
5629                      exit;
5630                   END IF;
5631                END LOOP;
5632                --
5633                IF l_valid_flag <> 'Y' THEN
5634                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INSTANCE_TYPE');
5635                   FND_MESSAGE.SET_TOKEN('INSTANCE_TYPE_CODE',p_instance_rec.instance_type_code);
5636                   FND_MSG_PUB.Add;
5637                   RAISE fnd_api.g_exc_error;
5638                END IF;
5639             END IF;
5640             --
5641             IF l_exists_flag <> 'Y' THEN
5642                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
5643                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'INSTANCE_TYPE';
5644                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.instance_type_code;
5645                IF NOT csi_Item_Instance_Vld_pvt.Is_Valid_Instance_Type(
5646                          p_instance_rec.instance_type_code) THEN
5647                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
5648                   RAISE fnd_api.g_exc_error;
5649                ELSE
5650                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
5651                END IF;
5652             END IF;
5653          END IF;
5654 --validation for the instance usage code
5655          l_valid_flag := 'Y';
5656          l_exists_flag := 'N';
5657          IF ((p_instance_rec.instance_usage_code IS NOT NULL) AND
5658              (p_instance_rec.instance_usage_code <> FND_API.G_MISS_CHAR)) THEN
5659             IF p_lookup_tbl.count > 0 THEN
5660                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
5661                LOOP
5662                   IF p_lookup_tbl(lookup_count).lookup_type = 'INSTANCE_USAGE' AND
5663                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.instance_usage_code THEN
5664                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
5665                      l_exists_flag := 'Y';
5666                      exit;
5667                   END IF;
5668                End Loop;
5669                --
5670                if l_valid_flag <> 'Y' then
5671                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_USAGE_CODE');
5672                   FND_MESSAGE.SET_TOKEN('INSTANCE_USAGE_CODE',p_instance_rec.instance_usage_code);
5673                   FND_MSG_PUB.Add;
5674                   RAISE fnd_api.g_exc_error;
5675                end if;
5676             End if;
5677             --
5678             IF l_exists_flag <> 'Y' THEN
5679                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
5680                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'INSTANCE_USAGE';
5681                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.instance_usage_code;
5682                IF NOT csi_Item_Instance_Vld_pvt.Valid_Inst_Usage_Code(
5683                          p_instance_rec.instance_usage_code) THEN
5684                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
5685                   RAISE fnd_api.g_exc_error;
5686                ELSE
5687                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
5688                END IF;
5689             END IF;
5690          END IF;
5691    -- Addition of columns for FA Integration
5692    --validation for the operational status
5693          l_valid_flag := 'Y';
5694          l_exists_flag := 'N';
5695          IF ((p_instance_rec.operational_status_code IS NOT NULL) AND
5696              (p_instance_rec.operational_status_code <> FND_API.G_MISS_CHAR)) THEN
5697             IF p_lookup_tbl.count > 0 THEN
5698                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
5699                LOOP
5700                   IF p_lookup_tbl(lookup_count).lookup_type = 'OPERATIONAL_STATUS' AND
5701                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.operational_status_code
5702                   THEN
5703                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
5704                      l_exists_flag := 'Y';
5705                      exit;
5706                   END IF;
5707                End Loop;
5708                --
5709                if l_valid_flag <> 'Y' then
5710                   FND_MESSAGE.SET_NAME('CSI','CSI_OPERATIONAL_STATUS_CODE');
5711                   FND_MESSAGE.SET_TOKEN('OPERATIONAL_STATUS_CODE',p_instance_rec.operational_status_code);
5712                   FND_MSG_PUB.Add;
5713                   RAISE fnd_api.g_exc_error;
5714                end if;
5715             End if;
5716             --
5717             IF l_exists_flag <> 'Y' THEN
5718                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
5719                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'OPERATIONAL_STATUS';
5720                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.operational_status_code;
5721                IF NOT csi_Item_Instance_Vld_pvt.Valid_operational_status(
5722                          p_instance_rec.operational_status_code) THEN
5723                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
5724                   RAISE fnd_api.g_exc_error;
5725                ELSE
5726                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
5727                END IF;
5728             END IF;
5729          ELSE
5730           IF ((p_instance_rec.operational_status_code IS NULL) OR
5731               (p_instance_rec.operational_status_code = FND_API.G_MISS_CHAR))
5732           THEN
5733                p_instance_rec.operational_status_code:='NOT_USED';
5734           END IF;
5735          END IF;
5736 
5737 
5738  -- Following code has been added for operational_status_code
5739  -- If owner is Internal then
5740 
5741 
5742          IF l_owner = l_int_party_id
5743          THEN
5744             IF    p_instance_rec.location_type_code IN ('WIP','IN_TRANSIT','VENDOR_SITE')
5745               AND p_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE')
5746             THEN
5747                   p_instance_rec.operational_status_code := 'NOT_USED';
5748             ELSIF p_instance_rec.location_type_code IN ('PROJECT')
5749               AND p_instance_rec.operational_status_code ='IN_SERVICE'
5750              THEN
5751                   p_instance_rec.operational_status_code := 'NOT_USED';
5752             ELSIF p_instance_rec.location_type_code IN ('INVENTORY','HZ_LOCATIONS')
5753               AND p_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
5754              THEN
5755                   p_instance_rec.operational_status_code := 'NOT_USED';
5756             END IF;
5757          ELSE -- Owner is an external party
5758             IF    p_instance_rec.location_type_code IN ('WIP','IN_TRANSIT','VENDOR_SITE')
5759               AND p_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE')
5760             THEN
5761                   p_instance_rec.operational_status_code := 'NOT_USED';
5762             ELSIF p_instance_rec.location_type_code ='PROJECT'
5763               AND p_instance_rec.operational_status_code ='IN_SERVICE'
5764              THEN
5765                   p_instance_rec.operational_status_code := 'NOT_USED';
5766             ELSIF p_instance_rec.location_type_code IN ('INVENTORY','HZ_LOCATIONS')
5767               AND p_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
5768              THEN
5769                   p_instance_rec.operational_status_code := 'NOT_USED';
5770             END IF;
5771          END IF;
5772 
5773 
5774          IF ((p_instance_rec.purchase_currency_code IS NOT NULL) AND
5775              (p_instance_rec.purchase_currency_code <> FND_API.G_MISS_CHAR)
5776              )
5777          THEN
5778            p_instance_rec.purchase_currency_code := UPPER(p_instance_rec.purchase_currency_code);
5779            IF NOT csi_item_instance_vld_pvt.valid_currency_code
5780                  (p_currency_code => p_instance_rec.purchase_currency_code)
5781            THEN
5782               RAISE fnd_api.g_exc_error;
5783            END IF;
5784          END IF;
5785 
5786          IF ((p_instance_rec.payables_currency_code IS NOT NULL) AND
5787              (p_instance_rec.payables_currency_code <> FND_API.G_MISS_CHAR)
5788              )
5789          THEN
5790            p_instance_rec.payables_currency_code := UPPER(p_instance_rec.payables_currency_code);
5791            IF NOT csi_item_instance_vld_pvt.valid_currency_code
5792                  (p_currency_code => p_instance_rec.payables_currency_code)
5793            THEN
5794               RAISE fnd_api.g_exc_error;
5795            END IF;
5796          END IF;
5797 
5798          IF ((p_instance_rec.sales_currency_code IS NOT NULL) AND
5799              (p_instance_rec.sales_currency_code <> FND_API.G_MISS_CHAR)
5800              )
5801          THEN
5802            p_instance_rec.sales_currency_code := UPPER(p_instance_rec.sales_currency_code);
5803            IF NOT csi_item_instance_vld_pvt.valid_currency_code
5804                  (p_currency_code => p_instance_rec.sales_currency_code)
5805            THEN
5806               RAISE fnd_api.g_exc_error;
5807            END IF;
5808          END IF;
5809 
5810          IF (
5811              ((p_instance_rec.purchase_currency_code IS NOT NULL AND
5812                p_instance_rec.purchase_currency_code <> FND_API.G_MISS_CHAR) AND
5813               (p_instance_rec.purchase_unit_price IS NULL OR
5814                p_instance_rec.purchase_unit_price = FND_API.G_MISS_NUM))
5815                OR
5816              ((p_instance_rec.purchase_currency_code IS NULL OR
5817                p_instance_rec.purchase_currency_code = FND_API.G_MISS_CHAR) AND
5818               (p_instance_rec.purchase_unit_price IS NOT NULL AND
5819                p_instance_rec.purchase_unit_price <> FND_API.G_MISS_NUM))
5820                OR
5821              ((p_instance_rec.payables_currency_code IS NOT NULL AND
5822                p_instance_rec.payables_currency_code <> FND_API.G_MISS_CHAR) AND
5823               (p_instance_rec.payables_unit_price IS NULL OR
5824                p_instance_rec.payables_unit_price = FND_API.G_MISS_NUM))
5825                OR
5826              ((p_instance_rec.payables_currency_code IS NULL OR
5827                p_instance_rec.payables_currency_code = FND_API.G_MISS_CHAR) AND
5828               (p_instance_rec.payables_unit_price IS NOT NULL AND
5829                p_instance_rec.payables_unit_price <> FND_API.G_MISS_NUM))
5830                OR
5831              ((p_instance_rec.sales_currency_code IS NOT NULL AND
5832                p_instance_rec.sales_currency_code <> FND_API.G_MISS_CHAR) AND
5833               (p_instance_rec.sales_unit_price IS NULL OR
5834                p_instance_rec.sales_unit_price = FND_API.G_MISS_NUM))
5835                OR
5836              ((p_instance_rec.sales_currency_code IS NULL OR
5837                p_instance_rec.sales_currency_code = FND_API.G_MISS_CHAR) AND
5838               (p_instance_rec.sales_unit_price IS NOT NULL AND
5839                p_instance_rec.sales_unit_price <> FND_API.G_MISS_NUM))
5840             )
5841          THEN
5842              FND_MESSAGE.SET_NAME('CSI','CSI_NO_PRICE_OR_CODE');
5843              FND_MSG_PUB.Add;
5844              RAISE fnd_api.g_exc_error;
5845          END IF;
5846        -- End addition of columns for FA Integration
5847 
5848 --validation for customer view flag
5849     IF ((p_instance_rec.CUSTOMER_VIEW_FLAG IS NULL) OR
5850         (p_instance_rec.CUSTOMER_VIEW_FLAG  = FND_API.G_MISS_CHAR)) THEN
5851             p_instance_rec.CUSTOMER_VIEW_FLAG  := 'Y';
5852     END IF;
5853 
5854 --validation for merchant view flag
5855     IF ((p_instance_rec.MERCHANT_VIEW_FLAG IS NULL) OR
5856         (p_instance_rec.MERCHANT_VIEW_FLAG  = FND_API.G_MISS_CHAR)) THEN
5857             p_instance_rec.MERCHANT_VIEW_FLAG  := 'N';
5858     END IF;
5859 
5860 --validation for sellable flag
5861     IF ((p_instance_rec.SELLABLE_FLAG IS NULL) OR
5862         (p_instance_rec.SELLABLE_FLAG  = FND_API.G_MISS_CHAR)) THEN
5863             p_instance_rec.SELLABLE_FLAG  := 'Y';
5864     END IF;
5865 
5866 -- Begin Add Code for Siebel Genesis Project
5867 --validation for source_code
5868     IF ((p_instance_rec.SOURCE_CODE IS NULL) OR
5869         (p_instance_rec.SOURCE_CODE = FND_API.G_MISS_CHAR)) THEN
5870       p_instance_rec.SOURCE_CODE := 'ORCL';
5871     END IF;
5872 -- End Add Code for Siebel Genesis Project
5873 
5874 -- Validation of Creation_completion_flag
5875         IF ((p_instance_rec.instance_id IS NOT NULL)
5876            AND (p_instance_rec.inventory_item_id IS NOT NULL)
5877            AND (p_instance_rec.inv_master_organization_id IS NOT NULL)
5878           -- AND (((l_serial_control IN (2,5,6))
5879              AND (((csi_Item_Instance_Vld_pvt.Is_treated_serialized
5880                                       ( p_serial_control_code => l_serial_control
5881                                        ,p_location_type_code  => p_instance_rec.location_type_code
5882                                        ,p_transaction_type_id => p_txn_rec.transaction_type_id
5883                                        ))     --Added by sk on 09/13/01
5884                    AND ((p_instance_rec.serial_number IS NOT NULL)
5885                           AND (p_instance_rec.serial_number <> FND_API.G_MISS_CHAR)))
5886                 -- OR     (l_serial_control NOT IN (2,5,6)))
5887                    OR ( NOT (csi_Item_Instance_Vld_pvt.Is_treated_serialized
5888                                                   ( p_serial_control_code => l_serial_control
5889                                                    ,p_location_type_code  => p_instance_rec.location_type_code
5890                                                    ,p_transaction_type_id => p_txn_rec.transaction_type_id
5891                                                    )) ) ) --Added by sk on 09/13/01
5892            AND (((l_lot_control = 2)
5893                    AND ((p_instance_rec.lot_number IS NOT NULL)
5894                           AND (p_instance_rec.lot_number <> FND_API.G_MISS_CHAR)))
5895                    OR     (l_lot_control <> 2))
5896            AND (p_instance_rec.instance_status_id IS NOT NULL)
5897            AND (((l_rev_control = 2)
5898                    AND ((p_instance_rec.inventory_revision IS NOT NULL)
5899                           AND (p_instance_rec.inventory_revision <> FND_API.G_MISS_CHAR)))
5900                    OR     (l_rev_control <> 2))
5901            AND ((p_instance_rec.location_type_code IS NOT NULL) AND
5902                 (p_instance_rec.location_type_code <> FND_API.G_MISS_CHAR)))
5903         THEN
5904                p_instance_rec.creation_complete_flag := 'Y';
5905         ELSE
5906                p_instance_rec.creation_complete_flag := 'N';
5907         END IF;
5908 
5909         IF    p_instance_rec.vld_organization_id IS NOT NULL
5910          AND  p_instance_rec.vld_organization_id <> fnd_api.g_miss_num
5911         THEN
5912               l_last_vld_organization_id := p_instance_rec.vld_organization_id;
5913         ELSE
5914               l_last_vld_organization_id := p_instance_rec.inv_master_organization_id;
5915         END IF;
5916 
5917         -- Validation for install location
5918         -- Start addition by sk on 02/06/02 for bug 2213922
5919         IF p_instance_rec.install_location_type_code IS NOT NULL AND
5920            p_instance_rec.install_location_type_code <> fnd_api.g_miss_char
5921         THEN
5922            IF p_instance_rec.install_location_type_code = 'HZ_PARTY_SITES' OR
5923               p_instance_rec.install_location_type_code = 'HZ_LOCATIONS' OR
5924               p_instance_rec.install_location_type_code = 'VENDOR_SITE' OR
5925               p_instance_rec.install_location_type_code = 'INTERNAL_SITE' OR --4926773
5926 	      p_instance_rec.install_location_type_code = 'HR_LOCATIONS'
5927            THEN
5928               IF p_instance_rec.install_location_id IS NULL OR
5929                  p_instance_rec.install_location_id = FND_API.G_MISS_NUM THEN
5930                  FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
5931                  FND_MSG_PUB.ADD;
5932                  RAISE fnd_api.g_exc_error;
5933               END IF;
5934               --
5935               l_exists_flag := 'N';
5936               l_valid_flag := 'Y';
5937               IF p_location_tbl.count > 0 THEN
5938                  For loc_row in p_location_tbl.FIRST .. p_location_tbl.LAST
5939                  Loop
5940                     IF p_location_tbl(loc_row).location_type_code = p_instance_rec.install_location_type_code
5941                        AND p_location_tbl(loc_row).location_id = p_instance_rec.install_location_id THEN
5942                        l_exists_flag := 'Y';
5943                        l_valid_flag := p_location_tbl(loc_row).valid_flag;
5944                        EXIT;
5945                     END IF;
5946                  End Loop;
5947                  --
5948                  IF l_valid_flag <> 'Y' THEN
5949                     FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
5950                     FND_MSG_PUB.ADD;
5951                     RAISE fnd_api.g_exc_error;
5952                  END IF;
5953               END IF;
5954               --
5955                IF l_exists_flag <> 'Y' THEN
5956                   p_ins_count_rec.location_count := p_ins_count_rec.location_count + 1;
5957                   p_location_tbl(p_ins_count_rec.location_count).location_type_code :=
5958                                                      p_instance_rec.install_location_type_code;
5959                   p_location_tbl(p_ins_count_rec.location_count).location_id :=
5960                                                      p_instance_rec.install_location_id;
5961                   IF csi_item_instance_vld_pvt.Is_Valid_Location_ID
5962                                        (
5963                                          p_location_source_table => p_instance_rec.install_location_type_code
5964                                         ,p_location_id => p_instance_rec.install_location_id
5965                                        ) THEN
5966                      p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'Y';
5967                   ELSE
5968                      p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'N';
5969                      RAISE fnd_api.g_exc_error;
5970                   END IF;
5971                END IF;
5972            ELSE
5973               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
5974               FND_MSG_PUB.Add;
5975               RAISE FND_API.G_EXC_ERROR;
5976            END IF;
5977         END IF;
5978         csi_gen_utility_pvt.put_line('Before Insert row...');
5979         -- End addition by sk on 02/06/02 for bug 2213922
5980     IF p_called_from_grp <> fnd_api.g_true THEN
5981 -- Create a row in csi_item_instances
5982       CSI_ITEM_INSTANCES_PKG.Insert_Row
5983        (  px_INSTANCE_ID                    => p_instance_rec.INSTANCE_ID
5984           ,p_INSTANCE_NUMBER                => p_instance_rec.INSTANCE_NUMBER
5985           ,p_EXTERNAL_REFERENCE             => p_instance_rec.EXTERNAL_REFERENCE
5986           ,p_INVENTORY_ITEM_ID              => p_instance_rec.INVENTORY_ITEM_ID
5987           ,p_INVENTORY_REVISION             => p_instance_rec.INVENTORY_REVISION
5988           ,p_INV_MASTER_ORGANIZATION_ID     => p_instance_rec.INV_MASTER_ORGANIZATION_ID
5989           ,p_SERIAL_NUMBER                  => p_instance_rec.SERIAL_NUMBER
5990           ,p_MFG_SERIAL_NUMBER_FLAG         => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
5991           ,p_LOT_NUMBER                     => p_instance_rec.LOT_NUMBER
5992           ,p_QUANTITY                       => p_instance_rec.QUANTITY
5993           ,p_UNIT_OF_MEASURE                => p_instance_rec.UNIT_OF_MEASURE
5994           ,p_ACCOUNTING_CLASS_CODE          => p_instance_rec.ACCOUNTING_CLASS_CODE
5995           ,p_INSTANCE_CONDITION_ID          => p_instance_rec.INSTANCE_CONDITION_ID
5996           ,p_INSTANCE_STATUS_ID             => p_instance_rec.INSTANCE_STATUS_ID
5997           ,p_CUSTOMER_VIEW_FLAG             => p_instance_rec.CUSTOMER_VIEW_FLAG
5998           ,p_MERCHANT_VIEW_FLAG             => p_instance_rec.MERCHANT_VIEW_FLAG
5999           ,p_SELLABLE_FLAG                  => p_instance_rec.SELLABLE_FLAG
6000           ,p_SYSTEM_ID                      => p_instance_rec.SYSTEM_ID
6001           ,p_INSTANCE_TYPE_CODE             => p_instance_rec.INSTANCE_TYPE_CODE
6002           ,p_ACTIVE_START_DATE              => p_instance_rec.ACTIVE_START_DATE
6003           ,p_ACTIVE_END_DATE                => p_instance_rec.ACTIVE_END_DATE
6004           ,p_LOCATION_TYPE_CODE             => p_instance_rec.LOCATION_TYPE_CODE
6005           ,p_LOCATION_ID                    => p_instance_rec.LOCATION_ID
6006           ,p_INV_ORGANIZATION_ID            => p_instance_rec.INV_ORGANIZATION_ID
6007           ,p_INV_SUBINVENTORY_NAME          => p_instance_rec.INV_SUBINVENTORY_NAME
6008           ,p_INV_LOCATOR_ID                 => p_instance_rec.INV_LOCATOR_ID
6009           ,p_PA_PROJECT_ID                  => p_instance_rec.PA_PROJECT_ID
6010           ,p_PA_PROJECT_TASK_ID             => p_instance_rec.PA_PROJECT_TASK_ID
6011           ,p_IN_TRANSIT_ORDER_LINE_ID       => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
6012           ,p_WIP_JOB_ID                     => p_instance_rec.WIP_JOB_ID
6013           ,p_PO_ORDER_LINE_ID               => p_instance_rec.PO_ORDER_LINE_ID
6014           ,p_LAST_OE_ORDER_LINE_ID          => p_instance_rec.LAST_OE_ORDER_LINE_ID
6015           ,p_LAST_OE_RMA_LINE_ID            => p_instance_rec.LAST_OE_RMA_LINE_ID
6016           ,p_LAST_PO_PO_LINE_ID             => p_instance_rec.LAST_PO_PO_LINE_ID
6017           ,p_LAST_OE_PO_NUMBER              => p_instance_rec.LAST_OE_PO_NUMBER
6018           ,p_LAST_WIP_JOB_ID                => p_instance_rec.LAST_WIP_JOB_ID
6019           ,p_LAST_PA_PROJECT_ID             => p_instance_rec.LAST_PA_PROJECT_ID
6020           ,p_LAST_PA_TASK_ID                => p_instance_rec.LAST_PA_TASK_ID
6021           ,p_LAST_OE_AGREEMENT_ID           => p_instance_rec.LAST_OE_AGREEMENT_ID
6022           ,p_INSTALL_DATE                   => p_instance_rec.INSTALL_DATE
6023           ,p_MANUALLY_CREATED_FLAG          => p_instance_rec.MANUALLY_CREATED_FLAG
6024           ,p_RETURN_BY_DATE                 => p_instance_rec.RETURN_BY_DATE
6025           ,p_ACTUAL_RETURN_DATE             => p_instance_rec.ACTUAL_RETURN_DATE
6026           ,p_CREATION_COMPLETE_FLAG         => p_instance_rec.CREATION_COMPLETE_FLAG
6027           ,p_COMPLETENESS_FLAG              => p_instance_rec.COMPLETENESS_FLAG
6028           ,p_CONTEXT                        => p_instance_rec.CONTEXT
6029           ,p_ATTRIBUTE1                     => p_instance_rec.ATTRIBUTE1
6030           ,p_ATTRIBUTE2                     => p_instance_rec.ATTRIBUTE2
6031           ,p_ATTRIBUTE3                     => p_instance_rec.ATTRIBUTE3
6032           ,p_ATTRIBUTE4                     => p_instance_rec.ATTRIBUTE4
6033           ,p_ATTRIBUTE5                     => p_instance_rec.ATTRIBUTE5
6034           ,p_ATTRIBUTE6                     => p_instance_rec.ATTRIBUTE6
6035           ,p_ATTRIBUTE7                     => p_instance_rec.ATTRIBUTE7
6036           ,p_ATTRIBUTE8                     => p_instance_rec.ATTRIBUTE8
6037           ,p_ATTRIBUTE9                     => p_instance_rec.ATTRIBUTE9
6038           ,p_ATTRIBUTE10                    => p_instance_rec.ATTRIBUTE10
6039           ,p_ATTRIBUTE11                    => p_instance_rec.ATTRIBUTE11
6040           ,p_ATTRIBUTE12                    => p_instance_rec.ATTRIBUTE12
6041           ,p_ATTRIBUTE13                    => p_instance_rec.ATTRIBUTE13
6042           ,p_ATTRIBUTE14                    => p_instance_rec.ATTRIBUTE14
6043           ,p_ATTRIBUTE15                    => p_instance_rec.ATTRIBUTE15
6044           ,p_CREATED_BY                     => FND_GLOBAL.USER_ID
6045           ,p_CREATION_DATE                  => SYSDATE
6046           ,p_LAST_UPDATED_BY                => FND_GLOBAL.USER_ID
6047           ,p_LAST_UPDATE_DATE               => SYSDATE
6048           ,p_LAST_UPDATE_LOGIN              => FND_GLOBAL.CONC_LOGIN_ID
6049           ,p_OBJECT_VERSION_NUMBER          => 1
6050           ,p_LAST_TXN_LINE_DETAIL_ID        => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
6051           ,p_INSTALL_LOCATION_TYPE_CODE     => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
6052           ,p_INSTALL_LOCATION_ID            => p_instance_rec.INSTALL_LOCATION_ID
6053           ,p_INSTANCE_USAGE_CODE            => p_instance_rec.INSTANCE_USAGE_CODE
6054           ,p_last_vld_organization_id       => l_last_vld_organization_id
6055           ,p_CONFIG_INST_HDR_ID             => p_instance_rec.CONFIG_INST_HDR_ID
6056           ,p_CONFIG_INST_REV_NUM            => p_instance_rec.CONFIG_INST_REV_NUM
6057           ,p_CONFIG_INST_ITEM_ID            => p_instance_rec.CONFIG_INST_ITEM_ID
6058           ,p_CONFIG_VALID_STATUS            => p_instance_rec.CONFIG_VALID_STATUS
6059           ,p_INSTANCE_DESCRIPTION           => p_instance_rec.INSTANCE_DESCRIPTION
6060           ,p_REQUEST_ID                     => p_instance_rec.REQUEST_ID
6061           ,p_PROGRAM_APPLICATION_ID         => p_instance_rec.PROGRAM_APPLICATION_ID
6062           ,p_PROGRAM_ID                     => p_instance_rec.PROGRAM_ID
6063           ,p_PROGRAM_UPDATE_DATE            => p_instance_rec.PROGRAM_UPDATE_DATE
6064 	  --start of parameters addition for eam integration--
6065           ,p_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
6066           ,p_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
6067           ,p_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
6068           ,p_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
6069           ,p_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
6070           ,p_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
6071           ,p_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
6072           ,p_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
6073           ,p_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
6074           ,p_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
6075           ,p_SUPPLIER_WARRANTY_EXP_DATE     => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
6076           ,p_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
6077           ,p_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
6078           ,p_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
6079           ,p_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
6080           ,p_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
6081           ,p_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
6082           ,p_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
6083           ,p_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
6084           ,p_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
6085           ,p_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
6086           ,p_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
6087           ,p_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
6088           ,p_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
6089           ,p_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
6090           ,p_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
6091 	  --end of parameters addition for eam integration--
6092    -- Addition of columns for FA Integration
6093           ,p_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
6094           ,p_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
6095           ,p_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
6096           ,p_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
6097           ,p_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
6098           ,p_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
6099           ,p_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
6100     -- End addition of columns for FA Integration
6101           ,p_SOURCE_CODE                    => p_instance_rec.SOURCE_CODE -- Added Code for Siebel Genesis Project
6102 	  );
6103 
6104 
6105 
6106     IF NVL(l_call_counters,'N') = 'Y' AND
6107        NVL(p_instance_rec.network_asset_flag,'N') <> 'Y' -- Added for 5219534
6108     THEN
6109        IF p_instance_rec.quantity = 1 THEN
6110           -- calling the Counters API to associate counters to an instance
6111           -- Added to restrict the counter instantiation for an item in 'INVENTORY',
6112           -- by rtalluri for the enh. 2308703
6113 	  IF NOT((l_serial_control IN (1,6)) AND
6114 		 (p_instance_rec.location_type_code = 'INVENTORY')) THEN
6115 
6116       -- Since the replacement API CSI_COUNTER_TEMPLATE_PUB does not
6117       -- for  CS_Counters_PUB.Ctr_Grp_Template_Exists
6118       -- does not provide a function Ctr_Grp_Template_Exists,
6119       -- Hence writing the following code...
6120         --l_counter_group_id := NULL;
6121         BEGIN
6122           SELECT count(*)
6123             INTO l_counter_group_id
6124             FROM csi_ctr_item_associations
6125            WHERE inventory_item_id = p_instance_rec.inventory_item_id
6126              AND ROWNUM = 1;
6127         EXCEPTION
6128           WHEN NO_DATA_FOUND THEN
6129            NULL;
6130            -- Too many rows exception will not arise
6131            -- as ctr API will make sure there will be only one record in
6132            -- csi_ctr_item_associations with a particular inv_id.
6133         END;
6134        -- R12 Changes ...
6135 	   /* IF CS_Counters_PUB.Ctr_Grp_Template_Exists(p_instance_rec.inventory_item_id) THEN
6136 	       CS_Counters_PUB.AutoInstantiate_Counters */
6137 	    IF l_counter_group_id <> 0
6138         THEN
6139 	      -- CS_Counters_PUB.AutoInstantiate_Counters
6140          csi_counter_template_pub.autoinstantiate_counters
6141          ( p_api_version                => 1.0
6142           ,p_init_msg_list              => FND_API.G_FALSE
6143           ,p_commit                     => FND_API.G_FALSE
6144           ,x_return_status              => x_return_status
6145           ,x_msg_count                  => x_msg_count
6146           ,x_msg_data                   => x_msg_data
6147           ,p_source_object_id_template  => p_instance_rec.inventory_item_id
6148           ,p_source_object_id_instance  => p_instance_rec.instance_id
6149           ,x_ctr_id_template            => l_ctr_id_template
6150           ,x_ctr_id_instance            => l_ctr_id_instance
6151           ,x_ctr_grp_id_template        => l_ctr_grp_id_template
6152           ,x_ctr_grp_id_instance        => l_ctr_grp_id_instance
6153           ,p_organization_id            => l_last_vld_organization_id -- srramakr. should pass the organization_id
6154           );
6155 
6156         IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
6157         THEN
6158              FND_MESSAGE.SET_NAME('CSI','CSI_API_NO_COUNTER_ASSOCIATION');
6159              FND_MESSAGE.SET_TOKEN('COUNTER','CSI_COUNTER_TEMPLATE_PUB.AUTOINSTANTIATE_COUNTERS');
6160              FND_MSG_PUB.Add;
6161              RAISE FND_API.G_EXC_ERROR;
6162         END IF;
6163 	  -- srramakr Bug # 2255391. In CTO, since the configured item is created as a part of Sales Order
6164 	  -- processing, there is no way a counter gets attached to this new item.
6165           -- In order to attach the counter, we look at the base model and use its counter group
6166           -- for the configured item. After attaching it, we call the Autoinstantiate API.
6167 	   ELSE
6168 	     l_base_item_id := null;
6169 	     Begin
6170 		select base_item_id
6171 		into l_base_item_id
6172 		from MTL_SYSTEM_ITEMS_B
6173 		where inventory_item_id = p_instance_rec.inventory_item_id
6174 		and   organization_id = l_last_vld_organization_id;
6175 	     Exception
6176 		when no_data_found then
6177 		   null;
6178 		when others then
6179 		   null;
6180 	     End;
6181 	     --
6182 	     IF l_base_item_id is not null THEN
6183 		-- call the Counter Grp association API for the Configured Item
6184 		   For ctr_rec in CTR_GROUP(l_base_item_id)
6185 		   Loop
6186 		      Begin
6187                l_ctr_item_associations_rec.group_id          := ctr_rec.group_id;
6188                l_ctr_item_associations_rec.inventory_item_id := p_instance_rec.inventory_item_id;
6189 
6190 			--CS_Counters_PUB.Create_Ctr_Association
6191                csi_counter_template_pub.create_item_association
6192                (p_api_version               => 1.0
6193                ,p_commit                    => fnd_api.g_false
6194                ,p_init_msg_list             => fnd_api.g_false
6195                ,p_validation_level          => p_validation_level
6196                ,p_ctr_item_associations_rec => l_ctr_item_associations_rec
6197                ,x_return_status             => x_return_status
6198                ,x_msg_count                 => x_msg_count
6199                ,x_msg_data                  => x_msg_data
6200                );
6201 		   End;
6202 		End Loop;
6203 		   --
6204 		--IF CS_Counters_PUB.Ctr_Grp_Template_Exists(p_instance_rec.inventory_item_id) THEN
6205           IF l_counter_group_id <> 0 THEN
6206 
6207           csi_counter_template_pub.autoinstantiate_counters
6208           ( p_api_version                => 1.0
6209            ,p_init_msg_list              => FND_API.G_FALSE
6210            ,p_commit                     => FND_API.G_FALSE
6211            ,x_return_status              => x_return_status
6212            ,x_msg_count                  => x_msg_count
6213            ,x_msg_data                   => x_msg_data
6214            ,p_source_object_id_template  => p_instance_rec.inventory_item_id
6215            ,p_source_object_id_instance  => p_instance_rec.instance_id
6216            ,x_ctr_id_template            => l_ctr_id_template
6217            ,x_ctr_id_instance            => l_ctr_id_instance
6218            ,x_ctr_grp_id_template        => l_ctr_grp_id_template
6219            ,x_ctr_grp_id_instance        => l_ctr_grp_id_instance
6220            ,p_organization_id            => l_last_vld_organization_id -- srramakr. should pass the organization_id
6221            );
6222 		      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
6223 			 FND_MESSAGE.SET_NAME('CSI','CSI_API_NO_COUNTER_ASSOCIATION');
6224                          FND_MESSAGE.SET_TOKEN('COUNTER','CSI_COUNTER_TEMPLATE_PUB.AUTOINSTANTIATE_COUNTERS');
6225 			 FND_MSG_PUB.Add;
6226 			 RAISE FND_API.G_EXC_ERROR;
6227 		      END IF; -- return status
6228 		END IF; -- ctr. grp template exists1
6229 	     END IF; -- for l_base_item
6230 	   END IF; -- ctr.grp template exists2
6231 	 END IF; -- restrict counter instantiation for 'INVENTORY'
6232        END IF; -- qty check
6233    END IF; -- l_call_counters check
6234 
6235      -- Start code addition for eam integration
6236      IF l_eam_item
6237      THEN
6238           eam_objectinstantiation_pub.instantiate_object
6239           (p_api_version             => 1.0
6240           ,p_init_msg_list           => fnd_api.g_false
6241           ,p_commit                  => fnd_api.g_false
6242           ,p_validation_level        => p_validation_level
6243           ,p_maintenance_object_id   => p_instance_rec.instance_id
6244           ,p_maintenance_object_type => 3
6245           ,x_return_status           => x_return_status
6246           ,x_msg_count               => x_msg_count
6247           ,x_msg_data                => x_msg_data
6248           );
6249        IF NOT(x_return_status = fnd_api.g_ret_sts_success)
6250        THEN
6251           csi_gen_utility_pvt.put_line( 'Error from eam_objectinstantiation_pub.instantiate_object...');
6252           RAISE fnd_api.g_exc_error;
6253        END IF;
6254      END IF;
6255      -- End code addition for eam integration
6256    -- Call create_transaction to create txn log
6257         CSI_TRANSACTIONS_PVT.Create_transaction
6258           (
6259              p_api_version            => p_api_version
6260             ,p_commit                 => p_commit
6261             ,p_init_msg_list          => p_init_msg_list
6262             ,p_validation_level       => p_validation_level
6263             ,p_Success_IF_Exists_Flag => 'Y'
6264             ,p_transaction_rec        => p_txn_rec
6265             ,x_return_status          => x_return_status
6266             ,x_msg_count              => x_msg_count
6267             ,x_msg_data               => x_msg_data
6268           );
6269 
6270          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
6271               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_VALIDATE_TXN');
6272               FND_MESSAGE.SET_TOKEN('TRANSACTION_ID',p_txn_rec.transaction_id );
6273               FND_MSG_PUB.Add;
6274               RAISE FND_API.G_EXC_ERROR;
6275          END IF;
6276 
6277 -- Get a unique history item instance id from the sequence
6278               l_csi_item_instance_h_id :=
6279                              csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
6280 
6281 -- Create a row in csi_item_instances_history table
6282    CSI_ITEM_INSTANCES_H_PKG.Insert_Row
6283            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
6284             ,p_INSTANCE_ID                       => p_instance_rec.INSTANCE_ID
6285             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
6286             ,p_OLD_INSTANCE_NUMBER               => NULL
6287             ,p_NEW_INSTANCE_NUMBER               => p_instance_rec.INSTANCE_NUMBER
6288             ,p_OLD_EXTERNAL_REFERENCE            => NULL
6289             ,p_NEW_EXTERNAL_REFERENCE            => p_instance_rec.EXTERNAL_REFERENCE
6290             ,p_OLD_INVENTORY_ITEM_ID             => NULL
6291             ,p_NEW_INVENTORY_ITEM_ID             => p_instance_rec.INVENTORY_ITEM_ID
6292             ,p_OLD_INVENTORY_REVISION            => NULL
6293             ,p_NEW_INVENTORY_REVISION            => p_instance_rec.INVENTORY_REVISION
6294             ,p_OLD_INV_MASTER_ORGZN_ID           => NULL
6295             ,p_NEW_INV_MASTER_ORGZN_ID           => p_instance_rec.INV_MASTER_ORGANIZATION_ID
6296             ,p_OLD_SERIAL_NUMBER                 => NULL
6297             ,p_NEW_SERIAL_NUMBER                 => p_instance_rec.SERIAL_NUMBER
6298             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => NULL
6299             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
6300             ,p_OLD_LOT_NUMBER                    => NULL
6301             ,p_NEW_LOT_NUMBER                    => p_instance_rec.LOT_NUMBER
6302             ,p_OLD_QUANTITY                      => NULL
6303             ,p_NEW_QUANTITY                      => p_instance_rec.QUANTITY
6304             ,p_OLD_UNIT_OF_MEASURE               => NULL
6305             ,p_NEW_UNIT_OF_MEASURE               => p_instance_rec.UNIT_OF_MEASURE
6306             ,p_OLD_ACCOUNTING_CLASS_CODE         => NULL
6307             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
6308             ,p_OLD_INSTANCE_CONDITION_ID         => NULL
6309             ,p_NEW_INSTANCE_CONDITION_ID         => p_instance_rec.INSTANCE_CONDITION_ID
6310             ,p_OLD_INSTANCE_STATUS_ID            => NULL
6311             ,p_NEW_INSTANCE_STATUS_ID            => p_instance_rec.INSTANCE_STATUS_ID
6312             ,p_OLD_CUSTOMER_VIEW_FLAG            => NULL
6313             ,p_NEW_CUSTOMER_VIEW_FLAG            => p_instance_rec.CUSTOMER_VIEW_FLAG
6314             ,p_OLD_MERCHANT_VIEW_FLAG            => NULL
6315             ,p_NEW_MERCHANT_VIEW_FLAG            => p_instance_rec.MERCHANT_VIEW_FLAG
6316             ,p_OLD_SELLABLE_FLAG                 => NULL
6317             ,p_NEW_SELLABLE_FLAG                 => p_instance_rec.SELLABLE_FLAG
6318             ,p_OLD_SYSTEM_ID                     => NULL
6319             ,p_NEW_SYSTEM_ID                     => p_instance_rec.SYSTEM_ID
6320             ,p_OLD_INSTANCE_TYPE_CODE            => NULL
6321             ,p_NEW_INSTANCE_TYPE_CODE            => p_instance_rec.INSTANCE_TYPE_CODE
6322             ,p_OLD_ACTIVE_START_DATE             => NULL
6323             ,p_NEW_ACTIVE_START_DATE             => p_instance_rec.ACTIVE_START_DATE
6324             ,p_OLD_ACTIVE_END_DATE               => NULL
6325             ,p_NEW_ACTIVE_END_DATE               => p_instance_rec.ACTIVE_END_DATE
6326             ,p_OLD_LOCATION_TYPE_CODE            => NULL
6327             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
6328             ,p_OLD_LOCATION_ID                   => NULL
6329             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
6330             ,p_OLD_INV_ORGANIZATION_ID           => NULL
6331             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
6332             ,p_OLD_INV_SUBINVENTORY_NAME         => NULL
6333             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
6334             ,p_OLD_INV_LOCATOR_ID                => NULL
6335             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
6336             ,p_OLD_PA_PROJECT_ID                 => NULL
6337             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
6338             ,p_OLD_PA_PROJECT_TASK_ID            => NULL
6339             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
6340             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => NULL
6341             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
6342             ,p_OLD_WIP_JOB_ID                    => NULL
6343             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
6344             ,p_OLD_PO_ORDER_LINE_ID              => NULL
6345             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
6346             ,p_OLD_COMPLETENESS_FLAG             => NULL
6347             ,p_NEW_COMPLETENESS_FLAG             => p_instance_rec.COMPLETENESS_FLAG
6348             ,p_FULL_DUMP_FLAG                    => 'N'
6349             ,p_NEW_CONTEXT                       => p_instance_rec.CONTEXT
6350             ,P_OLD_CONTEXT                       => NULL
6351             ,p_NEW_ATTRIBUTE1                    => p_instance_rec.ATTRIBUTE1
6352             ,p_OLD_ATTRIBUTE1                    => NULL
6353             ,p_NEW_ATTRIBUTE2                    => p_instance_rec.ATTRIBUTE2
6354             ,p_OLD_ATTRIBUTE2                    => NULL
6355             ,p_NEW_ATTRIBUTE3                    => p_instance_rec.ATTRIBUTE3
6356             ,p_OLD_ATTRIBUTE3                    => NULL
6357             ,p_NEW_ATTRIBUTE4                    => p_instance_rec.ATTRIBUTE4
6358             ,p_OLD_ATTRIBUTE4                    => NULL
6359             ,p_NEW_ATTRIBUTE5                    => p_instance_rec.ATTRIBUTE5
6360             ,p_OLD_ATTRIBUTE5                    => NULL
6361             ,p_NEW_ATTRIBUTE6                    => p_instance_rec.ATTRIBUTE6
6362             ,p_OLD_ATTRIBUTE6                    => NULL
6363             ,p_NEW_ATTRIBUTE7                    => p_instance_rec.ATTRIBUTE7
6364             ,p_OLD_ATTRIBUTE7                    => NULL
6365             ,p_NEW_ATTRIBUTE8                    => p_instance_rec.ATTRIBUTE8
6366             ,p_OLD_ATTRIBUTE8                    => NULL
6367             ,p_NEW_ATTRIBUTE9                    => p_instance_rec.ATTRIBUTE9
6368             ,p_OLD_ATTRIBUTE9                    => NULL
6369             ,p_NEW_ATTRIBUTE10                   => p_instance_rec.ATTRIBUTE10
6370             ,p_OLD_ATTRIBUTE10                   => NULL
6371             ,p_NEW_ATTRIBUTE11                   => p_instance_rec.ATTRIBUTE11
6372             ,p_OLD_ATTRIBUTE11                   => NULL
6373             ,p_NEW_ATTRIBUTE12                   => p_instance_rec.ATTRIBUTE12
6374             ,p_OLD_ATTRIBUTE12                   => NULL
6375             ,p_NEW_ATTRIBUTE13                   => p_instance_rec.ATTRIBUTE13
6376             ,p_OLD_ATTRIBUTE13                   => NULL
6377             ,p_NEW_ATTRIBUTE14                   => p_instance_rec.ATTRIBUTE14
6378             ,p_OLD_ATTRIBUTE14                   => NULL
6379             ,p_NEW_ATTRIBUTE15                   => p_instance_rec.ATTRIBUTE15
6380             ,p_OLD_ATTRIBUTE15                   => NULL
6381             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
6382             ,p_CREATION_DATE                     => SYSDATE
6383             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
6384             ,p_LAST_UPDATE_DATE                  => SYSDATE
6385             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
6386             ,p_OBJECT_VERSION_NUMBER             => 1
6387             ,p_OLD_INST_LOC_TYPE_CODE            => NULL
6388             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
6389             ,p_OLD_INST_LOC_ID                   => NULL
6390             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
6391             ,p_OLD_INST_USAGE_CODE               => NULL
6392             ,p_NEW_INST_USAGE_CODE               => p_instance_rec.INSTANCE_USAGE_CODE
6393             ,p_OLD_last_vld_organization_id      => NULL
6394             ,p_NEW_last_vld_organization_id      => l_last_vld_organization_id
6395             ,p_OLD_CONFIG_INST_REV_NUM           => NULL
6396             ,p_NEW_CONFIG_INST_REV_NUM           => p_instance_rec.CONFIG_INST_REV_NUM
6397             ,p_OLD_CONFIG_VALID_STATUS           => NULL
6398             ,p_NEW_CONFIG_VALID_STATUS           => p_instance_rec.CONFIG_VALID_STATUS
6399             ,p_OLD_INSTANCE_DESCRIPTION          => NULL
6400             ,p_NEW_INSTANCE_DESCRIPTION          => p_instance_rec.INSTANCE_DESCRIPTION
6401             ,p_OLD_INSTALL_DATE                  => NULL
6402             ,p_NEW_INSTALL_DATE                  => p_instance_rec.INSTALL_DATE
6403             ,p_OLD_RETURN_BY_DATE                => NULL
6404             ,p_NEW_RETURN_BY_DATE                => p_instance_rec.RETURN_BY_DATE
6405             ,p_OLD_ACTUAL_RETURN_DATE            => NULL
6406             ,p_NEW_ACTUAL_RETURN_DATE            => p_instance_rec.ACTUAL_RETURN_DATE
6407             ,p_old_last_oe_agreement_id          => NULL
6408             ,p_new_last_oe_agreement_id          => p_instance_rec.last_oe_agreement_id
6409             ,p_OLD_LAST_OE_ORDER_LINE_ID         => NULL
6410             ,p_NEW_LAST_OE_ORDER_LINE_ID         => p_instance_rec.LAST_OE_ORDER_LINE_ID
6411             ,p_OLD_LAST_OE_RMA_LINE_ID           => NULL
6412             ,p_NEW_LAST_OE_RMA_LINE_ID           => p_instance_rec.LAST_OE_RMA_LINE_ID
6413             ,p_OLD_LAST_WIP_JOB_ID               => NULL
6414             ,p_NEW_LAST_WIP_JOB_ID               => p_instance_rec.LAST_WIP_JOB_ID
6415             ,p_OLD_LAST_PO_PO_LINE_ID            => NULL
6416             ,p_NEW_LAST_PO_PO_LINE_ID            => p_instance_rec.LAST_PO_PO_LINE_ID
6417             ,p_OLD_LAST_PA_PROJECT_ID            => NULL
6418             ,p_NEW_LAST_PA_PROJECT_ID            => p_instance_rec.LAST_PA_PROJECT_ID
6419             ,p_OLD_LAST_PA_TASK_ID               => NULL
6420             ,p_NEW_LAST_PA_TASK_ID               => p_instance_rec.LAST_PA_TASK_ID
6421             ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => NULL
6422             ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
6423             ,p_OLD_LAST_OE_PO_NUMBER             => NULL
6424             ,p_NEW_LAST_OE_PO_NUMBER             => p_instance_rec.LAST_OE_PO_NUMBER
6425             --start of parameters addition for eam integration--
6426             ,p_OLD_NETWORK_ASSET_FLAG             => NULL
6427             ,p_NEW_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
6428             ,p_OLD_MAINTAINABLE_FLAG              => NULL
6429             ,p_NEW_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
6430             ,p_OLD_PN_LOCATION_ID                 => NULL
6431             ,p_NEW_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
6432             ,p_OLD_ASSET_CRITICALITY_CODE         => NULL
6433             ,p_NEW_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
6434             ,p_OLD_CATEGORY_ID                    => NULL
6435             ,p_NEW_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
6436             ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => NULL
6437             ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
6438             ,p_OLD_INSTANTIATION_FLAG             => NULL
6439             ,p_NEW_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
6440             ,p_OLD_LINEAR_LOCATION_ID             => NULL
6441             ,p_NEW_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
6442             ,p_OLD_OPERATIONAL_LOG_FLAG           => NULL
6443             ,p_NEW_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
6444             ,p_OLD_CHECKIN_STATUS                 => NULL
6445             ,p_NEW_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
6446             ,p_OLD_SUP_WARRANTY_EXP_DATE          => NULL
6447             ,p_NEW_SUP_WARRANTY_EXP_DATE          => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
6448             ,p_OLD_ATTRIBUTE16                    => NULL
6449             ,p_NEW_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
6450             ,p_OLD_ATTRIBUTE17                    => NULL
6451             ,p_NEW_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
6452             ,p_OLD_ATTRIBUTE18                    => NULL
6453             ,p_NEW_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
6454             ,p_OLD_ATTRIBUTE19                    => NULL
6455             ,p_NEW_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
6456             ,p_OLD_ATTRIBUTE20                    => NULL
6457             ,p_NEW_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
6458             ,p_OLD_ATTRIBUTE21                    => NULL
6459             ,p_NEW_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
6460             ,p_OLD_ATTRIBUTE22                    => NULL
6461             ,p_NEW_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
6462             ,p_OLD_ATTRIBUTE23                    => NULL
6463             ,p_NEW_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
6464             ,p_OLD_ATTRIBUTE24                    => NULL
6465             ,p_NEW_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
6466             ,p_OLD_ATTRIBUTE25                    => NULL
6467             ,p_NEW_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
6468             ,p_OLD_ATTRIBUTE26                    => NULL
6469             ,p_NEW_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
6470             ,p_OLD_ATTRIBUTE27                    => NULL
6471             ,p_NEW_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
6472             ,p_OLD_ATTRIBUTE28                    => NULL
6473             ,p_NEW_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
6474             ,p_OLD_ATTRIBUTE29                    => NULL
6475             ,p_NEW_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
6476             ,p_OLD_ATTRIBUTE30                    => NULL
6477             ,p_NEW_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
6478   	  --end of parameters addition for eam integration--
6479    -- Addition of columns for FA Integration
6480             ,p_OLD_PAYABLES_UNIT_PRICE            => NULL
6481             ,p_NEW_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
6482             ,p_OLD_PAYABLES_CURRENCY_CODE         => NULL
6483             ,p_NEW_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
6484             ,p_OLD_PURCHASE_UNIT_PRICE            => NULL
6485             ,p_NEW_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
6486             ,p_OLD_PURCHASE_CURRENCY_CODE         => NULL
6487             ,p_NEW_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
6488             ,p_OLD_SALES_UNIT_PRICE               => NULL
6489             ,p_NEW_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
6490             ,p_OLD_SALES_CURRENCY_CODE            => NULL
6491             ,p_NEW_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
6492             ,p_OLD_OPERATIONAL_STATUS_CODE        => NULL
6493             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
6494     -- End addition of columns for FA Integration
6495             -- Begin Add Code for Siebel Genesis Project
6496             ,p_OLD_SOURCE_CODE                    => NULL
6497             ,p_NEW_SOURCE_CODE                    => p_instance_rec.SOURCE_CODE
6498             -- End Add Code for Siebel Genesis Project
6499             );
6500 
6501 
6502          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
6503               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_CREATE_HISTORY');
6504               FND_MSG_PUB.Add;
6505               RAISE FND_API.G_EXC_ERROR;
6506          END IF;
6507 
6508       END IF;  -- Check for p_called_from_grp
6509       -- End of API body
6510 
6511       -- Standard check of p_commit.
6512       IF FND_API.To_Boolean( p_commit ) THEN
6513            COMMIT WORK;
6514       END IF;
6515 
6516       -- Standard call to get message count and IF count is  get message info.
6517       FND_MSG_PUB.Count_And_Get
6518            (p_count  =>  x_msg_count,
6519             p_data   =>  x_msg_data
6520            );
6521 
6522 EXCEPTION
6523     WHEN FND_API.G_EXC_ERROR THEN
6524           ROLLBACK TO create_item_instance_pvt;
6525             x_return_status := FND_API.G_RET_STS_ERROR ;
6526             FND_MSG_PUB.Count_And_Get
6527                 (p_count  =>  x_msg_count,
6528                  p_data   =>  x_msg_data
6529                 );
6530     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6531           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6532           ROLLBACK TO create_item_instance_pvt;
6533           FND_MSG_PUB.Count_And_Get
6534                 ( p_count  =>  x_msg_count,
6535                   p_data   =>  x_msg_data
6536                 );
6537     WHEN OTHERS THEN
6538           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6539           ROLLBACK TO create_item_instance_pvt;
6540               IF   FND_MSG_PUB.Check_Msg_Level
6541                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6542               THEN
6543                     FND_MSG_PUB.Add_Exc_Msg
6544                   (G_PKG_NAME ,
6545                    l_api_name
6546                   );
6547               END IF;
6548               FND_MSG_PUB.Count_And_Get
6549                   (p_count  =>  x_msg_count,
6550                    p_data   =>  x_msg_data
6551                   );
6552 
6553 END create_item_instance;
6554 
6555 /*---------------------------------------------------*/
6556 /* Procedure name:  Anything_To_Update               */
6557 /* Description   :  This function  checks if any of  */
6558 /*                  the columns related to instance  */
6559 /*                  are changing                     */
6560 /*---------------------------------------------------*/
6561 
6562 FUNCTION Anything_To_Update(p_instance_rec    csi_datastructures_pub.instance_rec)
6563 
6564 RETURN BOOLEAN
6565 IS
6566 
6567     l_return_value BOOLEAN := FALSE;
6568 
6569 BEGIN
6570 
6571             IF ((p_instance_rec.instance_number            IS NULL) OR
6572                 (p_instance_rec.instance_number            <> FND_API.G_MISS_CHAR)) OR
6573                ((p_instance_rec.external_reference         IS NULL) OR
6574                 (p_instance_rec.external_reference         <> FND_API.G_MISS_CHAR)) OR
6575                ((p_instance_rec.inventory_item_id          IS NULL) OR
6576                 (p_instance_rec.inventory_item_id          <> FND_API.G_MISS_NUM)) OR
6577                ((p_instance_rec.inventory_revision         IS NULL) OR
6578                 (p_instance_rec.inventory_revision         <> FND_API.G_MISS_CHAR)) OR
6579                ((p_instance_rec.inv_master_organization_id IS NULL) OR
6580                 (p_instance_rec.inv_master_organization_id <> FND_API.G_MISS_NUM)) OR
6581                ((p_instance_rec.serial_number              IS NULL) OR
6582                 (p_instance_rec.serial_number              <> FND_API.G_MISS_CHAR)) OR
6583                ((p_instance_rec.mfg_serial_number_flag     IS NULL) OR
6584                 (p_instance_rec.mfg_serial_number_flag     <> FND_API.G_MISS_CHAR)) OR
6585                ((p_instance_rec.lot_number                 IS NULL) OR
6586                 (p_instance_rec.lot_number                 <> FND_API.G_MISS_CHAR)) OR
6587                ((p_instance_rec.quantity                   IS NULL) OR
6588                 (p_instance_rec.quantity                   <> FND_API.G_MISS_NUM)) OR
6589                ((p_instance_rec.unit_of_measure            IS NULL) OR
6590                 (p_instance_rec.unit_of_measure            <> FND_API.G_MISS_CHAR)) OR
6591                ((p_instance_rec.accounting_class_code      IS NULL) OR
6592                 (p_instance_rec.accounting_class_code      <> FND_API.G_MISS_CHAR)) OR
6593                ((p_instance_rec.instance_condition_id      IS NULL) OR
6594                 (p_instance_rec.instance_condition_id      <> FND_API.G_MISS_NUM)) OR
6595                ((p_instance_rec.instance_status_id         IS NULL) OR
6596                 (p_instance_rec.instance_status_id         <> FND_API.G_MISS_NUM)) OR
6597                ((p_instance_rec.customer_view_flag         IS NULL) OR
6598                 (p_instance_rec.customer_view_flag         <> FND_API.G_MISS_CHAR)) OR
6599                ((p_instance_rec.merchant_view_flag         IS NULL) OR
6600                 (p_instance_rec.merchant_view_flag         <> FND_API.G_MISS_CHAR)) OR
6601                ((p_instance_rec.sellable_flag              IS NULL) OR
6602                 (p_instance_rec.sellable_flag              <> FND_API.G_MISS_CHAR)) OR
6603                ((p_instance_rec.system_id                  IS NULL) OR
6604                 (p_instance_rec.system_id                  <> FND_API.G_MISS_NUM)) OR
6605                ((p_instance_rec.instance_type_code         IS NULL) OR
6606                 (p_instance_rec.instance_type_code         <> FND_API.G_MISS_CHAR)) OR
6607                ((p_instance_rec.active_start_date          IS NULL) OR
6608                 (p_instance_rec.active_start_date          <> FND_API.G_MISS_DATE)) OR
6609                ((p_instance_rec.active_end_date            IS NULL) OR
6610                 (p_instance_rec.active_end_date            <> FND_API.G_MISS_DATE)) OR
6611                ((p_instance_rec.location_type_code         IS NULL) OR
6612                 (p_instance_rec.location_type_code         <> FND_API.G_MISS_CHAR)) OR
6613                ((p_instance_rec.location_id                IS NULL) OR
6614                 (p_instance_rec.location_id                <> FND_API.G_MISS_NUM)) OR
6615                ((p_instance_rec.inv_organization_id        IS NULL) OR
6616                 (p_instance_rec.inv_organization_id        <> FND_API.G_MISS_NUM)) OR
6617                ((p_instance_rec.inv_subinventory_name      IS NULL) OR
6618                 (p_instance_rec.inv_subinventory_name      <> FND_API.G_MISS_CHAR)) OR
6619                ((p_instance_rec.inv_locator_id             IS NULL) OR
6620                 (p_instance_rec.inv_locator_id             <> FND_API.G_MISS_NUM)) OR
6621                ((p_instance_rec.pa_project_id              IS NULL) OR
6622                 (p_instance_rec.pa_project_id              <> FND_API.G_MISS_NUM)) OR
6623                ((p_instance_rec.pa_project_task_id         IS NULL) OR
6624                 (p_instance_rec.pa_project_task_id         <> FND_API.G_MISS_NUM)) OR
6625                ((p_instance_rec.in_transit_order_line_id   IS NULL) OR
6626                 (p_instance_rec.in_transit_order_line_id   <> FND_API.G_MISS_NUM)) OR
6627                ((p_instance_rec.wip_job_id                 IS NULL) OR
6628                 (p_instance_rec.wip_job_id                 <> FND_API.G_MISS_NUM)) OR
6629                ((p_instance_rec.po_order_line_id           IS NULL) OR
6630                 (p_instance_rec.po_order_line_id           <> FND_API.G_MISS_NUM)) OR
6631                ((p_instance_rec.last_oe_order_line_id      IS NULL) OR
6632                 (p_instance_rec.last_oe_order_line_id      <> FND_API.G_MISS_NUM)) OR
6633                ((p_instance_rec.last_oe_rma_line_id        IS NULL) OR
6634                 (p_instance_rec.last_oe_rma_line_id        <> FND_API.G_MISS_NUM)) OR
6635                ((p_instance_rec.last_po_po_line_id         IS NULL) OR
6636                 (p_instance_rec.last_po_po_line_id         <> FND_API.G_MISS_NUM)) OR
6637                ((p_instance_rec.last_oe_po_number          IS NULL) OR
6638                 (p_instance_rec.last_oe_po_number          <> FND_API.G_MISS_CHAR)) OR
6639                ((p_instance_rec.last_wip_job_id            IS NULL) OR
6640                 (p_instance_rec.last_wip_job_id            <> FND_API.G_MISS_NUM)) OR
6641                ((p_instance_rec.last_pa_project_id         IS NULL) OR
6642                 (p_instance_rec.last_pa_project_id         <> FND_API.G_MISS_NUM)) OR
6643                ((p_instance_rec.last_pa_task_id            IS NULL) OR
6644                 (p_instance_rec.last_pa_task_id            <> FND_API.G_MISS_NUM)) OR
6645                ((p_instance_rec.last_oe_agreement_id       IS NULL) OR
6646                 (p_instance_rec.last_oe_agreement_id       <> FND_API.G_MISS_NUM)) OR
6647                ((p_instance_rec.install_date               IS NULL) OR
6648                 (p_instance_rec.install_date               <> FND_API.G_MISS_DATE)) OR
6649                ((p_instance_rec.manually_created_flag      IS NULL) OR
6650                 (p_instance_rec.manually_created_flag      <> FND_API.G_MISS_CHAR)) OR
6651                ((p_instance_rec.return_by_date             IS NULL) OR
6652                 (p_instance_rec.return_by_date             <> FND_API.G_MISS_DATE)) OR
6653                ((p_instance_rec.actual_return_date         IS NULL) OR
6654                 (p_instance_rec.actual_return_date         <> FND_API.G_MISS_DATE)) OR
6655                ((p_instance_rec.creation_complete_flag     IS NULL) OR
6656                 (p_instance_rec.creation_complete_flag     <> FND_API.G_MISS_CHAR)) OR
6657                ((p_instance_rec.completeness_flag          IS NULL) OR
6658                 (p_instance_rec.completeness_flag          <> FND_API.G_MISS_CHAR)) OR
6659                ((p_instance_rec.context                    IS NULL) OR
6660                 (p_instance_rec.context                    <> FND_API.G_MISS_CHAR)) OR
6661                ((p_instance_rec.attribute1                 IS NULL) OR
6662                 (p_instance_rec.attribute1                 <> FND_API.G_MISS_CHAR)) OR
6663                ((p_instance_rec.attribute2                 IS NULL) OR
6664                 (p_instance_rec.attribute2                 <> FND_API.G_MISS_CHAR)) OR
6665                ((p_instance_rec.attribute3                 IS NULL) OR
6666                 (p_instance_rec.attribute3                 <> FND_API.G_MISS_CHAR)) OR
6667                ((p_instance_rec.attribute4                 IS NULL) OR
6668                 (p_instance_rec.attribute4                 <> FND_API.G_MISS_CHAR)) OR
6669                ((p_instance_rec.attribute5                 IS NULL) OR
6670                 (p_instance_rec.attribute5                 <> FND_API.G_MISS_CHAR)) OR
6671                ((p_instance_rec.attribute6                 IS NULL) OR
6672                 (p_instance_rec.attribute6                 <> FND_API.G_MISS_CHAR)) OR
6673                ((p_instance_rec.attribute7                 IS NULL) OR
6674                 (p_instance_rec.attribute7                 <> FND_API.G_MISS_CHAR)) OR
6675                ((p_instance_rec.attribute8                 IS NULL) OR
6676                 (p_instance_rec.attribute8                 <> FND_API.G_MISS_CHAR)) OR
6677                ((p_instance_rec.attribute9                 IS NULL) OR
6678                 (p_instance_rec.attribute9                 <> FND_API.G_MISS_CHAR)) OR
6679                ((p_instance_rec.attribute10                IS NULL) OR
6680                 (p_instance_rec.attribute10                <> FND_API.G_MISS_CHAR)) OR
6681                ((p_instance_rec.attribute11                IS NULL) OR
6682                 (p_instance_rec.attribute11                <> FND_API.G_MISS_CHAR)) OR
6683                ((p_instance_rec.attribute12                IS NULL) OR
6684                 (p_instance_rec.attribute12                <> FND_API.G_MISS_CHAR)) OR
6685                ((p_instance_rec.attribute13                IS NULL) OR
6686                 (p_instance_rec.attribute13                <> FND_API.G_MISS_CHAR)) OR
6687                ((p_instance_rec.attribute14                IS NULL) OR
6688                 (p_instance_rec.attribute14                <> FND_API.G_MISS_CHAR)) OR
6689                ((p_instance_rec.attribute15                IS NULL) OR
6690                 (p_instance_rec.attribute15                <> FND_API.G_MISS_CHAR)) OR
6691                ((p_instance_rec.last_txn_line_detail_id    IS NULL) OR
6692                 (p_instance_rec.last_txn_line_detail_id    <> FND_API.G_MISS_NUM)) OR
6693                ((p_instance_rec.install_location_type_code IS NULL) OR
6694                 (p_instance_rec.install_location_type_code <> FND_API.G_MISS_CHAR)) OR
6695                ((p_instance_rec.install_location_id        IS NULL) OR
6696                 (p_instance_rec.install_location_id        <> FND_API.G_MISS_NUM)) OR
6697                ((p_instance_rec.instance_usage_code        IS NULL) OR
6698                 (p_instance_rec.instance_usage_code        <> FND_API.G_MISS_CHAR)) OR
6699   -- The following code has been added by sguthiva for att enhancements
6700                ((p_instance_rec.config_inst_hdr_id         IS NULL) OR
6701                 (p_instance_rec.config_inst_hdr_id         <> FND_API.G_MISS_NUM)) OR
6702                ((p_instance_rec.config_inst_rev_num        IS NULL) OR
6703                 (p_instance_rec.config_inst_rev_num        <> FND_API.G_MISS_NUM)) OR
6704                ((p_instance_rec.config_inst_item_id        IS NULL) OR
6705                 (p_instance_rec.config_inst_item_id        <> FND_API.G_MISS_NUM)) OR
6706                ((p_instance_rec.config_valid_status        IS NULL) OR
6707                 (p_instance_rec.config_valid_status        <> FND_API.G_MISS_CHAR)) OR
6708                ((p_instance_rec.instance_description       IS NULL) OR
6709                 (p_instance_rec.instance_description       <> FND_API.G_MISS_CHAR)) OR
6710                 --start of code for eam integration--
6711                ((p_instance_rec.network_asset_flag           IS NULL) OR
6712                 (p_instance_rec.network_asset_flag          <> FND_API.G_MISS_CHAR)) OR
6713                ((p_instance_rec.maintainable_flag            IS NULL) OR
6714                 (p_instance_rec.maintainable_flag            <> FND_API.G_MISS_CHAR)) OR
6715                ((p_instance_rec.pn_location_id               IS NULL) OR
6716                 (p_instance_rec.pn_location_id               <> FND_API.G_MISS_NUM)) OR
6717                ((p_instance_rec.asset_criticality_code       IS NULL) OR
6718                 (p_instance_rec.asset_criticality_code       <> FND_API.G_MISS_CHAR)) OR
6719                ((p_instance_rec.category_id                  IS NULL) OR
6720                 (p_instance_rec.category_id                  <> FND_API.G_MISS_NUM)) OR
6721                ((p_instance_rec.equipment_gen_object_id      IS NULL) OR
6722                 (p_instance_rec.equipment_gen_object_id      <> FND_API.G_MISS_NUM)) OR
6723                ((p_instance_rec.instantiation_flag           IS NULL) OR
6724                 (p_instance_rec.instantiation_flag           <> FND_API.G_MISS_CHAR)) OR
6725                ((p_instance_rec.linear_location_id           IS NULL) OR
6726                 (p_instance_rec.linear_location_id           <> FND_API.G_MISS_NUM)) OR
6727                ((p_instance_rec.operational_log_flag         IS NULL) OR
6728                 (p_instance_rec.operational_log_flag         <> FND_API.G_MISS_CHAR)) OR
6729                ((p_instance_rec.checkin_status               IS NULL) OR
6730                 (p_instance_rec.checkin_status               <> FND_API.G_MISS_NUM)) OR
6731                ((p_instance_rec.supplier_warranty_exp_date   IS NULL) OR
6732                 (p_instance_rec.supplier_warranty_exp_date   <> FND_API.G_MISS_DATE)) OR
6733                ((p_instance_rec.attribute16                  IS NULL) OR
6734                 (p_instance_rec.attribute16                  <> FND_API.G_MISS_CHAR)) OR
6735                ((p_instance_rec.attribute17                  IS NULL) OR
6736                 (p_instance_rec.attribute17                  <> FND_API.G_MISS_CHAR)) OR
6737                ((p_instance_rec.attribute18                  IS NULL) OR
6738                 (p_instance_rec.attribute18                  <> FND_API.G_MISS_CHAR)) OR
6739                ((p_instance_rec.attribute19                  IS NULL) OR
6740                 (p_instance_rec.attribute19                  <> FND_API.G_MISS_CHAR)) OR
6741                ((p_instance_rec.attribute20                  IS NULL) OR
6742                 (p_instance_rec.attribute20                  <> FND_API.G_MISS_CHAR)) OR
6743                ((p_instance_rec.attribute21                  IS NULL) OR
6744                 (p_instance_rec.attribute21                  <> FND_API.G_MISS_CHAR)) OR
6745                ((p_instance_rec.attribute22                  IS NULL) OR
6746                 (p_instance_rec.attribute22                  <> FND_API.G_MISS_CHAR)) OR
6747                ((p_instance_rec.attribute23                  IS NULL) OR
6748                 (p_instance_rec.attribute23                  <> FND_API.G_MISS_CHAR)) OR
6749                ((p_instance_rec.attribute24                  IS NULL) OR
6750                 (p_instance_rec.attribute24                  <> FND_API.G_MISS_CHAR)) OR
6751                ((p_instance_rec.attribute25                  IS NULL) OR
6752                 (p_instance_rec.attribute25                  <> FND_API.G_MISS_CHAR)) OR
6753                ((p_instance_rec.attribute26                  IS NULL) OR
6754                 (p_instance_rec.attribute26                  <> FND_API.G_MISS_CHAR)) OR
6755                ((p_instance_rec.attribute27                  IS NULL) OR
6756                 (p_instance_rec.attribute27                  <> FND_API.G_MISS_CHAR)) OR
6757                ((p_instance_rec.attribute28                  IS NULL) OR
6758                 (p_instance_rec.attribute28                  <> FND_API.G_MISS_CHAR)) OR
6759                ((p_instance_rec.attribute29                  IS NULL) OR
6760                 (p_instance_rec.attribute29                  <> FND_API.G_MISS_CHAR)) OR
6761                ((p_instance_rec.attribute30                  IS NULL) OR
6762                 (p_instance_rec.attribute30                  <> FND_API.G_MISS_CHAR)) OR
6763                  --end of code for eam integration--
6764                  -- Addition of columns for FA Integration
6765                ((p_instance_rec.purchase_unit_price          IS NULL) OR
6766                 (p_instance_rec.purchase_unit_price          <> FND_API.G_MISS_NUM)) OR
6767                ((p_instance_rec.purchase_currency_code       IS NULL) OR
6768                 (p_instance_rec.purchase_currency_code       <> FND_API.G_MISS_CHAR)) OR
6769                ((p_instance_rec.payables_unit_price          IS NULL) OR
6770                 (p_instance_rec.payables_unit_price          <> FND_API.G_MISS_NUM)) OR
6771                ((p_instance_rec.payables_currency_code       IS NULL) OR
6772                 (p_instance_rec.payables_currency_code       <> FND_API.G_MISS_CHAR)) OR
6773                ((p_instance_rec.sales_unit_price             IS NULL) OR
6774                 (p_instance_rec.sales_unit_price             <> FND_API.G_MISS_NUM)) OR
6775                ((p_instance_rec.sales_currency_code          IS NULL) OR
6776                 (p_instance_rec.sales_currency_code          <> FND_API.G_MISS_CHAR)) OR
6777                ((p_instance_rec.operational_status_code      IS NULL) OR
6778                 (p_instance_rec.operational_status_code      <> FND_API.G_MISS_CHAR))
6779     -- End addition of columns for FA Integration
6780              THEN
6781   -- End of code addition by sguthiva for att enhancements
6782 
6783                         l_return_value := TRUE;
6784              END IF;
6785 
6786 
6787 RETURN l_return_value;
6788 
6789 END Anything_To_Update;
6790 
6791 /*----------------------------------------------------*/
6792 /*  This Procedure validates the accounting class code*/
6793 /*  depending upon the location type code             */
6794 /*----------------------------------------------------*/
6795 PROCEDURE get_and_update_acct_class
6796 ( p_api_version          IN      NUMBER
6797  ,p_commit               IN      VARCHAR2
6798  ,p_init_msg_list        IN      VARCHAR2
6799  ,p_validation_level     IN      NUMBER
6800  ,p_instance_id          IN      NUMBER
6801  ,p_instance_expiry_flag IN      VARCHAR2
6802  ,p_txn_rec              IN OUT  NOCOPY csi_datastructures_pub.transaction_rec
6803  ,x_acct_class_code      OUT     NOCOPY VARCHAR2
6804  ,x_return_status        OUT     NOCOPY VARCHAR2
6805  ,x_msg_count            OUT     NOCOPY NUMBER
6806  ,x_msg_data             OUT     NOCOPY VARCHAR2
6807 )
6808 
6809 IS
6810 
6811 l_api_name            CONSTANT VARCHAR2(30)   := 'GET_AND_UPDATE_ACCT_CLASS';
6812 l_api_version         CONSTANT NUMBER         := 1.0;
6813 l_debug_level         NUMBER;
6814 l_acct_class_code     VARCHAR2(10);
6815 l_accounting_class    VARCHAR2(10);
6816 l_loc_type_code       VARCHAR2(30);
6817 --l_obj_ver_num       NUMBER;
6818 l_instance_rec        csi_datastructures_pub.instance_rec;
6819 l_instance_id_lst     csi_datastructures_pub.id_tbl ;
6820 x_msg_index_out       NUMBER;
6821 l_item_attribute_tbl  csi_item_instance_pvt.item_attribute_tbl;
6822 l_location_tbl        csi_item_instance_pvt.location_tbl;
6823 l_generic_id_tbl      csi_item_instance_pvt.generic_id_tbl;
6824 l_lookup_tbl          csi_item_instance_pvt.lookup_tbl;
6825 l_ins_count_rec       csi_item_instance_pvt.ins_count_rec;
6826 px_oks_txn_inst_tbl   oks_ibint_pub.txn_instance_tbl;
6827 px_child_inst_tbl     csi_item_instance_grp.child_inst_tbl;
6828 
6829 BEGIN
6830 
6831     -- Standard Start of API savepoint
6832        IF fnd_api.to_boolean(p_commit)
6833        THEN
6834         SAVEPOINT  get_and_update_acct_class;
6835        END IF;
6836 
6837     -- Standard call to check for call compatibility.
6838        IF NOT FND_API.Compatible_API_Call (l_api_version,
6839                                            p_api_version,
6840                                            l_api_name   ,
6841                                            G_PKG_NAME    )
6842        THEN
6843              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6844        END IF;
6845 
6846     -- Initialize message list if p_init_msg_list is set to TRUE.
6847        IF FND_API.to_Boolean( p_init_msg_list ) THEN
6848              FND_MSG_PUB.initialize;
6849        END IF;
6850 
6851     -- Initialize API return status to success
6852        x_return_status := FND_API.G_RET_STS_SUCCESS;
6853 
6854         -- Check the profile option debug_level for debug message reporting
6855            l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
6856        --  If debug_level = 1 then dump the procedure name
6857            IF (l_debug_level > 0) THEN
6858               csi_gen_utility_pvt.put_line ('get_and_update_acct_class');
6859            END IF;
6860 
6861        -- If the debug level = 2 then dump all the parameters values.
6862            IF (l_debug_level > 1) THEN
6863                  csi_gen_utility_pvt.put_line ( 'get_and_update_acct_class' ||
6864                                                    p_api_version       ||'-'||
6865                                                    p_commit
6866                                                );
6867            END IF;
6868 
6869     l_instance_rec.instance_id := p_instance_id;
6870 
6871    BEGIN
6872       SELECT location_type_code,
6873              accounting_class_code,
6874              object_version_number,
6875              inventory_item_id,
6876              last_vld_organization_id,
6877              quantity
6878       INTO   l_loc_type_code,
6879              l_accounting_class,
6880              l_instance_rec.object_version_number,
6881              l_instance_rec.inventory_item_id,
6882              l_instance_rec.vld_organization_id,
6883              l_instance_rec.quantity
6884       FROM   csi_item_instances
6885       WHERE  instance_id = l_instance_rec.instance_id;
6886    EXCEPTION
6887       WHEN NO_DATA_FOUND THEN
6888            FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INSTANCE_NUM');
6889            FND_MESSAGE.SET_TOKEN('INSTANCE_NUMBER', l_instance_rec.instance_id);
6890            FND_MSG_PUB.Add;
6891           RAISE FND_API.G_EXC_ERROR;
6892    END;
6893 
6894 
6895     csi_item_instance_vld_pvt.get_valid_acct_class(p_instance_id          => p_instance_id,
6896                                                    p_curr_acct_class_code => NULL, --l_accounting_class,
6897                                                    p_loc_type_code        => l_loc_type_code,
6898                                                    x_acct_class_code      => l_acct_class_code
6899                                                    );
6900 
6901     IF l_acct_class_code <> l_accounting_class THEN
6902 
6903       l_instance_rec.accounting_class_code := l_acct_class_code;
6904       l_instance_rec.check_for_instance_expiry  :=  p_instance_expiry_flag;
6905       update_item_instance
6906        (
6907          p_api_version      => p_api_version
6908         ,p_commit           => fnd_api.g_false
6909         ,p_init_msg_list    => p_init_msg_list
6910         ,p_validation_level => p_validation_level
6911         ,p_instance_rec     => l_instance_rec
6912         ,p_txn_rec          => p_txn_rec
6913         ,x_instance_id_lst  => l_instance_id_lst
6914         ,x_return_status    => x_return_status
6915         ,x_msg_count        => x_msg_count
6916         ,x_msg_data         => x_msg_data
6917         ,p_item_attribute_tbl => l_item_attribute_tbl
6918         ,p_location_tbl     => l_location_tbl
6919         ,p_generic_id_tbl     => l_generic_id_tbl
6920         ,p_lookup_tbl         => l_lookup_tbl
6921         ,p_ins_count_rec      => l_ins_count_rec
6922         ,p_oks_txn_inst_tbl   => px_oks_txn_inst_tbl
6923         ,p_child_inst_tbl     => px_child_inst_tbl
6924        );
6925 
6926       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
6927           FOR i in 1..x_msg_Count LOOP
6928             FND_MSG_PUB.Get(p_msg_index     => i,
6929                             p_encoded       => 'F',
6930                             p_data          => x_msg_data,
6931                             p_msg_index_out => x_msg_index_out );
6932 
6933          End LOOP;
6934          RAISE fnd_api.g_exc_error;
6935       END IF;
6936 
6937     END IF;
6938 
6939     IF FND_API.To_Boolean( p_commit )
6940     THEN
6941                 COMMIT WORK;
6942     END IF;
6943 
6944      -- Standard call to get message count and IF count is  get message info.
6945       FND_MSG_PUB.Count_And_Get
6946            (p_count  =>  x_msg_count,
6947             p_data   =>  x_msg_data
6948            );
6949 
6950 EXCEPTION
6951     WHEN FND_API.G_EXC_ERROR THEN
6952            IF FND_API.To_Boolean( p_commit )
6953            THEN
6954             ROLLBACK TO get_and_update_acct_class;
6955            END IF;
6956             x_return_status := FND_API.G_RET_STS_ERROR ;
6957             FND_MSG_PUB.Count_And_Get
6958                 (p_count  =>  x_msg_count,
6959                  p_data   =>  x_msg_data
6960                 );
6961     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6962           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6963            IF FND_API.To_Boolean( p_commit )
6964            THEN
6965             ROLLBACK TO get_and_update_acct_class;
6966            END IF;
6967           FND_MSG_PUB.Count_And_Get
6968                 ( p_count  =>  x_msg_count,
6969                   p_data   =>  x_msg_data
6970                 );
6971     WHEN OTHERS THEN
6972           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6973            IF FND_API.To_Boolean( p_commit )
6974            THEN
6975             ROLLBACK TO get_and_update_acct_class;
6976            END IF;
6977               IF   FND_MSG_PUB.Check_Msg_Level
6978                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6979               THEN
6980                     FND_MSG_PUB.Add_Exc_Msg
6981                   (G_PKG_NAME ,
6982                    l_api_name
6983                   );
6984               END IF;
6985               FND_MSG_PUB.Count_And_Get
6986                   (p_count  =>  x_msg_count,
6987                    p_data   =>  x_msg_data
6988                   );
6989 
6990 END get_and_update_acct_class;
6991 
6992 /*------------------------------------------------------*/
6993 /* Procedure name: update_child_instance_location       */
6994 /* Description   : procedure used to update the child   */
6995 /*                 Instances                            */
6996 /*------------------------------------------------------*/
6997 
6998 PROCEDURE update_child_instance_location
6999      (p_api_version         IN     NUMBER,
7000       p_commit              IN     VARCHAR2,
7001       p_init_msg_list       IN     VARCHAR2,
7002       p_validation_level    IN     NUMBER,
7003       p_instance_rec        IN OUT NOCOPY csi_datastructures_pub.instance_rec,
7004       p_original_status_id  IN     NUMBER,
7005       p_original_system_id  IN     NUMBER,
7006       p_txn_rec             IN OUT NOCOPY csi_datastructures_pub.transaction_rec,
7007       x_instance_id_lst     OUT    NOCOPY csi_datastructures_pub.id_tbl,
7008       x_return_status       OUT    NOCOPY VARCHAR2,
7009       p_unexpire            IN     VARCHAR2,
7010       p_oks_txn_inst_tbl    IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl,
7011       p_child_inst_tbl      IN OUT NOCOPY csi_item_instance_grp.child_inst_tbl,
7012       p_orig_install_date   IN     DATE,
7013       x_msg_count           OUT    NOCOPY NUMBER,
7014       x_msg_data            OUT    NOCOPY VARCHAR2
7015      )
7016 IS
7017     l_api_name               CONSTANT VARCHAR2(30)   := 'UPDATE_CHILD_INST_LOCATION';
7018     l_api_version            CONSTANT NUMBER         := 1.0;
7019     l_debug_level            NUMBER;
7020     l_instance_id            NUMBER;
7021     l_dummy                  NUMBER;
7022     l_instance_rec           csi_datastructures_pub.instance_rec:=p_instance_rec;
7023     l_object_version_number  NUMBER;
7024     l_return_value           BOOLEAN;
7025     l_csi_item_instance_h_id NUMBER;
7026     l_full_dump_frequency    NUMBER;
7027     l_mod_value              NUMBER;
7028     l_dump_flag              VARCHAR2(1);
7029     l_msg_index              NUMBER;
7030     l_msg_count              NUMBER;
7031     l_instance_hist_rec      csi_datastructures_pub.instance_history_rec;
7032     --Start of:Added for bug 5615169
7033     l_inst_hist_tbl_blk_ins  csi_datastructures_pub.instance_history_tbl; -- used for bulk insert
7034     l_inst_hist_rec_tab      csi_item_instance_grp.instance_history_rec_tab; -- used for column table
7035     l_ciih_blk_ins_cnt       NUMBER  := 0;
7036     l_user_id      NUMBER := FND_GLOBAL.USER_ID;
7037     l_login_id     NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
7038     --End of:Added for bug 5615169
7039 
7040 CURSOR curr_instance_rec(p_instance_id IN NUMBER)  IS
7041            SELECT
7042                  INSTANCE_ID,
7043                  INSTANCE_NUMBER,
7044                  EXTERNAL_REFERENCE,
7045                  INVENTORY_ITEM_ID,
7046                  NULL VLD_ORGANIZATION_ID,
7047                  INVENTORY_REVISION,
7048                  INV_MASTER_ORGANIZATION_ID,
7049                  SERIAL_NUMBER,
7050                  MFG_SERIAL_NUMBER_FLAG,
7051                  LOT_NUMBER,
7052                  QUANTITY,
7053                  UNIT_OF_MEASURE,
7054                  ACCOUNTING_CLASS_CODE,
7055                  INSTANCE_CONDITION_ID,
7056                  INSTANCE_STATUS_ID,
7057                  CUSTOMER_VIEW_FLAG,
7058                  MERCHANT_VIEW_FLAG,
7059                  SELLABLE_FLAG,
7060                  SYSTEM_ID,
7061                  INSTANCE_TYPE_CODE,
7062                  ACTIVE_START_DATE,
7063                  ACTIVE_END_DATE,
7064                  LOCATION_TYPE_CODE,
7065                  LOCATION_ID,
7066                  INV_ORGANIZATION_ID,
7067                  INV_SUBINVENTORY_NAME,
7068                  INV_LOCATOR_ID,
7069                  PA_PROJECT_ID,
7070                  PA_PROJECT_TASK_ID,
7071                  IN_TRANSIT_ORDER_LINE_ID,
7072                  WIP_JOB_ID,
7073                  PO_ORDER_LINE_ID,
7074                  LAST_OE_ORDER_LINE_ID,
7075                  LAST_OE_RMA_LINE_ID,
7076                  LAST_PO_PO_LINE_ID,
7077                  LAST_OE_PO_NUMBER,
7078                  LAST_WIP_JOB_ID,
7079                  LAST_PA_PROJECT_ID,
7080                  LAST_PA_TASK_ID,
7081                  LAST_OE_AGREEMENT_ID,
7082                  INSTALL_DATE,
7083                  MANUALLY_CREATED_FLAG,
7084                  RETURN_BY_DATE,
7085                  ACTUAL_RETURN_DATE,
7086                  CREATION_COMPLETE_FLAG,
7087                  COMPLETENESS_FLAG,
7088                  NULL VERSION_LABEL,
7089                  NULL VERSION_LABEL_DESCRIPTION,
7090                  CONTEXT,
7091                  ATTRIBUTE1,
7092                  ATTRIBUTE2,
7093                  ATTRIBUTE3,
7094                  ATTRIBUTE4,
7095                  ATTRIBUTE5,
7096                  ATTRIBUTE6,
7097                  ATTRIBUTE7,
7098                  ATTRIBUTE8,
7099                  ATTRIBUTE9,
7100                  ATTRIBUTE10,
7101                  ATTRIBUTE11,
7102                  ATTRIBUTE12,
7103                  ATTRIBUTE13,
7104                  ATTRIBUTE14,
7105                  ATTRIBUTE15,
7106                  OBJECT_VERSION_NUMBER,
7107                  LAST_TXN_LINE_DETAIL_ID,
7108                  INSTALL_LOCATION_TYPE_CODE,
7109                  INSTALL_LOCATION_ID,
7110                  INSTANCE_USAGE_CODE,
7111                  LAST_VLD_ORGANIZATION_ID,
7112                  CONFIG_INST_REV_NUM,
7113                  CONFIG_VALID_STATUS,
7114                  INSTANCE_DESCRIPTION,
7115                --start of column addition for eam integration--
7116                  NETWORK_ASSET_FLAG,
7117                  MAINTAINABLE_FLAG,
7118                  PN_LOCATION_ID,
7119                  ASSET_CRITICALITY_CODE,
7120                  CATEGORY_ID,
7121                  EQUIPMENT_GEN_OBJECT_ID,
7122                  INSTANTIATION_FLAG,
7123                  LINEAR_LOCATION_ID,
7124                  OPERATIONAL_LOG_FLAG,
7125                  CHECKIN_STATUS,
7126                  SUPPLIER_WARRANTY_EXP_DATE,
7127                  ATTRIBUTE16,
7128                  ATTRIBUTE17,
7129                  ATTRIBUTE18,
7130                  ATTRIBUTE19,
7131                  ATTRIBUTE20,
7132                  ATTRIBUTE21,
7133                  ATTRIBUTE22,
7134                  ATTRIBUTE23,
7135                  ATTRIBUTE24,
7136                  ATTRIBUTE25,
7137                  ATTRIBUTE26,
7138                  ATTRIBUTE27,
7139                  ATTRIBUTE28,
7140                  ATTRIBUTE29,
7141                  ATTRIBUTE30,
7142                --end of column addition for eam integration--
7143                -- Addition of columns for FA Integration
7144                  PURCHASE_UNIT_PRICE,
7145                  PURCHASE_CURRENCY_CODE,
7146                  PAYABLES_UNIT_PRICE,
7147                  PAYABLES_CURRENCY_CODE,
7148                  SALES_UNIT_PRICE,
7149                  SALES_CURRENCY_CODE,
7150                  OPERATIONAL_STATUS_CODE,
7151                -- End addition of columns for FA Integration
7152                  SOURCE_CODE -- Added Code for Siebel Genesis Project
7153            FROM  csi_item_instances
7154            WHERE instance_id = p_instance_id
7155            FOR UPDATE OF OBJECT_VERSION_NUMBER ;
7156 
7157     l_curr_instance_rec      curr_instance_rec%ROWTYPE;
7158     --
7159     CURSOR new_instance_rec(p_instance_id IN NUMBER) IS
7160     select * from csi_item_instances
7161     where instance_id = p_instance_id;
7162     --
7163     l_new_instance_rec      new_instance_rec%ROWTYPE;
7164 
7165  CURSOR ins_hist_csr(p_instance_history_id NUMBER) IS
7166              SELECT  instance_history_id
7167                     ,instance_id
7168                     ,transaction_id
7169                     ,old_instance_number
7170                     ,new_instance_number
7171                     ,old_external_reference
7172                     ,new_external_reference
7173                     ,old_inventory_item_id
7174                     ,new_inventory_item_id
7175                     ,old_inventory_revision
7176                     ,new_inventory_revision
7177                     ,old_inv_master_organization_id
7178                     ,new_inv_master_organization_id
7179                     ,old_serial_number
7180                     ,new_serial_number
7181                     ,old_mfg_serial_number_flag
7182                     ,new_mfg_serial_number_flag
7183                     ,old_lot_number
7184                     ,new_lot_number
7185                     ,old_quantity
7186                     ,new_quantity
7187                     ,old_unit_of_measure
7188                     ,new_unit_of_measure
7189                     ,old_accounting_class_code
7190                     ,new_accounting_class_code
7191                     ,old_instance_condition_id
7192                     ,new_instance_condition_id
7193                     ,old_instance_status_id
7194                     ,new_instance_status_id
7195                     ,old_customer_view_flag
7196                     ,new_customer_view_flag
7197                     ,old_merchant_view_flag
7198                     ,new_merchant_view_flag
7199                     ,old_sellable_flag
7200                     ,new_sellable_flag
7201                     ,old_system_id
7202                     ,new_system_id
7203                     ,old_instance_type_code
7204                     ,new_instance_type_code
7205                     ,old_active_start_date
7206                     ,new_active_start_date
7207                     ,old_active_end_date
7208                     ,new_active_end_date
7209                     ,old_location_type_code
7210                     ,new_location_type_code
7211                     ,old_location_id
7212                     ,new_location_id
7213                     ,old_inv_organization_id
7214                     ,new_inv_organization_id
7215                     ,old_inv_subinventory_name
7216                     ,new_inv_subinventory_name
7217                     ,old_inv_locator_id
7218                     ,new_inv_locator_id
7219                     ,old_pa_project_id
7220                     ,new_pa_project_id
7221                     ,old_pa_project_task_id
7222                     ,new_pa_project_task_id
7223                     ,old_in_transit_order_line_id
7224                     ,new_in_transit_order_line_id
7225                     ,old_wip_job_id
7226                     ,new_wip_job_id
7227                     ,old_po_order_line_id
7228                     ,new_po_order_line_id
7229                     ,old_completeness_flag
7230                     ,new_completeness_flag
7231                     ,old_context
7232                     ,new_context
7233                     ,old_attribute1
7234                     ,new_attribute1
7235                     ,old_attribute2
7236                     ,new_attribute2
7237                     ,old_attribute3
7238                     ,new_attribute3
7239                     ,old_attribute4
7240                     ,new_attribute4
7241                     ,old_attribute5
7242                     ,new_attribute5
7243                     ,old_attribute6
7244                     ,new_attribute6
7245                     ,old_attribute7
7246                     ,new_attribute7
7247                     ,old_attribute8
7248                     ,new_attribute8
7249                     ,old_attribute9
7250                     ,new_attribute9
7251                     ,old_attribute10
7252                     ,new_attribute10
7253                     ,old_attribute11
7254                     ,new_attribute11
7255                     ,old_attribute12
7256                     ,new_attribute12
7257                     ,old_attribute13
7258                     ,new_attribute13
7259                     ,old_attribute14
7260                     ,new_attribute14
7261                     ,old_attribute15
7262                     ,new_attribute15
7263                     ,full_dump_flag
7264                     ,old_inst_loc_type_code
7265                     ,new_inst_loc_type_code
7266                     ,old_inst_loc_id
7267                     ,new_inst_loc_id
7268                     ,old_inst_usage_code
7269                     ,new_inst_usage_code
7270                     ,old_last_vld_organization_id
7271                     ,new_last_vld_organization_id
7272                     ,old_config_inst_rev_num
7273                     ,new_config_inst_rev_num
7274                     ,old_config_valid_status
7275                     ,new_config_valid_status
7276                     ,old_instance_description
7277                     ,new_instance_description
7278                     ,old_oe_agreement_id
7279                     ,new_oe_agreement_id
7280                     ,old_last_oe_order_line_id
7281                     ,new_last_oe_order_line_id
7282                     ,old_last_oe_rma_line_id
7283                     ,new_last_oe_rma_line_id
7284                     ,old_last_wip_job_id
7285                     ,new_last_wip_job_id
7286                     ,old_last_po_po_line_id
7287                     ,new_last_po_po_line_id
7288                     ,old_last_pa_project_id
7289                     ,new_last_pa_project_id
7290                     ,old_last_pa_task_id
7291                     ,new_last_pa_task_id
7292                     ,old_last_txn_line_detail_id
7293                     ,new_last_txn_line_detail_id
7294                     ,old_last_oe_po_number
7295                     ,new_last_oe_po_number
7296 		    --start of column addition for eam integration--
7297                     ,old_network_asset_flag
7298                     ,new_network_asset_flag
7299                     ,old_maintainable_flag
7300                     ,new_maintainable_flag
7301                     ,old_pn_location_id
7302                     ,new_pn_location_id
7303                     ,old_asset_criticality_code
7304                     ,new_asset_criticality_code
7305                     ,old_category_id
7306                     ,new_category_id
7307                     ,old_equipment_gen_object_id
7308                     ,new_equipment_gen_object_id
7309                     ,old_instantiation_flag
7310                     ,new_instantiation_flag
7311                     ,old_linear_location_id
7312                     ,new_linear_location_id
7313                     ,old_operational_log_flag
7314                     ,new_operational_log_flag
7315                     ,old_checkin_status
7316                     ,new_checkin_status
7317                     ,old_supplier_warranty_exp_date
7318                     ,new_supplier_warranty_exp_date
7319                     ,old_attribute16
7320                     ,new_attribute16
7321                     ,old_attribute17
7322                     ,new_attribute17
7323                     ,old_attribute18
7324                     ,new_attribute18
7325                     ,old_attribute19
7326                     ,new_attribute19
7327                     ,old_attribute20
7328                     ,new_attribute20
7329                     ,old_attribute21
7330                     ,new_attribute21
7331                     ,old_attribute22
7332                     ,new_attribute22
7333                     ,old_attribute23
7334                     ,new_attribute23
7335                     ,old_attribute24
7336                     ,new_attribute24
7337                     ,old_attribute25
7338                     ,new_attribute25
7339                     ,old_attribute26
7340                     ,new_attribute26
7341                     ,old_attribute27
7342                     ,new_attribute27
7343                     ,old_attribute28
7344                     ,new_attribute28
7345                     ,old_attribute29
7346                     ,new_attribute29
7347                     ,old_attribute30
7348                     ,new_attribute30
7349                     ,old_install_date
7350                     ,new_install_date
7351 		    --end of column addition for eam integration--
7352             -- Addition of columns for FA Integration
7353                     ,old_payables_unit_price
7354                     ,new_payables_unit_price
7355                     ,old_payables_currency_code
7356                     ,new_payables_currency_code
7357                     ,old_purchase_unit_price
7358                     ,new_purchase_unit_price
7359                     ,old_purchase_currency_code
7360                     ,new_purchase_currency_code
7361                     ,old_sales_unit_price
7362                     ,new_sales_unit_price
7363                     ,old_sales_currency_code
7364                     ,new_sales_currency_code
7365                     ,old_operational_status_code
7366                     ,new_operational_status_code
7367              -- End addition of columns for FA Integration
7368                     -- Begin Add Code for Siebel Genesis Project
7369                     ,OLD_SOURCE_CODE
7370                     ,NEW_SOURCE_CODE
7371                     -- End Add Code for Siebel Genesis Project
7372              FROM   csi_item_instances_h
7373              WHERE  instance_history_id = p_instance_history_id
7374              FOR UPDATE OF OBJECT_VERSION_NUMBER ;
7375 
7376    l_ins_hist_id             NUMBER;
7377    l_ins_hist_csr            ins_hist_csr%ROWTYPE;
7378    l_last_vld_organization_id NUMBER;
7379    l_child_temp               VARCHAR2(1);
7380    p_rel_query_rec            csi_datastructures_pub.relationship_query_rec;
7381    l_rel_tbl                  csi_datastructures_pub.ii_relationship_tbl;
7382    l_ii_relationship_level_tbl csi_ii_relationships_pvt.ii_relationship_level_tbl;
7383    l_vld_org_id               NUMBER;
7384    PROCESS_NEXT               EXCEPTION;
7385    l_instance_status_id       NUMBER;
7386    l_system_id                NUMBER;
7387    l_termination_status       BOOLEAN := FALSE;
7388    l_order_line_id            NUMBER;
7389    l_oks_txn_type             VARCHAR2(3);
7390    l_internal_party_id        NUMBER;
7391    l_party_id                 NUMBER;
7392    l_eam_item                 BOOLEAN := FALSE;
7393    l_instance_history_id      NUMBER;
7394    l_maintenance_object_type  NUMBER := 3;
7395    l_child_count              NUMBER;
7396    l_install_date             DATE;
7397    l_valid                    BOOLEAN     := TRUE;
7398    l_creation_flag            VARCHAR2(1);
7399    l_config_inst_hdr_id       NUMBER := fnd_api.g_miss_num;
7400    l_config_inst_rev_num      NUMBER := fnd_api.g_miss_num;
7401    l_config_inst_item_id      NUMBER := fnd_api.g_miss_num;
7402    l_config_valid_status VARCHAR2(30) := fnd_api.g_miss_char;
7403 
7404 BEGIN
7405 
7406    -- Standard Start of API savepoint
7407       IF FND_API.To_Boolean( p_commit )
7408       THEN
7409         SAVEPOINT    update_child_instance_pvt;
7410       END IF;
7411 
7412 
7413    -- Standard call to check for call compatibility.
7414       IF NOT FND_API.Compatible_API_Call (l_api_version,
7415                                           p_api_version,
7416                                           l_api_name   ,
7417                                           G_PKG_NAME    )
7418       THEN
7419             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7420       END IF;
7421 
7422    -- Initialize message list if p_init_msg_list is set to TRUE.
7423       IF FND_API.to_Boolean( p_init_msg_list ) THEN
7424             FND_MSG_PUB.initialize;
7425       END IF;
7426    -- Initialize API return status to success
7427       x_return_status := FND_API.G_RET_STS_SUCCESS;
7428 
7429    -- Check the profile option debug_level for debug message reporting
7430       l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
7431 
7432    -- If debug_level = 1 then dump the procedure name
7433       IF (l_debug_level > 0) THEN
7434           csi_gen_utility_pvt.put_line ( 'update_child_instance_pvt');
7435       END IF;
7436 
7437    -- If the debug level = 2 then dump all the parameters values.
7438       IF (l_debug_level > 1) THEN
7439           csi_gen_utility_pvt.put_line ( 'update_child_instance_pvt:'    ||
7440                                               p_api_version         ||'-'||
7441                                               p_commit              ||'-'||
7442                                               p_init_msg_list            );
7443       END IF;
7444 
7445    -- Start API body
7446    IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
7447       csi_gen_utility_pvt.populate_install_param_rec;
7448    END IF;
7449    --
7450    l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
7451    --
7452    IF l_internal_party_id IS NULL THEN
7453       FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
7454       FND_MSG_PUB.ADD;
7455       RAISE FND_API.G_EXC_ERROR;
7456    END IF;
7457    --
7458    -- ADDED FOR BUG 2957236
7459      IF p_instance_rec.instance_status_id IS NOT NULL AND
7460         p_instance_rec.instance_status_id <> fnd_api.g_miss_num
7461      THEN
7462          IF csi_item_instance_vld_pvt.termination_status
7463             ( p_instance_status_id => p_instance_rec.instance_status_id )
7464          THEN
7465              l_termination_status := TRUE;
7466              l_config_inst_hdr_id := null;
7467              l_config_inst_rev_num := null;
7468              l_config_inst_item_id := null;
7469              l_config_valid_status := null;
7470          ELSE
7471              l_termination_status := FALSE;
7472          END IF;
7473      END IF;
7474     -- END ADDITION FOR BUG 2957236
7475 
7476  -- Start API body
7477  p_rel_query_rec.object_id := p_instance_rec.instance_id;
7478  p_rel_query_rec.relationship_type_code := 'COMPONENT-OF';
7479  --
7480 IF p_rel_query_rec.object_id IS NOT NULL AND
7481    p_rel_query_rec.object_id <> FND_API.G_MISS_NUM THEN
7482    IF p_unexpire = FND_API.G_TRUE THEN
7483        csi_gen_utility_pvt.put_line ( 'Calling Get_Children for Un-expiry...');
7484        csi_ii_relationships_pvt.Get_Children
7485 	 ( p_relationship_query_rec   => p_rel_query_rec,
7486 	   p_rel_tbl                  => l_rel_tbl,
7487 	   p_depth                    => NULL,
7488 	   p_active_relationship_only => FND_API.G_TRUE,
7489            p_active_instances_only    => FND_API.G_FALSE, -- should be passed only when un-expiring
7490 	   p_time_stamp               => FND_API.G_MISS_DATE,
7491 	   p_get_dfs                  => FND_API.G_FALSE,
7492 	   p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
7493 	   x_return_status            => x_return_status,
7494 	   x_msg_count                => x_msg_count,
7495 	   x_msg_data                 => x_msg_data
7496 	 );
7497        --
7498        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7499 	  FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
7500 	  FND_MSG_PUB.Add;
7501 	  RAISE FND_API.G_EXC_ERROR;
7502        END IF;
7503    ELSE
7504       csi_gen_utility_pvt.put_line ( 'Calling Get_Children for Regular Inheritance...');
7505       csi_ii_relationships_pvt.Get_Children
7506 	 ( p_relationship_query_rec   => p_rel_query_rec,
7507 	   p_rel_tbl                  => l_rel_tbl,
7508 	   p_depth                    => NULL,
7509 	   p_active_relationship_only => FND_API.G_TRUE,
7510 	   p_time_stamp               => FND_API.G_MISS_DATE,
7511 	   p_get_dfs                  => FND_API.G_FALSE,
7512 	   p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
7513 	   x_return_status            => x_return_status,
7514 	   x_msg_count                => x_msg_count,
7515 	   x_msg_data                 => x_msg_data
7516 	 );
7517        --
7518        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7519 	  FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
7520 	  FND_MSG_PUB.Add;
7521 	  RAISE FND_API.G_EXC_ERROR;
7522        END IF;
7523    END IF;
7524 END IF;
7525   --
7526 csi_gen_utility_pvt.put_line ( 'Rel Table count is : '||to_char(l_rel_tbl.count));
7527 --
7528 -- FOR l_child_instance_id IN child_instances
7529 IF l_rel_tbl.count > 0 THEN
7530    FOR j IN l_rel_tbl.FIRST .. l_rel_tbl.LAST
7531    LOOP
7532        BEGIN
7533            csi_gen_utility_pvt.put_line ( 'Processing Child Instance : '||to_char(l_rel_tbl(j).subject_id));
7534            -- Opening Cursor to retrieve Child Id records Details
7535               OPEN curr_instance_rec(l_rel_tbl(j).subject_id);
7536               FETCH curr_instance_rec INTO l_curr_instance_rec;
7537                  IF curr_instance_rec%NOTFOUND THEN
7538                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
7539                     FND_MSG_PUB.ADD;
7540                     RAISE FND_API.G_EXC_ERROR;
7541                  END IF;
7542               CLOSE curr_instance_rec;
7543               --This code has been added to make sure that the expired child instance should not get inherited
7544               --if there is any update to the parent in the component-of relationship.
7545               --Start of modifications for Bug#2887590
7546               --
7547               -- srramakr commented out active_end_date condition since the inheritance should look only for Qty
7548               -- active_end_date check will not allow you to un-expire a child instance having qty > 0.
7549               -- No need to select from CSI_ITEM_INSTANCES since l_curr_instance_re already has the instance info.
7550               IF l_curr_instance_rec.quantity = 0 THEN
7551                  RAISE PROCESS_NEXT;
7552               END IF;
7553               --End of modifications for Bug#2887590
7554               --
7555 
7556        p_instance_rec.object_version_number := l_curr_instance_rec.object_version_number + 1;
7557 
7558          -- Following code is added for bug 2957236.
7559          -- If termination_status then it should be assigned to all the child instances
7560          -- else it should be assigned to only those instances which are with the same instance status
7561          -- as that of the parent.
7562          l_instance_status_id:= fnd_api.g_miss_num;
7563          IF l_termination_status
7564          THEN
7565             l_instance_status_id := p_instance_rec.instance_status_id;
7566          ELSIF NOT(l_termination_status)
7567          THEN
7568             IF  p_original_status_id=l_curr_instance_rec.instance_status_id
7569             AND p_original_status_id <> fnd_api.g_miss_num
7570             THEN
7571                l_instance_status_id:=p_instance_rec.instance_status_id;
7572             END IF;
7573          END IF;
7574          -- System_id Cascade
7575          l_system_id := fnd_api.g_miss_num;
7576          IF p_original_system_id IS NOT NULL AND
7577             p_original_system_id <> fnd_api.g_miss_num THEN
7578             IF p_original_system_id = nvl(l_curr_instance_rec.system_id,-999) THEN
7579                l_system_id := p_instance_rec.system_id;
7580             END IF;
7581          ELSIF p_original_system_id IS NULL AND
7582                l_curr_instance_rec.system_id IS NULL THEN
7583             l_system_id := p_instance_rec.system_id;
7584          END IF;
7585          -- Install Date Cascade
7586          -- Cascade only if the component has the same install date as parent
7587          l_install_date := fnd_api.g_miss_date;
7588          IF p_orig_install_date IS NOT NULL AND
7589             p_orig_install_date <> fnd_api.g_miss_date THEN
7590             IF p_orig_install_date = nvl(l_curr_instance_rec.install_date,fnd_api.g_miss_date) THEN
7591                l_install_date := p_instance_rec.install_date;
7592             END IF;
7593          ELSIF p_orig_install_date IS NULL AND
7594                l_curr_instance_rec.install_date IS NULL THEN
7595             l_install_date := p_instance_rec.install_date;
7596          END IF;
7597          -- Start code addition for eam integration
7598            IF csi_item_instance_vld_pvt.Check_for_eam_item
7599               (p_inventory_item_id  => l_curr_instance_rec.inventory_item_id,
7600                p_organization_id    => l_curr_instance_rec.last_vld_organization_id)
7601            THEN
7602              l_eam_item := TRUE;
7603            END IF;
7604 
7605            IF l_eam_item AND
7606              (p_instance_rec.active_end_date IS NOT NULL AND
7607               p_instance_rec.active_end_date <> fnd_api.g_miss_date)
7608            THEN
7609             IF NOT eam_common_utilities_pvt.check_deactivate
7610               (p_maintenance_object_id   => l_rel_tbl(j).subject_id
7611               ,p_maintenance_object_type => l_maintenance_object_type)
7612             THEN
7613               csi_gen_utility_pvt.put_line('Error from eam_common_utilities_pvt.check_deactivate API ');
7614               RAISE fnd_api.g_exc_error;
7615             END IF;
7616            END IF;
7617         -- End code addition for eam integration
7618         --
7619         l_child_count := p_child_inst_tbl.count + 1;
7620         p_child_inst_tbl(l_child_count) := l_rel_tbl(j).subject_id;
7621         --
7622     -- validate instance status id
7623        IF NVL(l_instance_status_id,fnd_api.g_miss_num) <> fnd_api.g_miss_num
7624        THEN
7625          csi_item_instance_vld_pvt.is_valid_status(
7626            p_instance_status_id     => l_instance_status_id,
7627            p_creation_complete_flag => l_creation_flag,
7628            l_return_value           => l_valid);
7629           IF NOT(l_valid)
7630           THEN
7631              RAISE fnd_api.g_exc_error;
7632           END IF;
7633         END IF;
7634 
7635         IF l_instance_status_id IS NOT NULL AND
7636            l_instance_status_id <> FND_API.G_MISS_NUM AND
7637            l_instance_status_id <> l_curr_instance_rec.INSTANCE_STATUS_ID
7638         THEN
7639            IF NOT csi_item_instance_vld_pvt.is_status_updateable
7640                   (p_instance_status => l_instance_status_id
7641                   ,p_current_status  => l_curr_instance_rec.INSTANCE_STATUS_ID)
7642            THEN
7643              RAISE fnd_api.g_exc_error;
7644            END IF;
7645         END IF;
7646 
7647         --Start of:Added for bug 6177045
7648         IF l_curr_instance_rec.LAST_OE_ORDER_LINE_ID IS NULL THEN
7649             l_curr_instance_rec.LAST_OE_ORDER_LINE_ID := p_instance_Rec.LAST_OE_ORDER_LINE_ID;
7650         ELSE
7651             l_curr_instance_rec.LAST_OE_ORDER_LINE_ID := fnd_api.g_miss_num;
7652         END IF;
7653         --End of:Added for bug 6177045
7654 
7655        CSI_ITEM_INSTANCES_PKG.Update_Row
7656        (  p_INSTANCE_ID                 => l_rel_tbl(j).subject_id,
7657           p_INSTANCE_NUMBER             => FND_API.G_MISS_CHAR,
7658           p_EXTERNAL_REFERENCE          => FND_API.G_MISS_CHAR,
7659           p_INVENTORY_ITEM_ID           => FND_API.G_MISS_NUM,
7660           p_INVENTORY_REVISION          => FND_API.G_MISS_CHAR,
7661           p_INV_MASTER_ORGANIZATION_ID  => FND_API.G_MISS_NUM,
7662           p_SERIAL_NUMBER               => FND_API.G_MISS_CHAR,
7663           p_MFG_SERIAL_NUMBER_FLAG      => FND_API.G_MISS_CHAR,
7664           p_LOT_NUMBER                  => FND_API.G_MISS_CHAR,
7665           p_QUANTITY                    => FND_API.G_MISS_NUM,
7666           p_UNIT_OF_MEASURE             => FND_API.G_MISS_CHAR,
7667           p_ACCOUNTING_CLASS_CODE       => p_instance_rec.ACCOUNTING_CLASS_CODE,
7668           p_INSTANCE_CONDITION_ID       => FND_API.G_MISS_NUM,
7669           p_INSTANCE_STATUS_ID          => l_instance_status_id, --p_instance_rec.INSTANCE_STATUS_ID,
7670           p_CUSTOMER_VIEW_FLAG          => FND_API.G_MISS_CHAR,
7671           p_MERCHANT_VIEW_FLAG          => FND_API.G_MISS_CHAR,
7672           p_SELLABLE_FLAG               => FND_API.G_MISS_CHAR,
7673           p_SYSTEM_ID                   => l_system_id,--FND_API.G_MISS_NUM,
7674           p_INSTANCE_TYPE_CODE          => FND_API.G_MISS_CHAR,
7675           p_ACTIVE_START_DATE           => FND_API.G_MISS_DATE,
7676           p_ACTIVE_END_DATE             => p_instance_Rec.ACTIVE_END_DATE,
7677           p_LOCATION_TYPE_CODE          => p_instance_rec.LOCATION_TYPE_CODE,
7678           p_LOCATION_ID                 => p_instance_rec.LOCATION_ID,
7679           p_INV_ORGANIZATION_ID         => p_instance_rec.INV_ORGANIZATION_ID,
7680           p_INV_SUBINVENTORY_NAME       => p_instance_rec.INV_SUBINVENTORY_NAME,
7681           p_INV_LOCATOR_ID              => p_instance_rec.INV_LOCATOR_ID,
7682           p_PA_PROJECT_ID               => p_instance_rec.PA_PROJECT_ID,
7683           p_PA_PROJECT_TASK_ID          => p_instance_rec.PA_PROJECT_TASK_ID,
7684           p_IN_TRANSIT_ORDER_LINE_ID    => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID,
7685           p_WIP_JOB_ID                  => p_instance_rec.WIP_JOB_ID,
7686           p_PO_ORDER_LINE_ID            => p_instance_rec.PO_ORDER_LINE_ID,
7687           --p_LAST_OE_ORDER_LINE_ID       => p_instance_rec.LAST_OE_ORDER_LINE_ID,  Commented for bug 6177045
7688 	  p_LAST_OE_ORDER_LINE_ID       => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID, --Added for bug 6177045
7689           --Start of changes for bug:5899043
7690 	  p_LAST_OE_RMA_LINE_ID         => FND_API.G_MISS_NUM, --p_instance_rec.LAST_OE_RMA_LINE_ID,
7691           p_LAST_PO_PO_LINE_ID          => FND_API.G_MISS_NUM, --p_instance_rec.LAST_PO_PO_LINE_ID,
7692           p_LAST_OE_PO_NUMBER           => FND_API.G_MISS_CHAR,--p_instance_rec.LAST_OE_PO_NUMBER,
7693           p_LAST_WIP_JOB_ID             => FND_API.G_MISS_NUM, --p_instance_rec.LAST_WIP_JOB_ID,
7694           p_LAST_PA_PROJECT_ID          => FND_API.G_MISS_NUM, --p_instance_rec.LAST_PA_PROJECT_ID,
7695           p_LAST_PA_TASK_ID             => FND_API.G_MISS_NUM, --p_instance_rec.LAST_PA_TASK_ID,
7696           p_LAST_OE_AGREEMENT_ID        => FND_API.G_MISS_NUM, --p_instance_rec.LAST_OE_AGREEMENT_ID,
7697 	  --End of changes for bug:5899043
7698           p_INSTALL_DATE                => l_install_date, -- Install Date should be cascaded
7699           p_MANUALLY_CREATED_FLAG       => FND_API.G_MISS_CHAR,
7700           p_RETURN_BY_DATE              => FND_API.G_MISS_DATE,
7701           p_ACTUAL_RETURN_DATE          => FND_API.G_MISS_DATE,
7702           p_CREATION_COMPLETE_FLAG      => FND_API.G_MISS_CHAR,
7703           p_COMPLETENESS_FLAG           => FND_API.G_MISS_CHAR,
7704           p_CONTEXT                     => FND_API.G_MISS_CHAR,
7705           p_ATTRIBUTE1                  => FND_API.G_MISS_CHAR,
7706           p_ATTRIBUTE2                  => FND_API.G_MISS_CHAR,
7707           p_ATTRIBUTE3                  => FND_API.G_MISS_CHAR,
7708           p_ATTRIBUTE4                  => FND_API.G_MISS_CHAR,
7709           p_ATTRIBUTE5                  => FND_API.G_MISS_CHAR,
7710           p_ATTRIBUTE6                  => FND_API.G_MISS_CHAR,
7711           p_ATTRIBUTE7                  => FND_API.G_MISS_CHAR,
7712           p_ATTRIBUTE8                  => FND_API.G_MISS_CHAR,
7713           p_ATTRIBUTE9                  => FND_API.G_MISS_CHAR,
7714           p_ATTRIBUTE10                 => FND_API.G_MISS_CHAR,
7715           p_ATTRIBUTE11                 => FND_API.G_MISS_CHAR,
7716           p_ATTRIBUTE12                 => FND_API.G_MISS_CHAR,
7717           p_ATTRIBUTE13                 => FND_API.G_MISS_CHAR,
7718           p_ATTRIBUTE14                 => FND_API.G_MISS_CHAR,
7719           p_ATTRIBUTE15                 => FND_API.G_MISS_CHAR,
7720           p_CREATED_BY                  => fnd_api.g_miss_num,
7721           p_CREATION_DATE               => fnd_api.g_miss_date,
7722           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID,
7723           p_LAST_UPDATE_DATE            => SYSDATE,
7724           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.CONC_LOGIN_ID,
7725           p_OBJECT_VERSION_NUMBER       => p_instance_rec.OBJECT_VERSION_NUMBER,
7726           p_LAST_TXN_LINE_DETAIL_ID     => FND_API.G_MISS_NUM,
7727           p_INSTALL_LOCATION_TYPE_CODE  => p_instance_rec.INSTALL_LOCATION_TYPE_CODE,
7728           p_INSTALL_LOCATION_ID         => p_instance_rec.INSTALL_LOCATION_ID,
7729           p_INSTANCE_USAGE_CODE         => FND_API.G_MISS_CHAR,
7730           p_LAST_VLD_ORGANIZATION_ID    => FND_API.G_MISS_NUM,
7731           p_CONFIG_INST_HDR_ID          => l_config_inst_hdr_id, --FND_API.G_MISS_NUM,
7732           p_CONFIG_INST_REV_NUM         => l_config_inst_rev_num, --FND_API.G_MISS_NUM,
7733           p_CONFIG_INST_ITEM_ID         => l_config_inst_item_id, --FND_API.G_MISS_NUM,
7734           p_CONFIG_VALID_STATUS         => l_config_valid_status,--FND_API.G_MISS_CHAR,
7735           p_INSTANCE_DESCRIPTION        => FND_API.G_MISS_CHAR,
7736           p_REQUEST_ID                  => FND_API.G_MISS_NUM,
7737           p_PROGRAM_APPLICATION_ID      => FND_API.G_MISS_NUM,
7738           p_PROGRAM_ID                  => FND_API.G_MISS_NUM,
7739           p_PROGRAM_UPDATE_DATE         => FND_API.G_MISS_DATE,
7740 	  --start of parameters addition for eam integration--
7741           p_NETWORK_ASSET_FLAG          => FND_API.G_MISS_CHAR,
7742           p_MAINTAINABLE_FLAG           => FND_API.G_MISS_CHAR,
7743           p_PN_LOCATION_ID              => FND_API.G_MISS_NUM,
7744           p_ASSET_CRITICALITY_CODE      => FND_API.G_MISS_CHAR,
7745           p_CATEGORY_ID                 => FND_API.G_MISS_NUM,
7746           p_EQUIPMENT_GEN_OBJECT_ID     => FND_API.G_MISS_NUM,
7747           p_INSTANTIATION_FLAG          => FND_API.G_MISS_CHAR,
7748           p_LINEAR_LOCATION_ID          => FND_API.G_MISS_NUM,
7749           p_OPERATIONAL_LOG_FLAG        => FND_API.G_MISS_CHAR,
7750           p_CHECKIN_STATUS              => FND_API.G_MISS_NUM,
7751           p_SUPPLIER_WARRANTY_EXP_DATE  => FND_API.G_MISS_DATE,
7752           p_ATTRIBUTE16                 => FND_API.G_MISS_CHAR,
7753           p_ATTRIBUTE17                 => FND_API.G_MISS_CHAR,
7754           p_ATTRIBUTE18                 => FND_API.G_MISS_CHAR,
7755           p_ATTRIBUTE19                 => FND_API.G_MISS_CHAR,
7756           p_ATTRIBUTE20                 => FND_API.G_MISS_CHAR,
7757           p_ATTRIBUTE21                 => FND_API.G_MISS_CHAR,
7758           p_ATTRIBUTE22                 => FND_API.G_MISS_CHAR,
7759           p_ATTRIBUTE23                 => FND_API.G_MISS_CHAR,
7760           p_ATTRIBUTE24                 => FND_API.G_MISS_CHAR,
7761           p_ATTRIBUTE25                 => FND_API.G_MISS_CHAR,
7762           p_ATTRIBUTE26                 => FND_API.G_MISS_CHAR,
7763           p_ATTRIBUTE27                 => FND_API.G_MISS_CHAR,
7764           p_ATTRIBUTE28                 => FND_API.G_MISS_CHAR,
7765           p_ATTRIBUTE29                 => FND_API.G_MISS_CHAR,
7766           p_ATTRIBUTE30                 => FND_API.G_MISS_CHAR,
7767 	  --end of parameters addition for eam integration--
7768    -- Addition of columns for FA Integration
7769           p_PURCHASE_UNIT_PRICE         => FND_API.G_MISS_NUM,
7770           p_PURCHASE_CURRENCY_CODE      => FND_API.G_MISS_CHAR,
7771           p_PAYABLES_UNIT_PRICE         => FND_API.G_MISS_NUM,
7772           p_PAYABLES_CURRENCY_CODE      => FND_API.G_MISS_CHAR,
7773           p_SALES_UNIT_PRICE            => FND_API.G_MISS_NUM,
7774           p_SALES_CURRENCY_CODE         => FND_API.G_MISS_CHAR,
7775           p_OPERATIONAL_STATUS_CODE     => p_instance_rec.operational_status_code,
7776     -- End addition of columns for FA Integration
7777           p_SOURCE_CODE                 => p_instance_rec.SOURCE_CODE -- Added Code for Siebel Genesis Project
7778     );
7779 
7780 -- Get the full_dump_frequency from csi_install_parameter
7781        --
7782       IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
7783           csi_gen_utility_pvt.populate_install_param_rec;
7784        END IF;
7785        --
7786        l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
7787        --
7788        IF l_full_dump_frequency IS NULL THEN
7789           FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
7790           FND_MSG_PUB.ADD;
7791           RAISE FND_API.G_EXC_ERROR;
7792        END IF;
7793        --
7794  -- Get a unique history item instance id from the sequence
7795           l_csi_item_instance_h_id :=
7796                                  csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
7797 
7798        SELECT MOD(p_instance_rec.object_version_number,l_full_dump_frequency)
7799        INTO   l_mod_value
7800        FROM   dual;
7801 
7802        -- Start of modifications for Bug#2547034 on 09/20/02 - rtalluri
7803         BEGIN
7804         SELECT  instance_history_id
7805         INTO    l_ins_hist_id
7806         FROM    csi_item_instances_h h
7807         WHERE   h.transaction_id = p_txn_rec.transaction_id
7808         AND     h.instance_id = l_rel_tbl(j).subject_id;
7809 
7810         OPEN   ins_hist_csr(l_ins_hist_id);
7811         FETCH  ins_hist_csr INTO l_ins_hist_csr ;
7812         CLOSE  ins_hist_csr;
7813 
7814         IF l_ins_hist_csr.full_dump_flag = 'Y'
7815         THEN
7816           CSI_ITEM_INSTANCES_H_PKG.Update_Row
7817            ( p_INSTANCE_HISTORY_ID               => l_ins_hist_id
7818             ,p_INSTANCE_ID                       => fnd_api.g_miss_num
7819             ,p_TRANSACTION_ID                    => fnd_api.g_miss_num
7820             ,p_OLD_INSTANCE_NUMBER               => fnd_api.g_miss_char
7821             ,p_NEW_INSTANCE_NUMBER               => fnd_api.g_miss_char
7822             ,p_OLD_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
7823             ,p_NEW_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
7824             ,p_OLD_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
7825             ,p_NEW_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
7826             ,p_OLD_INVENTORY_REVISION            => fnd_api.g_miss_char
7827             ,p_NEW_INVENTORY_REVISION            => fnd_api.g_miss_char
7828             ,p_OLD_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
7829             ,p_NEW_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
7830             ,p_OLD_SERIAL_NUMBER                 => fnd_api.g_miss_char
7831             ,p_NEW_SERIAL_NUMBER                 => fnd_api.g_miss_char
7832             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
7833             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
7834             ,p_OLD_LOT_NUMBER                    => fnd_api.g_miss_char
7835             ,p_NEW_LOT_NUMBER                    => fnd_api.g_miss_char
7836             ,p_OLD_QUANTITY                      => fnd_api.g_miss_num
7837             ,p_NEW_QUANTITY                      => fnd_api.g_miss_num
7838             ,p_OLD_UNIT_OF_MEASURE               => fnd_api.g_miss_char
7839             ,p_NEW_UNIT_OF_MEASURE               => fnd_api.g_miss_char
7840             ,p_OLD_ACCOUNTING_CLASS_CODE         => fnd_api.g_miss_char
7841             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
7842             ,p_OLD_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
7843             ,p_NEW_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
7844             ,p_OLD_INSTANCE_STATUS_ID            => fnd_api.g_miss_num
7845             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_status_id --p_instance_rec.INSTANCE_STATUS_ID
7846             ,p_OLD_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
7847             ,p_NEW_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
7848             ,p_OLD_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
7849             ,p_NEW_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
7850             ,p_OLD_SELLABLE_FLAG                 => fnd_api.g_miss_char
7851             ,p_NEW_SELLABLE_FLAG                 => fnd_api.g_miss_char
7852             ,p_OLD_SYSTEM_ID                     => fnd_api.g_miss_num
7853             ,p_NEW_SYSTEM_ID                     => l_system_id
7854             ,p_OLD_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
7855             ,p_NEW_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
7856             ,p_OLD_ACTIVE_START_DATE             => fnd_api.g_miss_date
7857             ,p_NEW_ACTIVE_START_DATE             => fnd_api.g_miss_date
7858             ,p_OLD_ACTIVE_END_DATE               => fnd_api.g_miss_date
7859             ,p_NEW_ACTIVE_END_DATE               => p_instance_rec.ACTIVE_END_DATE
7860             ,p_OLD_LOCATION_TYPE_CODE            => fnd_api.g_miss_char
7861             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
7862             ,p_OLD_LOCATION_ID                   => fnd_api.g_miss_num
7863             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
7864             ,p_OLD_INV_ORGANIZATION_ID           => fnd_api.g_miss_num
7865             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
7866             ,p_OLD_INV_SUBINVENTORY_NAME         => fnd_api.g_miss_char
7867             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
7868             ,p_OLD_INV_LOCATOR_ID                => fnd_api.g_miss_num
7869             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
7870             ,p_OLD_PA_PROJECT_ID                 => fnd_api.g_miss_num
7871             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
7872             ,p_OLD_PA_PROJECT_TASK_ID            => fnd_api.g_miss_num
7873             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
7874             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => fnd_api.g_miss_num
7875             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
7876             ,p_OLD_WIP_JOB_ID                    => fnd_api.g_miss_num
7877             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
7878             ,p_OLD_PO_ORDER_LINE_ID              => fnd_api.g_miss_num
7879             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
7880             ,p_OLD_COMPLETENESS_FLAG             => fnd_api.g_miss_char
7881             ,p_NEW_COMPLETENESS_FLAG             => fnd_api.g_miss_char
7882             ,p_FULL_DUMP_FLAG                    => fnd_api.g_miss_char
7883             ,p_NEW_CONTEXT                       => fnd_api.g_miss_char
7884             ,P_OLD_CONTEXT                       => fnd_api.g_miss_char
7885             ,p_NEW_ATTRIBUTE1                    => fnd_api.g_miss_char
7886             ,p_OLD_ATTRIBUTE1                    => fnd_api.g_miss_char
7887             ,p_NEW_ATTRIBUTE2                    => fnd_api.g_miss_char
7888             ,p_OLD_ATTRIBUTE2                    => fnd_api.g_miss_char
7889             ,p_NEW_ATTRIBUTE3                    => fnd_api.g_miss_char
7890             ,p_OLD_ATTRIBUTE3                    => fnd_api.g_miss_char
7891             ,p_NEW_ATTRIBUTE4                    => fnd_api.g_miss_char
7892             ,p_OLD_ATTRIBUTE4                    => fnd_api.g_miss_char
7893             ,p_NEW_ATTRIBUTE5                    => fnd_api.g_miss_char
7894             ,p_OLD_ATTRIBUTE5                    => fnd_api.g_miss_char
7895             ,p_NEW_ATTRIBUTE6                    => fnd_api.g_miss_char
7896             ,p_OLD_ATTRIBUTE6                    => fnd_api.g_miss_char
7897             ,p_NEW_ATTRIBUTE7                    => fnd_api.g_miss_char
7898             ,p_OLD_ATTRIBUTE7                    => fnd_api.g_miss_char
7899             ,p_NEW_ATTRIBUTE8                    => fnd_api.g_miss_char
7900             ,p_OLD_ATTRIBUTE8                    => fnd_api.g_miss_char
7901             ,p_NEW_ATTRIBUTE9                    => fnd_api.g_miss_char
7902             ,p_OLD_ATTRIBUTE9                    => fnd_api.g_miss_char
7903             ,p_NEW_ATTRIBUTE10                   => fnd_api.g_miss_char
7904             ,p_OLD_ATTRIBUTE10                   => fnd_api.g_miss_char
7905             ,p_NEW_ATTRIBUTE11                   => fnd_api.g_miss_char
7906             ,p_OLD_ATTRIBUTE11                   => fnd_api.g_miss_char
7907             ,p_NEW_ATTRIBUTE12                   => fnd_api.g_miss_char
7908             ,p_OLD_ATTRIBUTE12                   => fnd_api.g_miss_char
7909             ,p_NEW_ATTRIBUTE13                   => fnd_api.g_miss_char
7910             ,p_OLD_ATTRIBUTE13                   => fnd_api.g_miss_char
7911             ,p_NEW_ATTRIBUTE14                   => fnd_api.g_miss_char
7912             ,p_OLD_ATTRIBUTE14                   => fnd_api.g_miss_char
7913             ,p_NEW_ATTRIBUTE15                   => fnd_api.g_miss_char
7914             ,p_OLD_ATTRIBUTE15                   => fnd_api.g_miss_char
7915             ,p_CREATED_BY                        => fnd_api.g_miss_num
7916             ,p_CREATION_DATE                     => fnd_api.g_miss_date
7917             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
7918             ,p_LAST_UPDATE_DATE                  => SYSDATE
7919             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
7920             ,p_OBJECT_VERSION_NUMBER             => fnd_api.g_miss_num
7921             ,p_OLD_INST_LOC_TYPE_CODE            => fnd_api.g_miss_char
7922             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
7923             ,p_OLD_INST_LOC_ID                   => fnd_api.g_miss_num
7924             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
7925             ,p_OLD_INST_USAGE_CODE               => fnd_api.g_miss_char
7926             ,p_NEW_INST_USAGE_CODE               => fnd_api.g_miss_char
7927             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
7928             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
7929             ,p_OLD_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
7930             ,p_NEW_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
7931             ,p_OLD_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
7932             ,p_NEW_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
7933             ,p_OLD_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
7934             ,p_NEW_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
7935             ,p_OLD_INSTALL_DATE                  => fnd_api.g_miss_date
7936             ,p_NEW_INSTALL_DATE                  => l_install_date
7937             ,p_OLD_RETURN_BY_DATE                => fnd_api.g_miss_date
7938             ,p_NEW_RETURN_BY_DATE                => fnd_api.g_miss_date
7939             ,p_OLD_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
7940             ,p_NEW_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
7941             ,p_OLD_LAST_OE_AGREEMENT_ID          => fnd_api.g_miss_num
7942             ,p_NEW_LAST_OE_AGREEMENT_ID          => fnd_api.g_miss_num
7943             ,p_OLD_LAST_OE_ORDER_LINE_ID         => fnd_api.g_miss_num
7944             ,p_NEW_LAST_OE_ORDER_LINE_ID         => fnd_api.g_miss_num --p_instance_rec.LAST_OE_ORDER_LINE_ID
7945             ,p_OLD_LAST_OE_RMA_LINE_ID        => fnd_api.g_miss_num
7946             ,p_NEW_LAST_OE_RMA_LINE_ID        => fnd_api.g_miss_num --p_instance_rec.LAST_OE_RMA_LINE_ID
7947             ,p_OLD_LAST_WIP_JOB_ID               => fnd_api.g_miss_num --fnd_api.g_miss_num
7948             ,p_NEW_LAST_WIP_JOB_ID               => fnd_api.g_miss_num --p_instance_rec.LAST_WIP_JOB_ID
7949             ,p_OLD_LAST_PO_PO_LINE_ID            => fnd_api.g_miss_num --fnd_api.g_miss_num
7950             ,p_NEW_LAST_PO_PO_LINE_ID            => fnd_api.g_miss_num --p_instance_rec.LAST_PO_PO_LINE_ID
7951             ,p_OLD_LAST_PA_PROJECT_ID            => fnd_api.g_miss_num --fnd_api.g_miss_num
7952             ,p_NEW_LAST_PA_PROJECT_ID            => fnd_api.g_miss_num --p_instance_rec.LAST_PA_PROJECT_ID
7953             ,p_OLD_LAST_PA_TASK_ID          => fnd_api.g_miss_num --fnd_api.g_miss_num
7954             ,p_NEW_LAST_PA_TASK_ID          => fnd_api.g_miss_num --p_instance_rec.LAST_PA_TASK_ID
7955             ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => fnd_api.g_miss_num
7956             ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => fnd_api.g_miss_num --p_instance_rec.LAST_TXN_LINE_DETAIL_ID
7957             ,p_OLD_LAST_OE_PO_NUMBER             => fnd_api.g_miss_char
7958             ,p_NEW_LAST_OE_PO_NUMBER             => fnd_api.g_miss_char --p_instance_rec.LAST_OE_PO_NUMBER
7959 	    --start of parameters addition for eam integration--
7960             ,p_OLD_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
7961             ,p_NEW_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
7962    	        ,p_OLD_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
7963 	        ,p_NEW_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
7964             ,p_OLD_PN_LOCATION_ID                 => fnd_api.g_miss_num
7965             ,p_NEW_PN_LOCATION_ID                 => fnd_api.g_miss_num
7966             ,p_OLD_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
7967             ,p_NEW_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
7968             ,p_OLD_CATEGORY_ID                    => fnd_api.g_miss_num
7969             ,p_NEW_CATEGORY_ID                    => fnd_api.g_miss_num
7970             ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
7971             ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
7972             ,p_OLD_INSTANTIATION_FLAG             => fnd_api.g_miss_char
7973             ,p_NEW_INSTANTIATION_FLAG             => fnd_api.g_miss_char
7974             ,p_OLD_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
7975             ,p_NEW_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
7976             ,p_OLD_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
7977             ,p_NEW_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
7978             ,p_OLD_CHECKIN_STATUS                 => fnd_api.g_miss_NUM
7979             ,p_NEW_CHECKIN_STATUS                 => fnd_api.g_miss_NUM
7980             ,p_OLD_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
7981             ,p_NEW_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
7982             ,p_OLD_ATTRIBUTE16                    => fnd_api.g_miss_char
7983             ,p_NEW_ATTRIBUTE16                    => fnd_api.g_miss_char
7984             ,p_OLD_ATTRIBUTE17                    => fnd_api.g_miss_char
7985             ,p_NEW_ATTRIBUTE17                    => fnd_api.g_miss_char
7986             ,p_OLD_ATTRIBUTE18                    => fnd_api.g_miss_char
7987             ,p_NEW_ATTRIBUTE18                    => fnd_api.g_miss_char
7988             ,p_OLD_ATTRIBUTE19                    => fnd_api.g_miss_char
7989             ,p_NEW_ATTRIBUTE19                    => fnd_api.g_miss_char
7990             ,p_OLD_ATTRIBUTE20                    => fnd_api.g_miss_char
7991             ,p_NEW_ATTRIBUTE20                    => fnd_api.g_miss_char
7992             ,p_OLD_ATTRIBUTE21                    => fnd_api.g_miss_char
7993             ,p_NEW_ATTRIBUTE21                    => fnd_api.g_miss_char
7994             ,p_OLD_ATTRIBUTE22                    => fnd_api.g_miss_char
7995             ,p_NEW_ATTRIBUTE22                    => fnd_api.g_miss_char
7996             ,p_OLD_ATTRIBUTE23                    => fnd_api.g_miss_char
7997             ,p_NEW_ATTRIBUTE23                    => fnd_api.g_miss_char
7998             ,p_OLD_ATTRIBUTE24                    => fnd_api.g_miss_char
7999             ,p_NEW_ATTRIBUTE24                    => fnd_api.g_miss_char
8000             ,p_OLD_ATTRIBUTE25                    => fnd_api.g_miss_char
8001             ,p_NEW_ATTRIBUTE25                    => fnd_api.g_miss_char
8002             ,p_OLD_ATTRIBUTE26                    => fnd_api.g_miss_char
8003             ,p_NEW_ATTRIBUTE26                    => fnd_api.g_miss_char
8004             ,p_OLD_ATTRIBUTE27                    => fnd_api.g_miss_char
8005             ,p_NEW_ATTRIBUTE27                    => fnd_api.g_miss_char
8006             ,p_OLD_ATTRIBUTE28                    => fnd_api.g_miss_char
8007             ,p_NEW_ATTRIBUTE28                    => fnd_api.g_miss_char
8008             ,p_OLD_ATTRIBUTE29                    => fnd_api.g_miss_char
8009             ,p_NEW_ATTRIBUTE29                    => fnd_api.g_miss_char
8010             ,p_OLD_ATTRIBUTE30                    => fnd_api.g_miss_char
8011             ,p_NEW_ATTRIBUTE30                    => fnd_api.g_miss_char
8012   	    --end of parameters addition for eam integration--
8013         -- Addition of columns for FA Integration
8014             ,p_OLD_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
8015             ,p_NEW_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
8016             ,p_OLD_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
8017             ,p_NEW_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
8018             ,p_OLD_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
8019             ,p_NEW_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
8020             ,p_OLD_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
8021             ,p_NEW_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
8022             ,p_OLD_SALES_UNIT_PRICE               => fnd_api.g_miss_num
8023             ,p_NEW_SALES_UNIT_PRICE               => fnd_api.g_miss_num
8024             ,p_OLD_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
8025             ,p_NEW_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
8026             ,p_OLD_OPERATIONAL_STATUS_CODE        => fnd_api.g_miss_char
8027             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.operational_status_code
8028         -- End addition of columns for FA Integration
8029             -- Begin Add Code for Siebel Genesis Project
8030             ,p_OLD_SOURCE_CODE                   => fnd_api.g_miss_char
8031             ,p_NEW_SOURCE_CODE                   => fnd_api.g_miss_char
8032             -- End Add Code for Siebel Genesis Project
8033             );
8034 
8035         ELSE --l_ins_hist_csr.full_dump_flag = 'N'
8036 
8037              IF    ( l_ins_hist_csr.old_accounting_class_code IS NULL
8038                 AND  l_ins_hist_csr.new_accounting_class_code IS NULL ) THEN
8039                      IF  ( p_instance_rec.accounting_class_code = l_curr_instance_rec.accounting_class_code )
8040                       OR ( p_instance_rec.accounting_class_code = fnd_api.g_miss_char ) THEN
8041                            l_ins_hist_csr.old_accounting_class_code := NULL;
8042                            l_ins_hist_csr.new_accounting_class_code := NULL;
8043                      ELSE
8044                            l_ins_hist_csr.old_accounting_class_code := fnd_api.g_miss_char;
8045                            l_ins_hist_csr.new_accounting_class_code := p_instance_rec.accounting_class_code;
8046                      END IF;
8047              ELSE
8048                      l_ins_hist_csr.old_accounting_class_code := fnd_api.g_miss_char;
8049                      l_ins_hist_csr.new_accounting_class_code := p_instance_rec.accounting_class_code;
8050              END IF;
8051              --
8052              IF    ( l_ins_hist_csr.old_instance_status_id IS NULL
8053                 AND  l_ins_hist_csr.new_instance_status_id IS NULL ) THEN
8054                      IF  ( l_instance_status_id = l_curr_instance_rec.instance_status_id )
8055                       OR ( l_instance_status_id = fnd_api.g_miss_num ) THEN
8056                            l_ins_hist_csr.old_instance_status_id := NULL;
8057                            l_ins_hist_csr.new_instance_status_id := NULL;
8058                      ELSE
8059                            l_ins_hist_csr.old_instance_status_id := fnd_api.g_miss_num;
8060                            l_ins_hist_csr.new_instance_status_id := l_instance_status_id;
8061                      END IF;
8062              ELSE
8063                      l_ins_hist_csr.old_instance_status_id := fnd_api.g_miss_num;
8064                      l_ins_hist_csr.new_instance_status_id := l_instance_status_id;
8065              END IF;
8066              --
8067              IF    ( l_ins_hist_csr.old_system_id IS NULL
8068                 AND  l_ins_hist_csr.new_system_id IS NULL ) THEN
8069                      IF  ( l_system_id = l_curr_instance_rec.system_id )
8070                       OR ( l_system_id = fnd_api.g_miss_num ) THEN
8071                            l_ins_hist_csr.old_system_id := NULL;
8072                            l_ins_hist_csr.new_system_id := NULL;
8073                      ELSE
8074                            l_ins_hist_csr.old_system_id := fnd_api.g_miss_num;
8075                            l_ins_hist_csr.new_system_id := l_system_id;
8076                      END IF;
8077              ELSE
8078                      l_ins_hist_csr.old_system_id := fnd_api.g_miss_num;
8079                      l_ins_hist_csr.new_system_id := l_system_id;
8080              END IF;
8081              --
8082              IF    ( l_ins_hist_csr.old_install_date IS NULL
8083                 AND  l_ins_hist_csr.new_install_date IS NULL ) THEN
8084                      IF  ( l_install_date = l_curr_instance_rec.install_date )
8085                       OR ( l_install_date = fnd_api.g_miss_date ) THEN
8086                            l_ins_hist_csr.old_install_date := NULL;
8087                            l_ins_hist_csr.new_install_date := NULL;
8088                      ELSE
8089                            l_ins_hist_csr.old_install_date := fnd_api.g_miss_date;
8090                            l_ins_hist_csr.new_install_date := l_install_date;
8091                      END IF;
8092              ELSE
8093                      l_ins_hist_csr.old_install_date := fnd_api.g_miss_date;
8094                      l_ins_hist_csr.new_install_date := l_install_date;
8095              END IF;
8096              --
8097              IF    ( l_ins_hist_csr.old_active_end_date IS NULL
8098                 AND  l_ins_hist_csr.new_active_end_date IS NULL ) THEN
8099                      IF  ( p_instance_rec.active_end_date = l_curr_instance_rec.active_end_date )
8100                       OR ( p_instance_rec.active_end_date = fnd_api.g_miss_date ) THEN
8101                            l_ins_hist_csr.old_active_end_date := NULL;
8102                            l_ins_hist_csr.new_active_end_date := NULL;
8103                      ELSE
8104                            l_ins_hist_csr.old_active_end_date := fnd_api.g_miss_date;
8105                            l_ins_hist_csr.new_active_end_date := p_instance_rec.active_end_date;
8106                      END IF;
8107              ELSE
8108                      l_ins_hist_csr.old_active_end_date := fnd_api.g_miss_date;
8109                      l_ins_hist_csr.new_active_end_date := p_instance_rec.active_end_date;
8110              END IF;
8111              --
8112              IF    ( l_ins_hist_csr.old_location_type_code IS NULL
8113                 AND  l_ins_hist_csr.new_location_type_code IS NULL ) THEN
8114                      IF  ( p_instance_rec.location_type_code = l_curr_instance_rec.location_type_code )
8115                       OR ( p_instance_rec.location_type_code = fnd_api.g_miss_char ) THEN
8116                            l_ins_hist_csr.old_location_type_code := NULL;
8117                            l_ins_hist_csr.new_location_type_code := NULL;
8118                      ELSE
8119                            l_ins_hist_csr.old_location_type_code := fnd_api.g_miss_char;
8120                            l_ins_hist_csr.new_location_type_code := p_instance_rec.location_type_code;
8121                      END IF;
8122              ELSE
8123                      l_ins_hist_csr.old_location_type_code := fnd_api.g_miss_char;
8124                      l_ins_hist_csr.new_location_type_code := p_instance_rec.location_type_code;
8125              END IF;
8126              --
8127              IF    ( l_ins_hist_csr.old_location_id IS NULL
8128                 AND  l_ins_hist_csr.new_location_id IS NULL ) THEN
8129                      IF  ( p_instance_rec.location_id = l_curr_instance_rec.location_id )
8130                       OR ( p_instance_rec.location_id = fnd_api.g_miss_num ) THEN
8131                            l_ins_hist_csr.old_location_id := NULL;
8132                            l_ins_hist_csr.new_location_id := NULL;
8133                      ELSE
8134                            l_ins_hist_csr.old_location_id := fnd_api.g_miss_num;
8135                            l_ins_hist_csr.new_location_id := p_instance_rec.location_id;
8136                      END IF;
8137              ELSE
8138                      l_ins_hist_csr.old_location_id := fnd_api.g_miss_num;
8139                      l_ins_hist_csr.new_location_id := p_instance_rec.location_id;
8140              END IF;
8141              --
8142              IF    ( l_ins_hist_csr.old_inv_organization_id IS NULL
8143                 AND  l_ins_hist_csr.new_inv_organization_id IS NULL ) THEN
8144                      IF  ( p_instance_rec.inv_organization_id = l_curr_instance_rec.inv_organization_id )
8145                       OR ( p_instance_rec.inv_organization_id = fnd_api.g_miss_num ) THEN
8146                            l_ins_hist_csr.old_inv_organization_id := NULL;
8147                            l_ins_hist_csr.new_inv_organization_id := NULL;
8148                      ELSE
8149                            l_ins_hist_csr.old_inv_organization_id := fnd_api.g_miss_num;
8150                            l_ins_hist_csr.new_inv_organization_id := p_instance_rec.inv_organization_id;
8151                      END IF;
8152              ELSE
8153                      l_ins_hist_csr.old_inv_organization_id := fnd_api.g_miss_num;
8154                      l_ins_hist_csr.new_inv_organization_id := p_instance_rec.inv_organization_id;
8155              END IF;
8156              --
8157              IF    ( l_ins_hist_csr.old_inv_subinventory_name IS NULL
8158                 AND  l_ins_hist_csr.new_inv_subinventory_name IS NULL ) THEN
8159                      IF  ( p_instance_rec.inv_subinventory_name = l_curr_instance_rec.inv_subinventory_name )
8160                       OR ( p_instance_rec.inv_subinventory_name = fnd_api.g_miss_char ) THEN
8161                            l_ins_hist_csr.old_inv_subinventory_name := NULL;
8162                            l_ins_hist_csr.new_inv_subinventory_name := NULL;
8163                      ELSE
8164                            l_ins_hist_csr.old_inv_subinventory_name := fnd_api.g_miss_char;
8165                            l_ins_hist_csr.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name;
8166                      END IF;
8167              ELSE
8168                      l_ins_hist_csr.old_inv_subinventory_name := fnd_api.g_miss_char;
8169                      l_ins_hist_csr.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name;
8170              END IF;
8171              --
8172              IF    ( l_ins_hist_csr.old_inv_locator_id IS NULL
8173                 AND  l_ins_hist_csr.new_inv_locator_id IS NULL ) THEN
8174                      IF  ( p_instance_rec.inv_locator_id = l_curr_instance_rec.inv_locator_id )
8175                       OR ( p_instance_rec.inv_locator_id = fnd_api.g_miss_num ) THEN
8176                            l_ins_hist_csr.old_inv_locator_id := NULL;
8177                            l_ins_hist_csr.new_inv_locator_id := NULL;
8178                      ELSE
8179                            l_ins_hist_csr.old_inv_locator_id := fnd_api.g_miss_num;
8180                            l_ins_hist_csr.new_inv_locator_id := p_instance_rec.inv_locator_id;
8181                      END IF;
8182              ELSE
8183                      l_ins_hist_csr.old_inv_locator_id := fnd_api.g_miss_num;
8184                      l_ins_hist_csr.new_inv_locator_id := p_instance_rec.inv_locator_id;
8185              END IF;
8186              --
8187              IF    ( l_ins_hist_csr.old_pa_project_id IS NULL
8188                 AND  l_ins_hist_csr.new_pa_project_id IS NULL ) THEN
8189                      IF  ( p_instance_rec.pa_project_id = l_curr_instance_rec.pa_project_id )
8190                       OR ( p_instance_rec.pa_project_id = fnd_api.g_miss_num ) THEN
8191                            l_ins_hist_csr.old_pa_project_id := NULL;
8192                            l_ins_hist_csr.new_pa_project_id := NULL;
8193                      ELSE
8194                            l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
8195                            l_ins_hist_csr.new_pa_project_id := p_instance_rec.pa_project_id;
8196                      END IF;
8197              ELSE
8198                      l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
8199                      l_ins_hist_csr.new_pa_project_id := p_instance_rec.pa_project_id;
8200              END IF;
8201              --
8202              IF    ( l_ins_hist_csr.old_pa_project_task_id IS NULL
8203                 AND  l_ins_hist_csr.new_pa_project_task_id IS NULL ) THEN
8204                      IF  ( p_instance_rec.pa_project_task_id = l_curr_instance_rec.pa_project_task_id )
8205                       OR ( p_instance_rec.pa_project_task_id = fnd_api.g_miss_num ) THEN
8206                            l_ins_hist_csr.old_pa_project_task_id := NULL;
8207                            l_ins_hist_csr.new_pa_project_task_id := NULL;
8208                      ELSE
8209                            l_ins_hist_csr.old_pa_project_task_id := fnd_api.g_miss_num;
8210                            l_ins_hist_csr.new_pa_project_task_id := p_instance_rec.pa_project_task_id;
8211                      END IF;
8212              ELSE
8213                      l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
8214                      l_ins_hist_csr.new_pa_project_task_id := p_instance_rec.pa_project_task_id;
8215              END IF;
8216              --
8217              IF    ( l_ins_hist_csr.old_in_transit_order_line_id IS NULL
8218                 AND  l_ins_hist_csr.new_in_transit_order_line_id IS NULL ) THEN
8219                      IF  ( p_instance_rec.in_transit_order_line_id = l_curr_instance_rec.in_transit_order_line_id )
8220                       OR ( p_instance_rec.in_transit_order_line_id = fnd_api.g_miss_num ) THEN
8221                            l_ins_hist_csr.old_in_transit_order_line_id := NULL;
8222                            l_ins_hist_csr.new_in_transit_order_line_id := NULL;
8223                      ELSE
8224                            l_ins_hist_csr.old_in_transit_order_line_id := fnd_api.g_miss_num;
8225                            l_ins_hist_csr.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id;
8226                      END IF;
8227              ELSE
8228                      l_ins_hist_csr.old_in_transit_order_line_id := fnd_api.g_miss_num;
8229                      l_ins_hist_csr.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id;
8230              END IF;
8231              --
8232              IF    ( l_ins_hist_csr.old_oe_agreement_id IS NULL
8233                 AND  l_ins_hist_csr.new_oe_agreement_id IS NULL ) THEN
8234                      IF  ( p_instance_rec.last_oe_agreement_id = l_curr_instance_rec.last_oe_agreement_id )
8235                       OR ( p_instance_rec.last_oe_agreement_id = fnd_api.g_miss_num ) THEN
8236                            l_ins_hist_csr.old_oe_agreement_id := NULL;
8237                            l_ins_hist_csr.new_oe_agreement_id := NULL;
8238                      ELSE
8239                            l_ins_hist_csr.old_oe_agreement_id := fnd_api.g_miss_num;
8240                            l_ins_hist_csr.new_oe_agreement_id := p_instance_rec.last_oe_agreement_id;
8241                      END IF;
8242              ELSE
8243                      l_ins_hist_csr.old_oe_agreement_id := fnd_api.g_miss_num;
8244                      l_ins_hist_csr.new_oe_agreement_id := p_instance_rec.last_oe_agreement_id;
8245              END IF;
8246              --
8247              IF    ( l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID IS NULL
8248                 AND  l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID IS NULL ) THEN
8249                      IF  ( p_instance_rec.LAST_OE_ORDER_LINE_ID = l_curr_instance_rec.LAST_OE_ORDER_LINE_ID )
8250                       OR ( p_instance_rec.LAST_OE_ORDER_LINE_ID = fnd_api.g_miss_num ) THEN
8251                            l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := NULL;
8252                            l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := NULL;
8253                      ELSE
8254                            l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := fnd_api.g_miss_num;
8255                            l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID;
8256                      END IF;
8257              ELSE
8258                      l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := fnd_api.g_miss_num;
8259                      l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID;
8260              END IF;
8261              --
8262              IF    ( l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID IS NULL
8263                 AND  l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID IS NULL ) THEN
8264                      IF  ( p_instance_rec.LAST_OE_RMA_LINE_ID = l_curr_instance_rec.LAST_OE_RMA_LINE_ID )
8265                       OR ( p_instance_rec.LAST_OE_RMA_LINE_ID = fnd_api.g_miss_num ) THEN
8266                            l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID := NULL;
8267                            l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID := NULL;
8268                      ELSE
8269                            l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID := fnd_api.g_miss_num;
8270                            l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID;
8271                      END IF;
8272              ELSE
8273                      l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID := fnd_api.g_miss_num;
8274                      l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID;
8275              END IF;
8276              --
8277              IF    ( l_ins_hist_csr.old_LAST_WIP_JOB_ID IS NULL
8278                 AND  l_ins_hist_csr.new_LAST_WIP_JOB_ID IS NULL ) THEN
8279                      IF  ( p_instance_rec.LAST_WIP_JOB_ID = l_curr_instance_rec.LAST_WIP_JOB_ID )
8280                       OR ( p_instance_rec.LAST_WIP_JOB_ID = fnd_api.g_miss_num ) THEN
8281                            l_ins_hist_csr.old_LAST_WIP_JOB_ID := NULL;
8282                            l_ins_hist_csr.new_LAST_WIP_JOB_ID := NULL;
8283                      ELSE
8284                            l_ins_hist_csr.old_LAST_WIP_JOB_ID := fnd_api.g_miss_num;
8285                            l_ins_hist_csr.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID;
8286                      END IF;
8287              ELSE
8288                      l_ins_hist_csr.old_LAST_WIP_JOB_ID := fnd_api.g_miss_num;
8289                      l_ins_hist_csr.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID;
8290              END IF;
8291              --
8292              IF    ( l_ins_hist_csr.old_LAST_PO_PO_LINE_ID IS NULL
8293                 AND  l_ins_hist_csr.new_LAST_PO_PO_LINE_ID IS NULL ) THEN
8294                      IF  ( p_instance_rec.LAST_PO_PO_LINE_ID = l_curr_instance_rec.LAST_PO_PO_LINE_ID )
8295                       OR ( p_instance_rec.LAST_PO_PO_LINE_ID = fnd_api.g_miss_num ) THEN
8296                            l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := NULL;
8297                            l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := NULL;
8298                      ELSE
8299                            l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := fnd_api.g_miss_num;
8300                            l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID;
8301                      END IF;
8302              ELSE
8303                      l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := fnd_api.g_miss_num;
8304                      l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID;
8305              END IF;
8306              --
8307              IF    ( l_ins_hist_csr.old_LAST_PA_PROJECT_ID IS NULL
8308                 AND  l_ins_hist_csr.new_LAST_PA_PROJECT_ID IS NULL ) THEN
8309                      IF  ( p_instance_rec.LAST_PA_PROJECT_ID = l_curr_instance_rec.LAST_PA_PROJECT_ID )
8310                       OR ( p_instance_rec.LAST_PA_PROJECT_ID = fnd_api.g_miss_num ) THEN
8311                            l_ins_hist_csr.old_LAST_PA_PROJECT_ID := NULL;
8312                            l_ins_hist_csr.new_LAST_PA_PROJECT_ID := NULL;
8313                      ELSE
8314                            l_ins_hist_csr.old_LAST_PA_PROJECT_ID := fnd_api.g_miss_num;
8315                            l_ins_hist_csr.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID;
8316                      END IF;
8317              ELSE
8318                      l_ins_hist_csr.old_LAST_PA_PROJECT_ID := fnd_api.g_miss_num;
8319                      l_ins_hist_csr.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID;
8320              END IF;
8321              --
8322              IF    ( l_ins_hist_csr.OLD_LAST_PA_TASK_ID IS NULL
8323                 AND  l_ins_hist_csr.NEW_LAST_PA_TASK_ID IS NULL ) THEN
8324                      IF  ( p_instance_rec.LAST_PA_TASK_ID = l_curr_instance_rec.LAST_PA_TASK_ID )
8325                       OR ( p_instance_rec.LAST_PA_TASK_ID = fnd_api.g_miss_num ) THEN
8326                            l_ins_hist_csr.OLD_LAST_PA_TASK_ID := NULL;
8327                            l_ins_hist_csr.NEW_LAST_PA_TASK_ID := NULL;
8328                      ELSE
8329                            l_ins_hist_csr.OLD_LAST_PA_TASK_ID := fnd_api.g_miss_num;
8330                            l_ins_hist_csr.NEW_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID;
8331                      END IF;
8332              ELSE
8333                      l_ins_hist_csr.OLD_LAST_PA_TASK_ID := fnd_api.g_miss_num;
8334                      l_ins_hist_csr.NEW_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID;
8335              END IF;
8336              --
8337              IF    ( l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID IS NULL
8338                 AND  l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID IS NULL ) THEN
8339                      IF  ( p_instance_rec.LAST_TXN_LINE_DETAIL_ID = l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID )
8340                       OR ( p_instance_rec.LAST_TXN_LINE_DETAIL_ID = fnd_api.g_miss_num ) THEN
8341                            l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := NULL;
8342                            l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := NULL;
8343                      ELSE
8344                            l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := fnd_api.g_miss_num;
8345                            l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID;
8346                      END IF;
8347              ELSE
8348                      l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := fnd_api.g_miss_num;
8349                      l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID;
8350              END IF;
8351              --
8352              IF    ( l_ins_hist_csr.old_LAST_OE_PO_NUMBER IS NULL
8353                 AND  l_ins_hist_csr.new_LAST_OE_PO_NUMBER IS NULL ) THEN
8354                      IF  ( p_instance_rec.LAST_OE_PO_NUMBER = l_curr_instance_rec.LAST_OE_PO_NUMBER )
8355                       OR ( p_instance_rec.LAST_OE_PO_NUMBER = fnd_api.g_miss_char ) THEN
8356                            l_ins_hist_csr.old_LAST_OE_PO_NUMBER := NULL;
8357                            l_ins_hist_csr.new_LAST_OE_PO_NUMBER := NULL;
8358                      ELSE
8359                            l_ins_hist_csr.old_LAST_OE_PO_NUMBER := fnd_api.g_miss_char;
8360                            l_ins_hist_csr.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER;
8361                      END IF;
8362              ELSE
8363                      l_ins_hist_csr.old_LAST_OE_PO_NUMBER := fnd_api.g_miss_char;
8364                      l_ins_hist_csr.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER;
8365              END IF;
8366              --
8367              IF    ( l_ins_hist_csr.old_wip_job_id IS NULL
8368                 AND  l_ins_hist_csr.new_wip_job_id IS NULL ) THEN
8369                      IF  ( p_instance_rec.wip_job_id = l_curr_instance_rec.wip_job_id )
8370                       OR ( p_instance_rec.wip_job_id = fnd_api.g_miss_num ) THEN
8371                            l_ins_hist_csr.old_wip_job_id := NULL;
8372                            l_ins_hist_csr.new_wip_job_id := NULL;
8373                      ELSE
8374                            l_ins_hist_csr.old_wip_job_id := fnd_api.g_miss_num;
8375                            l_ins_hist_csr.new_wip_job_id := p_instance_rec.wip_job_id;
8376                      END IF;
8377              ELSE
8378                      l_ins_hist_csr.old_wip_job_id := fnd_api.g_miss_num;
8379                      l_ins_hist_csr.new_wip_job_id := p_instance_rec.wip_job_id;
8380              END IF;
8381              --
8382              IF    ( l_ins_hist_csr.old_po_order_line_id IS NULL
8383                 AND  l_ins_hist_csr.new_po_order_line_id IS NULL ) THEN
8384                      IF  ( p_instance_rec.po_order_line_id = l_curr_instance_rec.po_order_line_id )
8385                       OR ( p_instance_rec.po_order_line_id = fnd_api.g_miss_num ) THEN
8386                            l_ins_hist_csr.old_po_order_line_id := NULL;
8387                            l_ins_hist_csr.new_po_order_line_id := NULL;
8388                      ELSE
8389                            l_ins_hist_csr.old_po_order_line_id := fnd_api.g_miss_num;
8390                            l_ins_hist_csr.new_po_order_line_id := p_instance_rec.po_order_line_id;
8391                      END IF;
8392              ELSE
8393                      l_ins_hist_csr.old_po_order_line_id := fnd_api.g_miss_num;
8394                      l_ins_hist_csr.new_po_order_line_id := p_instance_rec.po_order_line_id;
8395              END IF;
8396              --
8397              IF    ( l_ins_hist_csr.old_inst_loc_type_code IS NULL
8398                 AND  l_ins_hist_csr.new_inst_loc_type_code IS NULL ) THEN
8399                      IF  ( p_instance_rec.install_location_type_code = l_curr_instance_rec.install_location_type_code )
8400                       OR ( p_instance_rec.install_location_type_code = fnd_api.g_miss_char ) THEN
8401                            l_ins_hist_csr.old_inst_loc_type_code := NULL;
8402                            l_ins_hist_csr.new_inst_loc_type_code := NULL;
8403                      ELSE
8404                            l_ins_hist_csr.old_inst_loc_type_code := fnd_api.g_miss_char;
8405                            l_ins_hist_csr.new_inst_loc_type_code := p_instance_rec.install_location_type_code;
8406                      END IF;
8407              ELSE
8408                      l_ins_hist_csr.old_inst_loc_type_code := fnd_api.g_miss_char;
8409                      l_ins_hist_csr.new_inst_loc_type_code := p_instance_rec.install_location_type_code;
8410              END IF;
8411              --
8412              IF    ( l_ins_hist_csr.old_inst_loc_id IS NULL
8413                 AND  l_ins_hist_csr.new_inst_loc_id IS NULL ) THEN
8414                      IF  ( p_instance_rec.install_location_id = l_curr_instance_rec.install_location_id )
8415                       OR ( p_instance_rec.install_location_id = fnd_api.g_miss_num ) THEN
8416                            l_ins_hist_csr.old_inst_loc_id := NULL;
8417                            l_ins_hist_csr.new_inst_loc_id := NULL;
8418                      ELSE
8419                            l_ins_hist_csr.old_inst_loc_id := fnd_api.g_miss_num;
8420                            l_ins_hist_csr.new_inst_loc_id := p_instance_rec.install_location_id;
8421                      END IF;
8422              ELSE
8423                      l_ins_hist_csr.old_inst_loc_id := fnd_api.g_miss_num;
8424                      l_ins_hist_csr.new_inst_loc_id := p_instance_rec.install_location_id;
8425              END IF;
8426              --
8427 
8428              IF    ( l_ins_hist_csr.old_operational_status_code IS NULL
8429                 AND  l_ins_hist_csr.new_operational_status_code IS NULL ) THEN
8430                      IF  ( p_instance_rec.operational_status_code = l_curr_instance_rec.operational_status_code )
8431                       OR ( p_instance_rec.operational_status_code = fnd_api.g_miss_char ) THEN
8432                            l_ins_hist_csr.old_operational_status_code := NULL;
8433                            l_ins_hist_csr.new_operational_status_code := NULL;
8434                      ELSE
8435                            l_ins_hist_csr.old_operational_status_code := fnd_api.g_miss_char;
8436                            l_ins_hist_csr.new_operational_status_code := p_instance_rec.operational_status_code;
8437                      END IF;
8438              ELSE
8439                      l_ins_hist_csr.old_operational_status_code := fnd_api.g_miss_char;
8440                      l_ins_hist_csr.new_operational_status_code := p_instance_rec.operational_status_code;
8441              END IF;
8442 
8443 
8444          CSI_ITEM_INSTANCES_H_PKG.Update_Row
8445            ( p_INSTANCE_HISTORY_ID               => l_ins_hist_id
8446             ,p_INSTANCE_ID                       => fnd_api.g_miss_num
8447             ,p_TRANSACTION_ID                    => fnd_api.g_miss_num
8448             ,p_OLD_INSTANCE_NUMBER               => fnd_api.g_miss_char
8449             ,p_NEW_INSTANCE_NUMBER               => fnd_api.g_miss_char
8450             ,p_OLD_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
8451             ,p_NEW_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
8452             ,p_OLD_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
8453             ,p_NEW_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
8454             ,p_OLD_INVENTORY_REVISION            => fnd_api.g_miss_char
8455             ,p_NEW_INVENTORY_REVISION            => fnd_api.g_miss_char
8456             ,p_OLD_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
8457             ,p_NEW_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
8458             ,p_OLD_SERIAL_NUMBER                 => fnd_api.g_miss_char
8459             ,p_NEW_SERIAL_NUMBER                 => fnd_api.g_miss_char
8460             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
8461             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
8462             ,p_OLD_LOT_NUMBER                    => fnd_api.g_miss_char
8463             ,p_NEW_LOT_NUMBER                    => fnd_api.g_miss_char
8464             ,p_OLD_QUANTITY                      => fnd_api.g_miss_num
8465             ,p_NEW_QUANTITY                      => fnd_api.g_miss_num
8466             ,p_OLD_UNIT_OF_MEASURE               => fnd_api.g_miss_char
8467             ,p_NEW_UNIT_OF_MEASURE               => fnd_api.g_miss_char
8468             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_ins_hist_csr.OLD_ACCOUNTING_CLASS_CODE
8469             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_ins_hist_csr.NEW_ACCOUNTING_CLASS_CODE
8470             ,p_OLD_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
8471             ,p_NEW_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
8472             ,p_OLD_INSTANCE_STATUS_ID            => l_ins_hist_csr.OLD_INSTANCE_STATUS_ID
8473             ,p_NEW_INSTANCE_STATUS_ID            => l_ins_hist_csr.NEW_INSTANCE_STATUS_ID
8474             ,p_OLD_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
8475             ,p_NEW_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
8476             ,p_OLD_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
8477             ,p_NEW_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
8478             ,p_OLD_SELLABLE_FLAG                 => fnd_api.g_miss_char
8479             ,p_NEW_SELLABLE_FLAG                 => fnd_api.g_miss_char
8480             ,p_OLD_SYSTEM_ID                     => l_ins_hist_csr.old_system_id
8481             ,p_NEW_SYSTEM_ID                     => l_ins_hist_csr.new_system_id
8482             ,p_OLD_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
8483             ,p_NEW_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
8484             ,p_OLD_ACTIVE_START_DATE             => fnd_api.g_miss_date
8485             ,p_NEW_ACTIVE_START_DATE             => fnd_api.g_miss_date
8486             ,p_OLD_ACTIVE_END_DATE               => l_ins_hist_csr.OLD_ACTIVE_END_DATE
8487             ,p_NEW_ACTIVE_END_DATE               => l_ins_hist_csr.NEW_ACTIVE_END_DATE
8488             ,p_OLD_LOCATION_TYPE_CODE            => l_ins_hist_csr.OLD_LOCATION_TYPE_CODE
8489             ,p_NEW_LOCATION_TYPE_CODE            => l_ins_hist_csr.NEW_LOCATION_TYPE_CODE
8490             ,p_OLD_LOCATION_ID                   => l_ins_hist_csr.OLD_LOCATION_ID
8491             ,p_NEW_LOCATION_ID                   => l_ins_hist_csr.NEW_LOCATION_ID
8492             ,p_OLD_INV_ORGANIZATION_ID           => l_ins_hist_csr.OLD_INV_ORGANIZATION_ID
8493             ,p_NEW_INV_ORGANIZATION_ID           => l_ins_hist_csr.NEW_INV_ORGANIZATION_ID
8494             ,p_OLD_INV_SUBINVENTORY_NAME         => l_ins_hist_csr.OLD_INV_SUBINVENTORY_NAME
8495             ,p_NEW_INV_SUBINVENTORY_NAME         => l_ins_hist_csr.NEW_INV_SUBINVENTORY_NAME
8496             ,p_OLD_INV_LOCATOR_ID                => l_ins_hist_csr.OLD_INV_LOCATOR_ID
8497             ,p_NEW_INV_LOCATOR_ID                => l_ins_hist_csr.NEW_INV_LOCATOR_ID
8498             ,p_OLD_PA_PROJECT_ID                 => l_ins_hist_csr.OLD_PA_PROJECT_ID
8499             ,p_NEW_PA_PROJECT_ID                 => l_ins_hist_csr.NEW_PA_PROJECT_ID
8500             ,p_OLD_PA_PROJECT_TASK_ID            => l_ins_hist_csr.OLD_PA_PROJECT_TASK_ID
8501             ,p_NEW_PA_PROJECT_TASK_ID            => l_ins_hist_csr.NEW_PA_PROJECT_TASK_ID
8502             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_ins_hist_csr.OLD_IN_TRANSIT_ORDER_LINE_ID
8503             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_ins_hist_csr.NEW_IN_TRANSIT_ORDER_LINE_ID
8504             ,p_OLD_WIP_JOB_ID                    => l_ins_hist_csr.OLD_WIP_JOB_ID
8505             ,p_NEW_WIP_JOB_ID                    => l_ins_hist_csr.NEW_WIP_JOB_ID
8506             ,p_OLD_PO_ORDER_LINE_ID              => l_ins_hist_csr.OLD_PO_ORDER_LINE_ID
8507             ,p_NEW_PO_ORDER_LINE_ID              => l_ins_hist_csr.NEW_PO_ORDER_LINE_ID
8508             ,p_OLD_COMPLETENESS_FLAG             => fnd_api.g_miss_char
8509             ,p_NEW_COMPLETENESS_FLAG             => fnd_api.g_miss_char
8510             ,p_FULL_DUMP_FLAG                    => fnd_api.g_miss_char
8511             ,p_NEW_CONTEXT                       => fnd_api.g_miss_char
8512             ,P_OLD_CONTEXT                       => fnd_api.g_miss_char
8513             ,p_NEW_ATTRIBUTE1                    => fnd_api.g_miss_char
8514             ,p_OLD_ATTRIBUTE1                    => fnd_api.g_miss_char
8515             ,p_NEW_ATTRIBUTE2                    => fnd_api.g_miss_char
8516             ,p_OLD_ATTRIBUTE2                    => fnd_api.g_miss_char
8517             ,p_NEW_ATTRIBUTE3                    => fnd_api.g_miss_char
8518             ,p_OLD_ATTRIBUTE3                    => fnd_api.g_miss_char
8519             ,p_NEW_ATTRIBUTE4                    => fnd_api.g_miss_char
8520             ,p_OLD_ATTRIBUTE4                    => fnd_api.g_miss_char
8521             ,p_NEW_ATTRIBUTE5                    => fnd_api.g_miss_char
8522             ,p_OLD_ATTRIBUTE5                    => fnd_api.g_miss_char
8523             ,p_NEW_ATTRIBUTE6                    => fnd_api.g_miss_char
8524             ,p_OLD_ATTRIBUTE6                    => fnd_api.g_miss_char
8525             ,p_NEW_ATTRIBUTE7                    => fnd_api.g_miss_char
8526             ,p_OLD_ATTRIBUTE7                    => fnd_api.g_miss_char
8527             ,p_NEW_ATTRIBUTE8                    => fnd_api.g_miss_char
8528             ,p_OLD_ATTRIBUTE8                    => fnd_api.g_miss_char
8529             ,p_NEW_ATTRIBUTE9                    => fnd_api.g_miss_char
8530             ,p_OLD_ATTRIBUTE9                    => fnd_api.g_miss_char
8531             ,p_NEW_ATTRIBUTE10                   => fnd_api.g_miss_char
8532             ,p_OLD_ATTRIBUTE10                   => fnd_api.g_miss_char
8533             ,p_NEW_ATTRIBUTE11                   => fnd_api.g_miss_char
8534             ,p_OLD_ATTRIBUTE11                   => fnd_api.g_miss_char
8535             ,p_NEW_ATTRIBUTE12                   => fnd_api.g_miss_char
8536             ,p_OLD_ATTRIBUTE12                   => fnd_api.g_miss_char
8537             ,p_NEW_ATTRIBUTE13                   => fnd_api.g_miss_char
8538             ,p_OLD_ATTRIBUTE13                   => fnd_api.g_miss_char
8539             ,p_NEW_ATTRIBUTE14                   => fnd_api.g_miss_char
8540             ,p_OLD_ATTRIBUTE14                   => fnd_api.g_miss_char
8541             ,p_NEW_ATTRIBUTE15                   => fnd_api.g_miss_char
8542             ,p_OLD_ATTRIBUTE15                   => fnd_api.g_miss_char
8543             ,p_CREATED_BY                        => fnd_api.g_miss_num
8544             ,p_CREATION_DATE                     => fnd_api.g_miss_date
8545             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
8546             ,p_LAST_UPDATE_DATE                  => SYSDATE
8547             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
8548             ,p_OBJECT_VERSION_NUMBER             => fnd_api.g_miss_num
8549             ,p_OLD_INST_LOC_TYPE_CODE            => l_ins_hist_csr.OLD_INST_LOC_TYPE_CODE
8550             ,p_NEW_INST_LOC_TYPE_CODE            => l_ins_hist_csr.NEW_INST_LOC_TYPE_CODE
8551             ,p_OLD_INST_LOC_ID                   => l_ins_hist_csr.OLD_INST_LOC_ID
8552             ,p_NEW_INST_LOC_ID                   => l_ins_hist_csr.NEW_INST_LOC_ID
8553             ,p_OLD_INST_USAGE_CODE               => fnd_api.g_miss_char
8554             ,p_NEW_INST_USAGE_CODE               => fnd_api.g_miss_char
8555             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
8556             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
8557             ,p_OLD_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
8558             ,p_NEW_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
8559             ,p_OLD_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
8560             ,p_NEW_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
8561             ,p_OLD_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
8562             ,p_NEW_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
8563             ,p_OLD_INSTALL_DATE                  => l_ins_hist_csr.old_install_date
8564             ,p_NEW_INSTALL_DATE                  => l_ins_hist_csr.new_install_date
8565             ,p_OLD_RETURN_BY_DATE                => fnd_api.g_miss_date
8566             ,p_NEW_RETURN_BY_DATE                => fnd_api.g_miss_date
8567             ,p_OLD_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
8568             ,p_NEW_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
8569             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_ins_hist_csr.OLD_OE_AGREEMENT_ID
8570             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_ins_hist_csr.NEW_OE_AGREEMENT_ID
8571             ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_ins_hist_csr.OLD_LAST_OE_ORDER_LINE_ID
8572             ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_ins_hist_csr.NEW_LAST_OE_ORDER_LINE_ID
8573             ,p_OLD_LAST_OE_RMA_LINE_ID        => l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID
8574             ,p_NEW_LAST_OE_RMA_LINE_ID        => l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID
8575             ,p_OLD_LAST_WIP_JOB_ID               => l_ins_hist_csr.OLD_LAST_WIP_JOB_ID
8576             ,p_NEW_LAST_WIP_JOB_ID               => l_ins_hist_csr.NEW_LAST_WIP_JOB_ID
8577             ,p_OLD_LAST_PO_PO_LINE_ID            => l_ins_hist_csr.OLD_LAST_PO_PO_LINE_ID
8578             ,p_NEW_LAST_PO_PO_LINE_ID            => l_ins_hist_csr.NEW_LAST_PO_PO_LINE_ID
8579             ,p_OLD_LAST_PA_PROJECT_ID            => l_ins_hist_csr.OLD_LAST_PA_PROJECT_ID
8580             ,p_NEW_LAST_PA_PROJECT_ID            => l_ins_hist_csr.NEW_LAST_PA_PROJECT_ID
8581             ,p_OLD_LAST_PA_TASK_ID          => l_ins_hist_csr.OLD_LAST_PA_TASK_ID
8582             ,p_NEW_LAST_PA_TASK_ID          => l_ins_hist_csr.NEW_LAST_PA_TASK_ID
8583             ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_ins_hist_csr.OLD_LAST_TXN_LINE_DETAIL_ID
8584             ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_ins_hist_csr.NEW_LAST_TXN_LINE_DETAIL_ID
8585             ,p_OLD_LAST_OE_PO_NUMBER             => l_ins_hist_csr.OLD_LAST_OE_PO_NUMBER
8586             ,p_NEW_LAST_OE_PO_NUMBER             => l_ins_hist_csr.NEW_LAST_OE_PO_NUMBER
8587 	    --start of parameters addition for eam integration--
8588             ,p_OLD_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
8589             ,p_NEW_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
8590             ,p_OLD_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
8591             ,p_NEW_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
8592             ,p_OLD_PN_LOCATION_ID                 => fnd_api.g_miss_num
8593             ,p_NEW_PN_LOCATION_ID                 => fnd_api.g_miss_num
8594             ,p_OLD_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
8595             ,p_NEW_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
8596             ,p_OLD_CATEGORY_ID                    => fnd_api.g_miss_num
8597             ,p_NEW_CATEGORY_ID                    => fnd_api.g_miss_num
8598             ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
8599             ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
8600             ,p_OLD_INSTANTIATION_FLAG             => fnd_api.g_miss_char
8601             ,p_NEW_INSTANTIATION_FLAG             => fnd_api.g_miss_char
8602             ,p_OLD_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
8603             ,p_NEW_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
8604             ,p_OLD_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
8605             ,p_NEW_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
8606             ,p_OLD_CHECKIN_STATUS                 => fnd_api.g_miss_num
8607             ,p_NEW_CHECKIN_STATUS                 => fnd_api.g_miss_num
8608             ,p_OLD_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
8609             ,p_NEW_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
8610             ,p_OLD_ATTRIBUTE16                    => fnd_api.g_miss_char
8611             ,p_NEW_ATTRIBUTE16                    => fnd_api.g_miss_char
8612             ,p_OLD_ATTRIBUTE17                    => fnd_api.g_miss_char
8613             ,p_NEW_ATTRIBUTE17                    => fnd_api.g_miss_char
8614             ,p_OLD_ATTRIBUTE18                    => fnd_api.g_miss_char
8615             ,p_NEW_ATTRIBUTE18                    => fnd_api.g_miss_char
8616             ,p_OLD_ATTRIBUTE19                    => fnd_api.g_miss_char
8617             ,p_NEW_ATTRIBUTE19                    => fnd_api.g_miss_char
8618             ,p_OLD_ATTRIBUTE20                    => fnd_api.g_miss_char
8619             ,p_NEW_ATTRIBUTE20                    => fnd_api.g_miss_char
8620             ,p_OLD_ATTRIBUTE21                    => fnd_api.g_miss_char
8621             ,p_NEW_ATTRIBUTE21                    => fnd_api.g_miss_char
8622             ,p_OLD_ATTRIBUTE22                    => fnd_api.g_miss_char
8623             ,p_NEW_ATTRIBUTE22                    => fnd_api.g_miss_char
8624             ,p_OLD_ATTRIBUTE23                    => fnd_api.g_miss_char
8625             ,p_NEW_ATTRIBUTE23                    => fnd_api.g_miss_char
8626             ,p_OLD_ATTRIBUTE24                    => fnd_api.g_miss_char
8627             ,p_NEW_ATTRIBUTE24                    => fnd_api.g_miss_char
8628             ,p_OLD_ATTRIBUTE25                    => fnd_api.g_miss_char
8629             ,p_NEW_ATTRIBUTE25                    => fnd_api.g_miss_char
8630             ,p_OLD_ATTRIBUTE26                    => fnd_api.g_miss_char
8631             ,p_NEW_ATTRIBUTE26                    => fnd_api.g_miss_char
8632             ,p_OLD_ATTRIBUTE27                    => fnd_api.g_miss_char
8633             ,p_NEW_ATTRIBUTE27                    => fnd_api.g_miss_char
8634             ,p_OLD_ATTRIBUTE28                    => fnd_api.g_miss_char
8635             ,p_NEW_ATTRIBUTE28                    => fnd_api.g_miss_char
8636             ,p_OLD_ATTRIBUTE29                    => fnd_api.g_miss_char
8637             ,p_NEW_ATTRIBUTE29                    => fnd_api.g_miss_char
8638             ,p_OLD_ATTRIBUTE30                    => fnd_api.g_miss_char
8639             ,p_NEW_ATTRIBUTE30                    => fnd_api.g_miss_char
8640   	    --end of parameters addition for eam integration--
8641        -- Addition of columns for FA Integration
8642             ,p_OLD_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
8643             ,p_NEW_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
8644             ,p_OLD_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
8645             ,p_NEW_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
8646             ,p_OLD_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
8647             ,p_NEW_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
8648             ,p_OLD_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
8649             ,p_NEW_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
8650             ,p_OLD_SALES_UNIT_PRICE               => fnd_api.g_miss_num
8651             ,p_NEW_SALES_UNIT_PRICE               => fnd_api.g_miss_num
8652             ,p_OLD_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
8653             ,p_NEW_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
8654             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_ins_hist_csr.old_operational_status_code
8655             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_ins_hist_csr.new_operational_status_code
8656         -- End addition of columns for FA Integration
8657             -- Begin Add Code for Siebel Genesis Project
8658             ,p_OLD_SOURCE_CODE                   => fnd_api.g_miss_char
8659             ,p_NEW_SOURCE_CODE                   => fnd_api.g_miss_char
8660             -- End Add Code for Siebel Genesis Project
8661             );
8662 
8663         END IF; -- end if of l_ins_hist_csr.full_dump_flag
8664       EXCEPTION
8665 
8666       WHEN NO_DATA_FOUND THEN
8667          -- END OF MODIFICATION ON 22-JUL SK
8668 
8669       -- Check if there is a need to validate instance_usage_code, vld_organization_id
8670          IF (l_mod_value = 0) THEN
8671           -- If the mod value is 0 then dump all the columns both changed and unchanged
8672           -- changed columns have old and new values while the unchanged values have old and new values
8673           -- exactly same
8674 
8675               p_instance_rec.INSTANCE_NUMBER            := l_curr_instance_rec.INSTANCE_NUMBER;
8676               p_instance_rec.EXTERNAL_REFERENCE         := l_curr_instance_rec.EXTERNAL_REFERENCE;
8677               p_instance_rec.INVENTORY_ITEM_ID          := l_curr_instance_rec.INVENTORY_ITEM_ID;
8678               p_instance_rec.INVENTORY_REVISION         := l_curr_instance_rec.INVENTORY_REVISION;
8679               p_instance_rec.INV_MASTER_ORGANIZATION_ID := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
8680               p_instance_rec.SERIAL_NUMBER              := l_curr_instance_rec.SERIAL_NUMBER;
8681               p_instance_rec.MFG_SERIAL_NUMBER_FLAG     := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
8682               p_instance_rec.LOT_NUMBER                 := l_curr_instance_rec.LOT_NUMBER;
8683               p_instance_rec.QUANTITY                   := l_curr_instance_rec.QUANTITY;
8684               p_instance_rec.UNIT_OF_MEASURE            := l_curr_instance_rec.UNIT_OF_MEASURE;
8685               p_instance_rec.INSTANCE_CONDITION_ID      := l_curr_instance_rec.INSTANCE_CONDITION_ID;
8686               p_instance_rec.CUSTOMER_VIEW_FLAG         := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
8687               p_instance_rec.MERCHANT_VIEW_FLAG         := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
8688               p_instance_rec.SELLABLE_FLAG              := l_curr_instance_rec.SELLABLE_FLAG;
8689               p_instance_rec.INSTANCE_TYPE_CODE         := l_curr_instance_rec.INSTANCE_TYPE_CODE;
8690               p_instance_rec.ACTIVE_START_DATE          := l_curr_instance_rec.ACTIVE_START_DATE;
8691 
8692               IF (p_instance_rec.ACCOUNTING_CLASS_CODE = FND_API.G_MISS_CHAR) THEN
8693                   p_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
8694               END IF;
8695               IF (l_instance_status_id = FND_API.G_MISS_NUM) THEN
8696                   l_instance_status_id := l_curr_instance_rec.INSTANCE_STATUS_ID;
8697               END IF;
8698               IF (l_system_id = FND_API.G_MISS_NUM) THEN
8699                   l_system_id := l_curr_instance_rec.INSTANCE_STATUS_ID;
8700               END IF;
8701               IF (l_install_date = FND_API.G_MISS_DATE) THEN
8702                   l_install_date := l_curr_instance_rec.INSTALL_DATE;
8703               END IF;
8704               IF (p_instance_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
8705                   p_instance_rec.ACTIVE_END_dATE := l_curr_instance_rec.ACTIVE_END_DATE;
8706               END IF;
8707               IF (p_instance_rec.LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
8708                   p_instance_rec.LOCATION_TYPE_CODE := l_curr_instance_rec.LOCATION_TYPE_CODE;
8709               END IF;
8710               IF (p_instance_rec.LOCATION_ID = FND_API.G_MISS_NUM) THEN
8711                   p_instance_rec.LOCATION_ID := l_curr_instance_rec.LOCATION_ID;
8712               END IF;
8713               IF (p_instance_rec.INV_ORGANIZATION_ID = FND_API.G_MISS_NUM) THEN
8714                   p_instance_rec.INV_ORGANIZATION_ID := l_curr_instance_rec.INV_ORGANIZATION_ID;
8715               END IF;
8716               IF (p_instance_rec.INV_SUBINVENTORY_NAME = FND_API.G_MISS_CHAR) THEN
8717                   p_instance_rec.INV_SUBINVENTORY_NAME := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
8718               END IF;
8719               IF (p_instance_rec.INV_LOCATOR_ID = FND_API.G_MISS_NUM) THEN
8720                   p_instance_rec.INV_LOCATOR_ID := l_curr_instance_rec.INV_LOCATOR_ID;
8721               END IF;
8722               IF (p_instance_rec.PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
8723                   p_instance_rec.PA_PROJECT_ID := l_curr_instance_rec.PA_PROJECT_ID;
8724               END IF;
8725               IF (p_instance_rec.PA_PROJECT_TASK_ID = FND_API.G_MISS_NUM) THEN
8726                   p_instance_rec.PA_PROJECT_TASK_ID := l_curr_instance_rec.PA_PROJECT_TASK_ID;
8727               END IF;
8728               IF (p_instance_rec.IN_TRANSIT_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
8729                   p_instance_rec.IN_TRANSIT_ORDER_LINE_ID := l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
8730               END IF;
8731               IF (p_instance_rec.WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
8732                   p_instance_rec.WIP_JOB_ID := l_curr_instance_rec.WIP_JOB_ID;
8733               END IF;
8734               IF (p_instance_rec.PO_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
8735                   p_instance_rec.PO_ORDER_LINE_ID := l_curr_instance_rec.PO_ORDER_LINE_ID;
8736               END IF;
8737               IF (p_instance_rec.LAST_OE_AGREEMENT_ID = FND_API.G_MISS_NUM) THEN
8738                   p_instance_rec.LAST_OE_AGREEMENT_ID := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
8739               END IF;
8740               IF (p_instance_rec.LAST_OE_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
8741                   p_instance_rec.LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID;
8742               END IF;
8743               IF (p_instance_rec.LAST_OE_RMA_LINE_ID = FND_API.G_MISS_NUM) THEN
8744                   p_instance_rec.LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
8745               END IF;
8746               IF (p_instance_rec.LAST_WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
8747                   p_instance_rec.LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID;
8748               END IF;
8749               IF (p_instance_rec.LAST_PO_PO_LINE_ID = FND_API.G_MISS_NUM) THEN
8750                   p_instance_rec.LAST_PO_PO_LINE_ID := l_curr_instance_rec.LAST_PO_PO_LINE_ID;
8751               END IF;
8752               IF (p_instance_rec.LAST_PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
8753                   p_instance_rec.LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID;
8754               END IF;
8755               IF (p_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
8756                   p_instance_rec.LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID;
8757               END IF;
8758               IF (p_instance_rec.LAST_TXN_LINE_DETAIL_ID = FND_API.G_MISS_NUM) THEN
8759                   p_instance_rec.LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID;
8760               END IF;
8761               IF (p_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
8762                   p_instance_rec.LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER;
8763               END IF;
8764               IF (p_instance_rec.INSTALL_LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
8765                   p_instance_rec.INSTALL_LOCATION_TYPE_CODE := l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE;
8766               END IF;
8767               IF (p_instance_rec.INSTALL_LOCATION_ID = FND_API.G_MISS_NUM) THEN
8768                   p_instance_rec.INSTALL_LOCATION_ID := l_curr_instance_rec.INSTALL_LOCATION_ID;
8769               END IF;
8770               IF (p_instance_rec.OPERATIONAL_STATUS_CODE = FND_API.G_MISS_CHAR) THEN
8771                   p_instance_rec.OPERATIONAL_STATUS_CODE := l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE;
8772               END IF;
8773 
8774               p_instance_rec.MANUALLY_CREATED_FLAG  := l_curr_instance_rec.MANUALLY_CREATED_FLAG;
8775               p_instance_rec.RETURN_BY_DATE         := l_curr_instance_rec.RETURN_BY_DATE;
8776               p_instance_rec.ACTUAL_RETURN_DATE     := l_curr_instance_rec.ACTUAL_RETURN_DATE;
8777               p_instance_rec.CREATION_COMPLETE_FLAG := l_curr_instance_rec.CREATION_COMPLETE_FLAG;
8778               p_instance_rec.COMPLETENESS_FLAG      := l_curr_instance_rec.COMPLETENESS_FLAG;
8779               p_instance_rec.CONTEXT                := l_curr_instance_rec.CONTEXT;
8780               p_instance_rec.ATTRIBUTE1             := l_curr_instance_rec.ATTRIBUTE1;
8781               p_instance_rec.ATTRIBUTE2             := l_curr_instance_rec.ATTRIBUTE2;
8782               p_instance_rec.ATTRIBUTE3             := l_curr_instance_rec.ATTRIBUTE3;
8783               p_instance_rec.ATTRIBUTE4             := l_curr_instance_rec.ATTRIBUTE4;
8784               p_instance_rec.ATTRIBUTE5             := l_curr_instance_rec.ATTRIBUTE5;
8785               p_instance_rec.ATTRIBUTE6             := l_curr_instance_rec.ATTRIBUTE6;
8786               p_instance_rec.ATTRIBUTE7             := l_curr_instance_rec.ATTRIBUTE7;
8787               p_instance_rec.ATTRIBUTE8             := l_curr_instance_rec.ATTRIBUTE8;
8788               p_instance_rec.ATTRIBUTE9             := l_curr_instance_rec.ATTRIBUTE9;
8789               p_instance_rec.ATTRIBUTE10            := l_curr_instance_rec.ATTRIBUTE10;
8790               p_instance_rec.ATTRIBUTE11            := l_curr_instance_rec.ATTRIBUTE11;
8791               p_instance_rec.ATTRIBUTE12            := l_curr_instance_rec.ATTRIBUTE12;
8792               p_instance_rec.ATTRIBUTE13            := l_curr_instance_rec.ATTRIBUTE13;
8793               p_instance_rec.ATTRIBUTE14            := l_curr_instance_rec.ATTRIBUTE14;
8794               p_instance_rec.ATTRIBUTE15            := l_curr_instance_rec.ATTRIBUTE15;
8795               p_instance_rec.OBJECT_VERSION_NUMBER  := l_curr_instance_rec.OBJECT_VERSION_NUMBER;
8796               p_instance_rec.INSTANCE_USAGE_CODE    := l_curr_instance_rec.INSTANCE_USAGE_CODE;
8797               p_instance_rec.CONFIG_INST_REV_NUM    := l_curr_instance_rec.CONFIG_INST_REV_NUM;
8798               p_instance_rec.CONFIG_VALID_STATUS    := l_curr_instance_rec.CONFIG_VALID_STATUS;
8799               p_instance_rec.INSTANCE_DESCRIPTION   := l_curr_instance_rec.INSTANCE_DESCRIPTION;
8800 	      --start of code for eam integration--
8801               p_instance_rec.NETWORK_ASSET_FLAG     := l_curr_instance_rec.NETWORK_ASSET_FLAG;
8802               p_instance_rec.MAINTAINABLE_FLAG      := l_curr_instance_rec.MAINTAINABLE_FLAG;
8803               p_instance_rec.PN_LOCATION_ID         := l_curr_instance_rec.PN_LOCATION_ID;
8804               p_instance_rec.ASSET_CRITICALITY_CODE := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
8805               p_instance_rec.CATEGORY_ID            := l_curr_instance_rec.CATEGORY_ID;
8806               p_instance_rec.EQUIPMENT_GEN_OBJECT_ID:= l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
8807               p_instance_rec.INSTANTIATION_FLAG     := l_curr_instance_rec.INSTANTIATION_FLAG;
8808               p_instance_rec.LINEAR_LOCATION_ID     := l_curr_instance_rec.LINEAR_LOCATION_ID;
8809               p_instance_rec.OPERATIONAL_LOG_FLAG   := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
8810               p_instance_rec.CHECKIN_STATUS         := l_curr_instance_rec.CHECKIN_STATUS;
8811               p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
8812               p_instance_rec.ATTRIBUTE16            := l_curr_instance_rec.ATTRIBUTE16;
8813               p_instance_rec.ATTRIBUTE17            := l_curr_instance_rec.ATTRIBUTE17;
8814               p_instance_rec.ATTRIBUTE18            := l_curr_instance_rec.ATTRIBUTE18;
8815               p_instance_rec.ATTRIBUTE19            := l_curr_instance_rec.ATTRIBUTE19;
8816               p_instance_rec.ATTRIBUTE20            := l_curr_instance_rec.ATTRIBUTE20;
8817               p_instance_rec.ATTRIBUTE21            := l_curr_instance_rec.ATTRIBUTE21;
8818               p_instance_rec.ATTRIBUTE22            := l_curr_instance_rec.ATTRIBUTE22;
8819               p_instance_rec.ATTRIBUTE23            := l_curr_instance_rec.ATTRIBUTE23;
8820               p_instance_rec.ATTRIBUTE24            := l_curr_instance_rec.ATTRIBUTE24;
8821               p_instance_rec.ATTRIBUTE25            := l_curr_instance_rec.ATTRIBUTE25;
8822               p_instance_rec.ATTRIBUTE26            := l_curr_instance_rec.ATTRIBUTE26;
8823               p_instance_rec.ATTRIBUTE27            := l_curr_instance_rec.ATTRIBUTE27;
8824               p_instance_rec.ATTRIBUTE28            := l_curr_instance_rec.ATTRIBUTE28;
8825               p_instance_rec.ATTRIBUTE29            := l_curr_instance_rec.ATTRIBUTE29;
8826               p_instance_rec.ATTRIBUTE30            := l_curr_instance_rec.ATTRIBUTE30;
8827               --end of code for eam integration--
8828        -- Addition of columns for FA Integration
8829               p_instance_rec.PAYABLES_UNIT_PRICE     := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
8830               p_instance_rec.PAYABLES_CURRENCY_CODE  := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
8831               p_instance_rec.PURCHASE_UNIT_PRICE     := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
8832               p_instance_rec.PURCHASE_CURRENCY_CODE  := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
8833               p_instance_rec.SALES_UNIT_PRICE        := l_curr_instance_rec.SALES_UNIT_PRICE;
8834               p_instance_rec.SALES_CURRENCY_CODE     := l_curr_instance_rec.SALES_CURRENCY_CODE;
8835             --  p_instance_rec.OPERATIONAL_STATUS_CODE := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
8836         -- End addition of columns for FA Integration
8837 
8838            /* Commented out to implement bulk processing.... Bug:5615169
8839 	   CSI_ITEM_INSTANCES_H_PKG.Insert_Row
8840            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
8841             ,p_INSTANCE_ID                       => l_rel_tbl(j).subject_id
8842             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
8843             ,p_OLD_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
8844             ,p_NEW_INSTANCE_NUMBER               => p_instance_rec.INSTANCE_NUMBER
8845             ,p_OLD_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
8846             ,p_NEW_EXTERNAL_REFERENCE            => p_instance_rec.EXTERNAL_REFERENCE
8847             ,p_OLD_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
8848             ,p_NEW_INVENTORY_ITEM_ID             => p_instance_rec.INVENTORY_ITEM_ID
8849             ,p_OLD_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
8850             ,p_NEW_INVENTORY_REVISION            => p_instance_rec.INVENTORY_REVISION
8851             ,p_OLD_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
8852             ,p_NEW_INV_MASTER_ORGZN_ID           => p_instance_rec.INV_MASTER_ORGANIZATION_ID
8853             ,p_OLD_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
8854             ,p_NEW_SERIAL_NUMBER                 => p_instance_rec.SERIAL_NUMBER
8855             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
8856             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
8857             ,p_OLD_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
8858             ,p_NEW_LOT_NUMBER                    => p_instance_rec.LOT_NUMBER
8859             ,p_OLD_QUANTITY                      => l_curr_instance_rec.QUANTITY
8860             ,p_NEW_QUANTITY                      => p_instance_rec.QUANTITY
8861             ,p_OLD_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
8862             ,p_NEW_UNIT_OF_MEASURE               => p_instance_rec.UNIT_OF_MEASURE
8863             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
8864             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
8865             ,p_OLD_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
8866             ,p_NEW_INSTANCE_CONDITION_ID         => p_instance_rec.INSTANCE_CONDITION_ID
8867             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
8868             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_status_id --p_instance_rec.INSTANCE_STATUS_ID
8869             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
8870             ,p_NEW_CUSTOMER_VIEW_FLAG            => p_instance_rec.CUSTOMER_VIEW_FLAG
8871             ,p_OLD_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
8872             ,p_NEW_MERCHANT_VIEW_FLAG            => p_instance_rec.MERCHANT_VIEW_FLAG
8873             ,p_OLD_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
8874             ,p_NEW_SELLABLE_FLAG                 => p_instance_rec.SELLABLE_FLAG
8875             ,p_OLD_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
8876             ,p_NEW_SYSTEM_ID                     => l_system_id
8877             ,p_OLD_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
8878             ,p_NEW_INSTANCE_TYPE_CODE            => p_instance_rec.INSTANCE_TYPE_CODE
8879             ,p_OLD_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
8880             ,p_NEW_ACTIVE_START_DATE             => p_instance_rec.ACTIVE_START_DATE
8881             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
8882             ,p_NEW_ACTIVE_END_DATE               => p_instance_rec.ACTIVE_END_DATE
8883             ,p_OLD_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
8884             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
8885             ,p_OLD_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
8886             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
8887             ,p_OLD_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
8888             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
8889             ,p_OLD_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
8890             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
8891             ,p_OLD_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
8892             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
8893             ,p_OLD_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
8894             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
8895             ,p_OLD_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
8896             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
8897             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
8898             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
8899             ,p_OLD_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
8900             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
8901             ,p_OLD_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
8902             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
8903             ,p_OLD_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
8904             ,p_NEW_COMPLETENESS_FLAG             => p_instance_rec.COMPLETENESS_FLAG
8905             ,p_FULL_DUMP_FLAG                    => 'Y'
8906             ,p_NEW_CONTEXT                       => p_instance_rec.CONTEXT
8907             ,P_OLD_CONTEXT                       => l_curr_instance_rec.CONTEXT
8908             ,p_NEW_ATTRIBUTE1                    => p_instance_rec.ATTRIBUTE1
8909             ,p_OLD_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
8910             ,p_NEW_ATTRIBUTE2                    => p_instance_rec.ATTRIBUTE2
8911             ,p_OLD_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
8912             ,p_NEW_ATTRIBUTE3                    => p_instance_rec.ATTRIBUTE3
8913             ,p_OLD_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
8914             ,p_NEW_ATTRIBUTE4                    => p_instance_rec.ATTRIBUTE4
8915             ,p_OLD_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
8916             ,p_NEW_ATTRIBUTE5                    => p_instance_rec.ATTRIBUTE5
8917             ,p_OLD_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
8918             ,p_NEW_ATTRIBUTE6                    => p_instance_rec.ATTRIBUTE6
8919             ,p_OLD_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
8920             ,p_NEW_ATTRIBUTE7                    => p_instance_rec.ATTRIBUTE7
8921             ,p_OLD_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
8922             ,p_NEW_ATTRIBUTE8                    => p_instance_rec.ATTRIBUTE8
8923             ,p_OLD_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
8924             ,p_NEW_ATTRIBUTE9                    => p_instance_rec.ATTRIBUTE9
8925             ,p_OLD_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
8926             ,p_NEW_ATTRIBUTE10                   => p_instance_rec.ATTRIBUTE10
8927             ,p_OLD_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
8928             ,p_NEW_ATTRIBUTE11                   => p_instance_rec.ATTRIBUTE11
8929             ,p_OLD_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
8930             ,p_NEW_ATTRIBUTE12                   => p_instance_rec.ATTRIBUTE12
8931             ,p_OLD_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
8932             ,p_NEW_ATTRIBUTE13                   => p_instance_rec.ATTRIBUTE13
8933             ,p_OLD_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
8934             ,p_NEW_ATTRIBUTE14                   => p_instance_rec.ATTRIBUTE14
8935             ,p_OLD_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
8936             ,p_NEW_ATTRIBUTE15                   => p_instance_rec.ATTRIBUTE15
8937             ,p_OLD_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
8938             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
8939             ,p_CREATION_DATE                     => SYSDATE
8940             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
8941             ,p_LAST_UPDATE_DATE                  => SYSDATE
8942             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
8943             ,p_OBJECT_VERSION_NUMBER             => 1
8944             ,p_OLD_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
8945             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
8946             ,p_OLD_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
8947             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
8948             ,p_OLD_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
8949             ,p_NEW_INST_USAGE_CODE               => p_instance_rec.INSTANCE_USAGE_CODE
8950             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
8951             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
8952             ,p_OLD_CONFIG_INST_REV_NUM           => l_curr_instance_rec.CONFIG_INST_REV_NUM
8953             ,p_NEW_CONFIG_INST_REV_NUM           => p_instance_rec.CONFIG_INST_REV_NUM
8954             ,p_OLD_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
8955             ,p_NEW_CONFIG_VALID_STATUS           => p_instance_rec.CONFIG_VALID_STATUS
8956             ,p_OLD_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
8957             ,p_NEW_INSTANCE_DESCRIPTION          => p_instance_rec.INSTANCE_DESCRIPTION
8958             ,p_OLD_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
8959             ,p_NEW_INSTALL_DATE                  => l_install_date -- p_instance_rec.INSTALL_DATE
8960             ,p_OLD_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
8961             ,p_NEW_RETURN_BY_DATE                => p_instance_rec.RETURN_BY_DATE
8962             ,p_OLD_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
8963             ,p_NEW_ACTUAL_RETURN_DATE            => p_instance_rec.ACTUAL_RETURN_DATE
8964             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
8965             ,p_NEW_LAST_OE_AGREEMENT_ID          => p_instance_rec.LAST_OE_AGREEMENT_ID
8966 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
8967 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => p_instance_rec.LAST_OE_ORDER_LINE_ID
8968 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
8969 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => p_instance_rec.LAST_OE_RMA_LINE_ID
8970 	    ,p_OLD_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
8971 	    ,p_NEW_LAST_WIP_JOB_ID               => p_instance_rec.LAST_WIP_JOB_ID
8972 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
8973 	    ,p_NEW_LAST_PO_PO_LINE_ID            => p_instance_rec.LAST_PO_PO_LINE_ID
8974 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
8975 	    ,p_NEW_LAST_PA_PROJECT_ID            => p_instance_rec.LAST_PA_PROJECT_ID
8976 	    ,p_OLD_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
8977 	    ,p_NEW_LAST_PA_TASK_ID          => p_instance_rec.LAST_PA_TASK_ID
8978 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
8979 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
8980 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
8981 	    ,p_NEW_LAST_OE_PO_NUMBER             => p_instance_rec.LAST_OE_PO_NUMBER
8982  	    --start of parameters addition for eam integration--
8983 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
8984 	    ,p_NEW_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
8985 	    ,p_OLD_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
8986 	    ,p_NEW_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
8987 	    ,p_OLD_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
8988 	    ,p_NEW_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
8989 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
8990 	    ,p_NEW_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
8991 	    ,p_OLD_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
8992 	    ,p_NEW_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
8993 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
8994 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
8995 	    ,p_OLD_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
8996 	    ,p_NEW_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
8997 	    ,p_OLD_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
8998 	    ,p_NEW_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
8999 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
9000 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
9001 	    ,p_OLD_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
9002 	    ,p_NEW_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
9003 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
9004 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
9005             ,p_OLD_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
9006             ,p_NEW_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
9007             ,p_OLD_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
9008             ,p_NEW_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
9009             ,p_OLD_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
9010             ,p_NEW_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
9011             ,p_OLD_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
9012             ,p_NEW_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
9013             ,p_OLD_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
9014             ,p_NEW_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
9015             ,p_OLD_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
9016             ,p_NEW_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
9017             ,p_OLD_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
9018             ,p_NEW_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
9019             ,p_OLD_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
9020             ,p_NEW_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
9021             ,p_OLD_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
9022             ,p_NEW_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
9023             ,p_OLD_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
9024             ,p_NEW_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
9025             ,p_OLD_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
9026             ,p_NEW_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
9027             ,p_OLD_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
9028             ,p_NEW_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
9029             ,p_OLD_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
9030             ,p_NEW_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
9031             ,p_OLD_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
9032             ,p_NEW_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
9033             ,p_OLD_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
9034             ,p_NEW_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
9035   	    --end of parameters addition for eam integration--
9036    -- Addition of columns for FA Integration
9037             ,p_OLD_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
9038             ,p_NEW_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
9039             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
9040             ,p_NEW_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
9041             ,p_OLD_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
9042             ,p_NEW_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
9043             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
9044             ,p_NEW_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
9045             ,p_OLD_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
9046             ,p_NEW_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
9047             ,p_OLD_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
9048             ,p_NEW_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
9049             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
9050             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
9051     -- End addition of columns for FA Integration
9052             );
9053          End of insert ...Bug:5615169 */
9054 
9055 	--Start of: Added for Bug:5615169
9056 	--Insert the data into bulk table
9057 	l_ciih_blk_ins_cnt                                                       := l_ciih_blk_ins_cnt + 1;
9058 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).instance_history_id          := l_csi_item_instance_h_id;
9059 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).instance_id                  := l_rel_tbl(j).subject_id;
9060 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).transaction_id               := p_txn_rec.TRANSACTION_ID;
9061 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_number          := l_curr_instance_rec.INSTANCE_NUMBER;
9062 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_number          := p_instance_rec.INSTANCE_NUMBER;
9063 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_external_reference       := l_curr_instance_rec.EXTERNAL_REFERENCE;
9064 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_external_reference       := p_instance_rec.EXTERNAL_REFERENCE;
9065 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inventory_item_id        := l_curr_instance_rec.INVENTORY_ITEM_ID;
9066 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inventory_item_id        := p_instance_rec.INVENTORY_ITEM_ID;
9067 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inventory_revision       := l_curr_instance_rec.INVENTORY_REVISION;
9068 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inventory_revision       := p_instance_rec.INVENTORY_REVISION;
9069 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_master_org_id        := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
9070 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_master_org_id        := p_instance_rec.INV_MASTER_ORGANIZATION_ID;
9071 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_serial_number            := l_curr_instance_rec.SERIAL_NUMBER;
9072 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_serial_number            := p_instance_rec.SERIAL_NUMBER;
9073 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_mfg_serial_number_flag   := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
9074 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_mfg_serial_number_flag   := p_instance_rec.MFG_SERIAL_NUMBER_FLAG;
9075 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_lot_number               := l_curr_instance_rec.LOT_NUMBER;
9076 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_lot_number               := p_instance_rec.LOT_NUMBER;
9077 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_quantity                 := l_curr_instance_rec.QUANTITY;
9078 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_quantity                 := p_instance_rec.QUANTITY;
9079 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_unit_of_measure          := l_curr_instance_rec.UNIT_OF_MEASURE;
9080 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_unit_of_measure          := p_instance_rec.UNIT_OF_MEASURE;
9081 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_accounting_class_code    := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
9082 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_accounting_class_code    := p_instance_rec.ACCOUNTING_CLASS_CODE;
9083 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_condition_id    := l_curr_instance_rec.INSTANCE_CONDITION_ID;
9084 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_condition_id    := p_instance_rec.INSTANCE_CONDITION_ID;
9085 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_status_id       := l_curr_instance_rec.INSTANCE_STATUS_ID;
9086 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_status_id       := l_instance_status_id; --p_instance_rec.INSTANCE_STATUS_IDs_id;
9087 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_customer_view_flag       := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
9088 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_customer_view_flag       := p_instance_rec.CUSTOMER_VIEW_FLAG;
9089 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_merchant_view_flag       := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
9090 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_merchant_view_flag       := p_instance_rec.MERCHANT_VIEW_FLAG;
9091 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sellable_flag            := l_curr_instance_rec.SELLABLE_FLAG;
9092 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sellable_flag            := p_instance_rec.SELLABLE_FLAG;
9093 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_system_id                := l_curr_instance_rec.SYSTEM_ID;
9094 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_system_id                := l_system_id;
9095 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_type_code       := l_curr_instance_rec.INSTANCE_TYPE_CODE;
9096 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_type_code       := p_instance_rec.INSTANCE_TYPE_CODE;
9097 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_active_start_date        := l_curr_instance_rec.ACTIVE_START_DATE;
9098 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_active_start_date        := p_instance_rec.ACTIVE_START_DATE;
9099 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_active_end_date          := l_curr_instance_rec.ACTIVE_END_DATE;
9100 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_active_end_date          := p_instance_rec.ACTIVE_END_DATE;
9101 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_location_type_code       := l_curr_instance_rec.LOCATION_TYPE_CODE;
9102 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_location_type_code       := p_instance_rec.LOCATION_TYPE_CODE;
9103 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_location_id              := l_curr_instance_rec.LOCATION_ID;
9104 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_location_id              := p_instance_rec.LOCATION_ID;
9105 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_organization_id      := l_curr_instance_rec.INV_ORGANIZATION_ID;
9106 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_organization_id      := p_instance_rec.INV_ORGANIZATION_ID;
9107 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_subinventory_name    := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
9108 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_subinventory_name    := p_instance_rec.INV_SUBINVENTORY_NAME;
9109 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_locator_id           := l_curr_instance_rec.INV_LOCATOR_ID;
9110 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_locator_id           := p_instance_rec.INV_LOCATOR_ID;
9111 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pa_project_id            := l_curr_instance_rec.PA_PROJECT_ID;
9112 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pa_project_id            := p_instance_rec.PA_PROJECT_ID;
9113 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pa_project_task_id       := l_curr_instance_rec.PA_PROJECT_TASK_ID;
9114 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pa_project_task_id       := p_instance_rec.PA_PROJECT_TASK_ID;
9115 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_in_transit_order_line_id := l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
9116 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_in_transit_order_line_id := p_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
9117 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_wip_job_id               := l_curr_instance_rec.WIP_JOB_ID;
9118 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_wip_job_id               := p_instance_rec.WIP_JOB_ID;
9119 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_po_order_line_id         := l_curr_instance_rec.PO_ORDER_LINE_ID;
9120 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_po_order_line_id         := p_instance_rec.PO_ORDER_LINE_ID;
9121 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_completeness_flag        := l_curr_instance_rec.COMPLETENESS_FLAG;
9122 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_completeness_flag        := p_instance_rec.COMPLETENESS_FLAG;
9123 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).full_dump_flag               := 'Y';
9124 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_context                  := p_instance_rec.CONTEXT;
9125 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_context                  := l_curr_instance_rec.CONTEXT;
9126 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute1               := p_instance_rec.ATTRIBUTE1;
9127 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute1               := l_curr_instance_rec.ATTRIBUTE1;
9128 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute2               := p_instance_rec.ATTRIBUTE2;
9129 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute2               := l_curr_instance_rec.ATTRIBUTE2;
9130 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute3               := p_instance_rec.ATTRIBUTE3;
9131 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute3               := l_curr_instance_rec.ATTRIBUTE3;
9132 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute4               := p_instance_rec.ATTRIBUTE4;
9133 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute4               := l_curr_instance_rec.ATTRIBUTE4;
9134 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute5               := p_instance_rec.ATTRIBUTE5;
9135 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute5               := l_curr_instance_rec.ATTRIBUTE5;
9136 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute6               := p_instance_rec.ATTRIBUTE6;
9137 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute6               := l_curr_instance_rec.ATTRIBUTE6;
9138 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute7               := p_instance_rec.ATTRIBUTE7;
9139 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute7               := l_curr_instance_rec.ATTRIBUTE7;
9140 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute8               := p_instance_rec.ATTRIBUTE8;
9141 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute8               := l_curr_instance_rec.ATTRIBUTE8;
9142 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute9               := p_instance_rec.ATTRIBUTE9;
9143 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute9               := l_curr_instance_rec.ATTRIBUTE9;
9144 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute10              := p_instance_rec.ATTRIBUTE10;
9145 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute10              := l_curr_instance_rec.ATTRIBUTE10;
9146 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute11              := p_instance_rec.ATTRIBUTE11;
9147 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute11              := l_curr_instance_rec.ATTRIBUTE11;
9148 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute12              := p_instance_rec.ATTRIBUTE12;
9149 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute12              := l_curr_instance_rec.ATTRIBUTE12;
9150 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute13              := p_instance_rec.ATTRIBUTE13;
9151 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute13              := l_curr_instance_rec.ATTRIBUTE13;
9152 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute14              := p_instance_rec.ATTRIBUTE14;
9153 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute14              := l_curr_instance_rec.ATTRIBUTE14;
9154 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute15              := p_instance_rec.ATTRIBUTE15;
9155 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute15              := l_curr_instance_rec.ATTRIBUTE15;
9156 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).created_by                        := FND_GLOBAL.USER_ID;
9157 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).creation_date                     := SYSDATE;
9158 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_updated_by                   := FND_GLOBAL.USER_ID;
9159 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_update_date                  := SYSDATE;
9160 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_update_login                 := FND_GLOBAL.CONC_LOGIN_ID;
9161 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).object_version_number             := 1;
9162 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_location_type_code := l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE;
9163 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_location_type_code := p_instance_rec.INSTALL_LOCATION_TYPE_CODE;
9164 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_location_id        := l_curr_instance_rec.INSTALL_LOCATION_ID;
9165 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_location_id        := p_instance_rec.INSTALL_LOCATION_ID;
9166 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_usage_code        := l_curr_instance_rec.INSTANCE_USAGE_CODE;
9167 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_usage_code        := p_instance_rec.INSTANCE_USAGE_CODE;
9168 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_vld_organization_id   := fnd_api.g_miss_num;
9169 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_vld_organization_id   := fnd_api.g_miss_num;
9170 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_config_inst_rev_num        := l_curr_instance_rec.CONFIG_INST_REV_NUM;
9171 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_config_inst_rev_num        := p_instance_rec.CONFIG_INST_REV_NUM;
9172 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_config_valid_status        := l_curr_instance_rec.CONFIG_VALID_STATUS;
9173 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_config_valid_status        := p_instance_rec.CONFIG_VALID_STATUS;
9174 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_description       := l_curr_instance_rec.INSTANCE_DESCRIPTION;
9175 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_description       := p_instance_rec.INSTANCE_DESCRIPTION;
9176 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_date               := l_curr_instance_rec.INSTALL_DATE;
9177 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_date               := l_install_date;
9178 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_return_by_date             := l_curr_instance_rec.RETURN_BY_DATE;
9179 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_return_by_date             := p_instance_rec.RETURN_BY_DATE;
9180 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_actual_return_date         := l_curr_instance_rec.ACTUAL_RETURN_DATE;
9181 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_actual_return_date         := p_instance_rec.ACTUAL_RETURN_DATE;
9182 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_agreement_id       := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
9183 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_agreement_id       := p_instance_rec.LAST_OE_AGREEMENT_ID;
9184 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_order_line_id      := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID;
9185 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_order_line_id      := p_instance_rec.LAST_OE_ORDER_LINE_ID;
9186 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_rma_line_id        := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
9187 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_rma_line_id        := p_instance_rec.LAST_OE_RMA_LINE_ID;
9188 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_wip_job_id            := l_curr_instance_rec.LAST_WIP_JOB_ID;
9189 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_wip_job_id            := p_instance_rec.LAST_WIP_JOB_ID;
9190 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_po_po_line_id         := l_curr_instance_rec.LAST_PO_PO_LINE_ID;
9191 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_po_po_line_id         := p_instance_rec.LAST_PO_PO_LINE_ID;
9192 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_pa_project_id         := l_curr_instance_rec.LAST_PA_PROJECT_ID;
9193 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_pa_project_id         := p_instance_rec.LAST_PA_PROJECT_ID;
9194 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_pa_task_id            := l_curr_instance_rec.LAST_PA_TASK_ID;
9195 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_pa_task_id            := p_instance_rec.LAST_PA_TASK_ID;
9196 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_txn_line_detail_id    := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID;
9197 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_txn_line_detail_id    := p_instance_rec.LAST_TXN_LINE_DETAIL_ID;
9198 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_po_number          := l_curr_instance_rec.LAST_OE_PO_NUMBER;
9199 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_po_number          := p_instance_rec.LAST_OE_PO_NUMBER;
9200 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_capitalization_status         := l_curr_instance_rec.CAPITALIZATION_STATUS;
9201 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_capitalization_status         := p_instance_rec.CAPITALIZATION_STATUS;
9202 	--Start of parameters addition for eam integration
9203 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_network_asset_flag      := l_curr_instance_rec.NETWORK_ASSET_FLAG;
9204 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_network_asset_flag      := p_instance_rec.NETWORK_ASSET_FLAG;
9205 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_maintainable_flag       := l_curr_instance_rec.MAINTAINABLE_FLAG;
9206 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_maintainable_flag       := p_instance_rec.MAINTAINABLE_FLAG;
9207 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pn_location_id          := l_curr_instance_rec.PN_LOCATION_ID;
9208 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pn_location_id          := p_instance_rec.PN_LOCATION_ID;
9209 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_asset_criticality_code  := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
9210 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_asset_criticality_code  := p_instance_rec.ASSET_CRITICALITY_CODE;
9211 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_category_id             := l_curr_instance_rec.CATEGORY_ID;
9212 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_category_id             := p_instance_rec.CATEGORY_ID;
9213 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_equipment_gen_object_id := l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
9214 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_equipment_gen_object_id := p_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
9215 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instantiation_flag      := l_curr_instance_rec.INSTANTIATION_FLAG;
9216 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instantiation_flag      := p_instance_rec.INSTANTIATION_FLAG;
9217 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_linear_location_id      := l_curr_instance_rec.LINEAR_LOCATION_ID;
9218 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_linear_location_id      := p_instance_rec.LINEAR_LOCATION_ID;
9219 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_operational_log_flag    := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
9220 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_operational_log_flag    := p_instance_rec.OPERATIONAL_LOG_FLAG;
9221 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_checkin_status          := l_curr_instance_rec.CHECKIN_STATUS;
9222 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_checkin_status          := p_instance_rec.CHECKIN_STATUS;
9223 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_supplier_warranty_exp_date   := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
9224 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_supplier_warranty_exp_date   := p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
9225 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute16             := l_curr_instance_rec.ATTRIBUTE16;
9226 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute16             := p_instance_rec.ATTRIBUTE16;
9227 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute17             := l_curr_instance_rec.ATTRIBUTE17;
9228 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute17             := p_instance_rec.ATTRIBUTE17;
9229 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute18             := l_curr_instance_rec.ATTRIBUTE18;
9230 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute18             := p_instance_rec.ATTRIBUTE18;
9231 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute19             := l_curr_instance_rec.ATTRIBUTE19;
9232 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute19             := p_instance_rec.ATTRIBUTE19;
9233 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute20             := l_curr_instance_rec.ATTRIBUTE20;
9234 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute20             := p_instance_rec.ATTRIBUTE20;
9235 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute21             := l_curr_instance_rec.ATTRIBUTE21;
9236 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute21             := p_instance_rec.ATTRIBUTE21;
9237 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute22             := l_curr_instance_rec.ATTRIBUTE22;
9238 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute22             := p_instance_rec.ATTRIBUTE22;
9239 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute23             := l_curr_instance_rec.ATTRIBUTE23;
9240 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute23             := p_instance_rec.ATTRIBUTE23;
9241 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute24             := l_curr_instance_rec.ATTRIBUTE24;
9242 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute24             := p_instance_rec.ATTRIBUTE24;
9243 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute25             := l_curr_instance_rec.ATTRIBUTE25;
9244 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute25             := p_instance_rec.ATTRIBUTE25;
9245 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute26             := l_curr_instance_rec.ATTRIBUTE26;
9246 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute26             := p_instance_rec.ATTRIBUTE26;
9247 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute27             := l_curr_instance_rec.ATTRIBUTE27;
9248 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute27             := p_instance_rec.ATTRIBUTE27;
9249 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute28             := l_curr_instance_rec.ATTRIBUTE28;
9250 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute28             := p_instance_rec.ATTRIBUTE28;
9251 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute29             := l_curr_instance_rec.ATTRIBUTE29;
9252 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute29             := p_instance_rec.ATTRIBUTE29;
9253 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute30             := l_curr_instance_rec.ATTRIBUTE30;
9254 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute30             := p_instance_rec.ATTRIBUTE30;
9255 	--End of parameters addition for eam integration--
9256 	--Addition of columns for FA Integration
9257 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_payables_unit_price     := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
9258 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_payables_unit_price     := p_instance_rec.PAYABLES_UNIT_PRICE;
9259 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_payables_currency_code  := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
9260 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_payables_currency_code  := p_instance_rec.PAYABLES_CURRENCY_CODE;
9261 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_purchase_unit_price     := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
9262 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_purchase_unit_price     := p_instance_rec.PURCHASE_UNIT_PRICE;
9263 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_purchase_currency_code  := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
9264 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_purchase_currency_code  := p_instance_rec.PURCHASE_CURRENCY_CODE;
9265 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sales_unit_price        := l_curr_instance_rec.SALES_UNIT_PRICE;
9266 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sales_unit_price        := p_instance_rec.SALES_UNIT_PRICE;
9267 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sales_currency_code     := l_curr_instance_rec.SALES_CURRENCY_CODE;
9268 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sales_currency_code     := p_instance_rec.SALES_CURRENCY_CODE;
9269 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_operational_status_code := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
9270 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_operational_status_code := p_instance_rec.OPERATIONAL_STATUS_CODE;
9271 	--End addition of columns for FA Integration
9272 	--End of Insert into bulk table
9273 	--End of: Added for Bug:5615169
9274         -- Begin Add Code for Siebel Genesis Project
9275         l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_source_code    := l_curr_instance_rec.SOURCE_CODE;
9276         l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_source_code    := p_instance_rec.SOURCE_CODE;
9277         -- End Add Code for Siebel Genesis Project
9278 	ELSE -- if mod_value <> 0
9279 
9280           -- If the mod value is not equal to zero then dump only the changed columns
9281           -- while the unchanged values have old and new values as null
9282            IF (p_instance_rec.accounting_class_code = fnd_api.g_miss_char) OR
9283               NVL(l_curr_instance_rec.accounting_class_code,fnd_api.g_miss_char) = NVL(p_instance_rec.accounting_class_code,fnd_api.g_miss_char) THEN
9284                 l_instance_hist_rec.old_accounting_class_code := NULL;
9285                 l_instance_hist_rec.new_accounting_class_code := NULL;
9286            ELSIF
9287               NVL(l_curr_instance_rec.accounting_class_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.accounting_class_code,fnd_api.g_miss_char) THEN
9288                 l_instance_hist_rec.old_accounting_class_code := l_curr_instance_rec.accounting_class_code ;
9289                 l_instance_hist_rec.new_accounting_class_code := p_instance_rec.accounting_class_code ;
9290            END IF;
9291            --
9292            IF (l_instance_status_id = fnd_api.g_miss_num) OR
9293               NVL(l_curr_instance_rec.instance_status_id,fnd_api.g_miss_num) = NVL(l_instance_status_id,fnd_api.g_miss_num) THEN
9294                 l_instance_hist_rec.old_instance_status_id := NULL;
9295                 l_instance_hist_rec.new_instance_status_id := NULL;
9296            ELSIF
9297               NVL(l_curr_instance_rec.instance_status_id,fnd_api.g_miss_num) <> NVL(l_instance_status_id,fnd_api.g_miss_num) THEN
9298                 l_instance_hist_rec.old_instance_status_id := l_curr_instance_rec.instance_status_id ;
9299                 l_instance_hist_rec.new_instance_status_id := l_instance_status_id ;
9300            END IF;
9301            --
9302            IF (l_system_id = fnd_api.g_miss_num) OR
9303               NVL(l_curr_instance_rec.system_id,fnd_api.g_miss_num) = NVL(l_system_id,fnd_api.g_miss_num) THEN
9304                 l_instance_hist_rec.old_system_id := NULL;
9305                 l_instance_hist_rec.new_system_id := NULL;
9306            ELSIF
9307               NVL(l_curr_instance_rec.system_id,fnd_api.g_miss_num) <> NVL(l_system_id,fnd_api.g_miss_num) THEN
9308                 l_instance_hist_rec.old_system_id := l_curr_instance_rec.system_id ;
9309                 l_instance_hist_rec.new_system_id := l_system_id ;
9310            END IF;
9311            --
9312            IF (l_install_date = fnd_api.g_miss_date) OR
9313               NVL(l_curr_instance_rec.install_date,fnd_api.g_miss_date) = NVL(l_install_date,fnd_api.g_miss_date) THEN
9314                 l_instance_hist_rec.old_install_date := NULL;
9315                 l_instance_hist_rec.new_install_date := NULL;
9316            ELSIF
9317               NVL(l_curr_instance_rec.install_date,fnd_api.g_miss_date) <> NVL(l_install_date,fnd_api.g_miss_date) THEN
9318                 l_instance_hist_rec.old_install_date := l_curr_instance_rec.install_date ;
9319                 l_instance_hist_rec.new_install_date := l_install_date ;
9320            END IF;
9321            --
9322            IF (p_instance_rec.active_end_date = fnd_api.g_miss_date) OR
9323               NVL(l_curr_instance_rec.active_end_date,fnd_api.g_miss_date) = NVL(p_instance_rec.active_end_date,fnd_api.g_miss_date) THEN
9324                 l_instance_hist_rec.old_active_end_date := NULL;
9325                 l_instance_hist_rec.new_active_end_date := NULL;
9326            ELSIF
9327               NVL(l_curr_instance_rec.active_end_date,fnd_api.g_miss_date) <> NVL(p_instance_rec.active_end_date,fnd_api.g_miss_date) THEN
9328                 l_instance_hist_rec.old_active_end_date := l_curr_instance_rec.active_end_date ;
9329                 l_instance_hist_rec.new_active_end_date := p_instance_rec.active_end_date ;
9330            END IF;
9331            --
9332            IF (p_instance_rec.location_type_code = fnd_api.g_miss_char) OR
9333               NVL(l_curr_instance_rec.location_type_code,fnd_api.g_miss_char) = NVL(p_instance_rec.location_type_code,fnd_api.g_miss_char) THEN
9334                 l_instance_hist_rec.old_location_type_code := NULL;
9335                 l_instance_hist_rec.new_location_type_code := NULL;
9336            ELSIF
9337               NVL(l_curr_instance_rec.location_type_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.location_type_code,fnd_api.g_miss_char) THEN
9338                 l_instance_hist_rec.old_location_type_code := l_curr_instance_rec.location_type_code ;
9339                 l_instance_hist_rec.new_location_type_code := p_instance_rec.location_type_code ;
9340            END IF;
9341            --
9342            IF (p_instance_rec.location_id = fnd_api.g_miss_num) OR
9343               NVL(l_curr_instance_rec.location_id,fnd_api.g_miss_num) = NVL(p_instance_rec.location_id,fnd_api.g_miss_num) THEN
9344                 l_instance_hist_rec.old_location_id := NULL;
9345                 l_instance_hist_rec.new_location_id := NULL;
9346            ELSIF
9347               NVL(l_curr_instance_rec.location_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.location_id,fnd_api.g_miss_num) THEN
9348                 l_instance_hist_rec.old_location_id := l_curr_instance_rec.location_id ;
9349                 l_instance_hist_rec.new_location_id := p_instance_rec.location_id ;
9350            END IF;
9351            --
9352            IF (p_instance_rec.inv_organization_id = fnd_api.g_miss_num) OR
9353               NVL(l_curr_instance_rec.inv_organization_id,fnd_api.g_miss_num) = NVL(p_instance_rec.inv_organization_id,fnd_api.g_miss_num) THEN
9354                 l_instance_hist_rec.old_inv_organization_id := NULL;
9355                 l_instance_hist_rec.new_inv_organization_id := NULL;
9356            ELSIF
9357               NVL(l_curr_instance_rec.inv_organization_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.inv_organization_id,fnd_api.g_miss_num) THEN
9358                 l_instance_hist_rec.old_inv_organization_id := l_curr_instance_rec.inv_organization_id ;
9359                 l_instance_hist_rec.new_inv_organization_id := p_instance_rec.inv_organization_id ;
9360            END IF;
9361            --
9362            IF (p_instance_rec.inv_subinventory_name = fnd_api.g_miss_char) OR
9363               NVL(l_curr_instance_rec.inv_subinventory_name,fnd_api.g_miss_char) = NVL(p_instance_rec.inv_subinventory_name,fnd_api.g_miss_char) THEN
9364                 l_instance_hist_rec.old_inv_subinventory_name := NULL;
9365                 l_instance_hist_rec.new_inv_subinventory_name := NULL;
9366            ELSIF
9367               NVL(l_curr_instance_rec.inv_subinventory_name,fnd_api.g_miss_char) <> NVL(p_instance_rec.inv_subinventory_name,fnd_api.g_miss_char) THEN
9368                 l_instance_hist_rec.old_inv_subinventory_name := l_curr_instance_rec.inv_subinventory_name ;
9369                 l_instance_hist_rec.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name ;
9370            END IF;
9371            --
9372            IF (p_instance_rec.inv_locator_id = fnd_api.g_miss_num) OR
9373               NVL(l_curr_instance_rec.inv_locator_id,fnd_api.g_miss_num) = NVL(p_instance_rec.inv_locator_id,fnd_api.g_miss_num) THEN
9374                 l_instance_hist_rec.old_inv_locator_id := NULL;
9375                 l_instance_hist_rec.new_inv_locator_id := NULL;
9376            ELSIF
9377               NVL(l_curr_instance_rec.inv_locator_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.inv_locator_id,fnd_api.g_miss_num) THEN
9378                 l_instance_hist_rec.old_inv_locator_id := l_curr_instance_rec.inv_locator_id ;
9379                 l_instance_hist_rec.new_inv_locator_id := p_instance_rec.inv_locator_id ;
9380            END IF;
9381            --
9382            IF (p_instance_rec.pa_project_id = fnd_api.g_miss_num) OR
9383               NVL(l_curr_instance_rec.pa_project_id,fnd_api.g_miss_num) = NVL(p_instance_rec.pa_project_id,fnd_api.g_miss_num) THEN
9384                 l_instance_hist_rec.old_pa_project_id := NULL;
9385                 l_instance_hist_rec.new_pa_project_id := NULL;
9386            ELSIF
9387               NVL(l_curr_instance_rec.pa_project_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.pa_project_id,fnd_api.g_miss_num) THEN
9388                 l_instance_hist_rec.old_pa_project_id := l_curr_instance_rec.pa_project_id ;
9389                 l_instance_hist_rec.new_pa_project_id := p_instance_rec.pa_project_id ;
9390            END IF;
9391            --
9392            IF (p_instance_rec.pa_project_task_id = fnd_api.g_miss_num) OR
9393               NVL(l_curr_instance_rec.pa_project_task_id,fnd_api.g_miss_num) = NVL(p_instance_rec.pa_project_task_id,fnd_api.g_miss_num) THEN
9394                 l_instance_hist_rec.old_pa_project_task_id := NULL;
9395                 l_instance_hist_rec.new_pa_project_task_id := NULL;
9396            ELSIF
9397               NVL(l_curr_instance_rec.pa_project_task_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.pa_project_task_id,fnd_api.g_miss_num) THEN
9398                 l_instance_hist_rec.old_pa_project_task_id := l_curr_instance_rec.pa_project_task_id ;
9399                 l_instance_hist_rec.new_pa_project_task_id := p_instance_rec.pa_project_task_id ;
9400            END IF;
9401            --
9402            IF (p_instance_rec.in_transit_order_line_id = fnd_api.g_miss_num) OR
9403               NVL(l_curr_instance_rec.in_transit_order_line_id,fnd_api.g_miss_num) = NVL(p_instance_rec.in_transit_order_line_id,fnd_api.g_miss_num) THEN
9404                 l_instance_hist_rec.old_in_transit_order_line_id := NULL;
9405                 l_instance_hist_rec.new_in_transit_order_line_id := NULL;
9406            ELSIF
9407               NVL(l_curr_instance_rec.in_transit_order_line_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.in_transit_order_line_id,fnd_api.g_miss_num) THEN
9408                 l_instance_hist_rec.old_in_transit_order_line_id := l_curr_instance_rec.in_transit_order_line_id ;
9409                 l_instance_hist_rec.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id ;
9410            END IF;
9411            --
9412            IF (p_instance_rec.wip_job_id = fnd_api.g_miss_num) OR
9413               NVL(l_curr_instance_rec.wip_job_id,fnd_api.g_miss_num) = NVL(p_instance_rec.wip_job_id,fnd_api.g_miss_num) THEN
9414                 l_instance_hist_rec.old_wip_job_id := NULL;
9415                 l_instance_hist_rec.new_wip_job_id := NULL;
9416            ELSIF
9417               NVL(l_curr_instance_rec.wip_job_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.wip_job_id,fnd_api.g_miss_num) THEN
9418                 l_instance_hist_rec.old_wip_job_id := l_curr_instance_rec.wip_job_id ;
9419                 l_instance_hist_rec.new_wip_job_id := p_instance_rec.wip_job_id ;
9420            END IF;
9421            --
9422            IF (p_instance_rec.po_order_line_id = fnd_api.g_miss_num) OR
9423               NVL(l_curr_instance_rec.po_order_line_id,fnd_api.g_miss_num) = NVL(p_instance_rec.po_order_line_id,fnd_api.g_miss_num) THEN
9424                 l_instance_hist_rec.old_po_order_line_id := NULL;
9425                 l_instance_hist_rec.new_po_order_line_id := NULL;
9426            ELSIF
9427               NVL(l_curr_instance_rec.po_order_line_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.po_order_line_id,fnd_api.g_miss_num) THEN
9428                 l_instance_hist_rec.old_po_order_line_id := l_curr_instance_rec.po_order_line_id ;
9429                 l_instance_hist_rec.new_po_order_line_id := p_instance_rec.po_order_line_id ;
9430            END IF;
9431            --
9432            IF (p_instance_rec.last_oe_agreement_id = fnd_api.g_miss_num) OR
9433               NVL(l_curr_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) = NVL(p_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) THEN
9434                 l_instance_hist_rec.old_last_oe_agreement_id := NULL;
9435                 l_instance_hist_rec.new_last_oe_agreement_id := NULL;
9436            ELSIF
9437               NVL(l_curr_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) THEN
9438                 l_instance_hist_rec.old_last_oe_agreement_id := l_curr_instance_rec.last_oe_agreement_id ;
9439                 l_instance_hist_rec.new_last_oe_agreement_id := p_instance_rec.last_oe_agreement_id ;
9440            END IF;
9441            --
9442            IF (p_instance_rec.LAST_OE_ORDER_LINE_ID = fnd_api.g_miss_num) OR
9443               NVL(l_curr_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) THEN
9444                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := NULL;
9445                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := NULL;
9446            ELSIF
9447               NVL(l_curr_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) THEN
9448                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID ;
9449                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID ;
9450            END IF;
9451            --
9452            IF (p_instance_rec.LAST_OE_RMA_LINE_ID = fnd_api.g_miss_num) OR
9453               NVL(l_curr_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) THEN
9454                 l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID := NULL;
9455                 l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID := NULL;
9456            ELSIF
9457               NVL(l_curr_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) THEN
9458                 l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID ;
9459                 l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID ;
9460            END IF;
9461            --
9462            IF (p_instance_rec.LAST_WIP_JOB_ID = fnd_api.g_miss_num) OR
9463               NVL(l_curr_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) THEN
9464                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := NULL;
9465                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := NULL;
9466            ELSIF
9467               NVL(l_curr_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) THEN
9468                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID ;
9469                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID ;
9470            END IF;
9471            --
9472            IF (p_instance_rec.LAST_PO_PO_LINE_ID = fnd_api.g_miss_num) OR
9473               NVL(l_curr_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) THEN
9474                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := NULL;
9475                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := NULL;
9476            ELSIF
9477               NVL(l_curr_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) THEN
9478                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := l_curr_instance_rec.LAST_PO_PO_LINE_ID ;
9479                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID ;
9480            END IF;
9481            --
9482            IF (p_instance_rec.LAST_PA_PROJECT_ID = fnd_api.g_miss_num) OR
9483               NVL(l_curr_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) THEN
9484                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := NULL;
9485                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := NULL;
9486            ELSIF
9487               NVL(l_curr_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) THEN
9488                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID ;
9489                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID ;
9490            END IF;
9491            --
9492            IF (p_instance_rec.LAST_PA_TASK_ID = fnd_api.g_miss_num) OR
9493               NVL(l_curr_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) THEN
9494                 l_instance_hist_rec.old_LAST_PA_TASK_ID := NULL;
9495                 l_instance_hist_rec.new_LAST_PA_TASK_ID := NULL;
9496            ELSIF
9497               NVL(l_curr_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) THEN
9498                 l_instance_hist_rec.old_LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID ;
9499                 l_instance_hist_rec.new_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID ;
9500            END IF;
9501            --
9502            IF (p_instance_rec.LAST_TXN_LINE_DETAIL_ID = fnd_api.g_miss_num) OR
9503               NVL(l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) THEN
9504                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := NULL;
9505                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := NULL;
9506            ELSIF
9507               NVL(l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) THEN
9508                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
9509                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
9510            END IF;
9511            --
9512            IF (p_instance_rec.LAST_OE_PO_NUMBER = fnd_api.g_miss_char) OR
9513               NVL(l_curr_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) = NVL(p_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) THEN
9514                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := NULL;
9515                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := NULL;
9516            ELSIF
9517               NVL(l_curr_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) <> NVL(p_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) THEN
9518                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER ;
9519                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER ;
9520            END IF;
9521            --
9522            IF (p_instance_rec.install_location_type_code = fnd_api.g_miss_char) OR
9523               NVL(l_curr_instance_rec.install_location_type_code,fnd_api.g_miss_char) = NVL(p_instance_rec.install_location_type_code,fnd_api.g_miss_char) THEN
9524                 l_instance_hist_rec.old_install_location_type_code := NULL;
9525                 l_instance_hist_rec.new_install_location_type_code := NULL;
9526            ELSIF
9527               NVL(l_curr_instance_rec.install_location_type_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.install_location_type_code,fnd_api.g_miss_char) THEN
9528                 l_instance_hist_rec.old_install_location_type_code := l_curr_instance_rec.install_location_type_code ;
9529                 l_instance_hist_rec.new_install_location_type_code := p_instance_rec.install_location_type_code ;
9530            END IF;
9531            --
9532            IF (p_instance_rec.install_location_id = fnd_api.g_miss_num) OR
9533               NVL(l_curr_instance_rec.install_location_id,fnd_api.g_miss_num) = NVL(p_instance_rec.install_location_id,fnd_api.g_miss_num) THEN
9534                 l_instance_hist_rec.old_install_location_id := NULL;
9535                 l_instance_hist_rec.new_install_location_id := NULL;
9536            ELSIF
9537               NVL(l_curr_instance_rec.install_location_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.install_location_id,fnd_api.g_miss_num) THEN
9538                 l_instance_hist_rec.old_install_location_id := l_curr_instance_rec.install_location_id ;
9539                 l_instance_hist_rec.new_install_location_id := p_instance_rec.install_location_id ;
9540            END IF;
9541            --
9542            IF (p_instance_rec.operational_status_code = fnd_api.g_miss_char) OR
9543               NVL(l_curr_instance_rec.operational_status_code,fnd_api.g_miss_char) = NVL(p_instance_rec.operational_status_code,fnd_api.g_miss_char) THEN
9544                 l_instance_hist_rec.old_operational_status_code := NULL;
9545                 l_instance_hist_rec.new_operational_status_code := NULL;
9546            ELSIF
9547               NVL(l_curr_instance_rec.operational_status_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.operational_status_code,fnd_api.g_miss_char) THEN
9548                 l_instance_hist_rec.old_operational_status_code := l_curr_instance_rec.operational_status_code ;
9549                 l_instance_hist_rec.new_operational_status_code := p_instance_rec.operational_status_code ;
9550            END IF;
9551 
9552           /* Commented to implement bulk operations...Bug:;
9553 	  CSI_ITEM_INSTANCES_H_PKG.Insert_Row
9554            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
9555             ,p_INSTANCE_ID                       => l_rel_tbl(j).SUBJECT_ID
9556             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
9557             ,p_OLD_INSTANCE_NUMBER               => FND_API.G_MISS_CHAR
9558             ,p_NEW_INSTANCE_NUMBER               => FND_API.G_MISS_CHAR
9559             ,p_OLD_EXTERNAL_REFERENCE            => FND_API.G_MISS_CHAR
9560             ,p_NEW_EXTERNAL_REFERENCE            => FND_API.G_MISS_CHAR
9561             ,p_OLD_INVENTORY_ITEM_ID             => FND_API.G_MISS_NUM
9562             ,p_NEW_INVENTORY_ITEM_ID             => FND_API.G_MISS_NUM
9563             ,p_OLD_INVENTORY_REVISION            => FND_API.G_MISS_CHAR
9564             ,p_NEW_INVENTORY_REVISION            => FND_API.G_MISS_CHAR
9565             ,p_OLD_INV_MASTER_ORGZN_ID           => FND_API.G_MISS_NUM
9566             ,p_NEW_INV_MASTER_ORGZN_ID           => FND_API.G_MISS_NUM
9567             ,p_OLD_SERIAL_NUMBER                 => FND_API.G_MISS_CHAR
9568             ,p_NEW_SERIAL_NUMBER                 => FND_API.G_MISS_CHAR
9569             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => FND_API.G_MISS_CHAR
9570             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => FND_API.G_MISS_CHAR
9571             ,p_OLD_LOT_NUMBER                    => FND_API.G_MISS_CHAR
9572             ,p_NEW_LOT_NUMBER                    => FND_API.G_MISS_CHAR
9573             ,p_OLD_QUANTITY                      => FND_API.G_MISS_NUM
9574             ,p_NEW_QUANTITY                      => FND_API.G_MISS_NUM
9575             ,p_OLD_UNIT_OF_MEASURE               => FND_API.G_MISS_CHAR
9576             ,p_NEW_UNIT_OF_MEASURE               => FND_API.G_MISS_CHAR
9577             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_instance_hist_rec.OLD_ACCOUNTING_CLASS_CODE
9578             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_instance_hist_rec.NEW_ACCOUNTING_CLASS_CODE
9579             ,p_OLD_INSTANCE_CONDITION_ID         => FND_API.G_MISS_NUM
9580             ,p_NEW_INSTANCE_CONDITION_ID         => FND_API.G_MISS_NUM
9581             ,p_OLD_INSTANCE_STATUS_ID            => l_instance_hist_rec.OLD_INSTANCE_STATUS_ID
9582             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_hist_rec.NEW_INSTANCE_STATUS_ID
9583             ,p_OLD_CUSTOMER_VIEW_FLAG            => FND_API.G_MISS_CHAR
9584             ,p_NEW_CUSTOMER_VIEW_FLAG            => FND_API.G_MISS_CHAR
9585             ,p_OLD_MERCHANT_VIEW_FLAG            => FND_API.G_MISS_CHAR
9586             ,p_NEW_MERCHANT_VIEW_FLAG            => FND_API.G_MISS_CHAR
9587             ,p_OLD_SELLABLE_FLAG                 => FND_API.G_MISS_CHAR
9588             ,p_NEW_SELLABLE_FLAG                 => FND_API.G_MISS_CHAR
9589             ,p_OLD_SYSTEM_ID                     => l_instance_hist_rec.OLD_SYSTEM_ID
9590             ,p_NEW_SYSTEM_ID                     => l_instance_hist_rec.NEW_SYSTEM_ID
9591             ,p_OLD_INSTANCE_TYPE_CODE            => FND_API.G_MISS_CHAR
9592             ,p_NEW_INSTANCE_TYPE_CODE            => FND_API.G_MISS_CHAR
9593             ,p_OLD_ACTIVE_START_DATE             => FND_API.G_MISS_DATE
9594             ,p_NEW_ACTIVE_START_DATE             => FND_API.G_MISS_DATE
9595             ,p_OLD_ACTIVE_END_DATE               => l_instance_hist_rec.OLD_ACTIVE_END_DATE
9596             ,p_NEW_ACTIVE_END_DATE               => l_instance_hist_rec.NEW_ACTIVE_END_DATE
9597             ,p_OLD_LOCATION_TYPE_CODE            => l_instance_hist_rec.OLD_LOCATION_TYPE_CODE
9598             ,p_NEW_LOCATION_TYPE_CODE            => l_instance_hist_rec.NEW_LOCATION_TYPE_CODE
9599             ,p_OLD_LOCATION_ID                   => l_instance_hist_rec.OLD_LOCATION_ID
9600             ,p_NEW_LOCATION_ID                   => l_instance_hist_rec.NEW_LOCATION_ID
9601             ,p_OLD_INV_ORGANIZATION_ID           => l_instance_hist_rec.OLD_INV_ORGANIZATION_ID
9602             ,p_NEW_INV_ORGANIZATION_ID           => l_instance_hist_rec.NEW_INV_ORGANIZATION_ID
9603             ,p_OLD_INV_SUBINVENTORY_NAME         => l_instance_hist_rec.OLD_INV_SUBINVENTORY_NAME
9604             ,p_NEW_INV_SUBINVENTORY_NAME         => l_instance_hist_rec.NEW_INV_SUBINVENTORY_NAME
9605             ,p_OLD_INV_LOCATOR_ID                => l_instance_hist_rec.OLD_INV_LOCATOR_ID
9606             ,p_NEW_INV_LOCATOR_ID                => l_instance_hist_rec.NEW_INV_LOCATOR_ID
9607             ,p_OLD_PA_PROJECT_ID                 => l_instance_hist_rec.OLD_PA_PROJECT_ID
9608             ,p_NEW_PA_PROJECT_ID                 => l_instance_hist_rec.NEW_PA_PROJECT_ID
9609             ,p_OLD_PA_PROJECT_TASK_ID            => l_instance_hist_rec.OLD_PA_PROJECT_TASK_ID
9610             ,p_NEW_PA_PROJECT_TASK_ID            => l_instance_hist_rec.NEW_PA_PROJECT_TASK_ID
9611             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_instance_hist_rec.OLD_IN_TRANSIT_ORDER_LINE_ID
9612             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_instance_hist_rec.NEW_IN_TRANSIT_ORDER_LINE_ID
9613             ,p_OLD_WIP_JOB_ID                    => l_instance_hist_rec.OLD_WIP_JOB_ID
9614             ,p_NEW_WIP_JOB_ID                    => l_instance_hist_rec.NEW_WIP_JOB_ID
9615             ,p_OLD_PO_ORDER_LINE_ID              => l_instance_hist_rec.OLD_PO_ORDER_LINE_ID
9616             ,p_NEW_PO_ORDER_LINE_ID              => l_instance_hist_rec.NEW_PO_ORDER_LINE_ID
9617             ,p_OLD_COMPLETENESS_FLAG             => FND_API.G_MISS_CHAR
9618             ,p_NEW_COMPLETENESS_FLAG             => FND_API.G_MISS_CHAR
9619             ,p_FULL_DUMP_FLAG                    => 'N'
9620             ,p_NEW_CONTEXT                       => FND_API.G_MISS_CHAR
9621             ,P_OLD_CONTEXT                       => FND_API.G_MISS_CHAR
9622             ,p_NEW_ATTRIBUTE1                    => FND_API.G_MISS_CHAR
9623             ,p_OLD_ATTRIBUTE1                    => FND_API.G_MISS_CHAR
9624             ,p_NEW_ATTRIBUTE2                    => FND_API.G_MISS_CHAR
9625             ,p_OLD_ATTRIBUTE2                    => FND_API.G_MISS_CHAR
9626             ,p_NEW_ATTRIBUTE3                    => FND_API.G_MISS_CHAR
9627             ,p_OLD_ATTRIBUTE3                    => FND_API.G_MISS_CHAR
9628             ,p_NEW_ATTRIBUTE4                    => FND_API.G_MISS_CHAR
9629             ,p_OLD_ATTRIBUTE4                    => FND_API.G_MISS_CHAR
9630             ,p_NEW_ATTRIBUTE5                    => FND_API.G_MISS_CHAR
9631             ,p_OLD_ATTRIBUTE5                    => FND_API.G_MISS_CHAR
9632             ,p_NEW_ATTRIBUTE6                    => FND_API.G_MISS_CHAR
9633             ,p_OLD_ATTRIBUTE6                    => FND_API.G_MISS_CHAR
9634             ,p_NEW_ATTRIBUTE7                    => FND_API.G_MISS_CHAR
9635             ,p_OLD_ATTRIBUTE7                    => FND_API.G_MISS_CHAR
9636             ,p_NEW_ATTRIBUTE8                    => FND_API.G_MISS_CHAR
9637             ,p_OLD_ATTRIBUTE8                    => FND_API.G_MISS_CHAR
9638             ,p_NEW_ATTRIBUTE9                    => FND_API.G_MISS_CHAR
9639             ,p_OLD_ATTRIBUTE9                    => FND_API.G_MISS_CHAR
9640             ,p_NEW_ATTRIBUTE10                   => FND_API.G_MISS_CHAR
9641             ,p_OLD_ATTRIBUTE10                   => FND_API.G_MISS_CHAR
9642             ,p_NEW_ATTRIBUTE11                   => FND_API.G_MISS_CHAR
9643             ,p_OLD_ATTRIBUTE11                   => FND_API.G_MISS_CHAR
9644             ,p_NEW_ATTRIBUTE12                   => FND_API.G_MISS_CHAR
9645             ,p_OLD_ATTRIBUTE12                   => FND_API.G_MISS_CHAR
9646             ,p_NEW_ATTRIBUTE13                   => FND_API.G_MISS_CHAR
9647             ,p_OLD_ATTRIBUTE13                   => FND_API.G_MISS_CHAR
9648             ,p_NEW_ATTRIBUTE14                   => FND_API.G_MISS_CHAR
9649             ,p_OLD_ATTRIBUTE14                   => FND_API.G_MISS_CHAR
9650             ,p_NEW_ATTRIBUTE15                   => FND_API.G_MISS_CHAR
9651             ,p_OLD_ATTRIBUTE15                   => FND_API.G_MISS_CHAR
9652             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
9653             ,p_CREATION_DATE                     => SYSDATE
9654             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
9655             ,p_LAST_UPDATE_DATE                  => SYSDATE
9656             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
9657             ,p_OBJECT_VERSION_NUMBER             => 1
9658             ,p_OLD_INST_LOC_TYPE_CODE            => l_instance_hist_rec.OLD_INSTALL_LOCATION_TYPE_CODE
9659             ,p_NEW_INST_LOC_TYPE_CODE            => l_instance_hist_rec.NEW_INSTALL_LOCATION_TYPE_CODE
9660             ,p_OLD_INST_LOC_ID                   => l_instance_hist_rec.OLD_INSTALL_LOCATION_ID
9661             ,p_NEW_INST_LOC_ID                   => l_instance_hist_rec.NEW_INSTALL_LOCATION_ID
9662             ,p_OLD_INST_USAGE_CODE               => FND_API.G_MISS_CHAR
9663             ,p_NEW_INST_USAGE_CODE               => FND_API.G_MISS_CHAR
9664             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => FND_API.G_MISS_NUM
9665             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => FND_API.G_MISS_NUM
9666             ,p_OLD_CONFIG_INST_REV_NUM           => FND_API.G_MISS_NUM
9667             ,p_NEW_CONFIG_INST_REV_NUM           => FND_API.G_MISS_NUM
9668             ,p_OLD_CONFIG_VALID_STATUS           => FND_API.G_MISS_CHAR
9669             ,p_NEW_CONFIG_VALID_STATUS           => FND_API.G_MISS_CHAR
9670             ,p_OLD_INSTANCE_DESCRIPTION          => FND_API.G_MISS_CHAR
9671             ,p_NEW_INSTANCE_DESCRIPTION          => FND_API.G_MISS_CHAR
9672             ,p_OLD_INSTALL_DATE                  => l_instance_hist_rec.OLD_INSTALL_DATE
9673             ,p_NEW_INSTALL_DATE                  => l_instance_hist_rec.NEW_INSTALL_DATE
9674             ,p_OLD_RETURN_BY_DATE                => FND_API.G_MISS_DATE
9675             ,p_NEW_RETURN_BY_DATE                => FND_API.G_MISS_DATE
9676             ,p_OLD_ACTUAL_RETURN_DATE            => FND_API.G_MISS_DATE
9677             ,p_NEW_ACTUAL_RETURN_DATE            => FND_API.G_MISS_DATE
9678             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_instance_hist_rec.OLD_LAST_OE_AGREEMENT_ID
9679             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_instance_hist_rec.NEW_LAST_OE_AGREEMENT_ID
9680 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_instance_hist_rec.OLD_LAST_OE_ORDER_LINE_ID
9681 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_instance_hist_rec.NEW_LAST_OE_ORDER_LINE_ID
9682 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID
9683 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID
9684 	    ,p_OLD_LAST_WIP_JOB_ID               => l_instance_hist_rec.OLD_LAST_WIP_JOB_ID
9685 	    ,p_NEW_LAST_WIP_JOB_ID               => l_instance_hist_rec.NEW_LAST_WIP_JOB_ID
9686 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_instance_hist_rec.OLD_LAST_PO_PO_LINE_ID
9687 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_instance_hist_rec.NEW_LAST_PO_PO_LINE_ID
9688 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_instance_hist_rec.OLD_LAST_PA_PROJECT_ID
9689 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_instance_hist_rec.NEW_LAST_PA_PROJECT_ID
9690 	    ,p_OLD_LAST_PA_TASK_ID          => l_instance_hist_rec.OLD_LAST_PA_TASK_ID
9691 	    ,p_NEW_LAST_PA_TASK_ID          => l_instance_hist_rec.NEW_LAST_PA_TASK_ID
9692 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_instance_hist_rec.OLD_LAST_TXN_LINE_DETAIL_ID
9693 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_instance_hist_rec.NEW_LAST_TXN_LINE_DETAIL_ID
9694 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_instance_hist_rec.OLD_LAST_OE_PO_NUMBER
9695 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_instance_hist_rec.NEW_LAST_OE_PO_NUMBER
9696  	    --start of parameters addition for eam integration--
9697 	    ,p_OLD_NETWORK_ASSET_FLAG             => FND_API.G_MISS_CHAR
9698 	    ,p_NEW_NETWORK_ASSET_FLAG             => FND_API.G_MISS_CHAR
9699 	    ,p_OLD_MAINTAINABLE_FLAG              => FND_API.G_MISS_CHAR
9700 	    ,p_NEW_MAINTAINABLE_FLAG              => FND_API.G_MISS_CHAR
9701 	    ,p_OLD_PN_LOCATION_ID                 => FND_API.G_MISS_NUM
9702 	    ,p_NEW_PN_LOCATION_ID                 => FND_API.G_MISS_NUM
9703 	    ,p_OLD_ASSET_CRITICALITY_CODE         => FND_API.G_MISS_CHAR
9704 	    ,p_NEW_ASSET_CRITICALITY_CODE         => FND_API.G_MISS_CHAR
9705 	    ,p_OLD_CATEGORY_ID                    => FND_API.G_MISS_NUM
9706 	    ,p_NEW_CATEGORY_ID                    => FND_API.G_MISS_NUM
9707 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => FND_API.G_MISS_NUM
9708 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => FND_API.G_MISS_NUM
9709 	    ,p_OLD_INSTANTIATION_FLAG             => FND_API.G_MISS_CHAR
9710 	    ,p_NEW_INSTANTIATION_FLAG             => FND_API.G_MISS_CHAR
9711 	    ,p_OLD_LINEAR_LOCATION_ID             => FND_API.G_MISS_NUM
9712 	    ,p_NEW_LINEAR_LOCATION_ID             => FND_API.G_MISS_NUM
9713 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => FND_API.G_MISS_CHAR
9714 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => FND_API.G_MISS_CHAR
9715 	    ,p_OLD_CHECKIN_STATUS                 => FND_API.G_MISS_NUM
9716 	    ,p_NEW_CHECKIN_STATUS                 => FND_API.G_MISS_NUM
9717 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => FND_API.G_MISS_DATE
9718 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => FND_API.G_MISS_DATE
9719             ,p_OLD_ATTRIBUTE16                    => FND_API.G_MISS_CHAR
9720             ,p_NEW_ATTRIBUTE16                    => FND_API.G_MISS_CHAR
9721             ,p_OLD_ATTRIBUTE17                    => FND_API.G_MISS_CHAR
9722             ,p_NEW_ATTRIBUTE17                    => FND_API.G_MISS_CHAR
9723             ,p_OLD_ATTRIBUTE18                    => FND_API.G_MISS_CHAR
9724             ,p_NEW_ATTRIBUTE18                    => FND_API.G_MISS_CHAR
9725             ,p_OLD_ATTRIBUTE19                    => FND_API.G_MISS_CHAR
9726             ,p_NEW_ATTRIBUTE19                    => FND_API.G_MISS_CHAR
9727             ,p_OLD_ATTRIBUTE20                    => FND_API.G_MISS_CHAR
9728             ,p_NEW_ATTRIBUTE20                    => FND_API.G_MISS_CHAR
9729             ,p_OLD_ATTRIBUTE21                    => FND_API.G_MISS_CHAR
9730             ,p_NEW_ATTRIBUTE21                    => FND_API.G_MISS_CHAR
9731             ,p_OLD_ATTRIBUTE22                    => FND_API.G_MISS_CHAR
9732             ,p_NEW_ATTRIBUTE22                    => FND_API.G_MISS_CHAR
9733             ,p_OLD_ATTRIBUTE23                    => FND_API.G_MISS_CHAR
9734             ,p_NEW_ATTRIBUTE23                    => FND_API.G_MISS_CHAR
9735             ,p_OLD_ATTRIBUTE24                    => FND_API.G_MISS_CHAR
9736             ,p_NEW_ATTRIBUTE24                    => FND_API.G_MISS_CHAR
9737             ,p_OLD_ATTRIBUTE25                    => FND_API.G_MISS_CHAR
9738             ,p_NEW_ATTRIBUTE25                    => FND_API.G_MISS_CHAR
9739             ,p_OLD_ATTRIBUTE26                    => FND_API.G_MISS_CHAR
9740             ,p_NEW_ATTRIBUTE26                    => FND_API.G_MISS_CHAR
9741             ,p_OLD_ATTRIBUTE27                    => FND_API.G_MISS_CHAR
9742             ,p_NEW_ATTRIBUTE27                    => FND_API.G_MISS_CHAR
9743             ,p_OLD_ATTRIBUTE28                    => FND_API.G_MISS_CHAR
9744             ,p_NEW_ATTRIBUTE28                    => FND_API.G_MISS_CHAR
9745             ,p_OLD_ATTRIBUTE29                    => FND_API.G_MISS_CHAR
9746             ,p_NEW_ATTRIBUTE29                    => FND_API.G_MISS_CHAR
9747             ,p_OLD_ATTRIBUTE30                    => FND_API.G_MISS_CHAR
9748             ,p_NEW_ATTRIBUTE30                    => FND_API.G_MISS_CHAR
9749   	    --end of parameters addition for eam integration--
9750    -- Addition of columns for FA Integration
9751             ,p_OLD_PAYABLES_UNIT_PRICE            => FND_API.G_MISS_NUM
9752             ,p_NEW_PAYABLES_UNIT_PRICE            => FND_API.G_MISS_NUM
9753             ,p_OLD_PAYABLES_CURRENCY_CODE         => FND_API.G_MISS_CHAR
9754             ,p_NEW_PAYABLES_CURRENCY_CODE         => FND_API.G_MISS_CHAR
9755             ,p_OLD_PURCHASE_UNIT_PRICE            => FND_API.G_MISS_NUM
9756             ,p_NEW_PURCHASE_UNIT_PRICE            => FND_API.G_MISS_NUM
9757             ,p_OLD_PURCHASE_CURRENCY_CODE         => FND_API.G_MISS_CHAR
9758             ,p_NEW_PURCHASE_CURRENCY_CODE         => FND_API.G_MISS_CHAR
9759             ,p_OLD_SALES_UNIT_PRICE               => FND_API.G_MISS_NUM
9760             ,p_NEW_SALES_UNIT_PRICE               => FND_API.G_MISS_NUM
9761             ,p_OLD_SALES_CURRENCY_CODE            => FND_API.G_MISS_CHAR
9762             ,p_NEW_SALES_CURRENCY_CODE            => FND_API.G_MISS_CHAR
9763             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_instance_hist_rec.old_operational_status_code
9764             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_instance_hist_rec.new_operational_status_code
9765     -- End addition of columns for FA Integration
9766             );
9767 	    End of insert...Bug:5615169 */
9768 
9769 	--Start of: Added for Bug:5615169
9770 	--Insert the data into bulk table
9771 	l_ciih_blk_ins_cnt                                                       := l_ciih_blk_ins_cnt + 1;
9772 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).instance_history_id          := l_csi_item_instance_h_id;
9773 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).instance_id                  := l_rel_tbl(j).subject_id;
9774 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).transaction_id               := p_txn_rec.TRANSACTION_ID;
9775 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_number          := l_curr_instance_rec.INSTANCE_NUMBER;
9776 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_number          := p_instance_rec.INSTANCE_NUMBER;
9777 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_external_reference       := l_curr_instance_rec.EXTERNAL_REFERENCE;
9778 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_external_reference       := p_instance_rec.EXTERNAL_REFERENCE;
9779 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inventory_item_id        := l_curr_instance_rec.INVENTORY_ITEM_ID;
9780 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inventory_item_id        := p_instance_rec.INVENTORY_ITEM_ID;
9781 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inventory_revision       := l_curr_instance_rec.INVENTORY_REVISION;
9782 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inventory_revision       := p_instance_rec.INVENTORY_REVISION;
9783 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_master_org_id        := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
9784 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_master_org_id        := p_instance_rec.INV_MASTER_ORGANIZATION_ID;
9785 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_serial_number            := l_curr_instance_rec.SERIAL_NUMBER;
9786 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_serial_number            := p_instance_rec.SERIAL_NUMBER;
9787 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_mfg_serial_number_flag   := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
9788 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_mfg_serial_number_flag   := p_instance_rec.MFG_SERIAL_NUMBER_FLAG;
9789 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_lot_number               := l_curr_instance_rec.LOT_NUMBER;
9790 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_lot_number               := p_instance_rec.LOT_NUMBER;
9791 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_quantity                 := l_curr_instance_rec.QUANTITY;
9792 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_quantity                 := p_instance_rec.QUANTITY;
9793 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_unit_of_measure          := l_curr_instance_rec.UNIT_OF_MEASURE;
9794 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_unit_of_measure          := p_instance_rec.UNIT_OF_MEASURE;
9795 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_accounting_class_code    := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
9796 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_accounting_class_code    := p_instance_rec.ACCOUNTING_CLASS_CODE;
9797 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_condition_id    := l_curr_instance_rec.INSTANCE_CONDITION_ID;
9798 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_condition_id    := p_instance_rec.INSTANCE_CONDITION_ID;
9799 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_status_id       := l_curr_instance_rec.INSTANCE_STATUS_ID;
9800 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_status_id       := l_instance_status_id; --p_instance_rec.INSTANCE_STATUS_IDs_id;
9801 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_customer_view_flag       := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
9802 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_customer_view_flag       := p_instance_rec.CUSTOMER_VIEW_FLAG;
9803 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_merchant_view_flag       := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
9804 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_merchant_view_flag       := p_instance_rec.MERCHANT_VIEW_FLAG;
9805 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sellable_flag            := l_curr_instance_rec.SELLABLE_FLAG;
9806 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sellable_flag            := p_instance_rec.SELLABLE_FLAG;
9807 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_system_id                := l_curr_instance_rec.SYSTEM_ID;
9808 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_system_id                := l_system_id;
9809 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_type_code       := l_curr_instance_rec.INSTANCE_TYPE_CODE;
9810 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_type_code       := p_instance_rec.INSTANCE_TYPE_CODE;
9811 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_active_start_date        := l_curr_instance_rec.ACTIVE_START_DATE;
9812 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_active_start_date        := p_instance_rec.ACTIVE_START_DATE;
9813 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_active_end_date          := l_curr_instance_rec.ACTIVE_END_DATE;
9814 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_active_end_date          := p_instance_rec.ACTIVE_END_DATE;
9815 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_location_type_code       := l_curr_instance_rec.LOCATION_TYPE_CODE;
9816 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_location_type_code       := p_instance_rec.LOCATION_TYPE_CODE;
9817 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_location_id              := l_curr_instance_rec.LOCATION_ID;
9818 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_location_id              := p_instance_rec.LOCATION_ID;
9819 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_organization_id      := l_curr_instance_rec.INV_ORGANIZATION_ID;
9820 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_organization_id      := p_instance_rec.INV_ORGANIZATION_ID;
9821 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_subinventory_name    := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
9822 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_subinventory_name    := p_instance_rec.INV_SUBINVENTORY_NAME;
9823 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_locator_id           := l_curr_instance_rec.INV_LOCATOR_ID;
9824 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_locator_id           := p_instance_rec.INV_LOCATOR_ID;
9825 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pa_project_id            := l_curr_instance_rec.PA_PROJECT_ID;
9826 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pa_project_id            := p_instance_rec.PA_PROJECT_ID;
9827 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pa_project_task_id       := l_curr_instance_rec.PA_PROJECT_TASK_ID;
9828 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pa_project_task_id       := p_instance_rec.PA_PROJECT_TASK_ID;
9829 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_in_transit_order_line_id := l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
9830 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_in_transit_order_line_id := p_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
9831 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_wip_job_id               := l_curr_instance_rec.WIP_JOB_ID;
9832 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_wip_job_id               := p_instance_rec.WIP_JOB_ID;
9833 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_po_order_line_id         := l_curr_instance_rec.PO_ORDER_LINE_ID;
9834 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_po_order_line_id         := p_instance_rec.PO_ORDER_LINE_ID;
9835 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_completeness_flag        := l_curr_instance_rec.COMPLETENESS_FLAG;
9836 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_completeness_flag        := p_instance_rec.COMPLETENESS_FLAG;
9837 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).full_dump_flag               := 'Y';
9838 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_context                  := p_instance_rec.CONTEXT;
9839 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_context                  := l_curr_instance_rec.CONTEXT;
9840 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute1               := p_instance_rec.ATTRIBUTE1;
9841 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute1               := l_curr_instance_rec.ATTRIBUTE1;
9842 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute2               := p_instance_rec.ATTRIBUTE2;
9843 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute2               := l_curr_instance_rec.ATTRIBUTE2;
9844 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute3               := p_instance_rec.ATTRIBUTE3;
9845 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute3               := l_curr_instance_rec.ATTRIBUTE3;
9846 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute4               := p_instance_rec.ATTRIBUTE4;
9847 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute4               := l_curr_instance_rec.ATTRIBUTE4;
9848 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute5               := p_instance_rec.ATTRIBUTE5;
9849 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute5               := l_curr_instance_rec.ATTRIBUTE5;
9850 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute6               := p_instance_rec.ATTRIBUTE6;
9851 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute6               := l_curr_instance_rec.ATTRIBUTE6;
9852 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute7               := p_instance_rec.ATTRIBUTE7;
9853 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute7               := l_curr_instance_rec.ATTRIBUTE7;
9854 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute8               := p_instance_rec.ATTRIBUTE8;
9855 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute8               := l_curr_instance_rec.ATTRIBUTE8;
9856 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute9               := p_instance_rec.ATTRIBUTE9;
9857 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute9               := l_curr_instance_rec.ATTRIBUTE9;
9858 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute10              := p_instance_rec.ATTRIBUTE10;
9859 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute10              := l_curr_instance_rec.ATTRIBUTE10;
9860 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute11              := p_instance_rec.ATTRIBUTE11;
9861 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute11              := l_curr_instance_rec.ATTRIBUTE11;
9862 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute12              := p_instance_rec.ATTRIBUTE12;
9863 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute12              := l_curr_instance_rec.ATTRIBUTE12;
9864 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute13              := p_instance_rec.ATTRIBUTE13;
9865 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute13              := l_curr_instance_rec.ATTRIBUTE13;
9866 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute14              := p_instance_rec.ATTRIBUTE14;
9867 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute14              := l_curr_instance_rec.ATTRIBUTE14;
9868 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute15              := p_instance_rec.ATTRIBUTE15;
9869 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute15              := l_curr_instance_rec.ATTRIBUTE15;
9870 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).created_by                        := FND_GLOBAL.USER_ID;
9871 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).creation_date                     := SYSDATE;
9872 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_updated_by                   := FND_GLOBAL.USER_ID;
9873 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_update_date                  := SYSDATE;
9874 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_update_login                 := FND_GLOBAL.CONC_LOGIN_ID;
9875 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).object_version_number             := 1;
9876 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_location_type_code := l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE;
9877 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_location_type_code := p_instance_rec.INSTALL_LOCATION_TYPE_CODE;
9878 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_location_id        := l_curr_instance_rec.INSTALL_LOCATION_ID;
9879 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_location_id        := p_instance_rec.INSTALL_LOCATION_ID;
9880 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_usage_code        := l_curr_instance_rec.INSTANCE_USAGE_CODE;
9881 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_usage_code        := p_instance_rec.INSTANCE_USAGE_CODE;
9882 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_vld_organization_id   := fnd_api.g_miss_num;
9883 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_vld_organization_id   := fnd_api.g_miss_num;
9884 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_config_inst_rev_num        := l_curr_instance_rec.CONFIG_INST_REV_NUM;
9885 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_config_inst_rev_num        := p_instance_rec.CONFIG_INST_REV_NUM;
9886 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_config_valid_status        := l_curr_instance_rec.CONFIG_VALID_STATUS;
9887 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_config_valid_status        := p_instance_rec.CONFIG_VALID_STATUS;
9888 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_description       := l_curr_instance_rec.INSTANCE_DESCRIPTION;
9889 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_description       := p_instance_rec.INSTANCE_DESCRIPTION;
9890 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_date               := l_curr_instance_rec.INSTALL_DATE;
9891 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_date               := l_install_date;
9892 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_return_by_date             := l_curr_instance_rec.RETURN_BY_DATE;
9893 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_return_by_date             := p_instance_rec.RETURN_BY_DATE;
9894 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_actual_return_date         := l_curr_instance_rec.ACTUAL_RETURN_DATE;
9895 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_actual_return_date         := p_instance_rec.ACTUAL_RETURN_DATE;
9896 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_agreement_id       := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
9897 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_agreement_id       := p_instance_rec.LAST_OE_AGREEMENT_ID;
9898 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_order_line_id      := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID;
9899 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_order_line_id      := p_instance_rec.LAST_OE_ORDER_LINE_ID;
9900 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_rma_line_id        := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
9901 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_rma_line_id        := p_instance_rec.LAST_OE_RMA_LINE_ID;
9902 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_wip_job_id            := l_curr_instance_rec.LAST_WIP_JOB_ID;
9903 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_wip_job_id            := p_instance_rec.LAST_WIP_JOB_ID;
9904 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_po_po_line_id         := l_curr_instance_rec.LAST_PO_PO_LINE_ID;
9905 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_po_po_line_id         := p_instance_rec.LAST_PO_PO_LINE_ID;
9906 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_pa_project_id         := l_curr_instance_rec.LAST_PA_PROJECT_ID;
9907 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_pa_project_id         := p_instance_rec.LAST_PA_PROJECT_ID;
9908 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_pa_task_id            := l_curr_instance_rec.LAST_PA_TASK_ID;
9909 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_pa_task_id            := p_instance_rec.LAST_PA_TASK_ID;
9910 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_txn_line_detail_id    := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID;
9911 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_txn_line_detail_id    := p_instance_rec.LAST_TXN_LINE_DETAIL_ID;
9912 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_po_number          := l_curr_instance_rec.LAST_OE_PO_NUMBER;
9913 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_po_number          := p_instance_rec.LAST_OE_PO_NUMBER;
9914 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_capitalization_status         := l_curr_instance_rec.CAPITALIZATION_STATUS;
9915 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_capitalization_status         := p_instance_rec.CAPITALIZATION_STATUS;
9916 	--Start of parameters addition for eam integration
9917 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_network_asset_flag      := l_curr_instance_rec.NETWORK_ASSET_FLAG;
9918 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_network_asset_flag      := p_instance_rec.NETWORK_ASSET_FLAG;
9919 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_maintainable_flag       := l_curr_instance_rec.MAINTAINABLE_FLAG;
9920 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_maintainable_flag       := p_instance_rec.MAINTAINABLE_FLAG;
9921 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pn_location_id          := l_curr_instance_rec.PN_LOCATION_ID;
9922 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pn_location_id          := p_instance_rec.PN_LOCATION_ID;
9923 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_asset_criticality_code  := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
9924 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_asset_criticality_code  := p_instance_rec.ASSET_CRITICALITY_CODE;
9925 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_category_id             := l_curr_instance_rec.CATEGORY_ID;
9926 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_category_id             := p_instance_rec.CATEGORY_ID;
9927 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_equipment_gen_object_id := l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
9928 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_equipment_gen_object_id := p_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
9929 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instantiation_flag      := l_curr_instance_rec.INSTANTIATION_FLAG;
9930 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instantiation_flag      := p_instance_rec.INSTANTIATION_FLAG;
9931 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_linear_location_id      := l_curr_instance_rec.LINEAR_LOCATION_ID;
9932 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_linear_location_id      := p_instance_rec.LINEAR_LOCATION_ID;
9933 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_operational_log_flag    := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
9934 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_operational_log_flag    := p_instance_rec.OPERATIONAL_LOG_FLAG;
9935 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_checkin_status          := l_curr_instance_rec.CHECKIN_STATUS;
9936 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_checkin_status          := p_instance_rec.CHECKIN_STATUS;
9937 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_supplier_warranty_exp_date   := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
9938 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_supplier_warranty_exp_date   := p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
9939 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute16             := l_curr_instance_rec.ATTRIBUTE16;
9940 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute16             := p_instance_rec.ATTRIBUTE16;
9941 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute17             := l_curr_instance_rec.ATTRIBUTE17;
9942 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute17             := p_instance_rec.ATTRIBUTE17;
9943 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute18             := l_curr_instance_rec.ATTRIBUTE18;
9944 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute18             := p_instance_rec.ATTRIBUTE18;
9945 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute19             := l_curr_instance_rec.ATTRIBUTE19;
9946 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute19             := p_instance_rec.ATTRIBUTE19;
9947 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute20             := l_curr_instance_rec.ATTRIBUTE20;
9948 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute20             := p_instance_rec.ATTRIBUTE20;
9949 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute21             := l_curr_instance_rec.ATTRIBUTE21;
9950 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute21             := p_instance_rec.ATTRIBUTE21;
9951 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute22             := l_curr_instance_rec.ATTRIBUTE22;
9952 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute22             := p_instance_rec.ATTRIBUTE22;
9953 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute23             := l_curr_instance_rec.ATTRIBUTE23;
9954 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute23             := p_instance_rec.ATTRIBUTE23;
9955 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute24             := l_curr_instance_rec.ATTRIBUTE24;
9956 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute24             := p_instance_rec.ATTRIBUTE24;
9957 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute25             := l_curr_instance_rec.ATTRIBUTE25;
9958 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute25             := p_instance_rec.ATTRIBUTE25;
9959 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute26             := l_curr_instance_rec.ATTRIBUTE26;
9960 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute26             := p_instance_rec.ATTRIBUTE26;
9961 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute27             := l_curr_instance_rec.ATTRIBUTE27;
9962 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute27             := p_instance_rec.ATTRIBUTE27;
9963 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute28             := l_curr_instance_rec.ATTRIBUTE28;
9964 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute28             := p_instance_rec.ATTRIBUTE28;
9965 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute29             := l_curr_instance_rec.ATTRIBUTE29;
9966 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute29             := p_instance_rec.ATTRIBUTE29;
9967 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute30             := l_curr_instance_rec.ATTRIBUTE30;
9968 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute30             := p_instance_rec.ATTRIBUTE30;
9969 	--End of parameters addition for eam integration--
9970 	--Addition of columns for FA Integration
9971 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_payables_unit_price     := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
9972 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_payables_unit_price     := p_instance_rec.PAYABLES_UNIT_PRICE;
9973 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_payables_currency_code  := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
9974 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_payables_currency_code  := p_instance_rec.PAYABLES_CURRENCY_CODE;
9975 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_purchase_unit_price     := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
9976 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_purchase_unit_price     := p_instance_rec.PURCHASE_UNIT_PRICE;
9977 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_purchase_currency_code  := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
9978 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_purchase_currency_code  := p_instance_rec.PURCHASE_CURRENCY_CODE;
9979 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sales_unit_price        := l_curr_instance_rec.SALES_UNIT_PRICE;
9980 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sales_unit_price        := p_instance_rec.SALES_UNIT_PRICE;
9981 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sales_currency_code     := l_curr_instance_rec.SALES_CURRENCY_CODE;
9982 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sales_currency_code     := p_instance_rec.SALES_CURRENCY_CODE;
9983 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_operational_status_code := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
9984 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_operational_status_code := p_instance_rec.OPERATIONAL_STATUS_CODE;
9985 	--End addition of columns for FA Integration
9986 	--End of Insert into bulk table
9987 	--End of: Added for Bug:5615169
9988         -- Begin Add Code for Siebel Genesis Project
9989         l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_source_code   := fnd_api.g_miss_char;
9990         l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_source_code   := fnd_api.g_miss_char;
9991         -- End Add Code for Siebel Genesis Project
9992       END IF;
9993      END;
9994      -- End of modifications for Bug#2547034 on 09/20/02 - rtalluri
9995      --
9996      -- Opening New Cursor to retrieve Child Id records Details
9997 	OPEN new_instance_rec(l_rel_tbl(j).subject_id);
9998 	FETCH new_instance_rec INTO l_new_instance_rec;
9999 	   IF new_instance_rec%NOTFOUND THEN
10000 	      FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
10001 	      FND_MSG_PUB.ADD;
10002 	      RAISE FND_API.G_EXC_ERROR;
10003 	   END IF;
10004 	CLOSE new_instance_rec;
10005      --
10006      l_party_id := NULL;
10007      Begin
10008         select party_id
10009         into l_party_id
10010         from CSI_I_PARTIES
10011         where instance_id = l_rel_tbl(j).subject_id
10012         and   relationship_type_code = 'OWNER';
10013      Exception
10014         when no_data_found then
10015            l_party_id := null;
10016      End;
10017      -- p_instance_rec.call_contracts would've been set to FLASE whenever ownership is changed from
10018      -- external to internal or Internal to External. Since contracts call will be made
10019      -- at account update level, we are supressing the call here.
10020      IF l_party_id IS NOT NULL AND
10021         l_party_id <> l_internal_party_id AND
10022         p_instance_rec.call_contracts <> FND_API.G_FALSE THEN
10023 	IF l_curr_instance_rec.instance_status_id <> l_new_instance_rec.instance_status_id AND
10024 	   l_termination_status AND
10025 	   p_instance_rec.call_contracts <> FND_API.G_FALSE THEN
10026 	   IF p_txn_rec.transaction_type_id in (53,54) THEN
10027 	      l_oks_txn_type := 'RET';
10028 	   ELSE
10029 	      l_oks_txn_type := 'TRM';
10030 	   END IF;
10031 	   --
10032            IF p_txn_rec.transaction_type_id <> 7   -- Added for bug 3973706
10033            THEN
10034 	      csi_item_instance_pvt.Call_to_Contracts
10035 	       ( p_transaction_type   =>   l_oks_txn_type
10036 	        ,p_instance_id        =>   l_rel_tbl(j).SUBJECT_ID
10037 	        ,p_new_instance_id    =>   NULL
10038 	        ,p_vld_org_id         =>   l_curr_instance_rec.last_vld_organization_id
10039 	        ,p_quantity           =>   NULL
10040 	        ,p_party_account_id1  =>   NULL
10041 	        ,p_party_account_id2  =>   NULL
10042 	        ,p_transaction_date   =>   p_txn_rec.transaction_date
10043 	        ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date
10044 		,p_txn_type_id        => p_txn_rec.transaction_type_id  --added for BUG# 5752271
10045                 ,p_oks_txn_inst_tbl   =>   p_oks_txn_inst_tbl
10046 	        ,x_return_status      =>   x_return_status
10047 	        ,x_msg_count          =>   x_msg_count
10048 	        ,x_msg_data           =>   x_msg_data
10049 	       );
10050               --
10051 	      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
10052 	         l_msg_index := 1;
10053 	         l_msg_count := x_msg_count;
10054 	         WHILE l_msg_count > 0 LOOP
10055 		   x_msg_data := FND_MSG_PUB.GET
10056 				 (  l_msg_index,
10057 				    FND_API.G_FALSE
10058 				  );
10059 		   csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
10060 		       l_msg_index := l_msg_index + 1;
10061 		       l_msg_count := l_msg_count - 1;
10062 		 END LOOP;
10063 		 RAISE FND_API.G_EXC_ERROR;
10064 	      END IF;
10065            END IF; -- Added for bug 3973706
10066 	ELSE
10067 	   IF ((nvl(l_curr_instance_rec.active_end_date,(sysdate+1)) <= sysdate) AND
10068 	      ((p_instance_rec.active_end_date IS NULL) OR
10069 	       (p_instance_rec.active_end_date IS NOT NULL AND p_instance_rec.active_end_date > sysdate AND
10070 		p_instance_rec.active_end_date <> FND_API.G_MISS_DATE))) THEN
10071 	      --
10072 	      -- 11.5.10 ER. While un-expiring the instance, order Line ID will be passed only if it changes
10073 	      IF l_new_instance_rec.location_type_code = 'IN_TRANSIT' THEN
10074 		 IF nvl(l_curr_instance_rec.in_transit_order_line_id,-99999) <>
10075 				    nvl(l_new_instance_rec.in_transit_order_line_id,-99999) THEN
10076 		    l_order_line_id := l_new_instance_rec.in_transit_order_line_id;
10077 		 ELSE
10078 		    l_order_line_id := NULL;
10079 		 END IF;
10080 	      ELSE
10081 		 IF nvl(l_curr_instance_rec.last_oe_order_line_id,-99999) <>
10082 				  nvl(l_new_instance_rec.last_oe_order_line_id,-99999) THEN
10083 		    l_order_line_id := l_new_instance_rec.last_oe_order_line_id;
10084 		 ELSE
10085 		    l_order_line_id := NULL;
10086 		 END IF;
10087 	      END IF;
10088 	      --
10089               IF p_txn_rec.transaction_type_id <> 7   -- Added for bug 3973706
10090               THEN
10091 		 csi_item_instance_pvt.Call_to_Contracts
10092 		  ( p_transaction_type   =>   'NEW'
10093 		   ,p_instance_id        =>   l_rel_tbl(j).SUBJECT_ID
10094 		   ,p_new_instance_id    =>   NULL
10095 		   ,p_vld_org_id         =>   l_curr_instance_rec.last_vld_organization_id
10096 		   ,p_quantity           =>   NULL
10097 		   ,p_party_account_id1  =>   NULL
10098 		   ,p_party_account_id2  =>   NULL
10099 		   ,p_transaction_date   =>   p_txn_rec.transaction_date
10100 		   ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date
10101 		   ,p_order_line_id      =>   l_order_line_id
10102 		   ,p_oks_txn_inst_tbl   =>   p_oks_txn_inst_tbl
10103 		   ,x_return_status      =>   x_return_status
10104 		   ,x_msg_count          =>   x_msg_count
10105 		   ,x_msg_data           =>   x_msg_data
10106 		   );
10107                  --
10108 		 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
10109 		    l_msg_index := 1;
10110 		    l_msg_count := x_msg_count;
10111 		    WHILE l_msg_count > 0 LOOP
10112 			 x_msg_data := FND_MSG_PUB.GET
10113 				       (  l_msg_index,
10114 					  FND_API.G_FALSE
10115 					);
10116 			 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
10117 			     l_msg_index := l_msg_index + 1;
10118 			     l_msg_count := l_msg_count - 1;
10119 		    END LOOP;
10120 		    RAISE FND_API.G_EXC_ERROR;
10121 		 END IF;
10122               END IF;  -- Added for bug 3973706
10123            -- 'IDC' is added as ELSE condition. If during un-expiry, install_date is also changed then
10124            -- OKS would have used that date when called with 'NEW'. In such cases, OKS need not be called
10125            -- with 'IDC'. Following call is exclusively for Install_date change only.
10126            ELSE -- Check for 'IDC'
10127               IF NVL(l_curr_instance_rec.install_date,fnd_api.g_miss_date) <>
10128                  NVL(l_new_instance_rec.install_date,fnd_api.g_miss_date) THEN
10129 		 csi_item_instance_pvt.Call_to_Contracts
10130 		  ( p_transaction_type   =>   'IDC'
10131 		   ,p_instance_id        =>   l_rel_tbl(j).SUBJECT_ID
10132 		   ,p_new_instance_id    =>   NULL
10133 		   ,p_vld_org_id         =>   l_curr_instance_rec.last_vld_organization_id
10134 		   ,p_quantity           =>   NULL
10135 		   ,p_party_account_id1  =>   NULL
10136 		   ,p_party_account_id2  =>   NULL
10137 		   ,p_transaction_date   =>   p_txn_rec.transaction_date
10138 		   ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date
10139 		   ,p_order_line_id      =>   l_order_line_id
10140 		   ,p_oks_txn_inst_tbl   =>   p_oks_txn_inst_tbl
10141 		   ,x_return_status      =>   x_return_status
10142 		   ,x_msg_count          =>   x_msg_count
10143 		   ,x_msg_data           =>   x_msg_data
10144 		   );
10145                  --
10146 		 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
10147 		    l_msg_index := 1;
10148 		    l_msg_count := x_msg_count;
10149 		    WHILE l_msg_count > 0 LOOP
10150 			 x_msg_data := FND_MSG_PUB.GET
10151 				       (  l_msg_index,
10152 					  FND_API.G_FALSE
10153 					);
10154 			 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
10155 			     l_msg_index := l_msg_index + 1;
10156 			     l_msg_count := l_msg_count - 1;
10157 		    END LOOP;
10158 		    RAISE FND_API.G_EXC_ERROR;
10159 		 END IF;
10160               END IF;
10161 	   END IF;
10162         END IF;
10163      END IF; -- Internal party and call_contracts check
10164  -- End of modifications for Bug#2887590
10165    EXCEPTION
10166      WHEN PROCESS_NEXT THEN
10167        NULL;
10168    END;
10169       -- Calling eam API to log instance update event
10170        IF l_eam_item
10171        THEN
10172           IF l_ins_hist_id IS NOT NULL
10173           THEN
10174              l_instance_history_id:=l_ins_hist_id;
10175           ELSE
10176              l_instance_history_id:=l_csi_item_instance_h_id;
10177           END IF;
10178           eam_asset_log_pvt.instance_update_event
10179           (p_api_version         => p_api_version
10180           ,p_init_msg_list       => fnd_api.g_false
10181           ,p_commit              => fnd_api.g_false
10182           ,p_validation_level    => fnd_api.g_valid_level_full
10183           ,x_return_status       => x_return_status
10184           ,x_msg_count           => x_msg_count
10185           ,x_msg_data            => x_msg_data
10186           ,p_instance_id         => l_rel_tbl(j).subject_id
10187           ,p_ref_id              => l_instance_history_id
10188           ,p_event_date          => sysdate);
10189          IF NOT(x_return_status = fnd_api.g_ret_sts_success)
10190          THEN
10191             csi_gen_utility_pvt.put_line('Error from eam_asset_log_pvt.instance_update_event API');
10192             RAISE fnd_api.g_exc_error;
10193          END IF;
10194        END IF;
10195       -- Calling eam API to log instance update event
10196  END LOOP;
10197 --Start of:Added for Bug:5615169
10198  IF l_inst_hist_tbl_blk_ins.count > 0 THEN   -- BUG#6203160
10199 --Do the ciih bulk insert
10200 --Convert PL/SQl table to column table
10201 build_inst_hist_rec_of_table ( p_inst_hist_tbl => l_inst_hist_tbl_blk_ins  -- csi_datastructures_pub.instance_history_tbl
10202 ,p_inst_hist_rec_tab                           => l_inst_hist_rec_tab      -- csi_item_instance_grp.instance_history_rec_tab
10203 );
10204 --Do the actual bulk Insert
10205 -- Modified OLD_LAST_OE_AGREEMENT_ID, NEW_LAST_OE_AGREEMENT_ID for the bug 6967129
10206 l_ciih_blk_ins_cnt := l_inst_hist_rec_tab.instance_history_id.count;
10207 --
10208 FORALL i in 1 .. l_ciih_blk_ins_cnt
10209 INSERT
10210 INTO    CSI_ITEM_INSTANCES_H
10211         ( INSTANCE_HISTORY_ID,
10212                 INSTANCE_ID,
10213                 TRANSACTION_ID,
10214                 OLD_INSTANCE_NUMBER,
10215                 NEW_INSTANCE_NUMBER,
10216                 OLD_EXTERNAL_REFERENCE,
10217                 NEW_EXTERNAL_REFERENCE,
10218                 OLD_INVENTORY_ITEM_ID,
10219                 NEW_INVENTORY_ITEM_ID,
10220                 OLD_INVENTORY_REVISION,
10221                 NEW_INVENTORY_REVISION,
10222                 OLD_INV_MASTER_ORGANIZATION_ID,
10223                 NEW_INV_MASTER_ORGANIZATION_ID,
10224                 OLD_SERIAL_NUMBER,
10225                 NEW_SERIAL_NUMBER ,
10226                 OLD_MFG_SERIAL_NUMBER_FLAG,
10227                 NEW_MFG_SERIAL_NUMBER_FLAG,
10228                 OLD_LOT_NUMBER,
10229                 NEW_LOT_NUMBER,
10230                 OLD_QUANTITY,
10231                 NEW_QUANTITY,
10232                 OLD_UNIT_OF_MEASURE,
10233                 NEW_UNIT_OF_MEASURE,
10234                 OLD_ACCOUNTING_CLASS_CODE,
10235                 NEW_ACCOUNTING_CLASS_CODE,
10236                 OLD_INSTANCE_CONDITION_ID,
10237                 NEW_INSTANCE_CONDITION_ID,
10238                 OLD_INSTANCE_STATUS_ID,
10239                 NEW_INSTANCE_STATUS_ID,
10240                 OLD_CUSTOMER_VIEW_FLAG,
10241                 NEW_CUSTOMER_VIEW_FLAG,
10242                 OLD_MERCHANT_VIEW_FLAG,
10243                 NEW_MERCHANT_VIEW_FLAG,
10244                 OLD_SELLABLE_FLAG,
10245                 NEW_SELLABLE_FLAG,
10246                 OLD_SYSTEM_ID,
10247                 NEW_SYSTEM_ID,
10248                 OLD_INSTANCE_TYPE_CODE,
10249                 NEW_INSTANCE_TYPE_CODE,
10250                 OLD_ACTIVE_START_DATE,
10251                 NEW_ACTIVE_START_DATE,
10252                 OLD_ACTIVE_END_DATE,
10253                 NEW_ACTIVE_END_DATE,
10254                 OLD_LOCATION_TYPE_CODE,
10255                 NEW_LOCATION_TYPE_CODE,
10256                 OLD_LOCATION_ID,
10257                 NEW_LOCATION_ID,
10258                 OLD_INV_ORGANIZATION_ID,
10259                 NEW_INV_ORGANIZATION_ID,
10260                 OLD_INV_SUBINVENTORY_NAME,
10261                 NEW_INV_SUBINVENTORY_NAME,
10262                 OLD_INV_LOCATOR_ID,
10263                 NEW_INV_LOCATOR_ID,
10264                 OLD_PA_PROJECT_ID,
10265                 NEW_PA_PROJECT_ID,
10266                 OLD_PA_PROJECT_TASK_ID,
10267                 NEW_PA_PROJECT_TASK_ID,
10268                 OLD_IN_TRANSIT_ORDER_LINE_ID,
10269                 NEW_IN_TRANSIT_ORDER_LINE_ID,
10270                 OLD_WIP_JOB_ID,
10271                 NEW_WIP_JOB_ID,
10272                 OLD_PO_ORDER_LINE_ID,
10273                 NEW_PO_ORDER_LINE_ID,
10274                 OLD_COMPLETENESS_FLAG,
10275                 NEW_COMPLETENESS_FLAG,
10276                 FULL_DUMP_FLAG,
10277                 OLD_CONTEXT,
10278                 NEW_CONTEXT,
10279                 OLD_ATTRIBUTE1,
10280                 NEW_ATTRIBUTE1,
10281                 OLD_ATTRIBUTE2,
10282                 NEW_ATTRIBUTE2,
10283                 OLD_ATTRIBUTE3,
10284                 NEW_ATTRIBUTE3,
10285                 OLD_ATTRIBUTE4,
10286                 NEW_ATTRIBUTE4,
10287                 OLD_ATTRIBUTE5,
10288                 NEW_ATTRIBUTE5,
10289                 OLD_ATTRIBUTE6,
10290                 NEW_ATTRIBUTE6,
10291                 OLD_ATTRIBUTE7,
10292                 NEW_ATTRIBUTE7,
10293                 OLD_ATTRIBUTE8,
10294                 NEW_ATTRIBUTE8,
10295                 OLD_ATTRIBUTE9,
10296                 NEW_ATTRIBUTE9,
10297                 OLD_ATTRIBUTE10,
10298                 NEW_ATTRIBUTE10,
10299                 OLD_ATTRIBUTE11,
10300                 NEW_ATTRIBUTE11,
10301                 OLD_ATTRIBUTE12,
10302                 NEW_ATTRIBUTE12,
10303                 OLD_ATTRIBUTE13,
10304                 NEW_ATTRIBUTE13,
10305                 OLD_ATTRIBUTE14,
10306                 NEW_ATTRIBUTE14,
10307                 OLD_ATTRIBUTE15,
10308                 NEW_ATTRIBUTE15,
10309                 CREATED_BY,
10310                 CREATION_DATE,
10311                 LAST_UPDATED_BY,
10312                 LAST_UPDATE_DATE,
10313                 LAST_UPDATE_LOGIN,
10314                 OBJECT_VERSION_NUMBER,
10315                 OLD_INST_LOC_TYPE_CODE,
10316                 NEW_INST_LOC_TYPE_CODE,
10317                 OLD_INST_LOC_ID,
10318                 NEW_INST_LOC_ID,
10319                 OLD_INST_USAGE_CODE,
10320                 NEW_INST_USAGE_CODE,
10321                 OLD_last_vld_organization_id,
10322                 NEW_last_vld_organization_id,
10323                 OLD_CONFIG_INST_REV_NUM ,
10324                 NEW_CONFIG_INST_REV_NUM ,
10325                 OLD_CONFIG_VALID_STATUS ,
10326                 NEW_CONFIG_VALID_STATUS ,
10327                 OLD_INSTANCE_DESCRIPTION ,
10328                 NEW_INSTANCE_DESCRIPTION ,
10329                 OLD_INSTALL_DATE ,
10330                 NEW_INSTALL_DATE ,
10331                 OLD_RETURN_BY_DATE ,
10332                 NEW_RETURN_BY_DATE ,
10333                 OLD_ACTUAL_RETURN_DATE ,
10334                 NEW_ACTUAL_RETURN_DATE ,
10335                 OLD_OE_AGREEMENT_ID ,
10336                 NEW_OE_AGREEMENT_ID ,
10337                 OLD_LAST_OE_ORDER_LINE_ID,
10338                 NEW_LAST_OE_ORDER_LINE_ID,
10339                 OLD_LAST_OE_RMA_LINE_ID,
10340                 NEW_LAST_OE_RMA_LINE_ID,
10341                 OLD_LAST_WIP_JOB_ID,
10342                 NEW_LAST_WIP_JOB_ID,
10343                 OLD_LAST_PO_PO_LINE_ID,
10344                 NEW_LAST_PO_PO_LINE_ID,
10345                 OLD_LAST_PA_PROJECT_ID,
10346                 NEW_LAST_PA_PROJECT_ID,
10347                 OLD_LAST_PA_TASK_ID,
10348                 NEW_LAST_PA_TASK_ID,
10349                 OLD_LAST_TXN_LINE_DETAIL_ID,
10350                 NEW_LAST_TXN_LINE_DETAIL_ID,
10351                 OLD_LAST_OE_PO_NUMBER,
10352                 NEW_LAST_OE_PO_NUMBER,
10353                 --Start of eam integration changes--
10354                 OLD_NETWORK_ASSET_FLAG,
10355                 NEW_NETWORK_ASSET_FLAG,
10356                 OLD_MAINTAINABLE_FLAG,
10357                 NEW_MAINTAINABLE_FLAG,
10358                 OLD_PN_LOCATION_ID,
10359                 NEW_PN_LOCATION_ID,
10360                 OLD_ASSET_CRITICALITY_CODE,
10361                 NEW_ASSET_CRITICALITY_CODE,
10362                 OLD_CATEGORY_ID,
10363                 NEW_CATEGORY_ID,
10364                 OLD_EQUIPMENT_GEN_OBJECT_ID,
10365                 NEW_EQUIPMENT_GEN_OBJECT_ID,
10366                 OLD_INSTANTIATION_FLAG,
10367                 NEW_INSTANTIATION_FLAG,
10368                 OLD_LINEAR_LOCATION_ID,
10369                 NEW_LINEAR_LOCATION_ID,
10370                 OLD_OPERATIONAL_LOG_FLAG,
10371                 NEW_OPERATIONAL_LOG_FLAG,
10372                 OLD_CHECKIN_STATUS,
10373                 NEW_CHECKIN_STATUS,
10374                 OLD_SUPPLIER_WARRANTY_EXP_DATE,
10375                 NEW_SUPPLIER_WARRANTY_EXP_DATE,
10376                 OLD_ATTRIBUTE16,
10377                 NEW_ATTRIBUTE16,
10378                 OLD_ATTRIBUTE17,
10379                 NEW_ATTRIBUTE17,
10380                 OLD_ATTRIBUTE18,
10381                 NEW_ATTRIBUTE18,
10382                 OLD_ATTRIBUTE19,
10383                 NEW_ATTRIBUTE19,
10384                 OLD_ATTRIBUTE20,
10385                 NEW_ATTRIBUTE20,
10386                 OLD_ATTRIBUTE21,
10387                 NEW_ATTRIBUTE21,
10388                 OLD_ATTRIBUTE22,
10389                 NEW_ATTRIBUTE22,
10390                 OLD_ATTRIBUTE23,
10391                 NEW_ATTRIBUTE23,
10392                 OLD_ATTRIBUTE24,
10393                 NEW_ATTRIBUTE24,
10394                 OLD_ATTRIBUTE25,
10395                 NEW_ATTRIBUTE25,
10396                 OLD_ATTRIBUTE26,
10397                 NEW_ATTRIBUTE26,
10398                 OLD_ATTRIBUTE27,
10399                 NEW_ATTRIBUTE27,
10400                 OLD_ATTRIBUTE28,
10401                 NEW_ATTRIBUTE28,
10402                 OLD_ATTRIBUTE29,
10403                 NEW_ATTRIBUTE29,
10404                 OLD_ATTRIBUTE30,
10405                 NEW_ATTRIBUTE30,
10406                 --End of eam integration changes--
10407                 --Addition of columns for FA Integration
10408                 OLD_PAYABLES_UNIT_PRICE,
10409                 NEW_PAYABLES_UNIT_PRICE,
10410                 OLD_PAYABLES_CURRENCY_CODE,
10411                 NEW_PAYABLES_CURRENCY_CODE,
10412                 OLD_PURCHASE_UNIT_PRICE,
10413                 NEW_PURCHASE_UNIT_PRICE,
10414                 OLD_PURCHASE_CURRENCY_CODE,
10415                 NEW_PURCHASE_CURRENCY_CODE,
10416                 OLD_SALES_UNIT_PRICE,
10417                 NEW_SALES_UNIT_PRICE,
10418                 OLD_SALES_CURRENCY_CODE,
10419                 NEW_SALES_CURRENCY_CODE,
10420                 OLD_OPERATIONAL_STATUS_CODE,
10421                 NEW_OPERATIONAL_STATUS_CODE
10422                 --End addition of columns for FA Integration
10423         )
10424         VALUES
10425         (
10426                 l_inst_hist_rec_tab.INSTANCE_HISTORY_ID(i),
10427                 decode( l_inst_hist_rec_tab.INSTANCE_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.INSTANCE_ID(i)),
10428                 decode( l_inst_hist_rec_tab.TRANSACTION_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.TRANSACTION_ID(i)),
10429                 decode( l_inst_hist_rec_tab.OLD_INSTANCE_NUMBER(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_INSTANCE_NUMBER(i)),
10430                 decode( l_inst_hist_rec_tab.NEW_INSTANCE_NUMBER(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_INSTANCE_NUMBER(i)),
10431                 decode( l_inst_hist_rec_tab.OLD_EXTERNAL_REFERENCE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_EXTERNAL_REFERENCE(i)),
10432                 decode( l_inst_hist_rec_tab.NEW_EXTERNAL_REFERENCE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_EXTERNAL_REFERENCE(i)),
10433                 decode( l_inst_hist_rec_tab.OLD_INVENTORY_ITEM_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_INVENTORY_ITEM_ID(i)),
10434                 decode( l_inst_hist_rec_tab.NEW_INVENTORY_ITEM_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_INVENTORY_ITEM_ID(i)),
10435                 decode( l_inst_hist_rec_tab.OLD_INVENTORY_REVISION(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_INVENTORY_REVISION(i)),
10436                 decode( l_inst_hist_rec_tab.NEW_INVENTORY_REVISION(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_INVENTORY_REVISION(i)),
10437                 decode( l_inst_hist_rec_tab.OLD_INV_MASTER_ORG_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_INV_MASTER_ORG_ID(i)),
10438                 decode( l_inst_hist_rec_tab.NEW_INV_MASTER_ORG_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_INV_MASTER_ORG_ID(i)),
10439                 decode( l_inst_hist_rec_tab.OLD_SERIAL_NUMBER(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_SERIAL_NUMBER(i)),
10440                 decode( l_inst_hist_rec_tab.NEW_SERIAL_NUMBER(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_SERIAL_NUMBER(i)),
10441                 decode( l_inst_hist_rec_tab.OLD_MFG_SERIAL_NUMBER_FLAG(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_MFG_SERIAL_NUMBER_FLAG(i)),
10442                 decode( l_inst_hist_rec_tab.NEW_MFG_SERIAL_NUMBER_FLAG(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_MFG_SERIAL_NUMBER_FLAG(i)),
10443                 decode( l_inst_hist_rec_tab.OLD_LOT_NUMBER(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_LOT_NUMBER(i)),
10444                 decode( l_inst_hist_rec_tab.NEW_LOT_NUMBER(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_LOT_NUMBER(i)),
10445                 decode( l_inst_hist_rec_tab.OLD_QUANTITY(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_QUANTITY(i)),
10446                 decode( l_inst_hist_rec_tab.NEW_QUANTITY(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_QUANTITY(i)),
10447                 decode( l_inst_hist_rec_tab.OLD_UNIT_OF_MEASURE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_UNIT_OF_MEASURE(i)),
10448                 decode( l_inst_hist_rec_tab.NEW_UNIT_OF_MEASURE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_UNIT_OF_MEASURE(i)),
10449                 decode( l_inst_hist_rec_tab.OLD_ACCOUNTING_CLASS_CODE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ACCOUNTING_CLASS_CODE(i)),
10450                 decode( l_inst_hist_rec_tab.NEW_ACCOUNTING_CLASS_CODE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ACCOUNTING_CLASS_CODE(i)),
10451                 decode( l_inst_hist_rec_tab.OLD_INSTANCE_CONDITION_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_INSTANCE_CONDITION_ID(i)),
10452                 decode( l_inst_hist_rec_tab.NEW_INSTANCE_CONDITION_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_INSTANCE_CONDITION_ID(i)),
10453                 decode( l_inst_hist_rec_tab.OLD_INSTANCE_STATUS_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_INSTANCE_STATUS_ID(i)),
10454                 decode( l_inst_hist_rec_tab.NEW_INSTANCE_STATUS_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_INSTANCE_STATUS_ID(i)),
10455                 decode( l_inst_hist_rec_tab.OLD_CUSTOMER_VIEW_FLAG(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_CUSTOMER_VIEW_FLAG(i)),
10456                 decode( l_inst_hist_rec_tab.NEW_CUSTOMER_VIEW_FLAG(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_CUSTOMER_VIEW_FLAG(i)),
10457                 decode( l_inst_hist_rec_tab.OLD_MERCHANT_VIEW_FLAG(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_MERCHANT_VIEW_FLAG(i)),
10458                 decode( l_inst_hist_rec_tab.NEW_MERCHANT_VIEW_FLAG(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_MERCHANT_VIEW_FLAG(i)),
10459                 decode( l_inst_hist_rec_tab.OLD_SELLABLE_FLAG(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_SELLABLE_FLAG(i)),
10460                 decode( l_inst_hist_rec_tab.NEW_SELLABLE_FLAG(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_SELLABLE_FLAG(i)),
10461                 decode( l_inst_hist_rec_tab.OLD_SYSTEM_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_SYSTEM_ID(i)),
10462                 decode( l_inst_hist_rec_tab.NEW_SYSTEM_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_SYSTEM_ID(i)),
10463                 decode( l_inst_hist_rec_tab.OLD_INSTANCE_TYPE_CODE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_INSTANCE_TYPE_CODE(i)),
10464                 decode( l_inst_hist_rec_tab.NEW_INSTANCE_TYPE_CODE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_INSTANCE_TYPE_CODE(i)),
10465                 decode( l_inst_hist_rec_tab.OLD_ACTIVE_START_DATE(i), FND_API.G_MISS_DATE, TO_DATE(NULL), l_inst_hist_rec_tab.OLD_ACTIVE_START_DATE(i)),
10466                 decode( l_inst_hist_rec_tab.NEW_ACTIVE_START_DATE(i), FND_API.G_MISS_DATE, TO_DATE(NULL), l_inst_hist_rec_tab.NEW_ACTIVE_START_DATE(i)),
10467                 decode( l_inst_hist_rec_tab.OLD_ACTIVE_END_DATE(i), FND_API.G_MISS_DATE, TO_DATE(NULL), l_inst_hist_rec_tab.OLD_ACTIVE_END_DATE(i)),
10468                 decode( l_inst_hist_rec_tab.NEW_ACTIVE_END_DATE(i), FND_API.G_MISS_DATE, TO_DATE(NULL), l_inst_hist_rec_tab.NEW_ACTIVE_END_DATE(i)),
10469                 decode( l_inst_hist_rec_tab.OLD_LOCATION_TYPE_CODE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_LOCATION_TYPE_CODE(i)),
10470                 decode( l_inst_hist_rec_tab.NEW_LOCATION_TYPE_CODE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_LOCATION_TYPE_CODE(i)),
10471                 decode( l_inst_hist_rec_tab.OLD_LOCATION_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_LOCATION_ID(i)),
10472                 decode( l_inst_hist_rec_tab.NEW_LOCATION_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_LOCATION_ID(i)),
10473                 decode( l_inst_hist_rec_tab.OLD_INV_ORGANIZATION_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_INV_ORGANIZATION_ID(i)),
10474                 decode( l_inst_hist_rec_tab.NEW_INV_ORGANIZATION_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_INV_ORGANIZATION_ID(i)),
10475                 decode( l_inst_hist_rec_tab.OLD_INV_SUBINVENTORY_NAME(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_INV_SUBINVENTORY_NAME(i)),
10476                 decode( l_inst_hist_rec_tab.NEW_INV_SUBINVENTORY_NAME(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_INV_SUBINVENTORY_NAME(i)),
10477                 decode( l_inst_hist_rec_tab.OLD_INV_LOCATOR_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_INV_LOCATOR_ID(i)),
10478                 decode( l_inst_hist_rec_tab.NEW_INV_LOCATOR_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_INV_LOCATOR_ID(i)),
10479                 decode( l_inst_hist_rec_tab.OLD_PA_PROJECT_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_PA_PROJECT_ID(i)),
10480                 decode( l_inst_hist_rec_tab.NEW_PA_PROJECT_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_PA_PROJECT_ID(i)),
10481                 decode( l_inst_hist_rec_tab.OLD_PA_PROJECT_TASK_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_PA_PROJECT_TASK_ID(i)),
10482                 decode( l_inst_hist_rec_tab.NEW_PA_PROJECT_TASK_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_PA_PROJECT_TASK_ID(i)),
10483                 decode( l_inst_hist_rec_tab.OLD_IN_TRANSIT_ORDER_LINE_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_IN_TRANSIT_ORDER_LINE_ID(i)),
10484                 decode( l_inst_hist_rec_tab.NEW_IN_TRANSIT_ORDER_LINE_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_IN_TRANSIT_ORDER_LINE_ID(i)),
10485                 decode( l_inst_hist_rec_tab.OLD_WIP_JOB_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_WIP_JOB_ID(i)),
10486                 decode( l_inst_hist_rec_tab.NEW_WIP_JOB_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_WIP_JOB_ID(i)),
10487                 decode( l_inst_hist_rec_tab.OLD_PO_ORDER_LINE_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_PO_ORDER_LINE_ID(i)),
10488                 decode( l_inst_hist_rec_tab.NEW_PO_ORDER_LINE_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_PO_ORDER_LINE_ID(i)),
10489                 decode( l_inst_hist_rec_tab.OLD_COMPLETENESS_FLAG(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_COMPLETENESS_FLAG(i)),
10490                 decode( l_inst_hist_rec_tab.NEW_COMPLETENESS_FLAG(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_COMPLETENESS_FLAG(i)),
10491                  'N',
10492                 decode( l_inst_hist_rec_tab.OLD_CONTEXT(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_CONTEXT(i)),
10493                 decode( l_inst_hist_rec_tab.NEW_CONTEXT(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_CONTEXT(i)),
10494                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE1(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE1(i)),
10495                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE1(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE1(i)),
10496                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE2(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE2(i)),
10497                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE2(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE2(i)),
10498                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE3(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE3(i)),
10499                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE3(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE3(i)),
10500                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE4(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE4(i)),
10501                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE4(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE4(i)),
10502                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE5(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE5(i)),
10503                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE5(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE5(i)),
10504                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE6(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE6(i)),
10505                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE6(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE6(i)),
10506                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE7(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE7(i)),
10507                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE7(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE7(i)),
10508                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE8(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE8(i)),
10509                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE8(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE8(i)),
10510                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE9(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE9(i)),
10511                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE9(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE9(i)),
10512                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE10(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE10(i)),
10513                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE10(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE10(i)),
10514                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE11(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE11(i)),
10515                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE11(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE11(i)),
10516                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE12(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE12(i)),
10517                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE12(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE12(i)),
10518                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE13(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE13(i)),
10519                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE13(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE13(i)),
10520                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE14(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE14(i)),
10521                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE14(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE14(i)),
10522                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE15(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE15(i)),
10523                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE15(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE15(i)),
10524                 l_user_id,
10525                 SYSDATE,
10526                 l_user_id,
10527                 SYSDATE,
10528                 l_login_id,
10529                 1,
10530                 decode( l_inst_hist_rec_tab.OLD_INSTALL_LOCATION_TYPE_CODE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_INSTALL_LOCATION_TYPE_CODE(i)),
10531                 decode( l_inst_hist_rec_tab.NEW_INSTALL_LOCATION_TYPE_CODE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_INSTALL_LOCATION_TYPE_CODE(i)),
10532                 decode( l_inst_hist_rec_tab.OLD_INSTALL_LOCATION_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_INSTALL_LOCATION_ID(i)),
10533                 decode( l_inst_hist_rec_tab.NEW_INSTALL_LOCATION_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_INSTALL_LOCATION_ID(i)),
10534                 decode( l_inst_hist_rec_tab.OLD_INSTANCE_USAGE_CODE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_INSTANCE_USAGE_CODE(i)),
10535                 decode( l_inst_hist_rec_tab.NEW_INSTANCE_USAGE_CODE(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_INSTANCE_USAGE_CODE(i)),
10536                 decode( l_inst_hist_rec_tab.OLD_last_vld_organization_id(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_last_vld_organization_id(i)),
10537                 decode( l_inst_hist_rec_tab.NEW_last_vld_organization_id(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.new_last_vld_organization_id(i)),
10538                 decode( l_inst_hist_rec_tab.OLD_CONFIG_INST_REV_NUM(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_CONFIG_INST_REV_NUM(i)),
10539                 decode( l_inst_hist_rec_tab.NEW_CONFIG_INST_REV_NUM(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_CONFIG_INST_REV_NUM(i)),
10540                 decode( l_inst_hist_rec_tab.OLD_CONFIG_VALID_STATUS(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_CONFIG_VALID_STATUS(i)),
10541                 decode( l_inst_hist_rec_tab.NEW_CONFIG_VALID_STATUS(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_CONFIG_VALID_STATUS(i)),
10542                 decode( l_inst_hist_rec_tab.OLD_INSTANCE_DESCRIPTION(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_INSTANCE_DESCRIPTION(i)),
10543                 decode( l_inst_hist_rec_tab.NEW_INSTANCE_DESCRIPTION(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_INSTANCE_DESCRIPTION(i)),
10544 
10545                 decode( l_inst_hist_rec_tab.OLD_INSTALL_DATE(i),FND_API.G_MISS_DATE, NULL, l_inst_hist_rec_tab.OLD_INSTALL_DATE(i)) ,
10546                 decode(l_inst_hist_rec_tab.NEW_INSTALL_DATE(i),FND_API.G_MISS_DATE, NULL, l_inst_hist_rec_tab.NEW_INSTALL_DATE(i)) ,
10547                 decode(l_inst_hist_rec_tab.OLD_RETURN_BY_DATE(i) ,FND_API.G_MISS_DATE,NULL, l_inst_hist_rec_tab.OLD_RETURN_BY_DATE(i)),
10548                 decode(l_inst_hist_rec_tab.NEW_RETURN_BY_DATE(i) ,FND_API.G_MISS_DATE,NULL,l_inst_hist_rec_tab.NEW_RETURN_BY_DATE(i)),
10549                 decode(l_inst_hist_rec_tab.OLD_ACTUAL_RETURN_DATE(i) ,FND_API.G_MISS_DATE,NULL,l_inst_hist_rec_tab.OLD_ACTUAL_RETURN_DATE(i)),
10550                 decode(l_inst_hist_rec_tab.NEW_ACTUAL_RETURN_DATE(i) ,FND_API.G_MISS_DATE,NULL,l_inst_hist_rec_tab.NEW_ACTUAL_RETURN_DATE(i)),
10551 
10552                 decode( l_inst_hist_rec_tab.OLD_LAST_OE_AGREEMENT_ID(i),FND_API.G_MISS_NUM, NULL,l_inst_hist_rec_tab.OLD_LAST_OE_AGREEMENT_ID(i)),
10553                 decode( l_inst_hist_rec_tab.NEW_LAST_OE_AGREEMENT_ID(i),FND_API.G_MISS_NUM, NULL,l_inst_hist_rec_tab.NEW_LAST_OE_AGREEMENT_ID(i)),
10554 
10555                 decode(l_inst_hist_rec_tab.OLD_LAST_OE_ORDER_LINE_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.OLD_LAST_OE_ORDER_LINE_ID(i)),
10556                 decode(l_inst_hist_rec_tab.NEW_LAST_OE_ORDER_LINE_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.NEW_LAST_OE_ORDER_LINE_ID(i)),
10557                 decode(l_inst_hist_rec_tab.OLD_LAST_OE_RMA_LINE_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.OLD_LAST_OE_RMA_LINE_ID(i)),
10558                 decode(l_inst_hist_rec_tab.NEW_LAST_OE_RMA_LINE_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.NEW_LAST_OE_RMA_LINE_ID(i)),
10559                 decode(l_inst_hist_rec_tab.OLD_LAST_WIP_JOB_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.OLD_LAST_WIP_JOB_ID(i)),
10560                 decode(l_inst_hist_rec_tab.NEW_LAST_WIP_JOB_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.NEW_LAST_WIP_JOB_ID(i)),
10561                 decode(l_inst_hist_rec_tab.OLD_LAST_PO_PO_LINE_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.OLD_LAST_PO_PO_LINE_ID(i)),
10562                 decode(l_inst_hist_rec_tab.NEW_LAST_PO_PO_LINE_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.NEW_LAST_PO_PO_LINE_ID(i)),
10563                 decode(l_inst_hist_rec_tab.OLD_LAST_PA_PROJECT_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.OLD_LAST_PA_PROJECT_ID(i)),
10564                 decode(l_inst_hist_rec_tab.NEW_LAST_PA_PROJECT_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.NEW_LAST_PA_PROJECT_ID(i)),
10565                 decode(l_inst_hist_rec_tab.OLD_LAST_PA_TASK_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.OLD_LAST_PA_TASK_ID(i)),
10566                 decode(l_inst_hist_rec_tab.NEW_LAST_PA_TASK_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.NEW_LAST_PA_TASK_ID(i)),
10567                 decode(l_inst_hist_rec_tab.OLD_LAST_TXN_LINE_DETAIL_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.OLD_LAST_TXN_LINE_DETAIL_ID(i)),
10568                 decode(l_inst_hist_rec_tab.NEW_LAST_TXN_LINE_DETAIL_ID(i) ,FND_API.G_MISS_NUM,NULL,l_inst_hist_rec_tab.NEW_LAST_TXN_LINE_DETAIL_ID(i)),
10569                 decode(l_inst_hist_rec_tab.OLD_LAST_OE_PO_NUMBER(i) ,FND_API.G_MISS_CHAR,NULL,l_inst_hist_rec_tab.OLD_LAST_OE_PO_NUMBER(i)),
10570                 decode(l_inst_hist_rec_tab.NEW_LAST_OE_PO_NUMBER(i) ,FND_API.G_MISS_CHAR,NULL,l_inst_hist_rec_tab.NEW_LAST_OE_PO_NUMBER(i)),
10571                 --Start of eam integration changes--
10572                 decode( l_inst_hist_rec_tab.OLD_NETWORK_ASSET_FLAG(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_NETWORK_ASSET_FLAG(i)),
10573                 decode( l_inst_hist_rec_tab.NEW_NETWORK_ASSET_FLAG(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_NETWORK_ASSET_FLAG(i)),
10574                 decode( l_inst_hist_rec_tab.OLD_MAINTAINABLE_FLAG(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_MAINTAINABLE_FLAG(i)),
10575                 decode( l_inst_hist_rec_tab.NEW_MAINTAINABLE_FLAG(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_MAINTAINABLE_FLAG(i)),
10576                 decode( l_inst_hist_rec_tab.OLD_PN_LOCATION_ID(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_PN_LOCATION_ID(i)),
10577                 decode( l_inst_hist_rec_tab.NEW_PN_LOCATION_ID(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_PN_LOCATION_ID(i)),
10578                 decode( l_inst_hist_rec_tab.OLD_ASSET_CRITICALITY_CODE(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ASSET_CRITICALITY_CODE(i)),
10579                 decode( l_inst_hist_rec_tab.NEW_ASSET_CRITICALITY_CODE(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ASSET_CRITICALITY_CODE(i)),
10580                 decode( l_inst_hist_rec_tab.OLD_CATEGORY_ID(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_CATEGORY_ID(i)),
10581                 decode( l_inst_hist_rec_tab.NEW_CATEGORY_ID(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_CATEGORY_ID(i)),
10582                 decode( l_inst_hist_rec_tab.OLD_EQUIPMENT_GEN_OBJECT_ID(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_EQUIPMENT_GEN_OBJECT_ID(i)),
10583                 decode( l_inst_hist_rec_tab.NEW_EQUIPMENT_GEN_OBJECT_ID(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_EQUIPMENT_GEN_OBJECT_ID(i)),
10584                 decode( l_inst_hist_rec_tab.OLD_INSTANTIATION_FLAG(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_INSTANTIATION_FLAG(i)),
10585                 decode( l_inst_hist_rec_tab.NEW_INSTANTIATION_FLAG(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_INSTANTIATION_FLAG(i)),
10586                 decode( l_inst_hist_rec_tab.OLD_LINEAR_LOCATION_ID(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_LINEAR_LOCATION_ID(i)),
10587                 decode( l_inst_hist_rec_tab.NEW_LINEAR_LOCATION_ID(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_LINEAR_LOCATION_ID(i)),
10588                 decode( l_inst_hist_rec_tab.OLD_OPERATIONAL_LOG_FLAG(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_OPERATIONAL_LOG_FLAG(i)),
10589                 decode( l_inst_hist_rec_tab.NEW_OPERATIONAL_LOG_FLAG(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_OPERATIONAL_LOG_FLAG(i)),
10590                 decode( l_inst_hist_rec_tab.OLD_CHECKIN_STATUS(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_CHECKIN_STATUS(i)),
10591                 decode( l_inst_hist_rec_tab.NEW_CHECKIN_STATUS(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_CHECKIN_STATUS(i)),
10592                 decode( l_inst_hist_rec_tab.old_supplier_warranty_exp_date(i) ,FND_API.G_MISS_DATE, TO_DATE(NULL), l_inst_hist_rec_tab.old_supplier_warranty_exp_date(i)),
10593                 decode( l_inst_hist_rec_tab.new_supplier_warranty_exp_date(i) ,FND_API.G_MISS_DATE, TO_DATE(NULL), l_inst_hist_rec_tab.new_supplier_warranty_exp_date(i)),
10594                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE16(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE16(i)),
10595                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE16(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE16(i)),
10596                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE17(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE17(i)),
10597                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE17(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE17(i)),
10598                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE18(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE18(i)),
10599                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE18(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE18(i)),
10600                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE19(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE19(i)),
10601                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE19(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE19(i)),
10602                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE20(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE20(i)),
10603                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE20(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE20(i)),
10604                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE21(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE21(i)),
10605                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE21(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE21(i)),
10606                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE22(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE22(i)),
10607                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE22(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE22(i)),
10608                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE23(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE23(i)),
10609                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE23(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE23(i)),
10610                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE24(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE24(i)),
10611                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE24(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE24(i)),
10612                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE25(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE25(i)),
10613                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE25(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE25(i)),
10614                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE26(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE26(i)),
10615                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE26(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE26(i)),
10616                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE27(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE27(i)),
10617                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE27(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE27(i)),
10618                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE28(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE28(i)),
10619                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE28(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE28(i)),
10620                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE29(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE29(i)),
10621                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE29(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE29(i)),
10622                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE30(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE30(i)),
10623                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE30(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE30(i)),
10624                 --End of eam integration changes--
10625                 --Addition of columns for FA Integration
10626                 decode( l_inst_hist_rec_tab.OLD_PAYABLES_UNIT_PRICE(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_PAYABLES_UNIT_PRICE(i)),
10627                 decode( l_inst_hist_rec_tab.NEW_PAYABLES_UNIT_PRICE(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_PAYABLES_UNIT_PRICE(i)),
10628                 decode( l_inst_hist_rec_tab.OLD_PAYABLES_CURRENCY_CODE(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_PAYABLES_CURRENCY_CODE(i)),
10629                 decode( l_inst_hist_rec_tab.NEW_PAYABLES_CURRENCY_CODE(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_PAYABLES_CURRENCY_CODE(i)),
10630                 decode( l_inst_hist_rec_tab.OLD_PURCHASE_UNIT_PRICE(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_PURCHASE_UNIT_PRICE(i)),
10631                 decode( l_inst_hist_rec_tab.NEW_PURCHASE_UNIT_PRICE(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_PURCHASE_UNIT_PRICE(i)),
10632                 decode( l_inst_hist_rec_tab.OLD_PURCHASE_CURRENCY_CODE(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_PURCHASE_CURRENCY_CODE(i)),
10633                 decode( l_inst_hist_rec_tab.NEW_PURCHASE_CURRENCY_CODE(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_PURCHASE_CURRENCY_CODE(i)),
10634                 decode( l_inst_hist_rec_tab.OLD_SALES_UNIT_PRICE(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_SALES_UNIT_PRICE(i)),
10635                 decode( l_inst_hist_rec_tab.NEW_SALES_UNIT_PRICE(i) ,FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_SALES_UNIT_PRICE(i)),
10636                 decode( l_inst_hist_rec_tab.OLD_SALES_CURRENCY_CODE(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_SALES_CURRENCY_CODE(i)),
10637                 decode( l_inst_hist_rec_tab.NEW_SALES_CURRENCY_CODE(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_SALES_CURRENCY_CODE(i)),
10638                 decode( l_inst_hist_rec_tab.OLD_OPERATIONAL_STATUS_CODE(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_OPERATIONAL_STATUS_CODE(i)),
10639                 decode( l_inst_hist_rec_tab.NEW_OPERATIONAL_STATUS_CODE(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_OPERATIONAL_STATUS_CODE(i))
10640                 --End addition of columns for FA Integration
10641         );
10642 --End of:Added for Bug:5615169
10643 END IF; -- Bug#6203160
10644 END IF; -- check for l_rel_tbl count
10645   -- End of modifications for Bug#2887590
10646 
10647         IF FND_API.To_Boolean( p_commit )
10648         THEN
10649                 COMMIT WORK;
10650         END IF;
10651 
10652     -- Standard call to get message count and if count is  get message info.
10653     FND_MSG_PUB.Count_And_Get
10654             (p_count      =>       x_msg_count ,
10655              p_data       =>       x_msg_data
10656             );
10657 
10658 EXCEPTION
10659 
10660     WHEN FND_API.G_EXC_ERROR THEN
10661             IF FND_API.To_Boolean( p_commit ) THEN
10662                ROLLBACK TO update_child_instance_pvt;
10663             END IF;
10664             x_return_status := FND_API.G_RET_STS_ERROR ;
10665             FND_MSG_PUB.Count_And_Get
10666                 (   p_count               =>      x_msg_count,
10667                     p_data                =>      x_msg_data
10668                 );
10669     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10670             IF FND_API.To_Boolean( p_commit ) THEN
10671                ROLLBACK TO update_child_instance_pvt;
10672             END IF;
10673             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
10674             FND_MSG_PUB.Count_And_Get
10675                 (   p_count               =>      x_msg_count,
10676                     p_data                =>      x_msg_data
10677                 );
10678     WHEN OTHERS THEN
10679             IF FND_API.To_Boolean( p_commit ) THEN
10680                ROLLBACK TO update_child_instance_pvt;
10681             END IF;
10682             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
10683 
10684             IF     FND_MSG_PUB.Check_Msg_Level
10685                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
10686             THEN
10687                     FND_MSG_PUB.Add_Exc_Msg
10688                     (      G_PKG_NAME            ,
10689                           l_api_name
10690                     );
10691             END IF;
10692             FND_MSG_PUB.Count_And_Get
10693                 (   p_count               =>      x_msg_count,
10694                     p_data                =>      x_msg_data
10695                 );
10696 
10697 END update_child_instance_location;
10698 
10699 /*---------------------------------------------------*/
10700 /* procedure name: call_contracts                    */
10701 /* description   : call_contracts                    */
10702 /*                                                   */
10703 /*---------------------------------------------------*/
10704 
10705 PROCEDURE  Call_to_Contracts
10706 (  p_transaction_type         IN   VARCHAR2
10707   ,p_instance_id              IN   NUMBER
10708   ,p_new_instance_id          IN   NUMBER
10709   ,p_vld_org_id               IN   NUMBER
10710   ,p_quantity                 IN   NUMBER
10711   ,p_party_account_id1        IN   NUMBER
10712   ,p_party_account_id2        IN   NUMBER
10713   ,p_transaction_date         IN   DATE
10714   ,p_source_transaction_date  IN   DATE     -- Added by jpwilson
10715   ,p_transaction_id           IN   NUMBER   -- Added by sguthiva for TRF(HTML)
10716   ,p_grp_call_contracts       IN   VARCHAR2  -- Will be TRUE only from Group API
10717   ,p_txn_type_id              IN   NUMBER
10718   ,p_system_id                IN   NUMBER
10719   ,p_order_line_id            IN   NUMBER
10720   ,p_call_from_bom_expl       IN   VARCHAR2
10721   ,p_oks_txn_inst_tbl         IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl
10722   ,x_return_status            OUT  NOCOPY VARCHAR2
10723   ,x_msg_count                OUT  NOCOPY NUMBER
10724   ,x_msg_data                 OUT  NOCOPY VARCHAR2
10725   )IS
10726 
10727    CURSOR instance_csr (p_ins_id IN NUMBER) IS
10728     SELECT  *
10729     FROM    csi_item_instances
10730     WHERE   instance_id = p_ins_id;
10731 
10732      --Start of: Added for bug 5615162
10733      CURSOR instance_txn_chk_csr(p_ins_id IN NUMBER,p_txn_id in NUMBER, p_src_txn_date in DATE)  IS
10734          SELECT 'X' FROM CSI_TRANSACTIONS CST,
10735          (
10736          SELECT CIIH.TRANSACTION_ID TRANSACTION_ID, CIIH.INSTANCE_ID INSTANCE_ID
10737          FROM CSI_ITEM_INSTANCES_H CIIH
10738          WHERE INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10739          UNION ALL
10740 
10741          SELECT CIVH.TRANSACTION_ID TRANSACTION_ID, CIV.INSTANCE_ID INSTANCE_ID
10742          FROM CSI_IEA_VALUES_H CIVH, CSI_IEA_VALUES CIV
10743          WHERE CIV.ATTRIBUTE_VALUE_ID = CIVH.ATTRIBUTE_VALUE_ID
10744          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10745          UNION ALL
10746 
10747          SELECT CIRH.TRANSACTION_ID TRANSACTION_ID, CIR.SUBJECT_ID INSTANCE_ID
10748          FROM CSI_II_RELATIONSHIPS_H CIRH, CSI_II_RELATIONSHIPS CIR
10749          WHERE CIRH.RELATIONSHIP_ID = CIR.RELATIONSHIP_ID
10750          AND subject_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10751          UNION ALL
10752 
10753          SELECT CIRH.TRANSACTION_ID TRANSACTION_ID, CIR.OBJECT_ID INSTANCE_ID
10754          FROM CSI_II_RELATIONSHIPS_H CIRH, CSI_II_RELATIONSHIPS CIR
10755          WHERE CIRH.RELATIONSHIP_ID = CIR.RELATIONSHIP_ID
10756          AND object_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10757          UNION ALL
10758 
10759          SELECT CIPH.TRANSACTION_ID TRANSACTION_ID, CIP.INSTANCE_ID INSTANCE_ID
10760          FROM CSI_I_PARTIES_H CIPH, CSI_I_PARTIES CIP
10761          WHERE CIPH.INSTANCE_PARTY_ID = CIP.INSTANCE_PARTY_ID
10762          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10763          UNION ALL
10764 
10765          SELECT CIAAH.TRANSACTION_ID TRANSACTION_ID, CIAA.INSTANCE_ID INSTANCE_ID
10766          FROM CSI_I_ASSETS_H CIAAH, CSI_I_ASSETS CIAA
10767          WHERE CIAAH.INSTANCE_ASSET_ID = CIAA.INSTANCE_ASSET_ID
10768          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10769          UNION ALL
10770 
10771          SELECT CIAH.TRANSACTION_ID TRANSACTION_ID, CIP.INSTANCE_ID INSTANCE_ID
10772          FROM CSI_IP_ACCOUNTS_H CIAH, CSI_IP_ACCOUNTS CIA, CSI_I_PARTIES CIP
10773          WHERE CIAH.IP_ACCOUNT_ID = CIA.IP_ACCOUNT_ID
10774          AND CIA.INSTANCE_PARTY_ID = CIP.INSTANCE_PARTY_ID
10775          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10776          UNION ALL
10777 
10778          SELECT CIOAH.TRANSACTION_ID TRANSACTION_ID, CIOA.INSTANCE_ID INSTANCE_ID
10779          FROM CSI_I_ORG_ASSIGNMENTS_H CIOAH, CSI_I_ORG_ASSIGNMENTS CIOA
10780          WHERE CIOAH.INSTANCE_OU_ID = CIOA.INSTANCE_OU_ID
10781          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10782          UNION ALL
10783 
10784          SELECT CIVLH.TRANSACTION_ID TRANSACTION_ID, CIVL.INSTANCE_ID INSTANCE_ID
10785          FROM CSI_I_VERSION_LABELS_H CIVLH, CSI_I_VERSION_LABELS CIVL
10786          WHERE CIVLH.VERSION_LABEL_ID = CIVL.VERSION_LABEL_ID
10787          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10788          UNION ALL
10789 
10790          SELECT CIPAH.TRANSACTION_ID TRANSACTION_ID, CIPA.INSTANCE_ID INSTANCE_ID
10791          FROM CSI_I_PRICING_ATTRIBS_H CIPAH, CSI_I_PRICING_ATTRIBS CIPA
10792          WHERE INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10793          AND CIPAH.PRICING_ATTRIBUTE_ID = CIPA.PRICING_ATTRIBUTE_ID
10794          ) CSA
10795 	 WHERE CSA.TRANSACTION_ID=CST.TRANSACTION_ID
10796 	 AND CST.TRANSACTION_ID <>p_txn_id
10797 	 AND CST.SOURCE_TRANSACTION_DATE>p_src_txn_date
10798 	 AND ROWNUM=1;
10799       --End of: Added for bug 5615162
10800 
10801     l_instance_csr             instance_csr%ROWTYPE;
10802     l_new_ins_csr              instance_csr%ROWTYPE;
10803     l_new_instance_csr         instance_csr%ROWTYPE;
10804     l_debug_level              NUMBER;
10805     l_contracts_status         VARCHAR2(3);
10806     l_internal_party_id        NUMBER;
10807     l_msg_count                NUMBER;
10808     l_msg_index                NUMBER;
10809     l_msg_dummy                NUMBER;
10810     l_transaction_date         DATE;
10811     l_call_contracts           BOOLEAN := FALSE;
10812     l_temp                     VARCHAR2(1);
10813     l_chg_owner                VARCHAR2(1);
10814     l_sql                      VARCHAR2(2000);     -- Added for ER 3378294
10815     l_found                    VARCHAR2(1) := 'N'; -- Added for ER 3378294
10816     l_rma_line_id              NUMBER;
10817     l_oks_txn_count            NUMBER;
10818     l_exists                   VARCHAR2(1);
10819     l_order_org_id             NUMBER;
10820     l_order_shipped_date       DATE;
10821     l_txn_date                 DATE;
10822     l_txn_exists               VARCHAR2(1) :=null; --5615162
10823 
10824 BEGIN
10825 
10826    --  Initialize API return status to success
10827    x_return_status := FND_API.G_RET_STS_SUCCESS;
10828    --
10829    l_contracts_status := FND_PROFILE.VALUE('CSI_CONTRACTS_ENABLED');
10830    --
10831    IF UPPER(l_contracts_status) <> 'Y'  THEN
10832       RETURN;
10833    END IF;
10834    --
10835    csi_gen_utility_pvt.put_line('Begin Call_to_Contracts : '||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
10836    csi_gen_utility_pvt.put_line('Contracts Transaction Type: '||p_transaction_type);
10837    IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
10838       csi_gen_utility_pvt.populate_install_param_rec;
10839    END IF;
10840    --
10841    l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
10842    --
10843    IF l_internal_party_id IS NULL THEN
10844       FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
10845       FND_MSG_PUB.ADD;
10846       RAISE FND_API.G_EXC_ERROR;
10847    END IF;
10848    --
10849    OPEN instance_csr (p_instance_id);
10850    FETCH instance_csr INTO l_instance_csr;
10851    CLOSE instance_csr;
10852    --
10853    csi_gen_utility_pvt.put_line('p_transaction_date: '||p_transaction_date);
10854    csi_gen_utility_pvt.put_line('p_source_transaction_date: '||p_source_transaction_date);
10855    --
10856    IF p_transaction_date IS NULL OR p_transaction_date = fnd_api.g_miss_date THEN
10857      l_txn_date:= SYSDATE;
10858    ELSE
10859      l_txn_date:= p_transaction_date;
10860    END IF;
10861    --
10862    l_exists := 'N';
10863    --
10864    IF ( l_instance_csr.owner_party_id IS NOT NULL
10865         AND l_instance_csr.owner_party_id <> l_internal_party_id
10866         AND l_instance_csr.owner_party_source_table = 'HZ_PARTIES')
10867         OR ( l_instance_csr.owner_party_id IS NOT NULL
10868         AND l_instance_csr.owner_party_id = l_internal_party_id
10869         AND p_transaction_type in ('TRM','RET')
10870         AND l_instance_csr.owner_party_source_table = 'HZ_PARTIES')
10871    THEN
10872       IF p_source_transaction_date IS NULL OR p_source_transaction_date = fnd_api.g_miss_date THEN
10873          l_transaction_date:= SYSDATE;
10874       ELSE
10875 	 l_transaction_date:= p_source_transaction_date;
10876       END IF;
10877       --
10878       csi_gen_utility_pvt.put_line('l_transaction_date: '||l_transaction_date);
10879 
10880       IF p_oks_txn_inst_tbl.count > 0 THEN
10881       csi_gen_utility_pvt.put_line('p_oks_txn_inst_tbl has records ...');
10882 	 FOR J in p_oks_txn_inst_tbl.FIRST .. p_oks_txn_inst_tbl.LAST LOOP
10883 	    IF p_oks_txn_inst_tbl.EXISTS(J) THEN
10884 	       IF p_oks_txn_inst_tbl(J).old_customer_product_id = p_instance_id THEN
10885 		  IF p_transaction_type = 'TRM' THEN
10886 		  -- Modified for bug 5442038
10887 		     IF l_instance_csr.active_end_date IS NULL OR
10888 		        l_instance_csr.active_end_date = fnd_api.g_miss_date
10889 		     THEN
10890 		        p_oks_txn_inst_tbl(J).termination_date := l_transaction_date;
10891 		     ELSE
10892 		        csi_gen_utility_pvt.put_line('1. Assigning user entered end date');
10893 		        p_oks_txn_inst_tbl(J).termination_date := l_instance_csr.active_end_date;
10894 		     END IF;
10895 		     p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
10896                      p_oks_txn_inst_tbl(J).TRM := 'Y';
10897                   ELSIF p_transaction_type = 'RET' THEN
10898                      p_oks_txn_inst_tbl(J).termination_date := l_transaction_date;
10899 		     p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
10900                      p_oks_txn_inst_tbl(J).RET := 'Y';
10901 		  ELSIF p_transaction_type = 'TRF' THEN
10902 		     IF p_system_id IS NOT NULL AND
10903 			p_system_id <> FND_API.G_MISS_NUM THEN
10904 			p_oks_txn_inst_tbl(J).system_id := p_system_id;
10905 		     ELSE
10906 			p_oks_txn_inst_tbl(J).system_id := NULL;
10907 		     END IF;
10908 		     p_oks_txn_inst_tbl(J).new_customer_product_id :=
10909 						  p_oks_txn_inst_tbl(J).old_customer_product_id;
10910 		     p_oks_txn_inst_tbl(J).new_inventory_item_id :=
10911 						  p_oks_txn_inst_tbl(J).old_inventory_item_id;
10912 		     p_oks_txn_inst_tbl(J).new_unit_of_measure :=
10913 						  p_oks_txn_inst_tbl(J).old_unit_of_measure;
10914 		     p_oks_txn_inst_tbl(J).new_quantity :=
10915 						  p_oks_txn_inst_tbl(J).old_quantity;
10916 		     p_oks_txn_inst_tbl(J).new_customer_acct_id := p_party_account_id2;
10917 		     p_oks_txn_inst_tbl(J).old_customer_acct_id := p_party_account_id1;
10918 		     --
10919 		     -- The following code has been added by sguthiva in order to incorporate the
10920 		     -- changes made by the HTML UI .
10921 		     -- When HTML UI passes a transaction date which should be less than sysdate,
10922 		     -- then before calling contracts we need to make sure that there are no transactions
10923 		     -- between passed date and sysdate.
10924 		     IF (( p_source_transaction_date IS NOT NULL) AND (p_source_transaction_date < SYSDATE)) AND
10925 			p_source_transaction_date <> fnd_api.g_miss_date THEN
10926 			l_temp:=NULL;
10927 			-- srramakr changed to source_transaction_date instead of transaction_date (3804960)
10928 			BEGIN
10929 			 /*Commenting for bug 5615162 added more code below
10930 			   SELECT 'x'
10931 			   INTO   l_temp
10932 			   FROM   csi_inst_transactions_v
10933 			   WHERE  instance_id=p_instance_id
10934 			   AND    source_transaction_date > p_source_transaction_date
10935 			   AND    transaction_id <> p_transaction_id
10936 			   AND    ROWNUM=1;
10937 			   IF l_temp IS NOT NULL AND p_txn_type_id <> 53  --added for bug  5752271 */
10938 
10939 			--Start of:Added for bug 5615162
10940 			l_txn_exists :=null;
10941 			OPEN instance_txn_chk_csr (p_instance_id,p_transaction_id,p_transaction_date);
10942 			FETCH instance_txn_chk_csr INTO l_txn_exists;
10943 			CLOSE instance_txn_chk_csr;
10944 
10945 			IF l_txn_exists IS NOT NULL AND p_txn_type_id <> 53 --End of:Added for bug 5615162
10946 			   THEN
10947 			      x_return_status := fnd_api.g_ret_sts_error ;
10948 			      fnd_message.set_name('CSI', 'CSI_HAS_TXNS_GT_SYS');
10949 			      fnd_message.set_token('INSTANCE_ID',p_instance_id );
10950 			      fnd_message.set_token('SOURCE_TXN_DATE',to_char(p_source_transaction_date, 'DD-MON-YYYY HH24:MI:SS'));
10951 			      fnd_msg_pub.add;
10952 			     RAISE fnd_api.g_exc_error;
10953 			   END IF;
10954 			EXCEPTION
10955 			   WHEN fnd_api.g_exc_error THEN
10956 			      RAISE fnd_api.g_exc_error;
10957 			   WHEN OTHERS THEN
10958 			      NULL;
10959 			END;
10960 		     ELSIF (( p_source_transaction_date IS NOT NULL) AND (p_source_transaction_date > SYSDATE)) AND
10961 			     p_source_transaction_date <> fnd_api.g_miss_date THEN
10962 			x_return_status := fnd_api.g_ret_sts_error ;
10963 			fnd_message.set_name('CSI', 'CSI_PASS_TXNS_GT_SYS');
10964 			fnd_message.set_token('SOURCE_TXN_DATE',to_char(p_source_transaction_date, 'DD-MON-YYYY HH24:MI:SS'));
10965 			fnd_msg_pub.add;
10966 			RAISE fnd_api.g_exc_error;
10967 		     END IF;
10968 		     p_oks_txn_inst_tbl(J).transfer_date := l_transaction_date;
10969 		     p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
10970                      p_oks_txn_inst_tbl(J).TRF := 'Y';
10971 		  ELSIF p_transaction_type = 'UPD' THEN
10972 		     p_oks_txn_inst_tbl(J).new_quantity :=
10973 						  p_oks_txn_inst_tbl(J).old_quantity;
10974 		     p_oks_txn_inst_tbl(J).old_quantity := p_quantity; -- Passed old Qty
10975 		     p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
10976                      p_oks_txn_inst_tbl(J).UPD := 'Y';
10977 		     --
10978 		     IF p_txn_type_id is NOT NULL AND
10979 			p_txn_type_id <> FND_API.G_MISS_NUM AND
10980 			p_txn_type_id in (53,54) THEN
10981 			p_oks_txn_inst_tbl(J).return_reason_code := 'RETURN'; -- RMA
10982 		     ELSE
10983 			p_oks_txn_inst_tbl(J).return_reason_code := 'REGULAR';
10984 		     END IF;
10985 		  ELSIF p_transaction_type = 'SPL' THEN
10986 		     OPEN instance_csr (p_new_instance_id);
10987 		     FETCH instance_csr INTO l_new_ins_csr;
10988 		     CLOSE instance_csr;
10989 		     --
10990 		     p_oks_txn_inst_tbl(J).new_customer_product_id := p_new_instance_id;
10991 		     p_oks_txn_inst_tbl(J).new_customer_acct_id :=
10992 						  p_oks_txn_inst_tbl(J).old_customer_acct_id;
10993 		     p_oks_txn_inst_tbl(J).new_inventory_item_id :=
10994 						  p_oks_txn_inst_tbl(J).old_inventory_item_id;
10995 		     p_oks_txn_inst_tbl(J).new_unit_of_measure :=
10996 						  p_oks_txn_inst_tbl(J).old_unit_of_measure;
10997 		     p_oks_txn_inst_tbl(J).new_quantity := l_new_ins_csr.quantity;
10998 		     p_oks_txn_inst_tbl(J).old_quantity := p_quantity; -- Passed old Qty
10999 		     p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11000                      p_oks_txn_inst_tbl(J).SPL := 'Y';
11001 		  ELSIF p_transaction_type = 'RPL' THEN
11002 		     OPEN instance_csr (p_new_instance_id);
11003 		     FETCH instance_csr INTO l_new_instance_csr;
11004 		     CLOSE instance_csr;
11005 		     --
11006 		     IF l_new_instance_csr.owner_party_id IS NOT NULL AND
11007 			l_new_instance_csr.owner_party_id <> l_internal_party_id AND
11008 			l_new_instance_csr.owner_party_source_table = 'HZ_PARTIES' THEN
11009 			l_call_contracts  := TRUE;
11010 			p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_product_id := p_new_instance_id;
11011 			p_oks_txn_inst_tbl(l_oks_txn_count).new_quantity  := l_new_instance_csr.quantity;
11012 			p_oks_txn_inst_tbl(l_oks_txn_count).new_unit_of_measure :=
11013 						    l_new_instance_csr.unit_of_measure;
11014 			p_oks_txn_inst_tbl(l_oks_txn_count).new_inventory_item_id :=
11015 						    l_new_instance_csr.inventory_item_id;
11016 			p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11017                         p_oks_txn_inst_tbl(J).RPL := 'Y';
11018 		     END IF;
11019                   ELSIF p_transaction_type = 'IDC' THEN
11020                      p_oks_txn_inst_tbl(J).IDC := 'Y';
11021                      p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11022                   ELSIF p_transaction_type = 'NEW' THEN
11023                      p_oks_txn_inst_tbl(J).NEW := 'Y';
11024                      p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11025 		  END IF;
11026 		  l_exists := 'Y';
11027 		  exit;
11028 	       END IF; -- Instance ID matches
11029 	    END IF; -- row exists check
11030 	 END LOOP;
11031       END IF;
11032       --
11033       IF l_exists = 'N' THEN
11034          csi_gen_utility_pvt.put_line('l_exists is N ...');
11035          l_oks_txn_count := p_oks_txn_inst_tbl.count + 1;
11036          --
11037          p_oks_txn_inst_tbl(l_oks_txn_count).installation_date := l_instance_csr.install_date;
11038          --
11039          IF l_instance_csr.location_type_code = 'IN_TRANSIT' THEN
11040             p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := l_instance_csr.in_transit_order_line_id;
11041          ELSE
11042             p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := l_instance_csr.last_oe_order_line_id;
11043          END IF;
11044          --
11045          l_order_shipped_date := NULL;
11046          l_order_org_id := NULL;
11047          --
11048 	 IF p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id IS NOT NULL THEN
11049 	    Begin
11050 	       select NVL(actual_shipment_date,schedule_ship_date)
11051 		      ,org_id
11052 	       into   l_order_shipped_date,l_order_org_id
11053 	       from   OE_ORDER_LINES_ALL
11054 	       where  line_id = p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id;
11055             Exception  -- Added exception handling for bug 6870487, in case the order line no longer exist in oe_order_lines_all table
11056               When no_data_found Then
11057                 p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := NULL;
11058 	    End;
11059 	 END IF;
11060          --
11061          IF p_oks_txn_inst_tbl(l_oks_txn_count).installation_date IS NULL THEN
11062             p_oks_txn_inst_tbl(l_oks_txn_count).shipped_date := NVL(l_order_shipped_date,l_instance_csr.active_start_date);
11063          ELSE
11064             p_oks_txn_inst_tbl(l_oks_txn_count).shipped_date := NULL;
11065          END IF;
11066          --
11067          p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_product_id := p_instance_id;
11068          p_oks_txn_inst_tbl(l_oks_txn_count).old_quantity          := l_instance_csr.quantity;
11069          p_oks_txn_inst_tbl(l_oks_txn_count).old_unit_of_measure   := l_instance_csr.unit_of_measure;
11070          p_oks_txn_inst_tbl(l_oks_txn_count).old_inventory_item_id := l_instance_csr.inventory_item_id;
11071          p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_acct_id  := l_instance_csr.owner_party_account_id;
11072          --
11073          IF p_transaction_type ='TRM' THEN
11074            csi_gen_utility_pvt.put_line('TRM Transaction Type');
11075          -- p_party_account_id1 will be passed only for TRF
11076          --   p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_acct_id  := p_party_account_id1;
11077             p_oks_txn_inst_tbl(l_oks_txn_count).TRM := 'Y';
11078             -- Modified for bug 5442038
11079 		     IF l_instance_csr.active_end_date IS NULL OR
11080 		        l_instance_csr.active_end_date = fnd_api.g_miss_date
11081 		     THEN
11082 		        p_oks_txn_inst_tbl(l_oks_txn_count).termination_date := l_transaction_date;
11083 		     ELSE
11084                 csi_gen_utility_pvt.put_line('2. Assigning user entered end date');
11085 		        p_oks_txn_inst_tbl(l_oks_txn_count).termination_date := l_instance_csr.active_end_date;
11086 		     END IF;
11087 
11088             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11089          END IF;
11090          --
11091          IF p_transaction_type ='RET' THEN
11092            csi_gen_utility_pvt.put_line('RET Transaction Type');
11093             p_oks_txn_inst_tbl(l_oks_txn_count).RET := 'Y';
11094             p_oks_txn_inst_tbl(l_oks_txn_count).termination_date := l_transaction_date;
11095             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11096          END IF;
11097          --
11098          IF p_transaction_type ='IDC' THEN
11099             csi_gen_utility_pvt.put_line('IDC Transaction Type');
11100             p_oks_txn_inst_tbl(l_oks_txn_count).IDC := 'Y';
11101             p_oks_txn_inst_tbl(l_oks_txn_count).termination_date := l_transaction_date;
11102             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11103          END IF;
11104          --
11105          IF p_transaction_type = 'UPD' THEN
11106             csi_gen_utility_pvt.put_line('UPD Transaction Type');
11107             p_oks_txn_inst_tbl(l_oks_txn_count).new_quantity :=
11108                                           p_oks_txn_inst_tbl(l_oks_txn_count).old_quantity;
11109             p_oks_txn_inst_tbl(l_oks_txn_count).old_quantity := p_quantity; -- Passed old Qty
11110             p_oks_txn_inst_tbl(l_oks_txn_count).UPD := 'Y';
11111             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11112             --
11113             IF p_txn_type_id is NOT NULL AND
11114                p_txn_type_id <> FND_API.G_MISS_NUM AND
11115                p_txn_type_id in (53,54) THEN
11116                p_oks_txn_inst_tbl(l_oks_txn_count).return_reason_code := 'RETURN'; -- RMA
11117             ELSE
11118                p_oks_txn_inst_tbl(l_oks_txn_count).return_reason_code := 'REGULAR';
11119             END IF;
11120          ELSE
11121             p_oks_txn_inst_tbl(l_oks_txn_count).return_reason_code := NULL;
11122          END IF;
11123          --
11124          IF p_transaction_type = 'NEW' THEN
11125             csi_gen_utility_pvt.put_line('NEW Transaction Type');
11126             IF p_call_from_bom_expl = FND_API.G_TRUE THEN
11127                p_oks_txn_inst_tbl(l_oks_txn_count).bom_explosion_flag := 'Y';
11128             ELSE
11129                p_oks_txn_inst_tbl(l_oks_txn_count).bom_explosion_flag := 'N';
11130             END IF;
11131             p_oks_txn_inst_tbl(l_oks_txn_count).NEW := 'Y';
11132             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11133          END IF;
11134          --
11135          IF p_vld_org_id IS NULL OR
11136             p_vld_org_id = FND_API.G_MISS_NUM
11137          THEN
11138             p_oks_txn_inst_tbl(l_oks_txn_count).organization_id := l_instance_csr.last_vld_organization_id; -- Changed from Master Org
11139          ELSE
11140             p_oks_txn_inst_tbl(l_oks_txn_count).organization_id := p_vld_org_id ;
11141          END IF;
11142          -- Added by sk for bug 2190051
11143          IF l_order_org_id IS NOT NULL THEN
11144             p_oks_txn_inst_tbl(l_oks_txn_count).org_id := l_order_org_id;
11145          ELSE
11146             SELECT operating_unit
11147             INTO   p_oks_txn_inst_tbl(l_oks_txn_count).org_id
11148             FROM   org_organization_definitions
11149             WHERE  organization_id = p_oks_txn_inst_tbl(l_oks_txn_count).organization_id ;
11150          END IF;
11151          -- Added by sk for bug 2190051
11152          --
11153          -- Added for ER 3381250
11154          l_rma_line_id := l_instance_csr.last_oe_rma_line_id;
11155          --
11156 	 IF l_rma_line_id IS NOT NULL THEN
11157 	    BEGIN
11158 	       csi_gen_utility_pvt.put_line('Calling package oe_service_credit_grp.get_service_credit_eligible');
11159 	       csi_gen_utility_pvt.put_line('to retreive service_credit_eligible_code for rma line id :'||l_rma_line_id);
11160          --l_sql := 'BEGIN oe_service_credit_grp.get_service_credit_eligible( :l_line_id, :l_service_code); END;';
11161            oe_service_credit_grp.get_service_credit_eligible
11162                 ( p_line_id                 => l_rma_line_id
11163                  ,p_service_credit_eligible => p_oks_txn_inst_tbl(l_oks_txn_count).raise_credit
11164                  );
11165          --   EXECUTE IMMEDIATE l_sql USING IN l_rma_line_id, OUT p_oks_txn_inst_tbl(l_oks_txn_count).raise_credit;
11166 	       csi_gen_utility_pvt.put_line( 'Value of raise_credit is : '||p_oks_txn_inst_tbl(l_oks_txn_count).raise_credit);
11167 	    EXCEPTION
11168 	       WHEN OTHERS THEN
11169 		  csi_gen_utility_pvt.put_line('Into when others exception. ');
11170 		  csi_gen_utility_pvt.put_line( 'Nothing is assigned to raise_credit. ');
11171 	    END;
11172 	 ELSE
11173 	    csi_gen_utility_pvt.put_line('RMA line id is null');
11174 	 END IF;
11175 	 -- End addition for ER 3381250
11176 	 --
11177 	 IF p_transaction_type= 'SPL' THEN
11178 	    csi_gen_utility_pvt.put_line('SPL Transaction Type');
11179 	    OPEN instance_csr (p_new_instance_id);
11180 	    FETCH instance_csr INTO l_new_ins_csr;
11181 	    CLOSE instance_csr;
11182 	    --
11183 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_product_id := p_new_instance_id;
11184 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_acct_id :=
11185 					 p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_acct_id;
11186 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_inventory_item_id :=
11187 					 p_oks_txn_inst_tbl(l_oks_txn_count).old_inventory_item_id;
11188 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_unit_of_measure :=
11189 					 p_oks_txn_inst_tbl(l_oks_txn_count).old_unit_of_measure;
11190 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_quantity := l_new_ins_csr.quantity;
11191 	    p_oks_txn_inst_tbl(l_oks_txn_count).old_quantity := p_quantity; -- Passed old Qty
11192             p_oks_txn_inst_tbl(l_oks_txn_count).SPL := 'Y';
11193             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11194 	 END IF;
11195 	 --
11196 	 IF p_transaction_type = 'TRF' THEN
11197 	   csi_gen_utility_pvt.put_line('TRF Transaction Type');
11198             -- Need to notify contracts with the system_id during 'TRF'.
11199 	    IF p_system_id IS NOT NULL AND
11200 	       p_system_id <> FND_API.G_MISS_NUM THEN
11201 	       p_oks_txn_inst_tbl(l_oks_txn_count).system_id := p_system_id;
11202 	    ELSE
11203 	       p_oks_txn_inst_tbl(l_oks_txn_count).system_id := NULL;
11204 	    END IF;
11205             --
11206 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_product_id :=
11207 				  p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_product_id;
11208 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_inventory_item_id :=
11209 				  p_oks_txn_inst_tbl(l_oks_txn_count).old_inventory_item_id;
11210 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_unit_of_measure :=
11211 				  p_oks_txn_inst_tbl(l_oks_txn_count).old_unit_of_measure;
11212 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_quantity :=
11213 				  p_oks_txn_inst_tbl(l_oks_txn_count).old_quantity;
11214 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_acct_id := p_party_account_id2;
11215 	    p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_acct_id := p_party_account_id1;
11216 	    --
11217 	    -- The following code has been added by sguthiva in order to incorporate the
11218 	    -- changes made by the HTML UI .
11219 	    -- When HTML UI passes a transaction date which should be less than sysdate,
11220 	    -- then before calling contracts we need to make sure that there are no transactions
11221 	    -- between passed date and sysdate.
11222 	    IF (( p_source_transaction_date IS NOT NULL) AND (p_source_transaction_date < SYSDATE)) AND
11223 	          p_source_transaction_date <> fnd_api.g_miss_date THEN
11224 	       l_temp:=NULL;
11225 	       -- srramakr changed to source_transaction_date instead of transaction_date (3804960)
11226 	       BEGIN
11227 		  SELECT 'x'
11228 		  INTO   l_temp
11229 		  FROM   csi_inst_transactions_v
11230 		  WHERE  instance_id=p_instance_id
11231 		  AND    source_transaction_date > p_source_transaction_date
11232 		  AND    transaction_id <> p_transaction_id
11233 		  AND    ROWNUM=1;
11234 		  IF l_temp IS NOT NULL THEN
11235 		     x_return_status := fnd_api.g_ret_sts_error ;
11236 		     fnd_message.set_name('CSI', 'CSI_HAS_TXNS_GT_SYS');
11237 		     fnd_message.set_token('INSTANCE_ID',p_instance_id );
11238 		     fnd_message.set_token('SOURCE_TXN_DATE',to_char(p_source_transaction_date, 'DD-MON-YYYY HH24:MI:SS'));
11239 		     fnd_msg_pub.add;
11240 		     RAISE fnd_api.g_exc_error;
11241 		  END IF;
11242 	       EXCEPTION
11243 		  WHEN fnd_api.g_exc_error THEN
11244 		     RAISE fnd_api.g_exc_error;
11245 		  WHEN OTHERS THEN
11246 		     NULL;
11247 	       END;
11248 	    ELSIF (( p_source_transaction_date IS NOT NULL) AND (p_source_transaction_date > SYSDATE)) AND
11249 		     p_source_transaction_date <> fnd_api.g_miss_date THEN
11250 	       x_return_status := fnd_api.g_ret_sts_error ;
11251 	       fnd_message.set_name('CSI', 'CSI_PASS_TXNS_GT_SYS');
11252 	       fnd_message.set_token('SOURCE_TXN_DATE',to_char(p_source_transaction_date, 'DD-MON-YYYY HH24:MI:SS'));
11253 	       fnd_msg_pub.add;
11254 	       RAISE fnd_api.g_exc_error;
11255 	    END IF;
11256             p_oks_txn_inst_tbl(l_oks_txn_count).transfer_date := l_transaction_date;
11257             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11258             p_oks_txn_inst_tbl(l_oks_txn_count).TRF := 'Y';
11259 	 -- End changes by sguthiva for HTML
11260          ELSE
11261             p_oks_txn_inst_tbl(l_oks_txn_count).system_id := NULL;
11262          END IF;
11263          --
11264          -- Start addition for 'RPL'
11265          IF p_transaction_type= 'RPL' THEN
11266             csi_gen_utility_pvt.put_line('RPL Transaction Type');
11267             OPEN instance_csr (p_new_instance_id);
11268             FETCH instance_csr INTO l_new_instance_csr;
11269             CLOSE instance_csr;
11270             --
11271             IF l_new_instance_csr.owner_party_id IS NOT NULL AND
11272                l_new_instance_csr.owner_party_id <> l_internal_party_id AND
11273                l_new_instance_csr.owner_party_source_table = 'HZ_PARTIES' THEN
11274                l_call_contracts  := TRUE;
11275                p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_product_id := p_new_instance_id;
11276                p_oks_txn_inst_tbl(l_oks_txn_count).new_quantity        := l_new_instance_csr.quantity;
11277                p_oks_txn_inst_tbl(l_oks_txn_count).new_unit_of_measure := l_new_instance_csr.unit_of_measure;
11278                p_oks_txn_inst_tbl(l_oks_txn_count).new_inventory_item_id := l_new_instance_csr.inventory_item_id;
11279                p_oks_txn_inst_tbl(l_oks_txn_count).RPL := 'Y';
11280                p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11281 
11282                --Added for bug 6617569--
11283        	       csi_gen_utility_pvt.put_line('Addition of order line id........');
11284                p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := l_new_instance_csr.last_oe_order_line_id;
11285        	       csi_gen_utility_pvt.put_line('New order line id........'||p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id);
11286        	       csi_gen_utility_pvt.put_line('New instance id........'||p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_product_id);
11287 
11288             END IF;
11289          END IF;
11290 	 IF p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id IS NULL THEN
11291 	    p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := okc_api.g_miss_num;
11292 	 END IF;
11293          -- Pass G_MISS order line ID while un-expiring an Instance if there is no change to the line_id.
11294 	 IF p_transaction_type= 'NEW' THEN
11295 	     csi_gen_utility_pvt.put_line('NEW Transaction Type');
11296 	     IF nvl(p_order_line_id,-99999) <> FND_API.G_MISS_NUM THEN
11297 	        p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := nvl(p_order_line_id,FND_API.G_MISS_NUM);
11298 	     END IF;
11299          END IF;
11300       END IF;
11301    END IF;
11302    --
11303    csi_gen_utility_pvt.put_line('End Call_to_Contracts : '||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
11304 EXCEPTION
11305    WHEN fnd_api.g_exc_error THEN
11306       RAISE fnd_api.g_exc_error;
11307    WHEN OTHERS THEN
11308       FND_MESSAGE.Set_Name('CSI', 'CSI_UNEXP_SQL_ERROR');
11309       FND_MESSAGE.Set_Token('API_NAME', 'Call_to_Contracts');
11310       FND_MESSAGE.Set_Token('SQL_ERROR', sqlerrm);
11311       FND_MSG_PUB.Add;
11312       RAISE fnd_api.g_exc_error;
11313 END Call_to_Contracts;
11314 
11315   PROCEDURE update_txn_status(
11316     px_txn_rec       IN OUT nocopy csi_datastructures_pub.transaction_rec,
11317     x_return_status     OUT nocopy varchar2)
11318   IS
11319     l_return_status    varchar2(1) := fnd_api.g_ret_sts_success;
11320     l_msg_count        number;
11321     l_msg_data         varchar2(2000);
11322   BEGIN
11323 
11324     x_return_status := fnd_api.g_ret_sts_success;
11325 
11326     SELECT object_version_number
11327     INTO   px_txn_rec.object_version_number
11328     FROM   csi_transactions
11329     WHERE  transaction_id = px_txn_rec.transaction_id;
11330 
11331     csi_transactions_pvt.update_transactions(
11332       p_api_version      => 1.0,
11333       p_init_msg_list    => fnd_api.g_true,
11334       p_commit           => fnd_api.g_false,
11335       p_validation_level => fnd_api.g_valid_level_full,
11336       p_transaction_rec  => px_txn_rec,
11337       x_return_status    => l_return_status,
11338       x_msg_count        => l_msg_count,
11339       x_msg_data         => l_msg_data);
11340 
11341     IF l_return_status <> fnd_api.g_ret_sts_success THEN
11342       RAISE fnd_api.g_exc_error;
11343     END IF;
11344 
11345   EXCEPTION
11346     WHEN fnd_api.g_exc_error THEN
11347       x_return_status := fnd_api.g_ret_sts_error;
11348   END update_txn_status;
11349 
11350 
11351 /*------------------------------------------------------*/
11352 /* Procedure name: update_item_instance                 */
11353 /* Description   : procedure used to update an Item     */
11354 /*                 Instance                             */
11355 /*------------------------------------------------------*/
11356 
11357 PROCEDURE Update_Item_Instance(
11358       p_api_version         IN      NUMBER
11359      ,p_commit              IN      VARCHAR2
11360      ,p_init_msg_list       IN      VARCHAR2
11361      ,p_validation_level    IN      NUMBER
11362      ,p_instance_rec        IN OUT  NOCOPY csi_datastructures_pub.instance_rec
11363      ,p_txn_rec             IN OUT  NOCOPY csi_datastructures_pub.transaction_rec
11364      ,x_instance_id_lst        OUT  NOCOPY csi_datastructures_pub.id_tbl
11365      ,x_return_status          OUT  NOCOPY VARCHAR2
11366      ,x_msg_count              OUT  NOCOPY NUMBER
11367      ,x_msg_data               OUT  NOCOPY VARCHAR2
11368      ,p_item_attribute_tbl  IN OUT  NOCOPY csi_item_instance_pvt.item_attribute_tbl
11369      ,p_location_tbl        IN OUT  NOCOPY csi_item_instance_pvt.location_tbl
11370      ,p_generic_id_tbl      IN OUT  NOCOPY csi_item_instance_pvt.generic_id_tbl
11371      ,p_lookup_tbl          IN OUT  NOCOPY csi_item_instance_pvt.lookup_tbl
11372      ,p_ins_count_rec       IN OUT  NOCOPY csi_item_instance_pvt.ins_count_rec
11373      ,p_called_from_rel     IN      VARCHAR2
11374      ,p_validation_mode     IN      VARCHAR2
11375      ,p_oks_txn_inst_tbl    IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl
11376      ,p_child_inst_tbl      IN OUT NOCOPY csi_item_instance_grp.child_inst_tbl
11377  )
11378 IS
11379     l_api_name               CONSTANT VARCHAR2(30)   := 'UPDATE_ITEM_INSTANCE';
11380     l_api_version            CONSTANT NUMBER         := 1.0;
11381     l_debug_level            NUMBER;
11382     l_instance_id            NUMBER;
11383     l_mod_curr_instance_rec  csi_datastructures_pub.instance_rec;
11384     l_party_tbl              csi_datastructures_pub.party_tbl;
11385     l_asset_tbl              csi_datastructures_pub.instance_asset_rec;
11386     l_dummy                  VARCHAR2(1);
11387     l_instance_rec           csi_datastructures_pub.instance_rec;
11388     l_get_instance_rec       csi_datastructures_pub.instance_rec;
11389     l_check_instance_rec     csi_datastructures_pub.instance_rec;
11390     l_version_label_rec      csi_datastructures_pub.version_label_rec;
11391     l_object_version_number  NUMBER;
11392     l_return_value           BOOLEAN;
11393     l_csi_item_instance_h_id NUMBER;
11394     l_full_dump_frequency    NUMBER;
11395     l_owner                  NUMBER;
11396     l_owner_count            NUMBER := 0;
11397     l_org_id                 NUMBER;
11398     l_inv_org_id             NUMBER;
11399     l_int_party_id           NUMBER;
11400     l_serial_control         NUMBER;
11401     l_lot_control            NUMBER;
11402     l_shelf_life_code        NUMBER;
11403     l_mod_value              NUMBER;
11404     l_dump_flag              VARCHAR2(1);
11405     l_msg_index              NUMBER;
11406     l_msg_count              NUMBER;
11407     l_msg_dummy              NUMBER;
11408     l_party_rec              csi_datastructures_pub.party_rec;
11409     l_party_owner_rec        csi_datastructures_pub.party_rec;
11410     l_location_type_code     VARCHAR2(20);
11411     l_location_id            NUMBER;
11412     l_inv_organization_id    NUMBER;
11413     l_inv_subinventory_name  VARCHAR2(10);
11414     l_inv_locator_id         NUMBER;
11415     l_pa_project_id          NUMBER;
11416     l_pa_project_task_id     NUMBER;
11417     l_in_tran_order_line_id  NUMBER;
11418     l_wip_job_id             NUMBER;
11419     l_po_order_line_id       NUMBER;
11420     l_acct_class_code        VARCHAR2(10);
11421     l_sys_date               DATE := SYSDATE;
11422     l_last_vld_organization_id NUMBER;
11423     l_trackable_flag         VARCHAR2(1);
11424     l_uom_code               VARCHAR2(3);
11425     l_rev_control            NUMBER;
11426     l_exists_flag            VARCHAR2(1);
11427     l_valid_flag             VARCHAR2(1);
11428     l_ctr_grp_id_template    NUMBER;
11429     l_ctr_grp_id_instance    NUMBER;
11430     l_ctr_id_template        csi_counter_template_pub.ctr_template_autoinst_tbl;
11431     l_ctr_id_instance        csi_counter_template_pub.counter_autoinstantiate_tbl;
11432     l_base_item_id           NUMBER;
11433     l_ctr_association_id     NUMBER;
11434     l_association_type       VARCHAR2(30) := 'PROD_ITEM';
11435 --    l_desc_flex              CS_COUNTERS_EXT_PVT.DFF_Rec_Type;
11436 -- Counter ref r12 changes
11437     l_desc_flex              CSI_CTR_DATASTRUCTURES_PUB.DFF_REC_TYPE;
11438     l_delete_status          VARCHAR2(1);
11439     l_exists                 VARCHAR2(1);
11440     l_instance_hist_rec      csi_datastructures_pub.instance_history_rec;
11441     l_prior_txn_id           NUMBER;
11442     l_oe_line_id             NUMBER;
11443     l_install_date           DATE;
11444     l_current_val            NUMBER;
11445     l_txn_status             varchar2(10) := 'COMPLETE';
11446     l_part_or_serial_change  BOOLEAN := FALSE;   --6176621
11447     l_number_open_ro         NUMBER;
11448     --
11449     l_mtl_txn_tbl            CSI_DATASTRUCTURES_PUB.MTL_TXN_TBL;  -- Added for the bug 6875664, base bug 6531599
11450     CURSOR CTR_GROUP(p_src_object_id IN NUMBER) IS
11451     SELECT  group_id
11452       FROM  csi_ctr_item_associations
11453      WHERE  inventory_item_id = p_src_object_id;
11454 
11455     CURSOR party_owner_rec (p_instance_id NUMBER) is
11456             SELECT
11457                  INSTANCE_PARTY_ID,
11458                  INSTANCE_ID,
11459                  PARTY_SOURCE_TABLE,
11460                  PARTY_ID,
11461                  RELATIONSHIP_TYPE_CODE,
11462                  CONTACT_FLAG,
11463                  CONTACT_IP_ID,
11464                  ACTIVE_START_DATE,
11465                  ACTIVE_END_DATE,
11466                  CONTEXT,
11467                  ATTRIBUTE1,
11468                  ATTRIBUTE2,
11469                  ATTRIBUTE3,
11470                  ATTRIBUTE4,
11471                  ATTRIBUTE5,
11472                  ATTRIBUTE6,
11473                  ATTRIBUTE7,
11474                  ATTRIBUTE8,
11475                  ATTRIBUTE9,
11476                  ATTRIBUTE10,
11477                  ATTRIBUTE11,
11478                  ATTRIBUTE12,
11479                  ATTRIBUTE13,
11480                  ATTRIBUTE14,
11481                  ATTRIBUTE15,
11482                  OBJECT_VERSION_NUMBER,
11483                  PRIMARY_FLAG,
11484                  PREFERRED_FLAG,
11485                  NULL PARENT_TBL_INDEX,
11486                  --NULL PROCESSED_FLAG,
11487                  NULL CALL_CONTRACTS,
11488                  NULL INTERFACE_ID,
11489                  NULL CONTACT_PARENT_TBL_INDEX,
11490                  NULL CASCADE_OWNERSHIP_FLAG -- Added for bug 2972082
11491           FROM   csi_i_parties
11492           WHERE  instance_id = p_instance_id
11493           AND    relationship_type_code = 'OWNER';
11494 
11495 
11496     CURSOR curr_instance_rec(p_instance_id IN NUMBER)  IS
11497            SELECT
11498                  INSTANCE_ID,
11499                  INSTANCE_NUMBER,
11500                  EXTERNAL_REFERENCE,
11501                  INVENTORY_ITEM_ID,
11502                  NULL VLD_ORGANIZATION_ID,
11503                  INVENTORY_REVISION,
11504                  INV_MASTER_ORGANIZATION_ID,
11505                  SERIAL_NUMBER,
11506                  MFG_SERIAL_NUMBER_FLAG,
11507                  LOT_NUMBER,
11508                  QUANTITY,
11509                  UNIT_OF_MEASURE,
11510                  ACCOUNTING_CLASS_CODE,
11511                  INSTANCE_CONDITION_ID,
11512                  INSTANCE_STATUS_ID,
11513                  CUSTOMER_VIEW_FLAG,
11514                  MERCHANT_VIEW_FLAG,
11515                  SELLABLE_FLAG,
11516                  SYSTEM_ID,
11517                  INSTANCE_TYPE_CODE,
11518                  ACTIVE_START_DATE,
11519                  ACTIVE_END_DATE,
11520                  LOCATION_TYPE_CODE,
11521                  LOCATION_ID,
11522                  INV_ORGANIZATION_ID,
11523                  INV_SUBINVENTORY_NAME,
11524                  INV_LOCATOR_ID,
11525                  PA_PROJECT_ID,
11526                  PA_PROJECT_TASK_ID,
11527                  IN_TRANSIT_ORDER_LINE_ID,
11528                  WIP_JOB_ID,
11529                  PO_ORDER_LINE_ID,
11530                  LAST_OE_ORDER_LINE_ID,
11531                  LAST_OE_RMA_LINE_ID,
11532                  LAST_PO_PO_LINE_ID,
11533                  LAST_OE_PO_NUMBER,
11534                  LAST_WIP_JOB_ID,
11535                  LAST_PA_PROJECT_ID,
11536                  LAST_PA_TASK_ID,
11537                  LAST_OE_AGREEMENT_ID,
11538                  INSTALL_DATE,
11539                  MANUALLY_CREATED_FLAG,
11540                  RETURN_BY_DATE,
11541                  ACTUAL_RETURN_DATE,
11542                  CREATION_COMPLETE_FLAG,
11543                  COMPLETENESS_FLAG,
11544                  NULL VERSION_LABEL,
11545                  NULL VERSION_LABEL_DESCRIPTION,
11546                  CONTEXT,
11547                  ATTRIBUTE1,
11548                  ATTRIBUTE2,
11549                  ATTRIBUTE3,
11550                  ATTRIBUTE4,
11551                  ATTRIBUTE5,
11552                  ATTRIBUTE6,
11553                  ATTRIBUTE7,
11554                  ATTRIBUTE8,
11555                  ATTRIBUTE9,
11556                  ATTRIBUTE10,
11557                  ATTRIBUTE11,
11558                  ATTRIBUTE12,
11559                  ATTRIBUTE13,
11560                  ATTRIBUTE14,
11561                  ATTRIBUTE15,
11562                  OBJECT_VERSION_NUMBER,
11563                  LAST_TXN_LINE_DETAIL_ID,
11564                  INSTALL_LOCATION_TYPE_CODE,
11565                  INSTALL_LOCATION_ID,
11566                  INSTANCE_USAGE_CODE,
11567                  LAST_VLD_ORGANIZATION_ID,
11568                  CONFIG_INST_HDR_ID,
11569                  CONFIG_INST_ITEM_ID,
11570                  CONFIG_INST_REV_NUM,
11571                  CONFIG_VALID_STATUS,
11572                  INSTANCE_DESCRIPTION,
11573                  -- Added for eam integration
11574                  NETWORK_ASSET_FLAG,
11575                  MAINTAINABLE_FLAG,
11576                  PN_LOCATION_ID,
11577                  ASSET_CRITICALITY_CODE,
11578                  CATEGORY_ID,
11579                  EQUIPMENT_GEN_OBJECT_ID,
11580                  INSTANTIATION_FLAG,
11581                  LINEAR_LOCATION_ID,
11582                  OPERATIONAL_LOG_FLAG,
11583                  CHECKIN_STATUS,
11584                  SUPPLIER_WARRANTY_EXP_DATE,
11585                  ATTRIBUTE16,
11586                  ATTRIBUTE17,
11587                  ATTRIBUTE18,
11588                  ATTRIBUTE19,
11589                  ATTRIBUTE20,
11590                  ATTRIBUTE21,
11591                  ATTRIBUTE22,
11592                  ATTRIBUTE23,
11593                  ATTRIBUTE24,
11594                  ATTRIBUTE25,
11595                  ATTRIBUTE26,
11596                  ATTRIBUTE27,
11597                  ATTRIBUTE28,
11598                  ATTRIBUTE29,
11599                  ATTRIBUTE30,
11600                -- End addition for eam integration
11601                -- Addition of columns for FA Integration
11602                  PURCHASE_UNIT_PRICE,
11603                  PURCHASE_CURRENCY_CODE,
11604                  PAYABLES_UNIT_PRICE,
11605                  PAYABLES_CURRENCY_CODE,
11606                  SALES_UNIT_PRICE,
11607                  SALES_CURRENCY_CODE,
11608                  OPERATIONAL_STATUS_CODE,
11609                -- End addition of columns for FA Integration
11610                  SOURCE_CODE -- Added Code for Siebel Genesis Project
11611            FROM  csi_item_instances
11612            WHERE instance_id = p_instance_id
11613            FOR UPDATE OF OBJECT_VERSION_NUMBER ;
11614            l_curr_instance_rec  curr_instance_rec%ROWTYPE;
11615 
11616       CURSOR cur_instance_rec(p_instance_id IN NUMBER)  IS
11617            SELECT   last_vld_organization_id
11618            FROM     csi_item_instances
11619            WHERE    instance_id = p_instance_id;
11620 
11621            l_cur_instance_rec   cur_instance_rec%ROWTYPE;
11622 
11623       CURSOR ins_hist_csr(p_instance_history_id NUMBER) IS
11624              SELECT  INSTANCE_HISTORY_ID
11625                     ,INSTANCE_ID
11626                     ,TRANSACTION_ID
11627                     ,OLD_INSTANCE_NUMBER
11628                     ,NEW_INSTANCE_NUMBER
11629                     ,OLD_EXTERNAL_REFERENCE
11630                     ,NEW_EXTERNAL_REFERENCE
11631                     ,OLD_INVENTORY_ITEM_ID
11632                     ,NEW_INVENTORY_ITEM_ID
11633                     ,OLD_INVENTORY_REVISION
11634                     ,NEW_INVENTORY_REVISION
11635                     ,OLD_INV_MASTER_ORGANIZATION_ID
11636                     ,NEW_INV_MASTER_ORGANIZATION_ID
11637                     ,OLD_SERIAL_NUMBER
11638                     ,NEW_SERIAL_NUMBER
11639                     ,OLD_MFG_SERIAL_NUMBER_FLAG
11640                     ,NEW_MFG_SERIAL_NUMBER_FLAG
11641                     ,OLD_LOT_NUMBER
11642                     ,NEW_LOT_NUMBER
11643                     ,OLD_QUANTITY
11644                     ,NEW_QUANTITY
11645                     ,OLD_UNIT_OF_MEASURE
11646                     ,NEW_UNIT_OF_MEASURE
11647                     ,OLD_ACCOUNTING_CLASS_CODE
11648                     ,NEW_ACCOUNTING_CLASS_CODE
11649                     ,OLD_INSTANCE_CONDITION_ID
11650                     ,NEW_INSTANCE_CONDITION_ID
11651                     ,OLD_INSTANCE_STATUS_ID
11652                     ,NEW_INSTANCE_STATUS_ID
11653                     ,OLD_CUSTOMER_VIEW_FLAG
11654                     ,NEW_CUSTOMER_VIEW_FLAG
11655                     ,OLD_MERCHANT_VIEW_FLAG
11656                     ,NEW_MERCHANT_VIEW_FLAG
11657                     ,OLD_SELLABLE_FLAG
11658                     ,NEW_SELLABLE_FLAG
11659                     ,OLD_SYSTEM_ID
11660                     ,NEW_SYSTEM_ID
11661                     ,OLD_INSTANCE_TYPE_CODE
11662                     ,NEW_INSTANCE_TYPE_CODE
11663                     ,OLD_ACTIVE_START_DATE
11664                     ,NEW_ACTIVE_START_DATE
11665                     ,OLD_ACTIVE_END_DATE
11666                     ,NEW_ACTIVE_END_DATE
11667                     ,OLD_LOCATION_TYPE_CODE
11668                     ,NEW_LOCATION_TYPE_CODE
11669                     ,OLD_LOCATION_ID
11670                     ,NEW_LOCATION_ID
11671                     ,OLD_INV_ORGANIZATION_ID
11672                     ,NEW_INV_ORGANIZATION_ID
11673                     ,OLD_INV_SUBINVENTORY_NAME
11674                     ,NEW_INV_SUBINVENTORY_NAME
11675                     ,OLD_INV_LOCATOR_ID
11676                     ,NEW_INV_LOCATOR_ID
11677                     ,OLD_PA_PROJECT_ID
11678                     ,NEW_PA_PROJECT_ID
11679                     ,OLD_PA_PROJECT_TASK_ID
11680                     ,NEW_PA_PROJECT_TASK_ID
11681                     ,OLD_IN_TRANSIT_ORDER_LINE_ID
11682                     ,NEW_IN_TRANSIT_ORDER_LINE_ID
11683                     ,OLD_WIP_JOB_ID
11684                     ,NEW_WIP_JOB_ID
11685                     ,OLD_PO_ORDER_LINE_ID
11686                     ,NEW_PO_ORDER_LINE_ID
11687                     ,OLD_COMPLETENESS_FLAG
11688                     ,NEW_COMPLETENESS_FLAG
11689                     ,OLD_CONTEXT
11690                     ,NEW_CONTEXT
11691                     ,OLD_ATTRIBUTE1
11692                     ,NEW_ATTRIBUTE1
11693                     ,OLD_ATTRIBUTE2
11694                     ,NEW_ATTRIBUTE2
11695                     ,OLD_ATTRIBUTE3
11696                     ,NEW_ATTRIBUTE3
11697                     ,OLD_ATTRIBUTE4
11698                     ,NEW_ATTRIBUTE4
11699                     ,OLD_ATTRIBUTE5
11700                     ,NEW_ATTRIBUTE5
11701                     ,OLD_ATTRIBUTE6
11702                     ,NEW_ATTRIBUTE6
11703                     ,OLD_ATTRIBUTE7
11704                     ,NEW_ATTRIBUTE7
11705                     ,OLD_ATTRIBUTE8
11706                     ,NEW_ATTRIBUTE8
11707                     ,OLD_ATTRIBUTE9
11708                     ,NEW_ATTRIBUTE9
11709                     ,OLD_ATTRIBUTE10
11710                     ,NEW_ATTRIBUTE10
11711                     ,OLD_ATTRIBUTE11
11712                     ,NEW_ATTRIBUTE11
11713                     ,OLD_ATTRIBUTE12
11714                     ,NEW_ATTRIBUTE12
11715                     ,OLD_ATTRIBUTE13
11716                     ,NEW_ATTRIBUTE13
11717                     ,OLD_ATTRIBUTE14
11718                     ,NEW_ATTRIBUTE14
11719                     ,OLD_ATTRIBUTE15
11720                     ,NEW_ATTRIBUTE15
11721                     ,FULL_DUMP_FLAG
11722                     ,OLD_INST_LOC_TYPE_CODE
11723                     ,NEW_INST_LOC_TYPE_CODE
11724                     ,OLD_INST_LOC_ID
11725                     ,NEW_INST_LOC_ID
11726                     ,OLD_INST_USAGE_CODE
11727                     ,NEW_INST_USAGE_CODE
11728                     ,OLD_LAST_VLD_ORGANIZATION_ID
11729                     ,NEW_LAST_VLD_ORGANIZATION_ID
11730                     ,OLD_CONFIG_INST_REV_NUM
11731                     ,NEW_CONFIG_INST_REV_NUM
11732                     ,OLD_CONFIG_VALID_STATUS
11733                     ,NEW_CONFIG_VALID_STATUS
11734                     ,OLD_INSTANCE_DESCRIPTION
11735                     ,NEW_INSTANCE_DESCRIPTION
11736                     ,OLD_INSTALL_DATE
11737                     ,NEW_INSTALL_DATE
11738                     ,OLD_RETURN_BY_DATE
11739                     ,NEW_RETURN_BY_DATE
11740                     ,OLD_ACTUAL_RETURN_DATE
11741                     ,NEW_ACTUAL_RETURN_DATE
11742                     ,OLD_OE_AGREEMENT_ID
11743                     ,NEW_OE_AGREEMENT_ID
11744                     ,OLD_LAST_OE_ORDER_LINE_ID
11745                     ,NEW_LAST_OE_ORDER_LINE_ID
11746                     ,OLD_LAST_OE_RMA_LINE_ID
11747                     ,NEW_LAST_OE_RMA_LINE_ID
11748                     ,OLD_LAST_WIP_JOB_ID
11749                     ,NEW_LAST_WIP_JOB_ID
11750                     ,OLD_LAST_PO_PO_LINE_ID
11751                     ,NEW_LAST_PO_PO_LINE_ID
11752                     ,OLD_LAST_PA_PROJECT_ID
11753                     ,NEW_LAST_PA_PROJECT_ID
11754                     ,OLD_LAST_PA_TASK_ID
11755                     ,NEW_LAST_PA_TASK_ID
11756                     ,OLD_LAST_TXN_LINE_DETAIL_ID
11757                     ,NEW_LAST_TXN_LINE_DETAIL_ID
11758                     ,OLD_LAST_OE_PO_NUMBER
11759                     ,NEW_LAST_OE_PO_NUMBER
11760 		    --start of column addition for eam integration--
11761                     ,OLD_NETWORK_ASSET_FLAG
11762                     ,NEW_NETWORK_ASSET_FLAG
11763                     ,OLD_MAINTAINABLE_FLAG
11764                     ,NEW_MAINTAINABLE_FLAG
11765                     ,OLD_PN_LOCATION_ID
11766                     ,NEW_PN_LOCATION_ID
11767                     ,OLD_ASSET_CRITICALITY_CODE
11768                     ,NEW_ASSET_CRITICALITY_CODE
11769                     ,OLD_CATEGORY_ID
11770                     ,NEW_CATEGORY_ID
11771                     ,OLD_EQUIPMENT_GEN_OBJECT_ID
11772                     ,NEW_EQUIPMENT_GEN_OBJECT_ID
11773                     ,OLD_INSTANTIATION_FLAG
11774                     ,NEW_INSTANTIATION_FLAG
11775                     ,OLD_LINEAR_LOCATION_ID
11776                     ,NEW_LINEAR_LOCATION_ID
11777                     ,OLD_OPERATIONAL_LOG_FLAG
11778                     ,NEW_OPERATIONAL_LOG_FLAG
11779                     ,OLD_CHECKIN_STATUS
11780                     ,NEW_CHECKIN_STATUS
11781                     ,OLD_SUPPLIER_WARRANTY_EXP_DATE
11782                     ,NEW_SUPPLIER_WARRANTY_EXP_DATE
11783                     ,OLD_ATTRIBUTE16
11784                     ,NEW_ATTRIBUTE16
11785                     ,OLD_ATTRIBUTE17
11786                     ,NEW_ATTRIBUTE17
11787                     ,OLD_ATTRIBUTE18
11788                     ,NEW_ATTRIBUTE18
11789                     ,OLD_ATTRIBUTE19
11790                     ,NEW_ATTRIBUTE19
11791                     ,OLD_ATTRIBUTE20
11792                     ,NEW_ATTRIBUTE20
11793                     ,OLD_ATTRIBUTE21
11794                     ,NEW_ATTRIBUTE21
11795                     ,OLD_ATTRIBUTE22
11796                     ,NEW_ATTRIBUTE22
11797                     ,OLD_ATTRIBUTE23
11798                     ,NEW_ATTRIBUTE23
11799                     ,OLD_ATTRIBUTE24
11800                     ,NEW_ATTRIBUTE24
11801                     ,OLD_ATTRIBUTE25
11802                     ,NEW_ATTRIBUTE25
11803                     ,OLD_ATTRIBUTE26
11804                     ,NEW_ATTRIBUTE26
11805                     ,OLD_ATTRIBUTE27
11806                     ,NEW_ATTRIBUTE27
11807                     ,OLD_ATTRIBUTE28
11808                     ,NEW_ATTRIBUTE28
11809                     ,OLD_ATTRIBUTE29
11810                     ,NEW_ATTRIBUTE29
11811                     ,OLD_ATTRIBUTE30
11812                     ,NEW_ATTRIBUTE30
11813 		    --end of column addition for eam integration--
11814             -- Addition of columns for FA Integration
11815                     ,OLD_PAYABLES_UNIT_PRICE
11816                     ,NEW_PAYABLES_UNIT_PRICE
11817                     ,OLD_PAYABLES_CURRENCY_CODE
11818                     ,NEW_PAYABLES_CURRENCY_CODE
11819                     ,OLD_PURCHASE_UNIT_PRICE
11820                     ,NEW_PURCHASE_UNIT_PRICE
11821                     ,OLD_PURCHASE_CURRENCY_CODE
11822                     ,NEW_PURCHASE_CURRENCY_CODE
11823                     ,OLD_SALES_UNIT_PRICE
11824                     ,NEW_SALES_UNIT_PRICE
11825                     ,OLD_SALES_CURRENCY_CODE
11826                     ,NEW_SALES_CURRENCY_CODE
11827                     ,OLD_OPERATIONAL_STATUS_CODE
11828                     ,NEW_OPERATIONAL_STATUS_CODE
11829              -- End addition of columns for FA Integration
11830                     -- Begin Add Code for Siebel Genesis Project
11831                     ,OLD_SOURCE_CODE
11832                     ,NEW_SOURCE_CODE
11833                     -- End Add Code for Siebel Genesis Project
11834              FROM   csi_item_instances_h
11835              WHERE  instance_history_id = p_instance_history_id
11836              FOR UPDATE OF OBJECT_VERSION_NUMBER ;
11837 
11838 
11839       CURSOR upd_ctr_assn_csr(p_source_object_id NUMBER) IS
11840              SELECT  instance_association_id
11841                     ,source_object_id
11842                     ,counter_id
11843                     ,object_version_number
11844                     ,start_date_active --Add for bug 6963602
11845                FROM csi_counter_associations
11846               WHERE source_object_id = p_source_object_id
11847                 AND source_object_code = 'CP';
11848 
11849 l_ins_hist_id            NUMBER;
11850 l_ins_hist_csr           ins_hist_csr%ROWTYPE;
11851 l_temp_rec               VARCHAR2(1);
11852 l_temp_rec1              VARCHAR2(1);
11853 l_open_service           VARCHAR2(1);
11854 l_config_key             csi_utility_grp.config_instance_key;
11855 l_config_valid_status    VARCHAR2(10);
11856 l_return_status          VARCHAR2(10);
11857 l_return_message         VARCHAR2(100);
11858 l_component_ins_type     VARCHAR2(1):=NULL;
11859 l_config_hdr_id          NUMBER;
11860 l_config_rev_nbr         NUMBER;
11861 l_original_status_id     NUMBER;
11862 l_original_system_id     NUMBER;
11863 l_orig_install_date      DATE;
11864 l_unexpire               VARCHAR2(1);
11865 l_ins_flag               VARCHAR2(1);
11866 l_temp                   VARCHAR2(1);
11867 l_eam_item               BOOLEAN := FALSE;
11868 l_eam_item_type          NUMBER;
11869 l_instance_history_id    NUMBER;
11870 l_maintenance_object_type NUMBER:=3;
11871 l_reason_failed          VARCHAR2(30);
11872 l_token                  VARCHAR2(30);
11873 l_lock_status            NUMBER;
11874 l_counter_group_id       NUMBER :=0;
11875 l_ctr_item_associations_rec csi_ctr_datastructures_pub.ctr_item_associations_rec;
11876 l_valid                  BOOLEAN     := TRUE;
11877 l_creation_flag          VARCHAR2(1);
11878 l_gen_object_id          NUMBER;
11879 l_ctr_associations_tbl   csi_ctr_datastructures_pub.counter_associations_tbl;
11880 l_ctr                    NUMBER;
11881 l_curr_maint_org_id      NUMBER;
11882 l_latest_maint_org_id    NUMBER;
11883 l_equipment_type         NUMBER;
11884 l_network_asset_flag     VARCHAR2(1);
11885 l_pn_location_id         NUMBER;
11886 BEGIN
11887    -- Standard Start of API savepoint
11888       IF FND_API.To_Boolean( p_commit )
11889       THEN
11890          SAVEPOINT  update_item_instance_pvt;
11891       END IF;
11892 
11893    -- Standard call to check for call compatibility.
11894       IF NOT FND_API.Compatible_API_Call (l_api_version,
11895                                           p_api_version,
11896                                           l_api_name   ,
11897                                           G_PKG_NAME    )
11898       THEN
11899             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11900       END IF;
11901 
11902    -- Initialize message list if p_init_msg_list is set to TRUE.
11903        IF FND_API.to_Boolean( p_init_msg_list ) THEN
11904              FND_MSG_PUB.initialize;
11905        END IF;
11906 
11907    -- Initialize API return status to success
11908        x_return_status := FND_API.G_RET_STS_SUCCESS;
11909         -- Check the profile option debug_level for debug message reporting
11910         l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
11911         -- If debug_level = 1 then dump the procedure name
11912         IF (l_debug_level > 0) THEN
11913             csi_gen_utility_pvt.put_line ( 'update_item_instance_pvt');
11914         END IF;
11915         -- If the debug level = 2 then dump all the parameters values.
11916 
11917         IF (l_debug_level > 1) THEN
11918              csi_gen_utility_pvt.put_line ( 'update_item_instance_pvt:'     ||
11919                                                  p_api_version         ||'-'||
11920                                                  p_commit              ||'-'||
11921                                                  p_init_msg_list            );
11922 
11923        --dump the records in a log file
11924              csi_gen_utility_pvt.dump_instance_rec(p_instance_rec);
11925              csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
11926         END IF;
11927       -- Start API body
11928       --
11929       -- Initialize the Instance count
11930       --
11931       If p_ins_count_rec.inv_count is NULL OR
11932          p_ins_count_rec.inv_count = FND_API.G_MISS_NUM THEN
11933          p_ins_count_rec.inv_count := 0;
11934       End if;
11935       --
11936       If p_ins_count_rec.generic_count is NULL OR
11937          p_ins_count_rec.generic_count = FND_API.G_MISS_NUM THEN
11938          p_ins_count_rec.generic_count := 0;
11939       End if;
11940       --
11941       If p_ins_count_rec.location_count is NULL OR
11942          p_ins_count_rec.location_count = FND_API.G_MISS_NUM THEN
11943          p_ins_count_rec.location_count := 0;
11944       End if;
11945       --
11946       If p_ins_count_rec.lookup_count is NULL OR
11947          p_ins_count_rec.lookup_count = FND_API.G_MISS_NUM THEN
11948          p_ins_count_rec.lookup_count := 0;
11949       End if;
11950       --
11951       -- check if the object_version_number passed matches with the one
11952       -- in the database else raise error
11953         OPEN curr_instance_rec(p_instance_rec.INSTANCE_ID);
11954             FETCH curr_instance_rec INTO l_curr_instance_rec;
11955                 IF  (l_curr_instance_rec.object_version_number <> nvl(p_instance_rec.OBJECT_VERSION_NUMBER,0)) THEN
11956                         FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
11957                         FND_MSG_PUB.ADD;
11958                         RAISE FND_API.G_EXC_ERROR;
11959                 END IF;
11960         CLOSE curr_instance_rec;
11961 
11962 /* Fix for bug 4632441 : Here g_miss and null values for eam_columns are flip-flopped
11963    since EAM API treats g_miss and null value differently compared to CSI API */
11964      IF p_instance_rec.department_id = FND_API.G_MISS_NUM THEN
11965         p_instance_rec.department_id := NULL;
11966      ELSIF p_instance_rec.department_id IS  NULL THEN
11967         p_instance_rec.department_id := FND_API.G_MISS_NUM;
11968      END IF;
11969 
11970     IF p_instance_rec.wip_accounting_class = FND_API.G_MISS_CHAR THEN
11971        p_instance_rec.wip_accounting_class := NULL;
11972     ELSIF p_instance_rec.wip_accounting_class IS  NULL THEN
11973        p_instance_rec.wip_accounting_class := FND_API.G_MISS_CHAR;
11974     END IF;
11975 
11976     IF p_instance_rec.area_id = FND_API.G_MISS_NUM THEN
11977        p_instance_rec.area_id := NULL;
11978     ELSIF p_instance_rec.area_id IS  NULL THEN
11979        p_instance_rec.area_id := FND_API.G_MISS_NUM;
11980     END IF;
11981 
11982 
11983 
11984 
11985     --Added for MACD lock functionality
11986     IF p_instance_rec.instance_id IS NOT NULL AND
11987        p_instance_rec.instance_id <> fnd_api.g_miss_num
11988     THEN
11989       csi_item_instance_pvt.get_instance_lock_status
11990       ( p_instance_id  => p_instance_rec.instance_id ,
11991         p_lock_status  => l_lock_status
11992       );
11993        IF (p_txn_rec.transaction_type_id = 401 AND
11994            (l_lock_status = 1 OR p_called_from_rel = fnd_api.g_true)) OR
11995           (l_lock_status = 0)
11996        THEN
11997           NULL;
11998        ELSE
11999         FND_MESSAGE.SET_NAME('CSI','CSI_INSTANCE_LOCKED');
12000         FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_instance_rec.instance_id);
12001         FND_MSG_PUB.ADD;
12002         RAISE FND_API.G_EXC_ERROR;
12003        END IF;
12004     END IF;
12005     -- End addition for MACD lock functionality
12006 
12007         OPEN  cur_instance_rec(p_instance_rec.INSTANCE_ID);
12008         FETCH cur_instance_rec INTO l_cur_instance_rec;
12009         CLOSE cur_instance_rec;
12010 
12011          l_mod_curr_instance_rec.INSTANCE_ID  :=  l_curr_instance_rec.INSTANCE_ID;
12012          l_mod_curr_instance_rec.INSTANCE_NUMBER     :=  l_curr_instance_rec.INSTANCE_NUMBER;
12013          l_mod_curr_instance_rec.EXTERNAL_REFERENCE  := l_curr_instance_rec.EXTERNAL_REFERENCE            ;
12014          l_mod_curr_instance_rec.INVENTORY_ITEM_ID             :=  l_curr_instance_rec.INVENTORY_ITEM_ID             ;
12015          l_mod_curr_instance_rec.VLD_ORGANIZATION_ID           :=  l_curr_instance_rec.VLD_ORGANIZATION_ID           ;
12016          l_mod_curr_instance_rec.INVENTORY_REVISION            :=  l_curr_instance_rec.INVENTORY_REVISION            ;
12017          l_mod_curr_instance_rec.INV_MASTER_ORGANIZATION_ID    :=  l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID    ;
12018          l_mod_curr_instance_rec.SERIAL_NUMBER                 :=  l_curr_instance_rec.SERIAL_NUMBER                 ;
12019          l_mod_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG        :=  l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG        ;
12020          l_mod_curr_instance_rec.LOT_NUMBER                    :=  l_curr_instance_rec.LOT_NUMBER                    ;
12021          l_mod_curr_instance_rec.QUANTITY                      :=  l_curr_instance_rec.QUANTITY                      ;
12022          l_mod_curr_instance_rec.UNIT_OF_MEASURE               :=  l_curr_instance_rec.UNIT_OF_MEASURE               ;
12023          l_mod_curr_instance_rec.ACCOUNTING_CLASS_CODE         :=  l_curr_instance_rec.ACCOUNTING_CLASS_CODE         ;
12024          l_mod_curr_instance_rec.INSTANCE_CONDITION_ID         :=  l_curr_instance_rec.INSTANCE_CONDITION_ID         ;
12025          l_mod_curr_instance_rec.INSTANCE_STATUS_ID            :=  l_curr_instance_rec.INSTANCE_STATUS_ID            ;
12026          l_mod_curr_instance_rec.CUSTOMER_VIEW_FLAG            :=  l_curr_instance_rec.CUSTOMER_VIEW_FLAG            ;
12027          l_mod_curr_instance_rec.MERCHANT_VIEW_FLAG            :=  l_curr_instance_rec.MERCHANT_VIEW_FLAG            ;
12028          l_mod_curr_instance_rec.SELLABLE_FLAG                 :=  l_curr_instance_rec.SELLABLE_FLAG                 ;
12029          l_mod_curr_instance_rec.SYSTEM_ID                     :=  l_curr_instance_rec.SYSTEM_ID                     ;
12030          l_mod_curr_instance_rec.INSTANCE_TYPE_CODE            :=  l_curr_instance_rec.INSTANCE_TYPE_CODE            ;
12031          l_mod_curr_instance_rec.ACTIVE_START_DATE             :=  l_curr_instance_rec.ACTIVE_START_DATE             ;
12032          l_mod_curr_instance_rec.ACTIVE_END_DATE               :=  l_curr_instance_rec.ACTIVE_END_DATE               ;
12033          l_mod_curr_instance_rec.LOCATION_TYPE_CODE            :=  l_curr_instance_rec.LOCATION_TYPE_CODE            ;
12034          l_mod_curr_instance_rec.LOCATION_ID                   :=  l_curr_instance_rec.LOCATION_ID                   ;
12035          l_mod_curr_instance_rec.INV_ORGANIZATION_ID           :=  l_curr_instance_rec.INV_ORGANIZATION_ID           ;
12036          l_mod_curr_instance_rec.INV_SUBINVENTORY_NAME         :=  l_curr_instance_rec.INV_SUBINVENTORY_NAME         ;
12037          l_mod_curr_instance_rec.INV_LOCATOR_ID                :=  l_curr_instance_rec.INV_LOCATOR_ID                ;
12038          l_mod_curr_instance_rec.PA_PROJECT_ID                 :=  l_curr_instance_rec.PA_PROJECT_ID                 ;
12039          l_mod_curr_instance_rec.PA_PROJECT_TASK_ID            :=  l_curr_instance_rec.PA_PROJECT_TASK_ID            ;
12040          l_mod_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID      :=  l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID      ;
12041          l_mod_curr_instance_rec.WIP_JOB_ID                    :=  l_curr_instance_rec.WIP_JOB_ID                    ;
12042          l_mod_curr_instance_rec.PO_ORDER_LINE_ID              :=  l_curr_instance_rec.PO_ORDER_LINE_ID              ;
12043          l_mod_curr_instance_rec.LAST_OE_ORDER_LINE_ID         :=  l_curr_instance_rec.LAST_OE_ORDER_LINE_ID         ;
12044          l_mod_curr_instance_rec.LAST_OE_RMA_LINE_ID           :=  l_curr_instance_rec.LAST_OE_RMA_LINE_ID           ;
12045          l_mod_curr_instance_rec.LAST_PO_PO_LINE_ID            :=  l_curr_instance_rec.LAST_PO_PO_LINE_ID            ;
12046          l_mod_curr_instance_rec.LAST_OE_PO_NUMBER             :=  l_curr_instance_rec.LAST_OE_PO_NUMBER             ;
12047          l_mod_curr_instance_rec.LAST_WIP_JOB_ID               :=  l_curr_instance_rec.LAST_WIP_JOB_ID               ;
12048          l_mod_curr_instance_rec.LAST_PA_PROJECT_ID            :=  l_curr_instance_rec.LAST_PA_PROJECT_ID            ;
12049          l_mod_curr_instance_rec.LAST_PA_TASK_ID               :=  l_curr_instance_rec.LAST_PA_TASK_ID               ;
12050          l_mod_curr_instance_rec.LAST_OE_AGREEMENT_ID          :=  l_curr_instance_rec.LAST_OE_AGREEMENT_ID          ;
12051          l_mod_curr_instance_rec.INSTALL_DATE                  :=  l_curr_instance_rec.INSTALL_DATE                  ;
12052          l_mod_curr_instance_rec.MANUALLY_CREATED_FLAG         :=  l_curr_instance_rec.MANUALLY_CREATED_FLAG         ;
12053          l_mod_curr_instance_rec.RETURN_BY_DATE                :=  l_curr_instance_rec.RETURN_BY_DATE                ;
12054          l_mod_curr_instance_rec.ACTUAL_RETURN_DATE            :=  l_curr_instance_rec.ACTUAL_RETURN_DATE            ;
12055          l_mod_curr_instance_rec.CREATION_COMPLETE_FLAG        :=  l_curr_instance_rec.CREATION_COMPLETE_FLAG        ;
12056          l_mod_curr_instance_rec.COMPLETENESS_FLAG             :=  l_curr_instance_rec.COMPLETENESS_FLAG             ;
12057          l_mod_curr_instance_rec.VERSION_LABEL                 :=  l_curr_instance_rec.VERSION_LABEL                 ;
12058          l_mod_curr_instance_rec.VERSION_LABEL_DESCRIPTION     :=  l_curr_instance_rec.VERSION_LABEL_DESCRIPTION     ;
12059          l_mod_curr_instance_rec.CONTEXT                       :=  l_curr_instance_rec.CONTEXT                       ;
12060          l_mod_curr_instance_rec.ATTRIBUTE1                    :=  l_curr_instance_rec.ATTRIBUTE1                    ;
12061          l_mod_curr_instance_rec.ATTRIBUTE2                    :=  l_curr_instance_rec.ATTRIBUTE2                    ;
12062          l_mod_curr_instance_rec.ATTRIBUTE3                    :=  l_curr_instance_rec.ATTRIBUTE3                    ;
12063          l_mod_curr_instance_rec.ATTRIBUTE4                    :=  l_curr_instance_rec.ATTRIBUTE4                    ;
12064          l_mod_curr_instance_rec.ATTRIBUTE5                    :=  l_curr_instance_rec.ATTRIBUTE5                    ;
12065          l_mod_curr_instance_rec.ATTRIBUTE6                    :=  l_curr_instance_rec.ATTRIBUTE6                    ;
12066          l_mod_curr_instance_rec.ATTRIBUTE7                    :=  l_curr_instance_rec.ATTRIBUTE7                    ;
12067          l_mod_curr_instance_rec.ATTRIBUTE8                    :=  l_curr_instance_rec.ATTRIBUTE8                    ;
12068          l_mod_curr_instance_rec.ATTRIBUTE9                    :=  l_curr_instance_rec.ATTRIBUTE9                    ;
12069          l_mod_curr_instance_rec.ATTRIBUTE10                   :=  l_curr_instance_rec.ATTRIBUTE10                   ;
12070          l_mod_curr_instance_rec.ATTRIBUTE11                   :=  l_curr_instance_rec.ATTRIBUTE11                   ;
12071          l_mod_curr_instance_rec.ATTRIBUTE12                   :=  l_curr_instance_rec.ATTRIBUTE12                   ;
12072          l_mod_curr_instance_rec.ATTRIBUTE13                   :=  l_curr_instance_rec.ATTRIBUTE13                   ;
12073          l_mod_curr_instance_rec.ATTRIBUTE14                   :=  l_curr_instance_rec.ATTRIBUTE14                   ;
12074          l_mod_curr_instance_rec.ATTRIBUTE15                   :=  l_curr_instance_rec.ATTRIBUTE15                   ;
12075          l_mod_curr_instance_rec.OBJECT_VERSION_NUMBER         :=  l_curr_instance_rec.OBJECT_VERSION_NUMBER         ;
12076          l_mod_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID       :=  l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID       ;
12077          l_mod_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE    :=  l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE    ;
12078          l_mod_curr_instance_rec.INSTALL_LOCATION_ID           :=  l_curr_instance_rec.INSTALL_LOCATION_ID           ;
12079          l_mod_curr_instance_rec.INSTANCE_USAGE_CODE           :=  l_curr_instance_rec.INSTANCE_USAGE_CODE           ;
12080          --start of code for eam integration--
12081          l_mod_curr_instance_rec.NETWORK_ASSET_FLAG            :=  l_curr_instance_rec.NETWORK_ASSET_FLAG            ;
12082          l_mod_curr_instance_rec.MAINTAINABLE_FLAG             :=  l_curr_instance_rec.MAINTAINABLE_FLAG             ;
12083          l_mod_curr_instance_rec.PN_LOCATION_ID                :=  l_curr_instance_rec.PN_LOCATION_ID                ;
12084          l_mod_curr_instance_rec.ASSET_CRITICALITY_CODE        :=  l_curr_instance_rec.ASSET_CRITICALITY_CODE        ;
12085          l_mod_curr_instance_rec.CATEGORY_ID                   :=  l_curr_instance_rec.CATEGORY_ID                   ;
12086          l_mod_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID       :=  l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID       ;
12087          l_mod_curr_instance_rec.INSTANTIATION_FLAG            :=  l_curr_instance_rec.INSTANTIATION_FLAG            ;
12088          l_mod_curr_instance_rec.LINEAR_LOCATION_ID            :=  l_curr_instance_rec.LINEAR_LOCATION_ID            ;
12089          l_mod_curr_instance_rec.OPERATIONAL_LOG_FLAG          :=  l_curr_instance_rec.OPERATIONAL_LOG_FLAG          ;
12090          l_mod_curr_instance_rec.CHECKIN_STATUS                :=  l_curr_instance_rec.CHECKIN_STATUS                ;
12091          l_mod_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE    :=  l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE    ;
12092          l_mod_curr_instance_rec.ATTRIBUTE16                   :=  l_curr_instance_rec.ATTRIBUTE16                   ;
12093          l_mod_curr_instance_rec.ATTRIBUTE17                   :=  l_curr_instance_rec.ATTRIBUTE17                   ;
12094          l_mod_curr_instance_rec.ATTRIBUTE18                   :=  l_curr_instance_rec.ATTRIBUTE18                   ;
12095          l_mod_curr_instance_rec.ATTRIBUTE19                   :=  l_curr_instance_rec.ATTRIBUTE19                   ;
12096          l_mod_curr_instance_rec.ATTRIBUTE20                   :=  l_curr_instance_rec.ATTRIBUTE20                   ;
12097          l_mod_curr_instance_rec.ATTRIBUTE21                   :=  l_curr_instance_rec.ATTRIBUTE21                   ;
12098          l_mod_curr_instance_rec.ATTRIBUTE22                   :=  l_curr_instance_rec.ATTRIBUTE22                   ;
12099          l_mod_curr_instance_rec.ATTRIBUTE23                   :=  l_curr_instance_rec.ATTRIBUTE23                   ;
12100          l_mod_curr_instance_rec.ATTRIBUTE24                   :=  l_curr_instance_rec.ATTRIBUTE24                   ;
12101          l_mod_curr_instance_rec.ATTRIBUTE25                   :=  l_curr_instance_rec.ATTRIBUTE25                   ;
12102          l_mod_curr_instance_rec.ATTRIBUTE26                   :=  l_curr_instance_rec.ATTRIBUTE26                   ;
12103          l_mod_curr_instance_rec.ATTRIBUTE27                   :=  l_curr_instance_rec.ATTRIBUTE27                   ;
12104          l_mod_curr_instance_rec.ATTRIBUTE28                   :=  l_curr_instance_rec.ATTRIBUTE28                   ;
12105          l_mod_curr_instance_rec.ATTRIBUTE29                   :=  l_curr_instance_rec.ATTRIBUTE29                   ;
12106          l_mod_curr_instance_rec.ATTRIBUTE30                   :=  l_curr_instance_rec.ATTRIBUTE30                   ;
12107 		 --end of code for eam integration--
12108        -- Addition of columns for FA Integration
12109          l_mod_curr_instance_rec.PAYABLES_UNIT_PRICE           := l_curr_instance_rec.PAYABLES_UNIT_PRICE            ;
12110          l_mod_curr_instance_rec.PAYABLES_CURRENCY_CODE        := l_curr_instance_rec.PAYABLES_CURRENCY_CODE         ;
12111          l_mod_curr_instance_rec.PURCHASE_UNIT_PRICE           := l_curr_instance_rec.PURCHASE_UNIT_PRICE            ;
12112          l_mod_curr_instance_rec.PURCHASE_CURRENCY_CODE        := l_curr_instance_rec.PURCHASE_CURRENCY_CODE         ;
12113          l_mod_curr_instance_rec.SALES_UNIT_PRICE              := l_curr_instance_rec.SALES_UNIT_PRICE               ;
12114          l_mod_curr_instance_rec.SALES_CURRENCY_CODE           := l_curr_instance_rec.SALES_CURRENCY_CODE            ;
12115          l_mod_curr_instance_rec.OPERATIONAL_STATUS_CODE       := l_curr_instance_rec.OPERATIONAL_STATUS_CODE        ;
12116         -- End addition of columns for FA Integration
12117         -- Begin Add Code for Siebel Genesis Project
12118         l_mod_curr_instance_rec.SOURCE_CODE                    := l_curr_instance_rec.SOURCE_CODE;
12119         -- End Add Code for Siebel Genesis Project
12120 
12121         csi_item_instance_vld_pvt.get_merge_rec   (p_instance_rec      =>   p_instance_rec,
12122                                                    l_curr_instance_rec =>   l_mod_curr_instance_rec,
12123                                                    l_get_instance_rec  =>   l_get_instance_rec
12124                                                    );
12125 --Added for bug 2766787
12126       IF p_instance_rec.location_type_code='INVENTORY'
12127       THEN
12128          p_instance_rec.vld_organization_id := p_instance_rec.inv_organization_id;
12129       END IF;
12130 --End addition for bug 2766787
12131       IF ((p_instance_rec.vld_organization_id IS NULL)  OR
12132           (p_instance_rec.vld_organization_id = FND_API.G_MISS_NUM))
12133       THEN
12134          p_instance_rec.vld_organization_id := l_cur_instance_rec.last_vld_organization_id;
12135          l_get_instance_rec.vld_organization_id := l_cur_instance_rec.last_vld_organization_id;
12136       ELSE
12137          l_get_instance_rec.vld_organization_id := p_instance_rec.vld_organization_id;
12138       END IF;
12139 
12140       l_last_vld_organization_id := p_instance_rec.vld_organization_id;
12141 
12142       IF   l_get_instance_rec.location_type_code <> 'INVENTORY' AND
12143            l_cur_instance_rec.last_vld_organization_id <> l_get_instance_rec.vld_organization_id
12144 	   AND l_curr_instance_rec.instance_usage_code <> 'IN_TRANSIT' --Added for bug 6188180
12145       THEN
12146                FND_MESSAGE.Set_Name('CSI', 'CSI_CANNOT_MODIFY_VLD_ORG');
12147                FND_MSG_PUB.ADD;
12148                RAISE FND_API.G_EXC_ERROR;
12149       END IF;
12150 
12151       -- Check if all the required parameters are passed
12152            CSI_Item_Instance_vld_pvt.Check_Reqd_Param_num
12153              (    p_instance_rec.INSTANCE_ID ,
12154                 '  p_instance_rec.INSTANCE_ID ',
12155                    l_api_name                 );
12156 
12157       -- Check if the instance id  is valid
12158         IF NOT(CSI_Item_Instance_vld_pvt.Is_InstanceID_Valid
12159                                                      (p_instance_rec.INSTANCE_ID,
12160                                                       TRUE                    )) THEN
12161               RAISE FND_API.G_EXC_ERROR;
12162         END IF;
12163         FND_File.Put_Line(Fnd_File.LOG,'p_validation_mode is :'||p_validation_mode);
12164         IF (p_validation_mode <> 'U')
12165         THEN
12166 
12167        -- The following sequence will be set only from the Data Correction
12168         l_current_val := -9999999;
12169         --
12170         Begin
12171            select CSI_II_FORWARD_SYNC_TEMP_S.CURRVAL
12172            into l_current_val
12173            FROM DUAL;
12174         Exception
12175            when others then
12176               l_current_val := -9999999;
12177         End;
12178         --
12179         -- Proceed with Forward SYnch check if the sequence does not return any value.
12180         IF l_current_val = -9999999 THEN
12181            IF NOT(CSI_Item_Instance_vld_pvt.Is_Forward_Synch
12182                      (p_instance_id    =>  p_instance_rec.INSTANCE_ID,
12183                       p_stop_all_txn   =>  fnd_api.g_true,
12184                       p_mtl_txn_id     =>  fnd_api.g_miss_num)) THEN
12185               FND_MESSAGE.Set_Name('CSI', 'CSI_API_NO_FORWARD_SYNCH');
12186               FND_MESSAGE.Set_Token('INSTANCE', p_instance_rec.INSTANCE_ID);
12187               FND_MSG_PUB.ADD;
12188               RAISE FND_API.G_EXC_ERROR;
12189            END IF;
12190         ELSE -- Even if seq exists, stop later txns
12191            IF NOT(CSI_Item_Instance_vld_pvt.Is_Forward_Synch
12192                      (p_instance_id    =>  p_instance_rec.INSTANCE_ID,
12193                       p_stop_all_txn   =>  fnd_api.g_false, -- Stop only later txns
12194                       p_mtl_txn_id     =>  p_txn_rec.inv_material_transaction_id)) THEN
12195               FND_MESSAGE.Set_Name('CSI', 'CSI_API_NO_FORWARD_SYNCH');
12196               FND_MESSAGE.Set_Token('INSTANCE', p_instance_rec.INSTANCE_ID);
12197               FND_MSG_PUB.ADD;
12198               RAISE FND_API.G_EXC_ERROR;
12199            END IF;
12200         END IF;
12201         --
12202       -- validation for Instance id
12203         IF ((p_instance_rec.instance_id IS NULL) OR
12204             (p_instance_rec.instance_id <> FND_API.G_MISS_NUM)) THEN
12205             IF ((p_instance_rec.instance_id IS NULL) OR
12206                 (p_instance_rec.instance_id <> l_curr_instance_rec.instance_id)) THEN
12207                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12208                     FND_MESSAGE.Set_Token('COLUMN', 'INSTANCE_ID');
12209                     FND_MSG_PUB.ADD;
12210                     RAISE FND_API.G_EXC_ERROR;
12211             END IF;
12212         END IF;
12213 
12214       -- validation for Instance Number
12215         IF ((p_instance_rec.instance_number IS NULL) OR
12216             (p_instance_rec.instance_number <> FND_API.G_MISS_CHAR)) THEN
12217             IF ((p_instance_rec.instance_number IS NULL) OR
12218                 (p_instance_rec.instance_number <> l_curr_instance_rec.instance_number))
12219             THEN
12220             -- Added for eam integration
12221               IF NOT csi_item_Instance_Vld_pvt.Is_InstanceNum_Valid(p_instance_rec.instance_id,
12222                                                                     p_instance_rec.instance_number,
12223                                                                     'UPDATE')
12224               THEN
12225                RAISE fnd_api.g_exc_error;
12226               END IF;
12227             -- End addition for eam integration
12228             /*
12229                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12230                     FND_MESSAGE.Set_Token('COLUMN', 'INSTANCE_NUMBER');
12231                     FND_MSG_PUB.ADD;
12232                     RAISE FND_API.G_EXC_ERROR;
12233                     */
12234             END IF;
12235         END IF;
12236       -- validation for Inventory Item id
12237 
12238 --start change for BUG:6176621
12239 
12240       /*  IF ((p_instance_rec.inventory_item_id IS NULL) OR
12241             (p_instance_rec.inventory_item_id <> FND_API.G_MISS_NUM)) THEN
12242             IF ((p_instance_rec.inventory_item_id IS NULL) OR
12243                 (p_instance_rec.inventory_item_id <> l_curr_instance_rec.inventory_item_id)) THEN
12244 		*/
12245 IF p_txn_rec.transaction_type_id = 205
12246  THEN
12247  SELECT count(*)
12248    INTO l_number_open_ro
12249    FROM CSD_REPAIRS cr
12250    where  cr.STATUS <> 'C'AND
12251        (cr.CUSTOMER_PRODUCT_ID = p_instance_rec.instance_id or exists
12252             (select 'X' from csd_product_txns_v cptv
12253                   where cptv.repair_line_id = cr.repair_line_id and
12254                         (cptv.source_instance_id = p_instance_rec.instance_id or
12255                              cptv.non_source_instance_id = p_instance_rec.instance_id)));
12256 
12257 		IF(l_number_open_ro>0)
12258 		 THEN
12259 		    FND_MESSAGE.Set_Name('CSI', 'CSI_OPEN_RO_EXISTS');
12260                     FND_MESSAGE.Set_Token('COLUMN', 'INVENTORY_ITEM_ID OR SERIAL_NUMBER');
12261                     FND_MSG_PUB.ADD;
12262                     RAISE FND_API.G_EXC_ERROR;
12263 
12264 		  END IF;
12265 	END IF;
12266 
12267 						--validation for open depot repair orders for CMRO
12268 
12269           IF p_instance_rec.inventory_item_id IS NULL THEN
12270             FND_MESSAGE.Set_Name('CSI', 'CSI_API_INVALID_ITEM');
12271             FND_MESSAGE.Set_Token('INVENTORY_ITEM_ID',p_instance_rec.inventory_item_id);
12272 	     fnd_message.set_token('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12273 	     FND_MSG_PUB.ADD;
12274  	       RAISE FND_API.G_EXC_ERROR;
12275  	     ELSE
12276  	       IF (p_instance_rec.inventory_item_id <> FND_API.G_MISS_NUM)
12277  	          AND
12278  	          (p_instance_rec.inventory_item_id <> l_curr_instance_rec.inventory_item_id)
12279  	       THEN
12280  	         IF p_txn_rec.transaction_type_id = 205
12281 
12282 		 THEN
12283  	           l_part_or_serial_change := TRUE;
12284  	         ELSE
12285                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12286                     FND_MESSAGE.Set_Token('COLUMN', 'INVENTORY_ITEM_ID');
12287                     FND_MSG_PUB.ADD;
12288                     RAISE FND_API.G_EXC_ERROR;
12289             END IF;
12290         END IF;
12291      END IF;
12292 
12293 
12294  	     IF nvl(p_instance_rec.serial_number, fnd_api.g_miss_char) <> fnd_api.g_miss_char
12295  	        AND
12296  	        p_instance_rec.serial_number <> l_curr_instance_rec.serial_number
12297  	     THEN
12298  	       IF p_txn_rec.transaction_type_id = 205
12299 
12300 	       THEN
12301  	         l_part_or_serial_change := TRUE;
12302  	       /*ELSE -- Commented for bug 6965008
12303                  -- Modified else block for the bug 6875664, base bug 6531599
12304                  IF p_txn_rec.transaction_type_id = 1 THEN
12305                    l_mtl_txn_tbl.DELETE;
12306                    CSI_Item_Instance_vld_pvt.get_mtl_txn_for_srl(
12307                       p_inventory_item_id => p_instance_rec.inventory_item_id,
12308                       p_serial_number     => p_instance_rec.serial_number,
12309                       x_mtl_txn_tbl       => l_mtl_txn_tbl);
12310                    IF NVL(l_mtl_txn_tbl.Count,0) > 0 THEN
12311                       FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12312                       FND_MESSAGE.Set_Token('COLUMN', 'SERIAL_NUMBER');
12313                       FND_MSG_PUB.ADD;
12314                       RAISE FND_API.G_EXC_ERROR;
12315                    END IF;
12316                  ELSE
12317  	           FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12318  	           FND_MESSAGE.Set_Token('COLUMN', 'SERIAL_NUMBER');
12319  	           FND_MSG_PUB.ADD;
12320  	           RAISE FND_API.G_EXC_ERROR;
12321                  END IF;
12322 		  */      -- Commented for bug 6965008
12323                END IF;
12324  	     END IF;
12325 			--end of code for 6176621
12326 
12327         --
12328         IF p_instance_rec.instance_status_id IS NULL THEN
12329            FND_MESSAGE.Set_Name('CSI','CSI_API_MANDATORY_STATUS');
12330            FND_MSG_PUB.ADD;
12331            RAISE FND_API.G_EXC_ERROR;
12332         END IF;
12333         --
12334         IF p_instance_rec.quantity IS NULL THEN
12335            FND_MESSAGE.Set_Name('CSI','CSI_API_MANDATORY_QUANTITY');
12336            FND_MSG_PUB.ADD;
12337            RAISE FND_API.G_EXC_ERROR;
12338         END IF;
12339         --
12340         IF p_instance_rec.unit_of_measure IS NULL THEN
12341            FND_MESSAGE.Set_Name('CSI','CSI_API_MANDATORY_UOM');
12342            FND_MSG_PUB.ADD;
12343            RAISE FND_API.G_EXC_ERROR;
12344         END IF;
12345         --
12346         -- validation for Inv Master Organization Id
12347         -- srramakr Bug 4163719. Master Organization can be changed under certain circumstances.
12348         -- For those customers who maintain multiple Inventory Master Oraganizations, shipping might
12349         -- happen from one org and RMA into another. Under these scenarios, the master organization
12350         -- will change. When this transaction lands in IB, we need to check the combination of
12351         -- Master org and Vld org and make the update. If the combination is not valid, we error out.
12352         --
12353         IF ((p_instance_rec.inv_master_organization_id IS NULL) OR
12354             (p_instance_rec.inv_master_organization_id <> FND_API.G_MISS_NUM)) THEN
12355            IF ((p_instance_rec.inv_master_organization_id IS NULL) OR
12356                (p_instance_rec.inv_master_organization_id <>
12357                                          l_curr_instance_rec.inv_master_organization_id)) THEN
12358 	       BEGIN
12359 		  SELECT  'x'
12360 		  INTO    l_temp
12361 		  FROM    mtl_parameters
12362 		  WHERE   organization_id = p_instance_rec.vld_organization_id
12363 		  AND     master_organization_id = p_instance_rec.inv_master_organization_id;
12364 	       EXCEPTION
12365 		 WHEN NO_DATA_FOUND THEN
12366 		   FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_VLD_MAST_COMB');
12367 		   FND_MSG_PUB.Add;
12368 		   RAISE FND_API.G_EXC_ERROR;
12369 	       END;
12370                /*****     FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12371                     FND_MESSAGE.Set_Token('COLUMN', 'INV_MASTER_ORGANIZATION_ID');
12372                     FND_MSG_PUB.ADD;
12373                     RAISE FND_API.G_EXC_ERROR; *****/
12374             END IF;
12375         END IF;
12376       --
12377 
12378 
12379          IF (p_instance_rec.location_id IS NULL OR
12380              p_instance_rec.location_id =fnd_api.g_miss_num)
12381          THEN
12382            IF p_instance_rec.location_type_code IN ('WIP','HR_LOCATIONS','PROJECT','IN_TRANSIT','PO','INTERNAL_SITE')
12383            THEN
12384             BEGIN
12385               SELECT location_id
12386                 INTO p_instance_rec.location_id
12387                 FROM hr_all_organization_units
12388                WHERE organization_id = p_instance_rec.vld_organization_id;
12389 
12390                l_get_instance_rec.location_id:=p_instance_rec.location_id;
12391 
12392             EXCEPTION
12393               WHEN NO_DATA_FOUND THEN
12394                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
12395                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12396                fnd_msg_pub.ADD;
12397 	           RAISE fnd_api.g_exc_error;
12398             END;
12399             IF p_instance_rec.location_id IS NULL
12400             THEN
12401                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
12402                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12403                fnd_msg_pub.ADD;
12404 	           RAISE fnd_api.g_exc_error;
12405             END IF;
12406            END IF;
12407          END IF;
12408 
12409          IF (p_instance_rec.install_location_id IS NULL OR
12410              p_instance_rec.install_location_id =fnd_api.g_miss_num)
12411          THEN
12412            IF p_instance_rec.install_location_type_code IN ('WIP','HR_LOCATIONS','PROJECT','IN_TRANSIT','PO','INTERNAL_SITE')
12413            THEN
12414             BEGIN
12415               SELECT location_id
12416                 INTO p_instance_rec.install_location_id
12417                 FROM hr_all_organization_units
12418                WHERE organization_id = p_instance_rec.vld_organization_id;
12419             EXCEPTION
12420               WHEN NO_DATA_FOUND THEN
12421                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
12422                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12423                fnd_msg_pub.ADD;
12424 	           RAISE fnd_api.g_exc_error;
12425             END;
12426             IF p_instance_rec.install_location_id IS NULL
12427             THEN
12428                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
12429                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12430                fnd_msg_pub.ADD;
12431 	           RAISE fnd_api.g_exc_error;
12432             END IF;
12433            END IF;
12434          END IF;
12435 
12436 
12437       -- End code addition for eam integration
12438 
12439       -- validation for Active Start Date
12440         IF ((p_instance_rec.active_start_date IS NULL) OR
12441             (p_instance_rec.active_start_date <> FND_API.G_MISS_DATE)) THEN
12442             IF ((p_instance_rec.active_start_date IS NULL) OR
12443                 (p_instance_rec.active_start_date <> l_curr_instance_rec.active_start_date)) THEN
12444                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12445                     FND_MESSAGE.Set_Token('COLUMN', 'ACTIVE_START_DATE');
12446                     FND_MSG_PUB.ADD;
12447                     RAISE FND_API.G_EXC_ERROR;
12448             END IF;
12449         END IF;
12450 
12451       -- validating the effective active end date for an End-dated Instance
12452         IF l_curr_instance_rec.active_end_date <= SYSDATE THEN
12453             IF (p_instance_rec.active_end_date = FND_API.G_MISS_DATE) OR
12454                (p_instance_rec.active_end_date < SYSDATE) THEN
12455               IF (p_instance_rec.check_for_instance_expiry = fnd_api.g_true) THEN
12456                   IF NOT (p_called_from_rel = fnd_api.g_true OR p_txn_rec.transaction_type_id = 401)
12457                   THEN
12458                          FND_MESSAGE.SET_NAME('CSI','CSI_API_CANT_UPD_EXP_ITEM');
12459                          FND_MSG_PUB.ADD;
12460                          RAISE FND_API.G_EXC_ERROR;
12461                   END IF;
12462               END IF;
12463             END IF;
12464         END IF;
12465 
12466       -- validating the effective active end date
12467         IF  ( p_instance_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE) THEN
12468              IF NOT(CSI_Item_Instance_vld_pvt.EndDate_Valid
12469                                  (l_curr_instance_rec.ACTIVE_START_DATE,
12470                                   p_instance_rec.ACTIVE_END_DATE ,
12471                                   p_instance_rec.INSTANCE_ID  ))  THEN
12472                 RAISE FND_API.G_EXC_ERROR;
12473              END IF;
12474         END IF;
12475 
12476        -- Validate if the instance status is being changed to
12477        -- a new status with a termination_flag set to 'Y'
12478        -- If so, then the end_date should be checked
12479        -- srramakr. Bug # 2180425. If the status is changed to a Terminated Status, then the
12480        -- active_end_date should be validated. We do not allow future date in this case.
12481        -- For past dates, there should not be any Transactions between the active_end_date and sysdate.
12482         IF  ( (p_instance_rec.instance_status_id <> FND_API.G_MISS_NUM)
12483             AND (p_instance_rec.instance_status_id IS NOT NULL)
12484             AND (p_instance_rec.instance_status_id <>
12485                       l_curr_instance_rec.instance_status_id)
12486             AND (CSI_Item_Instance_vld_pvt.val_inst_ter_flag
12487                     (p_instance_rec.instance_status_id)))
12488             THEN
12489               IF  ((p_instance_rec.ACTIVE_END_DATE IS NULL) OR
12490                    (p_instance_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE)) THEN
12491                    FND_MESSAGE.Set_Name('CSI', 'CSI_API_TER_DATE');
12492                    FND_MSG_PUB.ADD;
12493                    RAISE FND_API.G_EXC_ERROR;
12494               ELSIF p_instance_rec.ACTIVE_END_DATE < sysdate THEN
12495                  IF NOT(CSI_Item_Instance_vld_pvt.EndDate_Valid
12496                                  (l_curr_instance_rec.ACTIVE_START_DATE,
12497                                   p_instance_rec.ACTIVE_END_DATE ,
12498                                   p_instance_rec.INSTANCE_ID  ))  THEN
12499                     RAISE FND_API.G_EXC_ERROR;
12500                  END IF;
12501               ELSIF ((p_instance_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE) AND
12502                      (p_instance_rec.ACTIVE_END_DATE > sysdate)) THEN
12503                    FND_MESSAGE.Set_Name('CSI', 'CSI_API_FUTURE_DATE');
12504                    FND_MSG_PUB.ADD;
12505                    RAISE FND_API.G_EXC_ERROR;
12506               END IF;
12507         END IF;
12508 
12509         --
12510         -- Get the Required Inventory Attributes
12511         l_exists_flag := 'N';
12512         l_valid_flag := 'Y';
12513         IF p_item_attribute_tbl.count > 0 THEN
12514            FOR item_count in p_item_attribute_tbl.FIRST .. p_item_attribute_tbl.LAST
12515            LOOP
12516               IF p_item_attribute_tbl(item_count).inventory_item_id = l_get_instance_rec.inventory_item_id AND
12517                  p_item_attribute_tbl(item_count).organization_id = p_instance_rec.vld_organization_id AND
12518                  p_item_attribute_tbl(item_count).master_organization_id = l_get_instance_rec.inv_master_organization_id
12519               THEN
12520                  l_trackable_flag := p_item_attribute_tbl(item_count).trackable_flag;
12521                  l_rev_control := p_item_attribute_tbl(item_count).revision_control_code;
12522                  l_serial_control := p_item_attribute_tbl(item_count).serial_number_control_code;
12523                  l_lot_control := p_item_attribute_tbl(item_count).lot_control_code;
12524                  l_shelf_life_code := p_item_attribute_tbl(item_count).shelf_life_code;
12525                  l_uom_code := p_item_attribute_tbl(item_count).uom_code;
12526                  l_eam_item_type := p_item_attribute_tbl(item_count).eam_item_type;
12527                  l_equipment_type := p_item_attribute_tbl(item_count).equipment_type;
12528                  l_valid_flag := p_item_attribute_tbl(item_count).valid_flag;
12529                  l_exists_flag := 'Y';
12530                  EXIT;
12531               END IF;
12532            END LOOP;
12533            IF l_valid_flag = 'N' then
12534               FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
12535               FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',p_instance_rec.inventory_item_id);
12536               FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12537               FND_MSG_PUB.Add;
12538 	      RAISE fnd_api.g_exc_error;
12539            END IF;
12540         END IF;
12541         --
12542         -- if item does not exist in cache then get from database.
12543         IF l_exists_flag = 'N' THEN
12544            p_ins_count_rec.inv_count := p_ins_count_rec.inv_count + 1;
12545            p_item_attribute_tbl(p_ins_count_rec.inv_count).inventory_item_id := l_get_instance_rec.inventory_item_id;
12546            p_item_attribute_tbl(p_ins_count_rec.inv_count).organization_id := p_instance_rec.vld_organization_id;
12547            p_item_attribute_tbl(p_ins_count_rec.inv_count).master_organization_id := l_get_instance_rec.inv_master_organization_id;
12548            BEGIN
12549               SELECT comms_nl_trackable_flag
12550                     ,primary_uom_code
12551               INTO   l_trackable_flag
12552                     ,l_uom_code
12553               FROM   MTL_SYSTEM_ITEMS_B
12554               WHERE  inventory_item_id = l_get_instance_rec.inventory_item_id
12555               AND    organization_id = l_get_instance_rec.inv_master_organization_id
12556 	          AND    enabled_flag = 'Y'
12557 	          AND    nvl (start_date_active, sysdate) <= sysdate
12558 	          AND    nvl (end_date_active, sysdate+1) > sysdate;
12559               --
12560 	      p_item_attribute_tbl(p_ins_count_rec.inv_count).trackable_flag := l_trackable_flag;
12561 	      p_item_attribute_tbl(p_ins_count_rec.inv_count).uom_code := l_uom_code;
12562               p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'Y';
12563 	   EXCEPTION
12564 	      WHEN OTHERS THEN
12565                  p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'N';
12566 		 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
12567                  FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',l_get_instance_rec.inventory_item_id);
12568                  FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12569                  FND_MSG_PUB.Add;
12570 		 RAISE fnd_api.g_exc_error;
12571            END;
12572 
12573            --
12574      	   BEGIN
12575              SELECT revision_qty_control_code
12576                    ,serial_number_control_code
12577                    ,lot_control_code
12578                    ,shelf_life_code
12579                    ,eam_item_type
12580                    ,equipment_type
12581                INTO l_rev_control
12582                    ,l_serial_control
12583                    ,l_lot_control
12584                    ,l_shelf_life_code
12585                    ,l_eam_item_type
12586                    ,l_equipment_type
12587                FROM MTL_SYSTEM_ITEMS_B
12588               WHERE inventory_item_id = l_get_instance_rec.inventory_item_id
12589                 AND organization_id = p_instance_rec.vld_organization_id
12590                 AND enabled_flag = 'Y'
12591                 AND nvl (start_date_active, sysdate) <= sysdate
12592                 AND nvl (end_date_active, sysdate+1) > sysdate;
12593               --
12594               p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'Y';
12595               p_item_attribute_tbl(p_ins_count_rec.inv_count).revision_control_code := l_rev_control;
12596               p_item_attribute_tbl(p_ins_count_rec.inv_count).serial_number_control_code := l_serial_control;
12597               p_item_attribute_tbl(p_ins_count_rec.inv_count).lot_control_code := l_lot_control;
12598               p_item_attribute_tbl(p_ins_count_rec.inv_count).shelf_life_code := l_shelf_life_code;
12599               p_item_attribute_tbl(p_ins_count_rec.inv_count).eam_item_type := l_eam_item_type;
12600               p_item_attribute_tbl(p_ins_count_rec.inv_count).equipment_type := l_equipment_type;
12601  	   EXCEPTION
12602 	      WHEN OTHERS THEN
12603               p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'N';
12604               FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
12605               FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',l_get_instance_rec.inventory_item_id);
12606               FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12607               FND_MSG_PUB.Add;
12608               RAISE fnd_api.g_exc_error;
12609            END;
12610         END IF;
12611 
12612       -- Added following code for eam integration
12613       -- Check if the item is a rebuildable or an asset group
12614 
12615         IF csi_item_instance_vld_pvt.Check_for_eam_item
12616            (p_inventory_item_id  => p_instance_rec.inventory_item_id,
12617             p_organization_id    => p_instance_rec.vld_organization_id,
12618             p_eam_item_type      => l_eam_item_type)
12619         THEN
12620           l_eam_item := TRUE;
12621         END IF;
12622 
12623          IF (
12624              ((p_instance_rec.network_asset_flag IS NULL AND
12625                l_curr_instance_rec.network_asset_flag IS NOT NULL) OR
12626               (p_instance_rec.network_asset_flag <> fnd_api.g_miss_char AND
12627                NVL(p_instance_rec.network_asset_flag,fnd_api.g_miss_char) <>
12628                NVL(l_curr_instance_rec.network_asset_flag,fnd_api.g_miss_char)))
12629               OR
12630              ((p_instance_rec.maintainable_flag IS NULL AND
12631                l_curr_instance_rec.maintainable_flag IS NOT NULL) OR
12632               (p_instance_rec.maintainable_flag <> fnd_api.g_miss_char AND
12633                NVL(p_instance_rec.maintainable_flag,fnd_api.g_miss_char) <>
12634                NVL(l_curr_instance_rec.maintainable_flag,fnd_api.g_miss_char)))
12635               OR
12636              ((p_instance_rec.pn_location_id IS NULL AND
12637                l_curr_instance_rec.pn_location_id IS NOT NULL) OR
12638               (p_instance_rec.pn_location_id <> fnd_api.g_miss_num AND
12639                NVL(p_instance_rec.pn_location_id,fnd_api.g_miss_num) <>
12640                NVL(l_curr_instance_rec.pn_location_id,fnd_api.g_miss_num)))
12641               OR
12642              ((p_instance_rec.asset_criticality_code IS NULL AND
12643                l_curr_instance_rec.asset_criticality_code IS NOT NULL) OR
12644               (p_instance_rec.asset_criticality_code <> fnd_api.g_miss_char AND
12645                NVL(p_instance_rec.asset_criticality_code,fnd_api.g_miss_char) <>
12646                NVL(l_curr_instance_rec.asset_criticality_code,fnd_api.g_miss_char)))
12647               OR
12648              ((p_instance_rec.category_id IS NULL AND
12649                l_curr_instance_rec.category_id IS NOT NULL) OR
12650               (p_instance_rec.category_id <> fnd_api.g_miss_num AND
12651                NVL(p_instance_rec.category_id,fnd_api.g_miss_num) <>
12652                NVL(l_curr_instance_rec.category_id,fnd_api.g_miss_num)))
12653               OR
12654              ((p_instance_rec.equipment_gen_object_id IS NULL AND
12655                l_curr_instance_rec.equipment_gen_object_id IS NOT NULL) OR
12656               (p_instance_rec.equipment_gen_object_id <> fnd_api.g_miss_num AND
12657                NVL(p_instance_rec.equipment_gen_object_id,fnd_api.g_miss_num) <>
12658                NVL(l_curr_instance_rec.equipment_gen_object_id,fnd_api.g_miss_num)))
12659               OR
12660              ((p_instance_rec.linear_location_id IS NULL AND
12661                l_curr_instance_rec.linear_location_id IS NOT NULL) OR
12662               (p_instance_rec.linear_location_id <> fnd_api.g_miss_num AND
12663                NVL(p_instance_rec.linear_location_id,fnd_api.g_miss_num) <>
12664                NVL(l_curr_instance_rec.linear_location_id,fnd_api.g_miss_num)))
12665               OR
12666              ((p_instance_rec.operational_log_flag IS NULL AND
12667                l_curr_instance_rec.operational_log_flag IS NOT NULL) OR
12668               (p_instance_rec.operational_log_flag <> fnd_api.g_miss_char AND
12669                NVL(p_instance_rec.operational_log_flag,fnd_api.g_miss_char) <>
12670                NVL(l_curr_instance_rec.operational_log_flag,fnd_api.g_miss_char)))
12671               OR
12672              ((p_instance_rec.checkin_status IS NULL AND
12673                l_curr_instance_rec.checkin_status IS NOT NULL) OR
12674               (p_instance_rec.checkin_status <> fnd_api.g_miss_num AND
12675                NVL(p_instance_rec.checkin_status,fnd_api.g_miss_num) <>
12676                NVL(l_curr_instance_rec.checkin_status,fnd_api.g_miss_num)))
12677               OR
12678              ((p_instance_rec.supplier_warranty_exp_date IS NULL AND
12679                l_curr_instance_rec.supplier_warranty_exp_date IS NOT NULL) OR
12680               (p_instance_rec.supplier_warranty_exp_date <> fnd_api.g_miss_date AND
12681                NVL(p_instance_rec.supplier_warranty_exp_date,fnd_api.g_miss_date) <>
12682                NVL(l_curr_instance_rec.supplier_warranty_exp_date,fnd_api.g_miss_date)))
12683             )
12684          THEN
12685           IF l_eam_item
12686           THEN
12687            IF NOT eam_assetnumber_pub.validate_fields
12688             (p_current_organization_id    => p_instance_rec.vld_organization_id
12689             ,p_inventory_item_id          => l_get_instance_rec.inventory_item_id
12690             ,p_serial_number              => l_get_instance_rec.serial_number
12691             ,p_network_asset_flag         => p_instance_rec.network_asset_flag
12692             ,p_maintainable_flag          => p_instance_rec.maintainable_flag
12693             ,p_pn_location_id             => p_instance_rec.pn_location_id
12694             ,p_asset_criticality_code     => p_instance_rec.asset_criticality_code
12695             ,p_category_id                => p_instance_rec.category_id
12696             ,p_equipment_object_id        => p_instance_rec.equipment_gen_object_id
12697             ,p_eam_linear_id              => p_instance_rec.linear_location_id
12698             ,p_operational_log_flag       => p_instance_rec.operational_log_flag
12699             ,p_checkin_status             => p_instance_rec.checkin_status
12700             ,p_supplier_warranty_exp_date => p_instance_rec.supplier_warranty_exp_date
12701             ,p_owning_department_id       => NULL
12702             ,x_reason_failed              => l_reason_failed
12703             ,x_token                      => l_token
12704             )
12705            THEN
12706            -- FND_MESSAGE.SET_NAME('CSI', l_reason_failed); -- commented for bug 5351886
12707            -- FND_MSG_PUB.Add;                              -- commented for bug 5351886
12708             csi_gen_utility_pvt.put_line('Call to eam_assetnumber_pub.validate_fields failed with following reason');
12709             csi_gen_utility_pvt.put_line(l_reason_failed);
12710             RAISE FND_API.G_EXC_ERROR;
12711            END IF;
12712           ELSE
12713             FND_MESSAGE.SET_NAME('CSI', 'CSI_NON_EAM_ITEM');
12714             FND_MSG_PUB.Add;
12715             RAISE FND_API.G_EXC_ERROR;
12716           END IF;
12717     END IF;
12718 
12719     -- Validate System
12720     IF l_get_instance_rec.system_id IS NOT NULL AND
12721        l_get_instance_rec.system_id <> FND_API.G_MISS_NUM THEN
12722        IF NOT csi_Item_Instance_Vld_pvt.Is_Valid_System_id(
12723                         l_get_instance_rec.system_id) THEN
12724           FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_SYSTEM_ID');
12725           FND_MESSAGE.SET_TOKEN('SYSTEM_ID',l_get_instance_rec.system_id);
12726           FND_MSG_PUB.Add;
12727           RAISE FND_API.G_EXC_ERROR;
12728        END IF;
12729     END IF;
12730     --
12731     -- Lot Number Validation
12732     -- srramakr Mandated Lot Number validation irrespective of the update.
12733     -- Irrespective whether the item instance is standalone or component, lot number create/validation
12734     -- will be performed. This is because unlike serial control, lot control does not depend on
12735     -- instance location.
12736     IF l_get_instance_rec.lot_number IS NOT NULL AND
12737        l_get_instance_rec.lot_number <> FND_API.G_MISS_CHAR
12738     THEN
12739        csi_gen_utility_pvt.put_line('Calling Validate_Lot_Number..');
12740        -- Added for Bug# 4011408
12741        csi_Item_Instance_Vld_pvt.Validate_Lot_Number
12742                (
12743                  p_inv_org_id               => p_instance_rec.vld_organization_id,
12744                  p_inv_item_id              => l_get_instance_rec.inventory_item_id ,
12745                  p_lot_number               => l_get_instance_rec.lot_number,
12746                  p_mfg_serial_number_flag   => l_get_instance_rec.mfg_serial_number_flag,
12747                  p_txn_rec                  => p_txn_rec,
12748                  p_creation_complete_flag   => l_get_instance_rec.creation_complete_flag,
12749                  l_return_value             => l_return_value,
12750                  p_lot_control_code         => l_lot_control
12751                );
12752        IF l_return_value = FALSE THEN
12753           RAISE fnd_api.g_exc_error;
12754        END IF;
12755        -- Commented for Bug# 4011408 since Validate_Lot_Number will do the basic validation
12756        --
12757        -- Validates the lot uniqueness and creates lot numbers in MLNs for manually created Instances
12758        -- Bug# 4011408
12759        csi_gen_utility_pvt.put_line('Calling Create_Lot routine in Update_Item_Instance API...');
12760        csi_item_instance_vld_pvt.Create_Lot
12761 	  (
12762 	    p_inv_org_id                 =>  p_instance_rec.vld_organization_id,
12763 	    p_inv_item_id                =>  l_get_instance_rec.inventory_item_id,
12764 	    p_lot_number                 =>  l_get_instance_rec.lot_number,
12765             p_shelf_life_code            =>  l_shelf_life_code,
12766 	    p_instance_id                =>  l_get_instance_rec.instance_id,
12767 	    l_return_value               =>  l_return_value
12768 	  );
12769        IF l_return_value = FALSE THEN
12770 	  RAISE fnd_api.g_exc_error;
12771        END IF;
12772     END IF;
12773     --
12774 
12775 --start code fix for 6176621
12776 
12777     IF l_serial_control not in (2, 5) and l_part_or_serial_change THEN
12778  	       FND_MESSAGE.SET_NAME('CSI','CSI_API_CANNOT_UPD_SRL');
12779  	       FND_MSG_PUB.Add;
12780  	       RAISE FND_API.g_exc_error;
12781  	     END IF;
12782 
12783 		--end code fix for 6176621
12784 
12785     -- Updating a Serial Number to NULL is not allowed.
12786     IF l_curr_instance_rec.serial_number IS NOT NULL AND
12787        p_instance_rec.serial_number IS NULL THEN
12788        FND_MESSAGE.SET_NAME('CSI','CSI_API_CANNOT_UPD_SRL_NULL');
12789        FND_MSG_PUB.Add;
12790        RAISE FND_API.G_EXC_ERROR;
12791     END IF;
12792     --
12793     -- Serial number changes for CMRO
12794     -- Need to handle NULL to NOT NULL Serial Number
12795     IF p_instance_rec.serial_number IS NOT NULL AND
12796        p_instance_rec.serial_number <> fnd_api.g_miss_char AND
12797        p_instance_rec.serial_number <> nvl(l_curr_instance_rec.serial_number,fnd_api.g_miss_char)
12798     THEN
12799        csi_gen_utility_pvt.put_line('before csi_item_instance_vld_pvt.validate_serial_for_upd');
12800        csi_item_instance_vld_pvt.validate_serial_for_upd(
12801           p_instance_rec       => l_get_instance_rec,
12802           p_txn_rec            => p_txn_rec,
12803           p_old_serial_number  => l_curr_instance_rec.serial_number,
12804           x_return_status      => l_return_status);
12805 
12806        IF l_return_status = fnd_api.g_ret_sts_error THEN
12807           RAISE fnd_api.g_exc_error;
12808        END IF;
12809     END IF;
12810     --
12811     -- Since serial_number can't be updated to NULL the OR condition has been changed.
12812     -- With this, if p_instance_rec has a valid value then we call the serial validation routines.
12813     --
12814     -- Earlier, we were by-passing Create_Serial routine for components. This reason being Create_serial
12815     -- routine was inserting the serial number into MSN with current status as 3 (In Stores) if the
12816     -- location type is INVENTORY. For components, location type could become INVENTORY if the parent
12817     -- is received into INV. Under these cases if the serial number is inserted with status 3 then
12818     -- it would become un-usable when transacted standalone.
12819     -- Since Create_Serial routine has been fixed and we always create the serial# with status 4, we can
12820     -- call this routine for components.
12821     -- Moreover serial number could get updated for components. Under these cases, create_serial should be
12822     -- called. Otherwise, INV and IB will go out of synch.
12823     --
12824     l_ins_flag := FND_API.G_FALSE;
12825 
12826     IF l_get_instance_rec.serial_number IS NOT NULL AND
12827        l_get_instance_rec.serial_number <> FND_API.G_MISS_CHAR
12828     THEN
12829        csi_gen_utility_pvt.put_line('Calling Create_Serial...');
12830        csi_item_instance_vld_pvt.Create_Serial (
12831                          p_inv_org_id         =>  p_instance_rec.vld_organization_id,
12832                          p_inv_item_id        =>  l_get_instance_rec.inventory_item_id,
12833                          p_serial_number      =>  l_get_instance_rec.serial_number,
12834                          p_mfg_srl_num_flag   =>  l_get_instance_rec.mfg_serial_number_flag,
12835                          p_location_type_code =>  l_get_instance_rec.location_type_code,
12836                          p_ins_flag           =>  l_ins_flag,
12837                          p_lot_number         =>  l_get_instance_rec.lot_number,
12838                          p_gen_object_id      =>  l_gen_object_id,
12839                          l_return_value       =>  l_return_value);
12840 
12841            IF l_eam_item AND
12842               l_equipment_type = 1
12843            THEN
12844               p_instance_rec.equipment_gen_object_id := l_gen_object_id;
12845            END IF;
12846 
12847            IF l_return_value = FALSE
12848            THEN
12849               RAISE fnd_api.g_exc_error;
12850            ELSE
12851               p_instance_rec.mfg_serial_number_flag := 'Y';
12852            END IF;
12853 
12854            IF l_eam_item
12855            THEN
12856                IF p_instance_rec.network_asset_flag IS NULL OR
12857                   p_instance_rec.network_asset_flag = fnd_api.g_miss_char
12858                THEN
12859                   l_network_asset_flag := l_curr_instance_rec.network_asset_flag;
12860                ELSE
12861                   l_network_asset_flag := p_instance_rec.network_asset_flag;
12862                END IF;
12863 
12864                IF p_instance_rec.pn_location_id IS NULL OR
12865                   p_instance_rec.pn_location_id = fnd_api.g_miss_num
12866                THEN
12867                   l_pn_location_id := l_curr_instance_rec.pn_location_id;
12868                ELSE
12869                   l_pn_location_id := p_instance_rec.pn_location_id;
12870                END IF;
12871 
12872             csi_gen_utility_pvt.put_line( 'Calling eam_common_utilities_pvt.update_logical_asset...');
12873             csi_gen_utility_pvt.put_line( 'Inventory_item_id is       :'||l_get_instance_rec.inventory_item_id);
12874             csi_gen_utility_pvt.put_line( 'Serial_number is           :'||l_get_instance_rec.serial_number);
12875             csi_gen_utility_pvt.put_line( 'Network_asset_flag is      :'||l_network_asset_flag);
12876             csi_gen_utility_pvt.put_line( 'Pn_location_id is          :'||l_pn_location_id);
12877 			csi_gen_utility_pvt.put_line( 'Equipment_gen_object_id is :'||p_instance_rec.equipment_gen_object_id);
12878              eam_common_utilities_pvt.update_logical_asset
12879                ( p_inventory_item_id       => l_get_instance_rec.inventory_item_id
12880                 ,p_serial_number           => l_get_instance_rec.serial_number
12881                 ,p_network_asset_flag      => l_network_asset_flag
12882                 ,p_pn_location_id          => l_pn_location_id
12883                 ,p_equipment_gen_object_id => p_instance_rec.equipment_gen_object_id
12884                 ,x_return_status           => x_return_status
12885                 );
12886 
12887 	         IF NOT (x_return_status = FND_API.G_RET_STS_SUCCESS)
12888 			 THEN
12889 			    csi_gen_utility_pvt.put_line( 'Error from eam_common_utilities_pvt.update_logical_asset...');
12890 	            RAISE fnd_api.g_exc_error;
12891 	         END IF;
12892            END IF;
12893 
12894     END IF;
12895     --
12896     -- Mandated serial# uniqueness check irrespective of any change made to Item Instance.
12897     -- Because of Serial Update requrement, Update_serial_number has been moved out the IF condition
12898     -- catering to Create_Serial.
12899     -- If this is a component item instance then we just validate the serial uniqueness
12900     --
12901     IF l_get_instance_rec.serial_number IS NOT NULL AND
12902        l_get_instance_rec.serial_number <> FND_API.G_MISS_CHAR
12903     THEN
12904        IF nvl(l_get_instance_rec.instance_usage_code,'$#$') <> 'IN_RELATIONSHIP' THEN
12905 	  csi_gen_utility_pvt.put_line('Calling Validate_Srl_Num_for_Inst_Upd');
12906 	  csi_Item_Instance_Vld_pvt.Validate_Srl_Num_for_Inst_Upd(
12907 	     p_inv_org_id               => p_instance_rec.vld_organization_id,
12908 	     p_inv_item_id              => l_get_instance_rec.inventory_item_id , -- l_get
12909 	     p_serial_number            => l_get_instance_rec.serial_number,
12910 	     p_mfg_serial_number_flag   => l_get_instance_rec.mfg_serial_number_flag, -- l_get
12911 	     p_txn_rec                  => p_txn_rec,
12912 	     p_location_type_code       => l_get_instance_rec.location_type_code,
12913 	     p_srl_control_code         => l_serial_control,
12914 	     p_instance_usage_code      => l_get_instance_rec.instance_usage_code,
12915 	     p_instance_id              => p_instance_rec.instance_id,
12916 	     l_return_value             => l_return_value);
12917 	  IF l_return_value = FALSE THEN
12918  	     RAISE fnd_api.g_exc_error;
12919 	  END IF;
12920        ELSE -- If this is a component then just validate serial uniqueness
12921 	  csi_Item_Instance_Vld_pvt.Validate_ser_uniqueness
12922 	    ( p_inv_org_id      => p_instance_rec.vld_organization_id
12923 	     ,p_inv_item_id     => l_get_instance_rec.inventory_item_id
12924 	     ,p_serial_number   => l_get_instance_rec.serial_number
12925 	     ,p_instance_id     => p_instance_rec.instance_id
12926 	     ,l_return_value    => l_return_value
12927 	    );
12928 	  IF l_return_value = FALSE THEN
12929 	     fnd_message.set_name('CSI','CSI_FAIL_UNIQUENESS');
12930 	     fnd_msg_pub.add;
12931 	     RAISE fnd_api.g_exc_error;
12932 	  END IF;
12933        END IF;
12934     END IF;
12935     --
12936      -- Transaction sequencing check
12937      IF l_get_instance_rec.serial_number IS NOT NULL AND
12938         l_get_instance_rec.serial_number <> FND_API.G_MISS_CHAR AND
12939         l_ins_flag = FND_API.G_FALSE THEN
12940         l_check_instance_rec.instance_id := p_instance_rec.instance_id;
12941         l_check_instance_rec.inventory_item_id := l_get_instance_rec.inventory_item_id;
12942         l_check_instance_rec.serial_number := l_get_instance_rec.serial_number;
12943         l_check_instance_rec.lot_number := l_get_instance_rec.lot_number;
12944         l_check_instance_rec.last_txn_line_detail_id := p_instance_rec.last_txn_line_detail_id;
12945         csi_gen_utility_pvt.put_line('Calling Check_Prior_Txn');
12946         csi_Item_Instance_Vld_pvt.Check_Prior_Txn
12947                   (
12948                     p_instance_rec              => l_check_instance_rec
12949                    ,p_txn_rec                   => p_txn_rec
12950                    ,p_prior_txn_id              => l_prior_txn_id
12951                    ,p_mode                      => 'UPDATE'
12952                    ,x_return_status             => x_return_status
12953                   );
12954         IF NOT (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
12955            RAISE fnd_api.g_exc_error;
12956         END IF;
12957      END IF;
12958      --
12959       -- Revision Number Validation
12960       IF nvl(l_get_instance_rec.instance_usage_code,'$#$') <> 'IN_RELATIONSHIP' THEN
12961          IF l_get_instance_rec.inventory_revision IS NOT NULL AND
12962             l_get_instance_rec.inventory_revision <> FND_API.G_MISS_CHAR
12963          THEN
12964             csi_gen_utility_pvt.put_line('Calling Update_Revision');
12965             csi_item_instance_vld_pvt.Update_Revision
12966                (
12967                  p_inv_item_id              => l_get_instance_rec.inventory_item_id ,
12968                  p_inv_org_id               => p_instance_rec.vld_organization_id,
12969                  p_revision                 => l_get_instance_rec.inventory_revision,
12970                  l_return_value             => l_return_value,
12971                  p_rev_control_code         => l_rev_control
12972                );
12973 
12974             IF l_return_value = FALSE THEN
12975                RAISE fnd_api.g_exc_error;
12976             END IF;
12977          END IF;
12978       END IF;
12979       --quantity validation
12980         IF ((p_instance_rec.quantity <> FND_API.G_MISS_NUM ) AND
12981             (p_instance_rec.quantity IS NOT NULL ))THEN
12982            IF p_instance_rec.quantity <> l_curr_instance_rec.quantity THEN
12983              IF NOT csi_Item_Instance_Vld_pvt.Is_Quantity_Valid(
12984                          p_instance_id         => p_instance_rec.instance_id,
12985                          p_inv_organization_id => p_instance_rec.vld_organization_id,
12986                          p_quantity            => l_get_instance_rec.quantity ,
12987                          p_serial_control_code => l_serial_control,
12988                          p_location_type_code  => l_get_instance_rec.location_type_code,
12989                          p_csi_txn_type_id     => p_txn_rec.transaction_type_id,
12990                          p_current_qty         => l_curr_instance_rec.quantity,
12991                          p_flag                => 'UPDATE'
12992                          )
12993              THEN
12994                     RAISE fnd_api.g_exc_error;
12995              END IF;
12996            END IF;
12997         END IF;
12998         IF nvl(l_get_instance_rec.instance_usage_code,'$#$') <> 'IN_RELATIONSHIP' THEN
12999            IF p_instance_rec.vld_organization_id <> l_cur_instance_rec.last_vld_organization_id
13000            THEN
13001               csi_item_instance_vld_pvt.validate_org_dependent_params
13002               ( p_instance_rec   => l_get_instance_rec,
13003                 p_txn_rec        => p_txn_rec,
13004                 l_return_value   => l_return_value
13005               );
13006 
13007               IF l_return_value = FALSE
13008               THEN
13009                  FND_MESSAGE.Set_Name('CSI', 'CSI_CHANGE_VLD_ORG');
13010                  FND_MSG_PUB.ADD;
13011                  RAISE FND_API.G_EXC_ERROR;
13012               END IF;
13013            END IF;
13014         END IF;
13015 
13016       --Unit of measure validation
13017         IF ((p_instance_rec.unit_of_measure <> FND_API.G_MISS_CHAR) AND
13018             (p_instance_rec.unit_of_measure IS NOT NULL)) THEN
13019             IF ((p_instance_rec.unit_of_measure <> l_curr_instance_rec.unit_of_measure)
13020              AND (p_instance_rec.unit_of_measure <> l_uom_code)) THEN
13021               csi_item_instance_vld_pvt.Is_Valid_Uom
13022                  (
13023                    p_inv_org_id               => l_get_instance_rec.inv_master_organization_id, -- srramakr
13024                    p_inv_item_id              => l_get_instance_rec.inventory_item_id , --l_get
13025                    p_uom_code                 => p_instance_rec.unit_of_measure,
13026                    p_quantity                 => l_get_instance_rec.quantity, --l_get
13027                    p_creation_complete_flag   => l_get_instance_rec.creation_complete_flag, --l_get
13028                    l_return_value             => l_return_value
13029                  );
13030                IF l_return_value = FALSE THEN
13031                    RAISE FND_API.G_EXC_ERROR;
13032                END IF;
13033              END IF;
13034          END IF;
13035 
13036        --validation for accounting classification_code if
13037        --p_instance_rec.accounting_class_code is NULL OR <> FND_API.G_MISS_CHAR
13038        IF  ((p_instance_rec.accounting_class_code IS NULL) OR
13039             (p_instance_rec.accounting_class_code <> FND_API.G_MISS_CHAR)) THEN
13040             csi_item_instance_vld_pvt.get_valid_acct_class
13041                                ( p_instance_id            => p_instance_rec.instance_id
13042                                 ,p_curr_acct_class_code   => l_get_instance_rec.accounting_class_code
13043                                 ,p_loc_type_code          => l_get_instance_rec.location_type_code
13044                                 ,x_acct_class_code        => l_acct_class_code
13045                                );
13046           IF   (p_instance_rec.accounting_class_code IS NULL)
13047           THEN
13048           -- The following code has been commented for bug 4906588
13049           /*
13050              IF l_eam_item
13051              THEN
13052                 p_instance_rec.accounting_class_code := 'ASSET';
13053              ELSE
13054             */
13055                 p_instance_rec.accounting_class_code  := l_acct_class_code;
13056           --   END IF;
13057           ELSE
13058             IF (p_instance_rec.accounting_class_code <> l_acct_class_code) THEN
13059                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ACCOUNT_CLASS');
13060                   FND_MSG_PUB.Add;
13061                   RAISE FND_API.G_EXC_ERROR;
13062             END IF;
13063           END IF; -- not null
13064 
13065        END IF; -- not G_MISS
13066 
13067        --if the quantity is changing from something to '0' then
13068        --we change end_date to sysdate and status to 'expired'
13069          IF (p_instance_rec.quantity = 0 AND l_curr_instance_rec.quantity <> 0) THEN
13070              -- Bug 3804960 Need to honor the passed active_end_date
13071              IF p_instance_rec.active_end_date IS NULL OR
13072                 p_instance_rec.active_end_date = FND_API.G_MISS_DATE OR
13073                 p_instance_rec.active_end_date > SYSDATE THEN
13074                 p_instance_rec.active_end_date := SYSDATE;
13075               END IF;
13076               -- End of 3804960
13077               -- p_instance_rec.instance_status_id := 1; -- Commented for bug 3179587
13078               -- The following changes were made for bug 3179587.
13079               -- When update_item_instance is called with a status that has terminated_flag set to 'Y'
13080               -- then the API should assign passed status. If the passed status doesn't have
13081               -- terminated_flag set to 'Y', then by default the status will be updated with an expired status.
13082                IF p_instance_rec.instance_status_id IS NOT NULL AND
13083                   p_instance_rec.instance_status_id <> fnd_api.g_miss_num AND
13084                   (CSI_Item_Instance_vld_pvt.val_inst_ter_flag
13085                    (p_instance_rec.instance_status_id))
13086                THEN
13087                   NULL;
13088                ELSE
13089                  p_instance_rec.instance_status_id := 1;
13090                END IF;
13091          END IF;
13092 
13093        -- if the quantity is changing from '0' to '0' or fnd_api.g_miss_num, and at the same time
13094        -- if also the end_date is changing to 'NULL' or ' > SYSDATE', then the instance cannot be un-expired
13095          IF (l_curr_instance_rec.quantity = 0)
13096           AND ((p_instance_rec.quantity = 0) OR (p_instance_rec.quantity = FND_API.G_MISS_NUM))
13097           AND ((p_instance_rec.active_end_date IS NULL) OR (p_instance_rec.active_end_date > SYSDATE))
13098          THEN
13099               FND_MESSAGE.Set_Name('CSI', 'CSI_API_CANNOT_UNEXPIRE');
13100               FND_MSG_PUB.ADD;
13101               RAISE FND_API.G_EXC_ERROR;
13102          END IF;
13103 
13104        -- added by rtalluri for Bugfix 2318211 on 04/16/02
13105        --if the end_date is changing from sysdate or a past date to 'null' or a future date,
13106        -- and if instance status is expired then change the status to null
13107          IF ((l_curr_instance_rec.active_end_date IS NOT NULL) AND
13108              (l_curr_instance_rec.active_end_date <= SYSDATE)) THEN
13109             IF ((p_instance_rec.active_end_date IS NULL ) OR
13110                ((p_instance_rec.active_end_date > SYSDATE) AND
13111                 (p_instance_rec.active_end_date <> FND_API.G_MISS_DATE))) THEN
13112                IF (p_instance_rec.instance_status_id = NULL OR
13113                    p_instance_rec.instance_status_id = FND_API.G_MISS_NUM) THEN
13114                    p_instance_rec.instance_status_id := 510;
13115                ELSIF
13116                   (p_instance_rec.instance_status_id IS NOT NULL AND
13117                    p_instance_rec.instance_status_id <> FND_API.G_MISS_NUM)
13118                THEN
13119                     IF (CSI_Item_Instance_vld_pvt.val_inst_ter_flag   --added first change
13120                                 (l_get_instance_rec.instance_status_id))
13121                     THEN
13122                         FND_MESSAGE.Set_Name('CSI', 'CSI_API_INVALID_STATUS');
13123                         FND_MSG_PUB.ADD;
13124                         RAISE FND_API.G_EXC_ERROR;
13125                     END IF;
13126                END IF;
13127             END IF;
13128          END IF;
13129        -- end of addition by rtalluri for Bugfix 2318211 on 04/16/02
13130 
13131 --validation for the instance condition id
13132          l_valid_flag := 'Y';
13133          l_exists_flag := 'N';
13134          If ((p_instance_rec.instance_condition_id is not null) AND
13135              (p_instance_rec.instance_condition_id <> FND_API.G_MISS_NUM) AND
13136              (p_instance_rec.instance_condition_id <> l_curr_instance_rec.instance_condition_id))
13137          THEN
13138             if p_generic_id_tbl.count > 0 then
13139                For gen_count in p_generic_id_tbl.FIRST .. p_generic_id_tbl.LAST
13140                Loop
13141                   if p_generic_id_tbl(gen_count).generic_id = p_instance_rec.instance_condition_id AND
13142                      p_generic_id_tbl(gen_count).id_type = 'INS_CONDITION' then
13143                      l_valid_flag := p_generic_id_tbl(gen_count).valid_flag;
13144                      l_exists_flag := 'Y';
13145                      exit;
13146                   end if;
13147                End Loop;
13148                --
13149                if l_valid_flag <> 'Y' then
13150                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM_CONDITION');
13151                   FND_MESSAGE.SET_TOKEN('INSTANCE_CONDITION_ID',p_instance_rec.instance_condition_id);
13152                   FND_MSG_PUB.Add;
13153                   RAISE fnd_api.g_exc_error;
13154                end if;
13155             end if;
13156             --
13157 	       if l_exists_flag = 'N' then
13158                p_ins_count_rec.generic_count := p_ins_count_rec.generic_count + 1;
13159                p_generic_id_tbl(p_ins_count_rec.generic_count).generic_id := p_instance_rec.instance_condition_id;
13160                p_generic_id_tbl(p_ins_count_rec.generic_count).id_type := 'INS_CONDITION';
13161                         csi_item_instance_vld_pvt.Is_Valid_Condition
13162                              (
13163                                p_instance_condition_id  => p_instance_rec.instance_condition_id,
13164                                p_creation_complete_flag => l_get_instance_rec.creation_complete_flag, -- l_get
13165                                l_return_value           => l_return_value
13166                               );
13167  	                  IF l_return_value = FALSE THEN
13168                          p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'N';
13169 		                 RAISE fnd_api.g_exc_error;
13170                        ELSE
13171                          p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'Y';
13172 	                END IF;
13173            end if;
13174          end if;
13175          --
13176         OPEN party_owner_rec(p_instance_rec.instance_id);
13177         FETCH party_owner_rec INTO l_party_owner_rec;
13178               IF NOT (csi_item_instance_vld_pvt.Validate_Uniqueness
13179                                              (p_instance_rec     => l_get_instance_rec,
13180                                               p_party_rec        => l_party_owner_rec,
13181                                               p_srl_control_code => l_serial_control,
13182                                               p_csi_txn_type_id  => p_txn_rec.transaction_type_id))
13183               THEN
13184                   RAISE FND_API.G_EXC_ERROR;
13185               END IF;
13186         CLOSE party_owner_rec;
13187 
13188 --validation for the instance type
13189          l_valid_flag := 'Y';
13190          l_exists_flag := 'N';
13191          IF ((p_instance_rec.instance_type_code <> FND_API.G_MISS_CHAR) AND
13192              (p_instance_rec.instance_type_code IS NOT NULL) AND
13193              (p_instance_rec.instance_type_code <> l_curr_instance_rec.instance_type_code)) THEN
13194             If p_lookup_tbl.count > 0 then
13195                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
13196                Loop
13197                   if p_lookup_tbl(lookup_count).lookup_type = 'INSTANCE_TYPE' AND
13198                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.instance_type_code then
13199                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
13200                      l_exists_flag := 'Y';
13201                      exit;
13202                   end if;
13203                End Loop;
13204                --
13205                if l_valid_flag <> 'Y' then
13206                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INSTANCE_TYPE');
13207                   FND_MESSAGE.SET_TOKEN('INSTANCE_TYPE_CODE',p_instance_rec.instance_type_code);
13208                   FND_MSG_PUB.Add;
13209                   RAISE fnd_api.g_exc_error;
13210                end if;
13211             End if;
13212             --
13213             If l_exists_flag <> 'Y' then
13214                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
13215                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'INSTANCE_TYPE';
13216                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.instance_type_code;
13217                        IF NOT csi_Item_Instance_Vld_pvt.Is_Valid_Instance_Type(
13218                                          p_instance_rec.instance_type_code) THEN
13219 
13220                           p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
13221                           RAISE fnd_api.g_exc_error;
13222                        ELSE
13223                           p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
13224                        END IF;
13225              End if;
13226           END IF;
13227 
13228 --validation for the instance usage code
13229          l_valid_flag := 'Y';
13230          l_exists_flag := 'N';
13231          IF ((p_instance_rec.instance_usage_code <> FND_API.G_MISS_CHAR) AND
13232              (p_instance_rec.instance_usage_code IS NOT NULL) AND
13233              (p_instance_rec.instance_usage_code <> l_curr_instance_rec.instance_usage_code)) THEN
13234             If p_lookup_tbl.count > 0 then
13235                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
13236                Loop
13237                   if p_lookup_tbl(lookup_count).lookup_type = 'INSTANCE_USAGE' AND
13238                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.instance_usage_code then
13239                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
13240                      l_exists_flag := 'Y';
13241                      exit;
13242                   end if;
13243                End Loop;
13244                --
13245                if l_valid_flag <> 'Y' then
13246                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_USAGE_CODE');
13247                   FND_MESSAGE.SET_TOKEN('INSTANCE_USAGE_CODE',p_instance_rec.instance_usage_code);
13248                   FND_MSG_PUB.Add;
13249                   RAISE fnd_api.g_exc_error;
13250                end if;
13251             End if;
13252             --
13253             If l_exists_flag <> 'Y' then
13254                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
13255                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'INSTANCE_USAGE';
13256                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.instance_usage_code;
13257                      IF NOT csi_Item_Instance_Vld_pvt.Valid_Inst_Usage_Code(
13258                                          p_instance_rec.instance_usage_code) THEN
13259                         p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
13260                         RAISE fnd_api.g_exc_error;
13261                      ELSE
13262                         p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
13263                      END IF;
13264             END IF;
13265          END IF;
13266 
13267    -- Addition of columns for FA Integration
13268    --validation for the operational status
13269          l_valid_flag := 'Y';
13270          l_exists_flag := 'N';
13271          IF ((p_instance_rec.operational_status_code IS NOT NULL) AND
13272              (p_instance_rec.operational_status_code <> FND_API.G_MISS_CHAR) AND
13273              (p_instance_rec.operational_status_code <> l_curr_instance_rec.operational_status_code)
13274              )
13275          THEN
13276             IF p_lookup_tbl.count > 0 THEN
13277                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
13278                LOOP
13279                   IF p_lookup_tbl(lookup_count).lookup_type = 'OPERATIONAL_STATUS' AND
13280                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.operational_status_code
13281                   THEN
13282                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
13283                      l_exists_flag := 'Y';
13284                      exit;
13285                   END IF;
13286                End Loop;
13287                --
13288                if l_valid_flag <> 'Y' then
13289                   FND_MESSAGE.SET_NAME('CSI','CSI_OPERATIONAL_STATUS_CODE');
13290                   FND_MESSAGE.SET_TOKEN('OPERATIONAL_STATUS_CODE',p_instance_rec.operational_status_code);
13291                   FND_MSG_PUB.Add;
13292                   RAISE fnd_api.g_exc_error;
13293                end if;
13294             End if;
13295             --
13296             IF l_exists_flag <> 'Y' THEN
13297                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
13298                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'OPERATIONAL_STATUS';
13299                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.operational_status_code;
13300                IF NOT csi_Item_Instance_Vld_pvt.Valid_operational_status(
13301                          p_instance_rec.operational_status_code) THEN
13302                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
13303                   RAISE fnd_api.g_exc_error;
13304                ELSE
13305                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
13306                END IF;
13307             END IF;
13308          ELSE
13309           IF p_instance_rec.operational_status_code IS NULL
13310           THEN
13311              p_instance_rec.operational_status_code:='NOT_USED';
13312           END IF;
13313          END IF;
13314 
13315  -- Following code has been added for operational_status_code
13316  -- If owner is Internal then
13317       l_int_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
13318       --
13319       IF l_int_party_id IS NULL THEN
13320         select internal_party_id
13321         into l_int_party_id
13322         from csi_install_parameters;
13323 
13324         IF l_int_party_id IS NULL THEN
13325          FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
13326          FND_MSG_PUB.ADD;
13327          RAISE FND_API.G_EXC_ERROR;
13328         END IF;
13329       END IF;
13330 
13331          IF p_instance_rec.owner_party_id IS NULL OR
13332             p_instance_rec.owner_party_id = fnd_api.g_miss_num
13333          THEN
13334              SELECT owner_party_id
13335                INTO p_instance_rec.owner_party_id
13336                FROM csi_item_instances
13337               WHERE instance_id=p_instance_rec.instance_id;
13338          END IF;
13339 
13340          IF p_instance_rec.owner_party_id = l_int_party_id
13341          THEN
13342             IF    l_get_instance_rec.location_type_code='INVENTORY'
13343             THEN
13344               IF  (p_instance_rec.operational_status_code IS NOT NULL AND
13345                    p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13346               AND l_curr_instance_rec.operational_status_code IN ('NOT_USED','INSTALLED','IN_SERVICE')
13347               AND p_instance_rec.operational_status_code <> 'OUT_OF_SERVICE'
13348               THEN
13349                   p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13350               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13351                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13352               AND l_curr_instance_rec.operational_status_code = 'OUT_OF_SERVICE'
13353               AND p_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE')
13354               THEN
13355                   p_instance_rec.operational_status_code := 'NOT_USED';
13356               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13357                    (l_curr_instance_rec.operational_status_code NOT IN
13358                     ('NOT_USED','OUT_OF_SERVICE','INSTALLED','IN_SERVICE'))
13359               THEN
13360                     p_instance_rec.operational_status_code := 'NOT_USED';
13361               END IF;
13362             ELSIF l_get_instance_rec.location_type_code IN ('WIP','IN_TRANSIT')
13363             THEN
13364               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13365                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13366               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13367               AND   l_curr_instance_rec.operational_status_code = 'NOT_USED'
13368               THEN
13369                     p_instance_rec.operational_status_code := 'NOT_USED';
13370               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13371                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13372               AND   p_instance_rec.operational_status_code <> 'OUT_OF_SERVICE'
13373               AND   l_curr_instance_rec.operational_status_code = 'OUT_OF_SERVICE'
13374               THEN
13375                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13376               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13377                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE'))
13378               THEN
13379                     p_instance_rec.operational_status_code := 'NOT_USED';
13380               END IF;
13381             ELSIF l_get_instance_rec.location_type_code ='VENDOR_SITE'
13382             THEN
13383               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13384                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13385               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13386               AND   l_curr_instance_rec.operational_status_code IN ('NOT_USED','OUT_OF_SERVICE')
13387               THEN
13388                     p_instance_rec.operational_status_code := 'NOT_USED';
13389               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13390                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE'))
13391               THEN
13392                     p_instance_rec.operational_status_code := 'NOT_USED';
13393               END IF;
13394             ELSIF l_get_instance_rec.location_type_code ='HZ_LOCATIONS'
13395             THEN
13396               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13397                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13398               AND   p_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13399               AND   l_curr_instance_rec.operational_status_code IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13400               THEN
13401                     p_instance_rec.operational_status_code := 'NOT_USED';
13402               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13403                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE'))
13404               THEN
13405                     p_instance_rec.operational_status_code := 'NOT_USED';
13406               END IF;  --HZ_PARTY_SITES
13407             ELSIF l_get_instance_rec.location_type_code ='HZ_PARTY_SITES'
13408             THEN
13409               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13410                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13411               AND   p_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13412               AND   l_curr_instance_rec.operational_status_code IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE')
13413               THEN
13414                     p_instance_rec.operational_status_code := 'NOT_USED';
13415               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13416                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE'))
13417               THEN
13418                     p_instance_rec.operational_status_code := 'NOT_USED';
13419               END IF;
13420             ELSIF l_get_instance_rec.location_type_code = 'PROJECT'
13421             THEN
13422               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13423                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13424               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13425               AND   l_curr_instance_rec.operational_status_code = 'NOT_USED'
13426               THEN
13427                     p_instance_rec.operational_status_code := 'NOT_USED';
13428               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13429                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13430               AND   p_instance_rec.operational_status_code <> 'OUT_OF_SERVICE'
13431               AND   l_curr_instance_rec.operational_status_code = 'OUT_OF_SERVICE'
13432               THEN
13433                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13434               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13435                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13436               AND   p_instance_rec.operational_status_code NOT IN ('OUT_OF_SERVICE','NOT_USED')
13437               AND   l_curr_instance_rec.operational_status_code = 'INSTALLED'
13438               THEN
13439                     p_instance_rec.operational_status_code := 'NOT_USED';
13440               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13441                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE','INSTALLED'))
13442               THEN
13443                     p_instance_rec.operational_status_code := 'NOT_USED';
13444               END IF;
13445             END IF;
13446          ELSE -- External party
13447             IF    l_get_instance_rec.location_type_code='INVENTORY'
13448             THEN
13449               IF  (p_instance_rec.operational_status_code IS NOT NULL AND
13450                    p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13451               AND l_curr_instance_rec.operational_status_code IN ('NOT_USED','INSTALLED','IN_SERVICE','OUT_OF_SERVICE')
13452               AND p_instance_rec.operational_status_code NOT IN ('OUT_OF_SERVICE','NOT_USED')
13453               THEN
13454                   p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13455               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13456                    (l_curr_instance_rec.operational_status_code NOT IN
13457                     ('NOT_USED','OUT_OF_SERVICE','INSTALLED','IN_SERVICE'))
13458               THEN
13459                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13460               END IF;
13461             ELSIF l_get_instance_rec.location_type_code IN ('WIP','IN_TRANSIT')
13462             THEN
13463               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13464                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13465               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13466               AND   l_curr_instance_rec.operational_status_code = 'NOT_USED'
13467               THEN
13468                     p_instance_rec.operational_status_code := 'NOT_USED';
13469               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13470                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13471               AND   p_instance_rec.operational_status_code <> 'OUT_OF_SERVICE'
13472               AND   l_curr_instance_rec.operational_status_code = 'OUT_OF_SERVICE'
13473               THEN
13474                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13475               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13476                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE'))
13477               THEN
13478                     p_instance_rec.operational_status_code := 'NOT_USED';
13479               END IF;
13480             ELSIF l_get_instance_rec.location_type_code ='VENDOR_SITE'
13481             THEN
13482               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13483                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13484               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13485               AND   l_curr_instance_rec.operational_status_code IN ('NOT_USED','OUT_OF_SERVICE')
13486               THEN
13487                     p_instance_rec.operational_status_code := 'NOT_USED';
13488               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13489                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE'))
13490               THEN
13491                     p_instance_rec.operational_status_code := 'NOT_USED';
13492               END IF;
13493             ELSIF l_get_instance_rec.location_type_code = 'PROJECT'
13494             THEN
13495               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13496                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13497               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13498               AND   l_curr_instance_rec.operational_status_code = 'NOT_USED'
13499               THEN
13500                     p_instance_rec.operational_status_code := 'NOT_USED';
13501               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13502                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13503               AND   p_instance_rec.operational_status_code <> 'OUT_OF_SERVICE'
13504               AND   l_curr_instance_rec.operational_status_code = 'OUT_OF_SERVICE'
13505               THEN
13506                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13507               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13508                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13509               AND   p_instance_rec.operational_status_code NOT IN ('OUT_OF_SERVICE','NOT_USED')
13510               AND   l_curr_instance_rec.operational_status_code = 'INSTALLED'
13511               THEN
13512                     p_instance_rec.operational_status_code := 'NOT_USED';
13513               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13514                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE','INSTALLED'))
13515               THEN
13516                     p_instance_rec.operational_status_code := 'NOT_USED';
13517               END IF;
13518             ELSIF l_get_instance_rec.location_type_code ='HZ_PARTY_SITES'
13519             THEN
13520               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13521                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13522               AND   p_instance_rec.operational_status_code NOT IN ('INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13523               AND   l_curr_instance_rec.operational_status_code ='NOT_USED'
13524               THEN
13525                     p_instance_rec.operational_status_code := 'NOT_USED';
13526               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13527                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13528               AND   p_instance_rec.operational_status_code NOT IN ('INSTALLED','IN_SERVICE','NOT_USED')
13529               AND   l_curr_instance_rec.operational_status_code ='OUT_OF_SERVICE'
13530               THEN
13531                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13532               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13533                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE'))
13534               THEN
13535                     p_instance_rec.operational_status_code := 'NOT_USED';
13536               END IF;
13537             ELSIF l_get_instance_rec.location_type_code ='HZ_LOCATIONS'
13538             THEN
13539               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13540                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13541               AND   p_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13542               AND   l_curr_instance_rec.operational_status_code IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13543               THEN
13544                     p_instance_rec.operational_status_code := 'NOT_USED';
13545               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13546                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE'))
13547               THEN
13548                     p_instance_rec.operational_status_code := 'NOT_USED';
13549               END IF;
13550             END IF;
13551          END IF;
13552 
13553 
13554 
13555          IF ((p_instance_rec.purchase_currency_code IS NOT NULL) AND
13556              (p_instance_rec.purchase_currency_code <> FND_API.G_MISS_CHAR) AND
13557              (p_instance_rec.purchase_currency_code <> nvl(l_curr_instance_rec.purchase_currency_code,'$$##$$'))
13558              )
13559          THEN
13560            p_instance_rec.purchase_currency_code := UPPER(p_instance_rec.purchase_currency_code);
13561            IF NOT csi_item_instance_vld_pvt.valid_currency_code
13562                  (p_currency_code => p_instance_rec.purchase_currency_code)
13563            THEN
13564               RAISE fnd_api.g_exc_error;
13565            END IF;
13566          END IF;
13567 
13568          IF ((p_instance_rec.payables_currency_code IS NOT NULL) AND
13569              (p_instance_rec.payables_currency_code <> FND_API.G_MISS_CHAR) AND
13570              (p_instance_rec.payables_currency_code <> nvl(l_curr_instance_rec.payables_currency_code,'$$##$$'))
13571              )
13572          THEN
13573            p_instance_rec.payables_currency_code := UPPER(p_instance_rec.payables_currency_code);
13574            IF NOT csi_item_instance_vld_pvt.valid_currency_code
13575                  (p_currency_code => p_instance_rec.payables_currency_code)
13576            THEN
13577               RAISE fnd_api.g_exc_error;
13578            END IF;
13579          END IF;
13580 
13581          IF ((p_instance_rec.sales_currency_code IS NOT NULL) AND
13582              (p_instance_rec.sales_currency_code <> FND_API.G_MISS_CHAR) AND
13583              (p_instance_rec.sales_currency_code <> nvl(l_curr_instance_rec.sales_currency_code,'$$##$$'))
13584              )
13585          THEN
13586            p_instance_rec.sales_currency_code := UPPER(p_instance_rec.sales_currency_code);
13587            IF NOT csi_item_instance_vld_pvt.valid_currency_code
13588                  (p_currency_code => p_instance_rec.sales_currency_code)
13589            THEN
13590               RAISE fnd_api.g_exc_error;
13591            END IF;
13592          END IF;
13593          IF (
13594              ((l_curr_instance_rec.purchase_currency_code IS NOT NULL AND
13595                l_curr_instance_rec.purchase_unit_price IS NOT NULL) AND
13596               ((p_instance_rec.purchase_currency_code IS NULL AND
13597                 p_instance_rec.purchase_unit_price = FND_API.G_MISS_NUM) OR
13598                (p_instance_rec.purchase_unit_price IS NULL AND
13599                 p_instance_rec.purchase_currency_code = FND_API.G_MISS_CHAR))
13600               )
13601                OR
13602              (
13603               (l_curr_instance_rec.purchase_currency_code IS NULL AND
13604                l_curr_instance_rec.purchase_unit_price IS NULL) AND
13605              (((p_instance_rec.purchase_currency_code IS NOT NULL AND
13606                 p_instance_rec.purchase_currency_code <> FND_API.G_MISS_CHAR) AND
13607                (p_instance_rec.purchase_unit_price IS NULL OR
13608                 p_instance_rec.purchase_unit_price = FND_API.G_MISS_NUM)) OR
13609               ((p_instance_rec.purchase_currency_code IS NULL OR
13610                 p_instance_rec.purchase_currency_code = FND_API.G_MISS_CHAR) AND
13611                (p_instance_rec.purchase_unit_price IS NOT NULL AND
13612                 p_instance_rec.purchase_unit_price <> FND_API.G_MISS_NUM)))
13613                )
13614             )
13615             OR
13616             (
13617              ((l_curr_instance_rec.payables_currency_code IS NOT NULL AND
13618                l_curr_instance_rec.payables_unit_price IS NOT NULL) AND
13619               ((p_instance_rec.payables_currency_code IS NULL AND
13620                 p_instance_rec.payables_unit_price = FND_API.G_MISS_NUM) OR
13621                (p_instance_rec.payables_unit_price IS NULL AND
13622                 p_instance_rec.payables_currency_code = FND_API.G_MISS_CHAR))
13623               )
13624                OR
13625              (
13626               (l_curr_instance_rec.payables_currency_code IS NULL AND
13627                l_curr_instance_rec.payables_unit_price IS NULL) AND
13628              (((p_instance_rec.payables_currency_code IS NOT NULL AND
13629                 p_instance_rec.payables_currency_code <> FND_API.G_MISS_CHAR) AND
13630                (p_instance_rec.payables_unit_price IS NULL OR
13631                 p_instance_rec.payables_unit_price = FND_API.G_MISS_NUM)) OR
13632               ((p_instance_rec.payables_currency_code IS NULL OR
13633                 p_instance_rec.payables_currency_code = FND_API.G_MISS_CHAR) AND
13634                (p_instance_rec.payables_unit_price IS NOT NULL AND
13635                 p_instance_rec.payables_unit_price <> FND_API.G_MISS_NUM)))
13636                )
13637             )
13638             OR
13639             (
13640              ((l_curr_instance_rec.sales_currency_code IS NOT NULL AND
13641                l_curr_instance_rec.sales_unit_price IS NOT NULL) AND
13642               ((p_instance_rec.sales_currency_code IS NULL AND
13643                 p_instance_rec.sales_unit_price = FND_API.G_MISS_NUM) OR
13644                (p_instance_rec.sales_unit_price IS NULL AND
13645                 p_instance_rec.sales_currency_code = FND_API.G_MISS_CHAR))
13646               )
13647                OR
13648              (
13649               (l_curr_instance_rec.sales_currency_code IS NULL AND
13650                l_curr_instance_rec.sales_unit_price IS NULL) AND
13651              (((p_instance_rec.sales_currency_code IS NOT NULL AND
13652                 p_instance_rec.sales_currency_code <> FND_API.G_MISS_CHAR) AND
13653                (p_instance_rec.sales_unit_price IS NULL OR
13654                 p_instance_rec.sales_unit_price = FND_API.G_MISS_NUM)) OR
13655               ((p_instance_rec.sales_currency_code IS NULL OR
13656                 p_instance_rec.sales_currency_code = FND_API.G_MISS_CHAR) AND
13657                (p_instance_rec.sales_unit_price IS NOT NULL AND
13658                 p_instance_rec.sales_unit_price <> FND_API.G_MISS_NUM)))
13659                )
13660             )
13661          THEN
13662              FND_MESSAGE.SET_NAME('CSI','CSI_NO_PRICE_OR_CODE');
13663              FND_MSG_PUB.Add;
13664              RAISE fnd_api.g_exc_error;
13665          END IF;
13666        -- End addition of columns for FA Integration
13667 
13668        -- Start of bug fix 2151750 by sk on 02/04/02
13669 
13670        -- If location_type_code has been changing from something to INVENTORY
13671        -- then check if this record has been existing as a subject in csi_ii_relationships
13672        -- of COMPONENT-OF relationship_type_code and if exists then if
13673        -- l_get_instance_rec.instance_usage_code is not equal to
13674        -- IN_RELATIONSHIP then raise an error.
13675 
13676        IF l_curr_instance_rec.location_type_code <> 'INVENTORY' AND
13677           p_instance_rec.location_type_code = 'INVENTORY'
13678        THEN
13679           l_temp_rec := null;
13680           BEGIN
13681              SELECT 'x'
13682              INTO   l_temp_rec
13683              FROM   csi_ii_relationships
13684              WHERE  relationship_type_code = 'COMPONENT-OF'
13685              AND    subject_id = p_instance_rec.instance_id
13686              AND    (active_end_date IS NULL OR active_end_date > SYSDATE);
13687           EXCEPTION
13688             WHEN OTHERS THEN
13689                    null;
13690           END;
13691 
13692              IF ( l_get_instance_rec.instance_usage_code <> 'IN_RELATIONSHIP' OR
13693                 l_get_instance_rec.instance_usage_code IS NULL OR
13694                 l_get_instance_rec.instance_usage_code = fnd_api.g_miss_char) AND
13695                 l_temp_rec IS NOT NULL
13696              THEN
13697                    FND_MESSAGE.Set_Name('CSI', 'CSI_INVALID_USAGE_CODE');
13698                    FND_MSG_PUB.ADD;
13699                    RAISE fnd_api.g_exc_error;
13700              END IF;
13701 
13702 
13703        END IF;
13704 
13705 
13706         -- The following code has been added to disallow updating instance_usage_code
13707         -- if the instance is in IN-RELATIONSHIP.
13708         IF l_curr_instance_rec.instance_usage_code = 'IN_RELATIONSHIP' AND
13709            ( ( p_instance_rec.instance_usage_code <> 'IN_RELATIONSHIP' AND
13710                p_instance_rec.instance_usage_code IS NOT NULL AND
13711                p_instance_rec.instance_usage_code <> fnd_api.g_miss_char)
13712             OR
13713 		     ( p_instance_rec.instance_usage_code IS NULL)
13714 		    )
13715         THEN
13716                 l_temp_rec1 := NULL;
13717                 BEGIN
13718                    SELECT 'x'
13719                    INTO   l_temp_rec1
13720                    FROM   csi_ii_relationships
13721                    WHERE  relationship_type_code = 'COMPONENT-OF'
13722                    AND    subject_id = p_instance_rec.instance_id
13723                    AND    (active_end_date IS NULL OR active_end_date > SYSDATE);
13724 
13725                    IF l_temp_rec1 IS NOT NULL
13726                    THEN
13727                       FND_MESSAGE.Set_Name('CSI', 'CSI_MODIFY_USAGE_CODE');
13728                       FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_instance_rec.instance_id);
13729                       FND_MSG_PUB.ADD;
13730                       RAISE fnd_api.g_exc_error;
13731                    END IF;
13732                 EXCEPTION
13733                   WHEN NO_DATA_FOUND THEN
13734                     NULL;
13735                 END;
13736         END IF;
13737                -- End of bug fix 2151750 by sk on 02/04/02
13738 
13739      --location validation
13740      IF (
13741          (
13742           ((p_instance_rec.location_type_code IS NULL) AND (l_curr_instance_rec.location_type_code IS NOT NULL))
13743             OR
13744           (p_instance_rec.location_type_code <> FND_API.G_MISS_CHAR
13745             AND NVL(p_instance_rec.location_type_code, FND_API.G_MISS_CHAR) <> NVL(l_curr_instance_rec.location_type_code, FND_API.G_MISS_CHAR))
13746          )
13747          OR
13748          (
13749           ((p_instance_rec.location_id IS NULL) AND (l_curr_instance_rec.location_id IS NOT NULL))
13750             OR
13751           (p_instance_rec.location_id <> FND_API.G_MISS_NUM
13752             AND NVL(p_instance_rec.location_id, FND_API.G_MISS_NUM) <> NVL(l_curr_instance_rec.location_id, FND_API.G_MISS_NUM))
13753          )
13754          OR
13755          (
13756           ((p_instance_rec.install_location_type_code IS NULL) AND (l_curr_instance_rec.install_location_type_code IS NOT NULL))
13757             OR
13758           (p_instance_rec.install_location_type_code <> FND_API.G_MISS_CHAR
13759             AND NVL(p_instance_rec.install_location_type_code, FND_API.G_MISS_CHAR) <> NVL(l_curr_instance_rec.install_location_type_code, FND_API.G_MISS_CHAR))
13760          )
13761          OR
13762          (
13763           ((p_instance_rec.install_location_id IS NULL) AND (l_curr_instance_rec.install_location_id IS NOT NULL))
13764             OR
13765           (p_instance_rec.install_location_id <> FND_API.G_MISS_NUM
13766             AND NVL(p_instance_rec.install_location_id, FND_API.G_MISS_NUM) <> NVL(l_curr_instance_rec.install_location_id, FND_API.G_MISS_NUM))
13767          )
13768          OR
13769          (
13770           ((p_instance_rec.inv_organization_id IS NULL) AND (l_curr_instance_rec.inv_organization_id IS NOT NULL))
13771             OR
13772           (p_instance_rec.inv_organization_id  <> FND_API.G_MISS_NUM
13773             AND NVL(p_instance_rec.inv_organization_id, FND_API.G_MISS_NUM) <> NVL(l_curr_instance_rec.inv_organization_id, FND_API.G_MISS_NUM))
13774          )
13775          OR
13776          (
13777           ((p_instance_rec.inv_subinventory_name IS NULL) AND (l_curr_instance_rec.inv_subinventory_name IS NOT NULL))
13778             OR
13779           (p_instance_rec.inv_subinventory_name <> FND_API.G_MISS_CHAR
13780             AND NVL(p_instance_rec.inv_subinventory_name, FND_API.G_MISS_CHAR)  <> NVL(l_curr_instance_rec.inv_subinventory_name, FND_API.G_MISS_CHAR))
13781          )
13782          OR
13783          (
13784           ((p_instance_rec.inv_locator_id IS NULL) AND (l_curr_instance_rec.inv_locator_id IS NOT NULL))
13785             OR
13786           (p_instance_rec.inv_locator_id <> FND_API.G_MISS_NUM
13787             AND NVL(p_instance_rec.inv_locator_id, FND_API.G_MISS_NUM) <> NVL(l_curr_instance_rec.inv_locator_id, FND_API.G_MISS_NUM))
13788          )
13789          OR
13790          (
13791           ((p_instance_rec.pa_project_id IS NULL) AND (l_curr_instance_rec.pa_project_id IS NOT NULL))
13792             OR
13793           (p_instance_rec.pa_project_id <> FND_API.G_MISS_NUM
13794             AND NVL(p_instance_rec.pa_project_id, FND_API.G_MISS_NUM) <> NVL(l_curr_instance_rec.pa_project_id, FND_API.G_MISS_NUM))
13795          )
13796          OR
13797          (
13798           ((p_instance_rec.pa_project_task_id IS NULL) AND (l_curr_instance_rec.pa_project_task_id is not null))
13799             OR
13800           (p_instance_rec.pa_project_task_id <> FND_API.G_MISS_NUM
13801             AND NVL(p_instance_rec.pa_project_task_id, FND_API.G_MISS_NUM) <> NVL(l_curr_instance_rec.pa_project_task_id, FND_API.G_MISS_NUM))
13802          )
13803          OR
13804          (
13805           ((p_instance_rec.in_transit_order_line_id IS NULL) AND (l_curr_instance_rec.in_transit_order_line_id IS NOT NULL))
13806             OR
13807           (p_instance_rec.in_transit_order_line_id <> FND_API.G_MISS_NUM
13808             AND NVL(p_instance_rec.in_transit_order_line_id, FND_API.G_MISS_NUM) <> NVL(l_curr_instance_rec.in_transit_order_line_id, FND_API.G_MISS_NUM))
13809          )
13810          OR
13811          (
13812           ((p_instance_rec.wip_job_id IS NULL) AND (l_curr_instance_rec.wip_job_id IS NOT NULL))
13813             OR
13814           (p_instance_rec.wip_job_id <> FND_API.G_MISS_NUM
13815             AND NVL(p_instance_rec.wip_job_id, FND_API.G_MISS_NUM) <> NVL(l_curr_instance_rec.wip_job_id, FND_API.G_MISS_NUM))
13816          )
13817          OR
13818          (
13819           ((p_instance_rec.po_order_line_id IS NULL) AND (l_curr_instance_rec.po_order_line_id IS NOT NULL))
13820             OR
13821           (p_instance_rec.po_order_line_id <> FND_API.G_MISS_NUM
13822             AND NVL(p_instance_rec.po_order_line_id, FND_API.G_MISS_NUM) <> NVL(l_curr_instance_rec.po_order_line_id, FND_API.G_MISS_NUM))
13823          )
13824         ) THEN
13825 
13826 --bring has parent logic here
13827              IF csi_Item_Instance_Vld_Pvt.Instance_has_Parent(
13828                                             p_instance_id   =>  p_instance_rec.instance_id
13829                                                               ) THEN
13830                    FND_MESSAGE.Set_Name('CSI', 'CSI_API_INSTANCE_HAS_PARENT');
13831                    FND_MSG_PUB.ADD;
13832                    RAISE fnd_api.g_exc_error;
13833              END IF;
13834              -- Validate Location ID
13835              IF l_get_instance_rec.location_type_code IS NULL OR
13836                 l_get_instance_rec.location_type_code = FND_API.G_MISS_CHAR OR
13837                 l_get_instance_rec.location_id IS NULL OR
13838                 l_get_instance_rec.location_id = FND_API.G_MISS_NUM THEN
13839 		FND_MESSAGE.SET_NAME('CSI','CSI_API_LOCATION_NOT_VALID');
13840 		FND_MSG_PUB.ADD;
13841 		RAISE fnd_api.g_exc_error;
13842              END IF;
13843              --
13844 	     l_exists_flag := 'N';
13845 	     l_valid_flag := 'Y';
13846 	     IF p_location_tbl.count > 0 THEN
13847 		For loc_row in p_location_tbl.FIRST .. p_location_tbl.LAST
13848 		Loop
13849 		   IF p_location_tbl(loc_row).location_type_code = l_get_instance_rec.location_type_code AND
13850 		      p_location_tbl(loc_row).location_id = l_get_instance_rec.location_id THEN
13851 		      l_exists_flag := 'Y';
13852 		      l_valid_flag := p_location_tbl(loc_row).valid_flag;
13853 		      EXIT;
13854 		   END IF;
13855 		End Loop;
13856 		--
13857 		IF l_valid_flag <> 'Y' THEN
13858 		   FND_MESSAGE.SET_NAME('CSI','CSI_API_LOCATION_NOT_VALID');
13859 		   FND_MSG_PUB.ADD;
13860 		   RAISE fnd_api.g_exc_error;
13861 		END IF;
13862 	     END IF; -- p_location_tbl count
13863 	     --
13864 	     IF l_exists_flag <> 'Y' THEN
13865 		p_ins_count_rec.location_count := p_ins_count_rec.location_count + 1;
13866 		p_location_tbl(p_ins_count_rec.location_count).location_type_code :=
13867                                                 l_get_instance_rec.location_type_code;
13868 		p_location_tbl(p_ins_count_rec.location_count).location_id := l_get_instance_rec.location_id;
13869 		IF csi_item_instance_vld_pvt.Is_Valid_Location_ID
13870 					    (p_location_source_table => l_get_instance_rec.location_type_code
13871 					    ,p_location_id => l_get_instance_rec.location_id) THEN
13872 		   p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'Y';
13873 		ELSE
13874 		   p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'N';
13875 		   RAISE fnd_api.g_exc_error;
13876 		END IF;
13877 	     END IF;
13878              -- Validate Related Location Parameters
13879 	     IF NOT csi_item_instance_vld_pvt.Validate_Related_Loc_Params
13880 			       (
13881 				 p_location_source_table => l_get_instance_rec.location_type_code,
13882 				 p_location_id           => l_get_instance_rec.location_id,
13883 				 p_organization_id       => l_get_instance_rec.inv_organization_id,
13884 				 p_subinventory          => l_get_instance_rec.inv_subinventory_name,
13885 				 p_locator_id            => l_get_instance_rec.inv_locator_id,
13886 				 p_project_id            => l_get_instance_rec.pa_project_id,
13887 				 p_task_id               => l_get_instance_rec.pa_project_task_id,
13888 				 p_sales_ord_line_id     => l_get_instance_rec.in_transit_order_line_id,
13889 				 p_wip_job_id            => l_get_instance_rec.wip_job_id,
13890 				 p_po_line_id            => l_get_instance_rec.po_order_line_id,
13891 				 p_inst_usage_code       => l_get_instance_rec.instance_usage_code
13892 			       ) THEN
13893 		RAISE fnd_api.g_exc_error;
13894 	     END IF;
13895          -- validation for accounting classification_code if
13896          -- p_instance_rec.accounting_class_code = FND_API.G_MISS_CHAR
13897 
13898              IF ( p_instance_rec.accounting_class_code = FND_API.G_MISS_CHAR ) THEN
13899 
13900                       csi_item_instance_vld_pvt.get_valid_acct_class
13901                                ( p_instance_id            => p_instance_rec.instance_id
13902                                 ,p_curr_acct_class_code   => l_get_instance_rec.accounting_class_code
13903                                 ,p_loc_type_code          => l_get_instance_rec.location_type_code
13904                                 ,x_acct_class_code        => l_acct_class_code
13905                                );
13906                -- The following code has been commented for bug 4906588
13907                /*
13908                IF l_eam_item
13909                THEN
13910                 p_instance_rec.accounting_class_code := 'ASSET';
13911                ELSE
13912                */
13913                   p_instance_rec.accounting_class_code  := l_acct_class_code;
13914              --  END IF;
13915              END IF;
13916 
13917              IF l_curr_instance_rec.location_type_code = 'IN_TRANSIT' AND
13918                 (p_instance_rec.location_type_code <> l_curr_instance_rec.location_type_code) THEN
13919                  BEGIN
13920                     SELECT decode(return_reason_code, 'RETURN', l_curr_instance_rec.last_oe_order_line_id, line_id),
13921                            decode(return_reason_code, 'RETURN', line_id, l_curr_instance_rec.last_oe_rma_line_id),
13922                            agreement_id
13923                     INTO   p_instance_rec.last_oe_order_line_id,
13924                            p_instance_rec.last_oe_rma_line_id,
13925                            p_instance_rec.last_oe_agreement_id
13926                     FROM   oe_order_lines_all
13927                     WHERE  line_id = l_curr_instance_rec.in_transit_order_line_id;
13928                   EXCEPTION
13929                     WHEN OTHERS THEN
13930                        NULL;
13931                   END ;
13932 
13933              ELSIF  l_curr_instance_rec.location_type_code = 'WIP' AND
13934                     (p_instance_rec.location_type_code <> l_curr_instance_rec.location_type_code) THEN
13935                     IF p_instance_rec.last_wip_job_id IS NULL OR
13936                        p_instance_rec.last_wip_job_id = fnd_api.g_miss_num
13937                     THEN
13938                         p_instance_rec.last_wip_job_id := l_curr_instance_rec.wip_job_id;
13939                     END IF;
13940 
13941              ELSIF  l_curr_instance_rec.location_type_code = 'PROJECT' AND
13942                    (p_instance_rec.location_type_code <> l_curr_instance_rec.location_type_code) THEN
13943                         p_instance_rec.last_pa_project_id := l_curr_instance_rec.pa_project_id;
13944                         p_instance_rec.last_pa_task_id := l_curr_instance_rec.pa_project_task_id;
13945 
13946              ELSIF  l_curr_instance_rec.location_type_code = 'HZ_LOCATIONS' AND
13947                    (p_instance_rec.location_type_code <> l_curr_instance_rec.location_type_code) THEN
13948                    IF ((l_curr_instance_rec.pa_project_id IS NOT NULL) AND
13949                        (l_curr_instance_rec.pa_project_task_id IS NOT NULL)) THEN
13950                         p_instance_rec.last_pa_project_id := l_curr_instance_rec.pa_project_id;
13951                         p_instance_rec.last_pa_task_id := l_curr_instance_rec.pa_project_task_id;
13952                    END IF;
13953 
13954              ELSIF  l_curr_instance_rec.location_type_code = 'PO' AND
13955                     (p_instance_rec.location_type_code <> l_curr_instance_rec.location_type_code) THEN
13956                         p_instance_rec.last_po_po_line_id := l_curr_instance_rec.po_order_line_id;
13957              END IF;
13958 
13959               --validating the owner
13960         OPEN party_owner_rec(p_instance_rec.instance_id);
13961         FETCH party_owner_rec INTO l_party_owner_rec;
13962               IF NOT (csi_item_instance_vld_pvt.Validate_Uniqueness
13963                                              (p_instance_rec     => l_get_instance_rec,
13964                                               p_party_rec        => l_party_owner_rec,
13965                                               p_srl_control_code => l_serial_control,
13966                                               p_csi_txn_type_id  => p_txn_rec.transaction_type_id))
13967               THEN
13968                   RAISE FND_API.G_EXC_ERROR;
13969               END IF;
13970         CLOSE party_owner_rec;
13971 
13972         END IF;
13973 
13974 
13975 
13976 
13977         IF l_get_instance_rec.instance_id IS NOT NULL
13978            AND l_get_instance_rec.inventory_item_id IS NOT NULL
13979            AND l_get_instance_rec.inv_master_organization_id IS NOT NULL
13980         -- AND (((l_serial_control IN (2,5,6))
13981            AND (((csi_Item_Instance_Vld_pvt.Is_treated_serialized
13982                                        ( p_serial_control_code => l_serial_control
13983                                         ,p_location_type_code  => l_get_instance_rec.location_type_code
13984                                         ,p_transaction_type_id => p_txn_rec.transaction_type_id
13985                                         )) -- Added by sk on 13/9/01
13986                    AND ((l_get_instance_rec.serial_number IS NOT NULL) AND (l_get_instance_rec.serial_number <> FND_API.G_MISS_CHAR)))
13987                 -- OR     (l_serial_control NOT IN (2,5,6)))
13988                    OR   (NOT (csi_Item_Instance_Vld_pvt.Is_treated_serialized
13989                                                    ( p_serial_control_code => l_serial_control
13990                                                     ,p_location_type_code  => l_get_instance_rec.location_type_code
13991                                                     ,p_transaction_type_id => p_txn_rec.transaction_type_id
13992                                        )) ) )
13993            AND (((l_lot_control = 2)
13994                    AND ((l_get_instance_rec.lot_number IS NOT NULL) AND (l_get_instance_rec.lot_number <> FND_API.G_MISS_CHAR)))
13995                    OR     (l_lot_control <> 2))
13996            AND l_get_instance_rec.instance_status_id IS NOT NULL
13997            AND (((l_rev_control = 2)
13998                    AND ((l_get_instance_rec.inventory_revision IS NOT NULL)
13999                           AND (l_get_instance_rec.inventory_revision <> FND_API.G_MISS_CHAR)))
14000                    OR     (l_rev_control <> 2))
14001            AND l_get_instance_rec.location_type_code IS NOT NULL THEN
14002 
14003                 IF (p_instance_rec.creation_complete_flag IS NULL) OR
14004                    (p_instance_rec.creation_complete_flag = FND_API.G_MISS_CHAR) THEN
14005 
14006                     p_instance_rec.creation_complete_flag := 'Y';
14007                 END IF;
14008 
14009         ELSE
14010                 IF  ((l_curr_instance_rec.creation_complete_flag = 'Y') OR
14011                     (nvl(p_instance_rec.creation_complete_flag, fnd_api.g_miss_char) = 'Y'))
14012                 THEN
14013                     IF ((l_serial_control = 6) and (l_get_instance_rec.serial_number is null)) THEN
14014                         p_instance_rec.creation_complete_flag := 'N';
14015                     ELSE
14016                         FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ATTRIBUTES');
14017                         FND_MSG_PUB.Add;
14018                         RAISE fnd_api.g_exc_error;
14019                     END IF;
14020                 ELSE
14021                     p_instance_rec.creation_complete_flag := 'N';
14022                 END IF;
14023         END IF;
14024         --
14025         -- Check for active_end_date
14026         -- srramakr Instance Status ID should be made EXPIRED when the Active End Date is <= sysdate and
14027         -- the passed instance status not having Terminated Flag as Y.
14028         --
14029         IF (l_get_instance_rec.active_end_date <= l_sys_date) THEN
14030            -- TSO with Equipment changes.
14031            -- Nullifying the config keys
14032            p_instance_rec.config_inst_hdr_id := NULL;
14033            p_instance_rec.config_inst_rev_num := NULL;
14034            p_instance_rec.config_inst_item_id := NULL;
14035            p_instance_rec.config_valid_status := NULL;
14036            --
14037            IF NOT (CSI_Item_Instance_vld_pvt.val_inst_ter_flag(
14038                                             p_instance_rec.instance_status_id)) THEN
14039               -- Added by sguthiva for bug 2520978
14040               p_instance_rec.instance_status_id:=fnd_profile.value('CSI_SYS_TERM_INST_STATUS_ID');
14041               IF  p_instance_rec.instance_status_id IS NULL
14042                OR p_instance_rec.instance_status_id=fnd_api.g_miss_num
14043               THEN
14044                  p_instance_rec.instance_status_id := 1;
14045               END IF;
14046               -- End addition by sguthiva for bug 2520978.
14047            END IF;
14048            -- Start addition by sguthiva for bug 2416193
14049            -- Relaxing this check for RMA Receipt transaction
14050            IF p_txn_rec.transaction_type_id = 1
14051            THEN
14052               BEGIN
14053                  SELECT 'x'
14054                  INTO   l_open_service
14055                  FROM   cs_incidents_all csi,
14056                         cs_incident_statuses_b csb
14057                  WHERE  csi.incident_status_id = csb.incident_status_id
14058                  AND    csi.customer_product_id = p_instance_rec.instance_id
14059                  AND    NVL(close_flag,'N')<>'Y';
14060 
14061                  FND_MESSAGE.SET_NAME('CSI','CSI_IB_HAS_OPEN_SR');
14062                  FND_MSG_PUB.ADD;
14063                  RAISE FND_API.G_EXC_ERROR;
14064 
14065               EXCEPTION
14066                  WHEN TOO_MANY_ROWS THEN
14067                    FND_MESSAGE.SET_NAME('CSI','CSI_IB_HAS_OPEN_SR');
14068                    FND_MSG_PUB.ADD;
14069                    RAISE FND_API.G_EXC_ERROR;
14070 
14071                  WHEN NO_DATA_FOUND THEN -- modfied for bug 3693511
14072                     NULL;
14073               END;
14074            END IF;
14075            -- End addition for bug 2416193
14076         END IF;
14077         -- Validation for install location
14078         -- Start addition by sk on 02/06/02 for bug 2213922
14079         IF p_instance_rec.install_location_type_code IS NOT NULL AND
14080            p_instance_rec.install_location_type_code <> fnd_api.g_miss_char
14081         THEN
14082            IF p_instance_rec.install_location_type_code = 'HZ_PARTY_SITES' OR
14083               p_instance_rec.install_location_type_code = 'HZ_LOCATIONS' OR
14084               p_instance_rec.install_location_type_code = 'VENDOR_SITE' OR
14085               p_instance_rec.install_location_type_code = 'INTERNAL_SITE' OR
14086 	      p_instance_rec.install_location_type_code = 'HR_LOCATIONS' --4926773
14087            THEN
14088 	      IF p_instance_rec.install_location_id IS NULL OR
14089 		 p_instance_rec.install_location_id = FND_API.G_MISS_NUM THEN
14090 		 FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
14091 		 FND_MSG_PUB.ADD;
14092 		 RAISE fnd_api.g_exc_error;
14093 	      END IF;
14094 	      --
14095 	      l_exists_flag := 'N';
14096 	      l_valid_flag := 'Y';
14097 	      IF p_location_tbl.count > 0 THEN
14098 		 For loc_row in p_location_tbl.FIRST .. p_location_tbl.LAST
14099 		 Loop
14100 		    IF p_location_tbl(loc_row).location_type_code = p_instance_rec.install_location_type_code
14101 		       AND p_location_tbl(loc_row).location_id = p_instance_rec.install_location_id THEN
14102 		       l_exists_flag := 'Y';
14103 		       l_valid_flag := p_location_tbl(loc_row).valid_flag;
14104 		       EXIT;
14105 		    END IF;
14106 		 End Loop;
14107 		 --
14108 		 IF l_valid_flag <> 'Y' THEN
14109 		    FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
14110 		    FND_MSG_PUB.ADD;
14111 		    RAISE fnd_api.g_exc_error;
14112 		 END IF;
14113 	      END IF;
14114 	      --
14115 	       IF l_exists_flag <> 'Y' THEN
14116 		  p_ins_count_rec.location_count := p_ins_count_rec.location_count + 1;
14117 		  p_location_tbl(p_ins_count_rec.location_count).location_type_code :=
14118 						     p_instance_rec.install_location_type_code;
14119 		  p_location_tbl(p_ins_count_rec.location_count).location_id :=
14120 						     p_instance_rec.install_location_id;
14121 		  IF csi_item_instance_vld_pvt.Is_Valid_Location_ID
14122                                        (
14123 				         p_location_source_table => p_instance_rec.install_location_type_code
14124 					,p_location_id => p_instance_rec.install_location_id
14125                                        ) THEN
14126 		     p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'Y';
14127 		  ELSE
14128 		     p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'N';
14129 		     RAISE fnd_api.g_exc_error;
14130 		  END IF;
14131 	       END IF;
14132            ELSE
14133               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
14134               FND_MSG_PUB.Add;
14135               RAISE FND_API.G_EXC_ERROR;
14136            END IF;
14137         END IF;
14138         -- End addition by sk on 02/06/02 for bug 2213922
14139         -- Added the following code for eam integration
14140            IF l_eam_item AND
14141              (p_instance_rec.active_end_date IS NOT NULL AND
14142               p_instance_rec.active_end_date <> fnd_api.g_miss_date)
14143            THEN
14144             IF NOT eam_common_utilities_pvt.check_deactivate
14145               (p_maintenance_object_id   => p_instance_rec.instance_id
14146               ,p_maintenance_object_type => l_maintenance_object_type)
14147             THEN
14148               csi_gen_utility_pvt.put_line('Error from eam_common_utilities_pvt.check_deactivate API ');
14149               RAISE fnd_api.g_exc_error;
14150             END IF;
14151            END IF;
14152         -- End code addition for eam integration
14153     -- validate instance status id
14154        IF NVL(p_instance_rec.INSTANCE_STATUS_ID,fnd_api.g_miss_num) <> fnd_api.g_miss_num
14155        THEN
14156       --debug('Validate instance status id .');
14157          csi_item_instance_vld_pvt.is_valid_status(
14158            p_instance_status_id     => p_instance_rec.INSTANCE_STATUS_ID,
14159            p_creation_complete_flag => l_creation_flag,
14160            l_return_value           => l_valid);
14161           IF NOT(l_valid)
14162           THEN
14163              RAISE fnd_api.g_exc_error;
14164           END IF;
14165         END IF;
14166 
14167         IF p_instance_rec.INSTANCE_STATUS_ID IS NOT NULL AND
14168            p_instance_rec.INSTANCE_STATUS_ID <> FND_API.G_MISS_NUM AND
14169            p_instance_rec.INSTANCE_STATUS_ID <> l_curr_instance_rec.INSTANCE_STATUS_ID
14170         THEN
14171            IF NOT csi_item_instance_vld_pvt.is_status_updateable
14172                   (p_instance_status => p_instance_rec.INSTANCE_STATUS_ID
14173                   ,p_current_status  => l_curr_instance_rec.INSTANCE_STATUS_ID)
14174            THEN
14175              RAISE fnd_api.g_exc_error;
14176            END IF;
14177         END IF;
14178 
14179     END IF;
14180 
14181      IF (p_validation_mode <> 'V')
14182      THEN
14183 
14184         FND_File.Put_Line(Fnd_File.LOG,'Validate Mode...!!! I should not be here');
14185         -- txn_status logic
14186         IF (nvl(p_instance_rec.location_id, fnd_api.g_miss_num) <> fnd_api.g_miss_num
14187             AND
14188             p_instance_rec.location_id <> l_curr_instance_rec.location_id)
14189            OR
14190            nvl(p_instance_rec.active_end_date, fnd_api.g_miss_date) <> fnd_api.g_miss_date
14191         THEN
14192           l_txn_status := 'PENDING';
14193         END IF;
14194 
14195        --- Update the instance with the object version number incremented by 1.
14196        p_instance_rec.object_version_number := l_curr_instance_rec.object_version_number + 1;
14197        CSI_ITEM_INSTANCES_PKG.Update_Row
14198        (  p_INSTANCE_ID                 => p_instance_rec.INSTANCE_ID,
14199           p_INSTANCE_NUMBER             => p_instance_rec.INSTANCE_NUMBER,
14200           p_EXTERNAL_REFERENCE          => p_instance_rec.EXTERNAL_REFERENCE,
14201           p_INVENTORY_ITEM_ID           => p_instance_rec.INVENTORY_ITEM_ID,
14202           p_INVENTORY_REVISION          => p_instance_rec.INVENTORY_REVISION,
14203           p_INV_MASTER_ORGANIZATION_ID  => p_instance_rec.INV_MASTER_ORGANIZATION_ID,
14204           p_SERIAL_NUMBER               => p_instance_rec.SERIAL_NUMBER,
14205           p_MFG_SERIAL_NUMBER_FLAG      => p_instance_rec.MFG_SERIAL_NUMBER_FLAG,
14206           p_LOT_NUMBER                  => p_instance_rec.LOT_NUMBER,
14207           p_QUANTITY                    => p_instance_rec.QUANTITY,
14208           p_UNIT_OF_MEASURE             => p_instance_rec.UNIT_OF_MEASURE,
14209           p_ACCOUNTING_CLASS_CODE       => p_instance_rec.ACCOUNTING_CLASS_CODE,
14210           p_INSTANCE_CONDITION_ID       => p_instance_rec.INSTANCE_CONDITION_ID,
14211           p_INSTANCE_STATUS_ID          => p_instance_rec.INSTANCE_STATUS_ID,
14212           p_CUSTOMER_VIEW_FLAG          => p_instance_rec.CUSTOMER_VIEW_FLAG,
14213           p_MERCHANT_VIEW_FLAG          => p_instance_rec.MERCHANT_VIEW_FLAG,
14214           p_SELLABLE_FLAG               => p_instance_rec.SELLABLE_FLAG,
14215           p_SYSTEM_ID                   => p_instance_rec.SYSTEM_ID,
14216           p_INSTANCE_TYPE_CODE          => p_instance_rec.INSTANCE_TYPE_CODE,
14217           p_ACTIVE_START_DATE           => FND_API.G_MISS_DATE, --p_instance_rec.ACTIVE_START_DATE,
14218           p_ACTIVE_END_DATE             => p_instance_rec.ACTIVE_END_DATE,
14219           p_LOCATION_TYPE_CODE          => p_instance_rec.LOCATION_TYPE_CODE,
14220           p_LOCATION_ID                 => p_instance_rec.LOCATION_ID,
14221           p_INV_ORGANIZATION_ID         => p_instance_rec.INV_ORGANIZATION_ID,
14222           p_INV_SUBINVENTORY_NAME       => p_instance_rec.INV_SUBINVENTORY_NAME,
14223           p_INV_LOCATOR_ID              => p_instance_rec.INV_LOCATOR_ID,
14224           p_PA_PROJECT_ID               => p_instance_rec.PA_PROJECT_ID,
14225           p_PA_PROJECT_TASK_ID          => p_instance_rec.PA_PROJECT_TASK_ID,
14226           p_IN_TRANSIT_ORDER_LINE_ID    => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID,
14227           p_WIP_JOB_ID                  => p_instance_rec.WIP_JOB_ID,
14228           p_PO_ORDER_LINE_ID            => p_instance_rec.PO_ORDER_LINE_ID,
14229           p_LAST_OE_ORDER_LINE_ID       => p_instance_rec.LAST_OE_ORDER_LINE_ID,
14230           p_LAST_OE_RMA_LINE_ID         => p_instance_rec.LAST_OE_RMA_LINE_ID,
14231           p_LAST_PO_PO_LINE_ID          => p_instance_rec.LAST_PO_PO_LINE_ID,
14232           p_LAST_OE_PO_NUMBER           => p_instance_rec.LAST_OE_PO_NUMBER,
14233           p_LAST_WIP_JOB_ID             => p_instance_rec.LAST_WIP_JOB_ID,
14234           p_LAST_PA_PROJECT_ID          => p_instance_rec.LAST_PA_PROJECT_ID,
14235           p_LAST_PA_TASK_ID             => p_instance_rec.LAST_PA_TASK_ID,
14236           p_LAST_OE_AGREEMENT_ID        => p_instance_rec.LAST_OE_AGREEMENT_ID,
14237           p_INSTALL_DATE                => p_instance_rec.INSTALL_DATE,
14238           p_MANUALLY_CREATED_FLAG       => p_instance_rec.MANUALLY_CREATED_FLAG,
14239           p_RETURN_BY_DATE              => p_instance_rec.RETURN_BY_DATE,
14240           p_ACTUAL_RETURN_DATE          => p_instance_rec.ACTUAL_RETURN_DATE,
14241           p_CREATION_COMPLETE_FLAG      => p_instance_rec.CREATION_COMPLETE_FLAG,
14242           p_COMPLETENESS_FLAG           => p_instance_rec.COMPLETENESS_FLAG,
14243           p_CONTEXT                     => p_instance_rec.CONTEXT,
14244           p_ATTRIBUTE1                  => p_instance_rec.ATTRIBUTE1,
14245           p_ATTRIBUTE2                  => p_instance_rec.ATTRIBUTE2,
14246           p_ATTRIBUTE3                  => p_instance_rec.ATTRIBUTE3,
14247           p_ATTRIBUTE4                  => p_instance_rec.ATTRIBUTE4,
14248           p_ATTRIBUTE5                  => p_instance_rec.ATTRIBUTE5,
14249           p_ATTRIBUTE6                  => p_instance_rec.ATTRIBUTE6,
14250           p_ATTRIBUTE7                  => p_instance_rec.ATTRIBUTE7,
14251           p_ATTRIBUTE8                  => p_instance_rec.ATTRIBUTE8,
14252           p_ATTRIBUTE9                  => p_instance_rec.ATTRIBUTE9,
14253           p_ATTRIBUTE10                 => p_instance_rec.ATTRIBUTE10,
14254           p_ATTRIBUTE11                 => p_instance_rec.ATTRIBUTE11,
14255           p_ATTRIBUTE12                 => p_instance_rec.ATTRIBUTE12,
14256           p_ATTRIBUTE13                 => p_instance_rec.ATTRIBUTE13,
14257           p_ATTRIBUTE14                 => p_instance_rec.ATTRIBUTE14,
14258           p_ATTRIBUTE15                 => p_instance_rec.ATTRIBUTE15,
14259           p_CREATED_BY                  => fnd_api.g_miss_num,
14260           p_CREATION_DATE               => fnd_api.g_miss_date,
14261           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID,
14262           p_LAST_UPDATE_DATE            => SYSDATE,
14263           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.CONC_LOGIN_ID,
14264           p_OBJECT_VERSION_NUMBER       => p_instance_rec.OBJECT_VERSION_NUMBER,
14265           p_LAST_TXN_LINE_DETAIL_ID     => p_instance_rec.LAST_TXN_LINE_DETAIL_ID,
14266           p_INSTALL_LOCATION_TYPE_CODE  => p_instance_rec.INSTALL_LOCATION_TYPE_CODE,
14267           p_INSTALL_LOCATION_ID         => p_instance_rec.INSTALL_LOCATION_ID,
14268           p_INSTANCE_USAGE_CODE         => p_instance_rec.INSTANCE_USAGE_CODE,
14269           p_last_vld_organization_id    => l_last_vld_organization_id,
14270           p_CONFIG_INST_HDR_ID          => p_instance_rec.CONFIG_INST_HDR_ID,
14271           p_CONFIG_INST_REV_NUM         => p_instance_rec.CONFIG_INST_REV_NUM,
14272           p_CONFIG_INST_ITEM_ID         => p_instance_rec.CONFIG_INST_ITEM_ID,
14273           p_CONFIG_VALID_STATUS         => p_instance_rec.CONFIG_VALID_STATUS,
14274           p_INSTANCE_DESCRIPTION        => p_instance_rec.INSTANCE_DESCRIPTION,
14275           p_REQUEST_ID                  => p_instance_rec.REQUEST_ID,
14276           p_PROGRAM_APPLICATION_ID      => p_instance_rec.PROGRAM_APPLICATION_ID,
14277           p_PROGRAM_ID                  => p_instance_rec.PROGRAM_ID,
14278           p_PROGRAM_UPDATE_DATE         => p_instance_rec.PROGRAM_UPDATE_DATE,
14279 	  --start of parameters addition for eam integration--
14280           p_NETWORK_ASSET_FLAG          => p_instance_rec.NETWORK_ASSET_FLAG,
14281           p_MAINTAINABLE_FLAG           => p_instance_rec.MAINTAINABLE_FLAG,
14282           p_PN_LOCATION_ID              => p_instance_rec.PN_LOCATION_ID,
14283           p_ASSET_CRITICALITY_CODE      => p_instance_rec.ASSET_CRITICALITY_CODE,
14284           p_CATEGORY_ID                 => p_instance_rec.CATEGORY_ID,
14285           p_EQUIPMENT_GEN_OBJECT_ID     => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID,
14286           p_INSTANTIATION_FLAG          => p_instance_rec.INSTANTIATION_FLAG,
14287           p_LINEAR_LOCATION_ID          => p_instance_rec.LINEAR_LOCATION_ID,
14288           p_OPERATIONAL_LOG_FLAG        => p_instance_rec.OPERATIONAL_LOG_FLAG,
14289           p_CHECKIN_STATUS              => p_instance_rec.CHECKIN_STATUS,
14290           p_SUPPLIER_WARRANTY_EXP_DATE  => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE,
14291           p_ATTRIBUTE16                 => p_instance_rec.ATTRIBUTE16,
14292           p_ATTRIBUTE17                 => p_instance_rec.ATTRIBUTE17,
14293           p_ATTRIBUTE18                 => p_instance_rec.ATTRIBUTE18,
14294           p_ATTRIBUTE19                 => p_instance_rec.ATTRIBUTE19,
14295           p_ATTRIBUTE20                 => p_instance_rec.ATTRIBUTE20,
14296           p_ATTRIBUTE21                 => p_instance_rec.ATTRIBUTE21,
14297           p_ATTRIBUTE22                 => p_instance_rec.ATTRIBUTE22,
14298           p_ATTRIBUTE23                 => p_instance_rec.ATTRIBUTE23,
14299           p_ATTRIBUTE24                 => p_instance_rec.ATTRIBUTE24,
14300           p_ATTRIBUTE25                 => p_instance_rec.ATTRIBUTE25,
14301           p_ATTRIBUTE26                 => p_instance_rec.ATTRIBUTE26,
14302           p_ATTRIBUTE27                 => p_instance_rec.ATTRIBUTE27,
14303           p_ATTRIBUTE28                 => p_instance_rec.ATTRIBUTE28,
14304           p_ATTRIBUTE29                 => p_instance_rec.ATTRIBUTE29,
14305           p_ATTRIBUTE30                 => p_instance_rec.ATTRIBUTE30,
14306 	  --end of parameters addition for eam integration--
14307    -- Addition of columns for FA Integration
14308           p_PURCHASE_UNIT_PRICE         => p_instance_rec.PURCHASE_UNIT_PRICE,
14309           p_PURCHASE_CURRENCY_CODE      => p_instance_rec.PURCHASE_CURRENCY_CODE,
14310           p_PAYABLES_UNIT_PRICE         => p_instance_rec.PAYABLES_UNIT_PRICE,
14311           p_PAYABLES_CURRENCY_CODE      => p_instance_rec.PAYABLES_CURRENCY_CODE,
14312           p_SALES_UNIT_PRICE            => p_instance_rec.SALES_UNIT_PRICE,
14313           p_SALES_CURRENCY_CODE         => p_instance_rec.SALES_CURRENCY_CODE,
14314           p_OPERATIONAL_STATUS_CODE     => p_instance_rec.OPERATIONAL_STATUS_CODE,
14315     -- End addition of columns for FA Integration
14316           p_SOURCE_CODE                 => p_instance_rec.SOURCE_CODE -- Added Code for Siebel Genesis Project
14317           );
14318 
14319     IF l_eam_item
14320     THEN
14321       IF p_instance_rec.department_id IS NOT NULL OR
14322          p_instance_rec.wip_accounting_class IS NOT NULL OR
14323          p_instance_rec.area_id IS NOT NULL
14324       THEN
14325            eam_maint_attributes_pub.update_maint_attributes
14326                 ( p_api_version           => 1.0
14327                  ,p_init_msg_list         => FND_API.G_FALSE
14328                  ,p_commit                => FND_API.G_FALSE
14329                  ,p_validation_level      => fnd_api.g_valid_level_full
14330                  ,p_instance_id           => p_instance_rec.instance_id
14331                  ,p_owning_department_id  => p_instance_rec.department_id
14332                  ,p_accounting_class_code => p_instance_rec.wip_accounting_class
14333                  ,p_area_id               => p_instance_rec.area_id
14334                  ,x_return_status         => x_return_status
14335                  ,x_msg_count             => x_msg_count
14336                  ,x_msg_data              => x_msg_data);
14337 
14338            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
14339            THEN
14340               csi_gen_utility_pvt.put_line('Error from eam_maint_attributes_pub.update_maint_attributes..');
14341            RAISE FND_API.G_EXC_ERROR;
14342            END IF;
14343       END IF;
14344     END IF;
14345 -- calling the Counters API to associate counters to an instance
14346 -- Added to restrict the counter instantiation for an item in 'INVENTORY', by rtalluri for the enh. 2308703.
14347 -- Start of Fix for Bug: 2411622 by rtalluri - 06/25/02
14348    csi_gen_utility_pvt.put_line('p_instance_rec.quantity is '||to_char(p_instance_rec.quantity));
14349    csi_gen_utility_pvt.put_line('l_curr_instance_rec.quantity is '||to_char(l_curr_instance_rec.quantity));
14350    csi_gen_utility_pvt.put_line('p_instance_rec.location_type_code is '||p_instance_rec.location_type_code);
14351    csi_gen_utility_pvt.put_line('l_get_instance_rec.location_type_code is '||l_get_instance_rec.location_type_code);
14352    csi_gen_utility_pvt.put_line('p_instance_rec.accounting_class_code is '||p_instance_rec.accounting_class_code);
14353    csi_gen_utility_pvt.put_line('l_curr_instance_rec.accounting_class_code is '||l_curr_instance_rec.accounting_class_code);
14354    csi_gen_utility_pvt.put_line('l_serial_control is '||l_serial_control);
14355    --
14356    -- srramakr Bug # 2484611. Eliminated counter instantiation for serialized items since it is already
14357    -- instantiated when the instance is in INV. Also used Accounting_class_code in the check for the case
14358    -- where shipping finds exact match in staging. (It just updates in this case).
14359    --l_curr_instance_rec.network_asset_flag
14360 IF ( (p_instance_rec.quantity <> FND_API.G_MISS_NUM) AND
14361      (p_instance_rec.quantity IS NOT NULL) AND
14362      (l_serial_control not in (2,5)) AND
14363      (NVL(l_curr_instance_rec.network_asset_flag,'N')<>'Y' AND
14364       NVL(p_instance_rec.network_asset_flag,'N')<>'Y')
14365     )
14366 THEN -- Since for Serial control the counter gets instantiated in INV
14367   IF p_instance_rec.quantity = 1 THEN
14368     IF ( (p_instance_rec.quantity <> l_curr_instance_rec.quantity) OR
14369 	    (p_instance_rec.accounting_class_code = 'CUST_PROD' AND
14370 	     p_instance_rec.accounting_class_code <> l_curr_instance_rec.accounting_class_code) ) THEN
14371      IF NOT((l_serial_control IN (1,6)) AND
14372             (l_get_instance_rec.location_type_code = 'INVENTORY')) THEN
14373       -- Since the replacement API CSI_COUNTER_TEMPLATE_PUB
14374       -- for  CS_Counters_PUB.Ctr_Grp_Template_Exists
14375       -- does not provide a function Ctr_Grp_Template_Exists,
14376       -- Hence writing the following code...
14377         --l_counter_group_id := NULL;
14378         BEGIN
14379           SELECT COUNT(*)
14380             INTO l_counter_group_id
14381             FROM csi_ctr_item_associations
14382            WHERE inventory_item_id = l_get_instance_rec.inventory_item_id
14383              AND ROWNUM=1;
14384         EXCEPTION
14385           WHEN NO_DATA_FOUND THEN
14386            NULL;
14387         END;
14388 --       IF CS_Counters_PUB.Ctr_Grp_Template_Exists(l_get_instance_rec.inventory_item_id) THEN
14389 	   IF l_counter_group_id <>0
14390        THEN
14391 	 l_exists := 'N';
14392 	 BEGIN
14393 
14394         SELECT  'Y'
14395           INTO  l_exists
14396           FROM  csi_counter_associations
14397          WHERE  source_object_id = p_instance_rec.instance_id
14398            AND  source_object_code = 'CP';
14399 
14400 	 EXCEPTION
14401 	    WHEN NO_DATA_FOUND THEN
14402 	       l_exists := 'N';
14403 	    WHEN OTHERS THEN
14404 	       l_exists := 'Y';
14405 	 END;
14406          IF l_exists = 'N' THEN
14407 
14408           FND_File.Put_Line(Fnd_File.LOG,'Calling counter instantiate');
14409 
14410           csi_gen_utility_pvt.put_line('Calling Autoinstantiate counters');
14411 
14412            csi_counter_template_pub.autoinstantiate_counters
14413            ( p_api_version                => 1.0
14414             ,p_init_msg_list              => FND_API.G_FALSE
14415             ,p_commit                     => FND_API.G_FALSE
14416             ,x_return_status              => x_return_status
14417             ,x_msg_count                  => x_msg_count
14418             ,x_msg_data                   => x_msg_data
14419             ,p_source_object_id_template  => l_get_instance_rec.inventory_item_id
14420             ,p_source_object_id_instance  => p_instance_rec.instance_id
14421             ,x_ctr_id_template            => l_ctr_id_template
14422             ,x_ctr_id_instance            => l_ctr_id_instance
14423             ,x_ctr_grp_id_template        => l_ctr_grp_id_template
14424             ,x_ctr_grp_id_instance        => l_ctr_grp_id_instance
14425             ,p_organization_id            => l_last_vld_organization_id -- srramakr. should pass the organization_id
14426             );
14427 
14428            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
14429            THEN
14430              FND_MESSAGE.SET_NAME('CSI','CSI_API_NO_COUNTER_ASSOCIATION');
14431              FND_MESSAGE.SET_TOKEN('COUNTER','CSI_COUNTER_TEMPLATE_PUB.AUTOINSTANTIATE_COUNTERS');
14432              FND_MSG_PUB.Add;
14433              RAISE FND_API.G_EXC_ERROR;
14434            END IF;
14435           END IF;
14436 
14437       -- srramakr Bug # 2255391. In CTO, since the configured item is created as a part of Sales Order
14438       -- processing, there is no way a counter gets attached to this new item. In order to attach the counter,
14439       -- we look at the base model and use its counter group for the configured item. After attaching it,
14440       -- we call the Autoinstantiate API.
14441       ELSE  -- Check for the Base Model
14442         l_base_item_id := null;
14443         Begin
14444            select base_item_id
14445            into l_base_item_id
14446            from MTL_SYSTEM_ITEMS_B
14447            where inventory_item_id = l_get_instance_rec.inventory_item_id
14448            and   organization_id = l_last_vld_organization_id;
14449         Exception
14450            when no_data_found then
14451              null;
14452            when others then
14453              null;
14454         End;
14455 	    --
14456         IF l_base_item_id is not null THEN
14457           -- call the Counter Grp association API for the Configured Item
14458           For ctr_rec in CTR_GROUP(l_base_item_id)
14459           Loop
14460              Begin
14461                l_ctr_item_associations_rec.group_id          := ctr_rec.group_id;
14462                l_ctr_item_associations_rec.inventory_item_id := l_get_instance_rec.inventory_item_id;
14463 
14464              csi_counter_template_pub.create_item_association
14465                (p_api_version               => 1.0
14466                ,p_commit                    => fnd_api.g_false
14467                ,p_init_msg_list             => fnd_api.g_false
14468                ,p_validation_level          => p_validation_level
14469                ,p_ctr_item_associations_rec => l_ctr_item_associations_rec
14470                ,x_return_status             => x_return_status
14471                ,x_msg_count                 => x_msg_count
14472                ,x_msg_data                  => x_msg_data
14473                );
14474 
14475              End;
14476           End Loop;
14477 	    -- Call Autoinstantiate Counters
14478 --         IF CS_Counters_PUB.Ctr_Grp_Template_Exists(l_get_instance_rec.inventory_item_id) THEN
14479 	   IF l_counter_group_id <> 0
14480        THEN
14481 
14482          csi_counter_template_pub.autoinstantiate_counters
14483          ( p_api_version                => 1.0
14484           ,p_init_msg_list              => FND_API.G_FALSE
14485           ,p_commit                     => FND_API.G_FALSE
14486           ,x_return_status              => x_return_status
14487           ,x_msg_count                  => x_msg_count
14488           ,x_msg_data                   => x_msg_data
14489           ,p_source_object_id_template  => l_get_instance_rec.inventory_item_id
14490           ,p_source_object_id_instance  => p_instance_rec.instance_id
14491           ,x_ctr_id_template            => l_ctr_id_template
14492           ,x_ctr_id_instance            => l_ctr_id_instance
14493           ,x_ctr_grp_id_template        => l_ctr_grp_id_template
14494           ,x_ctr_grp_id_instance        => l_ctr_grp_id_instance
14495           ,p_organization_id            => l_last_vld_organization_id -- srramakr. should pass the organization_id
14496           );
14497 	         IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
14498 		       FND_MESSAGE.SET_NAME('CSI','CSI_API_NO_COUNTER_ASSOCIATION');
14499                FND_MESSAGE.SET_TOKEN('COUNTER','CSI_COUNTER_TEMPLATE_PUB.AUTOINSTANTIATE_COUNTERS');
14500 		       FND_MSG_PUB.Add;
14501 		       RAISE FND_API.G_EXC_ERROR;
14502 	         END IF;
14503 	       END IF; -- COunter template existance check for the new item
14504 	     END IF; -- Base Item ID check
14505        END IF;  -- Ctr Group check
14506      END IF; -- serial chk.
14507    END IF; --check for db qty and passed qty
14508  ELSE -- for qty > 1
14509    NULL;
14510    -- Delete counters is commented for Bug # 2978942.
14511  END IF; -- qty check
14512 END IF; -- g_miss check
14513 -- End of Fix for Bug: 2411622 by rtalluri - 06/25/02
14514 
14515 -- Moving counter update code from above
14516 	 l_exists := 'N';
14517        BEGIN
14518         SELECT  'Y'
14519           INTO  l_exists
14520           FROM  csi_counter_associations
14521          WHERE  source_object_id = p_instance_rec.instance_id
14522            AND  source_object_code = 'CP';
14523        EXCEPTION
14524         WHEN NO_DATA_FOUND THEN
14525            l_exists := 'N';
14526         WHEN OTHERS THEN
14527            l_exists := 'Y';
14528        END;
14529       csi_gen_utility_pvt.put_line('Value of l_exists '||l_exists);
14530 
14531          IF l_exists='Y' AND
14532             l_eam_item AND
14533             (NVL(l_curr_instance_rec.network_asset_flag,'N')<>'Y' AND
14534              NVL(p_instance_rec.network_asset_flag,'N')<>'Y')
14535          THEN
14536           IF l_cur_instance_rec.last_vld_organization_id <> l_get_instance_rec.vld_organization_id
14537           THEN
14538              SELECT maint_organization_id
14539                INTO l_curr_maint_org_id
14540                FROM mtl_parameters
14541               WHERE organization_id = l_cur_instance_rec.last_vld_organization_id;
14542 
14543              SELECT maint_organization_id
14544                INTO l_latest_maint_org_id
14545                FROM mtl_parameters
14546               WHERE organization_id = l_get_instance_rec.vld_organization_id;
14547               l_ctr:=1;
14548               csi_gen_utility_pvt.put_line('There is a change in vld organization...');
14549               csi_gen_utility_pvt.put_line('Value of current maint org is :'||l_curr_maint_org_id);
14550               csi_gen_utility_pvt.put_line('Value of new maint org is     :'||l_latest_maint_org_id);
14551              IF NVL(l_curr_maint_org_id,fnd_api.g_miss_num) <>
14552                 NVL(l_latest_maint_org_id,fnd_api.g_miss_num)
14553              THEN
14554                FOR l_upd_ctr_assn_csr IN upd_ctr_assn_csr(p_instance_rec.instance_id)
14555                LOOP
14556                 l_ctr_associations_tbl(l_ctr).instance_association_id :=
14557                 l_upd_ctr_assn_csr.instance_association_id;
14558 
14559                 l_ctr_associations_tbl(l_ctr).source_object_id :=
14560                 l_upd_ctr_assn_csr.source_object_id;
14561 
14562                 l_ctr_associations_tbl(l_ctr).counter_id :=
14563                 l_upd_ctr_assn_csr.counter_id;
14564 
14565                 l_ctr_associations_tbl(l_ctr).object_version_number :=
14566                 l_upd_ctr_assn_csr.object_version_number;
14567 
14568                 l_ctr_associations_tbl(l_ctr).maint_organization_id :=
14569                 l_latest_maint_org_id;
14570 
14571                 --Added for bug 6963602, during migration to R12, the start_date_active for entries in
14572                 --csi_counter_associations table are not properly populated, in that case, use the
14573                 --active_start_date for the associated item instance
14574                 IF l_upd_ctr_assn_csr.start_date_active IS NULL THEN
14575                   BEGIN
14576                     SELECT active_start_date
14577                     INTO   l_ctr_associations_tbl(l_ctr).start_date_active
14578                     FROM   csi_item_instances
14579                     WHERE  instance_id=p_instance_rec.instance_id;
14580                   EXCEPTION
14581                     WHEN NO_DATA_FOUND THEN
14582                       l_ctr_associations_tbl(l_ctr).start_date_active := p_instance_rec.active_start_date;
14583                     WHEN OTHERS THEN
14584                       l_ctr_associations_tbl(l_ctr).start_date_active := NULL;
14585                   END;
14586                 ELSE
14587                   l_ctr_associations_tbl(l_ctr).start_date_active := l_upd_ctr_assn_csr.start_date_active;
14588                 END IF;
14589 
14590                 l_ctr:=l_ctr+1;
14591                END LOOP;
14592 
14593                IF l_ctr_associations_tbl.COUNT >0
14594                THEN
14595                  csi_gen_utility_pvt.put_line('Calling update counter associations.');
14596                  CSI_COUNTER_PUB.update_ctr_associations
14597                   (p_api_version               => 1.0
14598                   ,p_commit                    => FND_API.G_FALSE
14599                   ,p_init_msg_list             => FND_API.G_FALSE
14600                   ,p_validation_level          => p_validation_level
14601                   ,p_counter_associations_tbl  => l_ctr_associations_tbl
14602                   ,x_return_status             => x_return_status
14603                   ,x_msg_count                 => x_msg_count
14604                   ,x_msg_data                  => x_msg_data
14605                   );
14606                  IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
14607                  THEN
14608                   csi_gen_utility_pvt.put_line('Error from csi_counter_pub.update_ctr_associations..');
14609                   RAISE FND_API.G_EXC_ERROR;
14610                  END IF;
14611                END IF;
14612              END IF;
14613           END IF;
14614          END IF;
14615 -- Ends here
14616 
14617 
14618 -- calling the transaction api
14619         CSI_TRANSACTIONS_PVT.Create_transaction
14620           (
14621              p_api_version            => p_api_version
14622             ,p_commit                 => p_commit
14623             ,p_init_msg_list          => p_init_msg_list
14624             ,p_validation_level       => p_validation_level
14625             ,p_Success_IF_Exists_Flag => 'Y'
14626             ,p_transaction_rec        => p_txn_rec
14627             ,x_return_status          => x_return_status
14628             ,x_msg_count              => x_msg_count
14629             ,x_msg_data               => x_msg_data
14630           );
14631 
14632          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
14633               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_VALIDATE_TXN');
14634               FND_MESSAGE.SET_TOKEN('TRANSACTION_ID',p_txn_rec.transaction_id );
14635               FND_MSG_PUB.Add;
14636               RAISE FND_API.G_EXC_ERROR;
14637          END IF;
14638 
14639 -- Get the full_dump_frequency from csi_install_parameter
14640        --
14641       IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
14642           csi_gen_utility_pvt.populate_install_param_rec;
14643        END IF;
14644        --
14645        l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
14646        --
14647        IF l_full_dump_frequency IS NULL THEN
14648           FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
14649           FND_MSG_PUB.ADD;
14650           RAISE FND_API.G_EXC_ERROR;
14651        END IF;
14652        --
14653 -- Get a unique history item instance id from the sequence
14654 -- l_csi_item_instance_h_id :=  csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
14655 
14656 
14657        select mod(p_instance_rec.object_version_number,l_full_dump_frequency)
14658        into   l_mod_value
14659        from   dual;
14660 
14661      -- Start of modification for Bug#2547034 on 09/20/02 - rtalluri
14662       BEGIN
14663         SELECT  instance_history_id
14664         INTO    l_ins_hist_id
14665         FROM    csi_item_instances_h h
14666         WHERE   h.transaction_id = p_txn_rec.transaction_id
14667         AND     h.instance_id = p_instance_rec.instance_id;
14668 
14669         OPEN   ins_hist_csr(l_ins_hist_id);
14670         FETCH  ins_hist_csr INTO l_ins_hist_csr ;
14671         CLOSE  ins_hist_csr;
14672 
14673         IF l_ins_hist_csr.full_dump_flag = 'Y'
14674         THEN
14675           CSI_ITEM_INSTANCES_H_PKG.Update_Row
14676            ( p_INSTANCE_HISTORY_ID              => l_ins_hist_id
14677             ,p_INSTANCE_ID                       => fnd_api.g_miss_num
14678             ,p_TRANSACTION_ID                    => fnd_api.g_miss_num
14679             ,p_OLD_INSTANCE_NUMBER               => fnd_api.g_miss_char
14680             ,p_NEW_INSTANCE_NUMBER               => p_instance_rec.INSTANCE_NUMBER
14681             ,p_OLD_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
14682             ,p_NEW_EXTERNAL_REFERENCE            => p_instance_rec.EXTERNAL_REFERENCE
14683             ,p_OLD_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
14684             ,p_NEW_INVENTORY_ITEM_ID             => p_instance_rec.INVENTORY_ITEM_ID
14685             ,p_OLD_INVENTORY_REVISION            => fnd_api.g_miss_char
14686             ,p_NEW_INVENTORY_REVISION            => p_instance_rec.INVENTORY_REVISION
14687             ,p_OLD_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
14688             ,p_NEW_INV_MASTER_ORGZN_ID           => p_instance_rec.INV_MASTER_ORGANIZATION_ID
14689             ,p_OLD_SERIAL_NUMBER                 => fnd_api.g_miss_char
14690             ,p_NEW_SERIAL_NUMBER                 => p_instance_rec.SERIAL_NUMBER
14691             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
14692             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
14693             ,p_OLD_LOT_NUMBER                    => fnd_api.g_miss_char
14694             ,p_NEW_LOT_NUMBER                    => p_instance_rec.LOT_NUMBER
14695             ,p_OLD_QUANTITY                      => fnd_api.g_miss_num
14696             ,p_NEW_QUANTITY                      => p_instance_rec.QUANTITY
14697             ,p_OLD_UNIT_OF_MEASURE               => fnd_api.g_miss_char
14698             ,p_NEW_UNIT_OF_MEASURE               => p_instance_rec.UNIT_OF_MEASURE
14699             ,p_OLD_ACCOUNTING_CLASS_CODE         => fnd_api.g_miss_char
14700             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
14701             ,p_OLD_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
14702             ,p_NEW_INSTANCE_CONDITION_ID         => p_instance_rec.INSTANCE_CONDITION_ID
14703             ,p_OLD_INSTANCE_STATUS_ID            => fnd_api.g_miss_num
14704             ,p_NEW_INSTANCE_STATUS_ID            => p_instance_rec.INSTANCE_STATUS_ID
14705             ,p_OLD_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
14706             ,p_NEW_CUSTOMER_VIEW_FLAG            => p_instance_rec.CUSTOMER_VIEW_FLAG
14707             ,p_OLD_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
14708             ,p_NEW_MERCHANT_VIEW_FLAG            => p_instance_rec.MERCHANT_VIEW_FLAG
14709             ,p_OLD_SELLABLE_FLAG                 => fnd_api.g_miss_char
14710             ,p_NEW_SELLABLE_FLAG                 => p_instance_rec.SELLABLE_FLAG
14711             ,p_OLD_SYSTEM_ID                     => fnd_api.g_miss_num
14712             ,p_NEW_SYSTEM_ID                     => p_instance_rec.SYSTEM_ID
14713             ,p_OLD_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
14714             ,p_NEW_INSTANCE_TYPE_CODE            => p_instance_rec.INSTANCE_TYPE_CODE
14715             ,p_OLD_ACTIVE_START_DATE             => fnd_api.g_miss_date
14716             ,p_NEW_ACTIVE_START_DATE             => p_instance_rec.ACTIVE_START_DATE
14717             ,p_OLD_ACTIVE_END_DATE               => fnd_api.g_miss_date
14718             ,p_NEW_ACTIVE_END_DATE               => p_instance_rec.ACTIVE_END_DATE
14719             ,p_OLD_LOCATION_TYPE_CODE            => fnd_api.g_miss_char
14720             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
14721             ,p_OLD_LOCATION_ID                   => fnd_api.g_miss_num
14722             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
14723             ,p_OLD_INV_ORGANIZATION_ID           => fnd_api.g_miss_num
14724             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
14725             ,p_OLD_INV_SUBINVENTORY_NAME         => fnd_api.g_miss_char
14726             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
14727             ,p_OLD_INV_LOCATOR_ID                => fnd_api.g_miss_num
14728             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
14729             ,p_OLD_PA_PROJECT_ID                 => fnd_api.g_miss_num
14730             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
14731             ,p_OLD_PA_PROJECT_TASK_ID            => fnd_api.g_miss_num
14732             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
14733             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => fnd_api.g_miss_num
14734             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
14735             ,p_OLD_WIP_JOB_ID                    => fnd_api.g_miss_num
14736             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
14737             ,p_OLD_PO_ORDER_LINE_ID              => fnd_api.g_miss_num
14738             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
14739             ,p_OLD_COMPLETENESS_FLAG             => fnd_api.g_miss_char
14740             ,p_NEW_COMPLETENESS_FLAG             => p_instance_rec.COMPLETENESS_FLAG
14741             ,p_FULL_DUMP_FLAG                    => fnd_api.g_miss_char
14742             ,p_NEW_CONTEXT                       => p_instance_rec.CONTEXT
14743             ,P_OLD_CONTEXT                       => fnd_api.g_miss_char
14744             ,p_NEW_ATTRIBUTE1                    => p_instance_rec.ATTRIBUTE1
14745             ,p_OLD_ATTRIBUTE1                    => fnd_api.g_miss_char
14746             ,p_NEW_ATTRIBUTE2                    => p_instance_rec.ATTRIBUTE2
14747             ,p_OLD_ATTRIBUTE2                    => fnd_api.g_miss_char
14748             ,p_NEW_ATTRIBUTE3                    => p_instance_rec.ATTRIBUTE3
14749             ,p_OLD_ATTRIBUTE3                    => fnd_api.g_miss_char
14750             ,p_NEW_ATTRIBUTE4                    => p_instance_rec.ATTRIBUTE4
14751             ,p_OLD_ATTRIBUTE4                    => fnd_api.g_miss_char
14752             ,p_NEW_ATTRIBUTE5                    => p_instance_rec.ATTRIBUTE5
14753             ,p_OLD_ATTRIBUTE5                    => fnd_api.g_miss_char
14754             ,p_NEW_ATTRIBUTE6                    => p_instance_rec.ATTRIBUTE6
14755             ,p_OLD_ATTRIBUTE6                    => fnd_api.g_miss_char
14756             ,p_NEW_ATTRIBUTE7                    => p_instance_rec.ATTRIBUTE7
14757             ,p_OLD_ATTRIBUTE7                    => fnd_api.g_miss_char
14758             ,p_NEW_ATTRIBUTE8                    => p_instance_rec.ATTRIBUTE8
14759             ,p_OLD_ATTRIBUTE8                    => fnd_api.g_miss_char
14760             ,p_NEW_ATTRIBUTE9                    => p_instance_rec.ATTRIBUTE9
14761             ,p_OLD_ATTRIBUTE9                    => fnd_api.g_miss_char
14762             ,p_NEW_ATTRIBUTE10                   => p_instance_rec.ATTRIBUTE10
14763             ,p_OLD_ATTRIBUTE10                   => fnd_api.g_miss_char
14764             ,p_NEW_ATTRIBUTE11                   => p_instance_rec.ATTRIBUTE11
14765             ,p_OLD_ATTRIBUTE11                   => fnd_api.g_miss_char
14766             ,p_NEW_ATTRIBUTE12                   => p_instance_rec.ATTRIBUTE12
14767             ,p_OLD_ATTRIBUTE12                   => fnd_api.g_miss_char
14768             ,p_NEW_ATTRIBUTE13                   => p_instance_rec.ATTRIBUTE13
14769             ,p_OLD_ATTRIBUTE13                   => fnd_api.g_miss_char
14770             ,p_NEW_ATTRIBUTE14                   => p_instance_rec.ATTRIBUTE14
14771             ,p_OLD_ATTRIBUTE14                   => fnd_api.g_miss_char
14772             ,p_NEW_ATTRIBUTE15                   => p_instance_rec.ATTRIBUTE15
14773             ,p_OLD_ATTRIBUTE15                   => fnd_api.g_miss_char
14774             ,p_CREATED_BY                        => fnd_api.g_miss_num
14775             ,p_CREATION_DATE                     => fnd_api.g_miss_date
14776             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
14777             ,p_LAST_UPDATE_DATE                  => SYSDATE
14778             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
14779             ,p_OBJECT_VERSION_NUMBER             => fnd_api.g_miss_num
14780             ,p_OLD_INST_LOC_TYPE_CODE            => fnd_api.g_miss_char
14781             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
14782             ,p_OLD_INST_LOC_ID                   => fnd_api.g_miss_num
14783             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
14784             ,p_OLD_INST_USAGE_CODE               => fnd_api.g_miss_char
14785             ,p_NEW_INST_USAGE_CODE               => p_instance_rec.INSTANCE_USAGE_CODE
14786             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
14787             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => l_last_vld_organization_id
14788             ,p_OLD_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
14789             ,p_NEW_CONFIG_INST_REV_NUM           => p_instance_rec.CONFIG_INST_REV_NUM
14790             ,p_OLD_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
14791             ,p_NEW_CONFIG_VALID_STATUS           => p_instance_rec.CONFIG_VALID_STATUS
14792             ,p_OLD_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
14793             ,p_NEW_INSTANCE_DESCRIPTION          => p_instance_rec.INSTANCE_DESCRIPTION
14794             ,p_OLD_INSTALL_DATE                  => fnd_api.g_miss_date
14795             ,p_NEW_INSTALL_DATE                  => p_instance_rec.INSTALL_DATE
14796             ,p_OLD_RETURN_BY_DATE                => fnd_api.g_miss_date
14797             ,p_NEW_RETURN_BY_DATE                => p_instance_rec.RETURN_BY_DATE
14798             ,p_OLD_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
14799             ,p_NEW_ACTUAL_RETURN_DATE            => p_instance_rec.ACTUAL_RETURN_DATE
14800             ,p_OLD_LAST_OE_AGREEMENT_ID          => fnd_api.g_miss_num
14801             ,p_NEW_LAST_OE_AGREEMENT_ID          => p_instance_rec.LAST_OE_AGREEMENT_ID
14802 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => fnd_api.g_miss_num
14803 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => p_instance_rec.LAST_OE_ORDER_LINE_ID
14804 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => fnd_api.g_miss_num
14805 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => p_instance_rec.LAST_OE_RMA_LINE_ID
14806 	    ,p_OLD_LAST_WIP_JOB_ID               => fnd_api.g_miss_num
14807 	    ,p_NEW_LAST_WIP_JOB_ID               => p_instance_rec.LAST_WIP_JOB_ID
14808 	    ,p_OLD_LAST_PO_PO_LINE_ID            => fnd_api.g_miss_num
14809 	    ,p_NEW_LAST_PO_PO_LINE_ID            => p_instance_rec.LAST_PO_PO_LINE_ID
14810 	    ,p_OLD_LAST_PA_PROJECT_ID            => fnd_api.g_miss_num
14811 	    ,p_NEW_LAST_PA_PROJECT_ID            => p_instance_rec.LAST_PA_PROJECT_ID
14812 	    ,p_OLD_LAST_PA_TASK_ID          => fnd_api.g_miss_num
14813 	    ,p_NEW_LAST_PA_TASK_ID          => p_instance_rec.LAST_PA_TASK_ID
14814 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => fnd_api.g_miss_num
14815 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
14816 	    ,p_OLD_LAST_OE_PO_NUMBER             => fnd_api.g_miss_char
14817 	    ,p_NEW_LAST_OE_PO_NUMBER             => p_instance_rec.LAST_OE_PO_NUMBER
14818  	    --start of parameters addition for eam integration--
14819 	    ,p_OLD_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
14820 	    ,p_NEW_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
14821 	    ,p_OLD_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
14822 	    ,p_NEW_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
14823 	    ,p_OLD_PN_LOCATION_ID                 => fnd_api.g_miss_num
14824 	    ,p_NEW_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
14825 	    ,p_OLD_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
14826 	    ,p_NEW_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
14827 	    ,p_OLD_CATEGORY_ID                    => fnd_api.g_miss_num
14828 	    ,p_NEW_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
14829 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
14830 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
14831 	    ,p_OLD_INSTANTIATION_FLAG             => fnd_api.g_miss_char
14832 	    ,p_NEW_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
14833 	    ,p_OLD_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
14834 	    ,p_NEW_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
14835 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
14836 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
14837 	    ,p_OLD_CHECKIN_STATUS                 => fnd_api.g_miss_num
14838 	    ,p_NEW_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
14839 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
14840 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
14841             ,p_OLD_ATTRIBUTE16                    => fnd_api.g_miss_char
14842             ,p_NEW_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
14843             ,p_OLD_ATTRIBUTE17                    => fnd_api.g_miss_char
14844             ,p_NEW_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
14845             ,p_OLD_ATTRIBUTE18                    => fnd_api.g_miss_char
14846             ,p_NEW_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
14847             ,p_OLD_ATTRIBUTE19                    => fnd_api.g_miss_char
14848             ,p_NEW_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
14849             ,p_OLD_ATTRIBUTE20                    => fnd_api.g_miss_char
14850             ,p_NEW_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
14851             ,p_OLD_ATTRIBUTE21                    => fnd_api.g_miss_char
14852             ,p_NEW_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
14853             ,p_OLD_ATTRIBUTE22                    => fnd_api.g_miss_char
14854             ,p_NEW_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
14855             ,p_OLD_ATTRIBUTE23                    => fnd_api.g_miss_char
14856             ,p_NEW_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
14857             ,p_OLD_ATTRIBUTE24                    => fnd_api.g_miss_char
14858             ,p_NEW_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
14859             ,p_OLD_ATTRIBUTE25                    => fnd_api.g_miss_char
14860             ,p_NEW_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
14861             ,p_OLD_ATTRIBUTE26                    => fnd_api.g_miss_char
14862             ,p_NEW_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
14863             ,p_OLD_ATTRIBUTE27                    => fnd_api.g_miss_char
14864             ,p_NEW_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
14865             ,p_OLD_ATTRIBUTE28                    => fnd_api.g_miss_char
14866             ,p_NEW_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
14867             ,p_OLD_ATTRIBUTE29                    => fnd_api.g_miss_char
14868             ,p_NEW_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
14869             ,p_OLD_ATTRIBUTE30                    => fnd_api.g_miss_char
14870             ,p_NEW_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
14871   	    --end of parameters addition for eam integration--
14872         -- Addition of columns for FA Integration
14873             ,p_OLD_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
14874             ,p_NEW_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
14875             ,p_OLD_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
14876             ,p_NEW_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
14877             ,p_OLD_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
14878             ,p_NEW_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
14879             ,p_OLD_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
14880             ,p_NEW_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
14881             ,p_OLD_SALES_UNIT_PRICE               => fnd_api.g_miss_num
14882             ,p_NEW_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
14883             ,p_OLD_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
14884             ,p_NEW_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
14885             ,p_OLD_OPERATIONAL_STATUS_CODE        => fnd_api.g_miss_char
14886             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
14887         -- End addition of columns for FA Integration
14888             -- Begin Add Code for Siebel Genesis Project
14889             ,p_OLD_SOURCE_CODE                   => fnd_api.g_miss_char
14890             ,p_NEW_SOURCE_CODE                   => p_instance_rec.SOURCE_CODE
14891             -- End Add Code for Siebel Genesis Project
14892             );
14893 
14894         ELSE
14895 
14896              IF    ( l_ins_hist_csr.old_instance_number IS NULL
14897                 AND  l_ins_hist_csr.new_instance_number IS NULL ) THEN
14898                      IF  ( p_instance_rec.instance_number = l_curr_instance_rec.instance_number )
14899                       OR ( p_instance_rec.instance_number = fnd_api.g_miss_char ) THEN
14900                            l_ins_hist_csr.old_instance_number := NULL;
14901                            l_ins_hist_csr.new_instance_number := NULL;
14902                      ELSE
14903                            l_ins_hist_csr.old_instance_number := fnd_api.g_miss_char;
14904                            l_ins_hist_csr.new_instance_number := p_instance_rec.instance_number;
14905                      END IF;
14906              ELSE
14907                      l_ins_hist_csr.old_instance_number := fnd_api.g_miss_char;
14908                      l_ins_hist_csr.new_instance_number := p_instance_rec.instance_number;
14909              END IF;
14910              --
14911              IF    ( l_ins_hist_csr.old_external_reference IS NULL
14912                 AND  l_ins_hist_csr.new_external_reference IS NULL ) THEN
14913                      IF  ( p_instance_rec.external_reference = l_curr_instance_rec.external_reference )
14914                       OR ( p_instance_rec.external_reference = fnd_api.g_miss_char ) THEN
14915                            l_ins_hist_csr.old_external_reference := NULL;
14916                            l_ins_hist_csr.new_external_reference := NULL;
14917                      ELSE
14918                            l_ins_hist_csr.old_external_reference := fnd_api.g_miss_char;
14919                            l_ins_hist_csr.new_external_reference := p_instance_rec.external_reference;
14920                      END IF;
14921              ELSE
14922                      l_ins_hist_csr.old_external_reference := fnd_api.g_miss_char;
14923                      l_ins_hist_csr.new_external_reference := p_instance_rec.external_reference;
14924              END IF;
14925              --
14926              IF    ( l_ins_hist_csr.old_inventory_item_id IS NULL
14927                 AND  l_ins_hist_csr.new_inventory_item_id IS NULL ) THEN
14928                      IF  ( p_instance_rec.inventory_item_id = l_curr_instance_rec.inventory_item_id )
14929                       OR ( p_instance_rec.inventory_item_id = fnd_api.g_miss_num ) THEN
14930                            l_ins_hist_csr.old_inventory_item_id := NULL;
14931                            l_ins_hist_csr.new_inventory_item_id := NULL;
14932                      ELSE
14933                            l_ins_hist_csr.old_inventory_item_id := fnd_api.g_miss_num;
14934                            l_ins_hist_csr.new_inventory_item_id := p_instance_rec.inventory_item_id;
14935                      END IF;
14936              ELSE
14937                      l_ins_hist_csr.old_inventory_item_id := fnd_api.g_miss_num;
14938                      l_ins_hist_csr.new_inventory_item_id := p_instance_rec.inventory_item_id;
14939              END IF;
14940              --
14941              IF    ( l_ins_hist_csr.old_inventory_revision IS NULL
14942                 AND  l_ins_hist_csr.new_inventory_revision IS NULL ) THEN
14943                      IF  ( p_instance_rec.inventory_revision = l_curr_instance_rec.inventory_revision )
14944                       OR ( p_instance_rec.inventory_revision = fnd_api.g_miss_char ) THEN
14945                            l_ins_hist_csr.old_inventory_revision := NULL;
14946                            l_ins_hist_csr.new_inventory_revision := NULL;
14947                      ELSE
14948                            l_ins_hist_csr.old_inventory_revision := fnd_api.g_miss_char;
14949                            l_ins_hist_csr.new_inventory_revision := p_instance_rec.inventory_revision;
14950                      END IF;
14951              ELSE
14952                      l_ins_hist_csr.old_inventory_revision := fnd_api.g_miss_char;
14953                      l_ins_hist_csr.new_inventory_revision := p_instance_rec.inventory_revision;
14954              END IF;
14955              --
14956              IF    ( l_ins_hist_csr.old_inv_master_organization_id IS NULL
14957                 AND  l_ins_hist_csr.new_inv_master_organization_id IS NULL ) THEN
14958                      IF  ( p_instance_rec.inv_master_organization_id = l_curr_instance_rec.inv_master_organization_id )
14959                       OR ( p_instance_rec.inv_master_organization_id = fnd_api.g_miss_num ) THEN
14960                            l_ins_hist_csr.old_inv_master_organization_id := NULL;
14961                            l_ins_hist_csr.new_inv_master_organization_id := NULL;
14962                      ELSE
14963                            l_ins_hist_csr.old_inv_master_organization_id := fnd_api.g_miss_num;
14964                            l_ins_hist_csr.new_inv_master_organization_id := p_instance_rec.inv_master_organization_id;
14965                      END IF;
14966              ELSE
14967                      l_ins_hist_csr.old_inv_master_organization_id := fnd_api.g_miss_num;
14968                      l_ins_hist_csr.new_inv_master_organization_id := p_instance_rec.inv_master_organization_id;
14969              END IF;
14970              --
14971              IF    ( l_ins_hist_csr.old_serial_number IS NULL
14972                 AND  l_ins_hist_csr.new_serial_number IS NULL ) THEN
14973                      IF  ( p_instance_rec.serial_number = l_curr_instance_rec.serial_number )
14974                       OR ( p_instance_rec.serial_number = fnd_api.g_miss_char ) THEN
14975                            l_ins_hist_csr.old_serial_number := NULL;
14976                            l_ins_hist_csr.new_serial_number := NULL;
14977                      ELSE
14978                            l_ins_hist_csr.old_serial_number := fnd_api.g_miss_char;
14979                            l_ins_hist_csr.new_serial_number := p_instance_rec.serial_number;
14980                      END IF;
14981              ELSE
14982                      l_ins_hist_csr.old_serial_number := fnd_api.g_miss_char;
14983                      l_ins_hist_csr.new_serial_number := p_instance_rec.serial_number;
14984              END IF;
14985              --
14986              IF    ( l_ins_hist_csr.old_mfg_serial_number_flag IS NULL
14987                 AND  l_ins_hist_csr.new_mfg_serial_number_flag IS NULL ) THEN
14988                      IF  ( p_instance_rec.mfg_serial_number_flag = l_curr_instance_rec.mfg_serial_number_flag )
14989                       OR ( p_instance_rec.mfg_serial_number_flag = fnd_api.g_miss_char ) THEN
14990                            l_ins_hist_csr.old_mfg_serial_number_flag := NULL;
14991                            l_ins_hist_csr.new_mfg_serial_number_flag := NULL;
14992                      ELSE
14993                            l_ins_hist_csr.old_mfg_serial_number_flag := fnd_api.g_miss_char;
14994                            l_ins_hist_csr.new_mfg_serial_number_flag := p_instance_rec.mfg_serial_number_flag;
14995                      END IF;
14996              ELSE
14997                      l_ins_hist_csr.old_mfg_serial_number_flag := fnd_api.g_miss_char;
14998                      l_ins_hist_csr.new_mfg_serial_number_flag := p_instance_rec.mfg_serial_number_flag;
14999              END IF;
15000              --
15001              IF    ( l_ins_hist_csr.old_lot_number IS NULL
15002                 AND  l_ins_hist_csr.new_lot_number IS NULL ) THEN
15003                      IF  ( p_instance_rec.lot_number = l_curr_instance_rec.lot_number )
15004                       OR ( p_instance_rec.lot_number = fnd_api.g_miss_char ) THEN
15005                            l_ins_hist_csr.old_lot_number := NULL;
15006                            l_ins_hist_csr.new_lot_number := NULL;
15007                      ELSE
15008                            l_ins_hist_csr.old_lot_number := fnd_api.g_miss_char;
15009                            l_ins_hist_csr.new_lot_number := p_instance_rec.lot_number;
15010                      END IF;
15011              ELSE
15012                      l_ins_hist_csr.old_lot_number := fnd_api.g_miss_char;
15013                      l_ins_hist_csr.new_lot_number := p_instance_rec.lot_number;
15014              END IF;
15015              --
15016              IF    ( l_ins_hist_csr.old_quantity IS NULL
15017                 AND  l_ins_hist_csr.new_quantity IS NULL ) THEN
15018                      IF  ( p_instance_rec.quantity = l_curr_instance_rec.quantity )
15019                       OR ( p_instance_rec.quantity = fnd_api.g_miss_num ) THEN
15020                            l_ins_hist_csr.old_quantity := NULL;
15021                            l_ins_hist_csr.new_quantity := NULL;
15022                      ELSE
15023                            l_ins_hist_csr.old_quantity := l_curr_instance_rec.quantity; --fnd_api.g_miss_num;
15024                            l_ins_hist_csr.new_quantity := p_instance_rec.quantity;
15025                      END IF;
15026              ELSE
15027                      l_ins_hist_csr.old_quantity := fnd_api.g_miss_num;
15028                      l_ins_hist_csr.new_quantity := p_instance_rec.quantity;
15029              END IF;
15030              --
15031              IF    ( l_ins_hist_csr.old_unit_of_measure IS NULL
15032                 AND  l_ins_hist_csr.new_unit_of_measure IS NULL ) THEN
15033                      IF  ( p_instance_rec.unit_of_measure = l_curr_instance_rec.unit_of_measure )
15034                       OR ( p_instance_rec.unit_of_measure = fnd_api.g_miss_char ) THEN
15035                            l_ins_hist_csr.old_unit_of_measure := NULL;
15036                            l_ins_hist_csr.new_unit_of_measure := NULL;
15037                      ELSE
15038                            l_ins_hist_csr.old_unit_of_measure := fnd_api.g_miss_char;
15039                            l_ins_hist_csr.new_unit_of_measure := p_instance_rec.unit_of_measure;
15040                      END IF;
15041              ELSE
15042                      l_ins_hist_csr.old_unit_of_measure := fnd_api.g_miss_char;
15043                      l_ins_hist_csr.new_unit_of_measure := p_instance_rec.unit_of_measure;
15044              END IF;
15045              --
15046              IF    ( l_ins_hist_csr.old_accounting_class_code IS NULL
15047                 AND  l_ins_hist_csr.new_accounting_class_code IS NULL ) THEN
15048                      IF  ( p_instance_rec.accounting_class_code = l_curr_instance_rec.accounting_class_code )
15049                       OR ( p_instance_rec.accounting_class_code = fnd_api.g_miss_char ) THEN
15050                            l_ins_hist_csr.old_accounting_class_code := NULL;
15051                            l_ins_hist_csr.new_accounting_class_code := NULL;
15052                      ELSE
15053                            l_ins_hist_csr.old_accounting_class_code := fnd_api.g_miss_char;
15054                            l_ins_hist_csr.new_accounting_class_code := p_instance_rec.accounting_class_code;
15055                      END IF;
15056              ELSE
15057                      l_ins_hist_csr.old_accounting_class_code := fnd_api.g_miss_char;
15058                      l_ins_hist_csr.new_accounting_class_code := p_instance_rec.accounting_class_code;
15059              END IF;
15060              --
15061              IF    ( l_ins_hist_csr.old_instance_condition_id IS NULL
15062                 AND  l_ins_hist_csr.new_instance_condition_id IS NULL ) THEN
15063                      IF  ( p_instance_rec.instance_condition_id = l_curr_instance_rec.instance_condition_id )
15064                       OR ( p_instance_rec.instance_condition_id = fnd_api.g_miss_num ) THEN
15065                            l_ins_hist_csr.old_instance_condition_id := NULL;
15066                            l_ins_hist_csr.new_instance_condition_id := NULL;
15067                      ELSE
15068                            l_ins_hist_csr.old_instance_condition_id := fnd_api.g_miss_num;
15069                            l_ins_hist_csr.new_instance_condition_id := p_instance_rec.instance_condition_id;
15070                      END IF;
15071              ELSE
15072                      l_ins_hist_csr.old_instance_condition_id := fnd_api.g_miss_num;
15073                      l_ins_hist_csr.new_instance_condition_id := p_instance_rec.instance_condition_id;
15074              END IF;
15075              --
15076              IF    ( l_ins_hist_csr.old_instance_status_id IS NULL
15077                 AND  l_ins_hist_csr.new_instance_status_id IS NULL ) THEN
15078                      IF  ( p_instance_rec.instance_status_id = l_curr_instance_rec.instance_status_id )
15079                       OR ( p_instance_rec.instance_status_id = fnd_api.g_miss_num ) THEN
15080                            l_ins_hist_csr.old_instance_status_id := NULL;
15081                            l_ins_hist_csr.new_instance_status_id := NULL;
15082                      ELSE
15083                       /* Following has been added for bug 2935513 */
15084                         IF nvl(l_curr_instance_rec.instance_status_id,fnd_api.g_miss_num)<>
15085                            nvl(p_instance_rec.instance_status_id,fnd_api.g_miss_num)
15086                         THEN
15087                            l_ins_hist_csr.old_instance_status_id := l_curr_instance_rec.instance_status_id;
15088                            l_ins_hist_csr.new_instance_status_id := p_instance_rec.instance_status_id;
15089                         ELSE
15090                      /* End addition for bug 2935513 */
15091                            l_ins_hist_csr.old_instance_status_id := fnd_api.g_miss_num;
15092                            l_ins_hist_csr.new_instance_status_id := p_instance_rec.instance_status_id;
15093                         END IF;
15094 
15095                      END IF;
15096              ELSE
15097                      l_ins_hist_csr.old_instance_status_id := fnd_api.g_miss_num;
15098                      l_ins_hist_csr.new_instance_status_id := p_instance_rec.instance_status_id;
15099              END IF;
15100              --
15101              IF    ( l_ins_hist_csr.old_customer_view_flag IS NULL
15102                 AND  l_ins_hist_csr.new_customer_view_flag IS NULL ) THEN
15103                      IF  ( p_instance_rec.customer_view_flag = l_curr_instance_rec.customer_view_flag )
15104                       OR ( p_instance_rec.customer_view_flag = fnd_api.g_miss_char ) THEN
15105                            l_ins_hist_csr.old_customer_view_flag := NULL;
15106                            l_ins_hist_csr.new_customer_view_flag := NULL;
15107                      ELSE
15108                            l_ins_hist_csr.old_customer_view_flag := fnd_api.g_miss_char;
15109                            l_ins_hist_csr.new_customer_view_flag := p_instance_rec.customer_view_flag;
15110                      END IF;
15111              ELSE
15112                      l_ins_hist_csr.old_customer_view_flag := fnd_api.g_miss_char;
15113                      l_ins_hist_csr.new_customer_view_flag := p_instance_rec.customer_view_flag;
15114              END IF;
15115              --
15116              IF    ( l_ins_hist_csr.old_merchant_view_flag IS NULL
15117                 AND  l_ins_hist_csr.new_merchant_view_flag IS NULL ) THEN
15118                      IF  ( p_instance_rec.merchant_view_flag = l_curr_instance_rec.merchant_view_flag )
15119                       OR ( p_instance_rec.merchant_view_flag = fnd_api.g_miss_char ) THEN
15120                            l_ins_hist_csr.old_merchant_view_flag := NULL;
15121                            l_ins_hist_csr.new_merchant_view_flag := NULL;
15122                      ELSE
15123                            l_ins_hist_csr.old_merchant_view_flag := fnd_api.g_miss_char;
15124                            l_ins_hist_csr.new_merchant_view_flag := p_instance_rec.merchant_view_flag;
15125                      END IF;
15126              ELSE
15127                      l_ins_hist_csr.old_merchant_view_flag := fnd_api.g_miss_char;
15128                      l_ins_hist_csr.new_merchant_view_flag := p_instance_rec.merchant_view_flag;
15129              END IF;
15130              --
15131              IF    ( l_ins_hist_csr.old_sellable_flag IS NULL
15132                 AND  l_ins_hist_csr.new_sellable_flag IS NULL ) THEN
15133                      IF  ( p_instance_rec.sellable_flag = l_curr_instance_rec.sellable_flag )
15134                       OR ( p_instance_rec.sellable_flag = fnd_api.g_miss_char ) THEN
15135                            l_ins_hist_csr.old_sellable_flag := NULL;
15136                            l_ins_hist_csr.new_sellable_flag := NULL;
15137                      ELSE
15138                            l_ins_hist_csr.old_sellable_flag := fnd_api.g_miss_char;
15139                            l_ins_hist_csr.new_sellable_flag := p_instance_rec.sellable_flag;
15140                      END IF;
15141              ELSE
15142                      l_ins_hist_csr.old_sellable_flag := fnd_api.g_miss_char;
15143                      l_ins_hist_csr.new_sellable_flag := p_instance_rec.sellable_flag;
15144              END IF;
15145              --
15146              IF    ( l_ins_hist_csr.old_system_id IS NULL
15147                 AND  l_ins_hist_csr.new_system_id IS NULL ) THEN
15148                      IF  ( p_instance_rec.system_id = l_curr_instance_rec.system_id )
15149                       OR ( p_instance_rec.system_id = fnd_api.g_miss_num ) THEN
15150                            l_ins_hist_csr.old_system_id := NULL;
15151                            l_ins_hist_csr.new_system_id := NULL;
15152                      ELSE
15153                            l_ins_hist_csr.old_system_id := fnd_api.g_miss_num;
15154                            l_ins_hist_csr.new_system_id := p_instance_rec.system_id;
15155                      END IF;
15156              ELSE
15157                      l_ins_hist_csr.old_system_id := fnd_api.g_miss_num;
15158                      l_ins_hist_csr.new_system_id := p_instance_rec.system_id;
15159              END IF;
15160              --
15161              IF    ( l_ins_hist_csr.old_instance_type_code IS NULL
15162                 AND  l_ins_hist_csr.new_instance_type_code IS NULL ) THEN
15163                      IF  ( p_instance_rec.instance_type_code = l_curr_instance_rec.instance_type_code )
15164                       OR ( p_instance_rec.instance_type_code = fnd_api.g_miss_char ) THEN
15165                            l_ins_hist_csr.old_instance_type_code := NULL;
15166                            l_ins_hist_csr.new_instance_type_code := NULL;
15167                      ELSE
15168                            l_ins_hist_csr.old_instance_type_code := fnd_api.g_miss_char;
15169                            l_ins_hist_csr.new_instance_type_code := p_instance_rec.instance_type_code;
15170                      END IF;
15171              ELSE
15172                      l_ins_hist_csr.old_instance_type_code := fnd_api.g_miss_char;
15173                      l_ins_hist_csr.new_instance_type_code := p_instance_rec.instance_type_code;
15174              END IF;
15175              --
15176              IF    ( l_ins_hist_csr.old_active_start_date IS NULL
15177                 AND  l_ins_hist_csr.new_active_start_date IS NULL ) THEN
15178                      IF  ( p_instance_rec.active_start_date = l_curr_instance_rec.active_start_date )
15179                       OR ( p_instance_rec.active_start_date = fnd_api.g_miss_date ) THEN
15180                            l_ins_hist_csr.old_active_start_date := NULL;
15181                            l_ins_hist_csr.new_active_start_date := NULL;
15182                      ELSE
15183                            l_ins_hist_csr.old_active_start_date := fnd_api.g_miss_date;
15184                            l_ins_hist_csr.new_active_start_date := p_instance_rec.active_start_date;
15185                      END IF;
15186              ELSE
15187                      l_ins_hist_csr.old_active_start_date := fnd_api.g_miss_date;
15188                      l_ins_hist_csr.new_active_start_date := p_instance_rec.active_start_date;
15189              END IF;
15190              --
15191              IF    ( l_ins_hist_csr.old_active_end_date IS NULL
15192                 AND  l_ins_hist_csr.new_active_end_date IS NULL ) THEN
15193                      IF  ( p_instance_rec.active_end_date = l_curr_instance_rec.active_end_date )
15194                       OR ( p_instance_rec.active_end_date = fnd_api.g_miss_date ) THEN
15195                            l_ins_hist_csr.old_active_end_date := NULL;
15196                            l_ins_hist_csr.new_active_end_date := NULL;
15197                      ELSE
15198                            l_ins_hist_csr.old_active_end_date := fnd_api.g_miss_date;
15199                            l_ins_hist_csr.new_active_end_date := p_instance_rec.active_end_date;
15200                      END IF;
15201              ELSE
15202                      l_ins_hist_csr.old_active_end_date := fnd_api.g_miss_date;
15203                      l_ins_hist_csr.new_active_end_date := p_instance_rec.active_end_date;
15204              END IF;
15205              --
15206              IF    ( l_ins_hist_csr.old_location_type_code IS NULL
15207                 AND  l_ins_hist_csr.new_location_type_code IS NULL ) THEN
15208                      IF  ( p_instance_rec.location_type_code = l_curr_instance_rec.location_type_code )
15209                       OR ( p_instance_rec.location_type_code = fnd_api.g_miss_char ) THEN
15210                            l_ins_hist_csr.old_location_type_code := NULL;
15211                            l_ins_hist_csr.new_location_type_code := NULL;
15212                      ELSE
15213                            l_ins_hist_csr.old_location_type_code := l_curr_instance_rec.location_type_code; --fnd_api.g_miss_char;
15214                            l_ins_hist_csr.new_location_type_code := p_instance_rec.location_type_code;
15215                      END IF;
15216              ELSE
15217                      l_ins_hist_csr.old_location_type_code := fnd_api.g_miss_char;
15218                      l_ins_hist_csr.new_location_type_code := p_instance_rec.location_type_code;
15219              END IF;
15220              --
15221              IF    ( l_ins_hist_csr.old_location_id IS NULL
15222                 AND  l_ins_hist_csr.new_location_id IS NULL ) THEN
15223                      IF  ( p_instance_rec.location_id = l_curr_instance_rec.location_id )
15224                       OR ( p_instance_rec.location_id = fnd_api.g_miss_num ) THEN
15225                            l_ins_hist_csr.old_location_id := NULL;
15226                            l_ins_hist_csr.new_location_id := NULL;
15227                      ELSE
15228                            l_ins_hist_csr.old_location_id := l_curr_instance_rec.location_id; --fnd_api.g_miss_num;
15229                            l_ins_hist_csr.new_location_id := p_instance_rec.location_id;
15230                      END IF;
15231              ELSE
15232                      l_ins_hist_csr.old_location_id := fnd_api.g_miss_num;
15233                      l_ins_hist_csr.new_location_id := p_instance_rec.location_id;
15234              END IF;
15235              --
15236              IF    ( l_ins_hist_csr.old_inv_organization_id IS NULL
15237                 AND  l_ins_hist_csr.new_inv_organization_id IS NULL ) THEN
15238                      IF  ( p_instance_rec.inv_organization_id = l_curr_instance_rec.inv_organization_id )
15239                       OR ( p_instance_rec.inv_organization_id = fnd_api.g_miss_num ) THEN
15240                            l_ins_hist_csr.old_inv_organization_id := NULL;
15241                            l_ins_hist_csr.new_inv_organization_id := NULL;
15242                      ELSE
15243                            l_ins_hist_csr.old_inv_organization_id := fnd_api.g_miss_num;
15244                            l_ins_hist_csr.new_inv_organization_id := p_instance_rec.inv_organization_id;
15245                      END IF;
15246              ELSE
15247                      l_ins_hist_csr.old_inv_organization_id := fnd_api.g_miss_num;
15248                      l_ins_hist_csr.new_inv_organization_id := p_instance_rec.inv_organization_id;
15249              END IF;
15250              --
15251              IF    ( l_ins_hist_csr.old_inv_subinventory_name IS NULL
15252                 AND  l_ins_hist_csr.new_inv_subinventory_name IS NULL ) THEN
15253                      IF  ( p_instance_rec.inv_subinventory_name = l_curr_instance_rec.inv_subinventory_name )
15254                       OR ( p_instance_rec.inv_subinventory_name = fnd_api.g_miss_char ) THEN
15255                            l_ins_hist_csr.old_inv_subinventory_name := NULL;
15256                            l_ins_hist_csr.new_inv_subinventory_name := NULL;
15257                      ELSE
15258                            l_ins_hist_csr.old_inv_subinventory_name := fnd_api.g_miss_char;
15259                            l_ins_hist_csr.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name;
15260                      END IF;
15261              ELSE
15262                      l_ins_hist_csr.old_inv_subinventory_name := fnd_api.g_miss_char;
15263                      l_ins_hist_csr.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name;
15264              END IF;
15265              --
15266              IF    ( l_ins_hist_csr.old_inv_locator_id IS NULL
15267                 AND  l_ins_hist_csr.new_inv_locator_id IS NULL ) THEN
15268                      IF  ( p_instance_rec.inv_locator_id = l_curr_instance_rec.inv_locator_id )
15269                       OR ( p_instance_rec.inv_locator_id = fnd_api.g_miss_num ) THEN
15270                            l_ins_hist_csr.old_inv_locator_id := NULL;
15271                            l_ins_hist_csr.new_inv_locator_id := NULL;
15272                      ELSE
15273                            l_ins_hist_csr.old_inv_locator_id := fnd_api.g_miss_num;
15274                            l_ins_hist_csr.new_inv_locator_id := p_instance_rec.inv_locator_id;
15275                      END IF;
15276              ELSE
15277                      l_ins_hist_csr.old_inv_locator_id := fnd_api.g_miss_num;
15278                      l_ins_hist_csr.new_inv_locator_id := p_instance_rec.inv_locator_id;
15279              END IF;
15280              --
15281              IF    ( l_ins_hist_csr.old_pa_project_id IS NULL
15282                 AND  l_ins_hist_csr.new_pa_project_id IS NULL ) THEN
15283                      IF  ( p_instance_rec.pa_project_id = l_curr_instance_rec.pa_project_id )
15284                       OR ( p_instance_rec.pa_project_id = fnd_api.g_miss_num ) THEN
15285                            l_ins_hist_csr.old_pa_project_id := NULL;
15286                            l_ins_hist_csr.new_pa_project_id := NULL;
15287                      ELSE
15288                            l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
15289                            l_ins_hist_csr.new_pa_project_id := p_instance_rec.pa_project_id;
15290                      END IF;
15291              ELSE
15292                      l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
15293                      l_ins_hist_csr.new_pa_project_id := p_instance_rec.pa_project_id;
15294              END IF;
15295              --
15296              IF    ( l_ins_hist_csr.old_pa_project_task_id IS NULL
15297                 AND  l_ins_hist_csr.new_pa_project_task_id IS NULL ) THEN
15298                      IF  ( p_instance_rec.pa_project_task_id = l_curr_instance_rec.pa_project_task_id )
15299                       OR ( p_instance_rec.pa_project_task_id = fnd_api.g_miss_num ) THEN
15300                            l_ins_hist_csr.old_pa_project_task_id := NULL;
15301                            l_ins_hist_csr.new_pa_project_task_id := NULL;
15302                      ELSE
15303                            l_ins_hist_csr.old_pa_project_task_id := fnd_api.g_miss_num;
15304                            l_ins_hist_csr.new_pa_project_task_id := p_instance_rec.pa_project_task_id;
15305                      END IF;
15306              ELSE
15307                      l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
15308                      l_ins_hist_csr.new_pa_project_task_id := p_instance_rec.pa_project_task_id;
15309              END IF;
15310              --
15311              IF    ( l_ins_hist_csr.old_in_transit_order_line_id IS NULL
15312                 AND  l_ins_hist_csr.new_in_transit_order_line_id IS NULL ) THEN
15313                      IF  ( p_instance_rec.in_transit_order_line_id = l_curr_instance_rec.in_transit_order_line_id )
15314                       OR ( p_instance_rec.in_transit_order_line_id = fnd_api.g_miss_num ) THEN
15315                            l_ins_hist_csr.old_in_transit_order_line_id := NULL;
15316                            l_ins_hist_csr.new_in_transit_order_line_id := NULL;
15317                      ELSE
15318                            l_ins_hist_csr.old_in_transit_order_line_id := fnd_api.g_miss_num;
15319                            l_ins_hist_csr.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id;
15320                      END IF;
15321              ELSE
15322                      l_ins_hist_csr.old_in_transit_order_line_id := fnd_api.g_miss_num;
15323                      l_ins_hist_csr.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id;
15324              END IF;
15325              --
15326              IF    ( l_ins_hist_csr.old_oe_agreement_id IS NULL
15327                 AND  l_ins_hist_csr.new_oe_agreement_id IS NULL ) THEN
15328                      IF  ( p_instance_rec.last_oe_agreement_id = l_curr_instance_rec.last_oe_agreement_id )
15329                       OR ( p_instance_rec.last_oe_agreement_id = fnd_api.g_miss_num ) THEN
15330                            l_ins_hist_csr.old_oe_agreement_id := NULL;
15331                            l_ins_hist_csr.new_oe_agreement_id := NULL;
15332                      ELSE
15333                            l_ins_hist_csr.old_oe_agreement_id := fnd_api.g_miss_num;
15334                            l_ins_hist_csr.new_oe_agreement_id := p_instance_rec.last_oe_agreement_id;
15335                      END IF;
15336              ELSE
15337                      l_ins_hist_csr.old_oe_agreement_id := fnd_api.g_miss_num;
15338                      l_ins_hist_csr.new_oe_agreement_id := p_instance_rec.last_oe_agreement_id;
15339              END IF;
15340              --
15341              IF    ( l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID IS NULL
15342                 AND  l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID IS NULL ) THEN
15343                      IF  ( p_instance_rec.LAST_OE_ORDER_LINE_ID = l_curr_instance_rec.LAST_OE_ORDER_LINE_ID )
15344                       OR ( p_instance_rec.LAST_OE_ORDER_LINE_ID = fnd_api.g_miss_num ) THEN
15345                            l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := NULL;
15346                            l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := NULL;
15347                      ELSE
15348                            l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := fnd_api.g_miss_num;
15349                            l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID;
15350                      END IF;
15351              ELSE
15352                      l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := fnd_api.g_miss_num;
15353                      l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID;
15354              END IF;
15355              --
15356              IF    ( l_ins_hist_csr.old_LAST_OE_RMA_LINE_ID IS NULL
15357                 AND  l_ins_hist_csr.new_LAST_OE_RMA_LINE_ID IS NULL ) THEN
15358                      IF  ( p_instance_rec.LAST_OE_RMA_LINE_ID = l_curr_instance_rec.LAST_OE_RMA_LINE_ID )
15359                       OR ( p_instance_rec.LAST_OE_RMA_LINE_ID = fnd_api.g_miss_num ) THEN
15360                            l_ins_hist_csr.old_LAST_OE_RMA_LINE_ID := NULL;
15361                            l_ins_hist_csr.new_LAST_OE_RMA_LINE_ID := NULL;
15362                      ELSE
15363                            l_ins_hist_csr.old_LAST_OE_RMA_LINE_ID := fnd_api.g_miss_num;
15364                            l_ins_hist_csr.new_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID;
15365                      END IF;
15366              ELSE
15367                      l_ins_hist_csr.old_LAST_OE_RMA_LINE_ID := fnd_api.g_miss_num;
15368                      l_ins_hist_csr.new_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID;
15369              END IF;
15370              --
15371              IF    ( l_ins_hist_csr.old_LAST_WIP_JOB_ID IS NULL
15372                 AND  l_ins_hist_csr.new_LAST_WIP_JOB_ID IS NULL ) THEN
15373                      IF  ( p_instance_rec.LAST_WIP_JOB_ID = l_curr_instance_rec.LAST_WIP_JOB_ID )
15374                       OR ( p_instance_rec.LAST_WIP_JOB_ID = fnd_api.g_miss_num ) THEN
15375                            l_ins_hist_csr.old_LAST_WIP_JOB_ID := NULL;
15376                            l_ins_hist_csr.new_LAST_WIP_JOB_ID := NULL;
15377                      ELSE
15378                            l_ins_hist_csr.old_LAST_WIP_JOB_ID := fnd_api.g_miss_num;
15379                            l_ins_hist_csr.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID;
15380                      END IF;
15381              ELSE
15382                      l_ins_hist_csr.old_LAST_WIP_JOB_ID := fnd_api.g_miss_num;
15383                      l_ins_hist_csr.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID;
15384              END IF;
15385              --
15386              IF    ( l_ins_hist_csr.old_LAST_PO_PO_LINE_ID IS NULL
15387                 AND  l_ins_hist_csr.new_LAST_PO_PO_LINE_ID IS NULL ) THEN
15388                      IF  ( p_instance_rec.LAST_PO_PO_LINE_ID = l_curr_instance_rec.LAST_PO_PO_LINE_ID )
15389                       OR ( p_instance_rec.LAST_PO_PO_LINE_ID = fnd_api.g_miss_num ) THEN
15390                            l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := NULL;
15391                            l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := NULL;
15392                      ELSE
15393                            l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := fnd_api.g_miss_num;
15394                            l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID;
15395                      END IF;
15396              ELSE
15397                      l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := fnd_api.g_miss_num;
15398                      l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID;
15399              END IF;
15400              --
15401              IF    ( l_ins_hist_csr.old_LAST_PA_PROJECT_ID IS NULL
15402                 AND  l_ins_hist_csr.new_LAST_PA_PROJECT_ID IS NULL ) THEN
15403                      IF  ( p_instance_rec.LAST_PA_PROJECT_ID = l_curr_instance_rec.LAST_PA_PROJECT_ID )
15404                       OR ( p_instance_rec.LAST_PA_PROJECT_ID = fnd_api.g_miss_num ) THEN
15405                            l_ins_hist_csr.old_LAST_PA_PROJECT_ID := NULL;
15406                            l_ins_hist_csr.new_LAST_PA_PROJECT_ID := NULL;
15407                      ELSE
15408                            l_ins_hist_csr.old_LAST_PA_PROJECT_ID := fnd_api.g_miss_num;
15409                            l_ins_hist_csr.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID;
15410                      END IF;
15411              ELSE
15412                      l_ins_hist_csr.old_LAST_PA_PROJECT_ID := fnd_api.g_miss_num;
15413                      l_ins_hist_csr.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID;
15414              END IF;
15415              --
15416              IF    ( l_ins_hist_csr.old_LAST_PA_TASK_ID IS NULL
15417                 AND  l_ins_hist_csr.new_LAST_PA_TASK_ID IS NULL ) THEN
15418                      IF  ( p_instance_rec.LAST_PA_TASK_ID = l_curr_instance_rec.LAST_PA_TASK_ID )
15419                       OR ( p_instance_rec.LAST_PA_TASK_ID = fnd_api.g_miss_num ) THEN
15420                            l_ins_hist_csr.old_LAST_PA_TASK_ID := NULL;
15421                            l_ins_hist_csr.new_LAST_PA_TASK_ID := NULL;
15422                      ELSE
15423                            l_ins_hist_csr.old_LAST_PA_TASK_ID := fnd_api.g_miss_num;
15424                            l_ins_hist_csr.new_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID;
15425                      END IF;
15426              ELSE
15427                      l_ins_hist_csr.old_LAST_PA_TASK_ID := fnd_api.g_miss_num;
15428                      l_ins_hist_csr.new_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID;
15429              END IF;
15430              --
15431              IF    ( l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID IS NULL
15432                 AND  l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID IS NULL ) THEN
15433                      IF  ( p_instance_rec.LAST_TXN_LINE_DETAIL_ID = l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID )
15434                       OR ( p_instance_rec.LAST_TXN_LINE_DETAIL_ID = fnd_api.g_miss_num ) THEN
15435                            l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := NULL;
15436                            l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := NULL;
15437                      ELSE
15438                            l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := fnd_api.g_miss_num;
15439                            l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID;
15440                      END IF;
15441              ELSE
15442                      l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := fnd_api.g_miss_num;
15443                      l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID;
15444              END IF;
15445              --
15446              IF    ( l_ins_hist_csr.old_LAST_OE_PO_NUMBER IS NULL
15447                 AND  l_ins_hist_csr.new_LAST_OE_PO_NUMBER IS NULL ) THEN
15448                      IF  ( p_instance_rec.LAST_OE_PO_NUMBER = l_curr_instance_rec.LAST_OE_PO_NUMBER )
15449                       OR ( p_instance_rec.LAST_OE_PO_NUMBER = fnd_api.g_miss_char ) THEN
15450                            l_ins_hist_csr.old_LAST_OE_PO_NUMBER := NULL;
15451                            l_ins_hist_csr.new_LAST_OE_PO_NUMBER := NULL;
15452                      ELSE
15453                            l_ins_hist_csr.old_LAST_OE_PO_NUMBER := fnd_api.g_miss_char;
15454                            l_ins_hist_csr.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER;
15455                      END IF;
15456              ELSE
15457                      l_ins_hist_csr.old_LAST_OE_PO_NUMBER := fnd_api.g_miss_char;
15458                      l_ins_hist_csr.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER;
15459              END IF;
15460              --
15461              IF    ( l_ins_hist_csr.old_wip_job_id IS NULL
15462                 AND  l_ins_hist_csr.new_wip_job_id IS NULL ) THEN
15463                      IF  ( p_instance_rec.wip_job_id = l_curr_instance_rec.wip_job_id )
15464                       OR ( p_instance_rec.wip_job_id = fnd_api.g_miss_num ) THEN
15465                            l_ins_hist_csr.old_wip_job_id := NULL;
15466                            l_ins_hist_csr.new_wip_job_id := NULL;
15467                      ELSE
15468                            l_ins_hist_csr.old_wip_job_id := fnd_api.g_miss_num;
15469                            l_ins_hist_csr.new_wip_job_id := p_instance_rec.wip_job_id;
15470                      END IF;
15471              ELSE
15472                      l_ins_hist_csr.old_wip_job_id := fnd_api.g_miss_num;
15473                      l_ins_hist_csr.new_wip_job_id := p_instance_rec.wip_job_id;
15474              END IF;
15475              --
15476              IF    ( l_ins_hist_csr.old_po_order_line_id IS NULL
15477                 AND  l_ins_hist_csr.new_po_order_line_id IS NULL ) THEN
15478                      IF  ( p_instance_rec.po_order_line_id = l_curr_instance_rec.po_order_line_id )
15479                       OR ( p_instance_rec.po_order_line_id = fnd_api.g_miss_num ) THEN
15480                            l_ins_hist_csr.old_po_order_line_id := NULL;
15481                            l_ins_hist_csr.new_po_order_line_id := NULL;
15482                      ELSE
15483                            l_ins_hist_csr.old_po_order_line_id := fnd_api.g_miss_num;
15484                            l_ins_hist_csr.new_po_order_line_id := p_instance_rec.po_order_line_id;
15485                      END IF;
15486              ELSE
15487                      l_ins_hist_csr.old_po_order_line_id := fnd_api.g_miss_num;
15488                      l_ins_hist_csr.new_po_order_line_id := p_instance_rec.po_order_line_id;
15489              END IF;
15490              --
15491              IF    ( l_ins_hist_csr.old_completeness_flag IS NULL
15492                 AND  l_ins_hist_csr.new_completeness_flag IS NULL ) THEN
15493                      IF  ( p_instance_rec.completeness_flag = l_curr_instance_rec.completeness_flag )
15494                       OR ( p_instance_rec.completeness_flag = fnd_api.g_miss_char ) THEN
15495                            l_ins_hist_csr.old_completeness_flag := NULL;
15496                            l_ins_hist_csr.new_completeness_flag := NULL;
15497                      ELSE
15498                            l_ins_hist_csr.old_completeness_flag := fnd_api.g_miss_char;
15499                            l_ins_hist_csr.new_completeness_flag := p_instance_rec.completeness_flag;
15500                      END IF;
15501              ELSE
15502                      l_ins_hist_csr.old_completeness_flag := fnd_api.g_miss_char;
15503                      l_ins_hist_csr.new_completeness_flag := p_instance_rec.completeness_flag;
15504              END IF;
15505              --
15506              IF    ( l_ins_hist_csr.old_context IS NULL
15507                 AND  l_ins_hist_csr.new_context IS NULL ) THEN
15508                      IF  ( p_instance_rec.context = l_curr_instance_rec.context )
15509                       OR ( p_instance_rec.context = fnd_api.g_miss_char ) THEN
15510                            l_ins_hist_csr.old_context := NULL;
15511                            l_ins_hist_csr.new_context := NULL;
15512                      ELSE
15513                            l_ins_hist_csr.old_context := fnd_api.g_miss_char;
15514                            l_ins_hist_csr.new_context := p_instance_rec.context;
15515                      END IF;
15516              ELSE
15517                      l_ins_hist_csr.old_context := fnd_api.g_miss_char;
15518                      l_ins_hist_csr.new_context := p_instance_rec.context;
15519              END IF;
15520              --
15521              IF    ( l_ins_hist_csr.old_attribute1 IS NULL
15522                 AND  l_ins_hist_csr.new_attribute1 IS NULL ) THEN
15523                      IF  ( p_instance_rec.attribute1 = l_curr_instance_rec.attribute1 )
15524                       OR ( p_instance_rec.attribute1 = fnd_api.g_miss_char ) THEN
15525                            l_ins_hist_csr.old_attribute1 := NULL;
15526                            l_ins_hist_csr.new_attribute1 := NULL;
15527                      ELSE
15528                            l_ins_hist_csr.old_attribute1 := fnd_api.g_miss_char;
15529                            l_ins_hist_csr.new_attribute1 := p_instance_rec.attribute1;
15530                      END IF;
15531              ELSE
15532                      l_ins_hist_csr.old_attribute1 := fnd_api.g_miss_char;
15533                      l_ins_hist_csr.new_attribute1 := p_instance_rec.attribute1;
15534              END IF;
15535              --
15536              IF    ( l_ins_hist_csr.old_attribute2 IS NULL
15537                 AND  l_ins_hist_csr.new_attribute2 IS NULL ) THEN
15538                      IF  ( p_instance_rec.attribute2 = l_curr_instance_rec.attribute2 )
15539                       OR ( p_instance_rec.attribute2 = fnd_api.g_miss_char ) THEN
15540                            l_ins_hist_csr.old_attribute2 := NULL;
15541                            l_ins_hist_csr.new_attribute2 := NULL;
15542                      ELSE
15543                            l_ins_hist_csr.old_attribute2 := fnd_api.g_miss_char;
15544                            l_ins_hist_csr.new_attribute2 := p_instance_rec.attribute2;
15545                      END IF;
15546              ELSE
15547                      l_ins_hist_csr.old_attribute2 := fnd_api.g_miss_char;
15548                      l_ins_hist_csr.new_attribute2 := p_instance_rec.attribute2;
15549              END IF;
15550              --
15551              IF    ( l_ins_hist_csr.old_attribute3 IS NULL
15552                 AND  l_ins_hist_csr.new_attribute3 IS NULL ) THEN
15553                      IF  ( p_instance_rec.attribute3 = l_curr_instance_rec.attribute3 )
15554                       OR ( p_instance_rec.attribute3 = fnd_api.g_miss_char ) THEN
15555                            l_ins_hist_csr.old_attribute3 := NULL;
15556                            l_ins_hist_csr.new_attribute3 := NULL;
15557                      ELSE
15558                            l_ins_hist_csr.old_attribute3 := fnd_api.g_miss_char;
15559                            l_ins_hist_csr.new_attribute3 := p_instance_rec.attribute3;
15560                      END IF;
15561              ELSE
15562                      l_ins_hist_csr.old_attribute3 := fnd_api.g_miss_char;
15563                      l_ins_hist_csr.new_attribute3 := p_instance_rec.attribute3;
15564              END IF;
15565              --
15566              IF    ( l_ins_hist_csr.old_attribute4 IS NULL
15567                 AND  l_ins_hist_csr.new_attribute4 IS NULL ) THEN
15568                      IF  ( p_instance_rec.attribute4 = l_curr_instance_rec.attribute4 )
15569                       OR ( p_instance_rec.attribute4 = fnd_api.g_miss_char ) THEN
15570                            l_ins_hist_csr.old_attribute4 := NULL;
15571                            l_ins_hist_csr.new_attribute4 := NULL;
15572                      ELSE
15573                            l_ins_hist_csr.old_attribute4 := fnd_api.g_miss_char;
15574                            l_ins_hist_csr.new_attribute4 := p_instance_rec.attribute4;
15575                      END IF;
15576              ELSE
15577                      l_ins_hist_csr.old_attribute4 := fnd_api.g_miss_char;
15578                      l_ins_hist_csr.new_attribute4 := p_instance_rec.attribute4;
15579              END IF;
15580              --
15581              IF    ( l_ins_hist_csr.old_attribute5 IS NULL
15582                 AND  l_ins_hist_csr.new_attribute5 IS NULL ) THEN
15583                      IF  ( p_instance_rec.attribute5 = l_curr_instance_rec.attribute5 )
15584                       OR ( p_instance_rec.attribute5 = fnd_api.g_miss_char ) THEN
15585                            l_ins_hist_csr.old_attribute5 := NULL;
15586                            l_ins_hist_csr.new_attribute5 := NULL;
15587                      ELSE
15588                            l_ins_hist_csr.old_attribute5 := fnd_api.g_miss_char;
15589                            l_ins_hist_csr.new_attribute5 := p_instance_rec.attribute5;
15590                      END IF;
15591              ELSE
15592                      l_ins_hist_csr.old_attribute5 := fnd_api.g_miss_char;
15593                      l_ins_hist_csr.new_attribute5 := p_instance_rec.attribute5;
15594              END IF;
15595              --
15596              IF    ( l_ins_hist_csr.old_attribute6 IS NULL
15597                 AND  l_ins_hist_csr.new_attribute6 IS NULL ) THEN
15598                      IF  ( p_instance_rec.attribute6 = l_curr_instance_rec.attribute6 )
15599                       OR ( p_instance_rec.attribute6 = fnd_api.g_miss_char ) THEN
15600                            l_ins_hist_csr.old_attribute6 := NULL;
15601                            l_ins_hist_csr.new_attribute6 := NULL;
15602                      ELSE
15603                            l_ins_hist_csr.old_attribute6 := fnd_api.g_miss_char;
15604                            l_ins_hist_csr.new_attribute6 := p_instance_rec.attribute6;
15605                      END IF;
15606              ELSE
15607                      l_ins_hist_csr.old_attribute6 := fnd_api.g_miss_char;
15608                      l_ins_hist_csr.new_attribute6 := p_instance_rec.attribute6;
15609              END IF;
15610              --
15611              IF    ( l_ins_hist_csr.old_attribute7 IS NULL
15612                 AND  l_ins_hist_csr.new_attribute7 IS NULL ) THEN
15613                      IF  ( p_instance_rec.attribute7 = l_curr_instance_rec.attribute7 )
15614                       OR ( p_instance_rec.attribute7 = fnd_api.g_miss_char ) THEN
15615                            l_ins_hist_csr.old_attribute7 := NULL;
15616                            l_ins_hist_csr.new_attribute7 := NULL;
15617                      ELSE
15618                            l_ins_hist_csr.old_attribute7 := fnd_api.g_miss_char;
15619                            l_ins_hist_csr.new_attribute7 := p_instance_rec.attribute7;
15620                      END IF;
15621              ELSE
15622                      l_ins_hist_csr.old_attribute7 := fnd_api.g_miss_char;
15623                      l_ins_hist_csr.new_attribute7 := p_instance_rec.attribute7;
15624              END IF;
15625              --
15626              IF    ( l_ins_hist_csr.old_attribute8 IS NULL
15627                 AND  l_ins_hist_csr.new_attribute8 IS NULL ) THEN
15628                      IF  ( p_instance_rec.attribute8 = l_curr_instance_rec.attribute8 )
15629                       OR ( p_instance_rec.attribute8 = fnd_api.g_miss_char ) THEN
15630                            l_ins_hist_csr.old_attribute8 := NULL;
15631                            l_ins_hist_csr.new_attribute8 := NULL;
15632                      ELSE
15633                            l_ins_hist_csr.old_attribute8 := fnd_api.g_miss_char;
15634                            l_ins_hist_csr.new_attribute8 := p_instance_rec.attribute8;
15635                      END IF;
15636              ELSE
15637                      l_ins_hist_csr.old_attribute8 := fnd_api.g_miss_char;
15638                      l_ins_hist_csr.new_attribute8 := p_instance_rec.attribute8;
15639              END IF;
15640              --
15641              IF    ( l_ins_hist_csr.old_attribute9 IS NULL
15642                 AND  l_ins_hist_csr.new_attribute9 IS NULL ) THEN
15643                      IF  ( p_instance_rec.attribute9 = l_curr_instance_rec.attribute9 )
15644                       OR ( p_instance_rec.attribute9 = fnd_api.g_miss_char ) THEN
15645                            l_ins_hist_csr.old_attribute9 := NULL;
15646                            l_ins_hist_csr.new_attribute9 := NULL;
15647                      ELSE
15648                            l_ins_hist_csr.old_attribute9 := fnd_api.g_miss_char;
15649                            l_ins_hist_csr.new_attribute9 := p_instance_rec.attribute9;
15650                      END IF;
15651              ELSE
15652                      l_ins_hist_csr.old_attribute9 := fnd_api.g_miss_char;
15653                      l_ins_hist_csr.new_attribute9 := p_instance_rec.attribute9;
15654              END IF;
15655              --
15656              IF    ( l_ins_hist_csr.old_attribute10 IS NULL
15657                 AND  l_ins_hist_csr.new_attribute10 IS NULL ) THEN
15658                      IF  ( p_instance_rec.attribute10 = l_curr_instance_rec.attribute10 )
15659                       OR ( p_instance_rec.attribute10 = fnd_api.g_miss_char ) THEN
15660                            l_ins_hist_csr.old_attribute10 := NULL;
15661                            l_ins_hist_csr.new_attribute10 := NULL;
15662                      ELSE
15663                            l_ins_hist_csr.old_attribute10 := fnd_api.g_miss_char;
15664                            l_ins_hist_csr.new_attribute10 := p_instance_rec.attribute10;
15665                      END IF;
15666              ELSE
15667                      l_ins_hist_csr.old_attribute10 := fnd_api.g_miss_char;
15668                      l_ins_hist_csr.new_attribute10 := p_instance_rec.attribute10;
15669              END IF;
15670              --
15671              IF    ( l_ins_hist_csr.old_attribute11 IS NULL
15672                 AND  l_ins_hist_csr.new_attribute11 IS NULL ) THEN
15673                      IF  ( p_instance_rec.attribute11 = l_curr_instance_rec.attribute11 )
15674                       OR ( p_instance_rec.attribute11 = fnd_api.g_miss_char ) THEN
15675                            l_ins_hist_csr.old_attribute11 := NULL;
15676                            l_ins_hist_csr.new_attribute11 := NULL;
15677                      ELSE
15678                            l_ins_hist_csr.old_attribute11 := fnd_api.g_miss_char;
15679                            l_ins_hist_csr.new_attribute11 := p_instance_rec.attribute11;
15680                      END IF;
15681              ELSE
15682                      l_ins_hist_csr.old_attribute11 := fnd_api.g_miss_char;
15683                      l_ins_hist_csr.new_attribute11 := p_instance_rec.attribute11;
15684              END IF;
15685              --
15686              IF    ( l_ins_hist_csr.old_attribute12 IS NULL
15687                 AND  l_ins_hist_csr.new_attribute12 IS NULL ) THEN
15688                      IF  ( p_instance_rec.attribute12 = l_curr_instance_rec.attribute12 )
15689                       OR ( p_instance_rec.attribute12 = fnd_api.g_miss_char ) THEN
15690                            l_ins_hist_csr.old_attribute12 := NULL;
15691                            l_ins_hist_csr.new_attribute12 := NULL;
15692                      ELSE
15693                            l_ins_hist_csr.old_attribute12 := fnd_api.g_miss_char;
15694                            l_ins_hist_csr.new_attribute12 := p_instance_rec.attribute12;
15695                      END IF;
15696              ELSE
15697                      l_ins_hist_csr.old_attribute12 := fnd_api.g_miss_char;
15698                      l_ins_hist_csr.new_attribute12 := p_instance_rec.attribute12;
15699              END IF;
15700              --
15701              IF    ( l_ins_hist_csr.old_attribute13 IS NULL
15702                 AND  l_ins_hist_csr.new_attribute13 IS NULL ) THEN
15703                      IF  ( p_instance_rec.attribute13 = l_curr_instance_rec.attribute13 )
15704                       OR ( p_instance_rec.attribute13 = fnd_api.g_miss_char ) THEN
15705                            l_ins_hist_csr.old_attribute13 := NULL;
15706                            l_ins_hist_csr.new_attribute13 := NULL;
15707                      ELSE
15708                            l_ins_hist_csr.old_attribute13 := fnd_api.g_miss_char;
15709                            l_ins_hist_csr.new_attribute13 := p_instance_rec.attribute13;
15710                      END IF;
15711              ELSE
15712                      l_ins_hist_csr.old_attribute13 := fnd_api.g_miss_char;
15713                      l_ins_hist_csr.new_attribute13 := p_instance_rec.attribute13;
15714              END IF;
15715              --
15716              IF    ( l_ins_hist_csr.old_attribute14 IS NULL
15717                 AND  l_ins_hist_csr.new_attribute14 IS NULL ) THEN
15718                      IF  ( p_instance_rec.attribute14 = l_curr_instance_rec.attribute14 )
15719                       OR ( p_instance_rec.attribute14 = fnd_api.g_miss_char ) THEN
15720                            l_ins_hist_csr.old_attribute14 := NULL;
15721                            l_ins_hist_csr.new_attribute14 := NULL;
15722                      ELSE
15723                            l_ins_hist_csr.old_attribute14 := fnd_api.g_miss_char;
15724                            l_ins_hist_csr.new_attribute14 := p_instance_rec.attribute14;
15725                      END IF;
15726              ELSE
15727                      l_ins_hist_csr.old_attribute14 := fnd_api.g_miss_char;
15728                      l_ins_hist_csr.new_attribute14 := p_instance_rec.attribute14;
15729              END IF;
15730              --
15731              IF    ( l_ins_hist_csr.old_attribute15 IS NULL
15732                 AND  l_ins_hist_csr.new_attribute15 IS NULL ) THEN
15733                      IF  ( p_instance_rec.attribute15 = l_curr_instance_rec.attribute15 )
15734                       OR ( p_instance_rec.attribute15 = fnd_api.g_miss_char ) THEN
15735                            l_ins_hist_csr.old_attribute15 := NULL;
15736                            l_ins_hist_csr.new_attribute15 := NULL;
15737                      ELSE
15738                            l_ins_hist_csr.old_attribute15 := fnd_api.g_miss_char;
15739                            l_ins_hist_csr.new_attribute15 := p_instance_rec.attribute15;
15740                      END IF;
15741              ELSE
15742                      l_ins_hist_csr.old_attribute15 := fnd_api.g_miss_char;
15743                      l_ins_hist_csr.new_attribute15 := p_instance_rec.attribute15;
15744              END IF;
15745              --
15746              IF    ( l_ins_hist_csr.old_inst_loc_type_code IS NULL
15747                 AND  l_ins_hist_csr.new_inst_loc_type_code IS NULL ) THEN
15748                      IF  ( p_instance_rec.install_location_type_code = l_curr_instance_rec.install_location_type_code )
15749                       OR ( p_instance_rec.install_location_type_code = fnd_api.g_miss_char ) THEN
15750                            l_ins_hist_csr.old_inst_loc_type_code := NULL;
15751                            l_ins_hist_csr.new_inst_loc_type_code := NULL;
15752                      ELSE
15753                            l_ins_hist_csr.old_inst_loc_type_code := l_curr_instance_rec.install_location_type_code; --fnd_api.g_miss_char;
15754                            l_ins_hist_csr.new_inst_loc_type_code := p_instance_rec.install_location_type_code;
15755                      END IF;
15756              ELSE
15757                      l_ins_hist_csr.old_inst_loc_type_code := fnd_api.g_miss_char;
15758                      l_ins_hist_csr.new_inst_loc_type_code := p_instance_rec.install_location_type_code;
15759              END IF;
15760              --
15761              IF    ( l_ins_hist_csr.old_inst_loc_id IS NULL
15762                 AND  l_ins_hist_csr.new_inst_loc_id IS NULL ) THEN
15763                      IF  ( p_instance_rec.install_location_id = l_curr_instance_rec.install_location_id )
15764                       OR ( p_instance_rec.install_location_id = fnd_api.g_miss_num ) THEN
15765                            l_ins_hist_csr.old_inst_loc_id := NULL;
15766                            l_ins_hist_csr.new_inst_loc_id := NULL;
15767                      ELSE
15768                            l_ins_hist_csr.old_inst_loc_id := l_curr_instance_rec.install_location_id; --fnd_api.g_miss_num;
15769                            l_ins_hist_csr.new_inst_loc_id := p_instance_rec.install_location_id;
15770                      END IF;
15771              ELSE
15772                      l_ins_hist_csr.old_inst_loc_id := fnd_api.g_miss_num;
15773                      l_ins_hist_csr.new_inst_loc_id := p_instance_rec.install_location_id;
15774              END IF;
15775              --
15776              IF    ( l_ins_hist_csr.old_inst_usage_code IS NULL
15777                 AND  l_ins_hist_csr.new_inst_usage_code IS NULL ) THEN
15778                      IF  ( p_instance_rec.instance_usage_code = l_curr_instance_rec.instance_usage_code )
15779                       OR ( p_instance_rec.instance_usage_code = fnd_api.g_miss_char ) THEN
15780                            l_ins_hist_csr.old_inst_usage_code := NULL;
15781                            l_ins_hist_csr.new_inst_usage_code := NULL;
15782                      ELSE
15783                            l_ins_hist_csr.old_inst_usage_code := fnd_api.g_miss_char;
15784                            l_ins_hist_csr.new_inst_usage_code := p_instance_rec.instance_usage_code;
15785                      END IF;
15786              ELSE
15787                      l_ins_hist_csr.old_inst_usage_code := fnd_api.g_miss_char;
15788                      l_ins_hist_csr.new_inst_usage_code := p_instance_rec.instance_usage_code;
15789              END IF;
15790 		   --
15791              IF    ( l_ins_hist_csr.old_last_vld_organization_id IS NULL
15792                 AND  l_ins_hist_csr.new_last_vld_organization_id IS NULL ) THEN
15793                      IF  ( p_instance_rec.vld_organization_id = l_curr_instance_rec.last_vld_organization_id )
15794                       OR ( p_instance_rec.vld_organization_id = fnd_api.g_miss_num ) THEN
15795                            l_ins_hist_csr.old_last_vld_organization_id := NULL;
15796                            l_ins_hist_csr.new_last_vld_organization_id := NULL;
15797                      ELSE
15798                            l_ins_hist_csr.old_last_vld_organization_id := fnd_api.g_miss_num;
15799                            l_ins_hist_csr.new_last_vld_organization_id := p_instance_rec.vld_organization_id;
15800                      END IF;
15801              ELSE
15802                      l_ins_hist_csr.old_last_vld_organization_id := fnd_api.g_miss_num;
15803                      l_ins_hist_csr.new_last_vld_organization_id := p_instance_rec.vld_organization_id;
15804              END IF;
15805              IF    ( l_ins_hist_csr.old_config_inst_rev_num IS NULL
15806                 AND  l_ins_hist_csr.new_config_inst_rev_num IS NULL ) THEN
15807                      IF  ( p_instance_rec.config_inst_rev_num = l_curr_instance_rec.config_inst_rev_num )
15808                       OR ( p_instance_rec.config_inst_rev_num = fnd_api.g_miss_num ) THEN
15809                            l_ins_hist_csr.old_config_inst_rev_num := NULL;
15810                            l_ins_hist_csr.new_config_inst_rev_num := NULL;
15811                      ELSE
15812                            l_ins_hist_csr.old_config_inst_rev_num := fnd_api.g_miss_num;
15813                            l_ins_hist_csr.new_config_inst_rev_num := p_instance_rec.config_inst_rev_num;
15814                      END IF;
15815              ELSE
15816                      l_ins_hist_csr.old_config_inst_rev_num := fnd_api.g_miss_num;
15817                      l_ins_hist_csr.new_config_inst_rev_num := p_instance_rec.config_inst_rev_num;
15818              END IF;
15819 		   --
15820              IF    ( l_ins_hist_csr.old_config_valid_status IS NULL
15821                 AND  l_ins_hist_csr.new_config_valid_status IS NULL ) THEN
15822                      IF  ( p_instance_rec.config_valid_status = l_curr_instance_rec.config_valid_status )
15823                       OR ( p_instance_rec.config_valid_status = fnd_api.g_miss_char ) THEN
15824                            l_ins_hist_csr.old_config_valid_status := NULL;
15825                            l_ins_hist_csr.new_config_valid_status := NULL;
15826                      ELSE
15827                            l_ins_hist_csr.old_config_valid_status := fnd_api.g_miss_char;
15828                            l_ins_hist_csr.new_config_valid_status := p_instance_rec.config_valid_status;
15829                      END IF;
15830              ELSE
15831                      l_ins_hist_csr.old_config_valid_status := fnd_api.g_miss_char;
15832                      l_ins_hist_csr.new_config_valid_status := p_instance_rec.config_valid_status;
15833              END IF;
15834 		   --
15835              IF    ( l_ins_hist_csr.old_instance_description IS NULL
15836                 AND  l_ins_hist_csr.new_instance_description IS NULL ) THEN
15837                      IF  ( p_instance_rec.instance_description = l_curr_instance_rec.instance_description )
15838                       OR ( p_instance_rec.instance_description = fnd_api.g_miss_char ) THEN
15839                            l_ins_hist_csr.old_instance_description := NULL;
15840                            l_ins_hist_csr.new_instance_description := NULL;
15841                      ELSE
15842                            l_ins_hist_csr.old_instance_description := fnd_api.g_miss_char;
15843                            l_ins_hist_csr.new_instance_description := p_instance_rec.instance_description;
15844                      END IF;
15845              ELSE
15846                      l_ins_hist_csr.old_instance_description := fnd_api.g_miss_char;
15847                      l_ins_hist_csr.new_instance_description := p_instance_rec.instance_description;
15848              END IF;
15849 		   --
15850 -- added for bug 2671179
15851 
15852 
15853              IF    ( l_ins_hist_csr.old_install_date IS NULL
15854                 AND  l_ins_hist_csr.new_install_date IS NULL ) THEN
15855                      IF  ( p_instance_rec.install_date = l_curr_instance_rec.install_date )
15856                       OR ( p_instance_rec.install_date = fnd_api.g_miss_date ) THEN
15857                            l_ins_hist_csr.old_install_date := fnd_api.g_miss_date; --jan15
15858                            l_ins_hist_csr.new_install_date := fnd_api.g_miss_date; --jan15
15859                      ELSE
15860                            l_ins_hist_csr.old_install_date := fnd_api.g_miss_date;
15861                            l_ins_hist_csr.new_install_date := p_instance_rec.install_date;
15862                      END IF;
15863              ELSE
15864                      l_ins_hist_csr.old_install_date := fnd_api.g_miss_date;
15865                      l_ins_hist_csr.new_install_date := p_instance_rec.install_date;
15866              END IF;
15867 
15868 
15869              IF    ( l_ins_hist_csr.old_return_by_date IS NULL
15870                 AND  l_ins_hist_csr.new_return_by_date IS NULL ) THEN
15871                      IF  ( p_instance_rec.return_by_date = l_curr_instance_rec.return_by_date)
15872                       OR ( p_instance_rec.return_by_date = fnd_api.g_miss_date ) THEN
15873                            l_ins_hist_csr.old_return_by_date := fnd_api.g_miss_date; --jan15
15874                            l_ins_hist_csr.new_return_by_date := fnd_api.g_miss_date; --jan15
15875                      ELSE
15876                            l_ins_hist_csr.old_return_by_date := fnd_api.g_miss_date;
15877                            l_ins_hist_csr.new_return_by_date := p_instance_rec.return_by_date;
15878                      END IF;
15879              ELSE
15880                      l_ins_hist_csr.old_return_by_date := fnd_api.g_miss_date;
15881                      l_ins_hist_csr.new_return_by_date := p_instance_rec.return_by_date;
15882              END IF;
15883 
15884 
15885              IF    ( l_ins_hist_csr.old_actual_return_date IS NULL
15886                 AND  l_ins_hist_csr.new_actual_return_date IS NULL ) THEN
15887                      IF  ( p_instance_rec.actual_return_date = l_curr_instance_rec.actual_return_date)
15888                       OR ( p_instance_rec.actual_return_date = fnd_api.g_miss_date ) THEN
15889                            l_ins_hist_csr.old_actual_return_date := fnd_api.g_miss_date; --jan15
15890                            l_ins_hist_csr.new_actual_return_date := fnd_api.g_miss_date; --jan15
15891                      ELSE
15892                            l_ins_hist_csr.old_actual_return_date := fnd_api.g_miss_date;
15893                            l_ins_hist_csr.new_actual_return_date := p_instance_rec.actual_return_date;
15894                      END IF;
15895              ELSE
15896                      l_ins_hist_csr.old_actual_return_date := fnd_api.g_miss_date;
15897                      l_ins_hist_csr.new_actual_return_date := p_instance_rec.actual_return_date;
15898              END IF;
15899             --start of code for eam integration--
15900              --
15901              IF    ( l_ins_hist_csr.old_network_asset_flag IS NULL
15902                 AND  l_ins_hist_csr.new_network_asset_flag IS NULL ) THEN
15903                      IF  ( p_instance_rec.network_asset_flag = l_curr_instance_rec.network_asset_flag )
15904                       OR ( p_instance_rec.network_asset_flag = fnd_api.g_miss_char ) THEN
15905                            l_ins_hist_csr.old_network_asset_flag := NULL;
15906                            l_ins_hist_csr.new_network_asset_flag := NULL;
15907                      ELSE
15908                            l_ins_hist_csr.old_network_asset_flag := fnd_api.g_miss_char;
15909                            l_ins_hist_csr.new_network_asset_flag := p_instance_rec.network_asset_flag;
15910                      END IF;
15911              ELSE
15912                      l_ins_hist_csr.old_network_asset_flag := fnd_api.g_miss_char;
15913                      l_ins_hist_csr.new_network_asset_flag := p_instance_rec.network_asset_flag;
15914              END IF;
15915              --
15916              IF    ( l_ins_hist_csr.old_maintainable_flag IS NULL
15917                 AND  l_ins_hist_csr.new_maintainable_flag IS NULL ) THEN
15918                      IF  ( p_instance_rec.maintainable_flag = l_curr_instance_rec.maintainable_flag )
15919                       OR ( p_instance_rec.maintainable_flag = fnd_api.g_miss_char ) THEN
15920                            l_ins_hist_csr.old_maintainable_flag := NULL;
15921                            l_ins_hist_csr.new_maintainable_flag := NULL;
15922                      ELSE
15923                            l_ins_hist_csr.old_maintainable_flag := fnd_api.g_miss_char;
15924                            l_ins_hist_csr.new_maintainable_flag := p_instance_rec.maintainable_flag;
15925                      END IF;
15926              ELSE
15927                      l_ins_hist_csr.old_maintainable_flag := fnd_api.g_miss_char;
15928                      l_ins_hist_csr.new_maintainable_flag := p_instance_rec.maintainable_flag;
15929              END IF;
15930              --
15931              IF    ( l_ins_hist_csr.old_pn_location_id IS NULL
15932                 AND  l_ins_hist_csr.new_pn_location_id IS NULL ) THEN
15933                      IF  ( p_instance_rec.pn_location_id = l_curr_instance_rec.pn_location_id )
15934                       OR ( p_instance_rec.pn_location_id = fnd_api.g_miss_num ) THEN
15935                            l_ins_hist_csr.old_pn_location_id := NULL;
15936                            l_ins_hist_csr.new_pn_location_id := NULL;
15937                      ELSE
15938                            l_ins_hist_csr.old_pn_location_id := fnd_api.g_miss_num;
15939                            l_ins_hist_csr.new_pn_location_id := p_instance_rec.pn_location_id;
15940                      END IF;
15941              ELSE
15942                      l_ins_hist_csr.old_pn_location_id := fnd_api.g_miss_num;
15943                      l_ins_hist_csr.new_pn_location_id := p_instance_rec.pn_location_id;
15944              END IF;
15945              --
15946              IF    ( l_ins_hist_csr.old_asset_criticality_code IS NULL
15947                 AND  l_ins_hist_csr.new_asset_criticality_code IS NULL ) THEN
15948                      IF  ( p_instance_rec.asset_criticality_code = l_curr_instance_rec.asset_criticality_code )
15949                       OR ( p_instance_rec.asset_criticality_code = fnd_api.g_miss_char ) THEN
15950                            l_ins_hist_csr.old_asset_criticality_code := NULL;
15951                            l_ins_hist_csr.new_asset_criticality_code := NULL;
15952                      ELSE
15953                            l_ins_hist_csr.old_asset_criticality_code := fnd_api.g_miss_char;
15954                            l_ins_hist_csr.new_asset_criticality_code := p_instance_rec.asset_criticality_code;
15955                      END IF;
15956              ELSE
15957                      l_ins_hist_csr.old_asset_criticality_code := fnd_api.g_miss_char;
15958                      l_ins_hist_csr.new_asset_criticality_code := p_instance_rec.asset_criticality_code;
15959              END IF;
15960              --
15961              IF    ( l_ins_hist_csr.old_category_id IS NULL
15962                 AND  l_ins_hist_csr.new_category_id IS NULL ) THEN
15963                      IF  ( p_instance_rec.category_id = l_curr_instance_rec.category_id )
15964                       OR ( p_instance_rec.category_id = fnd_api.g_miss_num ) THEN
15965                            l_ins_hist_csr.old_category_id := NULL;
15966                            l_ins_hist_csr.new_category_id := NULL;
15967                      ELSE
15968                            l_ins_hist_csr.old_category_id := fnd_api.g_miss_num;
15969                            l_ins_hist_csr.new_category_id := p_instance_rec.category_id;
15970                      END IF;
15971              ELSE
15972                      l_ins_hist_csr.old_category_id := fnd_api.g_miss_num;
15973                      l_ins_hist_csr.new_category_id := p_instance_rec.category_id;
15974              END IF;
15975              --
15976              IF    ( l_ins_hist_csr.old_equipment_gen_object_id IS NULL
15977                 AND  l_ins_hist_csr.new_equipment_gen_object_id IS NULL ) THEN
15978                      IF  ( p_instance_rec.equipment_gen_object_id = l_curr_instance_rec.equipment_gen_object_id )
15979                       OR ( p_instance_rec.equipment_gen_object_id = fnd_api.g_miss_num ) THEN
15980                            l_ins_hist_csr.old_equipment_gen_object_id := NULL;
15981                            l_ins_hist_csr.new_equipment_gen_object_id := NULL;
15982                      ELSE
15983                            l_ins_hist_csr.old_equipment_gen_object_id := fnd_api.g_miss_num;
15984                            l_ins_hist_csr.new_equipment_gen_object_id := p_instance_rec.equipment_gen_object_id;
15985                      END IF;
15986              ELSE
15987                      l_ins_hist_csr.old_equipment_gen_object_id := fnd_api.g_miss_num;
15988                      l_ins_hist_csr.new_equipment_gen_object_id := p_instance_rec.equipment_gen_object_id;
15989              END IF;
15990              --
15991              IF    ( l_ins_hist_csr.old_instantiation_flag IS NULL
15992                 AND  l_ins_hist_csr.new_instantiation_flag IS NULL ) THEN
15993                      IF  ( p_instance_rec.instantiation_flag = l_curr_instance_rec.instantiation_flag )
15994                       OR ( p_instance_rec.instantiation_flag = fnd_api.g_miss_char ) THEN
15995                            l_ins_hist_csr.old_instantiation_flag := NULL;
15996                            l_ins_hist_csr.new_instantiation_flag := NULL;
15997                      ELSE
15998                            l_ins_hist_csr.old_instantiation_flag := fnd_api.g_miss_char;
15999                            l_ins_hist_csr.new_instantiation_flag := p_instance_rec.instantiation_flag;
16000                      END IF;
16001              ELSE
16002                      l_ins_hist_csr.old_instantiation_flag := fnd_api.g_miss_char;
16003                      l_ins_hist_csr.new_instantiation_flag := p_instance_rec.instantiation_flag;
16004              END IF;
16005              --
16006              IF    ( l_ins_hist_csr.old_linear_location_id IS NULL
16007                 AND  l_ins_hist_csr.new_linear_location_id IS NULL ) THEN
16008                      IF  ( p_instance_rec.linear_location_id = l_curr_instance_rec.linear_location_id )
16009                       OR ( p_instance_rec.linear_location_id = fnd_api.g_miss_num ) THEN
16010                            l_ins_hist_csr.old_linear_location_id := NULL;
16011                            l_ins_hist_csr.new_linear_location_id := NULL;
16012                      ELSE
16013                            l_ins_hist_csr.old_linear_location_id := fnd_api.g_miss_num;
16014                            l_ins_hist_csr.new_linear_location_id := p_instance_rec.linear_location_id;
16015                      END IF;
16016              ELSE
16017                      l_ins_hist_csr.old_linear_location_id := fnd_api.g_miss_num;
16018                      l_ins_hist_csr.new_linear_location_id := p_instance_rec.linear_location_id;
16019              END IF;
16020 
16021              IF    ( l_ins_hist_csr.old_operational_log_flag IS NULL
16022                 AND  l_ins_hist_csr.new_operational_log_flag IS NULL ) THEN
16023                      IF  ( p_instance_rec.operational_log_flag = l_curr_instance_rec.operational_log_flag )
16024                       OR ( p_instance_rec.operational_log_flag = fnd_api.g_miss_char ) THEN
16025                            l_ins_hist_csr.old_operational_log_flag := NULL;
16026                            l_ins_hist_csr.new_operational_log_flag := NULL;
16027                      ELSE
16028                            l_ins_hist_csr.old_operational_log_flag := fnd_api.g_miss_char;
16029                            l_ins_hist_csr.new_operational_log_flag := p_instance_rec.operational_log_flag;
16030                      END IF;
16031              ELSE
16032                      l_ins_hist_csr.old_operational_log_flag := fnd_api.g_miss_char;
16033                      l_ins_hist_csr.new_operational_log_flag := p_instance_rec.operational_log_flag;
16034              END IF;
16035              --
16036              IF    ( l_ins_hist_csr.old_checkin_status IS NULL
16037                 AND  l_ins_hist_csr.new_checkin_status IS NULL ) THEN
16038                      IF  ( p_instance_rec.checkin_status = l_curr_instance_rec.checkin_status )
16039                       OR ( p_instance_rec.checkin_status = fnd_api.g_miss_num ) THEN
16040                            l_ins_hist_csr.old_checkin_status := NULL;
16041                            l_ins_hist_csr.new_checkin_status := NULL;
16042                      ELSE
16043                            l_ins_hist_csr.old_checkin_status := fnd_api.g_miss_num;
16044                            l_ins_hist_csr.new_checkin_status := p_instance_rec.checkin_status;
16045                      END IF;
16046              ELSE
16047                      l_ins_hist_csr.old_checkin_status := fnd_api.g_miss_num;
16048                      l_ins_hist_csr.new_checkin_status := p_instance_rec.checkin_status;
16049              END IF;
16050              --
16051              IF    ( l_ins_hist_csr.old_supplier_warranty_exp_date IS NULL
16052                 AND  l_ins_hist_csr.new_supplier_warranty_exp_date IS NULL ) THEN
16053                      IF  ( p_instance_rec.supplier_warranty_exp_date = l_curr_instance_rec.supplier_warranty_exp_date )
16054                       OR ( p_instance_rec.supplier_warranty_exp_date = fnd_api.g_miss_date ) THEN
16055                            l_ins_hist_csr.old_supplier_warranty_exp_date := NULL;
16056                            l_ins_hist_csr.new_supplier_warranty_exp_date := NULL;
16057                      ELSE
16058                            l_ins_hist_csr.old_supplier_warranty_exp_date := fnd_api.g_miss_date;
16059                            l_ins_hist_csr.new_supplier_warranty_exp_date := p_instance_rec.supplier_warranty_exp_date;
16060                      END IF;
16061              ELSE
16062                      l_ins_hist_csr.old_supplier_warranty_exp_date := fnd_api.g_miss_date;
16063                      l_ins_hist_csr.new_supplier_warranty_exp_date := p_instance_rec.supplier_warranty_exp_date;
16064              END IF;
16065 
16066              --
16067 
16068              IF    ( l_ins_hist_csr.old_attribute16 IS NULL
16069                 AND  l_ins_hist_csr.new_attribute16 IS NULL ) THEN
16070                      IF  ( p_instance_rec.attribute16 = l_curr_instance_rec.attribute16 )
16071                       OR ( p_instance_rec.attribute16 = fnd_api.g_miss_char ) THEN
16072                            l_ins_hist_csr.old_attribute16 := NULL;
16073                            l_ins_hist_csr.new_attribute16 := NULL;
16074                      ELSE
16075                            l_ins_hist_csr.old_attribute16 := fnd_api.g_miss_char;
16076                            l_ins_hist_csr.new_attribute16 := p_instance_rec.attribute16;
16077                      END IF;
16078              ELSE
16079                      l_ins_hist_csr.old_attribute16 := fnd_api.g_miss_char;
16080                      l_ins_hist_csr.new_attribute16 := p_instance_rec.attribute16;
16081              END IF;
16082              --
16083              IF    ( l_ins_hist_csr.old_attribute17 IS NULL
16084                 AND  l_ins_hist_csr.new_attribute17 IS NULL ) THEN
16085                      IF  ( p_instance_rec.attribute17 = l_curr_instance_rec.attribute17 )
16086                       OR ( p_instance_rec.attribute17 = fnd_api.g_miss_char ) THEN
16087                            l_ins_hist_csr.old_attribute17 := NULL;
16088                            l_ins_hist_csr.new_attribute17 := NULL;
16089                      ELSE
16090                            l_ins_hist_csr.old_attribute17 := fnd_api.g_miss_char;
16091                            l_ins_hist_csr.new_attribute17 := p_instance_rec.attribute17;
16092                      END IF;
16093              ELSE
16094                      l_ins_hist_csr.old_attribute17 := fnd_api.g_miss_char;
16095                      l_ins_hist_csr.new_attribute17 := p_instance_rec.attribute17;
16096              END IF;
16097 
16098              IF    ( l_ins_hist_csr.old_attribute18 IS NULL
16099                 AND  l_ins_hist_csr.new_attribute18 IS NULL ) THEN
16100                      IF  ( p_instance_rec.attribute18 = l_curr_instance_rec.attribute18 )
16101                       OR ( p_instance_rec.attribute18 = fnd_api.g_miss_char ) THEN
16102                            l_ins_hist_csr.old_attribute18 := NULL;
16103                            l_ins_hist_csr.new_attribute18 := NULL;
16104                      ELSE
16105                            l_ins_hist_csr.old_attribute18 := fnd_api.g_miss_char;
16106                            l_ins_hist_csr.new_attribute18 := p_instance_rec.attribute18;
16107                      END IF;
16108              ELSE
16109                      l_ins_hist_csr.old_attribute18 := fnd_api.g_miss_char;
16110                      l_ins_hist_csr.new_attribute18 := p_instance_rec.attribute18;
16111              END IF;
16112              --
16113              IF    ( l_ins_hist_csr.old_attribute19 IS NULL
16114                 AND  l_ins_hist_csr.new_attribute19 IS NULL ) THEN
16115                      IF  ( p_instance_rec.attribute19 = l_curr_instance_rec.attribute19 )
16116                       OR ( p_instance_rec.attribute19 = fnd_api.g_miss_char ) THEN
16117                            l_ins_hist_csr.old_attribute19 := NULL;
16118                            l_ins_hist_csr.new_attribute19 := NULL;
16119                      ELSE
16120                            l_ins_hist_csr.old_attribute19 := fnd_api.g_miss_char;
16121                            l_ins_hist_csr.new_attribute19 := p_instance_rec.attribute19;
16122                      END IF;
16123              ELSE
16124                      l_ins_hist_csr.old_attribute19 := fnd_api.g_miss_char;
16125                      l_ins_hist_csr.new_attribute19 := p_instance_rec.attribute19;
16126              END IF;
16127              --
16128              IF    ( l_ins_hist_csr.old_attribute20 IS NULL
16129                 AND  l_ins_hist_csr.new_attribute20 IS NULL ) THEN
16130                      IF  ( p_instance_rec.attribute20 = l_curr_instance_rec.attribute20 )
16131                       OR ( p_instance_rec.attribute20 = fnd_api.g_miss_char ) THEN
16132                            l_ins_hist_csr.old_attribute20 := NULL;
16133                            l_ins_hist_csr.new_attribute20 := NULL;
16134                      ELSE
16135                            l_ins_hist_csr.old_attribute20 := fnd_api.g_miss_char;
16136                            l_ins_hist_csr.new_attribute20 := p_instance_rec.attribute20;
16137                      END IF;
16138              ELSE
16139                      l_ins_hist_csr.old_attribute20 := fnd_api.g_miss_char;
16140                      l_ins_hist_csr.new_attribute20 := p_instance_rec.attribute20;
16141              END IF;
16142 
16143              --
16144              IF    ( l_ins_hist_csr.old_attribute21 IS NULL
16145                 AND  l_ins_hist_csr.new_attribute21 IS NULL ) THEN
16146                      IF  ( p_instance_rec.attribute21 = l_curr_instance_rec.attribute21 )
16147                       OR ( p_instance_rec.attribute21 = fnd_api.g_miss_char ) THEN
16148                            l_ins_hist_csr.old_attribute21 := NULL;
16149                            l_ins_hist_csr.new_attribute21 := NULL;
16150                      ELSE
16151                            l_ins_hist_csr.old_attribute21 := fnd_api.g_miss_char;
16152                            l_ins_hist_csr.new_attribute21 := p_instance_rec.attribute21;
16153                      END IF;
16154              ELSE
16155                      l_ins_hist_csr.old_attribute21 := fnd_api.g_miss_char;
16156                      l_ins_hist_csr.new_attribute21 := p_instance_rec.attribute21;
16157              END IF;
16158              --
16159              IF    ( l_ins_hist_csr.old_attribute22 IS NULL
16160                 AND  l_ins_hist_csr.new_attribute22 IS NULL ) THEN
16161                      IF  ( p_instance_rec.attribute22 = l_curr_instance_rec.attribute22 )
16162                       OR ( p_instance_rec.attribute22 = fnd_api.g_miss_char ) THEN
16163                            l_ins_hist_csr.old_attribute22 := NULL;
16164                            l_ins_hist_csr.new_attribute22 := NULL;
16165                      ELSE
16166                            l_ins_hist_csr.old_attribute22 := fnd_api.g_miss_char;
16167                            l_ins_hist_csr.new_attribute22 := p_instance_rec.attribute22;
16168                      END IF;
16169              ELSE
16170                      l_ins_hist_csr.old_attribute22 := fnd_api.g_miss_char;
16171                      l_ins_hist_csr.new_attribute22 := p_instance_rec.attribute22;
16172              END IF;
16173              --
16174              IF    ( l_ins_hist_csr.old_attribute23 IS NULL
16175                 AND  l_ins_hist_csr.new_attribute23 IS NULL ) THEN
16176                      IF  ( p_instance_rec.attribute23 = l_curr_instance_rec.attribute23 )
16177                       OR ( p_instance_rec.attribute23 = fnd_api.g_miss_char ) THEN
16178                            l_ins_hist_csr.old_attribute23 := NULL;
16179                            l_ins_hist_csr.new_attribute23 := NULL;
16180                      ELSE
16181                            l_ins_hist_csr.old_attribute23 := fnd_api.g_miss_char;
16182                            l_ins_hist_csr.new_attribute23 := p_instance_rec.attribute23;
16183                      END IF;
16184              ELSE
16185                      l_ins_hist_csr.old_attribute23 := fnd_api.g_miss_char;
16186                      l_ins_hist_csr.new_attribute23 := p_instance_rec.attribute23;
16187              END IF;
16188              --
16189              IF    ( l_ins_hist_csr.old_attribute24 IS NULL
16190                 AND  l_ins_hist_csr.new_attribute24 IS NULL ) THEN
16191                      IF  ( p_instance_rec.attribute24 = l_curr_instance_rec.attribute24 )
16192                       OR ( p_instance_rec.attribute24 = fnd_api.g_miss_char ) THEN
16193                            l_ins_hist_csr.old_attribute24 := NULL;
16194                            l_ins_hist_csr.new_attribute24 := NULL;
16195                      ELSE
16196                            l_ins_hist_csr.old_attribute24 := fnd_api.g_miss_char;
16197                            l_ins_hist_csr.new_attribute24 := p_instance_rec.attribute24;
16198                      END IF;
16199              ELSE
16200                      l_ins_hist_csr.old_attribute24 := fnd_api.g_miss_char;
16201                      l_ins_hist_csr.new_attribute24 := p_instance_rec.attribute24;
16202              END IF;
16203              --
16204              IF    ( l_ins_hist_csr.old_attribute25 IS NULL
16205                 AND  l_ins_hist_csr.new_attribute25 IS NULL ) THEN
16206                      IF  ( p_instance_rec.attribute25 = l_curr_instance_rec.attribute25 )
16207                       OR ( p_instance_rec.attribute25 = fnd_api.g_miss_char ) THEN
16208                            l_ins_hist_csr.old_attribute25 := NULL;
16209                            l_ins_hist_csr.new_attribute25 := NULL;
16210                      ELSE
16211                            l_ins_hist_csr.old_attribute25 := fnd_api.g_miss_char;
16212                            l_ins_hist_csr.new_attribute25 := p_instance_rec.attribute25;
16213                      END IF;
16214              ELSE
16215                      l_ins_hist_csr.old_attribute25 := fnd_api.g_miss_char;
16216                      l_ins_hist_csr.new_attribute25 := p_instance_rec.attribute25;
16217              END IF;
16218              --
16219              IF    ( l_ins_hist_csr.old_attribute26 IS NULL
16220                 AND  l_ins_hist_csr.new_attribute26 IS NULL ) THEN
16221                      IF  ( p_instance_rec.attribute26 = l_curr_instance_rec.attribute26 )
16222                       OR ( p_instance_rec.attribute26 = fnd_api.g_miss_char ) THEN
16223                            l_ins_hist_csr.old_attribute26 := NULL;
16224                            l_ins_hist_csr.new_attribute26 := NULL;
16225                      ELSE
16226                            l_ins_hist_csr.old_attribute26 := fnd_api.g_miss_char;
16227                            l_ins_hist_csr.new_attribute26 := p_instance_rec.attribute26;
16228                      END IF;
16229              ELSE
16230                      l_ins_hist_csr.old_attribute26 := fnd_api.g_miss_char;
16231                      l_ins_hist_csr.new_attribute26 := p_instance_rec.attribute26;
16232              END IF;
16233              --
16234              IF    ( l_ins_hist_csr.old_attribute27 IS NULL
16235                 AND  l_ins_hist_csr.new_attribute27 IS NULL ) THEN
16236                      IF  ( p_instance_rec.attribute27 = l_curr_instance_rec.attribute27 )
16237                       OR ( p_instance_rec.attribute27 = fnd_api.g_miss_char ) THEN
16238                            l_ins_hist_csr.old_attribute27 := NULL;
16239                            l_ins_hist_csr.new_attribute27 := NULL;
16240                      ELSE
16241                            l_ins_hist_csr.old_attribute27 := fnd_api.g_miss_char;
16242                            l_ins_hist_csr.new_attribute27 := p_instance_rec.attribute27;
16243                      END IF;
16244              ELSE
16245                      l_ins_hist_csr.old_attribute27 := fnd_api.g_miss_char;
16246                      l_ins_hist_csr.new_attribute27 := p_instance_rec.attribute27;
16247              END IF;
16248              --
16249              IF    ( l_ins_hist_csr.old_attribute28 IS NULL
16250                 AND  l_ins_hist_csr.new_attribute28 IS NULL ) THEN
16251                      IF  ( p_instance_rec.attribute28 = l_curr_instance_rec.attribute28 )
16252                       OR ( p_instance_rec.attribute28 = fnd_api.g_miss_char ) THEN
16253                            l_ins_hist_csr.old_attribute28 := NULL;
16254                            l_ins_hist_csr.new_attribute28 := NULL;
16255                      ELSE
16256                            l_ins_hist_csr.old_attribute28 := fnd_api.g_miss_char;
16257                            l_ins_hist_csr.new_attribute28 := p_instance_rec.attribute28;
16258                      END IF;
16259              ELSE
16260                      l_ins_hist_csr.old_attribute28 := fnd_api.g_miss_char;
16261                      l_ins_hist_csr.new_attribute28 := p_instance_rec.attribute28;
16262              END IF;
16263              --
16264              IF    ( l_ins_hist_csr.old_attribute29 IS NULL
16265                 AND  l_ins_hist_csr.new_attribute29 IS NULL ) THEN
16266                      IF  ( p_instance_rec.attribute29 = l_curr_instance_rec.attribute29 )
16267                       OR ( p_instance_rec.attribute29 = fnd_api.g_miss_char ) THEN
16268                            l_ins_hist_csr.old_attribute29 := NULL;
16269                            l_ins_hist_csr.new_attribute29 := NULL;
16270                      ELSE
16271                            l_ins_hist_csr.old_attribute29 := fnd_api.g_miss_char;
16272                            l_ins_hist_csr.new_attribute29 := p_instance_rec.attribute29;
16273                      END IF;
16274              ELSE
16275                      l_ins_hist_csr.old_attribute29 := fnd_api.g_miss_char;
16276                      l_ins_hist_csr.new_attribute29 := p_instance_rec.attribute29;
16277              END IF;
16278              --
16279              IF    ( l_ins_hist_csr.old_attribute30 IS NULL
16280                 AND  l_ins_hist_csr.new_attribute30 IS NULL ) THEN
16281                      IF  ( p_instance_rec.attribute30 = l_curr_instance_rec.attribute30 )
16282                       OR ( p_instance_rec.attribute30 = fnd_api.g_miss_char ) THEN
16283                            l_ins_hist_csr.old_attribute30 := NULL;
16284                            l_ins_hist_csr.new_attribute30 := NULL;
16285                      ELSE
16286                            l_ins_hist_csr.old_attribute30 := fnd_api.g_miss_char;
16287                            l_ins_hist_csr.new_attribute30 := p_instance_rec.attribute30;
16288                      END IF;
16289              ELSE
16290                      l_ins_hist_csr.old_attribute30 := fnd_api.g_miss_char;
16291                      l_ins_hist_csr.new_attribute30 := p_instance_rec.attribute30;
16292              END IF;
16293              --
16294   	 --end of code for eam integration--
16295                -- Addition of columns for FA Integration
16296              IF    ( l_ins_hist_csr.old_purchase_unit_price IS NULL
16297                 AND  l_ins_hist_csr.new_purchase_unit_price IS NULL ) THEN
16298                      IF  ( p_instance_rec.purchase_unit_price = l_curr_instance_rec.purchase_unit_price )
16299                       OR ( p_instance_rec.purchase_unit_price = fnd_api.g_miss_num ) THEN
16300                            l_ins_hist_csr.old_purchase_unit_price := NULL;
16301                            l_ins_hist_csr.new_purchase_unit_price := NULL;
16302                      ELSE
16303                            l_ins_hist_csr.old_purchase_unit_price := fnd_api.g_miss_num;
16304                            l_ins_hist_csr.new_purchase_unit_price := p_instance_rec.purchase_unit_price;
16305                      END IF;
16306              ELSE
16307                      l_ins_hist_csr.old_purchase_unit_price := fnd_api.g_miss_num;
16308                      l_ins_hist_csr.new_purchase_unit_price := p_instance_rec.purchase_unit_price;
16309              END IF;
16310              --
16311              IF    ( l_ins_hist_csr.old_purchase_currency_code IS NULL
16312                 AND  l_ins_hist_csr.new_purchase_currency_code IS NULL ) THEN
16313                      IF  ( p_instance_rec.purchase_currency_code = l_curr_instance_rec.purchase_currency_code )
16314                       OR ( p_instance_rec.purchase_currency_code = fnd_api.g_miss_char ) THEN
16315                            l_ins_hist_csr.old_purchase_currency_code := NULL;
16316                            l_ins_hist_csr.new_purchase_currency_code := NULL;
16317                      ELSE
16318                            l_ins_hist_csr.old_purchase_currency_code := fnd_api.g_miss_char;
16319                            l_ins_hist_csr.new_purchase_currency_code := p_instance_rec.purchase_currency_code;
16320                      END IF;
16321              ELSE
16322                      l_ins_hist_csr.old_purchase_currency_code := fnd_api.g_miss_char;
16323                      l_ins_hist_csr.new_purchase_currency_code := p_instance_rec.purchase_currency_code;
16324              END IF;
16325              --
16326              IF    ( l_ins_hist_csr.old_payables_unit_price IS NULL
16327                 AND  l_ins_hist_csr.new_payables_unit_price IS NULL ) THEN
16328                      IF  ( p_instance_rec.payables_unit_price = l_curr_instance_rec.payables_unit_price )
16329                       OR ( p_instance_rec.payables_unit_price = fnd_api.g_miss_num ) THEN
16330                            l_ins_hist_csr.old_payables_unit_price := NULL;
16331                            l_ins_hist_csr.new_payables_unit_price := NULL;
16332                      ELSE
16333                            l_ins_hist_csr.old_payables_unit_price := fnd_api.g_miss_num;
16334                            l_ins_hist_csr.new_payables_unit_price := p_instance_rec.payables_unit_price;
16335                      END IF;
16336              ELSE
16337                      l_ins_hist_csr.old_payables_unit_price := fnd_api.g_miss_num;
16338                      l_ins_hist_csr.new_payables_unit_price := p_instance_rec.payables_unit_price;
16339              END IF;
16340              --
16341              IF    ( l_ins_hist_csr.old_payables_currency_code IS NULL
16342                 AND  l_ins_hist_csr.new_payables_currency_code IS NULL ) THEN
16343                      IF  ( p_instance_rec.payables_currency_code = l_curr_instance_rec.payables_currency_code )
16344                       OR ( p_instance_rec.payables_currency_code = fnd_api.g_miss_char ) THEN
16345                            l_ins_hist_csr.old_payables_currency_code := NULL;
16346                            l_ins_hist_csr.new_payables_currency_code := NULL;
16347                      ELSE
16348                            l_ins_hist_csr.old_payables_currency_code := fnd_api.g_miss_char;
16349                            l_ins_hist_csr.new_payables_currency_code := p_instance_rec.payables_currency_code;
16350                      END IF;
16351              ELSE
16352                      l_ins_hist_csr.old_payables_currency_code := fnd_api.g_miss_char;
16353                      l_ins_hist_csr.new_payables_currency_code := p_instance_rec.payables_currency_code;
16354              END IF;
16355              --
16356              IF    ( l_ins_hist_csr.old_sales_unit_price IS NULL
16357                 AND  l_ins_hist_csr.new_sales_unit_price IS NULL ) THEN
16358                      IF  ( p_instance_rec.sales_unit_price = l_curr_instance_rec.sales_unit_price )
16359                       OR ( p_instance_rec.sales_unit_price = fnd_api.g_miss_num ) THEN
16360                            l_ins_hist_csr.old_sales_unit_price := NULL;
16361                            l_ins_hist_csr.new_sales_unit_price := NULL;
16362                      ELSE
16363                            l_ins_hist_csr.old_sales_unit_price := fnd_api.g_miss_num;
16364                            l_ins_hist_csr.new_sales_unit_price := p_instance_rec.sales_unit_price;
16365                      END IF;
16366              ELSE
16367                      l_ins_hist_csr.old_sales_unit_price := fnd_api.g_miss_num;
16368                      l_ins_hist_csr.new_sales_unit_price := p_instance_rec.sales_unit_price;
16369              END IF;
16370              --
16371              IF    ( l_ins_hist_csr.old_sales_currency_code IS NULL
16372                 AND  l_ins_hist_csr.new_sales_currency_code IS NULL ) THEN
16373                      IF  ( p_instance_rec.sales_currency_code = l_curr_instance_rec.sales_currency_code )
16374                       OR ( p_instance_rec.sales_currency_code = fnd_api.g_miss_char ) THEN
16375                            l_ins_hist_csr.old_sales_currency_code := NULL;
16376                            l_ins_hist_csr.new_sales_currency_code := NULL;
16377                      ELSE
16378                            l_ins_hist_csr.old_sales_currency_code := fnd_api.g_miss_char;
16379                            l_ins_hist_csr.new_sales_currency_code := p_instance_rec.sales_currency_code;
16380                      END IF;
16381              ELSE
16382                      l_ins_hist_csr.old_sales_currency_code := fnd_api.g_miss_char;
16383                      l_ins_hist_csr.new_sales_currency_code := p_instance_rec.sales_currency_code;
16384              END IF;
16385              --
16386              IF    ( l_ins_hist_csr.old_operational_status_code IS NULL
16387                 AND  l_ins_hist_csr.new_operational_status_code IS NULL ) THEN
16388                      IF  ( p_instance_rec.operational_status_code = l_curr_instance_rec.operational_status_code )
16389                       OR ( p_instance_rec.operational_status_code = fnd_api.g_miss_char ) THEN
16390                            l_ins_hist_csr.old_operational_status_code := NULL;
16391                            l_ins_hist_csr.new_operational_status_code := NULL;
16392                      ELSE
16393                            l_ins_hist_csr.old_operational_status_code := fnd_api.g_miss_char;
16394                            l_ins_hist_csr.new_operational_status_code := p_instance_rec.operational_status_code;
16395                      END IF;
16396              ELSE
16397                      l_ins_hist_csr.old_operational_status_code := fnd_api.g_miss_char;
16398                      l_ins_hist_csr.new_operational_status_code := p_instance_rec.operational_status_code;
16399              END IF;
16400              --
16401                -- End addition of columns for FA Integration
16402 
16403 
16404 
16405 -- End addition for bug 2671179
16406          CSI_ITEM_INSTANCES_H_PKG.Update_Row
16407            ( p_INSTANCE_HISTORY_ID               => l_ins_hist_id
16408             ,p_INSTANCE_ID                       => fnd_api.g_miss_num
16409             ,p_TRANSACTION_ID                    => fnd_api.g_miss_num
16410             ,p_OLD_INSTANCE_NUMBER               => l_ins_hist_csr.OLD_INSTANCE_NUMBER
16411             ,p_NEW_INSTANCE_NUMBER               => l_ins_hist_csr.NEW_INSTANCE_NUMBER
16412             ,p_OLD_EXTERNAL_REFERENCE            => l_ins_hist_csr.OLD_EXTERNAL_REFERENCE
16413             ,p_NEW_EXTERNAL_REFERENCE            => l_ins_hist_csr.NEW_EXTERNAL_REFERENCE
16414             ,p_OLD_INVENTORY_ITEM_ID             => l_ins_hist_csr.OLD_INVENTORY_ITEM_ID
16415             ,p_NEW_INVENTORY_ITEM_ID             => l_ins_hist_csr.NEW_INVENTORY_ITEM_ID
16416             ,p_OLD_INVENTORY_REVISION            => l_ins_hist_csr.OLD_INVENTORY_REVISION
16417             ,p_NEW_INVENTORY_REVISION            => l_ins_hist_csr.NEW_INVENTORY_REVISION
16418             ,p_OLD_INV_MASTER_ORGZN_ID           => l_ins_hist_csr.OLD_INV_MASTER_ORGANIZATION_ID
16419             ,p_NEW_INV_MASTER_ORGZN_ID           => l_ins_hist_csr.NEW_INV_MASTER_ORGANIZATION_ID
16420             ,p_OLD_SERIAL_NUMBER                 => l_ins_hist_csr.OLD_SERIAL_NUMBER
16421             ,p_NEW_SERIAL_NUMBER                 => l_ins_hist_csr.NEW_SERIAL_NUMBER
16422             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_ins_hist_csr.OLD_MFG_SERIAL_NUMBER_FLAG
16423             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => l_ins_hist_csr.NEW_MFG_SERIAL_NUMBER_FLAG
16424             ,p_OLD_LOT_NUMBER                    => l_ins_hist_csr.OLD_LOT_NUMBER
16425             ,p_NEW_LOT_NUMBER                    => l_ins_hist_csr.NEW_LOT_NUMBER
16426             ,p_OLD_QUANTITY                      => l_ins_hist_csr.OLD_QUANTITY
16427             ,p_NEW_QUANTITY                      => l_ins_hist_csr.NEW_QUANTITY
16428             ,p_OLD_UNIT_OF_MEASURE               => l_ins_hist_csr.OLD_UNIT_OF_MEASURE
16429             ,p_NEW_UNIT_OF_MEASURE               => l_ins_hist_csr.NEW_UNIT_OF_MEASURE
16430             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_ins_hist_csr.OLD_ACCOUNTING_CLASS_CODE
16431             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_ins_hist_csr.NEW_ACCOUNTING_CLASS_CODE
16432             ,p_OLD_INSTANCE_CONDITION_ID         => l_ins_hist_csr.OLD_INSTANCE_CONDITION_ID
16433             ,p_NEW_INSTANCE_CONDITION_ID         => l_ins_hist_csr.NEW_INSTANCE_CONDITION_ID
16434             ,p_OLD_INSTANCE_STATUS_ID            => l_ins_hist_csr.OLD_INSTANCE_STATUS_ID
16435             ,p_NEW_INSTANCE_STATUS_ID            => l_ins_hist_csr.NEW_INSTANCE_STATUS_ID
16436             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_ins_hist_csr.OLD_CUSTOMER_VIEW_FLAG
16437             ,p_NEW_CUSTOMER_VIEW_FLAG            => l_ins_hist_csr.NEW_CUSTOMER_VIEW_FLAG
16438             ,p_OLD_MERCHANT_VIEW_FLAG            => l_ins_hist_csr.OLD_MERCHANT_VIEW_FLAG
16439             ,p_NEW_MERCHANT_VIEW_FLAG            => l_ins_hist_csr.NEW_MERCHANT_VIEW_FLAG
16440             ,p_OLD_SELLABLE_FLAG                 => l_ins_hist_csr.OLD_SELLABLE_FLAG
16441             ,p_NEW_SELLABLE_FLAG                 => l_ins_hist_csr.NEW_SELLABLE_FLAG
16442             ,p_OLD_SYSTEM_ID                     => l_ins_hist_csr.OLD_SYSTEM_ID
16443             ,p_NEW_SYSTEM_ID                     => l_ins_hist_csr.NEW_SYSTEM_ID
16444             ,p_OLD_INSTANCE_TYPE_CODE            => l_ins_hist_csr.OLD_INSTANCE_TYPE_CODE
16445             ,p_NEW_INSTANCE_TYPE_CODE            => l_ins_hist_csr.NEW_INSTANCE_TYPE_CODE
16446             ,p_OLD_ACTIVE_START_DATE             => l_ins_hist_csr.OLD_ACTIVE_START_DATE
16447             ,p_NEW_ACTIVE_START_DATE             => l_ins_hist_csr.NEW_ACTIVE_START_DATE
16448             ,p_OLD_ACTIVE_END_DATE               => l_ins_hist_csr.OLD_ACTIVE_END_DATE
16449             ,p_NEW_ACTIVE_END_DATE               => l_ins_hist_csr.NEW_ACTIVE_END_DATE
16450             ,p_OLD_LOCATION_TYPE_CODE            => l_ins_hist_csr.OLD_LOCATION_TYPE_CODE
16451             ,p_NEW_LOCATION_TYPE_CODE            => l_ins_hist_csr.NEW_LOCATION_TYPE_CODE
16452             ,p_OLD_LOCATION_ID                   => l_ins_hist_csr.OLD_LOCATION_ID
16453             ,p_NEW_LOCATION_ID                   => l_ins_hist_csr.NEW_LOCATION_ID
16454             ,p_OLD_INV_ORGANIZATION_ID           => l_ins_hist_csr.OLD_INV_ORGANIZATION_ID
16455             ,p_NEW_INV_ORGANIZATION_ID           => l_ins_hist_csr.NEW_INV_ORGANIZATION_ID
16456             ,p_OLD_INV_SUBINVENTORY_NAME         => l_ins_hist_csr.OLD_INV_SUBINVENTORY_NAME
16457             ,p_NEW_INV_SUBINVENTORY_NAME         => l_ins_hist_csr.NEW_INV_SUBINVENTORY_NAME
16458             ,p_OLD_INV_LOCATOR_ID                => l_ins_hist_csr.OLD_INV_LOCATOR_ID
16459             ,p_NEW_INV_LOCATOR_ID                => l_ins_hist_csr.NEW_INV_LOCATOR_ID
16460             ,p_OLD_PA_PROJECT_ID                 => l_ins_hist_csr.OLD_PA_PROJECT_ID
16461             ,p_NEW_PA_PROJECT_ID                 => l_ins_hist_csr.NEW_PA_PROJECT_ID
16462             ,p_OLD_PA_PROJECT_TASK_ID            => l_ins_hist_csr.OLD_PA_PROJECT_TASK_ID
16463             ,p_NEW_PA_PROJECT_TASK_ID            => l_ins_hist_csr.NEW_PA_PROJECT_TASK_ID
16464             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_ins_hist_csr.OLD_IN_TRANSIT_ORDER_LINE_ID
16465             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_ins_hist_csr.NEW_IN_TRANSIT_ORDER_LINE_ID
16466             ,p_OLD_WIP_JOB_ID                    => l_ins_hist_csr.OLD_WIP_JOB_ID
16467             ,p_NEW_WIP_JOB_ID                    => l_ins_hist_csr.NEW_WIP_JOB_ID
16468             ,p_OLD_PO_ORDER_LINE_ID              => l_ins_hist_csr.OLD_PO_ORDER_LINE_ID
16469             ,p_NEW_PO_ORDER_LINE_ID              => l_ins_hist_csr.NEW_PO_ORDER_LINE_ID
16470             ,p_OLD_COMPLETENESS_FLAG             => l_ins_hist_csr.OLD_COMPLETENESS_FLAG
16471             ,p_NEW_COMPLETENESS_FLAG             => l_ins_hist_csr.NEW_COMPLETENESS_FLAG
16472             ,p_FULL_DUMP_FLAG                    => fnd_api.g_miss_char
16473             ,p_NEW_CONTEXT                       => l_ins_hist_csr.NEW_CONTEXT
16474             ,P_OLD_CONTEXT                       => l_ins_hist_csr.OLD_CONTEXT
16475             ,p_NEW_ATTRIBUTE1                    => l_ins_hist_csr.NEW_ATTRIBUTE1
16476             ,p_OLD_ATTRIBUTE1                    => l_ins_hist_csr.OLD_ATTRIBUTE1
16477             ,p_NEW_ATTRIBUTE2                    => l_ins_hist_csr.NEW_ATTRIBUTE2
16478             ,p_OLD_ATTRIBUTE2                    => l_ins_hist_csr.OLD_ATTRIBUTE2
16479             ,p_NEW_ATTRIBUTE3                    => l_ins_hist_csr.NEW_ATTRIBUTE3
16480             ,p_OLD_ATTRIBUTE3                    => l_ins_hist_csr.OLD_ATTRIBUTE3
16481             ,p_NEW_ATTRIBUTE4                    => l_ins_hist_csr.NEW_ATTRIBUTE4
16482             ,p_OLD_ATTRIBUTE4                    => l_ins_hist_csr.OLD_ATTRIBUTE4
16483             ,p_NEW_ATTRIBUTE5                    => l_ins_hist_csr.NEW_ATTRIBUTE5
16484             ,p_OLD_ATTRIBUTE5                    => l_ins_hist_csr.OLD_ATTRIBUTE5
16485             ,p_NEW_ATTRIBUTE6                    => l_ins_hist_csr.NEW_ATTRIBUTE6
16486             ,p_OLD_ATTRIBUTE6                    => l_ins_hist_csr.OLD_ATTRIBUTE6
16487             ,p_NEW_ATTRIBUTE7                    => l_ins_hist_csr.NEW_ATTRIBUTE7
16488             ,p_OLD_ATTRIBUTE7                    => l_ins_hist_csr.OLD_ATTRIBUTE7
16489             ,p_NEW_ATTRIBUTE8                    => l_ins_hist_csr.NEW_ATTRIBUTE8
16490             ,p_OLD_ATTRIBUTE8                    => l_ins_hist_csr.OLD_ATTRIBUTE8
16491             ,p_NEW_ATTRIBUTE9                    => l_ins_hist_csr.NEW_ATTRIBUTE9
16492             ,p_OLD_ATTRIBUTE9                    => l_ins_hist_csr.OLD_ATTRIBUTE9
16493             ,p_NEW_ATTRIBUTE10                   => l_ins_hist_csr.NEW_ATTRIBUTE10
16494             ,p_OLD_ATTRIBUTE10                   => l_ins_hist_csr.OLD_ATTRIBUTE10
16495             ,p_NEW_ATTRIBUTE11                   => l_ins_hist_csr.NEW_ATTRIBUTE11
16496             ,p_OLD_ATTRIBUTE11                   => l_ins_hist_csr.OLD_ATTRIBUTE11
16497             ,p_NEW_ATTRIBUTE12                   => l_ins_hist_csr.NEW_ATTRIBUTE12
16498             ,p_OLD_ATTRIBUTE12                   => l_ins_hist_csr.OLD_ATTRIBUTE12
16499             ,p_NEW_ATTRIBUTE13                   => l_ins_hist_csr.NEW_ATTRIBUTE13
16500             ,p_OLD_ATTRIBUTE13                   => l_ins_hist_csr.OLD_ATTRIBUTE13
16501             ,p_NEW_ATTRIBUTE14                   => l_ins_hist_csr.NEW_ATTRIBUTE14
16502             ,p_OLD_ATTRIBUTE14                   => l_ins_hist_csr.OLD_ATTRIBUTE14
16503             ,p_NEW_ATTRIBUTE15                   => l_ins_hist_csr.NEW_ATTRIBUTE15
16504             ,p_OLD_ATTRIBUTE15                   => l_ins_hist_csr.OLD_ATTRIBUTE15
16505             ,p_CREATED_BY                        => fnd_api.g_miss_num
16506             ,p_CREATION_DATE                     => fnd_api.g_miss_date
16507             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
16508             ,p_LAST_UPDATE_DATE                  => SYSDATE
16509             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
16510             ,p_OBJECT_VERSION_NUMBER             => fnd_api.g_miss_num
16511             ,p_OLD_INST_LOC_TYPE_CODE            => l_ins_hist_csr.OLD_INST_LOC_TYPE_CODE
16512             ,p_NEW_INST_LOC_TYPE_CODE            => l_ins_hist_csr.NEW_INST_LOC_TYPE_CODE
16513             ,p_OLD_INST_LOC_ID                   => l_ins_hist_csr.OLD_INST_LOC_ID
16514             ,p_NEW_INST_LOC_ID                   => l_ins_hist_csr.NEW_INST_LOC_ID
16515             ,p_OLD_INST_USAGE_CODE               => l_ins_hist_csr.OLD_INST_USAGE_CODE
16516             ,p_NEW_INST_USAGE_CODE               => l_ins_hist_csr.NEW_INST_USAGE_CODE
16517             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => l_ins_hist_csr.OLD_LAST_VLD_ORGANIZATION_ID
16518             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => l_ins_hist_csr.NEW_LAST_VLD_ORGANIZATION_ID
16519             ,p_OLD_CONFIG_INST_REV_NUM           => l_ins_hist_csr.OLD_CONFIG_INST_REV_NUM
16520             ,p_NEW_CONFIG_INST_REV_NUM           => l_ins_hist_csr.NEW_CONFIG_INST_REV_NUM
16521             ,p_OLD_CONFIG_VALID_STATUS           => l_ins_hist_csr.OLD_CONFIG_VALID_STATUS
16522             ,p_NEW_CONFIG_VALID_STATUS           => l_ins_hist_csr.NEW_CONFIG_VALID_STATUS
16523             ,p_OLD_INSTANCE_DESCRIPTION          => l_ins_hist_csr.OLD_INSTANCE_DESCRIPTION
16524             ,p_NEW_INSTANCE_DESCRIPTION          => l_ins_hist_csr.NEW_INSTANCE_DESCRIPTION
16525             ,p_OLD_INSTALL_DATE                  => l_ins_hist_csr.OLD_INSTALL_DATE
16526             ,p_NEW_INSTALL_DATE                  => l_ins_hist_csr.NEW_INSTALL_DATE
16527             ,p_OLD_RETURN_BY_DATE                => l_ins_hist_csr.OLD_RETURN_BY_DATE
16528             ,p_NEW_RETURN_BY_DATE                => l_ins_hist_csr.NEW_RETURN_BY_DATE
16529             ,p_OLD_ACTUAL_RETURN_DATE            => l_ins_hist_csr.OLD_ACTUAL_RETURN_DATE
16530             ,p_NEW_ACTUAL_RETURN_DATE            => l_ins_hist_csr.NEW_ACTUAL_RETURN_DATE
16531             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_ins_hist_csr.OLD_OE_AGREEMENT_ID
16532             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_ins_hist_csr.NEW_OE_AGREEMENT_ID
16533 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_ins_hist_csr.OLD_LAST_OE_ORDER_LINE_ID
16534 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_ins_hist_csr.NEW_LAST_OE_ORDER_LINE_ID
16535 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID
16536 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID
16537 	    ,p_OLD_LAST_WIP_JOB_ID               => l_ins_hist_csr.OLD_LAST_WIP_JOB_ID
16538 	    ,p_NEW_LAST_WIP_JOB_ID               => l_ins_hist_csr.NEW_LAST_WIP_JOB_ID
16539 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_ins_hist_csr.OLD_LAST_PO_PO_LINE_ID
16540 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_ins_hist_csr.NEW_LAST_PO_PO_LINE_ID
16541 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_ins_hist_csr.OLD_LAST_PA_PROJECT_ID
16542 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_ins_hist_csr.NEW_LAST_PA_PROJECT_ID
16543 	    ,p_OLD_LAST_PA_TASK_ID          => l_ins_hist_csr.OLD_LAST_PA_TASK_ID
16544 	    ,p_NEW_LAST_PA_TASK_ID          => l_ins_hist_csr.NEW_LAST_PA_TASK_ID
16545 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_ins_hist_csr.OLD_LAST_TXN_LINE_DETAIL_ID
16546 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_ins_hist_csr.NEW_LAST_TXN_LINE_DETAIL_ID
16547 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_ins_hist_csr.OLD_LAST_OE_PO_NUMBER
16548 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_ins_hist_csr.NEW_LAST_OE_PO_NUMBER
16549  	    --start of parameters addition for eam integration--
16550 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_ins_hist_csr.OLD_NETWORK_ASSET_FLAG
16551 	    ,p_NEW_NETWORK_ASSET_FLAG             => l_ins_hist_csr.NEW_NETWORK_ASSET_FLAG
16552 	    ,p_OLD_MAINTAINABLE_FLAG              => l_ins_hist_csr.OLD_MAINTAINABLE_FLAG
16553 	    ,p_NEW_MAINTAINABLE_FLAG              => l_ins_hist_csr.NEW_MAINTAINABLE_FLAG
16554 	    ,p_OLD_PN_LOCATION_ID                 => l_ins_hist_csr.OLD_PN_LOCATION_ID
16555 	    ,p_NEW_PN_LOCATION_ID                 => l_ins_hist_csr.NEW_PN_LOCATION_ID
16556 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_ins_hist_csr.OLD_ASSET_CRITICALITY_CODE
16557 	    ,p_NEW_ASSET_CRITICALITY_CODE         => l_ins_hist_csr.NEW_ASSET_CRITICALITY_CODE
16558 	    ,p_OLD_CATEGORY_ID                    => l_ins_hist_csr.OLD_CATEGORY_ID
16559 	    ,p_NEW_CATEGORY_ID                    => l_ins_hist_csr.NEW_CATEGORY_ID
16560 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_ins_hist_csr.OLD_EQUIPMENT_GEN_OBJECT_ID
16561 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => l_ins_hist_csr.NEW_EQUIPMENT_GEN_OBJECT_ID
16562 	    ,p_OLD_INSTANTIATION_FLAG             => l_ins_hist_csr.OLD_INSTANTIATION_FLAG
16563 	    ,p_NEW_INSTANTIATION_FLAG             => l_ins_hist_csr.NEW_INSTANTIATION_FLAG
16564 	    ,p_OLD_LINEAR_LOCATION_ID             => l_ins_hist_csr.OLD_LINEAR_LOCATION_ID
16565 	    ,p_NEW_LINEAR_LOCATION_ID             => l_ins_hist_csr.NEW_LINEAR_LOCATION_ID
16566 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_ins_hist_csr.OLD_OPERATIONAL_LOG_FLAG
16567 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => l_ins_hist_csr.NEW_OPERATIONAL_LOG_FLAG
16568 	    ,p_OLD_CHECKIN_STATUS                 => l_ins_hist_csr.OLD_CHECKIN_STATUS
16569 	    ,p_NEW_CHECKIN_STATUS                 => l_ins_hist_csr.NEW_CHECKIN_STATUS
16570 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_ins_hist_csr.OLD_SUPPLIER_WARRANTY_EXP_DATE
16571 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => l_ins_hist_csr.NEW_SUPPLIER_WARRANTY_EXP_DATE
16572             ,p_OLD_ATTRIBUTE16                    => l_ins_hist_csr.OLD_ATTRIBUTE16
16573             ,p_NEW_ATTRIBUTE16                    => l_ins_hist_csr.NEW_ATTRIBUTE16
16574             ,p_OLD_ATTRIBUTE17                    => l_ins_hist_csr.OLD_ATTRIBUTE17
16575             ,p_NEW_ATTRIBUTE17                    => l_ins_hist_csr.NEW_ATTRIBUTE17
16576             ,p_OLD_ATTRIBUTE18                    => l_ins_hist_csr.OLD_ATTRIBUTE18
16577             ,p_NEW_ATTRIBUTE18                    => l_ins_hist_csr.NEW_ATTRIBUTE18
16578             ,p_OLD_ATTRIBUTE19                    => l_ins_hist_csr.OLD_ATTRIBUTE19
16579             ,p_NEW_ATTRIBUTE19                    => l_ins_hist_csr.NEW_ATTRIBUTE19
16580             ,p_OLD_ATTRIBUTE20                    => l_ins_hist_csr.OLD_ATTRIBUTE20
16581             ,p_NEW_ATTRIBUTE20                    => l_ins_hist_csr.NEW_ATTRIBUTE20
16582             ,p_OLD_ATTRIBUTE21                    => l_ins_hist_csr.OLD_ATTRIBUTE21
16583             ,p_NEW_ATTRIBUTE21                    => l_ins_hist_csr.NEW_ATTRIBUTE21
16584             ,p_OLD_ATTRIBUTE22                    => l_ins_hist_csr.OLD_ATTRIBUTE22
16585             ,p_NEW_ATTRIBUTE22                    => l_ins_hist_csr.NEW_ATTRIBUTE22
16586             ,p_OLD_ATTRIBUTE23                    => l_ins_hist_csr.OLD_ATTRIBUTE23
16587             ,p_NEW_ATTRIBUTE23                    => l_ins_hist_csr.NEW_ATTRIBUTE23
16588             ,p_OLD_ATTRIBUTE24                    => l_ins_hist_csr.OLD_ATTRIBUTE24
16589             ,p_NEW_ATTRIBUTE24                    => l_ins_hist_csr.NEW_ATTRIBUTE24
16590             ,p_OLD_ATTRIBUTE25                    => l_ins_hist_csr.OLD_ATTRIBUTE25
16591             ,p_NEW_ATTRIBUTE25                    => l_ins_hist_csr.NEW_ATTRIBUTE25
16592             ,p_OLD_ATTRIBUTE26                    => l_ins_hist_csr.OLD_ATTRIBUTE26
16593             ,p_NEW_ATTRIBUTE26                    => l_ins_hist_csr.NEW_ATTRIBUTE26
16594             ,p_OLD_ATTRIBUTE27                    => l_ins_hist_csr.OLD_ATTRIBUTE27
16595             ,p_NEW_ATTRIBUTE27                    => l_ins_hist_csr.NEW_ATTRIBUTE27
16596             ,p_OLD_ATTRIBUTE28                    => l_ins_hist_csr.OLD_ATTRIBUTE28
16597             ,p_NEW_ATTRIBUTE28                    => l_ins_hist_csr.NEW_ATTRIBUTE28
16598             ,p_OLD_ATTRIBUTE29                    => l_ins_hist_csr.OLD_ATTRIBUTE29
16599             ,p_NEW_ATTRIBUTE29                    => l_ins_hist_csr.NEW_ATTRIBUTE29
16600             ,p_OLD_ATTRIBUTE30                    => l_ins_hist_csr.OLD_ATTRIBUTE30
16601             ,p_NEW_ATTRIBUTE30                    => l_ins_hist_csr.NEW_ATTRIBUTE30
16602   	    --end of parameters addition for eam integration--
16603         -- Addition of columns for FA Integration
16604             ,p_OLD_PAYABLES_UNIT_PRICE            => l_ins_hist_csr.OLD_PAYABLES_UNIT_PRICE
16605             ,p_NEW_PAYABLES_UNIT_PRICE            => l_ins_hist_csr.NEW_PAYABLES_UNIT_PRICE
16606             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_ins_hist_csr.OLD_PAYABLES_CURRENCY_CODE
16607             ,p_NEW_PAYABLES_CURRENCY_CODE         => l_ins_hist_csr.NEW_PAYABLES_CURRENCY_CODE
16608             ,p_OLD_PURCHASE_UNIT_PRICE            => l_ins_hist_csr.OLD_PURCHASE_UNIT_PRICE
16609             ,p_NEW_PURCHASE_UNIT_PRICE            => l_ins_hist_csr.NEW_PURCHASE_UNIT_PRICE
16610             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_ins_hist_csr.OLD_PURCHASE_CURRENCY_CODE
16611             ,p_NEW_PURCHASE_CURRENCY_CODE         => l_ins_hist_csr.NEW_PURCHASE_CURRENCY_CODE
16612             ,p_OLD_SALES_UNIT_PRICE               => l_ins_hist_csr.OLD_SALES_UNIT_PRICE
16613             ,p_NEW_SALES_UNIT_PRICE               => l_ins_hist_csr.NEW_SALES_UNIT_PRICE
16614             ,p_OLD_SALES_CURRENCY_CODE            => l_ins_hist_csr.OLD_SALES_CURRENCY_CODE
16615             ,p_NEW_SALES_CURRENCY_CODE            => l_ins_hist_csr.NEW_SALES_CURRENCY_CODE
16616             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_ins_hist_csr.OLD_OPERATIONAL_STATUS_CODE
16617             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_ins_hist_csr.NEW_OPERATIONAL_STATUS_CODE
16618         -- End addition of columns for FA Integration
16619             -- Begin Add Code for Siebel Genesis Project
16620             ,p_OLD_SOURCE_CODE                   => l_ins_hist_csr.OLD_SOURCE_CODE
16621             ,p_NEW_SOURCE_CODE                   => l_ins_hist_csr.NEW_SOURCE_CODE
16622             -- End Add Code for Siebel Genesis Project
16623             );
16624 
16625         END IF;
16626 
16627       EXCEPTION
16628 
16629       WHEN NO_DATA_FOUND THEN
16630 
16631         IF (l_mod_value = 0) THEN
16632 
16633           -- If the mod value is 0 then dump all the columns both changed and unchanged
16634           -- changed columns have old and new values while the unchanged values have old and new values
16635           -- exactly same
16636           IF (p_instance_rec.INSTANCE_NUMBER = FND_API.G_MISS_CHAR) THEN
16637               p_instance_rec.INSTANCE_NUMBER := l_curr_instance_rec.INSTANCE_NUMBER;
16638           END IF;
16639           IF (p_instance_rec.EXTERNAL_REFERENCE = FND_API.G_MISS_CHAR) THEN
16640               p_instance_rec.EXTERNAL_REFERENCE := l_curr_instance_rec.EXTERNAL_REFERENCE;
16641           END IF;
16642           IF (p_instance_rec.INVENTORY_ITEM_ID = FND_API.G_MISS_NUM) THEN
16643               p_instance_rec.INVENTORY_ITEM_ID := l_curr_instance_rec.INVENTORY_ITEM_ID;
16644           END IF;
16645           IF (p_instance_rec.INVENTORY_REVISION = FND_API.G_MISS_CHAR) THEN
16646               p_instance_rec.INVENTORY_REVISION := l_curr_instance_rec.INVENTORY_REVISION;
16647           END IF;
16648           IF (p_instance_rec.INV_MASTER_ORGANIZATION_ID = FND_API.G_MISS_NUM) THEN
16649               p_instance_rec.INV_MASTER_ORGANIZATION_ID := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
16650           END IF;
16651           IF (p_instance_rec.SERIAL_NUMBER = FND_API.G_MISS_CHAR) THEN
16652               p_instance_rec.SERIAL_NUMBER := l_curr_instance_rec.SERIAL_NUMBER;
16653           END IF;
16654           IF (p_instance_rec.MFG_SERIAL_NUMBER_FLAG = FND_API.G_MISS_CHAR) THEN
16655               p_instance_rec.MFG_SERIAL_NUMBER_FLAG := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
16656           END IF;
16657           IF (p_instance_rec.LOT_NUMBER = FND_API.G_MISS_CHAR) THEN
16658               p_instance_rec.LOT_NUMBER := l_curr_instance_rec.LOT_NUMBER;
16659           END IF;
16660           IF (p_instance_rec.QUANTITY = FND_API.G_MISS_NUM) THEN
16661               p_instance_rec.QUANTITY := l_curr_instance_rec.QUANTITY;
16662           END IF;
16663           IF (p_instance_rec.UNIT_OF_MEASURE = FND_API.G_MISS_CHAR) THEN
16664               p_instance_rec.UNIT_OF_MEASURE := l_curr_instance_rec.UNIT_OF_MEASURE;
16665           END IF;
16666           IF (p_instance_rec.ACCOUNTING_CLASS_CODE = FND_API.G_MISS_CHAR) THEN
16667               p_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
16668           END IF;
16669           IF (p_instance_rec.INSTANCE_CONDITION_ID = FND_API.G_MISS_NUM) THEN
16670               p_instance_rec.INSTANCE_CONDITION_ID := l_curr_instance_rec.INSTANCE_CONDITION_ID;
16671           END IF;
16672           IF (p_instance_rec.INSTANCE_STATUS_ID = FND_API.G_MISS_NUM) THEN
16673               p_instance_rec.INSTANCE_STATUS_ID := l_curr_instance_rec.INSTANCE_STATUS_ID;
16674           END IF;
16675           IF (p_instance_rec.CUSTOMER_VIEW_FLAG = FND_API.G_MISS_CHAR) THEN
16676               p_instance_rec.CUSTOMER_VIEW_FLAG := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
16677           END IF;
16678           IF (p_instance_rec.MERCHANT_VIEW_FLAG = FND_API.G_MISS_CHAR) THEN
16679               p_instance_rec.MERCHANT_VIEW_FLAG := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
16680           END IF;
16681           IF (p_instance_rec.SELLABLE_FLAG = FND_API.G_MISS_CHAR) THEN
16682               p_instance_rec.SELLABLE_FLAG := l_curr_instance_rec.SELLABLE_FLAG;
16683           END IF;
16684           IF (p_instance_rec.SYSTEM_ID = FND_API.G_MISS_NUM) THEN
16685               p_instance_rec.SYSTEM_ID := l_curr_instance_rec.SYSTEM_ID;
16686           END IF;
16687           IF (p_instance_rec.INSTANCE_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
16688               p_instance_rec.INSTANCE_TYPE_CODE := l_curr_instance_rec.INSTANCE_TYPE_CODE;
16689           END IF;
16690           IF (p_instance_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
16691               p_instance_rec.ACTIVE_START_DATE := l_curr_instance_rec.ACTIVE_START_DATE;
16692           END IF;
16693           IF (p_instance_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
16694               p_instance_rec.ACTIVE_END_DATE := l_curr_instance_rec.ACTIVE_END_DATE;
16695           END IF;
16696           IF (p_instance_rec.LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
16697               p_instance_rec.LOCATION_TYPE_CODE := l_curr_instance_rec.LOCATION_TYPE_CODE;
16698           END IF;
16699           IF (p_instance_rec.LOCATION_ID = FND_API.G_MISS_NUM) THEN
16700               p_instance_rec.LOCATION_ID := l_curr_instance_rec.LOCATION_ID;
16701           END IF;
16702           IF (p_instance_rec.INV_ORGANIZATION_ID = FND_API.G_MISS_NUM) THEN
16703               p_instance_rec.INV_ORGANIZATION_ID := l_curr_instance_rec.INV_ORGANIZATION_ID;
16704           END IF;
16705           IF (p_instance_rec.INV_SUBINVENTORY_NAME = FND_API.G_MISS_CHAR) THEN
16706               p_instance_rec.INV_SUBINVENTORY_NAME := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
16707           END IF;
16708           IF (p_instance_rec.INV_LOCATOR_ID = FND_API.G_MISS_NUM) THEN
16709               p_instance_rec.INV_LOCATOR_ID := l_curr_instance_rec.INV_LOCATOR_ID;
16710           END IF;
16711           IF (p_instance_rec.PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
16712               p_instance_rec.PA_PROJECT_ID := l_curr_instance_rec.PA_PROJECT_ID;
16713           END IF;
16714           IF (p_instance_rec.PA_PROJECT_TASK_ID = FND_API.G_MISS_NUM) THEN
16715               p_instance_rec.PA_PROJECT_TASK_ID := l_curr_instance_rec.PA_PROJECT_TASK_ID;
16716           END IF;
16717           IF (p_instance_rec.IN_TRANSIT_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
16718               p_instance_rec.IN_TRANSIT_ORDER_LINE_ID := l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
16719           END IF;
16720           IF (p_instance_rec.LAST_OE_AGREEMENT_ID = FND_API.G_MISS_NUM) THEN
16721               p_instance_rec.LAST_OE_AGREEMENT_ID := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
16722           END IF;
16723           IF (p_instance_rec.LAST_OE_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
16724               p_instance_rec.LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID;
16725           END IF;
16726           IF (p_instance_rec.LAST_OE_RMA_LINE_ID = FND_API.G_MISS_NUM) THEN
16727               p_instance_rec.LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
16728           END IF;
16729           IF (p_instance_rec.LAST_WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
16730               p_instance_rec.LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID;
16731           END IF;
16732           IF (p_instance_rec.LAST_PO_PO_LINE_ID = FND_API.G_MISS_NUM) THEN
16733               p_instance_rec.LAST_PO_PO_LINE_ID := l_curr_instance_rec.LAST_PO_PO_LINE_ID;
16734           END IF;
16735           IF (p_instance_rec.LAST_PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
16736               p_instance_rec.LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID;
16737           END IF;
16738           IF (p_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
16739               p_instance_rec.LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID;
16740           END IF;
16741           IF (p_instance_rec.LAST_TXN_LINE_DETAIL_ID = FND_API.G_MISS_NUM) THEN
16742               p_instance_rec.LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID;
16743           END IF;
16744           IF (p_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
16745               p_instance_rec.LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER;
16746           END IF;
16747           IF (p_instance_rec.WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
16748               p_instance_rec.WIP_JOB_ID := l_curr_instance_rec.WIP_JOB_ID;
16749           END IF;
16750           IF (p_instance_rec.PO_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
16751               p_instance_rec.PO_ORDER_LINE_ID := l_curr_instance_rec.PO_ORDER_LINE_ID;
16752           END IF;
16753           IF (p_instance_rec.INSTALL_DATE = FND_API.G_MISS_DATE) THEN
16754               p_instance_rec.INSTALL_DATE := l_curr_instance_rec.INSTALL_DATE;
16755           END IF;
16756           IF (p_instance_rec.MANUALLY_CREATED_FLAG = FND_API.G_MISS_CHAR) THEN
16757               p_instance_rec.MANUALLY_CREATED_FLAG := l_curr_instance_rec.MANUALLY_CREATED_FLAG;
16758           END IF;
16759           IF (p_instance_rec.RETURN_BY_DATE = FND_API.G_MISS_DATE) THEN
16760               p_instance_rec.RETURN_BY_DATE := l_curr_instance_rec.RETURN_BY_DATE;
16761           END IF;
16762           IF (p_instance_rec.ACTUAL_RETURN_DATE = FND_API.G_MISS_DATE) THEN
16763               p_instance_rec.ACTUAL_RETURN_DATE := l_curr_instance_rec.ACTUAL_RETURN_DATE;
16764           END IF;
16765           IF (p_instance_rec.CREATION_COMPLETE_FLAG = FND_API.G_MISS_CHAR) THEN
16766               p_instance_rec.CREATION_COMPLETE_FLAG := l_curr_instance_rec.CREATION_COMPLETE_FLAG;
16767           END IF;
16768           IF (p_instance_rec.COMPLETENESS_FLAG = FND_API.G_MISS_CHAR) THEN
16769               p_instance_rec.COMPLETENESS_FLAG := l_curr_instance_rec.COMPLETENESS_FLAG;
16770           END IF;
16771           IF (p_instance_rec.CONTEXT = FND_API.G_MISS_CHAR) THEN
16772               p_instance_rec.CONTEXT := l_curr_instance_rec.CONTEXT;
16773           END IF;
16774           IF (p_instance_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
16775               p_instance_rec.ATTRIBUTE1 := l_curr_instance_rec.ATTRIBUTE1;
16776           END IF;
16777           IF (p_instance_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
16778               p_instance_rec.ATTRIBUTE2 := l_curr_instance_rec.ATTRIBUTE2;
16779           END IF;
16780           IF (p_instance_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
16781               p_instance_rec.ATTRIBUTE3 := l_curr_instance_rec.ATTRIBUTE3;
16782           END IF;
16783           IF (p_instance_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
16784               p_instance_rec.ATTRIBUTE4 := l_curr_instance_rec.ATTRIBUTE4;
16785           END IF;
16786           IF (p_instance_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
16787               p_instance_rec.ATTRIBUTE5 := l_curr_instance_rec.ATTRIBUTE5;
16788           END IF;
16789           IF (p_instance_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
16790               p_instance_rec.ATTRIBUTE6 := l_curr_instance_rec.ATTRIBUTE6;
16791           END IF;
16792           IF (p_instance_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
16793               p_instance_rec.ATTRIBUTE7 := l_curr_instance_rec.ATTRIBUTE7;
16794           END IF;
16795           IF (p_instance_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
16796               p_instance_rec.ATTRIBUTE8 := l_curr_instance_rec.ATTRIBUTE8;
16797           END IF;
16798           IF (p_instance_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
16799               p_instance_rec.ATTRIBUTE9 := l_curr_instance_rec.ATTRIBUTE9;
16800           END IF;
16801           IF (p_instance_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
16802               p_instance_rec.ATTRIBUTE10 := l_curr_instance_rec.ATTRIBUTE10;
16803           END IF;
16804           IF (p_instance_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
16805               p_instance_rec.ATTRIBUTE11 := l_curr_instance_rec.ATTRIBUTE11;
16806           END IF;
16807           IF (p_instance_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
16808               p_instance_rec.ATTRIBUTE12 := l_curr_instance_rec.ATTRIBUTE12;
16809           END IF;
16810           IF (p_instance_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
16811               p_instance_rec.ATTRIBUTE13 := l_curr_instance_rec.ATTRIBUTE13;
16812           END IF;
16813           IF (p_instance_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
16814               p_instance_rec.ATTRIBUTE14 := l_curr_instance_rec.ATTRIBUTE14;
16815           END IF;
16816           IF (p_instance_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
16817               p_instance_rec.ATTRIBUTE15 := l_curr_instance_rec.ATTRIBUTE15;
16818           END IF;
16819           IF (p_instance_rec.OBJECT_VERSION_NUMBER = FND_API.G_MISS_NUM) THEN
16820               p_instance_rec.OBJECT_VERSION_NUMBER := l_curr_instance_rec.OBJECT_VERSION_NUMBER;
16821           END IF;
16822           IF (p_instance_rec.INSTALL_LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
16823               p_instance_rec.INSTALL_LOCATION_TYPE_CODE := l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE;
16824           END IF;
16825           IF (p_instance_rec.INSTALL_LOCATION_ID = FND_API.G_MISS_NUM) THEN
16826               p_instance_rec.INSTALL_LOCATION_ID := l_curr_instance_rec.INSTALL_LOCATION_ID;
16827           END IF;
16828           IF (p_instance_rec.INSTANCE_USAGE_CODE = FND_API.G_MISS_CHAR) THEN
16829               p_instance_rec.INSTANCE_USAGE_CODE := l_curr_instance_rec.INSTANCE_USAGE_CODE;
16830           END IF;
16831           IF L_LAST_VLD_ORGANIZATION_ID = FND_API.G_MISS_NUM THEN
16832              l_last_vld_organization_id := l_cur_instance_rec.LAST_VLD_ORGANIZATION_ID;
16833           END IF;
16834           IF (p_instance_rec.CONFIG_INST_REV_NUM = FND_API.G_MISS_NUM) THEN
16835               p_instance_rec.CONFIG_INST_REV_NUM := l_curr_instance_rec.CONFIG_INST_REV_NUM;
16836           END IF;
16837           IF (p_instance_rec.CONFIG_VALID_STATUS = FND_API.G_MISS_CHAR) THEN
16838               p_instance_rec.CONFIG_VALID_STATUS := l_curr_instance_rec.CONFIG_VALID_STATUS;
16839           END IF;
16840           IF (p_instance_rec.INSTANCE_DESCRIPTION = FND_API.G_MISS_CHAR) THEN
16841               p_instance_rec.INSTANCE_DESCRIPTION := l_curr_instance_rec.INSTANCE_DESCRIPTION;
16842           END IF;
16843         --start of code for eam integration--
16844           IF (p_instance_rec.NETWORK_ASSET_FLAG = FND_API.G_MISS_CHAR) THEN
16845               p_instance_rec.NETWORK_ASSET_FLAG := l_curr_instance_rec.NETWORK_ASSET_FLAG;
16846           END IF;
16847           IF (p_instance_rec.MAINTAINABLE_FLAG = FND_API.G_MISS_CHAR) THEN
16848               p_instance_rec.MAINTAINABLE_FLAG := l_curr_instance_rec.MAINTAINABLE_FLAG;
16849           END IF;
16850           IF (p_instance_rec.PN_LOCATION_ID = FND_API.G_MISS_NUM) THEN
16851               p_instance_rec.PN_LOCATION_ID := l_curr_instance_rec.PN_LOCATION_ID;
16852           END IF;
16853           IF (p_instance_rec.ASSET_CRITICALITY_CODE = FND_API.G_MISS_CHAR) THEN
16854               p_instance_rec.ASSET_CRITICALITY_CODE := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
16855           END IF;
16856           IF (p_instance_rec.CATEGORY_ID = FND_API.G_MISS_NUM) THEN
16857               p_instance_rec.CATEGORY_ID := l_curr_instance_rec.CATEGORY_ID;
16858           END IF;
16859           IF (p_instance_rec.EQUIPMENT_GEN_OBJECT_ID = FND_API.G_MISS_NUM) THEN
16860               p_instance_rec.EQUIPMENT_GEN_OBJECT_ID := l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
16861           END IF;
16862           IF (p_instance_rec.INSTANTIATION_FLAG = FND_API.G_MISS_CHAR) THEN
16863               p_instance_rec.INSTANTIATION_FLAG := l_curr_instance_rec.INSTANTIATION_FLAG;
16864           END IF;
16865           IF (p_instance_rec.LINEAR_LOCATION_ID = FND_API.G_MISS_NUM) THEN
16866               p_instance_rec.LINEAR_LOCATION_ID := l_curr_instance_rec.LINEAR_LOCATION_ID;
16867           END IF;
16868           IF (p_instance_rec.OPERATIONAL_LOG_FLAG = FND_API.G_MISS_CHAR) THEN
16869               p_instance_rec.OPERATIONAL_LOG_FLAG := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
16870           END IF;
16871 
16872           IF (p_instance_rec.CHECKIN_STATUS = FND_API.G_MISS_NUM) THEN
16873               p_instance_rec.CHECKIN_STATUS := l_curr_instance_rec.CHECKIN_STATUS;
16874           END IF;
16875           IF (p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE = FND_API.G_MISS_DATE) THEN
16876               p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
16877           END IF;
16878 
16879           IF (p_instance_rec.ATTRIBUTE16 = FND_API.G_MISS_CHAR) THEN
16880               p_instance_rec.ATTRIBUTE16 := l_curr_instance_rec.ATTRIBUTE16;
16881           END IF;
16882           IF (p_instance_rec.ATTRIBUTE17 = FND_API.G_MISS_CHAR) THEN
16883               p_instance_rec.ATTRIBUTE17 := l_curr_instance_rec.ATTRIBUTE17;
16884           END IF;
16885           IF (p_instance_rec.ATTRIBUTE18 = FND_API.G_MISS_CHAR) THEN
16886               p_instance_rec.ATTRIBUTE18 := l_curr_instance_rec.ATTRIBUTE18;
16887           END IF;
16888           IF (p_instance_rec.ATTRIBUTE19 = FND_API.G_MISS_CHAR) THEN
16889               p_instance_rec.ATTRIBUTE19 := l_curr_instance_rec.ATTRIBUTE19;
16890           END IF;
16891           IF (p_instance_rec.ATTRIBUTE20 = FND_API.G_MISS_CHAR) THEN
16892               p_instance_rec.ATTRIBUTE20 := l_curr_instance_rec.ATTRIBUTE20;
16893           END IF;
16894           IF (p_instance_rec.ATTRIBUTE21 = FND_API.G_MISS_CHAR) THEN
16895               p_instance_rec.ATTRIBUTE21 := l_curr_instance_rec.ATTRIBUTE21;
16896           END IF;
16897           IF (p_instance_rec.ATTRIBUTE22 = FND_API.G_MISS_CHAR) THEN
16898               p_instance_rec.ATTRIBUTE22 := l_curr_instance_rec.ATTRIBUTE22;
16899           END IF;
16900           IF (p_instance_rec.ATTRIBUTE23 = FND_API.G_MISS_CHAR) THEN
16901               p_instance_rec.ATTRIBUTE23 := l_curr_instance_rec.ATTRIBUTE23;
16902           END IF;
16903           IF (p_instance_rec.ATTRIBUTE24 = FND_API.G_MISS_CHAR) THEN
16904               p_instance_rec.ATTRIBUTE24 := l_curr_instance_rec.ATTRIBUTE24;
16905           END IF;
16906           IF (p_instance_rec.ATTRIBUTE25 = FND_API.G_MISS_CHAR) THEN
16907               p_instance_rec.ATTRIBUTE25 := l_curr_instance_rec.ATTRIBUTE25;
16908           END IF;
16909           IF (p_instance_rec.ATTRIBUTE26 = FND_API.G_MISS_CHAR) THEN
16910               p_instance_rec.ATTRIBUTE26 := l_curr_instance_rec.ATTRIBUTE26;
16911           END IF;
16912           IF (p_instance_rec.ATTRIBUTE27 = FND_API.G_MISS_CHAR) THEN
16913               p_instance_rec.ATTRIBUTE27 := l_curr_instance_rec.ATTRIBUTE27;
16914           END IF;
16915           IF (p_instance_rec.ATTRIBUTE28 = FND_API.G_MISS_CHAR) THEN
16916               p_instance_rec.ATTRIBUTE28 := l_curr_instance_rec.ATTRIBUTE28;
16917           END IF;
16918           IF (p_instance_rec.ATTRIBUTE29 = FND_API.G_MISS_CHAR) THEN
16919               p_instance_rec.ATTRIBUTE29 := l_curr_instance_rec.ATTRIBUTE29;
16920           END IF;
16921           IF (p_instance_rec.ATTRIBUTE30 = FND_API.G_MISS_CHAR) THEN
16922               p_instance_rec.ATTRIBUTE30 := l_curr_instance_rec.ATTRIBUTE30;
16923           END IF;
16924 
16925         --end of code for eam integration--
16926         -- Addition of columns for FA Integration
16927           IF (p_instance_rec.PURCHASE_UNIT_PRICE = FND_API.G_MISS_NUM) THEN
16928               p_instance_rec.PURCHASE_UNIT_PRICE := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
16929           END IF;
16930 
16931           IF (p_instance_rec.PURCHASE_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
16932               p_instance_rec.PURCHASE_CURRENCY_CODE := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
16933           END IF;
16934 
16935           IF (p_instance_rec.PAYABLES_UNIT_PRICE = FND_API.G_MISS_NUM) THEN
16936               p_instance_rec.PAYABLES_UNIT_PRICE := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
16937           END IF;
16938 
16939           IF (p_instance_rec.PAYABLES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
16940               p_instance_rec.PAYABLES_CURRENCY_CODE := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
16941           END IF;
16942 
16943           IF (p_instance_rec.SALES_UNIT_PRICE = FND_API.G_MISS_NUM) THEN
16944               p_instance_rec.SALES_UNIT_PRICE := l_curr_instance_rec.SALES_UNIT_PRICE;
16945           END IF;
16946 
16947           IF (p_instance_rec.SALES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
16948               p_instance_rec.SALES_CURRENCY_CODE := l_curr_instance_rec.SALES_CURRENCY_CODE;
16949           END IF;
16950 
16951           IF (p_instance_rec.OPERATIONAL_STATUS_CODE = FND_API.G_MISS_CHAR) THEN
16952               p_instance_rec.OPERATIONAL_STATUS_CODE := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
16953           END IF;
16954         -- End addition of columns for FA Integration
16955 
16956           CSI_ITEM_INSTANCES_H_PKG.Insert_Row
16957            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
16958             ,p_INSTANCE_ID                       => p_instance_rec.instance_id
16959             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
16960             ,p_OLD_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
16961             ,p_NEW_INSTANCE_NUMBER               => p_instance_rec.INSTANCE_NUMBER
16962             ,p_OLD_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
16963             ,p_NEW_EXTERNAL_REFERENCE            => p_instance_rec.EXTERNAL_REFERENCE
16964             ,p_OLD_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
16965             ,p_NEW_INVENTORY_ITEM_ID             => p_instance_rec.INVENTORY_ITEM_ID
16966             ,p_OLD_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
16967             ,p_NEW_INVENTORY_REVISION            => p_instance_rec.INVENTORY_REVISION
16968             ,p_OLD_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
16969             ,p_NEW_INV_MASTER_ORGZN_ID           => p_instance_rec.INV_MASTER_ORGANIZATION_ID
16970             ,p_OLD_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
16971             ,p_NEW_SERIAL_NUMBER                 => p_instance_rec.SERIAL_NUMBER
16972             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
16973             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
16974             ,p_OLD_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
16975             ,p_NEW_LOT_NUMBER                    => p_instance_rec.LOT_NUMBER
16976             ,p_OLD_QUANTITY                      => l_curr_instance_rec.QUANTITY
16977             ,p_NEW_QUANTITY                      => p_instance_rec.QUANTITY
16978             ,p_OLD_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
16979             ,p_NEW_UNIT_OF_MEASURE               => p_instance_rec.UNIT_OF_MEASURE
16980             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
16981             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
16982             ,p_OLD_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
16983             ,p_NEW_INSTANCE_CONDITION_ID         => p_instance_rec.INSTANCE_CONDITION_ID
16984             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
16985             ,p_NEW_INSTANCE_STATUS_ID            => p_instance_rec.INSTANCE_STATUS_ID
16986             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
16987             ,p_NEW_CUSTOMER_VIEW_FLAG            => p_instance_rec.CUSTOMER_VIEW_FLAG
16988             ,p_OLD_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
16989             ,p_NEW_MERCHANT_VIEW_FLAG            => p_instance_rec.MERCHANT_VIEW_FLAG
16990             ,p_OLD_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
16991             ,p_NEW_SELLABLE_FLAG                 => p_instance_rec.SELLABLE_FLAG
16992             ,p_OLD_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
16993             ,p_NEW_SYSTEM_ID                     => p_instance_rec.SYSTEM_ID
16994             ,p_OLD_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
16995             ,p_NEW_INSTANCE_TYPE_CODE            => p_instance_rec.INSTANCE_TYPE_CODE
16996             ,p_OLD_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
16997             ,p_NEW_ACTIVE_START_DATE             => p_instance_rec.ACTIVE_START_DATE
16998             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
16999             ,p_NEW_ACTIVE_END_DATE               => p_instance_rec.ACTIVE_END_DATE
17000             ,p_OLD_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
17001             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
17002             ,p_OLD_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
17003             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
17004             ,p_OLD_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
17005             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
17006             ,p_OLD_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
17007             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
17008             ,p_OLD_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
17009             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
17010             ,p_OLD_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
17011             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
17012             ,p_OLD_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
17013             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
17014             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
17015             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
17016             ,p_OLD_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
17017             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
17018             ,p_OLD_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
17019             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
17020             ,p_OLD_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
17021             ,p_NEW_COMPLETENESS_FLAG             => p_instance_rec.COMPLETENESS_FLAG
17022             ,p_FULL_DUMP_FLAG                    => 'Y'
17023             ,p_NEW_CONTEXT                       => p_instance_rec.CONTEXT
17024             ,P_OLD_CONTEXT                       => l_curr_instance_rec.CONTEXT
17025             ,p_NEW_ATTRIBUTE1                    => p_instance_rec.ATTRIBUTE1
17026             ,p_OLD_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
17027             ,p_NEW_ATTRIBUTE2                    => p_instance_rec.ATTRIBUTE2
17028             ,p_OLD_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
17029             ,p_NEW_ATTRIBUTE3                    => p_instance_rec.ATTRIBUTE3
17030             ,p_OLD_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
17031             ,p_NEW_ATTRIBUTE4                    => p_instance_rec.ATTRIBUTE4
17032             ,p_OLD_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
17033             ,p_NEW_ATTRIBUTE5                    => p_instance_rec.ATTRIBUTE5
17034             ,p_OLD_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
17035             ,p_NEW_ATTRIBUTE6                    => p_instance_rec.ATTRIBUTE6
17036             ,p_OLD_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
17037             ,p_NEW_ATTRIBUTE7                    => p_instance_rec.ATTRIBUTE7
17038             ,p_OLD_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
17039             ,p_NEW_ATTRIBUTE8                    => p_instance_rec.ATTRIBUTE8
17040             ,p_OLD_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
17041             ,p_NEW_ATTRIBUTE9                    => p_instance_rec.ATTRIBUTE9
17042             ,p_OLD_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
17043             ,p_NEW_ATTRIBUTE10                   => p_instance_rec.ATTRIBUTE10
17044             ,p_OLD_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
17045             ,p_NEW_ATTRIBUTE11                   => p_instance_rec.ATTRIBUTE11
17046             ,p_OLD_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
17047             ,p_NEW_ATTRIBUTE12                   => p_instance_rec.ATTRIBUTE12
17048             ,p_OLD_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
17049             ,p_NEW_ATTRIBUTE13                   => p_instance_rec.ATTRIBUTE13
17050             ,p_OLD_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
17051             ,p_NEW_ATTRIBUTE14                   => p_instance_rec.ATTRIBUTE14
17052             ,p_OLD_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
17053             ,p_NEW_ATTRIBUTE15                   => p_instance_rec.ATTRIBUTE15
17054             ,p_OLD_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
17055             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
17056             ,p_CREATION_DATE                     => SYSDATE
17057             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
17058             ,p_LAST_UPDATE_DATE                  => SYSDATE
17059             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
17060             ,p_OBJECT_VERSION_NUMBER             => 1
17061             ,p_OLD_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
17062             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
17063             ,p_OLD_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
17064             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
17065             ,p_OLD_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
17066             ,p_NEW_INST_USAGE_CODE               => p_instance_rec.INSTANCE_USAGE_CODE
17067             ,p_OLD_last_vld_organization_id      => l_cur_instance_rec.last_vld_organization_id
17068             ,p_NEW_last_vld_organization_id      => l_last_vld_organization_id
17069             ,p_OLD_CONFIG_INST_REV_NUM           => l_curr_instance_rec.CONFIG_INST_REV_NUM
17070             ,p_NEW_CONFIG_INST_REV_NUM           => p_instance_rec.CONFIG_INST_REV_NUM
17071             ,p_OLD_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
17072             ,p_NEW_CONFIG_VALID_STATUS           => p_instance_rec.CONFIG_VALID_STATUS
17073             ,p_OLD_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
17074             ,p_NEW_INSTANCE_DESCRIPTION          => p_instance_rec.INSTANCE_DESCRIPTION
17075             -- Added on jan1503
17076             ,p_OLD_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
17077             ,p_NEW_INSTALL_DATE                  => p_instance_rec.INSTALL_DATE
17078             ,p_OLD_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
17079             ,p_NEW_RETURN_BY_DATE                => p_instance_rec.RETURN_BY_DATE
17080             ,p_OLD_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
17081             ,p_NEW_ACTUAL_RETURN_DATE            => p_instance_rec.ACTUAL_RETURN_DATE
17082             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
17083             ,p_NEW_LAST_OE_AGREEMENT_ID          => p_instance_rec.LAST_OE_AGREEMENT_ID
17084 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
17085 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => p_instance_rec.LAST_OE_ORDER_LINE_ID
17086 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
17087 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => p_instance_rec.LAST_OE_RMA_LINE_ID
17088 	    ,p_OLD_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
17089 	    ,p_NEW_LAST_WIP_JOB_ID               => p_instance_rec.LAST_WIP_JOB_ID
17090 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
17091 	    ,p_NEW_LAST_PO_PO_LINE_ID            => p_instance_rec.LAST_PO_PO_LINE_ID
17092 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
17093 	    ,p_NEW_LAST_PA_PROJECT_ID            => p_instance_rec.LAST_PA_PROJECT_ID
17094 	    ,p_OLD_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
17095 	    ,p_NEW_LAST_PA_TASK_ID          => p_instance_rec.LAST_PA_TASK_ID
17096 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
17097 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
17098 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
17099 	    ,p_NEW_LAST_OE_PO_NUMBER             => p_instance_rec.LAST_OE_PO_NUMBER
17100  	    --start of parameters addition for eam integration--
17101 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
17102 	    ,p_NEW_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
17103 	    ,p_OLD_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
17104 	    ,p_NEW_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
17105 	    ,p_OLD_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
17106 	    ,p_NEW_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
17107 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
17108 	    ,p_NEW_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
17109 	    ,p_OLD_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
17110 	    ,p_NEW_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
17111 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
17112 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
17113 	    ,p_OLD_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
17114 	    ,p_NEW_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
17115 	    ,p_OLD_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
17116 	    ,p_NEW_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
17117 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
17118 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
17119 	    ,p_OLD_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
17120 	    ,p_NEW_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
17121 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
17122 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
17123             ,p_OLD_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
17124             ,p_NEW_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
17125             ,p_OLD_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
17126             ,p_NEW_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
17127             ,p_OLD_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
17128             ,p_NEW_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
17129             ,p_OLD_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
17130             ,p_NEW_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
17131             ,p_OLD_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
17132             ,p_NEW_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
17133             ,p_OLD_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
17134             ,p_NEW_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
17135             ,p_OLD_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
17136             ,p_NEW_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
17137             ,p_OLD_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
17138             ,p_NEW_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
17139             ,p_OLD_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
17140             ,p_NEW_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
17141             ,p_OLD_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
17142             ,p_NEW_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
17143             ,p_OLD_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
17144             ,p_NEW_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
17145             ,p_OLD_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
17146             ,p_NEW_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
17147             ,p_OLD_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
17148             ,p_NEW_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
17149             ,p_OLD_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
17150             ,p_NEW_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
17151             ,p_OLD_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
17152             ,p_NEW_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
17153   	    --end of parameters addition for eam integration--
17154    -- Addition of columns for FA Integration
17155             ,p_OLD_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
17156             ,p_NEW_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
17157             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
17158             ,p_NEW_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
17159             ,p_OLD_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
17160             ,p_NEW_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
17161             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
17162             ,p_NEW_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
17163             ,p_OLD_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
17164             ,p_NEW_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
17165             ,p_OLD_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
17166             ,p_NEW_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
17167             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
17168             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
17169     -- End addition of columns for FA Integration
17170             -- Begin Add Code for Siebel Genesis Project
17171             ,p_OLD_SOURCE_CODE                   => l_curr_instance_rec.SOURCE_CODE
17172             ,p_NEW_SOURCE_CODE                   => p_instance_rec.SOURCE_CODE
17173             -- End Add Code for Siebel Genesis Project
17174             );
17175 
17176          ELSE --  l_mod_value <> 0
17177 
17178           -- If the mod value is not equal to zero then dump only the changed columns
17179           -- while the unchanged values have old and new values as null
17180 
17181            IF (p_instance_rec.instance_number = fnd_api.g_miss_char) OR
17182                NVL(p_instance_rec.instance_number, fnd_api.g_miss_char) = NVL(l_curr_instance_rec.instance_number, fnd_api.g_miss_char) THEN
17183                 l_instance_hist_rec.old_instance_number := NULL;
17184                 l_instance_hist_rec.new_instance_number := NULL;
17185            ELSIF
17186               NVL(l_curr_instance_rec.instance_number,fnd_api.g_miss_char) <> NVL(p_instance_rec.instance_number,fnd_api.g_miss_char) THEN
17187                 l_instance_hist_rec.old_instance_number := l_curr_instance_rec.instance_number ;
17188                 l_instance_hist_rec.new_instance_number := p_instance_rec.instance_number ;
17189            END IF;
17190            --
17191            IF (p_instance_rec.external_reference = fnd_api.g_miss_char) OR
17192                NVL(p_instance_rec.external_reference, fnd_api.g_miss_char) = NVL(l_curr_instance_rec.external_reference, fnd_api.g_miss_char) THEN
17193                 l_instance_hist_rec.old_external_reference := NULL;
17194                 l_instance_hist_rec.new_external_reference := NULL;
17195            ELSIF
17196               NVL(l_curr_instance_rec.external_reference,fnd_api.g_miss_char) <> NVL(p_instance_rec.external_reference,fnd_api.g_miss_char) THEN
17197                 l_instance_hist_rec.old_external_reference := l_curr_instance_rec.external_reference ;
17198                 l_instance_hist_rec.new_external_reference := p_instance_rec.external_reference ;
17199            END IF;
17200            --
17201            IF (p_instance_rec.inventory_item_id = fnd_api.g_miss_num) OR
17202               NVL(l_curr_instance_rec.inventory_item_id,fnd_api.g_miss_num) = NVL(p_instance_rec.inventory_item_id,fnd_api.g_miss_num) THEN
17203                 l_instance_hist_rec.old_inventory_item_id := NULL;
17204                 l_instance_hist_rec.new_inventory_item_id := NULL;
17205            ELSIF
17206               NVL(l_curr_instance_rec.inventory_item_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.inventory_item_id,fnd_api.g_miss_num) THEN
17207                 l_instance_hist_rec.old_inventory_item_id := l_curr_instance_rec.inventory_item_id ;
17208                 l_instance_hist_rec.new_inventory_item_id := p_instance_rec.inventory_item_id ;
17209            END IF;
17210            --
17211            IF (p_instance_rec.inventory_revision = fnd_api.g_miss_char) OR
17212               NVL(l_curr_instance_rec.inventory_revision,fnd_api.g_miss_char) = NVL(p_instance_rec.inventory_revision,fnd_api.g_miss_char) THEN
17213                 l_instance_hist_rec.old_inventory_revision := NULL;
17214                 l_instance_hist_rec.new_inventory_revision := NULL;
17215            ELSIF
17216               NVL(l_curr_instance_rec.inventory_revision,fnd_api.g_miss_char) <> NVL(p_instance_rec.inventory_revision,fnd_api.g_miss_char) THEN
17217                 l_instance_hist_rec.old_inventory_revision := l_curr_instance_rec.inventory_revision ;
17218                 l_instance_hist_rec.new_inventory_revision := p_instance_rec.inventory_revision ;
17219            END IF;
17220            --
17221            IF (p_instance_rec.inv_master_organization_id = fnd_api.g_miss_num) OR
17222               NVL(l_curr_instance_rec.inv_master_organization_id,fnd_api.g_miss_num) = NVL(p_instance_rec.inv_master_organization_id,fnd_api.g_miss_num) THEN
17223                 l_instance_hist_rec.old_inv_master_org_id := NULL;
17224                 l_instance_hist_rec.new_inv_master_org_id := NULL;
17225            ELSIF
17226               NVL(l_curr_instance_rec.inv_master_organization_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.inv_master_organization_id,fnd_api.g_miss_num) THEN
17227                 l_instance_hist_rec.old_inv_master_org_id := l_curr_instance_rec.inv_master_organization_id ;
17228                 l_instance_hist_rec.new_inv_master_org_id := p_instance_rec.inv_master_organization_id ;
17229            END IF;
17230            --
17231            IF (p_instance_rec.serial_number = fnd_api.g_miss_char) OR
17232               NVL(l_curr_instance_rec.serial_number,fnd_api.g_miss_char) = NVL(p_instance_rec.serial_number,fnd_api.g_miss_char) THEN
17233                 l_instance_hist_rec.old_serial_number := NULL;
17234                 l_instance_hist_rec.new_serial_number := NULL;
17235            ELSIF
17236               NVL(l_curr_instance_rec.serial_number,fnd_api.g_miss_char) <> NVL(p_instance_rec.serial_number,fnd_api.g_miss_char) THEN
17237                 l_instance_hist_rec.old_serial_number := l_curr_instance_rec.serial_number ;
17238                 l_instance_hist_rec.new_serial_number := p_instance_rec.serial_number ;
17239            END IF;
17240            --
17241            IF (p_instance_rec.mfg_serial_number_flag = fnd_api.g_miss_char) OR
17242               NVL(l_curr_instance_rec.mfg_serial_number_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.mfg_serial_number_flag,fnd_api.g_miss_char) THEN
17243                 l_instance_hist_rec.old_mfg_serial_number_flag := NULL;
17244                 l_instance_hist_rec.new_mfg_serial_number_flag := NULL;
17245            ELSIF
17246               NVL(l_curr_instance_rec.mfg_serial_number_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.mfg_serial_number_flag,fnd_api.g_miss_char) THEN
17247                 l_instance_hist_rec.old_mfg_serial_number_flag := l_curr_instance_rec.mfg_serial_number_flag ;
17248                 l_instance_hist_rec.new_mfg_serial_number_flag := p_instance_rec.mfg_serial_number_flag ;
17249            END IF;
17250            --
17251            IF (p_instance_rec.lot_number = fnd_api.g_miss_char) OR
17252               NVL(l_curr_instance_rec.lot_number,fnd_api.g_miss_char) = NVL(p_instance_rec.lot_number,fnd_api.g_miss_char) THEN
17253                 l_instance_hist_rec.old_lot_number := NULL;
17254                 l_instance_hist_rec.new_lot_number := NULL;
17255            ELSIF
17256               NVL(l_curr_instance_rec.lot_number,fnd_api.g_miss_char) <> NVL(p_instance_rec.lot_number,fnd_api.g_miss_char) THEN
17257                 l_instance_hist_rec.old_lot_number := l_curr_instance_rec.lot_number ;
17258                 l_instance_hist_rec.new_lot_number := p_instance_rec.lot_number ;
17259            END IF;
17260            --
17261            IF (p_instance_rec.quantity = fnd_api.g_miss_num) OR
17262               NVL(l_curr_instance_rec.quantity,fnd_api.g_miss_num) = NVL(p_instance_rec.quantity,fnd_api.g_miss_num) THEN
17263                 l_instance_hist_rec.old_quantity := NULL;
17264                 l_instance_hist_rec.new_quantity := NULL;
17265            ELSIF
17266               NVL(l_curr_instance_rec.quantity,fnd_api.g_miss_num) <> NVL(p_instance_rec.quantity,fnd_api.g_miss_num) THEN
17267                 l_instance_hist_rec.old_quantity := l_curr_instance_rec.quantity ;
17268                 l_instance_hist_rec.new_quantity := p_instance_rec.quantity ;
17269            END IF;
17270            --
17271            IF (p_instance_rec.unit_of_measure = fnd_api.g_miss_char) OR
17272               NVL(l_curr_instance_rec.unit_of_measure,fnd_api.g_miss_char) = NVL(p_instance_rec.unit_of_measure,fnd_api.g_miss_char) THEN
17273                 l_instance_hist_rec.old_unit_of_measure := NULL;
17274                 l_instance_hist_rec.new_unit_of_measure := NULL;
17275            ELSIF
17276               NVL(l_curr_instance_rec.unit_of_measure,fnd_api.g_miss_char) <> NVL(p_instance_rec.unit_of_measure,fnd_api.g_miss_char) THEN
17277                 l_instance_hist_rec.old_unit_of_measure := l_curr_instance_rec.unit_of_measure ;
17278                 l_instance_hist_rec.new_unit_of_measure := p_instance_rec.unit_of_measure ;
17279            END IF;
17280            --
17281            IF (p_instance_rec.accounting_class_code = fnd_api.g_miss_char) OR
17282               NVL(l_curr_instance_rec.accounting_class_code,fnd_api.g_miss_char) = NVL(p_instance_rec.accounting_class_code,fnd_api.g_miss_char) THEN
17283                 l_instance_hist_rec.old_accounting_class_code := NULL;
17284                 l_instance_hist_rec.new_accounting_class_code := NULL;
17285            ELSIF
17286               NVL(l_curr_instance_rec.accounting_class_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.accounting_class_code,fnd_api.g_miss_char) THEN
17287                 l_instance_hist_rec.old_accounting_class_code := l_curr_instance_rec.accounting_class_code ;
17288                 l_instance_hist_rec.new_accounting_class_code := p_instance_rec.accounting_class_code ;
17289            END IF;
17290            --
17291            IF (p_instance_rec.instance_condition_id = fnd_api.g_miss_num) OR
17292               NVL(l_curr_instance_rec.instance_condition_id,fnd_api.g_miss_num) = NVL(p_instance_rec.instance_condition_id,fnd_api.g_miss_num) THEN
17293                 l_instance_hist_rec.old_instance_condition_id := NULL;
17294                 l_instance_hist_rec.new_instance_condition_id := NULL;
17295            ELSIF
17296               NVL(l_curr_instance_rec.instance_condition_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.instance_condition_id,fnd_api.g_miss_num) THEN
17297                 l_instance_hist_rec.old_instance_condition_id := l_curr_instance_rec.instance_condition_id ;
17298                 l_instance_hist_rec.new_instance_condition_id := p_instance_rec.instance_condition_id ;
17299            END IF;
17300            --
17301            IF (p_instance_rec.instance_status_id = fnd_api.g_miss_num) OR
17302               NVL(l_curr_instance_rec.instance_status_id,fnd_api.g_miss_num) = NVL(p_instance_rec.instance_status_id,fnd_api.g_miss_num) THEN
17303                 l_instance_hist_rec.old_instance_status_id := NULL;
17304                 l_instance_hist_rec.new_instance_status_id := NULL;
17305            ELSIF
17306               NVL(l_curr_instance_rec.instance_status_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.instance_status_id,fnd_api.g_miss_num) THEN
17307                 l_instance_hist_rec.old_instance_status_id := l_curr_instance_rec.instance_status_id ;
17308                 l_instance_hist_rec.new_instance_status_id := p_instance_rec.instance_status_id ;
17309            END IF;
17310            --
17311            IF (p_instance_rec.customer_view_flag = fnd_api.g_miss_char) OR
17312               NVL(l_curr_instance_rec.customer_view_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.customer_view_flag,fnd_api.g_miss_char) THEN
17313                 l_instance_hist_rec.old_customer_view_flag := NULL;
17314                 l_instance_hist_rec.new_customer_view_flag := NULL;
17315            ELSIF
17316               NVL(l_curr_instance_rec.customer_view_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.customer_view_flag,fnd_api.g_miss_char) THEN
17317                 l_instance_hist_rec.old_customer_view_flag := l_curr_instance_rec.customer_view_flag ;
17318                 l_instance_hist_rec.new_customer_view_flag := p_instance_rec.customer_view_flag ;
17319            END IF;
17320            --
17321            IF (p_instance_rec.merchant_view_flag = fnd_api.g_miss_char) OR
17322               NVL(l_curr_instance_rec.merchant_view_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.merchant_view_flag,fnd_api.g_miss_char) THEN
17323                 l_instance_hist_rec.old_merchant_view_flag := NULL;
17324                 l_instance_hist_rec.new_merchant_view_flag := NULL;
17325            ELSIF
17326               NVL(l_curr_instance_rec.merchant_view_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.merchant_view_flag,fnd_api.g_miss_char) THEN
17327                 l_instance_hist_rec.old_merchant_view_flag := l_curr_instance_rec.merchant_view_flag ;
17328                 l_instance_hist_rec.new_merchant_view_flag := p_instance_rec.merchant_view_flag ;
17329            END IF;
17330            --
17331            IF (p_instance_rec.sellable_flag = fnd_api.g_miss_char) OR
17332               NVL(l_curr_instance_rec.sellable_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.sellable_flag,fnd_api.g_miss_char) THEN
17333                 l_instance_hist_rec.old_sellable_flag := NULL;
17334                 l_instance_hist_rec.new_sellable_flag := NULL;
17335            ELSIF
17336               NVL(l_curr_instance_rec.sellable_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.sellable_flag,fnd_api.g_miss_char) THEN
17337                 l_instance_hist_rec.old_sellable_flag := l_curr_instance_rec.sellable_flag ;
17338                 l_instance_hist_rec.new_sellable_flag := p_instance_rec.sellable_flag ;
17339            END IF;
17340            --
17341            IF (p_instance_rec.system_id = fnd_api.g_miss_num) OR
17342               NVL(l_curr_instance_rec.system_id,fnd_api.g_miss_num) = NVL(p_instance_rec.system_id,fnd_api.g_miss_num) THEN
17343                 l_instance_hist_rec.old_system_id := NULL;
17344                 l_instance_hist_rec.new_system_id := NULL;
17345            ELSIF
17346               NVL(l_curr_instance_rec.system_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.system_id,fnd_api.g_miss_num) THEN
17347                 l_instance_hist_rec.old_system_id := l_curr_instance_rec.system_id ;
17348                 l_instance_hist_rec.new_system_id := p_instance_rec.system_id ;
17349            END IF;
17350            --
17351            IF (p_instance_rec.instance_type_code = fnd_api.g_miss_char) OR
17352               NVL(l_curr_instance_rec.instance_type_code,fnd_api.g_miss_char) = NVL(p_instance_rec.instance_type_code,fnd_api.g_miss_char) THEN
17353                 l_instance_hist_rec.old_instance_type_code := NULL;
17354                 l_instance_hist_rec.new_instance_type_code := NULL;
17355            ELSIF
17356               NVL(l_curr_instance_rec.instance_type_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.instance_type_code,fnd_api.g_miss_char) THEN
17357                 l_instance_hist_rec.old_instance_type_code := l_curr_instance_rec.instance_type_code ;
17358                 l_instance_hist_rec.new_instance_type_code := p_instance_rec.instance_type_code ;
17359            END IF;
17360            --
17361            IF (p_instance_rec.active_start_date = fnd_api.g_miss_date) OR
17362               NVL(l_curr_instance_rec.active_start_date,fnd_api.g_miss_date) = NVL(p_instance_rec.active_start_date,fnd_api.g_miss_date) THEN
17363                 l_instance_hist_rec.old_active_start_date := NULL;
17364                 l_instance_hist_rec.new_active_start_date := NULL;
17365            ELSIF
17366               NVL(l_curr_instance_rec.active_start_date,fnd_api.g_miss_date) <> NVL(p_instance_rec.active_start_date,fnd_api.g_miss_date) THEN
17367                 l_instance_hist_rec.old_active_start_date := l_curr_instance_rec.active_start_date ;
17368                 l_instance_hist_rec.new_active_start_date := p_instance_rec.active_start_date ;
17369            END IF;
17370            --
17371            IF (p_instance_rec.active_end_date = fnd_api.g_miss_date) OR
17372               NVL(l_curr_instance_rec.active_end_date,fnd_api.g_miss_date) = NVL(p_instance_rec.active_end_date,fnd_api.g_miss_date) THEN
17373                 l_instance_hist_rec.old_active_end_date := NULL;
17374                 l_instance_hist_rec.new_active_end_date := NULL;
17375            ELSIF
17376               NVL(l_curr_instance_rec.active_end_date,fnd_api.g_miss_date) <> NVL(p_instance_rec.active_end_date,fnd_api.g_miss_date) THEN
17377                 l_instance_hist_rec.old_active_end_date := l_curr_instance_rec.active_end_date ;
17378                 l_instance_hist_rec.new_active_end_date := p_instance_rec.active_end_date ;
17379            END IF;
17380            --
17381            IF (p_instance_rec.location_type_code = fnd_api.g_miss_char) OR
17382               NVL(l_curr_instance_rec.location_type_code,fnd_api.g_miss_char) = NVL(p_instance_rec.location_type_code,fnd_api.g_miss_char) THEN
17383                 l_instance_hist_rec.old_location_type_code := NULL;
17384                 l_instance_hist_rec.new_location_type_code := NULL;
17385            ELSIF
17386               NVL(l_curr_instance_rec.location_type_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.location_type_code,fnd_api.g_miss_char) THEN
17387                 l_instance_hist_rec.old_location_type_code := l_curr_instance_rec.location_type_code ;
17388                 l_instance_hist_rec.new_location_type_code := p_instance_rec.location_type_code ;
17389            END IF;
17390            --
17391            IF (p_instance_rec.location_id = fnd_api.g_miss_num) OR
17392               NVL(l_curr_instance_rec.location_id,fnd_api.g_miss_num) = NVL(p_instance_rec.location_id,fnd_api.g_miss_num) THEN
17393                 l_instance_hist_rec.old_location_id := NULL;
17394                 l_instance_hist_rec.new_location_id := NULL;
17395            ELSIF
17396               NVL(l_curr_instance_rec.location_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.location_id,fnd_api.g_miss_num) THEN
17397                 l_instance_hist_rec.old_location_id := l_curr_instance_rec.location_id ;
17398                 l_instance_hist_rec.new_location_id := p_instance_rec.location_id ;
17399            END IF;
17400            --
17401            IF (p_instance_rec.inv_organization_id = fnd_api.g_miss_num) OR
17402               NVL(l_curr_instance_rec.inv_organization_id,fnd_api.g_miss_num) = NVL(p_instance_rec.inv_organization_id,fnd_api.g_miss_num) THEN
17403                 l_instance_hist_rec.old_inv_organization_id := NULL;
17404                 l_instance_hist_rec.new_inv_organization_id := NULL;
17405            ELSIF
17406               NVL(l_curr_instance_rec.inv_organization_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.inv_organization_id,fnd_api.g_miss_num) THEN
17407                 l_instance_hist_rec.old_inv_organization_id := l_curr_instance_rec.inv_organization_id ;
17408                 l_instance_hist_rec.new_inv_organization_id := p_instance_rec.inv_organization_id ;
17409            END IF;
17410            --
17411            IF (p_instance_rec.inv_subinventory_name = fnd_api.g_miss_char) OR
17412               NVL(l_curr_instance_rec.inv_subinventory_name,fnd_api.g_miss_char) = NVL(p_instance_rec.inv_subinventory_name,fnd_api.g_miss_char) THEN
17413                 l_instance_hist_rec.old_inv_subinventory_name := NULL;
17414                 l_instance_hist_rec.new_inv_subinventory_name := NULL;
17415            ELSIF
17416               NVL(l_curr_instance_rec.inv_subinventory_name,fnd_api.g_miss_char) <> NVL(p_instance_rec.inv_subinventory_name,fnd_api.g_miss_char) THEN
17417                 l_instance_hist_rec.old_inv_subinventory_name := l_curr_instance_rec.inv_subinventory_name ;
17418                 l_instance_hist_rec.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name ;
17419            END IF;
17420            --
17421            IF (p_instance_rec.inv_locator_id = fnd_api.g_miss_num) OR
17422               NVL(l_curr_instance_rec.inv_locator_id,fnd_api.g_miss_num) = NVL(p_instance_rec.inv_locator_id,fnd_api.g_miss_num) THEN
17423                 l_instance_hist_rec.old_inv_locator_id := NULL;
17424                 l_instance_hist_rec.new_inv_locator_id := NULL;
17425            ELSIF
17426               NVL(l_curr_instance_rec.inv_locator_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.inv_locator_id,fnd_api.g_miss_num) THEN
17427                 l_instance_hist_rec.old_inv_locator_id := l_curr_instance_rec.inv_locator_id ;
17428                 l_instance_hist_rec.new_inv_locator_id := p_instance_rec.inv_locator_id ;
17429            END IF;
17430            --
17431            IF (p_instance_rec.pa_project_id = fnd_api.g_miss_num) OR
17432               NVL(l_curr_instance_rec.pa_project_id,fnd_api.g_miss_num) = NVL(p_instance_rec.pa_project_id,fnd_api.g_miss_num) THEN
17433                 l_instance_hist_rec.old_pa_project_id := NULL;
17434                 l_instance_hist_rec.new_pa_project_id := NULL;
17435            ELSIF
17436               NVL(l_curr_instance_rec.pa_project_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.pa_project_id,fnd_api.g_miss_num) THEN
17437                 l_instance_hist_rec.old_pa_project_id := l_curr_instance_rec.pa_project_id ;
17438                 l_instance_hist_rec.new_pa_project_id := p_instance_rec.pa_project_id ;
17439            END IF;
17440            --
17441            IF (p_instance_rec.pa_project_task_id = fnd_api.g_miss_num) OR
17442               NVL(l_curr_instance_rec.pa_project_task_id,fnd_api.g_miss_num) = NVL(p_instance_rec.pa_project_task_id,fnd_api.g_miss_num) THEN
17443                 l_instance_hist_rec.old_pa_project_task_id := NULL;
17444                 l_instance_hist_rec.new_pa_project_task_id := NULL;
17445            ELSIF
17446               NVL(l_curr_instance_rec.pa_project_task_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.pa_project_task_id,fnd_api.g_miss_num) THEN
17447                 l_instance_hist_rec.old_pa_project_task_id := l_curr_instance_rec.pa_project_task_id ;
17448                 l_instance_hist_rec.new_pa_project_task_id := p_instance_rec.pa_project_task_id ;
17449            END IF;
17450            --
17451            IF (p_instance_rec.in_transit_order_line_id = fnd_api.g_miss_num) OR
17452               NVL(l_curr_instance_rec.in_transit_order_line_id,fnd_api.g_miss_num) = NVL(p_instance_rec.in_transit_order_line_id,fnd_api.g_miss_num) THEN
17453                 l_instance_hist_rec.old_in_transit_order_line_id := NULL;
17454                 l_instance_hist_rec.new_in_transit_order_line_id := NULL;
17455            ELSIF
17456               NVL(l_curr_instance_rec.in_transit_order_line_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.in_transit_order_line_id,fnd_api.g_miss_num) THEN
17457                 l_instance_hist_rec.old_in_transit_order_line_id := l_curr_instance_rec.in_transit_order_line_id ;
17458                 l_instance_hist_rec.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id ;
17459            END IF;
17460            --
17461            IF (p_instance_rec.last_oe_agreement_id = fnd_api.g_miss_num) OR
17462               NVL(l_curr_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) = NVL(p_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) THEN
17463                 l_instance_hist_rec.old_last_oe_agreement_id := NULL;
17464                 l_instance_hist_rec.new_last_oe_agreement_id := NULL;
17465            ELSIF
17466               NVL(l_curr_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) THEN
17467                 l_instance_hist_rec.old_last_oe_agreement_id := l_curr_instance_rec.last_oe_agreement_id ;
17468                 l_instance_hist_rec.new_last_oe_agreement_id := p_instance_rec.last_oe_agreement_id ;
17469            END IF;
17470            --
17471            IF (p_instance_rec.LAST_OE_ORDER_LINE_ID = fnd_api.g_miss_num) OR
17472               NVL(l_curr_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) THEN
17473                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := NULL;
17474                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := NULL;
17475            ELSIF
17476               NVL(l_curr_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) THEN
17477                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID ;
17478                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID ;
17479            END IF;
17480            --
17481            IF (p_instance_rec.LAST_OE_RMA_LINE_ID = fnd_api.g_miss_num) OR
17482               NVL(l_curr_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) THEN
17483                 l_instance_hist_rec.old_LAST_OE_RMA_LINE_ID := NULL;
17484                 l_instance_hist_rec.new_LAST_OE_RMA_LINE_ID := NULL;
17485            ELSIF
17486               NVL(l_curr_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) THEN
17487                 l_instance_hist_rec.old_LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID ;
17488                 l_instance_hist_rec.new_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID ;
17489            END IF;
17490            --
17491            IF (p_instance_rec.LAST_WIP_JOB_ID = fnd_api.g_miss_num) OR
17492               NVL(l_curr_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) THEN
17493                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := NULL;
17494                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := NULL;
17495            ELSIF
17496               NVL(l_curr_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) THEN
17497                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID ;
17498                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID ;
17499            END IF;
17500            --
17501            IF (p_instance_rec.LAST_PO_PO_LINE_ID = fnd_api.g_miss_num) OR
17502               NVL(l_curr_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) THEN
17503                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := NULL;
17504                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := NULL;
17505            ELSIF
17506               NVL(l_curr_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) THEN
17507                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := l_curr_instance_rec.LAST_PO_PO_LINE_ID ;
17508                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID ;
17509            END IF;
17510            --
17511            IF (p_instance_rec.LAST_PA_PROJECT_ID = fnd_api.g_miss_num) OR
17512               NVL(l_curr_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) THEN
17513                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := NULL;
17514                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := NULL;
17515            ELSIF
17516               NVL(l_curr_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) THEN
17517                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID ;
17518                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID ;
17519            END IF;
17520            --
17521            IF (p_instance_rec.LAST_PA_TASK_ID = fnd_api.g_miss_num) OR
17522               NVL(l_curr_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) THEN
17523                 l_instance_hist_rec.old_LAST_PA_TASK_ID := NULL;
17524                 l_instance_hist_rec.new_LAST_PA_TASK_ID := NULL;
17525            ELSIF
17526               NVL(l_curr_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) THEN
17527                 l_instance_hist_rec.old_LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID ;
17528                 l_instance_hist_rec.new_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID ;
17529            END IF;
17530            --
17531            IF (p_instance_rec.LAST_TXN_LINE_DETAIL_ID = fnd_api.g_miss_num) OR
17532               NVL(l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) THEN
17533                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := NULL;
17534                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := NULL;
17535            ELSIF
17536               NVL(l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) THEN
17537                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
17538                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
17539            END IF;
17540            --
17541            IF (p_instance_rec.LAST_OE_PO_NUMBER = fnd_api.g_miss_char) OR
17542               NVL(l_curr_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) = NVL(p_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) THEN
17543                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := NULL;
17544                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := NULL;
17545            ELSIF
17546               NVL(l_curr_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) <> NVL(p_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) THEN
17547                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER ;
17548                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER ;
17549            END IF;
17550            --
17551            IF (p_instance_rec.wip_job_id = fnd_api.g_miss_num) OR
17552               NVL(l_curr_instance_rec.wip_job_id,fnd_api.g_miss_num) = NVL(p_instance_rec.wip_job_id,fnd_api.g_miss_num) THEN
17553                 l_instance_hist_rec.old_wip_job_id := NULL;
17554                 l_instance_hist_rec.new_wip_job_id := NULL;
17555            ELSIF
17556               NVL(l_curr_instance_rec.wip_job_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.wip_job_id,fnd_api.g_miss_num) THEN
17557                 l_instance_hist_rec.old_wip_job_id := l_curr_instance_rec.wip_job_id ;
17558                 l_instance_hist_rec.new_wip_job_id := p_instance_rec.wip_job_id ;
17559            END IF;
17560            --
17561            IF (p_instance_rec.po_order_line_id = fnd_api.g_miss_num) OR
17562               NVL(l_curr_instance_rec.po_order_line_id,fnd_api.g_miss_num) = NVL(p_instance_rec.po_order_line_id,fnd_api.g_miss_num) THEN
17563                 l_instance_hist_rec.old_po_order_line_id := NULL;
17564                 l_instance_hist_rec.new_po_order_line_id := NULL;
17565            ELSIF
17566               NVL(l_curr_instance_rec.po_order_line_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.po_order_line_id,fnd_api.g_miss_num) THEN
17567                 l_instance_hist_rec.old_po_order_line_id := l_curr_instance_rec.po_order_line_id ;
17568                 l_instance_hist_rec.new_po_order_line_id := p_instance_rec.po_order_line_id ;
17569            END IF;
17570            --
17571            IF (p_instance_rec.completeness_flag = fnd_api.g_miss_char) OR
17572               NVL(l_curr_instance_rec.completeness_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.completeness_flag,fnd_api.g_miss_char) THEN
17573                 l_instance_hist_rec.old_completeness_flag := NULL;
17574                 l_instance_hist_rec.new_completeness_flag := NULL;
17575            ELSIF
17576               NVL(l_curr_instance_rec.completeness_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.completeness_flag,fnd_api.g_miss_char) THEN
17577                 l_instance_hist_rec.old_completeness_flag := l_curr_instance_rec.completeness_flag ;
17578                 l_instance_hist_rec.new_completeness_flag := p_instance_rec.completeness_flag ;
17579            END IF;
17580            --
17581            IF (p_instance_rec.context = fnd_api.g_miss_char) OR
17582               NVL(l_curr_instance_rec.context,fnd_api.g_miss_char) = NVL(p_instance_rec.context,fnd_api.g_miss_char) THEN
17583                 l_instance_hist_rec.old_context := NULL;
17584                 l_instance_hist_rec.new_context := NULL;
17585            ELSIF
17586               NVL(l_curr_instance_rec.context,fnd_api.g_miss_char) <> NVL(p_instance_rec.context,fnd_api.g_miss_char) THEN
17587                 l_instance_hist_rec.old_context := l_curr_instance_rec.context ;
17588                 l_instance_hist_rec.new_context := p_instance_rec.context ;
17589            END IF;
17590            --
17591            IF (p_instance_rec.attribute1 = fnd_api.g_miss_char) OR
17592               NVL(l_curr_instance_rec.attribute1,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute1,fnd_api.g_miss_char) THEN
17593                 l_instance_hist_rec.old_attribute1 := NULL;
17594                 l_instance_hist_rec.new_attribute1 := NULL;
17595            ELSIF
17596               NVL(l_curr_instance_rec.attribute1,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute1,fnd_api.g_miss_char) THEN
17597                 l_instance_hist_rec.old_attribute1 := l_curr_instance_rec.attribute1 ;
17598                 l_instance_hist_rec.new_attribute1 := p_instance_rec.attribute1 ;
17599            END IF;
17600            --
17601            IF (p_instance_rec.attribute2 = fnd_api.g_miss_char) OR
17602               NVL(l_curr_instance_rec.attribute2,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute2,fnd_api.g_miss_char) THEN
17603                 l_instance_hist_rec.old_attribute2 := NULL;
17604                 l_instance_hist_rec.new_attribute2 := NULL;
17605            ELSIF
17606               NVL(l_curr_instance_rec.attribute2,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute2,fnd_api.g_miss_char) THEN
17607                 l_instance_hist_rec.old_attribute2 := l_curr_instance_rec.attribute2 ;
17608                 l_instance_hist_rec.new_attribute2 := p_instance_rec.attribute2 ;
17609            END IF;
17610            --
17611            IF (p_instance_rec.attribute3 = fnd_api.g_miss_char) OR
17612               NVL(l_curr_instance_rec.attribute3,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute3,fnd_api.g_miss_char) THEN
17613                 l_instance_hist_rec.old_attribute3 := NULL;
17614                 l_instance_hist_rec.new_attribute3 := NULL;
17615            ELSIF
17616               NVL(l_curr_instance_rec.attribute3,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute3,fnd_api.g_miss_char) THEN
17617                 l_instance_hist_rec.old_attribute3 := l_curr_instance_rec.attribute3 ;
17618                 l_instance_hist_rec.new_attribute3 := p_instance_rec.attribute3 ;
17619            END IF;
17620            --
17621            IF (p_instance_rec.attribute4 = fnd_api.g_miss_char) OR
17622               NVL(l_curr_instance_rec.attribute4,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute4,fnd_api.g_miss_char) THEN
17623                 l_instance_hist_rec.old_attribute4 := NULL;
17624                 l_instance_hist_rec.new_attribute4 := NULL;
17625            ELSIF
17626               NVL(l_curr_instance_rec.attribute4,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute4,fnd_api.g_miss_char) THEN
17627                 l_instance_hist_rec.old_attribute4 := l_curr_instance_rec.attribute4 ;
17628                 l_instance_hist_rec.new_attribute4 := p_instance_rec.attribute4 ;
17629            END IF;
17630            --
17631            IF (p_instance_rec.attribute5 = fnd_api.g_miss_char) OR
17632               NVL(l_curr_instance_rec.attribute5,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute5,fnd_api.g_miss_char) THEN
17633                 l_instance_hist_rec.old_attribute5 := NULL;
17634                 l_instance_hist_rec.new_attribute5 := NULL;
17635            ELSIF
17636               NVL(l_curr_instance_rec.attribute5,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute5,fnd_api.g_miss_char) THEN
17637                 l_instance_hist_rec.old_attribute5 := l_curr_instance_rec.attribute5 ;
17638                 l_instance_hist_rec.new_attribute5 := p_instance_rec.attribute5 ;
17639            END IF;
17640            --
17641            IF (p_instance_rec.attribute6 = fnd_api.g_miss_char) OR
17642               NVL(l_curr_instance_rec.attribute6,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute6,fnd_api.g_miss_char) THEN
17643                 l_instance_hist_rec.old_attribute6 := NULL;
17644                 l_instance_hist_rec.new_attribute6 := NULL;
17645            ELSIF
17646               NVL(l_curr_instance_rec.attribute6,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute6,fnd_api.g_miss_char) THEN
17647                 l_instance_hist_rec.old_attribute6 := l_curr_instance_rec.attribute6 ;
17648                 l_instance_hist_rec.new_attribute6 := p_instance_rec.attribute6 ;
17649            END IF;
17650            --
17651            IF (p_instance_rec.attribute7 = fnd_api.g_miss_char) OR
17652               NVL(l_curr_instance_rec.attribute7,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute7,fnd_api.g_miss_char) THEN
17653                 l_instance_hist_rec.old_attribute7 := NULL;
17654                 l_instance_hist_rec.new_attribute7 := NULL;
17655            ELSIF
17656               NVL(l_curr_instance_rec.attribute7,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute7,fnd_api.g_miss_char) THEN
17657                 l_instance_hist_rec.old_attribute7 := l_curr_instance_rec.attribute7 ;
17658                 l_instance_hist_rec.new_attribute7 := p_instance_rec.attribute7 ;
17659            END IF;
17660            --
17661            IF (p_instance_rec.attribute8 = fnd_api.g_miss_char) OR
17662               NVL(l_curr_instance_rec.attribute8,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute8,fnd_api.g_miss_char) THEN
17663                 l_instance_hist_rec.old_attribute8 := NULL;
17664                 l_instance_hist_rec.new_attribute8 := NULL;
17665            ELSIF
17666               NVL(l_curr_instance_rec.attribute8,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute8,fnd_api.g_miss_char) THEN
17667                 l_instance_hist_rec.old_attribute8 := l_curr_instance_rec.attribute8 ;
17668                 l_instance_hist_rec.new_attribute8 := p_instance_rec.attribute8 ;
17669            END IF;
17670            --
17671            IF (p_instance_rec.attribute9 = fnd_api.g_miss_char) OR
17672               NVL(l_curr_instance_rec.attribute9,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute9,fnd_api.g_miss_char) THEN
17673                 l_instance_hist_rec.old_attribute9 := NULL;
17674                 l_instance_hist_rec.new_attribute9 := NULL;
17675            ELSIF
17676               NVL(l_curr_instance_rec.attribute9,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute9,fnd_api.g_miss_char) THEN
17677                 l_instance_hist_rec.old_attribute9 := l_curr_instance_rec.attribute9 ;
17678                 l_instance_hist_rec.new_attribute9 := p_instance_rec.attribute9 ;
17679            END IF;
17680            --
17681            IF (p_instance_rec.attribute10 = fnd_api.g_miss_char) OR
17682               NVL(l_curr_instance_rec.attribute10,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute10,fnd_api.g_miss_char) THEN
17683                 l_instance_hist_rec.old_attribute10 := NULL;
17684                 l_instance_hist_rec.new_attribute10 := NULL;
17685            ELSIF
17686               NVL(l_curr_instance_rec.attribute10,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute10,fnd_api.g_miss_char) THEN
17687                 l_instance_hist_rec.old_attribute10 := l_curr_instance_rec.attribute10 ;
17688                 l_instance_hist_rec.new_attribute10 := p_instance_rec.attribute10 ;
17689            END IF;
17690            --
17691            IF (p_instance_rec.attribute11 = fnd_api.g_miss_char) OR
17692               NVL(l_curr_instance_rec.attribute11,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute11,fnd_api.g_miss_char) THEN
17693                 l_instance_hist_rec.old_attribute11 := NULL;
17694                 l_instance_hist_rec.new_attribute11 := NULL;
17695            ELSIF
17696               NVL(l_curr_instance_rec.attribute11,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute11,fnd_api.g_miss_char) THEN
17697                 l_instance_hist_rec.old_attribute11 := l_curr_instance_rec.attribute11 ;
17698                 l_instance_hist_rec.new_attribute11 := p_instance_rec.attribute11 ;
17699            END IF;
17700            --
17701            IF (p_instance_rec.attribute12 = fnd_api.g_miss_char) OR
17702               NVL(l_curr_instance_rec.attribute12,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute12,fnd_api.g_miss_char) THEN
17703                 l_instance_hist_rec.old_attribute12 := NULL;
17704                 l_instance_hist_rec.new_attribute12 := NULL;
17705            ELSIF
17706               NVL(l_curr_instance_rec.attribute12,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute12,fnd_api.g_miss_char) THEN
17707                 l_instance_hist_rec.old_attribute12 := l_curr_instance_rec.attribute12 ;
17708                 l_instance_hist_rec.new_attribute12 := p_instance_rec.attribute12 ;
17709            END IF;
17710            --
17711            IF (p_instance_rec.attribute13 = fnd_api.g_miss_char) OR
17712               NVL(l_curr_instance_rec.attribute13,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute13,fnd_api.g_miss_char) THEN
17713                 l_instance_hist_rec.old_attribute13 := NULL;
17714                 l_instance_hist_rec.new_attribute13 := NULL;
17715            ELSIF
17716               NVL(l_curr_instance_rec.attribute13,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute13,fnd_api.g_miss_char) THEN
17717                 l_instance_hist_rec.old_attribute13 := l_curr_instance_rec.attribute13 ;
17718                 l_instance_hist_rec.new_attribute13 := p_instance_rec.attribute13 ;
17719            END IF;
17720            --
17721            IF (p_instance_rec.attribute14 = fnd_api.g_miss_char) OR
17722               NVL(l_curr_instance_rec.attribute14,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute14,fnd_api.g_miss_char) THEN
17723                 l_instance_hist_rec.old_attribute14 := NULL;
17724                 l_instance_hist_rec.new_attribute14 := NULL;
17725            ELSIF
17726               NVL(l_curr_instance_rec.attribute14,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute14,fnd_api.g_miss_char) THEN
17727                 l_instance_hist_rec.old_attribute14 := l_curr_instance_rec.attribute14 ;
17728                 l_instance_hist_rec.new_attribute14 := p_instance_rec.attribute14 ;
17729            END IF;
17730            --
17731            IF (p_instance_rec.attribute15 = fnd_api.g_miss_char) OR
17732               NVL(l_curr_instance_rec.attribute15,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute15,fnd_api.g_miss_char) THEN
17733                 l_instance_hist_rec.old_attribute15 := NULL;
17734                 l_instance_hist_rec.new_attribute15 := NULL;
17735            ELSIF
17736               NVL(l_curr_instance_rec.attribute15,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute15,fnd_api.g_miss_char) THEN
17737                 l_instance_hist_rec.old_attribute15 := l_curr_instance_rec.attribute15 ;
17738                 l_instance_hist_rec.new_attribute15 := p_instance_rec.attribute15 ;
17739            END IF;
17740            --
17741            IF (p_instance_rec.install_location_type_code = fnd_api.g_miss_char) OR
17742               NVL(l_curr_instance_rec.install_location_type_code,fnd_api.g_miss_char) = NVL(p_instance_rec.install_location_type_code,fnd_api.g_miss_char) THEN
17743                 l_instance_hist_rec.old_install_location_type_code := NULL;
17744                 l_instance_hist_rec.new_install_location_type_code := NULL;
17745            ELSIF
17746               NVL(l_curr_instance_rec.install_location_type_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.install_location_type_code,fnd_api.g_miss_char) THEN
17747                 l_instance_hist_rec.old_install_location_type_code := l_curr_instance_rec.install_location_type_code ;
17748                 l_instance_hist_rec.new_install_location_type_code := p_instance_rec.install_location_type_code ;
17749            END IF;
17750            --
17751            IF (p_instance_rec.install_location_id = fnd_api.g_miss_num) OR
17752               NVL(l_curr_instance_rec.install_location_id,fnd_api.g_miss_num) = NVL(p_instance_rec.install_location_id,fnd_api.g_miss_num) THEN
17753                 l_instance_hist_rec.old_install_location_id := NULL;
17754                 l_instance_hist_rec.new_install_location_id := NULL;
17755            ELSIF
17756               NVL(l_curr_instance_rec.install_location_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.install_location_id,fnd_api.g_miss_num) THEN
17757                 l_instance_hist_rec.old_install_location_id := l_curr_instance_rec.install_location_id ;
17758                 l_instance_hist_rec.new_install_location_id := p_instance_rec.install_location_id ;
17759            END IF;
17760            --
17761            IF (p_instance_rec.instance_usage_code = fnd_api.g_miss_char) OR
17762               NVL(l_curr_instance_rec.instance_usage_code,fnd_api.g_miss_char) = NVL(p_instance_rec.instance_usage_code,fnd_api.g_miss_char) THEN
17763                 l_instance_hist_rec.old_instance_usage_code := NULL;
17764                 l_instance_hist_rec.new_instance_usage_code := NULL;
17765            ELSIF
17766               NVL(l_curr_instance_rec.instance_usage_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.instance_usage_code,fnd_api.g_miss_char) THEN
17767                 l_instance_hist_rec.old_instance_usage_code := l_curr_instance_rec.instance_usage_code ;
17768                 l_instance_hist_rec.new_instance_usage_code := p_instance_rec.instance_usage_code ;
17769            END IF;
17770            --
17771            IF (p_instance_rec.last_oe_agreement_id = fnd_api.g_miss_num) OR
17772               NVL(l_curr_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) = NVL(p_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) THEN
17773                 l_instance_hist_rec.old_last_oe_agreement_id := NULL;
17774                 l_instance_hist_rec.new_last_oe_agreement_id := NULL;
17775            ELSIF
17776               NVL(l_curr_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.last_oe_agreement_id,fnd_api.g_miss_num) THEN
17777                 l_instance_hist_rec.old_last_oe_agreement_id := l_curr_instance_rec.last_oe_agreement_id ;
17778                 l_instance_hist_rec.new_last_oe_agreement_id := p_instance_rec.last_oe_agreement_id ;
17779            END IF;
17780            --
17781            IF (p_instance_rec.LAST_OE_ORDER_LINE_ID = fnd_api.g_miss_num) OR
17782               NVL(l_curr_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) THEN
17783                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := NULL;
17784                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := NULL;
17785            ELSIF
17786               NVL(l_curr_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) THEN
17787                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID ;
17788                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID ;
17789            END IF;
17790            --
17791            IF (p_instance_rec.LAST_OE_RMA_LINE_ID = fnd_api.g_miss_num) OR
17792               NVL(l_curr_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) THEN
17793                 l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID := NULL;
17794                 l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID := NULL;
17795            ELSIF
17796               NVL(l_curr_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) THEN
17797                 l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID ;
17798                 l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID ;
17799            END IF;
17800            --
17801            IF (p_instance_rec.LAST_WIP_JOB_ID = fnd_api.g_miss_num) OR
17802               NVL(l_curr_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) THEN
17803                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := NULL;
17804                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := NULL;
17805            ELSIF
17806               NVL(l_curr_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_WIP_JOB_ID,fnd_api.g_miss_num) THEN
17807                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID ;
17808                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID ;
17809            END IF;
17810            --
17811            IF (p_instance_rec.LAST_PO_PO_LINE_ID = fnd_api.g_miss_num) OR
17812               NVL(l_curr_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) THEN
17813                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := NULL;
17814                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := NULL;
17815            ELSIF
17816               NVL(l_curr_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) THEN
17817                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := l_curr_instance_rec.LAST_PO_PO_LINE_ID ;
17818                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID ;
17819            END IF;
17820            --
17821            IF (p_instance_rec.LAST_PA_PROJECT_ID = fnd_api.g_miss_num) OR
17822               NVL(l_curr_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) THEN
17823                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := NULL;
17824                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := NULL;
17825            ELSIF
17826               NVL(l_curr_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_PA_PROJECT_ID,fnd_api.g_miss_num) THEN
17827                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID ;
17828                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID ;
17829            END IF;
17830            --
17831            IF (p_instance_rec.LAST_PA_TASK_ID = fnd_api.g_miss_num) OR
17832               NVL(l_curr_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) THEN
17833                 l_instance_hist_rec.old_LAST_PA_TASK_ID := NULL;
17834                 l_instance_hist_rec.new_LAST_PA_TASK_ID := NULL;
17835            ELSIF
17836               NVL(l_curr_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_PA_TASK_ID,fnd_api.g_miss_num) THEN
17837                 l_instance_hist_rec.old_LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID ;
17838                 l_instance_hist_rec.new_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID ;
17839            END IF;
17840            --
17841            IF (p_instance_rec.LAST_TXN_LINE_DETAIL_ID = fnd_api.g_miss_num) OR
17842               NVL(l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) = NVL(p_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) THEN
17843                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := NULL;
17844                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := NULL;
17845            ELSIF
17846               NVL(l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) <> NVL(p_instance_rec.LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) THEN
17847                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
17848                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
17849            END IF;
17850            --
17851            IF (p_instance_rec.LAST_OE_PO_NUMBER = fnd_api.g_miss_char) OR
17852               NVL(l_curr_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) = NVL(p_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) THEN
17853                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := NULL;
17854                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := NULL;
17855            ELSIF
17856               NVL(l_curr_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) <> NVL(p_instance_rec.LAST_OE_PO_NUMBER,fnd_api.g_miss_char) THEN
17857                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER ;
17858                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER ;
17859            END IF;
17860            --
17861            IF (p_instance_rec.vld_organization_id = fnd_api.g_miss_num) OR
17862               NVL(p_instance_rec.vld_organization_id, fnd_api.g_miss_num) = NVL(l_curr_instance_rec.last_vld_organization_id, fnd_api.g_miss_num) THEN
17863                 l_curr_instance_rec.last_vld_organization_id := NULL;
17864                 l_last_vld_organization_id := NULL;
17865            ELSIF
17866               NVL(l_curr_instance_rec.last_vld_organization_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.vld_organization_id,fnd_api.g_miss_num) THEN
17867                 l_curr_instance_rec.last_vld_organization_id := l_curr_instance_rec.last_vld_organization_id;
17868                 l_last_vld_organization_id := p_instance_rec.vld_organization_id;
17869            END IF;
17870            --
17871            IF (p_instance_rec.config_inst_rev_num = fnd_api.g_miss_num) OR
17872               NVL(p_instance_rec.config_inst_rev_num, fnd_api.g_miss_num) = NVL(l_curr_instance_rec.config_inst_rev_num, fnd_api.g_miss_num) THEN
17873                 l_instance_hist_rec.old_config_inst_rev_num := NULL;
17874                 l_instance_hist_rec.new_config_inst_rev_num := NULL;
17875            ELSIF
17876               NVL(l_curr_instance_rec.config_inst_rev_num,fnd_api.g_miss_num) <> NVL(p_instance_rec.config_inst_rev_num,fnd_api.g_miss_num) THEN
17877                 l_instance_hist_rec.old_config_inst_rev_num := l_curr_instance_rec.config_inst_rev_num;
17878                 l_instance_hist_rec.new_config_inst_rev_num := p_instance_rec.config_inst_rev_num;
17879            END IF;
17880            --
17881            IF (p_instance_rec.config_valid_status = fnd_api.g_miss_char) OR
17882               NVL(p_instance_rec.config_valid_status, fnd_api.g_miss_char) = NVL(l_curr_instance_rec.config_valid_status, fnd_api.g_miss_char) THEN
17883                 l_instance_hist_rec.old_config_valid_status := NULL;
17884                 l_instance_hist_rec.new_config_valid_status := NULL;
17885            ELSIF
17886               NVL(l_curr_instance_rec.config_valid_status,fnd_api.g_miss_char) <> NVL(p_instance_rec.config_valid_status,fnd_api.g_miss_char) THEN
17887                 l_instance_hist_rec.old_config_valid_status := l_curr_instance_rec.config_valid_status;
17888                 l_instance_hist_rec.new_config_valid_status := p_instance_rec.config_valid_status;
17889            END IF;
17890            --
17891            IF (p_instance_rec.instance_description = fnd_api.g_miss_char) OR
17892               NVL(p_instance_rec.instance_description, fnd_api.g_miss_char) = NVL(l_curr_instance_rec.instance_description, fnd_api.g_miss_char) THEN
17893                 l_instance_hist_rec.old_instance_description := NULL;
17894                 l_instance_hist_rec.new_instance_description := NULL;
17895            ELSIF
17896               NVL(l_curr_instance_rec.instance_description,fnd_api.g_miss_char) <> NVL(p_instance_rec.instance_description,fnd_api.g_miss_char) THEN
17897                 l_instance_hist_rec.old_instance_description := l_curr_instance_rec.instance_description;
17898                 l_instance_hist_rec.new_instance_description := p_instance_rec.instance_description;
17899            END IF;
17900 
17901            IF (p_instance_rec.install_date = fnd_api.g_miss_date) OR
17902               NVL(l_curr_instance_rec.install_date,fnd_api.g_miss_date) = NVL(p_instance_rec.install_date,fnd_api.g_miss_date) THEN
17903                 l_instance_hist_rec.old_install_date := NULL;
17904                 l_instance_hist_rec.new_install_date := NULL;
17905            ELSIF
17906               NVL(l_curr_instance_rec.install_date,fnd_api.g_miss_date) <> NVL(p_instance_rec.install_date,fnd_api.g_miss_date) THEN
17907                 l_instance_hist_rec.old_install_date := l_curr_instance_rec.install_date ;
17908                 l_instance_hist_rec.new_install_date := p_instance_rec.install_date ;
17909            END IF;
17910 
17911            IF (p_instance_rec.return_by_date = fnd_api.g_miss_date) OR
17912               NVL(l_curr_instance_rec.return_by_date,fnd_api.g_miss_date) = NVL(p_instance_rec.return_by_date,fnd_api.g_miss_date) THEN
17913                 l_instance_hist_rec.old_return_by_date := NULL;
17914                 l_instance_hist_rec.new_return_by_date := NULL;
17915            ELSIF
17916               NVL(l_curr_instance_rec.return_by_date,fnd_api.g_miss_date) <> NVL(p_instance_rec.return_by_date,fnd_api.g_miss_date) THEN
17917                 l_instance_hist_rec.old_return_by_date := l_curr_instance_rec.return_by_date ;
17918                 l_instance_hist_rec.new_return_by_date := p_instance_rec.return_by_date ;
17919            END IF;
17920 
17921            IF (p_instance_rec.actual_return_date = fnd_api.g_miss_date) OR
17922               NVL(l_curr_instance_rec.actual_return_date,fnd_api.g_miss_date) = NVL(p_instance_rec.actual_return_date,fnd_api.g_miss_date) THEN
17923                 l_instance_hist_rec.old_actual_return_date := NULL;
17924                 l_instance_hist_rec.new_actual_return_date := NULL;
17925            ELSIF
17926               NVL(l_curr_instance_rec.actual_return_date,fnd_api.g_miss_date) <> NVL(p_instance_rec.actual_return_date,fnd_api.g_miss_date) THEN
17927                 l_instance_hist_rec.old_actual_return_date := l_curr_instance_rec.actual_return_date ;
17928                 l_instance_hist_rec.new_actual_return_date := p_instance_rec.actual_return_date ;
17929            END IF;
17930 
17931            --start of code for eam integration--
17932            --
17933            IF (p_instance_rec.network_asset_flag = fnd_api.g_miss_char) OR
17934               NVL(l_curr_instance_rec.network_asset_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.network_asset_flag,fnd_api.g_miss_char) THEN
17935                 l_instance_hist_rec.old_network_asset_flag := NULL;
17936                 l_instance_hist_rec.new_network_asset_flag := NULL;
17937            ELSIF
17938               NVL(l_curr_instance_rec.network_asset_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.network_asset_flag,fnd_api.g_miss_char) THEN
17939                 l_instance_hist_rec.old_network_asset_flag := l_curr_instance_rec.network_asset_flag ;
17940                 l_instance_hist_rec.new_network_asset_flag := p_instance_rec.network_asset_flag ;
17941            END IF;
17942            --
17943            IF (p_instance_rec.maintainable_flag = fnd_api.g_miss_char) OR
17944               NVL(l_curr_instance_rec.maintainable_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.maintainable_flag,fnd_api.g_miss_char) THEN
17945                 l_instance_hist_rec.old_maintainable_flag := NULL;
17946                 l_instance_hist_rec.new_maintainable_flag := NULL;
17947            ELSIF
17948               NVL(l_curr_instance_rec.maintainable_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.maintainable_flag,fnd_api.g_miss_char) THEN
17949                 l_instance_hist_rec.old_maintainable_flag := l_curr_instance_rec.maintainable_flag ;
17950                 l_instance_hist_rec.new_maintainable_flag := p_instance_rec.maintainable_flag ;
17951            END IF;
17952            --
17953            IF (p_instance_rec.pn_location_id = fnd_api.g_miss_num) OR
17954               NVL(l_curr_instance_rec.pn_location_id,fnd_api.g_miss_num) = NVL(p_instance_rec.pn_location_id,fnd_api.g_miss_num) THEN
17955                 l_instance_hist_rec.old_pn_location_id := NULL;
17956                 l_instance_hist_rec.new_pn_location_id := NULL;
17957            ELSIF
17958               NVL(l_curr_instance_rec.pn_location_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.pn_location_id,fnd_api.g_miss_num) THEN
17959                 l_instance_hist_rec.old_pn_location_id := l_curr_instance_rec.pn_location_id ;
17960                 l_instance_hist_rec.new_pn_location_id := p_instance_rec.pn_location_id ;
17961            END IF;
17962            --
17963            IF (p_instance_rec.asset_criticality_code = fnd_api.g_miss_char) OR
17964               NVL(l_curr_instance_rec.asset_criticality_code,fnd_api.g_miss_char) = NVL(p_instance_rec.asset_criticality_code,fnd_api.g_miss_char) THEN
17965                 l_instance_hist_rec.old_asset_criticality_code := NULL;
17966                 l_instance_hist_rec.new_asset_criticality_code := NULL;
17967            ELSIF
17968               NVL(l_curr_instance_rec.asset_criticality_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.asset_criticality_code,fnd_api.g_miss_char) THEN
17969                 l_instance_hist_rec.old_asset_criticality_code := l_curr_instance_rec.asset_criticality_code ;
17970                 l_instance_hist_rec.new_asset_criticality_code := p_instance_rec.asset_criticality_code ;
17971            END IF;
17972            --
17973            IF (p_instance_rec.category_id = fnd_api.g_miss_num) OR
17974               NVL(l_curr_instance_rec.category_id,fnd_api.g_miss_num) = NVL(p_instance_rec.category_id,fnd_api.g_miss_num) THEN
17975                 l_instance_hist_rec.old_category_id := NULL;
17976                 l_instance_hist_rec.new_category_id := NULL;
17977            ELSIF
17978               NVL(l_curr_instance_rec.category_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.category_id,fnd_api.g_miss_num) THEN
17979                 l_instance_hist_rec.old_category_id := l_curr_instance_rec.category_id ;
17980                 l_instance_hist_rec.new_category_id := p_instance_rec.category_id ;
17981            END IF;
17982            --
17983            IF (p_instance_rec.equipment_gen_object_id = fnd_api.g_miss_num) OR
17984               NVL(l_curr_instance_rec.equipment_gen_object_id,fnd_api.g_miss_num) = NVL(p_instance_rec.equipment_gen_object_id,fnd_api.g_miss_num) THEN
17985                 l_instance_hist_rec.old_equipment_gen_object_id := NULL;
17986                 l_instance_hist_rec.new_equipment_gen_object_id := NULL;
17987            ELSIF
17988               NVL(l_curr_instance_rec.equipment_gen_object_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.equipment_gen_object_id,fnd_api.g_miss_num) THEN
17989                 l_instance_hist_rec.old_equipment_gen_object_id := l_curr_instance_rec.equipment_gen_object_id ;
17990                 l_instance_hist_rec.new_equipment_gen_object_id := p_instance_rec.equipment_gen_object_id ;
17991            END IF;
17992            --
17993            IF (p_instance_rec.instantiation_flag = fnd_api.g_miss_char) OR
17994               NVL(l_curr_instance_rec.instantiation_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.instantiation_flag,fnd_api.g_miss_char) THEN
17995                 l_instance_hist_rec.old_instantiation_flag := NULL;
17996                 l_instance_hist_rec.new_instantiation_flag := NULL;
17997            ELSIF
17998               NVL(l_curr_instance_rec.instantiation_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.instantiation_flag,fnd_api.g_miss_char) THEN
17999                 l_instance_hist_rec.old_instantiation_flag := l_curr_instance_rec.instantiation_flag ;
18000                 l_instance_hist_rec.new_instantiation_flag := p_instance_rec.instantiation_flag ;
18001            END IF;
18002            --
18003            IF (p_instance_rec.linear_location_id = fnd_api.g_miss_num) OR
18004               NVL(l_curr_instance_rec.linear_location_id,fnd_api.g_miss_num) = NVL(p_instance_rec.linear_location_id,fnd_api.g_miss_num) THEN
18005                 l_instance_hist_rec.old_linear_location_id := NULL;
18006                 l_instance_hist_rec.new_linear_location_id := NULL;
18007            ELSIF
18008               NVL(l_curr_instance_rec.linear_location_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.linear_location_id,fnd_api.g_miss_num) THEN
18009                 l_instance_hist_rec.old_linear_location_id := l_curr_instance_rec.linear_location_id ;
18010                 l_instance_hist_rec.new_linear_location_id := p_instance_rec.linear_location_id ;
18011            END IF;
18012            --
18013            IF (p_instance_rec.operational_log_flag = fnd_api.g_miss_char) OR
18014               NVL(l_curr_instance_rec.operational_log_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.operational_log_flag,fnd_api.g_miss_char) THEN
18015                 l_instance_hist_rec.old_operational_log_flag := NULL;
18016                 l_instance_hist_rec.new_operational_log_flag := NULL;
18017            ELSIF
18018               NVL(l_curr_instance_rec.operational_log_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.operational_log_flag,fnd_api.g_miss_char) THEN
18019                 l_instance_hist_rec.old_operational_log_flag := l_curr_instance_rec.operational_log_flag ;
18020                 l_instance_hist_rec.new_operational_log_flag := p_instance_rec.operational_log_flag ;
18021            END IF;
18022            --
18023            IF (p_instance_rec.checkin_status = fnd_api.g_miss_num) OR
18024               NVL(l_curr_instance_rec.checkin_status,fnd_api.g_miss_num) = NVL(p_instance_rec.checkin_status,fnd_api.g_miss_num) THEN
18025                 l_instance_hist_rec.old_checkin_status := NULL;
18026                 l_instance_hist_rec.new_checkin_status := NULL;
18027            ELSIF
18028               NVL(l_curr_instance_rec.checkin_status,fnd_api.g_miss_num) <> NVL(p_instance_rec.checkin_status,fnd_api.g_miss_num) THEN
18029                 l_instance_hist_rec.old_checkin_status := l_curr_instance_rec.checkin_status ;
18030                 l_instance_hist_rec.new_checkin_status := p_instance_rec.checkin_status ;
18031            END IF;
18032            --
18033            IF (p_instance_rec.supplier_warranty_exp_date = fnd_api.g_miss_date) OR
18034               NVL(l_curr_instance_rec.supplier_warranty_exp_date,fnd_api.g_miss_date) = NVL(p_instance_rec.supplier_warranty_exp_date,fnd_api.g_miss_date) THEN
18035                 l_instance_hist_rec.old_supplier_warranty_exp_date := NULL;
18036                 l_instance_hist_rec.new_supplier_warranty_exp_date := NULL;
18037            ELSIF
18038               NVL(l_curr_instance_rec.supplier_warranty_exp_date,fnd_api.g_miss_date) <> NVL(p_instance_rec.supplier_warranty_exp_date,fnd_api.g_miss_date) THEN
18039                 l_instance_hist_rec.old_supplier_warranty_exp_date := l_curr_instance_rec.supplier_warranty_exp_date ;
18040                 l_instance_hist_rec.new_supplier_warranty_exp_date := p_instance_rec.supplier_warranty_exp_date ;
18041            END IF;
18042            --
18043            IF (p_instance_rec.attribute16 = fnd_api.g_miss_char) OR
18044               NVL(l_curr_instance_rec.attribute16,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute16,fnd_api.g_miss_char) THEN
18045                 l_instance_hist_rec.old_attribute16 := NULL;
18046                 l_instance_hist_rec.new_attribute16 := NULL;
18047            ELSIF
18048               NVL(l_curr_instance_rec.attribute16,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute16,fnd_api.g_miss_char) THEN
18049                 l_instance_hist_rec.old_attribute16 := l_curr_instance_rec.attribute16 ;
18050                 l_instance_hist_rec.new_attribute16 := p_instance_rec.attribute16 ;
18051            END IF;
18052            --
18053            IF (p_instance_rec.attribute17 = fnd_api.g_miss_char) OR
18054               NVL(l_curr_instance_rec.attribute17,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute17,fnd_api.g_miss_char) THEN
18055                 l_instance_hist_rec.old_attribute17 := NULL;
18056                 l_instance_hist_rec.new_attribute17 := NULL;
18057            ELSIF
18058               NVL(l_curr_instance_rec.attribute17,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute17,fnd_api.g_miss_char) THEN
18059                 l_instance_hist_rec.old_attribute17 := l_curr_instance_rec.attribute17 ;
18060                 l_instance_hist_rec.new_attribute17 := p_instance_rec.attribute2 ;
18061            END IF;
18062            --
18063            IF (p_instance_rec.attribute18 = fnd_api.g_miss_char) OR
18064               NVL(l_curr_instance_rec.attribute18,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute18,fnd_api.g_miss_char) THEN
18065                 l_instance_hist_rec.old_attribute18 := NULL;
18066                 l_instance_hist_rec.new_attribute18 := NULL;
18067            ELSIF
18068               NVL(l_curr_instance_rec.attribute18,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute18,fnd_api.g_miss_char) THEN
18069                 l_instance_hist_rec.old_attribute18 := l_curr_instance_rec.attribute18 ;
18070                 l_instance_hist_rec.new_attribute18 := p_instance_rec.attribute18 ;
18071            END IF;
18072            --
18073            IF (p_instance_rec.attribute19 = fnd_api.g_miss_char) OR
18074               NVL(l_curr_instance_rec.attribute19,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute19,fnd_api.g_miss_char) THEN
18075                 l_instance_hist_rec.old_attribute19 := NULL;
18076                 l_instance_hist_rec.new_attribute19 := NULL;
18077            ELSIF
18078               NVL(l_curr_instance_rec.attribute19,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute19,fnd_api.g_miss_char) THEN
18079                 l_instance_hist_rec.old_attribute19 := l_curr_instance_rec.attribute19 ;
18080                 l_instance_hist_rec.new_attribute19 := p_instance_rec.attribute19 ;
18081            END IF;
18082            --
18083            IF (p_instance_rec.attribute20 = fnd_api.g_miss_char) OR
18084               NVL(l_curr_instance_rec.attribute20,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute20,fnd_api.g_miss_char) THEN
18085                 l_instance_hist_rec.old_attribute20 := NULL;
18086                 l_instance_hist_rec.new_attribute20 := NULL;
18087            ELSIF
18088               NVL(l_curr_instance_rec.attribute20,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute20,fnd_api.g_miss_char) THEN
18089                 l_instance_hist_rec.old_attribute20 := l_curr_instance_rec.attribute20 ;
18090                 l_instance_hist_rec.new_attribute20 := p_instance_rec.attribute20 ;
18091            END IF;
18092            --
18093            IF (p_instance_rec.attribute21 = fnd_api.g_miss_char) OR
18094               NVL(l_curr_instance_rec.attribute21,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute21,fnd_api.g_miss_char) THEN
18095                 l_instance_hist_rec.old_attribute21 := NULL;
18096                 l_instance_hist_rec.new_attribute21 := NULL;
18097            ELSIF
18098               NVL(l_curr_instance_rec.attribute21,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute21,fnd_api.g_miss_char) THEN
18099                 l_instance_hist_rec.old_attribute21 := l_curr_instance_rec.attribute21 ;
18100                 l_instance_hist_rec.new_attribute21 := p_instance_rec.attribute21 ;
18101            END IF;
18102            --
18103            IF (p_instance_rec.attribute22 = fnd_api.g_miss_char) OR
18104               NVL(l_curr_instance_rec.attribute22,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute22,fnd_api.g_miss_char) THEN
18105                 l_instance_hist_rec.old_attribute22 := NULL;
18106                 l_instance_hist_rec.new_attribute22 := NULL;
18107            ELSIF
18108               NVL(l_curr_instance_rec.attribute22,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute22,fnd_api.g_miss_char) THEN
18109                 l_instance_hist_rec.old_attribute22 := l_curr_instance_rec.attribute22 ;
18110                 l_instance_hist_rec.new_attribute22 := p_instance_rec.attribute22 ;
18111            END IF;
18112            --
18113            IF (p_instance_rec.attribute23 = fnd_api.g_miss_char) OR
18114               NVL(l_curr_instance_rec.attribute23,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute23,fnd_api.g_miss_char) THEN
18115                 l_instance_hist_rec.old_attribute23 := NULL;
18116                 l_instance_hist_rec.new_attribute23 := NULL;
18117            ELSIF
18118               NVL(l_curr_instance_rec.attribute23,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute23,fnd_api.g_miss_char) THEN
18119                 l_instance_hist_rec.old_attribute23 := l_curr_instance_rec.attribute23 ;
18120                 l_instance_hist_rec.new_attribute23 := p_instance_rec.attribute23 ;
18121            END IF;
18122            --
18123            IF (p_instance_rec.attribute24 = fnd_api.g_miss_char) OR
18124               NVL(l_curr_instance_rec.attribute24,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute24,fnd_api.g_miss_char) THEN
18125                 l_instance_hist_rec.old_attribute24 := NULL;
18126                 l_instance_hist_rec.new_attribute24 := NULL;
18127            ELSIF
18128               NVL(l_curr_instance_rec.attribute24,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute24,fnd_api.g_miss_char) THEN
18129                 l_instance_hist_rec.old_attribute24 := l_curr_instance_rec.attribute24 ;
18130                 l_instance_hist_rec.new_attribute24 := p_instance_rec.attribute24 ;
18131            END IF;
18132            --
18133            IF (p_instance_rec.attribute25 = fnd_api.g_miss_char) OR
18134               NVL(l_curr_instance_rec.attribute25,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute25,fnd_api.g_miss_char) THEN
18135                 l_instance_hist_rec.old_attribute25 := NULL;
18136                 l_instance_hist_rec.new_attribute25 := NULL;
18137            ELSIF
18138               NVL(l_curr_instance_rec.attribute25,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute25,fnd_api.g_miss_char) THEN
18139                 l_instance_hist_rec.old_attribute25 := l_curr_instance_rec.attribute25 ;
18140                 l_instance_hist_rec.new_attribute25 := p_instance_rec.attribute25 ;
18141            END IF;
18142            --
18143            IF (p_instance_rec.attribute26 = fnd_api.g_miss_char) OR
18144               NVL(l_curr_instance_rec.attribute26,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute26,fnd_api.g_miss_char) THEN
18145                 l_instance_hist_rec.old_attribute26 := NULL;
18146                 l_instance_hist_rec.new_attribute26 := NULL;
18147            ELSIF
18148               NVL(l_curr_instance_rec.attribute26,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute26,fnd_api.g_miss_char) THEN
18149                 l_instance_hist_rec.old_attribute26 := l_curr_instance_rec.attribute26 ;
18150                 l_instance_hist_rec.new_attribute26 := p_instance_rec.attribute26 ;
18151            END IF;
18152            --
18153            IF (p_instance_rec.attribute27 = fnd_api.g_miss_char) OR
18154               NVL(l_curr_instance_rec.attribute27,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute27,fnd_api.g_miss_char) THEN
18155                 l_instance_hist_rec.old_attribute27 := NULL;
18156                 l_instance_hist_rec.new_attribute27 := NULL;
18157            ELSIF
18158               NVL(l_curr_instance_rec.attribute27,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute27,fnd_api.g_miss_char) THEN
18159                 l_instance_hist_rec.old_attribute27 := l_curr_instance_rec.attribute27 ;
18160                 l_instance_hist_rec.new_attribute27 := p_instance_rec.attribute27 ;
18161            END IF;
18162            --
18163            IF (p_instance_rec.attribute28 = fnd_api.g_miss_char) OR
18164               NVL(l_curr_instance_rec.attribute28,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute28,fnd_api.g_miss_char) THEN
18165                 l_instance_hist_rec.old_attribute28 := NULL;
18166                 l_instance_hist_rec.new_attribute28 := NULL;
18167            ELSIF
18168               NVL(l_curr_instance_rec.attribute28,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute28,fnd_api.g_miss_char) THEN
18169                 l_instance_hist_rec.old_attribute28 := l_curr_instance_rec.attribute28 ;
18170                 l_instance_hist_rec.new_attribute28 := p_instance_rec.attribute28 ;
18171            END IF;
18172            --
18173            IF (p_instance_rec.attribute29 = fnd_api.g_miss_char) OR
18174               NVL(l_curr_instance_rec.attribute29,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute29,fnd_api.g_miss_char) THEN
18175                 l_instance_hist_rec.old_attribute29 := NULL;
18176                 l_instance_hist_rec.new_attribute29 := NULL;
18177            ELSIF
18178               NVL(l_curr_instance_rec.attribute29,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute14,fnd_api.g_miss_char) THEN
18179                 l_instance_hist_rec.old_attribute29 := l_curr_instance_rec.attribute29 ;
18180                 l_instance_hist_rec.new_attribute29 := p_instance_rec.attribute29 ;
18181            END IF;
18182            --
18183            IF (p_instance_rec.attribute30 = fnd_api.g_miss_char) OR
18184               NVL(l_curr_instance_rec.attribute30,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute30,fnd_api.g_miss_char) THEN
18185                 l_instance_hist_rec.old_attribute30 := NULL;
18186                 l_instance_hist_rec.new_attribute30 := NULL;
18187            ELSIF
18188               NVL(l_curr_instance_rec.attribute30,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute30,fnd_api.g_miss_char) THEN
18189                 l_instance_hist_rec.old_attribute30 := l_curr_instance_rec.attribute30 ;
18190                 l_instance_hist_rec.new_attribute30 := p_instance_rec.attribute30 ;
18191            END IF;
18192            --end of code for eam integration--
18193 
18194            -- Addition of columns for FA Integration
18195 
18196            IF (p_instance_rec.purchase_unit_price = fnd_api.g_miss_num) OR
18197               NVL(l_curr_instance_rec.purchase_unit_price,fnd_api.g_miss_num) = NVL(p_instance_rec.purchase_unit_price,fnd_api.g_miss_num) THEN
18198                 l_instance_hist_rec.old_purchase_unit_price := NULL;
18199                 l_instance_hist_rec.new_purchase_unit_price := NULL;
18200            ELSIF
18201               NVL(l_curr_instance_rec.purchase_unit_price,fnd_api.g_miss_num) <> NVL(p_instance_rec.purchase_unit_price,fnd_api.g_miss_num) THEN
18202                 l_instance_hist_rec.old_purchase_unit_price := l_curr_instance_rec.purchase_unit_price ;
18203                 l_instance_hist_rec.new_purchase_unit_price := p_instance_rec.purchase_unit_price ;
18204            END IF;
18205 
18206            IF (p_instance_rec.purchase_currency_code = fnd_api.g_miss_char) OR
18207               NVL(l_curr_instance_rec.purchase_currency_code,fnd_api.g_miss_char) = NVL(p_instance_rec.purchase_currency_code,fnd_api.g_miss_char) THEN
18208                 l_instance_hist_rec.old_purchase_currency_code := NULL;
18209                 l_instance_hist_rec.new_purchase_currency_code := NULL;
18210            ELSIF
18211               NVL(l_curr_instance_rec.purchase_currency_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.purchase_currency_code,fnd_api.g_miss_char) THEN
18212                 l_instance_hist_rec.old_purchase_currency_code := l_curr_instance_rec.purchase_currency_code ;
18213                 l_instance_hist_rec.new_purchase_currency_code := p_instance_rec.purchase_currency_code ;
18214            END IF;
18215 
18216            IF (p_instance_rec.payables_unit_price = fnd_api.g_miss_num) OR
18217               NVL(l_curr_instance_rec.payables_unit_price,fnd_api.g_miss_num) = NVL(p_instance_rec.payables_unit_price,fnd_api.g_miss_num) THEN
18218                 l_instance_hist_rec.old_payables_unit_price := NULL;
18219                 l_instance_hist_rec.new_payables_unit_price := NULL;
18220            ELSIF
18221               NVL(l_curr_instance_rec.payables_unit_price,fnd_api.g_miss_num) <> NVL(p_instance_rec.payables_unit_price,fnd_api.g_miss_num) THEN
18222                 l_instance_hist_rec.old_payables_unit_price := l_curr_instance_rec.payables_unit_price ;
18223                 l_instance_hist_rec.new_payables_unit_price := p_instance_rec.payables_unit_price ;
18224            END IF;
18225 
18226            IF (p_instance_rec.payables_currency_code = fnd_api.g_miss_char) OR
18227               NVL(l_curr_instance_rec.payables_currency_code,fnd_api.g_miss_char) = NVL(p_instance_rec.payables_currency_code,fnd_api.g_miss_char) THEN
18228                 l_instance_hist_rec.old_payables_currency_code := NULL;
18229                 l_instance_hist_rec.new_payables_currency_code := NULL;
18230            ELSIF
18231               NVL(l_curr_instance_rec.payables_currency_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.payables_currency_code,fnd_api.g_miss_char) THEN
18232                 l_instance_hist_rec.old_payables_currency_code := l_curr_instance_rec.payables_currency_code ;
18233                 l_instance_hist_rec.new_payables_currency_code := p_instance_rec.payables_currency_code ;
18234            END IF;
18235 
18236            IF (p_instance_rec.sales_unit_price = fnd_api.g_miss_num) OR
18237               NVL(l_curr_instance_rec.sales_unit_price,fnd_api.g_miss_num) = NVL(p_instance_rec.sales_unit_price,fnd_api.g_miss_num) THEN
18238                 l_instance_hist_rec.old_sales_unit_price := NULL;
18239                 l_instance_hist_rec.new_sales_unit_price := NULL;
18240            ELSIF
18241               NVL(l_curr_instance_rec.sales_unit_price,fnd_api.g_miss_num) <> NVL(p_instance_rec.sales_unit_price,fnd_api.g_miss_num) THEN
18242                 l_instance_hist_rec.old_sales_unit_price := l_curr_instance_rec.sales_unit_price ;
18243                 l_instance_hist_rec.new_sales_unit_price := p_instance_rec.sales_unit_price ;
18244            END IF;
18245 
18246            IF (p_instance_rec.sales_currency_code = fnd_api.g_miss_char) OR
18247               NVL(l_curr_instance_rec.sales_currency_code,fnd_api.g_miss_char) = NVL(p_instance_rec.sales_currency_code,fnd_api.g_miss_char) THEN
18248                 l_instance_hist_rec.old_sales_currency_code := NULL;
18249                 l_instance_hist_rec.new_sales_currency_code := NULL;
18250            ELSIF
18251               NVL(l_curr_instance_rec.sales_currency_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.sales_currency_code,fnd_api.g_miss_char) THEN
18252                 l_instance_hist_rec.old_sales_currency_code := l_curr_instance_rec.sales_currency_code ;
18253                 l_instance_hist_rec.new_sales_currency_code := p_instance_rec.sales_currency_code ;
18254            END IF;
18255 
18256            IF (p_instance_rec.operational_status_code = fnd_api.g_miss_char) OR
18257               NVL(l_curr_instance_rec.operational_status_code,fnd_api.g_miss_char) = NVL(p_instance_rec.operational_status_code,fnd_api.g_miss_char) THEN
18258                 l_instance_hist_rec.old_operational_status_code := NULL;
18259                 l_instance_hist_rec.new_operational_status_code := NULL;
18260            ELSIF
18261               NVL(l_curr_instance_rec.operational_status_code,fnd_api.g_miss_char) <> NVL(p_instance_rec.operational_status_code,fnd_api.g_miss_char) THEN
18262                 l_instance_hist_rec.old_operational_status_code := l_curr_instance_rec.operational_status_code ;
18263                 l_instance_hist_rec.new_operational_status_code := p_instance_rec.operational_status_code ;
18264            END IF;
18265            -- End addition of columns for FA Integration
18266 
18267           CSI_ITEM_INSTANCES_H_PKG.Insert_Row
18268            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
18269             ,p_INSTANCE_ID                       => p_instance_rec.instance_id
18270             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
18271             ,p_OLD_INSTANCE_NUMBER               => l_instance_hist_rec.OLD_INSTANCE_NUMBER
18272             ,p_NEW_INSTANCE_NUMBER               => l_instance_hist_rec.NEW_INSTANCE_NUMBER
18273             ,p_OLD_EXTERNAL_REFERENCE            => l_instance_hist_rec.OLD_EXTERNAL_REFERENCE
18274             ,p_NEW_EXTERNAL_REFERENCE            => l_instance_hist_rec.NEW_EXTERNAL_REFERENCE
18275             ,p_OLD_INVENTORY_ITEM_ID             => l_instance_hist_rec.OLD_INVENTORY_ITEM_ID
18276             ,p_NEW_INVENTORY_ITEM_ID             => l_instance_hist_rec.NEW_INVENTORY_ITEM_ID
18277             ,p_OLD_INVENTORY_REVISION            => l_instance_hist_rec.OLD_INVENTORY_REVISION
18278             ,p_NEW_INVENTORY_REVISION            => l_instance_hist_rec.NEW_INVENTORY_REVISION
18279             ,p_OLD_INV_MASTER_ORGZN_ID           => l_instance_hist_rec.OLD_INV_MASTER_ORG_ID
18280             ,p_NEW_INV_MASTER_ORGZN_ID           => l_instance_hist_rec.NEW_INV_MASTER_ORG_ID
18281             ,p_OLD_SERIAL_NUMBER                 => l_instance_hist_rec.OLD_SERIAL_NUMBER
18282             ,p_NEW_SERIAL_NUMBER                 => l_instance_hist_rec.NEW_SERIAL_NUMBER
18283             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_instance_hist_rec.OLD_MFG_SERIAL_NUMBER_FLAG
18284             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => l_instance_hist_rec.NEW_MFG_SERIAL_NUMBER_FLAG
18285             ,p_OLD_LOT_NUMBER                    => l_instance_hist_rec.OLD_LOT_NUMBER
18286             ,p_NEW_LOT_NUMBER                    => l_instance_hist_rec.NEW_LOT_NUMBER
18287             ,p_OLD_QUANTITY                      => l_instance_hist_rec.OLD_QUANTITY
18288             ,p_NEW_QUANTITY                      => l_instance_hist_rec.NEW_QUANTITY
18289             ,p_OLD_UNIT_OF_MEASURE               => l_instance_hist_rec.OLD_UNIT_OF_MEASURE
18290             ,p_NEW_UNIT_OF_MEASURE               => l_instance_hist_rec.NEW_UNIT_OF_MEASURE
18291             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_instance_hist_rec.OLD_ACCOUNTING_CLASS_CODE
18292             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_instance_hist_rec.NEW_ACCOUNTING_CLASS_CODE
18293             ,p_OLD_INSTANCE_CONDITION_ID         => l_instance_hist_rec.OLD_INSTANCE_CONDITION_ID
18294             ,p_NEW_INSTANCE_CONDITION_ID         => l_instance_hist_rec.NEW_INSTANCE_CONDITION_ID
18295             ,p_OLD_INSTANCE_STATUS_ID            => l_instance_hist_rec.OLD_INSTANCE_STATUS_ID
18296             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_hist_rec.NEW_INSTANCE_STATUS_ID
18297             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_instance_hist_rec.OLD_CUSTOMER_VIEW_FLAG
18298             ,p_NEW_CUSTOMER_VIEW_FLAG            => l_instance_hist_rec.NEW_CUSTOMER_VIEW_FLAG
18299             ,p_OLD_MERCHANT_VIEW_FLAG            => l_instance_hist_rec.OLD_MERCHANT_VIEW_FLAG
18300             ,p_NEW_MERCHANT_VIEW_FLAG            => l_instance_hist_rec.NEW_MERCHANT_VIEW_FLAG
18301             ,p_OLD_SELLABLE_FLAG                 => l_instance_hist_rec.OLD_SELLABLE_FLAG
18302             ,p_NEW_SELLABLE_FLAG                 => l_instance_hist_rec.NEW_SELLABLE_FLAG
18303             ,p_OLD_SYSTEM_ID                     => l_instance_hist_rec.OLD_SYSTEM_ID
18304             ,p_NEW_SYSTEM_ID                     => l_instance_hist_rec.NEW_SYSTEM_ID
18305             ,p_OLD_INSTANCE_TYPE_CODE            => l_instance_hist_rec.OLD_INSTANCE_TYPE_CODE
18306             ,p_NEW_INSTANCE_TYPE_CODE            => l_instance_hist_rec.NEW_INSTANCE_TYPE_CODE
18307             ,p_OLD_ACTIVE_START_DATE             => l_instance_hist_rec.OLD_ACTIVE_START_DATE
18308             ,p_NEW_ACTIVE_START_DATE             => l_instance_hist_rec.NEW_ACTIVE_START_DATE
18309             ,p_OLD_ACTIVE_END_DATE               => l_instance_hist_rec.OLD_ACTIVE_END_DATE
18310             ,p_NEW_ACTIVE_END_DATE               => l_instance_hist_rec.NEW_ACTIVE_END_DATE
18311             ,p_OLD_LOCATION_TYPE_CODE            => l_instance_hist_rec.OLD_LOCATION_TYPE_CODE
18312             ,p_NEW_LOCATION_TYPE_CODE            => l_instance_hist_rec.NEW_LOCATION_TYPE_CODE
18313             ,p_OLD_LOCATION_ID                   => l_instance_hist_rec.OLD_LOCATION_ID
18314             ,p_NEW_LOCATION_ID                   => l_instance_hist_rec.NEW_LOCATION_ID
18315             ,p_OLD_INV_ORGANIZATION_ID           => l_instance_hist_rec.OLD_INV_ORGANIZATION_ID
18316             ,p_NEW_INV_ORGANIZATION_ID           => l_instance_hist_rec.NEW_INV_ORGANIZATION_ID
18317             ,p_OLD_INV_SUBINVENTORY_NAME         => l_instance_hist_rec.OLD_INV_SUBINVENTORY_NAME
18318             ,p_NEW_INV_SUBINVENTORY_NAME         => l_instance_hist_rec.NEW_INV_SUBINVENTORY_NAME
18319             ,p_OLD_INV_LOCATOR_ID                => l_instance_hist_rec.OLD_INV_LOCATOR_ID
18320             ,p_NEW_INV_LOCATOR_ID                => l_instance_hist_rec.NEW_INV_LOCATOR_ID
18321             ,p_OLD_PA_PROJECT_ID                 => l_instance_hist_rec.OLD_PA_PROJECT_ID
18322             ,p_NEW_PA_PROJECT_ID                 => l_instance_hist_rec.NEW_PA_PROJECT_ID
18323             ,p_OLD_PA_PROJECT_TASK_ID            => l_instance_hist_rec.OLD_PA_PROJECT_TASK_ID
18324             ,p_NEW_PA_PROJECT_TASK_ID            => l_instance_hist_rec.NEW_PA_PROJECT_TASK_ID
18325             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_instance_hist_rec.OLD_IN_TRANSIT_ORDER_LINE_ID
18326             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_instance_hist_rec.NEW_IN_TRANSIT_ORDER_LINE_ID
18327             ,p_OLD_WIP_JOB_ID                    => l_instance_hist_rec.OLD_WIP_JOB_ID
18328             ,p_NEW_WIP_JOB_ID                    => l_instance_hist_rec.NEW_WIP_JOB_ID
18329             ,p_OLD_PO_ORDER_LINE_ID              => l_instance_hist_rec.OLD_PO_ORDER_LINE_ID
18330             ,p_NEW_PO_ORDER_LINE_ID              => l_instance_hist_rec.NEW_PO_ORDER_LINE_ID
18331             ,p_OLD_COMPLETENESS_FLAG             => l_instance_hist_rec.OLD_COMPLETENESS_FLAG
18332             ,p_NEW_COMPLETENESS_FLAG             => l_instance_hist_rec.NEW_COMPLETENESS_FLAG
18333             ,p_FULL_DUMP_FLAG                    => 'N'
18334             ,p_NEW_CONTEXT                       => l_instance_hist_rec.NEW_CONTEXT
18335             ,P_OLD_CONTEXT                       => l_instance_hist_rec.OLD_CONTEXT
18336             ,p_NEW_ATTRIBUTE1                    => l_instance_hist_rec.NEW_ATTRIBUTE1
18337             ,p_OLD_ATTRIBUTE1                    => l_instance_hist_rec.OLD_ATTRIBUTE1
18338             ,p_NEW_ATTRIBUTE2                    => l_instance_hist_rec.NEW_ATTRIBUTE2
18339             ,p_OLD_ATTRIBUTE2                    => l_instance_hist_rec.OLD_ATTRIBUTE2
18340             ,p_NEW_ATTRIBUTE3                    => l_instance_hist_rec.NEW_ATTRIBUTE3
18341             ,p_OLD_ATTRIBUTE3                    => l_instance_hist_rec.OLD_ATTRIBUTE3
18342             ,p_NEW_ATTRIBUTE4                    => l_instance_hist_rec.NEW_ATTRIBUTE4
18343             ,p_OLD_ATTRIBUTE4                    => l_instance_hist_rec.OLD_ATTRIBUTE4
18344             ,p_NEW_ATTRIBUTE5                    => l_instance_hist_rec.NEW_ATTRIBUTE5
18345             ,p_OLD_ATTRIBUTE5                    => l_instance_hist_rec.OLD_ATTRIBUTE5
18346             ,p_NEW_ATTRIBUTE6                    => l_instance_hist_rec.NEW_ATTRIBUTE6
18347             ,p_OLD_ATTRIBUTE6                    => l_instance_hist_rec.OLD_ATTRIBUTE6
18348             ,p_NEW_ATTRIBUTE7                    => l_instance_hist_rec.NEW_ATTRIBUTE7
18349             ,p_OLD_ATTRIBUTE7                    => l_instance_hist_rec.OLD_ATTRIBUTE7
18350             ,p_NEW_ATTRIBUTE8                    => l_instance_hist_rec.NEW_ATTRIBUTE8
18351             ,p_OLD_ATTRIBUTE8                    => l_instance_hist_rec.OLD_ATTRIBUTE8
18352             ,p_NEW_ATTRIBUTE9                    => l_instance_hist_rec.NEW_ATTRIBUTE9
18353             ,p_OLD_ATTRIBUTE9                    => l_instance_hist_rec.OLD_ATTRIBUTE9
18354             ,p_NEW_ATTRIBUTE10                   => l_instance_hist_rec.NEW_ATTRIBUTE10
18355             ,p_OLD_ATTRIBUTE10                   => l_instance_hist_rec.OLD_ATTRIBUTE10
18356             ,p_NEW_ATTRIBUTE11                   => l_instance_hist_rec.NEW_ATTRIBUTE11
18357             ,p_OLD_ATTRIBUTE11                   => l_instance_hist_rec.OLD_ATTRIBUTE11
18358             ,p_NEW_ATTRIBUTE12                   => l_instance_hist_rec.NEW_ATTRIBUTE12
18359             ,p_OLD_ATTRIBUTE12                   => l_instance_hist_rec.OLD_ATTRIBUTE12
18360             ,p_NEW_ATTRIBUTE13                   => l_instance_hist_rec.NEW_ATTRIBUTE13
18361             ,p_OLD_ATTRIBUTE13                   => l_instance_hist_rec.OLD_ATTRIBUTE13
18362             ,p_NEW_ATTRIBUTE14                   => l_instance_hist_rec.NEW_ATTRIBUTE14
18363             ,p_OLD_ATTRIBUTE14                   => l_instance_hist_rec.OLD_ATTRIBUTE14
18364             ,p_NEW_ATTRIBUTE15                   => l_instance_hist_rec.NEW_ATTRIBUTE15
18365             ,p_OLD_ATTRIBUTE15                   => l_instance_hist_rec.OLD_ATTRIBUTE15
18366             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
18367             ,p_CREATION_DATE                     => SYSDATE
18368             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
18369             ,p_LAST_UPDATE_DATE                  => SYSDATE
18370             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
18371             ,p_OBJECT_VERSION_NUMBER             => 1
18372             ,p_OLD_INST_LOC_TYPE_CODE            => l_instance_hist_rec.OLD_INSTALL_LOCATION_TYPE_CODE
18373             ,p_NEW_INST_LOC_TYPE_CODE            => l_instance_hist_rec.NEW_INSTALL_LOCATION_TYPE_CODE
18374             ,p_OLD_INST_LOC_ID                   => l_instance_hist_rec.OLD_INSTALL_LOCATION_ID
18375             ,p_NEW_INST_LOC_ID                   => l_instance_hist_rec.NEW_INSTALL_LOCATION_ID
18376             ,p_OLD_INST_USAGE_CODE               => l_instance_hist_rec.OLD_INSTANCE_USAGE_CODE
18377             ,p_NEW_INST_USAGE_CODE               => l_instance_hist_rec.NEW_INSTANCE_USAGE_CODE
18378             ,p_OLD_last_vld_organization_id      => l_curr_instance_rec.LAST_VLD_ORGANIZATION_ID
18379             ,p_NEW_last_vld_organization_id      => l_last_vld_organization_id
18380             ,p_OLD_CONFIG_INST_REV_NUM           => l_instance_hist_rec.OLD_CONFIG_INST_REV_NUM
18381             ,p_NEW_CONFIG_INST_REV_NUM           => l_instance_hist_rec.NEW_CONFIG_INST_REV_NUM
18382             ,p_OLD_CONFIG_VALID_STATUS           => l_instance_hist_rec.OLD_CONFIG_VALID_STATUS
18383             ,p_NEW_CONFIG_VALID_STATUS           => l_instance_hist_rec.NEW_CONFIG_VALID_STATUS
18384             ,p_OLD_INSTANCE_DESCRIPTION          => l_instance_hist_rec.OLD_INSTANCE_DESCRIPTION
18385             ,p_NEW_INSTANCE_DESCRIPTION          => l_instance_hist_rec.NEW_INSTANCE_DESCRIPTION
18386             ,p_OLD_INSTALL_DATE                  => l_instance_hist_rec.OLD_INSTALL_DATE
18387             ,p_NEW_INSTALL_DATE                  => l_instance_hist_rec.NEW_INSTALL_DATE
18388             ,p_OLD_RETURN_BY_DATE                => l_instance_hist_rec.OLD_RETURN_BY_DATE
18389             ,p_NEW_RETURN_BY_DATE                => l_instance_hist_rec.NEW_RETURN_BY_DATE
18390             ,p_OLD_ACTUAL_RETURN_DATE            => l_instance_hist_rec.OLD_ACTUAL_RETURN_DATE
18391             ,p_NEW_ACTUAL_RETURN_DATE            => l_instance_hist_rec.NEW_ACTUAL_RETURN_DATE
18392             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_instance_hist_rec.OLD_LAST_OE_AGREEMENT_ID
18393             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_instance_hist_rec.NEW_LAST_OE_AGREEMENT_ID
18394 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_instance_hist_rec.OLD_LAST_OE_ORDER_LINE_ID
18395 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_instance_hist_rec.NEW_LAST_OE_ORDER_LINE_ID
18396 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID
18397 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID
18398 	    ,p_OLD_LAST_WIP_JOB_ID               => l_instance_hist_rec.OLD_LAST_WIP_JOB_ID
18399 	    ,p_NEW_LAST_WIP_JOB_ID               => l_instance_hist_rec.NEW_LAST_WIP_JOB_ID
18400 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_instance_hist_rec.OLD_LAST_PO_PO_LINE_ID
18401 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_instance_hist_rec.NEW_LAST_PO_PO_LINE_ID
18402 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_instance_hist_rec.OLD_LAST_PA_PROJECT_ID
18403 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_instance_hist_rec.NEW_LAST_PA_PROJECT_ID
18404 	    ,p_OLD_LAST_PA_TASK_ID          => l_instance_hist_rec.OLD_LAST_PA_TASK_ID
18405 	    ,p_NEW_LAST_PA_TASK_ID          => l_instance_hist_rec.NEW_LAST_PA_TASK_ID
18406 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_instance_hist_rec.OLD_LAST_TXN_LINE_DETAIL_ID
18407 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_instance_hist_rec.NEW_LAST_TXN_LINE_DETAIL_ID
18408 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_instance_hist_rec.OLD_LAST_OE_PO_NUMBER
18409 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_instance_hist_rec.NEW_LAST_OE_PO_NUMBER
18410  	    --start of parameters addition for eam integration--
18411 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_instance_hist_rec.OLD_NETWORK_ASSET_FLAG
18412 	    ,p_NEW_NETWORK_ASSET_FLAG             => l_instance_hist_rec.NEW_NETWORK_ASSET_FLAG
18413 	    ,p_OLD_MAINTAINABLE_FLAG              => l_instance_hist_rec.OLD_MAINTAINABLE_FLAG
18414 	    ,p_NEW_MAINTAINABLE_FLAG              => l_instance_hist_rec.NEW_MAINTAINABLE_FLAG
18415 	    ,p_OLD_PN_LOCATION_ID                 => l_instance_hist_rec.OLD_PN_LOCATION_ID
18416 	    ,p_NEW_PN_LOCATION_ID                 => l_instance_hist_rec.NEW_PN_LOCATION_ID
18417 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_instance_hist_rec.OLD_ASSET_CRITICALITY_CODE
18418 	    ,p_NEW_ASSET_CRITICALITY_CODE         => l_instance_hist_rec.NEW_ASSET_CRITICALITY_CODE
18419 	    ,p_OLD_CATEGORY_ID                    => l_instance_hist_rec.OLD_CATEGORY_ID
18420 	    ,p_NEW_CATEGORY_ID                    => l_instance_hist_rec.NEW_CATEGORY_ID
18421 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_instance_hist_rec.OLD_EQUIPMENT_GEN_OBJECT_ID
18422 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => l_instance_hist_rec.NEW_EQUIPMENT_GEN_OBJECT_ID
18423 	    ,p_OLD_INSTANTIATION_FLAG             => l_instance_hist_rec.OLD_INSTANTIATION_FLAG
18424 	    ,p_NEW_INSTANTIATION_FLAG             => l_instance_hist_rec.NEW_INSTANTIATION_FLAG
18425 	    ,p_OLD_LINEAR_LOCATION_ID             => l_instance_hist_rec.OLD_LINEAR_LOCATION_ID
18426 	    ,p_NEW_LINEAR_LOCATION_ID             => l_instance_hist_rec.NEW_LINEAR_LOCATION_ID
18427 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_instance_hist_rec.OLD_OPERATIONAL_LOG_FLAG
18428 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => l_instance_hist_rec.NEW_OPERATIONAL_LOG_FLAG
18429 	    ,p_OLD_CHECKIN_STATUS                 => l_instance_hist_rec.OLD_CHECKIN_STATUS
18430 	    ,p_NEW_CHECKIN_STATUS                 => l_instance_hist_rec.NEW_CHECKIN_STATUS
18431 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_instance_hist_rec.OLD_SUPPLIER_WARRANTY_EXP_DATE
18432 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => l_instance_hist_rec.NEW_SUPPLIER_WARRANTY_EXP_DATE
18433             ,p_OLD_ATTRIBUTE16                    => l_instance_hist_rec.OLD_ATTRIBUTE16
18434             ,p_NEW_ATTRIBUTE16                    => l_instance_hist_rec.NEW_ATTRIBUTE16
18435             ,p_OLD_ATTRIBUTE17                    => l_instance_hist_rec.OLD_ATTRIBUTE17
18436             ,p_NEW_ATTRIBUTE17                    => l_instance_hist_rec.NEW_ATTRIBUTE17
18437             ,p_OLD_ATTRIBUTE18                    => l_instance_hist_rec.OLD_ATTRIBUTE18
18438             ,p_NEW_ATTRIBUTE18                    => l_instance_hist_rec.NEW_ATTRIBUTE18
18439             ,p_OLD_ATTRIBUTE19                    => l_instance_hist_rec.OLD_ATTRIBUTE19
18440             ,p_NEW_ATTRIBUTE19                    => l_instance_hist_rec.NEW_ATTRIBUTE19
18441             ,p_OLD_ATTRIBUTE20                    => l_instance_hist_rec.OLD_ATTRIBUTE20
18442             ,p_NEW_ATTRIBUTE20                    => l_instance_hist_rec.NEW_ATTRIBUTE20
18443             ,p_OLD_ATTRIBUTE21                    => l_instance_hist_rec.OLD_ATTRIBUTE21
18444             ,p_NEW_ATTRIBUTE21                    => l_instance_hist_rec.NEW_ATTRIBUTE21
18445             ,p_OLD_ATTRIBUTE22                    => l_instance_hist_rec.OLD_ATTRIBUTE22
18446             ,p_NEW_ATTRIBUTE22                    => l_instance_hist_rec.NEW_ATTRIBUTE22
18447             ,p_OLD_ATTRIBUTE23                    => l_instance_hist_rec.OLD_ATTRIBUTE23
18448             ,p_NEW_ATTRIBUTE23                    => l_instance_hist_rec.NEW_ATTRIBUTE23
18449             ,p_OLD_ATTRIBUTE24                    => l_instance_hist_rec.OLD_ATTRIBUTE24
18450             ,p_NEW_ATTRIBUTE24                    => l_instance_hist_rec.NEW_ATTRIBUTE24
18451             ,p_OLD_ATTRIBUTE25                    => l_instance_hist_rec.OLD_ATTRIBUTE25
18452             ,p_NEW_ATTRIBUTE25                    => l_instance_hist_rec.NEW_ATTRIBUTE25
18453             ,p_OLD_ATTRIBUTE26                    => l_instance_hist_rec.OLD_ATTRIBUTE26
18454             ,p_NEW_ATTRIBUTE26                    => l_instance_hist_rec.NEW_ATTRIBUTE26
18455             ,p_OLD_ATTRIBUTE27                    => l_instance_hist_rec.OLD_ATTRIBUTE27
18456             ,p_NEW_ATTRIBUTE27                    => l_instance_hist_rec.NEW_ATTRIBUTE27
18457             ,p_OLD_ATTRIBUTE28                    => l_instance_hist_rec.OLD_ATTRIBUTE28
18458             ,p_NEW_ATTRIBUTE28                    => l_instance_hist_rec.NEW_ATTRIBUTE28
18459             ,p_OLD_ATTRIBUTE29                    => l_instance_hist_rec.OLD_ATTRIBUTE29
18460             ,p_NEW_ATTRIBUTE29                    => l_instance_hist_rec.NEW_ATTRIBUTE29
18461             ,p_OLD_ATTRIBUTE30                    => l_instance_hist_rec.OLD_ATTRIBUTE30
18462             ,p_NEW_ATTRIBUTE30                    => l_instance_hist_rec.NEW_ATTRIBUTE30
18463   	    --end of parameters addition for eam integration--
18464    -- Addition of columns for FA Integration
18465             ,p_OLD_PAYABLES_UNIT_PRICE            => l_instance_hist_rec.OLD_PAYABLES_UNIT_PRICE
18466             ,p_NEW_PAYABLES_UNIT_PRICE            => l_instance_hist_rec.NEW_PAYABLES_UNIT_PRICE
18467             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_instance_hist_rec.OLD_PAYABLES_CURRENCY_CODE
18468             ,p_NEW_PAYABLES_CURRENCY_CODE         => l_instance_hist_rec.NEW_PAYABLES_CURRENCY_CODE
18469             ,p_OLD_PURCHASE_UNIT_PRICE            => l_instance_hist_rec.OLD_PURCHASE_UNIT_PRICE
18470             ,p_NEW_PURCHASE_UNIT_PRICE            => l_instance_hist_rec.NEW_PURCHASE_UNIT_PRICE
18471             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_instance_hist_rec.OLD_PURCHASE_CURRENCY_CODE
18472             ,p_NEW_PURCHASE_CURRENCY_CODE         => l_instance_hist_rec.NEW_PURCHASE_CURRENCY_CODE
18473             ,p_OLD_SALES_UNIT_PRICE               => l_instance_hist_rec.OLD_SALES_UNIT_PRICE
18474             ,p_NEW_SALES_UNIT_PRICE               => l_instance_hist_rec.NEW_SALES_UNIT_PRICE
18475             ,p_OLD_SALES_CURRENCY_CODE            => l_instance_hist_rec.OLD_SALES_CURRENCY_CODE
18476             ,p_NEW_SALES_CURRENCY_CODE            => l_instance_hist_rec.NEW_SALES_CURRENCY_CODE
18477             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_instance_hist_rec.OLD_OPERATIONAL_STATUS_CODE
18478             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_instance_hist_rec.NEW_OPERATIONAL_STATUS_CODE
18479     -- End addition of columns for FA Integration
18480             -- Begin Add Code for Siebel Genesis Project
18481             ,p_OLD_SOURCE_CODE                   => l_instance_hist_rec.OLD_SOURCE_CODE
18482             ,p_NEW_SOURCE_CODE                   => l_instance_hist_rec.NEW_SOURCE_CODE
18483             -- End Add Code for Siebel Genesis Project
18484             );
18485 
18486          END IF;
18487       END; -- END OF HISTORY
18488       -- End of modification for Bug#2547034 on 09/20/02 - rtalluri
18489       -- Calling eam API to log instance update event
18490        IF l_eam_item
18491        THEN
18492           IF l_ins_hist_id IS NOT NULL
18493           THEN
18494              l_instance_history_id:=l_ins_hist_id;
18495           ELSE
18496              l_instance_history_id:=l_csi_item_instance_h_id;
18497           END IF;
18498           eam_asset_log_pvt.instance_update_event
18499           (p_api_version         => p_api_version
18500           ,p_init_msg_list       => fnd_api.g_false
18501           ,p_commit              => fnd_api.g_false
18502           ,p_validation_level    => fnd_api.g_valid_level_full
18503           ,x_return_status       => x_return_status
18504           ,x_msg_count           => x_msg_count
18505           ,x_msg_data            => x_msg_data
18506           ,p_instance_id         => p_instance_rec.instance_id
18507           ,p_ref_id              => l_instance_history_id
18508           ,p_event_date          => sysdate);
18509          IF NOT(x_return_status = fnd_api.g_ret_sts_success)
18510          THEN
18511             csi_gen_utility_pvt.put_line('Error from eam_asset_log_pvt.instance_update_event API');
18512             RAISE fnd_api.g_exc_error;
18513          END IF;
18514        END IF;
18515       -- Calling eam API to log instance update event
18516 -- Check for any child instances in the csi ii relationships table by passing the parent instance id. If there exists
18517 -- any child instances then inherit the changed attributes with the changes in parent.
18518 
18519         IF  l_curr_instance_rec.active_end_date IS NULL
18520         THEN l_curr_instance_rec.active_end_date:=FND_API.G_MISS_DATE;
18521         END IF;
18522 
18523         IF  l_curr_instance_rec.location_type_code IS NULL
18524         THEN l_curr_instance_rec.location_type_code:=FND_API.G_MISS_CHAR;
18525         END IF;
18526 
18527         IF  l_curr_instance_rec.location_id IS NULL
18528         THEN l_curr_instance_rec.location_id:=FND_API.G_MISS_NUM;
18529         END IF;
18530 
18531         IF  l_curr_instance_rec.inv_organization_id IS NULL
18532         THEN l_curr_instance_rec.inv_organization_id:=FND_API.G_MISS_NUM;
18533         END IF;
18534 
18535         IF  l_curr_instance_rec.inv_subinventory_name IS NULL
18536         THEN l_curr_instance_rec.inv_subinventory_name:=FND_API.G_MISS_CHAR;
18537         END IF;
18538 
18539         IF  l_curr_instance_rec.inv_locator_id IS NULL
18540         THEN l_curr_instance_rec.inv_locator_id:=FND_API.G_MISS_NUM;
18541         END IF;
18542 
18543         IF l_curr_instance_rec.pa_project_id IS NULL
18544         THEN l_curr_instance_rec.pa_project_id:=FND_API.G_MISS_NUM;
18545         END IF;
18546 
18547         IF  l_curr_instance_rec.pa_project_task_id IS NULL
18548         THEN l_curr_instance_rec.pa_project_task_id:=FND_API.G_MISS_NUM;
18549         END IF;
18550 
18551         IF  l_curr_instance_rec.in_transit_order_line_id IS NULL
18552         THEN l_curr_instance_rec.in_transit_order_line_id:=FND_API.G_MISS_NUM;
18553         END IF;
18554 
18555         IF l_curr_instance_rec.wip_job_id IS NULL
18556         THEN l_curr_instance_rec.wip_job_id:=FND_API.G_MISS_NUM;
18557         END IF;
18558 
18559         IF  l_curr_instance_rec.po_order_line_id IS NULL
18560         THEN l_curr_instance_rec.po_order_line_id:=FND_API.G_MISS_NUM;
18561         END IF;
18562 
18563         IF  l_curr_instance_rec.install_location_type_code IS NULL --1st change
18564         THEN l_curr_instance_rec.install_location_type_code:=FND_API.G_MISS_CHAR;
18565         END IF;
18566 
18567         IF  l_curr_instance_rec.install_location_id IS NULL
18568         THEN l_curr_instance_rec.install_location_id:=FND_API.G_MISS_NUM;
18569         END IF;
18570         --
18571         -- srramakr Need to inherit Install_date to the children
18572         -- If any of the location attributes or active_end_date are changing for an instance, then check are there
18573         -- any children associated to this instance. If there exists any, then change the location attributes for child instances
18574         IF (    p_instance_rec.active_end_date IS NOT NULL
18575             AND p_instance_rec.active_end_date           <>l_curr_instance_rec.active_end_date
18576             AND p_instance_rec.active_end_date           <>FND_API.G_MISS_DATE
18577             )
18578             OR
18579            (    p_instance_rec.active_end_date IS NULL AND
18580                 nvl(p_instance_rec.active_end_date,fnd_api.g_miss_date) <> l_curr_instance_rec.active_end_date
18581            )
18582            OR
18583            (     p_instance_rec.system_id IS NOT NULL
18584              AND p_instance_rec.system_id <> FND_API.G_MISS_NUM
18585              AND p_instance_rec.system_id <> nvl(l_curr_instance_rec.system_id,FND_API.G_MISS_NUM)
18586            )
18587            OR
18588            (    p_instance_rec.system_id IS NULL
18589             AND l_curr_instance_rec.system_id IS NOT NULL
18590            )
18591            OR
18592            (    p_instance_rec.location_type_code IS NOT NULL
18593             AND p_instance_rec.location_type_code        <>FND_API.G_MISS_CHAR
18594             AND p_instance_rec.location_type_code        <>l_curr_instance_rec.location_type_code
18595             )
18596            OR
18597            (    p_instance_rec.location_id IS NOT NULL
18598             AND p_instance_rec.location_id               <>FND_API.G_MISS_NUM
18599             AND p_instance_rec.location_id               <>l_curr_instance_rec.location_id
18600             )
18601            OR
18602            (    p_instance_rec.inv_organization_id IS NOT NULL
18603             AND p_instance_rec.inv_organization_id       <>FND_API.G_MISS_NUM
18604             AND p_instance_rec.inv_organization_id       <>l_curr_instance_rec.inv_organization_id
18605             )
18606            OR
18607            (    p_instance_rec.inv_subinventory_name IS NOT NULL
18608             AND p_instance_rec.inv_subinventory_name     <>FND_API.G_MISS_CHAR
18609             AND p_instance_rec.inv_subinventory_name     <>l_curr_instance_rec.inv_subinventory_name
18610             )
18611            OR
18612            (    p_instance_rec.inv_locator_id IS NOT NULL
18613             AND p_instance_rec.inv_locator_id            <>FND_API.G_MISS_NUM
18614             AND p_instance_rec.inv_locator_id            <>l_curr_instance_rec.inv_locator_id
18615             )
18616            OR
18617            (    p_instance_rec.pa_project_id IS NOT NULL
18618             AND p_instance_rec.pa_project_id             <>FND_API.G_MISS_NUM
18619             AND p_instance_rec.pa_project_id             <>l_curr_instance_rec.pa_project_id
18620             )
18621            OR
18622            (    p_instance_rec.pa_project_task_id IS NOT NULL
18623             AND p_instance_rec.pa_project_task_id        <>FND_API.G_MISS_NUM
18624             AND p_instance_rec.pa_project_task_id        <>l_curr_instance_rec.pa_project_task_id
18625             )
18626            OR
18627            (    p_instance_rec.in_transit_order_line_id IS NOT NULL
18628             AND p_instance_rec.in_transit_order_line_id  <>FND_API.G_MISS_NUM
18629             AND p_instance_rec.in_transit_order_line_id  <>l_curr_instance_rec.in_transit_order_line_id
18630             )
18631            OR
18632            (    p_instance_rec.wip_job_id IS NOT NULL
18633             AND p_instance_rec.wip_job_id                <>FND_API.G_MISS_NUM
18634             AND p_instance_rec.wip_job_id                <>l_curr_instance_rec.wip_job_id
18635             )
18636            OR
18637            (    p_instance_rec.po_order_line_id IS NOT NULL
18638             AND p_instance_rec.po_order_line_id          <>FND_API.G_MISS_NUM
18639             AND p_instance_rec.po_order_line_id          <>l_curr_instance_rec.po_order_line_id
18640             )
18641            OR
18642            (    p_instance_rec.install_location_type_code IS NOT NULL
18643             AND p_instance_rec.install_location_type_code <>FND_API.G_MISS_CHAR
18644             AND p_instance_rec.install_location_type_code <>l_curr_instance_rec.install_location_type_code
18645             )
18646            OR
18647            (    p_instance_rec.install_location_id IS NOT NULL
18648             AND p_instance_rec.install_location_id    <>FND_API.G_MISS_NUM
18649             AND p_instance_rec.install_location_id    <>l_curr_instance_rec.install_location_id
18650             )
18651            OR
18652            (    p_instance_rec.install_location_id IS NULL AND
18653                 nvl(p_instance_rec.install_location_id,fnd_api.g_miss_num) <> l_curr_instance_rec.install_location_id AND
18654                 p_instance_rec.install_location_type_code IS NULL AND
18655                 nvl(p_instance_rec.install_location_type_code,fnd_api.g_miss_char) <> l_curr_instance_rec.install_location_type_code
18656            )
18657            OR
18658            (    p_instance_rec.instance_status_id IS NOT NULL
18659             AND p_instance_rec.instance_status_id     <>FND_API.G_MISS_NUM
18660             AND p_instance_rec.instance_status_id     <>l_curr_instance_rec.instance_status_id
18661             )
18662            OR
18663            (    (p_instance_rec.install_date IS NULL AND l_curr_instance_rec.install_date IS NOT NULL) OR
18664                 (p_instance_rec.install_date IS NOT NULL AND
18665                  p_instance_rec.install_date <> FND_API.G_MISS_DATE AND
18666                  nvl(l_curr_instance_rec.install_date,FND_API.G_MISS_DATE) <> p_instance_rec.install_date)
18667            )
18668            OR
18669            (    p_instance_rec.operational_status_code IS NOT NULL
18670             AND p_instance_rec.operational_status_code <> FND_API.G_MISS_CHAR
18671             AND p_instance_rec.operational_status_code <> NVL(l_curr_instance_rec.operational_status_code,'$$##$$')
18672             )
18673         THEN
18674        -- Added for bug 2957236
18675             IF  p_instance_rec.instance_status_id IS NOT NULL
18676             AND p_instance_rec.instance_status_id     <>FND_API.G_MISS_NUM
18677             AND p_instance_rec.instance_status_id     <>l_curr_instance_rec.instance_status_id
18678             THEN
18679               l_original_status_id:=l_curr_instance_rec.instance_status_id;
18680             ELSE
18681               l_original_status_id:=fnd_api.g_miss_num;
18682             END IF;
18683        -- End addition for bug 2957236
18684            --
18685            l_unexpire := FND_API.G_FALSE;
18686            IF l_curr_instance_rec.active_end_date <> FND_API.G_MISS_DATE AND
18687               l_curr_instance_rec.active_end_date <= sysdate THEN
18688               IF ((p_instance_rec.active_end_date IS NULL) OR
18689                   (p_instance_rec.active_end_date IS NOT NULL AND p_instance_rec.active_end_date <> FND_API.G_MISS_DATE AND
18690                     p_instance_rec.active_end_date > sysdate)) THEN
18691                  l_unexpire := FND_API.G_TRUE;
18692               END IF;
18693            END IF;
18694            -- System_id cascade
18695            l_original_system_id := fnd_api.g_miss_num;
18696            IF p_instance_rec.system_id IS NOT NULL AND
18697               p_instance_rec.system_id <> FND_API.G_MISS_NUM AND
18698               p_instance_rec.system_id <> nvl(l_curr_instance_rec.system_id,-999) THEN
18699               l_original_system_id := l_curr_instance_rec.system_id;
18700            ELSIF p_instance_rec.system_id IS NULL AND
18701                  l_curr_instance_rec.system_id IS NOT NULL THEN
18702               l_original_system_id := l_curr_instance_rec.system_id;
18703            END IF;
18704            -- End of System_id cascade
18705            -- Install Date cascade
18706            l_install_date := fnd_api.g_miss_date;
18707            IF p_instance_rec.install_date IS NOT NULL AND
18708               p_instance_rec.install_date <> FND_API.G_MISS_DATE AND
18709               p_instance_rec.install_date <> nvl(l_curr_instance_rec.install_date,fnd_api.g_miss_date) THEN
18710               l_orig_install_date := l_curr_instance_rec.install_date;
18711            ELSIF p_instance_rec.install_date IS NULL AND
18712                  l_curr_instance_rec.install_date IS NOT NULL THEN
18713               l_orig_install_date := l_curr_instance_rec.install_date;
18714            END IF;
18715            -- End of Install Date cascade
18716 
18717            update_child_instance_location(p_api_version         =>   p_api_version,
18718                                           p_commit              =>   p_commit,
18719                                           p_init_msg_list       =>   p_init_msg_list,
18720                                           p_validation_level    =>   p_validation_level,
18721                                           p_instance_rec        =>   p_instance_rec,
18722                                           p_original_status_id  =>   l_original_status_id,
18723                                           p_original_system_id  =>   l_original_system_id,
18724                                           p_txn_rec             =>   p_txn_rec,
18725                                           x_instance_id_lst     =>   x_instance_id_lst,
18726                                           p_unexpire            =>   l_unexpire,
18727                                           p_oks_txn_inst_tbl    =>   p_oks_txn_inst_tbl,
18728                                           p_child_inst_tbl      =>   p_child_inst_tbl,
18729                                           p_orig_install_date   =>   l_orig_install_date,
18730                                           x_return_status       =>   x_return_status,
18731                                           x_msg_count           =>   x_msg_count,
18732                                           x_msg_data            =>   x_msg_data
18733                                           );
18734             --
18735             --
18736             IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
18737                csi_gen_utility_pvt.put_line('Error from UPDATE_CHILD_INSTANCE_LOCATION..');
18738                RAISE FND_API.G_EXC_ERROR;
18739             END IF;
18740 
18741        END IF;
18742        --
18743        --
18744        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
18745             RAISE FND_API.G_EXC_ERROR;
18746        END IF;
18747 
18748        FND_File.Put_Line(Fnd_File.LOG,'Return Status is' || x_return_status);
18749        IF nvl(p_txn_rec.transaction_status_code, fnd_api.g_miss_char) = fnd_api.g_miss_char THEN
18750 
18751          p_txn_rec.transaction_status_code := l_txn_status;
18752 
18753          update_txn_status(
18754            px_txn_rec       => p_txn_rec,
18755            x_return_status  => x_return_status);
18756 
18757          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
18758            RAISE FND_API.G_EXC_ERROR;
18759          END IF;
18760 
18761        END IF;
18762 
18763        END IF;
18764 
18765       -- End of API body
18766 
18767       -- Standard check of p_commit.
18768       IF FND_API.To_Boolean( p_commit ) THEN
18769             COMMIT WORK;
18770       END IF;
18771 
18772       -- Standard call to get message count and if count is  get message info.
18773       FND_MSG_PUB.Count_And_Get
18774             (p_count       =>       x_msg_count ,
18775              p_data       =>       x_msg_data
18776             );
18777 
18778 EXCEPTION
18779 
18780     WHEN FND_API.G_EXC_ERROR THEN
18781            IF FND_API.To_Boolean( p_commit )
18782            THEN
18783             ROLLBACK TO update_item_instance_pvt;
18784            END IF;
18785             x_return_status := FND_API.G_RET_STS_ERROR ;
18786             FND_MSG_PUB.Count_And_Get
18787                 (   p_count               =>      x_msg_count,
18788                     p_data                =>      x_msg_data
18789                 );
18790 
18791       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
18792 
18793            IF FND_API.To_Boolean( p_commit )
18794            THEN
18795             ROLLBACK TO update_item_instance_pvt;
18796            END IF;
18797             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
18798             FND_MSG_PUB.Count_And_Get
18799                 (   p_count               =>      x_msg_count,
18800                     p_data                =>      x_msg_data
18801                 );
18802       WHEN OTHERS THEN
18803            IF FND_API.To_Boolean( p_commit )
18804            THEN
18805             ROLLBACK TO update_item_instance_pvt;
18806            END IF;
18807             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
18808 
18809             IF     FND_MSG_PUB.Check_Msg_Level
18810                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
18811             THEN
18812                     FND_MSG_PUB.Add_Exc_Msg
18813                     (      G_PKG_NAME            ,
18814                           l_api_name
18815                     );
18816             END IF;
18817             FND_MSG_PUB.Count_And_Get
18818                 (   p_count               =>      x_msg_count,
18819                     p_data                =>      x_msg_data
18820                 );
18821 
18822 END Update_Item_Instance;
18823 
18824 /*---------------------------------------------------*/
18825 /* Procedure name: expire_child_instances            */
18826 /* Description   : procedure for                     */
18827 /*                 Expiring all child Instance       */
18828 /*                 associated with the parent        */
18829 /*---------------------------------------------------*/
18830 
18831 PROCEDURE expire_child_instances
18832    (   p_api_version         IN     NUMBER,
18833        p_commit              IN     VARCHAR2,
18834        p_init_msg_list       IN     VARCHAR2,
18835        p_validation_level    IN     NUMBER,
18836        p_instance_rec        IN     csi_datastructures_pub.instance_rec,
18837        p_expire_children     IN     VARCHAR2,
18838        p_txn_rec             IN OUT NOCOPY csi_datastructures_pub.transaction_rec,
18839        x_instance_id_lst     OUT    NOCOPY csi_datastructures_pub.id_tbl,
18840        p_oks_txn_inst_tbl    IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl,
18841        x_return_status       OUT    NOCOPY VARCHAR2,
18842        x_msg_count           OUT    NOCOPY NUMBER,
18843        x_msg_data            OUT    NOCOPY VARCHAR2
18844    ) IS
18845     l_api_name               CONSTANT VARCHAR2(30)   := 'EXPIRE_CHILD_INSTANCE_PVT';
18846     l_api_version            CONSTANT NUMBER         := 1.0;
18847     l_debug_level            NUMBER;
18848     l_instance_id            NUMBER;
18849     l_dummy                  NUMBER;
18850     l_instance_rec           csi_datastructures_pub.instance_rec:=p_instance_rec;
18851     l_object_version_number  NUMBER;
18852     l_return_value           BOOLEAN;
18853     l_csi_item_instance_h_id NUMBER;
18854     l_full_dump_frequency    NUMBER;
18855     l_mod_value              NUMBER;
18856     l_dump_flag              VARCHAR2(1);
18857     l_rel_tbl                csi_datastructures_pub.ii_relationship_tbl;
18858     p_rel_query_rec          csi_datastructures_pub.relationship_query_rec;
18859     l_ii_relationship_level_tbl csi_ii_relationships_pvt.ii_relationship_level_tbl;
18860 
18861 CURSOR curr_instance_rec(p_instance_id IN NUMBER)  IS
18862            SELECT
18863                  INSTANCE_ID,
18864                  INSTANCE_NUMBER,
18865                  EXTERNAL_REFERENCE,
18866                  INVENTORY_ITEM_ID,
18867                  NULL VLD_ORGANIZATION_ID,
18868                  INVENTORY_REVISION,
18869                  INV_MASTER_ORGANIZATION_ID,
18870                  SERIAL_NUMBER,
18871                  MFG_SERIAL_NUMBER_FLAG,
18872                  LOT_NUMBER,
18873                  QUANTITY,
18874                  UNIT_OF_MEASURE,
18875                  ACCOUNTING_CLASS_CODE,
18876                  INSTANCE_CONDITION_ID,
18877                  INSTANCE_STATUS_ID,
18878                  CUSTOMER_VIEW_FLAG,
18879                  MERCHANT_VIEW_FLAG,
18880                  SELLABLE_FLAG,
18881                  SYSTEM_ID,
18882                  INSTANCE_TYPE_CODE,
18883                  ACTIVE_START_DATE,
18884                  ACTIVE_END_DATE,
18885                  LOCATION_TYPE_CODE,
18886                  LOCATION_ID,
18887                  INV_ORGANIZATION_ID,
18888                  INV_SUBINVENTORY_NAME,
18889                  INV_LOCATOR_ID,
18890                  PA_PROJECT_ID,
18891                  PA_PROJECT_TASK_ID,
18892                  IN_TRANSIT_ORDER_LINE_ID,
18893                  WIP_JOB_ID,
18894                  PO_ORDER_LINE_ID,
18895                  LAST_OE_ORDER_LINE_ID,
18896                  LAST_OE_RMA_LINE_ID,
18897                  LAST_PO_PO_LINE_ID,
18898                  LAST_OE_PO_NUMBER,
18899                  LAST_WIP_JOB_ID,
18900                  LAST_PA_PROJECT_ID,
18901                  LAST_PA_TASK_ID,
18902                  LAST_OE_AGREEMENT_ID,
18903                  INSTALL_DATE,
18904                  MANUALLY_CREATED_FLAG,
18905                  RETURN_BY_DATE,
18906                  ACTUAL_RETURN_DATE,
18907                  CREATION_COMPLETE_FLAG,
18908                  COMPLETENESS_FLAG,
18909                  NULL VERSION_LABEL,
18910                  NULL VERSION_LABEL_DESCRIPTION,
18911                  CONTEXT,
18912                  ATTRIBUTE1,
18913                  ATTRIBUTE2,
18914                  ATTRIBUTE3,
18915                  ATTRIBUTE4,
18916                  ATTRIBUTE5,
18917                  ATTRIBUTE6,
18918                  ATTRIBUTE7,
18919                  ATTRIBUTE8,
18920                  ATTRIBUTE9,
18921                  ATTRIBUTE10,
18922                  ATTRIBUTE11,
18923                  ATTRIBUTE12,
18924                  ATTRIBUTE13,
18925                  ATTRIBUTE14,
18926                  ATTRIBUTE15,
18927                  OBJECT_VERSION_NUMBER,
18928                  LAST_TXN_LINE_DETAIL_ID,
18929                  INSTALL_LOCATION_TYPE_CODE,
18930                  INSTALL_LOCATION_ID,
18931                  INSTANCE_USAGE_CODE,
18932                  CONFIG_INST_REV_NUM,
18933                  CONFIG_VALID_STATUS,
18934                  INSTANCE_DESCRIPTION,
18935 		 --start of column addition for eam integration--
18936 		 NETWORK_ASSET_FLAG,
18937 		 MAINTAINABLE_FLAG,
18938 		 PN_LOCATION_ID,
18939 		 ASSET_CRITICALITY_CODE,
18940 		 CATEGORY_ID,
18941 		 EQUIPMENT_GEN_OBJECT_ID,
18942 		 INSTANTIATION_FLAG,
18943 		 LINEAR_LOCATION_ID,
18944 		 OPERATIONAL_LOG_FLAG,
18945 		 CHECKIN_STATUS,
18946 		 SUPPLIER_WARRANTY_EXP_DATE,
18947 		 ATTRIBUTE16,
18948 		 ATTRIBUTE17,
18949 		 ATTRIBUTE18,
18950 		 ATTRIBUTE19,
18951 		 ATTRIBUTE20,
18952 		 ATTRIBUTE21,
18953 		 ATTRIBUTE22,
18954 		 ATTRIBUTE23,
18955 		 ATTRIBUTE24,
18956 		 ATTRIBUTE25,
18957 		 ATTRIBUTE26,
18958 		 ATTRIBUTE27,
18959 		 ATTRIBUTE28,
18960 		 ATTRIBUTE29,
18961 		 ATTRIBUTE30,
18962 		 --end of column addition for eam integration--
18963                -- Addition of columns for FA Integration
18964                  PURCHASE_UNIT_PRICE,
18965                  PURCHASE_CURRENCY_CODE,
18966                  PAYABLES_UNIT_PRICE,
18967                  PAYABLES_CURRENCY_CODE,
18968                  SALES_UNIT_PRICE,
18969                  SALES_CURRENCY_CODE,
18970                  OPERATIONAL_STATUS_CODE,
18971                -- End addition of columns for FA Integration
18972                  SOURCE_CODE -- Added Code for Siebel Genesis Project
18973            FROM  csi_item_instances
18974            WHERE instance_id = p_instance_id
18975            FOR UPDATE OF OBJECT_VERSION_NUMBER ;
18976 
18977 CURSOR instance_csr (p_ins_id IN NUMBER) IS
18978       SELECT  *
18979       FROM    csi_item_instances
18980       WHERE   instance_id = p_ins_id;
18981 
18982 l_curr_instance_rec     curr_instance_rec%ROWTYPE;
18983 l_instance_csr             instance_csr%ROWTYPE;
18984 l_temp                     VARCHAR2(1);
18985 l_temp_date                DATE;
18986 l_msg_count                NUMBER;
18987 l_msg_index                NUMBER;
18988 l_msg_dummy                NUMBER;
18989 l_oks_txn_type             VARCHAR2(3);
18990 l_eam_item                 BOOLEAN := FALSE;
18991 l_vld_org                  NUMBER;
18992 l_maintenance_object_type  NUMBER := 3;
18993 l_ins_hist_id              NUMBER;
18994 l_instance_history_id      NUMBER;
18995 l_valid                    BOOLEAN     := TRUE;
18996 l_creation_flag            VARCHAR2(1);
18997 BEGIN
18998       -- Standard Start of API savepoint
18999         SAVEPOINT   expire_child_instance_pvt;
19000 
19001       -- Standard call to check for call compatibility.
19002         IF NOT FND_API.Compatible_API_Call (l_api_version,
19003                                             p_api_version,
19004                                             l_api_name,
19005                                             G_PKG_NAME   )
19006         THEN
19007               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
19008         END IF;
19009 
19010       -- Initialize message list if p_init_msg_list is set to TRUE.
19011         IF FND_API.to_Boolean( p_init_msg_list ) THEN
19012               FND_MSG_PUB.initialize;
19013         END IF;
19014 
19015       --  Initialize API return status to success
19016         x_return_status := FND_API.G_RET_STS_SUCCESS;
19017 
19018         -- Check the profile option debug_level for debug message reporting
19019         l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
19020 
19021         -- If debug_level = 1 then dump the procedure name
19022         IF (l_debug_level > 0) THEN
19023             csi_gen_utility_pvt.put_line ( 'expire_child_instance_pvt');
19024         END IF;
19025 
19026         -- If the debug level = 2 then dump all the parameters values.
19027         IF (l_debug_level >1) THEN
19028             csi_gen_utility_pvt.put_line ( 'expire_child_instance_pvt :'||
19029                                             p_api_version          ||'-'||
19030                                             p_commit               ||'-'||
19031                                             p_init_msg_list        );
19032         END IF;
19033 
19034        -- Start API body
19035        p_rel_query_rec.object_id := p_instance_rec.instance_id;
19036        p_rel_query_rec.relationship_type_code := 'COMPONENT-OF';
19037        --
19038       IF p_rel_query_rec.object_id IS NOT NULL AND
19039          p_rel_query_rec.object_id <> FND_API.G_MISS_NUM THEN
19040          csi_ii_relationships_pvt.Get_Children
19041           ( p_relationship_query_rec   => p_rel_query_rec,
19042             p_rel_tbl                  => l_rel_tbl,
19043             p_depth                    => NULL,
19044             p_active_relationship_only => FND_API.G_TRUE,
19045             p_time_stamp               => FND_API.G_MISS_DATE,
19046             p_get_dfs                  => FND_API.G_FALSE,
19047             p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
19048             x_return_status            => x_return_status,
19049             x_msg_count                => x_msg_count,
19050             x_msg_data                 => x_msg_data
19051           );
19052          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19053             FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
19054             FND_MSG_PUB.Add;
19055             RAISE FND_API.G_EXC_ERROR;
19056          END IF;
19057       END IF;
19058        --
19059        -- FOR l_child_instance_id IN child_instances
19060        csi_gen_utility_pvt.put_line('Child 2 count is '||to_char(l_rel_tbl.count));
19061        IF l_rel_tbl.count > 0 THEN
19062           FOR j IN l_rel_tbl.FIRST .. l_rel_tbl.LAST
19063           LOOP
19064               -- Opening Cursor to retrieve Child Id records Details
19065 
19066                     OPEN curr_instance_rec(l_rel_tbl(j).subject_id);
19067                          FETCH curr_instance_rec INTO l_curr_instance_rec;
19068                                IF curr_instance_rec%NOTFOUND THEN
19069                                        FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
19070                                        FND_MSG_PUB.ADD;
19071                                        RAISE FND_API.G_EXC_ERROR;
19072                                END IF;
19073                    CLOSE curr_instance_rec;
19074 
19075 --  Added by sk for bug 2151760
19076      IF (( p_instance_rec.active_end_date IS NOT NULL) AND (p_instance_rec.active_end_date < SYSDATE))
19077       AND p_instance_rec.active_end_date <> fnd_api.g_miss_date
19078      THEN
19079        l_temp_date:= p_instance_rec.active_end_date;
19080        BEGIN
19081         SELECT 'x'
19082         INTO   l_temp
19083         FROM   csi_inst_transactions_v
19084         WHERE  instance_id=l_curr_instance_rec.instance_id
19085         AND    transaction_date>p_instance_rec.active_end_date
19086         AND    ROWNUM=1;
19087 
19088         IF l_temp IS NOT NULL
19089         THEN
19090            x_return_status := FND_API.G_RET_STS_ERROR ;
19091            FND_MESSAGE.Set_Name('CSI', 'CSI_CHILD_HAS_TXN');
19092            FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_curr_instance_rec.instance_number);
19093            FND_MSG_PUB.ADD;
19094            RAISE FND_API.G_EXC_ERROR;
19095         END IF;
19096        EXCEPTION
19097          WHEN FND_API.G_EXC_ERROR THEN
19098               RAISE FND_API.G_EXC_ERROR;
19099          WHEN OTHERS THEN
19100            NULL;
19101        END;
19102      ELSE
19103        l_temp_date:=SYSDATE;
19104      END IF;
19105 -- End addition by sk for bug 2151760
19106        l_instance_rec.object_version_number := l_curr_instance_rec.object_version_number + 1;
19107       -- l_instance_rec.instance_status_id    := 1;
19108 
19109      -- Added by sguthiva for bug 2520978
19110      -- Modified by srramakr for enhancement 2315522.
19111      -- This will allow the user to pass a Terminable status during expiration.
19112      IF p_instance_rec.instance_status_id IS NOT NULL AND
19113         p_instance_rec.instance_status_id <> fnd_api.g_miss_num THEN
19114         IF NOT (CSI_Item_Instance_vld_pvt.val_inst_ter_flag(
19115                                             p_instance_rec.instance_status_id)) THEN
19116            FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_TERM_STATUS');
19117            FND_MSG_PUB.ADD;
19118            RAISE FND_API.G_EXC_ERROR;
19119         END IF;
19120         l_instance_rec.instance_status_id := p_instance_rec.instance_status_id;
19121      ELSE
19122         l_instance_rec.instance_status_id := fnd_profile.value('CSI_SYS_TERM_INST_STATUS_ID');
19123         IF  l_instance_rec.instance_status_id IS NULL
19124         OR l_instance_rec.instance_status_id=fnd_api.g_miss_num
19125         THEN
19126            l_instance_rec.instance_status_id := 1;
19127         END IF;
19128      END IF;
19129      -- End addition by sguthiva for bug 2520978.
19130 
19131         -- Added the following code for eam integration
19132            IF p_instance_rec.vld_organization_id IS NULL OR
19133               p_instance_rec.vld_organization_id = fnd_api.g_miss_num
19134            THEN
19135              BEGIN
19136               SELECT last_vld_organization_id
19137                 INTO l_vld_org
19138                 FROM csi_item_instances
19139                WHERE instance_id = p_instance_rec.instance_id;
19140              EXCEPTION
19141                WHEN NO_DATA_FOUND THEN
19142                 fnd_message.set_name('CSI','CSI_API_INVALID_INSTANCE_ID');
19143                 fnd_message.set_token('INSTANCE_ID',p_instance_rec.instance_id);
19144                 fnd_msg_pub.ADD;
19145              END;
19146            ELSE
19147              l_vld_org := p_instance_rec.vld_organization_id;
19148            END IF;
19149 
19150            IF csi_item_instance_vld_pvt.Check_for_eam_item
19151               (p_inventory_item_id  => l_curr_instance_rec.inventory_item_id,
19152                p_organization_id    => l_vld_org)
19153            THEN
19154              l_eam_item := TRUE;
19155            END IF;
19156 
19157            IF l_eam_item AND
19158              (l_temp_date IS NOT NULL AND
19159               l_temp_date <> fnd_api.g_miss_date)
19160            THEN
19161             IF NOT eam_common_utilities_pvt.check_deactivate
19162               (p_maintenance_object_id   => p_instance_rec.instance_id
19163               ,p_maintenance_object_type => l_maintenance_object_type)
19164             THEN
19165               csi_gen_utility_pvt.put_line('Error from eam_common_utilities_pvt.check_deactivate API ');
19166               RAISE fnd_api.g_exc_error;
19167             END IF;
19168            END IF;
19169         -- End code addition for eam integration
19170     -- validate instance status id
19171        IF NVL(l_instance_rec.instance_status_id,fnd_api.g_miss_num) <> fnd_api.g_miss_num
19172        THEN
19173          csi_item_instance_vld_pvt.is_valid_status(
19174            p_instance_status_id     => l_instance_rec.instance_status_id,
19175            p_creation_complete_flag => l_creation_flag,
19176            l_return_value           => l_valid);
19177           IF NOT(l_valid)
19178           THEN
19179              RAISE fnd_api.g_exc_error;
19180           END IF;
19181         END IF;
19182 
19183         IF l_instance_rec.instance_status_id IS NOT NULL AND
19184            l_instance_rec.instance_status_id <> FND_API.G_MISS_NUM AND
19185            l_instance_rec.instance_status_id <> l_curr_instance_rec.instance_status_id
19186         THEN
19187            IF NOT csi_item_instance_vld_pvt.is_status_updateable
19188                   (p_instance_status => l_instance_rec.instance_status_id
19189                   ,p_current_status  => l_curr_instance_rec.instance_status_id)
19190            THEN
19191              RAISE fnd_api.g_exc_error;
19192            END IF;
19193         END IF;
19194 
19195        CSI_ITEM_INSTANCES_PKG.Update_Row
19196        (  p_INSTANCE_ID                 => l_rel_tbl(j).subject_id,
19197           p_INSTANCE_NUMBER             => FND_API.G_MISS_CHAR,
19198           p_EXTERNAL_REFERENCE          => FND_API.G_MISS_CHAR,
19199           p_INVENTORY_ITEM_ID           => FND_API.G_MISS_NUM,
19200           p_INVENTORY_REVISION          => FND_API.G_MISS_CHAR,
19201           p_INV_MASTER_ORGANIZATION_ID  => FND_API.G_MISS_NUM,
19202           p_SERIAL_NUMBER               => FND_API.G_MISS_CHAR,
19203           p_MFG_SERIAL_NUMBER_FLAG      => FND_API.G_MISS_CHAR,
19204           p_LOT_NUMBER                  => FND_API.G_MISS_CHAR,
19205           p_QUANTITY                    => FND_API.G_MISS_NUM,
19206           p_UNIT_OF_MEASURE             => FND_API.G_MISS_CHAR,
19207           p_ACCOUNTING_CLASS_CODE       => FND_API.G_MISS_CHAR,
19208           p_INSTANCE_CONDITION_ID       => FND_API.G_MISS_NUM,
19209           p_INSTANCE_STATUS_ID          => l_instance_rec.instance_status_id,
19210           p_CUSTOMER_VIEW_FLAG          => FND_API.G_MISS_CHAR,
19211           p_MERCHANT_VIEW_FLAG          => FND_API.G_MISS_CHAR,
19212           p_SELLABLE_FLAG               => FND_API.G_MISS_CHAR,
19213           p_SYSTEM_ID                   => FND_API.G_MISS_NUM,
19214           p_INSTANCE_TYPE_CODE          => FND_API.G_MISS_CHAR,
19215           p_ACTIVE_START_DATE           => FND_API.G_MISS_DATE,
19216           p_ACTIVE_END_DATE             => l_temp_date,--SYSDATE, --p_instance_rec.active_end_date,
19217           p_LOCATION_TYPE_CODE          => FND_API.G_MISS_CHAR,
19218           p_LOCATION_ID                 => FND_API.G_MISS_NUM,
19219           p_INV_ORGANIZATION_ID         => FND_API.G_MISS_NUM,
19220           p_INV_SUBINVENTORY_NAME       => FND_API.G_MISS_CHAR,
19221           p_INV_LOCATOR_ID              => FND_API.G_MISS_NUM,
19222           p_PA_PROJECT_ID               => FND_API.G_MISS_NUM,
19223           p_PA_PROJECT_TASK_ID          => FND_API.G_MISS_NUM,
19224           p_IN_TRANSIT_ORDER_LINE_ID    => FND_API.G_MISS_NUM,
19225           p_WIP_JOB_ID                  => FND_API.G_MISS_NUM,
19226           p_PO_ORDER_LINE_ID            => FND_API.G_MISS_NUM,
19227           p_LAST_OE_ORDER_LINE_ID       => FND_API.G_MISS_NUM,
19228           p_LAST_OE_RMA_LINE_ID         => FND_API.G_MISS_NUM,
19229           p_LAST_PO_PO_LINE_ID          => FND_API.G_MISS_NUM,
19230           p_LAST_OE_PO_NUMBER           => FND_API.G_MISS_CHAR,
19231           p_LAST_WIP_JOB_ID             => FND_API.G_MISS_NUM,
19232           p_LAST_PA_PROJECT_ID          => FND_API.G_MISS_NUM,
19233           p_LAST_PA_TASK_ID             => FND_API.G_MISS_NUM,
19234           p_LAST_OE_AGREEMENT_ID        => FND_API.G_MISS_NUM,
19235           p_INSTALL_DATE                => FND_API.G_MISS_DATE,
19236           p_MANUALLY_CREATED_FLAG       => FND_API.G_MISS_CHAR,
19237           p_RETURN_BY_DATE              => FND_API.G_MISS_DATE,
19238           p_ACTUAL_RETURN_DATE          => FND_API.G_MISS_DATE,
19239           p_CREATION_COMPLETE_FLAG      => FND_API.G_MISS_CHAR,
19240           p_COMPLETENESS_FLAG           => FND_API.G_MISS_CHAR,
19241           p_CONTEXT                     => FND_API.G_MISS_CHAR,
19242           p_ATTRIBUTE1                  => FND_API.G_MISS_CHAR,
19243           p_ATTRIBUTE2                  => FND_API.G_MISS_CHAR,
19244           p_ATTRIBUTE3                  => FND_API.G_MISS_CHAR,
19245           p_ATTRIBUTE4                  => FND_API.G_MISS_CHAR,
19246           p_ATTRIBUTE5                  => FND_API.G_MISS_CHAR,
19247           p_ATTRIBUTE6                  => FND_API.G_MISS_CHAR,
19248           p_ATTRIBUTE7                  => FND_API.G_MISS_CHAR,
19249           p_ATTRIBUTE8                  => FND_API.G_MISS_CHAR,
19250           p_ATTRIBUTE9                  => FND_API.G_MISS_CHAR,
19251           p_ATTRIBUTE10                 => FND_API.G_MISS_CHAR,
19252           p_ATTRIBUTE11                 => FND_API.G_MISS_CHAR,
19253           p_ATTRIBUTE12                 => FND_API.G_MISS_CHAR,
19254           p_ATTRIBUTE13                 => FND_API.G_MISS_CHAR,
19255           p_ATTRIBUTE14                 => FND_API.G_MISS_CHAR,
19256           p_ATTRIBUTE15                 => FND_API.G_MISS_CHAR,
19257           p_CREATED_BY                  => fnd_api.g_miss_num,
19258           p_CREATION_DATE               => fnd_api.g_miss_date,
19259           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID,
19260           p_LAST_UPDATE_DATE            => SYSDATE,
19261           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.CONC_LOGIN_ID,
19262           p_OBJECT_VERSION_NUMBER       => l_instance_rec.OBJECT_VERSION_NUMBER,
19263           p_LAST_TXN_LINE_DETAIL_ID     => FND_API.G_MISS_NUM,
19264           p_INSTALL_LOCATION_TYPE_CODE  => FND_API.G_MISS_CHAR,
19265           p_INSTALL_LOCATION_ID         => FND_API.G_MISS_NUM,
19266           p_INSTANCE_USAGE_CODE         => FND_API.G_MISS_CHAR,
19267           p_CONFIG_INST_HDR_ID          => NULL, -- FND_API.G_MISS_NUM,
19268           p_CONFIG_INST_REV_NUM         => NULL, -- FND_API.G_MISS_NUM,
19269           p_CONFIG_INST_ITEM_ID         => NULL, -- FND_API.G_MISS_NUM,
19270           p_CONFIG_VALID_STATUS         => NULL, -- FND_API.G_MISS_CHAR,
19271           p_INSTANCE_DESCRIPTION        => FND_API.G_MISS_CHAR,
19272           p_REQUEST_ID                  => FND_API.G_MISS_NUM,
19273           p_PROGRAM_APPLICATION_ID      => FND_API.G_MISS_NUM,
19274           p_PROGRAM_ID                  => FND_API.G_MISS_NUM,
19275           p_PROGRAM_UPDATE_DATE         => FND_API.G_MISS_DATE,
19276 	  --start of parameters addition for eam integration--
19277           p_NETWORK_ASSET_FLAG          => FND_API.G_MISS_CHAR,
19278           p_MAINTAINABLE_FLAG           => FND_API.G_MISS_CHAR,
19279           p_PN_LOCATION_ID              => FND_API.G_MISS_NUM,
19280           p_ASSET_CRITICALITY_CODE      => FND_API.G_MISS_CHAR,
19281           p_CATEGORY_ID                 => FND_API.G_MISS_NUM,
19282           p_EQUIPMENT_GEN_OBJECT_ID     => FND_API.G_MISS_NUM,
19283           p_INSTANTIATION_FLAG          => FND_API.G_MISS_CHAR,
19284           p_LINEAR_LOCATION_ID          => FND_API.G_MISS_NUM,
19285           p_OPERATIONAL_LOG_FLAG        => FND_API.G_MISS_CHAR,
19286           p_CHECKIN_STATUS              => FND_API.G_MISS_NUM,
19287           p_SUPPLIER_WARRANTY_EXP_DATE  => FND_API.G_MISS_DATE,
19288           p_ATTRIBUTE16                 => FND_API.G_MISS_CHAR,
19289           p_ATTRIBUTE17                 => FND_API.G_MISS_CHAR,
19290           p_ATTRIBUTE18                 => FND_API.G_MISS_CHAR,
19291           p_ATTRIBUTE19                 => FND_API.G_MISS_CHAR,
19292           p_ATTRIBUTE20                 => FND_API.G_MISS_CHAR,
19293           p_ATTRIBUTE21                 => FND_API.G_MISS_CHAR,
19294           p_ATTRIBUTE22                 => FND_API.G_MISS_CHAR,
19295           p_ATTRIBUTE23                 => FND_API.G_MISS_CHAR,
19296           p_ATTRIBUTE24                 => FND_API.G_MISS_CHAR,
19297           p_ATTRIBUTE25                 => FND_API.G_MISS_CHAR,
19298           p_ATTRIBUTE26                 => FND_API.G_MISS_CHAR,
19299           p_ATTRIBUTE27                 => FND_API.G_MISS_CHAR,
19300           p_ATTRIBUTE28                 => FND_API.G_MISS_CHAR,
19301           p_ATTRIBUTE29                 => FND_API.G_MISS_CHAR,
19302           p_ATTRIBUTE30                 => FND_API.G_MISS_CHAR,
19303 	  --end of parameters addition for eam integration--
19304    -- Addition of columns for FA Integration
19305           p_PURCHASE_UNIT_PRICE         => FND_API.G_MISS_NUM,
19306           p_PURCHASE_CURRENCY_CODE      => FND_API.G_MISS_CHAR,
19307           p_PAYABLES_UNIT_PRICE         => FND_API.G_MISS_NUM,
19308           p_PAYABLES_CURRENCY_CODE      => FND_API.G_MISS_CHAR,
19309           p_SALES_UNIT_PRICE            => FND_API.G_MISS_NUM,
19310           p_SALES_CURRENCY_CODE         => FND_API.G_MISS_CHAR,
19311           p_OPERATIONAL_STATUS_CODE     => FND_API.G_MISS_CHAR,
19312     -- End addition of columns for FA Integration
19313           p_SOURCE_CODE                 => FND_API.G_MISS_CHAR -- Added Code for Siebel Genesis Project
19314            );
19315 
19316            CSI_TRANSACTIONS_PVT.Create_transaction
19317           (
19318              p_api_version            => p_api_version
19319             ,p_commit                 => p_commit
19320             ,p_init_msg_list          => p_init_msg_list
19321             ,p_validation_level       => p_validation_level
19322             ,p_Success_IF_Exists_Flag => 'Y'
19323             ,p_transaction_rec        => p_txn_rec
19324             ,x_return_status          => x_return_status
19325             ,x_msg_count              => x_msg_count
19326             ,x_msg_data               => x_msg_data
19327           );
19328 
19329          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
19330 
19331               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_VALIDATE_TXN');
19332               FND_MESSAGE.SET_TOKEN('TRANSACTION_ID',p_txn_rec.transaction_id );
19333               FND_MSG_PUB.Add;
19334               RAISE FND_API.G_EXC_ERROR;
19335          END IF;
19336 
19337 -- Get the full_dump_frequency from csi_install_parameter
19338       IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
19339           csi_gen_utility_pvt.populate_install_param_rec;
19340        END IF;
19341        --
19342        l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
19343        --
19344        IF l_full_dump_frequency IS NULL THEN
19345           FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
19346           FND_MSG_PUB.ADD;
19347           RAISE FND_API.G_EXC_ERROR;
19348        END IF;
19349 
19350  -- Get a unique history item instance id from the sequence
19351           l_csi_item_instance_h_id :=
19352                                  csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
19353 
19354        SELECT MOD(p_instance_rec.object_version_number,l_full_dump_frequency)
19355        INTO   l_mod_value
19356        FROM   dual;
19357 
19358 
19359      IF (l_mod_value = 0) THEN
19360           -- If the mod value is 0 then dump all the columns both changed and unchanged
19361           -- changed columns have old and new values while the unchanged values have old and new values
19362           -- exactly same
19363 
19364        CSI_ITEM_INSTANCES_H_PKG.Insert_Row
19365            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
19366             ,p_INSTANCE_ID                       => l_rel_tbl(j).subject_id
19367             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
19368             ,p_OLD_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
19369             ,p_NEW_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
19370             ,p_OLD_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
19371             ,p_NEW_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
19372             ,p_OLD_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
19373             ,p_NEW_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
19374             ,p_OLD_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
19375             ,p_NEW_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
19376             ,p_OLD_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
19377             ,p_NEW_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
19378             ,p_OLD_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
19379             ,p_NEW_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
19380             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
19381             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
19382             ,p_OLD_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
19383             ,p_NEW_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
19384             ,p_OLD_QUANTITY                      => l_curr_instance_rec.QUANTITY
19385             ,p_NEW_QUANTITY                      => l_curr_instance_rec.QUANTITY
19386             ,p_OLD_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
19387             ,p_NEW_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
19388             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
19389             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
19390             ,p_OLD_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
19391             ,p_NEW_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
19392             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
19393             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_rec.INSTANCE_STATUS_ID
19394             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
19395             ,p_NEW_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
19396             ,p_OLD_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
19397             ,p_NEW_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
19398             ,p_OLD_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
19399             ,p_NEW_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
19400             ,p_OLD_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
19401             ,p_NEW_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
19402             ,p_OLD_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
19403             ,p_NEW_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
19404             ,p_OLD_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
19405             ,p_NEW_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
19406             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
19407             ,p_NEW_ACTIVE_END_DATE               => l_temp_date --SYSDATE
19408             ,p_OLD_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
19409             ,p_NEW_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
19410             ,p_OLD_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
19411             ,p_NEW_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
19412             ,p_OLD_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
19413             ,p_NEW_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
19414             ,p_OLD_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
19415             ,p_NEW_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
19416             ,p_OLD_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
19417             ,p_NEW_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
19418             ,p_OLD_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
19419             ,p_NEW_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
19420             ,p_OLD_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
19421             ,p_NEW_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
19422             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
19423             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
19424             ,p_OLD_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
19425             ,p_NEW_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
19426             ,p_OLD_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
19427             ,p_NEW_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
19428             ,p_OLD_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
19429             ,p_NEW_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
19430             ,p_FULL_DUMP_FLAG                    => 'Y'
19431             ,p_NEW_CONTEXT                       => l_curr_instance_rec.CONTEXT
19432             ,P_OLD_CONTEXT                       => l_curr_instance_rec.CONTEXT
19433             ,p_NEW_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
19434             ,p_OLD_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
19435             ,p_NEW_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
19436             ,p_OLD_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
19437             ,p_NEW_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
19438             ,p_OLD_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
19439             ,p_NEW_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
19440             ,p_OLD_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
19441             ,p_NEW_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
19442             ,p_OLD_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
19443             ,p_NEW_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
19444             ,p_OLD_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
19445             ,p_NEW_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
19446             ,p_OLD_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
19447             ,p_NEW_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
19448             ,p_OLD_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
19449             ,p_NEW_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
19450             ,p_OLD_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
19451             ,p_NEW_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
19452             ,p_OLD_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
19453             ,p_NEW_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
19454             ,p_OLD_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
19455             ,p_NEW_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
19456             ,p_OLD_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
19457             ,p_NEW_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
19458             ,p_OLD_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
19459             ,p_NEW_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
19460             ,p_OLD_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
19461             ,p_NEW_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
19462             ,p_OLD_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
19463             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
19464             ,p_CREATION_DATE                     => SYSDATE
19465             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
19466             ,p_LAST_UPDATE_DATE                  => SYSDATE
19467             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
19468             ,p_OBJECT_VERSION_NUMBER             => 1
19469             ,p_OLD_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
19470             ,p_NEW_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
19471             ,p_OLD_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
19472             ,p_NEW_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
19473             ,p_OLD_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
19474             ,p_NEW_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
19475             ,p_OLD_CONFIG_INST_REV_NUM           => l_curr_instance_rec.CONFIG_INST_REV_NUM
19476             ,p_NEW_CONFIG_INST_REV_NUM           => NULL -- l_curr_instance_rec.CONFIG_INST_REV_NUM
19477             ,p_OLD_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
19478             ,p_NEW_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
19479             ,p_OLD_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
19480             ,p_NEW_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
19481             ,p_OLD_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
19482             ,p_NEW_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
19483             ,p_OLD_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
19484             ,p_NEW_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
19485             ,p_OLD_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
19486             ,p_NEW_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
19487             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
19488             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
19489 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
19490 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
19491 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
19492 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
19493 	    ,p_OLD_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
19494 	    ,p_NEW_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
19495 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
19496 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
19497 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
19498 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
19499 	    ,p_OLD_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
19500 	    ,p_NEW_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
19501 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
19502 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
19503 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
19504 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
19505  	    --start of parameters addition for eam integration--
19506 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
19507 	    ,p_NEW_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
19508 	    ,p_OLD_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
19509 	    ,p_NEW_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
19510 	    ,p_OLD_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
19511 	    ,p_NEW_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
19512 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
19513 	    ,p_NEW_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
19514 	    ,p_OLD_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
19515 	    ,p_NEW_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
19516 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
19517 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
19518 	    ,p_OLD_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
19519 	    ,p_NEW_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
19520 	    ,p_OLD_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
19521 	    ,p_NEW_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
19522 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
19523 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
19524 	    ,p_OLD_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
19525 	    ,p_NEW_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
19526 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
19527 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
19528             ,p_OLD_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
19529             ,p_NEW_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
19530             ,p_OLD_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
19531             ,p_NEW_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
19532             ,p_OLD_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
19533             ,p_NEW_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
19534             ,p_OLD_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
19535             ,p_NEW_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
19536             ,p_OLD_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
19537             ,p_NEW_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
19538             ,p_OLD_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
19539             ,p_NEW_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
19540             ,p_OLD_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
19541             ,p_NEW_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
19542             ,p_OLD_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
19543             ,p_NEW_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
19544             ,p_OLD_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
19545             ,p_NEW_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
19546             ,p_OLD_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
19547             ,p_NEW_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
19548             ,p_OLD_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
19549             ,p_NEW_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
19550             ,p_OLD_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
19551             ,p_NEW_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
19552             ,p_OLD_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
19553             ,p_NEW_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
19554             ,p_OLD_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
19555             ,p_NEW_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
19556             ,p_OLD_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
19557             ,p_NEW_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
19558   	    --end of parameters addition for eam integration--
19559    -- Addition of columns for FA Integration
19560             ,p_OLD_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
19561             ,p_NEW_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
19562             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
19563             ,p_NEW_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
19564             ,p_OLD_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
19565             ,p_NEW_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
19566             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
19567             ,p_NEW_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
19568             ,p_OLD_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
19569             ,p_NEW_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
19570             ,p_OLD_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
19571             ,p_NEW_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
19572             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
19573             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
19574     -- End addition of columns for FA Integration
19575             -- Begin Add Code for Siebel Genesis Project
19576             ,p_OLD_SOURCE_CODE                   => l_curr_instance_rec.SOURCE_CODE
19577             ,p_NEW_SOURCE_CODE                   => l_curr_instance_rec.SOURCE_CODE
19578             -- End Add Code for Siebel Genesis Project
19579             );
19580 
19581     ELSE
19582           -- If the mod value is not equal to zero then dump only the changed columns
19583           -- while the unchanged values have old and new values as null
19584 
19585        CSI_ITEM_INSTANCES_H_PKG.Insert_Row
19586            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
19587             ,p_INSTANCE_ID                       => l_rel_tbl(j).subject_id
19588             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
19589             ,p_OLD_INSTANCE_NUMBER               => FND_API.G_MISS_CHAR
19590             ,p_NEW_INSTANCE_NUMBER               => FND_API.G_MISS_CHAR
19591             ,p_OLD_EXTERNAL_REFERENCE            => FND_API.G_MISS_CHAR
19592             ,p_NEW_EXTERNAL_REFERENCE            => FND_API.G_MISS_CHAR
19593             ,p_OLD_INVENTORY_ITEM_ID             => FND_API.G_MISS_NUM
19594             ,p_NEW_INVENTORY_ITEM_ID             => FND_API.G_MISS_NUM
19595             ,p_OLD_INVENTORY_REVISION            => FND_API.G_MISS_CHAR
19596             ,p_NEW_INVENTORY_REVISION            => FND_API.G_MISS_CHAR
19597             ,p_OLD_INV_MASTER_ORGZN_ID           => FND_API.G_MISS_NUM
19598             ,p_NEW_INV_MASTER_ORGZN_ID           => FND_API.G_MISS_NUM
19599             ,p_OLD_SERIAL_NUMBER                 => FND_API.G_MISS_CHAR
19600             ,p_NEW_SERIAL_NUMBER                 => FND_API.G_MISS_CHAR
19601             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => FND_API.G_MISS_CHAR
19602             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => FND_API.G_MISS_CHAR
19603             ,p_OLD_LOT_NUMBER                    => FND_API.G_MISS_CHAR
19604             ,p_NEW_LOT_NUMBER                    => FND_API.G_MISS_CHAR
19605             ,p_OLD_QUANTITY                      => FND_API.G_MISS_NUM
19606             ,p_NEW_QUANTITY                      => FND_API.G_MISS_NUM
19607             ,p_OLD_UNIT_OF_MEASURE               => FND_API.G_MISS_CHAR
19608             ,p_NEW_UNIT_OF_MEASURE               => FND_API.G_MISS_CHAR
19609             ,p_OLD_ACCOUNTING_CLASS_CODE         => FND_API.G_MISS_CHAR
19610             ,p_NEW_ACCOUNTING_CLASS_CODE         => FND_API.G_MISS_CHAR
19611             ,p_OLD_INSTANCE_CONDITION_ID         => FND_API.G_MISS_NUM
19612             ,p_NEW_INSTANCE_CONDITION_ID         => FND_API.G_MISS_NUM
19613             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
19614             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_rec.INSTANCE_STATUS_ID
19615             ,p_OLD_CUSTOMER_VIEW_FLAG            => FND_API.G_MISS_CHAR
19616             ,p_NEW_CUSTOMER_VIEW_FLAG            => FND_API.G_MISS_CHAR
19617             ,p_OLD_MERCHANT_VIEW_FLAG            => FND_API.G_MISS_CHAR
19618             ,p_NEW_MERCHANT_VIEW_FLAG            => FND_API.G_MISS_CHAR
19619             ,p_OLD_SELLABLE_FLAG                 => FND_API.G_MISS_CHAR
19620             ,p_NEW_SELLABLE_FLAG                 => FND_API.G_MISS_CHAR
19621             ,p_OLD_SYSTEM_ID                     => FND_API.G_MISS_NUM
19622             ,p_NEW_SYSTEM_ID                     => FND_API.G_MISS_NUM
19623             ,p_OLD_INSTANCE_TYPE_CODE            => FND_API.G_MISS_CHAR
19624             ,p_NEW_INSTANCE_TYPE_CODE            => FND_API.G_MISS_CHAR
19625             ,p_OLD_ACTIVE_START_DATE             => FND_API.G_MISS_DATE
19626             ,p_NEW_ACTIVE_START_DATE             => FND_API.G_MISS_DATE
19627             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
19628             ,p_NEW_ACTIVE_END_DATE               => l_temp_date --SYSDATE
19629             ,p_OLD_LOCATION_TYPE_CODE            => FND_API.G_MISS_CHAR
19630             ,p_NEW_LOCATION_TYPE_CODE            => FND_API.G_MISS_CHAR
19631             ,p_OLD_LOCATION_ID                   => FND_API.G_MISS_NUM
19632             ,p_NEW_LOCATION_ID                   => FND_API.G_MISS_NUM
19633             ,p_OLD_INV_ORGANIZATION_ID           => FND_API.G_MISS_NUM
19634             ,p_NEW_INV_ORGANIZATION_ID           => FND_API.G_MISS_NUM
19635             ,p_OLD_INV_SUBINVENTORY_NAME         => FND_API.G_MISS_CHAR
19636             ,p_NEW_INV_SUBINVENTORY_NAME         => FND_API.G_MISS_CHAR
19637             ,p_OLD_INV_LOCATOR_ID                => FND_API.G_MISS_NUM
19638             ,p_NEW_INV_LOCATOR_ID                => FND_API.G_MISS_NUM
19639             ,p_OLD_PA_PROJECT_ID                 => FND_API.G_MISS_NUM
19640             ,p_NEW_PA_PROJECT_ID                 => FND_API.G_MISS_NUM
19641             ,p_OLD_PA_PROJECT_TASK_ID            => FND_API.G_MISS_NUM
19642             ,p_NEW_PA_PROJECT_TASK_ID            => FND_API.G_MISS_NUM
19643             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => FND_API.G_MISS_NUM
19644             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => FND_API.G_MISS_NUM
19645             ,p_OLD_WIP_JOB_ID                    => FND_API.G_MISS_NUM
19646             ,p_NEW_WIP_JOB_ID                    => FND_API.G_MISS_NUM
19647             ,p_OLD_PO_ORDER_LINE_ID              => FND_API.G_MISS_NUM
19648             ,p_NEW_PO_ORDER_LINE_ID              => FND_API.G_MISS_NUM
19649             ,p_OLD_COMPLETENESS_FLAG             => FND_API.G_MISS_CHAR
19650             ,p_NEW_COMPLETENESS_FLAG             => FND_API.G_MISS_CHAR
19651             ,p_FULL_DUMP_FLAG                    => 'N'
19652             ,p_NEW_CONTEXT                       => FND_API.G_MISS_CHAR
19653             ,P_OLD_CONTEXT                       => FND_API.G_MISS_CHAR
19654             ,p_NEW_ATTRIBUTE1                    => FND_API.G_MISS_CHAR
19655             ,p_OLD_ATTRIBUTE1                    => FND_API.G_MISS_CHAR
19656             ,p_NEW_ATTRIBUTE2                    => FND_API.G_MISS_CHAR
19657             ,p_OLD_ATTRIBUTE2                    => FND_API.G_MISS_CHAR
19658             ,p_NEW_ATTRIBUTE3                    => FND_API.G_MISS_CHAR
19659             ,p_OLD_ATTRIBUTE3                    => FND_API.G_MISS_CHAR
19660             ,p_NEW_ATTRIBUTE4                    => FND_API.G_MISS_CHAR
19661             ,p_OLD_ATTRIBUTE4                    => FND_API.G_MISS_CHAR
19662             ,p_NEW_ATTRIBUTE5                    => FND_API.G_MISS_CHAR
19663             ,p_OLD_ATTRIBUTE5                    => FND_API.G_MISS_CHAR
19664             ,p_NEW_ATTRIBUTE6                    => FND_API.G_MISS_CHAR
19665             ,p_OLD_ATTRIBUTE6                    => FND_API.G_MISS_CHAR
19666             ,p_NEW_ATTRIBUTE7                    => FND_API.G_MISS_CHAR
19667             ,p_OLD_ATTRIBUTE7                    => FND_API.G_MISS_CHAR
19668             ,p_NEW_ATTRIBUTE8                    => FND_API.G_MISS_CHAR
19669             ,p_OLD_ATTRIBUTE8                    => FND_API.G_MISS_CHAR
19670             ,p_NEW_ATTRIBUTE9                    => FND_API.G_MISS_CHAR
19671             ,p_OLD_ATTRIBUTE9                    => FND_API.G_MISS_CHAR
19672             ,p_NEW_ATTRIBUTE10                   => FND_API.G_MISS_CHAR
19673             ,p_OLD_ATTRIBUTE10                   => FND_API.G_MISS_CHAR
19674             ,p_NEW_ATTRIBUTE11                   => FND_API.G_MISS_CHAR
19675             ,p_OLD_ATTRIBUTE11                   => FND_API.G_MISS_CHAR
19676             ,p_NEW_ATTRIBUTE12                   => FND_API.G_MISS_CHAR
19677             ,p_OLD_ATTRIBUTE12                   => FND_API.G_MISS_CHAR
19678             ,p_NEW_ATTRIBUTE13                   => FND_API.G_MISS_CHAR
19679             ,p_OLD_ATTRIBUTE13                   => FND_API.G_MISS_CHAR
19680             ,p_NEW_ATTRIBUTE14                   => FND_API.G_MISS_CHAR
19681             ,p_OLD_ATTRIBUTE14                   => FND_API.G_MISS_CHAR
19682             ,p_NEW_ATTRIBUTE15                   => FND_API.G_MISS_CHAR
19683             ,p_OLD_ATTRIBUTE15                   => FND_API.G_MISS_CHAR
19684             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
19685             ,p_CREATION_DATE                     => SYSDATE
19686             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
19687             ,p_LAST_UPDATE_DATE                  => SYSDATE
19688             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
19689             ,p_OBJECT_VERSION_NUMBER             => 1
19690             ,p_OLD_INST_LOC_TYPE_CODE            => FND_API.G_MISS_CHAR
19691             ,p_NEW_INST_LOC_TYPE_CODE            => FND_API.G_MISS_CHAR
19692             ,p_OLD_INST_LOC_ID                   => FND_API.G_MISS_NUM
19693             ,p_NEW_INST_LOC_ID                   => FND_API.G_MISS_NUM
19694             ,p_OLD_INST_USAGE_CODE               => FND_API.G_MISS_CHAR
19695             ,p_NEW_INST_USAGE_CODE               => FND_API.G_MISS_CHAR
19696             ,p_OLD_CONFIG_INST_REV_NUM           => FND_API.G_MISS_NUM
19697             ,p_NEW_CONFIG_INST_REV_NUM           => NULL -- FND_API.G_MISS_NUM
19698             ,p_OLD_CONFIG_VALID_STATUS           => FND_API.G_MISS_CHAR
19699             ,p_NEW_CONFIG_VALID_STATUS           => FND_API.G_MISS_CHAR
19700             ,p_OLD_INSTANCE_DESCRIPTION          => FND_API.G_MISS_CHAR
19701             ,p_NEW_INSTANCE_DESCRIPTION          => FND_API.G_MISS_CHAR
19702             ,p_OLD_INSTALL_DATE                  => FND_API.G_MISS_DATE
19703             ,p_NEW_INSTALL_DATE                  => FND_API.G_MISS_DATE
19704             ,p_OLD_RETURN_BY_DATE                => FND_API.G_MISS_DATE
19705             ,p_NEW_RETURN_BY_DATE                => FND_API.G_MISS_DATE
19706             ,p_OLD_ACTUAL_RETURN_DATE            => FND_API.G_MISS_DATE
19707             ,p_NEW_ACTUAL_RETURN_DATE            => FND_API.G_MISS_DATE
19708             ,p_OLD_LAST_OE_AGREEMENT_ID          => FND_API.G_MISS_NUM
19709             ,p_NEW_LAST_OE_AGREEMENT_ID          => FND_API.G_MISS_NUM
19710 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => FND_API.G_MISS_NUM
19711 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => FND_API.G_MISS_NUM
19712 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => FND_API.G_MISS_NUM
19713 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => FND_API.G_MISS_NUM
19714 	    ,p_OLD_LAST_WIP_JOB_ID               => FND_API.G_MISS_NUM
19715 	    ,p_NEW_LAST_WIP_JOB_ID               => FND_API.G_MISS_NUM
19716 	    ,p_OLD_LAST_PO_PO_LINE_ID            => FND_API.G_MISS_NUM
19717 	    ,p_NEW_LAST_PO_PO_LINE_ID            => FND_API.G_MISS_NUM
19718 	    ,p_OLD_LAST_PA_PROJECT_ID            => FND_API.G_MISS_NUM
19719 	    ,p_NEW_LAST_PA_PROJECT_ID            => FND_API.G_MISS_NUM
19720 	    ,p_OLD_LAST_PA_TASK_ID          => FND_API.G_MISS_NUM
19721 	    ,p_NEW_LAST_PA_TASK_ID          => FND_API.G_MISS_NUM
19722 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => FND_API.G_MISS_NUM
19723 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => FND_API.G_MISS_NUM
19724 	    ,p_OLD_LAST_OE_PO_NUMBER             => FND_API.G_MISS_CHAR
19725 	    ,p_NEW_LAST_OE_PO_NUMBER             => FND_API.G_MISS_CHAR
19726  	    --start of parameters addition for eam integration--
19727 	    ,p_OLD_NETWORK_ASSET_FLAG             => FND_API.G_MISS_CHAR
19728 	    ,p_NEW_NETWORK_ASSET_FLAG             => FND_API.G_MISS_CHAR
19729 	    ,p_OLD_MAINTAINABLE_FLAG              => FND_API.G_MISS_CHAR
19730 	    ,p_NEW_MAINTAINABLE_FLAG              => FND_API.G_MISS_CHAR
19731 	    ,p_OLD_PN_LOCATION_ID                 => FND_API.G_MISS_NUM
19732 	    ,p_NEW_PN_LOCATION_ID                 => FND_API.G_MISS_NUM
19733 	    ,p_OLD_ASSET_CRITICALITY_CODE         => FND_API.G_MISS_CHAR
19734 	    ,p_NEW_ASSET_CRITICALITY_CODE         => FND_API.G_MISS_CHAR
19735 	    ,p_OLD_CATEGORY_ID                    => FND_API.G_MISS_NUM
19736 	    ,p_NEW_CATEGORY_ID                    => FND_API.G_MISS_NUM
19737 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => FND_API.G_MISS_NUM
19738 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => FND_API.G_MISS_NUM
19739 	    ,p_OLD_INSTANTIATION_FLAG             => FND_API.G_MISS_CHAR
19740 	    ,p_NEW_INSTANTIATION_FLAG             => FND_API.G_MISS_CHAR
19741 	    ,p_OLD_LINEAR_LOCATION_ID             => FND_API.G_MISS_NUM
19742 	    ,p_NEW_LINEAR_LOCATION_ID             => FND_API.G_MISS_NUM
19743 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => FND_API.G_MISS_CHAR
19744 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => FND_API.G_MISS_CHAR
19745 	    ,p_OLD_CHECKIN_STATUS                 => FND_API.G_MISS_NUM
19746 	    ,p_NEW_CHECKIN_STATUS                 => FND_API.G_MISS_NUM
19747 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => FND_API.G_MISS_DATE
19748 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => FND_API.G_MISS_DATE
19749             ,p_OLD_ATTRIBUTE16                    => FND_API.G_MISS_CHAR
19750             ,p_NEW_ATTRIBUTE16                    => FND_API.G_MISS_CHAR
19751             ,p_OLD_ATTRIBUTE17                    => FND_API.G_MISS_CHAR
19752             ,p_NEW_ATTRIBUTE17                    => FND_API.G_MISS_CHAR
19753             ,p_OLD_ATTRIBUTE18                    => FND_API.G_MISS_CHAR
19754             ,p_NEW_ATTRIBUTE18                    => FND_API.G_MISS_CHAR
19755             ,p_OLD_ATTRIBUTE19                    => FND_API.G_MISS_CHAR
19756             ,p_NEW_ATTRIBUTE19                    => FND_API.G_MISS_CHAR
19757             ,p_OLD_ATTRIBUTE20                    => FND_API.G_MISS_CHAR
19758             ,p_NEW_ATTRIBUTE20                    => FND_API.G_MISS_CHAR
19759             ,p_OLD_ATTRIBUTE21                    => FND_API.G_MISS_CHAR
19760             ,p_NEW_ATTRIBUTE21                    => FND_API.G_MISS_CHAR
19761             ,p_OLD_ATTRIBUTE22                    => FND_API.G_MISS_CHAR
19762             ,p_NEW_ATTRIBUTE22                    => FND_API.G_MISS_CHAR
19763             ,p_OLD_ATTRIBUTE23                    => FND_API.G_MISS_CHAR
19764             ,p_NEW_ATTRIBUTE23                    => FND_API.G_MISS_CHAR
19765             ,p_OLD_ATTRIBUTE24                    => FND_API.G_MISS_CHAR
19766             ,p_NEW_ATTRIBUTE24                    => FND_API.G_MISS_CHAR
19767             ,p_OLD_ATTRIBUTE25                    => FND_API.G_MISS_CHAR
19768             ,p_NEW_ATTRIBUTE25                    => FND_API.G_MISS_CHAR
19769             ,p_OLD_ATTRIBUTE26                    => FND_API.G_MISS_CHAR
19770             ,p_NEW_ATTRIBUTE26                    => FND_API.G_MISS_CHAR
19771             ,p_OLD_ATTRIBUTE27                    => FND_API.G_MISS_CHAR
19772             ,p_NEW_ATTRIBUTE27                    => FND_API.G_MISS_CHAR
19773             ,p_OLD_ATTRIBUTE28                    => FND_API.G_MISS_CHAR
19774             ,p_NEW_ATTRIBUTE28                    => FND_API.G_MISS_CHAR
19775             ,p_OLD_ATTRIBUTE29                    => FND_API.G_MISS_CHAR
19776             ,p_NEW_ATTRIBUTE29                    => FND_API.G_MISS_CHAR
19777             ,p_OLD_ATTRIBUTE30                    => FND_API.G_MISS_CHAR
19778             ,p_NEW_ATTRIBUTE30                    => FND_API.G_MISS_CHAR
19779   	    --end of parameters addition for eam integration--
19780        -- Addition of columns for FA Integration
19781             ,p_OLD_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
19782             ,p_NEW_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
19783             ,p_OLD_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
19784             ,p_NEW_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
19785             ,p_OLD_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
19786             ,p_NEW_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
19787             ,p_OLD_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
19788             ,p_NEW_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
19789             ,p_OLD_SALES_UNIT_PRICE               => fnd_api.g_miss_num
19790             ,p_NEW_SALES_UNIT_PRICE               => fnd_api.g_miss_num
19791             ,p_OLD_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
19792             ,p_NEW_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
19793             ,p_OLD_OPERATIONAL_STATUS_CODE        => fnd_api.g_miss_char
19794             ,p_NEW_OPERATIONAL_STATUS_CODE        => fnd_api.g_miss_char
19795         -- End addition of columns for FA Integration
19796             -- Begin Add Code for Siebel Genesis Project
19797             ,p_OLD_SOURCE_CODE                   => FND_API.G_MISS_CHAR
19798             ,p_NEW_SOURCE_CODE                   => FND_API.G_MISS_CHAR
19799             -- End Add Code for Siebel Genesis Project
19800             );
19801 
19802 
19803       END IF;
19804 
19805 
19806       -- Calling eam API to log instance update event
19807        IF l_eam_item
19808        THEN
19809           IF l_ins_hist_id IS NOT NULL
19810           THEN
19811              l_instance_history_id:=l_ins_hist_id;
19812           ELSE
19813              l_instance_history_id:=l_csi_item_instance_h_id;
19814           END IF;
19815           eam_asset_log_pvt.instance_update_event
19816           (p_api_version         => p_api_version
19817           ,p_init_msg_list       => fnd_api.g_false
19818           ,p_commit              => fnd_api.g_false
19819           ,p_validation_level    => fnd_api.g_valid_level_full
19820           ,x_return_status       => x_return_status
19821           ,x_msg_count           => x_msg_count
19822           ,x_msg_data            => x_msg_data
19823           ,p_instance_id         => l_rel_tbl(j).subject_id
19824           ,p_ref_id              => l_instance_history_id
19825           ,p_event_date          => sysdate);
19826          IF NOT(x_return_status = fnd_api.g_ret_sts_success)
19827          THEN
19828             csi_gen_utility_pvt.put_line('Error from eam_asset_log_pvt.instance_update_event API');
19829             RAISE fnd_api.g_exc_error;
19830          END IF;
19831        END IF;
19832       -- Calling eam API to log instance update event
19833 
19834        -- srramakr Bug # 3945813 We no longer look for service_order_allowed_flag to decide
19835        -- whether contracts should be terminated or not. Instead, we look for terminated_flag.
19836        -- Before terminating the contract check whether the terminated_flag is set to 'Y'
19837        -- for the instance_status passed. If set to 'N' dont make call to contracts.
19838        OPEN  instance_csr (l_rel_tbl(j).subject_id);
19839        FETCH instance_csr INTO l_instance_csr;
19840        CLOSE instance_csr;
19841 
19842        IF csi_item_instance_vld_pvt.termination_status
19843           ( p_instance_status_id => l_instance_csr.instance_status_id )
19844        THEN
19845          IF p_txn_rec.transaction_type_id in (53,54) THEN
19846             l_oks_txn_type := 'RET';
19847          ELSE
19848             l_oks_txn_type := 'TRM';
19849          END IF;
19850         csi_item_instance_pvt.Call_to_Contracts
19851          ( p_transaction_type   =>   l_oks_txn_type
19852           ,p_instance_id        =>   l_rel_tbl(j).subject_id
19853           ,p_new_instance_id    =>   NULL
19854           ,p_vld_org_id         =>   l_instance_csr.last_vld_organization_id
19855           ,p_quantity           =>   NULL
19856           ,p_party_account_id1  =>   NULL
19857           ,p_party_account_id2  =>   NULL
19858           ,p_transaction_date   =>   p_txn_rec.transaction_date --l_temp_date
19859           ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date --l_temp_date
19860 	  ,p_txn_type_id        => p_txn_rec.transaction_type_id --added for  BUG  5752271
19861           ,p_grp_call_contracts =>   p_instance_rec.grp_call_contracts
19862           ,p_oks_txn_inst_tbl   =>   p_oks_txn_inst_tbl
19863           ,x_return_status      =>   x_return_status
19864           ,x_msg_count          =>   x_msg_count
19865           ,x_msg_data           =>   x_msg_data
19866           );
19867 
19868            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
19869                   l_msg_index := 1;
19870                   l_msg_count := x_msg_count;
19871               WHILE l_msg_count > 0 LOOP
19872                 x_msg_data := FND_MSG_PUB.GET
19873                               (  l_msg_index,
19874                                  FND_API.G_FALSE
19875                                );
19876                 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
19877                     l_msg_index := l_msg_index + 1;
19878                     l_msg_count := l_msg_count - 1;
19879               END LOOP;
19880                 RAISE FND_API.G_EXC_ERROR;
19881            END IF;
19882         END IF;
19883 
19884     END LOOP;
19885  END IF; -- l_rel_tbl count check
19886       -- Standard call to get message count and if count is  get message info.
19887       FND_MSG_PUB.Count_And_Get
19888             (p_count   =>   x_msg_count ,
19889              p_data    =>   x_msg_data
19890             );
19891 
19892 EXCEPTION
19893 
19894     WHEN FND_API.G_EXC_ERROR THEN
19895             ROLLBACK TO expire_child_instance_pvt;
19896             x_return_status := FND_API.G_RET_STS_ERROR ;
19897             FND_MSG_PUB.Count_And_Get
19898                 (p_count  =>  x_msg_count,
19899                  p_data   =>  x_msg_data
19900                 );
19901 
19902     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
19903             ROLLBACK TO expire_child_instance_pvt;
19904             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
19905             FND_MSG_PUB.Count_And_Get
19906                 (p_count   =>  x_msg_count,
19907                  p_data    =>  x_msg_data
19908                 );
19909     WHEN OTHERS THEN
19910             ROLLBACK TO expire_child_instance_pvt;
19911             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
19912               IF FND_MSG_PUB.Check_Msg_Level
19913                  (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
19914               THEN
19915                   FND_MSG_PUB.Add_Exc_Msg
19916                  ( G_PKG_NAME, l_api_name );
19917               END IF;
19918                   FND_MSG_PUB.Count_And_Get
19919                  ( p_count  =>  x_msg_count,
19920                    p_data   =>  x_msg_data
19921                 );
19922 
19923 END expire_child_instances;
19924 
19925 /*---------------------------------------------------*/
19926 /* Procedure name: expire_item_instance              */
19927 /* Description   : procedure for                     */
19928 /*                 Expiring an Item Instance         */
19929 /*---------------------------------------------------*/
19930 
19931 PROCEDURE expire_item_instance
19932  (
19933       p_api_version       IN      NUMBER
19934      ,p_commit            IN      VARCHAR2
19935      ,p_init_msg_list     IN      VARCHAR2
19936      ,p_validation_level  IN      NUMBER
19937      ,p_instance_rec      IN      csi_datastructures_pub.instance_rec
19938      ,p_expire_children   IN      VARCHAR2
19939      ,p_txn_rec           IN OUT  NOCOPY csi_datastructures_pub.transaction_rec
19940      ,x_instance_id_lst   OUT     NOCOPY csi_datastructures_pub.id_tbl
19941      ,p_oks_txn_inst_tbl  IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl
19942      ,x_return_status     OUT     NOCOPY VARCHAR2
19943      ,x_msg_count         OUT     NOCOPY NUMBER
19944      ,x_msg_data          OUT     NOCOPY VARCHAR2
19945  )
19946 
19947 IS
19948     l_api_name                  CONSTANT VARCHAR2(30)   := 'EXPIRE_ITEM_NSTANCE';
19949     l_api_version               CONSTANT NUMBER         := 1.0;
19950     l_debug_level               NUMBER;
19951     l_instance_id               NUMBER;
19952     l_instance_rec              csi_datastructures_pub.instance_rec;
19953     l_temp_instance_rec         csi_datastructures_pub.instance_rec;
19954     l_csi_item_instance_h_id    NUMBER;
19955     l_full_dump_frequency       NUMBER;
19956     l_mod_value                 NUMBER;
19957     l_dump_flag                 VARCHAR2(1);
19958     l_dummy                     NUMBER;
19959     -- Added variables for bug 6788183
19960     l_exp_rltns_rec             csi_datastructures_pub.ii_relationship_rec;
19961     l_instance_id_lst           csi_datastructures_pub.id_tbl;
19962     l_return_status             VARCHAR2(1) := fnd_api.g_ret_sts_success;
19963     l_msg_data                  VARCHAR2(2000);
19964 
19965     CURSOR get_instance_rec(p_instance_id IN NUMBER)  IS
19966         SELECT
19967          INSTANCE_ID,
19968          INSTANCE_NUMBER,
19969          EXTERNAL_REFERENCE,
19970          INVENTORY_ITEM_ID,
19971          NULL VLD_ORGANIZATION_ID,
19972          INVENTORY_REVISION,
19973          INV_MASTER_ORGANIZATION_ID,
19974          SERIAL_NUMBER,
19975          MFG_SERIAL_NUMBER_FLAG,
19976          LOT_NUMBER,
19977          QUANTITY,
19978          UNIT_OF_MEASURE,
19979          ACCOUNTING_CLASS_CODE,
19980          INSTANCE_CONDITION_ID,
19981          INSTANCE_STATUS_ID,
19982          CUSTOMER_VIEW_FLAG,
19983          MERCHANT_VIEW_FLAG,
19984          SELLABLE_FLAG,
19985          SYSTEM_ID,
19986          INSTANCE_TYPE_CODE,
19987          ACTIVE_START_DATE,
19988          ACTIVE_END_DATE,
19989          LOCATION_TYPE_CODE,
19990          LOCATION_ID,
19991          INV_ORGANIZATION_ID,
19992          INV_SUBINVENTORY_NAME,
19993          INV_LOCATOR_ID,
19994          PA_PROJECT_ID,
19995          PA_PROJECT_TASK_ID,
19996          IN_TRANSIT_ORDER_LINE_ID,
19997          WIP_JOB_ID,
19998          PO_ORDER_LINE_ID,
19999          LAST_OE_ORDER_LINE_ID,
20000          LAST_OE_RMA_LINE_ID,
20001          LAST_PO_PO_LINE_ID,
20002          LAST_OE_PO_NUMBER,
20003          LAST_WIP_JOB_ID,
20004          LAST_PA_PROJECT_ID,
20005          LAST_PA_TASK_ID,
20006          LAST_OE_AGREEMENT_ID,
20007          INSTALL_DATE,
20008          MANUALLY_CREATED_FLAG,
20009          RETURN_BY_DATE,
20010          ACTUAL_RETURN_DATE,
20011          CREATION_COMPLETE_FLAG,
20012          COMPLETENESS_FLAG,
20013          NULL VERSION_LABEL,
20014          NULL VERSION_LABEL_DESCRIPTION,
20015          CONTEXT,
20016          ATTRIBUTE1,
20017          ATTRIBUTE2,
20018          ATTRIBUTE3,
20019          ATTRIBUTE4,
20020          ATTRIBUTE5,
20021          ATTRIBUTE6,
20022          ATTRIBUTE7,
20023          ATTRIBUTE8,
20024          ATTRIBUTE9,
20025          ATTRIBUTE10,
20026          ATTRIBUTE11,
20027          ATTRIBUTE12,
20028          ATTRIBUTE13,
20029          ATTRIBUTE14,
20030          ATTRIBUTE15,
20031          OBJECT_VERSION_NUMBER,
20032          LAST_TXN_LINE_DETAIL_ID,
20033          INSTALL_LOCATION_TYPE_CODE,
20034          INSTALL_LOCATION_ID,
20035          INSTANCE_USAGE_CODE,
20036          CONFIG_INST_HDR_ID,
20037          CONFIG_INST_REV_NUM,
20038          CONFIG_INST_ITEM_ID,
20039          CONFIG_VALID_STATUS,
20040          INSTANCE_DESCRIPTION,
20041 	 --start of column addition for eam integration--
20042          NETWORK_ASSET_FLAG,
20043          MAINTAINABLE_FLAG,
20044          PN_LOCATION_ID,
20045          ASSET_CRITICALITY_CODE,
20046          CATEGORY_ID,
20047          EQUIPMENT_GEN_OBJECT_ID,
20048          INSTANTIATION_FLAG,
20049          LINEAR_LOCATION_ID,
20050          OPERATIONAL_LOG_FLAG,
20051          CHECKIN_STATUS,
20052          SUPPLIER_WARRANTY_EXP_DATE,
20053          ATTRIBUTE16,
20054          ATTRIBUTE17,
20055          ATTRIBUTE18,
20056          ATTRIBUTE19,
20057          ATTRIBUTE20,
20058          ATTRIBUTE21,
20059          ATTRIBUTE22,
20060          ATTRIBUTE23,
20061          ATTRIBUTE24,
20062          ATTRIBUTE25,
20063          ATTRIBUTE26,
20064          ATTRIBUTE27,
20065          ATTRIBUTE28,
20066          ATTRIBUTE29,
20067          ATTRIBUTE30,
20068        --end of column addition for eam integration--
20069    -- Addition of columns for FA Integration
20070          PURCHASE_UNIT_PRICE,
20071          PURCHASE_CURRENCY_CODE,
20072          PAYABLES_UNIT_PRICE,
20073          PAYABLES_CURRENCY_CODE,
20074          SALES_UNIT_PRICE,
20075          SALES_CURRENCY_CODE,
20076          OPERATIONAL_STATUS_CODE,
20077     -- End addition of columns for FA Integration
20078          SOURCE_CODE -- Added Code for Siebel Genesis Project
20079        FROM   csi_item_instances
20080        WHERE  instance_id = p_instance_id ;
20081       -- AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE)); -- COMMENTED BY SK bug 2151760
20082      l_curr_instance_rec    get_instance_rec%ROWTYPE;
20083 
20084     CURSOR instance_csr (p_ins_id IN NUMBER) IS
20085       SELECT  *
20086       FROM    csi_item_instances
20087       WHERE   instance_id = p_ins_id;
20088 
20089     -- Added cursor for bug 6788183
20090     CURSOR relationship_csr (p_subject_id IN NUMBER) IS
20091       SELECT relationship_id,object_version_number
20092       FROM csi_ii_relationships
20093       WHERE subject_id = p_subject_id;
20094 
20095      l_instance_csr           instance_csr%ROWTYPE;
20096 
20097 l_temp                     VARCHAR2(1);
20098 l_temp_date                DATE;
20099 l_txn_date                 DATE;
20100 l_msg_count                NUMBER;
20101 l_msg_index                NUMBER;
20102 l_msg_dummy                NUMBER;
20103 l_open_service             VARCHAR2(1);
20104 l_oks_txn_type             VARCHAR2(3);
20105 l_eam_item                 BOOLEAN := FALSE;
20106 l_vld_org                  NUMBER;
20107 l_maintenance_object_type  NUMBER := 3;
20108 l_ins_hist_id              NUMBER;
20109 l_instance_history_id      NUMBER;
20110 l_valid                    BOOLEAN     := TRUE;
20111 l_creation_flag            VARCHAR2(1);
20112 
20113 BEGIN
20114 
20115       -- Standard Start of API savepoint
20116         SAVEPOINT      expire_item_instance_pvt;
20117 
20118       -- Standard call to check for call compatibility.
20119         IF NOT FND_API.Compatible_API_Call (l_api_version,
20120                                             p_api_version,
20121                                             l_api_name,
20122                                             G_PKG_NAME   )
20123         THEN
20124               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
20125         END IF;
20126 
20127       -- Initialize message list if p_init_msg_list is set to TRUE.
20128         IF FND_API.to_Boolean( p_init_msg_list ) THEN
20129               FND_MSG_PUB.initialize;
20130         END IF;
20131 
20132       --  Initialize API return status to success
20133         x_return_status := FND_API.G_RET_STS_SUCCESS;
20134 
20135         -- Check the profile option debug_level for debug message reporting
20136         l_debug_level:=fnd_profile.value('DEBUG_LEVEL');
20137 
20138         -- If debug_level = 1 then dump the procedure name
20139         IF (l_debug_level > 0) THEN
20140             csi_gen_utility_pvt.put_line ( 'expire_item_instance_pvt');
20141         END IF;
20142 
20143         -- If the debug level = 2 then dump all the parameters values.
20144         IF (l_debug_level > 1) THEN
20145             csi_gen_utility_pvt.put_line ( 'expire_item_instance_pvt :'||
20146                                             p_api_version         ||'-'||
20147                                             p_commit              ||'-'||
20148                                             p_init_msg_list       );
20149 
20150          --dump the records in to a log file
20151          csi_gen_utility_pvt.dump_instance_rec(p_instance_rec);
20152          csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
20153         END IF;
20154 
20155         -- Start API body
20156 -- Check if all the required parameters are passed
20157          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_num
20158              (    p_instance_rec.instance_id ,
20159                '  p_instance_rec.instance_id ',
20160                   l_api_name       );
20161 
20162          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_num
20163              (    p_instance_rec.object_version_number ,
20164                '  p_instance_rec.object_version_number  ',
20165                   l_api_name       );
20166 
20167 -- Check if the instance id  is valid
20168         IF NOT(CSI_Item_Instance_vld_pvt.Is_InstanceID_Valid
20169                                                      (p_instance_rec.instance_id,
20170                                                       TRUE         )) THEN
20171               RAISE FND_API.G_EXC_ERROR;
20172         END IF;
20173 
20174 -- check if the object_version_number passed matches with the one
20175 -- in the database else raise error
20176         OPEN get_instance_rec(p_instance_rec.instance_id);
20177         FETCH get_instance_rec INTO l_curr_instance_rec;
20178                 IF  (l_curr_instance_rec.object_version_number <> nvl(p_instance_rec.OBJECT_VERSION_NUMBER,0)) THEN
20179                         FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
20180                         FND_MSG_PUB.ADD;
20181                         RAISE FND_API.G_EXC_ERROR;
20182                 END IF;
20183 
20184                 IF get_instance_rec%NOTFOUND THEN
20185                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
20186                     FND_MSG_PUB.ADD;
20187                        RAISE FND_API.G_EXC_ERROR;
20188                 END IF;
20189         CLOSE get_instance_rec;
20190 
20191 --  checking for any unexpired children in csi_ii_relationships table
20192 
20193 --  Added by sk for bug 2151760
20194      IF (( p_instance_rec.active_end_date IS NOT NULL) AND (p_instance_rec.active_end_date < SYSDATE))
20195       AND  p_instance_rec.active_end_date <> fnd_api.g_miss_date
20196      THEN
20197        l_temp_date:= p_instance_rec.active_end_date;
20198        BEGIN
20199         SELECT MAX(transaction_date)
20200         INTO   l_txn_date
20201         FROM   csi_inst_transactions_v
20202         WHERE  instance_id=p_instance_rec.instance_id
20203         AND    transaction_date>p_instance_rec.active_end_date;
20204 
20205         IF l_txn_date IS NOT NULL
20206         THEN
20207            x_return_status := FND_API.G_RET_STS_ERROR ;
20208            FND_MESSAGE.Set_Name('CSI', 'CSI_PARENT_HAS_TXN');
20209            FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_curr_instance_rec.instance_number );
20210            FND_MESSAGE.SET_TOKEN('TXN_DATE',to_char(l_txn_date, 'DD-MON-YYYY HH24:MI:SS'));
20211            FND_MSG_PUB.ADD;
20212            RAISE FND_API.G_EXC_ERROR;
20213         END IF;
20214        EXCEPTION
20215          WHEN FND_API.G_EXC_ERROR THEN
20216               RAISE FND_API.G_EXC_ERROR;
20217          WHEN OTHERS THEN
20218            NULL;
20219        END;
20220      ELSE
20221        l_temp_date:= SYSDATE;
20222      END IF;
20223 -- End addition by sk for bug 2151760
20224 
20225     DECLARE
20226        l_dummy  NUMBER;
20227        l_has_unexpired_children BOOLEAN;
20228        p_rel_query_rec csi_datastructures_pub.relationship_query_rec;
20229        l_rel_tbl       csi_datastructures_pub.ii_relationship_tbl;
20230        l_ii_relationship_level_tbl csi_ii_relationships_pvt.ii_relationship_level_tbl;
20231     BEGIN
20232        p_rel_query_rec.object_id := p_instance_rec.instance_id;
20233        p_rel_query_rec.relationship_type_code := 'COMPONENT-OF';
20234        --
20235       IF p_rel_query_rec.object_id IS NOT NULL AND
20236          p_rel_query_rec.object_id <> FND_API.G_MISS_NUM THEN
20237          csi_ii_relationships_pvt.Get_Children
20238 	  ( p_relationship_query_rec   => p_rel_query_rec,
20239 	    p_rel_tbl                  => l_rel_tbl,
20240             p_depth                    => NULL,
20241 	    p_active_relationship_only => FND_API.G_TRUE,
20242 	    p_time_stamp               => FND_API.G_MISS_DATE,
20243             p_get_dfs                  => FND_API.G_FALSE,
20244             p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
20245 	    x_return_status            => x_return_status,
20246 	    x_msg_count                => x_msg_count,
20247 	    x_msg_data                 => x_msg_data
20248 	  );
20249 	 --
20250   	 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
20251             FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
20252             FND_MSG_PUB.Add;
20253 	    RAISE FND_API.G_EXC_ERROR;
20254 	 END IF;
20255       END IF;
20256 	--
20257       csi_gen_utility_pvt.put_line('Child count is ..'||to_char(l_rel_tbl.count));
20258         l_dummy := l_rel_tbl.count;
20259         IF l_dummy > 0 THEN
20260            l_has_unexpired_children := TRUE;
20261         ELSE
20262            l_has_unexpired_children := FALSE;
20263         END IF;
20264 
20265        IF l_has_unexpired_children = TRUE THEN
20266           IF p_expire_children = 'F' THEN
20267             FND_MESSAGE.SET_NAME('CSI','CSI_API_CANT_EXPIRE_INSTANCE');
20268             FND_MSG_PUB.Add;
20269             RAISE FND_API.G_EXC_ERROR;
20270 
20271           ELSE
20272              -- Call the expire_child_instances api
20273              expire_child_instances(p_api_version         => p_api_version,
20274                                     p_commit              => p_commit,
20275                                     p_init_msg_list       => p_init_msg_list,
20276                                     p_validation_level    => p_validation_level,
20277                                     p_instance_rec        => p_instance_rec,
20278                                     p_expire_children     => fnd_api.g_true,
20279                                     p_txn_rec             => p_txn_rec,
20280                                     x_instance_id_lst     => x_instance_id_lst,
20281                                     p_oks_txn_inst_tbl    => p_oks_txn_inst_tbl,
20282                                     x_return_status       => x_return_status,
20283                                     x_msg_count           => x_msg_count,
20284                                     x_msg_data            => x_msg_data
20285                                     );
20286 
20287           END IF;
20288        END IF;
20289     END;
20290      -- Added by sguthiva for bug 2520978
20291      -- Modified by srramakr for enhancement 2315522.
20292      -- This will allow the user to pass a Terminable status during expiration.
20293      IF p_instance_rec.instance_status_id IS NOT NULL AND
20294         p_instance_rec.instance_status_id <> fnd_api.g_miss_num THEN
20295         IF NOT (CSI_Item_Instance_vld_pvt.val_inst_ter_flag(
20296                                             p_instance_rec.instance_status_id)) THEN
20297            FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_TERM_STATUS');
20298            FND_MSG_PUB.ADD;
20299            RAISE FND_API.G_EXC_ERROR;
20300         END IF;
20301         l_instance_rec.instance_status_id := p_instance_rec.instance_status_id;
20302      ELSE
20303         l_instance_rec.instance_status_id := fnd_profile.value('CSI_SYS_TERM_INST_STATUS_ID');
20304         IF  l_instance_rec.instance_status_id IS NULL
20305         OR l_instance_rec.instance_status_id=fnd_api.g_miss_num
20306         THEN
20307            l_instance_rec.instance_status_id := 1;
20308         END IF;
20309      END IF;
20310      -- End addition by sguthiva for bug 2520978.
20311      -- l_instance_rec.instance_status_id    := 1; -- '1' for expired instances defined in the csi instance statuses
20312       l_instance_rec.object_version_number := l_curr_instance_rec.object_version_number + 1;
20313 
20314       -- Start addition by sguthiva for bug 2416193
20315            -- Relaxing this check for RMA Receipt transaction
20316       IF p_txn_rec.transaction_type_id = 1
20317       THEN
20318       BEGIN
20319             SELECT 'x'
20320             INTO   l_open_service
20321             FROM   cs_incidents_all csi,
20322                    cs_incident_statuses_b csb
20323             WHERE  csi.incident_status_id = csb.incident_status_id
20324             AND    csi.customer_product_id = p_instance_rec.instance_id
20325             AND    NVL(close_flag,'N')<>'Y';
20326 
20327              FND_MESSAGE.SET_NAME('CSI','CSI_IB_HAS_OPEN_SR');
20328              FND_MSG_PUB.ADD;
20329              RAISE FND_API.G_EXC_ERROR;
20330 
20331       EXCEPTION
20332            WHEN TOO_MANY_ROWS THEN
20333              FND_MESSAGE.SET_NAME('CSI','CSI_IB_HAS_OPEN_SR');
20334              FND_MSG_PUB.ADD;
20335              RAISE FND_API.G_EXC_ERROR;
20336 
20337            WHEN NO_DATA_FOUND THEN -- modfied for bug 3693511
20338             NULL;
20339       END;
20340       END IF;
20341       -- End addition for bug 2416193
20342 
20343       -- Added code to expire relationship where the instance expired is the child, bug 6788183
20344       csi_gen_utility_pvt.put_line('Expiring relationship for the instance id - ' || p_instance_rec.instance_id);
20345       FOR l_inst_relationship_rec in relationship_csr(p_instance_rec.instance_id)
20346       LOOP
20347         BEGIN
20348           csi_gen_utility_pvt.put_line('Expiring relationship with id - ' || l_inst_relationship_rec.relationship_id);
20349           l_exp_rltns_rec.relationship_id := l_inst_relationship_rec.relationship_id;
20350           l_exp_rltns_rec.object_version_number := l_inst_relationship_rec.object_version_number;
20351 
20352           csi_t_gen_utility_pvt.dump_api_info(
20353             p_pkg_name => 'csi_ii_relationships_pub',
20354             p_api_name => 'expire_relationship');
20355 
20356           csi_ii_relationships_pub.expire_relationship(
20357               p_api_version               => 1.0,
20358               p_commit                    => fnd_api.g_false,
20359               p_init_msg_list             => fnd_api.g_false,
20360               p_validation_level          => fnd_api.g_valid_level_full,
20361               p_relationship_rec          => l_exp_rltns_rec,
20362               p_txn_rec                   => p_txn_rec,
20363               x_instance_id_lst           => l_instance_id_lst,
20364               x_return_status             => l_return_status,
20365               x_msg_count                 => l_msg_count,
20366               x_msg_data                  => l_msg_data);
20367 
20368           IF l_return_status <> fnd_api.g_ret_sts_success THEN
20369             RAISE fnd_api.g_exc_error;
20370           END IF;
20371         END;
20372       END LOOP;
20373 
20374       csi_gen_utility_pvt.put_line('End of expiring relationships for instance with id - ' || p_instance_rec.instance_id);
20375       -- End of addition for the bug 6788183
20376 
20377         -- Added the following code for eam integration
20378            IF p_instance_rec.vld_organization_id IS NULL OR
20379               p_instance_rec.vld_organization_id = fnd_api.g_miss_num
20380            THEN
20381              BEGIN
20382               SELECT last_vld_organization_id
20383                 INTO l_vld_org
20384                 FROM csi_item_instances
20385                WHERE instance_id = p_instance_rec.instance_id;
20386              EXCEPTION
20387                WHEN NO_DATA_FOUND THEN
20388                 fnd_message.set_name('CSI','CSI_API_INVALID_INSTANCE_ID');
20389                 fnd_message.set_token('INSTANCE_ID',p_instance_rec.instance_id);
20390                 fnd_msg_pub.ADD;
20391              END;
20392            ELSE
20393              l_vld_org := p_instance_rec.vld_organization_id;
20394            END IF;
20395 
20396            IF csi_item_instance_vld_pvt.Check_for_eam_item
20397               (p_inventory_item_id  => l_curr_instance_rec.inventory_item_id,
20398                p_organization_id    => l_vld_org)
20399            THEN
20400              l_eam_item := TRUE;
20401            END IF;
20402 
20403            IF l_eam_item AND
20404              (p_instance_rec.active_end_date IS NOT NULL AND
20405               p_instance_rec.active_end_date <> fnd_api.g_miss_date)
20406            THEN
20407             IF NOT eam_common_utilities_pvt.check_deactivate
20408               (p_maintenance_object_id   => p_instance_rec.instance_id
20409               ,p_maintenance_object_type => l_maintenance_object_type)
20410             THEN
20411               csi_gen_utility_pvt.put_line('Error from eam_common_utilities_pvt.check_deactivate API ');
20412               RAISE fnd_api.g_exc_error;
20413             END IF;
20414            END IF;
20415         -- End code addition for eam integration
20416     -- validate instance status id
20417        IF NVL(l_instance_rec.INSTANCE_STATUS_ID,fnd_api.g_miss_num) <> fnd_api.g_miss_num
20418        THEN
20419          csi_item_instance_vld_pvt.is_valid_status(
20420            p_instance_status_id     => l_instance_rec.INSTANCE_STATUS_ID,
20421            p_creation_complete_flag => l_creation_flag,
20422            l_return_value           => l_valid);
20423           IF NOT(l_valid)
20424           THEN
20425              RAISE fnd_api.g_exc_error;
20426           END IF;
20427         END IF;
20428 
20429         IF l_instance_rec.INSTANCE_STATUS_ID IS NOT NULL AND
20430            l_instance_rec.INSTANCE_STATUS_ID <> FND_API.G_MISS_NUM AND
20431            l_instance_rec.INSTANCE_STATUS_ID <> l_curr_instance_rec.INSTANCE_STATUS_ID
20432         THEN
20433            IF NOT csi_item_instance_vld_pvt.is_status_updateable
20434                   (p_instance_status => l_instance_rec.INSTANCE_STATUS_ID
20435                   ,p_current_status  => l_curr_instance_rec.INSTANCE_STATUS_ID)
20436            THEN
20437              RAISE fnd_api.g_exc_error;
20438            END IF;
20439         END IF;
20440 
20441     CSI_ITEM_INSTANCES_PKG.Update_Row
20442        (  p_INSTANCE_ID                 => p_instance_rec.INSTANCE_ID,
20443           p_INSTANCE_NUMBER             => l_instance_rec.INSTANCE_NUMBER,
20444           p_EXTERNAL_REFERENCE          => l_instance_rec.EXTERNAL_REFERENCE,
20445           p_INVENTORY_ITEM_ID           => l_instance_rec.INVENTORY_ITEM_ID,
20446           p_INVENTORY_REVISION          => l_instance_rec.INVENTORY_REVISION,
20447           p_INV_MASTER_ORGANIZATION_ID  => l_instance_rec.INV_MASTER_ORGANIZATION_ID,
20448           p_SERIAL_NUMBER               => l_instance_rec.SERIAL_NUMBER,
20449           p_MFG_SERIAL_NUMBER_FLAG      => l_instance_rec.MFG_SERIAL_NUMBER_FLAG,
20450           p_LOT_NUMBER                  => l_instance_rec.LOT_NUMBER,
20451           p_QUANTITY                    => l_instance_rec.QUANTITY,
20452           p_UNIT_OF_MEASURE             => l_instance_rec.UNIT_OF_MEASURE,
20453           p_ACCOUNTING_CLASS_CODE       => l_instance_rec.ACCOUNTING_CLASS_CODE,
20454           p_INSTANCE_CONDITION_ID       => l_instance_rec.INSTANCE_CONDITION_ID,
20455           p_INSTANCE_STATUS_ID          => l_instance_rec.INSTANCE_STATUS_ID,
20456           p_CUSTOMER_VIEW_FLAG          => l_instance_rec.CUSTOMER_VIEW_FLAG,
20457           p_MERCHANT_VIEW_FLAG          => l_instance_rec.MERCHANT_VIEW_FLAG,
20458           p_SELLABLE_FLAG               => l_instance_rec.SELLABLE_FLAG,
20459           p_SYSTEM_ID                   => l_instance_rec.SYSTEM_ID,
20460           p_INSTANCE_TYPE_CODE          => l_instance_rec.INSTANCE_TYPE_CODE,
20461           p_ACTIVE_START_DATE           => l_instance_rec.ACTIVE_START_DATE,
20462           p_ACTIVE_END_DATE             => l_temp_date,--SYSDATE,
20463           p_LOCATION_TYPE_CODE          => l_instance_rec.LOCATION_TYPE_CODE,
20464           p_LOCATION_ID                 => l_instance_rec.LOCATION_ID,
20465           p_INV_ORGANIZATION_ID         => l_instance_rec.INV_ORGANIZATION_ID,
20466           p_INV_SUBINVENTORY_NAME       => l_instance_rec.INV_SUBINVENTORY_NAME,
20467           p_INV_LOCATOR_ID              => l_instance_rec.INV_LOCATOR_ID,
20468           p_PA_PROJECT_ID               => l_instance_rec.PA_PROJECT_ID,
20469           p_PA_PROJECT_TASK_ID          => l_instance_rec.PA_PROJECT_TASK_ID,
20470           p_IN_TRANSIT_ORDER_LINE_ID    => l_instance_rec.IN_TRANSIT_ORDER_LINE_ID,
20471           p_WIP_JOB_ID                  => l_instance_rec.WIP_JOB_ID,
20472           p_PO_ORDER_LINE_ID            => l_instance_rec.PO_ORDER_LINE_ID,
20473           p_LAST_OE_ORDER_LINE_ID       => l_instance_rec.LAST_OE_ORDER_LINE_ID,
20474           p_LAST_OE_RMA_LINE_ID         => l_instance_rec.LAST_OE_RMA_LINE_ID,
20475           p_LAST_PO_PO_LINE_ID          => l_instance_rec.LAST_PO_PO_LINE_ID,
20476           p_LAST_OE_PO_NUMBER           => l_instance_rec.LAST_OE_PO_NUMBER,
20477           p_LAST_WIP_JOB_ID             => l_instance_rec.LAST_WIP_JOB_ID,
20478           p_LAST_PA_PROJECT_ID          => l_instance_rec.LAST_PA_PROJECT_ID,
20479           p_LAST_PA_TASK_ID             => l_instance_rec.LAST_PA_TASK_ID,
20480           p_LAST_OE_AGREEMENT_ID        => l_instance_rec.LAST_OE_AGREEMENT_ID,
20481           p_INSTALL_DATE                => l_instance_rec.INSTALL_DATE,
20482           p_MANUALLY_CREATED_FLAG       => l_instance_rec.MANUALLY_CREATED_FLAG,
20483           p_RETURN_BY_DATE              => l_instance_rec.RETURN_BY_DATE,
20484           p_ACTUAL_RETURN_DATE          => l_instance_rec.ACTUAL_RETURN_DATE,
20485           p_CREATION_COMPLETE_FLAG      => l_instance_rec.CREATION_COMPLETE_FLAG,
20486           p_COMPLETENESS_FLAG           => l_instance_rec.COMPLETENESS_FLAG,
20487           p_CONTEXT                     => l_instance_rec.CONTEXT,
20488           p_ATTRIBUTE1                  => l_instance_rec.ATTRIBUTE1,
20489           p_ATTRIBUTE2                  => l_instance_rec.ATTRIBUTE2,
20490           p_ATTRIBUTE3                  => l_instance_rec.ATTRIBUTE3,
20491           p_ATTRIBUTE4                  => l_instance_rec.ATTRIBUTE4,
20492           p_ATTRIBUTE5                  => l_instance_rec.ATTRIBUTE5,
20493           p_ATTRIBUTE6                  => l_instance_rec.ATTRIBUTE6,
20494           p_ATTRIBUTE7                  => l_instance_rec.ATTRIBUTE7,
20495           p_ATTRIBUTE8                  => l_instance_rec.ATTRIBUTE8,
20496           p_ATTRIBUTE9                  => l_instance_rec.ATTRIBUTE9,
20497           p_ATTRIBUTE10                 => l_instance_rec.ATTRIBUTE10,
20498           p_ATTRIBUTE11                 => l_instance_rec.ATTRIBUTE11,
20499           p_ATTRIBUTE12                 => l_instance_rec.ATTRIBUTE12,
20500           p_ATTRIBUTE13                 => l_instance_rec.ATTRIBUTE13,
20501           p_ATTRIBUTE14                 => l_instance_rec.ATTRIBUTE14,
20502           p_ATTRIBUTE15                 => l_instance_rec.ATTRIBUTE15,
20503           p_CREATED_BY                  => fnd_api.g_miss_num,
20504           p_CREATION_DATE               => fnd_api.g_miss_date,
20505           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID,
20506           p_LAST_UPDATE_DATE            => SYSDATE,
20507           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.CONC_LOGIN_ID,
20508           p_OBJECT_VERSION_NUMBER       => l_instance_rec.OBJECT_VERSION_NUMBER,
20509           p_LAST_TXN_LINE_DETAIL_ID     => l_instance_rec.LAST_TXN_LINE_DETAIL_ID,
20510           p_INSTALL_LOCATION_TYPE_CODE  => l_instance_rec.INSTALL_LOCATION_TYPE_CODE,
20511           p_INSTALL_LOCATION_ID         => l_instance_rec.INSTALL_LOCATION_ID,
20512           p_INSTANCE_USAGE_CODE         => l_instance_rec.INSTANCE_USAGE_CODE,
20513           p_CONFIG_INST_HDR_ID          => NULL, -- l_instance_rec.CONFIG_INST_HDR_ID,
20514           p_CONFIG_INST_REV_NUM         => NULL, -- l_instance_rec.CONFIG_INST_REV_NUM,
20515           p_CONFIG_INST_ITEM_ID         => NULL, -- l_instance_rec.CONFIG_INST_ITEM_ID,
20516           p_CONFIG_VALID_STATUS         => NULL, -- l_instance_rec.CONFIG_VALID_STATUS,
20517           p_INSTANCE_DESCRIPTION        => l_instance_rec.INSTANCE_DESCRIPTION,
20518           p_REQUEST_ID                  => l_instance_rec.REQUEST_ID,
20519           p_PROGRAM_APPLICATION_ID      => l_instance_rec.PROGRAM_APPLICATION_ID,
20520           p_PROGRAM_ID                  => l_instance_rec.PROGRAM_ID,
20521           p_PROGRAM_UPDATE_DATE         => l_instance_rec.PROGRAM_UPDATE_DATE,
20522 	  --start of parameters addition for eam integration--
20523           p_NETWORK_ASSET_FLAG          => l_instance_rec.NETWORK_ASSET_FLAG,
20524           p_MAINTAINABLE_FLAG           => l_instance_rec.MAINTAINABLE_FLAG,
20525           p_PN_LOCATION_ID              => l_instance_rec.PN_LOCATION_ID,
20526           p_ASSET_CRITICALITY_CODE      => l_instance_rec.ASSET_CRITICALITY_CODE,
20527           p_CATEGORY_ID                 => l_instance_rec.CATEGORY_ID,
20528           p_EQUIPMENT_GEN_OBJECT_ID     => l_instance_rec.EQUIPMENT_GEN_OBJECT_ID,
20529           p_INSTANTIATION_FLAG          => l_instance_rec.INSTANTIATION_FLAG,
20530           p_LINEAR_LOCATION_ID          => l_instance_rec.LINEAR_LOCATION_ID,
20531           p_OPERATIONAL_LOG_FLAG        => l_instance_rec.OPERATIONAL_LOG_FLAG,
20532           p_CHECKIN_STATUS              => l_instance_rec.CHECKIN_STATUS,
20533           p_SUPPLIER_WARRANTY_EXP_DATE  => l_instance_rec.SUPPLIER_WARRANTY_EXP_DATE,
20534           p_ATTRIBUTE16                 => l_instance_rec.ATTRIBUTE16,
20535           p_ATTRIBUTE17                 => l_instance_rec.ATTRIBUTE17,
20536           p_ATTRIBUTE18                 => l_instance_rec.ATTRIBUTE18,
20537           p_ATTRIBUTE19                 => l_instance_rec.ATTRIBUTE19,
20538           p_ATTRIBUTE20                 => l_instance_rec.ATTRIBUTE20,
20539           p_ATTRIBUTE21                 => l_instance_rec.ATTRIBUTE21,
20540           p_ATTRIBUTE22                 => l_instance_rec.ATTRIBUTE22,
20541           p_ATTRIBUTE23                 => l_instance_rec.ATTRIBUTE23,
20542           p_ATTRIBUTE24                 => l_instance_rec.ATTRIBUTE24,
20543           p_ATTRIBUTE25                 => l_instance_rec.ATTRIBUTE25,
20544           p_ATTRIBUTE26                 => l_instance_rec.ATTRIBUTE26,
20545           p_ATTRIBUTE27                 => l_instance_rec.ATTRIBUTE27,
20546           p_ATTRIBUTE28                 => l_instance_rec.ATTRIBUTE28,
20547           p_ATTRIBUTE29                 => l_instance_rec.ATTRIBUTE29,
20548           p_ATTRIBUTE30                 => l_instance_rec.ATTRIBUTE30,
20549 	  --end of parameters addition for eam integration--
20550    -- Addition of columns for FA Integration
20551           p_PURCHASE_UNIT_PRICE         => l_instance_rec.PURCHASE_UNIT_PRICE,
20552           p_PURCHASE_CURRENCY_CODE      => l_instance_rec.PURCHASE_CURRENCY_CODE,
20553           p_PAYABLES_UNIT_PRICE         => l_instance_rec.PAYABLES_UNIT_PRICE,
20554           p_PAYABLES_CURRENCY_CODE      => l_instance_rec.PAYABLES_CURRENCY_CODE,
20555           p_SALES_UNIT_PRICE            => l_instance_rec.SALES_UNIT_PRICE,
20556           p_SALES_CURRENCY_CODE         => l_instance_rec.SALES_CURRENCY_CODE,
20557           p_OPERATIONAL_STATUS_CODE     => l_instance_rec.OPERATIONAL_STATUS_CODE,
20558     -- End addition of columns for FA Integration
20559           p_SOURCE_CODE                 => l_instance_rec.SOURCE_CODE -- Added Code for Siebel Genesis Project
20560           );
20561 
20562 
20563 -- calling the transaction api
20564 --IF CSI_Item_Instance_vld_pvt.Is_Inst_creation_complete( l_instance_rec.INSTANCE_ID ) THEN
20565 
20566    -- Call create_transaction to create txn log
20567         CSI_TRANSACTIONS_PVT.Create_transaction
20568           (
20569              p_api_version            => p_api_version
20570             ,p_commit                 => p_commit
20571             ,p_init_msg_list          => p_init_msg_list
20572             ,p_validation_level       => p_validation_level
20573             ,p_Success_IF_Exists_Flag => 'Y'
20574             ,p_transaction_rec        => p_txn_rec
20575             ,x_return_status          => x_return_status
20576             ,x_msg_count              => x_msg_count
20577             ,x_msg_data               => x_msg_data
20578           );
20579 
20580          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
20581 
20582               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_VALIDATE_TXN');
20583               FND_MESSAGE.SET_TOKEN('TRANSACTION_ID',p_txn_rec.transaction_id );
20584               FND_MSG_PUB.Add;
20585               RAISE FND_API.G_EXC_ERROR;
20586          END IF;
20587 -- END IF;
20588 
20589 -- Get a unique history item instance id from the sequence
20590           l_csi_item_instance_h_id :=
20591                                  csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
20592 
20593 -- Get the full_dump_frequency from csi_install_parameter
20594        --
20595       IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
20596           csi_gen_utility_pvt.populate_install_param_rec;
20597        END IF;
20598        --
20599        l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
20600        --
20601        IF l_full_dump_frequency IS NULL THEN
20602           FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
20603           FND_MSG_PUB.ADD;
20604           RAISE FND_API.G_EXC_ERROR;
20605        END IF;
20606 
20607        SELECT MOD(l_instance_rec.object_version_number,l_full_dump_frequency)
20608        INTO   l_mod_value
20609        FROM   dual;
20610 
20611      -- Added for the bug 6788183
20612      BEGIN
20613         SELECT  instance_history_id
20614         INTO    l_ins_hist_id
20615         FROM    csi_item_instances_h h
20616         WHERE   h.transaction_id = p_txn_rec.transaction_id
20617         AND     h.instance_id = p_instance_rec.instance_id;
20618 
20619          CSI_ITEM_INSTANCES_H_PKG.Update_Row
20620            ( p_INSTANCE_HISTORY_ID              => l_ins_hist_id
20621             ,p_INSTANCE_ID                       => fnd_api.g_miss_num
20622             ,p_TRANSACTION_ID                    => fnd_api.g_miss_num
20623             ,p_OLD_INSTANCE_NUMBER               => fnd_api.g_miss_char
20624             ,p_NEW_INSTANCE_NUMBER               => p_instance_rec.INSTANCE_NUMBER
20625             ,p_OLD_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
20626             ,p_NEW_EXTERNAL_REFERENCE            => p_instance_rec.EXTERNAL_REFERENCE
20627             ,p_OLD_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
20628             ,p_NEW_INVENTORY_ITEM_ID             => p_instance_rec.INVENTORY_ITEM_ID
20629             ,p_OLD_INVENTORY_REVISION            => fnd_api.g_miss_char
20630             ,p_NEW_INVENTORY_REVISION            => p_instance_rec.INVENTORY_REVISION
20631             ,p_OLD_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
20632             ,p_NEW_INV_MASTER_ORGZN_ID           => p_instance_rec.INV_MASTER_ORGANIZATION_ID
20633             ,p_OLD_SERIAL_NUMBER                 => fnd_api.g_miss_char
20634             ,p_NEW_SERIAL_NUMBER                 => p_instance_rec.SERIAL_NUMBER
20635             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
20636             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
20637             ,p_OLD_LOT_NUMBER                    => fnd_api.g_miss_char
20638             ,p_NEW_LOT_NUMBER                    => p_instance_rec.LOT_NUMBER
20639             ,p_OLD_QUANTITY                      => fnd_api.g_miss_num
20640             ,p_NEW_QUANTITY                      => p_instance_rec.QUANTITY
20641             ,p_OLD_UNIT_OF_MEASURE               => fnd_api.g_miss_char
20642             ,p_NEW_UNIT_OF_MEASURE               => p_instance_rec.UNIT_OF_MEASURE
20643             ,p_OLD_ACCOUNTING_CLASS_CODE         => fnd_api.g_miss_char
20644             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
20645             ,p_OLD_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
20646             ,p_NEW_INSTANCE_CONDITION_ID         => p_instance_rec.INSTANCE_CONDITION_ID
20647             ,p_OLD_INSTANCE_STATUS_ID            => fnd_api.g_miss_num
20648             ,p_NEW_INSTANCE_STATUS_ID            => p_instance_rec.INSTANCE_STATUS_ID
20649             ,p_OLD_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
20650             ,p_NEW_CUSTOMER_VIEW_FLAG            => p_instance_rec.CUSTOMER_VIEW_FLAG
20651             ,p_OLD_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
20652             ,p_NEW_MERCHANT_VIEW_FLAG            => p_instance_rec.MERCHANT_VIEW_FLAG
20653             ,p_OLD_SELLABLE_FLAG                 => fnd_api.g_miss_char
20654             ,p_NEW_SELLABLE_FLAG                 => p_instance_rec.SELLABLE_FLAG
20655             ,p_OLD_SYSTEM_ID                     => fnd_api.g_miss_num
20656             ,p_NEW_SYSTEM_ID                     => p_instance_rec.SYSTEM_ID
20657             ,p_OLD_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
20658             ,p_NEW_INSTANCE_TYPE_CODE            => p_instance_rec.INSTANCE_TYPE_CODE
20659             ,p_OLD_ACTIVE_START_DATE             => fnd_api.g_miss_date
20660             ,p_NEW_ACTIVE_START_DATE             => p_instance_rec.ACTIVE_START_DATE
20661             ,p_OLD_ACTIVE_END_DATE               => fnd_api.g_miss_date
20662             ,p_NEW_ACTIVE_END_DATE               => l_temp_date
20663             ,p_OLD_LOCATION_TYPE_CODE            => fnd_api.g_miss_char
20664             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
20665             ,p_OLD_LOCATION_ID                   => fnd_api.g_miss_num
20666             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
20667             ,p_OLD_INV_ORGANIZATION_ID           => fnd_api.g_miss_num
20668             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
20669             ,p_OLD_INV_SUBINVENTORY_NAME         => fnd_api.g_miss_char
20670             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
20671             ,p_OLD_INV_LOCATOR_ID                => fnd_api.g_miss_num
20672             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
20673             ,p_OLD_PA_PROJECT_ID                 => fnd_api.g_miss_num
20674             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
20675             ,p_OLD_PA_PROJECT_TASK_ID            => fnd_api.g_miss_num
20676             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
20677             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => fnd_api.g_miss_num
20678             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
20679             ,p_OLD_WIP_JOB_ID                    => fnd_api.g_miss_num
20680             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
20681             ,p_OLD_PO_ORDER_LINE_ID              => fnd_api.g_miss_num
20682             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
20683             ,p_OLD_COMPLETENESS_FLAG             => fnd_api.g_miss_char
20684             ,p_NEW_COMPLETENESS_FLAG             => p_instance_rec.COMPLETENESS_FLAG
20685             ,p_FULL_DUMP_FLAG                    => fnd_api.g_miss_char
20686             ,p_NEW_CONTEXT                       => p_instance_rec.CONTEXT
20687             ,P_OLD_CONTEXT                       => fnd_api.g_miss_char
20688             ,p_NEW_ATTRIBUTE1                    => p_instance_rec.ATTRIBUTE1
20689             ,p_OLD_ATTRIBUTE1                    => fnd_api.g_miss_char
20690             ,p_NEW_ATTRIBUTE2                    => p_instance_rec.ATTRIBUTE2
20691             ,p_OLD_ATTRIBUTE2                    => fnd_api.g_miss_char
20692             ,p_NEW_ATTRIBUTE3                    => p_instance_rec.ATTRIBUTE3
20693             ,p_OLD_ATTRIBUTE3                    => fnd_api.g_miss_char
20694             ,p_NEW_ATTRIBUTE4                    => p_instance_rec.ATTRIBUTE4
20695             ,p_OLD_ATTRIBUTE4                    => fnd_api.g_miss_char
20696             ,p_NEW_ATTRIBUTE5                    => p_instance_rec.ATTRIBUTE5
20697             ,p_OLD_ATTRIBUTE5                    => fnd_api.g_miss_char
20698             ,p_NEW_ATTRIBUTE6                    => p_instance_rec.ATTRIBUTE6
20699             ,p_OLD_ATTRIBUTE6                    => fnd_api.g_miss_char
20700             ,p_NEW_ATTRIBUTE7                    => p_instance_rec.ATTRIBUTE7
20701             ,p_OLD_ATTRIBUTE7                    => fnd_api.g_miss_char
20702             ,p_NEW_ATTRIBUTE8                    => p_instance_rec.ATTRIBUTE8
20703             ,p_OLD_ATTRIBUTE8                    => fnd_api.g_miss_char
20704             ,p_NEW_ATTRIBUTE9                    => p_instance_rec.ATTRIBUTE9
20705             ,p_OLD_ATTRIBUTE9                    => fnd_api.g_miss_char
20706             ,p_NEW_ATTRIBUTE10                   => p_instance_rec.ATTRIBUTE10
20707             ,p_OLD_ATTRIBUTE10                   => fnd_api.g_miss_char
20708             ,p_NEW_ATTRIBUTE11                   => p_instance_rec.ATTRIBUTE11
20709             ,p_OLD_ATTRIBUTE11                   => fnd_api.g_miss_char
20710             ,p_NEW_ATTRIBUTE12                   => p_instance_rec.ATTRIBUTE12
20711             ,p_OLD_ATTRIBUTE12                   => fnd_api.g_miss_char
20712             ,p_NEW_ATTRIBUTE13                   => p_instance_rec.ATTRIBUTE13
20713             ,p_OLD_ATTRIBUTE13                   => fnd_api.g_miss_char
20714             ,p_NEW_ATTRIBUTE14                   => p_instance_rec.ATTRIBUTE14
20715             ,p_OLD_ATTRIBUTE14                   => fnd_api.g_miss_char
20716             ,p_NEW_ATTRIBUTE15                   => p_instance_rec.ATTRIBUTE15
20717             ,p_OLD_ATTRIBUTE15                   => fnd_api.g_miss_char
20718             ,p_CREATED_BY                        => fnd_api.g_miss_num
20719             ,p_CREATION_DATE                     => fnd_api.g_miss_date
20720             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
20721             ,p_LAST_UPDATE_DATE                  => SYSDATE
20722             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
20723             ,p_OBJECT_VERSION_NUMBER             => fnd_api.g_miss_num
20724             ,p_OLD_INST_LOC_TYPE_CODE            => fnd_api.g_miss_char
20725             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
20726             ,p_OLD_INST_LOC_ID                   => fnd_api.g_miss_num
20727             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
20728             ,p_OLD_INST_USAGE_CODE               => fnd_api.g_miss_char
20729             ,p_NEW_INST_USAGE_CODE               => p_instance_rec.INSTANCE_USAGE_CODE
20730             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
20731             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => p_instance_rec.vld_organization_id
20732             ,p_OLD_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
20733             ,p_NEW_CONFIG_INST_REV_NUM           => p_instance_rec.CONFIG_INST_REV_NUM
20734             ,p_OLD_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
20735             ,p_NEW_CONFIG_VALID_STATUS           => p_instance_rec.CONFIG_VALID_STATUS
20736             ,p_OLD_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
20737             ,p_NEW_INSTANCE_DESCRIPTION          => p_instance_rec.INSTANCE_DESCRIPTION
20738             ,p_OLD_INSTALL_DATE                  => fnd_api.g_miss_date
20739             ,p_NEW_INSTALL_DATE                  => p_instance_rec.INSTALL_DATE
20740             ,p_OLD_RETURN_BY_DATE                => fnd_api.g_miss_date
20741             ,p_NEW_RETURN_BY_DATE                => p_instance_rec.RETURN_BY_DATE
20742             ,p_OLD_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
20743             ,p_NEW_ACTUAL_RETURN_DATE            => p_instance_rec.ACTUAL_RETURN_DATE
20744             ,p_OLD_LAST_OE_AGREEMENT_ID          => fnd_api.g_miss_num
20745             ,p_NEW_LAST_OE_AGREEMENT_ID          => p_instance_rec.LAST_OE_AGREEMENT_ID
20746 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => fnd_api.g_miss_num
20747 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => p_instance_rec.LAST_OE_ORDER_LINE_ID
20748 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => fnd_api.g_miss_num
20749 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => p_instance_rec.LAST_OE_RMA_LINE_ID
20750 	    ,p_OLD_LAST_WIP_JOB_ID               => fnd_api.g_miss_num
20751 	    ,p_NEW_LAST_WIP_JOB_ID               => p_instance_rec.LAST_WIP_JOB_ID
20752 	    ,p_OLD_LAST_PO_PO_LINE_ID            => fnd_api.g_miss_num
20753 	    ,p_NEW_LAST_PO_PO_LINE_ID            => p_instance_rec.LAST_PO_PO_LINE_ID
20754 	    ,p_OLD_LAST_PA_PROJECT_ID            => fnd_api.g_miss_num
20755 	    ,p_NEW_LAST_PA_PROJECT_ID            => p_instance_rec.LAST_PA_PROJECT_ID
20756 	    ,p_OLD_LAST_PA_TASK_ID          => fnd_api.g_miss_num
20757 	    ,p_NEW_LAST_PA_TASK_ID          => p_instance_rec.LAST_PA_TASK_ID
20758 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => fnd_api.g_miss_num
20759 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
20760 	    ,p_OLD_LAST_OE_PO_NUMBER             => fnd_api.g_miss_char
20761 	    ,p_NEW_LAST_OE_PO_NUMBER             => p_instance_rec.LAST_OE_PO_NUMBER
20762  	    --start of parameters addition for eam integration--
20763 	    ,p_OLD_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
20764 	    ,p_NEW_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
20765 	    ,p_OLD_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
20766 	    ,p_NEW_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
20767 	    ,p_OLD_PN_LOCATION_ID                 => fnd_api.g_miss_num
20768 	    ,p_NEW_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
20769 	    ,p_OLD_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
20770 	    ,p_NEW_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
20771 	    ,p_OLD_CATEGORY_ID                    => fnd_api.g_miss_num
20772 	    ,p_NEW_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
20773 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
20774 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
20775 	    ,p_OLD_INSTANTIATION_FLAG             => fnd_api.g_miss_char
20776 	    ,p_NEW_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
20777 	    ,p_OLD_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
20778 	    ,p_NEW_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
20779 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
20780 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
20781 	    ,p_OLD_CHECKIN_STATUS                 => fnd_api.g_miss_num
20782 	    ,p_NEW_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
20783 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
20784 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
20785             ,p_OLD_ATTRIBUTE16                    => fnd_api.g_miss_char
20786             ,p_NEW_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
20787             ,p_OLD_ATTRIBUTE17                    => fnd_api.g_miss_char
20788             ,p_NEW_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
20789             ,p_OLD_ATTRIBUTE18                    => fnd_api.g_miss_char
20790             ,p_NEW_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
20791             ,p_OLD_ATTRIBUTE19                    => fnd_api.g_miss_char
20792             ,p_NEW_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
20793             ,p_OLD_ATTRIBUTE20                    => fnd_api.g_miss_char
20794             ,p_NEW_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
20795             ,p_OLD_ATTRIBUTE21                    => fnd_api.g_miss_char
20796             ,p_NEW_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
20797             ,p_OLD_ATTRIBUTE22                    => fnd_api.g_miss_char
20798             ,p_NEW_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
20799             ,p_OLD_ATTRIBUTE23                    => fnd_api.g_miss_char
20800             ,p_NEW_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
20801             ,p_OLD_ATTRIBUTE24                    => fnd_api.g_miss_char
20802             ,p_NEW_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
20803             ,p_OLD_ATTRIBUTE25                    => fnd_api.g_miss_char
20804             ,p_NEW_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
20805             ,p_OLD_ATTRIBUTE26                    => fnd_api.g_miss_char
20806             ,p_NEW_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
20807             ,p_OLD_ATTRIBUTE27                    => fnd_api.g_miss_char
20808             ,p_NEW_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
20809             ,p_OLD_ATTRIBUTE28                    => fnd_api.g_miss_char
20810             ,p_NEW_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
20811             ,p_OLD_ATTRIBUTE29                    => fnd_api.g_miss_char
20812             ,p_NEW_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
20813             ,p_OLD_ATTRIBUTE30                    => fnd_api.g_miss_char
20814             ,p_NEW_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
20815   	    --end of parameters addition for eam integration--
20816         -- Addition of columns for FA Integration
20817             ,p_OLD_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
20818             ,p_NEW_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
20819             ,p_OLD_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
20820             ,p_NEW_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
20821             ,p_OLD_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
20822             ,p_NEW_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
20823             ,p_OLD_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
20824             ,p_NEW_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
20825             ,p_OLD_SALES_UNIT_PRICE               => fnd_api.g_miss_num
20826             ,p_NEW_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
20827             ,p_OLD_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
20828             ,p_NEW_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
20829             ,p_OLD_OPERATIONAL_STATUS_CODE        => fnd_api.g_miss_char
20830             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
20831         -- End addition of columns for FA Integration
20832             ,p_OLD_SOURCE_CODE                    => fnd_api.g_miss_char
20833             ,p_NEW_SOURCE_CODE                    => p_instance_rec.SOURCE_CODE
20834             );
20835 
20836       EXCEPTION
20837         WHEN NO_DATA_FOUND THEN
20838 -- Get a unique history item instance id from the sequence
20839           l_csi_item_instance_h_id :=
20840                                  csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
20841 
20842      IF (l_mod_value = 0) THEN
20843           -- If the mod value is 0 then dump all the columns both changed and unchanged
20844           -- changed columns have old and new values while the unchanged values have old and new values
20845           -- exactly same
20846        CSI_ITEM_INSTANCES_H_PKG.Insert_Row
20847            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
20848             ,p_INSTANCE_ID                       => p_instance_rec.instance_id
20849             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
20850             ,p_OLD_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
20851             ,p_NEW_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
20852             ,p_OLD_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
20853             ,p_NEW_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
20854             ,p_OLD_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
20855             ,p_NEW_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
20856             ,p_OLD_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
20857             ,p_NEW_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
20858             ,p_OLD_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
20859             ,p_NEW_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
20860             ,p_OLD_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
20861             ,p_NEW_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
20862             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
20863             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
20864             ,p_OLD_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
20865             ,p_NEW_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
20866             ,p_OLD_QUANTITY                      => l_curr_instance_rec.QUANTITY
20867             ,p_NEW_QUANTITY                      => l_curr_instance_rec.QUANTITY
20868             ,p_OLD_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
20869             ,p_NEW_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
20870             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
20871             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
20872             ,p_OLD_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
20873             ,p_NEW_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
20874             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
20875             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_rec.INSTANCE_STATUS_ID
20876             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
20877             ,p_NEW_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
20878             ,p_OLD_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
20879             ,p_NEW_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
20880             ,p_OLD_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
20881             ,p_NEW_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
20882             ,p_OLD_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
20883             ,p_NEW_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
20884             ,p_OLD_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
20885             ,p_NEW_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
20886             ,p_OLD_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
20887             ,p_NEW_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
20888             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
20889             ,p_NEW_ACTIVE_END_DATE               => l_temp_date --SYSDATE
20890             ,p_OLD_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
20891             ,p_NEW_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
20892             ,p_OLD_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
20893             ,p_NEW_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
20894             ,p_OLD_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
20895             ,p_NEW_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
20896             ,p_OLD_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
20897             ,p_NEW_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
20898             ,p_OLD_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
20899             ,p_NEW_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
20900             ,p_OLD_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
20901             ,p_NEW_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
20902             ,p_OLD_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
20903             ,p_NEW_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
20904             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
20905             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
20906             ,p_OLD_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
20907             ,p_NEW_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
20908             ,p_OLD_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
20909             ,p_NEW_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
20910             ,p_OLD_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
20911             ,p_NEW_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
20912             ,p_FULL_DUMP_FLAG                    => 'Y'
20913             ,p_NEW_CONTEXT                       => l_curr_instance_rec.CONTEXT
20914             ,P_OLD_CONTEXT                       => l_curr_instance_rec.CONTEXT
20915             ,p_NEW_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
20916             ,p_OLD_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
20917             ,p_NEW_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
20918             ,p_OLD_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
20919             ,p_NEW_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
20920             ,p_OLD_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
20921             ,p_NEW_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
20922             ,p_OLD_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
20923             ,p_NEW_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
20924             ,p_OLD_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
20925             ,p_NEW_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
20926             ,p_OLD_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
20927             ,p_NEW_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
20928             ,p_OLD_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
20929             ,p_NEW_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
20930             ,p_OLD_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
20931             ,p_NEW_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
20932             ,p_OLD_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
20933             ,p_NEW_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
20934             ,p_OLD_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
20935             ,p_NEW_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
20936             ,p_OLD_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
20937             ,p_NEW_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
20938             ,p_OLD_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
20939             ,p_NEW_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
20940             ,p_OLD_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
20941             ,p_NEW_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
20942             ,p_OLD_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
20943             ,p_NEW_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
20944             ,p_OLD_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
20945             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
20946             ,p_CREATION_DATE                     => SYSDATE
20947             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
20948             ,p_LAST_UPDATE_DATE                  => SYSDATE
20949             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
20950             ,p_OBJECT_VERSION_NUMBER             => 1
20951             ,p_OLD_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
20952             ,p_NEW_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
20953             ,p_OLD_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
20954             ,p_NEW_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
20955             ,p_OLD_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
20956             ,p_NEW_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
20957             ,p_OLD_CONFIG_INST_REV_NUM           => l_curr_instance_rec.CONFIG_INST_REV_NUM
20958             ,p_NEW_CONFIG_INST_REV_NUM           => NULL -- l_curr_instance_rec.CONFIG_INST_REV_NUM
20959             ,p_OLD_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
20960             ,p_NEW_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
20961             ,p_OLD_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
20962             ,p_NEW_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
20963             ,p_OLD_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
20964             ,p_NEW_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
20965             ,p_OLD_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
20966             ,p_NEW_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
20967             ,p_OLD_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
20968             ,p_NEW_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
20969             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
20970             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
20971 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
20972 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
20973 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
20974 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
20975 	    ,p_OLD_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
20976 	    ,p_NEW_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
20977 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
20978 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
20979 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
20980 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
20981 	    ,p_OLD_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
20982 	    ,p_NEW_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
20983 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
20984 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
20985 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
20986 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
20987  	    --start of parameters addition for eam integration--
20988 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
20989 	    ,p_NEW_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
20990 	    ,p_OLD_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
20991 	    ,p_NEW_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
20992 	    ,p_OLD_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
20993 	    ,p_NEW_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
20994 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
20995 	    ,p_NEW_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
20996 	    ,p_OLD_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
20997 	    ,p_NEW_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
20998 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
20999 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
21000 	    ,p_OLD_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
21001 	    ,p_NEW_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
21002 	    ,p_OLD_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
21003 	    ,p_NEW_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
21004 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
21005 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
21006 	    ,p_OLD_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
21007 	    ,p_NEW_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
21008 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
21009 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
21010             ,p_OLD_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
21011             ,p_NEW_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
21012             ,p_OLD_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
21013             ,p_NEW_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
21014             ,p_OLD_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
21015             ,p_NEW_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
21016             ,p_OLD_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
21017             ,p_NEW_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
21018             ,p_OLD_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
21019             ,p_NEW_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
21020             ,p_OLD_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
21021             ,p_NEW_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
21022             ,p_OLD_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
21023             ,p_NEW_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
21024             ,p_OLD_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
21025             ,p_NEW_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
21026             ,p_OLD_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
21027             ,p_NEW_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
21028             ,p_OLD_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
21029             ,p_NEW_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
21030             ,p_OLD_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
21031             ,p_NEW_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
21032             ,p_OLD_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
21033             ,p_NEW_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
21034             ,p_OLD_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
21035             ,p_NEW_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
21036             ,p_OLD_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
21037             ,p_NEW_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
21038             ,p_OLD_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
21039             ,p_NEW_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
21040   	    --end of parameters addition for eam integration--
21041 
21042    -- Addition of columns for FA Integration
21043             ,p_OLD_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
21044             ,p_NEW_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
21045             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
21046             ,p_NEW_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
21047             ,p_OLD_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
21048             ,p_NEW_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
21049             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
21050             ,p_NEW_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
21051             ,p_OLD_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
21052             ,p_NEW_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
21053             ,p_OLD_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
21054             ,p_NEW_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
21055             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
21056             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
21057     -- End addition of columns for FA Integration
21058             -- Begin Add Code for Siebel Genesis Project
21059             ,p_OLD_SOURCE_CODE                    => l_curr_instance_rec.SOURCE_CODE
21060             ,p_NEW_SOURCE_CODE                    => l_instance_rec.SOURCE_CODE
21061             -- End Add Code for Siebel Genesis Project
21062             );
21063 
21064 
21065     ELSE
21066           -- If the mod value is not equal to zero then dump only the changed columns
21067           -- while the unchanged values have old and new values as null
21068        CSI_ITEM_INSTANCES_H_PKG.Insert_Row
21069            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
21070             ,p_INSTANCE_ID                       => p_instance_rec.instance_id
21071             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
21072             ,p_OLD_INSTANCE_NUMBER               => l_instance_rec.INSTANCE_NUMBER
21073             ,p_NEW_INSTANCE_NUMBER               => l_instance_rec.INSTANCE_NUMBER
21074             ,p_OLD_EXTERNAL_REFERENCE            => l_instance_rec.EXTERNAL_REFERENCE
21075             ,p_NEW_EXTERNAL_REFERENCE            => l_instance_rec.EXTERNAL_REFERENCE
21076             ,p_OLD_INVENTORY_ITEM_ID             => l_instance_rec.INVENTORY_ITEM_ID
21077             ,p_NEW_INVENTORY_ITEM_ID             => l_instance_rec.INVENTORY_ITEM_ID
21078             ,p_OLD_INVENTORY_REVISION            => l_instance_rec.INVENTORY_REVISION
21079             ,p_NEW_INVENTORY_REVISION            => l_instance_rec.INVENTORY_REVISION
21080             ,p_OLD_INV_MASTER_ORGZN_ID           => l_instance_rec.INV_MASTER_ORGANIZATION_ID
21081             ,p_NEW_INV_MASTER_ORGZN_ID           => l_instance_rec.INV_MASTER_ORGANIZATION_ID
21082             ,p_OLD_SERIAL_NUMBER                 => l_instance_rec.SERIAL_NUMBER
21083             ,p_NEW_SERIAL_NUMBER                 => l_instance_rec.SERIAL_NUMBER
21084             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_instance_rec.MFG_SERIAL_NUMBER_FLAG
21085             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => l_instance_rec.MFG_SERIAL_NUMBER_FLAG
21086             ,p_OLD_LOT_NUMBER                    => l_instance_rec.LOT_NUMBER
21087             ,p_NEW_LOT_NUMBER                    => l_instance_rec.LOT_NUMBER
21088             ,p_OLD_QUANTITY                      => l_instance_rec.QUANTITY
21089             ,p_NEW_QUANTITY                      => l_instance_rec.QUANTITY
21090             ,p_OLD_UNIT_OF_MEASURE               => l_instance_rec.UNIT_OF_MEASURE
21091             ,p_NEW_UNIT_OF_MEASURE               => l_instance_rec.UNIT_OF_MEASURE
21092             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_instance_rec.ACCOUNTING_CLASS_CODE
21093             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_instance_rec.ACCOUNTING_CLASS_CODE
21094             ,p_OLD_INSTANCE_CONDITION_ID         => l_instance_rec.INSTANCE_CONDITION_ID
21095             ,p_NEW_INSTANCE_CONDITION_ID         => l_instance_rec.INSTANCE_CONDITION_ID
21096             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
21097             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_rec.INSTANCE_STATUS_ID
21098             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_instance_rec.CUSTOMER_VIEW_FLAG
21099             ,p_NEW_CUSTOMER_VIEW_FLAG            => l_instance_rec.CUSTOMER_VIEW_FLAG
21100             ,p_OLD_MERCHANT_VIEW_FLAG            => l_instance_rec.MERCHANT_VIEW_FLAG
21101             ,p_NEW_MERCHANT_VIEW_FLAG            => l_instance_rec.MERCHANT_VIEW_FLAG
21102             ,p_OLD_SELLABLE_FLAG                 => l_instance_rec.SELLABLE_FLAG
21103             ,p_NEW_SELLABLE_FLAG                 => l_instance_rec.SELLABLE_FLAG
21104             ,p_OLD_SYSTEM_ID                     => l_instance_rec.SYSTEM_ID
21105             ,p_NEW_SYSTEM_ID                     => l_instance_rec.SYSTEM_ID
21106             ,p_OLD_INSTANCE_TYPE_CODE            => l_instance_rec.INSTANCE_TYPE_CODE
21107             ,p_NEW_INSTANCE_TYPE_CODE            => l_instance_rec.INSTANCE_TYPE_CODE
21108             ,p_OLD_ACTIVE_START_DATE             => l_instance_rec.ACTIVE_START_DATE
21109             ,p_NEW_ACTIVE_START_DATE             => l_instance_rec.ACTIVE_START_DATE
21110             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
21111             ,p_NEW_ACTIVE_END_DATE               => l_temp_date--SYSDATE
21112             ,p_OLD_LOCATION_TYPE_CODE            => l_instance_rec.LOCATION_TYPE_CODE
21113             ,p_NEW_LOCATION_TYPE_CODE            => l_instance_rec.LOCATION_TYPE_CODE
21114             ,p_OLD_LOCATION_ID                   => l_instance_rec.LOCATION_ID
21115             ,p_NEW_LOCATION_ID                   => l_instance_rec.LOCATION_ID
21116             ,p_OLD_INV_ORGANIZATION_ID           => l_instance_rec.INV_ORGANIZATION_ID
21117             ,p_NEW_INV_ORGANIZATION_ID           => l_instance_rec.INV_ORGANIZATION_ID
21118             ,p_OLD_INV_SUBINVENTORY_NAME         => l_instance_rec.INV_SUBINVENTORY_NAME
21119             ,p_NEW_INV_SUBINVENTORY_NAME         => l_instance_rec.INV_SUBINVENTORY_NAME
21120             ,p_OLD_INV_LOCATOR_ID                => l_instance_rec.INV_LOCATOR_ID
21121             ,p_NEW_INV_LOCATOR_ID                => l_instance_rec.INV_LOCATOR_ID
21122             ,p_OLD_PA_PROJECT_ID                 => l_instance_rec.PA_PROJECT_ID
21123             ,p_NEW_PA_PROJECT_ID                 => l_instance_rec.PA_PROJECT_ID
21124             ,p_OLD_PA_PROJECT_TASK_ID            => l_instance_rec.PA_PROJECT_TASK_ID
21125             ,p_NEW_PA_PROJECT_TASK_ID            => l_instance_rec.PA_PROJECT_TASK_ID
21126             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_instance_rec.IN_TRANSIT_ORDER_LINE_ID
21127             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_instance_rec.IN_TRANSIT_ORDER_LINE_ID
21128             ,p_OLD_WIP_JOB_ID                    => l_instance_rec.WIP_JOB_ID
21129             ,p_NEW_WIP_JOB_ID                    => l_instance_rec.WIP_JOB_ID
21130             ,p_OLD_PO_ORDER_LINE_ID              => l_instance_rec.PO_ORDER_LINE_ID
21131             ,p_NEW_PO_ORDER_LINE_ID              => l_instance_rec.PO_ORDER_LINE_ID
21132             ,p_OLD_COMPLETENESS_FLAG             => l_instance_rec.COMPLETENESS_FLAG
21133             ,p_NEW_COMPLETENESS_FLAG             => l_instance_rec.COMPLETENESS_FLAG
21134             ,p_FULL_DUMP_FLAG                    => 'N'
21135             ,p_NEW_CONTEXT                       => l_instance_rec.CONTEXT
21136             ,P_OLD_CONTEXT                       => l_instance_rec.CONTEXT
21137             ,p_NEW_ATTRIBUTE1                    => l_instance_rec.ATTRIBUTE1
21138             ,p_OLD_ATTRIBUTE1                    => l_instance_rec.ATTRIBUTE1
21139             ,p_NEW_ATTRIBUTE2                    => l_instance_rec.ATTRIBUTE2
21140             ,p_OLD_ATTRIBUTE2                    => l_instance_rec.ATTRIBUTE2
21141             ,p_NEW_ATTRIBUTE3                    => l_instance_rec.ATTRIBUTE3
21142             ,p_OLD_ATTRIBUTE3                    => l_instance_rec.ATTRIBUTE3
21143             ,p_NEW_ATTRIBUTE4                    => l_instance_rec.ATTRIBUTE4
21144             ,p_OLD_ATTRIBUTE4                    => l_instance_rec.ATTRIBUTE4
21145             ,p_NEW_ATTRIBUTE5                    => l_instance_rec.ATTRIBUTE5
21146             ,p_OLD_ATTRIBUTE5                    => l_instance_rec.ATTRIBUTE5
21147             ,p_NEW_ATTRIBUTE6                    => l_instance_rec.ATTRIBUTE6
21148             ,p_OLD_ATTRIBUTE6                    => l_instance_rec.ATTRIBUTE6
21149             ,p_NEW_ATTRIBUTE7                    => l_instance_rec.ATTRIBUTE7
21150             ,p_OLD_ATTRIBUTE7                    => l_instance_rec.ATTRIBUTE7
21151             ,p_NEW_ATTRIBUTE8                    => l_instance_rec.ATTRIBUTE8
21152             ,p_OLD_ATTRIBUTE8                    => l_instance_rec.ATTRIBUTE8
21153             ,p_NEW_ATTRIBUTE9                    => l_instance_rec.ATTRIBUTE9
21154             ,p_OLD_ATTRIBUTE9                    => l_instance_rec.ATTRIBUTE9
21155             ,p_NEW_ATTRIBUTE10                   => l_instance_rec.ATTRIBUTE10
21156             ,p_OLD_ATTRIBUTE10                   => l_instance_rec.ATTRIBUTE10
21157             ,p_NEW_ATTRIBUTE11                   => l_instance_rec.ATTRIBUTE11
21158             ,p_OLD_ATTRIBUTE11                   => l_instance_rec.ATTRIBUTE11
21159             ,p_NEW_ATTRIBUTE12                   => l_instance_rec.ATTRIBUTE12
21160             ,p_OLD_ATTRIBUTE12                   => l_instance_rec.ATTRIBUTE12
21161             ,p_NEW_ATTRIBUTE13                   => l_instance_rec.ATTRIBUTE13
21162             ,p_OLD_ATTRIBUTE13                   => l_instance_rec.ATTRIBUTE13
21163             ,p_NEW_ATTRIBUTE14                   => l_instance_rec.ATTRIBUTE14
21164             ,p_OLD_ATTRIBUTE14                   => l_instance_rec.ATTRIBUTE14
21165             ,p_NEW_ATTRIBUTE15                   => l_instance_rec.ATTRIBUTE15
21166             ,p_OLD_ATTRIBUTE15                   => l_instance_rec.ATTRIBUTE15
21167             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
21168             ,p_CREATION_DATE                     => SYSDATE
21169             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
21170             ,p_LAST_UPDATE_DATE                  => SYSDATE
21171             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
21172             ,p_OBJECT_VERSION_NUMBER             => 1
21173             ,p_OLD_INST_LOC_TYPE_CODE            => l_instance_rec.INSTALL_LOCATION_TYPE_CODE
21174             ,p_NEW_INST_LOC_TYPE_CODE            => l_instance_rec.INSTALL_LOCATION_TYPE_CODE
21175             ,p_OLD_INST_LOC_ID                   => l_instance_rec.INSTALL_LOCATION_ID
21176             ,p_NEW_INST_LOC_ID                   => l_instance_rec.INSTALL_LOCATION_ID
21177             ,p_OLD_INST_USAGE_CODE               => l_instance_rec.INSTANCE_USAGE_CODE
21178             ,p_NEW_INST_USAGE_CODE               => l_instance_rec.INSTANCE_USAGE_CODE
21179             ,p_OLD_CONFIG_INST_REV_NUM           => l_instance_rec.CONFIG_INST_REV_NUM
21180             ,p_NEW_CONFIG_INST_REV_NUM           => NULL -- l_instance_rec.CONFIG_INST_REV_NUM
21181             ,p_OLD_CONFIG_VALID_STATUS           => l_instance_rec.CONFIG_VALID_STATUS
21182             ,p_NEW_CONFIG_VALID_STATUS           => l_instance_rec.CONFIG_VALID_STATUS
21183             ,p_OLD_INSTANCE_DESCRIPTION          => l_instance_rec.INSTANCE_DESCRIPTION
21184             ,p_NEW_INSTANCE_DESCRIPTION          => l_instance_rec.INSTANCE_DESCRIPTION
21185             ,p_OLD_INSTALL_DATE                  => l_instance_rec.INSTALL_DATE
21186             ,p_NEW_INSTALL_DATE                  => l_instance_rec.INSTALL_DATE
21187             ,p_OLD_RETURN_BY_DATE                => l_instance_rec.RETURN_BY_DATE
21188             ,p_NEW_RETURN_BY_DATE                => l_instance_rec.RETURN_BY_DATE
21189             ,p_OLD_ACTUAL_RETURN_DATE            => l_instance_rec.ACTUAL_RETURN_DATE
21190             ,p_NEW_ACTUAL_RETURN_DATE            => l_instance_rec.ACTUAL_RETURN_DATE
21191             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_instance_rec.LAST_OE_AGREEMENT_ID
21192             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_instance_rec.LAST_OE_AGREEMENT_ID
21193 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_instance_rec.LAST_OE_ORDER_LINE_ID
21194 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_instance_rec.LAST_OE_ORDER_LINE_ID
21195 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_instance_rec.LAST_OE_RMA_LINE_ID
21196 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_instance_rec.LAST_OE_RMA_LINE_ID
21197 	    ,p_OLD_LAST_WIP_JOB_ID               => l_instance_rec.LAST_WIP_JOB_ID
21198 	    ,p_NEW_LAST_WIP_JOB_ID               => l_instance_rec.LAST_WIP_JOB_ID
21199 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_instance_rec.LAST_PO_PO_LINE_ID
21200 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_instance_rec.LAST_PO_PO_LINE_ID
21201 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_instance_rec.LAST_PA_PROJECT_ID
21202 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_instance_rec.LAST_PA_PROJECT_ID
21203 	    ,p_OLD_LAST_PA_TASK_ID          => l_instance_rec.LAST_PA_TASK_ID
21204 	    ,p_NEW_LAST_PA_TASK_ID          => l_instance_rec.LAST_PA_TASK_ID
21205 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_instance_rec.LAST_TXN_LINE_DETAIL_ID
21206 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_instance_rec.LAST_TXN_LINE_DETAIL_ID
21207 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_instance_rec.LAST_OE_PO_NUMBER
21208 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_instance_rec.LAST_OE_PO_NUMBER
21209  	    --start of parameters addition for eam integration--
21210 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_instance_rec.NETWORK_ASSET_FLAG
21211 	    ,p_NEW_NETWORK_ASSET_FLAG             => l_instance_rec.NETWORK_ASSET_FLAG
21212 	    ,p_OLD_MAINTAINABLE_FLAG              => l_instance_rec.MAINTAINABLE_FLAG
21213 	    ,p_NEW_MAINTAINABLE_FLAG              => l_instance_rec.MAINTAINABLE_FLAG
21214 	    ,p_OLD_PN_LOCATION_ID                 => l_instance_rec.PN_LOCATION_ID
21215 	    ,p_NEW_PN_LOCATION_ID                 => l_instance_rec.PN_LOCATION_ID
21216 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_instance_rec.ASSET_CRITICALITY_CODE
21217 	    ,p_NEW_ASSET_CRITICALITY_CODE         => l_instance_rec.ASSET_CRITICALITY_CODE
21218 	    ,p_OLD_CATEGORY_ID                    => l_instance_rec.CATEGORY_ID
21219 	    ,p_NEW_CATEGORY_ID                    => l_instance_rec.CATEGORY_ID
21220 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_instance_rec.EQUIPMENT_GEN_OBJECT_ID
21221 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => l_instance_rec.EQUIPMENT_GEN_OBJECT_ID
21222 	    ,p_OLD_INSTANTIATION_FLAG             => l_instance_rec.INSTANTIATION_FLAG
21223 	    ,p_NEW_INSTANTIATION_FLAG             => l_instance_rec.INSTANTIATION_FLAG
21224 	    ,p_OLD_LINEAR_LOCATION_ID             => l_instance_rec.LINEAR_LOCATION_ID
21225 	    ,p_NEW_LINEAR_LOCATION_ID             => l_instance_rec.LINEAR_LOCATION_ID
21226 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_instance_rec.OPERATIONAL_LOG_FLAG
21227 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => l_instance_rec.OPERATIONAL_LOG_FLAG
21228 	    ,p_OLD_CHECKIN_STATUS                 => l_instance_rec.CHECKIN_STATUS
21229 	    ,p_NEW_CHECKIN_STATUS                 => l_instance_rec.CHECKIN_STATUS
21230 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
21231 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => l_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
21232             ,p_OLD_ATTRIBUTE16                    => l_instance_rec.ATTRIBUTE16
21233             ,p_NEW_ATTRIBUTE16                    => l_instance_rec.ATTRIBUTE16
21234             ,p_OLD_ATTRIBUTE17                    => l_instance_rec.ATTRIBUTE17
21235             ,p_NEW_ATTRIBUTE17                    => l_instance_rec.ATTRIBUTE17
21236             ,p_OLD_ATTRIBUTE18                    => l_instance_rec.ATTRIBUTE18
21237             ,p_NEW_ATTRIBUTE18                    => l_instance_rec.ATTRIBUTE18
21238             ,p_OLD_ATTRIBUTE19                    => l_instance_rec.ATTRIBUTE19
21239             ,p_NEW_ATTRIBUTE19                    => l_instance_rec.ATTRIBUTE19
21240             ,p_OLD_ATTRIBUTE20                    => l_instance_rec.ATTRIBUTE20
21241             ,p_NEW_ATTRIBUTE20                    => l_instance_rec.ATTRIBUTE20
21242             ,p_OLD_ATTRIBUTE21                    => l_instance_rec.ATTRIBUTE21
21243             ,p_NEW_ATTRIBUTE21                    => l_instance_rec.ATTRIBUTE21
21244             ,p_OLD_ATTRIBUTE22                    => l_instance_rec.ATTRIBUTE22
21245             ,p_NEW_ATTRIBUTE22                    => l_instance_rec.ATTRIBUTE22
21246             ,p_OLD_ATTRIBUTE23                    => l_instance_rec.ATTRIBUTE23
21247             ,p_NEW_ATTRIBUTE23                    => l_instance_rec.ATTRIBUTE23
21248             ,p_OLD_ATTRIBUTE24                    => l_instance_rec.ATTRIBUTE24
21249             ,p_NEW_ATTRIBUTE24                    => l_instance_rec.ATTRIBUTE24
21250             ,p_OLD_ATTRIBUTE25                    => l_instance_rec.ATTRIBUTE25
21251             ,p_NEW_ATTRIBUTE25                    => l_instance_rec.ATTRIBUTE25
21252             ,p_OLD_ATTRIBUTE26                    => l_instance_rec.ATTRIBUTE26
21253             ,p_NEW_ATTRIBUTE26                    => l_instance_rec.ATTRIBUTE26
21254             ,p_OLD_ATTRIBUTE27                    => l_instance_rec.ATTRIBUTE27
21255             ,p_NEW_ATTRIBUTE27                    => l_instance_rec.ATTRIBUTE27
21256             ,p_OLD_ATTRIBUTE28                    => l_instance_rec.ATTRIBUTE28
21257             ,p_NEW_ATTRIBUTE28                    => l_instance_rec.ATTRIBUTE28
21258             ,p_OLD_ATTRIBUTE29                    => l_instance_rec.ATTRIBUTE29
21259             ,p_NEW_ATTRIBUTE29                    => l_instance_rec.ATTRIBUTE29
21260             ,p_OLD_ATTRIBUTE30                    => l_instance_rec.ATTRIBUTE30
21261             ,p_NEW_ATTRIBUTE30                    => l_instance_rec.ATTRIBUTE30
21262   	    --end of parameters addition for eam integration--
21263    -- Addition of columns for FA Integration
21264             ,p_OLD_PAYABLES_UNIT_PRICE            => l_instance_rec.PAYABLES_UNIT_PRICE
21265             ,p_NEW_PAYABLES_UNIT_PRICE            => l_instance_rec.PAYABLES_UNIT_PRICE
21266             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_instance_rec.PAYABLES_CURRENCY_CODE
21267             ,p_NEW_PAYABLES_CURRENCY_CODE         => l_instance_rec.PAYABLES_CURRENCY_CODE
21268             ,p_OLD_PURCHASE_UNIT_PRICE            => l_instance_rec.PURCHASE_UNIT_PRICE
21269             ,p_NEW_PURCHASE_UNIT_PRICE            => l_instance_rec.PURCHASE_UNIT_PRICE
21270             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_instance_rec.PURCHASE_CURRENCY_CODE
21271             ,p_NEW_PURCHASE_CURRENCY_CODE         => l_instance_rec.PURCHASE_CURRENCY_CODE
21272             ,p_OLD_SALES_UNIT_PRICE               => l_instance_rec.SALES_UNIT_PRICE
21273             ,p_NEW_SALES_UNIT_PRICE               => l_instance_rec.SALES_UNIT_PRICE
21274             ,p_OLD_SALES_CURRENCY_CODE            => l_instance_rec.SALES_CURRENCY_CODE
21275             ,p_NEW_SALES_CURRENCY_CODE            => l_instance_rec.SALES_CURRENCY_CODE
21276             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_instance_rec.OPERATIONAL_STATUS_CODE
21277             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_instance_rec.OPERATIONAL_STATUS_CODE
21278     -- End addition of columns for FA Integration
21279             -- Begin Add Code for Siebel Genesis Project
21280             ,p_OLD_SOURCE_CODE                   => l_curr_instance_rec.SOURCE_CODE
21281             ,p_NEW_SOURCE_CODE                   => l_instance_rec.SOURCE_CODE
21282             -- End Add Code for Siebel Genesis Project
21283             );
21284 
21285 
21286      END IF;
21287       END; -- End for update row, bug 6788183
21288        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21289             RAISE FND_API.G_EXC_ERROR;
21290 
21291        END IF;
21292 
21293       -- Calling eam API to log instance update event
21294        IF l_eam_item
21295        THEN
21296           IF l_ins_hist_id IS NOT NULL
21297           THEN
21298              l_instance_history_id:=l_ins_hist_id;
21299           ELSE
21300              l_instance_history_id:=l_csi_item_instance_h_id;
21301           END IF;
21302           eam_asset_log_pvt.instance_update_event
21303           (p_api_version         => p_api_version
21304           ,p_init_msg_list       => fnd_api.g_false
21305           ,p_commit              => fnd_api.g_false
21306           ,p_validation_level    => fnd_api.g_valid_level_full
21307           ,x_return_status       => x_return_status
21308           ,x_msg_count           => x_msg_count
21309           ,x_msg_data            => x_msg_data
21310           ,p_instance_id         => p_instance_rec.instance_id
21311           ,p_ref_id              => l_instance_history_id
21312           ,p_event_date          => sysdate);
21313          IF NOT(x_return_status = fnd_api.g_ret_sts_success)
21314          THEN
21315             csi_gen_utility_pvt.put_line('Error from eam_asset_log_pvt.instance_update_event API');
21316             RAISE fnd_api.g_exc_error;
21317          END IF;
21318        END IF;
21319       -- Calling eam API to log instance update event
21320 
21321        -- srramakr Bug # 3945813 We no longer look for service_order_allowed_flag to decide
21322        -- whether contracts should be terminated or not. Instead, we look for terminated_flag.
21323        -- Before terminating the contract check whether the service_order_allowed_flag is set to 'N'
21324        -- for the instance_status passed. If set to 'Y' there will be no call  to contracts.
21325        OPEN  instance_csr (p_instance_rec.instance_id);
21326        FETCH instance_csr INTO l_instance_csr;
21327        CLOSE instance_csr;
21328 
21329        IF csi_item_instance_vld_pvt.termination_status
21330           ( p_instance_status_id => l_instance_csr.instance_status_id )
21331        THEN
21332          IF p_txn_rec.transaction_type_id in (53,54) THEN
21333             l_oks_txn_type := 'RET';
21334          ELSE
21335             l_oks_txn_type := 'TRM';
21336          END IF;
21337          csi_item_instance_pvt.Call_to_Contracts
21338          ( p_transaction_type   =>   l_oks_txn_type
21339           ,p_instance_id        =>   p_instance_rec.instance_id
21340           ,p_new_instance_id    =>   NULL
21341           ,p_vld_org_id         =>   p_instance_rec.vld_organization_id
21342           ,p_quantity           =>   NULL
21343           ,p_party_account_id1  =>   NULL
21344           ,p_party_account_id2  =>   NULL
21345           ,p_transaction_date   =>   p_txn_rec.transaction_date -- l_temp_date
21346           ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date -- l_temp_date
21347 	  ,p_txn_type_id        => p_txn_rec.transaction_type_id -- added for  BUG  5752271
21348           ,p_grp_call_contracts =>   p_instance_rec.grp_call_contracts
21349           ,p_oks_txn_inst_tbl   =>   p_oks_txn_inst_tbl
21350           ,x_return_status      =>   x_return_status
21351           ,x_msg_count          =>   x_msg_count
21352           ,x_msg_data           =>   x_msg_data
21353           );
21354 
21355            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
21356                   l_msg_index := 1;
21357                   l_msg_count := x_msg_count;
21358               WHILE l_msg_count > 0 LOOP
21359                 x_msg_data := FND_MSG_PUB.GET
21360                               (  l_msg_index,
21361                                  FND_API.G_FALSE
21362                                );
21363                 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
21364                     l_msg_index := l_msg_index + 1;
21365                     l_msg_count := l_msg_count - 1;
21366               END LOOP;
21367                 RAISE FND_API.G_EXC_ERROR;
21368            END IF;
21369        END IF;
21370 
21371       --
21372       -- End of API body
21373 
21374       -- Standard check of p_commit.
21375       IF FND_API.To_Boolean( p_commit ) THEN
21376             COMMIT WORK;
21377       END IF;
21378 
21379       -- Standard call to get message count and if count is  get message info.
21380       FND_MSG_PUB.Count_And_Get
21381             (p_count   =>   x_msg_count ,
21382              p_data    =>   x_msg_data
21383             );
21384 
21385 EXCEPTION
21386 
21387     WHEN FND_API.G_EXC_ERROR THEN
21388             ROLLBACK TO expire_item_instance_pvt;
21389             x_return_status := FND_API.G_RET_STS_ERROR ;
21390             FND_MSG_PUB.Count_And_Get
21391                 (p_count  =>  x_msg_count,
21392                  p_data   =>  x_msg_data
21393                 );
21394 
21395     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
21396             ROLLBACK TO expire_item_instance_pvt;
21397             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
21398             FND_MSG_PUB.Count_And_Get
21399                 (p_count   =>  x_msg_count,
21400                  p_data    =>  x_msg_data
21401                 );
21402     WHEN OTHERS THEN
21403             ROLLBACK TO expire_item_instance_pvt;
21404             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
21405               IF FND_MSG_PUB.Check_Msg_Level
21406                  (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
21407               THEN
21408                   FND_MSG_PUB.Add_Exc_Msg
21409                  ( G_PKG_NAME, l_api_name );
21410               END IF;
21411                   FND_MSG_PUB.Count_And_Get
21412                  ( p_count  =>  x_msg_count,
21413                    p_data   =>  x_msg_data
21414                 );
21415 
21416 END expire_item_instance;
21417 
21418 /*--------------------------------------------------------*/
21419 /* Procedure name:  Split_Item_Instance                   */
21420 /* Description   :  This procedure is used to create split*/
21421 /*                  lines for instance                    */
21422 /*--------------------------------------------------------*/
21423 
21424 
21425  PROCEDURE Split_Item_Instance
21426  (
21427    p_api_version                 IN      NUMBER
21428   ,p_commit                      IN      VARCHAR2
21429   ,p_init_msg_list               IN      VARCHAR2
21430   ,p_validation_level            IN      NUMBER
21431   ,p_source_instance_rec         IN OUT  NOCOPY csi_datastructures_pub.instance_rec
21432   ,p_quantity1                   IN      NUMBER
21433   ,p_quantity2                   IN      NUMBER
21434   ,p_copy_ext_attribs            IN      VARCHAR2
21435   ,p_copy_org_assignments        IN      VARCHAR2
21436   ,p_copy_parties                IN      VARCHAR2
21437 --  ,p_copy_contacts               IN      VARCHAR2 := fnd_api.g_true
21438   ,p_copy_accounts               IN      VARCHAR2
21439   ,p_copy_asset_assignments      IN      VARCHAR2
21440   ,p_copy_pricing_attribs        IN      VARCHAR2
21441   ,p_txn_rec                     IN OUT  NOCOPY csi_datastructures_pub.transaction_rec
21442   ,x_new_instance_rec            OUT     NOCOPY csi_datastructures_pub.instance_rec
21443   ,x_return_status               OUT     NOCOPY VARCHAR2
21444   ,x_msg_count                   OUT     NOCOPY NUMBER
21445   ,x_msg_data                    OUT     NOCOPY VARCHAR2
21446  )
21447 
21448 IS
21449     l_api_name              CONSTANT VARCHAR2(30)   := 'SPLIT_ITEM_INSTANCE';
21450     l_api_version           CONSTANT NUMBER         := 1.0;
21451     l_debug_level           NUMBER;
21452     l_serialized            NUMBER;
21453     l_return_value          BOOLEAN;
21454     l_object_version_number NUMBER;
21455     l_quantity              NUMBER;
21456     l_instance_id_lst       csi_datastructures_pub.id_tbl;
21457     l_new_instance_rec      csi_datastructures_pub.instance_rec;
21458     l_new_instance_tbl      csi_datastructures_pub.instance_tbl;
21459     l_msg_data              VARCHAR2(2000);
21460     l_msg_index             NUMBER;
21461     l_msg_count             NUMBER;
21462     x_msg_index_out         NUMBER;
21463     l_old_oks_cp_rec        oks_ibint_pub.cp_rec_type;
21464     l_new_oks_cp_rec        oks_ibint_pub.cp_rec_type;
21465     l_transaction_type      VARCHAR2(10);
21466     l_source_instance_rec   csi_datastructures_pub.instance_rec := p_source_instance_rec;
21467     l_contracts_status      VARCHAR2(3);
21468     l_new_instance_rec1     csi_datastructures_pub.instance_rec;
21469     l_internal_party_id     NUMBER;
21470     l_item_attribute_tbl    csi_item_instance_pvt.item_attribute_tbl;
21471     l_location_tbl          csi_item_instance_pvt.location_tbl;
21472     l_generic_id_tbl        csi_item_instance_pvt.generic_id_tbl;
21473     l_lookup_tbl            csi_item_instance_pvt.lookup_tbl;
21474     l_ins_count_rec         csi_item_instance_pvt.ins_count_rec;
21475     l_relationship_tbl      csi_datastructures_pub.ii_relationship_tbl;
21476     --
21477     px_oks_txn_inst_tbl     oks_ibint_pub.txn_instance_tbl;
21478     px_child_inst_tbl       csi_item_instance_grp.child_inst_tbl;
21479     l_batch_type            VARCHAR2(50);
21480     l_batch_id              NUMBER;
21481     --
21482     CURSOR c1 is
21483       SELECT serial_number_control_code
21484       FROM   mtl_system_items
21485       WHERE  inventory_item_id = p_source_instance_rec.inventory_item_id
21486       AND    organization_id   = p_source_instance_rec.vld_organization_id
21487       AND    enabled_flag = 'Y'
21488       AND    nvl (start_date_active, sysdate) <= sysdate
21489       AND    nvl (end_date_active, sysdate+1) > sysdate;
21490 
21491     l_account_id            NUMBER;
21492     l_dummy                 NUMBER;
21493 BEGIN
21494     -- Standard Start of API savepoint
21495        SAVEPOINT      split_item_instance_pvt;
21496 
21497     -- Standard call to check for call compatibility.
21498        IF NOT FND_API.Compatible_API_Call (l_api_version,
21499                                            p_api_version,
21500                                            l_api_name,
21501                                            G_PKG_NAME  )
21502        THEN
21503             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
21504        END IF;
21505 
21506     -- Initialize message list if p_init_msg_list is set to TRUE.
21507        IF FND_API.to_Boolean( p_init_msg_list ) THEN
21508              FND_MSG_PUB.initialize;
21509        END IF;
21510 
21511     -- Initialize API return status to success
21512        x_return_status := FND_API.G_RET_STS_SUCCESS;
21513 
21514         -- Check the profile option debug_level for debug message reporting
21515         l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
21516 
21517        --  If debug_level = 1 then dump the procedure name
21518          IF (l_debug_level > 0) THEN
21519             csi_gen_utility_pvt.put_line ( 'split_item_instance_pvt');
21520          END IF;
21521 
21522        -- If the debug level = 2 then dump all the parameters values.
21523          IF (l_debug_level > 1) THEN
21524                csi_gen_utility_pvt.put_line ('split_item_instance_pvt' ||
21525                                                    p_api_version      ||'-'||
21526                                                    p_commit           ||'-'||
21527                                                    p_init_msg_list          );
21528                -- Dump the records in the log file
21529                csi_gen_utility_pvt.dump_instance_rec(p_source_instance_rec);
21530                csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
21531          END IF;
21532 
21533        -- Start API body
21534 
21535 --check for the required parameters
21536          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Num
21537              (    p_source_instance_rec.INSTANCE_ID  ,
21538                 '  p_source_instance_rec.INSTANCE_ID ',
21539                    l_api_name
21540              );
21541 --validation for serialized or not
21542 
21543       IF   p_source_instance_rec.location_type_code = 'INVENTORY'
21544         OR p_source_instance_rec.location_type_code = 'WIP'
21545         OR p_source_instance_rec.location_type_code = 'PROJECT'
21546       THEN
21547             FND_MESSAGE.SET_NAME('CSI','CSI_CANNOT_SPLIT');
21548             FND_MSG_PUB.ADD;
21549             RAISE FND_API.G_EXC_ERROR;
21550       END IF;
21551 
21552       BEGIN
21553           SELECT 1
21554           INTO  l_dummy
21555           FROM  csi_i_assets
21556           WHERE instance_id =p_source_instance_rec.instance_id;
21557 
21558           FND_MESSAGE.SET_NAME('CSI','CSI_CANNOT_SPLIT');
21559           FND_MSG_PUB.ADD;
21560           RAISE FND_API.G_EXC_ERROR;
21561       EXCEPTION
21562          WHEN OTHERS THEN
21563            NULL;
21564       END;
21565 
21566 
21567       OPEN C1;
21568       FETCH C1 into l_serialized;
21569       IF c1%FOUND THEN
21570      -- IF nvl(l_serialized,0) IN (2,5,6) then
21571         IF csi_Item_Instance_Vld_pvt.Is_treated_serialized
21572                                 ( p_serial_control_code => l_serialized
21573                                  ,p_location_type_code  => p_source_instance_rec.location_type_code
21574                                  ,p_transaction_type_id => p_txn_rec.transaction_type_id
21575                                  ) -- Added by sk on 09/13/01
21576         THEN
21577             l_return_value := FALSE;
21578                 FND_MESSAGE.SET_NAME('CSI','CSI_API_CANNOT_BE_SERIALIZED');
21579                 FND_MESSAGE.SET_TOKEN('SERIAL_NUMBER', 'serial_number');
21580                 FND_MSG_PUB.ADD;
21581             RAISE FND_API.G_EXC_ERROR;
21582         END IF;
21583       END IF;
21584       CLOSE C1;
21585 
21586 --get the quantity from the csi_item_instances for the instance_id passed
21587 
21588     BEGIN
21589           SELECT quantity
21590           INTO   l_quantity
21591           FROM   csi_item_instances
21592           WHERE  instance_id = p_source_instance_rec.instance_id;
21593     EXCEPTION
21594          WHEN NO_DATA_FOUND THEN
21595             FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_QUANITY');
21596             FND_MSG_PUB.Add;
21597                    RAISE FND_API.G_EXC_ERROR;
21598     END;
21599 
21600 --verifying the quantity
21601       IF (p_quantity1 + p_quantity2) <> l_quantity THEN
21602             FND_MESSAGE.SET_NAME('CSI','CSI_API_INCORRECT_QUANTITY');
21603             FND_MSG_PUB.Add;
21604             RAISE FND_API.G_EXC_ERROR;
21605       END IF;
21606 
21607     -- Added by sk for bug 2186683
21608     IF p_source_instance_rec.vld_organization_id IS NULL OR
21609        p_source_instance_rec.vld_organization_id = fnd_api.g_miss_num
21610     THEN
21611        BEGIN
21612           SELECT last_vld_organization_id
21613           INTO   p_source_instance_rec.vld_organization_id
21614           FROM   csi_item_instances
21615           WHERE  instance_id = p_source_instance_rec.instance_id;
21616        EXCEPTION
21617          WHEN OTHERS THEN
21618             NULL;
21619        END;
21620     END IF;
21621     -- End addition by sk for bug 2186683
21622 --if the passed quantities and the quantity in the table are same then
21623       p_source_instance_rec.quantity := p_quantity2;
21624 --call the copy instance api to create a new record with 'p_quantity2')
21625 
21626      csi_item_instance_pvt.copy_item_instance
21627            ( p_api_version                 => p_api_version
21628             ,p_commit                      => fnd_api.g_false
21629             ,p_init_msg_list               => p_init_msg_list
21630             ,p_validation_level            => p_validation_level
21631             ,p_source_instance_rec         => p_source_instance_rec
21632             ,p_copy_ext_attribs            => p_copy_ext_attribs
21633             ,p_copy_org_assignments        => p_copy_org_assignments
21634             ,p_copy_parties                => p_copy_parties
21635             ,p_copy_contacts               => fnd_api.g_true
21636             ,p_copy_accounts               => p_copy_accounts
21637             ,p_copy_asset_assignments      => p_copy_asset_assignments
21638             ,p_copy_pricing_attribs        => p_copy_pricing_attribs
21639             ,p_copy_inst_children          => fnd_api.g_true
21640             ,p_call_from_split             => fnd_api.g_true
21641             ,p_txn_rec                     => p_txn_rec
21642             ,x_new_instance_tbl            => l_new_instance_tbl
21643             ,x_return_status               => x_return_status
21644             ,x_msg_count                   => x_msg_count
21645             ,x_msg_data                    => x_msg_data
21646            );
21647 
21648       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
21649           FOR i in 1..x_msg_Count LOOP
21650             FND_MSG_PUB.Get(p_msg_index     => i,
21651                             p_encoded       => 'F',
21652                             p_data          => x_msg_data,
21653                             p_msg_index_out => x_msg_index_out );
21654 
21655          End LOOP;
21656          RAISE fnd_api.g_exc_error;
21657       END IF;
21658 
21659       IF (l_new_instance_tbl.count <> 1) THEN
21660              -- If the number records in the PL/SQL table is more than 1 OR
21661              -- not equal to 1 than raise error
21662              RAISE fnd_api.g_exc_error;
21663       ELSE
21664          x_new_instance_rec := l_new_instance_tbl(1);
21665       END IF;
21666 
21667 -- Start addition for bug 2823122
21668     IF l_new_instance_tbl(1).instance_usage_code='IN_RELATIONSHIP'
21669     THEN
21670        IF l_relationship_tbl.COUNT=0
21671        THEN
21672          BEGIN
21673           SELECT object_id
21674                 ,relationship_type_code
21675                 ,mandatory_flag
21676                 ,context
21677                 ,sysdate
21678                 ,active_end_date
21679                 ,position_reference
21680                 ,display_order
21681                 ,attribute1
21682                 ,attribute2
21683                 ,attribute3
21684                 ,attribute4
21685                 ,attribute5
21686                 ,attribute6
21687                 ,attribute7
21688                 ,attribute8
21689                 ,attribute9
21690                 ,attribute10
21691                 ,attribute11
21692                 ,attribute12
21693                 ,attribute13
21694                 ,attribute14
21695                 ,attribute15
21696           INTO   l_relationship_tbl(1).object_id
21697                 ,l_relationship_tbl(1).relationship_type_code
21698                 ,l_relationship_tbl(1).mandatory_flag
21699                 ,l_relationship_tbl(1).context
21700                 ,l_relationship_tbl(1).active_start_date
21701                 ,l_relationship_tbl(1).active_end_date
21702                 ,l_relationship_tbl(1).position_reference
21703                 ,l_relationship_tbl(1).display_order
21704                 ,l_relationship_tbl(1).attribute1
21705                 ,l_relationship_tbl(1).attribute2
21706                 ,l_relationship_tbl(1).attribute3
21707                 ,l_relationship_tbl(1).attribute4
21708                 ,l_relationship_tbl(1).attribute5
21709                 ,l_relationship_tbl(1).attribute6
21710                 ,l_relationship_tbl(1).attribute7
21711                 ,l_relationship_tbl(1).attribute8
21712                 ,l_relationship_tbl(1).attribute9
21713                 ,l_relationship_tbl(1).attribute10
21714                 ,l_relationship_tbl(1).attribute11
21715                 ,l_relationship_tbl(1).attribute12
21716                 ,l_relationship_tbl(1).attribute13
21717                 ,l_relationship_tbl(1).attribute14
21718                 ,l_relationship_tbl(1).attribute15
21719           FROM  csi_ii_relationships
21720           WHERE subject_id=p_source_instance_rec.instance_id
21721           AND   relationship_type_code='COMPONENT-OF'
21722           AND   (SYSDATE BETWEEN NVL(active_start_date, SYSDATE) AND NVL(active_end_date, SYSDATE));
21723          EXCEPTION
21724            WHEN OTHERS THEN
21725              NULL;
21726          END;
21727        END IF;
21728 
21729         IF l_relationship_tbl(1).object_id  IS NOT NULL
21730          AND l_relationship_tbl(1).object_id<>fnd_api.g_miss_num
21731         THEN
21732           l_relationship_tbl(1).subject_id:=l_new_instance_tbl(1).instance_id;
21733           csi_ii_relationships_pub.create_relationship(
21734             p_api_version      => 1.0,
21735             p_commit           => fnd_api.g_false,
21736             p_init_msg_list    => fnd_api.g_true,
21737             p_validation_level => fnd_api.g_valid_level_full,
21738             p_relationship_tbl => l_relationship_tbl,
21739             p_txn_rec          => p_txn_rec,
21740             x_return_status    => x_return_status,
21741             x_msg_count        => x_msg_count,
21742             x_msg_data         => x_msg_data);
21743            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
21744                FOR i in 1..x_msg_Count LOOP
21745                    FND_MSG_PUB.Get(p_msg_index     => i,
21746                                    p_encoded       => 'F',
21747                                    p_data          => x_msg_data,
21748                                    p_msg_index_out => x_msg_index_out );
21749                END LOOP;
21750               RAISE fnd_api.g_exc_error;
21751            END IF;
21752         END IF;
21753     END IF;
21754 -- End addition for bug 2823122
21755 --update the existing record with 'p_quantity1')
21756     BEGIN
21757           SELECT object_version_number
21758           INTO   l_object_version_number
21759           FROM   csi_item_instances
21760           WHERE  instance_id = p_source_instance_rec.instance_id;
21761     EXCEPTION
21762          WHEN NO_DATA_FOUND THEN
21763             FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_OBJ_NUM');
21764             FND_MSG_PUB.ADD;
21765                    RAISE FND_API.G_EXC_ERROR;
21766     END;
21767     l_new_instance_rec.instance_id           := p_source_instance_rec.instance_id;
21768     l_new_instance_rec.quantity              := p_quantity1;
21769     l_new_instance_rec.object_version_number := l_object_version_number;
21770     l_new_instance_rec.vld_organization_id   := p_source_instance_rec.vld_organization_id;
21771     l_new_instance_rec.active_end_date   := p_source_instance_rec.active_end_date; -- bug 3704480
21772     l_new_instance_rec.instance_status_id   := p_source_instance_rec.instance_status_id; -- bug 3704480
21773 --call the update api
21774 
21775     update_item_instance
21776            (
21777             p_api_version                => p_api_version
21778            ,p_commit                     => fnd_api.g_false
21779            ,p_init_msg_list              => p_init_msg_list
21780            ,p_validation_level           => p_validation_level
21781            ,p_instance_rec               => l_new_instance_rec
21782            ,p_txn_rec                    => p_txn_rec
21783            ,x_instance_id_lst            => l_instance_id_lst
21784            ,x_return_status              => x_return_status
21785            ,x_msg_count                  => x_msg_count
21786            ,x_msg_data                   => x_msg_data
21787            ,p_item_attribute_tbl         => l_item_attribute_tbl
21788            ,p_location_tbl               => l_location_tbl
21789            ,p_generic_id_tbl             => l_generic_id_tbl
21790            ,p_lookup_tbl                 => l_lookup_tbl
21791            ,p_ins_count_rec              => l_ins_count_rec
21792            ,p_oks_txn_inst_tbl           => px_oks_txn_inst_tbl
21793            ,p_child_inst_tbl             => px_child_inst_tbl
21794            );
21795 
21796       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
21797          FOR i in 1..x_msg_Count LOOP
21798             FND_MSG_PUB.Get(p_msg_index     => i,
21799                             p_encoded       => 'F',
21800                             p_data          => x_msg_data,
21801                             p_msg_index_out => x_msg_index_out );
21802          End LOOP;
21803          RAISE fnd_api.g_exc_error;
21804       END IF;
21805       -- Calling Contracts
21806       -- Added on 28-sep-01
21807       -- Modification starts
21808       --
21809       l_transaction_type := 'SPL';
21810       csi_item_instance_pvt.Call_to_Contracts
21811 	( p_transaction_type   =>   l_transaction_type
21812 	 ,p_instance_id        =>   p_source_instance_rec.instance_id
21813 	 ,p_new_instance_id    =>   l_new_instance_tbl(1).instance_id
21814 	 ,p_vld_org_id         =>   p_source_instance_rec.vld_organization_id
21815 	 ,p_quantity           =>   p_quantity1 -- modified for bug 2103144
21816 	 ,p_party_account_id1  =>   NULL
21817 	 ,p_party_account_id2  =>   NULL
21818 	 ,p_transaction_date   =>   p_txn_rec.transaction_date -- For 3483763
21819 	 ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date -- For 3483763
21820 	 ,p_txn_type_id        => p_txn_rec.transaction_type_id -- added for  BUG  5752271
21821 	 ,p_oks_txn_inst_tbl   =>   px_oks_txn_inst_tbl
21822 	 ,x_return_status      =>   x_return_status
21823 	 ,x_msg_count          =>   x_msg_count
21824 	 ,x_msg_data           =>   x_msg_data
21825         );
21826       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
21827          RAISE FND_API.G_EXC_ERROR;
21828       END IF;
21829       --
21830       IF px_oks_txn_inst_tbl.count > 0 THEN
21831 	 csi_gen_utility_pvt.dump_oks_txn_inst_tbl(px_oks_txn_inst_tbl);
21832 	 csi_gen_utility_pvt.put_line('Calling OKS Core API...');
21833          --
21834 	 IF p_txn_rec.transaction_type_id = 3 THEN
21835 	    l_batch_id := p_txn_rec.source_header_ref_id;
21836 	    l_batch_type := p_txn_rec.source_group_ref;
21837 	 ELSE
21838 	    l_batch_id := NULL;
21839 	    l_batch_type := NULL;
21840 	 END IF;
21841 	 --
21842          UPDATE CSI_TRANSACTIONS
21843          set contracts_invoked = 'Y'
21844          where transaction_id = p_txn_rec.transaction_id;
21845          --
21846 	 OKS_IBINT_PUB.IB_interface
21847 	    (
21848 	      P_Api_Version           =>  1.0,
21849 	      P_init_msg_list         =>  p_init_msg_list,
21850 	      P_single_txn_date_flag  =>  'Y',
21851 	      P_Batch_type            =>  l_batch_type,
21852 	      P_Batch_ID              =>  l_batch_id,
21853 	      P_OKS_Txn_Inst_tbl      =>  px_oks_txn_inst_tbl,
21854 	      x_return_status         =>  x_return_status,
21855 	      x_msg_count             =>  x_msg_count,
21856 	      x_msg_data              =>  x_msg_data
21857 	   );
21858 	 --
21859 	 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
21860 	    l_msg_index := 1;
21861 	    l_msg_count := x_msg_count;
21862 	    WHILE l_msg_count > 0 LOOP
21863 	       x_msg_data := FND_MSG_PUB.GET
21864 		       (  l_msg_index,
21865 			  FND_API.G_FALSE        );
21866 	       csi_gen_utility_pvt.put_line( 'Error from OKS_IBINT_PUB.IB_interface..');
21867 	       csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
21868 	       l_msg_index := l_msg_index + 1;
21869 	       l_msg_count := l_msg_count - 1;
21870 	    END LOOP;
21871 	    RAISE FND_API.G_EXC_ERROR;
21872 	 END IF;
21873       END IF;
21874       -- Modification ends
21875       -- End Calling Contracts.
21876       -- End of API body
21877 
21878       -- Standard check of p_commit.
21879       IF FND_API.To_Boolean( p_commit ) THEN
21880            COMMIT WORK;
21881       END IF;
21882 
21883        -- End disable trace
21884 
21885       -- Standard call to get message count and IF count is  get message info.
21886       FND_MSG_PUB.Count_And_Get
21887             (p_count   =>   x_msg_count ,
21888              p_data    =>   x_msg_data
21889             );
21890 
21891 EXCEPTION
21892 
21893      WHEN FND_API.G_EXC_ERROR THEN
21894           ROLLBACK TO split_item_instance_pvt;
21895             x_return_status := FND_API.G_RET_STS_ERROR ;
21896             FND_MSG_PUB.Count_And_Get
21897                 ( p_count   =>  x_msg_count,
21898                   p_data    =>  x_msg_data
21899                 );
21900      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
21901             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
21902             ROLLBACK TO split_item_instance_pvt;
21903             FND_MSG_PUB.Count_And_Get
21904                 ( p_count   =>  x_msg_count,
21905                   p_data    =>  x_msg_data
21906                 );
21907      WHEN OTHERS THEN
21908             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
21909           ROLLBACK TO split_item_instance_pvt;
21910             IF    FND_MSG_PUB.Check_Msg_Level
21911                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
21912             THEN
21913                   FND_MSG_PUB.Add_Exc_Msg
21914                   ( G_PKG_NAME ,
21915                     l_api_name
21916                   );
21917             END IF;
21918             FND_MSG_PUB.Count_And_Get
21919                   ( p_count  =>  x_msg_count,
21920                     p_data   =>  x_msg_data
21921                   );
21922 
21923 END Split_Item_Instance;
21924 
21925 /*---------------------------------------------------*/
21926 /* Procedure name:  Split_Item_Instance_lines        */
21927 /* Description   :  This procedure is used to create */
21928 /*                  split lines for instance         */
21929 /*---------------------------------------------------*/
21930  PROCEDURE Split_Item_Instance_Lines
21931  (
21932    p_api_version                 IN      NUMBER
21933   ,p_commit                      IN      VARCHAR2
21934   ,p_init_msg_list               IN      VARCHAR2
21935   ,p_validation_level            IN      NUMBER
21936   ,p_source_instance_rec         IN OUT  NOCOPY csi_datastructures_pub.instance_rec
21937   ,p_copy_ext_attribs            IN      VARCHAR2
21938   ,p_copy_org_assignments        IN      VARCHAR2
21939   ,p_copy_parties                IN      VARCHAR2
21940 --  ,p_copy_contacts               IN      VARCHAR2 := fnd_api.g_true
21941   ,p_copy_accounts               IN      VARCHAR2
21942   ,p_copy_asset_assignments      IN      VARCHAR2
21943   ,p_copy_pricing_attribs        IN      VARCHAR2
21944   ,p_txn_rec                     IN OUT  NOCOPY csi_datastructures_pub.transaction_rec
21945   ,x_new_instance_tbl            OUT     NOCOPY csi_datastructures_pub.instance_tbl
21946   ,x_return_status               OUT     NOCOPY VARCHAR2
21947   ,x_msg_count                   OUT     NOCOPY NUMBER
21948   ,x_msg_data                    OUT     NOCOPY VARCHAR2
21949  )
21950 IS
21951   CURSOR c1 is
21952     SELECT serial_number_control_code
21953     FROM   mtl_system_items
21954     WHERE  inventory_item_id = p_source_instance_rec.inventory_item_id
21955     AND    organization_id   = p_source_instance_rec.vld_organization_id
21956     AND    nvl(comms_nl_trackable_flag, 'N') = 'Y'
21957     AND    enabled_flag = 'Y'
21958     AND    nvl (start_date_active, sysdate) <= sysdate
21959     AND    nvl (end_date_active, sysdate+1) > sysdate;
21960 
21961     l_api_name              CONSTANT VARCHAR2(30)   := 'SPLIT_ITEM_INSTANCE_LINES';
21962     l_api_version           CONSTANT NUMBER         := 1.0;
21963     l_debug_level           NUMBER;
21964     l_serialized            NUMBER;
21965     l_return_value          BOOLEAN;
21966     l_object_version_number NUMBER;
21967     l_quantity              NUMBER;
21968     l_instance_id_lst       csi_datastructures_pub.id_tbl;
21969     l_new_instance_rec      csi_datastructures_pub.instance_rec;
21970     l_new_instance_tbl      csi_datastructures_pub.instance_tbl;
21971     l_count                 NUMBER;
21972     l_msg_data              VARCHAR2(2000);
21973     l_msg_index             NUMBER;
21974     l_msg_count             NUMBER;
21975     x_msg_index_out         NUMBER;
21976     l_dummy                 NUMBER;
21977     l_temp_qty              NUMBER;
21978     l_old_qty               NUMBER;
21979     l_item_attribute_tbl    csi_item_instance_pvt.item_attribute_tbl;
21980     l_location_tbl          csi_item_instance_pvt.location_tbl;
21981     l_generic_id_tbl        csi_item_instance_pvt.generic_id_tbl;
21982     l_lookup_tbl            csi_item_instance_pvt.lookup_tbl;
21983     l_ins_count_rec         csi_item_instance_pvt.ins_count_rec;
21984     l_relationship_tbl      csi_datastructures_pub.ii_relationship_tbl;
21985     --
21986     px_oks_txn_inst_tbl     oks_ibint_pub.txn_instance_tbl;
21987     px_child_inst_tbl       csi_item_instance_grp.child_inst_tbl;
21988     l_batch_type            VARCHAR2(50);
21989     l_batch_id              NUMBER;
21990     --
21991 BEGIN
21992 
21993     -- Standard Start of API savepoint
21994        SAVEPOINT  split_item_instance_lines_pvt;
21995 
21996     -- Standard call to check for call compatibility.
21997        IF NOT FND_API.Compatible_API_Call (l_api_version,
21998                                            p_api_version,
21999                                            l_api_name,
22000                                            G_PKG_NAME  )
22001        THEN
22002             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
22003        END IF;
22004 
22005     -- Initialize message list if p_init_msg_list is set to TRUE.
22006        IF FND_API.to_Boolean( p_init_msg_list ) THEN
22007              FND_MSG_PUB.initialize;
22008        END IF;
22009 
22010     -- Initialize API return status to success
22011        x_return_status := FND_API.G_RET_STS_SUCCESS;
22012 
22013         -- Check the profile option debug_level for debug message reporting
22014         l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
22015 
22016        --  If debug_level = 1 then dump the procedure name
22017          IF (l_debug_level > 0) THEN
22018             csi_gen_utility_pvt.put_line ( 'split_item_instance_lines_pvt');
22019          END IF;
22020 
22021        -- If the debug level = 2 then dump all the parameters values.
22022          IF (l_debug_level > 1) THEN
22023                csi_gen_utility_pvt.put_line ('split_item_instance_lines_pvt' ||
22024                                                    p_api_version      ||'-'||
22025                                                    p_commit           ||'-'||
22026                                                    p_init_msg_list          );
22027                -- Dump the records in the log file
22028                csi_gen_utility_pvt.dump_instance_rec(p_source_instance_rec);
22029                csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
22030          END IF;
22031 
22032        -- Start API body
22033 
22034 --check for the required parameters
22035          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Num
22036              (    p_source_instance_rec.INSTANCE_ID  ,
22037                 ' p_source_instance_rec.INSTANCE_ID ',
22038                   l_api_name
22039              );
22040 --validation for serialized or not
22041 
22042       IF   p_source_instance_rec.location_type_code = 'INVENTORY'
22043         OR p_source_instance_rec.location_type_code = 'WIP'
22044         OR p_source_instance_rec.location_type_code = 'PROJECT'
22045       THEN
22046             FND_MESSAGE.SET_NAME('CSI','CSI_CANNOT_SPLIT');
22047             FND_MSG_PUB.ADD;
22048             RAISE FND_API.G_EXC_ERROR;
22049       END IF;
22050 
22051       BEGIN
22052           SELECT 1
22053           INTO  l_dummy
22054           FROM  csi_i_assets
22055           WHERE instance_id =p_source_instance_rec.instance_id;
22056 
22057           FND_MESSAGE.SET_NAME('CSI','CSI_CANNOT_SPLIT');
22058           FND_MSG_PUB.ADD;
22059           RAISE FND_API.G_EXC_ERROR;
22060       EXCEPTION
22061          WHEN OTHERS THEN
22062            NULL;
22063       END;
22064 
22065       OPEN C1;
22066       FETCH C1 into l_serialized;
22067       IF C1%FOUND THEN
22068      -- IF nvl(l_serialized,0) IN (2,5,6) then
22069         IF csi_Item_Instance_Vld_pvt.Is_treated_serialized
22070                                 ( p_serial_control_code => l_serialized
22071                                  ,p_location_type_code  => p_source_instance_rec.location_type_code
22072                                  ,p_transaction_type_id => p_txn_rec.transaction_type_id
22073                                  ) -- Added by sk on 09/13/01
22074         THEN
22075             l_return_value := FALSE;
22076                 FND_MESSAGE.SET_NAME('CSI','CSI_API_CANNOT_BE_SERIALIZED');
22077                 FND_MESSAGE.SET_TOKEN('SERIAL_NUMBER', 'serial_number');
22078                 FND_MSG_PUB.ADD;
22079             RAISE FND_API.G_EXC_ERROR;
22080         END IF;
22081       END IF;
22082       CLOSE C1;
22083 
22084 --get the quantity from the csi_item_instances for the instance_id passed
22085     BEGIN
22086           SELECT quantity
22087           INTO   l_quantity
22088           FROM   csi_item_instances
22089           WHERE  instance_id = p_source_instance_rec.instance_id;
22090     EXCEPTION
22091          WHEN NO_DATA_FOUND THEN
22092             FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_QUANITY');
22093             FND_MSG_PUB.Add;
22094                    RAISE FND_API.G_EXC_ERROR;
22095     END;
22096     -- Added by sk for bug 2186683
22097     IF p_source_instance_rec.vld_organization_id IS NULL OR
22098        p_source_instance_rec.vld_organization_id = fnd_api.g_miss_num
22099     THEN
22100        BEGIN
22101           SELECT last_vld_organization_id
22102           INTO   p_source_instance_rec.vld_organization_id
22103           FROM   csi_item_instances
22104           WHERE  instance_id = p_source_instance_rec.instance_id;
22105        EXCEPTION
22106          WHEN OTHERS THEN
22107             NULL;
22108        END;
22109     END IF;
22110     -- End addition by sk for bug 2186683
22111     l_temp_qty:=0;
22112  IF l_quantity > 1 THEN
22113     FOR i in 1..(l_quantity - 1) LOOP
22114 
22115     l_temp_qty  :=l_temp_qty+1;
22116     l_old_qty :=l_quantity-l_temp_qty; -- This will be our split old quantity.
22117     p_source_instance_rec.quantity := 1;
22118     l_new_instance_tbl.delete;
22119 --call the copy instance api to create a new record with 'p_quantity2')
22120      csi_item_instance_pvt.copy_item_instance
22121            (
22122              p_api_version                 => p_api_version
22123             ,p_commit                      => fnd_api.g_false
22124             ,p_init_msg_list               => p_init_msg_list
22125             ,p_validation_level            => p_validation_level
22126             ,p_source_instance_rec         => p_source_instance_rec
22127             ,p_copy_ext_attribs            => p_copy_ext_attribs
22128             ,p_copy_org_assignments        => p_copy_org_assignments
22129             ,p_copy_parties                => p_copy_parties
22130             ,p_copy_contacts               => fnd_api.g_true
22131             ,p_copy_accounts               => p_copy_accounts
22132             ,p_copy_asset_assignments      => p_copy_asset_assignments
22133             ,p_copy_pricing_attribs        => p_copy_pricing_attribs
22134             ,p_copy_inst_children          => fnd_api.g_true
22135             ,p_call_from_split             => fnd_api.g_true
22136             ,p_txn_rec                     => p_txn_rec
22137             ,x_new_instance_tbl            => l_new_instance_tbl
22138             ,x_return_status               => x_return_status
22139             ,x_msg_count                   => x_msg_count
22140             ,x_msg_data                    => x_msg_data
22141            );
22142 
22143       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22144 --         x_error_message :=  'copy_item_instance failed '  ;
22145           FOR i in 1..x_msg_Count LOOP
22146             FND_MSG_PUB.Get(p_msg_index     => i,
22147                             p_encoded       => 'F',
22148                             p_data          => x_msg_data,
22149                             p_msg_index_out => x_msg_index_out );
22150          End LOOP;
22151          RAISE fnd_api.g_exc_error;
22152       END IF;
22153 -- Start addition for bug 2823122
22154     IF l_new_instance_tbl(1).instance_usage_code='IN_RELATIONSHIP'
22155     THEN
22156        IF l_relationship_tbl.COUNT=0
22157        THEN
22158          BEGIN
22159           SELECT object_id
22160                 ,relationship_type_code
22161                 ,mandatory_flag
22162                 ,context
22163                 ,sysdate
22164                 ,active_end_date
22165                 ,position_reference
22166                 ,display_order
22167                 ,attribute1
22168                 ,attribute2
22169                 ,attribute3
22170                 ,attribute4
22171                 ,attribute5
22172                 ,attribute6
22173                 ,attribute7
22174                 ,attribute8
22175                 ,attribute9
22176                 ,attribute10
22177                 ,attribute11
22178                 ,attribute12
22179                 ,attribute13
22180                 ,attribute14
22181                 ,attribute15
22182           INTO   l_relationship_tbl(1).object_id
22183                 ,l_relationship_tbl(1).relationship_type_code
22184                 ,l_relationship_tbl(1).mandatory_flag
22185                 ,l_relationship_tbl(1).context
22186                 ,l_relationship_tbl(1).active_start_date
22187                 ,l_relationship_tbl(1).active_end_date
22188                 ,l_relationship_tbl(1).position_reference
22189                 ,l_relationship_tbl(1).display_order
22190                 ,l_relationship_tbl(1).attribute1
22191                 ,l_relationship_tbl(1).attribute2
22192                 ,l_relationship_tbl(1).attribute3
22193                 ,l_relationship_tbl(1).attribute4
22194                 ,l_relationship_tbl(1).attribute5
22195                 ,l_relationship_tbl(1).attribute6
22196                 ,l_relationship_tbl(1).attribute7
22197                 ,l_relationship_tbl(1).attribute8
22198                 ,l_relationship_tbl(1).attribute9
22199                 ,l_relationship_tbl(1).attribute10
22200                 ,l_relationship_tbl(1).attribute11
22201                 ,l_relationship_tbl(1).attribute12
22202                 ,l_relationship_tbl(1).attribute13
22203                 ,l_relationship_tbl(1).attribute14
22204                 ,l_relationship_tbl(1).attribute15
22205           FROM  csi_ii_relationships
22206           WHERE subject_id=p_source_instance_rec.instance_id
22207           AND   relationship_type_code='COMPONENT-OF'
22208           AND   (SYSDATE BETWEEN NVL(active_start_date, SYSDATE) AND NVL(active_end_date, SYSDATE));
22209          EXCEPTION
22210            WHEN OTHERS THEN
22211              NULL;
22212          END;
22213        END IF;
22214 
22215         IF l_relationship_tbl(1).object_id  IS NOT NULL
22216          AND l_relationship_tbl(1).object_id<>fnd_api.g_miss_num
22217         THEN
22218           l_relationship_tbl(1).relationship_id:=fnd_api.g_miss_num;
22219           l_relationship_tbl(1).subject_id:=l_new_instance_tbl(1).instance_id;
22220           csi_ii_relationships_pub.create_relationship(
22221             p_api_version      => 1.0,
22222             p_commit           => fnd_api.g_false,
22223             p_init_msg_list    => fnd_api.g_true,
22224             p_validation_level => fnd_api.g_valid_level_full,
22225             p_relationship_tbl => l_relationship_tbl,
22226             p_txn_rec          => p_txn_rec,
22227             x_return_status    => x_return_status,
22228             x_msg_count        => x_msg_count,
22229             x_msg_data         => x_msg_data);
22230            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22231                FOR i in 1..x_msg_Count LOOP
22232                    FND_MSG_PUB.Get(p_msg_index     => i,
22233                                    p_encoded       => 'F',
22234                                    p_data          => x_msg_data,
22235                                    p_msg_index_out => x_msg_index_out );
22236                END LOOP;
22237               RAISE fnd_api.g_exc_error;
22238            END IF;
22239         END IF;
22240     END IF;
22241 -- End addition for bug 2823122
22242          x_new_instance_tbl(i) := l_new_instance_tbl(1);
22243 
22244     -- Following code is added for fixing bug 2139782.
22245          BEGIN
22246             -- For each of the record contracts call will be made and px_oks_txn_inst_tbl will be refreshed
22247             px_oks_txn_inst_tbl.DELETE;
22248             --
22249             csi_item_instance_pvt.call_to_contracts
22250              ( p_transaction_type   =>   'SPL'
22251               ,p_instance_id        =>   p_source_instance_rec.instance_id
22252               ,p_new_instance_id    =>   l_new_instance_tbl(1).instance_id
22253               ,p_vld_org_id         =>   p_source_instance_rec.vld_organization_id
22254               ,p_quantity           =>   l_old_qty
22255               ,p_party_account_id1  =>   NULL
22256               ,p_party_account_id2  =>   NULL
22257               ,p_transaction_date   =>   p_txn_rec.transaction_date -- For 3483763
22258               ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date -- For 3483763
22259 	      ,p_txn_type_id        => p_txn_rec.transaction_type_id -- added for  BUG  5752271
22260               ,p_oks_txn_inst_tbl   =>   px_oks_txn_inst_tbl
22261               ,x_return_status      =>   x_return_status
22262               ,x_msg_count          =>   x_msg_count
22263               ,x_msg_data           =>   x_msg_data
22264               );
22265 
22266              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22267                   RAISE FND_API.G_EXC_ERROR;
22268              END IF;
22269              --
22270 	     IF px_oks_txn_inst_tbl.count > 0 THEN
22271 		csi_gen_utility_pvt.dump_oks_txn_inst_tbl(px_oks_txn_inst_tbl);
22272 		csi_gen_utility_pvt.put_line('Calling OKS Core API...');
22273 		--
22274 		IF p_txn_rec.transaction_type_id = 3 THEN
22275 		   l_batch_id := p_txn_rec.source_header_ref_id;
22276 		   l_batch_type := p_txn_rec.source_group_ref;
22277 		ELSE
22278 		   l_batch_id := NULL;
22279 		   l_batch_type := NULL;
22280 		END IF;
22281 		--
22282                 UPDATE CSI_TRANSACTIONS
22283                 set contracts_invoked = 'Y'
22284                 where transaction_id = p_txn_rec.transaction_id;
22285                 --
22286 		OKS_IBINT_PUB.IB_interface
22287 		   (
22288 		     P_Api_Version           =>  1.0,
22289 		     P_init_msg_list         =>  p_init_msg_list,
22290 		     P_single_txn_date_flag  =>  'Y',
22291 		     P_Batch_type            =>  l_batch_type,
22292 		     P_Batch_ID              =>  l_batch_id,
22293 		     P_OKS_Txn_Inst_tbl      =>  px_oks_txn_inst_tbl,
22294 		     x_return_status         =>  x_return_status,
22295 		     x_msg_count             =>  x_msg_count,
22296 		     x_msg_data              =>  x_msg_data
22297 		  );
22298 		--
22299 		IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22300 		   l_msg_index := 1;
22301 		   l_msg_count := x_msg_count;
22302 		   WHILE l_msg_count > 0 LOOP
22303 		      x_msg_data := FND_MSG_PUB.GET
22304 			      (  l_msg_index,
22305 				 FND_API.G_FALSE        );
22306 		      csi_gen_utility_pvt.put_line( 'Error from OKS_IBINT_PUB.IB_interface..');
22307 		      csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
22308 		      l_msg_index := l_msg_index + 1;
22309 		      l_msg_count := l_msg_count - 1;
22310 		   END LOOP;
22311 		   RAISE FND_API.G_EXC_ERROR;
22312 		END IF;
22313 	     END IF;
22314          EXCEPTION
22315            WHEN FND_API.G_EXC_ERROR THEN
22316              RAISE FND_API.G_EXC_ERROR;
22317          END;
22318     -- End of code addition for fixing bug 2139782.
22319    END LOOP;
22320  Else   --l_quantity is <= 1
22321 
22322             FND_MESSAGE.SET_NAME('CSI','CSI_API_QUANTITY_NOT_VALID');
22323             FND_MESSAGE.SET_TOKEN('QUANTITY', l_quantity);
22324             FND_MSG_PUB.ADD;
22325 --         RAISE fnd_api.g_exc_error;
22326  End If;
22327 
22328 --update the existing record with 'p_quantity1')
22329     BEGIN
22330           SELECT object_version_number
22331           INTO   l_object_version_number
22332           FROM   csi_item_instances
22333           WHERE  instance_id = p_source_instance_rec.instance_id;
22334     EXCEPTION
22335          WHEN NO_DATA_FOUND THEN
22336             FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_OBJ_NUM');
22337             FND_MSG_PUB.ADD;
22338                    RAISE FND_API.G_EXC_ERROR;
22339     END;
22340     --
22341     px_oks_txn_inst_tbl.DELETE;
22342     --
22343     l_new_instance_rec.instance_id           := p_source_instance_rec.instance_id;
22344     l_new_instance_rec.quantity              := 1;
22345     l_new_instance_rec.object_version_number := l_object_version_number;
22346     l_new_instance_rec.vld_organization_id   := p_source_instance_rec.vld_organization_id;
22347 
22348 --call the update api
22349     update_item_instance
22350            (
22351             p_api_version                => p_api_version
22352            ,p_commit                     => fnd_api.g_false
22353            ,p_init_msg_list              => p_init_msg_list
22354            ,p_validation_level           => p_validation_level
22355            ,p_instance_rec               => l_new_instance_rec
22356            ,p_txn_rec                    => p_txn_rec
22357            ,x_instance_id_lst            => l_instance_id_lst
22358            ,x_return_status              => x_return_status
22359            ,x_msg_count                  => x_msg_count
22360            ,x_msg_data                   => x_msg_data
22361            ,p_item_attribute_tbl         => l_item_attribute_tbl
22362            ,p_location_tbl               => l_location_tbl
22363            ,p_generic_id_tbl             => l_generic_id_tbl
22364            ,p_lookup_tbl                 => l_lookup_tbl
22365            ,p_ins_count_rec              => l_ins_count_rec
22366            ,p_oks_txn_inst_tbl           => px_oks_txn_inst_tbl
22367            ,p_child_inst_tbl             => px_child_inst_tbl
22368            );
22369 
22370       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22371          FOR i in 1..x_msg_Count LOOP
22372             FND_MSG_PUB.Get(p_msg_index     => i,
22373                             p_encoded       => 'F',
22374                             p_data          => x_msg_data,
22375                             p_msg_index_out => x_msg_index_out );
22376           End LOOP;
22377          RAISE fnd_api.g_exc_error;
22378       END IF;
22379 
22380 
22381       l_count := x_new_instance_tbl.count ;
22382 
22383       x_new_instance_tbl(l_count+1).instance_id := l_new_instance_rec.instance_id;
22384 
22385 --               x_new_instance_tbl(i+1) := l_instance_id_lst(1);
22386 
22387       -- End of API body
22388 
22389       -- Standard check of p_commit.
22390       IF FND_API.To_Boolean( p_commit ) THEN
22391            COMMIT WORK;
22392       END IF;
22393 
22394        -- End disable trace
22395 
22396       -- Standard call to get message count and IF count is  get message info.
22397       FND_MSG_PUB.Count_And_Get
22398             (p_count   =>   x_msg_count ,
22399              p_data    =>   x_msg_data
22400             );
22401 
22402 EXCEPTION
22403 
22404      WHEN FND_API.G_EXC_ERROR THEN
22405           ROLLBACK TO split_item_instance_lines_pvt;
22406             x_return_status := FND_API.G_RET_STS_ERROR ;
22407             FND_MSG_PUB.Count_And_Get
22408                 ( p_count   =>  x_msg_count,
22409                   p_data    =>  x_msg_data
22410                 );
22411      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
22412             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
22413             ROLLBACK TO split_item_instance_lines_pvt;
22414             FND_MSG_PUB.Count_And_Get
22415                 ( p_count   =>  x_msg_count,
22416                   p_data    =>  x_msg_data
22417                 );
22418      WHEN OTHERS THEN
22419             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
22420           ROLLBACK TO split_item_instance_lines_pvt;
22421             IF    FND_MSG_PUB.Check_Msg_Level
22422                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
22423             THEN
22424                   FND_MSG_PUB.Add_Exc_Msg
22425                   ( G_PKG_NAME ,
22426                     l_api_name
22427                   );
22428             END IF;
22429             FND_MSG_PUB.Count_And_Get
22430                   ( p_count  =>  x_msg_count,
22431                     p_data   =>  x_msg_data
22432                   );
22433 
22434 END Split_Item_Instance_lines;
22435 
22436 
22437 /*----------------------------------------------------------*/
22438 /* Procedure name:  Initialize_ver_rec_no_dump              */
22439 /* Description : This procedure initializes the first       */
22440 /*                 record from the history                  */
22441 /*----------------------------------------------------------*/
22442 
22443 PROCEDURE Initialize_ver_rec_no_dump
22444 (
22445   x_version_label_rec      IN OUT NOCOPY csi_datastructures_pub.version_label_rec,
22446   p_version_label_id       IN NUMBER ,
22447   x_no_dump                IN OUT NOCOPY DATE
22448   ) IS
22449 
22450 CURSOR Int_no_dump(p_ver_label_id IN NUMBER ) IS
22451 SELECT
22452     CREATION_DATE                   ,
22453     NEW_VERSION_LABEL               ,
22454     NEW_DESCRIPTION                 ,
22455     NEW_DATE_TIME_STAMP             ,
22456     NEW_ACTIVE_START_DATE           ,
22457     NEW_ACTIVE_END_DATE             ,
22458     NEW_CONTEXT                     ,
22459     NEW_ATTRIBUTE1                  ,
22460     NEW_ATTRIBUTE2                  ,
22461     NEW_ATTRIBUTE3                  ,
22462     NEW_ATTRIBUTE4                  ,
22463     NEW_ATTRIBUTE5                  ,
22464     NEW_ATTRIBUTE6                  ,
22465     NEW_ATTRIBUTE7                  ,
22466     NEW_ATTRIBUTE8                  ,
22467     NEW_ATTRIBUTE9                  ,
22468     NEW_ATTRIBUTE10                 ,
22469     NEW_ATTRIBUTE11                 ,
22470     NEW_ATTRIBUTE12                 ,
22471     NEW_ATTRIBUTE13                 ,
22472     NEW_ATTRIBUTE14                 ,
22473     NEW_ATTRIBUTE15
22474  FROM CSI_I_VERSION_LABELS_H
22475 WHERE version_label_id = p_ver_label_id
22476 ORDER BY creation_date;
22477 
22478 
22479 BEGIN
22480 
22481   FOR C1 IN Int_no_dump(p_version_label_id  ) LOOP
22482    IF Int_no_dump%ROWCOUNT = 1 THEN
22483      x_no_dump                              := C1.creation_date;
22484      x_version_label_rec.VERSION_LABEL      := C1.NEW_VERSION_LABEL;
22485      x_version_label_rec.DESCRIPTION        := C1.NEW_DESCRIPTION;
22486      x_version_label_rec.DATE_TIME_STAMP    := C1.NEW_DATE_TIME_STAMP;
22487      x_version_label_rec.ACTIVE_START_DATE  := C1.NEW_ACTIVE_START_DATE;
22488      x_version_label_rec.ACTIVE_END_DATE    := C1.NEW_ACTIVE_END_DATE;
22489      x_version_label_rec.CONTEXT            := C1.NEW_CONTEXT;
22490      x_version_label_rec.ATTRIBUTE1         := C1.NEW_ATTRIBUTE1;
22491      x_version_label_rec.ATTRIBUTE2         := C1.NEW_ATTRIBUTE2;
22492      x_version_label_rec.ATTRIBUTE3         := C1.NEW_ATTRIBUTE3;
22493      x_version_label_rec.ATTRIBUTE4         := C1.NEW_ATTRIBUTE4;
22494      x_version_label_rec.ATTRIBUTE5         := C1.NEW_ATTRIBUTE5;
22495      x_version_label_rec.ATTRIBUTE6         := C1.NEW_ATTRIBUTE6;
22496      x_version_label_rec.ATTRIBUTE7         := C1.NEW_ATTRIBUTE7;
22497      x_version_label_rec.ATTRIBUTE8         := C1.NEW_ATTRIBUTE8;
22498      x_version_label_rec.ATTRIBUTE9         := C1.NEW_ATTRIBUTE9;
22499      x_version_label_rec.ATTRIBUTE10        := C1.NEW_ATTRIBUTE10;
22500      x_version_label_rec.ATTRIBUTE11        := C1.NEW_ATTRIBUTE11;
22501      x_version_label_rec.ATTRIBUTE12        := C1.NEW_ATTRIBUTE12;
22502      x_version_label_rec.ATTRIBUTE13        := C1.NEW_ATTRIBUTE13;
22503      x_version_label_rec.ATTRIBUTE14        := C1.NEW_ATTRIBUTE14;
22504      x_version_label_rec.ATTRIBUTE15        := C1.NEW_ATTRIBUTE15;
22505    ELSE
22506      EXIT;
22507    END IF;
22508 
22509   END LOOP;
22510 END Initialize_ver_rec_no_dump;
22511 
22512 
22513 /*----------------------------------------------------------*/
22514 /* Procedure name:  Initialize_ver_rec                      */
22515 /* Description : This procudure recontructs the record      */
22516 /*                 from the history                         */
22517 /*----------------------------------------------------------*/
22518 
22519 PROCEDURE Initialize_ver_rec
22520 (
22521   x_version_label_rec           IN OUT NOCOPY csi_datastructures_pub.version_label_rec,
22522   p_version_label_hist_id       IN NUMBER ,
22523   x_nearest_full_dump           IN OUT NOCOPY DATE
22524   ) IS
22525 
22526 CURSOR Int_nearest_full_dump(p_ver_label_hist_id IN NUMBER ) IS
22527 SELECT
22528     CREATION_DATE                   ,
22529     NEW_VERSION_LABEL               ,
22530     NEW_DESCRIPTION                 ,
22531     NEW_DATE_TIME_STAMP             ,
22532     NEW_ACTIVE_START_DATE           ,
22533     NEW_ACTIVE_END_DATE             ,
22534     NEW_CONTEXT                     ,
22535     NEW_ATTRIBUTE1                  ,
22536     NEW_ATTRIBUTE2                  ,
22537     NEW_ATTRIBUTE3                  ,
22538     NEW_ATTRIBUTE4                  ,
22539     NEW_ATTRIBUTE5                  ,
22540     NEW_ATTRIBUTE6                  ,
22541     NEW_ATTRIBUTE7                  ,
22542     NEW_ATTRIBUTE8                  ,
22543     NEW_ATTRIBUTE9                  ,
22544     NEW_ATTRIBUTE10                 ,
22545     NEW_ATTRIBUTE11                 ,
22546     NEW_ATTRIBUTE12                 ,
22547     NEW_ATTRIBUTE13                 ,
22548     NEW_ATTRIBUTE14                 ,
22549     NEW_ATTRIBUTE15
22550  FROM CSI_I_VERSION_LABELS_H
22551 WHERE version_label_history_id = p_ver_label_hist_id
22552   and  full_dump_flag = 'Y' ;
22553 
22554 BEGIN
22555 
22556   FOR C1 IN Int_nearest_full_dump(p_version_label_hist_id  ) LOOP
22557      x_nearest_full_dump                    := C1.creation_date;
22558      x_version_label_rec.VERSION_LABEL      := C1.NEW_VERSION_LABEL;
22559      x_version_label_rec.DESCRIPTION        := C1.NEW_DESCRIPTION;
22560      x_version_label_rec.DATE_TIME_STAMP    := C1.NEW_DATE_TIME_STAMP;
22561      x_version_label_rec.ACTIVE_START_DATE  := C1.NEW_ACTIVE_START_DATE;
22562      x_version_label_rec.ACTIVE_END_DATE    := C1.NEW_ACTIVE_END_DATE;
22563      x_version_label_rec.CONTEXT            := C1.NEW_CONTEXT;
22564      x_version_label_rec.ATTRIBUTE1         := C1.NEW_ATTRIBUTE1;
22565      x_version_label_rec.ATTRIBUTE2         := C1.NEW_ATTRIBUTE2;
22566      x_version_label_rec.ATTRIBUTE3         := C1.NEW_ATTRIBUTE3;
22567      x_version_label_rec.ATTRIBUTE4         := C1.NEW_ATTRIBUTE4;
22568      x_version_label_rec.ATTRIBUTE5         := C1.NEW_ATTRIBUTE5;
22569      x_version_label_rec.ATTRIBUTE6         := C1.NEW_ATTRIBUTE6;
22570      x_version_label_rec.ATTRIBUTE7         := C1.NEW_ATTRIBUTE7;
22571      x_version_label_rec.ATTRIBUTE8         := C1.NEW_ATTRIBUTE8;
22572      x_version_label_rec.ATTRIBUTE9         := C1.NEW_ATTRIBUTE9;
22573      x_version_label_rec.ATTRIBUTE10        := C1.NEW_ATTRIBUTE10;
22574      x_version_label_rec.ATTRIBUTE11        := C1.NEW_ATTRIBUTE11;
22575      x_version_label_rec.ATTRIBUTE12        := C1.NEW_ATTRIBUTE12;
22576      x_version_label_rec.ATTRIBUTE13        := C1.NEW_ATTRIBUTE13;
22577      x_version_label_rec.ATTRIBUTE14        := C1.NEW_ATTRIBUTE14;
22578      x_version_label_rec.ATTRIBUTE15        := C1.NEW_ATTRIBUTE15;
22579 
22580   END LOOP;
22581 END Initialize_ver_rec ;
22582 
22583 /*----------------------------------------------------------*/
22584 /* Procedure name:  Construct_ver_from_hist                 */
22585 /* Description : This procudure recontructs the record      */
22586 /*                 from the history                         */
22587 /*----------------------------------------------------------*/
22588 
22589 PROCEDURE Construct_ver_from_hist
22590 (
22591   x_version_label_tbl      IN OUT NOCOPY csi_datastructures_pub.version_label_tbl,
22592   p_time_stamp             IN DATE
22593    ) IS
22594 
22595  l_nearest_full_dump      DATE := p_time_stamp;
22596  l_ver_label_hist_id      NUMBER;
22597 
22598 CURSOR get_nearest_full_dump(p_ver_label_id IN NUMBER ,p_time IN DATE) IS
22599 SELECT
22600   MAX(version_label_history_id)
22601 FROM CSI_I_VERSION_LABELS_H
22602 WHERE creation_date <= p_time
22603   and version_label_id = p_ver_label_id
22604   and  full_dump_flag = 'Y' ;
22605 
22606 CURSOR get_ver_label_hist(p_ver_label_id IN NUMBER ,
22607                          p_nearest_full_dump IN DATE,
22608                          p_time IN DATE ) IS
22609 SELECT
22610     OLD_VERSION_LABEL               ,
22611     NEW_VERSION_LABEL               ,
22612     OLD_DESCRIPTION                 ,
22613     NEW_DESCRIPTION                 ,
22614     OLD_DATE_TIME_STAMP             ,
22615     NEW_DATE_TIME_STAMP             ,
22616     OLD_ACTIVE_START_DATE           ,
22617     NEW_ACTIVE_START_DATE           ,
22618     OLD_ACTIVE_END_DATE             ,
22619     NEW_ACTIVE_END_DATE             ,
22620     OLD_CONTEXT                     ,
22621     NEW_CONTEXT                     ,
22622     OLD_ATTRIBUTE1                  ,
22623     NEW_ATTRIBUTE1                  ,
22624     OLD_ATTRIBUTE2                  ,
22625     NEW_ATTRIBUTE2                  ,
22626     OLD_ATTRIBUTE3                  ,
22627     NEW_ATTRIBUTE3                  ,
22628     OLD_ATTRIBUTE4                  ,
22629     NEW_ATTRIBUTE4                  ,
22630     OLD_ATTRIBUTE5                  ,
22631     NEW_ATTRIBUTE5                  ,
22632     OLD_ATTRIBUTE6                  ,
22633     NEW_ATTRIBUTE6                  ,
22634     OLD_ATTRIBUTE7                  ,
22635     NEW_ATTRIBUTE7                  ,
22636     OLD_ATTRIBUTE8                  ,
22637     NEW_ATTRIBUTE8                  ,
22638     OLD_ATTRIBUTE9                  ,
22639     NEW_ATTRIBUTE9                  ,
22640     OLD_ATTRIBUTE10                 ,
22641     NEW_ATTRIBUTE10                 ,
22642     OLD_ATTRIBUTE11                 ,
22643     NEW_ATTRIBUTE11                 ,
22644     OLD_ATTRIBUTE12                 ,
22645     NEW_ATTRIBUTE12                 ,
22646     OLD_ATTRIBUTE13                 ,
22647     NEW_ATTRIBUTE13                 ,
22648     OLD_ATTRIBUTE14                 ,
22649     NEW_ATTRIBUTE14                 ,
22650     OLD_ATTRIBUTE15                 ,
22651     NEW_ATTRIBUTE15
22652  FROM CSI_I_VERSION_LABELS_H
22653 WHERE creation_date <= p_time
22654   and creation_date >= p_nearest_full_dump
22655   and version_label_id = p_ver_label_id
22656   ORDER BY creation_date;
22657 
22658 l_time_stamp  DATE := p_time_stamp;
22659 
22660 BEGIN
22661 
22662 FOR i IN x_version_label_tbl.FIRST..x_version_label_tbl.LAST LOOP
22663 
22664   OPEN get_nearest_full_dump(x_version_label_tbl(i).version_label_id, p_time_stamp);
22665   FETCH get_nearest_full_dump INTO l_ver_label_hist_id;
22666   CLOSE get_nearest_full_dump;
22667 
22668   IF l_ver_label_hist_id IS NOT NULL THEN
22669      Initialize_ver_rec( x_version_label_tbl(i), l_ver_label_hist_id ,l_nearest_full_dump);
22670   ELSE
22671      Initialize_ver_rec_no_dump( x_version_label_tbl(i), x_version_label_tbl(i).version_label_id, l_time_stamp);
22672 
22673             l_nearest_full_dump :=  l_time_stamp;
22674          -- If the user chooses a date before the creation date of the instance
22675          -- then raise an error
22676            IF p_time_stamp < l_time_stamp THEN
22677                FND_MESSAGE.SET_NAME('CSI','CSI_H_DATE_BEFORE_CRE_DATE');
22678                FND_MESSAGE.SET_TOKEN('CREATION_DATE',to_char(l_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
22679                FND_MESSAGE.SET_TOKEN('USER_DATE',to_char(p_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
22680                FND_MSG_PUB.Add;
22681                RAISE FND_API.G_EXC_ERROR;
22682            END IF;
22683 
22684   END IF;
22685 
22686   FOR C2 IN get_ver_label_hist(x_version_label_tbl(i).version_label_id ,l_nearest_full_dump,p_time_stamp ) LOOP
22687 
22688         IF (C2.OLD_VERSION_LABEL IS NULL AND C2.NEW_VERSION_LABEL IS NOT NULL)
22689         OR (C2.OLD_VERSION_LABEL IS NOT NULL AND C2.NEW_VERSION_LABEL IS NULL)
22690         OR (C2.OLD_VERSION_LABEL <> C2.NEW_VERSION_LABEL) THEN
22691              x_version_label_tbl(i).VERSION_LABEL := C2.NEW_VERSION_LABEL;
22692         END IF;
22693 
22694         IF (C2.OLD_DESCRIPTION IS NULL AND C2.NEW_DESCRIPTION IS NOT NULL)
22695         OR (C2.OLD_DESCRIPTION IS NOT NULL AND C2.NEW_DESCRIPTION IS NULL)
22696         OR (C2.OLD_DESCRIPTION <> C2.NEW_DESCRIPTION) THEN
22697              x_version_label_tbl(i).DESCRIPTION := C2.NEW_DESCRIPTION;
22698         END IF;
22699 
22700         IF (C2.OLD_DATE_TIME_STAMP IS NULL AND C2.NEW_DATE_TIME_STAMP IS NOT NULL)
22701         OR (C2.OLD_DATE_TIME_STAMP IS NOT NULL AND C2.NEW_DATE_TIME_STAMP IS NULL)
22702         OR (C2.OLD_DATE_TIME_STAMP <> C2.NEW_DATE_TIME_STAMP) THEN
22703              x_version_label_tbl(i).DATE_TIME_STAMP := C2.NEW_DATE_TIME_STAMP;
22704         END IF;
22705 
22706         IF (C2.OLD_ACTIVE_START_DATE IS NULL AND C2.NEW_ACTIVE_START_DATE IS NOT NULL)
22707         OR (C2.OLD_ACTIVE_START_DATE IS NOT NULL AND C2.NEW_ACTIVE_START_DATE IS NULL)
22708         OR (C2.OLD_ACTIVE_START_DATE <> C2.NEW_ACTIVE_START_DATE) THEN
22709              x_version_label_tbl(i).ACTIVE_START_DATE := C2.NEW_ACTIVE_START_DATE;
22710         END IF;
22711 
22712 
22713         IF (C2.OLD_ACTIVE_END_DATE IS NULL AND C2.NEW_ACTIVE_END_DATE IS NOT NULL)
22714         OR (C2.OLD_ACTIVE_END_DATE IS NOT NULL AND C2.NEW_ACTIVE_END_DATE IS NULL)
22715         OR (C2.OLD_ACTIVE_END_DATE <> C2.NEW_ACTIVE_END_DATE) THEN
22716              x_version_label_tbl(i).ACTIVE_END_DATE := C2.NEW_ACTIVE_END_DATE;
22717         END IF;
22718 
22719 
22720         IF (C2.OLD_CONTEXT IS NULL AND C2.NEW_CONTEXT IS NOT NULL)
22721         OR (C2.OLD_CONTEXT IS NOT NULL AND C2.NEW_CONTEXT IS NULL)
22722         OR (C2.OLD_CONTEXT <> C2.NEW_CONTEXT) THEN
22723              x_version_label_tbl(i).CONTEXT := C2.NEW_CONTEXT;
22724         END IF;
22725 
22726         IF (C2.OLD_ATTRIBUTE1 IS NULL AND C2.NEW_ATTRIBUTE1 IS NOT NULL)
22727         OR (C2.OLD_ATTRIBUTE1 IS NOT NULL AND C2.NEW_ATTRIBUTE1 IS NULL)
22728         OR (C2.OLD_ATTRIBUTE1 <> C2.NEW_ATTRIBUTE1) THEN
22729              x_version_label_tbl(i).ATTRIBUTE1 := C2.NEW_ATTRIBUTE1;
22730         END IF;
22731 
22732         IF (C2.OLD_ATTRIBUTE2 IS NULL AND C2.NEW_ATTRIBUTE2 IS NOT NULL)
22733         OR (C2.OLD_ATTRIBUTE2 IS NOT NULL AND C2.NEW_ATTRIBUTE2 IS NULL)
22734         OR (C2.OLD_ATTRIBUTE2 <> C2.NEW_ATTRIBUTE2) THEN
22735              x_version_label_tbl(i).ATTRIBUTE2 := C2.NEW_ATTRIBUTE2;
22736         END IF;
22737 
22738         IF (C2.OLD_ATTRIBUTE3 IS NULL AND C2.NEW_ATTRIBUTE3 IS NOT NULL)
22739         OR (C2.OLD_ATTRIBUTE3 IS NOT NULL AND C2.NEW_ATTRIBUTE3 IS NULL)
22740         OR (C2.OLD_ATTRIBUTE3 <> C2.NEW_ATTRIBUTE3) THEN
22741              x_version_label_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
22742         END IF;
22743 
22744         IF (C2.OLD_ATTRIBUTE4 IS NULL AND C2.NEW_ATTRIBUTE4 IS NOT NULL)
22745         OR (C2.OLD_ATTRIBUTE4 IS NOT NULL AND C2.NEW_ATTRIBUTE4 IS NULL)
22746         OR (C2.OLD_ATTRIBUTE4 <> C2.NEW_ATTRIBUTE4) THEN
22747              x_version_label_tbl(i).ATTRIBUTE4 := C2.NEW_ATTRIBUTE4;
22748         END IF;
22749 
22750 
22751         IF (C2.OLD_ATTRIBUTE5 IS NULL AND C2.NEW_ATTRIBUTE5 IS NOT NULL)
22752         OR (C2.OLD_ATTRIBUTE5 IS NOT NULL AND C2.NEW_ATTRIBUTE5 IS NULL)
22753         OR (C2.OLD_ATTRIBUTE5 <> C2.NEW_ATTRIBUTE5) THEN
22754              x_version_label_tbl(i).ATTRIBUTE5 := C2.NEW_ATTRIBUTE5;
22755         END IF;
22756 
22757 
22758         IF (C2.OLD_ATTRIBUTE6 IS NULL AND C2.NEW_ATTRIBUTE6 IS NOT NULL)
22759         OR (C2.OLD_ATTRIBUTE6 IS NOT NULL AND C2.NEW_ATTRIBUTE6 IS NULL)
22760         OR (C2.OLD_ATTRIBUTE6 <> C2.NEW_ATTRIBUTE6) THEN
22761              x_version_label_tbl(i).ATTRIBUTE6 := C2.NEW_ATTRIBUTE6;
22762         END IF;
22763 
22764         IF (C2.OLD_ATTRIBUTE7 IS NULL AND C2.NEW_ATTRIBUTE7 IS NOT NULL)
22765         OR (C2.OLD_ATTRIBUTE7 IS NOT NULL AND C2.NEW_ATTRIBUTE7 IS NULL)
22766         OR (C2.OLD_ATTRIBUTE7 <> C2.NEW_ATTRIBUTE7) THEN
22767              x_version_label_tbl(i).ATTRIBUTE7 := C2.NEW_ATTRIBUTE7;
22768         END IF;
22769 
22770         IF (C2.OLD_ATTRIBUTE8 IS NULL AND C2.NEW_ATTRIBUTE8 IS NOT NULL)
22771         OR (C2.OLD_ATTRIBUTE8 IS NOT NULL AND C2.NEW_ATTRIBUTE8 IS NULL)
22772         OR (C2.OLD_ATTRIBUTE8 <> C2.NEW_ATTRIBUTE8) THEN
22773              x_version_label_tbl(i).ATTRIBUTE8 := C2.NEW_ATTRIBUTE8;
22774         END IF;
22775 
22776         IF (C2.OLD_ATTRIBUTE9 IS NULL AND C2.NEW_ATTRIBUTE9 IS NOT NULL)
22777         OR (C2.OLD_ATTRIBUTE9 IS NOT NULL AND C2.NEW_ATTRIBUTE9 IS NULL)
22778         OR (C2.OLD_ATTRIBUTE9 <> C2.NEW_ATTRIBUTE9) THEN
22779              x_version_label_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
22780         END IF;
22781 
22782 
22783         IF (C2.OLD_ATTRIBUTE10 IS NULL AND C2.NEW_ATTRIBUTE10 IS NOT NULL)
22784         OR (C2.OLD_ATTRIBUTE10 IS NOT NULL AND C2.NEW_ATTRIBUTE10 IS NULL)
22785         OR (C2.OLD_ATTRIBUTE10 <> C2.NEW_ATTRIBUTE10) THEN
22786              x_version_label_tbl(i).ATTRIBUTE10 := C2.NEW_ATTRIBUTE10;
22787         END IF;
22788 
22789 
22790 
22791         IF (C2.OLD_ATTRIBUTE11 IS NULL AND C2.NEW_ATTRIBUTE11 IS NOT NULL)
22792         OR (C2.OLD_ATTRIBUTE11 IS NOT NULL AND C2.NEW_ATTRIBUTE11 IS NULL)
22793         OR (C2.OLD_ATTRIBUTE11 <> C2.NEW_ATTRIBUTE11) THEN
22794              x_version_label_tbl(i).ATTRIBUTE11 := C2.NEW_ATTRIBUTE11;
22795         END IF;
22796 
22797         IF (C2.OLD_ATTRIBUTE12 IS NULL AND C2.NEW_ATTRIBUTE12 IS NOT NULL)
22798         OR (C2.OLD_ATTRIBUTE12 IS NOT NULL AND C2.NEW_ATTRIBUTE12 IS NULL)
22799         OR (C2.OLD_ATTRIBUTE12 <> C2.NEW_ATTRIBUTE12) THEN
22800              x_version_label_tbl(i).ATTRIBUTE12 := C2.NEW_ATTRIBUTE12;
22801         END IF;
22802 
22803 
22804         IF (C2.OLD_ATTRIBUTE13 IS NULL AND C2.NEW_ATTRIBUTE13 IS NOT NULL)
22805         OR (C2.OLD_ATTRIBUTE13 IS NOT NULL AND C2.NEW_ATTRIBUTE13 IS NULL)
22806         OR (C2.OLD_ATTRIBUTE13 <> C2.NEW_ATTRIBUTE13) THEN
22807              x_version_label_tbl(i).ATTRIBUTE13 := C2.NEW_ATTRIBUTE13;
22808         END IF;
22809 
22810 
22811         IF (C2.OLD_ATTRIBUTE14 IS NULL AND C2.NEW_ATTRIBUTE14 IS NOT NULL)
22812         OR (C2.OLD_ATTRIBUTE14 IS NOT NULL AND C2.NEW_ATTRIBUTE14 IS NULL)
22813         OR (C2.OLD_ATTRIBUTE14 <> C2.NEW_ATTRIBUTE14) THEN
22814              x_version_label_tbl(i).ATTRIBUTE14 := C2.NEW_ATTRIBUTE14;
22815         END IF;
22816 
22817         IF (C2.OLD_ATTRIBUTE15 IS NULL AND C2.NEW_ATTRIBUTE15 IS NOT NULL)
22818         OR (C2.OLD_ATTRIBUTE15 IS NOT NULL AND C2.NEW_ATTRIBUTE15 IS NULL)
22819         OR (C2.OLD_ATTRIBUTE15 <> C2.NEW_ATTRIBUTE15) THEN
22820              x_version_label_tbl(i).ATTRIBUTE15 := C2.NEW_ATTRIBUTE15;
22821         END IF;
22822 
22823 
22824   END LOOP;
22825  END LOOP;
22826 EXCEPTION
22827    WHEN NO_DATA_FOUND THEN
22828      NULL;
22829 END Construct_ver_from_hist;
22830 
22831 
22832 /*--------------------------------------------------------*/
22833 /* Procedure name:  Get_Ver_Column_Values                 */
22834 /* Description : This procudure gets the column values    */
22835 /*                        for the Dynamic SQL             */
22836 /*--------------------------------------------------------*/
22837 
22838 PROCEDURE Get_Ver_Column_Values
22839 (
22840     p_get_ver_cursor_id    IN   NUMBER      ,
22841     x_ver_label_query_rec  OUT   NOCOPY csi_datastructures_pub.version_label_rec
22842     ) IS
22843 BEGIN
22844 
22845  dbms_sql.column_value(p_get_ver_cursor_id, 1, x_ver_label_query_rec.version_label_id);
22846  dbms_sql.column_value(p_get_ver_cursor_id, 2, x_ver_label_query_rec.instance_id);
22847  dbms_sql.column_value(p_get_ver_cursor_id, 3, x_ver_label_query_rec.version_label);
22848  dbms_sql.column_value(p_get_ver_cursor_id, 4, x_ver_label_query_rec.date_time_stamp);
22849  dbms_sql.column_value(p_get_ver_cursor_id, 5, x_ver_label_query_rec.description );
22850  dbms_sql.column_value(p_get_ver_cursor_id, 6, x_ver_label_query_rec.active_start_date);
22851  dbms_sql.column_value(p_get_ver_cursor_id, 7, x_ver_label_query_rec.active_end_date);
22852  dbms_sql.column_value(p_get_ver_cursor_id, 8, x_ver_label_query_rec.context);
22853  dbms_sql.column_value(p_get_ver_cursor_id, 9, x_ver_label_query_rec.attribute1);
22854  dbms_sql.column_value(p_get_ver_cursor_id, 10, x_ver_label_query_rec.attribute2);
22855  dbms_sql.column_value(p_get_ver_cursor_id, 11, x_ver_label_query_rec.attribute3);
22856  dbms_sql.column_value(p_get_ver_cursor_id, 12, x_ver_label_query_rec.attribute4);
22857  dbms_sql.column_value(p_get_ver_cursor_id, 13, x_ver_label_query_rec.attribute5);
22858  dbms_sql.column_value(p_get_ver_cursor_id, 14, x_ver_label_query_rec.attribute6);
22859  dbms_sql.column_value(p_get_ver_cursor_id, 15, x_ver_label_query_rec.attribute7);
22860  dbms_sql.column_value(p_get_ver_cursor_id, 16, x_ver_label_query_rec.attribute8);
22861  dbms_sql.column_value(p_get_ver_cursor_id, 17, x_ver_label_query_rec.attribute9);
22862  dbms_sql.column_value(p_get_ver_cursor_id, 18, x_ver_label_query_rec.attribute10);
22863  dbms_sql.column_value(p_get_ver_cursor_id, 19, x_ver_label_query_rec.attribute11);
22864  dbms_sql.column_value(p_get_ver_cursor_id, 20, x_ver_label_query_rec.attribute12);
22865  dbms_sql.column_value(p_get_ver_cursor_id, 21, x_ver_label_query_rec.attribute13);
22866  dbms_sql.column_value(p_get_ver_cursor_id, 22, x_ver_label_query_rec.attribute14);
22867  dbms_sql.column_value(p_get_ver_cursor_id, 23, x_ver_label_query_rec.attribute15);
22868  dbms_sql.column_value(p_get_ver_cursor_id, 29, x_ver_label_query_rec.object_version_number);
22869 
22870 END Get_Ver_Column_Values;
22871 
22872 
22873 /*----------------------------------------------------------*/
22874 /* Procedure name:  Define_Ver_Columns                      */
22875 /* Description : This procudure defines the columns         */
22876 /*                        for the Dynamic SQL               */
22877 /*----------------------------------------------------------*/
22878 
22879 PROCEDURE Define_Ver_Columns
22880 (
22881     p_get_ver_cursor_id      IN   NUMBER
22882     ) IS
22883 
22884   l_ver_label_rec   csi_datastructures_pub.version_label_rec;
22885 
22886 BEGIN
22887 
22888  dbms_sql.define_column(p_get_ver_cursor_id, 1, l_ver_label_rec.version_label_id);
22889  dbms_sql.define_column(p_get_ver_cursor_id, 2, l_ver_label_rec.instance_id);
22890  dbms_sql.define_column(p_get_ver_cursor_id, 3, l_ver_label_rec.version_label,30);
22891  dbms_sql.define_column(p_get_ver_cursor_id, 4, l_ver_label_rec.date_time_stamp);
22892  dbms_sql.define_column(p_get_ver_cursor_id, 5, l_ver_label_rec.description ,30);
22893  dbms_sql.define_column(p_get_ver_cursor_id, 6, l_ver_label_rec.active_start_date);
22894  dbms_sql.define_column(p_get_ver_cursor_id, 7, l_ver_label_rec.active_end_date);
22895  dbms_sql.define_column(p_get_ver_cursor_id, 8, l_ver_label_rec.context,30);
22896  dbms_sql.define_column(p_get_ver_cursor_id, 9, l_ver_label_rec.attribute1,150);
22897  dbms_sql.define_column(p_get_ver_cursor_id, 10, l_ver_label_rec.attribute2,150);
22898  dbms_sql.define_column(p_get_ver_cursor_id, 11, l_ver_label_rec.attribute3,150);
22899  dbms_sql.define_column(p_get_ver_cursor_id, 12, l_ver_label_rec.attribute4,150);
22900  dbms_sql.define_column(p_get_ver_cursor_id, 13, l_ver_label_rec.attribute5,150);
22901  dbms_sql.define_column(p_get_ver_cursor_id, 14, l_ver_label_rec.attribute6,150);
22902  dbms_sql.define_column(p_get_ver_cursor_id, 15, l_ver_label_rec.attribute7,150);
22903  dbms_sql.define_column(p_get_ver_cursor_id, 16, l_ver_label_rec.attribute8,150);
22904  dbms_sql.define_column(p_get_ver_cursor_id, 17, l_ver_label_rec.attribute9,150);
22905  dbms_sql.define_column(p_get_ver_cursor_id, 18, l_ver_label_rec.attribute10,150);
22906  dbms_sql.define_column(p_get_ver_cursor_id, 19, l_ver_label_rec.attribute11,150);
22907  dbms_sql.define_column(p_get_ver_cursor_id, 20, l_ver_label_rec.attribute12,150);
22908  dbms_sql.define_column(p_get_ver_cursor_id, 21, l_ver_label_rec.attribute13,150);
22909  dbms_sql.define_column(p_get_ver_cursor_id, 22, l_ver_label_rec.attribute14,150);
22910  dbms_sql.define_column(p_get_ver_cursor_id, 23, l_ver_label_rec.attribute15,150);
22911  dbms_sql.define_column(p_get_ver_cursor_id, 29, l_ver_label_rec.object_version_number);
22912 
22913 END Define_Ver_Columns;
22914 
22915 /*----------------------------------------------------------*/
22916 /* Procedure name:  Bind_Ver_variable                       */
22917 /* Description : Procedure used to  generate the where      */
22918 /*                cluase  for Party relationship            */
22919 /*----------------------------------------------------------*/
22920 PROCEDURE Bind_Ver_variable
22921 (
22922     p_ver_label_query_rec  IN    csi_datastructures_pub.version_label_query_rec,
22923     p_get_ver_cursor_id    IN    NUMBER
22924     ) IS
22925 
22926 BEGIN
22927  IF( (p_ver_label_query_rec.version_label_id IS NOT NULL)
22928                   AND (p_ver_label_query_rec.version_label_id <> FND_API.G_MISS_NUM))  THEN
22929     DBMS_SQL.BIND_VARIABLE(p_get_ver_cursor_id, ':version_label_id', p_ver_label_query_rec.version_label_id);
22930  END IF;
22931 
22932  IF( (p_ver_label_query_rec.instance_id IS NOT NULL)
22933                   AND (p_ver_label_query_rec.instance_id <> FND_API.G_MISS_NUM))  THEN
22934     DBMS_SQL.BIND_VARIABLE(p_get_ver_cursor_id, ':instance_id', p_ver_label_query_rec.instance_id);
22935  END IF;
22936 
22937  IF( (p_ver_label_query_rec.version_label IS NOT NULL)
22938                   AND (p_ver_label_query_rec.version_label <> FND_API.G_MISS_CHAR))  THEN
22939     DBMS_SQL.BIND_VARIABLE(p_get_ver_cursor_id, ':version_label', p_ver_label_query_rec.version_label);
22940  END IF;
22941 
22942  IF( (p_ver_label_query_rec.date_time_stamp IS NOT NULL)
22943                   AND (p_ver_label_query_rec.date_time_stamp <> FND_API.G_MISS_DATE))  THEN
22944     DBMS_SQL.BIND_VARIABLE(p_get_ver_cursor_id, ':date_time_stamp', p_ver_label_query_rec.date_time_stamp);
22945  END IF;
22946 
22947 END Bind_Ver_variable;
22948 
22949 
22950 /*----------------------------------------------------------*/
22951 /* Procedure name:  Gen_Acct_Where_Clause                   */
22952 /* Description : Procedure used to  generate the where      */
22953 /*                cluase  for Party relationship            */
22954 /*----------------------------------------------------------*/
22955 
22956 PROCEDURE Gen_Ver_Where_Clause
22957 (   p_ver_label_query_rec      IN    csi_datastructures_pub.version_label_query_rec
22958    ,x_where_clause             OUT   NOCOPY VARCHAR2
22959    ) IS
22960 
22961 BEGIN
22962  -- Assign null at the start
22963  x_where_clause := '';
22964 
22965 IF (( p_ver_label_query_rec.version_label_id  IS NOT NULL)  AND
22966              ( p_ver_label_query_rec.version_label_id  <> FND_API.G_MISS_NUM)) THEN
22967      x_where_clause := ' version_label_id = :version_label_id ';
22968 ELSIF ( p_ver_label_query_rec.version_label_id  IS NULL) THEN
22969      x_where_clause := ' version_label_id IS NULL ';
22970 END IF;
22971 
22972 IF ((p_ver_label_query_rec.instance_id IS NOT NULL)  AND
22973             (p_ver_label_query_rec.instance_id <> FND_API.G_MISS_NUM))   THEN
22974         IF x_where_clause IS NULL THEN
22975             x_where_clause := ' instance_id = :instance_id ';
22976         ELSE
22977             x_where_clause := x_where_clause||' AND '||' instance_id = :instance_id ';
22978         END IF;
22979 ELSIF (p_ver_label_query_rec.instance_id IS NULL) THEN
22980         IF x_where_clause IS NULL THEN
22981             x_where_clause := ' instance_id IS NULL ';
22982         ELSE
22983             x_where_clause := x_where_clause||' AND '||' instance_id IS NULL ';
22984         END IF;
22985 END IF;
22986 
22987 IF ((p_ver_label_query_rec.version_label  IS NOT NULL)   AND
22988          (p_ver_label_query_rec.version_label  <> FND_API.G_MISS_CHAR)) THEN
22989         IF x_where_clause IS NULL THEN
22990             x_where_clause := ' version_label = :version_label ';
22991         ELSE
22992             x_where_clause := x_where_clause||' AND '||' version_label = :version_label ';
22993         END IF;
22994 ELSIF (p_ver_label_query_rec.version_label  IS NULL) THEN
22995         IF x_where_clause IS NULL THEN
22996             x_where_clause := ' version_label IS NULL ';
22997         ELSE
22998             x_where_clause := x_where_clause||' AND '||' version_label IS NULL ';
22999         END IF;
23000 END IF ;
23001 
23002 IF  ((p_ver_label_query_rec.date_time_stamp IS NOT NULL) AND
23003         (p_ver_label_query_rec.date_time_stamp <> FND_API.G_MISS_DATE)) THEN
23004         IF x_where_clause IS NULL THEN
23005             x_where_clause := '  date_time_stamp = :date_time_stamp ';
23006         ELSE
23007             x_where_clause := x_where_clause||' AND '||
23008                    '  date_time_stamp = :date_time_stamp ';
23009         END IF;
23010 ELSIF (p_ver_label_query_rec.date_time_stamp IS  NULL) THEN
23011         IF x_where_clause IS NULL THEN
23012             x_where_clause := '  date_time_stamp IS NULL ';
23013         ELSE
23014             x_where_clause := x_where_clause||' AND '||
23015                    '  date_time_stamp IS NULL ';
23016         END IF;
23017 
23018 
23019 END IF;
23020 
23021 END Gen_Ver_Where_Clause;
23022 
23023 
23024 /*-------------------------------------------*/
23025 /* Pocedure name: Create_version_label       */
23026 /* Description :   procedure for creating    */
23027 /*                 version label for         */
23028 /*                 an Item Instance          */
23029 /*-------------------------------------------*/
23030 
23031 PROCEDURE create_version_label
23032  (    p_api_version         IN  NUMBER
23033      ,p_commit              IN  VARCHAR2
23034      ,p_init_msg_list       IN  VARCHAR2
23035      ,p_validation_level    IN  NUMBER
23036      ,p_version_label_rec   IN OUT NOCOPY csi_datastructures_pub.version_label_rec
23037      ,p_txn_rec             IN OUT NOCOPY csi_datastructures_pub.transaction_rec
23038      ,x_return_status       OUT NOCOPY VARCHAR2
23039      ,x_msg_count           OUT NOCOPY NUMBER
23040      ,x_msg_data            OUT NOCOPY VARCHAR2
23041    ) IS
23042 
23043      l_api_name           CONSTANT VARCHAR2(30)   := 'CREATE_VERSION_LABEL';
23044      l_api_version       CONSTANT NUMBER           := 1.0                   ;
23045      l_debug_level            NUMBER                             ;
23046      l_process_flag           BOOLEAN        := TRUE                  ;
23047      l_msg_index              NUMBER                                  ;
23048      l_version_label_rec      csi_datastructures_pub.version_label_rec;
23049      l_version_label_hist_id  NUMBER                                  ;
23050      l_flag                   VARCHAR2(1)  :='N';
23051 
23052 BEGIN
23053       -- Standard Start of API savepoint
23054         SAVEPOINT  create_version_label_pvt;
23055 
23056         -- Standard call to check for call compatibility.
23057       IF NOT FND_API.Compatible_API_Call (l_api_version           ,
23058                                                            p_api_version           ,
23059                                                      l_api_name                 ,
23060                                                     G_PKG_NAME                 )
23061       THEN
23062             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
23063       END IF;
23064 
23065     -- Initialize message list if p_init_msg_list is set to TRUE.
23066       IF FND_API.to_Boolean( p_init_msg_list ) THEN
23067             FND_MSG_PUB.initialize;
23068       END IF;
23069 
23070       --  Initialize API return status to success
23071       x_return_status := FND_API.G_RET_STS_SUCCESS;
23072 
23073     -- Check the profile option debug_level for debug message reporting
23074     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
23075 
23076     -- If debug_level = 1 then dump the procedure name
23077     IF (l_debug_level > 0) THEN
23078            csi_gen_utility_pvt.put_line ( 'create_version_label');
23079     END IF;
23080 
23081     -- If the debug level = 2 then dump all the parameters values.
23082     IF (l_debug_level > 1) THEN
23083              csi_gen_utility_pvt.put_line ( 'create_version_label:'||
23084                                                    p_api_version           ||'-'||
23085                                                   p_commit                ||'-'||
23086                                                    p_init_msg_list                );
23087        -- Dump the records in the log file
23088        csi_gen_utility_pvt.dump_version_label_rec(p_version_label_rec);
23089     END IF;
23090 
23091     -- Start API body
23092       --
23093     -- Check if all the required parameters are passed
23094            CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
23095              (    p_version_label_rec.INSTANCE_ID ,
23096                 '  p_version_label_rec.INSTANCE_ID ',
23097                    l_api_name           );
23098 
23099            CSI_Instance_parties_vld_pvt.Check_Reqd_Param_char
23100              (    p_version_label_rec.version_label  ,
23101                 '  p_version_label_rec.version_label ',
23102                    l_api_name           );
23103 
23104            CSI_Instance_parties_vld_pvt.Check_Reqd_Param_date
23105              (    p_version_label_rec.date_time_stamp ,
23106                 '  p_version_label_rec.date_time_stamp ',
23107                    l_api_name           );
23108         -- Validate the Instance id exists in csi_item_instances
23109         IF NOT( CSI_Instance_parties_vld_pvt.Is_InstanceID_Valid
23110                                      (p_version_label_rec.INSTANCE_ID)) THEN
23111              RAISE FND_API.G_EXC_ERROR;
23112         END IF;
23113         -- If active_start_date is null or G_MISS value then assign sysdate
23114         IF ((p_version_label_rec.ACTIVE_START_DATE IS NULL ) OR
23115            ( p_version_label_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE)) THEN
23116              p_version_label_rec.ACTIVE_START_DATE := SYSDATE;
23117         END IF;
23118         -- verify if the active_start_date is valid
23119         IF NOT(CSI_Item_Instance_Vld_Pvt.Is_Ver_StartDate_Valid
23120                                          (p_version_label_rec.ACTIVE_START_DATE,
23121                                           p_version_label_rec.ACTIVE_END_DATE ,
23122                                           p_version_label_rec.INSTANCE_ID  )) THEN
23123             RAISE FND_API.G_EXC_ERROR;
23124         END IF;
23125         -- Verify if the active_end_date is valid
23126         IF ((p_version_label_rec.ACTIVE_END_DATE is NOT NULL) AND
23127             (p_version_label_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE ))  THEN
23128              IF NOT(CSI_Item_Instance_vld_pvt.Is_Ver_EndDate_Valid
23129                                  (p_version_label_rec.ACTIVE_START_DATE,
23130                                   p_version_label_rec.ACTIVE_END_DATE ,
23131                                   p_version_label_rec.INSTANCE_ID  ))  THEN
23132                 RAISE FND_API.G_EXC_ERROR;
23133              END IF;
23134         END IF;
23135 
23136         -- Initialize the datetimestamp to SYSDATE if it is null
23137         IF ((p_version_label_rec.date_time_stamp IS NULL ) OR
23138            ( p_version_label_rec.date_time_stamp = FND_API.G_MISS_DATE)) THEN
23139              p_version_label_rec.date_time_stamp := SYSDATE;
23140         END IF;
23141 
23142         -- Verify the timestamp is less than the end effective date but greater then
23143         -- the start effective date
23144         IF p_version_label_rec.date_time_stamp is NOT NULL THEN
23145              IF NOT(CSI_Instance_parties_vld_pvt.Is_timestamp_Valid
23146                                  (p_version_label_rec.date_time_stamp,
23147                                   p_version_label_rec.INSTANCE_ID  ))  THEN
23148                 RAISE FND_API.G_EXC_ERROR;
23149              END IF;
23150         END IF;
23151 
23152 
23153         IF  p_version_label_rec.VERSION_LABEL_ID is  NULL THEN
23154 
23155            -- If the vesrion label id passed is null then generate from sequence
23156            -- and check if the value exists . If exists then generate
23157            -- again from the sequence till we get a value that does not exist
23158            while l_process_flag loop
23159             p_version_label_rec.VERSION_LABEL_ID := CSI_Instance_parties_vld_pvt.gen_ver_label_id;
23160             IF NOT(CSI_Instance_parties_vld_pvt.Is_Ver_labelID_exists(p_version_label_rec.VERSION_LABEL_ID,
23161                                                                        FALSE                   )) THEN
23162                 l_process_flag := FALSE;
23163             END IF;
23164            end loop;
23165          ELSE
23166             -- Validate the version label id if exist then raise CSI_API_INVALID_PRIMARY_KEY error
23167             IF CSI_Instance_parties_vld_pvt.Is_Ver_labelID_exists(p_version_label_rec.VERSION_LABEL_ID,
23168                                                                   TRUE                        ) THEN
23169                 RAISE FND_API.G_EXC_ERROR;
23170             END IF;
23171         END IF;
23172         -- call the Table handlers to insert the record
23173         CSI_I_VERSION_LABELS_PKG.Insert_Row(
23174           p_VERSION_LABEL_ID  =>  p_version_label_rec.VERSION_LABEL_ID,
23175           p_INSTANCE_ID       =>  p_version_label_rec.instance_id ,
23176           p_VERSION_LABEL     =>  p_version_label_rec.version_label,
23177           p_DATE_TIME_STAMP   =>  p_version_label_rec.date_time_stamp,
23178           p_DESCRIPTION       =>  p_version_label_rec.description,
23179           p_ACTIVE_START_DATE =>  p_version_label_rec.active_start_date,
23180           p_ACTIVE_END_DATE   =>  p_version_label_rec.active_end_date,
23181           p_CONTEXT           =>  p_version_label_rec.context,
23182           p_ATTRIBUTE1        =>  p_version_label_rec.attribute1,
23183           p_ATTRIBUTE2        =>  p_version_label_rec.attribute2,
23184           p_ATTRIBUTE3        =>  p_version_label_rec.attribute3,
23185           p_ATTRIBUTE4        =>  p_version_label_rec.attribute4,
23186           p_ATTRIBUTE5        =>  p_version_label_rec.attribute5,
23187           p_ATTRIBUTE6        =>  p_version_label_rec.attribute6,
23188           p_ATTRIBUTE7        =>  p_version_label_rec.attribute7,
23189           p_ATTRIBUTE8        =>  p_version_label_rec.attribute8,
23190           p_ATTRIBUTE9        =>  p_version_label_rec.attribute9,
23191           p_ATTRIBUTE10       =>  p_version_label_rec.attribute10,
23192           p_ATTRIBUTE11       =>  p_version_label_rec.attribute11,
23193           p_ATTRIBUTE12       =>  p_version_label_rec.attribute12,
23194           p_ATTRIBUTE13       =>  p_version_label_rec.attribute13,
23195           p_ATTRIBUTE14       =>  p_version_label_rec.attribute14,
23196           p_ATTRIBUTE15       =>  p_version_label_rec.attribute15,
23197           p_CREATED_BY        =>  FND_GLOBAL.USER_ID             ,
23198           p_CREATION_DATE     =>   SYSDATE                       ,
23199           p_LAST_UPDATED_BY   =>  FND_GLOBAL.USER_ID             ,
23200           p_LAST_UPDATE_DATE  =>  SYSDATE                        ,
23201           p_LAST_UPDATE_LOGIN =>  FND_GLOBAL.LOGIN_ID            ,
23202           p_OBJECT_VERSION_NUMBER =>  1                          );
23203 
23204 
23205         -- Call create_transaction to create txn log
23206         CSI_TRANSACTIONS_PVT.Create_transaction
23207           (
23208              p_api_version            => p_api_version
23209             ,p_commit                 => p_commit
23210             ,p_init_msg_list          => p_init_msg_list
23211             ,p_validation_level       => p_validation_level
23212             ,p_Success_If_Exists_Flag => 'Y'
23213             ,P_transaction_rec        => p_txn_rec
23214             ,x_return_status          => x_return_status
23215             ,x_msg_count              => x_msg_count
23216             ,x_msg_data               => x_msg_data      );
23217 
23218          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
23219                 l_msg_index := 1;
23220                 WHILE x_msg_count > 0 LOOP
23221                         x_msg_data := FND_MSG_PUB.GET(
23222                                                     l_msg_index,
23223                                                     FND_API.G_FALSE      );
23224                       CSI_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
23225                        l_msg_index := l_msg_index + 1;
23226                        x_msg_count := x_msg_count - 1;
23227                 END LOOP;
23228                 RAISE FND_API.G_EXC_ERROR;
23229          END IF;
23230 
23231        -- Generate a unique instance_party_history_id from the sequence
23232        l_version_label_hist_id   := CSI_Instance_parties_vld_pvt.gen_ver_label_hist_id;
23233 
23234        -- Call the table handlers to insert into history table
23235 
23236        CSI_I_VERSION_LABELS_H_PKG.Insert_Row
23237        (
23238           px_VERSION_LABEL_HISTORY_ID   => l_version_label_hist_id                 ,
23239           p_VERSION_LABEL_ID            => p_version_label_rec.VERSION_LABEL_ID    ,
23240           p_TRANSACTION_ID              => p_txn_rec.TRANSACTION_ID                ,
23241           p_OLD_VERSION_LABEL           => NULL                                    ,
23242           p_NEW_VERSION_LABEL           => p_version_label_rec.VERSION_LABEL       ,
23243           p_OLD_DESCRIPTION             => NULL                                    ,
23244           p_NEW_DESCRIPTION             => p_version_label_rec.DESCRIPTION         ,
23245           p_OLD_DATE_TIME_STAMP         => NULL                                    ,
23246           p_NEW_DATE_TIME_STAMP         => p_version_label_rec.DATE_TIME_STAMP     ,
23247           p_OLD_ACTIVE_START_DATE       => NULL                                    ,
23248           p_NEW_ACTIVE_START_DATE       => p_version_label_rec.ACTIVE_START_DATE   ,
23249           p_OLD_ACTIVE_END_DATE         => NULL                                    ,
23250           p_NEW_ACTIVE_END_DATE         => p_version_label_rec.ACTIVE_END_DATE     ,
23251           p_OLD_CONTEXT                 => NULL                           ,
23252           p_NEW_CONTEXT                 => p_version_label_rec.CONTEXT    ,
23253           p_OLD_ATTRIBUTE1              => NULL                           ,
23254           p_NEW_ATTRIBUTE1              => p_version_label_rec.ATTRIBUTE1 ,
23255           p_OLD_ATTRIBUTE2              => NULL                           ,
23256           p_NEW_ATTRIBUTE2              => p_version_label_rec.ATTRIBUTE2 ,
23257           p_OLD_ATTRIBUTE3              => NULL                           ,
23258           p_NEW_ATTRIBUTE3              => p_version_label_rec.ATTRIBUTE3 ,
23259           p_OLD_ATTRIBUTE4              => NULL                           ,
23260           p_NEW_ATTRIBUTE4              => p_version_label_rec.ATTRIBUTE4 ,
23261           p_OLD_ATTRIBUTE5              => NULL                           ,
23262           p_NEW_ATTRIBUTE5              => p_version_label_rec.ATTRIBUTE5 ,
23263           p_OLD_ATTRIBUTE6              => NULL                           ,
23264           p_NEW_ATTRIBUTE6              => p_version_label_rec.ATTRIBUTE6 ,
23265           p_OLD_ATTRIBUTE7              => NULL                           ,
23266           p_NEW_ATTRIBUTE7              => p_version_label_rec.ATTRIBUTE7 ,
23267           p_OLD_ATTRIBUTE8              => NULL                           ,
23268           p_NEW_ATTRIBUTE8              => p_version_label_rec.ATTRIBUTE8 ,
23269           p_OLD_ATTRIBUTE9              => NULL                           ,
23270           p_NEW_ATTRIBUTE9              => p_version_label_rec.ATTRIBUTE9 ,
23271           p_OLD_ATTRIBUTE10             => NULL                           ,
23272           p_NEW_ATTRIBUTE10             => p_version_label_rec.ATTRIBUTE10,
23273           p_OLD_ATTRIBUTE11             => NULL                           ,
23274           p_NEW_ATTRIBUTE11             => p_version_label_rec.ATTRIBUTE11,
23275           p_OLD_ATTRIBUTE12             => NULL                           ,
23276           p_NEW_ATTRIBUTE12             => p_version_label_rec.ATTRIBUTE12,
23277           p_OLD_ATTRIBUTE13             => NULL                           ,
23278           p_NEW_ATTRIBUTE13             => p_version_label_rec.ATTRIBUTE13,
23279           p_OLD_ATTRIBUTE14             => NULL                           ,
23280           p_NEW_ATTRIBUTE14             => p_version_label_rec.ATTRIBUTE14,
23281           p_OLD_ATTRIBUTE15             => NULL                           ,
23282           p_NEW_ATTRIBUTE15             => p_version_label_rec.ATTRIBUTE15,
23283           p_FULL_DUMP_FLAG              => 'N'                            ,
23284           p_CREATED_BY                  => FND_GLOBAL.USER_ID             ,
23285           p_CREATION_DATE               => SYSDATE                        ,
23286           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID             ,
23287           p_LAST_UPDATE_DATE            => SYSDATE                        ,
23288           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID            ,
23289           p_OBJECT_VERSION_NUMBER       => 1                              );
23290 
23291 
23292       --
23293       -- End of API body
23294 
23295     -- Standard check of p_commit.
23296 
23297       IF FND_API.To_Boolean( p_commit ) THEN
23298             COMMIT WORK;
23299       END IF;
23300 
23301       -- Standard call to get message count and if count is  get message info.
23302       FND_MSG_PUB.Count_And_Get
23303             (p_count       =>       x_msg_count ,
23304             p_data       =>       x_msg_data      );
23305 
23306 EXCEPTION
23307     WHEN FND_API.G_EXC_ERROR THEN
23308         ROLLBACK TO create_version_label_pvt;
23309             x_return_status := FND_API.G_RET_STS_ERROR ;
23310                         FND_MSG_PUB.Count_And_Get
23311                 (        p_count       =>      x_msg_count,
23312                     p_data        =>      x_msg_data);
23313       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
23314             ROLLBACK TO create_version_label_pvt;
23315             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
23316             FND_MSG_PUB.Count_And_Get
23317                 (        p_count       =>      x_msg_count,
23318                     p_data         =>      x_msg_data);
23319       WHEN OTHERS THEN
23320             ROLLBACK TO create_version_label_pvt;
23321             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
23322               IF FND_MSG_PUB.Check_Msg_Level
23323                  (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
23324             THEN
23325                          FND_MSG_PUB.Add_Exc_Msg
23326                     ( G_PKG_NAME, l_api_name );
23327             END IF;
23328             FND_MSG_PUB.Count_And_Get
23329                 (        p_count       =>      x_msg_count,
23330                     p_data         =>      x_msg_data);
23331 END create_version_label;
23332 
23333 
23334 /*-------------------------------------------------------*/
23335 /* Procedure name: Update_version_label                  */
23336 /* Description :   procedure for Update                  */
23337 /*                 version label for                     */
23338 /*                 an Item Instance                      */
23339 /*-------------------------------------------------------*/
23340 
23341 PROCEDURE update_version_label
23342  (    p_api_version                 IN  NUMBER
23343      ,p_commit                      IN  VARCHAR2
23344      ,p_init_msg_list               IN  VARCHAR2
23345      ,p_validation_level            IN  NUMBER
23346      ,p_version_label_rec           IN  csi_datastructures_pub.version_label_rec
23347      ,p_txn_rec                     IN OUT NOCOPY csi_datastructures_pub.transaction_rec
23348      ,p_call_transaction            IN  VARCHAR2
23349      ,x_return_status               OUT NOCOPY VARCHAR2
23350      ,x_msg_count                   OUT NOCOPY NUMBER
23351      ,x_msg_data                    OUT NOCOPY VARCHAR2
23352    ) IS
23353 
23354    l_api_name                    CONSTANT VARCHAR2(30)   := 'UPDATE_VERSION_LABEL';
23355    l_api_version                CONSTANT NUMBER            := 1.0;
23356    l_debug_level                   NUMBER;
23357    l_version_label_rec        csi_datastructures_pub.version_label_rec;
23358    l_curr_ver_label_rec       csi_datastructures_pub.version_label_rec;
23359    l_temp_ver_label_rec       csi_datastructures_pub.version_label_rec;
23360    l_msg_index                NUMBER;
23361    l_OBJECT_VERSION_NUMBER    NUMBER;
23362    l_mod_value                NUMBER;
23363    l_version_label_hist_id    NUMBER;
23364    x_msg_index_out            NUMBER;
23365    l_full_dump_frequency      NUMBER;
23366    l_flag                     VARCHAR2(1)  :='N';
23367    l_ver_label_hist_rec       csi_datastructures_pub.version_label_history_rec;
23368 
23369   CURSOR get_curr_ver_label_rec (p_ver_label_id   IN  NUMBER) IS
23370    SELECT
23371      VERSION_LABEL_ID                 ,
23372      INSTANCE_ID                      ,
23373      VERSION_LABEL                    ,
23374      DESCRIPTION                      ,
23375      DATE_TIME_STAMP                  ,
23376      active_start_date                ,
23377      active_end_date                  ,
23378      context                          ,
23379      attribute1                       ,
23380      attribute2                       ,
23381      attribute3                       ,
23382      attribute4                       ,
23383      attribute5                       ,
23384      attribute6                       ,
23385      attribute7                       ,
23386      attribute8                       ,
23387      attribute9                       ,
23388      attribute10                      ,
23389      attribute11                      ,
23390      attribute12                      ,
23391      attribute13                      ,
23392      attribute14                      ,
23393      attribute15                      ,
23394      object_version_number          -- ,
23395     -- null parent_tbl_index                 ,
23396     -- null processed_flag                   ,
23397     -- null interface_id
23398     FROM CSI_I_VERSION_LABELS
23399    WHERE VERSION_LABEL_ID = p_ver_label_id
23400     AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE))
23401     FOR UPDATE OF OBJECT_VERSION_NUMBER ;
23402 
23403   CURSOR version_hist_csr (p_version_hist_id NUMBER) IS
23404    SELECT  *
23405    FROM    csi_i_version_labels_h
23406    WHERE   csi_i_version_labels_h.version_label_history_id = p_version_hist_id
23407    FOR UPDATE OF OBJECT_VERSION_NUMBER ;
23408    l_version_hist_csr    version_hist_csr%ROWTYPE;
23409    l_version_hist_id     NUMBER;
23410 BEGIN
23411 
23412       -- Standard Start of API savepoint
23413          SAVEPOINT  update_version_label_pvt;
23414 
23415         -- Standard call to check for call compatibility.
23416       IF NOT FND_API.Compatible_API_Call (l_api_version     ,
23417                                                          p_api_version     ,
23418                                                    l_api_name             ,
23419                                                     G_PKG_NAME             )
23420       THEN
23421             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
23422       END IF;
23423 
23424     -- Initialize message list if p_init_msg_list is set to TRUE.
23425       IF FND_API.to_Boolean( p_init_msg_list ) THEN
23426             FND_MSG_PUB.initialize;
23427       END IF;
23428 
23429       --  Initialize API return status to success
23430       x_return_status := FND_API.G_RET_STS_SUCCESS;
23431 
23432     -- Check the profile option debug_level for debug message reporting
23433     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
23434 
23435     -- If debug_level = 1 then dump the procedure name
23436     IF (l_debug_level > 0) THEN
23437             CSI_gen_utility_pvt.put_line( 'update_version_label');
23438     END IF;
23439 
23440     -- If the debug level = 2 then dump all the parameters values.
23441     IF (l_debug_level > 1) THEN
23442              CSI_gen_utility_pvt.put_line( 'update_version_label:'||
23443                                                  p_api_version             ||'-'||
23444                                                 p_commit                  ||'-'||
23445                                                  p_init_msg_list           ||'-'||
23446                                  p_validation_level             );
23447     END IF;
23448 
23449     -- Start API body
23450       --
23451     -- Check if all the required parameters are passed
23452         CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
23453             (    p_version_label_rec.version_label_id  ,
23454                 '  p_version_label_rec.version_label_id ',
23455                    l_api_name                           );
23456 
23457      -- Validate the Instance id exists in csi_item_instances
23458      IF  p_version_label_rec.INSTANCE_ID <> FND_API.G_MISS_NUM THEN
23459         IF NOT( CSI_Instance_parties_vld_pvt.Is_InstanceID_Valid
23460                              (p_version_label_rec.INSTANCE_ID)) THEN
23461              RAISE FND_API.G_EXC_ERROR;
23462         END IF;
23463      END IF;
23464 
23465      IF  p_version_label_rec.VERSION_LABEL_ID <> FND_API.G_MISS_NUM THEN
23466 
23467           -- Validate the version label id if exist then raise CSI_API_INVALID_PRIMARY_KEY error
23468           IF NOT(CSI_Instance_parties_vld_pvt.Is_Ver_labelID_exists(p_version_label_rec.VERSION_LABEL_ID,
23469                                                                  FALSE                        )) THEN
23470                 RAISE FND_API.G_EXC_ERROR;
23471           END IF;
23472      END IF;
23473 
23474      -- check if the object_version_number passed matches with the one
23475      -- in the database else raise error
23476      OPEN get_curr_ver_label_rec(p_version_label_rec.VERSION_LABEL_ID);
23477      FETCH get_curr_ver_label_rec INTO l_curr_ver_label_rec;
23478      IF  (l_curr_ver_label_rec.object_version_number <> nvl(p_version_label_rec.OBJECT_VERSION_NUMBER,-1)) THEN
23479             FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
23480             FND_MSG_PUB.ADD;
23481             RAISE FND_API.G_EXC_ERROR;
23482      END IF;
23483      IF get_curr_ver_label_rec%NOTFOUND THEN
23484         FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
23485         FND_MSG_PUB.ADD;
23486         RAISE FND_API.G_EXC_ERROR;
23487      END IF;
23488      CLOSE get_curr_ver_label_rec;
23489 
23490      -- Increment the object_version_number before updating
23491      l_OBJECT_VERSION_NUMBER := l_curr_ver_label_rec.OBJECT_VERSION_NUMBER + 1 ;
23492 
23493      CSI_I_VERSION_LABELS_PKG.Update_Row
23494      (
23495           p_VERSION_LABEL_ID    =>  p_version_label_rec.version_label_id,
23496           p_INSTANCE_ID         =>  p_version_label_rec.instance_id,
23497           p_VERSION_LABEL       =>  p_version_label_rec.VERSION_LABEL,
23498           p_DATE_TIME_STAMP     =>  p_version_label_rec.DATE_TIME_STAMP,
23499           p_DESCRIPTION         =>  p_version_label_rec.DESCRIPTION  ,
23500           p_ACTIVE_START_DATE   =>  p_version_label_rec.ACTIVE_START_DATE,
23501           p_ACTIVE_END_DATE     =>  p_version_label_rec.ACTIVE_END_DATE,
23502           p_CONTEXT             =>  p_version_label_rec.CONTEXT  ,
23503           p_ATTRIBUTE1          =>  p_version_label_rec.ATTRIBUTE1,
23504           p_ATTRIBUTE2          =>  p_version_label_rec.ATTRIBUTE2,
23505           p_ATTRIBUTE3          =>  p_version_label_rec.ATTRIBUTE3,
23506           p_ATTRIBUTE4          =>  p_version_label_rec.ATTRIBUTE4,
23507           p_ATTRIBUTE5          =>  p_version_label_rec.ATTRIBUTE5,
23508           p_ATTRIBUTE6          =>  p_version_label_rec.ATTRIBUTE6,
23509           p_ATTRIBUTE7          =>  p_version_label_rec.ATTRIBUTE7,
23510           p_ATTRIBUTE8          =>  p_version_label_rec.ATTRIBUTE8,
23511           p_ATTRIBUTE9          =>  p_version_label_rec.ATTRIBUTE9,
23512           p_ATTRIBUTE10         =>  p_version_label_rec.ATTRIBUTE10,
23513           p_ATTRIBUTE11         =>  p_version_label_rec.ATTRIBUTE11,
23514           p_ATTRIBUTE12         =>  p_version_label_rec.ATTRIBUTE12,
23515           p_ATTRIBUTE13         =>  p_version_label_rec.ATTRIBUTE13,
23516           p_ATTRIBUTE14         =>  p_version_label_rec.ATTRIBUTE14,
23517           p_ATTRIBUTE15         =>  p_version_label_rec.ATTRIBUTE15,
23518           p_CREATED_BY          =>  fnd_api.g_miss_num ,
23519           p_CREATION_DATE       =>  fnd_api.g_miss_date            ,
23520           p_LAST_UPDATED_BY     =>  FND_GLOBAL.USER_ID ,
23521           p_LAST_UPDATE_DATE    =>  sysdate            ,
23522           p_LAST_UPDATE_LOGIN   =>  FND_GLOBAL.LOGIN_ID,
23523           p_OBJECT_VERSION_NUMBER  =>  l_OBJECT_VERSION_NUMBER );
23524 
23525 
23526          -- Call create_transaction to create txn log
23527        IF p_call_transaction=fnd_api.g_true
23528        THEN
23529          CSI_TRANSACTIONS_PVT.Create_transaction
23530           (
23531              p_api_version            => p_api_version
23532             ,p_commit                 => p_commit
23533             ,p_init_msg_list          => p_init_msg_list
23534             ,p_validation_level       => p_validation_level
23535             ,p_Success_If_Exists_Flag => 'Y'
23536             ,P_transaction_rec        => p_txn_rec
23537             ,x_return_status          => x_return_status
23538             ,x_msg_count              => x_msg_count
23539             ,x_msg_data               => x_msg_data         );
23540 
23541         IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
23542               FOR i in 1..x_msg_Count LOOP
23543                 FND_MSG_PUB.Get(p_msg_index     => i,
23544                                 p_encoded       => 'F',
23545                                 p_data          => x_msg_data,
23546                                 p_msg_index_out => x_msg_index_out );
23547                 CSI_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
23548               End LOOP;
23549               RAISE FND_API.G_EXC_ERROR;
23550          END IF;
23551        END IF;
23552     -- Generate a unique instance_party_history_id from the sequence
23553     l_version_label_hist_id   := CSI_Instance_parties_vld_pvt.gen_ver_label_hist_id;
23554 
23555     -- Get the full_dump_frequency from csi_install_parameter
23556     --
23557     IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
23558        csi_gen_utility_pvt.populate_install_param_rec;
23559     END IF;
23560     --
23561     l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
23562     --
23563     IF l_full_dump_frequency IS NULL THEN
23564        FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
23565        FND_MSG_PUB.ADD;
23566        RAISE FND_API.G_EXC_ERROR;
23567     END IF;
23568     --
23569     select mod(l_object_version_number,l_full_dump_frequency)
23570     into   l_mod_value
23571     from   dual;
23572 
23573      -- Start of modification for Bug#2547034 on 09/20/02 - rtalluri
23574     BEGIN
23575         SELECT  version_label_history_id
23576         INTO    l_version_hist_id
23577         FROM    csi_i_version_labels_h h
23578         WHERE   h.transaction_id = p_txn_rec.transaction_id
23579         AND     h.version_label_id = p_version_label_rec.version_label_id;
23580 
23581         OPEN   version_hist_csr(l_version_hist_id);
23582         FETCH  version_hist_csr INTO l_version_hist_csr ;
23583         CLOSE  version_hist_csr;
23584 
23585         IF l_version_hist_csr.full_dump_flag = 'Y'
23586         THEN
23587          CSI_I_VERSION_LABELS_H_PKG.Update_Row
23588          (
23589           p_VERSION_LABEL_HISTORY_ID    => l_version_hist_id                       ,
23590           p_VERSION_LABEL_ID            => fnd_api.g_miss_num                      ,
23591           p_TRANSACTION_ID              => fnd_api.g_miss_num                      ,
23592           p_OLD_VERSION_LABEL           => fnd_api.g_miss_char                     ,
23593           p_NEW_VERSION_LABEL           => p_version_label_rec.VERSION_LABEL       ,
23594           p_OLD_DESCRIPTION             => fnd_api.g_miss_char                     ,
23595           p_NEW_DESCRIPTION             => p_version_label_rec.DESCRIPTION         ,
23596           p_OLD_DATE_TIME_STAMP         => fnd_api.g_miss_date                     ,
23597           p_NEW_DATE_TIME_STAMP         => p_version_label_rec.DATE_TIME_STAMP     ,
23598           p_OLD_ACTIVE_START_DATE       => fnd_api.g_miss_date                     ,
23599           p_NEW_ACTIVE_START_DATE       => p_version_label_rec.ACTIVE_START_DATE   ,
23600           p_OLD_ACTIVE_END_DATE         => fnd_api.g_miss_date                     ,
23601           p_NEW_ACTIVE_END_DATE         => p_version_label_rec.ACTIVE_END_DATE     ,
23602           p_OLD_CONTEXT                 => fnd_api.g_miss_char                     ,
23603           p_NEW_CONTEXT                 => p_version_label_rec.CONTEXT             ,
23604           p_OLD_ATTRIBUTE1              => fnd_api.g_miss_char                     ,
23605           p_NEW_ATTRIBUTE1              => p_version_label_rec.ATTRIBUTE1          ,
23606           p_OLD_ATTRIBUTE2              => fnd_api.g_miss_char                     ,
23607           p_NEW_ATTRIBUTE2              => p_version_label_rec.ATTRIBUTE2          ,
23608           p_OLD_ATTRIBUTE3              => fnd_api.g_miss_char                     ,
23609           p_NEW_ATTRIBUTE3              => p_version_label_rec.ATTRIBUTE3          ,
23610           p_OLD_ATTRIBUTE4              => fnd_api.g_miss_char                     ,
23611           p_NEW_ATTRIBUTE4              => p_version_label_rec.ATTRIBUTE4          ,
23612           p_OLD_ATTRIBUTE5              => fnd_api.g_miss_char                     ,
23613           p_NEW_ATTRIBUTE5              => p_version_label_rec.ATTRIBUTE5          ,
23614           p_OLD_ATTRIBUTE6              => fnd_api.g_miss_char                     ,
23615           p_NEW_ATTRIBUTE6              => p_version_label_rec.ATTRIBUTE6          ,
23616           p_OLD_ATTRIBUTE7              => fnd_api.g_miss_char                     ,
23617           p_NEW_ATTRIBUTE7              => p_version_label_rec.ATTRIBUTE7          ,
23618           p_OLD_ATTRIBUTE8              => fnd_api.g_miss_char                     ,
23619           p_NEW_ATTRIBUTE8              => p_version_label_rec.ATTRIBUTE8          ,
23620           p_OLD_ATTRIBUTE9              => fnd_api.g_miss_char                     ,
23621           p_NEW_ATTRIBUTE9              => p_version_label_rec.ATTRIBUTE9          ,
23622           p_OLD_ATTRIBUTE10             => fnd_api.g_miss_char                     ,
23623           p_NEW_ATTRIBUTE10             => p_version_label_rec.ATTRIBUTE10         ,
23624           p_OLD_ATTRIBUTE11             => fnd_api.g_miss_char                     ,
23625           p_NEW_ATTRIBUTE11             => p_version_label_rec.ATTRIBUTE11         ,
23626           p_OLD_ATTRIBUTE12             => fnd_api.g_miss_char                     ,
23627           p_NEW_ATTRIBUTE12             => p_version_label_rec.ATTRIBUTE12         ,
23628           p_OLD_ATTRIBUTE13             => fnd_api.g_miss_char                     ,
23629           p_NEW_ATTRIBUTE13             => p_version_label_rec.ATTRIBUTE13         ,
23630           p_OLD_ATTRIBUTE14             => fnd_api.g_miss_char                     ,
23631           p_NEW_ATTRIBUTE14             => p_version_label_rec.ATTRIBUTE14         ,
23632           p_OLD_ATTRIBUTE15             => fnd_api.g_miss_char                     ,
23633           p_NEW_ATTRIBUTE15             => p_version_label_rec.ATTRIBUTE15         ,
23634           p_FULL_DUMP_FLAG              => fnd_api.g_miss_char                     ,
23635           p_CREATED_BY                  => fnd_api.g_miss_num                      ,
23636           p_CREATION_DATE               => fnd_api.g_miss_date                     ,
23637           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID                      ,
23638           p_LAST_UPDATE_DATE            => SYSDATE                                 ,
23639           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID                     ,
23640           p_OBJECT_VERSION_NUMBER       => fnd_api.g_miss_num                      );
23641 
23642         ELSE
23643           --
23644              IF    ( l_version_hist_csr.old_version_label IS NULL
23645                 AND  l_version_hist_csr.new_version_label IS NULL ) THEN
23646                      IF  ( p_version_label_rec.version_label = l_curr_ver_label_rec.version_label )
23647                       OR ( p_version_label_rec.version_label = fnd_api.g_miss_char ) THEN
23648                            l_version_hist_csr.old_version_label := NULL;
23649                            l_version_hist_csr.new_version_label := NULL;
23650                      ELSE
23651                            l_version_hist_csr.old_version_label := fnd_api.g_miss_char;
23652                            l_version_hist_csr.new_version_label := p_version_label_rec.version_label;
23653                      END IF;
23654              ELSE
23655                      l_version_hist_csr.old_version_label := fnd_api.g_miss_char;
23656                      l_version_hist_csr.new_version_label := p_version_label_rec.version_label;
23657              END IF;
23658              --
23659              IF    ( l_version_hist_csr.old_date_time_stamp IS NULL
23660                 AND  l_version_hist_csr.new_date_time_stamp IS NULL ) THEN
23661                      IF  ( p_version_label_rec.date_time_stamp = l_curr_ver_label_rec.date_time_stamp )
23662                       OR ( p_version_label_rec.date_time_stamp = fnd_api.g_miss_date ) THEN
23663                            l_version_hist_csr.old_date_time_stamp := NULL;
23664                            l_version_hist_csr.new_date_time_stamp := NULL;
23665                      ELSE
23666                            l_version_hist_csr.old_date_time_stamp := fnd_api.g_miss_date;
23667                            l_version_hist_csr.new_date_time_stamp := p_version_label_rec.date_time_stamp;
23668                      END IF;
23669              ELSE
23670                      l_version_hist_csr.old_date_time_stamp := fnd_api.g_miss_date;
23671                      l_version_hist_csr.new_date_time_stamp := p_version_label_rec.date_time_stamp;
23672              END IF;
23673              --
23674              IF    ( l_version_hist_csr.old_description IS NULL
23675                 AND  l_version_hist_csr.new_description IS NULL ) THEN
23676                      IF  ( p_version_label_rec.description = l_curr_ver_label_rec.description )
23677                       OR ( p_version_label_rec.description = fnd_api.g_miss_char ) THEN
23678                            l_version_hist_csr.old_description := NULL;
23679                            l_version_hist_csr.new_description := NULL;
23680                      ELSE
23681                            l_version_hist_csr.old_description := fnd_api.g_miss_char;
23682                            l_version_hist_csr.new_description := p_version_label_rec.description;
23683                      END IF;
23684              ELSE
23685                      l_version_hist_csr.old_description := fnd_api.g_miss_char;
23686                      l_version_hist_csr.new_description := p_version_label_rec.description;
23687              END IF;
23688              --
23689              IF    ( l_version_hist_csr.old_active_start_date IS NULL
23690                 AND  l_version_hist_csr.new_active_start_date IS NULL ) THEN
23691                      IF  ( p_version_label_rec.active_start_date = l_curr_ver_label_rec.active_start_date )
23692                       OR ( p_version_label_rec.active_start_date = fnd_api.g_miss_date ) THEN
23693                            l_version_hist_csr.old_active_start_date := NULL;
23694                            l_version_hist_csr.new_active_start_date := NULL;
23695                      ELSE
23696                            l_version_hist_csr.old_active_start_date := fnd_api.g_miss_date;
23697                            l_version_hist_csr.new_active_start_date := p_version_label_rec.active_start_date;
23698                      END IF;
23699              ELSE
23700                      l_version_hist_csr.old_active_start_date := fnd_api.g_miss_date;
23701                      l_version_hist_csr.new_active_start_date := p_version_label_rec.active_start_date;
23702              END IF;
23703              --
23704              IF    ( l_version_hist_csr.old_active_end_date IS NULL
23705                 AND  l_version_hist_csr.new_active_end_date IS NULL ) THEN
23706                      IF  ( p_version_label_rec.active_end_date = l_curr_ver_label_rec.active_end_date )
23707                       OR ( p_version_label_rec.active_end_date = fnd_api.g_miss_date ) THEN
23708                            l_version_hist_csr.old_active_end_date := NULL;
23709                            l_version_hist_csr.new_active_end_date := NULL;
23710                      ELSE
23711                            l_version_hist_csr.old_active_end_date := fnd_api.g_miss_date;
23712                            l_version_hist_csr.new_active_end_date := p_version_label_rec.active_end_date;
23713                      END IF;
23714              ELSE
23715                      l_version_hist_csr.old_active_end_date := fnd_api.g_miss_date;
23716                      l_version_hist_csr.new_active_end_date := p_version_label_rec.active_end_date;
23717              END IF;
23718              --
23719              IF    ( l_version_hist_csr.old_context IS NULL
23720                 AND  l_version_hist_csr.new_context IS NULL ) THEN
23721                      IF  ( p_version_label_rec.context = l_curr_ver_label_rec.context )
23722                       OR ( p_version_label_rec.context = fnd_api.g_miss_char ) THEN
23723                            l_version_hist_csr.old_context := NULL;
23724                            l_version_hist_csr.new_context := NULL;
23725                      ELSE
23726                            l_version_hist_csr.old_context := fnd_api.g_miss_char;
23727                            l_version_hist_csr.new_context := p_version_label_rec.context;
23728                      END IF;
23729              ELSE
23730                      l_version_hist_csr.old_context := fnd_api.g_miss_char;
23731                      l_version_hist_csr.new_context := p_version_label_rec.context;
23732              END IF;
23733              --
23734              IF    ( l_version_hist_csr.old_attribute1 IS NULL
23735                 AND  l_version_hist_csr.new_attribute1 IS NULL ) THEN
23736                      IF  ( p_version_label_rec.attribute1 = l_curr_ver_label_rec.attribute1 )
23737                       OR ( p_version_label_rec.attribute1 = fnd_api.g_miss_char ) THEN
23738                            l_version_hist_csr.old_attribute1 := NULL;
23739                            l_version_hist_csr.new_attribute1 := NULL;
23740                      ELSE
23741                            l_version_hist_csr.old_attribute1 := fnd_api.g_miss_char;
23742                            l_version_hist_csr.new_attribute1 := p_version_label_rec.attribute1;
23743                      END IF;
23744              ELSE
23745                      l_version_hist_csr.old_attribute1 := fnd_api.g_miss_char;
23746                      l_version_hist_csr.new_attribute1 := p_version_label_rec.attribute1;
23747              END IF;
23748              --
23749              IF    ( l_version_hist_csr.old_attribute2 IS NULL
23750                 AND  l_version_hist_csr.new_attribute2 IS NULL ) THEN
23751                      IF  ( p_version_label_rec.attribute2 = l_curr_ver_label_rec.attribute2 )
23752                       OR ( p_version_label_rec.attribute2 = fnd_api.g_miss_char ) THEN
23753                            l_version_hist_csr.old_attribute2 := NULL;
23754                            l_version_hist_csr.new_attribute2 := NULL;
23755                      ELSE
23756                            l_version_hist_csr.old_attribute2 := fnd_api.g_miss_char;
23757                            l_version_hist_csr.new_attribute2 := p_version_label_rec.attribute2;
23758                      END IF;
23759              ELSE
23760                      l_version_hist_csr.old_attribute2 := fnd_api.g_miss_char;
23761                      l_version_hist_csr.new_attribute2 := p_version_label_rec.attribute2;
23762              END IF;
23763              --
23764              IF    ( l_version_hist_csr.old_attribute3 IS NULL
23765                 AND  l_version_hist_csr.new_attribute3 IS NULL ) THEN
23766                      IF  ( p_version_label_rec.attribute3 = l_curr_ver_label_rec.attribute3 )
23767                       OR ( p_version_label_rec.attribute3 = fnd_api.g_miss_char ) THEN
23768                            l_version_hist_csr.old_attribute3 := NULL;
23769                            l_version_hist_csr.new_attribute3 := NULL;
23770                      ELSE
23771                            l_version_hist_csr.old_attribute3 := fnd_api.g_miss_char;
23772                            l_version_hist_csr.new_attribute3 := p_version_label_rec.attribute3;
23773                      END IF;
23774              ELSE
23775                      l_version_hist_csr.old_attribute3 := fnd_api.g_miss_char;
23776                      l_version_hist_csr.new_attribute3 := p_version_label_rec.attribute3;
23777              END IF;
23778              --
23779              IF    ( l_version_hist_csr.old_attribute4 IS NULL
23780                 AND  l_version_hist_csr.new_attribute4 IS NULL ) THEN
23781                      IF  ( p_version_label_rec.attribute4 = l_curr_ver_label_rec.attribute4 )
23782                       OR ( p_version_label_rec.attribute4 = fnd_api.g_miss_char ) THEN
23783                            l_version_hist_csr.old_attribute4 := NULL;
23784                            l_version_hist_csr.new_attribute4 := NULL;
23785                      ELSE
23786                            l_version_hist_csr.old_attribute4 := fnd_api.g_miss_char;
23787                            l_version_hist_csr.new_attribute4 := p_version_label_rec.attribute4;
23788                      END IF;
23789              ELSE
23790                      l_version_hist_csr.old_attribute4 := fnd_api.g_miss_char;
23791                      l_version_hist_csr.new_attribute4 := p_version_label_rec.attribute4;
23792              END IF;
23793              --
23794              IF    ( l_version_hist_csr.old_attribute5 IS NULL
23795                 AND  l_version_hist_csr.new_attribute5 IS NULL ) THEN
23796                      IF  ( p_version_label_rec.attribute5 = l_curr_ver_label_rec.attribute5 )
23797                       OR ( p_version_label_rec.attribute5 = fnd_api.g_miss_char ) THEN
23798                            l_version_hist_csr.old_attribute5 := NULL;
23799                            l_version_hist_csr.new_attribute5 := NULL;
23800                      ELSE
23801                            l_version_hist_csr.old_attribute5 := fnd_api.g_miss_char;
23802                            l_version_hist_csr.new_attribute5 := p_version_label_rec.attribute5;
23803                      END IF;
23804              ELSE
23805                      l_version_hist_csr.old_attribute5 := fnd_api.g_miss_char;
23806                      l_version_hist_csr.new_attribute5 := p_version_label_rec.attribute5;
23807              END IF;
23808              --
23809              IF    ( l_version_hist_csr.old_attribute6 IS NULL
23810                 AND  l_version_hist_csr.new_attribute6 IS NULL ) THEN
23811                      IF  ( p_version_label_rec.attribute6 = l_curr_ver_label_rec.attribute6 )
23812                       OR ( p_version_label_rec.attribute6 = fnd_api.g_miss_char ) THEN
23813                            l_version_hist_csr.old_attribute6 := NULL;
23814                            l_version_hist_csr.new_attribute6 := NULL;
23815                      ELSE
23816                            l_version_hist_csr.old_attribute6 := fnd_api.g_miss_char;
23817                            l_version_hist_csr.new_attribute6 := p_version_label_rec.attribute6;
23818                      END IF;
23819              ELSE
23820                      l_version_hist_csr.old_attribute6 := fnd_api.g_miss_char;
23821                      l_version_hist_csr.new_attribute6 := p_version_label_rec.attribute6;
23822              END IF;
23823              --
23824              IF    ( l_version_hist_csr.old_attribute7 IS NULL
23825                 AND  l_version_hist_csr.new_attribute7 IS NULL ) THEN
23826                      IF  ( p_version_label_rec.attribute7 = l_curr_ver_label_rec.attribute7 )
23827                       OR ( p_version_label_rec.attribute7 = fnd_api.g_miss_char ) THEN
23828                            l_version_hist_csr.old_attribute7 := NULL;
23829                            l_version_hist_csr.new_attribute7 := NULL;
23830                      ELSE
23831                            l_version_hist_csr.old_attribute7 := fnd_api.g_miss_char;
23832                            l_version_hist_csr.new_attribute7 := p_version_label_rec.attribute7;
23833                      END IF;
23834              ELSE
23835                      l_version_hist_csr.old_attribute7 := fnd_api.g_miss_char;
23836                      l_version_hist_csr.new_attribute7 := p_version_label_rec.attribute7;
23837              END IF;
23838              --
23839              IF    ( l_version_hist_csr.old_attribute8 IS NULL
23840                 AND  l_version_hist_csr.new_attribute8 IS NULL ) THEN
23841                      IF  ( p_version_label_rec.attribute8 = l_curr_ver_label_rec.attribute8 )
23842                       OR ( p_version_label_rec.attribute8 = fnd_api.g_miss_char ) THEN
23843                            l_version_hist_csr.old_attribute8 := NULL;
23844                            l_version_hist_csr.new_attribute8 := NULL;
23845                      ELSE
23846                            l_version_hist_csr.old_attribute8 := fnd_api.g_miss_char;
23847                            l_version_hist_csr.new_attribute8 := p_version_label_rec.attribute8;
23848                      END IF;
23849              ELSE
23850                      l_version_hist_csr.old_attribute8 := fnd_api.g_miss_char;
23851                      l_version_hist_csr.new_attribute8 := p_version_label_rec.attribute8;
23852              END IF;
23853              --
23854              IF    ( l_version_hist_csr.old_attribute9 IS NULL
23855                 AND  l_version_hist_csr.new_attribute9 IS NULL ) THEN
23856                      IF  ( p_version_label_rec.attribute9 = l_curr_ver_label_rec.attribute9 )
23857                       OR ( p_version_label_rec.attribute9 = fnd_api.g_miss_char ) THEN
23858                            l_version_hist_csr.old_attribute9 := NULL;
23859                            l_version_hist_csr.new_attribute9 := NULL;
23860                      ELSE
23861                            l_version_hist_csr.old_attribute9 := fnd_api.g_miss_char;
23862                            l_version_hist_csr.new_attribute9 := p_version_label_rec.attribute9;
23863                      END IF;
23864              ELSE
23865                      l_version_hist_csr.old_attribute9 := fnd_api.g_miss_char;
23866                      l_version_hist_csr.new_attribute9 := p_version_label_rec.attribute9;
23867              END IF;
23868              --
23869              IF    ( l_version_hist_csr.old_attribute10 IS NULL
23870                 AND  l_version_hist_csr.new_attribute10 IS NULL ) THEN
23871                      IF  ( p_version_label_rec.attribute10 = l_curr_ver_label_rec.attribute10 )
23872                       OR ( p_version_label_rec.attribute10 = fnd_api.g_miss_char ) THEN
23873                            l_version_hist_csr.old_attribute10 := NULL;
23874                            l_version_hist_csr.new_attribute10 := NULL;
23875                      ELSE
23876                            l_version_hist_csr.old_attribute10 := fnd_api.g_miss_char;
23877                            l_version_hist_csr.new_attribute10 := p_version_label_rec.attribute10;
23878                      END IF;
23879              ELSE
23880                      l_version_hist_csr.old_attribute10 := fnd_api.g_miss_char;
23881                      l_version_hist_csr.new_attribute10 := p_version_label_rec.attribute10;
23882              END IF;
23883              --
23884              IF    ( l_version_hist_csr.old_attribute11 IS NULL
23885                 AND  l_version_hist_csr.new_attribute11 IS NULL ) THEN
23886                      IF  ( p_version_label_rec.attribute11 = l_curr_ver_label_rec.attribute11 )
23887                       OR ( p_version_label_rec.attribute11 = fnd_api.g_miss_char ) THEN
23888                            l_version_hist_csr.old_attribute11 := NULL;
23889                            l_version_hist_csr.new_attribute11 := NULL;
23890                      ELSE
23891                            l_version_hist_csr.old_attribute11 := fnd_api.g_miss_char;
23892                            l_version_hist_csr.new_attribute11 := p_version_label_rec.attribute11;
23893                      END IF;
23894              ELSE
23895                      l_version_hist_csr.old_attribute11 := fnd_api.g_miss_char;
23896                      l_version_hist_csr.new_attribute11 := p_version_label_rec.attribute11;
23897              END IF;
23898              --
23899              IF    ( l_version_hist_csr.old_attribute12 IS NULL
23900                 AND  l_version_hist_csr.new_attribute12 IS NULL ) THEN
23901                      IF  ( p_version_label_rec.attribute12 = l_curr_ver_label_rec.attribute12 )
23902                       OR ( p_version_label_rec.attribute12 = fnd_api.g_miss_char ) THEN
23903                            l_version_hist_csr.old_attribute12 := NULL;
23904                            l_version_hist_csr.new_attribute12 := NULL;
23905                      ELSE
23906                            l_version_hist_csr.old_attribute12 := fnd_api.g_miss_char;
23907                            l_version_hist_csr.new_attribute12 := p_version_label_rec.attribute12;
23908                      END IF;
23909              ELSE
23910                      l_version_hist_csr.old_attribute12 := fnd_api.g_miss_char;
23911                      l_version_hist_csr.new_attribute12 := p_version_label_rec.attribute12;
23912              END IF;
23913              --
23914              IF    ( l_version_hist_csr.old_attribute13 IS NULL
23915                 AND  l_version_hist_csr.new_attribute13 IS NULL ) THEN
23916                      IF  ( p_version_label_rec.attribute13 = l_curr_ver_label_rec.attribute13 )
23917                       OR ( p_version_label_rec.attribute13 = fnd_api.g_miss_char ) THEN
23918                            l_version_hist_csr.old_attribute13 := NULL;
23919                            l_version_hist_csr.new_attribute13 := NULL;
23920                      ELSE
23921                            l_version_hist_csr.old_attribute13 := fnd_api.g_miss_char;
23922                            l_version_hist_csr.new_attribute13 := p_version_label_rec.attribute13;
23923                      END IF;
23924              ELSE
23925                      l_version_hist_csr.old_attribute13 := fnd_api.g_miss_char;
23926                      l_version_hist_csr.new_attribute13 := p_version_label_rec.attribute13;
23927              END IF;
23928              --
23929              IF    ( l_version_hist_csr.old_attribute14 IS NULL
23930                 AND  l_version_hist_csr.new_attribute14 IS NULL ) THEN
23931                      IF  ( p_version_label_rec.attribute14 = l_curr_ver_label_rec.attribute14 )
23932                       OR ( p_version_label_rec.attribute14 = fnd_api.g_miss_char ) THEN
23933                            l_version_hist_csr.old_attribute14 := NULL;
23934                            l_version_hist_csr.new_attribute14 := NULL;
23935                      ELSE
23936                            l_version_hist_csr.old_attribute14 := fnd_api.g_miss_char;
23937                            l_version_hist_csr.new_attribute14 := p_version_label_rec.attribute14;
23938                      END IF;
23939              ELSE
23940                      l_version_hist_csr.old_attribute14 := fnd_api.g_miss_char;
23941                      l_version_hist_csr.new_attribute14 := p_version_label_rec.attribute14;
23942              END IF;
23943              --
23944              IF    ( l_version_hist_csr.old_attribute15 IS NULL
23945                 AND  l_version_hist_csr.new_attribute15 IS NULL ) THEN
23946                      IF  ( p_version_label_rec.attribute15 = l_curr_ver_label_rec.attribute15 )
23947                       OR ( p_version_label_rec.attribute15 = fnd_api.g_miss_char ) THEN
23948                            l_version_hist_csr.old_attribute15 := NULL;
23949                            l_version_hist_csr.new_attribute15 := NULL;
23950                      ELSE
23951                            l_version_hist_csr.old_attribute15 := fnd_api.g_miss_char;
23952                            l_version_hist_csr.new_attribute15 := p_version_label_rec.attribute15;
23953                      END IF;
23954              ELSE
23955                      l_version_hist_csr.old_attribute15 := fnd_api.g_miss_char;
23956                      l_version_hist_csr.new_attribute15 := p_version_label_rec.attribute15;
23957              END IF;
23958              --
23959 
23960          csi_i_version_labels_h_pkg.update_row
23961          (
23962           p_version_label_history_id    => l_version_hist_id                       ,
23963           p_version_label_id            => fnd_api.g_miss_num                      ,
23964           p_transaction_id              => fnd_api.g_miss_num                      ,
23965           p_old_version_label           => l_version_hist_csr.old_version_label    ,
23966           p_new_version_label           => l_version_hist_csr.new_version_label       ,
23967           p_old_description             => l_version_hist_csr.old_description      ,
23968           p_new_description             => l_version_hist_csr.new_description         ,
23969           p_old_date_time_stamp         => l_version_hist_csr.old_date_time_stamp  ,
23970           p_new_date_time_stamp         => l_version_hist_csr.new_date_time_stamp     ,
23971           p_old_active_start_date       => l_version_hist_csr.old_active_start_date,
23972           p_new_active_start_date       => l_version_hist_csr.new_active_start_date   ,
23973           p_old_active_end_date         => l_version_hist_csr.old_active_end_date  ,
23974           p_new_active_end_date         => l_version_hist_csr.new_active_end_date     ,
23975           p_old_context                 => l_version_hist_csr.old_context          ,
23976           p_new_context                 => l_version_hist_csr.new_context             ,
23977           p_old_attribute1              => l_version_hist_csr.old_attribute1       ,
23978           p_new_attribute1              => l_version_hist_csr.new_attribute1          ,
23979           p_old_attribute2              => l_version_hist_csr.old_attribute2       ,
23980           p_new_attribute2              => l_version_hist_csr.new_attribute2          ,
23981           p_old_attribute3              => l_version_hist_csr.old_attribute3       ,
23982           p_new_attribute3              => l_version_hist_csr.new_attribute3          ,
23983           p_old_attribute4              => l_version_hist_csr.old_attribute4       ,
23984           p_new_attribute4              => l_version_hist_csr.new_attribute4          ,
23985           p_old_attribute5              => l_version_hist_csr.old_attribute5       ,
23986           p_new_attribute5              => l_version_hist_csr.new_attribute5          ,
23987           p_old_attribute6              => l_version_hist_csr.old_attribute6       ,
23988           p_new_attribute6              => l_version_hist_csr.new_attribute6          ,
23989           p_old_attribute7              => l_version_hist_csr.old_attribute7       ,
23990           p_new_attribute7              => l_version_hist_csr.new_attribute7          ,
23991           p_old_attribute8              => l_version_hist_csr.old_attribute8       ,
23992           p_new_attribute8              => l_version_hist_csr.new_attribute8          ,
23993           p_old_attribute9              => l_version_hist_csr.old_attribute9       ,
23994           p_new_attribute9              => l_version_hist_csr.new_attribute9          ,
23995           p_old_attribute10             => l_version_hist_csr.old_attribute10      ,
23996           p_new_attribute10             => l_version_hist_csr.new_attribute10         ,
23997           p_old_attribute11             => l_version_hist_csr.old_attribute11      ,
23998           p_new_attribute11             => l_version_hist_csr.new_attribute11         ,
23999           p_old_attribute12             => l_version_hist_csr.old_attribute12      ,
24000           p_new_attribute12             => l_version_hist_csr.new_attribute12         ,
24001           p_old_attribute13             => l_version_hist_csr.old_attribute13      ,
24002           p_new_attribute13             => l_version_hist_csr.new_attribute13         ,
24003           p_old_attribute14             => l_version_hist_csr.old_attribute14      ,
24004           p_new_attribute14             => l_version_hist_csr.new_attribute14         ,
24005           p_old_attribute15             => l_version_hist_csr.old_attribute15      ,
24006           p_new_attribute15             => l_version_hist_csr.new_attribute15         ,
24007           p_full_dump_flag              => fnd_api.g_miss_char                     ,
24008           p_created_by                  => fnd_api.g_miss_num                      ,
24009           p_creation_date               => fnd_api.g_miss_date                     ,
24010           p_last_updated_by             => fnd_global.user_id                      ,
24011           p_last_update_date            => SYSDATE                                 ,
24012           p_last_update_login           => fnd_global.login_id                     ,
24013           p_object_version_number       => fnd_api.g_miss_num                      );
24014         END IF;
24015     EXCEPTION
24016          WHEN NO_DATA_FOUND THEN
24017 
24018          IF (l_mod_value = 0) THEN
24019           -- If the mod value is 0 then dump all the columns both changed and unchanged
24020           -- changed columns have old and new values while the unchanged values have old and new values
24021           -- exactly same
24022 
24023           IF (p_version_label_rec.version_label = FND_API.G_MISS_CHAR) THEN
24024               l_temp_ver_label_rec.version_label := l_curr_ver_label_rec.version_label ;
24025           END IF;
24026           IF (p_version_label_rec.DATE_TIME_STAMP = FND_API.G_MISS_DATE) THEN
24027               l_temp_ver_label_rec.DATE_TIME_STAMP := l_curr_ver_label_rec.DATE_TIME_STAMP ;
24028           END IF;
24029           IF (p_version_label_rec.DESCRIPTION = FND_API.G_MISS_CHAR) THEN
24030               l_temp_ver_label_rec.DESCRIPTION := l_curr_ver_label_rec.DESCRIPTION ;
24031           END IF;
24032           IF (p_version_label_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
24033               l_temp_ver_label_rec.ACTIVE_START_DATE := l_curr_ver_label_rec.ACTIVE_START_DATE ;
24034           END IF;
24035           IF  (p_version_label_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
24036               l_temp_ver_label_rec.ACTIVE_END_DATE := l_curr_ver_label_rec.ACTIVE_END_DATE ;
24037           END IF;
24038           IF  (p_version_label_rec.context = FND_API.G_MISS_CHAR) THEN
24039               l_temp_ver_label_rec.CONTEXT := l_curr_ver_label_rec.CONTEXT ;
24040           END IF;
24041           IF  (p_version_label_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
24042               l_temp_ver_label_rec.ATTRIBUTE1 := l_curr_ver_label_rec.ATTRIBUTE1 ;
24043           END IF;
24044           IF  (p_version_label_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
24045               l_temp_ver_label_rec.ATTRIBUTE2 := l_curr_ver_label_rec.ATTRIBUTE2 ;
24046           END IF;
24047           IF  (p_version_label_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
24048               l_temp_ver_label_rec.ATTRIBUTE3 := l_curr_ver_label_rec.ATTRIBUTE3 ;
24049           END IF;
24050           IF  (p_version_label_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
24051               l_temp_ver_label_rec.ATTRIBUTE4 := l_curr_ver_label_rec.ATTRIBUTE4 ;
24052           END IF;
24053           IF  (p_version_label_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
24054               l_temp_ver_label_rec.ATTRIBUTE5 := l_curr_ver_label_rec.ATTRIBUTE5 ;
24055           END IF;
24056           IF  (p_version_label_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
24057               l_temp_ver_label_rec.ATTRIBUTE6 := l_curr_ver_label_rec.ATTRIBUTE6 ;
24058           END IF;
24059           IF  (p_version_label_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
24060               l_temp_ver_label_rec.ATTRIBUTE7 := l_curr_ver_label_rec.ATTRIBUTE7 ;
24061           END IF;
24062           IF  (p_version_label_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
24063               l_temp_ver_label_rec.ATTRIBUTE8 := l_curr_ver_label_rec.ATTRIBUTE8 ;
24064           END IF;
24065           IF  (p_version_label_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
24066               l_temp_ver_label_rec.ATTRIBUTE9 := l_curr_ver_label_rec.ATTRIBUTE9 ;
24067           END IF;
24068           IF  (p_version_label_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
24069               l_temp_ver_label_rec.ATTRIBUTE10 := l_curr_ver_label_rec.ATTRIBUTE10 ;
24070           END IF;
24071           IF  (p_version_label_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
24072               l_temp_ver_label_rec.ATTRIBUTE11 := l_curr_ver_label_rec.ATTRIBUTE11 ;
24073           END IF;
24074           IF  (p_version_label_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
24075               l_temp_ver_label_rec.ATTRIBUTE12 := l_curr_ver_label_rec.ATTRIBUTE12 ;
24076           END IF;
24077           IF  (p_version_label_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
24078               l_temp_ver_label_rec.ATTRIBUTE13 := l_curr_ver_label_rec.ATTRIBUTE13 ;
24079           END IF;
24080           IF  (p_version_label_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
24081               l_temp_ver_label_rec.ATTRIBUTE14 := l_curr_ver_label_rec.ATTRIBUTE14 ;
24082           END IF;
24083           IF  (p_version_label_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
24084               l_temp_ver_label_rec.ATTRIBUTE15 := l_curr_ver_label_rec.ATTRIBUTE15 ;
24085           END IF;
24086 
24087        -- Call the table handlers to insert into history table
24088 
24089        CSI_I_VERSION_LABELS_H_PKG.Insert_Row
24090        (
24091           px_VERSION_LABEL_HISTORY_ID   => l_version_label_hist_id                 ,
24092           p_VERSION_LABEL_ID            => p_version_label_rec.VERSION_LABEL_ID    ,
24093           p_TRANSACTION_ID              => p_txn_rec.TRANSACTION_ID                ,
24094           p_OLD_VERSION_LABEL           => l_temp_ver_label_rec.VERSION_LABEL      ,
24095           p_NEW_VERSION_LABEL           => p_version_label_rec.VERSION_LABEL       ,
24096           p_OLD_DESCRIPTION             => l_temp_ver_label_rec.DESCRIPTION        ,
24097           p_NEW_DESCRIPTION             => p_version_label_rec.DESCRIPTION         ,
24098           p_OLD_DATE_TIME_STAMP         => l_temp_ver_label_rec.DATE_TIME_STAMP    ,
24099           p_NEW_DATE_TIME_STAMP         => p_version_label_rec.DATE_TIME_STAMP     ,
24100           p_OLD_ACTIVE_START_DATE       => l_temp_ver_label_rec.ACTIVE_START_DATE  ,
24101           p_NEW_ACTIVE_START_DATE       => p_version_label_rec.ACTIVE_START_DATE   ,
24102           p_OLD_ACTIVE_END_DATE         => l_temp_ver_label_rec.ACTIVE_END_DATE  ,
24103           p_NEW_ACTIVE_END_DATE         => p_version_label_rec.ACTIVE_END_DATE     ,
24104           p_OLD_CONTEXT                 => l_temp_ver_label_rec.CONTEXT  ,
24105           p_NEW_CONTEXT                 => p_version_label_rec.CONTEXT    ,
24106           p_OLD_ATTRIBUTE1              => l_temp_ver_label_rec.ATTRIBUTE1  ,
24107           p_NEW_ATTRIBUTE1              => p_version_label_rec.ATTRIBUTE1 ,
24108           p_OLD_ATTRIBUTE2              => l_temp_ver_label_rec.ATTRIBUTE2  ,
24109           p_NEW_ATTRIBUTE2              => p_version_label_rec.ATTRIBUTE2 ,
24110           p_OLD_ATTRIBUTE3              => l_temp_ver_label_rec.ATTRIBUTE3  ,
24111           p_NEW_ATTRIBUTE3              => p_version_label_rec.ATTRIBUTE3 ,
24112           p_OLD_ATTRIBUTE4              => l_temp_ver_label_rec.ATTRIBUTE4  ,
24113           p_NEW_ATTRIBUTE4              => p_version_label_rec.ATTRIBUTE4 ,
24114           p_OLD_ATTRIBUTE5              => l_temp_ver_label_rec.ATTRIBUTE5  ,
24115           p_NEW_ATTRIBUTE5              => p_version_label_rec.ATTRIBUTE5 ,
24116           p_OLD_ATTRIBUTE6              => l_temp_ver_label_rec.ATTRIBUTE6  ,
24117           p_NEW_ATTRIBUTE6              => p_version_label_rec.ATTRIBUTE6 ,
24118           p_OLD_ATTRIBUTE7              => l_temp_ver_label_rec.ATTRIBUTE7  ,
24119           p_NEW_ATTRIBUTE7              => p_version_label_rec.ATTRIBUTE7 ,
24120           p_OLD_ATTRIBUTE8              => l_temp_ver_label_rec.ATTRIBUTE8  ,
24121           p_NEW_ATTRIBUTE8              => p_version_label_rec.ATTRIBUTE8 ,
24122           p_OLD_ATTRIBUTE9              => l_temp_ver_label_rec.ATTRIBUTE9  ,
24123           p_NEW_ATTRIBUTE9              => p_version_label_rec.ATTRIBUTE9 ,
24124           p_OLD_ATTRIBUTE10             => l_temp_ver_label_rec.ATTRIBUTE10  ,
24125           p_NEW_ATTRIBUTE10             => p_version_label_rec.ATTRIBUTE10,
24126           p_OLD_ATTRIBUTE11             => l_temp_ver_label_rec.ATTRIBUTE11  ,
24127           p_NEW_ATTRIBUTE11             => p_version_label_rec.ATTRIBUTE11,
24128           p_OLD_ATTRIBUTE12             => l_temp_ver_label_rec.ATTRIBUTE12  ,
24129           p_NEW_ATTRIBUTE12             => p_version_label_rec.ATTRIBUTE12,
24130           p_OLD_ATTRIBUTE13             => l_temp_ver_label_rec.ATTRIBUTE13  ,
24131           p_NEW_ATTRIBUTE13             => p_version_label_rec.ATTRIBUTE13,
24132           p_OLD_ATTRIBUTE14             => l_temp_ver_label_rec.ATTRIBUTE14  ,
24133           p_NEW_ATTRIBUTE14             => p_version_label_rec.ATTRIBUTE14,
24134           p_OLD_ATTRIBUTE15             => l_temp_ver_label_rec.ATTRIBUTE15  ,
24135           p_NEW_ATTRIBUTE15             => p_version_label_rec.ATTRIBUTE15,
24136           p_FULL_DUMP_FLAG              => 'Y'                            ,
24137           p_CREATED_BY                  => FND_GLOBAL.USER_ID             ,
24138           p_CREATION_DATE               => SYSDATE                        ,
24139           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID             ,
24140           p_LAST_UPDATE_DATE            => SYSDATE                        ,
24141           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID            ,
24142           p_OBJECT_VERSION_NUMBER       => 1                              );
24143 
24144 
24145        ELSE
24146           -- If the mod value is not equal to zero then dump only the changed columns
24147           -- while the unchanged values have old and new values as null
24148 
24149            IF (p_version_label_rec.version_label = fnd_api.g_miss_char) OR
24150                NVL(p_version_label_rec.version_label, fnd_api.g_miss_char) = NVL(l_curr_ver_label_rec.version_label, fnd_api.g_miss_char) THEN
24151                 l_ver_label_hist_rec.old_version_label := NULL;
24152                 l_ver_label_hist_rec.new_version_label := NULL;
24153            ELSIF
24154               NVL(l_curr_ver_label_rec.version_label,fnd_api.g_miss_char) <> NVL(p_version_label_rec.version_label,fnd_api.g_miss_char) THEN
24155                 l_ver_label_hist_rec.old_version_label := l_curr_ver_label_rec.version_label ;
24156                 l_ver_label_hist_rec.new_version_label := p_version_label_rec.version_label ;
24157            END IF;
24158            --
24159            IF (p_version_label_rec.date_time_stamp = fnd_api.g_miss_date) OR
24160                NVL(p_version_label_rec.date_time_stamp, fnd_api.g_miss_date) = NVL(l_curr_ver_label_rec.date_time_stamp, fnd_api.g_miss_date) THEN
24161                 l_ver_label_hist_rec.old_date_time_stamp := NULL;
24162                 l_ver_label_hist_rec.new_date_time_stamp := NULL;
24163            ELSIF
24164               NVL(l_curr_ver_label_rec.date_time_stamp,fnd_api.g_miss_date) <> NVL(p_version_label_rec.date_time_stamp,fnd_api.g_miss_date) THEN
24165                 l_ver_label_hist_rec.old_date_time_stamp := l_curr_ver_label_rec.date_time_stamp ;
24166                 l_ver_label_hist_rec.new_date_time_stamp := p_version_label_rec.date_time_stamp ;
24167            END IF;
24168            --
24169            IF (p_version_label_rec.description = fnd_api.g_miss_char) OR
24170                NVL(p_version_label_rec.description, fnd_api.g_miss_char) = NVL(l_curr_ver_label_rec.description, fnd_api.g_miss_char) THEN
24171                 l_ver_label_hist_rec.old_description := NULL;
24172                 l_ver_label_hist_rec.new_description := NULL;
24173            ELSIF
24174               NVL(l_curr_ver_label_rec.description,fnd_api.g_miss_char) <> NVL(p_version_label_rec.description,fnd_api.g_miss_char) THEN
24175                 l_ver_label_hist_rec.old_description := l_curr_ver_label_rec.description ;
24176                 l_ver_label_hist_rec.new_description := p_version_label_rec.description ;
24177            END IF;
24178            --
24179            IF (p_version_label_rec.active_start_date = fnd_api.g_miss_date) OR
24180               NVL(l_curr_ver_label_rec.active_start_date,fnd_api.g_miss_date) = NVL(p_version_label_rec.active_start_date,fnd_api.g_miss_date) THEN
24181                 l_ver_label_hist_rec.old_active_start_date := NULL;
24182                 l_ver_label_hist_rec.new_active_start_date := NULL;
24183            ELSIF
24184               NVL(l_curr_ver_label_rec.active_start_date,fnd_api.g_miss_date) <> NVL(p_version_label_rec.active_start_date,fnd_api.g_miss_date) THEN
24185                 l_ver_label_hist_rec.old_active_start_date := l_curr_ver_label_rec.active_start_date ;
24186                 l_ver_label_hist_rec.new_active_start_date := p_version_label_rec.active_start_date ;
24187            END IF;
24188            --
24189            IF (p_version_label_rec.active_end_date = fnd_api.g_miss_date) OR
24190               NVL(l_curr_ver_label_rec.active_end_date,fnd_api.g_miss_date) = NVL(p_version_label_rec.active_end_date,fnd_api.g_miss_date) THEN
24191                 l_ver_label_hist_rec.old_active_end_date := NULL;
24192                 l_ver_label_hist_rec.new_active_end_date := NULL;
24193            ELSIF
24194               NVL(l_curr_ver_label_rec.active_end_date,fnd_api.g_miss_date) <> NVL(p_version_label_rec.active_end_date,fnd_api.g_miss_date) THEN
24195                 l_ver_label_hist_rec.old_active_end_date := l_curr_ver_label_rec.active_end_date ;
24196                 l_ver_label_hist_rec.new_active_end_date := p_version_label_rec.active_end_date ;
24197            END IF;
24198            --
24199            IF (p_version_label_rec.context = fnd_api.g_miss_char) OR
24200               NVL(l_curr_ver_label_rec.context,fnd_api.g_miss_char) = NVL(p_version_label_rec.context,fnd_api.g_miss_char) THEN
24201                 l_ver_label_hist_rec.old_context := NULL;
24202                 l_ver_label_hist_rec.new_context := NULL;
24203            ELSIF
24204               NVL(l_curr_ver_label_rec.context,fnd_api.g_miss_char) <> NVL(p_version_label_rec.context,fnd_api.g_miss_char) THEN
24205                 l_ver_label_hist_rec.old_context := l_curr_ver_label_rec.context ;
24206                 l_ver_label_hist_rec.new_context := p_version_label_rec.context ;
24207            END IF;
24208            --
24209            IF (p_version_label_rec.attribute1 = fnd_api.g_miss_char) OR
24210               NVL(l_curr_ver_label_rec.attribute1,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute1,fnd_api.g_miss_char) THEN
24211                 l_ver_label_hist_rec.old_attribute1 := NULL;
24212                 l_ver_label_hist_rec.new_attribute1 := NULL;
24213            ELSIF
24214               NVL(l_curr_ver_label_rec.attribute1,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute1,fnd_api.g_miss_char) THEN
24215                 l_ver_label_hist_rec.old_attribute1 := l_curr_ver_label_rec.attribute1 ;
24216                 l_ver_label_hist_rec.new_attribute1 := p_version_label_rec.attribute1 ;
24217            END IF;
24218            --
24219            IF (p_version_label_rec.attribute2 = fnd_api.g_miss_char) OR
24220               NVL(l_curr_ver_label_rec.attribute2,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute2,fnd_api.g_miss_char) THEN
24221                 l_ver_label_hist_rec.old_attribute2 := NULL;
24222                 l_ver_label_hist_rec.new_attribute2 := NULL;
24223            ELSIF
24224               NVL(l_curr_ver_label_rec.attribute2,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute2,fnd_api.g_miss_char) THEN
24225                 l_ver_label_hist_rec.old_attribute2 := l_curr_ver_label_rec.attribute2 ;
24226                 l_ver_label_hist_rec.new_attribute2 := p_version_label_rec.attribute2 ;
24227            END IF;
24228            --
24229            IF (p_version_label_rec.attribute3 = fnd_api.g_miss_char) OR
24230               NVL(l_curr_ver_label_rec.attribute3,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute3,fnd_api.g_miss_char) THEN
24231                 l_ver_label_hist_rec.old_attribute3 := NULL;
24232                 l_ver_label_hist_rec.new_attribute3 := NULL;
24233            ELSIF
24234               NVL(l_curr_ver_label_rec.attribute3,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute3,fnd_api.g_miss_char) THEN
24235                 l_ver_label_hist_rec.old_attribute3 := l_curr_ver_label_rec.attribute3 ;
24236                 l_ver_label_hist_rec.new_attribute3 := p_version_label_rec.attribute3 ;
24237            END IF;
24238            --
24239            IF (p_version_label_rec.attribute4 = fnd_api.g_miss_char) OR
24240               NVL(l_curr_ver_label_rec.attribute4,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute4,fnd_api.g_miss_char) THEN
24241                 l_ver_label_hist_rec.old_attribute4 := NULL;
24242                 l_ver_label_hist_rec.new_attribute4 := NULL;
24243            ELSIF
24244               NVL(l_curr_ver_label_rec.attribute4,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute4,fnd_api.g_miss_char) THEN
24245                 l_ver_label_hist_rec.old_attribute4 := l_curr_ver_label_rec.attribute4 ;
24246                 l_ver_label_hist_rec.new_attribute4 := p_version_label_rec.attribute4 ;
24247            END IF;
24248            --
24249            IF (p_version_label_rec.attribute5 = fnd_api.g_miss_char) OR
24250               NVL(l_curr_ver_label_rec.attribute5,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute5,fnd_api.g_miss_char) THEN
24251                 l_ver_label_hist_rec.old_attribute5 := NULL;
24252                 l_ver_label_hist_rec.new_attribute5 := NULL;
24253            ELSIF
24254               NVL(l_curr_ver_label_rec.attribute5,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute5,fnd_api.g_miss_char) THEN
24255                 l_ver_label_hist_rec.old_attribute5 := l_curr_ver_label_rec.attribute5 ;
24256                 l_ver_label_hist_rec.new_attribute5 := p_version_label_rec.attribute5 ;
24257            END IF;
24258            --
24259            IF (p_version_label_rec.attribute6 = fnd_api.g_miss_char) OR
24260               NVL(l_curr_ver_label_rec.attribute6,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute6,fnd_api.g_miss_char) THEN
24261                 l_ver_label_hist_rec.old_attribute6 := NULL;
24262                 l_ver_label_hist_rec.new_attribute6 := NULL;
24263            ELSIF
24264               NVL(l_curr_ver_label_rec.attribute6,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute6,fnd_api.g_miss_char) THEN
24265                 l_ver_label_hist_rec.old_attribute6 := l_curr_ver_label_rec.attribute6 ;
24266                 l_ver_label_hist_rec.new_attribute6 := p_version_label_rec.attribute6 ;
24267            END IF;
24268            --
24269            IF (p_version_label_rec.attribute7 = fnd_api.g_miss_char) OR
24270               NVL(l_curr_ver_label_rec.attribute7,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute7,fnd_api.g_miss_char) THEN
24271                 l_ver_label_hist_rec.old_attribute7 := NULL;
24272                 l_ver_label_hist_rec.new_attribute7 := NULL;
24273            ELSIF
24274               NVL(l_curr_ver_label_rec.attribute7,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute7,fnd_api.g_miss_char) THEN
24275                 l_ver_label_hist_rec.old_attribute7 := l_curr_ver_label_rec.attribute7 ;
24276                 l_ver_label_hist_rec.new_attribute7 := p_version_label_rec.attribute7 ;
24277            END IF;
24278            --
24279            IF (p_version_label_rec.attribute8 = fnd_api.g_miss_char) OR
24280               NVL(l_curr_ver_label_rec.attribute8,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute8,fnd_api.g_miss_char) THEN
24281                 l_ver_label_hist_rec.old_attribute8 := NULL;
24282                 l_ver_label_hist_rec.new_attribute8 := NULL;
24283            ELSIF
24284               NVL(l_curr_ver_label_rec.attribute8,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute8,fnd_api.g_miss_char) THEN
24285                 l_ver_label_hist_rec.old_attribute8 := l_curr_ver_label_rec.attribute8 ;
24286                 l_ver_label_hist_rec.new_attribute8 := p_version_label_rec.attribute8 ;
24287            END IF;
24288            --
24289            IF (p_version_label_rec.attribute9 = fnd_api.g_miss_char) OR
24290               NVL(l_curr_ver_label_rec.attribute9,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute9,fnd_api.g_miss_char) THEN
24291                 l_ver_label_hist_rec.old_attribute9 := NULL;
24292                 l_ver_label_hist_rec.new_attribute9 := NULL;
24293            ELSIF
24294               NVL(l_curr_ver_label_rec.attribute9,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute9,fnd_api.g_miss_char) THEN
24295                 l_ver_label_hist_rec.old_attribute9 := l_curr_ver_label_rec.attribute9 ;
24296                 l_ver_label_hist_rec.new_attribute9 := p_version_label_rec.attribute9 ;
24297            END IF;
24298            --
24299            IF (p_version_label_rec.attribute10 = fnd_api.g_miss_char) OR
24300               NVL(l_curr_ver_label_rec.attribute10,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute10,fnd_api.g_miss_char) THEN
24301                 l_ver_label_hist_rec.old_attribute10 := NULL;
24302                 l_ver_label_hist_rec.new_attribute10 := NULL;
24303            ELSIF
24304               NVL(l_curr_ver_label_rec.attribute10,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute10,fnd_api.g_miss_char) THEN
24305                 l_ver_label_hist_rec.old_attribute10 := l_curr_ver_label_rec.attribute10 ;
24306                 l_ver_label_hist_rec.new_attribute10 := p_version_label_rec.attribute10 ;
24307            END IF;
24308            --
24309            IF (p_version_label_rec.attribute11 = fnd_api.g_miss_char) OR
24310               NVL(l_curr_ver_label_rec.attribute11,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute11,fnd_api.g_miss_char) THEN
24311                 l_ver_label_hist_rec.old_attribute11 := NULL;
24312                 l_ver_label_hist_rec.new_attribute11 := NULL;
24313            ELSIF
24314               NVL(l_curr_ver_label_rec.attribute11,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute11,fnd_api.g_miss_char) THEN
24315                 l_ver_label_hist_rec.old_attribute11 := l_curr_ver_label_rec.attribute11 ;
24316                 l_ver_label_hist_rec.new_attribute11 := p_version_label_rec.attribute11 ;
24317            END IF;
24318            --
24319            IF (p_version_label_rec.attribute12 = fnd_api.g_miss_char) OR
24320               NVL(l_curr_ver_label_rec.attribute12,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute12,fnd_api.g_miss_char) THEN
24321                 l_ver_label_hist_rec.old_attribute12 := NULL;
24322                 l_ver_label_hist_rec.new_attribute12 := NULL;
24323            ELSIF
24324               NVL(l_curr_ver_label_rec.attribute12,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute12,fnd_api.g_miss_char) THEN
24325                 l_ver_label_hist_rec.old_attribute12 := l_curr_ver_label_rec.attribute12 ;
24326                 l_ver_label_hist_rec.new_attribute12 := p_version_label_rec.attribute12 ;
24327            END IF;
24328            --
24329            IF (p_version_label_rec.attribute13 = fnd_api.g_miss_char) OR
24330               NVL(l_curr_ver_label_rec.attribute13,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute13,fnd_api.g_miss_char) THEN
24331                 l_ver_label_hist_rec.old_attribute13 := NULL;
24332                 l_ver_label_hist_rec.new_attribute13 := NULL;
24333            ELSIF
24334               NVL(l_curr_ver_label_rec.attribute13,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute13,fnd_api.g_miss_char) THEN
24335                 l_ver_label_hist_rec.old_attribute13 := l_curr_ver_label_rec.attribute13 ;
24336                 l_ver_label_hist_rec.new_attribute13 := p_version_label_rec.attribute13 ;
24337            END IF;
24338            --
24339            IF (p_version_label_rec.attribute14 = fnd_api.g_miss_char) OR
24340               NVL(l_curr_ver_label_rec.attribute14,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute14,fnd_api.g_miss_char) THEN
24341                 l_ver_label_hist_rec.old_attribute14 := NULL;
24342                 l_ver_label_hist_rec.new_attribute14 := NULL;
24343            ELSIF
24344               NVL(l_curr_ver_label_rec.attribute14,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute14,fnd_api.g_miss_char) THEN
24345                 l_ver_label_hist_rec.old_attribute14 := l_curr_ver_label_rec.attribute14 ;
24346                 l_ver_label_hist_rec.new_attribute14 := p_version_label_rec.attribute14 ;
24347            END IF;
24348            --
24349            IF (p_version_label_rec.attribute15 = fnd_api.g_miss_char) OR
24350               NVL(l_curr_ver_label_rec.attribute15,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute15,fnd_api.g_miss_char) THEN
24351                 l_ver_label_hist_rec.old_attribute15 := NULL;
24352                 l_ver_label_hist_rec.new_attribute15 := NULL;
24353            ELSIF
24354               NVL(l_curr_ver_label_rec.attribute15,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute15,fnd_api.g_miss_char) THEN
24355                 l_ver_label_hist_rec.old_attribute15 := l_curr_ver_label_rec.attribute15 ;
24356                 l_ver_label_hist_rec.new_attribute15 := p_version_label_rec.attribute15 ;
24357            END IF;
24358 
24359      -- Call the table handlers to insert into history table
24360        CSI_I_VERSION_LABELS_H_PKG.Insert_Row
24361        (
24362           px_VERSION_LABEL_HISTORY_ID   => l_version_label_hist_id                 ,
24363           p_VERSION_LABEL_ID            => p_version_label_rec.VERSION_LABEL_ID    ,
24364           p_TRANSACTION_ID              => p_txn_rec.TRANSACTION_ID                ,
24365           p_OLD_VERSION_LABEL           => l_ver_label_hist_rec.OLD_VERSION_LABEL      ,
24366           p_NEW_VERSION_LABEL           => l_ver_label_hist_rec.NEW_VERSION_LABEL       ,
24367           p_OLD_DESCRIPTION             => l_ver_label_hist_rec.OLD_DESCRIPTION        ,
24368           p_NEW_DESCRIPTION             => l_ver_label_hist_rec.NEW_DESCRIPTION         ,
24369           p_OLD_DATE_TIME_STAMP         => l_ver_label_hist_rec.OLD_DATE_TIME_STAMP    ,
24370           p_NEW_DATE_TIME_STAMP         => l_ver_label_hist_rec.NEW_DATE_TIME_STAMP     ,
24371           p_OLD_ACTIVE_START_DATE       => l_ver_label_hist_rec.OLD_ACTIVE_START_DATE  ,
24372           p_NEW_ACTIVE_START_DATE       => l_ver_label_hist_rec.NEW_ACTIVE_START_DATE   ,
24373           p_OLD_ACTIVE_END_DATE         => l_ver_label_hist_rec.OLD_ACTIVE_END_DATE    ,
24374           p_NEW_ACTIVE_END_DATE         => l_ver_label_hist_rec.NEW_ACTIVE_END_DATE     ,
24375           p_OLD_CONTEXT                 => l_ver_label_hist_rec.OLD_CONTEXT            ,
24376           p_NEW_CONTEXT                 => l_ver_label_hist_rec.NEW_CONTEXT    ,
24377           p_OLD_ATTRIBUTE1              => l_ver_label_hist_rec.OLD_ATTRIBUTE1,
24378           p_NEW_ATTRIBUTE1              => l_ver_label_hist_rec.NEW_ATTRIBUTE1 ,
24379           p_OLD_ATTRIBUTE2              => l_ver_label_hist_rec.OLD_ATTRIBUTE2,
24380           p_NEW_ATTRIBUTE2              => l_ver_label_hist_rec.NEW_ATTRIBUTE2 ,
24381           p_OLD_ATTRIBUTE3              => l_ver_label_hist_rec.OLD_ATTRIBUTE3,
24382           p_NEW_ATTRIBUTE3              => l_ver_label_hist_rec.NEW_ATTRIBUTE3 ,
24383           p_OLD_ATTRIBUTE4              => l_ver_label_hist_rec.OLD_ATTRIBUTE4,
24384           p_NEW_ATTRIBUTE4              => l_ver_label_hist_rec.NEW_ATTRIBUTE4 ,
24385           p_OLD_ATTRIBUTE5              => l_ver_label_hist_rec.OLD_ATTRIBUTE5,
24386           p_NEW_ATTRIBUTE5              => l_ver_label_hist_rec.NEW_ATTRIBUTE5 ,
24387           p_OLD_ATTRIBUTE6              => l_ver_label_hist_rec.OLD_ATTRIBUTE6,
24388           p_NEW_ATTRIBUTE6              => l_ver_label_hist_rec.NEW_ATTRIBUTE6 ,
24389           p_OLD_ATTRIBUTE7              => l_ver_label_hist_rec.OLD_ATTRIBUTE7,
24390           p_NEW_ATTRIBUTE7              => l_ver_label_hist_rec.NEW_ATTRIBUTE7 ,
24391           p_OLD_ATTRIBUTE8              => l_ver_label_hist_rec.OLD_ATTRIBUTE8,
24392           p_NEW_ATTRIBUTE8              => l_ver_label_hist_rec.NEW_ATTRIBUTE8 ,
24393           p_OLD_ATTRIBUTE9              => l_ver_label_hist_rec.OLD_ATTRIBUTE9,
24394           p_NEW_ATTRIBUTE9              => l_ver_label_hist_rec.NEW_ATTRIBUTE9 ,
24395           p_OLD_ATTRIBUTE10             => l_ver_label_hist_rec.OLD_ATTRIBUTE10,
24396           p_NEW_ATTRIBUTE10             => l_ver_label_hist_rec.NEW_ATTRIBUTE10,
24397           p_OLD_ATTRIBUTE11             => l_ver_label_hist_rec.OLD_ATTRIBUTE11,
24398           p_NEW_ATTRIBUTE11             => l_ver_label_hist_rec.NEW_ATTRIBUTE11,
24399           p_OLD_ATTRIBUTE12             => l_ver_label_hist_rec.OLD_ATTRIBUTE12,
24400           p_NEW_ATTRIBUTE12             => l_ver_label_hist_rec.NEW_ATTRIBUTE12,
24401           p_OLD_ATTRIBUTE13             => l_ver_label_hist_rec.OLD_ATTRIBUTE13,
24402           p_NEW_ATTRIBUTE13             => l_ver_label_hist_rec.NEW_ATTRIBUTE13,
24403           p_OLD_ATTRIBUTE14             => l_ver_label_hist_rec.OLD_ATTRIBUTE14,
24404           p_NEW_ATTRIBUTE14             => l_ver_label_hist_rec.NEW_ATTRIBUTE14,
24405           p_OLD_ATTRIBUTE15             => l_ver_label_hist_rec.OLD_ATTRIBUTE15,
24406           p_NEW_ATTRIBUTE15             => l_ver_label_hist_rec.NEW_ATTRIBUTE15,
24407           p_FULL_DUMP_FLAG              => 'N'                            ,
24408           p_CREATED_BY                  => FND_GLOBAL.USER_ID             ,
24409           p_CREATION_DATE               => SYSDATE                        ,
24410           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID             ,
24411           p_LAST_UPDATE_DATE            => SYSDATE                        ,
24412           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID            ,
24413           p_OBJECT_VERSION_NUMBER       => 1                              );
24414 
24415 
24416     END IF;
24417 
24418    END;
24419      -- End of modification for Bug#2547034 on 09/20/02 - rtalluri
24420       --
24421       -- End of API body
24422 
24423       -- Standard check of p_commit.
24424       IF FND_API.To_Boolean( p_commit ) THEN
24425             COMMIT WORK;
24426       END IF;
24427 
24428       -- Standard call to get message count and if count is  get message info.
24429       FND_MSG_PUB.Count_And_Get
24430             (p_count       =>       x_msg_count ,
24431          p_data       =>       x_msg_data );
24432 
24433 EXCEPTION
24434         WHEN FND_API.G_EXC_ERROR THEN
24435             ROLLBACK TO update_version_label_pvt;
24436             x_return_status := FND_API.G_RET_STS_ERROR ;
24437             FND_MSG_PUB.Count_And_Get
24438                 (        p_count        =>      x_msg_count,
24439                     p_data         =>      x_msg_data);
24440       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
24441             ROLLBACK TO update_version_label_pvt;
24442             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
24443             FND_MSG_PUB.Count_And_Get
24444                 (        p_count         =>      X_msg_count,
24445                     p_data          =>      X_msg_data);
24446       WHEN OTHERS THEN
24447             ROLLBACK TO update_version_label_pvt;
24448             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
24449               IF FND_MSG_PUB.Check_Msg_Level
24450                  (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
24451             THEN
24452                          FND_MSG_PUB.Add_Exc_Msg
24453                     ( G_PKG_NAME, l_api_name );
24454             END IF;
24455             FND_MSG_PUB.Count_And_Get
24456                 (        p_count       =>      x_msg_count,
24457                     p_data        =>      x_msg_data );
24458 END update_version_label;
24459 
24460 /*---------------------------------------------*/
24461 /* Procedure name: expire_version_label        */
24462 /* Description :   procedure for Update        */
24463 /*                 version label for           */
24464 /*                 an Item Instance            */
24465 /*---------------------------------------------*/
24466 
24467 PROCEDURE expire_version_label
24468  (    p_api_version                 IN  NUMBER
24469      ,p_commit                      IN  VARCHAR2
24470      ,p_init_msg_list               IN  VARCHAR2
24471      ,p_validation_level            IN  NUMBER
24472      ,p_version_label_rec           IN  csi_datastructures_pub.version_label_rec
24473      ,p_txn_rec                     IN OUT NOCOPY csi_datastructures_pub.transaction_rec
24474      ,x_return_status               OUT NOCOPY VARCHAR2
24475      ,x_msg_count                   OUT NOCOPY NUMBER
24476      ,x_msg_data                    OUT NOCOPY VARCHAR2
24477    ) IS
24478       l_api_name                   CONSTANT VARCHAR2(30)   := 'EXPIRE_VERSION_LABEL';
24479       l_api_version                   CONSTANT NUMBER            := 1.0;
24480       l_debug_level                     NUMBER;
24481       l_version_label_rec        csi_datastructures_pub.version_label_rec;
24482       l_curr_ver_label_rec       csi_datastructures_pub.version_label_rec;
24483       l_msg_index                NUMBER;
24484       l_OBJECT_VERSION_NUMBER    NUMBER;
24485       l_mod_value                NUMBER;
24486       l_version_label_hist_id    NUMBER;
24487       x_msg_index_out            NUMBER;
24488       l_full_dump_frequency      NUMBER;
24489       l_flag                     VARCHAR2(1)  :='N';
24490 
24491   CURSOR get_curr_ver_label_rec (p_ver_label_id   IN  NUMBER) IS
24492    SELECT
24493      VERSION_LABEL_ID                 ,
24494      INSTANCE_ID                      ,
24495      VERSION_LABEL                    ,
24496      DESCRIPTION                      ,
24497      DATE_TIME_STAMP                  ,
24498      active_start_date                ,
24499      active_end_date                  ,
24500      context                          ,
24501      attribute1                       ,
24502      attribute2                       ,
24503      attribute3                       ,
24504      attribute4                       ,
24505      attribute5                       ,
24506      attribute6                       ,
24507      attribute7                       ,
24508      attribute8                       ,
24509      attribute9                       ,
24510      attribute10                      ,
24511      attribute11                      ,
24512      attribute12                      ,
24513      attribute13                      ,
24514      attribute14                      ,
24515      attribute15                      ,
24516      object_version_number            --,
24517     -- null parent_tbl_index                 ,
24518     -- null processed_flag                   ,
24519     -- null interface_id
24520     FROM CSI_I_VERSION_LABELS
24521    WHERE VERSION_LABEL_ID = p_ver_label_id
24522     AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE))
24523     FOR UPDATE OF OBJECT_VERSION_NUMBER ;
24524 
24525 BEGIN
24526       -- Standard Start of API savepoint
24527     SAVEPOINT  expire_version_label_pvt;
24528 
24529         -- Standard call to check for call compatibility.
24530       IF NOT FND_API.Compatible_API_Call (l_api_version            ,
24531                                                            p_api_version           ,
24532                                                      l_api_name                 ,
24533                                                     G_PKG_NAME                 )
24534       THEN
24535             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
24536       END IF;
24537 
24538     -- Initialize message list if p_init_msg_list is set to TRUE.
24539       IF FND_API.to_Boolean( p_init_msg_list ) THEN
24540             FND_MSG_PUB.initialize;
24541       END IF;
24542       --  Initialize API return status to success
24543       x_return_status := FND_API.G_RET_STS_SUCCESS;
24544 
24545     -- Check the profile option debug_level for debug message reporting
24546     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
24547 
24548     -- If debug_level = 1 then dump the procedure name
24549     IF (l_debug_level > 0) THEN
24550          CSI_gen_utility_pvt.put_line( 'update_version_label');
24551     END IF;
24552 
24553     -- If the debug level = 2 then dump all the parameters values.
24554     IF (l_debug_level > 1) THEN
24555              CSI_gen_utility_pvt.put_line( 'update_version_label:'||
24556                                                  p_api_version             ||'-'||
24557                                                 p_commit                  ||'-'||
24558                                                  p_init_msg_list                 );
24559       END IF;
24560 
24561      -- Start API body
24562 
24563     -- Check if all the required parameters are passed
24564         CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
24565             (    p_version_label_rec.version_label_id  ,
24566                 '  p_version_label_rec.version_label_id  ',
24567                    l_api_name           );
24568 
24569      CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
24570             (    p_version_label_rec.object_version_number  ,
24571                 '  p_version_label_rec.object_version_number  ',
24572                    l_api_name           );
24573 
24574      CSI_Instance_parties_vld_pvt.Check_Reqd_Param_date
24575             (    p_version_label_rec.active_end_date  ,
24576                 '  p_version_label_rec.active_end_date  ',
24577                    l_api_name           );
24578 
24579      IF  p_version_label_rec.version_label_id <> FND_API.G_MISS_NUM THEN
24580           -- Validate the version label id if exist then raise CSI_API_INVALID_PRIMARY_KEY error
24581           IF NOT(CSI_Instance_parties_vld_pvt.Is_Ver_labelID_exists
24582                                           (p_version_label_rec.version_label_id,
24583                                            FALSE                        )) THEN
24584                 RAISE FND_API.G_EXC_ERROR;
24585           END IF;
24586      END IF;
24587 
24588      -- check if the object_version_number passed matches with the one
24589      -- in the database else raise error
24590      OPEN get_curr_ver_label_rec(p_version_label_rec.version_label_id);
24591      FETCH get_curr_ver_label_rec INTO l_curr_ver_label_rec;
24592      IF  (l_curr_ver_label_rec.object_version_number <> nvl(p_version_label_rec.OBJECT_VERSION_NUMBER,-1)) THEN
24593             FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
24594             FND_MSG_PUB.ADD;
24595             RAISE FND_API.G_EXC_ERROR;
24596      END IF;
24597 
24598      IF get_curr_ver_label_rec%NOTFOUND THEN
24599         FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
24600         FND_MSG_PUB.ADD;
24601         RAISE FND_API.G_EXC_ERROR;
24602      END IF;
24603      CLOSE get_curr_ver_label_rec;
24604 
24605      -- Increment the object_version_number before updating
24606      l_OBJECT_VERSION_NUMBER := l_curr_ver_label_rec.OBJECT_VERSION_NUMBER + 1 ;
24607 
24608      CSI_I_VERSION_LABELS_PKG.Update_Row(
24609           p_VERSION_LABEL_ID    =>  p_version_label_rec.version_label_id,
24610           p_INSTANCE_ID         =>  l_version_label_rec.instance_id,
24611           p_VERSION_LABEL       =>  l_version_label_rec.VERSION_LABEL,
24612           p_DATE_TIME_STAMP     =>  l_version_label_rec.DATE_TIME_STAMP,
24613           p_DESCRIPTION         =>  l_version_label_rec.DESCRIPTION  ,
24614           p_ACTIVE_START_DATE   =>  l_version_label_rec.ACTIVE_START_DATE,
24615           p_ACTIVE_END_DATE     =>  p_version_label_rec.ACTIVE_END_DATE,
24616           p_CONTEXT             =>  l_version_label_rec.CONTEXT  ,
24617           p_ATTRIBUTE1          =>  l_version_label_rec.ATTRIBUTE1,
24618           p_ATTRIBUTE2          =>  l_version_label_rec.ATTRIBUTE2,
24619           p_ATTRIBUTE3          =>  l_version_label_rec.ATTRIBUTE3,
24620           p_ATTRIBUTE4          =>  l_version_label_rec.ATTRIBUTE4,
24621           p_ATTRIBUTE5          =>  l_version_label_rec.ATTRIBUTE5,
24622           p_ATTRIBUTE6          =>  l_version_label_rec.ATTRIBUTE6,
24623           p_ATTRIBUTE7          =>  l_version_label_rec.ATTRIBUTE7,
24624           p_ATTRIBUTE8          =>  l_version_label_rec.ATTRIBUTE8,
24625           p_ATTRIBUTE9          =>  l_version_label_rec.ATTRIBUTE9,
24626           p_ATTRIBUTE10         =>  l_version_label_rec.ATTRIBUTE10,
24627           p_ATTRIBUTE11         =>  l_version_label_rec.ATTRIBUTE11,
24628           p_ATTRIBUTE12         =>  l_version_label_rec.ATTRIBUTE12,
24629           p_ATTRIBUTE13         =>  l_version_label_rec.ATTRIBUTE13,
24630           p_ATTRIBUTE14         =>  l_version_label_rec.ATTRIBUTE14,
24631           p_ATTRIBUTE15         =>  l_version_label_rec.ATTRIBUTE15,
24632           p_CREATED_BY          =>  fnd_api.g_miss_num ,
24633           p_CREATION_DATE       =>  fnd_api.g_miss_date ,
24634           p_LAST_UPDATED_BY     =>  FND_GLOBAL.USER_ID ,
24635           p_LAST_UPDATE_DATE    =>  sysdate            ,
24636           p_LAST_UPDATE_LOGIN   =>  FND_GLOBAL.LOGIN_ID  ,
24637           p_OBJECT_VERSION_NUMBER => l_OBJECT_VERSION_NUMBER );
24638 
24639 
24640          -- Call create_transaction to create txn log
24641          CSI_TRANSACTIONS_PVT.Create_transaction
24642           (
24643              p_api_version            => p_api_version
24644             ,p_commit                 => p_commit
24645             ,p_init_msg_list          => p_init_msg_list
24646             ,p_validation_level       => p_validation_level
24647             ,p_Success_If_Exists_Flag => 'Y'
24648             ,P_transaction_rec        => p_txn_rec
24649             ,x_return_status          => x_return_status
24650             ,x_msg_count              => x_msg_count
24651             ,x_msg_data               => x_msg_data         );
24652 
24653           IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
24654               FOR i in 1..x_msg_Count LOOP
24655                 FND_MSG_PUB.Get(p_msg_index     => i,
24656                                 p_encoded       => 'F',
24657                                 p_data          => x_msg_data,
24658                                 p_msg_index_out => x_msg_index_out );
24659                 CSI_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
24660               End LOOP;
24661               RAISE FND_API.G_EXC_ERROR;
24662           END IF;
24663 
24664     -- Generate a unique instance_party_history_id from the sequence
24665     l_version_label_hist_id   := CSI_Instance_parties_vld_pvt.gen_ver_label_hist_id;
24666 
24667     -- Get the full_dump_frequency from csi_install_parameter
24668     IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
24669        csi_gen_utility_pvt.populate_install_param_rec;
24670     END IF;
24671     --
24672     l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
24673     --
24674     IF l_full_dump_frequency IS NULL THEN
24675        FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
24676        FND_MSG_PUB.ADD;
24677        RAISE FND_API.G_EXC_ERROR;
24678     END IF;
24679 
24680     select mod(l_object_version_number,l_full_dump_frequency)
24681     into   l_mod_value
24682     from   dual;
24683 
24684     IF (l_mod_value = 0) THEN
24685        -- If the mod value is 0 then dump all the columns both changed and unchanged
24686        -- changed columns have old and new values while the unchanged values have old and new values
24687        -- exactly same
24688 
24689        -- Call the table handlers to insert into history table
24690        CSI_I_VERSION_LABELS_H_PKG.Insert_Row
24691        (
24692           px_VERSION_LABEL_HISTORY_ID   => l_version_label_hist_id                 ,
24693           p_VERSION_LABEL_ID            => p_version_label_rec.version_label_id    ,
24694           p_TRANSACTION_ID              => p_txn_rec.TRANSACTION_ID                ,
24695           p_OLD_VERSION_LABEL           => l_curr_ver_label_rec.VERSION_LABEL      ,
24696           p_NEW_VERSION_LABEL           => l_curr_ver_label_rec.VERSION_LABEL      ,
24697           p_OLD_DESCRIPTION             => l_curr_ver_label_rec.DESCRIPTION        ,
24698           p_NEW_DESCRIPTION             => l_curr_ver_label_rec.DESCRIPTION        ,
24699           p_OLD_DATE_TIME_STAMP         => l_curr_ver_label_rec.DATE_TIME_STAMP    ,
24700           p_NEW_DATE_TIME_STAMP         => l_curr_ver_label_rec.DATE_TIME_STAMP    ,
24701           p_OLD_ACTIVE_START_DATE       => l_curr_ver_label_rec.ACTIVE_START_DATE  ,
24702           p_NEW_ACTIVE_START_DATE       => l_curr_ver_label_rec.ACTIVE_START_DATE  ,
24703           p_OLD_ACTIVE_END_DATE         => l_curr_ver_label_rec.ACTIVE_END_DATE    ,
24704           p_NEW_ACTIVE_END_DATE         => p_version_label_rec.ACTIVE_END_DATE     ,
24705           p_OLD_CONTEXT                 => l_curr_ver_label_rec.CONTEXT    ,
24706           p_NEW_CONTEXT                 => l_curr_ver_label_rec.CONTEXT    ,
24707           p_OLD_ATTRIBUTE1              => l_curr_ver_label_rec.ATTRIBUTE1 ,
24708           p_NEW_ATTRIBUTE1              => l_curr_ver_label_rec.ATTRIBUTE1 ,
24709           p_OLD_ATTRIBUTE2              => l_curr_ver_label_rec.ATTRIBUTE2 ,
24710           p_NEW_ATTRIBUTE2              => l_curr_ver_label_rec.ATTRIBUTE2 ,
24711           p_OLD_ATTRIBUTE3              => l_curr_ver_label_rec.ATTRIBUTE3 ,
24712           p_NEW_ATTRIBUTE3              => l_curr_ver_label_rec.ATTRIBUTE3 ,
24713           p_OLD_ATTRIBUTE4              => l_curr_ver_label_rec.ATTRIBUTE4 ,
24714           p_NEW_ATTRIBUTE4              => l_curr_ver_label_rec.ATTRIBUTE4 ,
24715           p_OLD_ATTRIBUTE5              => l_curr_ver_label_rec.ATTRIBUTE5 ,
24716           p_NEW_ATTRIBUTE5              => l_curr_ver_label_rec.ATTRIBUTE5 ,
24717           p_OLD_ATTRIBUTE6              => l_curr_ver_label_rec.ATTRIBUTE6 ,
24718           p_NEW_ATTRIBUTE6              => l_curr_ver_label_rec.ATTRIBUTE6 ,
24719           p_OLD_ATTRIBUTE7              => l_curr_ver_label_rec.ATTRIBUTE7 ,
24720           p_NEW_ATTRIBUTE7              => l_curr_ver_label_rec.ATTRIBUTE7 ,
24721           p_OLD_ATTRIBUTE8              => l_curr_ver_label_rec.ATTRIBUTE8 ,
24722           p_NEW_ATTRIBUTE8              => l_curr_ver_label_rec.ATTRIBUTE8 ,
24723           p_OLD_ATTRIBUTE9              => l_curr_ver_label_rec.ATTRIBUTE9 ,
24724           p_NEW_ATTRIBUTE9              => l_curr_ver_label_rec.ATTRIBUTE9 ,
24725           p_OLD_ATTRIBUTE10             => l_curr_ver_label_rec.ATTRIBUTE10,
24726           p_NEW_ATTRIBUTE10             => l_curr_ver_label_rec.ATTRIBUTE10,
24727           p_OLD_ATTRIBUTE11             => l_curr_ver_label_rec.ATTRIBUTE11,
24728           p_NEW_ATTRIBUTE11             => l_curr_ver_label_rec.ATTRIBUTE11,
24729           p_OLD_ATTRIBUTE12             => l_curr_ver_label_rec.ATTRIBUTE12,
24730           p_NEW_ATTRIBUTE12             => l_curr_ver_label_rec.ATTRIBUTE12,
24731           p_OLD_ATTRIBUTE13             => l_curr_ver_label_rec.ATTRIBUTE13,
24732           p_NEW_ATTRIBUTE13             => l_curr_ver_label_rec.ATTRIBUTE13,
24733           p_OLD_ATTRIBUTE14             => l_curr_ver_label_rec.ATTRIBUTE14,
24734           p_NEW_ATTRIBUTE14             => l_curr_ver_label_rec.ATTRIBUTE14,
24735           p_OLD_ATTRIBUTE15             => l_curr_ver_label_rec.ATTRIBUTE15,
24736           p_NEW_ATTRIBUTE15             => l_curr_ver_label_rec.ATTRIBUTE15,
24737           p_FULL_DUMP_FLAG              => 'Y'                            ,
24738           p_CREATED_BY                  => FND_GLOBAL.USER_ID             ,
24739           p_CREATION_DATE               => SYSDATE                        ,
24740           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID             ,
24741           p_LAST_UPDATE_DATE            => SYSDATE                        ,
24742           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID            ,
24743           p_OBJECT_VERSION_NUMBER       => 1                              );
24744 
24745 
24746        ELSE
24747           -- If the mod value is not equal to zero then dump only the changed columns
24748           -- while the unchanged values have old and new values as null
24749 
24750        -- Call the table handlers to insert into history table
24751        CSI_I_VERSION_LABELS_H_PKG.Insert_Row
24752        (
24753           px_VERSION_LABEL_HISTORY_ID   => l_version_label_hist_id                 ,
24754           p_VERSION_LABEL_ID            => p_version_label_rec.version_label_id    ,
24755           p_TRANSACTION_ID              => p_txn_rec.TRANSACTION_ID                ,
24756           p_OLD_VERSION_LABEL           => l_version_label_rec.VERSION_LABEL       ,
24757           p_NEW_VERSION_LABEL           => l_version_label_rec.VERSION_LABEL       ,
24758           p_OLD_DESCRIPTION             => l_version_label_rec.DESCRIPTION         ,
24759           p_NEW_DESCRIPTION             => l_version_label_rec.DESCRIPTION         ,
24760           p_OLD_DATE_TIME_STAMP         => l_version_label_rec.DATE_TIME_STAMP     ,
24761           p_NEW_DATE_TIME_STAMP         => l_version_label_rec.DATE_TIME_STAMP     ,
24762           p_OLD_ACTIVE_START_DATE       => l_version_label_rec.ACTIVE_START_DATE   ,
24763           p_NEW_ACTIVE_START_DATE       => l_version_label_rec.ACTIVE_START_DATE   ,
24764           p_OLD_ACTIVE_END_DATE         => l_version_label_rec.ACTIVE_END_DATE     ,
24765           p_NEW_ACTIVE_END_DATE         => p_version_label_rec.ACTIVE_END_DATE     ,
24766           p_OLD_CONTEXT                 => l_version_label_rec.CONTEXT             ,
24767           p_NEW_CONTEXT                 => l_version_label_rec.CONTEXT             ,
24768           p_OLD_ATTRIBUTE1              => l_version_label_rec.ATTRIBUTE1          ,
24769           p_NEW_ATTRIBUTE1              => l_version_label_rec.ATTRIBUTE1          ,
24770           p_OLD_ATTRIBUTE2              => l_version_label_rec.ATTRIBUTE2          ,
24771           p_NEW_ATTRIBUTE2              => l_version_label_rec.ATTRIBUTE2          ,
24772           p_OLD_ATTRIBUTE3              => l_version_label_rec.ATTRIBUTE3          ,
24773           p_NEW_ATTRIBUTE3              => l_version_label_rec.ATTRIBUTE3          ,
24774           p_OLD_ATTRIBUTE4              => l_version_label_rec.ATTRIBUTE4          ,
24775           p_NEW_ATTRIBUTE4              => l_version_label_rec.ATTRIBUTE4          ,
24776           p_OLD_ATTRIBUTE5              => l_version_label_rec.ATTRIBUTE5          ,
24777           p_NEW_ATTRIBUTE5              => l_version_label_rec.ATTRIBUTE5          ,
24778           p_OLD_ATTRIBUTE6              => l_version_label_rec.ATTRIBUTE6          ,
24779           p_NEW_ATTRIBUTE6              => l_version_label_rec.ATTRIBUTE6          ,
24780           p_OLD_ATTRIBUTE7              => l_version_label_rec.ATTRIBUTE7          ,
24781           p_NEW_ATTRIBUTE7              => l_version_label_rec.ATTRIBUTE7          ,
24782           p_OLD_ATTRIBUTE8              => l_version_label_rec.ATTRIBUTE8          ,
24783           p_NEW_ATTRIBUTE8              => l_version_label_rec.ATTRIBUTE8          ,
24784           p_OLD_ATTRIBUTE9              => l_version_label_rec.ATTRIBUTE9          ,
24785           p_NEW_ATTRIBUTE9              => l_version_label_rec.ATTRIBUTE9          ,
24786           p_OLD_ATTRIBUTE10             => l_version_label_rec.ATTRIBUTE10         ,
24787           p_NEW_ATTRIBUTE10             => l_version_label_rec.ATTRIBUTE10         ,
24788           p_OLD_ATTRIBUTE11             => l_version_label_rec.ATTRIBUTE11         ,
24789           p_NEW_ATTRIBUTE11             => l_version_label_rec.ATTRIBUTE11         ,
24790           p_OLD_ATTRIBUTE12             => l_version_label_rec.ATTRIBUTE12         ,
24791           p_NEW_ATTRIBUTE12             => l_version_label_rec.ATTRIBUTE12         ,
24792           p_OLD_ATTRIBUTE13             => l_version_label_rec.ATTRIBUTE13         ,
24793           p_NEW_ATTRIBUTE13             => l_version_label_rec.ATTRIBUTE13         ,
24794           p_OLD_ATTRIBUTE14             => l_version_label_rec.ATTRIBUTE14         ,
24795           p_NEW_ATTRIBUTE14             => l_version_label_rec.ATTRIBUTE14         ,
24796           p_OLD_ATTRIBUTE15             => l_version_label_rec.ATTRIBUTE15         ,
24797           p_NEW_ATTRIBUTE15             => l_version_label_rec.ATTRIBUTE15         ,
24798           p_FULL_DUMP_FLAG              => 'N'                            ,
24799           p_CREATED_BY                  => FND_GLOBAL.USER_ID             ,
24800           p_CREATION_DATE               => SYSDATE                        ,
24801           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID             ,
24802           p_LAST_UPDATE_DATE            => SYSDATE                        ,
24803           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID            ,
24804           p_OBJECT_VERSION_NUMBER       => 1                              );
24805 
24806 
24807     END IF;
24808       --
24809       -- End of API body
24810 
24811       -- Standard check of p_commit.
24812       IF FND_API.To_Boolean( p_commit ) THEN
24813             COMMIT WORK;
24814       END IF;
24815 
24816       -- Standard call to get message count and if count is  get message info.
24817       FND_MSG_PUB.Count_And_Get
24818             (p_count       =>       x_msg_count ,
24819          p_data       =>       x_msg_data      );
24820 EXCEPTION
24821     WHEN FND_API.G_EXC_ERROR THEN
24822             ROLLBACK TO expire_version_label_pvt;
24823             x_return_status := FND_API.G_RET_STS_ERROR ;
24824             FND_MSG_PUB.Count_And_Get
24825                 (        p_count   =>      x_msg_count,
24826                     p_data    =>      x_msg_data);
24827       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
24828             ROLLBACK TO expire_version_label_pvt;
24829             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
24830             FND_MSG_PUB.Count_And_Get
24831                 (        p_count        =>      x_msg_count,
24832                     p_data         =>      x_msg_data);
24833       WHEN OTHERS THEN
24834             ROLLBACK TO expire_version_label_pvt;
24835             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
24836               IF FND_MSG_PUB.Check_Msg_Level
24837                  (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
24838             THEN
24839                          FND_MSG_PUB.Add_Exc_Msg
24840                     ( G_PKG_NAME, l_api_name );
24841             END IF;
24842             FND_MSG_PUB.Count_And_Get
24843                 (        p_count         =>      x_msg_count,
24844                     p_data         =>      x_msg_data);
24845 END expire_version_label;
24846 
24847 /*----------------------------------------------------------*/
24848 /* Procedure name:  Initialize_ext_rec_no_dump              */
24849 /* Description : This procedure initialises the first       */
24850 /*                  record from the history                 */
24851 /*----------------------------------------------------------*/
24852 
24853 PROCEDURE Initialize_ext_rec_no_dump
24854 (
24855  x_ext_rec               IN OUT  NOCOPY csi_datastructures_pub.extend_attrib_values_rec,
24856  p_ext_id              IN      NUMBER,
24857  x_no_dump     IN OUT  NOCOPY DATE
24858 ) IS
24859 
24860   CURSOR Int_no_dump(p_ext_id IN NUMBER ) IS
24861   SELECT    creation_date,
24862             NEW_attribute_value,
24863             NEW_active_start_date,
24864             NEW_active_end_date,
24865             NEW_context,
24866             NEW_attribute1 ,
24867             NEW_attribute2,
24868             NEW_attribute3,
24869             NEW_attribute4,
24870             NEW_attribute5,
24871             NEW_attribute6,
24872             NEW_attribute7,
24873             NEW_attribute8,
24874             NEW_attribute9,
24875             NEW_attribute10,
24876             NEW_attribute11,
24877             NEW_attribute12,
24878             NEW_attribute13,
24879             NEW_attribute14,
24880             NEW_attribute15
24881   FROM      csi_iea_values_h
24882   WHERE     attribute_value_id = p_ext_id
24883   ORDER BY  creation_date;
24884 
24885 BEGIN
24886 
24887   FOR C1 IN Int_no_dump(p_ext_id)
24888   LOOP
24889    IF Int_no_dump%ROWCOUNT = 1 THEN
24890     x_no_dump                   := C1.creation_date;
24891     x_ext_rec.attribute_value   := C1.NEW_attribute_value;
24892     x_ext_rec.active_start_date := C1.NEW_active_start_date;
24893     x_ext_rec.active_end_date   := C1.NEW_active_end_date;
24894     x_ext_rec.context           := C1.NEW_context;
24895     x_ext_rec.attribute1        := C1.NEW_attribute1;
24896     x_ext_rec.attribute2        := C1.NEW_attribute2;
24897     x_ext_rec.attribute3        := C1.NEW_attribute3;
24898     x_ext_rec.attribute4        := C1.NEW_attribute4;
24899     x_ext_rec.attribute5        := C1.NEW_attribute5;
24900     x_ext_rec.attribute6        := C1.NEW_attribute6;
24901     x_ext_rec.attribute7        := C1.NEW_attribute7;
24902     x_ext_rec.attribute8        := C1.NEW_attribute8;
24903     x_ext_rec.attribute9        := C1.NEW_attribute9;
24904     x_ext_rec.attribute10       := C1.NEW_attribute10;
24905     x_ext_rec.attribute11       := C1.NEW_attribute11;
24906     x_ext_rec.attribute12       := C1.NEW_attribute12;
24907     x_ext_rec.attribute13       := C1.NEW_attribute13;
24908     x_ext_rec.attribute14       := C1.NEW_attribute14;
24909     x_ext_rec.attribute15       := C1.NEW_attribute15;
24910    ELSE
24911     EXIT;
24912    END IF;
24913   END LOOP;
24914 END Initialize_ext_rec_no_dump;
24915 
24916 
24917 /*----------------------------------------------------------*/
24918 /* Procedure name:  Initialize_ext_rec                      */
24919 /* Description : This procudure recontructs the record      */
24920 /*                 from the history                         */
24921 /*----------------------------------------------------------*/
24922 
24923 PROCEDURE Initialize_ext_rec
24924 (
24925  x_ext_rec               IN OUT  NOCOPY csi_datastructures_pub.extend_attrib_values_rec,
24926  p_ext_h_id              IN      NUMBER,
24927  x_nearest_full_dump     IN OUT  NOCOPY DATE
24928 ) IS
24929 
24930   CURSOR Int_nearest_full_dump(p_ext_hist_id IN NUMBER ) IS
24931   SELECT    creation_date,
24932             NEW_attribute_value,
24933             NEW_active_start_date,
24934             NEW_active_end_date,
24935             NEW_context,
24936             NEW_attribute1 ,
24937             NEW_attribute2,
24938             NEW_attribute3,
24939             NEW_attribute4,
24940             NEW_attribute5,
24941             NEW_attribute6,
24942             NEW_attribute7,
24943             NEW_attribute8,
24944             NEW_attribute9,
24945             NEW_attribute10,
24946             NEW_attribute11,
24947             NEW_attribute12,
24948             NEW_attribute13,
24949             NEW_attribute14,
24950             NEW_attribute15
24951   FROM      csi_iea_values_h
24952   WHERE     attribute_value_history_id = p_ext_hist_id
24953   AND       full_dump_flag = 'Y';
24954 
24955 BEGIN
24956 
24957   FOR C1 IN Int_nearest_full_dump(p_ext_h_id)
24958   LOOP
24959     x_nearest_full_dump         := C1.creation_date;
24960     x_ext_rec.attribute_value   := C1.NEW_attribute_value;
24961     x_ext_rec.active_start_date := C1.NEW_active_start_date;
24962     x_ext_rec.active_end_date   := C1.NEW_active_end_date;
24963     x_ext_rec.context           := C1.NEW_context;
24964     x_ext_rec.attribute1        := C1.NEW_attribute1;
24965     x_ext_rec.attribute2        := C1.NEW_attribute2;
24966     x_ext_rec.attribute3        := C1.NEW_attribute3;
24967     x_ext_rec.attribute4        := C1.NEW_attribute4;
24968     x_ext_rec.attribute5        := C1.NEW_attribute5;
24969     x_ext_rec.attribute6        := C1.NEW_attribute6;
24970     x_ext_rec.attribute7        := C1.NEW_attribute7;
24971     x_ext_rec.attribute8        := C1.NEW_attribute8;
24972     x_ext_rec.attribute9        := C1.NEW_attribute9;
24973     x_ext_rec.attribute10       := C1.NEW_attribute10;
24974     x_ext_rec.attribute11       := C1.NEW_attribute11;
24975     x_ext_rec.attribute12       := C1.NEW_attribute12;
24976     x_ext_rec.attribute13       := C1.NEW_attribute13;
24977     x_ext_rec.attribute14       := C1.NEW_attribute14;
24978     x_ext_rec.attribute15       := C1.NEW_attribute15;
24979   END LOOP;
24980 END Initialize_ext_rec ;
24981 
24982 
24983 
24984 /*----------------------------------------------------------*/
24985 /* Procedure name:  Construct_ext_from_hist                 */
24986 /* Description : This procudure recontructs the record      */
24987 /*                 from the history                         */
24988 /*----------------------------------------------------------*/
24989 
24990 PROCEDURE Construct_ext_from_hist
24991 ( x_ext_tbl           IN OUT  NOCOPY  csi_datastructures_pub.extend_attrib_values_tbl,
24992   p_time_stamp        IN       DATE
24993  ) IS
24994 
24995  l_nearest_full_dump      DATE := p_time_stamp;
24996  l_att_val_hist_id        NUMBER;
24997  l_ext_tbl                csi_datastructures_pub.extend_attrib_values_tbl;
24998  l_ext_count              NUMBER := 0;
24999  --
25000  Process_next             EXCEPTION;
25001 
25002  CURSOR get_nearest_full_dump(p_att_val_id IN NUMBER ,p_time IN DATE) IS
25003  SELECT MAX(attribute_value_history_id)
25004  FROM   csi_iea_values_h
25005  WHERE  creation_date <= p_time
25006  AND    attribute_value_id = p_att_val_id
25007  AND    full_dump_flag = 'Y' ;
25008 
25009 
25010  CURSOR get_ext_hist(p_att_val_id IN NUMBER ,
25011                      p_nearest_full_dump IN DATE,
25012                      p_time IN DATE ) IS
25013  SELECT    attribute_value_history_id,
25014            OLD_ATTRIBUTE_VALUE    ,
25015            NEW_ATTRIBUTE_VALUE,
25016            OLD_ACTIVE_START_DATE,
25017            NEW_ACTIVE_START_DATE,
25018            OLD_ACTIVE_END_DATE  ,
25019            NEW_ACTIVE_END_DATE  ,
25020            OLD_CONTEXT      ,
25021            NEW_CONTEXT      ,
25022            OLD_ATTRIBUTE1   ,
25023            NEW_ATTRIBUTE1   ,
25024            OLD_ATTRIBUTE2   ,
25025            NEW_ATTRIBUTE2   ,
25026            OLD_ATTRIBUTE3   ,
25027            NEW_ATTRIBUTE3   ,
25028            OLD_ATTRIBUTE4   ,
25029            NEW_ATTRIBUTE4   ,
25030            OLD_ATTRIBUTE5   ,
25031            NEW_ATTRIBUTE5   ,
25032            OLD_ATTRIBUTE6   ,
25033            NEW_ATTRIBUTE6   ,
25034            OLD_ATTRIBUTE7   ,
25035            NEW_ATTRIBUTE7   ,
25036            OLD_ATTRIBUTE8   ,
25037            NEW_ATTRIBUTE8   ,
25038            OLD_ATTRIBUTE9   ,
25039            NEW_ATTRIBUTE9   ,
25040            OLD_ATTRIBUTE10  ,
25041            NEW_ATTRIBUTE10  ,
25042            OLD_ATTRIBUTE11  ,
25043            NEW_ATTRIBUTE11  ,
25044            OLD_ATTRIBUTE12  ,
25045            NEW_ATTRIBUTE12  ,
25046            OLD_ATTRIBUTE13  ,
25047            NEW_ATTRIBUTE13  ,
25048            OLD_ATTRIBUTE14  ,
25049            NEW_ATTRIBUTE14  ,
25050            OLD_ATTRIBUTE15  ,
25051            NEW_ATTRIBUTE15
25052   FROM     csi_iea_values_h
25053   WHERE    creation_date <= p_time
25054   AND      creation_date >= p_nearest_full_dump
25055   AND      attribute_value_id = p_att_val_id
25056   ORDER BY creation_date;
25057 
25058   l_time_stamp  DATE := p_time_stamp;
25059 
25060 BEGIN
25061   l_ext_tbl := x_ext_tbl;
25062   IF l_ext_tbl.COUNT > 0 THEN
25063     FOR i IN l_ext_tbl.FIRST..l_ext_tbl.LAST LOOP
25064      BEGIN
25065         OPEN get_nearest_full_dump(l_ext_tbl(i).attribute_value_id, p_time_stamp);
25066         FETCH get_nearest_full_dump INTO l_att_val_hist_id ;
25067         CLOSE get_nearest_full_dump;
25068 
25069         IF  l_att_val_hist_id IS NOT NULL THEN
25070            Initialize_ext_rec( l_ext_tbl(i), l_att_val_hist_id  ,l_nearest_full_dump);
25071         ELSE
25072            Initialize_ext_rec_no_dump( l_ext_tbl(i), l_ext_tbl(i).attribute_value_id, l_time_stamp);
25073 
25074            l_nearest_full_dump :=  l_time_stamp;
25075          -- If the user chooses a date before the creation date of the instance
25076          -- then raise an error
25077            IF p_time_stamp < l_time_stamp THEN
25078               -- Messages Commented for bug 2423342. Records that do not qualify should get deleted.
25079               -- FND_MESSAGE.SET_NAME('CSI','CSI_H_DATE_BEFORE_CRE_DATE');
25080               -- FND_MESSAGE.SET_TOKEN('CREATION_DATE',to_char(l_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
25081               -- FND_MESSAGE.SET_TOKEN('USER_DATE',to_char(p_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
25082               -- FND_MSG_PUB.Add;
25083               -- RAISE FND_API.G_EXC_ERROR;
25084               l_ext_tbl.DELETE(i);
25085               RAISE Process_next;
25086            END IF;
25087         END IF;
25088 
25089         FOR C2 IN get_ext_hist(l_ext_tbl(i).attribute_value_id ,l_nearest_full_dump,p_time_stamp )
25090         LOOP
25091               IF (C2.OLD_ATTRIBUTE_VALUE IS NULL AND C2.NEW_ATTRIBUTE_VALUE IS NOT NULL)
25092               OR (C2.OLD_ATTRIBUTE_VALUE IS NOT NULL AND C2.NEW_ATTRIBUTE_VALUE IS NULL)
25093               OR (C2.OLD_ATTRIBUTE_VALUE <> C2.NEW_ATTRIBUTE_VALUE) THEN
25094                             l_ext_tbl(i).ATTRIBUTE_VALUE := C2.NEW_ATTRIBUTE_VALUE;
25095               END IF;
25096 
25097               IF (C2.OLD_ACTIVE_START_DATE IS NULL AND C2.NEW_ACTIVE_START_DATE IS NOT NULL)
25098               OR (C2.OLD_ACTIVE_START_DATE IS NOT NULL AND C2.NEW_ACTIVE_START_DATE IS NULL)
25099               OR (C2.OLD_ACTIVE_START_DATE <> C2.NEW_ACTIVE_START_DATE) THEN
25100                    l_ext_tbl(i).ACTIVE_START_DATE := C2.NEW_ACTIVE_START_DATE;
25101               END IF;
25102 
25103 
25104               IF (C2.OLD_ACTIVE_END_DATE IS NULL AND C2.NEW_ACTIVE_END_DATE IS NOT NULL)
25105               OR (C2.OLD_ACTIVE_END_DATE IS NOT NULL AND C2.NEW_ACTIVE_END_DATE IS NULL)
25106               OR (C2.OLD_ACTIVE_END_DATE <> C2.NEW_ACTIVE_END_DATE) THEN
25107                    l_ext_tbl(i).ACTIVE_END_DATE := C2.NEW_ACTIVE_END_DATE;
25108               END IF;
25109 
25110 
25111               IF (C2.OLD_CONTEXT IS NULL AND C2.NEW_CONTEXT IS NOT NULL)
25112               OR (C2.OLD_CONTEXT IS NOT NULL AND C2.NEW_CONTEXT IS NULL)
25113               OR (C2.OLD_CONTEXT <> C2.NEW_CONTEXT) THEN
25114                    l_ext_tbl(i).CONTEXT := C2.NEW_CONTEXT;
25115               END IF;
25116 
25117               IF (C2.OLD_ATTRIBUTE1 IS NULL AND C2.NEW_ATTRIBUTE1 IS NOT NULL)
25118               OR (C2.OLD_ATTRIBUTE1 IS NOT NULL AND C2.NEW_ATTRIBUTE1 IS NULL)
25119               OR (C2.OLD_ATTRIBUTE1 <> C2.NEW_ATTRIBUTE1) THEN
25120                    l_ext_tbl(i).ATTRIBUTE1 := C2.NEW_ATTRIBUTE1;
25121               END IF;
25122 
25123               IF (C2.OLD_ATTRIBUTE2 IS NULL AND C2.NEW_ATTRIBUTE2 IS NOT NULL)
25124               OR (C2.OLD_ATTRIBUTE2 IS NOT NULL AND C2.NEW_ATTRIBUTE2 IS NULL)
25125               OR (C2.OLD_ATTRIBUTE2 <> C2.NEW_ATTRIBUTE2) THEN
25126                    l_ext_tbl(i).ATTRIBUTE2 := C2.NEW_ATTRIBUTE2;
25127               END IF;
25128 
25129               IF (C2.OLD_ATTRIBUTE3 IS NULL AND C2.NEW_ATTRIBUTE3 IS NOT NULL)
25130               OR (C2.OLD_ATTRIBUTE3 IS NOT NULL AND C2.NEW_ATTRIBUTE3 IS NULL)
25131               OR (C2.OLD_ATTRIBUTE3 <> C2.NEW_ATTRIBUTE3) THEN
25132                    l_ext_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
25133               END IF;
25134 
25135               IF (C2.OLD_ATTRIBUTE4 IS NULL AND C2.NEW_ATTRIBUTE4 IS NOT NULL)
25136               OR (C2.OLD_ATTRIBUTE4 IS NOT NULL AND C2.NEW_ATTRIBUTE4 IS NULL)
25137               OR (C2.OLD_ATTRIBUTE4 <> C2.NEW_ATTRIBUTE4) THEN
25138                    l_ext_tbl(i).ATTRIBUTE4 := C2.NEW_ATTRIBUTE4;
25139               END IF;
25140 
25141 
25142               IF (C2.OLD_ATTRIBUTE5 IS NULL AND C2.NEW_ATTRIBUTE5 IS NOT NULL)
25143               OR (C2.OLD_ATTRIBUTE5 IS NOT NULL AND C2.NEW_ATTRIBUTE5 IS NULL)
25144               OR (C2.OLD_ATTRIBUTE5 <> C2.NEW_ATTRIBUTE5) THEN
25145                    l_ext_tbl(i).ATTRIBUTE5 := C2.NEW_ATTRIBUTE5;
25146               END IF;
25147 
25148 
25149               IF (C2.OLD_ATTRIBUTE6 IS NULL AND C2.NEW_ATTRIBUTE6 IS NOT NULL)
25150               OR (C2.OLD_ATTRIBUTE6 IS NOT NULL AND C2.NEW_ATTRIBUTE6 IS NULL)
25151               OR (C2.OLD_ATTRIBUTE6 <> C2.NEW_ATTRIBUTE6) THEN
25152                    l_ext_tbl(i).ATTRIBUTE6 := C2.NEW_ATTRIBUTE6;
25153               END IF;
25154 
25155               IF (C2.OLD_ATTRIBUTE7 IS NULL AND C2.NEW_ATTRIBUTE7 IS NOT NULL)
25156               OR (C2.OLD_ATTRIBUTE7 IS NOT NULL AND C2.NEW_ATTRIBUTE7 IS NULL)
25157               OR (C2.OLD_ATTRIBUTE7 <> C2.NEW_ATTRIBUTE7) THEN
25158                    l_ext_tbl(i).ATTRIBUTE7 := C2.NEW_ATTRIBUTE7;
25159               END IF;
25160 
25161               IF (C2.OLD_ATTRIBUTE8 IS NULL AND C2.NEW_ATTRIBUTE8 IS NOT NULL)
25162               OR (C2.OLD_ATTRIBUTE8 IS NOT NULL AND C2.NEW_ATTRIBUTE8 IS NULL)
25163               OR (C2.OLD_ATTRIBUTE8 <> C2.NEW_ATTRIBUTE8) THEN
25164                    l_ext_tbl(i).ATTRIBUTE8 := C2.NEW_ATTRIBUTE8;
25165               END IF;
25166 
25167               IF (C2.OLD_ATTRIBUTE9 IS NULL AND C2.NEW_ATTRIBUTE9 IS NOT NULL)
25168               OR (C2.OLD_ATTRIBUTE9 IS NOT NULL AND C2.NEW_ATTRIBUTE9 IS NULL)
25169               OR (C2.OLD_ATTRIBUTE9 <> C2.NEW_ATTRIBUTE9) THEN
25170                    l_ext_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
25171               END IF;
25172 
25173 
25174               IF (C2.OLD_ATTRIBUTE10 IS NULL AND C2.NEW_ATTRIBUTE10 IS NOT NULL)
25175               OR (C2.OLD_ATTRIBUTE10 IS NOT NULL AND C2.NEW_ATTRIBUTE10 IS NULL)
25176               OR (C2.OLD_ATTRIBUTE10 <> C2.NEW_ATTRIBUTE10) THEN
25177                    l_ext_tbl(i).ATTRIBUTE10 := C2.NEW_ATTRIBUTE10;
25178               END IF;
25179 
25180 
25181 
25182               IF (C2.OLD_ATTRIBUTE11 IS NULL AND C2.NEW_ATTRIBUTE11 IS NOT NULL)
25183               OR (C2.OLD_ATTRIBUTE11 IS NOT NULL AND C2.NEW_ATTRIBUTE11 IS NULL)
25184               OR (C2.OLD_ATTRIBUTE11 <> C2.NEW_ATTRIBUTE11) THEN
25185                    l_ext_tbl(i).ATTRIBUTE11 := C2.NEW_ATTRIBUTE11;
25186               END IF;
25187 
25188               IF (C2.OLD_ATTRIBUTE12 IS NULL AND C2.NEW_ATTRIBUTE12 IS NOT NULL)
25189               OR (C2.OLD_ATTRIBUTE12 IS NOT NULL AND C2.NEW_ATTRIBUTE12 IS NULL)
25190               OR (C2.OLD_ATTRIBUTE12 <> C2.NEW_ATTRIBUTE12) THEN
25191                    l_ext_tbl(i).ATTRIBUTE12 := C2.NEW_ATTRIBUTE12;
25192               END IF;
25193 
25194 
25195               IF (C2.OLD_ATTRIBUTE13 IS NULL AND C2.NEW_ATTRIBUTE13 IS NOT NULL)
25196               OR (C2.OLD_ATTRIBUTE13 IS NOT NULL AND C2.NEW_ATTRIBUTE13 IS NULL)
25197               OR (C2.OLD_ATTRIBUTE13 <> C2.NEW_ATTRIBUTE13) THEN
25198                    l_ext_tbl(i).ATTRIBUTE13 := C2.NEW_ATTRIBUTE13;
25199               END IF;
25200 
25201 
25202               IF (C2.OLD_ATTRIBUTE14 IS NULL AND C2.NEW_ATTRIBUTE14 IS NOT NULL)
25203               OR (C2.OLD_ATTRIBUTE14 IS NOT NULL AND C2.NEW_ATTRIBUTE14 IS NULL)
25204               OR (C2.OLD_ATTRIBUTE14 <> C2.NEW_ATTRIBUTE14) THEN
25205                    l_ext_tbl(i).ATTRIBUTE14 := C2.NEW_ATTRIBUTE14;
25206               END IF;
25207 
25208               IF (C2.OLD_ATTRIBUTE15 IS NULL AND C2.NEW_ATTRIBUTE15 IS NOT NULL)
25209               OR (C2.OLD_ATTRIBUTE15 IS NOT NULL AND C2.NEW_ATTRIBUTE15 IS NULL)
25210               OR (C2.OLD_ATTRIBUTE15 <> C2.NEW_ATTRIBUTE15) THEN
25211                    l_ext_tbl(i).ATTRIBUTE15 := C2.NEW_ATTRIBUTE15;
25212               END IF;
25213         END LOOP;
25214        EXCEPTION
25215           WHEN Process_next THEN
25216              NULL;
25217        END;
25218      END LOOP;
25219      x_ext_tbl.DELETE;
25220      IF l_ext_tbl.count > 0 THEN
25221         FOR ext_row in l_ext_tbl.FIRST .. l_ext_tbl.LAST
25222         LOOP
25223            IF l_ext_tbl.EXISTS(ext_row) THEN
25224               l_ext_count := l_ext_count + 1;
25225               x_ext_tbl(l_ext_count) := l_ext_tbl(ext_row);
25226            END IF;
25227         END LOOP;
25228      END IF;
25229   END IF;
25230 END Construct_ext_from_hist;
25231 
25232 
25233 /*----------------------------------------------------------*/
25234 /* Procedure name:  Define_ext_Columns                      */
25235 /* Description : This procudure defines the columns         */
25236 /*                        for the Dynamic SQL               */
25237 /*----------------------------------------------------------*/
25238 
25239 
25240 PROCEDURE Define_ext_Columns
25241   ( p_get_ext_cursor_id      IN   NUMBER
25242    )
25243 IS
25244   l_ext_rec           csi_datastructures_pub.extend_attrib_values_rec;
25245 
25246 BEGIN
25247     dbms_sql.define_column(p_get_ext_cursor_id, 1,  l_ext_rec.attribute_value_id);
25248     dbms_sql.define_column(p_get_ext_cursor_id, 2,  l_ext_rec.attribute_id);
25249     dbms_sql.define_column(p_get_ext_cursor_id, 3,  l_ext_rec.instance_id);
25250     dbms_sql.define_column(p_get_ext_cursor_id, 4,  l_ext_rec.attribute_code,30);
25251     dbms_sql.define_column(p_get_ext_cursor_id, 5,  l_ext_rec.attribute_value,240);
25252     dbms_sql.define_column(p_get_ext_cursor_id, 6,  l_ext_rec.active_start_date);
25253     dbms_sql.define_column(p_get_ext_cursor_id, 7,  l_ext_rec.active_end_date);
25254     dbms_sql.define_column(p_get_ext_cursor_id, 8,  l_ext_rec.context,30);
25255     dbms_sql.define_column(p_get_ext_cursor_id, 9,  l_ext_rec.attribute1,150);
25256     dbms_sql.define_column(p_get_ext_cursor_id, 10,  l_ext_rec.attribute2,150);
25257     dbms_sql.define_column(p_get_ext_cursor_id, 11, l_ext_rec.attribute3,150);
25258     dbms_sql.define_column(p_get_ext_cursor_id, 12, l_ext_rec.attribute4,150);
25259     dbms_sql.define_column(p_get_ext_cursor_id, 13, l_ext_rec.attribute5,150);
25260     dbms_sql.define_column(p_get_ext_cursor_id, 14, l_ext_rec.attribute6,150);
25261     dbms_sql.define_column(p_get_ext_cursor_id, 15, l_ext_rec.attribute7,150);
25262     dbms_sql.define_column(p_get_ext_cursor_id, 16, l_ext_rec.attribute8,150);
25263     dbms_sql.define_column(p_get_ext_cursor_id, 17, l_ext_rec.attribute9,150);
25264     dbms_sql.define_column(p_get_ext_cursor_id, 18, l_ext_rec.attribute10,150);
25265     dbms_sql.define_column(p_get_ext_cursor_id, 19, l_ext_rec.attribute11,150);
25266     dbms_sql.define_column(p_get_ext_cursor_id, 20, l_ext_rec.attribute12,150);
25267     dbms_sql.define_column(p_get_ext_cursor_id, 21, l_ext_rec.attribute13,150);
25268     dbms_sql.define_column(p_get_ext_cursor_id, 22, l_ext_rec.attribute14,150);
25269     dbms_sql.define_column(p_get_ext_cursor_id, 23, l_ext_rec.attribute15,150);
25270     dbms_sql.define_column(p_get_ext_cursor_id, 24, l_ext_rec.object_version_number);
25271 END Define_ext_Columns;
25272 
25273 
25274 /*----------------------------------------------------------*/
25275 /* Procedure name:  Get_ext_Column_Values                   */
25276 /* Description : This procudure gets the column values      */
25277 /*                        for the Dynamic SQL               */
25278 /*----------------------------------------------------------*/
25279 
25280 PROCEDURE Get_ext_Column_Values
25281    (p_get_ext_cursor_id      IN   NUMBER,
25282     x_ext_rec                OUT  NOCOPY csi_datastructures_pub.extend_attrib_values_rec
25283     )
25284 IS
25285 BEGIN
25286      dbms_sql.column_value(p_get_ext_cursor_id, 1, x_ext_rec.attribute_value_id);
25287      dbms_sql.column_value(p_get_ext_cursor_id, 2, x_ext_rec.attribute_id);
25288      dbms_sql.column_value(p_get_ext_cursor_id, 3, x_ext_rec.instance_id);
25289      dbms_sql.column_value(p_get_ext_cursor_id, 4, x_ext_rec.attribute_code);
25290      dbms_sql.column_value(p_get_ext_cursor_id, 5, x_ext_rec.attribute_value);
25291      dbms_sql.column_value(p_get_ext_cursor_id, 6, x_ext_rec.active_start_date);
25292      dbms_sql.column_value(p_get_ext_cursor_id, 7, x_ext_rec.active_end_date);
25293      dbms_sql.column_value(p_get_ext_cursor_id, 8, x_ext_rec.context);
25294      dbms_sql.column_value(p_get_ext_cursor_id, 9, x_ext_rec.attribute1);
25295      dbms_sql.column_value(p_get_ext_cursor_id, 10, x_ext_rec.attribute2);
25296      dbms_sql.column_value(p_get_ext_cursor_id, 11, x_ext_rec.attribute3);
25297      dbms_sql.column_value(p_get_ext_cursor_id, 12, x_ext_rec.attribute4);
25298      dbms_sql.column_value(p_get_ext_cursor_id, 13, x_ext_rec.attribute5);
25299      dbms_sql.column_value(p_get_ext_cursor_id, 14, x_ext_rec.attribute6);
25300      dbms_sql.column_value(p_get_ext_cursor_id, 15, x_ext_rec.attribute7);
25301      dbms_sql.column_value(p_get_ext_cursor_id, 16, x_ext_rec.attribute8);
25302      dbms_sql.column_value(p_get_ext_cursor_id, 17, x_ext_rec.attribute9);
25303      dbms_sql.column_value(p_get_ext_cursor_id, 18, x_ext_rec.attribute10);
25304      dbms_sql.column_value(p_get_ext_cursor_id, 19, x_ext_rec.attribute11);
25305      dbms_sql.column_value(p_get_ext_cursor_id, 20, x_ext_rec.attribute12);
25306      dbms_sql.column_value(p_get_ext_cursor_id, 21, x_ext_rec.attribute13);
25307      dbms_sql.column_value(p_get_ext_cursor_id, 22, x_ext_rec.attribute14);
25308      dbms_sql.column_value(p_get_ext_cursor_id, 23, x_ext_rec.attribute15);
25309      dbms_sql.column_value(p_get_ext_cursor_id, 24, x_ext_rec.object_version_number);
25310 
25311 END Get_ext_Column_Values;
25312 
25313 
25314 
25315 
25316 /*----------------------------------------------------------*/
25317 /* Procedure name:  Bind_ext_variable                       */
25318 /* Description : This procudure binds the column values     */
25319 /*                        for the Dynamic SQL               */
25320 /*----------------------------------------------------------*/
25321 
25322 PROCEDURE Bind_ext_variable
25323  ( p_ext_query_rec    IN    csi_datastructures_pub.extend_attrib_query_rec,
25324    p_cur_get_ext      IN    NUMBER
25325  )
25326 IS
25327 BEGIN
25328      IF( (p_ext_query_rec.attribute_value_id IS NOT NULL)
25329        AND (p_ext_query_rec.attribute_value_id <> FND_API.G_MISS_NUM))  THEN
25330         DBMS_SQL.BIND_VARIABLE(p_cur_get_ext, ':attribute_value_id', p_ext_query_rec.attribute_value_id);
25331      END IF;
25332 
25333      IF( (p_ext_query_rec.instance_id IS NOT NULL)
25334        AND (p_ext_query_rec.instance_id <> FND_API.G_MISS_NUM))  THEN
25335         DBMS_SQL.BIND_VARIABLE(p_cur_get_ext, ':instance_id', p_ext_query_rec.instance_id);
25336      END IF;
25337 
25338      IF( (p_ext_query_rec.attribute_id IS NOT NULL)
25339        AND (p_ext_query_rec.attribute_id<> FND_API.G_MISS_NUM))  THEN
25340         DBMS_SQL.BIND_VARIABLE(p_cur_get_ext, ':attribute_id', p_ext_query_rec.attribute_id);
25341      END IF;
25342 
25343 END Bind_ext_variable;
25344 
25345 
25346 
25347 
25348 
25349 /*----------------------------------------------------------*/
25350 /* Procedure name:  Gen_ext_Where_Clause                    */
25351 /* Description : Procedure used to  generate the where      */
25352 /*                clause  for Extended Attributes units     */
25353 /*----------------------------------------------------------*/
25354 
25355 PROCEDURE Gen_ext_Where_Clause
25356 ( p_ext_query_rec       IN       csi_datastructures_pub.extend_attrib_query_rec
25357  ,x_where_clause           OUT   NOCOPY VARCHAR2
25358  ) IS
25359 
25360 BEGIN
25361 
25362    -- Assign null at the start
25363    x_where_clause := '';
25364 
25365    IF (( p_ext_query_rec.attribute_value_id  IS NOT NULL)  AND
25366        ( p_ext_query_rec.attribute_value_id  <> FND_API.G_MISS_NUM)) THEN
25367         x_where_clause := ' cv.attribute_value_id = :attribute_value_id ';
25368    ELSIF ( p_ext_query_rec.attribute_value_id  IS NULL)  THEN
25369         x_where_clause := ' cv.attribute_value_id IS NULL ';
25370    END IF;
25371 
25372    IF ((p_ext_query_rec.instance_id IS NOT NULL)  AND
25373        (p_ext_query_rec.instance_id <> FND_API.G_MISS_NUM))   THEN
25374         IF x_where_clause IS NULL THEN
25375             x_where_clause := ' cv.instance_id = :instance_id ';
25376         ELSE
25377             x_where_clause := x_where_clause||' AND '||' cv.instance_id = :instance_id ';
25378         END IF;
25379    ELSIF (p_ext_query_rec.instance_id IS NULL)  THEN
25380         IF x_where_clause IS NULL THEN
25381             x_where_clause := ' cv.instance_id IS NULL ';
25382         ELSE
25383             x_where_clause := x_where_clause||' AND '||' cv.instance_id IS NULL ';
25384         END IF;
25385    END IF;
25386 
25387    IF ((p_ext_query_rec.attribute_id  IS NOT NULL) AND
25388        (p_ext_query_rec.attribute_id  <> FND_API.G_MISS_NUM)) THEN
25389         IF x_where_clause IS NULL THEN
25390             x_where_clause := ' cv.attribute_id = :attribute_id ';
25391         ELSE
25392             x_where_clause := x_where_clause||' AND '||' cv.attribute_id = :attribute_id ';
25393         END IF;
25394    ELSIF (p_ext_query_rec.attribute_id  IS NULL) THEN
25395         IF x_where_clause IS NULL THEN
25396             x_where_clause := ' cv.attribute_id IS NULL ';
25397         ELSE
25398             x_where_clause := x_where_clause||' AND '||' cv.attribute_id IS NULL ';
25399         END IF;
25400    END IF ;
25401 
25402 END Gen_ext_Where_Clause;
25403 
25404 
25405 
25406 /*------------------------------------------------------*/
25407 /* procedure name: create_extended_attrib_values        */
25408 /* description :  Associates extended attributes to an  */
25409 /*                item instance                         */
25410 /*                                                      */
25411 /*------------------------------------------------------*/
25412 
25413 PROCEDURE create_extended_attrib_values
25414  (
25415       p_api_version        IN       NUMBER
25416      ,p_commit             IN       VARCHAR2
25417      ,p_init_msg_list      IN       VARCHAR2
25418      ,p_validation_level   IN       NUMBER
25419      ,p_ext_attrib_rec     IN OUT NOCOPY csi_datastructures_pub.extend_attrib_values_rec
25420      ,p_txn_rec            IN OUT NOCOPY csi_datastructures_pub.transaction_rec
25421      ,x_return_status         OUT NOCOPY VARCHAR2
25422      ,x_msg_count             OUT NOCOPY NUMBER
25423      ,x_msg_data              OUT NOCOPY VARCHAR2
25424      ,p_ext_id_tbl         IN OUT NOCOPY csi_item_instance_pvt.ext_id_tbl
25425      ,p_ext_count_rec      IN OUT NOCOPY csi_item_instance_pvt.ext_count_rec
25426      ,p_ext_attr_tbl       IN OUT NOCOPY csi_item_instance_pvt.ext_attr_tbl
25427      ,p_ext_cat_tbl        IN OUT NOCOPY csi_item_instance_pvt.ext_cat_tbl
25428      ,p_called_from_grp    IN VARCHAR2
25429  )
25430 IS
25431     l_api_name                   CONSTANT VARCHAR2(30) := 'create_extended_attrib_values';
25432     l_api_version                CONSTANT NUMBER       := 1.0;
25433     l_debug_level                         NUMBER;
25434     l_msg_index                           NUMBER;
25435     l_msg_count                           NUMBER;
25436     l_attribute_value_id                  NUMBER       := p_ext_attrib_rec.attribute_value_id;
25437     l_attribute_level                     VARCHAR2(30);
25438     l_master_organization_id              NUMBER;
25439     l_inventory_item_id                   NUMBER;
25440     l_ori_inventory_item_id               NUMBER;
25441     l_ori_master_org_id                   NUMBER;
25442     l_item_category_id                    NUMBER;
25443     l_instance_id                         NUMBER;
25444     l_attribute_value_h_id                NUMBER;
25445     l_dump_frequency_flag                 VARCHAR2(30);
25446     l_record_found               BOOLEAN := FALSE;
25447     l_exists_flag                         VARCHAR2(1);
25448     l_valid_flag                          VARCHAR2(1);
25449 
25450 BEGIN
25451 
25452     -- Standard Start of API savepoint
25453     SAVEPOINT create_extended_attrib_values;
25454 
25455     -- Standard call to check for call compatibility.
25456     IF NOT FND_API.Compatible_API_Call (l_api_version,
25457                                         p_api_version,
25458                                         l_api_name ,
25459                                         g_pkg_name)
25460     THEN
25461       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
25462     END IF;
25463 
25464 
25465     -- Initialize message list if p_init_msg_list is set to TRUE.
25466     IF FND_API.to_Boolean( p_init_msg_list ) THEN
25467       FND_MSG_PUB.initialize;
25468     END IF;
25469 
25470 
25471     --  Initialize API return status to success
25472     x_return_status := FND_API.G_RET_STS_SUCCESS;
25473 
25474 
25475     -- Check the profile option debug_level for debug message reporting
25476     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
25477 
25478     -- If debug_level = 1 then dump the procedure name
25479     IF (l_debug_level > 0) THEN
25480             csi_gen_utility_pvt.put_line( 'create_extended_attrib_values');
25481     END IF;
25482 
25483 
25484      -- If the debug level = 2 then dump all the parameters values.
25485      IF (l_debug_level > 1) THEN
25486            csi_gen_utility_pvt.put_line( p_api_version ||'-'
25487                                       || p_commit           ||'-'
25488                                       || p_init_msg_list     ||'-'
25489                                       || p_validation_level  );
25490          -- Dump extended attribute rec
25491          csi_gen_utility_pvt.dump_ext_attrib_values_rec(p_ext_attrib_rec);
25492           -- Dump txn_rec
25493          csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
25494       END IF;
25495 
25496 
25497       -- Start API body
25498       --
25499       -- Initialize the Extended Attrib count
25500       --
25501       IF p_ext_count_rec.ext_count IS NULL OR
25502          p_ext_count_rec.ext_count = FND_API.G_MISS_NUM THEN
25503          p_ext_count_rec.ext_count := 0;
25504       END IF;
25505       --
25506       IF p_ext_count_rec.ext_attr_count IS NULL OR
25507          p_ext_count_rec.ext_attr_count = FND_API.G_MISS_NUM THEN
25508          p_ext_count_rec.ext_attr_count := 0;
25509       END IF;
25510       IF p_ext_count_rec.ext_cat_count IS NULL OR
25511          p_ext_count_rec.ext_cat_count = FND_API.G_MISS_NUM THEN
25512          p_ext_count_rec.ext_cat_count := 0;
25513       END IF;
25514       --
25515       -- Verify if instance id is ok
25516          l_valid_flag := 'Y';
25517          l_exists_flag := 'N';
25518          IF ((p_ext_attrib_rec.instance_id IS NOT NULL AND
25519               p_ext_attrib_rec.instance_id <> FND_API.G_MISS_NUM))
25520          THEN
25521             IF p_ext_id_tbl.count > 0 THEN
25522                FOR ext_count in p_ext_id_tbl.FIRST .. p_ext_id_tbl.LAST
25523                LOOP
25524                   IF p_ext_id_tbl(ext_count).instance_id = p_ext_attrib_rec.instance_id
25525                   THEN
25526                      l_ori_inventory_item_id := p_ext_id_tbl(ext_count).inv_item_id;
25527                      l_ori_master_org_id  := p_ext_id_tbl(ext_count).inv_mast_org_id;
25528                      l_valid_flag := p_ext_id_tbl(ext_count).valid_flag;
25529                      l_exists_flag := 'Y';
25530                      EXIT;
25531                   END IF;
25532                END LOOP;
25533                --
25534                IF l_valid_flag <> 'Y'
25535                THEN
25536                    FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INSTANCE_ID');
25537                    FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_ext_attrib_rec.instance_id);
25538                    FND_MSG_PUB.Add;
25539                   RAISE fnd_api.g_exc_error;
25540                END IF;
25541             END IF;
25542             --
25543             IF l_exists_flag <> 'Y'
25544             THEN
25545                p_ext_count_rec.ext_count := p_ext_count_rec.ext_count + 1;
25546                p_ext_id_tbl(p_ext_count_rec.ext_count).instance_id := p_ext_attrib_rec.instance_id;
25547                    IF NOT(csi_extend_attrib_vld_pvt.Is_valid_instance_id
25548                               (p_ext_attrib_rec.instance_id
25549                                ,'INSERT'
25550                                ,l_ori_inventory_item_id
25551                                ,l_ori_master_org_id)) THEN
25552                       p_ext_id_tbl(p_ext_count_rec.ext_count).valid_flag := 'N';
25553                       RAISE fnd_api.g_exc_error;
25554                    ELSE
25555                       p_ext_id_tbl(p_ext_count_rec.ext_count).valid_flag := 'Y';
25556                       p_ext_id_tbl(p_ext_count_rec.ext_count).inv_item_id := l_ori_inventory_item_id;
25557                       p_ext_id_tbl(p_ext_count_rec.ext_count).inv_mast_org_id := l_ori_master_org_id;
25558                    END IF;
25559             END IF;
25560          END IF;
25561       --
25562 
25563       -- Verify if attribute_id is ok
25564          l_valid_flag := 'Y';
25565          l_exists_flag := 'N';
25566          IF ((p_ext_attrib_rec.attribute_id IS NOT NULL) AND
25567              (p_ext_attrib_rec.attribute_id <> FND_API.G_MISS_NUM))
25568          THEN
25569             IF p_ext_attr_tbl.count > 0
25570             THEN
25571                FOR ext_attr_count in p_ext_attr_tbl.FIRST .. p_ext_attr_tbl.LAST
25572                LOOP
25573                   IF p_ext_attr_tbl(ext_attr_count).attribute_id = p_ext_attrib_rec.attribute_id
25574                   THEN
25575                      l_inventory_item_id := p_ext_attr_tbl(ext_attr_count).inv_item_id;
25576                      l_master_organization_id := p_ext_attr_tbl(ext_attr_count).inv_mast_org_id;
25577                      l_item_category_id := p_ext_attr_tbl(ext_attr_count).item_category_id;
25578                      l_attribute_level := p_ext_attr_tbl(ext_attr_count).attribute_level;
25579                      l_instance_id := p_ext_attr_tbl(ext_attr_count).instance_id;
25580                      l_valid_flag := p_ext_attr_tbl(ext_attr_count).valid_flag;
25581                      l_exists_flag := 'Y';
25582                      EXIT;
25583                   END IF;
25584                END LOOP;
25585                --
25586                IF l_valid_flag <> 'Y'
25587                THEN
25588                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ATTRIBUTE_ID');
25589                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE_ID',p_ext_attrib_rec.attribute_id);
25590                   FND_MSG_PUB.Add;
25591                   RAISE fnd_api.g_exc_error;
25592                END IF;
25593             END IF;
25594             --
25595             IF l_exists_flag <> 'Y'
25596             THEN
25597                p_ext_count_rec.ext_attr_count := p_ext_count_rec.ext_attr_count + 1;
25598                p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).attribute_id := p_ext_attrib_rec.attribute_id;
25599                    IF NOT(csi_extend_attrib_vld_pvt.Is_valid_attribute_id
25600                              (p_ext_attrib_rec.attribute_id
25601                               ,l_attribute_level
25602                               ,l_master_organization_id
25603                               ,l_inventory_item_id
25604                               ,l_item_category_id
25605                               ,l_instance_id
25606                             )) THEN
25607                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).valid_flag := 'N';
25608                       RAISE fnd_api.g_exc_error;
25609                    ELSE
25610                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).valid_flag := 'Y';
25611                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).inv_item_id := l_inventory_item_id;
25612                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).inv_mast_org_id := l_master_organization_id;
25613                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).attribute_level := l_attribute_level;
25614                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).item_category_id := l_item_category_id;
25615                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).instance_id := l_instance_id;
25616                    END IF;
25617             END IF;
25618          ELSE
25619             FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ATTRIBUTE_ID');
25620             FND_MESSAGE.SET_TOKEN('ATTRIBUTE_ID',p_ext_attrib_rec.attribute_id);
25621             FND_MSG_PUB.Add;
25622          END IF;
25623        --
25624 
25625        -- Added by sk for bug 2232880
25626             l_record_found  := FALSE;
25627             IF ( (p_called_from_grp <> FND_API.G_TRUE) AND
25628                  (p_ext_attrib_rec.attribute_value_id IS NULL OR
25629                   p_ext_attrib_rec.attribute_value_id = fnd_api.g_miss_num) )
25630             THEN
25631              BEGIN
25632                   SELECT attribute_value_id,
25633                          object_version_number
25634                   INTO   p_ext_attrib_rec.attribute_value_id,
25635                          p_ext_attrib_rec.object_version_number
25636                   FROM csi_iea_values
25637                   WHERE instance_id          = p_ext_attrib_rec.instance_id
25638                   AND attribute_id           = p_ext_attrib_rec.attribute_id
25639                   AND active_end_date        < SYSDATE
25640                   AND ROWNUM=1;
25641                   l_record_found  := TRUE;
25642              EXCEPTION
25643                WHEN OTHERS THEN
25644                 NULL;
25645              END;
25646             END IF;
25647         IF l_record_found
25648         THEN
25649            -- Unexpire the extended attrib values
25650             IF p_ext_attrib_rec.active_end_date = fnd_api.g_miss_date
25651             THEN
25652                p_ext_attrib_rec.active_end_date := NULL;
25653             END IF;
25654              csi_item_instance_pvt.update_extended_attrib_values
25655              (p_api_version       => p_api_version
25656              ,p_commit            => fnd_api.g_false
25657              ,p_init_msg_list     => p_init_msg_list
25658              ,p_validation_level  => p_validation_level
25659              ,p_ext_attrib_rec    => p_ext_attrib_rec
25660              ,p_txn_rec           => p_txn_rec
25661              ,x_return_status     => x_return_status
25662              ,x_msg_count         => x_msg_count
25663              ,x_msg_data          => x_msg_data
25664              );
25665 
25666              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
25667                 l_msg_index := 1;
25668                    l_msg_count := x_msg_count;
25669                 WHILE l_msg_count > 0 LOOP
25670                      x_msg_data := FND_MSG_PUB.GET
25671                           (l_msg_index,
25672                            FND_API.G_FALSE      );
25673 
25674                      csi_gen_utility_pvt.put_line( ' Failed Pvt:update_extended_attrib_values..');
25675                      csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
25676                      l_msg_index := l_msg_index + 1;
25677                      l_msg_count := l_msg_count - 1;
25678                 END LOOP;
25679                 RAISE FND_API.G_EXC_ERROR;
25680              END IF;
25681         ELSE -- -- Added by sk for bug 2232880
25682     -- Verify that alternate PK is valid
25683        IF p_called_from_grp <> FND_API.G_TRUE THEN
25684           IF NOT(csi_extend_attrib_vld_pvt.Alternate_PK_exists
25685                (p_ext_attrib_rec.instance_id
25686                 ,p_ext_attrib_rec.attribute_id
25687                 )) THEN
25688              RAISE FND_API.G_EXC_ERROR;
25689           END IF;
25690        END IF;
25691 
25692        -- Check start effective date
25693        IF p_called_from_grp <> FND_API.G_TRUE THEN
25694           IF NOT(csi_extend_attrib_vld_pvt.Is_StartDate_Valid
25695                                 (p_ext_attrib_rec.ACTIVE_START_DATE,
25696                                  p_ext_attrib_rec.ACTIVE_END_DATE ,
25697                                  p_ext_attrib_rec.INSTANCE_ID )) THEN
25698              RAISE FND_API.G_EXC_ERROR;
25699           END IF;
25700        END IF;
25701 
25702 
25703        -- Check end effective date
25704        IF p_called_from_grp <> FND_API.G_TRUE THEN
25705           IF p_ext_attrib_rec.ACTIVE_END_DATE is NOT NULL THEN
25706              IF NOT(csi_extend_attrib_vld_pvt.Is_EndDate_Valid
25707                              (p_ext_attrib_rec.ACTIVE_START_DATE,
25708                               p_ext_attrib_rec.ACTIVE_END_DATE ,
25709                               p_ext_attrib_rec.INSTANCE_ID ,
25710                               p_ext_attrib_rec.ATTRIBUTE_VALUE_ID,
25711 					          p_txn_rec.TRANSACTION_ID)) THEN
25712                 RAISE FND_API.G_EXC_ERROR;
25713              END IF;
25714           END IF;
25715        END IF;
25716        --
25717        -- Verify that the attribute level satisfies all requirements
25718        IF l_attribute_level = 'CATEGORY'
25719        THEN
25720          IF ((l_item_category_id IS NOT NULL) AND (l_item_category_id <> FND_API.G_MISS_NUM))
25721          THEN
25722             l_valid_flag := 'Y';
25723             l_exists_flag := 'N';
25724               IF p_ext_cat_tbl.count > 0
25725               THEN
25726                  FOR ext_cat_count in p_ext_cat_tbl.FIRST .. p_ext_cat_tbl.LAST
25727                  LOOP
25728                     IF p_ext_cat_tbl(ext_cat_count).item_cat_id = l_item_category_id
25729                     THEN
25730                        l_valid_flag := p_ext_cat_tbl(ext_cat_count).valid_flag;
25731                        l_exists_flag := 'Y';
25732                        EXIT;
25733                     END IF;
25734                  END LOOP;
25735                  --
25736                  IF l_valid_flag <> 'Y'
25737                  THEN
25738                     FND_MESSAGE.SET_NAME('CSI','CSI_API_INV_ATT_LEV_CAT');
25739                     FND_MESSAGE.SET_TOKEN('ATTRIBUTE_LEVEL_ITEM',l_ori_inventory_item_id);
25740                     FND_MESSAGE.SET_TOKEN('ATTRIBUTE_LEVEL_ORG',l_ori_master_org_id);
25741                     FND_MESSAGE.SET_TOKEN('ATTRIBUTE_LEVEL_CAT',l_item_category_id);
25742                     FND_MSG_PUB.Add;
25743                     RAISE fnd_api.g_exc_error;
25744                  END IF;
25745               END IF;
25746               --
25747               IF l_exists_flag <> 'Y'
25748               THEN
25749                  p_ext_count_rec.ext_cat_count := p_ext_count_rec.ext_cat_count + 1;
25750                  p_ext_cat_tbl(p_ext_count_rec.ext_cat_count).item_cat_id := l_item_category_id;
25751                       IF NOT(csi_extend_attrib_vld_pvt.Is_Valid_attrib_level_content
25752                                 ( l_attribute_level
25753                                  ,l_master_organization_id
25754                                  ,l_inventory_item_id
25755                                  ,l_item_category_id
25756                                  ,l_instance_id
25757                                  ,p_ext_attrib_rec.instance_id
25758                                  ,l_ori_inventory_item_id
25759                                  ,l_ori_master_org_id
25760                              )) THEN
25761                            --p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).valid_flag := 'N'; -- commented for bug 3114946
25762                            p_ext_cat_tbl(p_ext_count_rec.ext_cat_count).valid_flag := 'N'; -- Added for bug 3114946
25763                          RAISE fnd_api.g_exc_error;
25764                       ELSE
25765                            --p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).valid_flag := 'Y'; -- commented for bug 3114946
25766                            p_ext_cat_tbl(p_ext_count_rec.ext_cat_count).valid_flag := 'Y'; -- Added for bug 3114946
25767                       END IF;
25768               END IF;
25769          END IF;
25770        ELSE -- attribute level <> 'CATEGORY'
25771             IF NOT(csi_extend_attrib_vld_pvt.Is_Valid_attrib_level_content
25772                     (l_attribute_level
25773                     ,l_master_organization_id
25774                     ,l_inventory_item_id
25775                     ,l_item_category_id
25776                     ,l_instance_id
25777                     ,p_ext_attrib_rec.instance_id
25778                     ,l_ori_inventory_item_id
25779                     ,l_ori_master_org_id
25780                   )) THEN
25781               RAISE FND_API.G_EXC_ERROR;
25782             END IF;
25783        END IF;
25784 
25785        -- If the attribute_value_id passed is null then generate from sequence
25786        -- and check if the value exists . If exists then generate again from the sequence
25787        -- till we get a value that does not exist
25788        IF l_attribute_value_id IS NULL OR
25789           l_attribute_value_id = FND_API.G_MISS_NUM THEN
25790              l_attribute_value_id := csi_extend_attrib_vld_pvt.get_attribute_value_id;
25791            p_ext_attrib_rec.attribute_value_id := l_attribute_value_id;
25792            WHILE NOT(csi_extend_attrib_vld_pvt.Is_valid_attribute_value_id
25793                (l_attribute_value_id))
25794            LOOP
25795               l_attribute_value_id := csi_extend_attrib_vld_pvt.get_attribute_value_id;
25796             p_ext_attrib_rec.attribute_value_id := l_attribute_value_id;
25797          END LOOP;
25798        ELSE
25799           -- Validate attribute_value_id
25800           IF NOT(csi_extend_attrib_vld_pvt.Is_valid_attribute_value_id
25801                (p_ext_attrib_rec.attribute_value_id)) THEN
25802             RAISE FND_API.G_EXC_ERROR;
25803           END IF;
25804 
25805        END IF;
25806 
25807        IF p_called_from_grp <> FND_API.G_TRUE THEN
25808           -- Create a record in csi_iea_values
25809           CSI_IEA_VALUES_PKG.Insert_Row
25810                   (
25811                   l_attribute_value_id
25812                   ,p_ext_attrib_rec.attribute_id
25813                   ,p_ext_attrib_rec.instance_id
25814                   ,p_ext_attrib_rec.attribute_value
25815                   ,p_ext_attrib_rec.active_start_date
25816                   ,p_ext_attrib_rec.active_end_date
25817                   ,p_ext_attrib_rec.context
25818                   ,p_ext_attrib_rec.attribute1
25819                   ,p_ext_attrib_rec.attribute2
25820                   ,p_ext_attrib_rec.attribute3
25821                   ,p_ext_attrib_rec.attribute4
25822                   ,p_ext_attrib_rec.attribute5
25823                   ,p_ext_attrib_rec.attribute6
25824                   ,p_ext_attrib_rec.attribute7
25825                   ,p_ext_attrib_rec.attribute8
25826                   ,p_ext_attrib_rec.attribute9
25827                   ,p_ext_attrib_rec.attribute10
25828                   ,p_ext_attrib_rec.attribute11
25829                   ,p_ext_attrib_rec.attribute12
25830                   ,p_ext_attrib_rec.attribute13
25831                   ,p_ext_attrib_rec.attribute14
25832                   ,p_ext_attrib_rec.attribute15
25833                   ,fnd_global.user_id
25834                   ,sysdate
25835                   ,fnd_global.user_id
25836                   ,sysdate
25837                   ,fnd_global.user_id
25838                   ,1
25839                   );
25840 
25841 
25842         -- IF CSI_Instance_parties_vld_pvt.Is_Instance_creation_complete( p_ext_attrib_rec.INSTANCE_ID ) THEN
25843         -- Call create_transaction to create txn log
25844 
25845         CSI_TRANSACTIONS_PVT.Create_transaction
25846           ( p_api_version             => p_api_version
25847             ,p_commit                 => fnd_api.g_false
25848             ,p_init_msg_list          => p_init_msg_list
25849             ,p_validation_level       => p_validation_level
25850             ,p_Success_If_Exists_Flag => 'Y'
25851             ,P_transaction_rec        => p_txn_rec
25852             ,x_return_status          => x_return_status
25853             ,x_msg_count              => x_msg_count
25854             ,x_msg_data               => x_msg_data
25855           );
25856 
25857            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
25858                    l_msg_index := 1;
25859                    l_msg_count := x_msg_count;
25860                    WHILE l_msg_count > 0 LOOP
25861                       x_msg_data := FND_MSG_PUB.GET
25862                       (l_msg_index,
25863                        FND_API.G_FALSE      );
25864 
25865                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
25866                        l_msg_index := l_msg_index + 1;
25867                        l_msg_count := l_msg_count - 1;
25868                    END LOOP;
25869                    RAISE FND_API.G_EXC_ERROR;
25870            END IF;
25871 
25872 
25873         -- Get a unique org_assignment number from the sequence
25874         l_attribute_value_h_id := csi_extend_attrib_vld_pvt.get_attribute_value_h_id;
25875 
25876         l_dump_frequency_flag :='N';
25877         -- Create a history
25878         CSI_IEA_VALUES_H_PKG.Insert_Row(
25879              l_attribute_value_h_id
25880             ,l_attribute_value_id
25881             ,p_txn_rec.transaction_id
25882             ,NULL
25883             ,p_ext_attrib_rec.attribute_value
25884             ,NULL
25885             ,p_ext_attrib_rec.active_start_date
25886             ,NULL
25887             ,p_ext_attrib_rec.active_end_date
25888             ,NULL
25889             ,p_ext_attrib_rec.context
25890             ,NULL
25891             ,p_ext_attrib_rec.ATTRIBUTE1
25892             ,NULL
25893             ,p_ext_attrib_rec.ATTRIBUTE2
25894             ,NULL
25895             ,p_ext_attrib_rec.ATTRIBUTE3
25896             ,NULL
25897             ,p_ext_attrib_rec.ATTRIBUTE4
25898             ,NULL
25899             ,p_ext_attrib_rec.ATTRIBUTE5
25900             ,NULL
25901             ,p_ext_attrib_rec.ATTRIBUTE6
25902             ,NULL
25903             ,p_ext_attrib_rec.ATTRIBUTE7
25904             ,NULL
25905             ,p_ext_attrib_rec.ATTRIBUTE8
25906             ,NULL
25907             ,p_ext_attrib_rec.ATTRIBUTE9
25908             ,NULL
25909             ,p_ext_attrib_rec.ATTRIBUTE10
25910             ,NULL
25911             ,p_ext_attrib_rec.ATTRIBUTE11
25912             ,NULL
25913             ,p_ext_attrib_rec.ATTRIBUTE12
25914             ,NULL
25915             ,p_ext_attrib_rec.ATTRIBUTE13
25916             ,NULL
25917             ,p_ext_attrib_rec.ATTRIBUTE14
25918             ,NULL
25919             ,p_ext_attrib_rec.ATTRIBUTE15
25920             ,l_dump_frequency_flag
25921             ,fnd_global.user_id
25922             ,sysdate
25923             ,fnd_global.user_id
25924             ,sysdate
25925             ,fnd_global.user_id
25926             ,1);
25927 
25928 
25929           -- END IF;
25930         END IF; -- Called from grp check
25931 
25932      END IF;  -- Added by sk for bug 2232880
25933       -- End of API body
25934 
25935       -- Standard check of p_commit.
25936       IF FND_API.To_Boolean( p_commit ) THEN
25937          COMMIT WORK;
25938       END IF;
25939 
25940       -- Standard call to get message count and if count is  get message info.
25941       FND_MSG_PUB.Count_And_Get
25942           (p_count       =>       x_msg_count ,
25943            p_data        =>       x_msg_data
25944            );
25945 
25946 
25947 EXCEPTION
25948 
25949     WHEN FND_API.G_EXC_ERROR THEN
25950             ROLLBACK TO create_extended_attrib_values;
25951             x_return_status := FND_API.G_RET_STS_ERROR ;
25952             FND_MSG_PUB.Count_And_Get
25953                 (  p_count    =>      x_msg_count,
25954                    p_data     =>      x_msg_data
25955                 );
25956 
25957       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
25958             ROLLBACK TO create_extended_attrib_values;
25959             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
25960             FND_MSG_PUB.Count_And_Get
25961                 (  p_count    =>      x_msg_count,
25962                    p_data     =>      x_msg_data
25963                 );
25964 
25965       WHEN OTHERS THEN
25966 
25967             ROLLBACK TO  create_extended_attrib_values;
25968             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
25969 
25970             IF       FND_MSG_PUB.Check_Msg_Level
25971                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
25972             THEN
25973                     FND_MSG_PUB.Add_Exc_Msg
25974                     (     g_pkg_name,
25975                           l_api_name
25976                      );
25977             END IF;
25978 
25979             FND_MSG_PUB.Count_And_Get
25980                 (   p_count   =>      x_msg_count,
25981                     p_data    =>      x_msg_data
25982                  );
25983 
25984 END create_extended_attrib_values;
25985 
25986 
25987 /*------------------------------------------------------*/
25988 /* procedure name: update_extended_attrib_values        */
25989 /* description :  Updates the existing extended         */
25990 /*                attributes for an item instance       */
25991 /*                                                      */
25992 /*------------------------------------------------------*/
25993 
25994 PROCEDURE update_extended_attrib_values
25995  (
25996       p_api_version        IN     NUMBER
25997      ,p_commit             IN     VARCHAR2
25998      ,p_init_msg_list      IN     VARCHAR2
25999      ,p_validation_level   IN     NUMBER
26000      ,p_ext_attrib_rec     IN     csi_datastructures_pub.extend_attrib_values_rec
26001      ,p_txn_rec            IN OUT NOCOPY csi_datastructures_pub.transaction_rec
26002      ,x_return_status         OUT NOCOPY VARCHAR2
26003      ,x_msg_count             OUT NOCOPY NUMBER
26004      ,x_msg_data              OUT NOCOPY VARCHAR2
26005  )
26006 
26007 IS
26008     l_api_name                  CONSTANT VARCHAR2(30)   := 'update_extended_attrib_values';
26009     l_api_version               CONSTANT NUMBER         := 1.0;
26010     l_debug_level                        NUMBER;
26011     l_msg_index                          NUMBER;
26012     l_msg_count                          NUMBER;
26013     l_ori_inventory_item_id              NUMBER;
26014     l_ori_master_org_id                  NUMBER;
26015     l_attribute_value_id                 NUMBER:= p_ext_attrib_rec.attribute_value_id;
26016     l_attribute_value_h_id               NUMBER;
26017     l_dump_frequency                     NUMBER;
26018     l_dump_frequency_flag                VARCHAR2(30);
26019     l_ext_attrib_rec                     csi_datastructures_pub.extend_attrib_values_rec;
26020     l_temp_ext_attrib_rec                csi_datastructures_pub.extend_attrib_values_rec;
26021     l_ext_att_hist_rec                   csi_datastructures_pub.ext_attrib_val_history_rec;
26022 
26023 CURSOR ieav_hist_csr (p_ieav_hist_id NUMBER) IS
26024        SELECT  *
26025        FROM    csi_iea_values_h
26026        WHERE   csi_iea_values_h.attribute_value_history_id = p_ieav_hist_id
26027        FOR UPDATE OF OBJECT_VERSION_NUMBER ;
26028 l_ieav_hist_id    NUMBER;
26029 l_ieav_hist_csr   ieav_hist_csr%ROWTYPE;
26030 
26031 BEGIN
26032     -- Standard Start of API savepoint
26033     SAVEPOINT      update_extended_attrib_values;
26034 
26035     -- Standard call to check for call compatibility.
26036     IF NOT FND_API.Compatible_API_Call (l_api_version,
26037                                         p_api_version,
26038                                         l_api_name ,
26039                                         g_pkg_name)
26040     THEN
26041           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
26042     END IF;
26043 
26044 
26045     -- Initialize message list if p_init_msg_list is set to TRUE.
26046     IF FND_API.to_Boolean( p_init_msg_list ) THEN
26047           FND_MSG_PUB.initialize;
26048     END IF;
26049 
26050 
26051     --  Initialize API return status to success
26052     x_return_status := FND_API.G_RET_STS_SUCCESS;
26053 
26054 
26055     -- Check the profile option debug_level for debug message reporting
26056     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
26057 
26058     -- If debug_level = 1 then dump the procedure name
26059     IF (l_debug_level > 0) THEN
26060         csi_gen_utility_pvt.put_line( 'update_extended_attrib_values');
26061     END IF;
26062 
26063 
26064     -- If the debug level = 2 then dump all the parameters values.
26065     IF (l_debug_level > 1) THEN
26066           csi_gen_utility_pvt.put_line(
26067                                        p_api_version       ||'-'
26068                                     || p_commit            ||'-'
26069                                     || p_init_msg_list     ||'-'
26070                                     || p_validation_level   );
26071          -- Dump extended attribute rec
26072          csi_gen_utility_pvt.dump_ext_attrib_values_rec(p_ext_attrib_rec);
26073          -- Dump txn_rec
26074          csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
26075      END IF;
26076 
26077 
26078      -- Start API body
26079 
26080      -- Validate extended_attribute_value_id
26081      IF NOT(csi_extend_attrib_vld_pvt.Val_and_get_ext_att_id
26082              (p_ext_attrib_rec.attribute_value_id,
26083               l_ext_attrib_rec )) THEN
26084           RAISE FND_API.G_EXC_ERROR;
26085      END IF;
26086 
26087 
26088      -- Validate object_version_number
26089      IF NOT(csi_extend_attrib_vld_pvt.Is_valid_obj_ver_num
26090             (p_ext_attrib_rec.object_version_number
26091           ,l_ext_attrib_rec.object_version_number
26092           )) THEN
26093          RAISE FND_API.G_EXC_ERROR;
26094      END IF;
26095 
26096 
26097      -- Validate if the instance is updatable
26098      IF NOT(csi_extend_attrib_vld_pvt.Is_Updatable
26099              (l_ext_attrib_rec.active_end_date ,
26100             p_ext_attrib_rec.active_end_date )) THEN
26101          RAISE FND_API.G_EXC_ERROR;
26102      END IF;
26103 
26104      -- Validate instance id for which the update is related to
26105      IF NOT(csi_extend_attrib_vld_pvt.Is_Valid_instance_id
26106             (l_ext_attrib_rec.instance_id
26107            ,'UPDATE'
26108            ,l_ori_inventory_item_id
26109            ,l_ori_master_org_id)) THEN
26110         -- Check if it is an expire operation
26111            IF NOT(csi_extend_attrib_vld_pvt.Is_Expire_Op
26112                      (p_ext_attrib_rec)) THEN
26113            RAISE FND_API.G_EXC_ERROR;
26114            END IF;
26115      END IF;
26116 
26117      -- Validate instance id
26118      IF ( p_ext_attrib_rec.instance_id <> FND_API.G_MISS_NUM ) THEN
26119         IF NOT(csi_extend_attrib_vld_pvt.Val_inst_id_for_update
26120             (p_ext_attrib_rec.instance_id
26121            ,l_ext_attrib_rec.instance_id
26122           )) THEN
26123            RAISE FND_API.G_EXC_ERROR;
26124          END IF;
26125      END IF;
26126 
26127 
26128      -- Verify start effective date
26129      IF ( p_ext_attrib_rec.active_start_date <> FND_API.G_MISS_DATE) THEN
26130        IF (p_ext_attrib_rec.active_start_date <> l_ext_attrib_rec.active_start_date) THEN
26131                FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
26132                FND_MESSAGE.Set_Token('COLUMN', 'EXTENDED ATTRIBUTE START_DATE');
26133                FND_MSG_PUB.ADD;
26134                RAISE FND_API.G_EXC_ERROR;
26135        END IF;
26136      END IF;
26137 
26138      -- Verify end effective date
26139      IF ( p_ext_attrib_rec.active_end_date <> FND_API.G_MISS_DATE) THEN
26140        IF p_ext_attrib_rec.active_end_date is NOT NULL THEN
26141          IF g_expire_ext_att_flag  <> 'Y' THEN
26142            IF NOT(csi_extend_attrib_vld_pvt.Is_EndDate_Valid
26143                (p_ext_attrib_rec.active_start_date,
26144                             p_ext_attrib_rec.active_end_date,
26145                             p_ext_attrib_rec.instance_id ,
26146 					   p_ext_attrib_rec.attribute_value_id ,
26147 					   p_txn_rec.transaction_id)) THEN
26148                 RAISE FND_API.G_EXC_ERROR;
26149            END IF;
26150          END IF;
26151        END IF;
26152      END IF;
26153 
26154      -- Verify attribute id
26155      IF ( p_ext_attrib_rec.attribute_id <> FND_API.G_MISS_NUM) THEN
26156        IF (l_ext_attrib_rec.attribute_id <> l_ext_attrib_rec.attribute_id) THEN
26157                FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
26158                FND_MESSAGE.Set_Token('COLUMN', 'EXTENDED ATTRIBUTE_ID');
26159                FND_MSG_PUB.ADD;
26160                RAISE FND_API.G_EXC_ERROR;
26161        END IF;
26162      END IF;
26163 
26164 
26165      -- Get the new object version number
26166      l_ext_attrib_rec.object_version_number :=
26167       csi_extend_attrib_vld_pvt.get_object_version_number(l_ext_attrib_rec.object_version_number);
26168 
26169      CSI_IEA_VALUES_PKG.Update_Row
26170                   (
26171                   l_attribute_value_id
26172                   ,p_ext_attrib_rec.attribute_id
26173                   ,p_ext_attrib_rec.instance_id
26174                   ,p_ext_attrib_rec.attribute_value
26175                   ,p_ext_attrib_rec.active_start_date
26176                   ,p_ext_attrib_rec.active_end_date
26177                   ,p_ext_attrib_rec.context
26178                   ,p_ext_attrib_rec.attribute1
26179                   ,p_ext_attrib_rec.attribute2
26180                   ,p_ext_attrib_rec.attribute3
26181                   ,p_ext_attrib_rec.attribute4
26182                   ,p_ext_attrib_rec.attribute5
26183                   ,p_ext_attrib_rec.attribute6
26184                   ,p_ext_attrib_rec.attribute7
26185                   ,p_ext_attrib_rec.attribute8
26186                   ,p_ext_attrib_rec.attribute9
26187                   ,p_ext_attrib_rec.attribute10
26188                   ,p_ext_attrib_rec.attribute11
26189                   ,p_ext_attrib_rec.attribute12
26190                   ,p_ext_attrib_rec.attribute13
26191                   ,p_ext_attrib_rec.attribute14
26192                   ,p_ext_attrib_rec.attribute15
26193                   ,fnd_api.g_miss_num
26194                   ,fnd_api.g_miss_date
26195                   ,fnd_global.user_id
26196                   ,sysdate
26197                   ,fnd_global.user_id
26198                   ,l_ext_attrib_rec.object_version_number
26199                   );
26200 
26201 
26202 
26203     -- IF CSI_Instance_parties_vld_pvt.Is_Instance_creation_complete( p_ext_attrib_rec.INSTANCE_ID ) THEN
26204     -- Call create_transaction to create txn log
26205 
26206      CSI_TRANSACTIONS_PVT.Create_transaction
26207           (  p_api_version            => p_api_version
26208             ,p_commit                 => fnd_api.g_false
26209             ,p_init_msg_list          => p_init_msg_list
26210             ,p_validation_level       => p_validation_level
26211             ,p_Success_If_Exists_Flag => 'Y'
26212             ,p_transaction_rec        => p_txn_rec
26213             ,x_return_status          => x_return_status
26214             ,x_msg_count              => x_msg_count
26215             ,x_msg_data               => x_msg_data
26216           );
26217 
26218            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
26219                    l_msg_index := 1;
26220                    l_msg_count := x_msg_count;
26221                    WHILE l_msg_count > 0 LOOP
26222                       x_msg_data := FND_MSG_PUB.GET
26223                       (l_msg_index,
26224                        FND_API.G_FALSE      );
26225 
26226                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
26227                        l_msg_index := l_msg_index + 1;
26228                        l_msg_count := l_msg_count - 1;
26229                    END LOOP;
26230                    RAISE FND_API.G_EXC_ERROR;
26231            END IF;
26232 
26233      -- Get a unique org_assignment number from the sequence
26234      l_attribute_value_h_id := csi_extend_attrib_vld_pvt.get_attribute_value_h_id;
26235 
26236      -- Get full dump frequency from CSI_INSTALL_PARAMETERS
26237      l_dump_frequency := csi_org_unit_vld_pvt.get_full_dump_frequency;
26238      --
26239      IF l_dump_frequency IS NULL THEN
26240         RAISE FND_API.G_EXC_ERROR;
26241      END IF;
26242 
26243      -- Grab the input record in a temporary record
26244      l_temp_ext_attrib_rec := p_ext_attrib_rec;
26245 
26246      -- Start of modifications for Bug#2547034 on 09/20/02 - rtalluri
26247      BEGIN
26248        SELECT  attribute_value_history_id
26249        INTO    l_ieav_hist_id
26250        FROM    csi_iea_values_h h
26251        WHERE   h.transaction_id = p_txn_rec.transaction_id
26252        AND     h.attribute_value_id = p_ext_attrib_rec.attribute_value_id;
26253 
26254        OPEN   ieav_hist_csr(l_ieav_hist_id);
26255        FETCH  ieav_hist_csr INTO l_ieav_hist_csr ;
26256        CLOSE  ieav_hist_csr;
26257 
26258        IF l_ieav_hist_csr.full_dump_flag = 'Y'
26259        THEN
26260          csi_iea_values_h_pkg.update_row (
26261           p_attribute_value_history_id    => l_ieav_hist_id                         ,
26262           p_attribute_value_id            => fnd_api.g_miss_num                     ,
26263           p_transaction_id                => fnd_api.g_miss_num                     ,
26264           p_old_attribute_value           => fnd_api.g_miss_char                    ,
26265           p_new_attribute_value           => l_temp_ext_attrib_rec.attribute_value  ,
26266           p_old_active_start_date         => fnd_api.g_miss_date                    ,
26267           p_new_active_start_date         => l_temp_ext_attrib_rec.active_start_date,
26268           p_old_active_end_date           => fnd_api.g_miss_date                    ,
26269           p_new_active_end_date           => l_temp_ext_attrib_rec.active_end_date  ,
26270           p_old_context                   => fnd_api.g_miss_char                    ,
26271           p_new_context                   => l_temp_ext_attrib_rec.context          ,
26272           p_old_attribute1                => fnd_api.g_miss_char                    ,
26273           p_new_attribute1                => l_temp_ext_attrib_rec.attribute1       ,
26274           p_old_attribute2                => fnd_api.g_miss_char                    ,
26275           p_new_attribute2                => l_temp_ext_attrib_rec.attribute2       ,
26276           p_old_attribute3                => fnd_api.g_miss_char                    ,
26277           p_new_attribute3                => l_temp_ext_attrib_rec.attribute3       ,
26278           p_old_attribute4                => fnd_api.g_miss_char                    ,
26279           p_new_attribute4                => l_temp_ext_attrib_rec.attribute4       ,
26280           p_old_attribute5                => fnd_api.g_miss_char                    ,
26281           p_new_attribute5                => l_temp_ext_attrib_rec.attribute5       ,
26282           p_old_attribute6                => fnd_api.g_miss_char                    ,
26283           p_new_attribute6                => l_temp_ext_attrib_rec.attribute6       ,
26284           p_old_attribute7                => fnd_api.g_miss_char                    ,
26285           p_new_attribute7                => l_temp_ext_attrib_rec.attribute7       ,
26286           p_old_attribute8                => fnd_api.g_miss_char                    ,
26287           p_new_attribute8                => l_temp_ext_attrib_rec.attribute8       ,
26288           p_old_attribute9                => fnd_api.g_miss_char                    ,
26289           p_new_attribute9                => l_temp_ext_attrib_rec.attribute9       ,
26290           p_old_attribute10               => fnd_api.g_miss_char                    ,
26291           p_new_attribute10               => l_temp_ext_attrib_rec.attribute10      ,
26292           p_old_attribute11               => fnd_api.g_miss_char                    ,
26293           p_new_attribute11               => l_temp_ext_attrib_rec.attribute11      ,
26294           p_old_attribute12               => fnd_api.g_miss_char                    ,
26295           p_new_attribute12               => l_temp_ext_attrib_rec.attribute12      ,
26296           p_old_attribute13               => fnd_api.g_miss_char                    ,
26297           p_new_attribute13               => l_temp_ext_attrib_rec.attribute13      ,
26298           p_old_attribute14               => fnd_api.g_miss_char                    ,
26299           p_new_attribute14               => l_temp_ext_attrib_rec.attribute14      ,
26300           p_old_attribute15               => fnd_api.g_miss_char                    ,
26301           p_new_attribute15               => l_temp_ext_attrib_rec.attribute15      ,
26302           p_full_dump_flag                => fnd_api.g_miss_char                    ,
26303           p_created_by                    => fnd_api.g_miss_num                     ,
26304           p_creation_date                 => fnd_api.g_miss_date                    ,
26305           p_last_updated_by               => fnd_global.user_id                     ,
26306           p_last_update_date              => sysdate                                ,
26307           p_last_update_login             => fnd_global.user_id                     ,
26308           p_object_version_number         => fnd_api.g_miss_num);
26309 
26310        ELSE
26311           --
26312              IF    ( l_ieav_hist_csr.old_attribute_value IS NULL
26313                 AND  l_ieav_hist_csr.new_attribute_value IS NULL ) THEN
26314                      IF  ( l_temp_ext_attrib_rec.attribute_value = l_ext_attrib_rec.attribute_value )
26315                       OR ( l_temp_ext_attrib_rec.attribute_value = fnd_api.g_miss_char ) THEN
26316                            l_ieav_hist_csr.old_attribute_value := NULL;
26317                            l_ieav_hist_csr.new_attribute_value := NULL;
26318                      ELSE
26319                            l_ieav_hist_csr.old_attribute_value := fnd_api.g_miss_char;
26320                            l_ieav_hist_csr.new_attribute_value := l_temp_ext_attrib_rec.attribute_value;
26321                      END IF;
26322              ELSE
26323                      l_ieav_hist_csr.old_attribute_value := fnd_api.g_miss_char;
26324                      l_ieav_hist_csr.new_attribute_value := l_temp_ext_attrib_rec.attribute_value;
26325              END IF;
26326              --
26327              IF    ( l_ieav_hist_csr.old_active_start_date IS NULL
26328                 AND  l_ieav_hist_csr.new_active_start_date IS NULL ) THEN
26329                      IF  ( l_temp_ext_attrib_rec.active_start_date = l_ext_attrib_rec.active_start_date )
26330                       OR ( l_temp_ext_attrib_rec.active_start_date = fnd_api.g_miss_date ) THEN
26331                            l_ieav_hist_csr.old_active_start_date := NULL;
26332                            l_ieav_hist_csr.new_active_start_date := NULL;
26333                      ELSE
26334                            l_ieav_hist_csr.old_active_start_date := fnd_api.g_miss_date;
26335                            l_ieav_hist_csr.new_active_start_date := l_temp_ext_attrib_rec.active_start_date;
26336                      END IF;
26337              ELSE
26338                      l_ieav_hist_csr.old_active_start_date := fnd_api.g_miss_date;
26339                      l_ieav_hist_csr.new_active_start_date := l_temp_ext_attrib_rec.active_start_date;
26340              END IF;
26341              --
26342              IF    ( l_ieav_hist_csr.old_active_end_date IS NULL
26343                 AND  l_ieav_hist_csr.new_active_end_date IS NULL ) THEN
26344                      IF  ( l_temp_ext_attrib_rec.active_end_date = l_ext_attrib_rec.active_end_date )
26345                       OR ( l_temp_ext_attrib_rec.active_end_date = fnd_api.g_miss_date ) THEN
26346                            l_ieav_hist_csr.old_active_end_date := NULL;
26347                            l_ieav_hist_csr.new_active_end_date := NULL;
26348                      ELSE
26349                            l_ieav_hist_csr.old_active_end_date := fnd_api.g_miss_date;
26350                            l_ieav_hist_csr.new_active_end_date := l_temp_ext_attrib_rec.active_end_date;
26351                      END IF;
26352              ELSE
26353                      l_ieav_hist_csr.old_active_end_date := fnd_api.g_miss_date;
26354                      l_ieav_hist_csr.new_active_end_date := l_temp_ext_attrib_rec.active_end_date;
26355              END IF;
26356              --
26357              IF    ( l_ieav_hist_csr.old_context IS NULL
26358                 AND  l_ieav_hist_csr.new_context IS NULL ) THEN
26359                      IF  ( l_temp_ext_attrib_rec.context = l_ext_attrib_rec.context )
26360                       OR ( l_temp_ext_attrib_rec.context = fnd_api.g_miss_char ) THEN
26361                            l_ieav_hist_csr.old_context := NULL;
26362                            l_ieav_hist_csr.new_context := NULL;
26363                      ELSE
26364                            l_ieav_hist_csr.old_context := fnd_api.g_miss_char;
26365                            l_ieav_hist_csr.new_context := l_temp_ext_attrib_rec.context;
26366                      END IF;
26367              ELSE
26368                      l_ieav_hist_csr.old_context := fnd_api.g_miss_char;
26369                      l_ieav_hist_csr.new_context := l_temp_ext_attrib_rec.context;
26370              END IF;
26371              --
26372              IF    ( l_ieav_hist_csr.old_attribute1 IS NULL
26373                 AND  l_ieav_hist_csr.new_attribute1 IS NULL ) THEN
26374                      IF  ( l_temp_ext_attrib_rec.attribute1 = l_ext_attrib_rec.attribute1 )
26375                       OR ( l_temp_ext_attrib_rec.attribute1 = fnd_api.g_miss_char ) THEN
26376                            l_ieav_hist_csr.old_attribute1 := NULL;
26377                            l_ieav_hist_csr.new_attribute1 := NULL;
26378                      ELSE
26379                            l_ieav_hist_csr.old_attribute1 := fnd_api.g_miss_char;
26380                            l_ieav_hist_csr.new_attribute1 := l_temp_ext_attrib_rec.attribute1;
26381                      END IF;
26382              ELSE
26383                      l_ieav_hist_csr.old_attribute1 := fnd_api.g_miss_char;
26384                      l_ieav_hist_csr.new_attribute1 := l_temp_ext_attrib_rec.attribute1;
26385              END IF;
26386              --
26387              IF    ( l_ieav_hist_csr.old_attribute2 IS NULL
26388                 AND  l_ieav_hist_csr.new_attribute2 IS NULL ) THEN
26389                      IF  ( l_temp_ext_attrib_rec.attribute2 = l_ext_attrib_rec.attribute2 )
26390                       OR ( l_temp_ext_attrib_rec.attribute2 = fnd_api.g_miss_char ) THEN
26391                            l_ieav_hist_csr.old_attribute2 := NULL;
26392                            l_ieav_hist_csr.new_attribute2 := NULL;
26393                      ELSE
26394                            l_ieav_hist_csr.old_attribute2 := fnd_api.g_miss_char;
26395                            l_ieav_hist_csr.new_attribute2 := l_temp_ext_attrib_rec.attribute2;
26396                      END IF;
26397              ELSE
26398                      l_ieav_hist_csr.old_attribute2 := fnd_api.g_miss_char;
26399                      l_ieav_hist_csr.new_attribute2 := l_temp_ext_attrib_rec.attribute2;
26400              END IF;
26401              --
26402              IF    ( l_ieav_hist_csr.old_attribute3 IS NULL
26403                 AND  l_ieav_hist_csr.new_attribute3 IS NULL ) THEN
26404                      IF  ( l_temp_ext_attrib_rec.attribute3 = l_ext_attrib_rec.attribute3 )
26405                       OR ( l_temp_ext_attrib_rec.attribute3 = fnd_api.g_miss_char ) THEN
26406                            l_ieav_hist_csr.old_attribute3 := NULL;
26407                            l_ieav_hist_csr.new_attribute3 := NULL;
26408                      ELSE
26409                            l_ieav_hist_csr.old_attribute3 := fnd_api.g_miss_char;
26410                            l_ieav_hist_csr.new_attribute3 := l_temp_ext_attrib_rec.attribute3;
26411                      END IF;
26412              ELSE
26413                      l_ieav_hist_csr.old_attribute3 := fnd_api.g_miss_char;
26414                      l_ieav_hist_csr.new_attribute3 := l_temp_ext_attrib_rec.attribute3;
26415              END IF;
26416              --
26417              IF    ( l_ieav_hist_csr.old_attribute4 IS NULL
26418                 AND  l_ieav_hist_csr.new_attribute4 IS NULL ) THEN
26419                      IF  ( l_temp_ext_attrib_rec.attribute4 = l_ext_attrib_rec.attribute4 )
26420                       OR ( l_temp_ext_attrib_rec.attribute4 = fnd_api.g_miss_char ) THEN
26421                            l_ieav_hist_csr.old_attribute4 := NULL;
26422                            l_ieav_hist_csr.new_attribute4 := NULL;
26423                      ELSE
26424                            l_ieav_hist_csr.old_attribute4 := fnd_api.g_miss_char;
26425                            l_ieav_hist_csr.new_attribute4 := l_temp_ext_attrib_rec.attribute4;
26426                      END IF;
26427              ELSE
26428                      l_ieav_hist_csr.old_attribute4 := fnd_api.g_miss_char;
26429                      l_ieav_hist_csr.new_attribute4 := l_temp_ext_attrib_rec.attribute4;
26430              END IF;
26431              --
26432              IF    ( l_ieav_hist_csr.old_attribute5 IS NULL
26433                 AND  l_ieav_hist_csr.new_attribute5 IS NULL ) THEN
26434                      IF  ( l_temp_ext_attrib_rec.attribute5 = l_ext_attrib_rec.attribute5 )
26435                       OR ( l_temp_ext_attrib_rec.attribute5 = fnd_api.g_miss_char ) THEN
26436                            l_ieav_hist_csr.old_attribute5 := NULL;
26437                            l_ieav_hist_csr.new_attribute5 := NULL;
26438                      ELSE
26439                            l_ieav_hist_csr.old_attribute5 := fnd_api.g_miss_char;
26440                            l_ieav_hist_csr.new_attribute5 := l_temp_ext_attrib_rec.attribute5;
26441                      END IF;
26442              ELSE
26443                      l_ieav_hist_csr.old_attribute5 := fnd_api.g_miss_char;
26444                      l_ieav_hist_csr.new_attribute5 := l_temp_ext_attrib_rec.attribute5;
26445              END IF;
26446              --
26447              IF    ( l_ieav_hist_csr.old_attribute6 IS NULL
26448                 AND  l_ieav_hist_csr.new_attribute6 IS NULL ) THEN
26449                      IF  ( l_temp_ext_attrib_rec.attribute6 = l_ext_attrib_rec.attribute6 )
26450                       OR ( l_temp_ext_attrib_rec.attribute6 = fnd_api.g_miss_char ) THEN
26451                            l_ieav_hist_csr.old_attribute6 := NULL;
26452                            l_ieav_hist_csr.new_attribute6 := NULL;
26453                      ELSE
26454                            l_ieav_hist_csr.old_attribute6 := fnd_api.g_miss_char;
26455                            l_ieav_hist_csr.new_attribute6 := l_temp_ext_attrib_rec.attribute6;
26456                      END IF;
26457              ELSE
26458                      l_ieav_hist_csr.old_attribute6 := fnd_api.g_miss_char;
26459                      l_ieav_hist_csr.new_attribute6 := l_temp_ext_attrib_rec.attribute6;
26460              END IF;
26461              --
26462              IF    ( l_ieav_hist_csr.old_attribute7 IS NULL
26463                 AND  l_ieav_hist_csr.new_attribute7 IS NULL ) THEN
26464                      IF  ( l_temp_ext_attrib_rec.attribute7 = l_ext_attrib_rec.attribute7 )
26465                       OR ( l_temp_ext_attrib_rec.attribute7 = fnd_api.g_miss_char ) THEN
26466                            l_ieav_hist_csr.old_attribute7 := NULL;
26467                            l_ieav_hist_csr.new_attribute7 := NULL;
26468                      ELSE
26469                            l_ieav_hist_csr.old_attribute7 := fnd_api.g_miss_char;
26470                            l_ieav_hist_csr.new_attribute7 := l_temp_ext_attrib_rec.attribute7;
26471                      END IF;
26472              ELSE
26473                      l_ieav_hist_csr.old_attribute7 := fnd_api.g_miss_char;
26474                      l_ieav_hist_csr.new_attribute7 := l_temp_ext_attrib_rec.attribute7;
26475              END IF;
26476              --
26477              IF    ( l_ieav_hist_csr.old_attribute8 IS NULL
26478                 AND  l_ieav_hist_csr.new_attribute8 IS NULL ) THEN
26479                      IF  ( l_temp_ext_attrib_rec.attribute8 = l_ext_attrib_rec.attribute8 )
26480                       OR ( l_temp_ext_attrib_rec.attribute8 = fnd_api.g_miss_char ) THEN
26481                            l_ieav_hist_csr.old_attribute8 := NULL;
26482                            l_ieav_hist_csr.new_attribute8 := NULL;
26483                      ELSE
26484                            l_ieav_hist_csr.old_attribute8 := fnd_api.g_miss_char;
26485                            l_ieav_hist_csr.new_attribute8 := l_temp_ext_attrib_rec.attribute8;
26486                      END IF;
26487              ELSE
26488                      l_ieav_hist_csr.old_attribute8 := fnd_api.g_miss_char;
26489                      l_ieav_hist_csr.new_attribute8 := l_temp_ext_attrib_rec.attribute8;
26490              END IF;
26491              --
26492              IF    ( l_ieav_hist_csr.old_attribute9 IS NULL
26493                 AND  l_ieav_hist_csr.new_attribute9 IS NULL ) THEN
26494                      IF  ( l_temp_ext_attrib_rec.attribute9 = l_ext_attrib_rec.attribute9 )
26495                       OR ( l_temp_ext_attrib_rec.attribute9 = fnd_api.g_miss_char ) THEN
26496                            l_ieav_hist_csr.old_attribute9 := NULL;
26497                            l_ieav_hist_csr.new_attribute9 := NULL;
26498                      ELSE
26499                            l_ieav_hist_csr.old_attribute9 := fnd_api.g_miss_char;
26500                            l_ieav_hist_csr.new_attribute9 := l_temp_ext_attrib_rec.attribute9;
26501                      END IF;
26502              ELSE
26503                      l_ieav_hist_csr.old_attribute9 := fnd_api.g_miss_char;
26504                      l_ieav_hist_csr.new_attribute9 := l_temp_ext_attrib_rec.attribute9;
26505              END IF;
26506              --
26507              IF    ( l_ieav_hist_csr.old_attribute10 IS NULL
26508                 AND  l_ieav_hist_csr.new_attribute10 IS NULL ) THEN
26509                      IF  ( l_temp_ext_attrib_rec.attribute10 = l_ext_attrib_rec.attribute10 )
26510                       OR ( l_temp_ext_attrib_rec.attribute10 = fnd_api.g_miss_char ) THEN
26511                            l_ieav_hist_csr.old_attribute10 := NULL;
26512                            l_ieav_hist_csr.new_attribute10 := NULL;
26513                      ELSE
26514                            l_ieav_hist_csr.old_attribute10 := fnd_api.g_miss_char;
26515                            l_ieav_hist_csr.new_attribute10 := l_temp_ext_attrib_rec.attribute10;
26516                      END IF;
26517              ELSE
26518                      l_ieav_hist_csr.old_attribute10 := fnd_api.g_miss_char;
26519                      l_ieav_hist_csr.new_attribute10 := l_temp_ext_attrib_rec.attribute10;
26520              END IF;
26521              --
26522              IF    ( l_ieav_hist_csr.old_attribute11 IS NULL
26523                 AND  l_ieav_hist_csr.new_attribute11 IS NULL ) THEN
26524                      IF  ( l_temp_ext_attrib_rec.attribute11 = l_ext_attrib_rec.attribute11 )
26525                       OR ( l_temp_ext_attrib_rec.attribute11 = fnd_api.g_miss_char ) THEN
26526                            l_ieav_hist_csr.old_attribute11 := NULL;
26527                            l_ieav_hist_csr.new_attribute11 := NULL;
26528                      ELSE
26529                            l_ieav_hist_csr.old_attribute11 := fnd_api.g_miss_char;
26530                            l_ieav_hist_csr.new_attribute11 := l_temp_ext_attrib_rec.attribute11;
26531                      END IF;
26532              ELSE
26533                      l_ieav_hist_csr.old_attribute11 := fnd_api.g_miss_char;
26534                      l_ieav_hist_csr.new_attribute11 := l_temp_ext_attrib_rec.attribute11;
26535              END IF;
26536              --
26537              IF    ( l_ieav_hist_csr.old_attribute12 IS NULL
26538                 AND  l_ieav_hist_csr.new_attribute12 IS NULL ) THEN
26539                      IF  ( l_temp_ext_attrib_rec.attribute12 = l_ext_attrib_rec.attribute12 )
26540                       OR ( l_temp_ext_attrib_rec.attribute12 = fnd_api.g_miss_char ) THEN
26541                            l_ieav_hist_csr.old_attribute12 := NULL;
26542                            l_ieav_hist_csr.new_attribute12 := NULL;
26543                      ELSE
26544                            l_ieav_hist_csr.old_attribute12 := fnd_api.g_miss_char;
26545                            l_ieav_hist_csr.new_attribute12 := l_temp_ext_attrib_rec.attribute12;
26546                      END IF;
26547              ELSE
26548                      l_ieav_hist_csr.old_attribute12 := fnd_api.g_miss_char;
26549                      l_ieav_hist_csr.new_attribute12 := l_temp_ext_attrib_rec.attribute12;
26550              END IF;
26551              --
26552              IF    ( l_ieav_hist_csr.old_attribute13 IS NULL
26553                 AND  l_ieav_hist_csr.new_attribute13 IS NULL ) THEN
26554                      IF  ( l_temp_ext_attrib_rec.attribute13 = l_ext_attrib_rec.attribute13 )
26555                       OR ( l_temp_ext_attrib_rec.attribute13 = fnd_api.g_miss_char ) THEN
26556                            l_ieav_hist_csr.old_attribute13 := NULL;
26557                            l_ieav_hist_csr.new_attribute13 := NULL;
26558                      ELSE
26559                            l_ieav_hist_csr.old_attribute13 := fnd_api.g_miss_char;
26560                            l_ieav_hist_csr.new_attribute13 := l_temp_ext_attrib_rec.attribute13;
26561                      END IF;
26562              ELSE
26563                      l_ieav_hist_csr.old_attribute13 := fnd_api.g_miss_char;
26564                      l_ieav_hist_csr.new_attribute13 := l_temp_ext_attrib_rec.attribute13;
26565              END IF;
26566              --
26567              IF    ( l_ieav_hist_csr.old_attribute14 IS NULL
26568                 AND  l_ieav_hist_csr.new_attribute14 IS NULL ) THEN
26569                      IF  ( l_temp_ext_attrib_rec.attribute14 = l_ext_attrib_rec.attribute14 )
26570                       OR ( l_temp_ext_attrib_rec.attribute14 = fnd_api.g_miss_char ) THEN
26571                            l_ieav_hist_csr.old_attribute14 := NULL;
26572                            l_ieav_hist_csr.new_attribute14 := NULL;
26573                      ELSE
26574                            l_ieav_hist_csr.old_attribute14 := fnd_api.g_miss_char;
26575                            l_ieav_hist_csr.new_attribute14 := l_temp_ext_attrib_rec.attribute14;
26576                      END IF;
26577              ELSE
26578                      l_ieav_hist_csr.old_attribute14 := fnd_api.g_miss_char;
26579                      l_ieav_hist_csr.new_attribute14 := l_temp_ext_attrib_rec.attribute14;
26580              END IF;
26581              --
26582              IF    ( l_ieav_hist_csr.old_attribute15 IS NULL
26583                 AND  l_ieav_hist_csr.new_attribute15 IS NULL ) THEN
26584                      IF  ( l_temp_ext_attrib_rec.attribute15 = l_ext_attrib_rec.attribute15 )
26585                       OR ( l_temp_ext_attrib_rec.attribute15 = fnd_api.g_miss_char ) THEN
26586                            l_ieav_hist_csr.old_attribute15 := NULL;
26587                            l_ieav_hist_csr.new_attribute15 := NULL;
26588                      ELSE
26589                            l_ieav_hist_csr.old_attribute15 := fnd_api.g_miss_char;
26590                            l_ieav_hist_csr.new_attribute15 := l_temp_ext_attrib_rec.attribute15;
26591                      END IF;
26592              ELSE
26593                      l_ieav_hist_csr.old_attribute15 := fnd_api.g_miss_char;
26594                      l_ieav_hist_csr.new_attribute15 := l_temp_ext_attrib_rec.attribute15;
26595              END IF;
26596              --
26597 
26598          csi_iea_values_h_pkg.update_row (
26599           p_attribute_value_history_id    => l_ieav_hist_id                         ,
26600           p_attribute_value_id            => fnd_api.g_miss_num                     ,
26601           p_transaction_id                => fnd_api.g_miss_num                     ,
26602           p_old_attribute_value           => l_ieav_hist_csr.old_attribute_value    ,
26603           p_new_attribute_value           => l_temp_ext_attrib_rec.attribute_value  ,
26604           p_old_active_start_date         => l_ieav_hist_csr.old_active_start_date  ,
26605           p_new_active_start_date         => l_temp_ext_attrib_rec.active_start_date,
26606           p_old_active_end_date           => l_ieav_hist_csr.old_active_end_date    ,
26607           p_new_active_end_date           => l_temp_ext_attrib_rec.active_end_date  ,
26608           p_old_context                   => l_ieav_hist_csr.old_context            ,
26609           p_new_context                   => l_temp_ext_attrib_rec.context          ,
26610           p_old_attribute1                => l_ieav_hist_csr.old_attribute1         ,
26611           p_new_attribute1                => l_temp_ext_attrib_rec.attribute1       ,
26612           p_old_attribute2                => l_ieav_hist_csr.old_attribute2         ,
26613           p_new_attribute2                => l_temp_ext_attrib_rec.attribute2       ,
26614           p_old_attribute3                => l_ieav_hist_csr.old_attribute3         ,
26615           p_new_attribute3                => l_temp_ext_attrib_rec.attribute3       ,
26616           p_old_attribute4                => l_ieav_hist_csr.old_attribute4         ,
26617           p_new_attribute4                => l_temp_ext_attrib_rec.attribute4       ,
26618           p_old_attribute5                => l_ieav_hist_csr.old_attribute5         ,
26619           p_new_attribute5                => l_temp_ext_attrib_rec.attribute5       ,
26620           p_old_attribute6                => l_ieav_hist_csr.old_attribute6         ,
26621           p_new_attribute6                => l_temp_ext_attrib_rec.attribute6       ,
26622           p_old_attribute7                => l_ieav_hist_csr.old_attribute7         ,
26623           p_new_attribute7                => l_temp_ext_attrib_rec.attribute7       ,
26624           p_old_attribute8                => l_ieav_hist_csr.old_attribute8         ,
26625           p_new_attribute8                => l_temp_ext_attrib_rec.attribute8       ,
26626           p_old_attribute9                => l_ieav_hist_csr.old_attribute9         ,
26627           p_new_attribute9                => l_temp_ext_attrib_rec.attribute9       ,
26628           p_old_attribute10               => l_ieav_hist_csr.old_attribute10        ,
26629           p_new_attribute10               => l_temp_ext_attrib_rec.attribute10      ,
26630           p_old_attribute11               => l_ieav_hist_csr.old_attribute11        ,
26631           p_new_attribute11               => l_temp_ext_attrib_rec.attribute11      ,
26632           p_old_attribute12               => l_ieav_hist_csr.old_attribute12        ,
26633           p_new_attribute12               => l_temp_ext_attrib_rec.attribute12      ,
26634           p_old_attribute13               => l_ieav_hist_csr.old_attribute13        ,
26635           p_new_attribute13               => l_temp_ext_attrib_rec.attribute13      ,
26636           p_old_attribute14               => l_ieav_hist_csr.old_attribute14        ,
26637           p_new_attribute14               => l_temp_ext_attrib_rec.attribute14      ,
26638           p_old_attribute15               => l_ieav_hist_csr.old_attribute15        ,
26639           p_new_attribute15               => l_temp_ext_attrib_rec.attribute15      ,
26640           p_full_dump_flag                => fnd_api.g_miss_char                    ,
26641           p_created_by                    => fnd_api.g_miss_num                     ,
26642           p_creation_date                 => fnd_api.g_miss_date                    ,
26643           p_last_updated_by               => fnd_global.user_id                     ,
26644           p_last_update_date              => SYSDATE                                ,
26645           p_last_update_login             => fnd_global.user_id                     ,
26646           p_object_version_number         => fnd_api.g_miss_num);
26647        END IF;
26648      EXCEPTION
26649         WHEN NO_DATA_FOUND THEN
26650 
26651           IF (mod(l_ext_attrib_rec.object_version_number, l_dump_frequency) = 0) THEN
26652 
26653           -- If the mod value is 0 then dump all the columns both changed and unchanged
26654           -- changed columns have old and new values while the unchanged values have old and new values
26655           -- exactly same
26656 
26657            l_dump_frequency_flag := 'Y';
26658           -- Grab the input record in a temporary record
26659           l_temp_ext_attrib_rec := p_ext_attrib_rec;
26660 
26661            IF (p_ext_attrib_rec.ATTRIBUTE_VALUE = FND_API.G_MISS_CHAR) THEN
26662                 l_temp_ext_attrib_rec.ATTRIBUTE_VALUE  := l_ext_attrib_rec.ATTRIBUTE_VALUE;
26663            END IF;
26664 
26665            IF (p_ext_attrib_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
26666                 l_temp_ext_attrib_rec.ACTIVE_START_DATE  := l_ext_attrib_rec.ACTIVE_START_DATE;
26667            END IF;
26668 
26669            IF (p_ext_attrib_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
26670                 l_temp_ext_attrib_rec.ACTIVE_END_DATE  := l_ext_attrib_rec.ACTIVE_END_DATE;
26671            END IF;
26672 
26673            IF (p_ext_attrib_rec.CONTEXT = FND_API.G_MISS_CHAR) THEN
26674                 l_temp_ext_attrib_rec.CONTEXT  := l_ext_attrib_rec.CONTEXT;
26675            END IF;
26676 
26677            IF (p_ext_attrib_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
26678                 l_temp_ext_attrib_rec.ATTRIBUTE1  := l_ext_attrib_rec.ATTRIBUTE1;
26679            END IF;
26680            IF (p_ext_attrib_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
26681                 l_temp_ext_attrib_rec.ATTRIBUTE2  := l_ext_attrib_rec.ATTRIBUTE2;
26682            END IF;
26683            IF (p_ext_attrib_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
26684                 l_temp_ext_attrib_rec.ATTRIBUTE3  := l_ext_attrib_rec.ATTRIBUTE3;
26685            END IF;
26686            IF (p_ext_attrib_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
26687                 l_temp_ext_attrib_rec.ATTRIBUTE4  := l_ext_attrib_rec.ATTRIBUTE4;
26688            END IF;
26689            IF (p_ext_attrib_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
26690                 l_temp_ext_attrib_rec.ATTRIBUTE5  := l_ext_attrib_rec.ATTRIBUTE5;
26691            END IF;
26692            IF (p_ext_attrib_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
26693                 l_temp_ext_attrib_rec.ATTRIBUTE6  := l_ext_attrib_rec.ATTRIBUTE6;
26694            END IF;
26695            IF (p_ext_attrib_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
26696                 l_temp_ext_attrib_rec.ATTRIBUTE7  := l_ext_attrib_rec.ATTRIBUTE7;
26697            END IF;
26698            IF (p_ext_attrib_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
26699                 l_temp_ext_attrib_rec.ATTRIBUTE8  := l_ext_attrib_rec.ATTRIBUTE8;
26700            END IF;
26701            IF (p_ext_attrib_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
26702                 l_temp_ext_attrib_rec.ATTRIBUTE9  := l_ext_attrib_rec.ATTRIBUTE9;
26703            END IF;
26704            IF (p_ext_attrib_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
26705                 l_temp_ext_attrib_rec.ATTRIBUTE10  := l_ext_attrib_rec.ATTRIBUTE10;
26706            END IF;
26707            IF (p_ext_attrib_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
26708                 l_temp_ext_attrib_rec.ATTRIBUTE11  := l_ext_attrib_rec.ATTRIBUTE11;
26709            END IF;
26710            IF (p_ext_attrib_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
26711                 l_temp_ext_attrib_rec.ATTRIBUTE12  := l_ext_attrib_rec.ATTRIBUTE12;
26712            END IF;
26713            IF (p_ext_attrib_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
26714                 l_temp_ext_attrib_rec.ATTRIBUTE13  := l_ext_attrib_rec.ATTRIBUTE13;
26715            END IF;
26716            IF (p_ext_attrib_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
26717                 l_temp_ext_attrib_rec.ATTRIBUTE14  := l_ext_attrib_rec.ATTRIBUTE14;
26718            END IF;
26719            IF (p_ext_attrib_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
26720                 l_temp_ext_attrib_rec.ATTRIBUTE15  := l_ext_attrib_rec.ATTRIBUTE15;
26721            END IF;
26722 
26723            -- Create a history
26724            CSI_IEA_VALUES_H_PKG.Insert_Row(
26725              l_attribute_value_h_id
26726             ,l_attribute_value_id
26727             ,p_txn_rec.transaction_id
26728             ,l_ext_attrib_rec.attribute_value
26729             ,l_temp_ext_attrib_rec.attribute_value
26730             ,l_ext_attrib_rec.active_start_date
26731             ,l_temp_ext_attrib_rec.active_start_date
26732             ,l_ext_attrib_rec.active_end_date
26733             ,l_temp_ext_attrib_rec.active_end_date
26734             ,l_ext_attrib_rec.context
26735             ,l_temp_ext_attrib_rec.context
26736             ,l_ext_attrib_rec.ATTRIBUTE1
26737             ,l_temp_ext_attrib_rec.ATTRIBUTE1
26738             ,l_ext_attrib_rec.ATTRIBUTE2
26739             ,l_temp_ext_attrib_rec.ATTRIBUTE2
26740             ,l_ext_attrib_rec.ATTRIBUTE3
26741             ,l_temp_ext_attrib_rec.ATTRIBUTE3
26742             ,l_ext_attrib_rec.ATTRIBUTE4
26743             ,l_temp_ext_attrib_rec.ATTRIBUTE4
26744             ,l_ext_attrib_rec.ATTRIBUTE5
26745             ,l_temp_ext_attrib_rec.ATTRIBUTE5
26746             ,l_ext_attrib_rec.ATTRIBUTE6
26747             ,l_temp_ext_attrib_rec.ATTRIBUTE6
26748             ,l_ext_attrib_rec.ATTRIBUTE7
26749             ,l_temp_ext_attrib_rec.ATTRIBUTE7
26750             ,l_ext_attrib_rec.ATTRIBUTE8
26751             ,l_temp_ext_attrib_rec.ATTRIBUTE8
26752             ,l_ext_attrib_rec.ATTRIBUTE9
26753             ,l_temp_ext_attrib_rec.ATTRIBUTE9
26754             ,l_ext_attrib_rec.ATTRIBUTE10
26755             ,l_temp_ext_attrib_rec.ATTRIBUTE10
26756             ,l_ext_attrib_rec.ATTRIBUTE11
26757             ,l_temp_ext_attrib_rec.ATTRIBUTE11
26758             ,l_ext_attrib_rec.ATTRIBUTE12
26759             ,l_temp_ext_attrib_rec.ATTRIBUTE12
26760             ,l_ext_attrib_rec.ATTRIBUTE13
26761             ,l_temp_ext_attrib_rec.ATTRIBUTE13
26762             ,l_ext_attrib_rec.ATTRIBUTE14
26763             ,l_temp_ext_attrib_rec.ATTRIBUTE14
26764             ,l_ext_attrib_rec.ATTRIBUTE15
26765             ,l_temp_ext_attrib_rec.ATTRIBUTE15
26766             ,l_dump_frequency_flag
26767             ,fnd_global.user_id
26768             ,sysdate
26769             ,fnd_global.user_id
26770             ,sysdate
26771             ,fnd_global.user_id
26772             ,1);
26773 
26774      ELSE
26775             l_dump_frequency_flag := 'N';
26776          -- Grab the input record in a temporary record
26777             l_temp_ext_attrib_rec := l_ext_attrib_rec;
26778 
26779          -- If the mod value is not equal to zero then dump only the changed columns
26780          -- while the unchanged values have old and new values as null
26781            IF (p_ext_attrib_rec.attribute_value = fnd_api.g_miss_char) OR
26782                NVL(p_ext_attrib_rec.attribute_value, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute_value, fnd_api.g_miss_char) THEN
26783                 l_ext_att_hist_rec.old_attribute_value := NULL;
26784                 l_ext_att_hist_rec.new_attribute_value := NULL;
26785            ELSIF
26786               NVL(l_temp_ext_attrib_rec.attribute_value,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute_value,fnd_api.g_miss_char) THEN
26787                 l_ext_att_hist_rec.old_attribute_value := l_temp_ext_attrib_rec.attribute_value ;
26788                 l_ext_att_hist_rec.new_attribute_value := p_ext_attrib_rec.attribute_value ;
26789            END IF;
26790            --
26791            IF (p_ext_attrib_rec.active_start_date = fnd_api.g_miss_date) OR
26792                NVL(p_ext_attrib_rec.active_start_date, fnd_api.g_miss_date) = NVL(l_temp_ext_attrib_rec.active_start_date, fnd_api.g_miss_date) THEN
26793                 l_ext_att_hist_rec.old_active_start_date := NULL;
26794                 l_ext_att_hist_rec.new_active_start_date := NULL;
26795            ELSIF
26796               NVL(l_temp_ext_attrib_rec.active_start_date,fnd_api.g_miss_date) <> NVL(p_ext_attrib_rec.active_start_date,fnd_api.g_miss_date) THEN
26797                 l_ext_att_hist_rec.old_active_start_date := l_temp_ext_attrib_rec.active_start_date ;
26798                 l_ext_att_hist_rec.new_active_start_date := p_ext_attrib_rec.active_start_date ;
26799            END IF;
26800            --
26801            IF (p_ext_attrib_rec.active_end_date = fnd_api.g_miss_date) OR
26802                NVL(p_ext_attrib_rec.active_end_date, fnd_api.g_miss_date) = NVL(l_temp_ext_attrib_rec.active_end_date, fnd_api.g_miss_date) THEN
26803                 l_ext_att_hist_rec.old_active_end_date := NULL;
26804                 l_ext_att_hist_rec.new_active_end_date := NULL;
26805            ELSIF
26806               NVL(l_temp_ext_attrib_rec.active_end_date,fnd_api.g_miss_date) <> NVL(p_ext_attrib_rec.active_end_date,fnd_api.g_miss_date) THEN
26807                 l_ext_att_hist_rec.old_active_end_date := l_temp_ext_attrib_rec.active_end_date ;
26808                 l_ext_att_hist_rec.new_active_end_date := p_ext_attrib_rec.active_end_date ;
26809            END IF;
26810            --
26811            IF (p_ext_attrib_rec.context = fnd_api.g_miss_char) OR
26812                NVL(p_ext_attrib_rec.context, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.context, fnd_api.g_miss_char) THEN
26813                 l_ext_att_hist_rec.old_context := NULL;
26814                 l_ext_att_hist_rec.new_context := NULL;
26815            ELSIF
26816               NVL(l_temp_ext_attrib_rec.context,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.context,fnd_api.g_miss_char) THEN
26817                 l_ext_att_hist_rec.old_context := l_temp_ext_attrib_rec.context ;
26818                 l_ext_att_hist_rec.new_context := p_ext_attrib_rec.context ;
26819            END IF;
26820            --
26821            IF (p_ext_attrib_rec.attribute1 = fnd_api.g_miss_char) OR
26822                NVL(p_ext_attrib_rec.attribute1, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute1, fnd_api.g_miss_char) THEN
26823                 l_ext_att_hist_rec.old_attribute1 := NULL;
26824                 l_ext_att_hist_rec.new_attribute1 := NULL;
26825            ELSIF
26826               NVL(l_temp_ext_attrib_rec.attribute1,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute1,fnd_api.g_miss_char) THEN
26827                 l_ext_att_hist_rec.old_attribute1 := l_temp_ext_attrib_rec.attribute1 ;
26828                 l_ext_att_hist_rec.new_attribute1 := p_ext_attrib_rec.attribute1 ;
26829            END IF;
26830            --
26831            IF (p_ext_attrib_rec.attribute2 = fnd_api.g_miss_char) OR
26832                NVL(p_ext_attrib_rec.attribute2, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute2, fnd_api.g_miss_char) THEN
26833                 l_ext_att_hist_rec.old_attribute2 := NULL;
26834                 l_ext_att_hist_rec.new_attribute2 := NULL;
26835            ELSIF
26836               NVL(l_temp_ext_attrib_rec.attribute2,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute2,fnd_api.g_miss_char) THEN
26837                 l_ext_att_hist_rec.old_attribute2 := l_temp_ext_attrib_rec.attribute2 ;
26838                 l_ext_att_hist_rec.new_attribute2 := p_ext_attrib_rec.attribute2 ;
26839            END IF;
26840            --
26841            IF (p_ext_attrib_rec.attribute3 = fnd_api.g_miss_char) OR
26842                NVL(p_ext_attrib_rec.attribute3, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute3, fnd_api.g_miss_char) THEN
26843                 l_ext_att_hist_rec.old_attribute3 := NULL;
26844                 l_ext_att_hist_rec.new_attribute3 := NULL;
26845            ELSIF
26846               NVL(l_temp_ext_attrib_rec.attribute3,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute3,fnd_api.g_miss_char) THEN
26847                 l_ext_att_hist_rec.old_attribute3 := l_temp_ext_attrib_rec.attribute3 ;
26848                 l_ext_att_hist_rec.new_attribute3 := p_ext_attrib_rec.attribute3 ;
26849            END IF;
26850            --
26851            IF (p_ext_attrib_rec.attribute4 = fnd_api.g_miss_char) OR
26852                NVL(p_ext_attrib_rec.attribute4, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute4, fnd_api.g_miss_char) THEN
26853                 l_ext_att_hist_rec.old_attribute4 := NULL;
26854                 l_ext_att_hist_rec.new_attribute4 := NULL;
26855            ELSIF
26856               NVL(l_temp_ext_attrib_rec.attribute4,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute4,fnd_api.g_miss_char) THEN
26857                 l_ext_att_hist_rec.old_attribute4 := l_temp_ext_attrib_rec.attribute4 ;
26858                 l_ext_att_hist_rec.new_attribute4 := p_ext_attrib_rec.attribute4 ;
26859            END IF;
26860            --
26861            IF (p_ext_attrib_rec.attribute5 = fnd_api.g_miss_char) OR
26862                NVL(p_ext_attrib_rec.attribute5, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute5, fnd_api.g_miss_char) THEN
26863                 l_ext_att_hist_rec.old_attribute5 := NULL;
26864                 l_ext_att_hist_rec.new_attribute5 := NULL;
26865            ELSIF
26866               NVL(l_temp_ext_attrib_rec.attribute5,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute5,fnd_api.g_miss_char) THEN
26867                 l_ext_att_hist_rec.old_attribute5 := l_temp_ext_attrib_rec.attribute5 ;
26868                 l_ext_att_hist_rec.new_attribute5 := p_ext_attrib_rec.attribute5 ;
26869            END IF;
26870            --
26871            IF (p_ext_attrib_rec.attribute6 = fnd_api.g_miss_char) OR
26872                NVL(p_ext_attrib_rec.attribute6, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute6, fnd_api.g_miss_char) THEN
26873                 l_ext_att_hist_rec.old_attribute6 := NULL;
26874                 l_ext_att_hist_rec.new_attribute6 := NULL;
26875            ELSIF
26876               NVL(l_temp_ext_attrib_rec.attribute6,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute6,fnd_api.g_miss_char) THEN
26877                 l_ext_att_hist_rec.old_attribute6 := l_temp_ext_attrib_rec.attribute6 ;
26878                 l_ext_att_hist_rec.new_attribute6 := p_ext_attrib_rec.attribute6 ;
26879            END IF;
26880            --
26881            IF (p_ext_attrib_rec.attribute7 = fnd_api.g_miss_char) OR
26882                NVL(p_ext_attrib_rec.attribute7, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute7, fnd_api.g_miss_char) THEN
26883                 l_ext_att_hist_rec.old_attribute7 := NULL;
26884                 l_ext_att_hist_rec.new_attribute7 := NULL;
26885            ELSIF
26886               NVL(l_temp_ext_attrib_rec.attribute7,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute7,fnd_api.g_miss_char) THEN
26887                 l_ext_att_hist_rec.old_attribute7 := l_temp_ext_attrib_rec.attribute7 ;
26888                 l_ext_att_hist_rec.new_attribute7 := p_ext_attrib_rec.attribute7 ;
26889            END IF;
26890            --
26891            IF (p_ext_attrib_rec.attribute8 = fnd_api.g_miss_char) OR
26892                NVL(p_ext_attrib_rec.attribute8, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute8, fnd_api.g_miss_char) THEN
26893                 l_ext_att_hist_rec.old_attribute8 := NULL;
26894                 l_ext_att_hist_rec.new_attribute8 := NULL;
26895            ELSIF
26896               NVL(l_temp_ext_attrib_rec.attribute8,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute8,fnd_api.g_miss_char) THEN
26897                 l_ext_att_hist_rec.old_attribute8 := l_temp_ext_attrib_rec.attribute8 ;
26898                 l_ext_att_hist_rec.new_attribute8 := p_ext_attrib_rec.attribute8 ;
26899            END IF;
26900            --
26901            IF (p_ext_attrib_rec.attribute9 = fnd_api.g_miss_char) OR
26902                NVL(p_ext_attrib_rec.attribute9, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute9, fnd_api.g_miss_char) THEN
26903                 l_ext_att_hist_rec.old_attribute9 := NULL;
26904                 l_ext_att_hist_rec.new_attribute9 := NULL;
26905            ELSIF
26906               NVL(l_temp_ext_attrib_rec.attribute9,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute9,fnd_api.g_miss_char) THEN
26907                 l_ext_att_hist_rec.old_attribute9 := l_temp_ext_attrib_rec.attribute9 ;
26908                 l_ext_att_hist_rec.new_attribute9 := p_ext_attrib_rec.attribute9 ;
26909            END IF;
26910            --
26911            IF (p_ext_attrib_rec.attribute10 = fnd_api.g_miss_char) OR
26912                NVL(p_ext_attrib_rec.attribute10, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute10, fnd_api.g_miss_char) THEN
26913                 l_ext_att_hist_rec.old_attribute10 := NULL;
26914                 l_ext_att_hist_rec.new_attribute10 := NULL;
26915            ELSIF
26916               NVL(l_temp_ext_attrib_rec.attribute10,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute10,fnd_api.g_miss_char) THEN
26917                 l_ext_att_hist_rec.old_attribute10 := l_temp_ext_attrib_rec.attribute10 ;
26918                 l_ext_att_hist_rec.new_attribute10 := p_ext_attrib_rec.attribute10 ;
26919            END IF;
26920            --
26921            IF (p_ext_attrib_rec.attribute11 = fnd_api.g_miss_char) OR
26922                NVL(p_ext_attrib_rec.attribute11, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute11, fnd_api.g_miss_char) THEN
26923                 l_ext_att_hist_rec.old_attribute11 := NULL;
26924                 l_ext_att_hist_rec.new_attribute11 := NULL;
26925            ELSIF
26926               NVL(l_temp_ext_attrib_rec.attribute11,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute11,fnd_api.g_miss_char) THEN
26927                 l_ext_att_hist_rec.old_attribute11 := l_temp_ext_attrib_rec.attribute11 ;
26928                 l_ext_att_hist_rec.new_attribute11 := p_ext_attrib_rec.attribute11 ;
26929            END IF;
26930            --
26931            IF (p_ext_attrib_rec.attribute12 = fnd_api.g_miss_char) OR
26932                NVL(p_ext_attrib_rec.attribute12, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute12, fnd_api.g_miss_char) THEN
26933                 l_ext_att_hist_rec.old_attribute12 := NULL;
26934                 l_ext_att_hist_rec.new_attribute12 := NULL;
26935            ELSIF
26936               NVL(l_temp_ext_attrib_rec.attribute12,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute12,fnd_api.g_miss_char) THEN
26937                 l_ext_att_hist_rec.old_attribute12 := l_temp_ext_attrib_rec.attribute12 ;
26938                 l_ext_att_hist_rec.new_attribute12 := p_ext_attrib_rec.attribute12 ;
26939            END IF;
26940            --
26941            IF (p_ext_attrib_rec.attribute13 = fnd_api.g_miss_char) OR
26942                NVL(p_ext_attrib_rec.attribute13, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute13, fnd_api.g_miss_char) THEN
26943                 l_ext_att_hist_rec.old_attribute13 := NULL;
26944                 l_ext_att_hist_rec.new_attribute13 := NULL;
26945            ELSIF
26946               NVL(l_temp_ext_attrib_rec.attribute13,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute13,fnd_api.g_miss_char) THEN
26947                 l_ext_att_hist_rec.old_attribute13 := l_temp_ext_attrib_rec.attribute13 ;
26948                 l_ext_att_hist_rec.new_attribute13 := p_ext_attrib_rec.attribute13 ;
26949            END IF;
26950            --
26951            IF (p_ext_attrib_rec.attribute14 = fnd_api.g_miss_char) OR
26952                NVL(p_ext_attrib_rec.attribute14, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute14, fnd_api.g_miss_char) THEN
26953                 l_ext_att_hist_rec.old_attribute14 := NULL;
26954                 l_ext_att_hist_rec.new_attribute14 := NULL;
26955            ELSIF
26956               NVL(l_temp_ext_attrib_rec.attribute14,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute14,fnd_api.g_miss_char) THEN
26957                 l_ext_att_hist_rec.old_attribute14 := l_temp_ext_attrib_rec.attribute14 ;
26958                 l_ext_att_hist_rec.new_attribute14 := p_ext_attrib_rec.attribute14 ;
26959            END IF;
26960            --
26961            IF (p_ext_attrib_rec.attribute15 = fnd_api.g_miss_char) OR
26962                NVL(p_ext_attrib_rec.attribute15, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute15, fnd_api.g_miss_char) THEN
26963                 l_ext_att_hist_rec.old_attribute15 := NULL;
26964                 l_ext_att_hist_rec.new_attribute15 := NULL;
26965            ELSIF
26966               NVL(l_temp_ext_attrib_rec.attribute15,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute15,fnd_api.g_miss_char) THEN
26967                 l_ext_att_hist_rec.old_attribute15 := l_temp_ext_attrib_rec.attribute15 ;
26968                 l_ext_att_hist_rec.new_attribute15 := p_ext_attrib_rec.attribute15 ;
26969            END IF;
26970 
26971           -- Create a history
26972           CSI_IEA_VALUES_H_PKG.Insert_Row(
26973              l_attribute_value_h_id
26974             ,l_attribute_value_id
26975             ,p_txn_rec.transaction_id
26976             ,l_ext_att_hist_rec.old_attribute_value
26977             ,l_ext_att_hist_rec.new_attribute_value
26978             ,l_ext_att_hist_rec.old_active_start_date
26979             ,l_ext_att_hist_rec.new_active_start_date
26980             ,l_ext_att_hist_rec.old_active_end_date
26981             ,l_ext_att_hist_rec.new_active_end_date
26982             ,l_ext_att_hist_rec.old_context
26983             ,l_ext_att_hist_rec.new_context
26984             ,l_ext_att_hist_rec.old_attribute1
26985             ,l_ext_att_hist_rec.new_attribute1
26986             ,l_ext_att_hist_rec.old_attribute2
26987             ,l_ext_att_hist_rec.new_attribute2
26988             ,l_ext_att_hist_rec.old_attribute3
26989             ,l_ext_att_hist_rec.new_attribute3
26990             ,l_ext_att_hist_rec.old_attribute4
26991             ,l_ext_att_hist_rec.new_attribute4
26992             ,l_ext_att_hist_rec.old_attribute5
26993             ,l_ext_att_hist_rec.new_attribute5
26994             ,l_ext_att_hist_rec.old_attribute6
26995             ,l_ext_att_hist_rec.new_attribute6
26996             ,l_ext_att_hist_rec.old_attribute7
26997             ,l_ext_att_hist_rec.new_attribute7
26998             ,l_ext_att_hist_rec.old_attribute8
26999             ,l_ext_att_hist_rec.new_attribute8
27000             ,l_ext_att_hist_rec.old_attribute9
27001             ,l_ext_att_hist_rec.new_attribute9
27002             ,l_ext_att_hist_rec.old_attribute10
27003             ,l_ext_att_hist_rec.new_attribute10
27004             ,l_ext_att_hist_rec.old_attribute11
27005             ,l_ext_att_hist_rec.new_attribute11
27006             ,l_ext_att_hist_rec.old_attribute12
27007             ,l_ext_att_hist_rec.new_attribute12
27008             ,l_ext_att_hist_rec.old_attribute13
27009             ,l_ext_att_hist_rec.new_attribute13
27010             ,l_ext_att_hist_rec.old_attribute14
27011             ,l_ext_att_hist_rec.new_attribute14
27012             ,l_ext_att_hist_rec.old_attribute15
27013             ,l_ext_att_hist_rec.new_attribute15
27014             ,l_dump_frequency_flag
27015             ,fnd_global.user_id
27016             ,sysdate
27017             ,fnd_global.user_id
27018             ,sysdate
27019             ,fnd_global.user_id
27020             ,1);
27021 
27022      END IF;
27023      END;
27024      -- End of modifications for Bug#2547034 on 09/20/02 - rtalluri
27025      -- End of API body
27026 
27027      -- Standard check of p_commit.
27028      IF FND_API.To_Boolean( p_commit ) THEN
27029         COMMIT WORK;
27030      END IF;
27031 
27032      -- Standard call to get message count and if count is  get message info.
27033      FND_MSG_PUB.Count_And_Get
27034            (p_count       =>       x_msg_count ,
27035             p_data        =>       x_msg_data
27036             );
27037 
27038 EXCEPTION
27039 
27040     WHEN FND_API.G_EXC_ERROR THEN
27041             ROLLBACK TO update_extended_attrib_values;
27042             x_return_status := FND_API.G_RET_STS_ERROR ;
27043             FND_MSG_PUB.Count_And_Get
27044                 ( p_count    =>      x_msg_count,
27045                   p_data     =>      x_msg_data
27046                 );
27047 
27048       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
27049             ROLLBACK TO update_extended_attrib_values;
27050             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
27051             FND_MSG_PUB.Count_And_Get
27052                   ( p_count  =>      x_msg_count,
27053                     p_data   =>      x_msg_data
27054                   );
27055 
27056       WHEN OTHERS THEN
27057             ROLLBACK TO  update_extended_attrib_values;
27058             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
27059 
27060             IF FND_MSG_PUB.Check_Msg_Level
27061                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
27062             THEN
27063                     FND_MSG_PUB.Add_Exc_Msg
27064                         ( g_pkg_name,
27065                           l_api_name
27066                         );
27067             END IF;
27068 
27069             FND_MSG_PUB.Count_And_Get
27070                     (  p_count =>      x_msg_count,
27071                        p_data  =>      x_msg_data
27072                      );
27073 
27074 END update_extended_attrib_values;
27075 
27076 
27077 
27078 
27079 /*----------------------------------------------------------*/
27080 /* procedure name: expire_extended_attrib_values            */
27081 /* description :  Expires the existing extended             */
27082 /*                attributes for an item instance           */
27083 /*                                                          */
27084 /*----------------------------------------------------------*/
27085 
27086 
27087 PROCEDURE expire_extended_attrib_values
27088  (    p_api_version        IN       NUMBER
27089      ,p_commit             IN       VARCHAR2
27090      ,p_init_msg_list      IN       VARCHAR2
27091      ,p_validation_level   IN       NUMBER
27092      ,p_ext_attrib_rec     IN       csi_datastructures_pub.extend_attrib_values_rec
27093      ,p_txn_rec            IN   OUT NOCOPY csi_datastructures_pub.transaction_rec
27094      ,x_return_status           OUT NOCOPY VARCHAR2
27095      ,x_msg_count               OUT NOCOPY NUMBER
27096      ,x_msg_data                OUT NOCOPY VARCHAR2
27097  )
27098 
27099 IS
27100      l_api_name             CONSTANT VARCHAR2(30)   := 'expire_extended_attrib_values';
27101      l_api_version          CONSTANT NUMBER         := 1.0;
27102      l_debug_level                   NUMBER;
27103      l_msg_index                     NUMBER;
27104      l_msg_count                     NUMBER;
27105      l_ext_attrib_rec                csi_datastructures_pub.extend_attrib_values_rec;
27106 BEGIN
27107 
27108     -- Standard Start of API savepoint
27109     SAVEPOINT      expire_extended_attrib_values;
27110 
27111     -- Standard call to check for call compatibility.
27112     IF NOT FND_API.Compatible_API_Call (l_api_version,
27113                                         p_api_version,
27114                                         l_api_name ,
27115                                         g_pkg_name)
27116     THEN
27117           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
27118     END IF;
27119 
27120     -- Initialize message list if p_init_msg_list is set to TRUE.
27121     IF FND_API.to_Boolean( p_init_msg_list ) THEN
27122           FND_MSG_PUB.initialize;
27123     END IF;
27124 
27125     --  Initialize API return status to success
27126     x_return_status := FND_API.G_RET_STS_SUCCESS;
27127 
27128 
27129     -- Check the profile option debug_level for debug message reporting
27130 
27131     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
27132 
27133     -- If debug_level = 1 then dump the procedure name
27134     IF (l_debug_level > 0) THEN
27135         csi_gen_utility_pvt.put_line( 'expire_extended_attrib_values');
27136     END IF;
27137 
27138 
27139     -- If the debug level = 2 then dump all the parameters values.
27140     IF (l_debug_level > 1) THEN
27141           csi_gen_utility_pvt.put_line(
27142                                        p_api_version     ||'-'
27143                                     || p_commit          ||'-'
27144                                     || p_init_msg_list   ||'-'
27145                                     || p_validation_level);
27146      -- Dump extended attribute rec
27147        csi_gen_utility_pvt.dump_ext_attrib_values_rec(p_ext_attrib_rec);
27148      -- Dump txn_rec
27149        csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
27150     END IF;
27151 
27152 
27153     -- Start API body
27154     -- Validate extended_attribute_value_id
27155       IF NOT(csi_extend_attrib_vld_pvt.Val_and_get_ext_att_id
27156              (p_ext_attrib_rec.attribute_value_id,
27157               l_ext_attrib_rec )) THEN
27158           RAISE FND_API.G_EXC_ERROR;
27159       END IF;
27160 
27161 
27162       l_ext_attrib_rec.attribute_value_id    :=    p_ext_attrib_rec.attribute_value_id;
27163       l_ext_attrib_rec.attribute_id          :=    FND_API.G_MISS_NUM;
27164       l_ext_attrib_rec.instance_id           :=    FND_API.G_MISS_NUM;
27165       l_ext_attrib_rec.attribute_value       :=    FND_API.G_MISS_CHAR;
27166       l_ext_attrib_rec.active_start_date     :=    FND_API.G_MISS_DATE ;
27167       l_ext_attrib_rec.active_end_date       :=    SYSDATE;
27168       l_ext_attrib_rec.context               :=    FND_API.G_MISS_CHAR;
27169       l_ext_attrib_rec.attribute1            :=    FND_API.G_MISS_CHAR;
27170       l_ext_attrib_rec.attribute2            :=    FND_API.G_MISS_CHAR;
27171       l_ext_attrib_rec.attribute3            :=    FND_API.G_MISS_CHAR;
27172       l_ext_attrib_rec.attribute4            :=    FND_API.G_MISS_CHAR;
27173       l_ext_attrib_rec.attribute5            :=    FND_API.G_MISS_CHAR;
27174       l_ext_attrib_rec.attribute6            :=    FND_API.G_MISS_CHAR;
27175       l_ext_attrib_rec.attribute7            :=    FND_API.G_MISS_CHAR;
27176       l_ext_attrib_rec.attribute8            :=    FND_API.G_MISS_CHAR;
27177       l_ext_attrib_rec.attribute9            :=    FND_API.G_MISS_CHAR;
27178       l_ext_attrib_rec.attribute10           :=    FND_API.G_MISS_CHAR;
27179       l_ext_attrib_rec.attribute11           :=    FND_API.G_MISS_CHAR;
27180       l_ext_attrib_rec.attribute12           :=    FND_API.G_MISS_CHAR;
27181       l_ext_attrib_rec.attribute13           :=    FND_API.G_MISS_CHAR;
27182       l_ext_attrib_rec.attribute14           :=    FND_API.G_MISS_CHAR;
27183       l_ext_attrib_rec.attribute15           :=    FND_API.G_MISS_CHAR;
27184       l_ext_attrib_rec.object_version_number :=    p_ext_attrib_rec.object_version_number;
27185 
27186 
27187       g_expire_ext_att_flag  := 'Y';
27188       csi_item_instance_pvt.update_extended_attrib_values
27189            (p_api_version       => p_api_version
27190            ,p_commit            => fnd_api.g_false
27191            ,p_init_msg_list     => p_init_msg_list
27192            ,p_validation_level  => p_validation_level
27193            ,p_ext_attrib_rec    => l_ext_attrib_rec
27194            ,p_txn_rec           => p_txn_rec
27195            ,x_return_status     => x_return_status
27196            ,x_msg_count         =>  x_msg_count
27197            ,x_msg_data          =>  x_msg_data
27198            );
27199 
27200       g_expire_ext_att_flag  := 'N';
27201            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
27202                    l_msg_index := 1;
27203                    l_msg_count := x_msg_count;
27204                    WHILE l_msg_count > 0 LOOP
27205                       x_msg_data := FND_MSG_PUB.GET
27206                       (l_msg_index,
27207                        FND_API.G_FALSE      );
27208 
27209                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
27210                        l_msg_index := l_msg_index + 1;
27211                        l_msg_count := l_msg_count - 1;
27212                    END LOOP;
27213                    RAISE FND_API.G_EXC_ERROR;
27214            END IF;
27215 
27216 
27217 
27218        -- End of API body
27219 
27220        -- Standard check of p_commit.
27221        IF FND_API.To_Boolean( p_commit ) THEN
27222           COMMIT WORK;
27223        END IF;
27224 
27225        -- Standard call to get message count and if count is  get message info.
27226        FND_MSG_PUB.Count_And_Get
27227            (p_count       =>       x_msg_count ,
27228             p_data        =>       x_msg_data
27229             );
27230 
27231 
27232 EXCEPTION
27233 
27234     WHEN FND_API.G_EXC_ERROR THEN
27235             ROLLBACK TO expire_extended_attrib_values;
27236             x_return_status := FND_API.G_RET_STS_ERROR ;
27237             FND_MSG_PUB.Count_And_Get
27238                 (  p_count     =>      x_msg_count,
27239                    p_data      =>      x_msg_data
27240                 );
27241 
27242       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
27243             ROLLBACK TO expire_extended_attrib_values;
27244             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
27245             FND_MSG_PUB.Count_And_Get
27246                 (  p_count     =>      x_msg_count,
27247                    p_data      =>      x_msg_data
27248                  );
27249 
27250       WHEN OTHERS THEN
27251             ROLLBACK TO  expire_extended_attrib_values;
27252             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
27253 
27254               IF FND_MSG_PUB.Check_Msg_Level
27255                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
27256             THEN
27257                     FND_MSG_PUB.Add_Exc_Msg
27258                         (g_pkg_name,
27259                          l_api_name
27260                         );
27261             END IF;
27262 
27263             FND_MSG_PUB.Count_And_Get
27264                     (  p_count       =>      x_msg_count,
27265                        p_data        =>      x_msg_data
27266                      );
27267 
27268 END expire_extended_attrib_values;
27269 
27270 
27271 /*------------------------------------------------------*/
27272 /* procedure name: copy_single_item_instance               */
27273 /* description :  Copies an instace from an instance    */
27274 /*                                                      */
27275 /*------------------------------------------------------*/
27276 
27277 
27278 
27279 PROCEDURE copy_single_item_instance
27280  (
27281    p_api_version            IN         NUMBER
27282   ,p_commit                 IN         VARCHAR2
27283   ,p_init_msg_list          IN         VARCHAR2
27284   ,p_validation_level       IN         NUMBER
27285   ,p_source_instance_rec    IN         csi_datastructures_pub.instance_rec
27286   ,p_copy_ext_attribs       IN         VARCHAR2
27287   ,p_copy_org_assignments   IN         VARCHAR2
27288   ,p_copy_parties           IN         VARCHAR2
27289   ,p_copy_contacts          IN         VARCHAR2
27290   ,p_copy_accounts          IN         VARCHAR2
27291   ,p_copy_asset_assignments IN         VARCHAR2
27292   ,p_copy_pricing_attribs   IN         VARCHAR2
27293   ,p_call_from_split        IN         VARCHAR2
27294   ,p_call_from_bom_expl     IN         VARCHAR2
27295   ,p_txn_rec                IN  OUT    NOCOPY csi_datastructures_pub.transaction_rec
27296   ,x_new_instance_tbl           OUT    NOCOPY csi_datastructures_pub.instance_tbl
27297   ,x_return_status              OUT    NOCOPY VARCHAR2
27298   ,x_msg_count                  OUT    NOCOPY NUMBER
27299   ,x_msg_data                   OUT    NOCOPY VARCHAR2
27300  )
27301 
27302  IS
27303     l_api_name                         CONSTANT VARCHAR2(30) := 'copy_single_item_instance';
27304     l_api_version                     CONSTANT NUMBER      := 1.0;
27305     l_debug_level                                NUMBER;
27306     l_curr_instance_rec                     csi_datastructures_pub.instance_rec;
27307     l_new_instance_rec                      csi_datastructures_pub.instance_rec;
27308     l_asset_tbl                             csi_datastructures_pub.instance_asset_tbl;
27309     l_asset_header_tbl                      csi_datastructures_pub.instance_asset_header_tbl;--rk
27310     l_ext_attrib_tbl                        csi_datastructures_pub.extend_attrib_values_tbl;
27311     l_ext_attrib_def_tbl                    csi_datastructures_pub.extend_attrib_tbl;
27312     l_ext_attribs_query_rec                 csi_datastructures_pub.extend_attrib_query_rec;
27313     l_ou_query_rec                          csi_datastructures_pub.organization_unit_query_rec;
27314     l_org_unit_tbl                          csi_datastructures_pub.organization_units_tbl;
27315     l_org_unit_header_tbl                   csi_datastructures_pub.org_units_header_tbl;--rk
27316     l_pricing_attribs_query_rec             csi_datastructures_pub.pricing_attribs_query_rec;
27317     l_pricing_attribs_tbl                   csi_datastructures_pub.pricing_attribs_tbl;
27318     l_account_header_tbl                    csi_datastructures_pub.party_account_header_tbl;
27319     l_instance_asset_query_rec              csi_datastructures_pub.instance_asset_query_rec;
27320     l_instance_asset_rec                    csi_datastructures_pub.instance_asset_rec;
27321     l_party_query_rec                       csi_datastructures_pub.party_query_rec;
27322     l_party_tbl                             csi_datastructures_pub.party_tbl;
27323     l_original_party_tbl                    csi_datastructures_pub.party_tbl;
27324     l_party_input_tbl                       csi_datastructures_pub.party_tbl;
27325     l_new_party_tbl                         csi_datastructures_pub.party_tbl;
27326     l_contact_tbl                           csi_datastructures_pub.party_tbl;
27327     l_contact_input_tbl                       csi_datastructures_pub.party_tbl;
27328     l_contact_found_flag                    BOOLEAN := FALSE;
27329     l_new_contact_tbl                       csi_datastructures_pub.party_tbl;
27330     l_party_header_tbl                      csi_datastructures_pub.party_header_tbl;
27331     l_party_account_query_rec               csi_datastructures_pub.party_account_query_rec;
27332     l_contact_account_query_rec             csi_datastructures_pub.party_account_query_rec;
27333     l_party_account_tbl                     csi_datastructures_pub.party_account_tbl;
27334     l_contact_account_tbl                   csi_datastructures_pub.party_account_tbl;
27335     l_temp_party_account_tbl                csi_datastructures_pub.party_account_tbl;
27336     l_msg_index                             NUMBER;
27337     l_msg_count                             NUMBER;
27338     l_attribute_level                       VARCHAR2(30);
27339     l_vld_org_id                            NUMBER;
27340     l_internal_party_id                     NUMBER;
27341     l_party_id                              NUMBER;
27342     l_item_attribute_tbl                    csi_item_instance_pvt.item_attribute_tbl;
27343     l_location_tbl                          csi_item_instance_pvt.location_tbl;
27344     l_generic_id_tbl                        csi_item_instance_pvt.generic_id_tbl;
27345     l_lookup_tbl                            csi_item_instance_pvt.lookup_tbl;
27346     l_ins_count_rec                         csi_item_instance_pvt.ins_count_rec;
27347     l_asset_lookup_tbl                      csi_asset_pvt.lookup_tbl;
27348     l_asset_count_rec                       csi_asset_pvt.asset_count_rec;
27349     l_asset_id_tbl                          csi_asset_pvt.asset_id_tbl;
27350     l_asset_loc_tbl                         csi_asset_pvt.asset_loc_tbl;
27351     l_version_label                         VARCHAR2(30);
27352     l_version_label_rec                     csi_datastructures_pub.version_label_rec;
27353     l_obj_id                                NUMBER;
27354     --
27355     px_oks_txn_inst_tbl                     oks_ibint_pub.txn_instance_tbl;
27356     l_batch_type                            VARCHAR2(50);
27357     l_batch_id                              NUMBER;
27358     --
27359 BEGIN
27360     -- Standard Start of API savepoint
27361           SAVEPOINT      copy_single_item_instance;
27362     -- Standard call to check for call compatibility.
27363       IF NOT FND_API.Compatible_API_Call (l_api_version,
27364                                           p_api_version,
27365                                           l_api_name ,
27366                                           G_PKG_NAME)
27367       THEN
27368             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
27369       END IF;
27370    -- Initialize message list if p_init_msg_list is set to TRUE.
27371       IF FND_API.to_Boolean( p_init_msg_list ) THEN
27372             FND_MSG_PUB.initialize;
27373       END IF;
27374       --  Initialize API return status to success
27375           x_return_status := FND_API.G_RET_STS_SUCCESS;
27376     -- Check the profile option debug_level for debug message reporting
27377           l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
27378     -- If debug_level = 1 then dump the procedure name
27379    IF (l_debug_level > 0) THEN
27380        csi_gen_utility_pvt.put_line('copy_single_item_instance ');
27381    END IF;
27382     -- If the debug level = 2 then dump all the parameters values.
27383     IF (l_debug_level > 1) THEN
27384          csi_gen_utility_pvt.put_line('copy_single_item_instance '||
27385                               p_api_version ||'-'
27386                            || p_commit ||'-'
27387                            || p_init_msg_list ||'-'
27388                            || p_validation_level ||'-'
27389                            || p_copy_ext_attribs ||'-'
27390                            || p_copy_org_assignments ||'-'
27391                            || p_copy_parties  ||'-'
27392                            || p_copy_contacts  ||'-'
27393                            || p_copy_accounts  ||'-'
27394                            || p_copy_asset_assignments ||'-'
27395                            || p_copy_pricing_attribs
27396                             );
27397      -- Dump item instanc red
27398          csi_gen_utility_pvt.dump_instance_rec(p_source_instance_rec);
27399      -- Dump txn_rec
27400          csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
27401 
27402     END IF;
27403     -- Start API body
27404     -- Check if an instance id is passed in p_source_instance_rec or not.
27405     -- If yes, then query the item instance from from csi_item_instances table
27406     -- into l_curr_instance_rec.
27407     /*
27408      IF ((p_source_instance_rec.VLD_ORGANIZATION_ID = FND_API.G_MISS_NUM)
27409          OR (p_source_instance_rec.VLD_ORGANIZATION_ID IS NULL)) THEN
27410              FND_MESSAGE.SET_NAME('CSI','CSI_API_VLD_ORG_ID_NULL');
27411                FND_MSG_PUB.Add;
27412              RAISE FND_API.G_EXC_ERROR;
27413      ELSE
27414         l_new_instance_rec.VLD_ORGANIZATION_ID := p_source_instance_rec.VLD_ORGANIZATION_ID;
27415      END IF;
27416      */
27417 
27418     -- Added by sk for bug 2186683
27419     IF p_source_instance_rec.vld_organization_id IS NULL OR
27420        p_source_instance_rec.vld_organization_id = fnd_api.g_miss_num
27421     THEN
27422        BEGIN
27423           SELECT last_vld_organization_id
27424           INTO   l_vld_org_id
27425           FROM   csi_item_instances
27426           WHERE  instance_id = p_source_instance_rec.instance_id;
27427        EXCEPTION
27428          WHEN OTHERS THEN
27429             NULL;
27430        END;
27431     END IF;
27432     -- End addition by sk for bug 2186683
27433 
27434      IF (p_source_instance_rec.instance_id IS NULL) OR
27435          (p_source_instance_rec.instance_id = FND_API.G_MISS_NUM) THEN
27436                FND_MESSAGE.SET_NAME('CSI','CSI_API_INSTANCE_ID_NULL');
27437                  FND_MSG_PUB.Add;
27438              RAISE FND_API.G_EXC_ERROR;
27439      ELSIF NOT (csi_Item_Instance_Vld_pvt.Val_and_get_inst_rec(
27440                   p_source_instance_rec.instance_id ,
27441                   l_curr_instance_rec )) THEN
27442                RAISE FND_API.G_EXC_ERROR;
27443      END IF;
27444 
27445     -- Check if the user has not passed incorrect options for contacts
27446      IF ((p_copy_parties  = fnd_api.g_false)
27447         AND (p_copy_contacts  = fnd_api.g_true)) THEN
27448           FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_PTY_CONTACT_OPT');
27449           FND_MSG_PUB.Add;
27450           RAISE FND_API.G_EXC_ERROR;
27451      END IF;
27452      -- If the user has passed p_copy_parties as false get only the owner, else get all the parties
27453      IF (p_copy_parties  = fnd_api.g_true) THEN
27454           l_party_query_rec.instance_party_id         := FND_API.G_MISS_NUM;
27455           l_party_query_rec.instance_id               := l_curr_instance_rec.instance_id;
27456           l_party_query_rec.party_id                  := FND_API.G_MISS_NUM;
27457           l_party_query_rec.relationship_type_code    := FND_API.G_MISS_CHAR;
27458          csi_party_relationships_pub.get_inst_party_relationships
27459                     ( p_api_version                 => p_api_version
27460                      ,p_commit                      => p_commit
27461                      ,p_init_msg_list               => p_init_msg_list
27462                      ,p_validation_level            => p_validation_level
27463                      ,p_party_query_rec             => l_party_query_rec
27464                      ,p_resolve_id_columns          => fnd_api.g_true
27465                      ,p_time_stamp                  =>  NULL
27466                      ,x_party_header_tbl            => l_party_header_tbl
27467                      ,x_return_status               => x_return_status
27468                      ,x_msg_count                   => x_msg_count
27469                      ,x_msg_data                    => x_msg_data
27470                      );
27471 
27472                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
27473                   l_msg_index := 1;
27474                   l_msg_count := x_msg_count;
27475                   WHILE l_msg_count > 0 LOOP
27476                        x_msg_data := FND_MSG_PUB.GET
27477                                       (l_msg_index,
27478                                      FND_API.G_FALSE      );
27479                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
27480                        l_msg_index := l_msg_index + 1;
27481                        l_msg_count := l_msg_count - 1;
27482                   END LOOP;
27483                   RAISE FND_API.G_EXC_ERROR;
27484                 END IF;
27485      ELSE
27486           l_party_query_rec.instance_party_id         := FND_API.G_MISS_NUM;
27487           l_party_query_rec.instance_id               := l_curr_instance_rec.instance_id;
27488           l_party_query_rec.party_id                  := FND_API.G_MISS_NUM;
27489           l_party_query_rec.relationship_type_code    := 'OWNER';
27490          csi_party_relationships_pub.get_inst_party_relationships
27491                     ( p_api_version                 => p_api_version
27492                      ,p_commit                      => p_commit
27493                      ,p_init_msg_list               => p_init_msg_list
27494                      ,p_validation_level            => p_validation_level
27495                      ,p_party_query_rec             => l_party_query_rec
27496                      ,p_resolve_id_columns          => fnd_api.g_true
27497                      ,p_time_stamp                  => NULL
27498                      ,x_party_header_tbl            => l_party_header_tbl
27499                      ,x_return_status               => x_return_status
27500                      ,x_msg_count                   => x_msg_count
27501                      ,x_msg_data                    => x_msg_data
27502                      );
27503 
27504                  IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
27505                   l_msg_index := 1;
27506                   l_msg_count := x_msg_count;
27507                   WHILE l_msg_count > 0 LOOP
27508                        x_msg_data := FND_MSG_PUB.GET
27509                                       (l_msg_index,
27510                                      FND_API.G_FALSE      );
27511 
27512                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
27513                        l_msg_index := l_msg_index + 1;
27514                        l_msg_count := l_msg_count - 1;
27515                   END LOOP;
27516                   RAISE FND_API.G_EXC_ERROR;
27517                 END IF;
27518 
27519     END IF;
27520 --   This is mean to initialize the l_party_table in order to create an instance.
27521     IF l_party_header_tbl.COUNT > 0 THEN    /*****First change here 07/27/01 - RK***/
27522                 FOR tab_row_party IN l_party_header_tbl.FIRST .. l_party_header_tbl.LAST
27523                 LOOP
27524                      IF l_party_header_tbl.EXISTS(tab_row_party) THEN
27525                         IF  l_party_header_tbl(tab_row_party).contact_flag = 'Y' THEN
27526                             -- build the contacts table
27527                              l_contact_tbl(tab_row_party).instance_party_id := l_party_header_tbl(tab_row_party).instance_party_id;
27528                              l_contact_tbl(tab_row_party).instance_id := l_party_header_tbl(tab_row_party).instance_id;
27529                              l_contact_tbl(tab_row_party).party_id := l_party_header_tbl(tab_row_party).party_id;
27530                              l_contact_tbl(tab_row_party).party_source_table := l_party_header_tbl(tab_row_party).party_source_table;
27531                              l_contact_tbl(tab_row_party).relationship_type_code := l_party_header_tbl(tab_row_party).relationship_type_code;
27532                              l_contact_tbl(tab_row_party).contact_flag := l_party_header_tbl(tab_row_party).contact_flag;
27533                              l_contact_tbl(tab_row_party).contact_ip_id := l_party_header_tbl(tab_row_party).contact_ip_id;
27534                              l_contact_tbl(tab_row_party).active_start_date := l_party_header_tbl(tab_row_party).active_start_date;
27535                              l_contact_tbl(tab_row_party).active_end_date := l_party_header_tbl(tab_row_party).active_end_date;
27536                              l_contact_tbl(tab_row_party).context := l_party_header_tbl(tab_row_party).context;
27537                              l_contact_tbl(tab_row_party).attribute1 := l_party_header_tbl(tab_row_party).attribute1;
27538                              l_contact_tbl(tab_row_party).attribute2 := l_party_header_tbl(tab_row_party).attribute2;
27539                              l_contact_tbl(tab_row_party).attribute3 := l_party_header_tbl(tab_row_party).attribute3;
27540                              l_contact_tbl(tab_row_party).attribute4 := l_party_header_tbl(tab_row_party).attribute4;
27541                              l_contact_tbl(tab_row_party).attribute5 := l_party_header_tbl(tab_row_party).attribute5;
27542                              l_contact_tbl(tab_row_party).attribute6 := l_party_header_tbl(tab_row_party).attribute6;
27543                              l_contact_tbl(tab_row_party).attribute7 := l_party_header_tbl(tab_row_party).attribute7;
27544                              l_contact_tbl(tab_row_party).attribute8 := l_party_header_tbl(tab_row_party).attribute8;
27545                              l_contact_tbl(tab_row_party).attribute9 := l_party_header_tbl(tab_row_party).attribute9;
27546                              l_contact_tbl(tab_row_party).attribute10 := l_party_header_tbl(tab_row_party).attribute10;
27547                              l_contact_tbl(tab_row_party).attribute11 := l_party_header_tbl(tab_row_party).attribute11;
27548                              l_contact_tbl(tab_row_party).attribute12 := l_party_header_tbl(tab_row_party).attribute12;
27549                              l_contact_tbl(tab_row_party).attribute13 := l_party_header_tbl(tab_row_party).attribute13;
27550                              l_contact_tbl(tab_row_party).attribute14 := l_party_header_tbl(tab_row_party).attribute14;
27551                              l_contact_tbl(tab_row_party).attribute15 := l_party_header_tbl(tab_row_party).attribute15;
27552                              l_contact_tbl(tab_row_party).object_version_number := l_party_header_tbl(tab_row_party).object_version_number;
27553   --Start fo Addition for the Bugfix 2354589.
27554                              l_contact_tbl(tab_row_party).preferred_flag := l_party_header_tbl(tab_row_party).preferred_flag;
27555                              l_contact_tbl(tab_row_party).primary_flag := l_party_header_tbl(tab_row_party).primary_flag;
27556   --End of Addition for the Bugfix 2354589.
27557                         ELSE -- Build the parties table
27558                              l_party_tbl(tab_row_party).instance_party_id := l_party_header_tbl(tab_row_party).instance_party_id;
27559                              l_party_tbl(tab_row_party).instance_id := l_party_header_tbl(tab_row_party).instance_id;
27560                              l_party_tbl(tab_row_party).party_id := l_party_header_tbl(tab_row_party).party_id;
27561                              l_party_tbl(tab_row_party).party_source_table := l_party_header_tbl(tab_row_party).party_source_table;
27562                              l_party_tbl(tab_row_party).relationship_type_code := l_party_header_tbl(tab_row_party).relationship_type_code;
27563                              l_party_tbl(tab_row_party).contact_flag := l_party_header_tbl(tab_row_party).contact_flag;
27564                              l_party_tbl(tab_row_party).contact_ip_id := l_party_header_tbl(tab_row_party).contact_ip_id;
27565                              l_party_tbl(tab_row_party).active_start_date := l_party_header_tbl(tab_row_party).active_start_date;
27566                              l_party_tbl(tab_row_party).active_end_date := l_party_header_tbl(tab_row_party).active_end_date;
27567                              l_party_tbl(tab_row_party).context := l_party_header_tbl(tab_row_party).context;
27568                              l_party_tbl(tab_row_party).attribute1 := l_party_header_tbl(tab_row_party).attribute1;
27569                              l_party_tbl(tab_row_party).attribute2 := l_party_header_tbl(tab_row_party).attribute2;
27570                              l_party_tbl(tab_row_party).attribute3 := l_party_header_tbl(tab_row_party).attribute3;
27571                              l_party_tbl(tab_row_party).attribute4 := l_party_header_tbl(tab_row_party).attribute4;
27572                              l_party_tbl(tab_row_party).attribute5 := l_party_header_tbl(tab_row_party).attribute5;
27573                              l_party_tbl(tab_row_party).attribute6 := l_party_header_tbl(tab_row_party).attribute6;
27574                              l_party_tbl(tab_row_party).attribute7 := l_party_header_tbl(tab_row_party).attribute7;
27575                              l_party_tbl(tab_row_party).attribute8 := l_party_header_tbl(tab_row_party).attribute8;
27576                              l_party_tbl(tab_row_party).attribute9 := l_party_header_tbl(tab_row_party).attribute9;
27577                              l_party_tbl(tab_row_party).attribute10 := l_party_header_tbl(tab_row_party).attribute10;
27578                              l_party_tbl(tab_row_party).attribute11 := l_party_header_tbl(tab_row_party).attribute11;
27579                              l_party_tbl(tab_row_party).attribute12 := l_party_header_tbl(tab_row_party).attribute12;
27580                              l_party_tbl(tab_row_party).attribute13 := l_party_header_tbl(tab_row_party).attribute13;
27581                              l_party_tbl(tab_row_party).attribute14 := l_party_header_tbl(tab_row_party).attribute14;
27582                              l_party_tbl(tab_row_party).attribute15 := l_party_header_tbl(tab_row_party).attribute15;
27583                              l_party_tbl(tab_row_party).object_version_number := l_party_header_tbl(tab_row_party).object_version_number;
27584   --Start fo Addition for the Bugfix 2354589.
27585                              l_party_tbl(tab_row_party).preferred_flag := l_party_header_tbl(tab_row_party).preferred_flag;
27586                              l_party_tbl(tab_row_party).primary_flag := l_party_header_tbl(tab_row_party).primary_flag;
27587   --End of Addition for the Bugfix 2354589.
27588                          END IF;
27589                      END IF;
27590                 END LOOP;
27591    END IF; --l_party_header_tbl.COUNT > 0
27592   l_original_party_tbl := l_party_tbl;
27593    -- Empty the party table
27594    l_party_header_tbl.DELETE;
27595     -- Create asset assignments if requested. Asset_assignment_tbl has alredy been fetched
27596     IF  (p_copy_asset_assignments  = fnd_api.g_true) THEN
27597           l_instance_asset_query_rec.instance_asset_id  := FND_API.G_MISS_NUM;
27598           l_instance_asset_query_rec.instance_id  := l_curr_instance_rec.instance_id;
27599           l_instance_asset_query_rec.fa_asset_id   := FND_API.G_MISS_NUM;
27600           l_instance_asset_query_rec.fa_book_type_code := FND_API.G_MISS_CHAR;
27601           l_instance_asset_query_rec.fa_location_id := FND_API.G_MISS_NUM;
27602           l_instance_asset_query_rec.update_status := FND_API.G_MISS_CHAR;
27603            csi_asset_pvt.get_instance_assets
27604             ( p_api_version                 => p_api_version
27605              ,p_commit                      => p_commit
27606              ,p_init_msg_list               => p_init_msg_list
27607              ,p_validation_level            => p_validation_level
27608              ,p_instance_asset_query_rec    => l_instance_asset_query_rec
27609              ,p_resolve_id_columns          => fnd_api.g_true
27610              ,p_time_stamp                  => NULL
27611              ,x_instance_asset_tbl          => l_asset_header_tbl
27612              ,x_return_status               => x_return_status
27613              ,x_msg_count                   => x_msg_count
27614              ,x_msg_data                    => x_msg_data
27615              );
27616 
27617                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
27618                   l_msg_index := 1;
27619                   l_msg_count := x_msg_count;
27620                   WHILE l_msg_count > 0 LOOP
27621                        x_msg_data := FND_MSG_PUB.GET
27622                                       (l_msg_index,
27623                                      FND_API.G_FALSE      );
27624                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
27625                        l_msg_index := l_msg_index + 1;
27626                        l_msg_count := l_msg_count - 1;
27627                   END LOOP;
27628                   RAISE FND_API.G_EXC_ERROR;
27629                 END IF;
27630 
27631     END IF;
27632 
27633 
27634 
27635     IF l_asset_header_tbl.COUNT > 0 THEN    /*****First change here 08/25/01 - RK***/
27636                 FOR tab_row_party IN l_asset_header_tbl.FIRST .. l_asset_header_tbl.LAST
27637                 LOOP
27638                      IF l_asset_header_tbl.EXISTS(tab_row_party) THEN
27639                              l_asset_tbl(tab_row_party).instance_asset_id := l_asset_header_tbl(tab_row_party).instance_asset_id;
27640                              l_asset_tbl(tab_row_party).instance_id := l_asset_header_tbl(tab_row_party).instance_id;
27641                              l_asset_tbl(tab_row_party).fa_asset_id := l_asset_header_tbl(tab_row_party).fa_asset_id;
27642                              l_asset_tbl(tab_row_party).fa_book_type_code := l_asset_header_tbl(tab_row_party).fa_book_type_code;
27643                              l_asset_tbl(tab_row_party).fa_location_id := l_asset_header_tbl(tab_row_party).fa_location_id;
27644                              l_asset_tbl(tab_row_party).asset_quantity := l_asset_header_tbl(tab_row_party).asset_quantity;
27645                              l_asset_tbl(tab_row_party).update_status := l_asset_header_tbl(tab_row_party).update_status;
27646                              l_asset_tbl(tab_row_party).active_start_date := l_asset_header_tbl(tab_row_party).active_start_date;
27647                              l_asset_tbl(tab_row_party).active_end_date := l_asset_header_tbl(tab_row_party).active_end_date;
27648                              l_asset_tbl(tab_row_party).object_version_number := l_asset_header_tbl(tab_row_party).object_version_number;
27649                      END IF;
27650                 END LOOP;
27651    END IF; --l_asset_header_tbl.COUNT > 0
27652    -- Set the non-copiable attributes as follows
27653 
27654        l_new_instance_rec.CREATION_COMPLETE_FLAG := p_source_instance_rec.CREATION_COMPLETE_FLAG;
27655        l_new_instance_rec.COMPLETENESS_FLAG := p_source_instance_rec.COMPLETENESS_FLAG;
27656 
27657     IF (p_source_instance_rec.EXTERNAL_REFERENCE = FND_API.G_MISS_CHAR) THEN
27658         l_new_instance_rec.EXTERNAL_REFERENCE := l_curr_instance_rec.EXTERNAL_REFERENCE;
27659     ELSE
27660         l_new_instance_rec.EXTERNAL_REFERENCE := p_source_instance_rec.EXTERNAL_REFERENCE;
27661     END IF;
27662     IF ((p_source_instance_rec.INVENTORY_ITEM_ID = FND_API.G_MISS_NUM)
27663             OR (p_source_instance_rec.INVENTORY_ITEM_ID IS NULL)) THEN
27664         l_new_instance_rec.INVENTORY_ITEM_ID := l_curr_instance_rec.INVENTORY_ITEM_ID;
27665     ELSE
27666         l_new_instance_rec.INVENTORY_ITEM_ID := p_source_instance_rec.INVENTORY_ITEM_ID;
27667     END IF;
27668 
27669      -- srramakr commented for bug # 2558156
27670      -- Uncommented for bug 2985165
27671      IF p_call_from_split=fnd_api.g_true
27672      THEN
27673          IF  (p_source_instance_rec.INVENTORY_REVISION = FND_API.G_MISS_CHAR) THEN
27674               l_new_instance_rec.INVENTORY_REVISION := l_curr_instance_rec.INVENTORY_REVISION;
27675          ELSE
27676               l_new_instance_rec.INVENTORY_REVISION := p_source_instance_rec.INVENTORY_REVISION;
27677          END IF;
27678      ELSE
27679      -- Uncommented for bug 2985165
27680      -- srramakr Bug # 2558156 Revision should not be copied
27681          IF p_source_instance_rec.INVENTORY_REVISION <> FND_API.G_MISS_CHAR THEN
27682             l_new_instance_rec.INVENTORY_REVISION := p_source_instance_rec.INVENTORY_REVISION;
27683          END IF;
27684      END IF;
27685 
27686      IF ((p_source_instance_rec.INV_MASTER_ORGANIZATION_ID = FND_API.G_MISS_NUM)
27687              OR (p_source_instance_rec.INV_MASTER_ORGANIZATION_ID IS NULL)) THEN
27688         l_new_instance_rec.INV_MASTER_ORGANIZATION_ID := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
27689       ELSE
27690        l_new_instance_rec.INV_MASTER_ORGANIZATION_ID := p_source_instance_rec.INV_MASTER_ORGANIZATION_ID ;
27691       END IF;
27692 
27693      IF (p_source_instance_rec.SERIAL_NUMBER <> FND_API.G_MISS_CHAR) THEN
27694         l_new_instance_rec.SERIAL_NUMBER := p_source_instance_rec.SERIAL_NUMBER;
27695      END IF;
27696 
27697      IF ((p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG = FND_API.G_MISS_CHAR)
27698         OR (p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG IS NULL)) THEN
27699         l_new_instance_rec.MFG_SERIAL_NUMBER_FLAG := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
27700       ELSE
27701        l_new_instance_rec.MFG_SERIAL_NUMBER_FLAG := p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG ;
27702      END IF;
27703 
27704      IF (p_source_instance_rec.LOT_NUMBER = FND_API.G_MISS_CHAR) THEN
27705         l_new_instance_rec.LOT_NUMBER := l_curr_instance_rec.LOT_NUMBER;
27706     ELSE
27707         l_new_instance_rec.LOT_NUMBER := p_source_instance_rec.LOT_NUMBER;
27708      END IF;
27709 
27710      IF ((p_source_instance_rec.QUANTITY = FND_API.G_MISS_NUM)
27711         OR (p_source_instance_rec.QUANTITY IS NULL)) THEN
27712         l_new_instance_rec.QUANTITY := l_curr_instance_rec.QUANTITY;
27713      ELSE
27714        l_new_instance_rec.QUANTITY := p_source_instance_rec.QUANTITY ;
27715      END IF;
27716 
27717      IF ((p_source_instance_rec.UNIT_OF_MEASURE = FND_API.G_MISS_CHAR)
27718         OR  (p_source_instance_rec.UNIT_OF_MEASURE IS NULL)) THEN
27719         l_new_instance_rec.UNIT_OF_MEASURE := l_curr_instance_rec.UNIT_OF_MEASURE;
27720      ELSE
27721        l_new_instance_rec.UNIT_OF_MEASURE := p_source_instance_rec.UNIT_OF_MEASURE ;
27722      END IF;
27723 
27724      IF (p_source_instance_rec.ACCOUNTING_CLASS_CODE = FND_API.G_MISS_CHAR) THEN
27725         l_new_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
27726      ELSE
27727          l_new_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
27728      END IF;
27729 
27730      IF (p_source_instance_rec.INSTANCE_CONDITION_ID = FND_API.G_MISS_NUM) THEN
27731         l_new_instance_rec.INSTANCE_CONDITION_ID := l_curr_instance_rec.INSTANCE_CONDITION_ID;
27732      ELSE
27733         l_new_instance_rec.INSTANCE_CONDITION_ID := p_source_instance_rec.INSTANCE_CONDITION_ID;
27734      END IF;
27735 
27736      IF ((p_source_instance_rec.INSTANCE_STATUS_ID = FND_API.G_MISS_NUM)
27737         OR (p_source_instance_rec.INSTANCE_STATUS_ID IS NULL)) THEN
27738         l_new_instance_rec.INSTANCE_STATUS_ID := l_curr_instance_rec.INSTANCE_STATUS_ID;
27739         ELSE
27740        l_new_instance_rec.INSTANCE_STATUS_ID := p_source_instance_rec.INSTANCE_STATUS_ID ;
27741      END IF;
27742 
27743      IF ((p_source_instance_rec.CUSTOMER_VIEW_FLAG = FND_API.G_MISS_CHAR)
27744          OR (p_source_instance_rec.CUSTOMER_VIEW_FLAG IS NULL )) THEN
27745         l_new_instance_rec.CUSTOMER_VIEW_FLAG := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
27746        ELSE
27747        l_new_instance_rec.CUSTOMER_VIEW_FLAG := p_source_instance_rec.CUSTOMER_VIEW_FLAG ;
27748      END IF;
27749 
27750      IF ((p_source_instance_rec.MERCHANT_VIEW_FLAG = FND_API.G_MISS_CHAR)
27751         OR (p_source_instance_rec.MERCHANT_VIEW_FLAG IS NULL)) THEN
27752         l_new_instance_rec.MERCHANT_VIEW_FLAG := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
27753       ELSE
27754        l_new_instance_rec.MERCHANT_VIEW_FLAG := p_source_instance_rec.MERCHANT_VIEW_FLAG ;
27755      END IF;
27756 
27757      IF (p_source_instance_rec.SELLABLE_FLAG = FND_API.G_MISS_CHAR) THEN
27758         l_new_instance_rec.SELLABLE_FLAG := l_curr_instance_rec.SELLABLE_FLAG;
27759      ELSE
27760         l_new_instance_rec.SELLABLE_FLAG := p_source_instance_rec.SELLABLE_FLAG;
27761      END IF;
27762 
27763      IF (p_source_instance_rec.SYSTEM_ID = FND_API.G_MISS_NUM) THEN
27764         l_new_instance_rec.SYSTEM_ID := l_curr_instance_rec.SYSTEM_ID;
27765      ELSE
27766         l_new_instance_rec.SYSTEM_ID := p_source_instance_rec.SYSTEM_ID;
27767      END IF;
27768 
27769      IF (p_source_instance_rec.INSTANCE_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
27770         l_new_instance_rec.INSTANCE_TYPE_CODE := l_curr_instance_rec.INSTANCE_TYPE_CODE;
27771      ELSE
27772         l_new_instance_rec.INSTANCE_TYPE_CODE := p_source_instance_rec.INSTANCE_TYPE_CODE;
27773      END IF;
27774 
27775      IF (p_source_instance_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
27776         l_new_instance_rec.ACTIVE_START_DATE := l_curr_instance_rec.ACTIVE_START_DATE;
27777      ELSE
27778         l_new_instance_rec.ACTIVE_START_DATE := p_source_instance_rec.ACTIVE_START_DATE;
27779       END IF;
27780 
27781       IF (p_source_instance_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
27782         l_new_instance_rec.ACTIVE_END_DATE := l_curr_instance_rec.ACTIVE_END_DATE;
27783       ELSE
27784         l_new_instance_rec.ACTIVE_END_DATE := p_source_instance_rec.ACTIVE_END_DATE;
27785       END IF;
27786 
27787       IF (p_source_instance_rec.LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR)  THEN
27788         l_new_instance_rec.LOCATION_TYPE_CODE := l_curr_instance_rec.LOCATION_TYPE_CODE;
27789       ELSE
27790         l_new_instance_rec.LOCATION_TYPE_CODE := p_source_instance_rec.LOCATION_TYPE_CODE;
27791       END IF;
27792 
27793       IF (p_source_instance_rec.LOCATION_ID = FND_API.G_MISS_NUM) THEN
27794         l_new_instance_rec.LOCATION_ID := l_curr_instance_rec.LOCATION_ID;
27795       ELSE
27796         l_new_instance_rec.LOCATION_ID := p_source_instance_rec.LOCATION_ID;
27797       END IF;
27798 
27799       IF (p_source_instance_rec.INV_ORGANIZATION_ID = FND_API.G_MISS_NUM) THEN
27800         l_new_instance_rec.INV_ORGANIZATION_ID := l_curr_instance_rec.INV_ORGANIZATION_ID;
27801       ELSE
27802         l_new_instance_rec.INV_ORGANIZATION_ID := p_source_instance_rec.INV_ORGANIZATION_ID;
27803       END IF;
27804 
27805       IF (p_source_instance_rec.INV_SUBINVENTORY_NAME = FND_API.G_MISS_CHAR) THEN
27806          l_new_instance_rec.INV_SUBINVENTORY_NAME := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
27807       ELSE
27808           l_new_instance_rec.INV_SUBINVENTORY_NAME := p_source_instance_rec.INV_SUBINVENTORY_NAME;
27809       END IF;
27810 
27811       IF (p_source_instance_rec.INV_LOCATOR_ID = FND_API.G_MISS_NUM) THEN
27812         l_new_instance_rec.INV_LOCATOR_ID := l_curr_instance_rec.INV_LOCATOR_ID;
27813       ELSE
27814         l_new_instance_rec.INV_LOCATOR_ID := p_source_instance_rec.INV_LOCATOR_ID;
27815       END IF;
27816 
27817       IF (p_source_instance_rec.PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
27818         l_new_instance_rec.PA_PROJECT_ID := l_curr_instance_rec.PA_PROJECT_ID;
27819       ELSE
27820         l_new_instance_rec.PA_PROJECT_ID := p_source_instance_rec.PA_PROJECT_ID;
27821       END IF;
27822 
27823       IF (p_source_instance_rec.PA_PROJECT_TASK_ID = FND_API.G_MISS_NUM) THEN
27824         l_new_instance_rec.PA_PROJECT_TASK_ID := l_curr_instance_rec.PA_PROJECT_TASK_ID;
27825       ELSE
27826         l_new_instance_rec.PA_PROJECT_TASK_ID := p_source_instance_rec.PA_PROJECT_TASK_ID;
27827       END IF;
27828 
27829       IF (p_source_instance_rec.IN_TRANSIT_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
27830         l_new_instance_rec.IN_TRANSIT_ORDER_LINE_ID := l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
27831       ELSE
27832         l_new_instance_rec.IN_TRANSIT_ORDER_LINE_ID := p_source_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
27833       END IF;
27834 
27835       IF (p_source_instance_rec.WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
27836         l_new_instance_rec.WIP_JOB_ID := l_curr_instance_rec.WIP_JOB_ID;
27837       ELSE
27838         l_new_instance_rec.WIP_JOB_ID := p_source_instance_rec.WIP_JOB_ID;
27839       END IF;
27840 
27841       IF (p_source_instance_rec.PO_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
27842         l_new_instance_rec.PO_ORDER_LINE_ID := l_curr_instance_rec.PO_ORDER_LINE_ID;
27843       ELSE
27844         l_new_instance_rec.PO_ORDER_LINE_ID := p_source_instance_rec.PO_ORDER_LINE_ID;
27845       END IF;
27846 
27847       IF (p_source_instance_rec.LAST_TXN_LINE_DETAIL_ID = FND_API.G_MISS_NUM) THEN
27848         l_new_instance_rec.LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID;
27849       ELSE
27850         l_new_instance_rec.LAST_TXN_LINE_DETAIL_ID := p_source_instance_rec.LAST_TXN_LINE_DETAIL_ID;
27851       END IF;
27852 
27853       IF (p_source_instance_rec.LAST_OE_RMA_LINE_ID = FND_API.G_MISS_NUM) THEN
27854         l_new_instance_rec.LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
27855       ELSE
27856         l_new_instance_rec.LAST_OE_RMA_LINE_ID := p_source_instance_rec.LAST_OE_RMA_LINE_ID;
27857       END IF;
27858 
27859       IF (p_source_instance_rec.LAST_PO_PO_LINE_ID  = FND_API.G_MISS_NUM) THEN
27860         l_new_instance_rec.LAST_PO_PO_LINE_ID  := l_curr_instance_rec.LAST_PO_PO_LINE_ID ;
27861       ELSE
27862          l_new_instance_rec.LAST_PO_PO_LINE_ID  := p_source_instance_rec.LAST_PO_PO_LINE_ID ;
27863       END IF;
27864 
27865       IF (p_source_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
27866         l_new_instance_rec.LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER;
27867       ELSE
27868          l_new_instance_rec.LAST_OE_PO_NUMBER := p_source_instance_rec.LAST_OE_PO_NUMBER;
27869       END IF;
27870 
27871       IF (p_source_instance_rec.LAST_WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
27872           l_new_instance_rec.LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID;
27873       ELSE
27874           l_new_instance_rec.LAST_WIP_JOB_ID := p_source_instance_rec.LAST_WIP_JOB_ID;
27875       END IF;
27876 
27877       IF (p_source_instance_rec.LAST_PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
27878         l_new_instance_rec.LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID;
27879       ELSE
27880         l_new_instance_rec.LAST_PA_PROJECT_ID := p_source_instance_rec.LAST_PA_PROJECT_ID;
27881       END IF;
27882 
27883       IF (p_source_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
27884         l_new_instance_rec.LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID;
27885       ELSE
27886         l_new_instance_rec.LAST_PA_TASK_ID := p_source_instance_rec.LAST_PA_TASK_ID;
27887       END IF;
27888 
27889       IF (p_source_instance_rec.LAST_OE_AGREEMENT_ID = FND_API.G_MISS_NUM) THEN
27890         l_new_instance_rec.LAST_OE_AGREEMENT_ID  := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
27891       ELSE
27892          l_new_instance_rec.LAST_OE_AGREEMENT_ID  := p_source_instance_rec.LAST_OE_AGREEMENT_ID;
27893       END IF;
27894 
27895       IF (p_source_instance_rec.INSTALL_DATE = FND_API.G_MISS_DATE) THEN
27896         l_new_instance_rec.INSTALL_DATE := l_curr_instance_rec.INSTALL_DATE;
27897       ELSE
27898         l_new_instance_rec.INSTALL_DATE := p_source_instance_rec.INSTALL_DATE;
27899       END IF;
27900 
27901       IF (p_source_instance_rec.MANUALLY_CREATED_FLAG = FND_API.G_MISS_CHAR) THEN
27902         l_new_instance_rec.MANUALLY_CREATED_FLAG := l_curr_instance_rec.MANUALLY_CREATED_FLAG;
27903       ELSE
27904         l_new_instance_rec.MANUALLY_CREATED_FLAG := p_source_instance_rec.MANUALLY_CREATED_FLAG;
27905       END IF;
27906 
27907       IF (p_source_instance_rec.RETURN_BY_DATE  = FND_API.G_MISS_DATE) THEN
27908         l_new_instance_rec.RETURN_BY_DATE  := l_curr_instance_rec.RETURN_BY_DATE ;
27909       ELSE
27910         l_new_instance_rec.RETURN_BY_DATE  := p_source_instance_rec.RETURN_BY_DATE ;
27911       END IF;
27912 
27913       IF (p_source_instance_rec.ACTUAL_RETURN_DATE = FND_API.G_MISS_DATE) THEN
27914         l_new_instance_rec.ACTUAL_RETURN_DATE := l_curr_instance_rec.ACTUAL_RETURN_DATE;
27915       ELSE
27916         l_new_instance_rec.ACTUAL_RETURN_DATE := p_source_instance_rec.ACTUAL_RETURN_DATE;
27917       END IF;
27918 
27919       IF (p_source_instance_rec.VERSION_LABEL = FND_API.G_MISS_CHAR) THEN
27920         l_new_instance_rec.VERSION_LABEL := l_curr_instance_rec.VERSION_LABEL;
27921       ELSE
27922         l_new_instance_rec.VERSION_LABEL := p_source_instance_rec.VERSION_LABEL;
27923       END IF;
27924 
27925       IF (p_source_instance_rec.VERSION_LABEL_DESCRIPTION = FND_API.G_MISS_CHAR) THEN
27926         l_new_instance_rec.VERSION_LABEL_DESCRIPTION := l_curr_instance_rec.VERSION_LABEL_DESCRIPTION;
27927       ELSE
27928         l_new_instance_rec.VERSION_LABEL_DESCRIPTION := p_source_instance_rec.VERSION_LABEL_DESCRIPTION;
27929       END IF;
27930 
27931       IF (p_source_instance_rec.CONTEXT = FND_API.G_MISS_CHAR) THEN
27932         l_new_instance_rec.CONTEXT := l_curr_instance_rec.CONTEXT;
27933       ELSE
27934         l_new_instance_rec.CONTEXT := p_source_instance_rec.CONTEXT;
27935       END IF;
27936 
27937       IF (p_source_instance_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
27938         l_new_instance_rec.ATTRIBUTE1 := l_curr_instance_rec.ATTRIBUTE1;
27939       ELSE
27940         l_new_instance_rec.ATTRIBUTE1 := p_source_instance_rec.ATTRIBUTE1;
27941       END IF;
27942 
27943       IF (p_source_instance_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
27944         l_new_instance_rec.ATTRIBUTE2 := l_curr_instance_rec.ATTRIBUTE2;
27945        ELSE
27946          l_new_instance_rec.ATTRIBUTE2 := p_source_instance_rec.ATTRIBUTE2;
27947       END IF;
27948 
27949       IF (p_source_instance_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
27950         l_new_instance_rec.ATTRIBUTE3 := l_curr_instance_rec.ATTRIBUTE3;
27951        ELSE
27952         l_new_instance_rec.ATTRIBUTE3 := p_source_instance_rec.ATTRIBUTE3;
27953       END IF;
27954 
27955       IF (p_source_instance_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
27956         l_new_instance_rec.ATTRIBUTE4 := l_curr_instance_rec.ATTRIBUTE4;
27957       ELSE
27958        l_new_instance_rec.ATTRIBUTE4 := p_source_instance_rec.ATTRIBUTE4;
27959       END IF;
27960 
27961       IF (p_source_instance_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
27962         l_new_instance_rec.ATTRIBUTE5 := l_curr_instance_rec.ATTRIBUTE5;
27963       ELSE
27964         l_new_instance_rec.ATTRIBUTE5 := p_source_instance_rec.ATTRIBUTE5;
27965       END IF;
27966 
27967       IF (p_source_instance_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
27968         l_new_instance_rec.ATTRIBUTE6 := l_curr_instance_rec.ATTRIBUTE6;
27969       ELSE
27970         l_new_instance_rec.ATTRIBUTE6 := p_source_instance_rec.ATTRIBUTE6;
27971       END IF;
27972 
27973       IF (p_source_instance_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
27974         l_new_instance_rec.ATTRIBUTE7 := l_curr_instance_rec.ATTRIBUTE7;
27975       ELSE
27976         l_new_instance_rec.ATTRIBUTE7 := p_source_instance_rec.ATTRIBUTE7;
27977       END IF;
27978 
27979       IF (p_source_instance_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
27980         l_new_instance_rec.ATTRIBUTE9 := l_curr_instance_rec.ATTRIBUTE9;
27981       ELSE
27982          l_new_instance_rec.ATTRIBUTE9 := p_source_instance_rec.ATTRIBUTE9;
27983       END IF;
27984 
27985       IF (p_source_instance_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
27986         l_new_instance_rec.ATTRIBUTE10 := l_curr_instance_rec.ATTRIBUTE10;
27987       ELSE
27988         l_new_instance_rec.ATTRIBUTE10 := p_source_instance_rec.ATTRIBUTE10;
27989       END IF;
27990 
27991       IF (p_source_instance_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
27992         l_new_instance_rec.ATTRIBUTE11 := l_curr_instance_rec.ATTRIBUTE11;
27993       ELSE
27994         l_new_instance_rec.ATTRIBUTE11 := p_source_instance_rec.ATTRIBUTE11;
27995       END IF;
27996 
27997       IF (p_source_instance_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
27998         l_new_instance_rec.ATTRIBUTE12 := l_curr_instance_rec.ATTRIBUTE12;
27999       ELSE
28000         l_new_instance_rec.ATTRIBUTE12 := p_source_instance_rec.ATTRIBUTE12;
28001       END IF;
28002 
28003       IF (p_source_instance_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
28004         l_new_instance_rec.ATTRIBUTE13 := l_curr_instance_rec.ATTRIBUTE13;
28005       ELSE
28006          l_new_instance_rec.ATTRIBUTE13 := p_source_instance_rec.ATTRIBUTE13;
28007       END IF;
28008 
28009       IF (p_source_instance_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
28010         l_new_instance_rec.ATTRIBUTE14 := l_curr_instance_rec.ATTRIBUTE14;
28011       ELSE
28012         l_new_instance_rec.ATTRIBUTE14 := p_source_instance_rec.ATTRIBUTE14;
28013       END IF;
28014 
28015       IF (p_source_instance_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
28016         l_new_instance_rec.ATTRIBUTE15 := l_curr_instance_rec.ATTRIBUTE15;
28017       ELSE
28018         l_new_instance_rec.ATTRIBUTE15 := p_source_instance_rec.ATTRIBUTE15;
28019       END IF;
28020 
28021       IF (p_source_instance_rec.LAST_OE_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
28022         l_new_instance_rec.LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID;
28023       ELSE
28024         l_new_instance_rec.LAST_OE_ORDER_LINE_ID := p_source_instance_rec.LAST_OE_ORDER_LINE_ID;
28025       END IF;
28026 
28027                IF (p_source_instance_rec.LAST_OE_RMA_LINE_ID  = FND_API.G_MISS_NUM) THEN
28028                   l_new_instance_rec.LAST_OE_RMA_LINE_ID     := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
28029                ELSE
28030                   l_new_instance_rec.LAST_OE_RMA_LINE_ID     := p_source_instance_rec.LAST_OE_RMA_LINE_ID;
28031                END IF;
28032 
28033                IF (p_source_instance_rec.LAST_PO_PO_LINE_ID  = FND_API.G_MISS_NUM) THEN
28034                   l_new_instance_rec.LAST_PO_PO_LINE_ID    := l_curr_instance_rec.LAST_PO_PO_LINE_ID;
28035                ELSE
28036                   l_new_instance_rec.LAST_PO_PO_LINE_ID    := p_source_instance_rec.LAST_PO_PO_LINE_ID;
28037                END IF;
28038 
28039                IF (p_source_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
28040                  l_new_instance_rec.LAST_OE_PO_NUMBER       := l_curr_instance_rec.LAST_OE_PO_NUMBER;
28041                ELSE
28042                  l_new_instance_rec.LAST_OE_PO_NUMBER       := p_source_instance_rec.LAST_OE_PO_NUMBER;
28043                END IF;
28044 
28045                IF (p_source_instance_rec.LAST_WIP_JOB_ID  = FND_API.G_MISS_NUM) THEN
28046                  l_new_instance_rec.LAST_WIP_JOB_ID         := l_curr_instance_rec.LAST_WIP_JOB_ID;
28047                ELSE
28048                  l_new_instance_rec.LAST_WIP_JOB_ID         := p_source_instance_rec.LAST_WIP_JOB_ID;
28049                END IF;
28050 
28051                IF (p_source_instance_rec.LAST_PA_PROJECT_ID  = FND_API.G_MISS_NUM) THEN
28052                  l_new_instance_rec.LAST_PA_PROJECT_ID      := l_curr_instance_rec.LAST_PA_PROJECT_ID;
28053                ELSE
28054                  l_new_instance_rec.LAST_PA_PROJECT_ID      := p_source_instance_rec.LAST_PA_PROJECT_ID;
28055                END IF;
28056 
28057                 IF (p_source_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
28058                     l_new_instance_rec.LAST_PA_TASK_ID         := l_curr_instance_rec.LAST_PA_TASK_ID ;
28059                 ELSE
28060                     l_new_instance_rec.LAST_PA_TASK_ID         := p_source_instance_rec.LAST_PA_TASK_ID ;
28061                  END IF;
28062 
28063                  IF (p_source_instance_rec.LAST_OE_AGREEMENT_ID  = FND_API.G_MISS_NUM) THEN
28064                   l_new_instance_rec.LAST_OE_AGREEMENT_ID    := l_curr_instance_rec.LAST_OE_AGREEMENT_ID ;
28065                  ELSE
28066                   l_new_instance_rec.LAST_OE_AGREEMENT_ID    := p_source_instance_rec.LAST_OE_AGREEMENT_ID ;
28067                  END IF;
28068 
28069                  IF (p_source_instance_rec.INSTALL_DATE = FND_API.G_MISS_DATE) THEN
28070                    l_new_instance_rec.INSTALL_DATE            := l_curr_instance_rec.INSTALL_DATE;
28071                  ELSE
28072                    l_new_instance_rec.INSTALL_DATE            := p_source_instance_rec.INSTALL_DATE;
28073                   END IF;
28074 
28075                  IF (p_source_instance_rec.RETURN_BY_DATE = FND_API.G_MISS_DATE) THEN
28076                    l_new_instance_rec.RETURN_BY_DATE          := l_curr_instance_rec.RETURN_BY_DATE;
28077                  ELSE
28078                    l_new_instance_rec.RETURN_BY_DATE          := p_source_instance_rec.RETURN_BY_DATE;
28079                  END IF;
28080 
28081                  IF (p_source_instance_rec.ACTUAL_RETURN_DATE = FND_API.G_MISS_DATE) THEN
28082                     l_new_instance_rec.ACTUAL_RETURN_DATE      := l_curr_instance_rec.ACTUAL_RETURN_DATE;
28083                  ELSE
28084                     l_new_instance_rec.ACTUAL_RETURN_DATE      := p_source_instance_rec.ACTUAL_RETURN_DATE;
28085                  END IF;
28086 
28087                  IF (p_source_instance_rec.instance_number = fnd_api.g_miss_char)
28088                  THEN
28089                    NULL;
28090                  ELSE
28091                    l_new_instance_rec.instance_number := p_source_instance_rec.instance_number;
28092                  END IF;
28093 
28094                  IF (p_source_instance_rec.instance_description = fnd_api.g_miss_char)
28095                  THEN
28096                    NULL;
28097                  ELSE
28098                    l_new_instance_rec.instance_description := p_source_instance_rec.instance_description;
28099                  END IF;
28100 
28101                  -- Set the non-copiable attributes as follows
28102                  l_new_instance_rec.instance_id        := FND_API.G_MISS_NUM;
28103 
28104                  -- uncommented for Bug 5348851
28105                  l_new_instance_rec.instance_number    := FND_API.G_MISS_CHAR;
28106 
28107 		 --IF condition added for bug5248037--
28108 	         If p_txn_rec.transaction_type_id <> 1 Then
28109 		    l_new_instance_rec.active_start_date  := nvl(p_source_instance_rec.active_start_date,sysdate);
28110 	         Else
28111 		    l_new_instance_rec.active_start_date  := SYSDATE;
28112 	         End If;
28113 
28114                  l_new_instance_rec.MANUALLY_CREATED_FLAG   := 'N';
28115                  l_new_instance_rec.COMPLETENESS_FLAG       := NULL;
28116                  l_new_instance_rec.OBJECT_VERSION_NUMBER   := 1;
28117 
28118 
28119                  -- The following is added for bug 2944298.
28120                  -- Value of instance_usage_code should be copied from the source instance
28121                  -- only if it is called from split.
28122                    IF p_call_from_split=fnd_api.g_true
28123                    THEN
28124                  -- Added by sguthiva for bug 2163942
28125                      IF (p_source_instance_rec.instance_usage_code = FND_API.G_MISS_CHAR) THEN
28126                          l_new_instance_rec.instance_usage_code := l_curr_instance_rec.instance_usage_code;
28127                      ELSE
28128                          l_new_instance_rec.instance_usage_code := p_source_instance_rec.instance_usage_code;
28129                      END IF;
28130                    ELSE
28131                       l_obj_id:=NULL;
28132                       csi_ii_relationships_pvt.Get_Top_Most_Parent
28133                          ( p_subject_id       => p_source_instance_rec.instance_id,
28134                            p_rel_type_code    => 'COMPONENT-OF',
28135                            p_object_id        => l_obj_id
28136                          );
28137                        --
28138                        IF l_obj_id <> p_source_instance_rec.instance_id THEN
28139                           BEGIN
28140                              SELECT instance_usage_code
28141                              INTO   l_new_instance_rec.instance_usage_code
28142                              FROM   csi_item_instances
28143                              WHERE  instance_id=l_obj_id;
28144                           EXCEPTION
28145                              WHEN NO_DATA_FOUND THEN
28146                                 NULL;
28147                           END;
28148                        ELSE
28149                           l_new_instance_rec.instance_usage_code := l_curr_instance_rec.instance_usage_code;
28150                        END IF;
28151                    END IF;
28152                  -- End addition by sguthiva for bug 2163942
28153                  -- Added by sguthiva for bug 2230264
28154 
28155                  -- Added by sk for bug 2230264
28156                  IF (p_source_instance_rec.vld_organization_id = FND_API.G_MISS_NUM) THEN
28157                     l_new_instance_rec.vld_organization_id := l_vld_org_id;
28158                  ELSE
28159                     l_new_instance_rec.vld_organization_id := p_source_instance_rec.vld_organization_id;
28160                  END IF;
28161 
28162                  IF (p_source_instance_rec.install_location_type_code = FND_API.G_MISS_CHAR) THEN
28163                     l_new_instance_rec.install_location_type_code := l_curr_instance_rec.install_location_type_code;
28164                  ELSE
28165                     l_new_instance_rec.install_location_type_code := p_source_instance_rec.install_location_type_code;
28166                  END IF;
28167 
28168                  IF (p_source_instance_rec.install_location_id = FND_API.G_MISS_NUM) THEN
28169                     l_new_instance_rec.install_location_id := l_curr_instance_rec.install_location_id;
28170                  ELSE
28171                     l_new_instance_rec.install_location_id := p_source_instance_rec.install_location_id;
28172                  END IF;
28173                  -- End addition by sk for bug 2230264
28174 
28175                 --start of code for eam integration--
28176    	        IF (p_source_instance_rec.NETWORK_ASSET_FLAG = FND_API.G_MISS_CHAR) THEN
28177 		    l_new_instance_rec.NETWORK_ASSET_FLAG := l_curr_instance_rec.NETWORK_ASSET_FLAG;
28178 		ELSE
28179 		    l_new_instance_rec.NETWORK_ASSET_FLAG := p_source_instance_rec.NETWORK_ASSET_FLAG;
28180 		END IF;
28181 
28182 		IF (p_source_instance_rec.MAINTAINABLE_FLAG = FND_API.G_MISS_CHAR) THEN
28183 		    l_new_instance_rec.MAINTAINABLE_FLAG := l_curr_instance_rec.MAINTAINABLE_FLAG;
28184 		ELSE
28185 		    l_new_instance_rec.MAINTAINABLE_FLAG := p_source_instance_rec.MAINTAINABLE_FLAG;
28186 		END IF;
28187 
28188 		IF (p_source_instance_rec.PN_LOCATION_ID = FND_API.G_MISS_NUM) THEN
28189 		   l_new_instance_rec.PN_LOCATION_ID := l_curr_instance_rec.PN_LOCATION_ID;
28190 		ELSE
28191 		   l_new_instance_rec.PN_LOCATION_ID := p_source_instance_rec.PN_LOCATION_ID;
28192 		END IF;
28193 
28194 		IF (p_source_instance_rec.ASSET_CRITICALITY_CODE = FND_API.G_MISS_CHAR) THEN
28195 		   l_new_instance_rec.ASSET_CRITICALITY_CODE := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
28196 		ELSE
28197 		   l_new_instance_rec.ASSET_CRITICALITY_CODE := p_source_instance_rec.ASSET_CRITICALITY_CODE;
28198 		END IF;
28199 
28200 	        IF (p_source_instance_rec.CATEGORY_ID = FND_API.G_MISS_NUM) THEN
28201 	           l_new_instance_rec.CATEGORY_ID  := l_curr_instance_rec.CATEGORY_ID;
28202 	        ELSE
28203 	           l_new_instance_rec.CATEGORY_ID  := p_source_instance_rec.CATEGORY_ID;
28204 	       END IF;
28205 
28206   	       IF (p_source_instance_rec.EQUIPMENT_GEN_OBJECT_ID = FND_API.G_MISS_NUM) THEN
28207 	          l_new_instance_rec.EQUIPMENT_GEN_OBJECT_ID := l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
28208 	       ELSE
28209 	          l_new_instance_rec.EQUIPMENT_GEN_OBJECT_ID := p_source_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
28210 	       END IF;
28211 
28212 	       IF (p_source_instance_rec.INSTANTIATION_FLAG = FND_API.G_MISS_CHAR) THEN
28213 		   l_new_instance_rec.INSTANTIATION_FLAG := l_curr_instance_rec.INSTANTIATION_FLAG;
28214 	       ELSE
28215 		   l_new_instance_rec.INSTANTIATION_FLAG := p_source_instance_rec.INSTANTIATION_FLAG;
28216 	       END IF;
28217 
28218 	       IF (p_source_instance_rec.LINEAR_LOCATION_ID  = FND_API.G_MISS_NUM) THEN
28219 	           l_new_instance_rec.LINEAR_LOCATION_ID  := l_curr_instance_rec.LINEAR_LOCATION_ID ;
28220 	       ELSE
28221 		   l_new_instance_rec.LINEAR_LOCATION_ID  := p_source_instance_rec.LINEAR_LOCATION_ID ;
28222 	       END IF;
28223 
28224 	       IF (p_source_instance_rec.OPERATIONAL_LOG_FLAG = FND_API.G_MISS_CHAR) THEN
28225 	          l_new_instance_rec.OPERATIONAL_LOG_FLAG := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
28226 	       ELSE
28227 		  l_new_instance_rec.OPERATIONAL_LOG_FLAG := p_source_instance_rec.OPERATIONAL_LOG_FLAG;
28228 	       END IF;
28229 
28230 	       IF (p_source_instance_rec.CHECKIN_STATUS = FND_API.G_MISS_NUM) THEN
28231 	          l_new_instance_rec.CHECKIN_STATUS := l_curr_instance_rec.CHECKIN_STATUS;
28232 	       ELSE
28233 	          l_new_instance_rec.CHECKIN_STATUS := p_source_instance_rec.CHECKIN_STATUS;
28234 	       END IF;
28235 
28236 	       IF (p_source_instance_rec.SUPPLIER_WARRANTY_EXP_DATE = FND_API.G_MISS_DATE) THEN
28237 		  l_new_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
28238 	       ELSE
28239 	          l_new_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := p_source_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
28240 	       END IF;
28241 
28242 	       IF (p_source_instance_rec.ATTRIBUTE16 = FND_API.G_MISS_CHAR) THEN
28243 	         l_new_instance_rec.ATTRIBUTE16 := l_curr_instance_rec.ATTRIBUTE16;
28244 	       ELSE
28245 	         l_new_instance_rec.ATTRIBUTE16 := p_source_instance_rec.ATTRIBUTE16;
28246 	       END IF;
28247 
28248 	       IF (p_source_instance_rec.ATTRIBUTE17 = FND_API.G_MISS_CHAR) THEN
28249 	          l_new_instance_rec.ATTRIBUTE17 := l_curr_instance_rec.ATTRIBUTE17;
28250 	       ELSE
28251 	          l_new_instance_rec.ATTRIBUTE17 := p_source_instance_rec.ATTRIBUTE17;
28252 	       END IF;
28253 
28254 	       IF (p_source_instance_rec.ATTRIBUTE18 = FND_API.G_MISS_CHAR) THEN
28255 	          l_new_instance_rec.ATTRIBUTE18 := l_curr_instance_rec.ATTRIBUTE18;
28256 	       ELSE
28257 		  l_new_instance_rec.ATTRIBUTE18 := p_source_instance_rec.ATTRIBUTE18;
28258 	       END IF;
28259 
28260 	       IF (p_source_instance_rec.ATTRIBUTE19 = FND_API.G_MISS_CHAR) THEN
28261 		  l_new_instance_rec.ATTRIBUTE19 := l_curr_instance_rec.ATTRIBUTE19;
28262 	       ELSE
28263 	          l_new_instance_rec.ATTRIBUTE19 := p_source_instance_rec.ATTRIBUTE19;
28264 	       END IF;
28265 
28266 	       IF (p_source_instance_rec.ATTRIBUTE20 = FND_API.G_MISS_CHAR) THEN
28267 	           l_new_instance_rec.ATTRIBUTE20 := l_curr_instance_rec.ATTRIBUTE20;
28268 	       ELSE
28269 	           l_new_instance_rec.ATTRIBUTE20 := p_source_instance_rec.ATTRIBUTE20;
28270 	       END IF;
28271 
28272 	       IF (p_source_instance_rec.ATTRIBUTE21 = FND_API.G_MISS_CHAR) THEN
28273 	           l_new_instance_rec.ATTRIBUTE21 := l_curr_instance_rec.ATTRIBUTE21;
28274 	       ELSE
28275 		   l_new_instance_rec.ATTRIBUTE21 := p_source_instance_rec.ATTRIBUTE21;
28276 	       END IF;
28277 
28278 	       IF (p_source_instance_rec.ATTRIBUTE22 = FND_API.G_MISS_CHAR) THEN
28279 	          l_new_instance_rec.ATTRIBUTE22 := l_curr_instance_rec.ATTRIBUTE22;
28280 	       ELSE
28281                   l_new_instance_rec.ATTRIBUTE22 := p_source_instance_rec.ATTRIBUTE22;
28282 	       END IF;
28283 
28284 	       IF (p_source_instance_rec.ATTRIBUTE23 = FND_API.G_MISS_CHAR) THEN
28285 	          l_new_instance_rec.ATTRIBUTE23 := l_curr_instance_rec.ATTRIBUTE23;
28286 	       ELSE
28287 	          l_new_instance_rec.ATTRIBUTE23 := p_source_instance_rec.ATTRIBUTE23;
28288 	       END IF;
28289 
28290 	       IF (p_source_instance_rec.ATTRIBUTE24 = FND_API.G_MISS_CHAR) THEN
28291 	          l_new_instance_rec.ATTRIBUTE24 := l_curr_instance_rec.ATTRIBUTE24;
28292 	       ELSE
28293 	          l_new_instance_rec.ATTRIBUTE24 := p_source_instance_rec.ATTRIBUTE24;
28294 	       END IF;
28295 
28296 	       IF (p_source_instance_rec.ATTRIBUTE25 = FND_API.G_MISS_CHAR) THEN
28297 	           l_new_instance_rec.ATTRIBUTE25 := l_curr_instance_rec.ATTRIBUTE25;
28298 	       ELSE
28299 		   l_new_instance_rec.ATTRIBUTE25 := p_source_instance_rec.ATTRIBUTE25;
28300 	       END IF;
28301 
28302 	       IF (p_source_instance_rec.ATTRIBUTE26 = FND_API.G_MISS_CHAR) THEN
28303 		  l_new_instance_rec.ATTRIBUTE26 := l_curr_instance_rec.ATTRIBUTE26;
28304 	       ELSE
28305 	          l_new_instance_rec.ATTRIBUTE26 := p_source_instance_rec.ATTRIBUTE26;
28306 	       END IF;
28307 
28308 	       IF (p_source_instance_rec.ATTRIBUTE27 = FND_API.G_MISS_CHAR) THEN
28309 		  l_new_instance_rec.ATTRIBUTE27 := l_curr_instance_rec.ATTRIBUTE27;
28310 	       ELSE
28311 	          l_new_instance_rec.ATTRIBUTE27 := p_source_instance_rec.ATTRIBUTE27;
28312 	       END IF;
28313 
28314 	       IF (p_source_instance_rec.ATTRIBUTE28 = FND_API.G_MISS_CHAR) THEN
28315 	          l_new_instance_rec.ATTRIBUTE28 := l_curr_instance_rec.ATTRIBUTE28;
28316 	       ELSE
28317 	          l_new_instance_rec.ATTRIBUTE28 := p_source_instance_rec.ATTRIBUTE28;
28318 	       END IF;
28319 
28320 	       IF (p_source_instance_rec.ATTRIBUTE29 = FND_API.G_MISS_CHAR) THEN
28321 	          l_new_instance_rec.ATTRIBUTE29 := l_curr_instance_rec.ATTRIBUTE29;
28322 	       ELSE
28323 	          l_new_instance_rec.ATTRIBUTE29 := p_source_instance_rec.ATTRIBUTE29;
28324 	       END IF;
28325 
28326 	       IF (p_source_instance_rec.ATTRIBUTE30 = FND_API.G_MISS_CHAR) THEN
28327 	          l_new_instance_rec.ATTRIBUTE30 := l_curr_instance_rec.ATTRIBUTE30;
28328 	       ELSE
28329 	          l_new_instance_rec.ATTRIBUTE30 := p_source_instance_rec.ATTRIBUTE30;
28330 	       END IF;
28331 
28332 	      --end of code for eam integration--
28333 
28334        -- Addition of columns for FA Integration
28335             IF (p_source_instance_rec.PAYABLES_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
28336                 l_new_instance_rec.PAYABLES_UNIT_PRICE      := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
28337             ELSE
28338                 l_new_instance_rec.PAYABLES_UNIT_PRICE      := p_source_instance_rec.PAYABLES_UNIT_PRICE;
28339             END IF;
28340 
28341             IF (p_source_instance_rec.PAYABLES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
28342                 l_new_instance_rec.PAYABLES_CURRENCY_CODE := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
28343             ELSE
28344                 l_new_instance_rec.PAYABLES_CURRENCY_CODE := p_source_instance_rec.PAYABLES_CURRENCY_CODE;
28345             END IF;
28346 
28347             IF (p_source_instance_rec.PURCHASE_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
28348                 l_new_instance_rec.PURCHASE_UNIT_PRICE      := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
28349             ELSE
28350                 l_new_instance_rec.PURCHASE_UNIT_PRICE      := p_source_instance_rec.PURCHASE_UNIT_PRICE;
28351             END IF;
28352 
28353             IF (p_source_instance_rec.PURCHASE_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
28354                 l_new_instance_rec.PURCHASE_CURRENCY_CODE := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
28355             ELSE
28356                 l_new_instance_rec.PURCHASE_CURRENCY_CODE := p_source_instance_rec.PURCHASE_CURRENCY_CODE;
28357             END IF;
28358 
28359             IF (p_source_instance_rec.SALES_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
28360                 l_new_instance_rec.SALES_UNIT_PRICE      := l_curr_instance_rec.SALES_UNIT_PRICE;
28361             ELSE
28362                 l_new_instance_rec.SALES_UNIT_PRICE      := p_source_instance_rec.SALES_UNIT_PRICE;
28363             END IF;
28364 
28365             IF (p_source_instance_rec.SALES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
28366                 l_new_instance_rec.SALES_CURRENCY_CODE := l_curr_instance_rec.SALES_CURRENCY_CODE;
28367             ELSE
28368                 l_new_instance_rec.SALES_CURRENCY_CODE := p_source_instance_rec.SALES_CURRENCY_CODE;
28369             END IF;
28370 
28371             IF (p_source_instance_rec.OPERATIONAL_STATUS_CODE = FND_API.G_MISS_CHAR) THEN
28372                 l_new_instance_rec.OPERATIONAL_STATUS_CODE := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
28373             ELSE
28374                 l_new_instance_rec.OPERATIONAL_STATUS_CODE := p_source_instance_rec.OPERATIONAL_STATUS_CODE;
28375             END IF;
28376         -- End addition of columns for FA Integration
28377      --  Call Create_item_instance to create the new instance in csi_item_instances table.
28378 
28379             CSI_ITEM_INSTANCE_PVT.create_item_instance
28380              (  p_api_version             => p_api_version
28381                 ,p_commit                 => p_commit
28382                 ,p_init_msg_list          => p_init_msg_list
28383                 ,p_validation_level       => p_validation_level
28384                 ,p_instance_rec           => l_new_instance_rec
28385                 ,p_txn_rec                => p_txn_rec
28386                 ,p_party_tbl              => l_party_tbl
28387                 ,p_asset_tbl              => l_asset_tbl
28388                 ,x_return_status          => x_return_status
28389                 ,x_msg_count              => x_msg_count
28390                 ,x_msg_data               => x_msg_data
28391                 ,p_item_attribute_tbl     => l_item_attribute_tbl
28392                 ,p_location_tbl           => l_location_tbl
28393                 ,p_generic_id_tbl         => l_generic_id_tbl
28394                 ,p_lookup_tbl             => l_lookup_tbl
28395                 ,p_ins_count_rec          => l_ins_count_rec
28396              );
28397 
28398                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28399                   l_msg_index := 1;
28400                   l_msg_count := x_msg_count;
28401                   WHILE l_msg_count > 0 LOOP
28402                        x_msg_data := FND_MSG_PUB.GET
28403                                       (l_msg_index,
28404                                      FND_API.G_FALSE      );
28405 
28406                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28407                        l_msg_index := l_msg_index + 1;
28408                        l_msg_count := l_msg_count - 1;
28409                   END LOOP;
28410                   RAISE FND_API.G_EXC_ERROR;
28411                 ELSE
28412                    x_new_instance_tbl(1) := l_new_instance_rec;
28413                 END IF;
28414 
28415 
28416           -- Create a party or parties for the new instances
28417 
28418           IF l_party_tbl.COUNT > 0 THEN
28419                 FOR tab_row_party IN l_party_tbl.FIRST .. l_party_tbl.LAST
28420                 LOOP
28421                     IF l_party_tbl.EXISTS(tab_row_party) THEN
28422                        -- Build account query rec
28423                        l_party_account_query_rec.instance_party_id := l_party_tbl(tab_row_party).instance_party_id ;
28424                        l_party_account_query_rec.ip_account_id  := FND_API.G_MISS_NUM;
28425                        l_party_account_query_rec.party_account_id   := FND_API.G_MISS_NUM;
28426                        l_party_account_query_rec.relationship_type_code  := FND_API.G_MISS_CHAR;
28427 
28428                        -- Get party accounts
28429 
28430                        csi_party_relationships_pub.get_inst_party_accounts
28431                           ( p_api_version                 => p_api_version
28432                            ,p_commit                      => p_commit
28433                            ,p_init_msg_list               => p_init_msg_list
28434                            ,p_validation_level            => p_validation_level
28435                            ,p_account_query_rec           => l_party_account_query_rec
28436                            ,p_resolve_id_columns          => fnd_api.g_true
28437                            ,p_time_stamp                  => NULL
28438                            ,x_account_header_tbl          => l_account_header_tbl
28439                            ,x_return_status               => x_return_status
28440                            ,x_msg_count                   => x_msg_count
28441                            ,x_msg_data                    => x_msg_data);
28442 
28443                             IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28444                                l_msg_index := 1;
28445                                l_msg_count := x_msg_count;
28446                                WHILE l_msg_count > 0 LOOP
28447                                     x_msg_data := FND_MSG_PUB.GET
28448                                                    (l_msg_index,
28449                                                   FND_API.G_FALSE      );
28450                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28451                                     l_msg_index := l_msg_index + 1;
28452                                     l_msg_count := l_msg_count - 1;
28453                                END LOOP;
28454                                RAISE FND_API.G_EXC_ERROR;
28455                              END IF;
28456 
28457 
28458                          IF l_account_header_tbl.COUNT > 0 THEN       /***********Second Change 07/27/01 - RK**********/
28459                                  FOR tab_row_party IN l_account_header_tbl.FIRST .. l_account_header_tbl.LAST
28460                                  LOOP
28461                                     IF l_account_header_tbl.EXISTS(tab_row_party) THEN
28462                                       --  Donot copy accounts if user says so
28463                                       IF (p_copy_accounts <> fnd_api.g_true) THEN
28464                                         IF (l_account_header_tbl(tab_row_party).RELATIONSHIP_TYPE_CODE = 'OWNER') THEN
28465                                         l_party_account_tbl(tab_row_party).ip_account_id := l_account_header_tbl(tab_row_party).ip_account_id;
28466                                         l_party_account_tbl(tab_row_party).instance_party_id := l_account_header_tbl(tab_row_party).instance_party_id;
28467                                         l_party_account_tbl(tab_row_party).party_account_id := l_account_header_tbl(tab_row_party).party_account_id;
28468                                         l_party_account_tbl(tab_row_party).relationship_type_code := l_account_header_tbl(tab_row_party).relationship_type_code;
28469                                         l_party_account_tbl(tab_row_party).bill_to_address := l_account_header_tbl(tab_row_party).bill_to_address;
28470                                         l_party_account_tbl(tab_row_party).ship_to_address := l_account_header_tbl(tab_row_party).ship_to_address;
28471                                         l_party_account_tbl(tab_row_party).active_start_date := l_account_header_tbl(tab_row_party).active_start_date;
28472                                         l_party_account_tbl(tab_row_party).active_end_date := l_account_header_tbl(tab_row_party).active_end_date;
28473                                         l_party_account_tbl(tab_row_party).context := l_account_header_tbl(tab_row_party).context;
28474                                         l_party_account_tbl(tab_row_party).attribute1 := l_account_header_tbl(tab_row_party).attribute1;
28475                                         l_party_account_tbl(tab_row_party).attribute2 := l_account_header_tbl(tab_row_party).attribute2;
28476                                         l_party_account_tbl(tab_row_party).attribute3 := l_account_header_tbl(tab_row_party).attribute3;
28477                                         l_party_account_tbl(tab_row_party).attribute4 := l_account_header_tbl(tab_row_party).attribute4;
28478                                         l_party_account_tbl(tab_row_party).attribute5 := l_account_header_tbl(tab_row_party).attribute5;
28479                                         l_party_account_tbl(tab_row_party).attribute6 := l_account_header_tbl(tab_row_party).attribute6;
28480                                         l_party_account_tbl(tab_row_party).attribute7 := l_account_header_tbl(tab_row_party).attribute7;
28481                                         l_party_account_tbl(tab_row_party).attribute8 := l_account_header_tbl(tab_row_party).attribute8;
28482                                         l_party_account_tbl(tab_row_party).attribute9 := l_account_header_tbl(tab_row_party).attribute9;
28483                                         l_party_account_tbl(tab_row_party).attribute10 := l_account_header_tbl(tab_row_party).attribute10;
28484                                         l_party_account_tbl(tab_row_party).attribute11 := l_account_header_tbl(tab_row_party).attribute11;
28485                                         l_party_account_tbl(tab_row_party).attribute12 := l_account_header_tbl(tab_row_party).attribute12;
28486                                         l_party_account_tbl(tab_row_party).attribute13 := l_account_header_tbl(tab_row_party).attribute13;
28487                                         l_party_account_tbl(tab_row_party).attribute14 := l_account_header_tbl(tab_row_party).attribute14;
28488                                         l_party_account_tbl(tab_row_party).attribute15 := l_account_header_tbl(tab_row_party).attribute15;
28489                                         l_party_account_tbl(tab_row_party).object_version_number := l_account_header_tbl(tab_row_party).object_version_number;
28490 
28491                                          END IF;
28492                                        ELSE
28493                                         l_party_account_tbl(tab_row_party).ip_account_id := l_account_header_tbl(tab_row_party).ip_account_id;
28494                                         l_party_account_tbl(tab_row_party).instance_party_id := l_account_header_tbl(tab_row_party).instance_party_id;
28495                                         l_party_account_tbl(tab_row_party).party_account_id := l_account_header_tbl(tab_row_party).party_account_id;
28496                                         l_party_account_tbl(tab_row_party).relationship_type_code := l_account_header_tbl(tab_row_party).relationship_type_code;
28497                                         l_party_account_tbl(tab_row_party).bill_to_address := l_account_header_tbl(tab_row_party).bill_to_address;
28498                                         l_party_account_tbl(tab_row_party).ship_to_address := l_account_header_tbl(tab_row_party).ship_to_address;
28499                                         l_party_account_tbl(tab_row_party).active_start_date := l_account_header_tbl(tab_row_party).active_start_date;
28500                                         l_party_account_tbl(tab_row_party).active_end_date := l_account_header_tbl(tab_row_party).active_end_date;
28501                                         l_party_account_tbl(tab_row_party).context := l_account_header_tbl(tab_row_party).context;
28502                                         l_party_account_tbl(tab_row_party).attribute1 := l_account_header_tbl(tab_row_party).attribute1;
28503                                         l_party_account_tbl(tab_row_party).attribute2 := l_account_header_tbl(tab_row_party).attribute2;
28504                                         l_party_account_tbl(tab_row_party).attribute3 := l_account_header_tbl(tab_row_party).attribute3;
28505                                         l_party_account_tbl(tab_row_party).attribute4 := l_account_header_tbl(tab_row_party).attribute4;
28506                                         l_party_account_tbl(tab_row_party).attribute5 := l_account_header_tbl(tab_row_party).attribute5;
28507                                         l_party_account_tbl(tab_row_party).attribute6 := l_account_header_tbl(tab_row_party).attribute6;
28508                                         l_party_account_tbl(tab_row_party).attribute7 := l_account_header_tbl(tab_row_party).attribute7;
28509                                         l_party_account_tbl(tab_row_party).attribute8 := l_account_header_tbl(tab_row_party).attribute8;
28510                                         l_party_account_tbl(tab_row_party).attribute9 := l_account_header_tbl(tab_row_party).attribute9;
28511                                         l_party_account_tbl(tab_row_party).attribute10 := l_account_header_tbl(tab_row_party).attribute10;
28512                                         l_party_account_tbl(tab_row_party).attribute11 := l_account_header_tbl(tab_row_party).attribute11;
28513                                         l_party_account_tbl(tab_row_party).attribute12 := l_account_header_tbl(tab_row_party).attribute12;
28514                                         l_party_account_tbl(tab_row_party).attribute13 := l_account_header_tbl(tab_row_party).attribute13;
28515                                         l_party_account_tbl(tab_row_party).attribute14 := l_account_header_tbl(tab_row_party).attribute14;
28516                                         l_party_account_tbl(tab_row_party).attribute15 := l_account_header_tbl(tab_row_party).attribute15;
28517                                         l_party_account_tbl(tab_row_party).object_version_number := l_account_header_tbl(tab_row_party).object_version_number;
28518 
28519                                         END IF;
28520                                       END IF;
28521                                  END LOOP;
28522                          END IF; --l_account_header_tbl.COUNT > 0
28523 
28524                     -- Empty the account_header table
28525                        l_account_header_tbl.DELETE;
28526                     -- Build the party table
28527                        l_party_tbl(tab_row_party).instance_party_id             := FND_API.G_MISS_NUM;
28528                        l_party_tbl(tab_row_party).INSTANCE_ID                   := l_new_instance_rec.instance_id;
28529                        l_party_tbl(tab_row_party).ACTIVE_START_DATE             := FND_API.G_MISS_DATE;
28530                        l_party_tbl(tab_row_party).ACTIVE_END_DATE               := FND_API.G_MISS_DATE;
28531                    -- Build the temporary party table with only one record
28532                    -- for and grab all its accounts
28533                        l_party_input_tbl(1) := l_party_tbl(tab_row_party);
28534 
28535 
28536                 -- Build its corresponding accounts
28537 
28538                         IF l_party_account_tbl.COUNT > 0 THEN
28539                             FOR tab_row_acct IN l_party_account_tbl.FIRST .. l_party_account_tbl.LAST
28540                             LOOP
28541                               -- l_party_account_tbl(tab_row_acct).parent_tbl_index := tab_row_party;
28542                                l_party_account_tbl(tab_row_acct).parent_tbl_index := 1;
28543                                l_party_account_tbl(tab_row_acct).ip_account_id  := FND_API.G_MISS_NUM;
28544                                l_party_account_tbl(tab_row_acct).instance_party_id := l_party_input_tbl(l_party_account_tbl(tab_row_acct).parent_tbl_index).instance_party_id;
28545                                l_party_account_tbl(tab_row_acct).ACTIVE_START_DATE := FND_API.G_MISS_DATE;
28546                                l_party_account_tbl(tab_row_acct).ACTIVE_END_DATE   := FND_API.G_MISS_DATE;
28547                                l_party_account_tbl(tab_row_acct).call_contracts    := FND_API.G_FALSE; -- Added for 2907563
28548                             END LOOP;
28549                         END IF;
28550                          -- Create instance party relationship and its accounts
28551 
28552                         csi_party_relationships_pub.create_inst_party_relationship
28553                             ( p_api_version                 => p_api_version
28554                              ,p_commit                      => p_commit
28555                              ,p_init_msg_list               => p_init_msg_list
28556                              ,p_validation_level            => p_validation_level
28557                              ,p_party_tbl                   => l_party_input_tbl
28558                              ,p_party_account_tbl           => l_party_account_tbl
28559                              ,p_txn_rec                     => p_txn_rec
28560                              ,p_oks_txn_inst_tbl            => px_oks_txn_inst_tbl
28561                              ,x_return_status               => x_return_status
28562                              ,x_msg_count                   => x_msg_count
28563                              ,x_msg_data                    => x_msg_data
28564                               );
28565 
28566                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28567                                l_msg_index := 1;
28568                                l_msg_count := x_msg_count;
28569                                WHILE l_msg_count > 0 LOOP
28570                                     x_msg_data := FND_MSG_PUB.GET
28571                                                   (l_msg_index,
28572                                                   FND_API.G_FALSE      );
28573 
28574                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28575                                     l_msg_index := l_msg_index + 1;
28576                                     l_msg_count := l_msg_count - 1;
28577                                END LOOP;
28578                                RAISE FND_API.G_EXC_ERROR;
28579                              END IF;
28580                              -- Grab the new parties created in a new table
28581                                l_new_party_tbl(tab_row_party) := l_party_input_tbl(1);
28582                              -- Empty the party table
28583                                l_party_input_tbl.DELETE;
28584                              -- Empty the account table
28585                                l_party_account_tbl.DELETE;
28586 
28587            END IF;
28588           END LOOP;
28589       END IF;
28590 -- ASH
28591 
28592           -- Create a contact or contacts for the new instances
28593       IF  (p_copy_contacts  = fnd_api.g_true) THEN
28594           IF l_contact_tbl.COUNT > 0 THEN
28595                 FOR tab_row_contact IN l_contact_tbl.FIRST .. l_contact_tbl.LAST
28596                 LOOP
28597                     IF l_contact_tbl.EXISTS(tab_row_contact) THEN
28598 
28599                       -- Find the contact_ip_id which was just created
28600                       -- for this contact
28601                        IF (l_original_party_tbl.COUNT > 0) THEN
28602                           FOR tab_row_party IN l_original_party_tbl.FIRST .. l_original_party_tbl.LAST
28603                           LOOP
28604                             IF l_original_party_tbl.EXISTS(tab_row_party) THEN
28605                               IF (l_original_party_tbl(tab_row_party).instance_party_id
28606                                  = l_contact_tbl(tab_row_contact).contact_ip_id )
28607                                 THEN
28608                                  l_contact_tbl(tab_row_contact).contact_ip_id :=
28609                                    l_new_party_tbl(tab_row_party).instance_party_id;
28610                                  l_contact_found_flag := TRUE;
28611                               END IF;
28612                             END IF;
28613                           END LOOP;
28614                        END IF;
28615                     -- Check if the contact_ip_id exists
28616                        IF ((l_contact_tbl(tab_row_contact).contact_ip_id IS NULL) OR
28617                        (l_contact_tbl(tab_row_contact).contact_ip_id
28618                          = FND_API.G_MISS_NUM)
28619                         OR NOT(l_contact_found_flag) ) THEN
28620                            FND_MESSAGE.SET_NAME('CSI','CSI_API_CONTACT_IP_ID_NULL');
28621                            FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',
28622                               l_contact_tbl(tab_row_contact).instance_party_id);
28623                            FND_MSG_PUB.Add;
28624                            RAISE FND_API.G_EXC_ERROR;
28625                        END IF;
28626 
28627                     -- Build other fiels of the contact table
28628                        l_contact_tbl(tab_row_contact).instance_party_id             := FND_API.G_MISS_NUM;
28629                        l_contact_tbl(tab_row_contact).contact_flag   := 'Y';
28630                        l_contact_tbl(tab_row_contact).INSTANCE_ID                   := l_new_instance_rec.instance_id;
28631                        l_contact_tbl(tab_row_contact).ACTIVE_START_DATE             := FND_API.G_MISS_DATE;
28632                        l_contact_tbl(tab_row_contact).ACTIVE_END_DATE               := FND_API.G_MISS_DATE;
28633                    -- Build the temporary party table with only one record
28634                    -- for and grab all its accounts
28635                        l_contact_input_tbl(1) := l_contact_tbl(tab_row_contact);
28636 
28637                          -- Create instance party relationship and its accounts
28638                         csi_party_relationships_pub.create_inst_party_relationship
28639                             ( p_api_version                 => p_api_version
28640                              ,p_commit                      => p_commit
28641                              ,p_init_msg_list               => p_init_msg_list
28642                              ,p_validation_level            => p_validation_level
28643                              ,p_party_tbl                   => l_contact_input_tbl
28644                              ,p_party_account_tbl           => l_contact_account_tbl
28645                              ,p_txn_rec                     => p_txn_rec
28646                              ,p_oks_txn_inst_tbl            => px_oks_txn_inst_tbl
28647                              ,x_return_status               => x_return_status
28648                              ,x_msg_count                   => x_msg_count
28649                              ,x_msg_data                    => x_msg_data
28650                               );
28651                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28652                                l_msg_index := 1;
28653                                l_msg_count := x_msg_count;
28654                                WHILE l_msg_count > 0 LOOP
28655                                     x_msg_data := FND_MSG_PUB.GET
28656                                                    (l_msg_index,
28657                                                   FND_API.G_FALSE      );
28658                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28659                                     l_msg_index := l_msg_index + 1;
28660                                     l_msg_count := l_msg_count - 1;
28661                                END LOOP;
28662                                RAISE FND_API.G_EXC_ERROR;
28663                              END IF;
28664                              -- Grab the new parties created in a new table
28665                                l_new_contact_tbl(tab_row_contact) := l_contact_input_tbl(1);
28666                              -- Empty the party table
28667                                l_contact_input_tbl.DELETE;
28668                              -- Empty the account table
28669                                l_contact_account_tbl.DELETE;
28670                              l_contact_found_flag := FALSE;
28671            END IF;
28672           END LOOP;
28673       END IF;
28674    END IF;
28675        -- Empty the party and contact tables
28676        l_new_contact_tbl.DELETE;
28677        l_new_party_tbl.DELETE;
28678 -- ASH
28679   -- Create asset assignments if requested. Asset assignments have already been fetched before
28680     IF  (p_copy_asset_assignments  = fnd_api.g_true) THEN
28681        IF l_asset_tbl.COUNT > 0 THEN
28682          FOR tab_row IN l_asset_tbl.FIRST .. l_asset_tbl.LAST
28683          LOOP
28684             IF l_asset_tbl.EXISTS(tab_row) THEN
28685                  l_asset_tbl(tab_row).INSTANCE_ID          := l_new_instance_rec.instance_id;
28686                  l_asset_tbl(tab_row).INSTANCE_ASSET_ID   := FND_API.G_MISS_NUM;
28687                  l_asset_tbl(tab_row).ACTIVE_START_DATE    := FND_API.G_MISS_DATE;
28688                  l_asset_tbl(tab_row).ACTIVE_END_DATE      := FND_API.G_MISS_DATE;
28689                  -- Trap the row in a record and create assets row by row
28690                  l_instance_asset_rec := l_asset_tbl(tab_row);
28691                   csi_asset_pvt.create_instance_asset
28692                     ( p_api_version                 => p_api_version
28693                      ,p_commit                      => p_commit
28694                      ,p_init_msg_list               => p_init_msg_list
28695                      ,p_validation_level            => p_validation_level
28696                      ,p_instance_asset_rec          => l_instance_asset_rec
28697                      ,p_txn_rec                     => p_txn_rec
28698                      ,x_return_status               => x_return_status
28699                      ,x_msg_count                   => x_msg_count
28700                      ,x_msg_data                    => x_msg_data
28701                      ,p_lookup_tbl                  => l_asset_lookup_tbl
28702                      ,p_asset_count_rec             => l_asset_count_rec
28703                      ,p_asset_id_tbl                => l_asset_id_tbl
28704                      ,p_asset_loc_tbl               => l_asset_loc_tbl
28705                     );
28706                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28707                                l_msg_index := 1;
28708                                l_msg_count := x_msg_count;
28709                                WHILE l_msg_count > 0 LOOP
28710                                     x_msg_data := FND_MSG_PUB.GET
28711                                                    (l_msg_index,
28712                                                   FND_API.G_FALSE      );
28713                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28714                                     l_msg_index := l_msg_index + 1;
28715                                     l_msg_count := l_msg_count - 1;
28716                                END LOOP;
28717                                RAISE FND_API.G_EXC_ERROR;
28718                              END IF;
28719               END IF;
28720            END LOOP;
28721         END IF;
28722      END IF;
28723    -- Created extended attributes if requested
28724     IF (p_copy_ext_attribs =  fnd_api.g_true) THEN
28725         l_ext_attribs_query_rec.attribute_value_id  := FND_API.G_MISS_NUM;
28726         l_ext_attribs_query_rec.instance_id := l_curr_instance_rec.instance_id;
28727         l_ext_attribs_query_rec.attribute_id := FND_API.G_MISS_NUM;
28728         csi_item_instance_pub.get_extended_attrib_values
28729                (p_api_version            =>  p_api_version
28730                ,p_commit                 => p_commit
28731                ,p_init_msg_list          => p_init_msg_list
28732                ,p_validation_level       => p_validation_level
28733                ,p_ext_attribs_query_rec  => l_ext_attribs_query_rec
28734                ,p_time_stamp             => NULL
28735                ,x_ext_attrib_tbl         => l_ext_attrib_tbl
28736                ,x_ext_attrib_def_tbl     => l_ext_attrib_def_tbl
28737                ,x_return_status          => x_return_status
28738                ,x_msg_count              => x_msg_count
28739                ,x_msg_data               => x_msg_data
28740                );
28741                       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28742                                l_msg_index := 1;
28743                                l_msg_count := x_msg_count;
28744                                WHILE l_msg_count > 0 LOOP
28745                                     x_msg_data := FND_MSG_PUB.GET
28746                                                    (l_msg_index,
28747                                                   FND_API.G_FALSE      );
28748                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28749                                     l_msg_index := l_msg_index + 1;
28750                                     l_msg_count := l_msg_count - 1;
28751                                END LOOP;
28752                                RAISE FND_API.G_EXC_ERROR;
28753                       END IF;
28754       IF l_ext_attrib_tbl.COUNT > 0 THEN
28755          FOR tab_row IN l_ext_attrib_tbl.FIRST .. l_ext_attrib_tbl.LAST
28756          LOOP
28757             IF l_ext_attrib_tbl.EXISTS(tab_row) THEN
28758               IF NOT(csi_Item_Instance_Vld_pvt.get_ext_attrib_level(l_ext_attrib_tbl(tab_row).attribute_id,
28759                                         l_attribute_level ))THEN
28760                  RAISE FND_API.G_EXC_ERROR;
28761               END IF;
28762 
28763               IF (l_attribute_level = 'INSTANCE') THEN
28764                  l_ext_attrib_tbl.DELETE (tab_row);
28765               ELSE
28766                  l_ext_attrib_tbl(tab_row).INSTANCE_ID := l_new_instance_rec.instance_id;
28767                  l_ext_attrib_tbl(tab_row).ATTRIBUTE_VALUE_ID   := FND_API.G_MISS_NUM;
28768                  l_ext_attrib_tbl(tab_row).ACTIVE_START_DATE  := FND_API.G_MISS_DATE;
28769                  l_ext_attrib_tbl(tab_row).ACTIVE_END_DATE  := FND_API.G_MISS_DATE;
28770               END IF;
28771             END IF;
28772          END LOOP;
28773 
28774             -- It is possible that all the extended attributes were set at instance level and thus we have an empty table
28775             IF l_ext_attrib_tbl.COUNT > 0 THEN
28776               csi_item_instance_pub.create_extended_attrib_values
28777               ( p_api_version         => p_api_version
28778                ,p_commit              => p_commit
28779                ,p_init_msg_list       => p_init_msg_list
28780                ,p_validation_level    => p_validation_level
28781                ,p_ext_attrib_tbl      => l_ext_attrib_tbl
28782                ,p_txn_rec             => p_txn_rec
28783                ,x_return_status       => x_return_status
28784                ,x_msg_count           => x_msg_count
28785                ,x_msg_data            => x_msg_data
28786               );
28787 
28788                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28789                                l_msg_index := 1;
28790                                l_msg_count := x_msg_count;
28791                                WHILE l_msg_count > 0 LOOP
28792                                     x_msg_data := FND_MSG_PUB.GET
28793                                                    (l_msg_index,
28794                                                   FND_API.G_FALSE      );
28795                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28796                                     l_msg_index := l_msg_index + 1;
28797                                     l_msg_count := l_msg_count - 1;
28798                                END LOOP;
28799                                RAISE FND_API.G_EXC_ERROR;
28800                              END IF;
28801              END IF;
28802           END IF;
28803        END IF;
28804 
28805     -- Create org assignments if requested
28806     IF (p_copy_org_assignments = fnd_api.g_true) THEN
28807           l_ou_query_rec.instance_ou_id := FND_API.G_MISS_NUM;
28808           l_ou_query_rec.instance_id := l_curr_instance_rec.instance_id;
28809           l_ou_query_rec.operating_unit_id := FND_API.G_MISS_NUM;
28810           l_ou_query_rec.relationship_type_code  := FND_API.G_MISS_CHAR;
28811 
28812             csi_organization_unit_pub.get_organization_unit
28813                (
28814                p_api_version             => p_api_version
28815                ,p_commit                 => p_commit
28816                ,p_init_msg_list          => p_init_msg_list
28817                ,p_validation_level       => p_validation_level
28818                ,p_ou_query_rec           => l_ou_query_rec
28819                ,p_resolve_id_columns     => fnd_api.g_true
28820                ,p_time_stamp             => NULL
28821                ,x_org_unit_tbl           => l_org_unit_header_tbl
28822                ,x_return_status          => x_return_status
28823                ,x_msg_count              => x_msg_count
28824                ,x_msg_data               => x_msg_data
28825                );
28826 
28827                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28828                                l_msg_index := 1;
28829                                l_msg_count := x_msg_count;
28830                                WHILE l_msg_count > 0 LOOP
28831                                     x_msg_data := FND_MSG_PUB.GET
28832                                                   (l_msg_index,
28833                                                   FND_API.G_FALSE      );
28834                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28835                                     l_msg_index := l_msg_index + 1;
28836                                     l_msg_count := l_msg_count - 1;
28837                                END LOOP;
28838                                RAISE FND_API.G_EXC_ERROR;
28839                              END IF;
28840 
28841               IF l_org_unit_header_tbl.COUNT > 0 THEN    /*****First change here 08/25/01 - RK***/
28842                 FOR tab_row_party IN l_org_unit_header_tbl.FIRST .. l_org_unit_header_tbl.LAST
28843                 LOOP
28844                      IF l_org_unit_header_tbl.EXISTS(tab_row_party) THEN
28845                              l_org_unit_tbl(tab_row_party).instance_ou_id := l_org_unit_header_tbl(tab_row_party).instance_ou_id;
28846                              l_org_unit_tbl(tab_row_party).instance_id := l_org_unit_header_tbl(tab_row_party).instance_id;
28847                              l_org_unit_tbl(tab_row_party).operating_unit_id := l_org_unit_header_tbl(tab_row_party).operating_unit_id;
28848                              l_org_unit_tbl(tab_row_party).relationship_type_code := l_org_unit_header_tbl(tab_row_party).relationship_type_code;
28849                              l_org_unit_tbl(tab_row_party).active_start_date := l_org_unit_header_tbl(tab_row_party).active_start_date;
28850                              l_org_unit_tbl(tab_row_party).active_end_date := l_org_unit_header_tbl(tab_row_party).active_end_date;
28851                              l_org_unit_tbl(tab_row_party).context := l_org_unit_header_tbl(tab_row_party).context;
28852                              l_org_unit_tbl(tab_row_party).attribute1 := l_org_unit_header_tbl(tab_row_party).attribute1;
28853                              l_org_unit_tbl(tab_row_party).attribute2 := l_org_unit_header_tbl(tab_row_party).attribute2;
28854                              l_org_unit_tbl(tab_row_party).attribute3 := l_org_unit_header_tbl(tab_row_party).attribute3;
28855                              l_org_unit_tbl(tab_row_party).attribute4 := l_org_unit_header_tbl(tab_row_party).attribute4;
28856                              l_org_unit_tbl(tab_row_party).attribute5 := l_org_unit_header_tbl(tab_row_party).attribute5;
28857                              l_org_unit_tbl(tab_row_party).attribute6 := l_org_unit_header_tbl(tab_row_party).attribute6;
28858                              l_org_unit_tbl(tab_row_party).attribute7 := l_org_unit_header_tbl(tab_row_party).attribute7;
28859                              l_org_unit_tbl(tab_row_party).attribute8 := l_org_unit_header_tbl(tab_row_party).attribute8;
28860                              l_org_unit_tbl(tab_row_party).attribute9 := l_org_unit_header_tbl(tab_row_party).attribute9;
28861                              l_org_unit_tbl(tab_row_party).attribute10 := l_org_unit_header_tbl(tab_row_party).attribute10;
28862                              l_org_unit_tbl(tab_row_party).attribute11 := l_org_unit_header_tbl(tab_row_party).attribute11;
28863                              l_org_unit_tbl(tab_row_party).attribute12 := l_org_unit_header_tbl(tab_row_party).attribute12;
28864                              l_org_unit_tbl(tab_row_party).attribute13 := l_org_unit_header_tbl(tab_row_party).attribute13;
28865                              l_org_unit_tbl(tab_row_party).attribute14 := l_org_unit_header_tbl(tab_row_party).attribute14;
28866                              l_org_unit_tbl(tab_row_party).attribute15 := l_org_unit_header_tbl(tab_row_party).attribute15;
28867                              l_org_unit_tbl(tab_row_party).object_version_number := l_org_unit_header_tbl(tab_row_party).object_version_number;
28868                      END IF;
28869                 END LOOP;
28870              END IF; --l_org_unit_header_tbl.COUNT > 0
28871 
28872      IF l_org_unit_tbl.COUNT > 0 THEN
28873          FOR tab_row IN l_org_unit_tbl.FIRST .. l_org_unit_tbl.LAST
28874          LOOP
28875             IF l_org_unit_tbl.EXISTS(tab_row) THEN
28876                  l_org_unit_tbl(tab_row).INSTANCE_ID        := l_new_instance_rec.instance_id;
28877                  l_org_unit_tbl(tab_row).INSTANCE_OU_ID     := FND_API.G_MISS_NUM;
28878                  l_org_unit_tbl(tab_row).ACTIVE_START_DATE  := FND_API.G_MISS_DATE;
28879                  l_org_unit_tbl(tab_row).ACTIVE_END_DATE    := FND_API.G_MISS_DATE;
28880               END IF;
28881          END LOOP;
28882             csi_organization_unit_pub.create_organization_unit
28883             ( p_api_version       => p_api_version
28884              ,p_commit            => p_commit
28885              ,p_init_msg_list     => p_init_msg_list
28886              ,p_validation_level  => p_validation_level
28887              ,p_org_unit_tbl      => l_org_unit_tbl
28888              ,p_txn_rec           => p_txn_rec
28889              ,x_return_status     => x_return_status
28890              ,x_msg_count         => x_msg_count
28891              ,x_msg_data          => x_msg_data
28892             );
28893 
28894                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28895                                l_msg_index := 1;
28896                                l_msg_count := x_msg_count;
28897                                WHILE l_msg_count > 0 LOOP
28898                                    x_msg_data := FND_MSG_PUB.GET
28899                                                    (l_msg_index,
28900                                                   FND_API.G_FALSE      );
28901 
28902                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28903                                     l_msg_index := l_msg_index + 1;
28904                                     l_msg_count := l_msg_count - 1;
28905                                END LOOP;
28906                                RAISE FND_API.G_EXC_ERROR;
28907                              END IF;
28908          END IF;
28909     END IF;
28910 
28911    -- Create pricing attributes if requested
28912    IF (p_copy_pricing_attribs = fnd_api.g_true) THEN
28913       l_pricing_attribs_query_rec.pricing_attribute_id  := FND_API.G_MISS_NUM;
28914       l_pricing_attribs_query_rec.instance_id           := l_curr_instance_rec.instance_id;
28915        csi_pricing_attribs_pub.get_pricing_attribs
28916             ( p_api_version                 => p_api_version
28917              ,p_commit                      => p_commit
28918              ,p_init_msg_list               => p_init_msg_list
28919              ,p_validation_level            => p_validation_level
28920              ,p_pricing_attribs_query_rec   => l_pricing_attribs_query_rec
28921              ,p_time_stamp                  => NULL
28922              ,x_pricing_attribs_tbl         => l_pricing_attribs_tbl
28923              ,x_return_status               => x_return_status
28924              ,x_msg_count                   => x_msg_count
28925              ,x_msg_data                    => x_msg_data
28926             );
28927 
28928                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28929                                l_msg_index := 1;
28930                                l_msg_count := x_msg_count;
28931                                WHILE l_msg_count > 0 LOOP
28932                                     x_msg_data := FND_MSG_PUB.GET
28933                                                    (l_msg_index,
28934                                                   FND_API.G_FALSE      );
28935                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28936                                     l_msg_index := l_msg_index + 1;
28937                                     l_msg_count := l_msg_count - 1;
28938                                END LOOP;
28939 
28940                                RAISE FND_API.G_EXC_ERROR;
28941                              END IF;
28942      IF l_pricing_attribs_tbl.COUNT > 0 THEN
28943          FOR tab_row IN l_pricing_attribs_tbl.FIRST .. l_pricing_attribs_tbl.LAST
28944          LOOP
28945             IF l_pricing_attribs_tbl.EXISTS(tab_row) THEN
28946                  l_pricing_attribs_tbl(tab_row).INSTANCE_ID            := l_new_instance_rec.instance_id;
28947                  l_pricing_attribs_tbl(tab_row).PRICING_ATTRIBUTE_ID   := FND_API.G_MISS_NUM;
28948                  l_pricing_attribs_tbl(tab_row).ACTIVE_START_DATE      := FND_API.G_MISS_DATE;
28949                  l_pricing_attribs_tbl(tab_row).ACTIVE_END_DATE        := FND_API.G_MISS_DATE;
28950               END IF;
28951          END LOOP;
28952          csi_pricing_attribs_pub.create_pricing_attribs
28953             ( p_api_version                 => p_api_version
28954              ,p_commit                      => p_commit
28955              ,p_init_msg_list               => p_init_msg_list
28956              ,p_validation_level            => p_validation_level
28957              ,p_pricing_attribs_tbl         => l_pricing_attribs_tbl
28958              ,p_txn_rec                     => p_txn_rec
28959              ,x_return_status               => x_return_status
28960              ,x_msg_count                   => x_msg_count
28961              ,x_msg_data                    => x_msg_data
28962             );
28963                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28964                                l_msg_index := 1;
28965                                l_msg_count := x_msg_count;
28966                                WHILE l_msg_count > 0 LOOP
28967                                     x_msg_data := FND_MSG_PUB.GET
28968                                                    (l_msg_index,
28969                                                   FND_API.G_FALSE      );
28970                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28971                                     l_msg_index := l_msg_index + 1;
28972                                     l_msg_count := l_msg_count - 1;
28973                                END LOOP;
28974                                RAISE FND_API.G_EXC_ERROR;
28975                              END IF;
28976        END IF;
28977    END IF;
28978 
28979 -- Added by rtalluri for Bug: 2420897 on 08/19/02
28980 -- If version label is null, then we need read the the default value from the profile option
28981       IF (p_source_instance_rec.VERSION_LABEL IS NULL ) OR
28982          (p_source_instance_rec.VERSION_LABEL = FND_API.G_MISS_CHAR) THEN
28983           l_version_label := FND_PROFILE.VALUE('CSI_DEFAULT_VERSION_LABEL');
28984            IF  l_version_label IS NULL THEN
28985                FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_VERSION_LABEL');
28986                FND_MSG_PUB.ADD;
28987                RAISE FND_API.G_EXC_ERROR;
28988            ELSE
28989                l_new_instance_rec.version_label := l_version_label;
28990            END IF;
28991       ELSE
28992         l_new_instance_rec.VERSION_LABEL := p_source_instance_rec.VERSION_LABEL;
28993       END IF;
28994 
28995       --Calling the Create Version Label API to associate a version label for an instance created
28996 
28997         l_version_label_rec.instance_id           := l_new_instance_rec.instance_id;
28998         l_version_label_rec.version_label         := l_new_instance_rec.version_label;
28999         l_version_label_rec.date_time_stamp       := SYSDATE;
29000         l_version_label_rec.active_start_date     := l_new_instance_rec.active_start_date;
29001         l_version_label_rec.description           := l_new_instance_rec.version_label_description;
29002 
29003         csi_item_instance_pvt.create_version_label
29004           (
29005            p_api_version         => p_api_version
29006           ,p_commit              => fnd_api.g_false
29007           ,p_init_msg_list       => p_init_msg_list
29008           ,p_validation_level    => p_validation_level
29009           ,p_version_label_rec   => l_version_label_rec
29010           ,p_txn_rec             => p_txn_rec
29011           ,x_return_status       => x_return_status
29012           ,x_msg_count           => x_msg_count
29013           ,x_msg_data            => x_msg_data
29014            );
29015 
29016          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29017               csi_gen_utility_pvt.put_line( ' Error from COPY_SINGLE_ITEM_INSTANCE.CREATE_VERSION_LABEL..');
29018               csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
29019               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_CREATE_VERSION');
29020               FND_MESSAGE.SET_TOKEN('API_ERROR','CREATE_VERSION_LABEL');
29021               FND_MSG_PUB.Add;
29022               RAISE FND_API.G_EXC_ERROR;
29023          END IF;
29024 -- End of Addition by rtalluri for Bug: 2420897 on 08/19/02
29025 
29026       IF p_call_from_split = fnd_api.g_false
29027       THEN
29028           -- Added by sk for fixing the bug 2234365
29029            IF x_new_instance_tbl(1).instance_id IS NOT NULL AND
29030               x_new_instance_tbl(1).instance_id <> fnd_api.g_miss_num
29031            THEN
29032                   -- Added by sk for fixing bug 2245976
29033                   IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
29034                      csi_gen_utility_pvt.populate_install_param_rec;
29035                   END IF;
29036                   --
29037                   l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
29038                   --
29039                   IF l_internal_party_id IS NULL THEN
29040                      FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
29041                      FND_MSG_PUB.ADD;
29042                      RAISE FND_API.G_EXC_ERROR;
29043                   END IF;
29044                   --
29045                   BEGIN
29046                       SELECT cip.party_id
29047                       INTO   l_party_id
29048                       FROM   csi_i_parties cip
29049                       WHERE  cip.instance_id = x_new_instance_tbl(1).instance_id
29050                       AND    cip.relationship_type_code = 'OWNER';
29051                  EXCEPTION
29052                    WHEN OTHERS THEN
29053                     l_party_id := NULL;
29054                    END;
29055 
29056                    IF l_party_id IS NOT NULL AND
29057                       l_internal_party_id IS NOT NULL AND
29058                       l_party_id <> l_internal_party_id
29059                    THEN
29060                       -- End addition by sk for fixing bug 2245976
29061                       csi_item_instance_pvt.Call_to_Contracts(
29062                               p_transaction_type   =>   'NEW'
29063                              ,p_instance_id        =>   x_new_instance_tbl(1).instance_id
29064                              ,p_new_instance_id    =>   NULL
29065                              ,p_vld_org_id         =>   x_new_instance_tbl(1).vld_organization_id
29066                              ,p_quantity           =>   NULL
29067                              ,p_party_account_id1  =>   NULL
29068                              ,p_party_account_id2  =>   NULL
29069                              ,p_call_from_bom_expl =>   p_call_from_bom_expl
29070                              ,p_transaction_date   =>   p_txn_rec.transaction_date -- For 3483763
29071                              ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date -- For 3483763
29072                              ,p_oks_txn_inst_tbl   =>   px_oks_txn_inst_tbl
29073                              ,x_return_status      =>   x_return_status
29074                              ,x_msg_count          =>   x_msg_count
29075                              ,x_msg_data           =>   x_msg_data
29076                               );
29077 
29078                       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
29079                       THEN
29080                          l_msg_index := 1;
29081                          l_msg_count := x_msg_count;
29082                          WHILE l_msg_count > 0 LOOP
29083                            x_msg_data := FND_MSG_PUB.GET
29084                                    (  l_msg_index,
29085                                       FND_API.G_FALSE
29086                                     );
29087                            csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
29088                            l_msg_index := l_msg_index + 1;
29089                            l_msg_count := l_msg_count - 1;
29090                          END LOOP;
29091                          RAISE FND_API.G_EXC_ERROR;
29092                       END IF;
29093                       --
29094 		      IF px_oks_txn_inst_tbl.count > 0 THEN
29095 			 csi_gen_utility_pvt.dump_oks_txn_inst_tbl(px_oks_txn_inst_tbl);
29096 			 csi_gen_utility_pvt.put_line('Calling OKS Core API...');
29097 			 --
29098 			 IF p_txn_rec.transaction_type_id = 3 THEN
29099 			    l_batch_id := p_txn_rec.source_header_ref_id;
29100 			    l_batch_type := p_txn_rec.source_group_ref;
29101 			 ELSE
29102 			    l_batch_id := NULL;
29103 			    l_batch_type := NULL;
29104 			 END IF;
29105 			 --
29106                          UPDATE CSI_TRANSACTIONS
29107                          set contracts_invoked = 'Y'
29108                          where transaction_id = p_txn_rec.transaction_id;
29109                          --
29110 			 OKS_IBINT_PUB.IB_interface
29111 			    (
29112 			      P_Api_Version           =>  1.0,
29113 			      P_init_msg_list         =>  p_init_msg_list,
29114 			      P_single_txn_date_flag  =>  'Y',
29115 			      P_Batch_type            =>  l_batch_type,
29116 			      P_Batch_ID              =>  l_batch_id,
29117 			      P_OKS_Txn_Inst_tbl      =>  px_oks_txn_inst_tbl,
29118 			      x_return_status         =>  x_return_status,
29119 			      x_msg_count             =>  x_msg_count,
29120 			      x_msg_data              =>  x_msg_data
29121 			   );
29122 			 --
29123 			 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29124 			    l_msg_index := 1;
29125 			    l_msg_count := x_msg_count;
29126 			    WHILE l_msg_count > 0 LOOP
29127 			       x_msg_data := FND_MSG_PUB.GET
29128 				       (  l_msg_index,
29129 					  FND_API.G_FALSE        );
29130 			       csi_gen_utility_pvt.put_line( 'Error from OKS_IBINT_PUB.IB_interface..');
29131 			       csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
29132 			       l_msg_index := l_msg_index + 1;
29133 			       l_msg_count := l_msg_count - 1;
29134 			    END LOOP;
29135 			    RAISE FND_API.G_EXC_ERROR;
29136 			 END IF;
29137 		      END IF;
29138                    END IF;
29139            END IF;
29140           -- End Addition by sk for fixing the bug 2234365
29141       END IF;
29142     -- End of API body
29143           -- Standard check of p_commit
29144        IF FND_API.To_Boolean( p_commit ) THEN
29145                COMMIT WORK;
29146        END IF;
29147           -- Standard call to get message count and if count is  get message info.
29148           FND_MSG_PUB.Count_And_Get
29149           (p_count       =>       x_msg_count ,
29150          p_data       =>       x_msg_data
29151            );
29152 EXCEPTION
29153     WHEN FND_API.G_EXC_ERROR THEN
29154             ROLLBACK TO copy_single_item_instance;
29155             x_return_status := FND_API.G_RET_STS_ERROR ;
29156             FND_MSG_PUB.Count_And_Get
29157                 (        p_count               =>      x_msg_count,
29158                     p_data                =>      x_msg_data
29159                  );
29160       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
29161             ROLLBACK TO copy_single_item_instance;
29162             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
29163             FND_MSG_PUB.Count_And_Get
29164                 (        p_count               =>      x_msg_count,
29165                     p_data                =>      x_msg_data
29166                  );
29167 
29168       WHEN OTHERS THEN
29169             ROLLBACK TO  copy_single_item_instance;
29170             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
29171               IF       FND_MSG_PUB.Check_Msg_Level
29172                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
29173             THEN
29174                     FND_MSG_PUB.Add_Exc_Msg
29175                     (      G_PKG_NAME            ,
29176                           l_api_name
29177                      );
29178             END IF;
29179             FND_MSG_PUB.Count_And_Get
29180                 (        p_count               =>      x_msg_count,
29181                     p_data                =>      x_msg_data
29182                 );
29183 END  copy_single_item_instance;
29184 --
29185 /*---------------------------------------------------------*/
29186 /* Procedure name:  Explode_Bom                            */
29187 /* Description :    This procudure explodes the BOM and    */
29188 /*                  creates instances and relationships    */
29189 /* Author      :    Srinivasan Ramakrishnan                */
29190 /*---------------------------------------------------------*/
29191 PROCEDURE Explode_Bom
29192  (
29193    p_api_version            IN     NUMBER
29194   ,p_commit                 IN     VARCHAR2
29195   ,p_init_msg_list          IN     VARCHAR2
29196   ,p_validation_level       IN     NUMBER
29197   ,p_source_instance_rec    IN     csi_datastructures_pub.instance_rec
29198   ,p_explosion_level        IN     NUMBER
29199   ,p_item_tbl               OUT    NOCOPY csi_datastructures_pub.instance_tbl
29200   ,p_item_relation_tbl      OUT    NOCOPY csi_datastructures_pub.ii_relationship_tbl
29201   ,p_create_instance        IN     VARCHAR2
29202   ,p_txn_rec                IN OUT NOCOPY csi_datastructures_pub.transaction_rec
29203   ,x_return_status          OUT    NOCOPY VARCHAR2
29204   ,x_msg_count              OUT    NOCOPY NUMBER
29205   ,x_msg_data               OUT    NOCOPY VARCHAR2
29206  )
29207 IS
29208    --
29209    l_api_name                    CONSTANT VARCHAR2(30) := 'explode_bom';
29210    l_api_version                 CONSTANT NUMBER      := 1.0;
29211    l_debug_level                 NUMBER;
29212    l_dump_frequency_flag         VARCHAR2(30);
29213    l_msg_index                   NUMBER;
29214    l_msg_count                   NUMBER;
29215    l_err_msg                     VARCHAR2(2000) := NULL;
29216    l_error_code                  VARCHAR2(30) := NULL;
29217    l_group_id                    NUMBER;
29218    l_session_id                  NUMBER := 0;
29219    l_parent_child_tbl            csi_item_instance_pvt.parent_child_tbl;
29220    l_parent_count                NUMBER := 0;
29221    l_per_parent                  NUMBER := 0;
29222    l_temp_per_parent             NUMBER := 0;
29223    l_csi_explode_bom             VARCHAR2(30)  := fnd_profile.value('CSI_EXPLODE_BOM');
29224    l_csi_bom_explosion_level     NUMBER;
29225    l_ins_count                   NUMBER := 0;
29226    l_curr_parent                 VARCHAR2(240);
29227    x_ins_tbl                     csi_datastructures_pub.instance_tbl;
29228    x_rel_tbl                     csi_datastructures_pub.ii_relationship_tbl;
29229    l_source_instance_rec         csi_datastructures_pub.instance_rec;
29230    x_new_ins_tbl                 csi_datastructures_pub.instance_tbl;
29231    l_init_source_instance_rec    csi_datastructures_pub.instance_rec;
29232    l_rel_count                   NUMBER := 0;
29233    l_count                       NUMBER;
29234    l_prev_parent                 VARCHAR2(240);
29235    l_prev_child                  VARCHAR2(240);
29236    l_split_qty                   NUMBER;
29237    l_master_organization_id      NUMBER;
29238    x_msg_index_out               NUMBER;
29239    l_child_expl_level            NUMBER;
29240    l_init_sort_code              VARCHAR2(2000);
29241    l_bom_sortcode_width          NUMBER := Bom_Common_Definitions.G_Bom_SortCode_Width;
29242    l_bom_sort_order_tbl          csi_item_instance_pvt.bom_sort_order_tbl;
29243    --
29244    CURSOR BOM_CSR (p_group_id NUMBER)
29245    IS
29246    SELECT bom.assembly_item_id parent_item_id
29247 	 ,bet.component_item_id component_item_id
29248 	 ,bet.organization_id organization_id
29249 	 ,bet.component_quantity component_quantity
29250 	 ,bet.extended_quantity extended_quantity
29251          ,bet.plan_level plan_level
29252 	 ,substr(bet.sort_order,1,(length(sort_order)-l_bom_sortcode_width)) parent_sort_order
29253 	 ,bet.sort_order child_sort_order
29254 	 ,msi.serial_number_control_code serial_number_control_code
29255 	 ,msi.primary_uom_code primary_uom_code
29256 	 ,mp.master_organization_id master_organization_id
29257    FROM bom_small_expl_temp bet
29258        ,bom_bill_of_materials bom
29259        ,mtl_system_items msi
29260        ,mtl_system_items msip
29261        ,mtl_parameters mp
29262    WHERE    bet.group_id = p_group_id
29263    AND      bet.plan_level > 0               -- Ignore Top Most
29264    AND      bet.component_item_id = msi.inventory_item_id
29265    AND      bet.organization_id = msi.organization_id
29266    AND      bet.bill_sequence_id = bom.bill_sequence_id
29267    AND      bet.extended_quantity > 0
29268    AND      bom.assembly_item_id = msip.inventory_item_id
29269    AND      bom.organization_id = msip.organization_id
29270    AND      msi.organization_id = mp.organization_id
29271    ORDER BY bet.sort_order;
29272 BEGIN
29273     -- Standard Start of API savepoint
29274     SAVEPOINT      explode_bom;
29275     -- Standard call to check for call compatibility.
29276     IF NOT FND_API.Compatible_API_Call (l_api_version,
29277                                         p_api_version,
29278                                         l_api_name ,
29279                                         G_PKG_NAME)
29280     THEN
29281        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
29282     END IF;
29283     -- Initialize message list if p_init_msg_list is set to TRUE.
29284     IF FND_API.to_Boolean( p_init_msg_list ) THEN
29285        FND_MSG_PUB.initialize;
29286     END IF;
29287     --  Initialize API return status to success
29288     x_return_status := FND_API.G_RET_STS_SUCCESS;
29289     -- Check the profile option debug_level for debug message reporting
29290     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
29291     -- If debug_level = 1 then dump the procedure name
29292     IF (l_debug_level > 0) THEN
29293         csi_gen_utility_pvt.put_line( 'explode_bom');
29294     END IF;
29295     -- If the debug level = 2 then dump all the parameters values.
29296     IF (l_debug_level > 1) THEN
29297             csi_gen_utility_pvt.put_line('explode_standard_bom'||'-'
29298                            || p_api_version  ||'-'
29299                            || p_commit       ||'-'
29300                            || p_init_msg_list ||'-'
29301                            || p_validation_level ||'-'
29302                            || p_explosion_level);
29303      -- Dump item instanc rec
29304          csi_gen_utility_pvt.dump_instance_rec(p_source_instance_rec);
29305     END IF;
29306     -- Start API body
29307     IF l_csi_explode_bom  = 'Y' THEN
29308        -- Verify if the a Valid item and Org id is being passed
29309        IF NOT(csi_Item_Instance_Vld_pvt.val_item_org
29310                                   ( p_source_instance_rec.INVENTORY_ITEM_ID,
29311                                     p_source_instance_rec.VLD_ORGANIZATION_ID)) THEN
29312           RAISE FND_API.G_EXC_ERROR;
29313        END IF;
29314        -- Verify if the a Valid bom and Org id is being passed
29315        IF NOT(csi_Item_Instance_Vld_pvt.val_bom_org
29316                           ( p_source_instance_rec.INVENTORY_ITEM_ID,
29317                             p_source_instance_rec.VLD_ORGANIZATION_ID)) THEN
29318           RAISE FND_API.G_EXC_ERROR;
29319        END IF;
29320        -- Verify instance quantity
29321        IF ((p_source_instance_rec.QUANTITY IS NULL)
29322              OR (p_source_instance_rec.QUANTITY = FND_API.G_MISS_NUM )
29323              OR (p_source_instance_rec.QUANTITY <> 1)) THEN
29324           FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_QUANTITY');
29325           FND_MESSAGE.SET_TOKEN('QUANTITY',p_source_instance_rec.QUANTITY);
29326           FND_MSG_PUB.Add;
29327           RAISE FND_API.G_EXC_ERROR;
29328        END IF;
29329        -- Verify the Passed Inventory Item is Trackable
29330        -- Get the Master Organization ID
29331        BEGIN
29332           select master_organization_id
29333           into l_master_organization_id
29334           from MTL_PARAMETERS
29335           where organization_id = p_source_instance_rec.VLD_ORGANIZATION_ID;
29336        EXCEPTION
29337           when others then
29338              csi_gen_utility_pvt.put_line('Unable to get the Master organization ID for '
29339                                           ||to_char(p_source_instance_rec.VLD_ORGANIZATION_ID));
29340 	     RAISE FND_API.G_EXC_ERROR;
29341        END;
29342        --
29343        IF NOT csi_item_instance_vld_pvt.Is_Trackable
29344                        (p_inv_item_id => p_source_instance_rec.INVENTORY_ITEM_ID,
29345                         p_org_id => l_master_organization_id) THEN
29346           csi_gen_utility_pvt.put_line('Passed Inventory Item is not Trackable..');
29347           RAISE FND_API.G_EXC_ERROR;
29348        END IF;
29349        -- Instance_id should be passed if Instance needs to be created for the Exploded Items
29350        --
29351        IF p_create_instance = FND_API.G_TRUE THEN
29352           IF (p_source_instance_rec.instance_id IS NULL) OR
29353 	         (p_source_instance_rec.instance_id = FND_API.G_MISS_NUM) THEN
29354 	   	     FND_MESSAGE.SET_NAME('CSI','CSI_API_INSTANCE_ID_NULL');
29355 		     FND_MSG_PUB.Add;
29356 	   	     RAISE FND_API.G_EXC_ERROR;
29357           END IF;
29358 	     --
29359           -- Verify if configruation has been exploded before
29360           IF (csi_Item_Instance_Vld_pvt.Is_config_exploded
29361              ( p_source_instance_rec.INSTANCE_ID)) THEN
29362 	     csi_gen_utility_pvt.put_line('Configuration already Exploded');
29363              RAISE FND_API.G_EXC_ERROR;
29364           END IF;
29365        END IF;
29366        --
29367        IF p_explosion_level IS NULL OR
29368           p_explosion_level = FND_API.G_MISS_NUM THEN
29369           l_csi_bom_explosion_level := to_number(fnd_profile.value('CSI_BOM_EXPLOSION_LEVEL'));
29370        ELSE
29371           l_csi_bom_explosion_level := p_explosion_level;
29372        END IF;
29373        --
29374        SELECT Bom_Explosion_Temp_S.NextVal
29375        INTO   l_group_id
29376        FROM   sys.dual;
29377        --
29378        Bompxinq.Exploder_Userexit
29379          (
29380 	   grp_id            => l_group_id,
29381 	   org_id            => p_source_instance_rec.VLD_ORGANIZATION_ID,
29382 	   item_id           => p_source_instance_rec.INVENTORY_ITEM_ID,
29383 	   unit_number_from  => '',
29384 	   unit_number_to    => '',
29385 	   levels_to_explode => l_csi_bom_explosion_level,
29386 	   expl_qty          => 1,
29387 	   show_rev          => 1,
29388 	   material_ctrl     => 1,
29389 	   err_msg           => l_err_msg,
29390 	   error_code        => l_error_code
29391         );
29392         --
29393         IF l_Error_Code <> 0 THEN
29394       	   csi_gen_utility_pvt.put_line (' Bom explosion error code <> 0 '|| l_Error_Code ||'  '||l_err_msg);
29395 	   IF l_Error_Code < 0 THEN
29396 	      csi_gen_utility_pvt.put_line (' Bom explosion error code > 0 '|| l_Error_Code ||'  '||l_err_msg);
29397 	   ELSIF l_Error_Code > 0 THEN
29398 	      csi_gen_utility_pvt.put_line (' Bom explosion error code < 0'|| l_Error_Code ||'  '||l_err_msg);
29399 	   END IF;
29400        FND_MESSAGE.SET_NAME('CSI','CSI_API_CORE_BOM_EXPL_ERROR');
29401 	   FND_MSG_PUB.Add;
29402 	   RAISE FND_API.G_EXC_ERROR;
29403        END IF; -- error
29404        --
29405        l_init_sort_code := Bom_Common_Definitions.get_initial_sort_code;
29406        --
29407        -- Loop thru' the cursor and create the Parent_child_tbl
29408        csi_gen_utility_pvt.put_line('Start of BOM Explosion..');
29409        For v_rec in BOM_CSR(l_group_id)
29410        Loop
29411           l_parent_count := l_parent_count + 1;
29412 	  l_parent_child_tbl(l_parent_count).parent_sort_order := v_rec.parent_sort_order;
29413 	  l_parent_child_tbl(l_parent_count).child_sort_order := v_rec.child_sort_order;
29414        End Loop;
29415        --
29416        l_ins_count := 0;
29417        l_prev_parent := l_init_sort_code;  -- By default this will be Top Most Parent
29418        --
29419        For v_rec in BOM_CSR(l_group_id)
29420        Loop
29421           IF csi_Item_Instance_Vld_pvt.Is_Trackable
29422                            (p_inv_item_id => v_rec.component_item_id,
29423                             p_org_id => v_rec.master_organization_id,
29424                             p_stack_err_msg => FALSE) THEN
29425 	     --
29426 	     -- Check whether parent is trackable or not
29427 	     l_curr_parent := v_rec.parent_sort_order;
29428 	     IF l_curr_parent <> l_init_sort_code THEN -- no need for Top Most
29429 	        -- Get the immediate Trackable Parent
29430 	        csi_item_instance_pvt.Get_parent_sort_order
29431 		      (
29432 		        p_parent_sort_order   => l_curr_parent
29433                        ,p_parent_child_tbl    => l_parent_child_tbl
29434 		       ,p_bom_sort_order_tbl  => l_bom_sort_order_tbl
29435                      );
29436              END IF;
29437 	     --
29438              -- Since the Max level is determined by the parameter p_explosion_level, any sub-assembly
29439              -- will be exploded only to the remaining level.
29440              l_child_expl_level := l_csi_bom_explosion_level - v_rec.plan_level;
29441              --
29442 	     IF ( (v_rec.serial_number_control_code in (2,5,6)) OR
29443                    ((csi_item_instance_pvt.Is_Parent(p_child_sort_order => v_rec.child_sort_order
29444 	                                            ,p_parent_child_tbl => l_parent_child_tbl)) AND
29445                      -- Check for Trackable component under this
29446                      (csi_item_instance_pvt.Has_Trackable_Component
29447                                              (p_inventory_item_id => v_rec.component_item_id
29448                                              ,p_organization_id => v_rec.organization_id
29449                                              ,p_explosion_level => l_child_expl_level))) ) THEN
29450 	        For i in 1..v_rec.extended_quantity
29451 	        Loop
29452 	           l_ins_count := l_ins_count + 1;
29453 	           x_ins_tbl(l_ins_count).inventory_item_id := v_rec.component_item_id;
29454 	           x_ins_tbl(l_ins_count).quantity := 1;
29455 	           x_ins_tbl(l_ins_count).mfg_serial_number_flag := 'N';
29456                    x_ins_tbl(l_ins_count).unit_of_measure := v_rec.primary_uom_code;
29457                    x_ins_tbl(l_ins_count).lot_number := NULL;
29458 	           x_ins_tbl(l_ins_count).instance_usage_code := NULL;
29459 	          -- x_ins_tbl(l_ins_count).ATTRIBUTE12 := l_curr_parent;
29460 	          -- x_ins_tbl(l_ins_count).ATTRIBUTE13 := v_rec.child_sort_order;
29461 	          -- x_ins_tbl(l_ins_count).ATTRIBUTE14 := 'N'; -- Mark_flag
29462 	          -- x_ins_tbl(l_ins_count).ATTRIBUTE15 := to_char(v_rec.extended_quantity); -- child occurance
29463                   l_bom_sort_order_tbl(l_ins_count).parent_sort_order := l_curr_parent;
29464                   l_bom_sort_order_tbl(l_ins_count).child_sort_order := v_rec.child_sort_order;
29465                   l_bom_sort_order_tbl(l_ins_count).mark_flag := 'N';
29466                   l_bom_sort_order_tbl(l_ins_count).child_occurance := v_rec.extended_quantity;
29467 	        End Loop;
29468 	     ELSE
29469 		l_count := 0;
29470                 IF l_bom_sort_order_tbl.count > 0 THEN
29471 		   For ins_row in l_bom_sort_order_tbl.FIRST .. l_bom_sort_order_tbl.LAST
29472 		   Loop
29473 		      IF l_curr_parent = l_bom_sort_order_tbl(ins_row).child_sort_order then -- Getting the parent existance
29474 		         l_count := l_bom_sort_order_tbl(ins_row).child_occurance;
29475 		         EXIT;
29476 		      END IF;
29477 		   End Loop;
29478                 END IF;
29479 		--
29480 		IF l_count > 0 THEN
29481 		   l_split_qty := v_rec.extended_quantity/l_count;
29482 		   For j in 1..l_count
29483 		   Loop
29484 		      l_ins_count := l_ins_count + 1;
29485 		      x_ins_tbl(l_ins_count).inventory_item_id := v_rec.component_item_id;
29486 		      x_ins_tbl(l_ins_count).quantity := l_split_qty;
29487 		      x_ins_tbl(l_ins_count).mfg_serial_number_flag := 'N';
29488                       x_ins_tbl(l_ins_count).unit_of_measure := v_rec.primary_uom_code;
29489                       x_ins_tbl(l_ins_count).lot_number := NULL;
29490 		      x_ins_tbl(l_ins_count).instance_usage_code := NULL;
29491 		    --  x_ins_tbl(l_ins_count).ATTRIBUTE12 := l_curr_parent;
29492 		    --  x_ins_tbl(l_ins_count).ATTRIBUTE13 := v_rec.child_sort_order;
29493 		    --  x_ins_tbl(l_ins_count).ATTRIBUTE14 := 'N'; -- Mark_flag
29494 		    --  x_ins_tbl(l_ins_count).ATTRIBUTE15 := to_char(l_count); -- # of child occurance
29495                       l_bom_sort_order_tbl(l_ins_count).parent_sort_order := l_curr_parent;
29496                       l_bom_sort_order_tbl(l_ins_count).child_sort_order := v_rec.child_sort_order;
29497                       l_bom_sort_order_tbl(l_ins_count).mark_flag := 'N';
29498                       l_bom_sort_order_tbl(l_ins_count).child_occurance := l_count;
29499 		   End Loop;
29500 		ELSE
29501 		   l_ins_count := l_ins_count + 1;
29502 		   x_ins_tbl(l_ins_count).inventory_item_id := v_rec.component_item_id;
29503 		   x_ins_tbl(l_ins_count).quantity := v_rec.extended_quantity;
29504 		   x_ins_tbl(l_ins_count).mfg_serial_number_flag := 'N';
29505                    x_ins_tbl(l_ins_count).unit_of_measure := v_rec.primary_uom_code;
29506                    x_ins_tbl(l_ins_count).lot_number := NULL;
29507 		   x_ins_tbl(l_ins_count).instance_usage_code := NULL;
29508 		  -- x_ins_tbl(l_ins_count).ATTRIBUTE12 := l_curr_parent;
29509 		  -- x_ins_tbl(l_ins_count).ATTRIBUTE13 := v_rec.child_sort_order;
29510 		  -- x_ins_tbl(l_ins_count).ATTRIBUTE14 := 'N'; -- Mark_flag
29511 		  -- x_ins_tbl(l_ins_count).ATTRIBUTE15 := to_char(1); -- # of child occurance
29512                    l_bom_sort_order_tbl(l_ins_count).parent_sort_order := l_curr_parent;
29513                    l_bom_sort_order_tbl(l_ins_count).child_sort_order := v_rec.child_sort_order;
29514                    l_bom_sort_order_tbl(l_ins_count).mark_flag := 'N';
29515                    l_bom_sort_order_tbl(l_ins_count).child_occurance := 1;
29516 		END IF;
29517 	     END IF;
29518 	  END IF;
29519        End Loop;
29520        -- Loop thru' the x_ins_tbl and create the x_rel_tbl
29521        -- x_ins_tbl and l_bom_sort_order_tbl are one-to-one. Since the sort order width is more
29522        -- and we can't accomodate in the ATTRIBUTE column, the new tbl has been created.
29523        l_rel_count := 0;
29524        l_prev_parent := l_init_sort_code;
29525        l_prev_child := l_init_sort_code;
29526        IF x_ins_tbl.count > 0 THEN
29527           For ins_tab in x_ins_tbl.FIRST .. x_ins_tbl.LAST
29528 	  Loop
29529 	     IF l_bom_sort_order_tbl(ins_tab).parent_sort_order = l_init_sort_code THEN   -- TOP MOST
29530 	        l_rel_count := l_rel_count + 1;
29531 		x_rel_tbl(l_rel_count).subject_id := ins_tab;
29532 		x_rel_tbl(l_rel_count).object_id := 0; -- Change this to Passed Instance ID for Ins creation
29533 		x_rel_tbl(l_rel_count).relationship_type_code := 'COMPONENT-OF';
29534 		l_prev_parent := l_init_sort_code;
29535 		l_prev_child := l_bom_sort_order_tbl(ins_tab).child_sort_order;
29536 	     ELSE
29537 	        IF l_bom_sort_order_tbl(ins_tab).parent_sort_order = l_prev_parent AND
29538 		   l_bom_sort_order_tbl(ins_tab).child_sort_order = l_prev_child THEN
29539 		   l_rel_count := l_rel_count + 1;
29540 		   x_rel_tbl(l_rel_count).subject_id := ins_tab;
29541 		   x_rel_tbl(l_rel_count).relationship_type_code := 'COMPONENT-OF';
29542 		   For assign_count in l_bom_sort_order_tbl.FIRST .. l_bom_sort_order_tbl.LAST
29543 		   Loop
29544 		      IF l_bom_sort_order_tbl(ins_tab).parent_sort_order =
29545                               l_bom_sort_order_tbl(assign_count).child_sort_order AND
29546 			 l_bom_sort_order_tbl(assign_count).mark_flag = 'N' THEN
29547 			 x_rel_tbl(l_rel_count).object_id := assign_count;
29548 			 l_prev_parent := l_bom_sort_order_tbl(ins_tab).parent_sort_order;
29549 			 l_prev_child := l_bom_sort_order_tbl(ins_tab).child_sort_order;
29550 			 l_temp_per_parent := l_temp_per_parent - 1;
29551 			 IF l_temp_per_parent = 0 THEN
29552 			    l_bom_sort_order_tbl(assign_count).mark_flag := 'Y'; -- Mark
29553 			    l_temp_per_parent := l_per_parent;
29554 			 END IF;
29555 			 EXIT;
29556 		      END IF;
29557 		   End Loop;
29558 		   --
29559 		ELSE -- New Parent Child combination
29560 		   l_parent_count := 0;
29561 		   For par_row in l_bom_sort_order_tbl.FIRST .. l_bom_sort_order_tbl.LAST
29562 		   Loop
29563 		      -- At the end of this loop, l_parent_count will have the # of occurance of
29564 		      -- the current instance's parent as a child in INS_TBL.
29565 		      IF l_bom_sort_order_tbl(par_row).child_sort_order = l_bom_sort_order_tbl(ins_tab).parent_sort_order THEN
29566 			 l_parent_count := l_bom_sort_order_tbl(par_row).child_occurance;
29567 			 l_bom_sort_order_tbl(par_row).mark_flag := 'N';
29568 			 -- Even though the occurance value will be same in all the above cases,
29569 			 -- we just make use of this loop to assign the mark_flag to put back 'N'
29570 		      END IF;
29571 		   End Loop;
29572 		   --
29573 		   IF l_parent_count > 0 THEN
29574 		      l_per_parent := l_bom_sort_order_tbl(ins_tab).child_occurance/l_parent_count;
29575 		      l_temp_per_parent := l_per_parent;
29576 		   END IF;
29577 		   --
29578 		   -- Use l_temp_per_parent to Loop thru' INS_TBL and use that slot as Object ID
29579 		   -- and Mark wherever the l_bom_sort_order_tbl(ins_tab).parent_sort_order (current_parent)
29580 		   -- is same as l_bom_sort_order_tbl(assign_count).child_sort_order (Child)
29581 		   --
29582 		   l_rel_count := l_rel_count + 1;
29583 		   x_rel_tbl(l_rel_count).subject_id := ins_tab;
29584 		   x_rel_tbl(l_rel_count).relationship_type_code := 'COMPONENT-OF';
29585 		   For assign_count in l_bom_sort_order_tbl.FIRST .. l_bom_sort_order_tbl.LAST
29586 		   Loop
29587 		      IF l_bom_sort_order_tbl(ins_tab).parent_sort_order =
29588                                 l_bom_sort_order_tbl(assign_count).child_sort_order AND
29589 		 	 l_bom_sort_order_tbl(assign_count).mark_flag = 'N' THEN
29590 			 x_rel_tbl(l_rel_count).object_id := assign_count;
29591 			 l_prev_parent := l_bom_sort_order_tbl(ins_tab).parent_sort_order;
29592 			 l_prev_child := l_bom_sort_order_tbl(ins_tab).child_sort_order;
29593 			 l_temp_per_parent := l_temp_per_parent - 1;
29594 			 IF l_temp_per_parent = 0 THEN
29595 			    l_bom_sort_order_tbl(assign_count).mark_flag := 'Y'; -- Mark
29596 			    l_temp_per_parent := l_per_parent;
29597 			 END IF;
29598 			 EXIT;
29599 		      END IF;
29600 		   End Loop;
29601 		   --
29602 	        END IF;
29603 	     END IF;
29604           End Loop;
29605        END IF; -- Check for x_ins_tbl count
29606     END IF; -- Check CSI_EXPLODE_BOM
29607     --
29608     IF x_ins_tbl.count > 0 THEN
29609        For ins_tab in l_bom_sort_order_tbl.FIRST .. l_bom_sort_order_tbl.LAST
29610        Loop
29611           csi_gen_utility_pvt.put_line(l_bom_sort_order_tbl(ins_tab).parent_sort_order ||'  '
29612                                      ||to_char(x_ins_tbl(ins_tab).inventory_item_id)||'  '
29613                                      ||to_char(x_ins_tbl(ins_tab).quantity)||'  '
29614                                      ||l_bom_sort_order_tbl(ins_tab).child_sort_order);
29615        End Loop;
29616     END IF;
29617     --
29618     IF x_rel_tbl.count > 0 THEN
29619        For rel_tab in x_rel_tbl.FIRST .. x_rel_tbl.LAST
29620        Loop
29621           csi_gen_utility_pvt.put_line(to_char(x_rel_tbl(rel_tab).subject_id) ||'  '
29622                                       ||to_char(x_rel_tbl(rel_tab).object_id));
29623        End Loop;
29624     END IF;
29625     --
29626     -- Create Instance and II Relationships if the p_create_instance is TRUE
29627     IF p_create_instance = FND_API.G_TRUE THEN
29628        IF x_ins_tbl.count > 0 THEN
29629           csi_gen_utility_pvt.put_line('Calling Copy Single Item Instance..');
29630           For ins_tab in x_ins_tbl.FIRST .. x_ins_tbl.LAST
29631           Loop
29632              l_source_instance_rec := x_ins_tbl(ins_tab);
29633              l_source_instance_rec.instance_id := p_source_instance_rec.instance_id;
29634 	     csi_item_instance_pvt.copy_single_item_instance
29635 	      (
29636 		p_api_version            =>  1.0
29637 	       ,p_commit                 =>  fnd_api.g_false
29638 	       ,p_init_msg_list          =>  fnd_api.g_true
29639 	       ,p_validation_level       =>  fnd_api.g_valid_level_full
29640 	       ,p_source_instance_rec    =>  l_source_instance_rec
29641 	       ,p_copy_ext_attribs       =>  fnd_api.g_true
29642 	       ,p_copy_org_assignments   =>  fnd_api.g_true
29643 	       ,p_copy_parties           =>  fnd_api.g_true
29644 	       ,p_copy_contacts          =>  fnd_api.g_true
29645 	       ,p_copy_accounts          =>  fnd_api.g_true
29646 	       ,p_copy_asset_assignments =>  fnd_api.g_true
29647 	       ,p_copy_pricing_attribs   =>  fnd_api.g_true
29648 	       ,p_call_from_split        =>  fnd_api.g_false
29649                ,p_call_from_bom_expl     =>  fnd_api.g_true
29650 	       ,p_txn_rec                =>  p_txn_rec
29651 	       ,x_new_instance_tbl       =>  x_new_ins_tbl
29652 	       ,x_return_status          =>  x_return_status
29653 	       ,x_msg_count              =>  x_msg_count
29654 	       ,x_msg_data               =>  x_msg_data
29655 	      );
29656 	      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29657                  csi_gen_utility_pvt.put_line('Error while trying to Copy the Instance..');
29658 		  FOR i in 1..x_msg_Count LOOP
29659 		    FND_MSG_PUB.Get(p_msg_index     => i,
29660 				    p_encoded       => 'F',
29661 				    p_data          => x_msg_data,
29662 				    p_msg_index_out => x_msg_index_out );
29663 		    csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29664 		 End LOOP;
29665 		 RAISE FND_API.G_EXC_ERROR;
29666              END IF;
29667              -- Assign the new instance_id to x_ins_tbl.instance_id
29668              x_ins_tbl(ins_tab).instance_id := x_new_ins_tbl(1).instance_id;
29669              --
29670              -- On success Populate the relationship_tbl with the new instance_id
29671              IF x_rel_tbl.count > 0 THEN
29672                 For rel_tab in x_rel_tbl.FIRST .. x_rel_tbl.LAST
29673                 Loop
29674                    IF x_rel_tbl(rel_tab).object_id = 0 THEN -- Top Most
29675                       x_rel_tbl(rel_tab).object_id := p_source_instance_rec.instance_id;
29676                    END IF;
29677                    --
29678                    IF x_rel_tbl(rel_tab).subject_id = ins_tab THEN
29679                       x_rel_tbl(rel_tab).subject_id := x_new_ins_tbl(1).instance_id;
29680                    END IF;
29681                    --
29682                    IF x_rel_tbl(rel_tab).object_id = ins_tab THEN
29683                       x_rel_tbl(rel_tab).object_id := x_new_ins_tbl(1).instance_id;
29684                    END IF;
29685                    --
29686                 End Loop;
29687              END IF;
29688           End Loop;
29689           --
29690           IF x_rel_tbl.count > 0 THEN
29691              csi_gen_utility_pvt.put_line('Calling II Relationship PUB...');
29692              csi_ii_relationships_pub.create_relationship
29693                 (
29694                   p_api_version         => 1.0,
29695                   p_commit              => fnd_api.g_false,
29696                   p_init_msg_list       => fnd_api.g_true,
29697                   p_validation_level    => fnd_api.g_valid_level_full,
29698                   p_relationship_tbl    => x_rel_tbl,
29699                   p_txn_rec             => p_txn_rec,
29700                   x_return_status       => x_return_status,
29701                   x_msg_count           => x_msg_count,
29702                   x_msg_data            => x_msg_data
29703                 );
29704 	      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29705                  csi_gen_utility_pvt.put_line('Error while trying to Create II Relationships..');
29706 		  FOR i in 1..x_msg_Count LOOP
29707 		    FND_MSG_PUB.Get(p_msg_index     => i,
29708 				    p_encoded       => 'F',
29709 				    p_data          => x_msg_data,
29710 				    p_msg_index_out => x_msg_index_out );
29711 		    csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29712 		 End LOOP;
29713 		 RAISE FND_API.G_EXC_ERROR;
29714              END IF;
29715           END IF;
29716        END IF; -- End of x_ins_tbl_count
29717     END IF; -- Check for p_create_instance
29718     --
29719     -- Assign this to the OUT parameters
29720     p_item_tbl := x_ins_tbl;
29721     p_item_relation_tbl := x_rel_tbl;
29722     --
29723     -- Delete records from bom_small_exp_temp
29724     DELETE FROM bom_small_expl_temp where group_id = l_group_id;
29725     --
29726     -- End of API body
29727     -- Standard check of p_commit
29728     IF FND_API.To_Boolean( p_commit ) THEN
29729        COMMIT WORK;
29730     END IF;
29731     -- Standard call to get message count and if count is  get message info.
29732     FND_MSG_PUB.Count_And_Get
29733         ( p_count       =>       x_msg_count ,
29734           p_data       =>       x_msg_data
29735         );
29736 EXCEPTION
29737     WHEN FND_API.G_EXC_ERROR THEN
29738             ROLLBACK TO explode_bom;
29739             x_return_status := FND_API.G_RET_STS_ERROR ;
29740             FND_MSG_PUB.Count_And_Get
29741                 (  p_count               =>      x_msg_count,
29742                     p_data                =>      x_msg_data
29743                  );
29744       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
29745             ROLLBACK TO explode_bom;
29746             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
29747             FND_MSG_PUB.Count_And_Get
29748                 (  p_count               =>      x_msg_count,
29749                     p_data                =>      x_msg_data
29750                  );
29751       WHEN OTHERS THEN
29752             ROLLBACK TO  explode_bom;
29753             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
29754               IF       FND_MSG_PUB.Check_Msg_Level
29755                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
29756             THEN
29757                     FND_MSG_PUB.Add_Exc_Msg
29758                     (      G_PKG_NAME            ,
29759                           l_api_name
29760                      );
29761             END IF;
29762             FND_MSG_PUB.Count_And_Get
29763                 (  p_count               =>      x_msg_count,
29764                     p_data                =>      x_msg_data
29765                 );
29766 END Explode_Bom;
29767 --
29768 /*---------------------------------------------------*/
29769 /* procedure name: get_instance_hist                 */
29770 /* description   : Retreive history transactions     */
29771 /*                 for an instance                   */
29772 /*---------------------------------------------------*/
29773 
29774 PROCEDURE get_instance_hist
29775 ( p_api_version           IN  NUMBER
29776  ,p_commit                IN  VARCHAR2
29777  ,p_init_msg_list         IN  VARCHAR2
29778  ,p_validation_level      IN  NUMBER
29779  ,p_transaction_id        IN  NUMBER
29780  ,x_instance_history_tbl  OUT NOCOPY csi_datastructures_pub.instance_history_tbl
29781  ,x_return_status         OUT NOCOPY VARCHAR2
29782  ,x_msg_count             OUT NOCOPY NUMBER
29783  ,x_msg_data              OUT NOCOPY VARCHAR2
29784  )  IS
29785 CURSOR txn_hist_csr (p_txn_id IN NUMBER) IS
29786    SELECT *
29787    FROM   csi_item_instances_h
29788    WHERE  transaction_id = p_txn_id;
29789 
29790 l_old_ins_header_rec  csi_datastructures_pub.instance_header_rec;
29791 l_new_ins_header_rec  csi_datastructures_pub.instance_header_rec;
29792 l_old_ins_header_tbl  csi_datastructures_pub.instance_header_tbl;
29793 l_new_ins_header_tbl  csi_datastructures_pub.instance_header_tbl;
29794 l_ins_header_rec      csi_datastructures_pub.instance_history_rec;
29795 l_temp_ins_rec        csi_datastructures_pub.instance_history_rec;
29796 l_temp_hdr_rec        csi_datastructures_pub.instance_header_rec;
29797 l_api_name            CONSTANT   VARCHAR2(30) := 'get_instance_hist';
29798 l_api_version         CONSTANT   NUMBER         := 1.0;
29799 i                     NUMBER := 0;
29800 l_time_stamp          DATE;
29801 l_instance_rec        csi_datastructures_pub.instance_header_rec;
29802 l_party_header_tbl    csi_datastructures_pub.party_header_tbl;
29803 l_account_header_tbl  csi_datastructures_pub.party_account_header_tbl;
29804 l_org_header_tbl      csi_datastructures_pub.org_units_header_tbl;
29805 l_pricing_attrib_tbl  csi_datastructures_pub.pricing_attribs_tbl;
29806 l_ext_attrib_tbl      csi_datastructures_pub.extend_attrib_values_tbl;
29807 l_ext_attrib_def_tbl  csi_datastructures_pub.extend_attrib_tbl;
29808 l_asset_header_tbl    csi_datastructures_pub.instance_asset_header_tbl;
29809 BEGIN
29810         /*
29811         IF fnd_api.to_boolean(p_commit)
29812         THEN
29813            SAVEPOINT    get_instance_hist;
29814         END IF;
29815         */
29816 
29817         -- Standard call to check for call compatibility.
29818         IF NOT FND_API.Compatible_API_Call (l_api_version       ,
29819                                                     p_api_version       ,
29820                                                 l_api_name              ,
29821                                                 G_PKG_NAME              )
29822         THEN
29823                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
29824         END IF;
29825 
29826     -- Initialize message list if p_init_msg_list is set to TRUE.
29827         IF FND_API.to_Boolean( p_init_msg_list ) THEN
29828                 FND_MSG_PUB.initialize;
29829         END IF;
29830 
29831         --  Initialize API return status to success
29832         x_return_status := FND_API.G_RET_STS_SUCCESS;
29833 
29834    /***** srramakr commented for bug # 3304439
29835    -- Check for the profile option and enable trace
29836    IF (fnd_profile.value('CSI_ENABLE_SQL_TRACE') = 'Y') THEN
29837                    dbms_session.set_sql_trace(TRUE);
29838    END IF;
29839    -- End enable trace
29840    ****/
29841 
29842    -- Start API body
29843    --
29844 
29845 
29846 FOR l_hist_csr IN txn_hist_csr (p_transaction_id)
29847 LOOP
29848           l_ins_header_rec := l_temp_ins_rec;
29849    -- Added for bug 3439348
29850           l_old_ins_header_rec := l_temp_hdr_rec;
29851           l_new_ins_header_rec := l_temp_hdr_rec;
29852    -- End addition for bug 3439348
29853 
29854           --start of code for bug 4754569--
29855           l_old_ins_header_rec.instance_id := l_hist_csr.instance_id;
29856           l_new_ins_header_rec.instance_id := l_hist_csr.instance_id;
29857           --end of code for bug 4754569--
29858 
29859           IF NVL(l_hist_csr.old_instance_number,fnd_api.g_miss_char) = NVL(l_hist_csr.new_instance_number,fnd_api.g_miss_char)
29860           THEN
29861             l_old_ins_header_rec.instance_number := NULL;
29862             l_new_ins_header_rec.instance_number := NULL;
29863           ELSE
29864             l_old_ins_header_rec.instance_number := l_hist_csr.old_instance_number;
29865             l_new_ins_header_rec.instance_number := l_hist_csr.new_instance_number;
29866           END IF;
29867 
29868           IF NVL(l_hist_csr.old_external_reference,fnd_api.g_miss_char) = NVL(l_hist_csr.new_external_reference,fnd_api.g_miss_char)
29869           THEN
29870             l_old_ins_header_rec.external_reference := NULL;
29871             l_new_ins_header_rec.external_reference := NULL;
29872           ELSE
29873             l_old_ins_header_rec.external_reference := l_hist_csr.old_external_reference;
29874             l_new_ins_header_rec.external_reference := l_hist_csr.new_external_reference;
29875           END IF;
29876 
29877           IF NVL(l_hist_csr.old_inventory_item_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_inventory_item_id,fnd_api.g_miss_num)
29878           THEN
29879             l_old_ins_header_rec.inventory_item_id := NULL;
29880             l_new_ins_header_rec.inventory_item_id := NULL;
29881           ELSE
29882             l_old_ins_header_rec.inventory_item_id := l_hist_csr.old_inventory_item_id;
29883             l_new_ins_header_rec.inventory_item_id := l_hist_csr.new_inventory_item_id;
29884           END IF;
29885 
29886           IF NVL(l_hist_csr.old_inventory_revision,fnd_api.g_miss_char) = NVL(l_hist_csr.new_inventory_revision,fnd_api.g_miss_char)
29887           THEN
29888             l_old_ins_header_rec.inventory_revision := NULL;
29889             l_new_ins_header_rec.inventory_revision := NULL;
29890           ELSE
29891             l_old_ins_header_rec.inventory_revision := l_hist_csr.old_inventory_revision;
29892             l_new_ins_header_rec.inventory_revision := l_hist_csr.new_inventory_revision;
29893           END IF;
29894 
29895           IF NVL(l_hist_csr.old_inv_master_organization_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_inv_master_organization_id,fnd_api.g_miss_num)
29896           THEN
29897             l_old_ins_header_rec.inv_master_organization_id := NULL;
29898             l_new_ins_header_rec.inv_master_organization_id := NULL;
29899           ELSE
29900             l_old_ins_header_rec.inv_master_organization_id := l_hist_csr.old_inv_master_organization_id;
29901             l_new_ins_header_rec.inv_master_organization_id := l_hist_csr.new_inv_master_organization_id;
29902           END IF;
29903 
29904           IF NVL(l_hist_csr.old_serial_number,fnd_api.g_miss_char) = NVL(l_hist_csr.new_serial_number,fnd_api.g_miss_char)
29905           THEN
29906             l_old_ins_header_rec.serial_number := NULL;
29907             l_new_ins_header_rec.serial_number := NULL;
29908           ELSE
29909             l_old_ins_header_rec.serial_number := l_hist_csr.old_serial_number;
29910             l_new_ins_header_rec.serial_number := l_hist_csr.new_serial_number;
29911           END IF;
29912 
29913           IF NVL(l_hist_csr.old_mfg_serial_number_flag,fnd_api.g_miss_char) = NVL(l_hist_csr.new_mfg_serial_number_flag,fnd_api.g_miss_char)
29914           THEN
29915             l_old_ins_header_rec.mfg_serial_number_flag := NULL;
29916             l_new_ins_header_rec.mfg_serial_number_flag := NULL;
29917           ELSE
29918             l_old_ins_header_rec.mfg_serial_number_flag := l_hist_csr.old_mfg_serial_number_flag;
29919             l_new_ins_header_rec.mfg_serial_number_flag := l_hist_csr.new_mfg_serial_number_flag;
29920           END IF;
29921 
29922           IF NVL(l_hist_csr.old_lot_number,fnd_api.g_miss_char) = NVL(l_hist_csr.new_lot_number,fnd_api.g_miss_char)
29923           THEN
29924             l_old_ins_header_rec.lot_number := NULL;
29925             l_new_ins_header_rec.lot_number := NULL;
29926           ELSE
29927             l_old_ins_header_rec.lot_number := l_hist_csr.old_lot_number;
29928             l_new_ins_header_rec.lot_number := l_hist_csr.new_lot_number;
29929           END IF;
29930 
29931           IF NVL(l_hist_csr.old_quantity,fnd_api.g_miss_num) = NVL(l_hist_csr.new_quantity,fnd_api.g_miss_num)
29932           THEN
29933             l_old_ins_header_rec.quantity := NULL;
29934             l_new_ins_header_rec.quantity := NULL;
29935           ELSE
29936             l_old_ins_header_rec.quantity := l_hist_csr.old_quantity;
29937             l_new_ins_header_rec.quantity := l_hist_csr.new_quantity;
29938           END IF;
29939 
29940           IF NVL(l_hist_csr.old_unit_of_measure,fnd_api.g_miss_char) = NVL(l_hist_csr.new_unit_of_measure,fnd_api.g_miss_char)
29941           THEN
29942             l_old_ins_header_rec.unit_of_measure := NULL;
29943             l_new_ins_header_rec.unit_of_measure := NULL;
29944           ELSE
29945             l_old_ins_header_rec.unit_of_measure := l_hist_csr.old_unit_of_measure;
29946             l_new_ins_header_rec.unit_of_measure := l_hist_csr.new_unit_of_measure;
29947           END IF;
29948 
29949           IF NVL(l_hist_csr.old_accounting_class_code,fnd_api.g_miss_char) = NVL(l_hist_csr.new_accounting_class_code,fnd_api.g_miss_char)
29950           THEN
29951             l_old_ins_header_rec.accounting_class_code := NULL;
29952             l_new_ins_header_rec.accounting_class_code := NULL;
29953           ELSE
29954             l_old_ins_header_rec.accounting_class_code := l_hist_csr.old_accounting_class_code;
29955             l_new_ins_header_rec.accounting_class_code := l_hist_csr.new_accounting_class_code;
29956           END IF;
29957 
29958           IF NVL(l_hist_csr.old_instance_condition_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_instance_condition_id,fnd_api.g_miss_num)
29959           THEN
29960             l_old_ins_header_rec.instance_condition_id := NULL;
29961             l_new_ins_header_rec.instance_condition_id := NULL;
29962           ELSE
29963             l_old_ins_header_rec.instance_condition_id := l_hist_csr.old_instance_condition_id;
29964             l_new_ins_header_rec.instance_condition_id := l_hist_csr.new_instance_condition_id;
29965           END IF;
29966 
29967           IF NVL(l_hist_csr.old_instance_status_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_instance_status_id,fnd_api.g_miss_num)
29968           THEN
29969             l_old_ins_header_rec.instance_status_id := NULL;
29970             l_new_ins_header_rec.instance_status_id := NULL;
29971           ELSE
29972             l_old_ins_header_rec.instance_status_id := l_hist_csr.old_instance_status_id;
29973             l_new_ins_header_rec.instance_status_id := l_hist_csr.new_instance_status_id;
29974           END IF;
29975 
29976           IF NVL(l_hist_csr.old_customer_view_flag,fnd_api.g_miss_char) = NVL(l_hist_csr.new_customer_view_flag,fnd_api.g_miss_char)
29977           THEN
29978             l_old_ins_header_rec.customer_view_flag := NULL;
29979             l_new_ins_header_rec.customer_view_flag := NULL;
29980           ELSE
29981             l_old_ins_header_rec.customer_view_flag := l_hist_csr.old_customer_view_flag;
29982             l_new_ins_header_rec.customer_view_flag := l_hist_csr.new_customer_view_flag;
29983           END IF;
29984 
29985           IF NVL(l_hist_csr.old_merchant_view_flag,fnd_api.g_miss_char) = NVL(l_hist_csr.new_merchant_view_flag,fnd_api.g_miss_char)
29986           THEN
29987             l_old_ins_header_rec.merchant_view_flag := NULL;
29988             l_new_ins_header_rec.merchant_view_flag := NULL;
29989           ELSE
29990             l_old_ins_header_rec.merchant_view_flag := l_hist_csr.old_merchant_view_flag;
29991             l_new_ins_header_rec.merchant_view_flag := l_hist_csr.new_merchant_view_flag;
29992           END IF;
29993 
29994           IF NVL(l_hist_csr.old_sellable_flag,fnd_api.g_miss_char) = NVL(l_hist_csr.new_sellable_flag,fnd_api.g_miss_char)
29995           THEN
29996             l_old_ins_header_rec.sellable_flag := NULL;
29997             l_new_ins_header_rec.sellable_flag := NULL;
29998           ELSE
29999             l_old_ins_header_rec.sellable_flag := l_hist_csr.old_sellable_flag;
30000             l_new_ins_header_rec.sellable_flag := l_hist_csr.new_sellable_flag;
30001           END IF;
30002 
30003           IF NVL(l_hist_csr.old_system_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_system_id,fnd_api.g_miss_num)
30004           THEN
30005             l_old_ins_header_rec.system_id := NULL;
30006             l_new_ins_header_rec.system_id := NULL;
30007           ELSE
30008             l_old_ins_header_rec.system_id := l_hist_csr.old_system_id;
30009             l_new_ins_header_rec.system_id := l_hist_csr.new_system_id;
30010           END IF;
30011 
30012           IF NVL(l_hist_csr.old_instance_type_code,fnd_api.g_miss_char) = NVL(l_hist_csr.new_instance_type_code,fnd_api.g_miss_char)
30013           THEN
30014             l_old_ins_header_rec.instance_type_code := NULL;
30015             l_new_ins_header_rec.instance_type_code := NULL;
30016           ELSE
30017             l_old_ins_header_rec.instance_type_code := l_hist_csr.old_instance_type_code;
30018             l_new_ins_header_rec.instance_type_code := l_hist_csr.new_instance_type_code;
30019           END IF;
30020 
30021           IF NVL(l_hist_csr.old_active_start_date,fnd_api.g_miss_date) = NVL(l_hist_csr.new_active_start_date,fnd_api.g_miss_date)
30022           THEN
30023             l_old_ins_header_rec.active_start_date := NULL;
30024             l_new_ins_header_rec.active_start_date := NULL;
30025           ELSE
30026             l_old_ins_header_rec.active_start_date := l_hist_csr.old_active_start_date;
30027             l_new_ins_header_rec.active_start_date := l_hist_csr.new_active_start_date;
30028           END IF;
30029 
30030           IF NVL(l_hist_csr.old_active_end_date,fnd_api.g_miss_date) = NVL(l_hist_csr.new_active_end_date,fnd_api.g_miss_date)
30031           THEN
30032             l_old_ins_header_rec.active_end_date := NULL;
30033             l_new_ins_header_rec.active_end_date := NULL;
30034           ELSE
30035             l_old_ins_header_rec.active_end_date := l_hist_csr.old_active_end_date;
30036             l_new_ins_header_rec.active_end_date := l_hist_csr.new_active_end_date;
30037           END IF;
30038 
30039        -- Added for bug 2671179
30040           IF NVL(l_hist_csr.old_install_date,fnd_api.g_miss_date) = NVL(l_hist_csr.new_install_date,fnd_api.g_miss_date)
30041           THEN
30042             l_old_ins_header_rec.install_date := NULL;
30043             l_new_ins_header_rec.install_date := NULL;
30044           ELSE
30045             l_old_ins_header_rec.install_date := l_hist_csr.old_install_date;
30046             l_new_ins_header_rec.install_date := l_hist_csr.new_install_date;
30047           END IF;
30048 
30049           IF NVL(l_hist_csr.old_return_by_date,fnd_api.g_miss_date) = NVL(l_hist_csr.new_return_by_date,fnd_api.g_miss_date)
30050           THEN
30051             l_old_ins_header_rec.return_by_date := NULL;
30052             l_new_ins_header_rec.return_by_date := NULL;
30053           ELSE
30054             l_old_ins_header_rec.return_by_date := l_hist_csr.old_return_by_date;
30055             l_new_ins_header_rec.return_by_date := l_hist_csr.new_return_by_date;
30056           END IF;
30057 
30058           IF NVL(l_hist_csr.old_actual_return_date,fnd_api.g_miss_date) = NVL(l_hist_csr.new_actual_return_date,fnd_api.g_miss_date)
30059           THEN
30060             l_old_ins_header_rec.actual_return_date := NULL;
30061             l_new_ins_header_rec.actual_return_date := NULL;
30062           ELSE
30063             l_old_ins_header_rec.actual_return_date := l_hist_csr.old_actual_return_date;
30064             l_new_ins_header_rec.actual_return_date := l_hist_csr.new_actual_return_date;
30065           END IF;
30066        -- End addition for bug 2671179
30067 
30068           IF NVL(l_hist_csr.old_location_type_code,fnd_api.g_miss_char) = NVL(l_hist_csr.new_location_type_code,fnd_api.g_miss_char)
30069           THEN
30070             l_old_ins_header_rec.location_type_code := NULL;
30071             l_new_ins_header_rec.location_type_code := NULL;
30072           ELSE
30073             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30074             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30075           END IF;
30076 
30077           IF NVL(l_hist_csr.old_location_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_location_id,fnd_api.g_miss_num)
30078           THEN
30079             l_old_ins_header_rec.location_id := NULL;
30080             l_new_ins_header_rec.location_id := NULL;
30081           ELSE
30082             l_old_ins_header_rec.location_id := l_hist_csr.old_location_id;
30083             l_new_ins_header_rec.location_id := l_hist_csr.new_location_id;
30084             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30085             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30086           END IF;
30087 
30088           IF NVL(l_hist_csr.old_inv_organization_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_inv_organization_id,fnd_api.g_miss_num)
30089           THEN
30090             l_old_ins_header_rec.inv_organization_id := NULL;
30091             l_new_ins_header_rec.inv_organization_id := NULL;
30092           ELSE
30093             l_old_ins_header_rec.inv_organization_id := l_hist_csr.old_inv_organization_id;
30094             l_new_ins_header_rec.inv_organization_id := l_hist_csr.new_inv_organization_id;
30095             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30096             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30097           END IF;
30098 
30099           IF NVL(l_hist_csr.old_inv_subinventory_name,fnd_api.g_miss_char) = NVL(l_hist_csr.new_inv_subinventory_name,fnd_api.g_miss_char)
30100           THEN
30101             l_old_ins_header_rec.inv_subinventory_name := NULL;
30102             l_new_ins_header_rec.inv_subinventory_name := NULL;
30103           ELSE
30104             l_old_ins_header_rec.inv_subinventory_name := l_hist_csr.old_inv_subinventory_name;
30105             l_new_ins_header_rec.inv_subinventory_name := l_hist_csr.new_inv_subinventory_name;
30106           END IF;
30107 
30108           IF NVL(l_hist_csr.old_inv_locator_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_inv_locator_id,fnd_api.g_miss_num)
30109           THEN
30110             l_old_ins_header_rec.inv_locator_id := NULL;
30111             l_new_ins_header_rec.inv_locator_id := NULL;
30112           ELSE
30113             l_old_ins_header_rec.inv_locator_id := l_hist_csr.old_inv_locator_id;
30114             l_new_ins_header_rec.inv_locator_id := l_hist_csr.new_inv_locator_id;
30115           END IF;
30116 
30117           IF NVL(l_hist_csr.old_pa_project_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_pa_project_id,fnd_api.g_miss_num)
30118           THEN
30119             l_old_ins_header_rec.pa_project_id := NULL;
30120             l_new_ins_header_rec.pa_project_id := NULL;
30121           ELSE
30122             l_old_ins_header_rec.pa_project_id := l_hist_csr.old_pa_project_id;
30123             l_new_ins_header_rec.pa_project_id := l_hist_csr.new_pa_project_id;
30124             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30125             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30126           END IF;
30127 
30128           IF NVL(l_hist_csr.old_pa_project_task_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_pa_project_task_id,fnd_api.g_miss_num)
30129           THEN
30130             l_old_ins_header_rec.pa_project_task_id := NULL;
30131             l_new_ins_header_rec.pa_project_task_id := NULL;
30132           ELSE
30133             l_old_ins_header_rec.pa_project_task_id := l_hist_csr.old_pa_project_task_id;
30134             l_new_ins_header_rec.pa_project_task_id := l_hist_csr.new_pa_project_task_id;
30135             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30136             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30137           END IF;
30138 
30139           IF NVL(l_hist_csr.old_in_transit_order_line_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_in_transit_order_line_id,fnd_api.g_miss_num)
30140           THEN
30141             l_old_ins_header_rec.in_transit_order_line_id := NULL;
30142             l_new_ins_header_rec.in_transit_order_line_id := NULL;
30143           ELSE
30144             l_old_ins_header_rec.in_transit_order_line_id := l_hist_csr.old_in_transit_order_line_id;
30145             l_new_ins_header_rec.in_transit_order_line_id := l_hist_csr.new_in_transit_order_line_id;
30146             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30147             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30148           END IF;
30149 
30150           IF NVL(l_hist_csr.old_wip_job_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_wip_job_id,fnd_api.g_miss_num)
30151           THEN
30152             l_old_ins_header_rec.wip_job_id := NULL;
30153             l_new_ins_header_rec.wip_job_id := NULL;
30154           ELSE
30155             l_old_ins_header_rec.wip_job_id := l_hist_csr.old_wip_job_id;
30156             l_new_ins_header_rec.wip_job_id := l_hist_csr.new_wip_job_id;
30157             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30158             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30159           END IF;
30160 
30161           IF NVL(l_hist_csr.old_po_order_line_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_po_order_line_id,fnd_api.g_miss_num)
30162           THEN
30163             l_old_ins_header_rec.po_order_line_id := NULL;
30164             l_new_ins_header_rec.po_order_line_id := NULL;
30165           ELSE
30166             l_old_ins_header_rec.po_order_line_id := l_hist_csr.old_po_order_line_id;
30167             l_new_ins_header_rec.po_order_line_id := l_hist_csr.new_po_order_line_id;
30168           END IF;
30169 
30170           IF NVL(l_hist_csr.old_oe_agreement_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_oe_agreement_id,fnd_api.g_miss_num)
30171           THEN
30172             l_old_ins_header_rec.last_oe_agreement_id := NULL;
30173             l_new_ins_header_rec.last_oe_agreement_id := NULL;
30174           ELSE
30175             l_old_ins_header_rec.last_oe_agreement_id := l_hist_csr.old_oe_agreement_id;
30176             l_new_ins_header_rec.last_oe_agreement_id := l_hist_csr.new_oe_agreement_id;
30177           END IF;
30178 
30179           IF NVL(l_hist_csr.old_LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num) = NVL(l_hist_csr.new_LAST_OE_ORDER_LINE_ID,fnd_api.g_miss_num)
30180           THEN
30181             l_old_ins_header_rec.LAST_OE_ORDER_LINE_ID := NULL;
30182             l_new_ins_header_rec.LAST_OE_ORDER_LINE_ID := NULL;
30183           ELSE
30184             l_old_ins_header_rec.LAST_OE_ORDER_LINE_ID := l_hist_csr.old_LAST_OE_ORDER_LINE_ID;
30185             l_new_ins_header_rec.LAST_OE_ORDER_LINE_ID := l_hist_csr.new_LAST_OE_ORDER_LINE_ID;
30186           END IF;
30187 
30188           IF NVL(l_hist_csr.old_LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num) = NVL(l_hist_csr.new_LAST_OE_RMA_LINE_ID,fnd_api.g_miss_num)
30189           THEN
30190             l_old_ins_header_rec.LAST_OE_RMA_LINE_ID := NULL;
30191             l_new_ins_header_rec.LAST_OE_RMA_LINE_ID := NULL;
30192           ELSE
30193             l_old_ins_header_rec.LAST_OE_RMA_LINE_ID := l_hist_csr.old_LAST_OE_RMA_LINE_ID;
30194             l_new_ins_header_rec.LAST_OE_RMA_LINE_ID := l_hist_csr.new_LAST_OE_RMA_LINE_ID;
30195           END IF;
30196 
30197           IF NVL(l_hist_csr.old_LAST_WIP_JOB_ID,fnd_api.g_miss_num) = NVL(l_hist_csr.new_LAST_WIP_JOB_ID,fnd_api.g_miss_num)
30198           THEN
30199             l_old_ins_header_rec.LAST_WIP_JOB_ID := NULL;
30200             l_new_ins_header_rec.LAST_WIP_JOB_ID := NULL;
30201           ELSE
30202             l_old_ins_header_rec.LAST_WIP_JOB_ID := l_hist_csr.old_LAST_WIP_JOB_ID;
30203             l_new_ins_header_rec.LAST_WIP_JOB_ID := l_hist_csr.new_LAST_WIP_JOB_ID;
30204           END IF;
30205 
30206           IF NVL(l_hist_csr.old_LAST_PO_PO_LINE_ID,fnd_api.g_miss_num) = NVL(l_hist_csr.new_LAST_PO_PO_LINE_ID,fnd_api.g_miss_num)
30207           THEN
30208             l_old_ins_header_rec.LAST_PO_PO_LINE_ID := NULL;
30209             l_new_ins_header_rec.LAST_PO_PO_LINE_ID := NULL;
30210           ELSE
30211             l_old_ins_header_rec.LAST_PO_PO_LINE_ID := l_hist_csr.old_LAST_PO_PO_LINE_ID;
30212             l_new_ins_header_rec.LAST_PO_PO_LINE_ID := l_hist_csr.new_LAST_PO_PO_LINE_ID;
30213           END IF;
30214 
30215           IF NVL(l_hist_csr.old_LAST_PA_PROJECT_ID,fnd_api.g_miss_num) = NVL(l_hist_csr.new_LAST_PA_PROJECT_ID,fnd_api.g_miss_num)
30216           THEN
30217             l_old_ins_header_rec.LAST_PA_PROJECT_ID := NULL;
30218             l_new_ins_header_rec.LAST_PA_PROJECT_ID := NULL;
30219           ELSE
30220             l_old_ins_header_rec.LAST_PA_PROJECT_ID := l_hist_csr.old_LAST_PA_PROJECT_ID;
30221             l_new_ins_header_rec.LAST_PA_PROJECT_ID := l_hist_csr.new_LAST_PA_PROJECT_ID;
30222           END IF;
30223 
30224           IF NVL(l_hist_csr.old_LAST_PA_TASK_ID,fnd_api.g_miss_num) = NVL(l_hist_csr.new_LAST_PA_TASK_ID,fnd_api.g_miss_num)
30225           THEN
30226             l_old_ins_header_rec.LAST_PA_TASK_ID := NULL;
30227             l_new_ins_header_rec.LAST_PA_TASK_ID := NULL;
30228           ELSE
30229             l_old_ins_header_rec.LAST_PA_TASK_ID := l_hist_csr.old_LAST_PA_TASK_ID;
30230             l_new_ins_header_rec.LAST_PA_TASK_ID := l_hist_csr.new_LAST_PA_TASK_ID;
30231           END IF;
30232 
30233           IF NVL(l_hist_csr.old_LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num) = NVL(l_hist_csr.new_LAST_TXN_LINE_DETAIL_ID,fnd_api.g_miss_num)
30234           THEN
30235             l_old_ins_header_rec.LAST_TXN_LINE_DETAIL_ID := NULL;
30236             l_new_ins_header_rec.LAST_TXN_LINE_DETAIL_ID := NULL;
30237           ELSE
30238             l_old_ins_header_rec.LAST_TXN_LINE_DETAIL_ID := l_hist_csr.old_LAST_TXN_LINE_DETAIL_ID;
30239             l_new_ins_header_rec.LAST_TXN_LINE_DETAIL_ID := l_hist_csr.new_LAST_TXN_LINE_DETAIL_ID;
30240           END IF;
30241 
30242           IF NVL(l_hist_csr.old_LAST_OE_PO_NUMBER,fnd_api.g_miss_char) = NVL(l_hist_csr.new_LAST_OE_PO_NUMBER,fnd_api.g_miss_char)
30243           THEN
30244             l_old_ins_header_rec.LAST_OE_PO_NUMBER := NULL;
30245             l_new_ins_header_rec.LAST_OE_PO_NUMBER := NULL;
30246           ELSE
30247             l_old_ins_header_rec.LAST_OE_PO_NUMBER := l_hist_csr.old_LAST_OE_PO_NUMBER;
30248             l_new_ins_header_rec.LAST_OE_PO_NUMBER := l_hist_csr.new_LAST_OE_PO_NUMBER;
30249           END IF;
30250 
30251           IF NVL(l_hist_csr.old_completeness_flag,fnd_api.g_miss_char) = NVL(l_hist_csr.new_completeness_flag,fnd_api.g_miss_char)
30252           THEN
30253             l_old_ins_header_rec.completeness_flag := NULL;
30254             l_new_ins_header_rec.completeness_flag := NULL;
30255           ELSE
30256             l_old_ins_header_rec.completeness_flag := l_hist_csr.old_completeness_flag;
30257             l_new_ins_header_rec.completeness_flag := l_hist_csr.new_completeness_flag;
30258           END IF;
30259 
30260           IF NVL(l_hist_csr.old_context,fnd_api.g_miss_char) = NVL(l_hist_csr.new_context,fnd_api.g_miss_char)
30261           THEN
30262             l_old_ins_header_rec.context := NULL;
30263             l_new_ins_header_rec.context := NULL;
30264           ELSE
30265             l_old_ins_header_rec.context := l_hist_csr.old_context;
30266             l_new_ins_header_rec.context := l_hist_csr.new_context;
30267           END IF;
30268 
30269           IF NVL(l_hist_csr.old_attribute1,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute1,fnd_api.g_miss_char)
30270           THEN
30271             l_old_ins_header_rec.attribute1 := NULL;
30272             l_new_ins_header_rec.attribute1 := NULL;
30273           ELSE
30274             l_old_ins_header_rec.attribute1 := l_hist_csr.old_attribute1;
30275             l_new_ins_header_rec.attribute1 := l_hist_csr.new_attribute1;
30276           END IF;
30277 
30278           IF NVL(l_hist_csr.old_attribute2,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute2,fnd_api.g_miss_char)
30279           THEN
30280             l_old_ins_header_rec.attribute2 := NULL;
30281             l_new_ins_header_rec.attribute2 := NULL;
30282           ELSE
30283             l_old_ins_header_rec.attribute2 := l_hist_csr.old_attribute2;
30284             l_new_ins_header_rec.attribute2 := l_hist_csr.new_attribute2;
30285           END IF;
30286 
30287           IF NVL(l_hist_csr.old_attribute3,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute3,fnd_api.g_miss_char)
30288           THEN
30289             l_old_ins_header_rec.attribute3 := NULL;
30290             l_new_ins_header_rec.attribute3 := NULL;
30291           ELSE
30292             l_old_ins_header_rec.attribute3 := l_hist_csr.old_attribute3;
30293             l_new_ins_header_rec.attribute3 := l_hist_csr.new_attribute3;
30294           END IF;
30295 
30296           IF NVL(l_hist_csr.old_attribute4,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute4,fnd_api.g_miss_char)
30297           THEN
30298             l_old_ins_header_rec.attribute4 := NULL;
30299             l_new_ins_header_rec.attribute4 := NULL;
30300           ELSE
30301             l_old_ins_header_rec.attribute4 := l_hist_csr.old_attribute4;
30302             l_new_ins_header_rec.attribute4 := l_hist_csr.new_attribute4;
30303           END IF;
30304 
30305           IF NVL(l_hist_csr.old_attribute5,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute5,fnd_api.g_miss_char)
30306           THEN
30307             l_old_ins_header_rec.attribute5 := NULL;
30308             l_new_ins_header_rec.attribute5 := NULL;
30309           ELSE
30310             l_old_ins_header_rec.attribute5 := l_hist_csr.old_attribute5;
30311             l_new_ins_header_rec.attribute5 := l_hist_csr.new_attribute5;
30312           END IF;
30313 
30314           IF NVL(l_hist_csr.old_attribute6,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute6,fnd_api.g_miss_char)
30315           THEN
30316             l_old_ins_header_rec.attribute6 := NULL;
30317             l_new_ins_header_rec.attribute6 := NULL;
30318           ELSE
30319             l_old_ins_header_rec.attribute6 := l_hist_csr.old_attribute6;
30320             l_new_ins_header_rec.attribute6 := l_hist_csr.new_attribute6;
30321           END IF;
30322 
30323           IF NVL(l_hist_csr.old_attribute7,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute7,fnd_api.g_miss_char)
30324           THEN
30325             l_old_ins_header_rec.attribute7 := NULL;
30326             l_new_ins_header_rec.attribute7 := NULL;
30327           ELSE
30328             l_old_ins_header_rec.attribute7 := l_hist_csr.old_attribute7;
30329             l_new_ins_header_rec.attribute7 := l_hist_csr.new_attribute7;
30330           END IF;
30331 
30332           IF NVL(l_hist_csr.old_attribute8,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute8,fnd_api.g_miss_char)
30333           THEN
30334             l_old_ins_header_rec.attribute8 := NULL;
30335             l_new_ins_header_rec.attribute8 := NULL;
30336           ELSE
30337             l_old_ins_header_rec.attribute8 := l_hist_csr.old_attribute8;
30338             l_new_ins_header_rec.attribute8 := l_hist_csr.new_attribute8;
30339           END IF;
30340 
30341           IF NVL(l_hist_csr.old_attribute9,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute9,fnd_api.g_miss_char)
30342           THEN
30343             l_old_ins_header_rec.attribute9 := NULL;
30344             l_new_ins_header_rec.attribute9 := NULL;
30345           ELSE
30346             l_old_ins_header_rec.attribute9 := l_hist_csr.old_attribute9;
30347             l_new_ins_header_rec.attribute9 := l_hist_csr.new_attribute9;
30348           END IF;
30349 
30350           IF NVL(l_hist_csr.old_attribute10,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute10,fnd_api.g_miss_char)
30351           THEN
30352             l_old_ins_header_rec.attribute10 := NULL;
30353             l_new_ins_header_rec.attribute10 := NULL;
30354           ELSE
30355             l_old_ins_header_rec.attribute10 := l_hist_csr.old_attribute10;
30356             l_new_ins_header_rec.attribute10 := l_hist_csr.new_attribute10;
30357           END IF;
30358 
30359           IF NVL(l_hist_csr.old_attribute11,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute11,fnd_api.g_miss_char)
30360           THEN
30361             l_old_ins_header_rec.attribute11 := NULL;
30362             l_new_ins_header_rec.attribute11 := NULL;
30363           ELSE
30364             l_old_ins_header_rec.attribute11 := l_hist_csr.old_attribute11;
30365             l_new_ins_header_rec.attribute11 := l_hist_csr.new_attribute11;
30366           END IF;
30367 
30368           IF NVL(l_hist_csr.old_attribute12,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute12,fnd_api.g_miss_char)
30369           THEN
30370             l_old_ins_header_rec.attribute12 := NULL;
30371             l_new_ins_header_rec.attribute12 := NULL;
30372           ELSE
30373             l_old_ins_header_rec.attribute12 := l_hist_csr.old_attribute12;
30374             l_new_ins_header_rec.attribute12 := l_hist_csr.new_attribute12;
30375           END IF;
30376 
30377           IF NVL(l_hist_csr.old_attribute13,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute13,fnd_api.g_miss_char)
30378           THEN
30379             l_old_ins_header_rec.attribute13 := NULL;
30380             l_new_ins_header_rec.attribute13 := NULL;
30381           ELSE
30382             l_old_ins_header_rec.attribute13 := l_hist_csr.old_attribute13;
30383             l_new_ins_header_rec.attribute13 := l_hist_csr.new_attribute13;
30384           END IF;
30385 
30386           IF NVL(l_hist_csr.old_attribute14,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute14,fnd_api.g_miss_char)
30387           THEN
30388             l_old_ins_header_rec.attribute14 := NULL;
30389             l_new_ins_header_rec.attribute14 := NULL;
30390           ELSE
30391             l_old_ins_header_rec.attribute14 := l_hist_csr.old_attribute14;
30392             l_new_ins_header_rec.attribute14 := l_hist_csr.new_attribute14;
30393           END IF;
30394 
30395           IF NVL(l_hist_csr.old_attribute15,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute15,fnd_api.g_miss_char)
30396           THEN
30397             l_old_ins_header_rec.attribute15 := NULL;
30398             l_new_ins_header_rec.attribute15 := NULL;
30399           ELSE
30400             l_old_ins_header_rec.attribute15 := l_hist_csr.old_attribute15;
30401             l_new_ins_header_rec.attribute15 := l_hist_csr.new_attribute15;
30402           END IF;
30403 
30404           IF NVL(l_hist_csr.old_inst_loc_type_code,fnd_api.g_miss_char) = NVL(l_hist_csr.new_inst_loc_type_code,fnd_api.g_miss_char)
30405           THEN
30406             l_old_ins_header_rec.install_location_type_code := NULL;
30407             l_new_ins_header_rec.install_location_type_code := NULL;
30408           ELSE
30409             l_old_ins_header_rec.install_location_type_code := l_hist_csr.old_inst_loc_type_code;
30410             l_new_ins_header_rec.install_location_type_code := l_hist_csr.new_inst_loc_type_code;
30411           END IF;
30412 
30413           IF NVL(l_hist_csr.old_inst_loc_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_inst_loc_id,fnd_api.g_miss_num)
30414           THEN
30415             l_old_ins_header_rec.install_location_id := NULL;
30416             l_new_ins_header_rec.install_location_id := NULL;
30417           ELSE
30418             l_old_ins_header_rec.install_location_id := l_hist_csr.old_inst_loc_id;
30419             l_new_ins_header_rec.install_location_id := l_hist_csr.new_inst_loc_id;
30420             l_old_ins_header_rec.install_location_type_code := l_hist_csr.old_inst_loc_type_code;
30421             l_new_ins_header_rec.install_location_type_code := l_hist_csr.new_inst_loc_type_code;
30422           END IF;
30423 
30424           IF NVL(l_hist_csr.old_inst_usage_code,fnd_api.g_miss_char) = NVL(l_hist_csr.new_inst_usage_code,fnd_api.g_miss_char)
30425           THEN
30426             l_old_ins_header_rec.instance_usage_code := NULL;
30427             l_new_ins_header_rec.instance_usage_code := NULL;
30428           ELSE
30429             l_old_ins_header_rec.instance_usage_code := l_hist_csr.old_inst_usage_code;
30430             l_new_ins_header_rec.instance_usage_code := l_hist_csr.new_inst_usage_code;
30431           END IF;
30432 
30433           -- Added by sguthiva for att enhancements
30434           IF NVL(l_hist_csr.old_config_inst_rev_num,fnd_api.g_miss_num) = NVL(l_hist_csr.new_config_inst_rev_num,fnd_api.g_miss_num)
30435           THEN
30436             l_old_ins_header_rec.config_inst_rev_num := NULL;
30437             l_new_ins_header_rec.config_inst_rev_num := NULL;
30438           ELSE
30439             l_old_ins_header_rec.config_inst_rev_num := l_hist_csr.old_config_inst_rev_num;
30440             l_new_ins_header_rec.config_inst_rev_num := l_hist_csr.new_config_inst_rev_num;
30441           END IF;
30442 
30443           IF NVL(l_hist_csr.old_config_valid_status,fnd_api.g_miss_char) = NVL(l_hist_csr.new_config_valid_status,fnd_api.g_miss_char)
30444           THEN
30445             l_old_ins_header_rec.config_valid_status := NULL;
30446             l_new_ins_header_rec.config_valid_status := NULL;
30447           ELSE
30448             l_old_ins_header_rec.config_valid_status := l_hist_csr.old_config_valid_status;
30449             l_new_ins_header_rec.config_valid_status := l_hist_csr.new_config_valid_status;
30450           END IF;
30451 
30452           IF NVL(l_hist_csr.old_instance_description,fnd_api.g_miss_char) = NVL(l_hist_csr.new_instance_description,fnd_api.g_miss_char)
30453           THEN
30454             l_old_ins_header_rec.instance_description := NULL;
30455             l_new_ins_header_rec.instance_description := NULL;
30456           ELSE
30457             l_old_ins_header_rec.instance_description := l_hist_csr.old_instance_description;
30458             l_new_ins_header_rec.instance_description := l_hist_csr.new_instance_description;
30459           END IF;
30460 
30461           IF NVL(l_hist_csr.old_last_vld_organization_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_last_vld_organization_id,fnd_api.g_miss_num)
30462           THEN
30463             l_old_ins_header_rec.vld_organization_id := NULL;
30464             l_new_ins_header_rec.vld_organization_id := NULL;
30465           ELSE
30466             l_old_ins_header_rec.vld_organization_id := l_hist_csr.old_last_vld_organization_id;
30467             l_new_ins_header_rec.vld_organization_id := l_hist_csr.new_last_vld_organization_id;
30468           END IF;
30469           -- End of addition.
30470 
30471                -- Addition of columns for FA Integration
30472           IF NVL(l_hist_csr.old_purchase_unit_price,fnd_api.g_miss_num) = NVL(l_hist_csr.new_purchase_unit_price,fnd_api.g_miss_num)
30473           THEN
30474             l_old_ins_header_rec.purchase_unit_price := NULL;
30475             l_new_ins_header_rec.purchase_unit_price := NULL;
30476           ELSE
30477             l_old_ins_header_rec.purchase_unit_price := l_hist_csr.old_purchase_unit_price;
30478             l_new_ins_header_rec.purchase_unit_price := l_hist_csr.new_purchase_unit_price;
30479           END IF;
30480 
30481           IF NVL(l_hist_csr.old_purchase_currency_code,fnd_api.g_miss_char) = NVL(l_hist_csr.new_purchase_currency_code,fnd_api.g_miss_char)
30482           THEN
30483             l_old_ins_header_rec.purchase_currency_code := NULL;
30484             l_new_ins_header_rec.purchase_currency_code := NULL;
30485           ELSE
30486             l_old_ins_header_rec.purchase_currency_code := l_hist_csr.old_purchase_currency_code;
30487             l_new_ins_header_rec.purchase_currency_code := l_hist_csr.new_purchase_currency_code;
30488           END IF;
30489 
30490           IF NVL(l_hist_csr.old_payables_unit_price,fnd_api.g_miss_num) = NVL(l_hist_csr.new_payables_unit_price,fnd_api.g_miss_num)
30491           THEN
30492             l_old_ins_header_rec.payables_unit_price := NULL;
30493             l_new_ins_header_rec.payables_unit_price := NULL;
30494           ELSE
30495             l_old_ins_header_rec.payables_unit_price := l_hist_csr.old_payables_unit_price;
30496             l_new_ins_header_rec.payables_unit_price := l_hist_csr.new_payables_unit_price;
30497           END IF;
30498 
30499           IF NVL(l_hist_csr.old_payables_currency_code,fnd_api.g_miss_char) = NVL(l_hist_csr.new_payables_currency_code,fnd_api.g_miss_char)
30500           THEN
30501             l_old_ins_header_rec.payables_currency_code := NULL;
30502             l_new_ins_header_rec.payables_currency_code := NULL;
30503           ELSE
30504             l_old_ins_header_rec.payables_currency_code := l_hist_csr.old_payables_currency_code;
30505             l_new_ins_header_rec.payables_currency_code := l_hist_csr.new_payables_currency_code;
30506           END IF;
30507 
30508           IF NVL(l_hist_csr.old_sales_unit_price,fnd_api.g_miss_num) = NVL(l_hist_csr.new_sales_unit_price,fnd_api.g_miss_num)
30509           THEN
30510             l_old_ins_header_rec.sales_unit_price := NULL;
30511             l_new_ins_header_rec.sales_unit_price := NULL;
30512           ELSE
30513             l_old_ins_header_rec.sales_unit_price := l_hist_csr.old_sales_unit_price;
30514             l_new_ins_header_rec.sales_unit_price := l_hist_csr.new_sales_unit_price;
30515           END IF;
30516 
30517           IF NVL(l_hist_csr.old_sales_currency_code,fnd_api.g_miss_char) = NVL(l_hist_csr.new_sales_currency_code,fnd_api.g_miss_char)
30518           THEN
30519             l_old_ins_header_rec.sales_currency_code := NULL;
30520             l_new_ins_header_rec.sales_currency_code := NULL;
30521           ELSE
30522             l_old_ins_header_rec.sales_currency_code := l_hist_csr.old_sales_currency_code;
30523             l_new_ins_header_rec.sales_currency_code := l_hist_csr.new_sales_currency_code;
30524           END IF;
30525 
30526           IF NVL(l_hist_csr.old_operational_status_code,fnd_api.g_miss_char) =
30527           NVL(l_hist_csr.new_operational_status_code,fnd_api.g_miss_char)
30528           THEN
30529             l_old_ins_header_rec.operational_status_code := NULL;
30530             l_new_ins_header_rec.operational_status_code := NULL;
30531           ELSE
30532             l_old_ins_header_rec.operational_status_code := l_hist_csr.old_operational_status_code;
30533             l_new_ins_header_rec.operational_status_code := l_hist_csr.new_operational_status_code;
30534           END IF;
30535           -- End addition of columns for FA Integration
30536           -- Addition for bug 2696607
30537              IF  (l_new_ins_header_rec.install_location_id IS NOT NULL AND
30538                   l_new_ins_header_rec.install_location_type_code IS NULL )
30539               OR (l_new_ins_header_rec.location_id IS NOT NULL AND
30540                   l_new_ins_header_rec.location_type_code IS NULL )
30541               or (l_new_ins_header_rec.inv_organization_id IS NOT NULL AND
30542                   l_old_ins_header_rec.inv_organization_id IS NOT NULL
30543                   )
30544              THEN
30545              l_instance_rec.instance_id := l_hist_csr.instance_id;
30546              l_time_stamp := l_hist_csr.creation_date;
30547                 csi_item_instance_pub.get_item_instance_details
30548                ( p_api_version         => 1.0
30549                 ,p_commit              => fnd_api.g_false
30550                 ,p_init_msg_list       => fnd_api.g_false
30551                 ,p_validation_level    => fnd_api.g_valid_level_full
30552                 ,p_instance_rec        => l_instance_rec
30553                 ,p_get_parties         => fnd_api.g_false
30554                 ,p_party_header_tbl    => l_party_header_tbl
30555                 ,p_get_accounts        => fnd_api.g_false
30556                 ,p_account_header_tbl  => l_account_header_tbl
30557                 ,p_get_org_assignments => fnd_api.g_false
30558                 ,p_org_header_tbl      => l_org_header_tbl
30559                 ,p_get_pricing_attribs => fnd_api.g_false
30560                 ,p_pricing_attrib_tbl  => l_pricing_attrib_tbl
30561                 ,p_get_ext_attribs     => fnd_api.g_false
30562                 ,p_ext_attrib_tbl      => l_ext_attrib_tbl
30563                 ,p_ext_attrib_def_tbl  => l_ext_attrib_def_tbl
30564                 ,p_get_asset_assignments  =>  fnd_api.g_false
30565                 ,p_asset_header_tbl    => l_asset_header_tbl
30566                 ,p_resolve_id_columns  => fnd_api.g_false
30567                 ,p_time_stamp          => l_time_stamp
30568                 ,x_return_status       => x_return_status
30569                 ,x_msg_count           => x_msg_count
30570                 ,x_msg_data            => x_msg_data
30571                );
30572 
30573               IF NOT(x_return_status = fnd_api.g_ret_sts_success) THEN
30574                   RAISE fnd_api.g_exc_error;
30575               END IF;
30576 
30577                 IF  (l_new_ins_header_rec.install_location_id IS NOT NULL AND
30578                      l_new_ins_header_rec.install_location_type_code IS NULL )
30579                 THEN
30580                    l_old_ins_header_rec.install_location_type_code:=l_instance_rec.install_location_type_code;
30581                    l_new_ins_header_rec.install_location_type_code:=l_instance_rec.install_location_type_code;
30582                 END IF;
30583 
30584                 IF  (l_new_ins_header_rec.location_id IS NOT NULL AND
30585                      l_new_ins_header_rec.location_type_code IS NULL )
30586                 THEN
30587                    l_old_ins_header_rec.location_type_code:=l_instance_rec.location_type_code;
30588                    l_new_ins_header_rec.location_type_code:=l_instance_rec.location_type_code;
30589                 END IF;
30590 
30591                 IF  (l_new_ins_header_rec.inv_organization_id IS NOT NULL AND
30592                      l_old_ins_header_rec.inv_organization_id IS NOT NULL )
30593                 THEN
30594                    l_old_ins_header_rec.location_type_code:=l_instance_rec.location_type_code;
30595                    l_new_ins_header_rec.location_type_code:=l_instance_rec.location_type_code;
30596                 END IF;
30597 
30598 
30599              END IF;
30600           -- End addition for bug 2696607
30601 
30602 	 --start of code for bug 4754569--
30603           IF l_old_ins_header_rec.criticality= fnd_api.g_miss_char
30604           THEN
30605              l_old_ins_header_rec.criticality := NULL;
30606           END IF;
30607 
30608           IF l_new_ins_header_rec.criticality= fnd_api.g_miss_char
30609           THEN
30610              l_new_ins_header_rec.criticality := NULL;
30611           END IF;
30612 
30613           IF l_old_ins_header_rec.category_name= fnd_api.g_miss_char
30614           THEN
30615              l_old_ins_header_rec.category_name := NULL;
30616           END IF;
30617 
30618           IF l_new_ins_header_rec.category_name= fnd_api.g_miss_char
30619           THEN
30620              l_new_ins_header_rec.category_name := NULL;
30621           END IF;
30622 
30623 	  --included for bug 5211068
30624           IF l_old_ins_header_rec.maintainable = fnd_api.g_miss_char
30625           THEN
30626              l_old_ins_header_rec.maintainable := NULL;
30627           END IF;
30628 
30629           IF l_new_ins_header_rec.maintainable = fnd_api.g_miss_char
30630           THEN
30631              l_new_ins_header_rec.maintainable := NULL;
30632           END IF;
30633 
30634           IF NVL(l_hist_csr.old_maintainable_flag,fnd_api.g_miss_char) = NVL(l_hist_csr.new_maintainable_flag,fnd_api.g_miss_char)
30635           THEN
30636             l_old_ins_header_rec.maintainable_flag := NULL;
30637             l_new_ins_header_rec.maintainable_flag := NULL;
30638           ELSE
30639             l_old_ins_header_rec.maintainable_flag := l_hist_csr.old_maintainable_flag;
30640             l_new_ins_header_rec.maintainable_flag := l_hist_csr.new_maintainable_flag;
30641           END IF;
30642 	  --end of fix 5211068
30643 
30644 
30645 
30646           IF NVL(l_hist_csr.old_asset_criticality_code,fnd_api.g_miss_char) = NVL(l_hist_csr.new_asset_criticality_code,fnd_api.g_miss_char)
30647           THEN
30648             l_old_ins_header_rec.asset_criticality_code := NULL;
30649             l_new_ins_header_rec.asset_criticality_code := NULL;
30650           ELSE
30651             l_old_ins_header_rec.asset_criticality_code := l_hist_csr.old_asset_criticality_code;
30652             l_new_ins_header_rec.asset_criticality_code := l_hist_csr.new_asset_criticality_code;
30653           END IF;
30654 
30655           IF NVL(l_hist_csr.old_category_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_category_id,fnd_api.g_miss_num)
30656           THEN
30657             l_old_ins_header_rec.category_id := NULL;
30658             l_new_ins_header_rec.category_id := NULL;
30659           ELSE
30660             l_old_ins_header_rec.category_id := l_hist_csr.old_category_id;
30661             l_new_ins_header_rec.category_id := l_hist_csr.new_category_id;
30662           END IF;
30663 
30664 
30665          --end of code for bug 4754569--
30666 
30667           l_old_ins_header_tbl(1):=l_old_ins_header_rec;
30668           csi_item_instance_pvt.Resolve_id_columns
30669            (p_instance_header_tbl  => l_old_ins_header_tbl);
30670           l_old_ins_header_rec:=l_old_ins_header_tbl(1);
30671 
30672 
30673           l_new_ins_header_tbl(1):=l_new_ins_header_rec;
30674           csi_item_instance_pvt.Resolve_id_columns
30675            (p_instance_header_tbl  => l_new_ins_header_tbl);
30676           l_new_ins_header_rec:=l_new_ins_header_tbl(1);
30677 
30678 
30679           /*
30680           IF NVL(l_old_ins_header_rec.location_type_code,fnd_api.g_miss_char) = NVL(l_new_ins_header_rec.location_type_code,fnd_api.g_miss_char)
30681           THEN
30682             l_old_ins_header_rec.location_type_code := NULL;
30683             l_new_ins_header_rec.location_type_code := NULL;
30684           END IF;
30685 
30686           IF NVL(l_old_ins_header_rec.install_location_type_code,fnd_api.g_miss_char) = NVL(l_new_ins_header_rec.install_location_type_code,fnd_api.g_miss_char)
30687           THEN
30688             l_old_ins_header_rec.install_location_type_code := NULL;
30689             l_new_ins_header_rec.install_location_type_code := NULL;
30690           END IF;
30691           */
30692 
30693           -- Added for bug 2763557
30694             IF l_old_ins_header_rec.in_transit_order_line_number = fnd_api.g_miss_num
30695             THEN
30696               l_old_ins_header_rec.in_transit_order_line_number := NULL;
30697             END IF;
30698 
30699             IF l_new_ins_header_rec.in_transit_order_line_number = fnd_api.g_miss_num
30700             THEN
30701               l_new_ins_header_rec.in_transit_order_line_number := NULL;
30702             END IF;
30703           -- End addition for bug 2763557
30704 
30705             IF l_old_ins_header_rec.in_transit_order_number = fnd_api.g_miss_num
30706             THEN
30707                l_old_ins_header_rec.in_transit_order_number := NULL;
30708             END IF;
30709 
30710             IF l_new_ins_header_rec.in_transit_order_number = fnd_api.g_miss_num
30711             THEN
30712                l_new_ins_header_rec.in_transit_order_number := NULL;
30713             END IF;
30714 
30715 
30716             IF l_old_ins_header_rec.sales_order_number = fnd_api.g_miss_num
30717             THEN
30718                l_old_ins_header_rec.sales_order_number := NULL;
30719             END IF;
30720 
30721             IF l_new_ins_header_rec.sales_order_number = fnd_api.g_miss_num
30722             THEN
30723                l_new_ins_header_rec.sales_order_number := NULL;
30724             END IF;
30725 
30726             IF l_old_ins_header_rec.sales_order_line_number = fnd_api.g_miss_num
30727             THEN
30728                l_old_ins_header_rec.sales_order_line_number := NULL;
30729             END IF;
30730 
30731             IF l_new_ins_header_rec.sales_order_line_number = fnd_api.g_miss_num
30732             THEN
30733                l_new_ins_header_rec.sales_order_line_number := NULL;
30734             END IF;
30735 
30736 
30737             IF l_old_ins_header_rec.sales_order_date = fnd_api.g_miss_date
30738             THEN
30739                l_old_ins_header_rec.sales_order_date := NULL;
30740             END IF;
30741 
30742             IF l_new_ins_header_rec.sales_order_date = fnd_api.g_miss_date
30743             THEN
30744                l_new_ins_header_rec.sales_order_date := NULL;
30745             END IF;
30746 
30747 
30748   -- Added for tar 14834588.600
30749           IF l_old_ins_header_rec.current_loc_address1= fnd_api.g_miss_char
30750           THEN
30751              l_old_ins_header_rec.current_loc_address1 := NULL;
30752           END IF;
30753 
30754           IF l_new_ins_header_rec.current_loc_address1= fnd_api.g_miss_char
30755           THEN
30756              l_new_ins_header_rec.current_loc_address1 := NULL;
30757           END IF;
30758 
30759           IF l_old_ins_header_rec.current_loc_address2= fnd_api.g_miss_char
30760           THEN
30761              l_old_ins_header_rec.current_loc_address2 := NULL;
30762           END IF;
30763 
30764           IF l_new_ins_header_rec.current_loc_address2= fnd_api.g_miss_char
30765           THEN
30766              l_new_ins_header_rec.current_loc_address2 := NULL;
30767           END IF;
30768 
30769           IF l_old_ins_header_rec.current_loc_address3= fnd_api.g_miss_char
30770           THEN
30771              l_old_ins_header_rec.current_loc_address3 := NULL;
30772           END IF;
30773 
30774           IF l_new_ins_header_rec.current_loc_address3= fnd_api.g_miss_char
30775           THEN
30776              l_new_ins_header_rec.current_loc_address3 := NULL;
30777           END IF;
30778 
30779           IF l_old_ins_header_rec.current_loc_address4= fnd_api.g_miss_char
30780           THEN
30781              l_old_ins_header_rec.current_loc_address4 := NULL;
30782           END IF;
30783 
30784           IF l_new_ins_header_rec.current_loc_address4= fnd_api.g_miss_char
30785           THEN
30786              l_new_ins_header_rec.current_loc_address4 := NULL;
30787           END IF;
30788 
30789           IF l_old_ins_header_rec.current_loc_city= fnd_api.g_miss_char
30790           THEN
30791              l_old_ins_header_rec.current_loc_city := NULL;
30792           END IF;
30793 
30794           IF l_new_ins_header_rec.current_loc_city= fnd_api.g_miss_char
30795           THEN
30796              l_new_ins_header_rec.current_loc_city := NULL;
30797           END IF;
30798 
30799           IF l_old_ins_header_rec.current_loc_state= fnd_api.g_miss_char
30800           THEN
30801              l_old_ins_header_rec.current_loc_state := NULL;
30802           END IF;
30803 
30804           IF l_new_ins_header_rec.current_loc_state= fnd_api.g_miss_char
30805           THEN
30806              l_new_ins_header_rec.current_loc_state := NULL;
30807           END IF;
30808 
30809           IF l_old_ins_header_rec.current_loc_postal_code= fnd_api.g_miss_char
30810           THEN
30811              l_old_ins_header_rec.current_loc_postal_code := NULL;
30812           END IF;
30813 
30814           IF l_new_ins_header_rec.current_loc_postal_code= fnd_api.g_miss_char
30815           THEN
30816              l_new_ins_header_rec.current_loc_postal_code := NULL;
30817           END IF;
30818 
30819           IF l_old_ins_header_rec.current_loc_country= fnd_api.g_miss_char
30820           THEN
30821              l_old_ins_header_rec.current_loc_country := NULL;
30822           END IF;
30823 
30824           IF l_new_ins_header_rec.current_loc_country= fnd_api.g_miss_char
30825           THEN
30826              l_new_ins_header_rec.current_loc_country := NULL;
30827           END IF;
30828 
30829           IF l_old_ins_header_rec.install_loc_address1= fnd_api.g_miss_char
30830           THEN
30831              l_old_ins_header_rec.install_loc_address1 := NULL;
30832           END IF;
30833 
30834           IF l_new_ins_header_rec.install_loc_address1= fnd_api.g_miss_char
30835           THEN
30836              l_new_ins_header_rec.install_loc_address1 := NULL;
30837           END IF;
30838 
30839           IF l_old_ins_header_rec.install_loc_address2= fnd_api.g_miss_char
30840           THEN
30841              l_old_ins_header_rec.install_loc_address2 := NULL;
30842           END IF;
30843 
30844           IF l_new_ins_header_rec.install_loc_address2= fnd_api.g_miss_char
30845           THEN
30846              l_new_ins_header_rec.install_loc_address2 := NULL;
30847           END IF;
30848 
30849           IF l_old_ins_header_rec.install_loc_address3= fnd_api.g_miss_char
30850           THEN
30851              l_old_ins_header_rec.install_loc_address3 := NULL;
30852           END IF;
30853 
30854           IF l_new_ins_header_rec.install_loc_address3= fnd_api.g_miss_char
30855           THEN
30856              l_new_ins_header_rec.install_loc_address3 := NULL;
30857           END IF;
30858 
30859           IF l_old_ins_header_rec.install_loc_address4= fnd_api.g_miss_char
30860           THEN
30861              l_old_ins_header_rec.install_loc_address4 := NULL;
30862           END IF;
30863 
30864           IF l_new_ins_header_rec.install_loc_address4= fnd_api.g_miss_char
30865           THEN
30866              l_new_ins_header_rec.install_loc_address4 := NULL;
30867           END IF;
30868 
30869           IF l_old_ins_header_rec.install_loc_city= fnd_api.g_miss_char
30870           THEN
30871              l_old_ins_header_rec.install_loc_city := NULL;
30872           END IF;
30873 
30874           IF l_new_ins_header_rec.install_loc_city= fnd_api.g_miss_char
30875           THEN
30876              l_new_ins_header_rec.install_loc_city := NULL;
30877           END IF;
30878 
30879           IF l_old_ins_header_rec.install_loc_state= fnd_api.g_miss_char
30880           THEN
30881              l_old_ins_header_rec.install_loc_state := NULL;
30882           END IF;
30883 
30884           IF l_new_ins_header_rec.install_loc_state= fnd_api.g_miss_char
30885           THEN
30886              l_new_ins_header_rec.install_loc_state := NULL;
30887           END IF;
30888 
30889           IF l_old_ins_header_rec.install_loc_postal_code= fnd_api.g_miss_char
30890           THEN
30891              l_old_ins_header_rec.install_loc_postal_code := NULL;
30892           END IF;
30893 
30894           IF l_new_ins_header_rec.install_loc_postal_code= fnd_api.g_miss_char
30895           THEN
30896              l_new_ins_header_rec.install_loc_postal_code := NULL;
30897           END IF;
30898 
30899           IF l_old_ins_header_rec.install_loc_country= fnd_api.g_miss_char
30900           THEN
30901              l_old_ins_header_rec.install_loc_country := NULL;
30902           END IF;
30903 
30904           IF l_new_ins_header_rec.install_loc_country= fnd_api.g_miss_char
30905           THEN
30906              l_new_ins_header_rec.install_loc_country := NULL;
30907           END IF;
30908 
30909           IF l_old_ins_header_rec.unit_of_measure_name= fnd_api.g_miss_char
30910           THEN
30911              l_old_ins_header_rec.unit_of_measure_name := NULL;
30912           END IF;
30913 
30914           IF l_new_ins_header_rec.unit_of_measure_name= fnd_api.g_miss_char
30915           THEN
30916              l_new_ins_header_rec.unit_of_measure_name := NULL;
30917           END IF;
30918 
30919           IF l_old_ins_header_rec.accounting_class= fnd_api.g_miss_char
30920           THEN
30921              l_old_ins_header_rec.accounting_class := NULL;
30922           END IF;
30923 
30924           IF l_new_ins_header_rec.accounting_class= fnd_api.g_miss_char
30925           THEN
30926              l_new_ins_header_rec.accounting_class := NULL;
30927           END IF;
30928 
30929           IF l_old_ins_header_rec.instance_condition= fnd_api.g_miss_char
30930           THEN
30931              l_old_ins_header_rec.instance_condition := NULL;
30932           END IF;
30933 
30934           IF l_new_ins_header_rec.instance_condition= fnd_api.g_miss_char
30935           THEN
30936              l_new_ins_header_rec.instance_condition := NULL;
30937           END IF;
30938 
30939           IF l_old_ins_header_rec.instance_status= fnd_api.g_miss_char
30940           THEN
30941              l_old_ins_header_rec.instance_status := NULL;
30942           END IF;
30943 
30944           IF l_new_ins_header_rec.instance_status= fnd_api.g_miss_char
30945           THEN
30946              l_new_ins_header_rec.instance_status := NULL;
30947           END IF;
30948 
30949           IF l_old_ins_header_rec.system_name= fnd_api.g_miss_char
30950           THEN
30951              l_old_ins_header_rec.system_name := NULL;
30952           END IF;
30953 
30954           IF l_new_ins_header_rec.system_name= fnd_api.g_miss_char
30955           THEN
30956              l_new_ins_header_rec.system_name := NULL;
30957           END IF;
30958 
30959           IF l_old_ins_header_rec.instance_type_name= fnd_api.g_miss_char
30960           THEN
30961              l_old_ins_header_rec.instance_type_name := NULL;
30962           END IF;
30963 
30964           IF l_new_ins_header_rec.instance_type_name= fnd_api.g_miss_char
30965           THEN
30966              l_new_ins_header_rec.instance_type_name := NULL;
30967           END IF;
30968 
30969           IF l_old_ins_header_rec.inv_organization_name= fnd_api.g_miss_char
30970           THEN
30971              l_old_ins_header_rec.inv_organization_name := NULL;
30972           END IF;
30973 
30974           IF l_new_ins_header_rec.inv_organization_name= fnd_api.g_miss_char
30975           THEN
30976              l_new_ins_header_rec.inv_organization_name := NULL;
30977           END IF;
30978 
30979           IF l_old_ins_header_rec.pa_project_name= fnd_api.g_miss_char
30980           THEN
30981              l_old_ins_header_rec.pa_project_name := NULL;
30982           END IF;
30983 
30984           IF l_new_ins_header_rec.pa_project_name= fnd_api.g_miss_char
30985           THEN
30986              l_new_ins_header_rec.pa_project_name := NULL;
30987           END IF;
30988 
30989           IF l_old_ins_header_rec.pa_project_number= fnd_api.g_miss_char
30990           THEN
30991              l_old_ins_header_rec.pa_project_number := NULL;
30992           END IF;
30993 
30994           IF l_new_ins_header_rec.pa_project_number= fnd_api.g_miss_char
30995           THEN
30996              l_new_ins_header_rec.pa_project_number := NULL;
30997           END IF;
30998 
30999           IF l_old_ins_header_rec.pa_task_name= fnd_api.g_miss_char
31000           THEN
31001              l_old_ins_header_rec.pa_task_name := NULL;
31002           END IF;
31003 
31004           IF l_new_ins_header_rec.pa_task_name= fnd_api.g_miss_char
31005           THEN
31006              l_new_ins_header_rec.pa_task_name := NULL;
31007           END IF;
31008 
31009           IF l_old_ins_header_rec.pa_task_number= fnd_api.g_miss_char
31010           THEN
31011              l_old_ins_header_rec.pa_task_number := NULL;
31012           END IF;
31013 
31014           IF l_new_ins_header_rec.pa_task_number= fnd_api.g_miss_char
31015           THEN
31016              l_new_ins_header_rec.pa_task_number := NULL;
31017           END IF;
31018 
31019           IF l_old_ins_header_rec.wip_entity_name= fnd_api.g_miss_char
31020           THEN
31021              l_old_ins_header_rec.wip_entity_name := NULL;
31022           END IF;
31023 
31024           IF l_new_ins_header_rec.wip_entity_name= fnd_api.g_miss_char
31025           THEN
31026              l_new_ins_header_rec.wip_entity_name := NULL;
31027           END IF;
31028 
31029           IF l_old_ins_header_rec.purchase_order_number= fnd_api.g_miss_char
31030           THEN
31031              l_old_ins_header_rec.purchase_order_number := NULL;
31032           END IF;
31033 
31034           IF l_new_ins_header_rec.purchase_order_number= fnd_api.g_miss_char
31035           THEN
31036              l_new_ins_header_rec.purchase_order_number := NULL;
31037           END IF;
31038 
31039           IF l_old_ins_header_rec.instance_usage_name= fnd_api.g_miss_char
31040           THEN
31041              l_old_ins_header_rec.instance_usage_name := NULL;
31042           END IF;
31043 
31044           IF l_new_ins_header_rec.instance_usage_name= fnd_api.g_miss_char
31045           THEN
31046              l_new_ins_header_rec.instance_usage_name := NULL;
31047           END IF;
31048 
31049           IF l_old_ins_header_rec.inv_locator_name= fnd_api.g_miss_char
31050           THEN
31051              l_old_ins_header_rec.inv_locator_name := NULL;
31052           END IF;
31053 
31054           IF l_new_ins_header_rec.inv_locator_name= fnd_api.g_miss_char
31055           THEN
31056              l_new_ins_header_rec.inv_locator_name := NULL;
31057           END IF;
31058 
31059           IF   (l_old_ins_header_rec.current_loc_number= fnd_api.g_miss_char)
31060             OR (nvl(l_old_ins_header_rec.location_type_code,'$$$$') <> 'HZ_PARTY_SITES')
31061           THEN
31062                 l_old_ins_header_rec.current_loc_number := NULL;
31063           END IF;
31064 
31065           IF   (l_new_ins_header_rec.current_loc_number= fnd_api.g_miss_char)
31066             OR (nvl(l_new_ins_header_rec.location_type_code, '$$$$') <> 'HZ_PARTY_SITES')
31067           THEN
31068                 l_new_ins_header_rec.current_loc_number := NULL;
31069           END IF;
31070 
31071           IF   (l_old_ins_header_rec.install_loc_number= fnd_api.g_miss_char)
31072             OR (nvl(l_old_ins_header_rec.install_location_type_code, '$$$$') <> 'HZ_PARTY_SITES')
31073           THEN
31074              l_old_ins_header_rec.install_loc_number := NULL;
31075           END IF;
31076 
31077           IF   (l_new_ins_header_rec.install_loc_number= fnd_api.g_miss_char)
31078             OR (nvl(l_new_ins_header_rec.install_location_type_code, '$$$$') <> 'HZ_PARTY_SITES')
31079           THEN
31080              l_new_ins_header_rec.install_loc_number := NULL;
31081           END IF;
31082        -- End of Addition for tar 14834588.600
31083 
31084           IF NVL(l_old_ins_header_rec.location_type_code,fnd_api.g_miss_char) = NVL(l_new_ins_header_rec.location_type_code,fnd_api.g_miss_char)
31085           THEN
31086              l_old_ins_header_rec.location_type_code := NULL;
31087              l_new_ins_header_rec.location_type_code := NULL;
31088           END IF;
31089 
31090           IF NVL(l_old_ins_header_rec.install_location_type_code,fnd_api.g_miss_char) = NVL(l_new_ins_header_rec.install_location_type_code,fnd_api.g_miss_char)
31091           THEN
31092              l_old_ins_header_rec.install_location_type_code := NULL;
31093              l_new_ins_header_rec.install_location_type_code := NULL;
31094           END IF;
31095 
31096 	 --start of code for eam integration columns--
31097           IF NVL(l_hist_csr.old_network_asset_flag,fnd_api.g_miss_char) = NVL(l_hist_csr.new_network_asset_flag,fnd_api.g_miss_char)
31098           THEN
31099             l_old_ins_header_rec.network_asset_flag := NULL;
31100             l_new_ins_header_rec.network_asset_flag := NULL;
31101           ELSE
31102             l_old_ins_header_rec.network_asset_flag := l_hist_csr.old_network_asset_flag;
31103             l_new_ins_header_rec.network_asset_flag := l_hist_csr.new_network_asset_flag;
31104           END IF;
31105 
31106           IF NVL(l_hist_csr.old_maintainable_flag,fnd_api.g_miss_char) = NVL(l_hist_csr.new_maintainable_flag,fnd_api.g_miss_char)
31107           THEN
31108             l_old_ins_header_rec.maintainable_flag := NULL;
31109             l_new_ins_header_rec.maintainable_flag := NULL;
31110           ELSE
31111             l_old_ins_header_rec.maintainable_flag := l_hist_csr.old_maintainable_flag;
31112             l_new_ins_header_rec.maintainable_flag := l_hist_csr.new_maintainable_flag;
31113           END IF;
31114 
31115           IF NVL(l_hist_csr.old_pn_location_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_pn_location_id,fnd_api.g_miss_num)
31116           THEN
31117             l_old_ins_header_rec.pn_location_id := NULL;
31118             l_new_ins_header_rec.pn_location_id := NULL;
31119           ELSE
31120             l_old_ins_header_rec.pn_location_id := l_hist_csr.old_pn_location_id;
31121             l_new_ins_header_rec.pn_location_id := l_hist_csr.new_pn_location_id;
31122           END IF;
31123 
31124           IF NVL(l_hist_csr.old_asset_criticality_code,fnd_api.g_miss_char) = NVL(l_hist_csr.new_asset_criticality_code,fnd_api.g_miss_char)
31125           THEN
31126             l_old_ins_header_rec.asset_criticality_code := NULL;
31127             l_new_ins_header_rec.asset_criticality_code := NULL;
31128           ELSE
31129             l_old_ins_header_rec.asset_criticality_code := l_hist_csr.old_asset_criticality_code;
31130             l_new_ins_header_rec.asset_criticality_code := l_hist_csr.new_asset_criticality_code;
31131           END IF;
31132 
31133           IF NVL(l_hist_csr.old_category_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_category_id,fnd_api.g_miss_num)
31134           THEN
31135             l_old_ins_header_rec.category_id := NULL;
31136             l_new_ins_header_rec.category_id := NULL;
31137           ELSE
31138             l_old_ins_header_rec.category_id := l_hist_csr.old_category_id;
31139             l_new_ins_header_rec.category_id := l_hist_csr.new_category_id;
31140           END IF;
31141 
31142 
31143           IF NVL(l_hist_csr.old_equipment_gen_object_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_equipment_gen_object_id,fnd_api.g_miss_num)
31144           THEN
31145             l_old_ins_header_rec.equipment_gen_object_id := NULL;
31146             l_new_ins_header_rec.equipment_gen_object_id := NULL;
31147           ELSE
31148             l_old_ins_header_rec.equipment_gen_object_id := l_hist_csr.old_equipment_gen_object_id;
31149             l_new_ins_header_rec.equipment_gen_object_id := l_hist_csr.new_equipment_gen_object_id;
31150           END IF;
31151 
31152 	  IF NVL(l_hist_csr.old_instantiation_flag,fnd_api.g_miss_char) = NVL(l_hist_csr.new_instantiation_flag,fnd_api.g_miss_char)
31153           THEN
31154             l_old_ins_header_rec.instantiation_flag := NULL;
31155             l_new_ins_header_rec.instantiation_flag := NULL;
31156           ELSE
31157             l_old_ins_header_rec.instantiation_flag := l_hist_csr.old_instantiation_flag;
31158             l_new_ins_header_rec.instantiation_flag := l_hist_csr.new_instantiation_flag;
31159           END IF;
31160 
31161 	  IF NVL(l_hist_csr.old_linear_location_id,fnd_api.g_miss_num) = NVL(l_hist_csr.new_linear_location_id,fnd_api.g_miss_num)
31162           THEN
31163             l_old_ins_header_rec.linear_location_id := NULL;
31164             l_new_ins_header_rec.linear_location_id := NULL;
31165           ELSE
31166             l_old_ins_header_rec.linear_location_id := l_hist_csr.old_linear_location_id;
31167             l_new_ins_header_rec.linear_location_id := l_hist_csr.new_linear_location_id;
31168           END IF;
31169 
31170 	  IF NVL(l_hist_csr.old_operational_log_flag,fnd_api.g_miss_char) = NVL(l_hist_csr.new_operational_log_flag,fnd_api.g_miss_char)
31171           THEN
31172             l_old_ins_header_rec.operational_log_flag := NULL;
31173             l_new_ins_header_rec.operational_log_flag := NULL;
31174           ELSE
31175             l_old_ins_header_rec.operational_log_flag := l_hist_csr.old_operational_log_flag;
31176             l_new_ins_header_rec.operational_log_flag := l_hist_csr.new_operational_log_flag;
31177           END IF;
31178 
31179 	  IF NVL(l_hist_csr.old_checkin_status,fnd_api.g_miss_num) = NVL(l_hist_csr.new_checkin_status,fnd_api.g_miss_num)
31180           THEN
31181             l_old_ins_header_rec.checkin_status := NULL;
31182             l_new_ins_header_rec.checkin_status := NULL;
31183           ELSE
31184             l_old_ins_header_rec.checkin_status := l_hist_csr.old_checkin_status;
31185             l_new_ins_header_rec.checkin_status := l_hist_csr.new_checkin_status;
31186           END IF;
31187 
31188 	  IF NVL(l_hist_csr.old_supplier_warranty_exp_date,fnd_api.g_miss_date) = NVL(l_hist_csr.new_supplier_warranty_exp_date,fnd_api.g_miss_date)
31189           THEN
31190             l_old_ins_header_rec.supplier_warranty_exp_date := NULL;
31191             l_new_ins_header_rec.supplier_warranty_exp_date := NULL;
31192           ELSE
31193             l_old_ins_header_rec.supplier_warranty_exp_date := l_hist_csr.old_supplier_warranty_exp_date;
31194             l_new_ins_header_rec.supplier_warranty_exp_date := l_hist_csr.new_supplier_warranty_exp_date;
31195           END IF;
31196 
31197 
31198 	  IF NVL(l_hist_csr.old_attribute16,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute16,fnd_api.g_miss_char)
31199           THEN
31200             l_old_ins_header_rec.attribute16 := NULL;
31201             l_new_ins_header_rec.attribute16 := NULL;
31202           ELSE
31203             l_old_ins_header_rec.attribute16 := l_hist_csr.old_attribute16;
31204             l_new_ins_header_rec.attribute16 := l_hist_csr.new_attribute16;
31205           END IF;
31206 
31207 	  IF NVL(l_hist_csr.old_attribute17,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute17,fnd_api.g_miss_char)
31208           THEN
31209             l_old_ins_header_rec.attribute17 := NULL;
31210             l_new_ins_header_rec.attribute17 := NULL;
31211           ELSE
31212             l_old_ins_header_rec.attribute17 := l_hist_csr.old_attribute17;
31213             l_new_ins_header_rec.attribute17 := l_hist_csr.new_attribute17;
31214           END IF;
31215 
31216 	  IF NVL(l_hist_csr.old_attribute18,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute18,fnd_api.g_miss_char)
31217           THEN
31218             l_old_ins_header_rec.attribute18 := NULL;
31219             l_new_ins_header_rec.attribute18 := NULL;
31220           ELSE
31221             l_old_ins_header_rec.attribute18 := l_hist_csr.old_attribute18;
31222             l_new_ins_header_rec.attribute18 := l_hist_csr.new_attribute18;
31223           END IF;
31224 
31225 	  IF NVL(l_hist_csr.old_attribute19,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute19,fnd_api.g_miss_char)
31226           THEN
31227             l_old_ins_header_rec.attribute19 := NULL;
31228             l_new_ins_header_rec.attribute19 := NULL;
31229           ELSE
31230             l_old_ins_header_rec.attribute19 := l_hist_csr.old_attribute19;
31231             l_new_ins_header_rec.attribute19 := l_hist_csr.new_attribute19;
31232           END IF;
31233 
31234 	  IF NVL(l_hist_csr.old_attribute20,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute20,fnd_api.g_miss_char)
31235           THEN
31236             l_old_ins_header_rec.attribute20 := NULL;
31237             l_new_ins_header_rec.attribute20 := NULL;
31238           ELSE
31239             l_old_ins_header_rec.attribute20 := l_hist_csr.old_attribute20;
31240             l_new_ins_header_rec.attribute20 := l_hist_csr.new_attribute20;
31241           END IF;
31242 
31243 	  IF NVL(l_hist_csr.old_attribute21,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute21,fnd_api.g_miss_char)
31244           THEN
31245             l_old_ins_header_rec.attribute21 := NULL;
31246             l_new_ins_header_rec.attribute21 := NULL;
31247           ELSE
31248             l_old_ins_header_rec.attribute21 := l_hist_csr.old_attribute21;
31249             l_new_ins_header_rec.attribute21 := l_hist_csr.new_attribute21;
31250           END IF;
31251 
31252 	  IF NVL(l_hist_csr.old_attribute22,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute22,fnd_api.g_miss_char)
31253           THEN
31254             l_old_ins_header_rec.attribute22 := NULL;
31255             l_new_ins_header_rec.attribute22 := NULL;
31256           ELSE
31257             l_old_ins_header_rec.attribute22 := l_hist_csr.old_attribute22;
31258             l_new_ins_header_rec.attribute22 := l_hist_csr.new_attribute22;
31259           END IF;
31260 
31261 	  IF NVL(l_hist_csr.old_attribute23,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute23,fnd_api.g_miss_char)
31262           THEN
31263             l_old_ins_header_rec.attribute23 := NULL;
31264             l_new_ins_header_rec.attribute23 := NULL;
31265           ELSE
31266             l_old_ins_header_rec.attribute23 := l_hist_csr.old_attribute23;
31267             l_new_ins_header_rec.attribute23 := l_hist_csr.new_attribute23;
31268           END IF;
31269 
31270 	  IF NVL(l_hist_csr.old_attribute24,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute24,fnd_api.g_miss_char)
31271           THEN
31272             l_old_ins_header_rec.attribute24 := NULL;
31273             l_new_ins_header_rec.attribute24 := NULL;
31274           ELSE
31275             l_old_ins_header_rec.attribute24 := l_hist_csr.old_attribute24;
31276             l_new_ins_header_rec.attribute24 := l_hist_csr.new_attribute24;
31277           END IF;
31278 
31279 	  IF NVL(l_hist_csr.old_attribute25,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute25,fnd_api.g_miss_char)
31280           THEN
31281             l_old_ins_header_rec.attribute25 := NULL;
31282             l_new_ins_header_rec.attribute25 := NULL;
31283           ELSE
31284             l_old_ins_header_rec.attribute25 := l_hist_csr.old_attribute25;
31285             l_new_ins_header_rec.attribute25 := l_hist_csr.new_attribute25;
31286           END IF;
31287 
31288 	  IF NVL(l_hist_csr.old_attribute26,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute26,fnd_api.g_miss_char)
31289           THEN
31290             l_old_ins_header_rec.attribute26 := NULL;
31291             l_new_ins_header_rec.attribute26 := NULL;
31292           ELSE
31293             l_old_ins_header_rec.attribute26 := l_hist_csr.old_attribute26;
31294             l_new_ins_header_rec.attribute26 := l_hist_csr.new_attribute26;
31295           END IF;
31296 
31297 	  IF NVL(l_hist_csr.old_attribute27,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute27,fnd_api.g_miss_char)
31298           THEN
31299             l_old_ins_header_rec.attribute27 := NULL;
31300             l_new_ins_header_rec.attribute27 := NULL;
31301           ELSE
31302             l_old_ins_header_rec.attribute27 := l_hist_csr.old_attribute27;
31303             l_new_ins_header_rec.attribute27 := l_hist_csr.new_attribute27;
31304           END IF;
31305 
31306 	  IF NVL(l_hist_csr.old_attribute28,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute28,fnd_api.g_miss_char)
31307           THEN
31308             l_old_ins_header_rec.attribute28 := NULL;
31309             l_new_ins_header_rec.attribute28 := NULL;
31310           ELSE
31311             l_old_ins_header_rec.attribute28 := l_hist_csr.old_attribute28;
31312             l_new_ins_header_rec.attribute28 := l_hist_csr.new_attribute28;
31313           END IF;
31314 
31315 	  IF NVL(l_hist_csr.old_attribute29,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute29,fnd_api.g_miss_char)
31316           THEN
31317             l_old_ins_header_rec.attribute29 := NULL;
31318             l_new_ins_header_rec.attribute29 := NULL;
31319           ELSE
31320             l_old_ins_header_rec.attribute29 := l_hist_csr.old_attribute29;
31321             l_new_ins_header_rec.attribute29 := l_hist_csr.new_attribute29;
31322           END IF;
31323 
31324 	  IF NVL(l_hist_csr.old_attribute30,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute30,fnd_api.g_miss_char)
31325           THEN
31326             l_old_ins_header_rec.attribute30 := NULL;
31327             l_new_ins_header_rec.attribute30 := NULL;
31328           ELSE
31329             l_old_ins_header_rec.attribute30 := l_hist_csr.old_attribute30;
31330             l_new_ins_header_rec.attribute30 := l_hist_csr.new_attribute30;
31331           END IF;
31332 
31333 	 --end of code for eam integration columns--
31334 
31335 
31336 
31337 
31338 
31339       l_ins_header_rec.instance_id                 := l_hist_csr.instance_id ;
31340       l_ins_header_rec.old_instance_number         := l_old_ins_header_rec.instance_number ;
31341       l_ins_header_rec.new_instance_number         := l_new_ins_header_rec.instance_number ;
31342       l_ins_header_rec.old_external_reference      := l_old_ins_header_rec.external_reference ;
31343       l_ins_header_rec.new_external_reference      := l_new_ins_header_rec.external_reference ;
31344       l_ins_header_rec.old_inventory_item_id       := l_old_ins_header_rec.inventory_item_id  ;
31345       l_ins_header_rec.new_inventory_item_id       := l_new_ins_header_rec.inventory_item_id  ;
31346       l_ins_header_rec.old_inventory_revision      := l_old_ins_header_rec.inventory_revision ;
31347       l_ins_header_rec.new_inventory_revision      := l_new_ins_header_rec.inventory_revision ;
31348       l_ins_header_rec.old_inv_master_org_id       := l_old_ins_header_rec.inv_master_organization_id ;
31349       l_ins_header_rec.new_inv_master_org_id       := l_new_ins_header_rec.inv_master_organization_id ;
31350       l_ins_header_rec.old_serial_number           := l_old_ins_header_rec.serial_number ;
31351       l_ins_header_rec.new_serial_number           := l_new_ins_header_rec.serial_number ;
31352       l_ins_header_rec.old_mfg_serial_number_flag  := l_old_ins_header_rec.mfg_serial_number_flag ;
31353       l_ins_header_rec.new_mfg_serial_number_flag  := l_new_ins_header_rec.mfg_serial_number_flag ;
31354       l_ins_header_rec.old_lot_number              := l_old_ins_header_rec.lot_number ;
31355       l_ins_header_rec.new_lot_number              := l_new_ins_header_rec.lot_number ;
31356       l_ins_header_rec.old_quantity                := l_old_ins_header_rec.quantity ;
31357       l_ins_header_rec.new_quantity                := l_new_ins_header_rec.quantity ;
31358       l_ins_header_rec.old_unit_of_measure_name    := l_old_ins_header_rec.unit_of_measure_name ;
31359       l_ins_header_rec.new_unit_of_measure_name    := l_new_ins_header_rec.unit_of_measure_name ;
31360       l_ins_header_rec.old_unit_of_measure         := l_old_ins_header_rec.unit_of_measure ;
31361       l_ins_header_rec.new_unit_of_measure         := l_new_ins_header_rec.unit_of_measure ;
31362       l_ins_header_rec.old_accounting_class        := l_old_ins_header_rec.accounting_class ;
31363       l_ins_header_rec.new_accounting_class        := l_new_ins_header_rec.accounting_class ;
31364       l_ins_header_rec.old_accounting_class_code   := l_old_ins_header_rec.accounting_class_code ;
31365       l_ins_header_rec.new_accounting_class_code   := l_new_ins_header_rec.accounting_class_code ;
31366       l_ins_header_rec.old_instance_condition      := l_old_ins_header_rec.instance_condition ;
31367       l_ins_header_rec.new_instance_condition      := l_new_ins_header_rec.instance_condition ;
31368       l_ins_header_rec.old_instance_condition_id   := l_old_ins_header_rec.instance_condition_id ;
31369       l_ins_header_rec.new_instance_condition_id   := l_new_ins_header_rec.instance_condition_id ;
31370       l_ins_header_rec.old_instance_status         := l_old_ins_header_rec.instance_status ;
31371       l_ins_header_rec.new_instance_status         := l_new_ins_header_rec.instance_status ;
31372       l_ins_header_rec.old_instance_status_id      := l_old_ins_header_rec.instance_status_id ;
31373       l_ins_header_rec.new_instance_status_id      := l_new_ins_header_rec.instance_status_id ;
31374       l_ins_header_rec.old_customer_view_flag      := l_old_ins_header_rec.customer_view_flag ;
31375       l_ins_header_rec.new_customer_view_flag      := l_new_ins_header_rec.customer_view_flag ;
31376       l_ins_header_rec.old_merchant_view_flag      := l_old_ins_header_rec.merchant_view_flag ;
31377       l_ins_header_rec.new_merchant_view_flag      := l_new_ins_header_rec.merchant_view_flag ;
31378       l_ins_header_rec.old_sellable_flag           := l_old_ins_header_rec.sellable_flag      ;
31379       l_ins_header_rec.new_sellable_flag           := l_new_ins_header_rec.sellable_flag      ;
31380       l_ins_header_rec.old_system_id               := l_old_ins_header_rec.system_id          ;
31381       l_ins_header_rec.new_system_id               := l_new_ins_header_rec.system_id          ;
31382       l_ins_header_rec.old_system_name             := l_old_ins_header_rec.system_name        ;
31383       l_ins_header_rec.new_system_name             := l_new_ins_header_rec.system_name        ;
31384       l_ins_header_rec.old_instance_type_code      := l_old_ins_header_rec.instance_type_code ;
31385       l_ins_header_rec.new_instance_type_code      := l_new_ins_header_rec.instance_type_code ;
31386       l_ins_header_rec.old_instance_type_name      := l_old_ins_header_rec.instance_type_name ;
31387       l_ins_header_rec.new_instance_type_name      := l_new_ins_header_rec.instance_type_name ;
31388       l_ins_header_rec.old_active_start_date       := l_old_ins_header_rec.active_start_date  ;
31389       l_ins_header_rec.new_active_start_date       := l_new_ins_header_rec.active_start_date  ;
31390       l_ins_header_rec.old_active_end_date         := l_old_ins_header_rec.active_end_date    ;
31391       l_ins_header_rec.new_active_end_date         := l_new_ins_header_rec.active_end_date    ;
31392       l_ins_header_rec.old_location_type_code      := l_old_ins_header_rec.location_type_code ;
31393       l_ins_header_rec.new_location_type_code      := l_new_ins_header_rec.location_type_code ;
31394       l_ins_header_rec.old_location_id             := l_old_ins_header_rec.location_id        ;
31395       l_ins_header_rec.new_location_id             := l_new_ins_header_rec.location_id        ;
31396       l_ins_header_rec.old_inv_organization_id     := l_old_ins_header_rec.inv_organization_id ;
31397       l_ins_header_rec.new_inv_organization_id     := l_new_ins_header_rec.inv_organization_id ;
31398       l_ins_header_rec.old_inv_organization_name   := l_old_ins_header_rec.inv_organization_name ;
31399       l_ins_header_rec.new_inv_organization_name   := l_new_ins_header_rec.inv_organization_name ;
31400       l_ins_header_rec.old_inv_subinventory_name   := l_old_ins_header_rec.inv_subinventory_name ;
31401       l_ins_header_rec.new_inv_subinventory_name   := l_new_ins_header_rec.inv_subinventory_name ;
31402       l_ins_header_rec.old_inv_locator_id          := l_old_ins_header_rec.inv_locator_id       ;
31403       l_ins_header_rec.new_inv_locator_id          := l_new_ins_header_rec.inv_locator_id       ;
31404       l_ins_header_rec.old_pa_project_id           := l_old_ins_header_rec.pa_project_id        ;
31405       l_ins_header_rec.new_pa_project_id           := l_new_ins_header_rec.pa_project_id        ;
31406       l_ins_header_rec.old_pa_project_task_id      := l_old_ins_header_rec.pa_project_task_id   ;
31407       l_ins_header_rec.new_pa_project_task_id      := l_new_ins_header_rec.pa_project_task_id   ;
31408       l_ins_header_rec.old_pa_project_name         := l_old_ins_header_rec.pa_project_name      ;
31409       l_ins_header_rec.new_pa_project_name         := l_new_ins_header_rec.pa_project_name      ;
31410       l_ins_header_rec.old_pa_project_number       := l_old_ins_header_rec.pa_project_number    ;
31411       l_ins_header_rec.new_pa_project_number       := l_new_ins_header_rec.pa_project_number    ;
31412       l_ins_header_rec.old_pa_task_name            := l_old_ins_header_rec.pa_task_name         ;
31413       l_ins_header_rec.new_pa_task_name            := l_new_ins_header_rec.pa_task_name         ;
31414       l_ins_header_rec.old_pa_task_number          := l_old_ins_header_rec.pa_task_number       ;
31415       l_ins_header_rec.new_pa_task_number          := l_new_ins_header_rec.pa_task_number       ;
31416       l_ins_header_rec.old_in_transit_order_line_id:= l_old_ins_header_rec.in_transit_order_line_id ;
31417       l_ins_header_rec.new_in_transit_order_line_id:= l_new_ins_header_rec.in_transit_order_line_id ;
31418       l_ins_header_rec.old_in_transit_order_line_num := l_old_ins_header_rec.in_transit_order_line_number ;
31419       l_ins_header_rec.new_in_transit_order_line_num := l_new_ins_header_rec.in_transit_order_line_number ;
31420       l_ins_header_rec.old_in_transit_order_number := l_old_ins_header_rec.in_transit_order_number ;
31421       l_ins_header_rec.new_in_transit_order_number := l_new_ins_header_rec.in_transit_order_number ;
31422       l_ins_header_rec.old_wip_job_id              := l_old_ins_header_rec.wip_job_id    ;
31423       l_ins_header_rec.new_wip_job_id              := l_new_ins_header_rec.wip_job_id    ;
31424       l_ins_header_rec.old_wip_entity_name         := l_old_ins_header_rec.wip_entity_name ;
31425       l_ins_header_rec.new_wip_entity_name         := l_new_ins_header_rec.wip_entity_name ;
31426       l_ins_header_rec.old_po_order_line_id        := l_old_ins_header_rec.po_order_line_id;
31427       l_ins_header_rec.new_po_order_line_id        := l_new_ins_header_rec.po_order_line_id;
31428       l_ins_header_rec.old_last_oe_order_line_id   := l_old_ins_header_rec.last_oe_order_line_id ;
31429       l_ins_header_rec.new_last_oe_order_line_id   := l_new_ins_header_rec.last_oe_order_line_id ;
31430       l_ins_header_rec.old_last_oe_rma_line_id     := l_old_ins_header_rec.last_oe_rma_line_id ;
31431       l_ins_header_rec.new_last_oe_rma_line_id     := l_new_ins_header_rec.last_oe_rma_line_id ;
31432       l_ins_header_rec.old_last_po_po_line_id      := l_old_ins_header_rec.last_po_po_line_id ;
31433       l_ins_header_rec.new_last_po_po_line_id      := l_new_ins_header_rec.last_po_po_line_id ;
31434       l_ins_header_rec.old_last_oe_po_number       := l_old_ins_header_rec.last_oe_po_number ;
31435       l_ins_header_rec.new_last_oe_po_number       := l_new_ins_header_rec.last_oe_po_number ;
31436       l_ins_header_rec.old_last_wip_job_id         := l_old_ins_header_rec.last_wip_job_id ;
31437       l_ins_header_rec.new_last_wip_job_id         := l_new_ins_header_rec.last_wip_job_id ;
31438       l_ins_header_rec.old_last_pa_project_id      := l_old_ins_header_rec.last_pa_project_id ;
31439       l_ins_header_rec.new_last_pa_project_id      := l_new_ins_header_rec.last_pa_project_id ;
31440       l_ins_header_rec.old_last_pa_task_id         := l_old_ins_header_rec.last_pa_task_id ;
31441       l_ins_header_rec.new_last_pa_task_id         := l_new_ins_header_rec.last_pa_task_id ;
31442       l_ins_header_rec.old_last_oe_agreement_id    := l_old_ins_header_rec.last_oe_agreement_id ;
31443       l_ins_header_rec.new_last_oe_agreement_id    := l_new_ins_header_rec.last_oe_agreement_id ;
31444       l_ins_header_rec.old_install_date            := l_old_ins_header_rec.install_date ;       --added for 2671179
31445       l_ins_header_rec.new_install_date            := l_new_ins_header_rec.install_date ;       --added for 2671179
31446       l_ins_header_rec.old_manually_created_flag   := NULL ;
31447       l_ins_header_rec.new_manually_created_flag   := NULL ;
31448       l_ins_header_rec.old_return_by_date          := l_old_ins_header_rec.return_by_date ;     --added for 2671179
31449       l_ins_header_rec.new_return_by_date          := l_new_ins_header_rec.return_by_date ;     --added for 2671179
31450       l_ins_header_rec.old_actual_return_date      := l_old_ins_header_rec.actual_return_date ; --added for 2671179
31451       l_ins_header_rec.new_actual_return_date      := l_new_ins_header_rec.actual_return_date ; --added for 2671179
31452       l_ins_header_rec.old_creation_complete_flag  := NULL ;
31453       l_ins_header_rec.new_creation_complete_flag  := NULL ;
31454       l_ins_header_rec.old_completeness_flag       := l_old_ins_header_rec.completeness_flag ;
31455       l_ins_header_rec.new_completeness_flag       := l_new_ins_header_rec.completeness_flag ;
31456       l_ins_header_rec.old_context                 := l_old_ins_header_rec.context ;
31457       l_ins_header_rec.new_context                 := l_new_ins_header_rec.context ;
31458       l_ins_header_rec.old_attribute1              := l_old_ins_header_rec.attribute1 ;
31459       l_ins_header_rec.new_attribute1              := l_new_ins_header_rec.attribute1 ;
31460       l_ins_header_rec.old_attribute2              := l_old_ins_header_rec.attribute2 ;
31461       l_ins_header_rec.new_attribute2              := l_new_ins_header_rec.attribute2 ;
31462       l_ins_header_rec.old_attribute3              := l_old_ins_header_rec.attribute3 ;
31463       l_ins_header_rec.new_attribute3              := l_new_ins_header_rec.attribute3 ;
31464       l_ins_header_rec.old_attribute4              := l_old_ins_header_rec.attribute4 ;
31465       l_ins_header_rec.new_attribute4              := l_new_ins_header_rec.attribute4 ;
31466       l_ins_header_rec.old_attribute5              := l_old_ins_header_rec.attribute5 ;
31467       l_ins_header_rec.new_attribute5              := l_new_ins_header_rec.attribute5 ;
31468       l_ins_header_rec.old_attribute6              := l_old_ins_header_rec.attribute6 ;
31469       l_ins_header_rec.new_attribute6              := l_new_ins_header_rec.attribute6 ;
31470       l_ins_header_rec.old_attribute7              := l_old_ins_header_rec.attribute7 ;
31471       l_ins_header_rec.new_attribute7              := l_new_ins_header_rec.attribute7 ;
31472       l_ins_header_rec.old_attribute8              := l_old_ins_header_rec.attribute8 ;
31473       l_ins_header_rec.new_attribute8              := l_new_ins_header_rec.attribute8 ;
31474       l_ins_header_rec.old_attribute9              := l_old_ins_header_rec.attribute9 ;
31475       l_ins_header_rec.new_attribute9              := l_new_ins_header_rec.attribute9 ;
31476       l_ins_header_rec.old_attribute10             := l_old_ins_header_rec.attribute10 ;
31477       l_ins_header_rec.new_attribute10             := l_new_ins_header_rec.attribute10 ;
31478       l_ins_header_rec.old_attribute11             := l_old_ins_header_rec.attribute11 ;
31479       l_ins_header_rec.new_attribute11             := l_new_ins_header_rec.attribute11 ;
31480       l_ins_header_rec.old_attribute12             := l_old_ins_header_rec.attribute12 ;
31481       l_ins_header_rec.new_attribute12             := l_new_ins_header_rec.attribute12 ;
31482       l_ins_header_rec.old_attribute13             := l_old_ins_header_rec.attribute13 ;
31483       l_ins_header_rec.new_attribute13             := l_new_ins_header_rec.attribute13 ;
31484       l_ins_header_rec.old_attribute14             := l_old_ins_header_rec.attribute14 ;
31485       l_ins_header_rec.new_attribute14             := l_new_ins_header_rec.attribute14 ;
31486       l_ins_header_rec.old_attribute15             := l_old_ins_header_rec.attribute15 ;
31487       l_ins_header_rec.new_attribute15             := l_new_ins_header_rec.attribute15 ;
31488       l_ins_header_rec.old_last_txn_line_detail_id := l_old_ins_header_rec.last_txn_line_detail_id ;
31489       l_ins_header_rec.new_last_txn_line_detail_id := l_new_ins_header_rec.last_txn_line_detail_id ;
31490       l_ins_header_rec.old_install_location_type_code := l_old_ins_header_rec.install_location_type_code ;
31491       l_ins_header_rec.new_install_location_type_code := l_new_ins_header_rec.install_location_type_code ;
31492       l_ins_header_rec.old_install_location_id     := l_old_ins_header_rec.install_location_id ;
31493       l_ins_header_rec.new_install_location_id     := l_new_ins_header_rec.install_location_id ;
31494       l_ins_header_rec.old_instance_usage_code     := l_old_ins_header_rec.instance_usage_code ;
31495       l_ins_header_rec.new_instance_usage_code     := l_new_ins_header_rec.instance_usage_code ;
31496       l_ins_header_rec.old_current_loc_address1    := l_old_ins_header_rec.current_loc_address1 ;
31497       l_ins_header_rec.new_current_loc_address1    := l_new_ins_header_rec.current_loc_address1 ;
31498       l_ins_header_rec.old_current_loc_address2    := l_old_ins_header_rec.current_loc_address2 ;
31499       l_ins_header_rec.new_current_loc_address2    := l_new_ins_header_rec.current_loc_address2 ;
31500       l_ins_header_rec.old_current_loc_address3    := l_old_ins_header_rec.current_loc_address3 ;
31501       l_ins_header_rec.new_current_loc_address3    := l_new_ins_header_rec.current_loc_address3 ;
31502       l_ins_header_rec.old_current_loc_address4    := l_old_ins_header_rec.current_loc_address4 ;
31503       l_ins_header_rec.new_current_loc_address4    := l_new_ins_header_rec.current_loc_address4 ;
31504       l_ins_header_rec.old_current_loc_city        := l_old_ins_header_rec.current_loc_city     ;
31505       l_ins_header_rec.new_current_loc_city        := l_new_ins_header_rec.current_loc_city     ;
31506       l_ins_header_rec.old_current_loc_postal_code := l_old_ins_header_rec.current_loc_postal_code ;
31507       l_ins_header_rec.new_current_loc_postal_code := l_new_ins_header_rec.current_loc_postal_code ;
31508       l_ins_header_rec.old_current_loc_country     := l_old_ins_header_rec.current_loc_country     ;
31509       l_ins_header_rec.new_current_loc_country     := l_new_ins_header_rec.current_loc_country     ;
31510       l_ins_header_rec.old_current_loc_state       := l_old_ins_header_rec.current_loc_state     ;
31511       l_ins_header_rec.new_current_loc_state       := l_new_ins_header_rec.current_loc_state     ;
31512       l_ins_header_rec.old_sales_order_number      := l_old_ins_header_rec.sales_order_number      ;
31513       l_ins_header_rec.new_sales_order_number      := l_new_ins_header_rec.sales_order_number      ;
31514       l_ins_header_rec.old_sales_order_line_number := l_old_ins_header_rec.sales_order_line_number ;
31515       l_ins_header_rec.new_sales_order_line_number := l_new_ins_header_rec.sales_order_line_number ;
31516       l_ins_header_rec.old_sales_order_date        := l_old_ins_header_rec.sales_order_date        ;
31517       l_ins_header_rec.new_sales_order_date        := l_new_ins_header_rec.sales_order_date        ;
31518       l_ins_header_rec.old_purchase_order_number   := l_old_ins_header_rec.purchase_order_number   ;
31519       l_ins_header_rec.new_purchase_order_number   := l_new_ins_header_rec.purchase_order_number   ;
31520       l_ins_header_rec.old_instance_usage_name     := l_old_ins_header_rec.instance_usage_name     ;
31521       l_ins_header_rec.new_instance_usage_name     := l_new_ins_header_rec.instance_usage_name     ;
31522       l_ins_header_rec.old_install_loc_address1    := l_old_ins_header_rec.install_loc_address1 ;
31523       l_ins_header_rec.new_install_loc_address1    := l_new_ins_header_rec.install_loc_address1 ;
31524       l_ins_header_rec.old_install_loc_address2    := l_old_ins_header_rec.install_loc_address2 ;
31525       l_ins_header_rec.new_install_loc_address2    := l_new_ins_header_rec.install_loc_address2 ;
31526       l_ins_header_rec.old_install_loc_address3    := l_old_ins_header_rec.install_loc_address3 ;
31527       l_ins_header_rec.new_install_loc_address3    := l_new_ins_header_rec.install_loc_address3 ;
31528       l_ins_header_rec.old_install_loc_address4    := l_old_ins_header_rec.install_loc_address4 ;
31529       l_ins_header_rec.new_install_loc_address4    := l_new_ins_header_rec.install_loc_address4 ;
31530       l_ins_header_rec.old_install_loc_city        := l_old_ins_header_rec.install_loc_city     ;
31531       l_ins_header_rec.new_install_loc_city        := l_new_ins_header_rec.install_loc_city     ;
31532       l_ins_header_rec.old_install_loc_postal_code := l_old_ins_header_rec.install_loc_postal_code ;
31533       l_ins_header_rec.new_install_loc_postal_code := l_new_ins_header_rec.install_loc_postal_code ;
31534       l_ins_header_rec.old_install_loc_country     := l_old_ins_header_rec.install_loc_country     ;
31535       l_ins_header_rec.new_install_loc_country     := l_new_ins_header_rec.install_loc_country     ;
31536       l_ins_header_rec.old_install_loc_state       := l_old_ins_header_rec.install_loc_state     ;
31537       l_ins_header_rec.new_install_loc_state       := l_new_ins_header_rec.install_loc_state     ;
31538       l_ins_header_rec.old_oe_agreement_name       := l_old_ins_header_rec.last_oe_agreement_name ;
31539       l_ins_header_rec.new_oe_agreement_name       := l_new_ins_header_rec.last_oe_agreement_name ;
31540       l_ins_header_rec.old_inv_locator_name        := l_old_ins_header_rec.inv_locator_name     ;
31541       l_ins_header_rec.new_inv_locator_name        := l_new_ins_header_rec.inv_locator_name     ;
31542       l_ins_header_rec.old_current_location_number := l_old_ins_header_rec.current_loc_number;
31543       l_ins_header_rec.new_current_location_number := l_new_ins_header_rec.current_loc_number;
31544       l_ins_header_rec.old_install_location_number := l_old_ins_header_rec.install_loc_number;
31545       l_ins_header_rec.new_install_location_number := l_new_ins_header_rec.install_loc_number;
31546       --start of code change for eam integration--
31547       l_ins_header_rec.old_network_asset_flag      := l_old_ins_header_rec.network_asset_flag ;
31548       l_ins_header_rec.new_network_asset_flag      := l_new_ins_header_rec.network_asset_flag ;
31549       l_ins_header_rec.old_maintainable_flag       := l_old_ins_header_rec.maintainable_flag ;
31550       l_ins_header_rec.new_maintainable_flag       := l_new_ins_header_rec.maintainable_flag ;
31551       l_ins_header_rec.old_pn_location_id          := l_old_ins_header_rec.pn_location_id ;
31552       l_ins_header_rec.new_pn_location_id          := l_new_ins_header_rec.pn_location_id ;
31553       l_ins_header_rec.old_asset_criticality_code  := l_old_ins_header_rec.asset_criticality_code ;
31554       l_ins_header_rec.new_asset_criticality_code  := l_new_ins_header_rec.asset_criticality_code ;
31555       l_ins_header_rec.old_category_id             := l_old_ins_header_rec.category_id ;
31556       l_ins_header_rec.new_category_id             := l_new_ins_header_rec.category_id ;
31557 
31558       --start of code for bug 4754569--
31559       l_ins_header_rec.old_criticality             := l_old_ins_header_rec.criticality ;
31560       l_ins_header_rec.new_criticality             := l_new_ins_header_rec.criticality ;
31561       l_ins_header_rec.old_category_name           := l_old_ins_header_rec.category_name ;
31562       l_ins_header_rec.new_category_name           := l_new_ins_header_rec.category_name ;
31563       --end of code for bug 4754569--
31564 
31565       l_ins_header_rec.old_maintainable                := l_old_ins_header_rec.maintainable; --for bug 5211068
31566       l_ins_header_rec.new_maintainable                := l_new_ins_header_rec.maintainable;
31567 
31568       l_ins_header_rec.old_equipment_gen_object_id := l_old_ins_header_rec.equipment_gen_object_id ;
31569       l_ins_header_rec.new_equipment_gen_object_id := l_new_ins_header_rec.equipment_gen_object_id ;
31570       l_ins_header_rec.old_instantiation_flag      := l_old_ins_header_rec.instantiation_flag ;
31571       l_ins_header_rec.new_instantiation_flag      := l_new_ins_header_rec.instantiation_flag ;
31572       l_ins_header_rec.old_linear_location_id      := l_old_ins_header_rec.linear_location_id ;
31573       l_ins_header_rec.new_linear_location_id      := l_new_ins_header_rec.linear_location_id ;
31574       l_ins_header_rec.old_operational_log_flag    := l_old_ins_header_rec.operational_log_flag ;
31575       l_ins_header_rec.new_operational_log_flag    := l_new_ins_header_rec.operational_log_flag ;
31576       l_ins_header_rec.old_checkin_status          := l_old_ins_header_rec.checkin_status;
31577       l_ins_header_rec.new_checkin_status          := l_new_ins_header_rec.checkin_status;
31578       l_ins_header_rec.old_supplier_warranty_exp_date := l_old_ins_header_rec.supplier_warranty_exp_date;
31579       l_ins_header_rec.new_supplier_warranty_exp_date := l_new_ins_header_rec.supplier_warranty_exp_date;
31580       l_ins_header_rec.old_attribute16              := l_old_ins_header_rec.attribute16 ;
31581       l_ins_header_rec.new_attribute16              := l_new_ins_header_rec.attribute16 ;
31582       l_ins_header_rec.old_attribute17              := l_old_ins_header_rec.attribute17 ;
31583       l_ins_header_rec.new_attribute17              := l_new_ins_header_rec.attribute17 ;
31584       l_ins_header_rec.old_attribute18              := l_old_ins_header_rec.attribute18 ;
31585       l_ins_header_rec.new_attribute18              := l_new_ins_header_rec.attribute18 ;
31586       l_ins_header_rec.old_attribute19              := l_old_ins_header_rec.attribute19 ;
31587       l_ins_header_rec.new_attribute19              := l_new_ins_header_rec.attribute19 ;
31588       l_ins_header_rec.old_attribute20              := l_old_ins_header_rec.attribute20 ;
31589       l_ins_header_rec.new_attribute20              := l_new_ins_header_rec.attribute20 ;
31590       l_ins_header_rec.old_attribute21              := l_old_ins_header_rec.attribute21 ;
31591       l_ins_header_rec.new_attribute21              := l_new_ins_header_rec.attribute21 ;
31592       l_ins_header_rec.old_attribute22              := l_old_ins_header_rec.attribute22 ;
31593       l_ins_header_rec.new_attribute22              := l_new_ins_header_rec.attribute22 ;
31594       l_ins_header_rec.old_attribute23              := l_old_ins_header_rec.attribute23 ;
31595       l_ins_header_rec.new_attribute23              := l_new_ins_header_rec.attribute23 ;
31596       l_ins_header_rec.old_attribute24              := l_old_ins_header_rec.attribute24 ;
31597       l_ins_header_rec.new_attribute24              := l_new_ins_header_rec.attribute24 ;
31598       l_ins_header_rec.old_attribute25              := l_old_ins_header_rec.attribute25 ;
31599       l_ins_header_rec.new_attribute25              := l_new_ins_header_rec.attribute25 ;
31600       l_ins_header_rec.old_attribute26              := l_old_ins_header_rec.attribute26 ;
31601       l_ins_header_rec.new_attribute26              := l_new_ins_header_rec.attribute26 ;
31602       l_ins_header_rec.old_attribute27              := l_old_ins_header_rec.attribute27 ;
31603       l_ins_header_rec.new_attribute27              := l_new_ins_header_rec.attribute27 ;
31604       l_ins_header_rec.old_attribute28              := l_old_ins_header_rec.attribute28 ;
31605       l_ins_header_rec.new_attribute28              := l_new_ins_header_rec.attribute28 ;
31606       l_ins_header_rec.old_attribute29              := l_old_ins_header_rec.attribute29 ;
31607       l_ins_header_rec.new_attribute29              := l_new_ins_header_rec.attribute29 ;
31608       l_ins_header_rec.old_attribute30              := l_old_ins_header_rec.attribute30 ;
31609       l_ins_header_rec.new_attribute30              := l_new_ins_header_rec.attribute30 ;
31610       --end of code change for eam integration--
31611 -- Addition of columns for FA Integration
31612       l_ins_header_rec.old_payables_unit_price      := l_old_ins_header_rec.payables_unit_price;
31613       l_ins_header_rec.new_payables_unit_price      := l_new_ins_header_rec.payables_unit_price;
31614       l_ins_header_rec.old_payables_currency_code   := l_old_ins_header_rec.payables_currency_code;
31615       l_ins_header_rec.new_payables_currency_code   := l_new_ins_header_rec.payables_currency_code;
31616       l_ins_header_rec.old_purchase_unit_price      := l_old_ins_header_rec.purchase_unit_price;
31617       l_ins_header_rec.new_purchase_unit_price      := l_new_ins_header_rec.purchase_unit_price;
31618       l_ins_header_rec.old_purchase_currency_code   := l_old_ins_header_rec.purchase_currency_code;
31619       l_ins_header_rec.new_purchase_currency_code   := l_new_ins_header_rec.purchase_currency_code;
31620       l_ins_header_rec.old_sales_unit_price         := l_old_ins_header_rec.sales_unit_price;
31621       l_ins_header_rec.new_sales_unit_price         := l_new_ins_header_rec.sales_unit_price;
31622       l_ins_header_rec.old_sales_currency_code      := l_old_ins_header_rec.sales_currency_code;
31623       l_ins_header_rec.new_sales_currency_code      := l_new_ins_header_rec.sales_currency_code;
31624       l_ins_header_rec.old_operational_status_code  := l_old_ins_header_rec.operational_status_code;
31625       l_ins_header_rec.new_operational_status_code  := l_new_ins_header_rec.operational_status_code;
31626 
31627 			l_ins_header_rec.old_instance_description  		:= l_old_ins_header_rec.instance_description;
31628 			l_ins_header_rec.new_instance_description  		:= l_new_ins_header_rec.instance_description;
31629              -- End addition of columns for FA Integration
31630       i:=i+1;
31631       x_instance_history_tbl(i):= l_ins_header_rec;
31632 
31633 END LOOP;
31634 
31635     -- End of API body
31636 
31637         -- Standard check of p_commit.
31638         /*
31639         IF FND_API.To_Boolean( p_commit ) THEN
31640                 COMMIT WORK;
31641         END IF;
31642         */
31643 
31644     /***** srramakr commented for bug # 3304439
31645     -- Check for the profile option and disable the trace
31646         IF (fnd_profile.value('CSI_ENABLE_SQL_TRACE') = 'Y') THEN
31647                    dbms_session.set_sql_trace(false);
31648     END IF;
31649         -- End disable trace
31650     ****/
31651 
31652         -- Standard call to get message count and if count is  get message info.
31653         FND_MSG_PUB.Count_And_Get
31654                 (p_count        =>      x_msg_count ,
31655              p_data     =>      x_msg_data      );
31656 EXCEPTION
31657         WHEN OTHERS THEN
31658                 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
31659                 /*
31660                 IF fnd_api.to_boolean(p_commit)
31661                 THEN
31662                 ROLLBACK TO get_instance_hist;
31663                 END IF;
31664                 */
31665                 IF FND_MSG_PUB.Check_Msg_Level
31666                      (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
31667                 THEN
31668                    FND_MSG_PUB.Add_Exc_Msg
31669                     ( G_PKG_NAME, l_api_name );
31670                 END IF;
31671                 FND_MSG_PUB.Count_And_Get
31672                 (       p_count         =>      x_msg_count,
31673                         p_data      =>      x_msg_data);
31674 
31675 
31676 END get_instance_hist ;
31677 
31678 /*---------------------------------------------------*/
31679 /* procedure name: get_ext_attrib_val_hist           */
31680 /* description   : Retreive history transactions     */
31681 /*                 for extended attribute values     */
31682 /*---------------------------------------------------*/
31683 
31684 PROCEDURE get_ext_attrib_val_hist
31685 ( p_api_version             IN  NUMBER
31686  ,p_commit                  IN  VARCHAR2
31687  ,p_init_msg_list           IN  VARCHAR2
31688  ,p_validation_level        IN  NUMBER
31689  ,p_transaction_id          IN  NUMBER
31690  ,x_ext_attrib_val_hist_tbl OUT NOCOPY csi_datastructures_pub.ext_attrib_val_history_tbl
31691  ,x_return_status           OUT NOCOPY VARCHAR2
31692  ,x_msg_count               OUT NOCOPY NUMBER
31693  ,x_msg_data                OUT NOCOPY VARCHAR2
31694  )  IS
31695 CURSOR txn_hist_csr (p_txn_id IN NUMBER) IS
31696    SELECT ieh.ATTRIBUTE_VALUE_HISTORY_ID     ,
31697           ieh.ATTRIBUTE_VALUE_ID             ,
31698           ieh.TRANSACTION_ID                 ,
31699           ieh.OLD_ATTRIBUTE_VALUE            ,
31700           ieh.NEW_ATTRIBUTE_VALUE            ,
31701           ieh.OLD_ACTIVE_START_DATE          ,
31702           ieh.NEW_ACTIVE_START_DATE          ,
31703           ieh.OLD_ACTIVE_END_DATE            ,
31704           ieh.NEW_ACTIVE_END_DATE            ,
31705           ieh.OLD_CONTEXT                    ,
31706           ieh.NEW_CONTEXT                    ,
31707           ieh.OLD_ATTRIBUTE1                 ,
31708           ieh.NEW_ATTRIBUTE1                 ,
31709           ieh.OLD_ATTRIBUTE2                 ,
31710           ieh.NEW_ATTRIBUTE2                 ,
31711           ieh.OLD_ATTRIBUTE3                 ,
31712           ieh.NEW_ATTRIBUTE3                 ,
31713           ieh.OLD_ATTRIBUTE4                 ,
31714           ieh.NEW_ATTRIBUTE4                 ,
31715           ieh.OLD_ATTRIBUTE5                 ,
31716           ieh.NEW_ATTRIBUTE5                 ,
31717           ieh.OLD_ATTRIBUTE6                 ,
31718           ieh.NEW_ATTRIBUTE6                 ,
31719           ieh.OLD_ATTRIBUTE7                 ,
31720           ieh.NEW_ATTRIBUTE7                 ,
31721           ieh.OLD_ATTRIBUTE8                 ,
31722           ieh.NEW_ATTRIBUTE8                 ,
31723           ieh.OLD_ATTRIBUTE9                 ,
31724           ieh.NEW_ATTRIBUTE9                 ,
31725           ieh.OLD_ATTRIBUTE10                ,
31726           ieh.NEW_ATTRIBUTE10                ,
31727           ieh.OLD_ATTRIBUTE11                ,
31728           ieh.NEW_ATTRIBUTE11                ,
31729           ieh.OLD_ATTRIBUTE12                ,
31730           ieh.NEW_ATTRIBUTE12                ,
31731           ieh.OLD_ATTRIBUTE13                ,
31732           ieh.NEW_ATTRIBUTE13                ,
31733           ieh.OLD_ATTRIBUTE14                ,
31734           ieh.NEW_ATTRIBUTE14                ,
31735           ieh.OLD_ATTRIBUTE15                ,
31736           ieh.NEW_ATTRIBUTE15                ,
31737           ieh.FULL_DUMP_FLAG                 ,
31738           ieh.OBJECT_VERSION_NUMBER          ,
31739           ie.INSTANCE_ID                     ,
31740           iea.attribute_code
31741    FROM   csi_iea_values_h ieh,
31742           csi_iea_values   ie ,
31743           csi_i_extended_attribs iea
31744    WHERE  ieh.transaction_id = p_txn_id
31745    AND    ieh.attribute_value_id = ie.attribute_value_id
31746    AND    ie.attribute_id= iea.attribute_id;
31747 
31748 l_old_ext_header_rec  csi_datastructures_pub.extend_attrib_values_rec;
31749 l_new_ext_header_rec  csi_datastructures_pub.extend_attrib_values_rec;
31750 l_ext_header_rec      csi_datastructures_pub.ext_attrib_val_history_rec;
31751 l_temp_ext_rec        csi_datastructures_pub.ext_attrib_val_history_rec;
31752 l_api_name            CONSTANT   VARCHAR2(30)   := 'get_ext_attrib_val_hist';
31753 l_api_version         CONSTANT   NUMBER         := 1.0;
31754 i                     NUMBER := 0;
31755 BEGIN
31756         /*
31757         IF fnd_api.to_boolean(p_commit)
31758         THEN
31759            SAVEPOINT    get_ext_attrib_val_hist;
31760         END IF;
31761         */
31762 
31763         -- Standard call to check for call compatibility.
31764         IF NOT FND_API.Compatible_API_Call (l_api_version       ,
31765                                             p_api_version       ,
31766                                             l_api_name          ,
31767                                             G_PKG_NAME          )
31768         THEN
31769                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
31770         END IF;
31771 
31772     -- Initialize message list if p_init_msg_list is set to TRUE.
31773         IF FND_API.to_Boolean( p_init_msg_list ) THEN
31774                 FND_MSG_PUB.initialize;
31775         END IF;
31776 
31777         --  Initialize API return status to success
31778         x_return_status := FND_API.G_RET_STS_SUCCESS;
31779 
31780    /***** srramakr commented for bug # 3304439
31781    -- Check for the profile option and enable trace
31782    IF (fnd_profile.value('CSI_ENABLE_SQL_TRACE') = 'Y') THEN
31783                    dbms_session.set_sql_trace(TRUE);
31784    END IF;
31785    -- End enable trace
31786    ****/
31787 
31788    -- Start API body
31789    --
31790 
31791 
31792 
31793 
31794 FOR l_hist_csr IN txn_hist_csr (p_transaction_id)
31795 LOOP
31796           l_ext_header_rec := l_temp_ext_rec;
31797            --
31798           IF NVL(l_hist_csr.old_attribute_value,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute_value,fnd_api.g_miss_char)
31799           THEN
31800             l_old_ext_header_rec.attribute_value := NULL;
31801             l_new_ext_header_rec.attribute_value := NULL;
31802           ELSE
31803             l_old_ext_header_rec.attribute_value := l_hist_csr.old_attribute_value;
31804             l_new_ext_header_rec.attribute_value := l_hist_csr.new_attribute_value;
31805           END IF;
31806           --
31807           IF NVL(l_hist_csr.old_active_start_date,fnd_api.g_miss_date) = NVL(l_hist_csr.new_active_start_date,fnd_api.g_miss_date)
31808           THEN
31809             l_old_ext_header_rec.active_start_date := NULL;
31810             l_new_ext_header_rec.active_start_date := NULL;
31811           ELSE
31812             l_old_ext_header_rec.active_start_date := l_hist_csr.old_active_start_date;
31813             l_new_ext_header_rec.active_start_date := l_hist_csr.new_active_start_date;
31814           END IF;
31815           --
31816           IF NVL(l_hist_csr.old_active_end_date,fnd_api.g_miss_date) = NVL(l_hist_csr.new_active_end_date,fnd_api.g_miss_date)
31817           THEN
31818             l_old_ext_header_rec.active_end_date := NULL;
31819             l_new_ext_header_rec.active_end_date := NULL;
31820           ELSE
31821             l_old_ext_header_rec.active_end_date := l_hist_csr.old_active_end_date;
31822             l_new_ext_header_rec.active_end_date := l_hist_csr.new_active_end_date;
31823           END IF;
31824           --
31825           IF NVL(l_hist_csr.old_context,fnd_api.g_miss_char) = NVL(l_hist_csr.new_context,fnd_api.g_miss_char)
31826           THEN
31827             l_old_ext_header_rec.context := NULL;
31828             l_new_ext_header_rec.context := NULL;
31829           ELSE
31830             l_old_ext_header_rec.context := l_hist_csr.old_context;
31831             l_new_ext_header_rec.context := l_hist_csr.new_context;
31832           END IF;
31833           --
31834           IF NVL(l_hist_csr.old_attribute1,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute1,fnd_api.g_miss_char)
31835           THEN
31836             l_old_ext_header_rec.attribute1 := NULL;
31837             l_new_ext_header_rec.attribute1 := NULL;
31838           ELSE
31839             l_old_ext_header_rec.attribute1 := l_hist_csr.old_attribute1;
31840             l_new_ext_header_rec.attribute1 := l_hist_csr.new_attribute1;
31841           END IF;
31842           --
31843           IF NVL(l_hist_csr.old_attribute2,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute2,fnd_api.g_miss_char)
31844           THEN
31845             l_old_ext_header_rec.attribute2 := NULL;
31846             l_new_ext_header_rec.attribute2 := NULL;
31847           ELSE
31848             l_old_ext_header_rec.attribute2 := l_hist_csr.old_attribute2;
31849             l_new_ext_header_rec.attribute2 := l_hist_csr.new_attribute2;
31850           END IF;
31851           --
31852           IF NVL(l_hist_csr.old_attribute3,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute3,fnd_api.g_miss_char)
31853           THEN
31854             l_old_ext_header_rec.attribute3 := NULL;
31855             l_new_ext_header_rec.attribute3 := NULL;
31856           ELSE
31857             l_old_ext_header_rec.attribute3 := l_hist_csr.old_attribute3;
31858             l_new_ext_header_rec.attribute3 := l_hist_csr.new_attribute3;
31859           END IF;
31860           --
31861           IF NVL(l_hist_csr.old_attribute4,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute4,fnd_api.g_miss_char)
31862           THEN
31863             l_old_ext_header_rec.attribute4 := NULL;
31864             l_new_ext_header_rec.attribute4 := NULL;
31865           ELSE
31866             l_old_ext_header_rec.attribute4 := l_hist_csr.old_attribute4;
31867             l_new_ext_header_rec.attribute4 := l_hist_csr.new_attribute4;
31868           END IF;
31869           --
31870           IF NVL(l_hist_csr.old_attribute5,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute5,fnd_api.g_miss_char)
31871           THEN
31872             l_old_ext_header_rec.attribute5 := NULL;
31873             l_new_ext_header_rec.attribute5 := NULL;
31874           ELSE
31875             l_old_ext_header_rec.attribute5 := l_hist_csr.old_attribute5;
31876             l_new_ext_header_rec.attribute5 := l_hist_csr.new_attribute5;
31877           END IF;
31878           --
31879           IF NVL(l_hist_csr.old_attribute6,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute6,fnd_api.g_miss_char)
31880           THEN
31881             l_old_ext_header_rec.attribute6 := NULL;
31882             l_new_ext_header_rec.attribute6 := NULL;
31883           ELSE
31884             l_old_ext_header_rec.attribute6 := l_hist_csr.old_attribute6;
31885             l_new_ext_header_rec.attribute6 := l_hist_csr.new_attribute6;
31886           END IF;
31887           --
31888           IF NVL(l_hist_csr.old_attribute7,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute7,fnd_api.g_miss_char)
31889           THEN
31890             l_old_ext_header_rec.attribute7 := NULL;
31891             l_new_ext_header_rec.attribute7 := NULL;
31892           ELSE
31893             l_old_ext_header_rec.attribute7 := l_hist_csr.old_attribute7;
31894             l_new_ext_header_rec.attribute7 := l_hist_csr.new_attribute7;
31895           END IF;
31896           --
31897           IF NVL(l_hist_csr.old_attribute8,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute8,fnd_api.g_miss_char)
31898           THEN
31899             l_old_ext_header_rec.attribute8 := NULL;
31900             l_new_ext_header_rec.attribute8 := NULL;
31901           ELSE
31902             l_old_ext_header_rec.attribute8 := l_hist_csr.old_attribute8;
31903             l_new_ext_header_rec.attribute8 := l_hist_csr.new_attribute8;
31904           END IF;
31905           --
31906           IF NVL(l_hist_csr.old_attribute9,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute9,fnd_api.g_miss_char)
31907           THEN
31908             l_old_ext_header_rec.attribute9 := NULL;
31909             l_new_ext_header_rec.attribute9 := NULL;
31910           ELSE
31911             l_old_ext_header_rec.attribute9 := l_hist_csr.old_attribute9;
31912             l_new_ext_header_rec.attribute9 := l_hist_csr.new_attribute9;
31913           END IF;
31914           --
31915           IF NVL(l_hist_csr.old_attribute10,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute10,fnd_api.g_miss_char)
31916           THEN
31917             l_old_ext_header_rec.attribute10 := NULL;
31918             l_new_ext_header_rec.attribute10 := NULL;
31919           ELSE
31920             l_old_ext_header_rec.attribute10 := l_hist_csr.old_attribute10;
31921             l_new_ext_header_rec.attribute10 := l_hist_csr.new_attribute10;
31922           END IF;
31923           --
31924           IF NVL(l_hist_csr.old_attribute11,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute11,fnd_api.g_miss_char)
31925           THEN
31926             l_old_ext_header_rec.attribute11 := NULL;
31927             l_new_ext_header_rec.attribute11 := NULL;
31928           ELSE
31929             l_old_ext_header_rec.attribute11 := l_hist_csr.old_attribute11;
31930             l_new_ext_header_rec.attribute11 := l_hist_csr.new_attribute11;
31931           END IF;
31932           --
31933           IF NVL(l_hist_csr.old_attribute12,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute12,fnd_api.g_miss_char)
31934           THEN
31935             l_old_ext_header_rec.attribute12 := NULL;
31936             l_new_ext_header_rec.attribute12 := NULL;
31937           ELSE
31938             l_old_ext_header_rec.attribute12 := l_hist_csr.old_attribute12;
31939             l_new_ext_header_rec.attribute12 := l_hist_csr.new_attribute12;
31940           END IF;
31941           --
31942           IF NVL(l_hist_csr.old_attribute13,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute13,fnd_api.g_miss_char)
31943           THEN
31944             l_old_ext_header_rec.attribute13 := NULL;
31945             l_new_ext_header_rec.attribute13 := NULL;
31946           ELSE
31947             l_old_ext_header_rec.attribute13 := l_hist_csr.old_attribute13;
31948             l_new_ext_header_rec.attribute13 := l_hist_csr.new_attribute13;
31949           END IF;
31950           --
31951           IF NVL(l_hist_csr.old_attribute14,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute14,fnd_api.g_miss_char)
31952           THEN
31953             l_old_ext_header_rec.attribute14 := NULL;
31954             l_new_ext_header_rec.attribute14 := NULL;
31955           ELSE
31956             l_old_ext_header_rec.attribute14 := l_hist_csr.old_attribute14;
31957             l_new_ext_header_rec.attribute14 := l_hist_csr.new_attribute14;
31958           END IF;
31959           --
31960           IF NVL(l_hist_csr.old_attribute15,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute15,fnd_api.g_miss_char)
31961           THEN
31962             l_old_ext_header_rec.attribute15 := NULL;
31963             l_new_ext_header_rec.attribute15 := NULL;
31964           ELSE
31965             l_old_ext_header_rec.attribute15 := l_hist_csr.old_attribute15;
31966             l_new_ext_header_rec.attribute15 := l_hist_csr.new_attribute15;
31967           END IF;
31968           --
31969           l_ext_header_rec.attribute_value_id     := l_hist_csr.attribute_value_id ;
31970           l_ext_header_rec.transaction_id         := p_transaction_id;
31971           l_ext_header_rec.old_attribute_value    := l_old_ext_header_rec.attribute_value ;
31972           l_ext_header_rec.new_attribute_value    := l_new_ext_header_rec.attribute_value ;
31973           l_ext_header_rec.old_active_start_date  := l_old_ext_header_rec.active_start_date ;
31974           l_ext_header_rec.new_active_start_date  := l_new_ext_header_rec.active_start_date ;
31975           l_ext_header_rec.old_active_end_date    := l_old_ext_header_rec.active_end_date ;
31976           l_ext_header_rec.new_active_end_date    := l_new_ext_header_rec.active_end_date ;
31977           l_ext_header_rec.old_context            := l_old_ext_header_rec.context ;
31978           l_ext_header_rec.new_context            := l_new_ext_header_rec.context ;
31979           l_ext_header_rec.old_attribute1         := l_old_ext_header_rec.attribute1 ;
31980           l_ext_header_rec.new_attribute1         := l_new_ext_header_rec.attribute1 ;
31981           l_ext_header_rec.old_attribute2         := l_old_ext_header_rec.attribute2 ;
31982           l_ext_header_rec.new_attribute2         := l_new_ext_header_rec.attribute2 ;
31983           l_ext_header_rec.old_attribute3         := l_old_ext_header_rec.attribute3 ;
31984           l_ext_header_rec.new_attribute3         := l_new_ext_header_rec.attribute3 ;
31985           l_ext_header_rec.old_attribute4         := l_old_ext_header_rec.attribute4 ;
31986           l_ext_header_rec.new_attribute4         := l_new_ext_header_rec.attribute4 ;
31987           l_ext_header_rec.old_attribute5         := l_old_ext_header_rec.attribute5 ;
31988           l_ext_header_rec.new_attribute5         := l_new_ext_header_rec.attribute5 ;
31989           l_ext_header_rec.old_attribute6         := l_old_ext_header_rec.attribute6 ;
31990           l_ext_header_rec.new_attribute6         := l_new_ext_header_rec.attribute6 ;
31991           l_ext_header_rec.old_attribute7         := l_old_ext_header_rec.attribute7 ;
31992           l_ext_header_rec.new_attribute7         := l_new_ext_header_rec.attribute7 ;
31993           l_ext_header_rec.old_attribute8         := l_old_ext_header_rec.attribute8 ;
31994           l_ext_header_rec.new_attribute8         := l_new_ext_header_rec.attribute8 ;
31995           l_ext_header_rec.old_attribute9         := l_old_ext_header_rec.attribute9 ;
31996           l_ext_header_rec.new_attribute9         := l_new_ext_header_rec.attribute9 ;
31997           l_ext_header_rec.old_attribute10        := l_old_ext_header_rec.attribute10 ;
31998           l_ext_header_rec.new_attribute10        := l_new_ext_header_rec.attribute10 ;
31999           l_ext_header_rec.old_attribute11        := l_old_ext_header_rec.attribute11 ;
32000           l_ext_header_rec.new_attribute11        := l_new_ext_header_rec.attribute11 ;
32001           l_ext_header_rec.old_attribute12        := l_old_ext_header_rec.attribute12 ;
32002           l_ext_header_rec.new_attribute12        := l_new_ext_header_rec.attribute12 ;
32003           l_ext_header_rec.old_attribute13        := l_old_ext_header_rec.attribute13 ;
32004           l_ext_header_rec.new_attribute13        := l_new_ext_header_rec.attribute13 ;
32005           l_ext_header_rec.old_attribute14        := l_old_ext_header_rec.attribute14 ;
32006           l_ext_header_rec.new_attribute14        := l_new_ext_header_rec.attribute14 ;
32007           l_ext_header_rec.old_attribute15        := l_old_ext_header_rec.attribute15 ;
32008           l_ext_header_rec.new_attribute15        := l_new_ext_header_rec.attribute15 ;
32009           l_ext_header_rec.attribute_code         := l_hist_csr.attribute_code ;
32010 
32011           i:=i+1;
32012 
32013           x_ext_attrib_val_hist_tbl(i):= l_ext_header_rec;
32014           x_ext_attrib_val_hist_tbl(i).instance_id := l_hist_csr.instance_id;
32015 
32016 END LOOP;
32017 
32018     -- End of API body
32019 
32020         -- Standard check of p_commit.
32021         /*
32022         IF FND_API.To_Boolean( p_commit ) THEN
32023                 COMMIT WORK;
32024         END IF;
32025         */
32026 
32027     /***** srramakr commented for bug # 3304439
32028     -- Check for the profile option and disable the trace
32029         IF (fnd_profile.value('CSI_ENABLE_SQL_TRACE') = 'Y') THEN
32030                    dbms_session.set_sql_trace(false);
32031     END IF;
32032         -- End disable trace
32033     ****/
32034 
32035         -- Standard call to get message count and if count is  get message info.
32036         FND_MSG_PUB.Count_And_Get
32037                 (p_count        =>      x_msg_count ,
32038                  p_data         =>      x_msg_data      );
32039 EXCEPTION
32040         WHEN OTHERS THEN
32041                 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
32042                 /*
32043                 IF fnd_api.to_boolean(p_commit)
32044                 THEN
32045                 ROLLBACK TO get_ext_attrib_val_hist;
32046                 END IF;
32047                 */
32048                 IF FND_MSG_PUB.Check_Msg_Level
32049                      (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
32050                 THEN
32051                    FND_MSG_PUB.Add_Exc_Msg
32052                     ( G_PKG_NAME, l_api_name );
32053                 END IF;
32054                 FND_MSG_PUB.Count_And_Get
32055                 (       p_count         =>      x_msg_count,
32056                         p_data      =>      x_msg_data);
32057 
32058 
32059 END get_ext_attrib_val_hist ;
32060 
32061 
32062 /*------------------------------------------------------*/
32063 /* procedure name: copy_item_instance                   */
32064 /* description :  Copies an instace from an instance.   */
32065 /*                It has the configuration parameter    */
32066 /*------------------------------------------------------*/
32067 
32068 
32069 PROCEDURE copy_item_instance
32070  ( p_api_version            IN         NUMBER
32071   ,p_commit                 IN         VARCHAR2
32072   ,p_init_msg_list          IN         VARCHAR2
32073   ,p_validation_level       IN         NUMBER
32074   ,p_source_instance_rec    IN         csi_datastructures_pub.instance_rec
32075   ,p_copy_ext_attribs       IN         VARCHAR2
32076   ,p_copy_org_assignments   IN         VARCHAR2
32077   ,p_copy_parties           IN         VARCHAR2
32078   ,p_copy_contacts          IN         VARCHAR2
32079   ,p_copy_accounts          IN         VARCHAR2
32080   ,p_copy_asset_assignments IN         VARCHAR2
32081   ,p_copy_pricing_attribs   IN         VARCHAR2
32082   ,p_copy_inst_children     IN         VARCHAR2
32083   ,p_call_from_split        IN         VARCHAR2  -- Added
32084   ,p_txn_rec                IN  OUT    NOCOPY csi_datastructures_pub.transaction_rec
32085   ,x_new_instance_tbl           OUT    NOCOPY csi_datastructures_pub.instance_tbl
32086   ,x_return_status              OUT    NOCOPY VARCHAR2
32087   ,x_msg_count                  OUT    NOCOPY NUMBER
32088   ,x_msg_data                   OUT    NOCOPY VARCHAR2
32089  )
32090 
32091  IS
32092 
32093     l_api_name                   CONSTANT   VARCHAR2(30) := 'copy_item_instance';
32094     l_api_version                CONSTANT   NUMBER      := 1.0;
32095     l_debug_level                           NUMBER;
32096     l_msg_index                             NUMBER;
32097     l_msg_count                             NUMBER;
32098     x_msg_index_out                         NUMBER;
32099     j                                       NUMBER := 1;
32100     l_curr_instance_rec                     csi_datastructures_pub.instance_rec;
32101     l_new_instance_rec                      csi_datastructures_pub.instance_rec;
32102     l_source_child_instance_rec             csi_datastructures_pub.instance_rec;
32103     l_asset_tbl                             csi_datastructures_pub.instance_asset_tbl;
32104     l_asset_header_tbl                      csi_datastructures_pub.instance_asset_header_tbl;--rk
32105     l_ext_attrib_tbl                        csi_datastructures_pub.extend_attrib_values_tbl;
32106     l_ext_attrib_def_tbl                    csi_datastructures_pub.extend_attrib_tbl;
32107     l_ext_attribs_query_rec                 csi_datastructures_pub.extend_attrib_query_rec;
32108     l_ou_query_rec                          csi_datastructures_pub.organization_unit_query_rec;
32109     l_org_unit_tbl                          csi_datastructures_pub.organization_units_tbl;
32110     l_org_unit_header_tbl                   csi_datastructures_pub.org_units_header_tbl;--rk
32111     l_pricing_attribs_query_rec             csi_datastructures_pub.pricing_attribs_query_rec;
32112     l_pricing_attribs_tbl                   csi_datastructures_pub.pricing_attribs_tbl;
32113     l_account_header_tbl                    csi_datastructures_pub.party_account_header_tbl;
32114     l_instance_asset_query_rec              csi_datastructures_pub.instance_asset_query_rec;
32115     l_instance_asset_rec                    csi_datastructures_pub.instance_asset_rec;
32116     l_party_query_rec                       csi_datastructures_pub.party_query_rec;
32117     l_party_tbl                             csi_datastructures_pub.party_tbl;
32118     l_original_party_tbl                    csi_datastructures_pub.party_tbl;
32119     l_party_input_tbl                       csi_datastructures_pub.party_tbl;
32120     l_new_party_tbl                         csi_datastructures_pub.party_tbl;
32121     l_contact_tbl                           csi_datastructures_pub.party_tbl;
32122     l_contact_input_tbl                     csi_datastructures_pub.party_tbl;
32123     l_contact_found_flag                    BOOLEAN := FALSE;
32124     l_new_contact_tbl                       csi_datastructures_pub.party_tbl;
32125     l_party_header_tbl                      csi_datastructures_pub.party_header_tbl;
32126     l_party_account_query_rec               csi_datastructures_pub.party_account_query_rec;
32127     l_contact_account_query_rec             csi_datastructures_pub.party_account_query_rec;
32128     l_party_account_tbl                     csi_datastructures_pub.party_account_tbl;
32129     l_contact_account_tbl                   csi_datastructures_pub.party_account_tbl;
32130     l_temp_party_account_tbl                csi_datastructures_pub.party_account_tbl;
32131     l_ii_relationship_rec                   csi_datastructures_pub.ii_relationship_rec;
32132     l_ii_relationship_tbl                   csi_datastructures_pub.ii_relationship_tbl;
32133     l_new_ii_relationship_tbl               csi_datastructures_pub.ii_relationship_tbl;
32134     l_new_instance_tbl                      csi_datastructures_pub.instance_tbl;
32135     l_new_child_instance_tbl                csi_datastructures_pub.instance_tbl;
32136     l_parent_object_found_flag              VARCHAR2(1);
32137     l_attribute_level                       VARCHAR2(30);
32138     l_temp_acct_hdr_tbl                     csi_datastructures_pub.party_account_header_tbl;
32139     l_pty_acct_hdr_tbl                      csi_datastructures_pub.party_account_header_tbl;
32140     k                                       NUMBER;
32141     l_vld_org_id                            NUMBER;
32142     l_internal_party_id                     NUMBER;
32143     l_party_id                              NUMBER;
32144     l_item_attribute_tbl                    csi_item_instance_pvt.item_attribute_tbl;
32145     l_location_tbl                          csi_item_instance_pvt.location_tbl;
32146     l_generic_id_tbl                        csi_item_instance_pvt.generic_id_tbl;
32147     l_lookup_tbl                            csi_item_instance_pvt.lookup_tbl;
32148     l_ins_count_rec                         csi_item_instance_pvt.ins_count_rec;
32149     l_map_count                             NUMBER := 0;
32150     l_rel_count                             NUMBER := 0;
32151     l_map_inst_tbl                          csi_item_instance_pvt.map_inst_tbl;
32152     l_par_vld_organization_id               NUMBER;
32153     l_asset_lookup_tbl                      csi_asset_pvt.lookup_tbl;
32154     l_asset_count_rec                       csi_asset_pvt.asset_count_rec;
32155     l_asset_id_tbl                          csi_asset_pvt.asset_id_tbl;
32156     l_asset_loc_tbl                         csi_asset_pvt.asset_loc_tbl;
32157     l_version_label                         VARCHAR2(30);
32158     l_version_label_rec                     csi_datastructures_pub.version_label_rec;
32159     p_rel_query_rec                         csi_datastructures_pub.relationship_query_rec;
32160     l_rel_tbl                               csi_datastructures_pub.ii_relationship_tbl;
32161     l_ii_relationship_level_tbl             csi_ii_relationships_pvt.ii_relationship_level_tbl;
32162     l_obj_id   NUMBER;
32163     --
32164     px_oks_txn_inst_tbl                     oks_ibint_pub.txn_instance_tbl;
32165     l_batch_type                            VARCHAR2(50);
32166     l_batch_id                              NUMBER;
32167     --
32168     -- Begin Add Code for Siebel Genesis Project
32169     l_raise_bes_event                       VARCHAR2(1) := nvl(fnd_profile.value('CSI_RAISE_BES_CUST_OWNED_INSTANCES'),'N');
32170     l_link_to_line_id                       NUMBER;
32171     l_item_type_code                        VARCHAR2(30);
32172     l_owner_party_id                        NUMBER;
32173     -- End Add Code for Siebel Genesis Project
32174 BEGIN
32175 
32176     -- Standard Start of API savepoint
32177       SAVEPOINT      copy_item_instance;
32178 
32179     -- Standard call to check for call compatibility.
32180       IF NOT FND_API.Compatible_API_Call (l_api_version,
32181                                           p_api_version,
32182                                           l_api_name ,
32183                                           G_PKG_NAME)
32184       THEN
32185             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
32186       END IF;
32187 
32188    -- Initialize message list if p_init_msg_list is set to TRUE.
32189       IF FND_API.to_Boolean( p_init_msg_list ) THEN
32190             FND_MSG_PUB.initialize;
32191       END IF;
32192 
32193    --  Initialize API return status to success
32194           x_return_status := FND_API.G_RET_STS_SUCCESS;
32195 
32196     -- Check the profile option debug_level for debug message reporting
32197           l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
32198 
32199     -- If debug_level = 1 then dump the procedure name
32200    IF (l_debug_level > 0) THEN
32201        csi_gen_utility_pvt.put_line('copy_item_instance ');
32202    END IF;
32203 
32204 
32205 
32206     -- If the debug level = 2 then dump all the parameters values.
32207     IF (l_debug_level > 1) THEN
32208 
32209          csi_gen_utility_pvt.put_line('copy_item_instance '||
32210                               p_api_version ||'-'
32211                            || p_commit ||'-'
32212                            || p_init_msg_list ||'-'
32213                            || p_validation_level ||'-'
32214                            || p_copy_ext_attribs ||'-'
32215                            || p_copy_org_assignments ||'-'
32216                            || p_copy_parties  ||'-'
32217                            || p_copy_contacts  ||'-'
32218                            || p_copy_accounts  ||'-'
32219                            || p_copy_asset_assignments ||'-'
32220                            || p_copy_pricing_attribs ||'-'
32221                            || p_copy_inst_children
32222                             );
32223      -- Dump item instanc red
32224          csi_gen_utility_pvt.dump_instance_rec(p_source_instance_rec);
32225      -- Dump txn_rec
32226          csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
32227     END IF;
32228 
32229     -- Start API body
32230 
32231     -- Get the last_vld_organization_id for the instance_id passed
32232     BEGIN
32233        SELECT last_vld_organization_id
32234        INTO   l_par_vld_organization_id
32235        FROM   csi_item_instances
32236        WHERE  instance_id = p_source_instance_rec.instance_id;
32237     EXCEPTION
32238       WHEN OTHERS THEN
32239          NULL;
32240     END;
32241 
32242     -- Added by sguthiva for bug 2186683
32243     IF p_source_instance_rec.vld_organization_id IS NULL OR
32244        p_source_instance_rec.vld_organization_id = fnd_api.g_miss_num
32245     THEN
32246        l_vld_org_id := l_par_vld_organization_id;
32247     END IF;
32248     -- End addition by sguthiva for bug 2186683
32249 
32250 
32251      IF (p_source_instance_rec.instance_id IS NULL) OR
32252          (p_source_instance_rec.instance_id = FND_API.G_MISS_NUM) THEN
32253                FND_MESSAGE.SET_NAME('CSI','CSI_API_INSTANCE_ID_NULL');
32254                  FND_MSG_PUB.Add;
32255              RAISE FND_API.G_EXC_ERROR;
32256      ELSIF NOT (csi_Item_Instance_Vld_pvt.Val_and_get_inst_rec(
32257                   p_source_instance_rec.instance_id ,
32258                   l_curr_instance_rec )) THEN
32259                RAISE FND_API.G_EXC_ERROR;
32260      END IF;
32261 
32262 
32263     -- Check if the user has not passed incorrect options for contacts
32264      IF ((p_copy_parties  = fnd_api.g_false)
32265         AND (p_copy_contacts  = fnd_api.g_true)) THEN
32266           FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_PTY_CONTACT_OPT');
32267           FND_MSG_PUB.Add;
32268           RAISE FND_API.G_EXC_ERROR;
32269      END IF;
32270 
32271 
32272      -- If the user has passed p_copy_parties as false get only the owner, else get all the parties
32273      IF (p_copy_parties  = fnd_api.g_true) THEN
32274           l_party_query_rec.instance_party_id         := FND_API.G_MISS_NUM;
32275           l_party_query_rec.instance_id               := l_curr_instance_rec.instance_id;
32276           l_party_query_rec.party_id                  := FND_API.G_MISS_NUM;
32277           l_party_query_rec.relationship_type_code    := FND_API.G_MISS_CHAR;
32278 
32279          csi_party_relationships_pub.get_inst_party_relationships
32280                     ( p_api_version                 => p_api_version
32281                      ,p_commit                      => p_commit
32282                      ,p_init_msg_list               => p_init_msg_list
32283                      ,p_validation_level            => p_validation_level
32284                      ,p_party_query_rec             => l_party_query_rec
32285                      ,p_resolve_id_columns          => fnd_api.g_true
32286                      ,p_time_stamp                  =>  NULL
32287                      ,x_party_header_tbl            => l_party_header_tbl
32288                      ,x_return_status               => x_return_status
32289                      ,x_msg_count                   => x_msg_count
32290                      ,x_msg_data                    => x_msg_data
32291                      );
32292 
32293 
32294 
32295                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
32296                   l_msg_index := 1;
32297                   l_msg_count := x_msg_count;
32298                   WHILE l_msg_count > 0 LOOP
32299                        x_msg_data := FND_MSG_PUB.GET
32300                                       (l_msg_index,
32301                                      FND_API.G_FALSE      );
32302                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
32303                        l_msg_index := l_msg_index + 1;
32304                        l_msg_count := l_msg_count - 1;
32305                   END LOOP;
32306                   RAISE FND_API.G_EXC_ERROR;
32307                 END IF;
32308 
32309      ELSE
32310           l_party_query_rec.instance_party_id         := FND_API.G_MISS_NUM;
32311           l_party_query_rec.instance_id               := l_curr_instance_rec.instance_id;
32312           l_party_query_rec.party_id                  := FND_API.G_MISS_NUM;
32313           l_party_query_rec.relationship_type_code    := 'OWNER';
32314 
32315          csi_party_relationships_pub.get_inst_party_relationships
32316                     ( p_api_version                 => p_api_version
32317                      ,p_commit                      => p_commit
32318                      ,p_init_msg_list               => p_init_msg_list
32319                      ,p_validation_level            => p_validation_level
32320                      ,p_party_query_rec             => l_party_query_rec
32321                      ,p_resolve_id_columns          => fnd_api.g_true
32322                      ,p_time_stamp                  => NULL
32323                      ,x_party_header_tbl            => l_party_header_tbl
32324                      ,x_return_status               => x_return_status
32325                      ,x_msg_count                   => x_msg_count
32326                      ,x_msg_data                    => x_msg_data
32327                      );
32328 
32329                  IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
32330                   l_msg_index := 1;
32331                   l_msg_count := x_msg_count;
32332                   WHILE l_msg_count > 0 LOOP
32333                        x_msg_data := FND_MSG_PUB.GET
32334                                       (l_msg_index,
32335                                      FND_API.G_FALSE      );
32336                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
32337                        l_msg_index := l_msg_index + 1;
32338                        l_msg_count := l_msg_count - 1;
32339                   END LOOP;
32340                   RAISE FND_API.G_EXC_ERROR;
32341                 END IF;
32342     END IF;
32343 
32344 --   This is mean to initialize the l_party_table in order to create an instance.
32345     IF l_party_header_tbl.COUNT > 0 THEN    /*****First change here 07/27/01 - RK***/
32346                 FOR tab_row_party IN l_party_header_tbl.FIRST .. l_party_header_tbl.LAST
32347                 LOOP
32348                      IF l_party_header_tbl.EXISTS(tab_row_party) THEN
32349                         IF  l_party_header_tbl(tab_row_party).contact_flag = 'Y' THEN
32350                            -- build the contacts table
32351                              l_contact_tbl(tab_row_party).instance_party_id := l_party_header_tbl(tab_row_party).instance_party_id;
32352                              l_contact_tbl(tab_row_party).instance_id := l_party_header_tbl(tab_row_party).instance_id;
32353                              l_contact_tbl(tab_row_party).party_id := l_party_header_tbl(tab_row_party).party_id;
32354                              l_contact_tbl(tab_row_party).party_source_table := l_party_header_tbl(tab_row_party).party_source_table;
32355                              l_contact_tbl(tab_row_party).relationship_type_code := l_party_header_tbl(tab_row_party).relationship_type_code;
32356                              l_contact_tbl(tab_row_party).contact_flag := l_party_header_tbl(tab_row_party).contact_flag;
32357                              l_contact_tbl(tab_row_party).contact_ip_id := l_party_header_tbl(tab_row_party).contact_ip_id;
32358                              l_contact_tbl(tab_row_party).active_start_date := l_party_header_tbl(tab_row_party).active_start_date;
32359                              l_contact_tbl(tab_row_party).active_end_date := l_party_header_tbl(tab_row_party).active_end_date;
32360                              l_contact_tbl(tab_row_party).context := l_party_header_tbl(tab_row_party).context;
32361                              l_contact_tbl(tab_row_party).attribute1 := l_party_header_tbl(tab_row_party).attribute1;
32362                              l_contact_tbl(tab_row_party).attribute2 := l_party_header_tbl(tab_row_party).attribute2;
32363                              l_contact_tbl(tab_row_party).attribute3 := l_party_header_tbl(tab_row_party).attribute3;
32364                              l_contact_tbl(tab_row_party).attribute4 := l_party_header_tbl(tab_row_party).attribute4;
32365                              l_contact_tbl(tab_row_party).attribute5 := l_party_header_tbl(tab_row_party).attribute5;
32366                              l_contact_tbl(tab_row_party).attribute6 := l_party_header_tbl(tab_row_party).attribute6;
32367                              l_contact_tbl(tab_row_party).attribute7 := l_party_header_tbl(tab_row_party).attribute7;
32368                              l_contact_tbl(tab_row_party).attribute8 := l_party_header_tbl(tab_row_party).attribute8;
32369                              l_contact_tbl(tab_row_party).attribute9 := l_party_header_tbl(tab_row_party).attribute9;
32370                              l_contact_tbl(tab_row_party).attribute10 := l_party_header_tbl(tab_row_party).attribute10;
32371                              l_contact_tbl(tab_row_party).attribute11 := l_party_header_tbl(tab_row_party).attribute11;
32372                              l_contact_tbl(tab_row_party).attribute12 := l_party_header_tbl(tab_row_party).attribute12;
32373                              l_contact_tbl(tab_row_party).attribute13 := l_party_header_tbl(tab_row_party).attribute13;
32374                              l_contact_tbl(tab_row_party).attribute14 := l_party_header_tbl(tab_row_party).attribute14;
32375                              l_contact_tbl(tab_row_party).attribute15 := l_party_header_tbl(tab_row_party).attribute15;
32376                              l_contact_tbl(tab_row_party).object_version_number := l_party_header_tbl(tab_row_party).object_version_number;
32377   --Start fo Addition for the Bugfix 2354589.
32378                              l_contact_tbl(tab_row_party).preferred_flag := l_party_header_tbl(tab_row_party).preferred_flag;
32379                              l_contact_tbl(tab_row_party).primary_flag := l_party_header_tbl(tab_row_party).primary_flag;
32380   --End of Addition for the Bugfix 2354589.
32381                         ELSE -- Build the parties table
32382                              l_party_tbl(tab_row_party).instance_party_id := l_party_header_tbl(tab_row_party).instance_party_id;
32383                              l_party_tbl(tab_row_party).instance_id := l_party_header_tbl(tab_row_party).instance_id;
32384                              l_party_tbl(tab_row_party).party_id := l_party_header_tbl(tab_row_party).party_id;
32385                              l_party_tbl(tab_row_party).party_source_table := l_party_header_tbl(tab_row_party).party_source_table;
32386                              l_party_tbl(tab_row_party).relationship_type_code := l_party_header_tbl(tab_row_party).relationship_type_code;
32387                              l_party_tbl(tab_row_party).contact_flag := l_party_header_tbl(tab_row_party).contact_flag;
32388                              l_party_tbl(tab_row_party).contact_ip_id := l_party_header_tbl(tab_row_party).contact_ip_id;
32389                              l_party_tbl(tab_row_party).active_start_date := l_party_header_tbl(tab_row_party).active_start_date;
32390                              l_party_tbl(tab_row_party).active_end_date := l_party_header_tbl(tab_row_party).active_end_date;
32391                              l_party_tbl(tab_row_party).context := l_party_header_tbl(tab_row_party).context;
32392                              l_party_tbl(tab_row_party).attribute1 := l_party_header_tbl(tab_row_party).attribute1;
32393                              l_party_tbl(tab_row_party).attribute2 := l_party_header_tbl(tab_row_party).attribute2;
32394                              l_party_tbl(tab_row_party).attribute3 := l_party_header_tbl(tab_row_party).attribute3;
32395                              l_party_tbl(tab_row_party).attribute4 := l_party_header_tbl(tab_row_party).attribute4;
32396                              l_party_tbl(tab_row_party).attribute5 := l_party_header_tbl(tab_row_party).attribute5;
32397                              l_party_tbl(tab_row_party).attribute6 := l_party_header_tbl(tab_row_party).attribute6;
32398                              l_party_tbl(tab_row_party).attribute7 := l_party_header_tbl(tab_row_party).attribute7;
32399                              l_party_tbl(tab_row_party).attribute8 := l_party_header_tbl(tab_row_party).attribute8;
32400                              l_party_tbl(tab_row_party).attribute9 := l_party_header_tbl(tab_row_party).attribute9;
32401                              l_party_tbl(tab_row_party).attribute10 := l_party_header_tbl(tab_row_party).attribute10;
32402                              l_party_tbl(tab_row_party).attribute11 := l_party_header_tbl(tab_row_party).attribute11;
32403                              l_party_tbl(tab_row_party).attribute12 := l_party_header_tbl(tab_row_party).attribute12;
32404                              l_party_tbl(tab_row_party).attribute13 := l_party_header_tbl(tab_row_party).attribute13;
32405                              l_party_tbl(tab_row_party).attribute14 := l_party_header_tbl(tab_row_party).attribute14;
32406                              l_party_tbl(tab_row_party).attribute15 := l_party_header_tbl(tab_row_party).attribute15;
32407                              l_party_tbl(tab_row_party).object_version_number := l_party_header_tbl(tab_row_party).object_version_number;
32408   --Start fo Addition for the Bugfix 2354589.
32409                              l_party_tbl(tab_row_party).preferred_flag := l_party_header_tbl(tab_row_party).preferred_flag;
32410                              l_party_tbl(tab_row_party).primary_flag := l_party_header_tbl(tab_row_party).primary_flag;
32411   --End of Addition for the Bugfix 2354589.
32412                          END IF;
32413                      END IF;
32414                 END LOOP;
32415    END IF; --l_party_header_tbl.COUNT > 0
32416   l_original_party_tbl := l_party_tbl;
32417    -- Empty the party table
32418    l_party_header_tbl.DELETE;
32419     -- Create asset assignments if requested. Asset_assignment_tbl has alredy been fetched
32420     IF  (p_copy_asset_assignments  = fnd_api.g_true) THEN
32421           l_instance_asset_query_rec.instance_asset_id  := FND_API.G_MISS_NUM;
32422           l_instance_asset_query_rec.instance_id  := l_curr_instance_rec.instance_id;
32423           l_instance_asset_query_rec.fa_asset_id   := FND_API.G_MISS_NUM;
32424           l_instance_asset_query_rec.fa_book_type_code := FND_API.G_MISS_CHAR;
32425           l_instance_asset_query_rec.fa_location_id := FND_API.G_MISS_NUM;
32426           l_instance_asset_query_rec.update_status := FND_API.G_MISS_CHAR;
32427            csi_asset_pvt.get_instance_assets
32428             ( p_api_version                 => p_api_version
32429              ,p_commit                      => p_commit
32430              ,p_init_msg_list               => p_init_msg_list
32431              ,p_validation_level            => p_validation_level
32432              ,p_instance_asset_query_rec    => l_instance_asset_query_rec
32433              ,p_resolve_id_columns          => fnd_api.g_true
32434              ,p_time_stamp                  => NULL
32435              ,x_instance_asset_tbl          => l_asset_header_tbl
32436              ,x_return_status               => x_return_status
32437              ,x_msg_count                   => x_msg_count
32438              ,x_msg_data                    => x_msg_data
32439              );
32440                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
32441                   l_msg_index := 1;
32442                   l_msg_count := x_msg_count;
32443                   WHILE l_msg_count > 0 LOOP
32444                        x_msg_data := FND_MSG_PUB.GET
32445                                       (l_msg_index,
32446                                      FND_API.G_FALSE      );
32447                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
32448                        l_msg_index := l_msg_index + 1;
32449                        l_msg_count := l_msg_count - 1;
32450                   END LOOP;
32451                   RAISE FND_API.G_EXC_ERROR;
32452                 END IF;
32453     END IF;
32454     IF l_asset_header_tbl.COUNT > 0 THEN    /*****First change here 08/25/01 - RK***/
32455                 FOR tab_row_party IN l_asset_header_tbl.FIRST .. l_asset_header_tbl.LAST
32456                 LOOP
32457                      IF l_asset_header_tbl.EXISTS(tab_row_party) THEN
32458                              l_asset_tbl(tab_row_party).instance_asset_id := l_asset_header_tbl(tab_row_party).instance_asset_id;
32459                              l_asset_tbl(tab_row_party).instance_id := l_asset_header_tbl(tab_row_party).instance_id;
32460                              l_asset_tbl(tab_row_party).fa_asset_id := l_asset_header_tbl(tab_row_party).fa_asset_id;
32461                              l_asset_tbl(tab_row_party).fa_book_type_code := l_asset_header_tbl(tab_row_party).fa_book_type_code;
32462                              l_asset_tbl(tab_row_party).fa_location_id := l_asset_header_tbl(tab_row_party).fa_location_id;
32463                              l_asset_tbl(tab_row_party).asset_quantity := l_asset_header_tbl(tab_row_party).asset_quantity;
32464                              l_asset_tbl(tab_row_party).update_status := l_asset_header_tbl(tab_row_party).update_status;
32465                              l_asset_tbl(tab_row_party).active_start_date := l_asset_header_tbl(tab_row_party).active_start_date;
32466                              l_asset_tbl(tab_row_party).active_end_date := l_asset_header_tbl(tab_row_party).active_end_date;
32467                              l_asset_tbl(tab_row_party).object_version_number := l_asset_header_tbl(tab_row_party).object_version_number;
32468                      END IF;
32469                 END LOOP;
32470    END IF; --l_asset_header_tbl.COUNT > 0
32471 
32472    -- Set the non-copiable attributes as follows
32473 
32474        l_new_instance_rec.CREATION_COMPLETE_FLAG := p_source_instance_rec.CREATION_COMPLETE_FLAG;
32475        l_new_instance_rec.COMPLETENESS_FLAG := p_source_instance_rec.COMPLETENESS_FLAG;
32476 
32477     IF  (p_source_instance_rec.EXTERNAL_REFERENCE = FND_API.G_MISS_CHAR) THEN
32478           l_new_instance_rec.EXTERNAL_REFERENCE := l_curr_instance_rec.EXTERNAL_REFERENCE;
32479     ELSE
32480           l_new_instance_rec.EXTERNAL_REFERENCE := p_source_instance_rec.EXTERNAL_REFERENCE;
32481     END IF;
32482     IF ((p_source_instance_rec.INVENTORY_ITEM_ID = FND_API.G_MISS_NUM)
32483       OR (p_source_instance_rec.INVENTORY_ITEM_ID IS NULL)) THEN
32484           l_new_instance_rec.INVENTORY_ITEM_ID := l_curr_instance_rec.INVENTORY_ITEM_ID;
32485     ELSE
32486           l_new_instance_rec.INVENTORY_ITEM_ID := p_source_instance_rec.INVENTORY_ITEM_ID;
32487     END IF;
32488 
32489      -- srramakr commented for bug # 2558156
32490      -- Uncommented for bug 2985165
32491      IF p_call_from_split=fnd_api.g_true
32492      THEN
32493          IF  (p_source_instance_rec.INVENTORY_REVISION = FND_API.G_MISS_CHAR) THEN
32494               l_new_instance_rec.INVENTORY_REVISION := l_curr_instance_rec.INVENTORY_REVISION;
32495          ELSE
32496               l_new_instance_rec.INVENTORY_REVISION := p_source_instance_rec.INVENTORY_REVISION;
32497          END IF;
32498      ELSE
32499      -- Uncommented for bug 2985165
32500      -- srramakr Bug # 2558156 Revision should not be copied
32501          IF p_source_instance_rec.INVENTORY_REVISION <> FND_API.G_MISS_CHAR THEN
32502             l_new_instance_rec.INVENTORY_REVISION := p_source_instance_rec.INVENTORY_REVISION;
32503          END IF;
32504      END IF;
32505      --
32506      IF ((p_source_instance_rec.INV_MASTER_ORGANIZATION_ID = FND_API.G_MISS_NUM)
32507       OR (p_source_instance_rec.INV_MASTER_ORGANIZATION_ID IS NULL)) THEN
32508           l_new_instance_rec.INV_MASTER_ORGANIZATION_ID := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
32509      ELSE
32510           l_new_instance_rec.INV_MASTER_ORGANIZATION_ID := p_source_instance_rec.INV_MASTER_ORGANIZATION_ID ;
32511      END IF;
32512      IF  (p_source_instance_rec.SERIAL_NUMBER <> FND_API.G_MISS_CHAR) THEN
32513           l_new_instance_rec.SERIAL_NUMBER := p_source_instance_rec.SERIAL_NUMBER;
32514      END IF;
32515      IF ((p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG = FND_API.G_MISS_CHAR)
32516       OR (p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG IS NULL)) THEN
32517           l_new_instance_rec.MFG_SERIAL_NUMBER_FLAG := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
32518      ELSE
32519           l_new_instance_rec.MFG_SERIAL_NUMBER_FLAG := p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG ;
32520      END IF;
32521      IF  (p_source_instance_rec.LOT_NUMBER = FND_API.G_MISS_CHAR) THEN
32522           l_new_instance_rec.LOT_NUMBER := l_curr_instance_rec.LOT_NUMBER;
32523      ELSE
32524           l_new_instance_rec.LOT_NUMBER := p_source_instance_rec.LOT_NUMBER;
32525      END IF;
32526      IF ((p_source_instance_rec.QUANTITY = FND_API.G_MISS_NUM)
32527       OR (p_source_instance_rec.QUANTITY IS NULL)) THEN
32528           l_new_instance_rec.QUANTITY := l_curr_instance_rec.QUANTITY;
32529      ELSE
32530           l_new_instance_rec.QUANTITY := p_source_instance_rec.QUANTITY ;
32531      END IF;
32532      IF ((p_source_instance_rec.UNIT_OF_MEASURE = FND_API.G_MISS_CHAR)
32533       OR (p_source_instance_rec.UNIT_OF_MEASURE IS NULL)) THEN
32534           l_new_instance_rec.UNIT_OF_MEASURE := l_curr_instance_rec.UNIT_OF_MEASURE;
32535      ELSE
32536           l_new_instance_rec.UNIT_OF_MEASURE := p_source_instance_rec.UNIT_OF_MEASURE ;
32537      END IF;
32538      IF  (p_source_instance_rec.ACCOUNTING_CLASS_CODE = FND_API.G_MISS_CHAR) THEN
32539           l_new_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
32540      ELSE
32541           l_new_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
32542      END IF;
32543      IF  (p_source_instance_rec.INSTANCE_CONDITION_ID = FND_API.G_MISS_NUM) THEN
32544           l_new_instance_rec.INSTANCE_CONDITION_ID := l_curr_instance_rec.INSTANCE_CONDITION_ID;
32545      ELSE
32546           l_new_instance_rec.INSTANCE_CONDITION_ID := p_source_instance_rec.INSTANCE_CONDITION_ID;
32547      END IF;
32548      IF ((p_source_instance_rec.INSTANCE_STATUS_ID = FND_API.G_MISS_NUM)
32549       OR (p_source_instance_rec.INSTANCE_STATUS_ID IS NULL)) THEN
32550           l_new_instance_rec.INSTANCE_STATUS_ID := l_curr_instance_rec.INSTANCE_STATUS_ID;
32551      ELSE
32552           l_new_instance_rec.INSTANCE_STATUS_ID := p_source_instance_rec.INSTANCE_STATUS_ID ;
32553      END IF;
32554      IF ((p_source_instance_rec.CUSTOMER_VIEW_FLAG = FND_API.G_MISS_CHAR)
32555       OR (p_source_instance_rec.CUSTOMER_VIEW_FLAG IS NULL )) THEN
32556           l_new_instance_rec.CUSTOMER_VIEW_FLAG := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
32557      ELSE
32558           l_new_instance_rec.CUSTOMER_VIEW_FLAG := p_source_instance_rec.CUSTOMER_VIEW_FLAG ;
32559      END IF;
32560      IF ((p_source_instance_rec.MERCHANT_VIEW_FLAG = FND_API.G_MISS_CHAR)
32561       OR (p_source_instance_rec.MERCHANT_VIEW_FLAG IS NULL)) THEN
32562           l_new_instance_rec.MERCHANT_VIEW_FLAG := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
32563      ELSE
32564           l_new_instance_rec.MERCHANT_VIEW_FLAG := p_source_instance_rec.MERCHANT_VIEW_FLAG ;
32565      END IF;
32566      IF  (p_source_instance_rec.SELLABLE_FLAG = FND_API.G_MISS_CHAR) THEN
32567           l_new_instance_rec.SELLABLE_FLAG := l_curr_instance_rec.SELLABLE_FLAG;
32568      ELSE
32569           l_new_instance_rec.SELLABLE_FLAG := p_source_instance_rec.SELLABLE_FLAG;
32570      END IF;
32571      IF  (p_source_instance_rec.SYSTEM_ID = FND_API.G_MISS_NUM) THEN
32572           l_new_instance_rec.SYSTEM_ID := l_curr_instance_rec.SYSTEM_ID;
32573      ELSE
32574           l_new_instance_rec.SYSTEM_ID := p_source_instance_rec.SYSTEM_ID;
32575      END IF;
32576      IF  (p_source_instance_rec.INSTANCE_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
32577           l_new_instance_rec.INSTANCE_TYPE_CODE := l_curr_instance_rec.INSTANCE_TYPE_CODE;
32578      ELSE
32579           l_new_instance_rec.INSTANCE_TYPE_CODE := p_source_instance_rec.INSTANCE_TYPE_CODE;
32580      END IF;
32581      IF  (p_source_instance_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
32582           l_new_instance_rec.ACTIVE_START_DATE := l_curr_instance_rec.ACTIVE_START_DATE;
32583      ELSE
32584           l_new_instance_rec.ACTIVE_START_DATE := p_source_instance_rec.ACTIVE_START_DATE;
32585      END IF;
32586      IF  (p_source_instance_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
32587           l_new_instance_rec.ACTIVE_END_DATE := l_curr_instance_rec.ACTIVE_END_DATE;
32588      ELSE
32589           l_new_instance_rec.ACTIVE_END_DATE := p_source_instance_rec.ACTIVE_END_DATE;
32590      END IF;
32591      IF  (p_source_instance_rec.LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR)  THEN
32592           l_new_instance_rec.LOCATION_TYPE_CODE := l_curr_instance_rec.LOCATION_TYPE_CODE;
32593      ELSE
32594           l_new_instance_rec.LOCATION_TYPE_CODE := p_source_instance_rec.LOCATION_TYPE_CODE;
32595      END IF;
32596      IF  (p_source_instance_rec.LOCATION_ID = FND_API.G_MISS_NUM) THEN
32597           l_new_instance_rec.LOCATION_ID := l_curr_instance_rec.LOCATION_ID;
32598      ELSE
32599           l_new_instance_rec.LOCATION_ID := p_source_instance_rec.LOCATION_ID;
32600      END IF;
32601      IF  (p_source_instance_rec.INV_ORGANIZATION_ID = FND_API.G_MISS_NUM) THEN
32602           l_new_instance_rec.INV_ORGANIZATION_ID := l_curr_instance_rec.INV_ORGANIZATION_ID;
32603      ELSE
32604           l_new_instance_rec.INV_ORGANIZATION_ID := p_source_instance_rec.INV_ORGANIZATION_ID;
32605      END IF;
32606      IF  (p_source_instance_rec.INV_SUBINVENTORY_NAME = FND_API.G_MISS_CHAR) THEN
32607           l_new_instance_rec.INV_SUBINVENTORY_NAME := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
32608       ELSE
32609           l_new_instance_rec.INV_SUBINVENTORY_NAME := p_source_instance_rec.INV_SUBINVENTORY_NAME;
32610       END IF;
32611       IF  (p_source_instance_rec.INV_LOCATOR_ID = FND_API.G_MISS_NUM) THEN
32612            l_new_instance_rec.INV_LOCATOR_ID := l_curr_instance_rec.INV_LOCATOR_ID;
32613       ELSE
32614            l_new_instance_rec.INV_LOCATOR_ID := p_source_instance_rec.INV_LOCATOR_ID;
32615       END IF;
32616       IF  (p_source_instance_rec.PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
32617            l_new_instance_rec.PA_PROJECT_ID := l_curr_instance_rec.PA_PROJECT_ID;
32618       ELSE
32619            l_new_instance_rec.PA_PROJECT_ID := p_source_instance_rec.PA_PROJECT_ID;
32620       END IF;
32621       IF  (p_source_instance_rec.PA_PROJECT_TASK_ID = FND_API.G_MISS_NUM) THEN
32622            l_new_instance_rec.PA_PROJECT_TASK_ID := l_curr_instance_rec.PA_PROJECT_TASK_ID;
32623       ELSE
32624            l_new_instance_rec.PA_PROJECT_TASK_ID := p_source_instance_rec.PA_PROJECT_TASK_ID;
32625       END IF;
32626       IF  (p_source_instance_rec.IN_TRANSIT_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
32627            l_new_instance_rec.IN_TRANSIT_ORDER_LINE_ID := l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
32628       ELSE
32629            l_new_instance_rec.IN_TRANSIT_ORDER_LINE_ID := p_source_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
32630       END IF;
32631       IF  (p_source_instance_rec.WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
32632            l_new_instance_rec.WIP_JOB_ID := l_curr_instance_rec.WIP_JOB_ID;
32633       ELSE
32634            l_new_instance_rec.WIP_JOB_ID := p_source_instance_rec.WIP_JOB_ID;
32635       END IF;
32636       IF  (p_source_instance_rec.PO_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
32637            l_new_instance_rec.PO_ORDER_LINE_ID := l_curr_instance_rec.PO_ORDER_LINE_ID;
32638       ELSE
32639            l_new_instance_rec.PO_ORDER_LINE_ID := p_source_instance_rec.PO_ORDER_LINE_ID;
32640       END IF;
32641       IF  (p_source_instance_rec.LAST_TXN_LINE_DETAIL_ID = FND_API.G_MISS_NUM) THEN
32642            l_new_instance_rec.LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID;
32643       ELSE
32644            l_new_instance_rec.LAST_TXN_LINE_DETAIL_ID := p_source_instance_rec.LAST_TXN_LINE_DETAIL_ID;
32645       END IF;
32646       IF  (p_source_instance_rec.LAST_OE_RMA_LINE_ID = FND_API.G_MISS_NUM) THEN
32647            l_new_instance_rec.LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
32648       ELSE
32649            l_new_instance_rec.LAST_OE_RMA_LINE_ID := p_source_instance_rec.LAST_OE_RMA_LINE_ID;
32650       END IF;
32651       IF  (p_source_instance_rec.LAST_PO_PO_LINE_ID  = FND_API.G_MISS_NUM) THEN
32652            l_new_instance_rec.LAST_PO_PO_LINE_ID  := l_curr_instance_rec.LAST_PO_PO_LINE_ID ;
32653       ELSE
32654            l_new_instance_rec.LAST_PO_PO_LINE_ID  := p_source_instance_rec.LAST_PO_PO_LINE_ID ;
32655       END IF;
32656       IF  (p_source_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
32657            l_new_instance_rec.LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER;
32658       ELSE
32659            l_new_instance_rec.LAST_OE_PO_NUMBER := p_source_instance_rec.LAST_OE_PO_NUMBER;
32660       END IF;
32661       IF  (p_source_instance_rec.LAST_WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
32662            l_new_instance_rec.LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID;
32663       ELSE
32664            l_new_instance_rec.LAST_WIP_JOB_ID := p_source_instance_rec.LAST_WIP_JOB_ID;
32665       END IF;
32666       IF  (p_source_instance_rec.LAST_PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
32667            l_new_instance_rec.LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID;
32668       ELSE
32669            l_new_instance_rec.LAST_PA_PROJECT_ID := p_source_instance_rec.LAST_PA_PROJECT_ID;
32670       END IF;
32671       IF  (p_source_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
32672            l_new_instance_rec.LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID;
32673       ELSE
32674            l_new_instance_rec.LAST_PA_TASK_ID := p_source_instance_rec.LAST_PA_TASK_ID;
32675       END IF;
32676       IF  (p_source_instance_rec.LAST_OE_AGREEMENT_ID = FND_API.G_MISS_NUM) THEN
32677            l_new_instance_rec.LAST_OE_AGREEMENT_ID  := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
32678       ELSE
32679            l_new_instance_rec.LAST_OE_AGREEMENT_ID  := p_source_instance_rec.LAST_OE_AGREEMENT_ID;
32680       END IF;
32681       IF  (p_source_instance_rec.INSTALL_DATE = FND_API.G_MISS_DATE) THEN
32682            l_new_instance_rec.INSTALL_DATE := l_curr_instance_rec.INSTALL_DATE;
32683       ELSE
32684            l_new_instance_rec.INSTALL_DATE := p_source_instance_rec.INSTALL_DATE;
32685       END IF;
32686       IF  (p_source_instance_rec.MANUALLY_CREATED_FLAG = FND_API.G_MISS_CHAR) THEN
32687            l_new_instance_rec.MANUALLY_CREATED_FLAG := l_curr_instance_rec.MANUALLY_CREATED_FLAG;
32688       ELSE
32689            l_new_instance_rec.MANUALLY_CREATED_FLAG := p_source_instance_rec.MANUALLY_CREATED_FLAG;
32690       END IF;
32691       IF  (p_source_instance_rec.RETURN_BY_DATE  = FND_API.G_MISS_DATE) THEN
32692            l_new_instance_rec.RETURN_BY_DATE  := l_curr_instance_rec.RETURN_BY_DATE ;
32693       ELSE
32694            l_new_instance_rec.RETURN_BY_DATE  := p_source_instance_rec.RETURN_BY_DATE ;
32695       END IF;
32696       IF  (p_source_instance_rec.ACTUAL_RETURN_DATE = FND_API.G_MISS_DATE) THEN
32697            l_new_instance_rec.ACTUAL_RETURN_DATE := l_curr_instance_rec.ACTUAL_RETURN_DATE;
32698       ELSE
32699            l_new_instance_rec.ACTUAL_RETURN_DATE := p_source_instance_rec.ACTUAL_RETURN_DATE;
32700       END IF;
32701       IF  (p_source_instance_rec.VERSION_LABEL = FND_API.G_MISS_CHAR) THEN
32702            l_new_instance_rec.VERSION_LABEL := l_curr_instance_rec.VERSION_LABEL;
32703       ELSE
32704            l_new_instance_rec.VERSION_LABEL := p_source_instance_rec.VERSION_LABEL;
32705       END IF;
32706       IF  (p_source_instance_rec.VERSION_LABEL_DESCRIPTION = FND_API.G_MISS_CHAR) THEN
32707            l_new_instance_rec.VERSION_LABEL_DESCRIPTION := l_curr_instance_rec.VERSION_LABEL_DESCRIPTION;
32708       ELSE
32709            l_new_instance_rec.VERSION_LABEL_DESCRIPTION := p_source_instance_rec.VERSION_LABEL_DESCRIPTION;
32710       END IF;
32711       IF  (p_source_instance_rec.CONTEXT = FND_API.G_MISS_CHAR) THEN
32712            l_new_instance_rec.CONTEXT := l_curr_instance_rec.CONTEXT;
32713       ELSE
32714            l_new_instance_rec.CONTEXT := p_source_instance_rec.CONTEXT;
32715       END IF;
32716       IF  (p_source_instance_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
32717            l_new_instance_rec.ATTRIBUTE1 := l_curr_instance_rec.ATTRIBUTE1;
32718       ELSE
32719            l_new_instance_rec.ATTRIBUTE1 := p_source_instance_rec.ATTRIBUTE1;
32720       END IF;
32721       IF  (p_source_instance_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
32722            l_new_instance_rec.ATTRIBUTE2 := l_curr_instance_rec.ATTRIBUTE2;
32723       ELSE
32724            l_new_instance_rec.ATTRIBUTE2 := p_source_instance_rec.ATTRIBUTE2;
32725       END IF;
32726       IF  (p_source_instance_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
32727            l_new_instance_rec.ATTRIBUTE3 := l_curr_instance_rec.ATTRIBUTE3;
32728       ELSE
32729            l_new_instance_rec.ATTRIBUTE3 := p_source_instance_rec.ATTRIBUTE3;
32730       END IF;
32731       IF  (p_source_instance_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
32732            l_new_instance_rec.ATTRIBUTE4 := l_curr_instance_rec.ATTRIBUTE4;
32733       ELSE
32734            l_new_instance_rec.ATTRIBUTE4 := p_source_instance_rec.ATTRIBUTE4;
32735       END IF;
32736       IF  (p_source_instance_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
32737            l_new_instance_rec.ATTRIBUTE5 := l_curr_instance_rec.ATTRIBUTE5;
32738       ELSE
32739            l_new_instance_rec.ATTRIBUTE5 := p_source_instance_rec.ATTRIBUTE5;
32740       END IF;
32741       IF  (p_source_instance_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
32742            l_new_instance_rec.ATTRIBUTE6 := l_curr_instance_rec.ATTRIBUTE6;
32743       ELSE
32744            l_new_instance_rec.ATTRIBUTE6 := p_source_instance_rec.ATTRIBUTE6;
32745       END IF;
32746       IF  (p_source_instance_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
32747            l_new_instance_rec.ATTRIBUTE7 := l_curr_instance_rec.ATTRIBUTE7;
32748       ELSE
32749            l_new_instance_rec.ATTRIBUTE7 := p_source_instance_rec.ATTRIBUTE7;
32750       END IF;
32751       IF  (p_source_instance_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
32752            l_new_instance_rec.ATTRIBUTE8 := l_curr_instance_rec.ATTRIBUTE8;
32753       ELSE
32754            l_new_instance_rec.ATTRIBUTE8 := p_source_instance_rec.ATTRIBUTE8;
32755       END IF;
32756       -- Added for bug 2681745
32757       IF  (p_source_instance_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
32758            l_new_instance_rec.ATTRIBUTE9 := l_curr_instance_rec.ATTRIBUTE9;
32759       ELSE
32760            l_new_instance_rec.ATTRIBUTE9 := p_source_instance_rec.ATTRIBUTE9;
32761       END IF;
32762       -- End addition for bug 2681745
32763       IF  (p_source_instance_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
32764            l_new_instance_rec.ATTRIBUTE10 := l_curr_instance_rec.ATTRIBUTE10;
32765       ELSE
32766            l_new_instance_rec.ATTRIBUTE10 := p_source_instance_rec.ATTRIBUTE10;
32767       END IF;
32768       IF  (p_source_instance_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
32769            l_new_instance_rec.ATTRIBUTE11 := l_curr_instance_rec.ATTRIBUTE11;
32770       ELSE
32771            l_new_instance_rec.ATTRIBUTE11 := p_source_instance_rec.ATTRIBUTE11;
32772       END IF;
32773       IF  (p_source_instance_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
32774            l_new_instance_rec.ATTRIBUTE12 := l_curr_instance_rec.ATTRIBUTE12;
32775       ELSE
32776            l_new_instance_rec.ATTRIBUTE12 := p_source_instance_rec.ATTRIBUTE12;
32777       END IF;
32778       IF  (p_source_instance_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
32779            l_new_instance_rec.ATTRIBUTE13 := l_curr_instance_rec.ATTRIBUTE13;
32780       ELSE
32781            l_new_instance_rec.ATTRIBUTE13 := p_source_instance_rec.ATTRIBUTE13;
32782       END IF;
32783       IF  (p_source_instance_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
32784            l_new_instance_rec.ATTRIBUTE14 := l_curr_instance_rec.ATTRIBUTE14;
32785       ELSE
32786            l_new_instance_rec.ATTRIBUTE14 := p_source_instance_rec.ATTRIBUTE14;
32787       END IF;
32788       IF  (p_source_instance_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
32789            l_new_instance_rec.ATTRIBUTE15 := l_curr_instance_rec.ATTRIBUTE15;
32790       ELSE
32791            l_new_instance_rec.ATTRIBUTE15 := p_source_instance_rec.ATTRIBUTE15;
32792       END IF;
32793       IF  (p_source_instance_rec.LAST_OE_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
32794            l_new_instance_rec.LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID;
32795       ELSE
32796            l_new_instance_rec.LAST_OE_ORDER_LINE_ID := p_source_instance_rec.LAST_OE_ORDER_LINE_ID;
32797       END IF;
32798       IF (p_source_instance_rec.LAST_OE_RMA_LINE_ID  = FND_API.G_MISS_NUM) THEN
32799           l_new_instance_rec.LAST_OE_RMA_LINE_ID     := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
32800       ELSE
32801           l_new_instance_rec.LAST_OE_RMA_LINE_ID     := p_source_instance_rec.LAST_OE_RMA_LINE_ID;
32802       END IF;
32803       IF (p_source_instance_rec.LAST_PO_PO_LINE_ID  = FND_API.G_MISS_NUM) THEN
32804           l_new_instance_rec.LAST_PO_PO_LINE_ID    := l_curr_instance_rec.LAST_PO_PO_LINE_ID;
32805       ELSE
32806           l_new_instance_rec.LAST_PO_PO_LINE_ID    := p_source_instance_rec.LAST_PO_PO_LINE_ID;
32807       END IF;
32808       IF (p_source_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
32809           l_new_instance_rec.LAST_OE_PO_NUMBER       := l_curr_instance_rec.LAST_OE_PO_NUMBER;
32810       ELSE
32811           l_new_instance_rec.LAST_OE_PO_NUMBER       := p_source_instance_rec.LAST_OE_PO_NUMBER;
32812       END IF;
32813       IF (p_source_instance_rec.LAST_WIP_JOB_ID  = FND_API.G_MISS_NUM) THEN
32814           l_new_instance_rec.LAST_WIP_JOB_ID         := l_curr_instance_rec.LAST_WIP_JOB_ID;
32815       ELSE
32816           l_new_instance_rec.LAST_WIP_JOB_ID         := p_source_instance_rec.LAST_WIP_JOB_ID;
32817       END IF;
32818       IF (p_source_instance_rec.LAST_PA_PROJECT_ID  = FND_API.G_MISS_NUM) THEN
32819           l_new_instance_rec.LAST_PA_PROJECT_ID      := l_curr_instance_rec.LAST_PA_PROJECT_ID;
32820       ELSE
32821           l_new_instance_rec.LAST_PA_PROJECT_ID      := p_source_instance_rec.LAST_PA_PROJECT_ID;
32822       END IF;
32823       IF (p_source_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
32824           l_new_instance_rec.LAST_PA_TASK_ID         := l_curr_instance_rec.LAST_PA_TASK_ID ;
32825       ELSE
32826           l_new_instance_rec.LAST_PA_TASK_ID         := p_source_instance_rec.LAST_PA_TASK_ID ;
32827       END IF;
32828       IF (p_source_instance_rec.LAST_OE_AGREEMENT_ID  = FND_API.G_MISS_NUM) THEN
32829           l_new_instance_rec.LAST_OE_AGREEMENT_ID    := l_curr_instance_rec.LAST_OE_AGREEMENT_ID ;
32830       ELSE
32831           l_new_instance_rec.LAST_OE_AGREEMENT_ID    := p_source_instance_rec.LAST_OE_AGREEMENT_ID ;
32832       END IF;
32833       IF (p_source_instance_rec.INSTALL_DATE = FND_API.G_MISS_DATE) THEN
32834           l_new_instance_rec.INSTALL_DATE            := l_curr_instance_rec.INSTALL_DATE;
32835       ELSE
32836           l_new_instance_rec.INSTALL_DATE            := p_source_instance_rec.INSTALL_DATE;
32837       END IF;
32838       IF (p_source_instance_rec.RETURN_BY_DATE = FND_API.G_MISS_DATE) THEN
32839           l_new_instance_rec.RETURN_BY_DATE          := l_curr_instance_rec.RETURN_BY_DATE;
32840       ELSE
32841           l_new_instance_rec.RETURN_BY_DATE          := p_source_instance_rec.RETURN_BY_DATE;
32842       END IF;
32843       IF (p_source_instance_rec.ACTUAL_RETURN_DATE = FND_API.G_MISS_DATE) THEN
32844           l_new_instance_rec.ACTUAL_RETURN_DATE      := l_curr_instance_rec.ACTUAL_RETURN_DATE;
32845       ELSE
32846           l_new_instance_rec.ACTUAL_RETURN_DATE      := p_source_instance_rec.ACTUAL_RETURN_DATE;
32847       END IF;
32848 	--start of code for eam integration--
32849 	IF (p_source_instance_rec.NETWORK_ASSET_FLAG = FND_API.G_MISS_CHAR) THEN
32850 	    l_new_instance_rec.NETWORK_ASSET_FLAG := l_curr_instance_rec.NETWORK_ASSET_FLAG;
32851 	ELSE
32852 	    l_new_instance_rec.NETWORK_ASSET_FLAG := p_source_instance_rec.NETWORK_ASSET_FLAG;
32853 	END IF;
32854 
32855 	IF (p_source_instance_rec.MAINTAINABLE_FLAG = FND_API.G_MISS_CHAR) THEN
32856 	    l_new_instance_rec.MAINTAINABLE_FLAG := l_curr_instance_rec.MAINTAINABLE_FLAG;
32857 	ELSE
32858 	    l_new_instance_rec.MAINTAINABLE_FLAG := p_source_instance_rec.MAINTAINABLE_FLAG;
32859 	END IF;
32860 
32861 	IF (p_source_instance_rec.PN_LOCATION_ID = FND_API.G_MISS_NUM) THEN
32862 	   l_new_instance_rec.PN_LOCATION_ID := l_curr_instance_rec.PN_LOCATION_ID;
32863 	ELSE
32864 	   l_new_instance_rec.PN_LOCATION_ID := p_source_instance_rec.PN_LOCATION_ID;
32865 	END IF;
32866 
32867 	IF (p_source_instance_rec.ASSET_CRITICALITY_CODE = FND_API.G_MISS_CHAR) THEN
32868 	   l_new_instance_rec.ASSET_CRITICALITY_CODE := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
32869 	ELSE
32870 	   l_new_instance_rec.ASSET_CRITICALITY_CODE := p_source_instance_rec.ASSET_CRITICALITY_CODE;
32871 	END IF;
32872 
32873 	IF (p_source_instance_rec.CATEGORY_ID = FND_API.G_MISS_NUM) THEN
32874 	   l_new_instance_rec.CATEGORY_ID  := l_curr_instance_rec.CATEGORY_ID;
32875 	ELSE
32876 	   l_new_instance_rec.CATEGORY_ID  := p_source_instance_rec.CATEGORY_ID;
32877        END IF;
32878 
32879        IF (p_source_instance_rec.EQUIPMENT_GEN_OBJECT_ID = FND_API.G_MISS_NUM) THEN
32880 	  l_new_instance_rec.EQUIPMENT_GEN_OBJECT_ID := l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
32881        ELSE
32882 	  l_new_instance_rec.EQUIPMENT_GEN_OBJECT_ID := p_source_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
32883        END IF;
32884 
32885        IF (p_source_instance_rec.INSTANTIATION_FLAG = FND_API.G_MISS_CHAR) THEN
32886 	   l_new_instance_rec.INSTANTIATION_FLAG := l_curr_instance_rec.INSTANTIATION_FLAG;
32887        ELSE
32888 	   l_new_instance_rec.INSTANTIATION_FLAG := p_source_instance_rec.INSTANTIATION_FLAG;
32889        END IF;
32890 
32891        IF (p_source_instance_rec.LINEAR_LOCATION_ID  = FND_API.G_MISS_NUM) THEN
32892 	   l_new_instance_rec.LINEAR_LOCATION_ID  := l_curr_instance_rec.LINEAR_LOCATION_ID ;
32893        ELSE
32894 	   l_new_instance_rec.LINEAR_LOCATION_ID  := p_source_instance_rec.LINEAR_LOCATION_ID ;
32895        END IF;
32896 
32897        IF (p_source_instance_rec.OPERATIONAL_LOG_FLAG = FND_API.G_MISS_CHAR) THEN
32898 	  l_new_instance_rec.OPERATIONAL_LOG_FLAG := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
32899        ELSE
32900 	  l_new_instance_rec.OPERATIONAL_LOG_FLAG := p_source_instance_rec.OPERATIONAL_LOG_FLAG;
32901        END IF;
32902 
32903        IF (p_source_instance_rec.CHECKIN_STATUS = FND_API.G_MISS_NUM) THEN
32904 	  l_new_instance_rec.CHECKIN_STATUS := l_curr_instance_rec.CHECKIN_STATUS;
32905        ELSE
32906 	  l_new_instance_rec.CHECKIN_STATUS := p_source_instance_rec.CHECKIN_STATUS;
32907        END IF;
32908 
32909        IF (p_source_instance_rec.SUPPLIER_WARRANTY_EXP_DATE = FND_API.G_MISS_DATE) THEN
32910 	  l_new_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
32911        ELSE
32912 	  l_new_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := p_source_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
32913        END IF;
32914 
32915        IF (p_source_instance_rec.ATTRIBUTE16 = FND_API.G_MISS_CHAR) THEN
32916 	 l_new_instance_rec.ATTRIBUTE16 := l_curr_instance_rec.ATTRIBUTE16;
32917        ELSE
32918 	 l_new_instance_rec.ATTRIBUTE16 := p_source_instance_rec.ATTRIBUTE16;
32919        END IF;
32920 
32921        IF (p_source_instance_rec.ATTRIBUTE17 = FND_API.G_MISS_CHAR) THEN
32922 	  l_new_instance_rec.ATTRIBUTE17 := l_curr_instance_rec.ATTRIBUTE17;
32923        ELSE
32924 	  l_new_instance_rec.ATTRIBUTE17 := p_source_instance_rec.ATTRIBUTE17;
32925        END IF;
32926 
32927        IF (p_source_instance_rec.ATTRIBUTE18 = FND_API.G_MISS_CHAR) THEN
32928 	  l_new_instance_rec.ATTRIBUTE18 := l_curr_instance_rec.ATTRIBUTE18;
32929        ELSE
32930 	  l_new_instance_rec.ATTRIBUTE18 := p_source_instance_rec.ATTRIBUTE18;
32931        END IF;
32932 
32933        IF (p_source_instance_rec.ATTRIBUTE19 = FND_API.G_MISS_CHAR) THEN
32934 	  l_new_instance_rec.ATTRIBUTE19 := l_curr_instance_rec.ATTRIBUTE19;
32935        ELSE
32936 	  l_new_instance_rec.ATTRIBUTE19 := p_source_instance_rec.ATTRIBUTE19;
32937        END IF;
32938 
32939        IF (p_source_instance_rec.ATTRIBUTE20 = FND_API.G_MISS_CHAR) THEN
32940 	   l_new_instance_rec.ATTRIBUTE20 := l_curr_instance_rec.ATTRIBUTE20;
32941        ELSE
32942 	   l_new_instance_rec.ATTRIBUTE20 := p_source_instance_rec.ATTRIBUTE20;
32943        END IF;
32944 
32945        IF (p_source_instance_rec.ATTRIBUTE21 = FND_API.G_MISS_CHAR) THEN
32946 	   l_new_instance_rec.ATTRIBUTE21 := l_curr_instance_rec.ATTRIBUTE21;
32947        ELSE
32948 	   l_new_instance_rec.ATTRIBUTE21 := p_source_instance_rec.ATTRIBUTE21;
32949        END IF;
32950 
32951        IF (p_source_instance_rec.ATTRIBUTE22 = FND_API.G_MISS_CHAR) THEN
32952 	  l_new_instance_rec.ATTRIBUTE22 := l_curr_instance_rec.ATTRIBUTE22;
32953        ELSE
32954 	  l_new_instance_rec.ATTRIBUTE22 := p_source_instance_rec.ATTRIBUTE22;
32955        END IF;
32956 
32957        IF (p_source_instance_rec.ATTRIBUTE23 = FND_API.G_MISS_CHAR) THEN
32958 	  l_new_instance_rec.ATTRIBUTE23 := l_curr_instance_rec.ATTRIBUTE23;
32959        ELSE
32960 	  l_new_instance_rec.ATTRIBUTE23 := p_source_instance_rec.ATTRIBUTE23;
32961        END IF;
32962 
32963        IF (p_source_instance_rec.ATTRIBUTE24 = FND_API.G_MISS_CHAR) THEN
32964 	  l_new_instance_rec.ATTRIBUTE24 := l_curr_instance_rec.ATTRIBUTE24;
32965        ELSE
32966 	  l_new_instance_rec.ATTRIBUTE24 := p_source_instance_rec.ATTRIBUTE24;
32967        END IF;
32968 
32969        IF (p_source_instance_rec.ATTRIBUTE25 = FND_API.G_MISS_CHAR) THEN
32970 	   l_new_instance_rec.ATTRIBUTE25 := l_curr_instance_rec.ATTRIBUTE25;
32971        ELSE
32972 	   l_new_instance_rec.ATTRIBUTE25 := p_source_instance_rec.ATTRIBUTE25;
32973        END IF;
32974 
32975        IF (p_source_instance_rec.ATTRIBUTE26 = FND_API.G_MISS_CHAR) THEN
32976 	  l_new_instance_rec.ATTRIBUTE26 := l_curr_instance_rec.ATTRIBUTE26;
32977        ELSE
32978 	  l_new_instance_rec.ATTRIBUTE26 := p_source_instance_rec.ATTRIBUTE26;
32979        END IF;
32980 
32981        IF (p_source_instance_rec.ATTRIBUTE27 = FND_API.G_MISS_CHAR) THEN
32982 	  l_new_instance_rec.ATTRIBUTE27 := l_curr_instance_rec.ATTRIBUTE27;
32983        ELSE
32984 	  l_new_instance_rec.ATTRIBUTE27 := p_source_instance_rec.ATTRIBUTE27;
32985        END IF;
32986 
32987        IF (p_source_instance_rec.ATTRIBUTE28 = FND_API.G_MISS_CHAR) THEN
32988 	  l_new_instance_rec.ATTRIBUTE28 := l_curr_instance_rec.ATTRIBUTE28;
32989        ELSE
32990 	  l_new_instance_rec.ATTRIBUTE28 := p_source_instance_rec.ATTRIBUTE28;
32991        END IF;
32992 
32993        IF (p_source_instance_rec.ATTRIBUTE29 = FND_API.G_MISS_CHAR) THEN
32994 	  l_new_instance_rec.ATTRIBUTE29 := l_curr_instance_rec.ATTRIBUTE29;
32995        ELSE
32996 	  l_new_instance_rec.ATTRIBUTE29 := p_source_instance_rec.ATTRIBUTE29;
32997        END IF;
32998 
32999        IF (p_source_instance_rec.ATTRIBUTE30 = FND_API.G_MISS_CHAR) THEN
33000 	  l_new_instance_rec.ATTRIBUTE30 := l_curr_instance_rec.ATTRIBUTE30;
33001        ELSE
33002 	  l_new_instance_rec.ATTRIBUTE30 := p_source_instance_rec.ATTRIBUTE30;
33003        END IF;
33004 
33005        IF (p_source_instance_rec.instance_number = fnd_api.g_miss_char)
33006        THEN
33007          NULL;
33008        ELSE
33009          l_new_instance_rec.instance_number := p_source_instance_rec.instance_number;
33010        END IF;
33011 
33012        IF (p_source_instance_rec.instance_description = fnd_api.g_miss_char)
33013        THEN
33014          NULL;
33015        ELSE
33016          l_new_instance_rec.instance_description := p_source_instance_rec.instance_description;
33017        END IF;
33018 
33019       --end of code for eam integration--
33020        -- Addition of columns for FA Integration
33021 
33022             IF (p_source_instance_rec.PAYABLES_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
33023                 l_new_instance_rec.PAYABLES_UNIT_PRICE      := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
33024             ELSE
33025                 l_new_instance_rec.PAYABLES_UNIT_PRICE      := p_source_instance_rec.PAYABLES_UNIT_PRICE;
33026             END IF;
33027 
33028             IF (p_source_instance_rec.PAYABLES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
33029                 l_new_instance_rec.PAYABLES_CURRENCY_CODE := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
33030             ELSE
33031                 l_new_instance_rec.PAYABLES_CURRENCY_CODE := p_source_instance_rec.PAYABLES_CURRENCY_CODE;
33032             END IF;
33033 
33034             IF (p_source_instance_rec.PURCHASE_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
33035                 l_new_instance_rec.PURCHASE_UNIT_PRICE      := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
33036             ELSE
33037                 l_new_instance_rec.PURCHASE_UNIT_PRICE      := p_source_instance_rec.PURCHASE_UNIT_PRICE;
33038             END IF;
33039 
33040             IF (p_source_instance_rec.PURCHASE_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
33041                 l_new_instance_rec.PURCHASE_CURRENCY_CODE := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
33042             ELSE
33043                 l_new_instance_rec.PURCHASE_CURRENCY_CODE := p_source_instance_rec.PURCHASE_CURRENCY_CODE;
33044             END IF;
33045 
33046             IF (p_source_instance_rec.SALES_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
33047                 l_new_instance_rec.SALES_UNIT_PRICE      := l_curr_instance_rec.SALES_UNIT_PRICE;
33048             ELSE
33049                 l_new_instance_rec.SALES_UNIT_PRICE      := p_source_instance_rec.SALES_UNIT_PRICE;
33050             END IF;
33051 
33052             IF (p_source_instance_rec.SALES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
33053                 l_new_instance_rec.SALES_CURRENCY_CODE := l_curr_instance_rec.SALES_CURRENCY_CODE;
33054             ELSE
33055                 l_new_instance_rec.SALES_CURRENCY_CODE := p_source_instance_rec.SALES_CURRENCY_CODE;
33056             END IF;
33057 
33058             IF (p_source_instance_rec.OPERATIONAL_STATUS_CODE = FND_API.G_MISS_CHAR) THEN
33059                 l_new_instance_rec.OPERATIONAL_STATUS_CODE := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
33060             ELSE
33061                 l_new_instance_rec.OPERATIONAL_STATUS_CODE := p_source_instance_rec.OPERATIONAL_STATUS_CODE;
33062             END IF;
33063 
33064         -- End addition of columns for FA Integration
33065       -- Set the non-copiable attributes as follows
33066             l_new_instance_rec.instance_id        := FND_API.G_MISS_NUM;
33067          --   l_new_instance_rec.instance_number    := FND_API.G_MISS_CHAR;
33068 
33069          -- Added if condition for bug 6368191
33070          IF (p_source_instance_rec.active_start_date = FND_API.G_MISS_DATE)
33071          THEN
33072          --Default the active_start_date to system date if nothing was set
33073            l_new_instance_rec.active_start_date := SYSDATE;
33074          END IF;
33075 
33076             l_new_instance_rec.MANUALLY_CREATED_FLAG   := 'N';
33077             l_new_instance_rec.COMPLETENESS_FLAG       := NULL;
33078             l_new_instance_rec.OBJECT_VERSION_NUMBER   := 1;
33079                  -- The following is added for bug 2944298.
33080                  -- Value of instance_usage_code should be copied from the source instance
33081                  -- only if it is called from split.
33082                    IF p_call_from_split=fnd_api.g_true
33083                    THEN
33084                  -- Added by sguthiva for bug 2163942
33085                      IF (p_source_instance_rec.instance_usage_code = FND_API.G_MISS_CHAR) THEN
33086                          l_new_instance_rec.instance_usage_code := l_curr_instance_rec.instance_usage_code;
33087                      ELSE
33088                          l_new_instance_rec.instance_usage_code := p_source_instance_rec.instance_usage_code;
33089                      END IF;
33090 
33091                    ELSE
33092                       l_obj_id:=NULL;
33093 		      csi_ii_relationships_pvt.Get_Top_Most_Parent
33094 		        ( p_subject_id       => p_source_instance_rec.instance_id,
33095 		          p_rel_type_code    => 'COMPONENT-OF',
33096 			  p_object_id        => l_obj_id
33097 			);
33098 			--
33099 			IF l_obj_id <> p_source_instance_rec.instance_id THEN
33100 			   BEGIN
33101 			      SELECT instance_usage_code
33102 			      INTO   l_new_instance_rec.instance_usage_code
33103 			      FROM   csi_item_instances
33104 			      WHERE  instance_id=l_obj_id;
33105 			   EXCEPTION
33106 			      WHEN NO_DATA_FOUND THEN
33107 			         NULL;
33108 			   END;
33109 			 ELSE
33110 			    l_new_instance_rec.instance_usage_code := l_curr_instance_rec.instance_usage_code;
33111 			 END IF;
33112                    END IF;
33113                  -- End addition by sguthiva for bug 2163942
33114                  -- Added by sguthiva for bug 2230264
33115 
33116             IF (p_source_instance_rec.vld_organization_id = FND_API.G_MISS_NUM) THEN
33117                 l_new_instance_rec.vld_organization_id := l_vld_org_id;
33118             ELSE
33119                 l_new_instance_rec.vld_organization_id := p_source_instance_rec.vld_organization_id;
33120             END IF;
33121             IF (p_source_instance_rec.install_location_type_code = FND_API.G_MISS_CHAR) THEN
33122                 l_new_instance_rec.install_location_type_code := l_curr_instance_rec.install_location_type_code;
33123             ELSE
33124                 l_new_instance_rec.install_location_type_code := p_source_instance_rec.install_location_type_code;
33125             END IF;
33126             IF (p_source_instance_rec.install_location_id = FND_API.G_MISS_NUM) THEN
33127                 l_new_instance_rec.install_location_id := l_curr_instance_rec.install_location_id;
33128             ELSE
33129                 l_new_instance_rec.install_location_id := p_source_instance_rec.install_location_id;
33130             END IF;
33131         -- End addition by sguthiva for bug 2230264
33132 
33133      --  Call Create_item_instance to create the new instance in csi_item_instances table.
33134             CSI_ITEM_INSTANCE_PVT.create_item_instance
33135              (  p_api_version             => p_api_version
33136                 ,p_commit                 => p_commit
33137                 ,p_init_msg_list          => p_init_msg_list
33138                 ,p_validation_level       => p_validation_level
33139                 ,p_instance_rec           => l_new_instance_rec
33140                 ,p_txn_rec                => p_txn_rec
33141                 ,p_party_tbl              => l_party_tbl
33142                 ,p_asset_tbl              => l_asset_tbl
33143                 ,x_return_status          => x_return_status
33144                 ,x_msg_count              => x_msg_count
33145                 ,x_msg_data               => x_msg_data
33146                 ,p_item_attribute_tbl     => l_item_attribute_tbl
33147                 ,p_location_tbl           => l_location_tbl
33148                 ,p_generic_id_tbl         => l_generic_id_tbl
33149                 ,p_lookup_tbl             => l_lookup_tbl
33150                 ,p_ins_count_rec          => l_ins_count_rec
33151              );
33152                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33153                   l_msg_index := 1;
33154                   l_msg_count := x_msg_count;
33155                   WHILE l_msg_count > 0 LOOP
33156                        x_msg_data := FND_MSG_PUB.GET
33157                                       (l_msg_index,
33158                                      FND_API.G_FALSE      );
33159 
33160                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33161                        l_msg_index := l_msg_index + 1;
33162                        l_msg_count := l_msg_count - 1;
33163                   END LOOP;
33164                   RAISE FND_API.G_EXC_ERROR;
33165                 ELSE
33166                    x_new_instance_tbl(1) := l_new_instance_rec;
33167                    l_map_count := l_map_count + 1;
33168                    l_map_inst_tbl(l_map_count).old_instance_id := p_source_instance_rec.instance_id;
33169                    l_map_inst_tbl(l_map_count).new_instance_id := l_new_instance_rec.instance_id;
33170                 END IF;
33171 
33172 
33173           -- Create a party or parties for the new instances
33174           IF l_party_tbl.COUNT > 0 THEN
33175 
33176                 FOR tab_row_party IN l_party_tbl.FIRST .. l_party_tbl.LAST
33177 
33178                 LOOP
33179 
33180                     IF l_party_tbl.EXISTS(tab_row_party) THEN
33181 
33182                        -- Build account query rec
33183                        l_party_account_query_rec.instance_party_id := l_party_tbl(tab_row_party).instance_party_id ;
33184                        l_party_account_query_rec.ip_account_id  := FND_API.G_MISS_NUM;
33185                        l_party_account_query_rec.party_account_id   := FND_API.G_MISS_NUM;
33186                        l_party_account_query_rec.relationship_type_code  := FND_API.G_MISS_CHAR;
33187 
33188                        -- Get party accounts
33189 
33190                        csi_party_relationships_pub.get_inst_party_accounts
33191                           ( p_api_version                 => p_api_version
33192                            ,p_commit                      => p_commit
33193                            ,p_init_msg_list               => p_init_msg_list
33194                            ,p_validation_level            => p_validation_level
33195                            ,p_account_query_rec           => l_party_account_query_rec
33196                            ,p_resolve_id_columns          => fnd_api.g_true
33197                            ,p_time_stamp                  => NULL
33198                            ,x_account_header_tbl          => l_account_header_tbl
33199                            ,x_return_status               => x_return_status
33200                            ,x_msg_count                   => x_msg_count
33201                            ,x_msg_data                    => x_msg_data);
33202 
33203                             IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33204                                l_msg_index := 1;
33205                                l_msg_count := x_msg_count;
33206                                WHILE l_msg_count > 0 LOOP
33207                                     x_msg_data := FND_MSG_PUB.GET
33208                                                    (l_msg_index,
33209                                                   FND_API.G_FALSE      );
33210                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33211                                     l_msg_index := l_msg_index + 1;
33212                                     l_msg_count := l_msg_count - 1;
33213                                END LOOP;
33214                                RAISE FND_API.G_EXC_ERROR;
33215                              END IF;
33216 
33217                          -- Start Addition for Bug 2186704
33218                          IF l_account_header_tbl.count>0
33219                          THEN
33220                            k:=1;
33221                             FOR i IN l_account_header_tbl.FIRST..l_account_header_tbl.LAST
33222                             LOOP
33223                                 IF l_account_header_tbl(i).active_end_date IS NULL OR
33224                                    l_account_header_tbl(i).active_end_date > SYSDATE
33225                                 THEN
33226                                    l_pty_acct_hdr_tbl(k):= l_account_header_tbl(i);
33227                                    k := k+1;
33228                                 END IF;
33229                             END LOOP;
33230                             l_account_header_tbl:=l_temp_acct_hdr_tbl;
33231                             l_account_header_tbl:=l_pty_acct_hdr_tbl;
33232                          END IF;
33233                          -- End Addition for Bug 2186704
33234 
33235                          IF l_account_header_tbl.COUNT > 0 THEN       /***********Second Change 07/27/01 - RK**********/
33236                                  FOR tab_row_party IN l_account_header_tbl.FIRST .. l_account_header_tbl.LAST
33237                                  LOOP
33238                                     IF l_account_header_tbl.EXISTS(tab_row_party) THEN
33239                                       --  Donot copy accounts if user says so
33240                                       IF (p_copy_accounts <> fnd_api.g_true) THEN
33241                                         IF (l_account_header_tbl(tab_row_party).RELATIONSHIP_TYPE_CODE = 'OWNER') THEN
33242                                         l_party_account_tbl(tab_row_party).ip_account_id := l_account_header_tbl(tab_row_party).ip_account_id;
33243                                         l_party_account_tbl(tab_row_party).instance_party_id := l_account_header_tbl(tab_row_party).instance_party_id;
33244                                         l_party_account_tbl(tab_row_party).party_account_id := l_account_header_tbl(tab_row_party).party_account_id;
33245                                         l_party_account_tbl(tab_row_party).relationship_type_code := l_account_header_tbl(tab_row_party).relationship_type_code;
33246                                         l_party_account_tbl(tab_row_party).bill_to_address := l_account_header_tbl(tab_row_party).bill_to_address;
33247                                         l_party_account_tbl(tab_row_party).ship_to_address := l_account_header_tbl(tab_row_party).ship_to_address;
33248                                         l_party_account_tbl(tab_row_party).active_start_date := l_account_header_tbl(tab_row_party).active_start_date;
33249                                         l_party_account_tbl(tab_row_party).active_end_date := l_account_header_tbl(tab_row_party).active_end_date;
33250                                         l_party_account_tbl(tab_row_party).context := l_account_header_tbl(tab_row_party).context;
33251                                         l_party_account_tbl(tab_row_party).attribute1 := l_account_header_tbl(tab_row_party).attribute1;
33252                                         l_party_account_tbl(tab_row_party).attribute2 := l_account_header_tbl(tab_row_party).attribute2;
33253                                         l_party_account_tbl(tab_row_party).attribute3 := l_account_header_tbl(tab_row_party).attribute3;
33254                                         l_party_account_tbl(tab_row_party).attribute4 := l_account_header_tbl(tab_row_party).attribute4;
33255                                         l_party_account_tbl(tab_row_party).attribute5 := l_account_header_tbl(tab_row_party).attribute5;
33256                                         l_party_account_tbl(tab_row_party).attribute6 := l_account_header_tbl(tab_row_party).attribute6;
33257                                         l_party_account_tbl(tab_row_party).attribute7 := l_account_header_tbl(tab_row_party).attribute7;
33258                                         l_party_account_tbl(tab_row_party).attribute8 := l_account_header_tbl(tab_row_party).attribute8;
33259                                         l_party_account_tbl(tab_row_party).attribute9 := l_account_header_tbl(tab_row_party).attribute9;
33260                                         l_party_account_tbl(tab_row_party).attribute10 := l_account_header_tbl(tab_row_party).attribute10;
33261                                         l_party_account_tbl(tab_row_party).attribute11 := l_account_header_tbl(tab_row_party).attribute11;
33262                                         l_party_account_tbl(tab_row_party).attribute12 := l_account_header_tbl(tab_row_party).attribute12;
33263                                         l_party_account_tbl(tab_row_party).attribute13 := l_account_header_tbl(tab_row_party).attribute13;
33264                                         l_party_account_tbl(tab_row_party).attribute14 := l_account_header_tbl(tab_row_party).attribute14;
33265                                         l_party_account_tbl(tab_row_party).attribute15 := l_account_header_tbl(tab_row_party).attribute15;
33266                                         l_party_account_tbl(tab_row_party).object_version_number := l_account_header_tbl(tab_row_party).object_version_number;
33267                                          END IF;
33268                                        ELSE
33269                                         l_party_account_tbl(tab_row_party).ip_account_id := l_account_header_tbl(tab_row_party).ip_account_id;
33270                                         l_party_account_tbl(tab_row_party).instance_party_id := l_account_header_tbl(tab_row_party).instance_party_id;
33271                                         l_party_account_tbl(tab_row_party).party_account_id := l_account_header_tbl(tab_row_party).party_account_id;
33272                                         l_party_account_tbl(tab_row_party).relationship_type_code := l_account_header_tbl(tab_row_party).relationship_type_code;
33273                                         l_party_account_tbl(tab_row_party).bill_to_address := l_account_header_tbl(tab_row_party).bill_to_address;
33274                                         l_party_account_tbl(tab_row_party).ship_to_address := l_account_header_tbl(tab_row_party).ship_to_address;
33275                                         l_party_account_tbl(tab_row_party).active_start_date := l_account_header_tbl(tab_row_party).active_start_date;
33276                                         l_party_account_tbl(tab_row_party).active_end_date := l_account_header_tbl(tab_row_party).active_end_date;
33277                                         l_party_account_tbl(tab_row_party).context := l_account_header_tbl(tab_row_party).context;
33278                                         l_party_account_tbl(tab_row_party).attribute1 := l_account_header_tbl(tab_row_party).attribute1;
33279                                         l_party_account_tbl(tab_row_party).attribute2 := l_account_header_tbl(tab_row_party).attribute2;
33280                                         l_party_account_tbl(tab_row_party).attribute3 := l_account_header_tbl(tab_row_party).attribute3;
33281                                         l_party_account_tbl(tab_row_party).attribute4 := l_account_header_tbl(tab_row_party).attribute4;
33282                                         l_party_account_tbl(tab_row_party).attribute5 := l_account_header_tbl(tab_row_party).attribute5;
33283                                         l_party_account_tbl(tab_row_party).attribute6 := l_account_header_tbl(tab_row_party).attribute6;
33284                                         l_party_account_tbl(tab_row_party).attribute7 := l_account_header_tbl(tab_row_party).attribute7;
33285                                         l_party_account_tbl(tab_row_party).attribute8 := l_account_header_tbl(tab_row_party).attribute8;
33286                                         l_party_account_tbl(tab_row_party).attribute9 := l_account_header_tbl(tab_row_party).attribute9;
33287                                         l_party_account_tbl(tab_row_party).attribute10 := l_account_header_tbl(tab_row_party).attribute10;
33288                                         l_party_account_tbl(tab_row_party).attribute11 := l_account_header_tbl(tab_row_party).attribute11;
33289                                         l_party_account_tbl(tab_row_party).attribute12 := l_account_header_tbl(tab_row_party).attribute12;
33290                                         l_party_account_tbl(tab_row_party).attribute13 := l_account_header_tbl(tab_row_party).attribute13;
33291                                         l_party_account_tbl(tab_row_party).attribute14 := l_account_header_tbl(tab_row_party).attribute14;
33292                                         l_party_account_tbl(tab_row_party).attribute15 := l_account_header_tbl(tab_row_party).attribute15;
33293                                         l_party_account_tbl(tab_row_party).object_version_number := l_account_header_tbl(tab_row_party).object_version_number;
33294                                         END IF;
33295                                       END IF;
33296                                  END LOOP;
33297                          END IF; --l_account_header_tbl.COUNT > 0
33298                     -- Empty the account_header table
33299                        l_account_header_tbl.DELETE;
33300                     -- Build the party table
33301                        l_party_tbl(tab_row_party).instance_party_id             := FND_API.G_MISS_NUM;
33302                        l_party_tbl(tab_row_party).INSTANCE_ID                   := l_new_instance_rec.instance_id;
33303                        l_party_tbl(tab_row_party).ACTIVE_START_DATE             := FND_API.G_MISS_DATE;
33304                        l_party_tbl(tab_row_party).ACTIVE_END_DATE               := FND_API.G_MISS_DATE;
33305                    -- Build the temporary party table with only one record
33306                    -- for and grab all its accounts
33307                        l_party_input_tbl(1) := l_party_tbl(tab_row_party);
33308                 -- Build its corresponding accounts
33309                         IF l_party_account_tbl.COUNT > 0 THEN
33310                             FOR tab_row_acct IN l_party_account_tbl.FIRST .. l_party_account_tbl.LAST
33311                             LOOP
33312                                -- l_party_account_tbl(tab_row_acct).parent_tbl_index := tab_row_party;
33313                                l_party_account_tbl(tab_row_acct).parent_tbl_index := 1;
33314                                l_party_account_tbl(tab_row_acct).ip_account_id  := FND_API.G_MISS_NUM;
33315                                l_party_account_tbl(tab_row_acct).instance_party_id := l_party_input_tbl(l_party_account_tbl(tab_row_acct).parent_tbl_index).instance_party_id;
33316                                l_party_account_tbl(tab_row_acct).ACTIVE_START_DATE := FND_API.G_MISS_DATE;
33317                                l_party_account_tbl(tab_row_acct).ACTIVE_END_DATE   := FND_API.G_MISS_DATE;
33318                                l_party_account_tbl(tab_row_acct).call_contracts := FND_API.G_FALSE; -- srramakr Bug 2468638
33319                             END LOOP;
33320                         END IF;
33321                          -- Creae instance party relationship and its accounts
33322                         csi_party_relationships_pub.create_inst_party_relationship
33323                             ( p_api_version                 => p_api_version
33324                              ,p_commit                      => p_commit
33325                              ,p_init_msg_list               => p_init_msg_list
33326                              ,p_validation_level            => p_validation_level
33327                              ,p_party_tbl                   => l_party_input_tbl
33328                              ,p_party_account_tbl           => l_party_account_tbl
33329                              ,p_txn_rec                     => p_txn_rec
33330                              ,p_oks_txn_inst_tbl            => px_oks_txn_inst_tbl
33331                              ,x_return_status               => x_return_status
33332                              ,x_msg_count                   => x_msg_count
33333                              ,x_msg_data                    => x_msg_data
33334                               );
33335                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33336                                l_msg_index := 1;
33337                                l_msg_count := x_msg_count;
33338                                WHILE l_msg_count > 0 LOOP
33339                                     x_msg_data := FND_MSG_PUB.GET
33340                                                    (l_msg_index,
33341                                                   FND_API.G_FALSE      );
33342                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33343                                     l_msg_index := l_msg_index + 1;
33344                                     l_msg_count := l_msg_count - 1;
33345                                END LOOP;
33346                                RAISE FND_API.G_EXC_ERROR;
33347                              END IF;
33348                              -- Grab the new parties created in a new table
33349                                l_new_party_tbl(tab_row_party) := l_party_input_tbl(1);
33350                              -- Empty the party table
33351                                l_party_input_tbl.DELETE;
33352                              -- Empty the account table
33353                                l_party_account_tbl.DELETE;
33354            END IF;
33355           END LOOP;
33356       END IF;
33357           -- Create a contact or contacts for the new instances
33358       IF  (p_copy_contacts  = fnd_api.g_true) THEN
33359           IF l_contact_tbl.COUNT > 0 THEN
33360                 FOR tab_row_contact IN l_contact_tbl.FIRST .. l_contact_tbl.LAST
33361                 LOOP
33362                     IF l_contact_tbl.EXISTS(tab_row_contact) THEN
33363                       -- Find the contact_ip_id which was just created
33364                       -- for this contact
33365                        IF (l_original_party_tbl.COUNT > 0) THEN
33366                           FOR tab_row_party IN l_original_party_tbl.FIRST .. l_original_party_tbl.LAST
33367                           LOOP
33368                             IF l_original_party_tbl.EXISTS(tab_row_party) THEN
33369                               IF (l_original_party_tbl(tab_row_party).instance_party_id
33370                                  = l_contact_tbl(tab_row_contact).contact_ip_id )
33371                                 THEN
33372                                  l_contact_tbl(tab_row_contact).contact_ip_id :=
33373                                    l_new_party_tbl(tab_row_party).instance_party_id;
33374                                  l_contact_found_flag := TRUE;
33375                               END IF;
33376                             END IF;
33377                           END LOOP;
33378                        END IF;
33379                     -- Check if the contact_ip_id exists
33380                        IF ((l_contact_tbl(tab_row_contact).contact_ip_id IS NULL) OR
33381                        (l_contact_tbl(tab_row_contact).contact_ip_id
33382                          = FND_API.G_MISS_NUM)
33383                         OR NOT(l_contact_found_flag) ) THEN
33384                            FND_MESSAGE.SET_NAME('CSI','CSI_API_CONTACT_IP_ID_NULL');
33385                            FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',
33386                               l_contact_tbl(tab_row_contact).instance_party_id);
33387                            FND_MSG_PUB.Add;
33388                            RAISE FND_API.G_EXC_ERROR;
33389                        END IF;
33390                     -- Build other fiels of the contact table
33391                        l_contact_tbl(tab_row_contact).instance_party_id             := FND_API.G_MISS_NUM;
33392                        l_contact_tbl(tab_row_contact).contact_flag   := 'Y';
33393                        l_contact_tbl(tab_row_contact).INSTANCE_ID                   := l_new_instance_rec.instance_id;
33394                        l_contact_tbl(tab_row_contact).ACTIVE_START_DATE             := FND_API.G_MISS_DATE;
33395                        l_contact_tbl(tab_row_contact).ACTIVE_END_DATE               := FND_API.G_MISS_DATE;
33396                    -- Build the temporary party table with only one record
33397                    -- for and grab all its accounts
33398                        l_contact_input_tbl(1) := l_contact_tbl(tab_row_contact);
33399 
33400                          -- Create instance party relationship and its accounts
33401                         csi_party_relationships_pub.create_inst_party_relationship
33402                             ( p_api_version                 => p_api_version
33403                              ,p_commit                      => p_commit
33404                              ,p_init_msg_list               => p_init_msg_list
33405                              ,p_validation_level            => p_validation_level
33406                              ,p_party_tbl                   => l_contact_input_tbl
33407                              ,p_party_account_tbl           => l_contact_account_tbl
33408                              ,p_txn_rec                     => p_txn_rec
33409                              ,p_oks_txn_inst_tbl            => px_oks_txn_inst_tbl
33410                              ,x_return_status               => x_return_status
33411                              ,x_msg_count                   => x_msg_count
33412                              ,x_msg_data                    => x_msg_data
33413                               );
33414                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33415                                l_msg_index := 1;
33416                                l_msg_count := x_msg_count;
33417                                WHILE l_msg_count > 0 LOOP
33418                                     x_msg_data := FND_MSG_PUB.GET
33419                                                    (l_msg_index,
33420                                                   FND_API.G_FALSE      );
33421                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33422                                     l_msg_index := l_msg_index + 1;
33423                                     l_msg_count := l_msg_count - 1;
33424                                END LOOP;
33425                                RAISE FND_API.G_EXC_ERROR;
33426                              END IF;
33427                              -- Grab the new parties created in a new table
33428                                l_new_contact_tbl(tab_row_contact) := l_contact_input_tbl(1);
33429                              -- Empty the party table
33430                                l_contact_input_tbl.DELETE;
33431                              -- Empty the account table
33432                                l_contact_account_tbl.DELETE;
33433                              l_contact_found_flag := FALSE;
33434            END IF;
33435           END LOOP;
33436       END IF;
33437    END IF;
33438        -- Empty the party and contact tables
33439        l_new_contact_tbl.DELETE;
33440        l_new_party_tbl.DELETE;
33441   -- Create asset assignments if requested. Asset assignments have already been fetched before
33442     IF  (p_copy_asset_assignments  = fnd_api.g_true) THEN
33443        IF l_asset_tbl.COUNT > 0 THEN
33444          FOR tab_row IN l_asset_tbl.FIRST .. l_asset_tbl.LAST
33445          LOOP
33446             IF l_asset_tbl.EXISTS(tab_row) THEN
33447                  l_asset_tbl(tab_row).INSTANCE_ID          := l_new_instance_rec.instance_id;
33448                  l_asset_tbl(tab_row).INSTANCE_ASSET_ID   := FND_API.G_MISS_NUM;
33449                  l_asset_tbl(tab_row).ACTIVE_START_DATE    := FND_API.G_MISS_DATE;
33450                  l_asset_tbl(tab_row).ACTIVE_END_DATE      := FND_API.G_MISS_DATE;
33451                  -- Trap the row in a record and create assets row by row
33452                  l_instance_asset_rec := l_asset_tbl(tab_row);
33453                   csi_asset_pvt.create_instance_asset
33454                     ( p_api_version                 => p_api_version
33455                      ,p_commit                      => p_commit
33456                      ,p_init_msg_list               => p_init_msg_list
33457                      ,p_validation_level            => p_validation_level
33458                      ,p_instance_asset_rec          => l_instance_asset_rec
33459                      ,p_txn_rec                     => p_txn_rec
33460                      ,x_return_status               => x_return_status
33461                      ,x_msg_count                   => x_msg_count
33462                      ,x_msg_data                    => x_msg_data
33463                      ,p_lookup_tbl                  => l_asset_lookup_tbl
33464                      ,p_asset_count_rec             => l_asset_count_rec
33465                      ,p_asset_id_tbl                => l_asset_id_tbl
33466                      ,p_asset_loc_tbl               => l_asset_loc_tbl
33467                     );
33468                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33469                                l_msg_index := 1;
33470                                l_msg_count := x_msg_count;
33471                                WHILE l_msg_count > 0 LOOP
33472                                     x_msg_data := FND_MSG_PUB.GET
33473                                                    (l_msg_index,
33474                                                   FND_API.G_FALSE      );
33475                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33476                                     l_msg_index := l_msg_index + 1;
33477                                     l_msg_count := l_msg_count - 1;
33478                                END LOOP;
33479                                RAISE FND_API.G_EXC_ERROR;
33480                              END IF;
33481               END IF;
33482            END LOOP;
33483         END IF;
33484      END IF;
33485    -- Created extended attributes if requested
33486     IF (p_copy_ext_attribs =  fnd_api.g_true) THEN
33487         l_ext_attribs_query_rec.attribute_value_id  := FND_API.G_MISS_NUM;
33488         l_ext_attribs_query_rec.instance_id := l_curr_instance_rec.instance_id;
33489         l_ext_attribs_query_rec.attribute_id := FND_API.G_MISS_NUM;
33490         csi_item_instance_pub.get_extended_attrib_values
33491                (p_api_version            =>  p_api_version
33492                ,p_commit                 => p_commit
33493                ,p_init_msg_list          => p_init_msg_list
33494                ,p_validation_level       => p_validation_level
33495                ,p_ext_attribs_query_rec  => l_ext_attribs_query_rec
33496                ,p_time_stamp             => NULL
33497                ,x_ext_attrib_tbl         => l_ext_attrib_tbl
33498                ,x_ext_attrib_def_tbl     => l_ext_attrib_def_tbl
33499                ,x_return_status          => x_return_status
33500                ,x_msg_count              => x_msg_count
33501                ,x_msg_data               => x_msg_data
33502                );
33503                       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33504                                l_msg_index := 1;
33505                                l_msg_count := x_msg_count;
33506                                WHILE l_msg_count > 0 LOOP
33507                                     x_msg_data := FND_MSG_PUB.GET
33508                                                    (l_msg_index,
33509                                                   FND_API.G_FALSE      );
33510                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33511                                     l_msg_index := l_msg_index + 1;
33512                                     l_msg_count := l_msg_count - 1;
33513                                END LOOP;
33514                                RAISE FND_API.G_EXC_ERROR;
33515                       END IF;
33516       IF l_ext_attrib_tbl.COUNT > 0 THEN
33517          FOR tab_row IN l_ext_attrib_tbl.FIRST .. l_ext_attrib_tbl.LAST
33518          LOOP
33519             IF l_ext_attrib_tbl.EXISTS(tab_row) THEN
33520               IF NOT(csi_Item_Instance_Vld_pvt.get_ext_attrib_level(l_ext_attrib_tbl(tab_row).attribute_id,
33521                                         l_attribute_level ))THEN
33522                  RAISE FND_API.G_EXC_ERROR;
33523               END IF;
33524               IF (l_attribute_level = 'INSTANCE') THEN
33525                  l_ext_attrib_tbl.DELETE (tab_row);
33526               ELSE
33527                  l_ext_attrib_tbl(tab_row).INSTANCE_ID := l_new_instance_rec.instance_id;
33528                  l_ext_attrib_tbl(tab_row).ATTRIBUTE_VALUE_ID   := FND_API.G_MISS_NUM;
33529                  l_ext_attrib_tbl(tab_row).ACTIVE_START_DATE  := FND_API.G_MISS_DATE;
33530                  l_ext_attrib_tbl(tab_row).ACTIVE_END_DATE  := FND_API.G_MISS_DATE;
33531               END IF;
33532             END IF;
33533          END LOOP;
33534             -- It is possible that all the extended attributes were set at instance level and thus we have an empty table
33535             IF l_ext_attrib_tbl.COUNT > 0 THEN
33536               csi_item_instance_pub.create_extended_attrib_values
33537               ( p_api_version         => p_api_version
33538                ,p_commit              => p_commit
33539                ,p_init_msg_list       => p_init_msg_list
33540                ,p_validation_level    => p_validation_level
33541                ,p_ext_attrib_tbl      => l_ext_attrib_tbl
33542                ,p_txn_rec             => p_txn_rec
33543                ,x_return_status       => x_return_status
33544                ,x_msg_count           => x_msg_count
33545                ,x_msg_data            => x_msg_data
33546               );
33547                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33548                                l_msg_index := 1;
33549                                l_msg_count := x_msg_count;
33550                                WHILE l_msg_count > 0 LOOP
33551                                     x_msg_data := FND_MSG_PUB.GET
33552                                                    (l_msg_index,
33553                                                   FND_API.G_FALSE      );
33554                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33555                                     l_msg_index := l_msg_index + 1;
33556                                     l_msg_count := l_msg_count - 1;
33557                                END LOOP;
33558                                RAISE FND_API.G_EXC_ERROR;
33559                              END IF;
33560              END IF;
33561           END IF;
33562        END IF;
33563     -- Create org assignments if requested
33564     IF (p_copy_org_assignments = fnd_api.g_true) THEN
33565           l_ou_query_rec.instance_ou_id := FND_API.G_MISS_NUM;
33566           l_ou_query_rec.instance_id := l_curr_instance_rec.instance_id;
33567           l_ou_query_rec.operating_unit_id := FND_API.G_MISS_NUM;
33568           l_ou_query_rec.relationship_type_code  := FND_API.G_MISS_CHAR;
33569             csi_organization_unit_pub.get_organization_unit
33570                (
33571                p_api_version             => p_api_version
33572                ,p_commit                 => p_commit
33573                ,p_init_msg_list          => p_init_msg_list
33574                ,p_validation_level       => p_validation_level
33575                ,p_ou_query_rec           => l_ou_query_rec
33576                ,p_resolve_id_columns     => fnd_api.g_true
33577                ,p_time_stamp             => NULL
33578                ,x_org_unit_tbl           => l_org_unit_header_tbl
33579                ,x_return_status          => x_return_status
33580                ,x_msg_count              => x_msg_count
33581                ,x_msg_data               => x_msg_data
33582                );
33583                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33584                                l_msg_index := 1;
33585                                l_msg_count := x_msg_count;
33586                                WHILE l_msg_count > 0 LOOP
33587                                     x_msg_data := FND_MSG_PUB.GET
33588                                                    (l_msg_index,
33589                                                   FND_API.G_FALSE      );
33590                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33591                                     l_msg_index := l_msg_index + 1;
33592                                     l_msg_count := l_msg_count - 1;
33593                                END LOOP;
33594                                RAISE FND_API.G_EXC_ERROR;
33595                              END IF;
33596               IF l_org_unit_header_tbl.COUNT > 0 THEN    /*****First change here 08/25/01 - RK***/
33597                 FOR tab_row_party IN l_org_unit_header_tbl.FIRST .. l_org_unit_header_tbl.LAST
33598                 LOOP
33599                      IF l_org_unit_header_tbl.EXISTS(tab_row_party) THEN
33600                              l_org_unit_tbl(tab_row_party).instance_ou_id := l_org_unit_header_tbl(tab_row_party).instance_ou_id;
33601                              l_org_unit_tbl(tab_row_party).instance_id := l_org_unit_header_tbl(tab_row_party).instance_id;
33602                              l_org_unit_tbl(tab_row_party).operating_unit_id := l_org_unit_header_tbl(tab_row_party).operating_unit_id;
33603                              l_org_unit_tbl(tab_row_party).relationship_type_code := l_org_unit_header_tbl(tab_row_party).relationship_type_code;
33604                              l_org_unit_tbl(tab_row_party).active_start_date := l_org_unit_header_tbl(tab_row_party).active_start_date;
33605                              l_org_unit_tbl(tab_row_party).active_end_date := l_org_unit_header_tbl(tab_row_party).active_end_date;
33606                              l_org_unit_tbl(tab_row_party).context := l_org_unit_header_tbl(tab_row_party).context;
33607                              l_org_unit_tbl(tab_row_party).attribute1 := l_org_unit_header_tbl(tab_row_party).attribute1;
33608                              l_org_unit_tbl(tab_row_party).attribute2 := l_org_unit_header_tbl(tab_row_party).attribute2;
33609                              l_org_unit_tbl(tab_row_party).attribute3 := l_org_unit_header_tbl(tab_row_party).attribute3;
33610                              l_org_unit_tbl(tab_row_party).attribute4 := l_org_unit_header_tbl(tab_row_party).attribute4;
33611                              l_org_unit_tbl(tab_row_party).attribute5 := l_org_unit_header_tbl(tab_row_party).attribute5;
33612                              l_org_unit_tbl(tab_row_party).attribute6 := l_org_unit_header_tbl(tab_row_party).attribute6;
33613                              l_org_unit_tbl(tab_row_party).attribute7 := l_org_unit_header_tbl(tab_row_party).attribute7;
33614                              l_org_unit_tbl(tab_row_party).attribute8 := l_org_unit_header_tbl(tab_row_party).attribute8;
33615                              l_org_unit_tbl(tab_row_party).attribute9 := l_org_unit_header_tbl(tab_row_party).attribute9;
33616                              l_org_unit_tbl(tab_row_party).attribute10 := l_org_unit_header_tbl(tab_row_party).attribute10;
33617                              l_org_unit_tbl(tab_row_party).attribute11 := l_org_unit_header_tbl(tab_row_party).attribute11;
33618                              l_org_unit_tbl(tab_row_party).attribute12 := l_org_unit_header_tbl(tab_row_party).attribute12;
33619                              l_org_unit_tbl(tab_row_party).attribute13 := l_org_unit_header_tbl(tab_row_party).attribute13;
33620                              l_org_unit_tbl(tab_row_party).attribute14 := l_org_unit_header_tbl(tab_row_party).attribute14;
33621                              l_org_unit_tbl(tab_row_party).attribute15 := l_org_unit_header_tbl(tab_row_party).attribute15;
33622                              l_org_unit_tbl(tab_row_party).object_version_number := l_org_unit_header_tbl(tab_row_party).object_version_number;
33623                      END IF;
33624                 END LOOP;
33625              END IF; --l_org_unit_header_tbl.COUNT > 0
33626      IF l_org_unit_tbl.COUNT > 0 THEN
33627          FOR tab_row IN l_org_unit_tbl.FIRST .. l_org_unit_tbl.LAST
33628          LOOP
33629             IF l_org_unit_tbl.EXISTS(tab_row) THEN
33630                  l_org_unit_tbl(tab_row).INSTANCE_ID        := l_new_instance_rec.instance_id;
33631                  l_org_unit_tbl(tab_row).INSTANCE_OU_ID     := FND_API.G_MISS_NUM;
33632                  l_org_unit_tbl(tab_row).ACTIVE_START_DATE  := FND_API.G_MISS_DATE;
33633                  l_org_unit_tbl(tab_row).ACTIVE_END_DATE    := FND_API.G_MISS_DATE;
33634               END IF;
33635          END LOOP;
33636             csi_organization_unit_pub.create_organization_unit
33637             ( p_api_version       => p_api_version
33638              ,p_commit            => p_commit
33639              ,p_init_msg_list     => p_init_msg_list
33640              ,p_validation_level  => p_validation_level
33641              ,p_org_unit_tbl      => l_org_unit_tbl
33642              ,p_txn_rec           => p_txn_rec
33643              ,x_return_status     => x_return_status
33644              ,x_msg_count         => x_msg_count
33645              ,x_msg_data          => x_msg_data
33646             );
33647                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33648                                l_msg_index := 1;
33649                                l_msg_count := x_msg_count;
33650                                WHILE l_msg_count > 0 LOOP
33651                                     x_msg_data := FND_MSG_PUB.GET
33652                                                    (l_msg_index,
33653                                                   FND_API.G_FALSE      );
33654                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33655                                     l_msg_index := l_msg_index + 1;
33656                                     l_msg_count := l_msg_count - 1;
33657                                END LOOP;
33658                                RAISE FND_API.G_EXC_ERROR;
33659                              END IF;
33660          END IF;
33661     END IF;
33662    -- Create pricing attributes if requested
33663    IF (p_copy_pricing_attribs = fnd_api.g_true) THEN
33664       l_pricing_attribs_query_rec.pricing_attribute_id  := FND_API.G_MISS_NUM;
33665       l_pricing_attribs_query_rec.instance_id           := l_curr_instance_rec.instance_id;
33666 
33667        csi_pricing_attribs_pub.get_pricing_attribs
33668             ( p_api_version                 => p_api_version
33669              ,p_commit                      => p_commit
33670              ,p_init_msg_list               => p_init_msg_list
33671              ,p_validation_level            => p_validation_level
33672              ,p_pricing_attribs_query_rec   => l_pricing_attribs_query_rec
33673              ,p_time_stamp                  => NULL
33674              ,x_pricing_attribs_tbl         => l_pricing_attribs_tbl
33675              ,x_return_status               => x_return_status
33676              ,x_msg_count                   => x_msg_count
33677              ,x_msg_data                    => x_msg_data
33678             );
33679 
33680                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33681                                l_msg_index := 1;
33682                                l_msg_count := x_msg_count;
33683                                WHILE l_msg_count > 0 LOOP
33684                                     x_msg_data := FND_MSG_PUB.GET
33685                                                    (l_msg_index,
33686                                                   FND_API.G_FALSE      );
33687                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33688                                     l_msg_index := l_msg_index + 1;
33689                                     l_msg_count := l_msg_count - 1;
33690                                END LOOP;
33691                                RAISE FND_API.G_EXC_ERROR;
33692                              END IF;
33693 
33694 
33695      IF l_pricing_attribs_tbl.COUNT > 0 THEN
33696          FOR tab_row IN l_pricing_attribs_tbl.FIRST .. l_pricing_attribs_tbl.LAST
33697          LOOP
33698             IF l_pricing_attribs_tbl.EXISTS(tab_row) THEN
33699                  l_pricing_attribs_tbl(tab_row).INSTANCE_ID            := l_new_instance_rec.instance_id;
33700                  l_pricing_attribs_tbl(tab_row).PRICING_ATTRIBUTE_ID   := FND_API.G_MISS_NUM;
33701                  l_pricing_attribs_tbl(tab_row).ACTIVE_START_DATE      := FND_API.G_MISS_DATE;
33702                  l_pricing_attribs_tbl(tab_row).ACTIVE_END_DATE        := FND_API.G_MISS_DATE;
33703               END IF;
33704          END LOOP;
33705 
33706          csi_pricing_attribs_pub.create_pricing_attribs
33707             ( p_api_version                 => p_api_version
33708              ,p_commit                      => p_commit
33709              ,p_init_msg_list               => p_init_msg_list
33710              ,p_validation_level            => p_validation_level
33711              ,p_pricing_attribs_tbl         => l_pricing_attribs_tbl
33712              ,p_txn_rec                     => p_txn_rec
33713              ,x_return_status               => x_return_status
33714              ,x_msg_count                   => x_msg_count
33715              ,x_msg_data                    => x_msg_data
33716             );
33717 
33718                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33719                                l_msg_index := 1;
33720                                l_msg_count := x_msg_count;
33721                                WHILE l_msg_count > 0 LOOP
33722                                     x_msg_data := FND_MSG_PUB.GET
33723                                                    (l_msg_index,
33724                                                   FND_API.G_FALSE      );
33725                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33726                                     l_msg_index := l_msg_index + 1;
33727                                     l_msg_count := l_msg_count - 1;
33728                                END LOOP;
33729                                RAISE FND_API.G_EXC_ERROR;
33730                              END IF;
33731        END IF;
33732    END IF;
33733 
33734 
33735 -- Added by rtalluri for Bug: 2420897 on 08/19/02
33736 -- If version label is null, then we need read the the default value from the profile option
33737       IF (p_source_instance_rec.VERSION_LABEL IS NULL ) OR
33738          (p_source_instance_rec.VERSION_LABEL = FND_API.G_MISS_CHAR) THEN
33739           l_version_label := FND_PROFILE.VALUE('CSI_DEFAULT_VERSION_LABEL');
33740            IF  l_version_label IS NULL THEN
33741                FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_VERSION_LABEL');
33742                FND_MSG_PUB.ADD;
33743                RAISE FND_API.G_EXC_ERROR;
33744            ELSE
33745                l_new_instance_rec.version_label := l_version_label;
33746            END IF;
33747       ELSE
33748         l_new_instance_rec.VERSION_LABEL := p_source_instance_rec.VERSION_LABEL;
33749       END IF;
33750 
33751       --Calling the Create Version Label API to associate a version label for an instance created
33752 
33753         l_version_label_rec.instance_id           := l_new_instance_rec.instance_id;
33754         l_version_label_rec.version_label         := l_new_instance_rec.version_label;
33755         l_version_label_rec.date_time_stamp       := SYSDATE;
33756         l_version_label_rec.active_start_date     := l_new_instance_rec.active_start_date;
33757         l_version_label_rec.description           := l_new_instance_rec.version_label_description;
33758 
33759         csi_item_instance_pvt.create_version_label
33760           (
33761            p_api_version         => p_api_version
33762           ,p_commit              => fnd_api.g_false
33763           ,p_init_msg_list       => p_init_msg_list
33764           ,p_validation_level    => p_validation_level
33765           ,p_version_label_rec   => l_version_label_rec
33766           ,p_txn_rec             => p_txn_rec
33767           ,x_return_status       => x_return_status
33768           ,x_msg_count           => x_msg_count
33769           ,x_msg_data            => x_msg_data
33770            );
33771 
33772          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33773               csi_gen_utility_pvt.put_line( ' Error from COPY_ITEM_INSTANCE.CREATE_VERSION_LABEL..');
33774               csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
33775               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_CREATE_VERSION');
33776               FND_MESSAGE.SET_TOKEN('API_ERROR','CREATE_VERSION_LABEL');
33777               FND_MSG_PUB.Add;
33778               RAISE FND_API.G_EXC_ERROR;
33779          END IF;
33780 -- End of Addition by rtalluri for Bug: 2420897 on 08/19/02
33781 
33782       IF p_call_from_split = fnd_api.g_false
33783       THEN
33784            -- Added by sk for fixing the bug 2234365
33785            IF x_new_instance_tbl(1).instance_id IS NOT NULL AND
33786               x_new_instance_tbl(1).instance_id <> fnd_api.g_miss_num
33787            THEN
33788                   -- Added by sk for fixing bug 2245976
33789                   IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
33790                      csi_gen_utility_pvt.populate_install_param_rec;
33791                   END IF;
33792                   --
33793                   l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
33794                   --
33795                   IF l_internal_party_id IS NULL THEN
33796                      FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
33797                      FND_MSG_PUB.ADD;
33798                      RAISE FND_API.G_EXC_ERROR;
33799                   END IF;
33800 
33801                   BEGIN
33802                       SELECT cip.party_id
33803                       INTO   l_party_id
33804                       FROM   csi_i_parties cip
33805                       WHERE  cip.instance_id = x_new_instance_tbl(1).instance_id
33806                       AND    cip.relationship_type_code = 'OWNER';
33807                  EXCEPTION
33808                    WHEN OTHERS THEN
33809                     l_party_id := NULL;
33810                    END;
33811 
33812                    IF l_party_id IS NOT NULL AND
33813                       l_internal_party_id IS NOT NULL AND
33814                       l_party_id <> l_internal_party_id
33815                    THEN
33816                       -- End addition by sk for fixing bug 2245976
33817                       csi_item_instance_pvt.Call_to_Contracts(
33818                               p_transaction_type   =>   'NEW'
33819                              ,p_instance_id        =>   x_new_instance_tbl(1).instance_id
33820                              ,p_new_instance_id    =>   NULL
33821                              ,p_vld_org_id         =>   x_new_instance_tbl(1).vld_organization_id
33822                              ,p_quantity           =>   NULL
33823                              ,p_party_account_id1  =>   NULL
33824                              ,p_party_account_id2  =>   NULL
33825                              ,p_transaction_date   =>   p_txn_rec.transaction_date -- For 3483763
33826                              ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date -- For 3483763
33827                              ,p_oks_txn_inst_tbl   =>   px_oks_txn_inst_tbl
33828                              ,x_return_status      =>   x_return_status
33829                              ,x_msg_count          =>   x_msg_count
33830                              ,x_msg_data           =>   x_msg_data
33831                               );
33832 
33833                       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
33834                       THEN
33835                          l_msg_index := 1;
33836                          l_msg_count := x_msg_count;
33837                          WHILE l_msg_count > 0 LOOP
33838                           x_msg_data := FND_MSG_PUB.GET
33839                                    (  l_msg_index,
33840                                       FND_API.G_FALSE
33841                                     );
33842                            csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
33843                              l_msg_index := l_msg_index + 1;
33844                              l_msg_count := l_msg_count - 1;
33845                          END LOOP;
33846                          RAISE FND_API.G_EXC_ERROR;
33847                       END IF;
33848                       --
33849 		      IF px_oks_txn_inst_tbl.count > 0 THEN
33850 			 csi_gen_utility_pvt.dump_oks_txn_inst_tbl(px_oks_txn_inst_tbl);
33851 			 csi_gen_utility_pvt.put_line('Calling OKS Core API...');
33852 			 --
33853 			 IF p_txn_rec.transaction_type_id = 3 THEN
33854 			    l_batch_id := p_txn_rec.source_header_ref_id;
33855 			    l_batch_type := p_txn_rec.source_group_ref;
33856 			 ELSE
33857 			    l_batch_id := NULL;
33858 			    l_batch_type := NULL;
33859 			 END IF;
33860 			 --
33861                          UPDATE CSI_TRANSACTIONS
33862                          set contracts_invoked = 'Y'
33863                          where transaction_id = p_txn_rec.transaction_id;
33864                          --
33865 			 OKS_IBINT_PUB.IB_interface
33866 			    (
33867 			      P_Api_Version           =>  1.0,
33868 			      P_init_msg_list         =>  p_init_msg_list,
33869 			      P_single_txn_date_flag  =>  'Y',
33870 			      P_Batch_type            =>  l_batch_type,
33871 			      P_Batch_ID              =>  l_batch_id,
33872 			      P_OKS_Txn_Inst_tbl      =>  px_oks_txn_inst_tbl,
33873 			      x_return_status         =>  x_return_status,
33874 			      x_msg_count             =>  x_msg_count,
33875 			      x_msg_data              =>  x_msg_data
33876 			   );
33877 			 --
33878 			 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33879 			    l_msg_index := 1;
33880 			    l_msg_count := x_msg_count;
33881 			    WHILE l_msg_count > 0 LOOP
33882 			       x_msg_data := FND_MSG_PUB.GET
33883 				       (  l_msg_index,
33884 					  FND_API.G_FALSE        );
33885 			       csi_gen_utility_pvt.put_line( 'Error from OKS_IBINT_PUB.IB_interface..');
33886 			       csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
33887 			       l_msg_index := l_msg_index + 1;
33888 			       l_msg_count := l_msg_count - 1;
33889 			    END LOOP;
33890 			    RAISE FND_API.G_EXC_ERROR;
33891 			 END IF;
33892 		      END IF;
33893                    END IF;
33894            END IF;
33895           -- End Addition by sk for fixing the bug 2234365
33896       END IF;
33897 
33898    -- Copy child instances if desired
33899    IF (p_copy_inst_children = fnd_api.g_true) THEN
33900 
33901       p_rel_query_rec.object_id := p_source_instance_rec.instance_id;
33902       p_rel_query_rec.relationship_type_code := 'COMPONENT-OF';
33903       --
33904       IF p_rel_query_rec.object_id IS NOT NULL AND
33905          p_rel_query_rec.object_id <> FND_API.G_MISS_NUM THEN
33906         csi_ii_relationships_pvt.Get_Children
33907 	 ( p_relationship_query_rec   => p_rel_query_rec,
33908 	   p_rel_tbl                  => l_rel_tbl,
33909            p_depth                    => NULL,
33910 	   p_active_relationship_only => FND_API.G_TRUE,
33911 	   p_time_stamp               => FND_API.G_MISS_DATE,
33912            p_get_dfs                  => FND_API.G_FALSE,
33913            p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
33914 	   x_return_status            => x_return_status,
33915 	   x_msg_count                => x_msg_count,
33916 	   x_msg_data                 => x_msg_data
33917 	 );
33918          --
33919          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33920 	    FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
33921 	    FND_MSG_PUB.Add;
33922 	    RAISE FND_API.G_EXC_ERROR;
33923          END IF;
33924       END IF;
33925        --
33926      -- FOR inst_config_rec IN inst_children_cur( p_source_instance_rec.instance_id)
33927       IF l_rel_tbl.count > 0 THEN
33928          FOR j in l_rel_tbl.FIRST .. l_rel_tbl.LAST
33929          LOOP
33930               IF NOT(csi_Item_Instance_Vld_pvt.Val_and_get_inst_rec(
33931                      l_rel_tbl(j).SUBJECT_ID,
33932                      l_source_child_instance_rec)) THEN
33933                   RAISE FND_API.G_EXC_ERROR;
33934               END IF;
33935 
33936               IF l_source_child_instance_rec.vld_organization_id = l_par_vld_organization_id
33937               THEN
33938                  l_source_child_instance_rec.vld_organization_id := l_new_instance_rec.vld_organization_id;
33939               END IF;
33940 
33941               -- Added by rtalluri for the Bug: 2297972
33942 	      IF l_source_child_instance_rec.serial_number IS NOT NULL
33943 	      THEN
33944 		 l_source_child_instance_rec.serial_number := NULL;
33945 		 l_source_child_instance_rec.mfg_serial_number_flag := 'N';
33946 		 l_source_child_instance_rec.creation_complete_flag := FND_API.G_MISS_CHAR;
33947               END IF;
33948               -- End of Addition by rtalluri for the Bug: 2297972
33949                     csi_item_instance_pvt.copy_single_item_instance
33950                      ( p_api_version                 => p_api_version
33951                       ,p_commit                      => fnd_api.g_false
33952                       ,p_init_msg_list               => p_init_msg_list
33953                       ,p_validation_level            => p_validation_level
33954                       ,p_source_instance_rec         => l_source_child_instance_rec
33955                       ,p_copy_ext_attribs            => p_copy_ext_attribs
33956                       ,p_copy_org_assignments        => p_copy_org_assignments
33957                       ,p_copy_parties                => p_copy_parties
33958                       ,p_copy_contacts               => p_copy_contacts
33959                       ,p_copy_accounts               => p_copy_accounts
33960                       ,p_copy_asset_assignments      => p_copy_asset_assignments
33961                       ,p_copy_pricing_attribs        => p_copy_pricing_attribs
33962                       ,p_call_from_split             => p_call_from_split
33963                       -- ,p_copy_inst_children          => fnd_api.g_false
33964                       ,p_txn_rec                     => p_txn_rec
33965                       ,x_new_instance_tbl            => l_new_child_instance_tbl
33966                       ,x_return_status               => x_return_status
33967                       ,x_msg_count                   => x_msg_count
33968                       ,x_msg_data                    => x_msg_data
33969                      );
33970                   IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33971                       FOR i in 1..x_msg_Count LOOP
33972                         FND_MSG_PUB.Get(p_msg_index     => i,
33973                                         p_encoded       => 'F',
33974                                         p_data          => x_msg_data,
33975                                         p_msg_index_out => x_msg_index_out );
33976                                         csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33977                      End LOOP;
33978                      RAISE fnd_api.g_exc_error;
33979                   ELSE
33980                      l_map_count := l_map_count + 1;
33981                      l_map_inst_tbl(l_map_count).old_instance_id := l_rel_tbl(j).subject_id;
33982                      l_map_inst_tbl(l_map_count).new_instance_id := l_new_child_instance_tbl(1).instance_id;
33983                   END IF;
33984        END LOOP;
33985 
33986        l_new_ii_relationship_tbl.DELETE;
33987        IF l_map_inst_tbl.count > 0
33988        THEN
33989           -- FOR inst_config_rec in inst_children_cur(p_source_instance_rec.instance_id)
33990            FOR j in l_rel_tbl.FIRST .. l_rel_tbl.LAST
33991            LOOP
33992               l_rel_count := l_rel_count + 1;
33993               l_new_ii_relationship_tbl(l_rel_count).relationship_type_code := l_rel_tbl(j).relationship_type_code;
33994               FOR map_row in l_map_inst_tbl.FIRST..l_map_inst_tbl.LAST
33995               LOOP
33996                  IF l_rel_tbl(j).subject_id = l_map_inst_tbl(map_row).old_instance_id
33997                  THEN
33998                     l_new_ii_relationship_tbl(l_rel_count).subject_id := l_map_inst_tbl(map_row).new_instance_id;
33999                     EXIT;
34000                  END IF;
34001               END LOOP;
34002             --
34003               FOR map_row in l_map_inst_tbl.FIRST..l_map_inst_tbl.LAST
34004               LOOP
34005                  IF l_rel_tbl(j).object_id = l_map_inst_tbl(map_row).old_instance_id
34006                  THEN
34007                     l_new_ii_relationship_tbl(l_rel_count).object_id := l_map_inst_tbl(map_row).new_instance_id;
34008                     EXIT;
34009                  END IF;
34010               END LOOP;
34011            END LOOP;
34012        END IF;
34013 
34014        -- Create the new configuration
34015        IF l_new_ii_relationship_tbl.count > 0
34016        THEN
34017          csi_ii_relationships_pvt.create_relationship
34018                         (  p_api_version            => p_api_version
34019                           ,p_commit                 => p_commit
34020                           ,p_init_msg_list          => p_init_msg_list
34021                           ,p_validation_level       => p_validation_level
34022                           ,p_relationship_tbl       => l_new_ii_relationship_tbl
34023                           ,p_txn_rec                => p_txn_rec
34024                           ,x_return_status          => x_return_status
34025                           ,x_msg_count              => x_msg_count
34026                           ,x_msg_data               => x_msg_data
34027                        );
34028 
34029                     IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34030                        FOR i in 1..x_msg_Count LOOP
34031                           FND_MSG_PUB.Get(p_msg_index     => i,
34032                                           p_encoded       => 'F',
34033                                           p_data          => x_msg_data,
34034                                           p_msg_index_out => x_msg_index_out );
34035                                           csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
34036                        END LOOP;
34037                        RAISE fnd_api.g_exc_error;
34038                     END IF;
34039        END IF;
34040      END IF; -- l_rel_tbl count check
34041   END IF;
34042 
34043     -- Begin Add Code for Siebel Genesis Project
34044     csi_gen_utility_pvt.put_line('Calling Siebel Genesis Event in Copy Item Instance');
34045 
34046     IF l_raise_bes_event = 'Y' THEN
34047        BEGIN
34048           SELECT internal_party_id
34049           INTO   l_internal_party_id
34050           FROM   csi_install_parameters;
34051        EXCEPTION
34052           when no_data_found then
34053              l_internal_party_id := null;
34054        END;
34055 
34056        BEGIN
34057           SELECT owner_party_id
34058           INTO   l_owner_party_id
34059           FROM   csi_item_instances
34060           WHERE  instance_id = l_new_instance_rec.instance_id;
34061        EXCEPTION
34062           when no_data_found then
34063              l_owner_party_id := null;
34064        END;
34065 
34066        csi_gen_utility_pvt.put_line(' l_internal_party_Id = '||to_char(l_internal_party_id));
34067        csi_gen_utility_pvt.put_line(' l_party_Id = '||to_char(l_owner_party_id));
34068        csi_gen_utility_pvt.put_line(' fnd_api.g_miss_num = '||to_char(fnd_api.g_miss_num));
34069        IF l_internal_party_id <> l_owner_party_id THEN
34070           IF (l_new_instance_rec.last_oe_order_line_id IS NULL OR l_new_instance_rec.last_oe_order_line_id = fnd_api.g_miss_num) THEN
34071              csi_gen_utility_pvt.put_line('Firing the CREATE INSTANCE EVENT ');
34072              CSI_BUSINESS_EVENT_PVT.CREATE_INSTANCE_EVENT
34073                 (p_api_version          => p_api_version
34074                  ,p_commit              => fnd_api.g_false
34075                  ,p_init_msg_list       => p_init_msg_list
34076                  ,p_validation_level    => p_validation_level
34077                  ,p_instance_id         => l_new_instance_rec.instance_id
34078                  ,p_subject_instance_id => null
34079                  ,x_return_status       => x_return_status
34080                  ,x_msg_count           => x_msg_count
34081                  ,x_msg_data            => x_msg_data
34082                 );
34083 
34084              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34085                 l_msg_index := 1;
34086                 l_msg_count := x_msg_count;
34087 
34088                 WHILE l_msg_count > 0 LOOP
34089                    x_msg_data := FND_MSG_PUB.GET
34090                            (l_msg_index,
34091                             FND_API.G_FALSE );
34092                    csi_gen_utility_pvt.put_line('Error from CSI_BUSINESS_EVENT.CREATE_INSTANCE_EVENT');
34093                    csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
34094                    l_msg_index := l_msg_index + 1;
34095                    l_msg_count := l_msg_count - 1;
34096                 END LOOP;
34097                 RAISE FND_API.G_EXC_ERROR;
34098              END IF;
34099           ELSIF (l_new_instance_rec.last_oe_order_line_id IS NOT NULL OR l_new_instance_rec.last_oe_order_line_id <> fnd_api.g_miss_num) THEN
34100              csi_gen_utility_pvt.put_line('Before link to line id ');
34101              BEGIN
34102                 SELECT link_to_line_id, item_type_code
34103                 INTO   l_link_to_line_id, l_item_type_code
34104                 FROM   oe_order_lines_all
34105                 WHERE  line_id = l_new_instance_rec.last_oe_order_line_id;
34106              EXCEPTION
34107                 WHEN OTHERS THEN
34108                    l_link_to_line_id := null;
34109                    l_item_type_code := null;
34110              END;
34111 
34112              IF l_link_to_line_id is null and l_item_type_code = 'STANDARD' THEN
34113                 CSI_BUSINESS_EVENT_PVT.CREATE_INSTANCE_EVENT
34114                    (p_api_version          => p_api_version
34115                     ,p_commit              => fnd_api.g_false
34116                     ,p_init_msg_list       => p_init_msg_list
34117                     ,p_validation_level    => p_validation_level
34118                     ,p_instance_id         => l_new_instance_rec.instance_id
34119                     ,p_subject_instance_id => null
34120                     ,x_return_status       => x_return_status
34121                     ,x_msg_count           => x_msg_count
34122                     ,x_msg_data            => x_msg_data
34123                    );
34124 
34125                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34126                    l_msg_index := 1;
34127                    l_msg_count := x_msg_count;
34128 
34129                    WHILE l_msg_count > 0 LOOP
34130                       x_msg_data := FND_MSG_PUB.GET
34131                            (l_msg_index,
34132                             FND_API.G_FALSE );
34133                       csi_gen_utility_pvt.put_line('Error from CSI_BUSINESS_EVENT.CREATE_INSTANCE_EVENT');
34134                       csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
34135                       l_msg_index := l_msg_index + 1;
34136                       l_msg_count := l_msg_count - 1;
34137                    END LOOP;
34138                    RAISE FND_API.G_EXC_ERROR;
34139                 END IF;
34140              END IF;
34141           END IF;
34142        END IF;
34143     END IF;
34144   -- End Add Code for Siebel Genesis Project
34145 
34146   -- End of API body
34147 
34148          -- Standard check of p_commit
34149        IF FND_API.To_Boolean( p_commit ) THEN
34150                COMMIT WORK;
34151        END IF;
34152 
34153 
34154           -- Standard call to get message count and if count is  get message info.
34155           FND_MSG_PUB.Count_And_Get
34156           (p_count       =>       x_msg_count ,
34157          p_data       =>       x_msg_data
34158            );
34159 EXCEPTION
34160 
34161     WHEN FND_API.G_EXC_ERROR THEN
34162             ROLLBACK TO copy_item_instance;
34163             x_return_status := FND_API.G_RET_STS_ERROR ;
34164             FND_MSG_PUB.Count_And_Get
34165                 (   p_count               =>      x_msg_count,
34166                     p_data                =>      x_msg_data
34167                  );
34168 
34169       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
34170             ROLLBACK TO copy_item_instance;
34171             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
34172             FND_MSG_PUB.Count_And_Get
34173                 (   p_count               =>      x_msg_count,
34174                     p_data                =>      x_msg_data
34175                  );
34176 
34177       WHEN OTHERS THEN
34178             ROLLBACK TO  copy_item_instance;
34179             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
34180               IF       FND_MSG_PUB.Check_Msg_Level
34181                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
34182               THEN
34183                   FND_MSG_PUB.Add_Exc_Msg
34184                     (      G_PKG_NAME            ,
34185                           l_api_name
34186                      );
34187             END IF;
34188 
34189             FND_MSG_PUB.Count_And_Get
34190                 (   p_count               =>      x_msg_count,
34191                     p_data                =>      x_msg_data
34192                 );
34193 
34194 END  copy_item_instance;
34195 
34196 
34197 
34198 /*------------------------------------------------------------*/
34199 /* Procedure name:   get_version_label_history                */
34200 /* Description :     Procedure used to  get version lables    */
34201 /*                   from history given a transaction_id      */
34202 /*------------------------------------------------------------*/
34203 
34204 PROCEDURE get_version_label_history
34205  (    p_api_version             IN  NUMBER
34206      ,p_commit                  IN  VARCHAR2
34207      ,p_init_msg_list           IN  VARCHAR2
34208      ,p_validation_level        IN  NUMBER
34209      ,p_transaction_id          IN  NUMBER
34210      ,x_version_label_hist_tbl  OUT NOCOPY csi_datastructures_pub.version_label_history_tbl
34211      ,x_return_status           OUT NOCOPY VARCHAR2
34212      ,x_msg_count               OUT NOCOPY NUMBER
34213      ,x_msg_data                OUT NOCOPY VARCHAR2
34214     )IS
34215 
34216      l_api_name      CONSTANT VARCHAR2(30)   := 'get_version_label_history' ;
34217      l_api_version   CONSTANT NUMBER         := 1.0                         ;
34218      l_csi_debug_level        NUMBER                                        ;
34219      x_msg_index_out          NUMBER                                        ;
34220      l_count                  NUMBER         := 0                           ;
34221      l_flag                   VARCHAR2(1)    :='N'                          ;
34222      i                        NUMBER :=1;
34223 
34224      CURSOR get_version_label_hist(i_transaction_id NUMBER)
34225      IS
34226      SELECT      vlh.VERSION_LABEL_HISTORY_ID,
34227                  vlh.VERSION_LABEL_ID,
34228                  vlh.TRANSACTION_ID   ,
34229                  vlh.OLD_VERSION_LABEL,
34230                  vlh.NEW_VERSION_LABEL,
34231                  vlh.OLD_DESCRIPTION  ,
34232                  vlh.NEW_DESCRIPTION  ,
34233                  vlh.OLD_DATE_TIME_STAMP,
34234                  vlh.NEW_DATE_TIME_STAMP,
34235                  vlh.OLD_ACTIVE_START_DATE,
34236                  vlh.NEW_ACTIVE_START_DATE,
34237                  vlh.OLD_ACTIVE_END_DATE ,
34238                  vlh.NEW_ACTIVE_END_DATE ,
34239                  vlh.OLD_CONTEXT        ,
34240                  vlh.NEW_CONTEXT        ,
34241                  vlh.OLD_ATTRIBUTE1     ,
34242                  vlh.NEW_ATTRIBUTE1     ,
34243                  vlh.OLD_ATTRIBUTE2     ,
34244                  vlh.NEW_ATTRIBUTE2     ,
34245                  vlh.OLD_ATTRIBUTE3     ,
34246                  vlh.NEW_ATTRIBUTE3     ,
34247                  vlh.OLD_ATTRIBUTE4     ,
34248                  vlh.NEW_ATTRIBUTE4     ,
34249                  vlh.OLD_ATTRIBUTE5     ,
34250                  vlh.NEW_ATTRIBUTE5     ,
34251                  vlh.OLD_ATTRIBUTE6     ,
34252                  vlh.NEW_ATTRIBUTE6     ,
34253                  vlh.OLD_ATTRIBUTE7     ,
34254                  vlh.NEW_ATTRIBUTE7     ,
34255                  vlh.OLD_ATTRIBUTE8     ,
34256                  vlh.NEW_ATTRIBUTE8     ,
34257                  vlh.OLD_ATTRIBUTE9     ,
34258                  vlh.NEW_ATTRIBUTE9     ,
34259                  vlh.OLD_ATTRIBUTE10    ,
34260                  vlh.NEW_ATTRIBUTE10    ,
34261                  vlh.OLD_ATTRIBUTE11    ,
34262                  vlh.NEW_ATTRIBUTE11    ,
34263                  vlh.OLD_ATTRIBUTE12    ,
34264                  vlh.NEW_ATTRIBUTE12    ,
34265                  vlh.OLD_ATTRIBUTE13    ,
34266                  vlh.NEW_ATTRIBUTE13    ,
34267                  vlh.OLD_ATTRIBUTE14    ,
34268                  vlh.NEW_ATTRIBUTE14    ,
34269                  vlh.OLD_ATTRIBUTE15    ,
34270                  vlh.NEW_ATTRIBUTE15    ,
34271                  vlh.FULL_DUMP_FLAG     ,
34272                  vlh.OBJECT_VERSION_NUMBER,
34273                  vl.INSTANCE_ID
34274      FROM     csi_i_version_labels_h vlh,
34275               csi_i_version_labels vl
34276      WHERE    vlh.transaction_id = i_transaction_id
34277      AND      vlh.version_label_id = vl.version_label_id;
34278 
34279 
34280 BEGIN
34281         -- Standard Start of API savepoint
34282      --   SAVEPOINT   get_version_label_history;
34283 
34284 
34285         -- Standard call to check for call compatibility.
34286         IF NOT FND_API.Compatible_API_Call (    l_api_version           ,
34287                                                 p_api_version           ,
34288                                                 l_api_name              ,
34289                                                 g_pkg_name              )
34290         THEN
34291            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
34292         END IF;
34293 
34294         -- Initialize message list if p_init_msg_list is set to TRUE.
34295         IF FND_API.to_Boolean( p_init_msg_list ) THEN
34296                 FND_MSG_PUB.initialize;
34297         END IF;
34298 
34299         --  Initialize API return status to success
34300         x_return_status := FND_API.G_RET_STS_SUCCESS;
34301 
34302         -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
34303         l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
34304 
34305         -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
34306         IF (l_csi_debug_level > 0) THEN
34307             csi_gen_utility_pvt.put_line( 'get_version_label_history');
34308         END IF;
34309 
34310         -- If the debug level = 2 then dump all the parameters values.
34311         IF (l_csi_debug_level > 1) THEN
34312             csi_gen_utility_pvt.put_line(  'get_version_label_history'   ||
34313                                                  p_api_version           ||'-'||
34314                                                  p_commit                ||'-'||
34315                                                  p_init_msg_list         ||'-'||
34316                                                  p_validation_level      ||'-'||
34317                                                  p_transaction_id               );
34318              -- dump the in parameter in the log file
34319 
34320         END IF;
34321 
34322         /***** srramakr commented for bug # 3304439
34323         -- Check for the profile option and enable trace
34324         l_flag:=csi_gen_utility_pvt.enable_trace(l_trace_flag => l_flag);
34325         -- End enable trace
34326         ****/
34327 
34328         -- Start API body
34329 
34330         FOR C1 IN get_version_label_hist(p_transaction_id)
34331         LOOP
34332 
34333 
34334 
34335 
34336               x_version_label_hist_tbl(i).VERSION_LABEL_HISTORY_ID:= C1.VERSION_LABEL_HISTORY_ID;
34337               x_version_label_hist_tbl(i).VERSION_LABEL_ID       := C1.VERSION_LABEL_ID;
34338               x_version_label_hist_tbl(i).TRANSACTION_ID        := C1.TRANSACTION_ID;
34339               x_version_label_hist_tbl(i).OLD_VERSION_LABEL := C1.OLD_VERSION_LABEL;
34340               x_version_label_hist_tbl(i).NEW_VERSION_LABEL := C1.NEW_VERSION_LABEL;
34341               x_version_label_hist_tbl(i).OLD_DESCRIPTION  := C1.OLD_DESCRIPTION ;
34342               x_version_label_hist_tbl(i).NEW_DESCRIPTION := C1.NEW_DESCRIPTION;
34343               x_version_label_hist_tbl(i).OLD_DATE_TIME_STAMP := C1.OLD_DATE_TIME_STAMP ;
34344               x_version_label_hist_tbl(i).NEW_DATE_TIME_STAMP := C1.NEW_DATE_TIME_STAMP;
34345               x_version_label_hist_tbl(i).OLD_ACTIVE_START_DATE:= C1.OLD_ACTIVE_START_DATE;
34346               x_version_label_hist_tbl(i).NEW_ACTIVE_START_DATE:= C1.NEW_ACTIVE_START_DATE;
34347               x_version_label_hist_tbl(i).OLD_ACTIVE_END_DATE:= C1.OLD_ACTIVE_END_DATE;
34348               x_version_label_hist_tbl(i).NEW_ACTIVE_END_DATE:= C1.NEW_ACTIVE_END_DATE;
34349               x_version_label_hist_tbl(i).OLD_CONTEXT:= C1.OLD_CONTEXT;
34350               x_version_label_hist_tbl(i).NEW_CONTEXT:= C1.NEW_CONTEXT;
34351               x_version_label_hist_tbl(i).OLD_ATTRIBUTE1:= C1.OLD_ATTRIBUTE1;
34352               x_version_label_hist_tbl(i).NEW_ATTRIBUTE1:= C1.NEW_ATTRIBUTE1;
34353               x_version_label_hist_tbl(i).OLD_ATTRIBUTE2:= C1.OLD_ATTRIBUTE2;
34354               x_version_label_hist_tbl(i).NEW_ATTRIBUTE2:= C1.NEW_ATTRIBUTE2;
34355               x_version_label_hist_tbl(i).OLD_ATTRIBUTE3:= C1.OLD_ATTRIBUTE3;
34356               x_version_label_hist_tbl(i).OLD_ATTRIBUTE3:= C1.OLD_ATTRIBUTE3;
34357               x_version_label_hist_tbl(i).OLD_ATTRIBUTE4:= C1.OLD_ATTRIBUTE4;
34358               x_version_label_hist_tbl(i).NEW_ATTRIBUTE4:= C1.NEW_ATTRIBUTE4;
34359               x_version_label_hist_tbl(i).OLD_ATTRIBUTE5:= C1.OLD_ATTRIBUTE5;
34360               x_version_label_hist_tbl(i).NEW_ATTRIBUTE5:= C1.NEW_ATTRIBUTE5;
34361               x_version_label_hist_tbl(i).OLD_ATTRIBUTE6:= C1.OLD_ATTRIBUTE6;
34362               x_version_label_hist_tbl(i).NEW_ATTRIBUTE6:= C1.NEW_ATTRIBUTE6;
34363               x_version_label_hist_tbl(i).OLD_ATTRIBUTE7:= C1.OLD_ATTRIBUTE7;
34364               x_version_label_hist_tbl(i).NEW_ATTRIBUTE7:= C1.NEW_ATTRIBUTE7;
34365               x_version_label_hist_tbl(i).OLD_ATTRIBUTE8:= C1.OLD_ATTRIBUTE8;
34366               x_version_label_hist_tbl(i).NEW_ATTRIBUTE8:= C1.NEW_ATTRIBUTE8;
34367               x_version_label_hist_tbl(i).OLD_ATTRIBUTE9:= C1.OLD_ATTRIBUTE9;
34368               x_version_label_hist_tbl(i).NEW_ATTRIBUTE9:= C1.NEW_ATTRIBUTE9;
34369               x_version_label_hist_tbl(i).OLD_ATTRIBUTE10:= C1.OLD_ATTRIBUTE10;
34370               x_version_label_hist_tbl(i).NEW_ATTRIBUTE10:= C1.NEW_ATTRIBUTE10;
34371               x_version_label_hist_tbl(i).OLD_ATTRIBUTE11:= C1.OLD_ATTRIBUTE11;
34372               x_version_label_hist_tbl(i).NEW_ATTRIBUTE11:= C1.NEW_ATTRIBUTE11;
34373               x_version_label_hist_tbl(i).OLD_ATTRIBUTE12:= C1.OLD_ATTRIBUTE12;
34374               x_version_label_hist_tbl(i).NEW_ATTRIBUTE12:= C1.NEW_ATTRIBUTE12;
34375               x_version_label_hist_tbl(i).OLD_ATTRIBUTE13:= C1.OLD_ATTRIBUTE13;
34376               x_version_label_hist_tbl(i).NEW_ATTRIBUTE13:= C1.NEW_ATTRIBUTE13;
34377               x_version_label_hist_tbl(i).OLD_ATTRIBUTE14:= C1.OLD_ATTRIBUTE14;
34378               x_version_label_hist_tbl(i).NEW_ATTRIBUTE14:= C1.NEW_ATTRIBUTE14;
34379               x_version_label_hist_tbl(i).OLD_ATTRIBUTE15:= C1.OLD_ATTRIBUTE15;
34380               x_version_label_hist_tbl(i).NEW_ATTRIBUTE15:= C1.NEW_ATTRIBUTE15;
34381               x_version_label_hist_tbl(i).FULL_DUMP_FLAG:= C1.FULL_DUMP_FLAG;
34382               x_version_label_hist_tbl(i).OBJECT_VERSION_NUMBER := C1.OBJECT_VERSION_NUMBER;
34383               x_version_label_hist_tbl(i).INSTANCE_ID := C1.INSTANCE_ID;
34384               i := i + 1;
34385 
34386       END LOOP;
34387 
34388        -- End of API body
34389 
34390        -- Standard check of p_commit.
34391        /*
34392        IF FND_API.To_Boolean( p_commit ) THEN
34393              COMMIT WORK;
34394        END IF;
34395        */
34396 
34397        /***** srramakr commented for bug # 3304439
34398        -- Check for the profile option and disable the trace
34399        IF (l_flag = 'Y') THEN
34400             dbms_session.set_sql_trace(false);
34401        END IF;
34402        -- End disable trace
34403        ****/
34404 
34405        -- Standard call to get message count and if count is  get message info.
34406        FND_MSG_PUB.Count_And_Get
34407                 (p_count        =>      x_msg_count ,
34408                  p_data         =>      x_msg_data   );
34409 EXCEPTION
34410         WHEN FND_API.G_EXC_ERROR THEN
34411              --   ROLLBACK TO get_version_label_history;
34412                 x_return_status := FND_API.G_RET_STS_ERROR ;
34413                 FND_MSG_PUB.Count_And_Get
34414                 (   p_count   =>      x_msg_count,
34415                     p_data    =>      x_msg_data );
34416         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
34417               --  ROLLBACK TO get_version_label_history;
34418                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
34419                 FND_MSG_PUB.Count_And_Get
34420                 (   p_count   =>      x_msg_count,
34421                     p_data    =>      x_msg_data  );
34422         WHEN OTHERS THEN
34423               --  ROLLBACK TO get_version_label_history;
34424                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
34425                 IF      FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
34426                 FND_MSG_PUB.Add_Exc_Msg
34427                 (       g_pkg_name          ,
34428                         l_api_name           );
34429                 END IF;
34430                 FND_MSG_PUB.Count_And_Get
34431                 ( p_count     =>      x_msg_count,
34432                   p_data      =>      x_msg_data  );
34433 
34434 END get_version_label_history;
34435 
34436 /*----------------------------------------------------*/
34437 /* Procedure name: get_instance_link_locations        */
34438 /* Description :   procedure to                       */
34439 /*                 get an Item Instance               */
34440 /*----------------------------------------------------*/
34441 
34442 PROCEDURE get_instance_link_locations
34443  (
34444       p_api_version          IN  NUMBER
34445      ,p_commit               IN  VARCHAR2
34446      ,p_init_msg_list        IN  VARCHAR2
34447      ,p_validation_level     IN  NUMBER
34448      ,p_instance_id          IN  NUMBER
34449      ,x_instance_link_rec    OUT NOCOPY csi_datastructures_pub.instance_link_rec
34450      ,x_return_status        OUT NOCOPY VARCHAR2
34451      ,x_msg_count            OUT NOCOPY NUMBER
34452      ,x_msg_data             OUT NOCOPY VARCHAR2
34453     )IS
34454 
34455     l_api_name               CONSTANT VARCHAR2(30)   := 'GET_INSTANCE_LINK_LOCATIONS';
34456     l_api_version            CONSTANT NUMBER         := 1.0;
34457     l_debug_level            NUMBER;
34458     l_flag                   VARCHAR2(1)             := 'N';
34459     l_instance_header_tbl    csi_datastructures_pub.instance_header_tbl;
34460 
34461  BEGIN
34462     -- Standard Start of API savepoint
34463       -- SAVEPOINT  get_instance_link_locations;
34464 
34465     -- Check for freeze_flag in csi_install_parameters is set to 'Y'
34466        csi_utility_grp.check_ib_active;
34467 
34468     -- Standard call to check for call compatibility.
34469        IF NOT FND_API.Compatible_API_Call (l_api_version,
34470                                             p_api_version,
34471                                             l_api_name,
34472                                             G_PKG_NAME    )
34473        THEN
34474                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
34475        END IF;
34476 
34477     -- Initialize message list if p_init_msg_list is set to TRUE.
34478        IF FND_API.to_Boolean( p_init_msg_list ) THEN
34479                FND_MSG_PUB.initialize;
34480        END IF;
34481 
34482     -- Initialize API return status to success
34483        x_return_status := FND_API.G_RET_STS_SUCCESS;
34484 
34485     -- Check the profile option debug_level for debug message reporting
34486        l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
34487 
34488     -- If debug_level = 1 then dump the procedure name
34489        IF (l_debug_level > 0) THEN
34490             csi_gen_utility_pvt.put_line( 'get_instance_link_locations');
34491        END IF;
34492 
34493     -- If the debug level = 2 then dump all the parameters values.
34494        IF (l_debug_level > 1) THEN
34495             csi_gen_utility_pvt.put_line( 'get_instance_link_locations'         ||
34496                                           p_api_version           ||'-'||
34497                                           p_commit                ||'-'||
34498                                           p_init_msg_list         ||'-'||
34499                                           p_validation_level            );
34500          -- dump the query records into a log file
34501             csi_gen_utility_pvt.put_line(p_instance_id);
34502        END IF;
34503 
34504     /***** srramakr commented for bug # 3304439
34505     -- Check for the profile option and enable trace
34506        l_flag:=CSI_GEN_UTILITY_PVT.enable_trace(l_trace_flag => l_flag);
34507     -- End enable trace
34508     ****/
34509 
34510     -- Start API body
34511        IF   (p_instance_id IS NULL)
34512        THEN
34513              FND_MESSAGE.Set_Name('CSI', 'CSI_API_INVALID_INSTANCE_ID');
34514              FND_MESSAGE.Set_Token('INSTANCE_ID', p_instance_id);
34515              FND_MSG_PUB.ADD;
34516              RAISE FND_API.G_EXC_ERROR;
34517        END IF;
34518 
34519        l_instance_header_tbl(1).instance_id := p_instance_id;
34520 
34521        BEGIN
34522          SELECT last_vld_organization_id,
34523                 inventory_item_id
34524          INTO   l_instance_header_tbl(1).vld_organization_id,
34525                 l_instance_header_tbl(1).inventory_item_id
34526          FROM   csi_item_instances
34527          WHERE  instance_id =l_instance_header_tbl(1).instance_id;
34528       EXCEPTION
34529          WHEN OTHERS THEN
34530           NULL;
34531       END;
34532 
34533       csi_item_instance_vld_pvt.get_link_locations
34534                              (
34535                                p_instance_header_tbl => l_instance_header_tbl,
34536                                x_return_status       => x_return_status
34537                              );
34538       IF NOT x_return_status = FND_API.G_RET_STS_SUCCESS THEN
34539          RAISE FND_API.G_EXC_ERROR;
34540       END IF;
34541 
34542         x_instance_link_rec.instance_id           := l_instance_header_tbl(1).instance_id;
34543         x_instance_link_rec.start_loc_address1    := l_instance_header_tbl(1).start_loc_address1;
34544         x_instance_link_rec.start_loc_address2    := l_instance_header_tbl(1).start_loc_address2;
34545         x_instance_link_rec.start_loc_address3    := l_instance_header_tbl(1).start_loc_address3;
34546         x_instance_link_rec.start_loc_address4    := l_instance_header_tbl(1).start_loc_address4;
34547         x_instance_link_rec.start_loc_city        := l_instance_header_tbl(1).start_loc_city;
34548         x_instance_link_rec.start_loc_state       := l_instance_header_tbl(1).start_loc_state;
34549         x_instance_link_rec.start_loc_postal_code := l_instance_header_tbl(1).start_loc_postal_code;
34550         x_instance_link_rec.start_loc_country     := l_instance_header_tbl(1).start_loc_country;
34551 
34552         x_instance_link_rec.end_loc_address1      := l_instance_header_tbl(1).end_loc_address1;
34553         x_instance_link_rec.end_loc_address2      := l_instance_header_tbl(1).end_loc_address2;
34554         x_instance_link_rec.end_loc_address3      := l_instance_header_tbl(1).end_loc_address3;
34555         x_instance_link_rec.end_loc_address4      := l_instance_header_tbl(1).end_loc_address4;
34556         x_instance_link_rec.end_loc_city          := l_instance_header_tbl(1).end_loc_city;
34557         x_instance_link_rec.end_loc_state         := l_instance_header_tbl(1).end_loc_state;
34558         x_instance_link_rec.end_loc_postal_code   := l_instance_header_tbl(1).end_loc_postal_code;
34559         x_instance_link_rec.end_loc_country       := l_instance_header_tbl(1).end_loc_country;
34560 
34561    -- End of API body
34562    -- Standard check of p_commit.
34563    /*
34564       IF FND_API.To_Boolean( p_commit ) THEN
34565           COMMIT WORK;
34566       END IF;
34567       */
34568     /***** srramakr commented for bug # 3304439
34569    -- Check for the profile option and disable the trace
34570       IF (l_flag = 'Y') THEN
34571           dbms_session.set_sql_trace(FALSE);
34572       END IF;
34573    -- End disable trace
34574    ****/
34575 
34576    -- Standard call to get message count and if count is  get message info.
34577       FND_MSG_PUB.Count_And_Get
34578                    (p_count        =>      x_msg_count ,
34579                     p_data         =>      x_msg_data
34580                     );
34581 
34582 EXCEPTION
34583 
34584         WHEN FND_API.G_EXC_ERROR THEN
34585            --     ROLLBACK TO get_instance_link_locations;
34586                 x_return_status := FND_API.G_RET_STS_ERROR ;
34587                 FND_MSG_PUB.Count_And_Get
34588                      (  p_count     =>     x_msg_count,
34589                         p_data      =>     x_msg_data );
34590         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
34591              --   ROLLBACK TO get_instance_link_locations;
34592                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
34593                 FND_MSG_PUB.Count_And_Get
34594                      ( p_count     =>      x_msg_count,
34595                        p_data      =>      x_msg_data  );
34596         WHEN OTHERS THEN
34597             --    ROLLBACK TO get_instance_link_locations;
34598                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
34599                 IF FND_MSG_PUB.Check_Msg_Level
34600                      ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
34601                 THEN
34602                    FND_MSG_PUB.Add_Exc_Msg
34603                      ( G_PKG_NAME, l_api_name );
34604                 END IF;
34605                 FND_MSG_PUB.Count_And_Get
34606                      ( p_count     =>      x_msg_count,
34607                        p_data      =>      x_msg_data  );
34608 
34609 END get_instance_link_locations;
34610 
34611 PROCEDURE Update_version_time
34612  (
34613      p_api_version           IN     NUMBER
34614     ,p_commit                IN     VARCHAR2
34615     ,p_init_msg_list         IN     VARCHAR2
34616     ,p_validation_level      IN     NUMBER
34617     ,p_txn_rec               IN OUT NOCOPY csi_datastructures_pub.transaction_rec
34618     ,x_return_status         OUT NOCOPY   VARCHAR2
34619     ,x_msg_count             OUT NOCOPY   NUMBER
34620     ,x_msg_data              OUT NOCOPY   VARCHAR2)
34621      IS
34622 CURSOR c_ver_csr (p_txn_id NUMBER) IS
34623   SELECT cv.version_label_id      version_label_id
34624         ,cv.object_version_number object_version_number
34625         ,cv.instance_id instance_id
34626   FROM   csi_i_version_labels cv,
34627          csi_i_version_labels_h ch
34628   WHERE  cv.version_label_id=ch.version_label_id
34629   AND    ch.transaction_id=p_txn_id;
34630   l_sysdate               DATE :=SYSDATE;
34631   l_return_status         VARCHAR2(1);
34632   l_msg_data              VARCHAR2(2000);
34633   l_msg_count             NUMBER;
34634   l_msg_index             NUMBER;
34635   l_version_label_rec     csi_datastructures_pub.version_label_rec;
34636   l_temp_label_rec        csi_datastructures_pub.version_label_rec;
34637 BEGIN
34638         SAVEPOINT   Update_version_time;
34639 
34640         x_return_status := FND_API.G_RET_STS_SUCCESS;
34641 
34642       FOR l_ver_csr IN c_ver_csr(p_txn_rec.transaction_id)
34643       LOOP
34644          l_version_label_rec:=l_temp_label_rec;
34645          l_version_label_rec.version_label_id:=l_ver_csr.version_label_id;
34646          l_version_label_rec.date_time_stamp:=l_sysdate;
34647          l_version_label_rec.object_version_number:=l_ver_csr.object_version_number;
34648            csi_item_instance_pvt.update_version_label
34649             ( p_api_version             => p_api_version
34650              ,p_commit                  => p_commit
34651              ,p_init_msg_list           => p_init_msg_list
34652              ,p_validation_level        => p_validation_level
34653              ,p_version_label_rec       => l_version_label_rec
34654              ,p_txn_rec                 => p_txn_rec
34655              ,p_call_transaction        => fnd_api.g_false
34656              ,x_return_status           => l_return_status
34657              ,x_msg_count               => l_msg_count
34658              ,x_msg_data                => l_msg_data);
34659 
34660            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34661                      l_msg_index := 1;
34662                      l_msg_count := x_msg_count;
34663                WHILE l_msg_count > 0 LOOP
34664                           x_msg_data := FND_MSG_PUB.GET
34665                           (  l_msg_index,
34666                                          FND_API.G_FALSE        );
34667                   csi_gen_utility_pvt.put_line( ' Error from update_version_label..');
34668                   csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
34669                    l_msg_index := l_msg_index + 1;
34670                    l_msg_count := l_msg_count - 1;
34671                END LOOP;
34672                 RAISE FND_API.G_EXC_ERROR;
34673            END IF;
34674       END LOOP;
34675 EXCEPTION
34676    WHEN NO_DATA_FOUND THEN
34677         NULL;
34678    WHEN FND_API.G_EXC_ERROR THEN
34679             ROLLBACK TO Update_version_time;
34680             x_return_status := FND_API.G_RET_STS_ERROR ;
34681             FND_MSG_PUB.Count_And_Get
34682             (   p_count   =>      x_msg_count,
34683                 p_data    =>      x_msg_data );
34684    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
34685                 ROLLBACK TO Update_version_time;
34686                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
34687                 FND_MSG_PUB.Count_And_Get
34688                 (   p_count   =>      x_msg_count,
34689                     p_data    =>      x_msg_data  );
34690 END Update_version_time;
34691 
34692 PROCEDURE get_config_keys
34693     (p_instance_id     IN  NUMBER,
34694      p_config_rec      OUT NOCOPY csi_item_instance_pvt.lock_config_rec
34695     )
34696 IS
34697 BEGIN
34698     SELECT config_inst_hdr_id
34699           ,config_inst_rev_num
34700           ,config_inst_item_id
34701       INTO p_config_rec.config_inst_hdr_id
34702           ,p_config_rec.config_inst_rev_num
34703           ,p_config_rec.config_inst_item_id
34704       FROM csi_item_instances
34705      WHERE instance_id=p_instance_id;
34706 EXCEPTION
34707   WHEN NO_DATA_FOUND THEN
34708     NULL;
34709 END get_config_keys;
34710 
34711 PROCEDURE get_instance_lock_status
34712 (    p_instance_id         IN   NUMBER ,
34713      p_lock_status         OUT NOCOPY  NUMBER
34714 ) IS
34715  l_lock_status   NUMBER :=0;
34716 BEGIN
34717     SELECT lock_status
34718       INTO p_lock_status
34719       FROM csi_item_instance_locks
34720      WHERE lock_status <> l_lock_status
34721        AND instance_id=p_instance_id;
34722  EXCEPTION
34723   WHEN NO_DATA_FOUND THEN
34724      p_lock_status  := l_lock_status;
34725   WHEN TOO_MANY_ROWS THEN
34726     csi_gen_utility_pvt.put_line ('In csi_item_instance_pvt.get_instance_lock_status - too_many_rows exception ');
34727      p_lock_status := 2;
34728 END get_instance_lock_status;
34729 
34730 -- Return TRUE if instance is locked
34731 FUNCTION check_item_instance_lock
34732 (    p_instance_id         IN  NUMBER ,
34733      p_config_inst_hdr_id  IN  NUMBER ,
34734      p_config_inst_item_id IN  NUMBER ,
34735      p_config_inst_rev_num IN  NUMBER
34736 ) RETURN BOOLEAN IS
34737  l_return_value  BOOLEAN := FALSE;
34738  l_lock_id       NUMBER;
34739  l_lock_status   NUMBER :=0;
34740 BEGIN
34741  IF p_instance_id IS NOT NULL AND
34742     p_instance_id <> fnd_api.g_miss_num
34743  THEN
34744      BEGIN
34745         SELECT lock_id
34746           INTO l_lock_id
34747           FROM csi_item_instance_locks
34748          WHERE lock_status IS NOT NULL
34749            AND lock_status <> l_lock_status
34750            AND instance_id=p_instance_id;
34751     l_return_value := TRUE;
34752      EXCEPTION
34753       WHEN NO_DATA_FOUND THEN
34754            l_return_value  := FALSE;
34755       WHEN TOO_MANY_ROWS THEN
34756            l_return_value := TRUE;
34757      END;
34758  ELSIF (p_config_inst_hdr_id IS NOT NULL AND
34759         p_config_inst_hdr_id <> fnd_api.g_miss_num AND
34760         p_config_inst_item_id IS NOT NULL AND
34761         p_config_inst_item_id <> fnd_api.g_miss_num AND
34762         p_config_inst_rev_num IS NOT NULL AND
34763         p_config_inst_rev_num <> fnd_api.g_miss_num )
34764  THEN
34765      BEGIN
34766         SELECT lock_id
34767           INTO l_lock_id
34768           FROM csi_item_instance_locks
34769          WHERE lock_status IS NOT NULL
34770            AND lock_status <> l_lock_status
34771            AND config_inst_hdr_id  = p_config_inst_hdr_id
34772            AND config_inst_rev_num = p_config_inst_rev_num
34773            AND config_inst_item_id = p_config_inst_item_id;
34774     l_return_value := TRUE;
34775      EXCEPTION
34776       WHEN NO_DATA_FOUND THEN
34777            l_return_value  := FALSE;
34778       WHEN TOO_MANY_ROWS THEN
34779            l_return_value := TRUE;
34780      END;
34781  END IF;
34782  RETURN l_return_value;
34783 END check_item_instance_lock;
34784 
34785 
34786 PROCEDURE lock_item_instances
34787  (
34788      p_api_version           IN   NUMBER
34789     ,p_commit                IN   VARCHAR2
34790     ,p_init_msg_list         IN   VARCHAR2
34791     ,p_validation_level      IN   NUMBER
34792     ,px_config_tbl           IN   OUT NOCOPY csi_cz_int.config_tbl
34793 --    ,p_txn_rec               IN   OUT NOCOPY csi_datastructures_pub.transaction_rec
34794     ,x_return_status         OUT  NOCOPY VARCHAR2
34795     ,x_msg_count             OUT  NOCOPY NUMBER
34796     ,x_msg_data              OUT  NOCOPY VARCHAR2
34797  )
34798 AS
34799 l_api_name         CONSTANT VARCHAR2(30)   := 'LOCK_ITEM_INSTANCES';
34800 l_api_version      CONSTANT NUMBER         := 1.0;
34801 l_csi_debug_level  NUMBER;
34802 l_rel_type_code    VARCHAR2(30) := 'COMPONENT-OF';
34803 l_root_node        NUMBER;
34804 l_config_tbl       csi_cz_int.config_tbl := px_config_tbl;
34805 l_count            NUMBER;
34806 l_rel_tbl          csi_datastructures_pub.ii_relationship_tbl;
34807 l_ii_relationship_level_tbl csi_ii_relationships_pvt.ii_relationship_level_tbl;
34808 l_rel_query_rec    csi_datastructures_pub.relationship_query_rec;
34809 l_lock_tbl         CSI_ITEM_INSTANCE_PVT.lock_instances_tbl; --csi_cz_int.config_tbl;
34810 l_root             NUMBER:=0;
34811 l_found            VARCHAR2(1):='N';
34812 l_root_hdr_id      NUMBER;
34813 l_root_item_id     NUMBER;
34814 l_root_rev_num     NUMBER;
34815 l_lock_config_rec  csi_item_instance_pvt.lock_config_rec;
34816 l_lock_count       NUMBER;
34817 l_lock_id          NUMBER;
34818 l_dup_count        NUMBER;
34819 BEGIN
34820 
34821   SAVEPOINT    csi_lock_item_instance;
34822 
34823 
34824         -- Check for freeze_flag in csi_install_parameters is set to 'Y'
34825 
34826      csi_utility_grp.check_ib_active;
34827 
34828         -- Standard call to check for call compatibility.
34829         IF NOT FND_API.Compatible_API_Call (    l_api_version           ,
34830                                                 p_api_version           ,
34831                                                 l_api_name              ,
34832                                                 g_pkg_name              )
34833         THEN
34834                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
34835         END IF;
34836 
34837         -- Initialize message list if p_init_msg_list is set to TRUE.
34838         IF FND_API.to_Boolean( p_init_msg_list ) THEN
34839                 FND_MSG_PUB.initialize;
34840         END IF;
34841 
34842         --  Initialize API return status to success
34843         x_return_status := FND_API.G_RET_STS_SUCCESS;
34844 
34845         -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
34846         l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
34847 
34848         -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
34849         IF (l_csi_debug_level > 0) THEN
34850             csi_gen_utility_pvt.put_line( 'lock_item_instances');
34851         END IF;
34852 
34853 
34854         -- If the debug level = 2 then dump all the parameters values.
34855         IF (l_csi_debug_level > 1) THEN
34856                csi_gen_utility_pvt.put_line( 'lock_item_instances'||
34857                                                    p_api_version           ||'-'||
34858                                                    p_commit                ||'-'||
34859                                                    p_init_msg_list         ||'-'||
34860                                                    p_validation_level            );
34861                -- Dump the records in the log file
34862           IF px_config_tbl.COUNT > 0
34863           THEN
34864            FOR tab_row IN px_config_tbl.FIRST .. px_config_tbl.LAST
34865            LOOP
34866              csi_gen_utility_pvt.put_line('                                         ');
34867              csi_gen_utility_pvt.put_line('Dumping the values for config tbl Rec # :'||tab_row);
34868              csi_gen_utility_pvt.put_line('source_application_id    :'||px_config_tbl(tab_row).source_application_id);
34869              csi_gen_utility_pvt.put_line('source_txn_header_ref    :'||px_config_tbl(tab_row).source_txn_header_ref);
34870              csi_gen_utility_pvt.put_line('source_txn_line_ref1     :'||px_config_tbl(tab_row).source_txn_line_ref1);
34871              csi_gen_utility_pvt.put_line('source_txn_line_ref2     :'||px_config_tbl(tab_row).source_txn_line_ref2);
34872              csi_gen_utility_pvt.put_line('source_txn_line_ref3     :'||px_config_tbl(tab_row).source_txn_line_ref3);
34873              csi_gen_utility_pvt.put_line('instance_id              :'||px_config_tbl(tab_row).instance_id);
34874              csi_gen_utility_pvt.put_line('lock_id                  :'||px_config_tbl(tab_row).lock_id);
34875              csi_gen_utility_pvt.put_line('config_inst_hdr_id       :'||px_config_tbl(tab_row).config_inst_hdr_id);
34876              csi_gen_utility_pvt.put_line('config_inst_item_id      :'||px_config_tbl(tab_row).config_inst_item_id);
34877              csi_gen_utility_pvt.put_line('config_inst_rev_num      :'||px_config_tbl(tab_row).config_inst_rev_num);
34878              csi_gen_utility_pvt.put_line('lock_status              :'||px_config_tbl(tab_row).lock_status);
34879            END LOOP;
34880           END IF;
34881                --csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
34882         END IF;
34883 
34884   l_lock_tbl.DELETE;
34885 
34886  IF px_config_tbl.count > 0
34887  THEN
34888   FOR i IN px_config_tbl.FIRST .. px_config_tbl.LAST
34889   LOOP
34890    IF px_config_tbl.EXISTS(i)
34891    THEN
34892     IF (px_config_tbl(i).instance_id IS NOT NULL AND
34893         px_config_tbl(i).instance_id <> fnd_api.g_miss_num) OR
34894        (px_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
34895         px_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
34896         px_config_tbl(i).config_inst_item_id IS NOT NULL AND
34897         px_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
34898         px_config_tbl(i).config_inst_rev_num IS NOT NULL AND
34899         px_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )
34900     THEN
34901 
34902      -- Check for duplicate instances
34903     IF (px_config_tbl(i).instance_id IS NOT NULL AND
34904         px_config_tbl(i).instance_id <> fnd_api.g_miss_num)
34905     THEN
34906       l_dup_count:=0;
34907       FOR dup_csr IN px_config_tbl.FIRST .. px_config_tbl.LAST
34908       LOOP
34909           IF (px_config_tbl(dup_csr).instance_id IS NOT NULL AND
34910               px_config_tbl(dup_csr).instance_id <> fnd_api.g_miss_num AND
34911               px_config_tbl(dup_csr).instance_id = px_config_tbl(i).instance_id)
34912           THEN
34913              l_dup_count := l_dup_count +1;
34914           END IF;
34915       END LOOP;
34916 
34917       IF  l_dup_count > 1
34918       THEN
34919         FND_MESSAGE.SET_NAME('CSI','CSI_DUPLICATE_INS_KEY');
34920         FND_MESSAGE.SET_TOKEN('INSTANCE_ID',px_config_tbl(i).instance_id);
34921         FND_MSG_PUB.Add;
34922         RAISE FND_API.G_EXC_ERROR;
34923       END IF;
34924     END IF;
34925 
34926      -- Check for duplicate config keys
34927     IF (px_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
34928         px_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
34929         px_config_tbl(i).config_inst_item_id IS NOT NULL AND
34930         px_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
34931         px_config_tbl(i).config_inst_rev_num IS NOT NULL AND
34932         px_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )
34933     THEN
34934       l_dup_count:=0;
34935       FOR dup_csr IN px_config_tbl.FIRST .. px_config_tbl.LAST
34936       LOOP
34937           IF (px_config_tbl(dup_csr).config_inst_hdr_id IS NOT NULL AND
34938               px_config_tbl(dup_csr).config_inst_hdr_id <> fnd_api.g_miss_num AND
34939               px_config_tbl(dup_csr).config_inst_hdr_id =px_config_tbl(i).config_inst_hdr_id) AND
34940              (px_config_tbl(dup_csr).config_inst_item_id IS NOT NULL AND
34941               px_config_tbl(dup_csr).config_inst_item_id <> fnd_api.g_miss_num AND
34942               px_config_tbl(dup_csr).config_inst_item_id=px_config_tbl(i).config_inst_item_id) AND
34943              (px_config_tbl(dup_csr).config_inst_rev_num IS NOT NULL AND
34944               px_config_tbl(dup_csr).config_inst_rev_num <> fnd_api.g_miss_num AND
34945               px_config_tbl(dup_csr).config_inst_rev_num=px_config_tbl(i).config_inst_rev_num)
34946           THEN
34947              l_dup_count := l_dup_count +1;
34948           END IF;
34949       END LOOP;
34950 
34951       IF  l_dup_count > 1
34952       THEN
34953             FND_MESSAGE.SET_NAME('CSI','CSI_DUPLICATE_KEYS_LOCKED');
34954             FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',px_config_tbl(i).config_inst_hdr_id);
34955             FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',px_config_tbl(i).config_inst_item_id);
34956             FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',px_config_tbl(i).config_inst_rev_num);
34957             FND_MSG_PUB.Add;
34958             RAISE FND_API.G_EXC_ERROR;
34959       END IF;
34960     END IF;
34961 
34962 
34963      IF (px_config_tbl(i).instance_id IS NOT NULL AND
34964          px_config_tbl(i).instance_id <> fnd_api.g_miss_num)
34965      THEN
34966       IF csi_item_instance_pvt.check_item_instance_lock (p_instance_id => px_config_tbl(i).instance_id)
34967       THEN
34968          FND_MESSAGE.SET_NAME('CSI','CSI_INS_ALREADY_LOCKED');
34969          FND_MESSAGE.SET_TOKEN('INSTANCE_ID',px_config_tbl(i).instance_id);
34970          FND_MSG_PUB.Add;
34971          RAISE FND_API.G_EXC_ERROR;
34972       ELSE
34973         l_found:='N';
34974         IF l_lock_tbl.COUNT > 0
34975         THEN
34976          FOR j IN l_lock_tbl.FIRST .. l_lock_tbl.LAST
34977          LOOP
34978           IF (l_lock_tbl(j).instance_id IS NOT NULL AND
34979               l_lock_tbl(j).instance_id <> fnd_api.g_miss_num) AND
34980               l_lock_tbl(j).instance_id=px_config_tbl(i).instance_id
34981           THEN
34982            l_found:='Y';
34983           END IF;
34984          END LOOP;
34985         END IF;
34986 
34987         IF l_found='N'
34988         THEN
34989 
34990           csi_ii_relationships_pvt.get_top_most_parent
34991           ( p_subject_id      => px_config_tbl(i).instance_id,
34992             p_rel_type_code   => l_rel_type_code,
34993             p_object_id       => l_root_node
34994            );
34995 
34996 
34997         l_rel_query_rec.object_id := l_root_node;
34998         l_rel_query_rec.relationship_type_code := l_rel_type_code;
34999 
35000          csi_ii_relationships_pvt.get_children
35001           ( p_relationship_query_rec    => l_rel_query_rec,
35002             p_rel_tbl                   => l_rel_tbl,
35003             p_depth                     => NULL,
35004             p_active_relationship_only  => FND_API.G_TRUE,
35005             p_config_only               => FND_API.G_TRUE,
35006             p_time_stamp                => FND_API.G_MISS_DATE,
35007             p_get_dfs                   => FND_API.G_FALSE,
35008             p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
35009 		    x_return_status             => x_return_status,
35010             x_msg_count                 => x_msg_count,
35011             x_msg_data                  => x_msg_data
35012 		   );
35013 
35014 
35015            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
35016               FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
35017               FND_MSG_PUB.Add;
35018               RAISE FND_API.G_EXC_ERROR;
35019            END IF;
35020           l_lock_count:=l_lock_tbl.COUNT+1;
35021           l_lock_tbl(l_lock_count).instance_id:=l_root_node;
35022           l_lock_tbl(l_lock_count).root_instance_id:=l_root_node;
35023           l_root_hdr_id := null;
35024           l_root_item_id:= null;
35025           l_root_rev_num:= null;
35026          FOR l_root_config IN px_config_tbl.FIRST .. px_config_tbl.LAST
35027          LOOP
35028           IF px_config_tbl(l_root_config).instance_id=l_root_node
35029           THEN
35030             l_lock_tbl(l_lock_count).root_config_inst_hdr_id := px_config_tbl(l_root_config).config_inst_hdr_id;
35031             l_lock_tbl(l_lock_count).root_config_inst_item_id:= px_config_tbl(l_root_config).config_inst_item_id;
35032             l_lock_tbl(l_lock_count).root_config_inst_rev_num:= px_config_tbl(l_root_config).config_inst_rev_num;
35033             l_root_hdr_id := px_config_tbl(l_root_config).config_inst_hdr_id;
35034             l_root_item_id:= px_config_tbl(l_root_config).config_inst_item_id;
35035             l_root_rev_num:= px_config_tbl(l_root_config).config_inst_rev_num;
35036            EXIT;
35037           END IF;
35038          END LOOP;
35039 
35040          IF l_rel_tbl.COUNT>0
35041          THEN
35042           FOR l_chld_csr IN l_rel_tbl.FIRST .. l_rel_tbl.LAST
35043           LOOP
35044            l_lock_count:=l_lock_tbl.COUNT+1;
35045            l_lock_tbl(l_lock_count).instance_id:=l_rel_tbl(l_chld_csr).subject_id;
35046             IF csi_item_instance_pvt.check_item_instance_lock (p_instance_id => l_rel_tbl(l_chld_csr).subject_id)
35047             THEN
35048               FND_MESSAGE.SET_NAME('CSI','CSI_INS_ALREADY_LOCKED');
35049               FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_lock_tbl(l_lock_count).instance_id);
35050               FND_MSG_PUB.Add;
35051               RAISE FND_API.G_EXC_ERROR;
35052             END IF;
35053            l_lock_tbl(l_lock_count).root_instance_id:=l_root_node;
35054            l_lock_tbl(l_lock_count).root_config_inst_hdr_id := l_root_hdr_id;
35055            l_lock_tbl(l_lock_count).root_config_inst_item_id:= l_root_item_id;
35056            l_lock_tbl(l_lock_count).root_config_inst_rev_num:= l_root_rev_num;
35057           END LOOP;
35058          END IF;
35059         END IF;
35060       END IF;
35061      ELSIF (px_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
35062             px_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
35063             px_config_tbl(i).config_inst_item_id IS NOT NULL AND
35064             px_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
35065             px_config_tbl(i).config_inst_rev_num IS NOT NULL AND
35066             px_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )
35067      THEN
35068        IF csi_item_instance_pvt.check_item_instance_lock ( p_config_inst_hdr_id  => px_config_tbl(i).config_inst_hdr_id
35069                                         ,p_config_inst_item_id => px_config_tbl(i).config_inst_item_id
35070                                         ,p_config_inst_rev_num => px_config_tbl(i).config_inst_rev_num
35071                                         )
35072        THEN
35073          FND_MESSAGE.SET_NAME('CSI','CSI_CONFIG_KEYS_LOCKED');
35074          FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',px_config_tbl(i).config_inst_hdr_id);
35075          FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',px_config_tbl(i).config_inst_item_id);
35076          FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',px_config_tbl(i).config_inst_rev_num);
35077          FND_MSG_PUB.Add;
35078          RAISE FND_API.G_EXC_ERROR;
35079        ELSE
35080         l_lock_count:=l_lock_tbl.COUNT+1;
35081         l_lock_tbl(l_lock_count).config_inst_hdr_id    :=px_config_tbl(i).config_inst_hdr_id;
35082         l_lock_tbl(l_lock_count).config_inst_item_id   :=px_config_tbl(i).config_inst_item_id;
35083         l_lock_tbl(l_lock_count).config_inst_rev_num   :=px_config_tbl(i).config_inst_rev_num;
35084         l_lock_tbl(l_lock_count).source_application_id :=px_config_tbl(i).source_application_id;
35085         l_lock_tbl(l_lock_count).source_txn_header_ref :=px_config_tbl(i).source_txn_header_ref;
35086 
35087         BEGIN
35088           SELECT instance_hdr_id  -- root_config_hdr_id
35089                 ,config_item_id   -- root_config_item_id
35090                 ,instance_rev_nbr -- root_config_rev_nbr
35091           INTO   l_lock_tbl(l_lock_count).root_config_inst_hdr_id
35092                 ,l_lock_tbl(l_lock_count).root_config_inst_item_id
35093                 ,l_lock_tbl(l_lock_count).root_config_inst_rev_num
35094           FROM   cz_config_items czItems
35095           WHERE  czItems.instance_hdr_id  = px_config_tbl(i).config_inst_hdr_id
35096           AND    czItems.instance_rev_nbr = px_config_tbl(i).config_inst_rev_num
35097           AND    czItems.component_instance_type = 'I'  -- I = Root instance
35098           AND    czItems.deleted_flag = '0';
35099         EXCEPTION
35100           WHEN OTHERS THEN
35101              NULL;
35102         END;
35103 
35104         --l_lock_tbl(l_lock_count).root_config_inst_hdr_id := px_config_tbl(i).config_inst_hdr_id;
35105         --l_lock_tbl(l_lock_count).root_config_inst_item_id:= px_config_tbl(i).config_inst_item_id;
35106         --l_lock_tbl(l_lock_count).root_config_inst_rev_num:= px_config_tbl(i).config_inst_rev_num;
35107         l_lock_tbl(l_lock_count).lock_status:=2;
35108         px_config_tbl(i).lock_status:=2;
35109        END IF;
35110      END IF;
35111     ELSE
35112          FND_MESSAGE.SET_NAME('CSI','CSI_PASSED_INVALID_KEYS');
35113          FND_MSG_PUB.Add;
35114          RAISE FND_API.G_EXC_ERROR;
35115     END IF;
35116 
35117    END IF;
35118   END LOOP;
35119  END IF;
35120 
35121    IF l_lock_tbl.COUNT > 0
35122    THEN
35123     FOR root IN l_lock_tbl.FIRST .. l_lock_tbl.LAST
35124     LOOP
35125     IF l_lock_tbl.EXISTS(root)
35126     THEN
35127      IF (l_lock_tbl(root).root_config_inst_hdr_id IS NOT NULL AND
35128          l_lock_tbl(root).root_config_inst_hdr_id <> fnd_api.g_miss_num AND
35129          l_lock_tbl(root).root_config_inst_item_id IS NOT NULL AND
35130          l_lock_tbl(root).root_config_inst_item_id <> fnd_api.g_miss_num AND
35131          l_lock_tbl(root).root_config_inst_rev_num IS NOT NULL AND
35132          l_lock_tbl(root).root_config_inst_rev_num <> fnd_api.g_miss_num ) AND
35133         (l_lock_tbl(root).instance_id IS NULL OR
35134          l_lock_tbl(root).instance_id = fnd_api.g_miss_num)
35135      THEN
35136         FOR chd IN l_lock_tbl.FIRST .. l_lock_tbl.LAST
35137         LOOP
35138            IF ( (l_lock_tbl(chd).root_config_inst_hdr_id IS NULL OR
35139                  l_lock_tbl(chd).root_config_inst_hdr_id = fnd_api.g_miss_num) AND
35140                 (l_lock_tbl(chd).root_config_inst_item_id IS NULL OR
35141                  l_lock_tbl(chd).root_config_inst_item_id = fnd_api.g_miss_num) AND
35142                 (l_lock_tbl(chd).root_config_inst_rev_num IS NULL OR
35143                  l_lock_tbl(chd).root_config_inst_rev_num = fnd_api.g_miss_num)) AND
35144               (  l_lock_tbl(chd).instance_id IS NULL OR
35145                  l_lock_tbl(chd).instance_id = fnd_api.g_miss_num) AND
35146               (  l_lock_tbl(chd).config_inst_hdr_id = l_lock_tbl(root).config_inst_hdr_id AND
35147                  l_lock_tbl(chd).config_inst_rev_num = l_lock_tbl(root).config_inst_rev_num )
35148            THEN
35149               l_lock_tbl(chd).root_config_inst_hdr_id  := l_lock_tbl(root).root_config_inst_hdr_id;
35150               l_lock_tbl(chd).root_config_inst_item_id := l_lock_tbl(root).root_config_inst_item_id;
35151               l_lock_tbl(chd).root_config_inst_rev_num := l_lock_tbl(root).root_config_inst_rev_num;
35152            END IF;
35153         END LOOP;
35154      END IF;
35155     END IF;
35156     END LOOP;
35157    END IF;
35158 
35159 
35160 
35161    SELECT csi_item_instance_locks_s.NEXTVAL
35162      INTO l_lock_id
35163      FROM SYS.dual;
35164 
35165      IF px_config_tbl.COUNT > 0
35166      THEN
35167        FOR i IN px_config_tbl.FIRST .. px_config_tbl.LAST
35168        LOOP
35169          IF px_config_tbl.EXISTS(i)
35170          THEN
35171            px_config_tbl(i).lock_id:=l_lock_id;
35172          END IF;
35173        END LOOP;
35174      END IF;
35175 
35176 
35177    IF l_lock_tbl.COUNT > 0 AND
35178       px_config_tbl.COUNT>0
35179    THEN
35180      FOR l_lock IN 1..l_lock_tbl.COUNT
35181      LOOP
35182      IF l_lock_tbl.EXISTS(l_lock)
35183      THEN
35184       FOR l_config IN px_config_tbl.FIRST .. px_config_tbl.LAST
35185       LOOP
35186       IF px_config_tbl.EXISTS(l_config)
35187       THEN
35188        IF l_lock_tbl(l_lock).instance_id=px_config_tbl(l_config).instance_id AND
35189          (l_lock_tbl(l_lock).instance_id IS NOT NULL AND
35190           l_lock_tbl(l_lock).instance_id <> fnd_api.g_miss_num) AND
35191          (px_config_tbl(l_config).instance_id IS NOT NULL AND
35192           px_config_tbl(l_config).instance_id <> fnd_api.g_miss_num)
35193        THEN
35194           l_lock_tbl(l_lock).lock_status           :=2;
35195          -- l_lock_tbl(l_lock).lock_id               :=l_lock_id;
35196           l_lock_tbl(l_lock).source_application_id :=px_config_tbl(l_config).source_application_id;
35197           l_lock_tbl(l_lock).source_txn_header_ref :=px_config_tbl(l_config).source_txn_header_ref;
35198           l_lock_tbl(l_lock).source_txn_line_ref1  :=px_config_tbl(l_config).source_txn_line_ref1;
35199           l_lock_tbl(l_lock).source_txn_line_ref2  :=px_config_tbl(l_config).source_txn_line_ref2;
35200           l_lock_tbl(l_lock).source_txn_line_ref3  :=px_config_tbl(l_config).source_txn_line_ref3;
35201           l_lock_tbl(l_lock).config_inst_hdr_id    :=px_config_tbl(l_config).config_inst_hdr_id;
35202           l_lock_tbl(l_lock).config_inst_item_id   :=px_config_tbl(l_config).config_inst_item_id;
35203           l_lock_tbl(l_lock).config_inst_rev_num   :=px_config_tbl(l_config).config_inst_rev_num;
35204           px_config_tbl(l_config).lock_id          :=l_lock_id;
35205           px_config_tbl(l_config).lock_status      :=2;
35206        END IF;
35207       END IF;
35208       END LOOP; -- For config_tbl loop
35209       IF l_lock_tbl(l_lock).lock_status IS NULL OR
35210          l_lock_tbl(l_lock).lock_status = fnd_api.g_miss_num
35211       THEN
35212         l_lock_tbl(l_lock).lock_status:=1;
35213         l_lock_tbl(l_lock).source_application_id :=px_config_tbl(1).source_application_id;
35214         l_lock_tbl(l_lock).source_txn_header_ref :=px_config_tbl(1).source_txn_header_ref;
35215        IF (l_lock_tbl(l_lock).instance_id IS NOT NULL AND
35216            l_lock_tbl(l_lock).instance_id <> fnd_api.g_miss_num) AND
35217           ( (l_lock_tbl(l_lock).config_inst_hdr_id IS NULL OR
35218              l_lock_tbl(l_lock).config_inst_hdr_id = fnd_api.g_miss_num) AND
35219             (l_lock_tbl(l_lock).config_inst_item_id IS NULL OR
35220              l_lock_tbl(l_lock).config_inst_item_id = fnd_api.g_miss_num) AND
35221             (l_lock_tbl(l_lock).config_inst_rev_num IS NULL OR
35222              l_lock_tbl(l_lock).config_inst_rev_num = fnd_api.g_miss_num) )
35223        THEN
35224          -- CALL GET CONFIG KEYS
35225             get_config_keys(p_instance_id => l_lock_tbl(l_lock).instance_id,
35226                             p_config_rec  => l_lock_config_rec
35227                             );
35228             l_lock_tbl(l_lock).config_inst_hdr_id:=l_lock_config_rec.config_inst_hdr_id;
35229             l_lock_tbl(l_lock).config_inst_item_id:=l_lock_config_rec.config_inst_item_id;
35230             l_lock_tbl(l_lock).config_inst_rev_num:=l_lock_config_rec.config_inst_rev_num;
35231        END IF;
35232 
35233       END IF;
35234      END IF;
35235      END LOOP; -- For lock_tbl loop
35236    END IF;
35237 
35238 
35239 
35240    -- Call table handler
35241    IF l_lock_tbl.COUNT>0
35242    THEN
35243     FOR l_insert_csr IN l_lock_tbl.FIRST .. l_lock_tbl.LAST
35244     LOOP
35245      IF l_lock_tbl.EXISTS(l_insert_csr)
35246      THEN
35247       INSERT INTO csi_item_instance_locks
35248       (    lock_id
35249           ,lock_status
35250           ,instance_id
35251           ,config_inst_hdr_id
35252           ,config_inst_item_id
35253           ,config_inst_rev_num
35254           ,root_instance_id
35255           ,root_config_inst_hdr_id
35256           ,root_config_inst_item_id
35257           ,root_config_inst_rev_num
35258           ,lock_source_appln_id
35259           ,lock_source_header_ref
35260           ,lock_source_line_ref1
35261           ,lock_source_line_ref2
35262           ,lock_source_line_ref3
35263           ,date_locked
35264           ,last_updated_by
35265           ,last_update_date
35266           ,object_version_number
35267           ,last_update_login
35268           ,created_by
35269           ,creation_date
35270       )
35271       VALUES
35272       (
35273            l_lock_id
35274           ,l_lock_tbl(l_insert_csr).lock_status
35275           ,decode(l_lock_tbl(l_insert_csr).instance_id,fnd_api.g_miss_num,NULL,l_lock_tbl(l_insert_csr).instance_id)
35276           ,decode(l_lock_tbl(l_insert_csr).config_inst_hdr_id,fnd_api.g_miss_num,NULL,l_lock_tbl(l_insert_csr).config_inst_hdr_id)
35277           ,decode(l_lock_tbl(l_insert_csr).config_inst_item_id,fnd_api.g_miss_num,NULL,l_lock_tbl(l_insert_csr).config_inst_item_id)
35278           ,decode(l_lock_tbl(l_insert_csr).config_inst_rev_num,fnd_api.g_miss_num,NULL,l_lock_tbl(l_insert_csr).config_inst_rev_num)
35279           ,decode(l_lock_tbl(l_insert_csr).root_instance_id,fnd_api.g_miss_num,NULL,l_lock_tbl(l_insert_csr).root_instance_id)
35280           ,decode(l_lock_tbl(l_insert_csr).root_config_inst_hdr_id,fnd_api.g_miss_num,NULL,l_lock_tbl(l_insert_csr).root_config_inst_hdr_id)
35281           ,decode(l_lock_tbl(l_insert_csr).root_config_inst_item_id,fnd_api.g_miss_num,NULL,l_lock_tbl(l_insert_csr).root_config_inst_item_id)
35282           ,decode(l_lock_tbl(l_insert_csr).root_config_inst_rev_num,fnd_api.g_miss_num,NULL,l_lock_tbl(l_insert_csr).root_config_inst_rev_num)
35283           ,decode(l_lock_tbl(l_insert_csr).source_application_id,fnd_api.g_miss_num,NULL,l_lock_tbl(l_insert_csr).source_application_id)
35284           ,decode(l_lock_tbl(l_insert_csr).source_txn_header_ref,fnd_api.g_miss_char,NULL,l_lock_tbl(l_insert_csr).source_txn_header_ref)
35285           ,decode(l_lock_tbl(l_insert_csr).source_txn_line_ref1,fnd_api.g_miss_char,NULL,l_lock_tbl(l_insert_csr).source_txn_line_ref1)
35286           ,decode(l_lock_tbl(l_insert_csr).source_txn_line_ref2,fnd_api.g_miss_char,NULL,l_lock_tbl(l_insert_csr).source_txn_line_ref2)
35287           ,decode(l_lock_tbl(l_insert_csr).source_txn_line_ref3,fnd_api.g_miss_char,NULL,l_lock_tbl(l_insert_csr).source_txn_line_ref3)
35288           ,SYSDATE --p_txn_rec.source_transaction_date
35289           ,fnd_global.user_id
35290           ,SYSDATE
35291           ,1
35292           ,fnd_global.user_id
35293           ,fnd_global.user_id
35294           ,SYSDATE
35295       );
35296      END IF;
35297     END LOOP;
35298     /*
35299           CSI_TRANSACTIONS_PVT.Create_transaction
35300           (
35301              p_api_version            => p_api_version
35302             ,p_commit                 => p_commit
35303             ,p_init_msg_list          => p_init_msg_list
35304             ,p_validation_level       => p_validation_level
35305             ,p_Success_IF_Exists_Flag => 'Y'
35306             ,p_transaction_rec        => p_txn_rec
35307             ,x_return_status          => x_return_status
35308             ,x_msg_count              => x_msg_count
35309             ,x_msg_data               => x_msg_data
35310           );
35311 
35312          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
35313               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_VALIDATE_TXN');
35314               FND_MESSAGE.SET_TOKEN('TRANSACTION_ID',p_txn_rec.transaction_id );
35315               FND_MSG_PUB.Add;
35316               RAISE FND_API.G_EXC_ERROR;
35317          END IF;
35318          */
35319    END IF;
35320 
35321         IF FND_API.To_Boolean( p_commit ) THEN
35322             COMMIT WORK;
35323         END IF;
35324 
35325         -- Standard call to get message count and if count is  get message info.
35326         FND_MSG_PUB.Count_And_Get
35327                 (p_count        =>      x_msg_count ,
35328                  p_data         =>      x_msg_data   );
35329 
35330 EXCEPTION
35331         WHEN FND_API.G_EXC_ERROR THEN
35332                 ROLLBACK TO csi_lock_item_instance;
35333                 x_return_status := FND_API.G_RET_STS_ERROR ;
35334                 FND_MSG_PUB.Count_And_Get
35335                 (       p_count   =>      x_msg_count,
35336                         p_data    =>      x_msg_data    );
35337         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
35338                 ROLLBACK TO csi_lock_item_instance;
35339                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
35340                 FND_MSG_PUB.Count_And_Get
35341                 ( p_count     =>      x_msg_count,
35342                   p_data      =>      x_msg_data  );
35343         WHEN OTHERS THEN
35344                 ROLLBACK TO csi_lock_item_instance;
35345                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
35346                 IF FND_MSG_PUB.Check_Msg_Level
35347                      (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
35348                 THEN
35349                    FND_MSG_PUB.Add_Exc_Msg
35350                     ( g_pkg_name, l_api_name );
35351                 END IF;
35352                 FND_MSG_PUB.Count_And_Get
35353                 (  p_count   =>      x_msg_count,
35354                    p_data    =>      x_msg_data   );
35355 END lock_item_instances;
35356 
35357 PROCEDURE validate_lock
35358 (    p_lock_id             IN  NUMBER ,
35359      p_instance_id         IN  NUMBER ,
35360      p_config_inst_hdr_id  IN  NUMBER ,
35361      p_config_inst_item_id IN  NUMBER ,
35362      p_config_inst_rev_num IN  NUMBER ,
35363      p_lock_status         OUT NOCOPY NUMBER,
35364      p_root                OUT NOCOPY BOOLEAN
35365 ) AS
35366  l_lock_status            NUMBER :=3;
35367  l_root_value             BOOLEAN := FALSE;
35368  l_root_config_hdr_id     NUMBER;
35369  l_root_config_item_id    NUMBER;
35370  l_root_config_rev_num    NUMBER;
35371  l_root_instance_id       NUMBER;
35372 BEGIN
35373     p_root := l_root_value;
35374  IF p_instance_id IS NOT NULL AND
35375     p_instance_id <> fnd_api.g_miss_num AND
35376     p_lock_id IS NOT NULL AND
35377     p_lock_id <> fnd_api.g_miss_num
35378  THEN
35379      BEGIN
35380         SELECT lock_status
35381               ,root_instance_id
35382           INTO l_lock_status
35383               ,l_root_instance_id
35384           FROM csi_item_instance_locks
35385          WHERE instance_id=p_instance_id
35386            AND lock_id = p_lock_id;
35387        IF p_instance_id = l_root_instance_id
35388        THEN
35389          p_root := TRUE;
35390        END IF;
35391      EXCEPTION
35392       WHEN NO_DATA_FOUND THEN
35393            l_lock_status :=3;
35394      END;
35395  ELSIF (p_config_inst_hdr_id IS NOT NULL AND
35396         p_config_inst_hdr_id <> fnd_api.g_miss_num AND
35397         p_config_inst_item_id IS NOT NULL AND
35398         p_config_inst_item_id <> fnd_api.g_miss_num AND
35399         p_config_inst_rev_num IS NOT NULL AND
35400         p_config_inst_rev_num <> fnd_api.g_miss_num ) AND
35401        (p_lock_id IS NOT NULL AND
35402         p_lock_id <> fnd_api.g_miss_num)
35403  THEN
35404      BEGIN
35405         SELECT lock_status
35406               ,root_config_inst_hdr_id
35407               ,root_config_inst_item_id
35408               ,root_config_inst_rev_num
35409           INTO l_lock_status
35410               ,l_root_config_hdr_id
35411               ,l_root_config_item_id
35412               ,l_root_config_rev_num
35413           FROM csi_item_instance_locks
35414          WHERE config_inst_hdr_id  = p_config_inst_hdr_id
35415            AND config_inst_rev_num = p_config_inst_rev_num
35416            AND config_inst_item_id = p_config_inst_item_id
35417            AND lock_id = p_lock_id;
35418        IF p_config_inst_hdr_id = l_root_config_hdr_id AND
35419           p_config_inst_rev_num = l_root_config_rev_num AND
35420           p_config_inst_item_id = l_root_config_item_id
35421        THEN
35422          p_root := TRUE;
35423        END IF;
35424      EXCEPTION
35425       WHEN NO_DATA_FOUND THEN
35426            l_lock_status :=3;
35427      END;
35428  ELSE
35429    l_lock_status :=3;
35430  END IF;
35431   p_lock_status :=l_lock_status;
35432 END validate_lock;
35433 
35434 
35435 PROCEDURE build_unlock_config
35436 (p_lock_id              IN NUMBER,
35437  p_config_inst_hdr_id   IN NUMBER,
35438  p_config_inst_item_id  IN NUMBER,
35439  p_config_inst_rev_num  IN NUMBER,
35440  p_bld_unlock_tbl       OUT NOCOPY csi_item_instance_pvt.lock_instances_tbl
35441  )
35442 AS
35443 CURSOR config_csr(p_root_hdr    IN NUMBER,
35444                   p_root_rev    IN NUMBER,
35445                   p_lock_status IN NUMBER)
35446  IS
35447  SELECT config_inst_hdr_id,
35448         config_inst_item_id,
35449         config_inst_rev_num,
35450         lock_status
35451    FROM csi_item_instance_locks
35452   WHERE root_config_inst_hdr_id = p_root_hdr
35453     AND root_config_inst_rev_num = p_root_rev
35454     AND lock_id = p_lock_id
35455     AND lock_status <> p_lock_status;
35456 l_root_hdr_id   NUMBER;
35457 l_root_rev_num  NUMBER;
35458 l_ctr           NUMBER;
35459 l_unlock_status NUMBER:=0;
35460 BEGIN
35461  BEGIN
35462    SELECT root_config_inst_hdr_id,
35463           root_config_inst_rev_num
35464      INTO l_root_hdr_id,
35465           l_root_rev_num
35466      FROM csi_item_instance_locks
35467     WHERE lock_id = p_lock_id
35468       AND config_inst_hdr_id = p_config_inst_hdr_id
35469       AND config_inst_rev_num = p_config_inst_rev_num
35470       AND config_inst_item_id = p_config_inst_item_id;
35471       l_ctr:=0;
35472       FOR l_config_csr IN config_csr (p_root_hdr    => l_root_hdr_id
35473                                      ,p_root_rev    => l_root_rev_num
35474                                      ,p_lock_status => l_unlock_status)
35475       LOOP
35476          l_ctr := l_ctr+1;
35477          p_bld_unlock_tbl(l_ctr).config_inst_hdr_id := l_config_csr.config_inst_hdr_id;
35478          p_bld_unlock_tbl(l_ctr).config_inst_rev_num := l_config_csr.config_inst_rev_num;
35479          p_bld_unlock_tbl(l_ctr).config_inst_item_id := l_config_csr.config_inst_item_id;
35480          p_bld_unlock_tbl(l_ctr).lock_status :=l_config_csr.lock_status;
35481       END LOOP;
35482  EXCEPTION
35483   WHEN NO_DATA_FOUND THEN
35484     NULL;
35485  END;
35486 END build_unlock_config;
35487 
35488 PROCEDURE unlock_tbl_handler
35489 (p_unlock_tbl            IN   CSI_ITEM_INSTANCE_PVT.lock_instances_tbl,
35490  p_unlock_param          IN   VARCHAR2,
35491  p_date                  IN   DATE
35492  )
35493 AS
35494 l_last_updated_by   NUMBER;
35495 l_last_update_login NUMBER;
35496 l_unlock_status     NUMBER;
35497 BEGIN
35498 l_unlock_status     := 0;
35499 l_last_updated_by   := fnd_global.user_id;
35500 l_last_update_login := fnd_global.login_id;
35501 
35502  IF p_unlock_param = 'INSTANCE'
35503  THEN
35504   IF p_unlock_tbl.COUNT>0
35505   THEN
35506    FOR i IN p_unlock_tbl.FIRST .. p_unlock_tbl.LAST
35507    LOOP
35508     IF p_unlock_tbl.EXISTS(i)
35509     THEN
35510      UPDATE csi_item_instance_locks
35511         SET lock_status= p_unlock_tbl(i).lock_status
35512            ,unlock_source_appln_id    = decode (p_unlock_tbl(i).source_application_id,fnd_api.g_miss_num,unlock_source_appln_id,p_unlock_tbl(i).source_application_id)
35513            ,unlock_source_header_ref  = decode (p_unlock_tbl(i).source_txn_header_ref,fnd_api.g_miss_char,unlock_source_header_ref,p_unlock_tbl(i).source_txn_header_ref)
35514            ,unlock_source_line_ref1   = decode (p_unlock_tbl(i).source_txn_line_ref1,fnd_api.g_miss_char,unlock_source_line_ref1,p_unlock_tbl(i).source_txn_line_ref1)
35515            ,unlock_source_line_ref2   = decode (p_unlock_tbl(i).source_txn_line_ref2,fnd_api.g_miss_char,unlock_source_line_ref2,p_unlock_tbl(i).source_txn_line_ref2)
35516            ,unlock_source_line_ref3   = decode (p_unlock_tbl(i).source_txn_line_ref3,fnd_api.g_miss_char,unlock_source_line_ref3,p_unlock_tbl(i).source_txn_line_ref3)
35517            ,date_unlocked             = p_date
35518            ,object_version_number     = object_version_number+1
35519            ,last_updated_by           = l_last_updated_by
35520            ,last_update_date          = SYSDATE
35521            ,last_update_login         = l_last_update_login
35522       WHERE instance_id = p_unlock_tbl(i).instance_id
35523         AND lock_id =   p_unlock_tbl(i).lock_id;
35524     END IF;
35525    END LOOP;
35526   END IF;
35527  ELSIF p_unlock_param = 'CONFIG'
35528  THEN
35529   IF p_unlock_tbl.COUNT>0
35530   THEN
35531    FOR i IN p_unlock_tbl.FIRST .. p_unlock_tbl.LAST
35532    LOOP
35533     IF p_unlock_tbl.EXISTS(i)
35534     THEN
35535      UPDATE csi_item_instance_locks
35536         SET lock_status= p_unlock_tbl(i).lock_status
35537            ,unlock_source_appln_id    = decode (p_unlock_tbl(i).source_application_id,fnd_api.g_miss_num,unlock_source_appln_id,p_unlock_tbl(i).source_application_id)
35538            ,unlock_source_header_ref  = decode (p_unlock_tbl(i).source_txn_header_ref,fnd_api.g_miss_char,unlock_source_header_ref,p_unlock_tbl(i).source_txn_header_ref)
35539            ,unlock_source_line_ref1   = decode (p_unlock_tbl(i).source_txn_line_ref1,fnd_api.g_miss_char,unlock_source_line_ref1,p_unlock_tbl(i).source_txn_line_ref1)
35540            ,unlock_source_line_ref2   = decode (p_unlock_tbl(i).source_txn_line_ref2,fnd_api.g_miss_char,unlock_source_line_ref2,p_unlock_tbl(i).source_txn_line_ref2)
35541            ,unlock_source_line_ref3   = decode (p_unlock_tbl(i).source_txn_line_ref3,fnd_api.g_miss_char,unlock_source_line_ref3,p_unlock_tbl(i).source_txn_line_ref3)
35542            ,date_unlocked             = p_date
35543            ,object_version_number     = object_version_number+1
35544            ,last_updated_by           = l_last_updated_by
35545            ,last_update_date          = SYSDATE
35546            ,last_update_login         = l_last_update_login
35547       WHERE config_inst_hdr_id  = p_unlock_tbl(i).config_inst_hdr_id
35548         AND config_inst_item_id = p_unlock_tbl(i).config_inst_item_id
35549         AND config_inst_rev_num = p_unlock_tbl(i).config_inst_rev_num
35550         AND lock_id             = p_unlock_tbl(i).lock_id;
35551     END IF;
35552    END LOOP;
35553   END IF;
35554  END IF;
35555 
35556 END unlock_tbl_handler;
35557 
35558 
35559 PROCEDURE unlock_item_instances
35560  (
35561      p_api_version           IN   NUMBER
35562     ,p_commit                IN   VARCHAR2
35563     ,p_init_msg_list         IN   VARCHAR2
35564     ,p_validation_level      IN   NUMBER
35565     ,p_config_tbl            IN   csi_cz_int.config_tbl
35566     ,p_unlock_all            IN   VARCHAR2
35567 --    ,p_txn_rec               IN   OUT NOCOPY csi_datastructures_pub.transaction_rec
35568     ,x_return_status         OUT  NOCOPY VARCHAR2
35569     ,x_msg_count             OUT  NOCOPY NUMBER
35570     ,x_msg_data              OUT  NOCOPY VARCHAR2
35571  )
35572 AS
35573 l_api_name         CONSTANT VARCHAR2(30)   := 'UNLOCK_ITEM_INSTANCES';
35574 l_api_version      CONSTANT NUMBER         := 1.0;
35575 l_csi_debug_level  NUMBER;
35576 l_rel_tbl          csi_datastructures_pub.ii_relationship_tbl;
35577 l_ii_relationship_level_tbl csi_ii_relationships_pvt.ii_relationship_level_tbl;
35578 l_rel_query_rec    csi_datastructures_pub.relationship_query_rec;
35579 l_rel_type_code    VARCHAR2(30) := 'COMPONENT-OF';
35580 l_unlock_tbl       csi_item_instance_pvt.lock_instances_tbl;
35581 l_unlock_ins_tbl   csi_item_instance_pvt.lock_instances_tbl;
35582 l_unlock_count     NUMBER;
35583 l_unlock_config    csi_item_instance_pvt.lock_instances_tbl;
35584 l_unlock_root      csi_item_instance_pvt.lock_instances_tbl;
35585 l_bld_unlock_tbl   csi_item_instance_pvt.lock_instances_tbl;
35586 l_config_count     NUMBER;
35587 l_config_root      NUMBER;
35588 l_instance_ctr     NUMBER;
35589 l_config_ctr       NUMBER;
35590 l_warning          VARCHAR2(1) :='N';
35591 l_valid_lock_status NUMBER;
35592 l_found            VARCHAR2(1);
35593 l_root_value       BOOLEAN := FALSE;
35594 l_unlock_root_ins  NUMBER;
35595 BEGIN
35596 
35597   SAVEPOINT csi_unlock_item_instance;
35598 
35599         -- Check for freeze_flag in csi_install_parameters is set to 'Y'
35600 
35601      csi_utility_grp.check_ib_active;
35602 
35603         -- Standard call to check for call compatibility.
35604         IF NOT FND_API.Compatible_API_Call (    l_api_version           ,
35605                                                 p_api_version           ,
35606                                                 l_api_name              ,
35607                                                 g_pkg_name              )
35608         THEN
35609                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
35610         END IF;
35611 
35612         -- Initialize message list if p_init_msg_list is set to TRUE.
35613         IF FND_API.to_Boolean( p_init_msg_list ) THEN
35614                 FND_MSG_PUB.initialize;
35615         END IF;
35616 
35617         --  Initialize API return status to success
35618         x_return_status := FND_API.G_RET_STS_SUCCESS;
35619 
35620         -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
35621         l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
35622 
35623         -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
35624         IF (l_csi_debug_level > 0) THEN
35625             csi_gen_utility_pvt.put_line( 'unlock_item_instances');
35626         END IF;
35627 
35628 
35629         -- If the debug level = 2 then dump all the parameters values.
35630         IF (l_csi_debug_level > 1) THEN
35631                csi_gen_utility_pvt.put_line( 'unlock_item_instances'||
35632                                                    p_api_version           ||'-'||
35633                                                    p_commit                ||'-'||
35634                                                    p_init_msg_list         ||'-'||
35635                                                    p_validation_level            );
35636                -- Dump the records in the log file
35637           IF p_config_tbl.COUNT > 0
35638           THEN
35639            FOR tab_row IN p_config_tbl.FIRST .. p_config_tbl.LAST
35640            LOOP
35641              csi_gen_utility_pvt.put_line('                                         ');
35642              csi_gen_utility_pvt.put_line('Dumping the values for config tbl Rec # :'||tab_row);
35643              csi_gen_utility_pvt.put_line('source_application_id    :'||p_config_tbl(tab_row).source_application_id);
35644              csi_gen_utility_pvt.put_line('source_txn_header_ref    :'||p_config_tbl(tab_row).source_txn_header_ref);
35645              csi_gen_utility_pvt.put_line('source_txn_line_ref1     :'||p_config_tbl(tab_row).source_txn_line_ref1);
35646              csi_gen_utility_pvt.put_line('source_txn_line_ref2     :'||p_config_tbl(tab_row).source_txn_line_ref2);
35647              csi_gen_utility_pvt.put_line('source_txn_line_ref3     :'||p_config_tbl(tab_row).source_txn_line_ref3);
35648              csi_gen_utility_pvt.put_line('instance_id              :'||p_config_tbl(tab_row).instance_id);
35649              csi_gen_utility_pvt.put_line('lock_id                  :'||p_config_tbl(tab_row).lock_id);
35650              csi_gen_utility_pvt.put_line('config_inst_hdr_id       :'||p_config_tbl(tab_row).config_inst_hdr_id);
35651              csi_gen_utility_pvt.put_line('config_inst_item_id      :'||p_config_tbl(tab_row).config_inst_item_id);
35652              csi_gen_utility_pvt.put_line('config_inst_rev_num      :'||p_config_tbl(tab_row).config_inst_rev_num);
35653              csi_gen_utility_pvt.put_line('lock_status              :'||p_config_tbl(tab_row).lock_status);
35654            END LOOP;
35655           END IF;
35656                --csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
35657         END IF;
35658 
35659 
35660 
35661   l_unlock_tbl.DELETE;
35662              csi_gen_utility_pvt.put_line('p_unlock_all             :'||p_unlock_all);
35663   IF p_unlock_all IS NOT NULL AND
35664      p_unlock_all = fnd_api.g_true
35665   THEN
35666              csi_gen_utility_pvt.put_line('Processing to unlock all locked instances.');
35667   -- This is the case where root node(instance_id) is passed and
35668   -- we need to get all its children and unlock them.
35669    IF p_config_tbl.COUNT >0
35670    THEN
35671     FOR i IN p_config_tbl.FIRST .. p_config_tbl.LAST
35672     LOOP
35673      IF p_config_tbl.EXISTS(i)
35674      THEN
35675       IF ((p_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
35676            p_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
35677            p_config_tbl(i).config_inst_item_id IS NOT NULL AND
35678            p_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
35679            p_config_tbl(i).config_inst_rev_num IS NOT NULL AND
35680            p_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )) AND
35681           (p_config_tbl(i).lock_id IS NOT NULL AND
35682            p_config_tbl(i).lock_id <> fnd_api.g_miss_num)
35683       THEN
35684              csi_gen_utility_pvt.put_line('Processing where config keys were passed.');
35685        l_found:='N';
35686        IF l_unlock_config.count>0
35687        THEN
35688         FOR l_un_csr IN l_unlock_config.FIRST .. l_unlock_config.LAST
35689         LOOP
35690          IF l_unlock_config.EXISTS(l_un_csr)
35691          THEN
35692            IF l_unlock_config(l_un_csr).lock_id=p_config_tbl(i).lock_id AND
35693               l_unlock_config(l_un_csr).config_inst_hdr_id=p_config_tbl(i).config_inst_hdr_id AND
35694               l_unlock_config(l_un_csr).config_inst_item_id=p_config_tbl(i).config_inst_item_id AND
35695               l_unlock_config(l_un_csr).config_inst_rev_num=p_config_tbl(i).config_inst_rev_num
35696            THEN
35697             l_found:='Y';
35698            END IF;
35699          END IF;
35700         END LOOP;
35701        END IF;
35702 
35703        IF l_found='N'
35704        THEN
35705 
35706                  l_valid_lock_status:=NULL;
35707                  validate_lock
35708                     (    p_lock_id             => p_config_tbl(i).lock_id,
35709                          p_instance_id         => fnd_api.g_miss_num,
35710                          p_config_inst_hdr_id  => p_config_tbl(i).config_inst_hdr_id,
35711                          p_config_inst_item_id => p_config_tbl(i).config_inst_item_id,
35712                          p_config_inst_rev_num => p_config_tbl(i).config_inst_rev_num,
35713                          p_lock_status         => l_valid_lock_status,
35714                          p_root                => l_root_value
35715                     );
35716         IF l_valid_lock_status NOT IN (0,3) AND
35717            l_valid_lock_status IS NOT NULL
35718         THEN
35719           --p_config_tbl(i).lock_status:=0;
35720            build_unlock_config(p_lock_id             => p_config_tbl(i).lock_id,
35721                                p_config_inst_hdr_id  => p_config_tbl(i).config_inst_hdr_id,
35722                                p_config_inst_item_id => p_config_tbl(i).config_inst_item_id,
35723                                p_config_inst_rev_num => p_config_tbl(i).config_inst_rev_num,
35724                                p_bld_unlock_tbl      => l_bld_unlock_tbl
35725                                );
35726 
35727            l_config_count := l_unlock_config.count;
35728          IF l_bld_unlock_tbl.COUNT >0
35729          THEN
35730           FOR l_bld IN l_bld_unlock_tbl.FIRST .. l_bld_unlock_tbl.LAST
35731           LOOP
35732            IF l_bld_unlock_tbl.EXISTS(l_bld)
35733            THEN
35734 
35735            l_unlock_config(l_config_count+l_bld).config_inst_hdr_id    :=l_bld_unlock_tbl(l_bld).config_inst_hdr_id;
35736            l_unlock_config(l_config_count+l_bld).config_inst_item_id   :=l_bld_unlock_tbl(l_bld).config_inst_item_id;
35737            l_unlock_config(l_config_count+l_bld).config_inst_rev_num   :=l_bld_unlock_tbl(l_bld).config_inst_rev_num;
35738            l_unlock_config(l_config_count+l_bld).lock_id:=p_config_tbl(i).lock_id;
35739            l_unlock_config(l_config_count+l_bld).lock_status:=p_config_tbl(i).lock_status;
35740            l_unlock_config(l_config_count+l_bld).source_application_id :=p_config_tbl(i).source_application_id;
35741            l_unlock_config(l_config_count+l_bld).source_txn_header_ref :=p_config_tbl(i).source_txn_header_ref;
35742            --l_unlock_config(l_config_count+l_bld).source_txn_line_ref1  :=p_config_tbl(i).source_txn_line_ref1;
35743            --l_unlock_config(l_config_count+l_bld).source_txn_line_ref2  :=p_config_tbl(i).source_txn_line_ref2;
35744            --l_unlock_config(l_config_count+l_bld).source_txn_line_ref3  :=p_config_tbl(i).source_txn_line_ref3;
35745              IF l_bld_unlock_tbl(l_bld).lock_status = 2 AND
35746                 p_config_tbl(i).source_application_id = 542
35747              THEN
35748               FND_MESSAGE.SET_NAME('CSI','CSI_CANT_UNLOCK_TREE');
35749               FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',l_bld_unlock_tbl(l_bld).config_inst_hdr_id);
35750               FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',l_bld_unlock_tbl(l_bld).config_inst_item_id);
35751               FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',l_bld_unlock_tbl(l_bld).config_inst_rev_num);
35752               FND_MSG_PUB.Add;
35753               RAISE FND_API.G_EXC_ERROR;
35754              ELSIF (p_config_tbl(i).lock_status IS NULL OR
35755                  p_config_tbl(i).lock_status NOT IN (0,1)) OR
35756                  p_config_tbl(i).lock_status > l_bld_unlock_tbl(l_bld).lock_status
35757              THEN
35758               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_CON_STATUS');
35759               FND_MESSAGE.SET_TOKEN('ORIGINAL_STATUS',l_bld_unlock_tbl(l_bld).lock_status);
35760               FND_MESSAGE.SET_TOKEN('LOCK_STATUS',p_config_tbl(i).lock_status);
35761               FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',l_bld_unlock_tbl(l_bld).config_inst_hdr_id);
35762               FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',l_bld_unlock_tbl(l_bld).config_inst_item_id);
35763               FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',l_bld_unlock_tbl(l_bld).config_inst_rev_num);
35764               FND_MSG_PUB.Add;
35765               RAISE FND_API.G_EXC_ERROR;
35766              END IF;
35767            END IF;
35768           END LOOP;
35769          END IF;
35770 
35771         ELSE
35772            IF l_valid_lock_status=3
35773            THEN
35774               l_warning := 'E';
35775            ELSE
35776              IF l_valid_lock_status=0 AND
35777                 l_warning <> 'E'
35778              THEN
35779               l_warning := 'Y';
35780              END IF;
35781            END IF;
35782         END IF;
35783        END IF;
35784       ELSE
35785        l_warning := 'E';
35786       END IF;
35787      END IF;
35788     END LOOP;
35789    END IF;
35790 
35791   ELSE -- Case where p_unlock_all is fnd_api.g_false
35792 
35793              csi_gen_utility_pvt.put_line('P_unlock_all is false : Processing to unlock instances ');
35794    IF p_config_tbl.COUNT >0
35795    THEN
35796     FOR i IN p_config_tbl.FIRST .. p_config_tbl.LAST
35797     LOOP
35798      IF p_config_tbl.EXISTS(i)
35799      THEN
35800       IF ((p_config_tbl(i).instance_id IS NOT NULL AND
35801            p_config_tbl(i).instance_id <> fnd_api.g_miss_num) OR
35802           (p_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
35803            p_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
35804            p_config_tbl(i).config_inst_item_id IS NOT NULL AND
35805            p_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
35806            p_config_tbl(i).config_inst_rev_num IS NOT NULL AND
35807            p_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )) AND
35808           (p_config_tbl(i).lock_id IS NOT NULL AND
35809            p_config_tbl(i).lock_id <> fnd_api.g_miss_num)
35810       THEN
35811 
35812         IF (p_config_tbl(i).instance_id IS NOT NULL AND
35813             p_config_tbl(i).instance_id <> fnd_api.g_miss_num)
35814         THEN
35815 
35816                  l_valid_lock_status:=NULL;
35817                 validate_lock
35818                     (    p_lock_id             => p_config_tbl(i).lock_id,
35819                          p_instance_id         => p_config_tbl(i).instance_id,
35820                          p_config_inst_hdr_id  => fnd_api.g_miss_num,
35821                          p_config_inst_item_id => fnd_api.g_miss_num,
35822                          p_config_inst_rev_num => fnd_api.g_miss_num,
35823                          p_lock_status         => l_valid_lock_status,
35824                          p_root                => l_root_value
35825                     );
35826 
35827 
35828          IF l_valid_lock_status IS NOT NULL AND
35829             l_valid_lock_status NOT IN (0,3)
35830          THEN
35831           --p_config_tbl(i).lock_status:=0;
35832           IF NOT l_root_value
35833           THEN
35834            l_unlock_count:=l_unlock_tbl.COUNT+1;
35835            l_unlock_tbl(l_unlock_count).instance_id:=p_config_tbl(i).instance_id;
35836            l_unlock_tbl(l_unlock_count).lock_id:=p_config_tbl(i).lock_id;
35837            l_unlock_tbl(l_unlock_count).lock_status:=p_config_tbl(i).lock_status;
35838            l_unlock_tbl(l_unlock_count).source_application_id :=p_config_tbl(i).source_application_id;
35839            l_unlock_tbl(l_unlock_count).source_txn_header_ref :=p_config_tbl(i).source_txn_header_ref;
35840            l_unlock_tbl(l_unlock_count).source_txn_line_ref1  :=p_config_tbl(i).source_txn_line_ref1;
35841            l_unlock_tbl(l_unlock_count).source_txn_line_ref2  :=p_config_tbl(i).source_txn_line_ref2;
35842            l_unlock_tbl(l_unlock_count).source_txn_line_ref3  :=p_config_tbl(i).source_txn_line_ref3;
35843           ELSE
35844            l_unlock_root_ins:=l_unlock_ins_tbl.COUNT+1;
35845            l_unlock_ins_tbl(l_unlock_root_ins).instance_id:=p_config_tbl(i).instance_id;
35846            l_unlock_ins_tbl(l_unlock_root_ins).lock_id:=p_config_tbl(i).lock_id;
35847            l_unlock_ins_tbl(l_unlock_root_ins).lock_status:=p_config_tbl(i).lock_status;
35848            l_unlock_ins_tbl(l_unlock_root_ins).source_application_id :=p_config_tbl(i).source_application_id;
35849            l_unlock_ins_tbl(l_unlock_root_ins).source_txn_header_ref :=p_config_tbl(i).source_txn_header_ref;
35850            l_unlock_ins_tbl(l_unlock_root_ins).source_txn_line_ref1  :=p_config_tbl(i).source_txn_line_ref1;
35851            l_unlock_ins_tbl(l_unlock_root_ins).source_txn_line_ref2  :=p_config_tbl(i).source_txn_line_ref2;
35852            l_unlock_ins_tbl(l_unlock_root_ins).source_txn_line_ref3  :=p_config_tbl(i).source_txn_line_ref3;
35853           END IF;
35854 
35855              IF (p_config_tbl(i).lock_status IS NULL OR
35856                  p_config_tbl(i).lock_status NOT IN (0,1)) OR
35857                  p_config_tbl(i).lock_status > l_valid_lock_status
35858              THEN
35859               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INS_STATUS');
35860               FND_MESSAGE.SET_TOKEN('ORIGINAL_STATUS',l_valid_lock_status);
35861               FND_MESSAGE.SET_TOKEN('LOCK_STATUS',p_config_tbl(i).lock_status);
35862               FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_config_tbl(i).instance_id);
35863               FND_MSG_PUB.Add;
35864               RAISE FND_API.G_EXC_ERROR;
35865              END IF;
35866          ELSE
35867            IF l_valid_lock_status=3
35868            THEN
35869               l_warning := 'E';
35870            ELSE
35871              IF l_valid_lock_status=0 AND
35872                 l_warning <> 'E'
35873              THEN
35874               l_warning := 'Y';
35875              END IF;
35876            END IF;
35877          END IF;
35878         ELSIF (p_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
35879                p_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
35880                p_config_tbl(i).config_inst_item_id IS NOT NULL AND
35881                p_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
35882                p_config_tbl(i).config_inst_rev_num IS NOT NULL AND
35883                p_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )
35884         THEN
35885                   l_valid_lock_status:=NULL;
35886                 validate_lock
35887                     (    p_lock_id             => p_config_tbl(i).lock_id,
35888                          p_instance_id         => fnd_api.g_miss_num,
35889                          p_config_inst_hdr_id  => p_config_tbl(i).config_inst_hdr_id,
35890                          p_config_inst_item_id => p_config_tbl(i).config_inst_item_id,
35891                          p_config_inst_rev_num => p_config_tbl(i).config_inst_rev_num,
35892                          p_lock_status         => l_valid_lock_status,
35893                          p_root                => l_root_value
35894                     );
35895 
35896 
35897          IF l_valid_lock_status NOT IN (0,3) AND
35898             l_valid_lock_status IS NOT NULL
35899          THEN
35900           -- p_config_tbl(i).lock_status:=0;
35901           IF NOT l_root_value
35902           THEN
35903            l_config_count := l_unlock_config.count+1;
35904            l_unlock_config(l_config_count).config_inst_hdr_id    :=p_config_tbl(i).config_inst_hdr_id;
35905            l_unlock_config(l_config_count).config_inst_item_id   :=p_config_tbl(i).config_inst_item_id;
35906            l_unlock_config(l_config_count).config_inst_rev_num   :=p_config_tbl(i).config_inst_rev_num;
35907            l_unlock_config(l_config_count).lock_id:=p_config_tbl(i).lock_id;
35908            l_unlock_config(l_config_count).lock_status:=p_config_tbl(i).lock_status;
35909            l_unlock_config(l_config_count).source_application_id :=p_config_tbl(i).source_application_id;
35910            l_unlock_config(l_config_count).source_txn_header_ref :=p_config_tbl(i).source_txn_header_ref;
35911            l_unlock_config(l_config_count).source_txn_line_ref1  :=p_config_tbl(i).source_txn_line_ref1;
35912            l_unlock_config(l_config_count).source_txn_line_ref2  :=p_config_tbl(i).source_txn_line_ref2;
35913            l_unlock_config(l_config_count).source_txn_line_ref3  :=p_config_tbl(i).source_txn_line_ref3;
35914           ELSE
35915            l_config_root := l_unlock_root.count+1;
35916            l_unlock_root(l_config_root).config_inst_hdr_id    :=p_config_tbl(i).config_inst_hdr_id;
35917            l_unlock_root(l_config_root).config_inst_item_id   :=p_config_tbl(i).config_inst_item_id;
35918            l_unlock_root(l_config_root).config_inst_rev_num   :=p_config_tbl(i).config_inst_rev_num;
35919            l_unlock_root(l_config_root).lock_id:=p_config_tbl(i).lock_id;
35920            l_unlock_root(l_config_root).lock_status:=p_config_tbl(i).lock_status;
35921            l_unlock_root(l_config_root).source_application_id :=p_config_tbl(i).source_application_id;
35922            l_unlock_root(l_config_root).source_txn_header_ref :=p_config_tbl(i).source_txn_header_ref;
35923            l_unlock_root(l_config_root).source_txn_line_ref1  :=p_config_tbl(i).source_txn_line_ref1;
35924            l_unlock_root(l_config_root).source_txn_line_ref2  :=p_config_tbl(i).source_txn_line_ref2;
35925            l_unlock_root(l_config_root).source_txn_line_ref3  :=p_config_tbl(i).source_txn_line_ref3;
35926           END IF;
35927              IF (p_config_tbl(i).lock_status IS NULL OR
35928                  p_config_tbl(i).lock_status NOT IN (0,1)) OR
35929                  p_config_tbl(i).lock_status > l_valid_lock_status
35930              THEN
35931               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_CON_STATUS');
35932               FND_MESSAGE.SET_TOKEN('ORIGINAL_STATUS',l_valid_lock_status);
35933               FND_MESSAGE.SET_TOKEN('LOCK_STATUS',p_config_tbl(i).lock_status);
35934               FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',p_config_tbl(i).config_inst_hdr_id);
35935               FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',p_config_tbl(i).config_inst_item_id);
35936               FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',p_config_tbl(i).config_inst_rev_num);
35937               FND_MSG_PUB.Add;
35938               RAISE FND_API.G_EXC_ERROR;
35939              END IF;
35940          ELSE
35941            IF l_valid_lock_status=3
35942            THEN
35943               l_warning := 'E';
35944            ELSE
35945              IF l_valid_lock_status=0 AND
35946                 l_warning <> 'E'
35947              THEN
35948               l_warning := 'Y';
35949              END IF;
35950            END IF;
35951          END IF;
35952         END IF;
35953       ELSE
35954         l_warning := 'E';
35955       END IF;
35956      END IF;
35957     END LOOP;
35958    END IF;
35959   END IF;
35960 
35961    IF l_warning = 'Y'
35962    THEN
35963       FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_LOCKS');
35964       FND_MSG_PUB.Add;
35965    ELSIF l_warning = 'E'
35966    THEN
35967       FND_MESSAGE.SET_NAME('CSI','CSI_LOCKID_NOT_PASSED');
35968       FND_MSG_PUB.Add;
35969       RAISE FND_API.G_EXC_ERROR;
35970    END IF;
35971       csi_gen_utility_pvt.put_line('Count of l_unlock_tbl is :'||l_unlock_tbl.count);
35972    IF l_unlock_tbl.COUNT>0
35973    THEN
35974       csi_gen_utility_pvt.put_line('Before calling unlock_tbl_handler in instance mode. ');
35975       unlock_tbl_handler (l_unlock_tbl,'INSTANCE',SYSDATE);
35976    END IF;
35977 
35978       csi_gen_utility_pvt.put_line('Count of l_unlock_config is :'||l_unlock_config.count);
35979    IF l_unlock_config.COUNT>0
35980    THEN
35981       csi_gen_utility_pvt.put_line('Before calling unlock_tbl_handler in config mode. ');
35982       unlock_tbl_handler (l_unlock_config,'CONFIG',SYSDATE);
35983    END IF;
35984 
35985       csi_gen_utility_pvt.put_line('Count of l_unlock_ins_tbl is :'||l_unlock_ins_tbl.count);
35986    IF l_unlock_ins_tbl.COUNT>0
35987    THEN
35988       csi_gen_utility_pvt.put_line('Before calling unlock_tbl_handler in instance root mode. ');
35989 
35990      FOR i IN l_unlock_ins_tbl.FIRST .. l_unlock_ins_tbl.LAST
35991      LOOP
35992         IF l_unlock_ins_tbl.EXISTS(i)
35993         THEN
35994          IF l_unlock_ins_tbl(i).lock_status=0
35995          THEN
35996            SELECT COUNT(*)
35997              INTO l_instance_ctr
35998              FROM csi_item_instance_locks
35999             WHERE root_instance_id =l_unlock_ins_tbl(i).instance_id
36000               AND lock_id = l_unlock_ins_tbl(i).lock_id
36001               AND lock_status IN (1,2);
36002            IF l_instance_ctr >1  -- this includes root
36003            THEN
36004               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INST_STATUS');
36005               FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_unlock_ins_tbl(i).instance_id);
36006               FND_MSG_PUB.Add;
36007               RAISE FND_API.G_EXC_ERROR;
36008            END IF;
36009          END IF;
36010         END IF;
36011      END LOOP;
36012       unlock_tbl_handler (l_unlock_ins_tbl,'INSTANCE',SYSDATE);
36013    END IF;
36014 
36015    IF l_unlock_root.COUNT>0
36016    THEN
36017       csi_gen_utility_pvt.put_line('Before calling unlock_tbl_handler in config root mode. ');
36018 
36019      FOR i IN l_unlock_root.FIRST .. l_unlock_root.LAST
36020      LOOP
36021         IF l_unlock_root.EXISTS(i)
36022         THEN
36023          IF l_unlock_root(i).lock_status=0
36024          THEN
36025            SELECT COUNT(*)
36026              INTO l_config_ctr
36027              FROM csi_item_instance_locks
36028             WHERE root_config_inst_hdr_id =l_unlock_root(i).config_inst_hdr_id
36029               AND root_config_inst_item_id = l_unlock_root(i).config_inst_item_id
36030               AND root_config_inst_rev_num = l_unlock_root(i).config_inst_rev_num
36031               AND lock_id = l_unlock_root(i).lock_id
36032               AND lock_status IN (1,2);
36033            IF l_config_ctr >1  -- this includes root
36034            THEN
36035               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_CONF_STATUS');
36036               FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',l_unlock_root(i).config_inst_hdr_id);
36037               FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',l_unlock_root(i).config_inst_item_id);
36038               FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',l_unlock_root(i).config_inst_rev_num);
36039               FND_MSG_PUB.Add;
36040               RAISE FND_API.G_EXC_ERROR;
36041            END IF;
36042          END IF;
36043         END IF;
36044      END LOOP;
36045 
36046      unlock_tbl_handler (l_unlock_root,'CONFIG',SYSDATE);
36047 
36048    END IF;
36049 
36050         IF FND_API.To_Boolean( p_commit ) THEN
36051             COMMIT WORK;
36052         END IF;
36053 
36054         -- Standard call to get message count and if count is  get message info.
36055         FND_MSG_PUB.Count_And_Get
36056                 (p_count        =>      x_msg_count ,
36057                  p_data         =>      x_msg_data   );
36058 
36059              csi_gen_utility_pvt.put_line('Reached to the end of csi_unlock_item_instance procedure.');
36060 
36061 EXCEPTION
36062         WHEN FND_API.G_EXC_ERROR THEN
36063                 ROLLBACK TO csi_unlock_item_instance;
36064                 x_return_status := FND_API.G_RET_STS_ERROR ;
36065                 FND_MSG_PUB.Count_And_Get
36066                 (       p_count   =>      x_msg_count,
36067                         p_data    =>      x_msg_data    );
36068         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
36069                 ROLLBACK TO csi_unlock_item_instance;
36070                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
36071                 FND_MSG_PUB.Count_And_Get
36072                 ( p_count     =>      x_msg_count,
36073                   p_data      =>      x_msg_data  );
36074         WHEN OTHERS THEN
36075                 ROLLBACK TO csi_unlock_item_instance;
36076                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
36077                 IF FND_MSG_PUB.Check_Msg_Level
36078                      (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
36079                 THEN
36080                    FND_MSG_PUB.Add_Exc_Msg
36081                     ( g_pkg_name, l_api_name );
36082                 END IF;
36083                 FND_MSG_PUB.Count_And_Get
36084                 (  p_count   =>      x_msg_count,
36085                    p_data    =>      x_msg_data   );
36086 END unlock_item_instances;
36087 
36088 
36089 END CSI_ITEM_INSTANCE_PVT;